{"version":3,"sources":["webpack/bootstrap","node_modules/react/index.js","node_modules/prop-types/index.js","node_modules/babel-runtime/helpers/classCallCheck.js","node_modules/babel-runtime/helpers/createClass.js","node_modules/matrix-react-sdk/lib/languageHandler.js","node_modules/matrix-react-sdk/lib/index.js","node_modules/babel-runtime/core-js/object/get-prototype-of.js","node_modules/babel-runtime/helpers/possibleConstructorReturn.js","node_modules/babel-runtime/helpers/inherits.js","node_modules/bluebird/js/browser/bluebird.js","node_modules/matrix-react-sdk/lib/MatrixClientPeg.js","node_modules/create-react-class/index.js","node_modules/immutable/dist/immutable.js","node_modules/core-js/modules/_export.js","node_modules/babel-runtime/regenerator/index.js","node_modules/matrix-react-sdk/lib/dispatcher.js","node_modules/babel-runtime/core-js/object/keys.js","node_modules/matrix-react-sdk/lib/Modal.js","node_modules/babel-runtime/core-js/get-iterator.js","node_modules/matrix-js-sdk/browser-index.js","node_modules/matrix-react-sdk/lib/settings/SettingsStore.js","(webpack)/buildin/global.js","node_modules/classnames/index.js","node_modules/core-js/library/modules/_core.js","node_modules/matrix-react-sdk/lib/components/views/elements/AccessibleButton.js","node_modules/slate/lib/slate.es.js","node_modules/babel-runtime/core-js/object/assign.js","node_modules/core-js/modules/_an-object.js","node_modules/babel-runtime/helpers/extends.js","node_modules/core-js/library/modules/_export.js","node_modules/matrix-react-sdk/lib/SdkConfig.js","node_modules/babel-runtime/core-js/json/stringify.js","node_modules/core-js/modules/_global.js","node_modules/babel-runtime/helpers/toConsumableArray.js","node_modules/core-js/library/modules/_wks.js","node_modules/matrix-js-sdk/lib/utils.js","node_modules/core-js/library/modules/_global.js","node_modules/core-js/modules/_fails.js","node_modules/core-js/modules/_is-object.js","node_modules/core-js/library/modules/_is-object.js","node_modules/babel-runtime/helpers/slicedToArray.js","node_modules/babel-runtime/core-js/promise.js","node_modules/core-js/library/modules/_descriptors.js","node_modules/core-js/modules/_wks.js","node_modules/babel-runtime/helpers/defineProperty.js","node_modules/is-plain-object/index.js","node_modules/core-js/modules/_to-length.js","node_modules/core-js/library/modules/_object-dp.js","node_modules/core-js/library/modules/_an-object.js","node_modules/core-js/modules/_descriptors.js","node_modules/core-js/modules/_object-dp.js","node_modules/core-js/library/modules/_hide.js","node_modules/events/events.js","node_modules/matrix-js-sdk/src/logger.js","node_modules/react-dom/index.js","node_modules/core-js/modules/_to-object.js","node_modules/core-js/library/modules/_has.js","node_modules/url/url.js","node_modules/core-js/library/modules/_to-iobject.js","node_modules/matrix-react-sdk/lib/utils/permalinks/Permalinks.js","node_modules/get-window/index.js","node_modules/core-js/library/modules/_fails.js","node_modules/core-js/library/modules/_iterators.js","node_modules/babel-runtime/core-js/object/values.js","node_modules/slate-dev-warning/lib/slate-dev-warning.es.js","node_modules/babel-runtime/core-js/object/create.js","node_modules/matrix-react-sdk/lib/Analytics.js","node_modules/matrix-react-sdk/lib/PlatformPeg.js","node_modules/core-js/modules/_a-function.js","node_modules/core-js/library/modules/_to-object.js","node_modules/babel-runtime/helpers/typeof.js","node_modules/matrix-react-sdk/lib/Keyboard.js","node_modules/matrix-react-sdk/lib/HtmlUtils.js","node_modules/matrix-react-sdk/lib/stores/RoomViewStore.js","node_modules/babel-runtime/core-js/array/from.js","node_modules/core-js/library/modules/es6.string.iterator.js","node_modules/core-js/library/modules/_ctx.js","node_modules/core-js/library/modules/_property-desc.js","node_modules/core-js/library/modules/_object-keys.js","node_modules/process/browser.js","node_modules/core-js/library/modules/_object-sap.js","node_modules/matrix-js-sdk/lib/logger.js","node_modules/matrix-react-sdk/lib/stores/GroupStore.js","node_modules/react-beautiful-dnd/lib/state/position.js","node_modules/matrix-react-sdk/lib/components/views/elements/Field.js","node_modules/core-js/modules/_hide.js","node_modules/core-js/modules/_redefine.js","node_modules/core-js/modules/_string-html.js","node_modules/core-js/library/modules/_library.js","node_modules/babel-runtime/core-js/set.js","node_modules/memoize-one/esm/index.js","node_modules/core-js/modules/_has.js","node_modules/core-js/modules/_to-iobject.js","node_modules/core-js/modules/_object-gopd.js","node_modules/core-js/modules/_object-gpo.js","node_modules/core-js/library/modules/_cof.js","node_modules/core-js/library/modules/_uid.js","node_modules/core-js/library/modules/_set-to-string-tag.js","node_modules/core-js/library/modules/web.dom.iterable.js","node_modules/matrix-react-sdk/lib/utils/WidgetUtils.js","node_modules/matrix-react-sdk/lib/integrations/IntegrationManagers.js","node_modules/core-js/modules/_core.js","node_modules/core-js/modules/_ctx.js","node_modules/core-js/modules/_cof.js","node_modules/core-js/modules/_to-integer.js","node_modules/core-js/modules/_strict-method.js","node_modules/core-js/library/modules/_to-integer.js","node_modules/core-js/library/modules/_defined.js","node_modules/core-js/library/modules/_a-function.js","node_modules/core-js/library/modules/_object-create.js","node_modules/core-js/library/modules/_shared-key.js","node_modules/matrix-js-sdk/lib/models/event.js","node_modules/lodash/_root.js","node_modules/lodash/isObject.js","node_modules/matrix-react-sdk/lib/utils/AutoDiscoveryUtils.js","node_modules/matrix-react-sdk/lib/DateUtils.js","node_modules/babel-runtime/helpers/objectWithoutProperties.js","node_modules/matrix-react-sdk/res/img/cancel.svg","node_modules/matrix-react-sdk/res/img/warning.svg","node_modules/lodash/isArray.js","node_modules/core-js/modules/_to-primitive.js","node_modules/core-js/modules/_defined.js","node_modules/core-js/modules/_object-sap.js","node_modules/core-js/modules/_array-methods.js","node_modules/core-js/library/modules/_shared.js","node_modules/core-js/library/modules/_enum-bug-keys.js","node_modules/babel-runtime/core-js/object/entries.js","node_modules/browser-request/index.js","node_modules/matrix-react-sdk/lib/CallHandler.js","node_modules/matrix-react-sdk/lib/utils/DMRoomMap.js","node_modules/matrix-react-sdk/lib/utils/FormattingUtils.js","node_modules/core-js/modules/_typed-array.js","node_modules/core-js/modules/_metadata.js","node_modules/core-js/library/modules/_iter-define.js","node_modules/core-js/library/modules/_dom-create.js","node_modules/core-js/library/modules/_to-primitive.js","node_modules/core-js/library/modules/_to-length.js","node_modules/core-js/library/modules/_classof.js","node_modules/core-js/library/modules/_object-pie.js","node_modules/babel-runtime/helpers/get.js","node_modules/matrix-react-sdk/lib/Notifier.js","node_modules/matrix-react-sdk/lib/components/structures/ContextualMenu.js","node_modules/slate-react/node_modules/debug/src/browser.js","node_modules/core-js/modules/_library.js","node_modules/core-js/modules/_meta.js","node_modules/core-js/modules/_add-to-unscopables.js","node_modules/core-js/library/modules/core.get-iterator-method.js","node_modules/core-js/library/modules/_meta.js","(webpack)/buildin/module.js","node_modules/flux/node_modules/fbjs/lib/invariant.js","node_modules/matrix-react-sdk/lib/stores/FlairStore.js","node_modules/matrix-react-sdk/lib/Rooms.js","node_modules/react-beautiful-dnd/lib/state/visibility/get-viewport.js","node_modules/react-beautiful-dnd/lib/view/context-keys.js","node_modules/lodash/isObjectLike.js","node_modules/core-js/modules/_property-desc.js","node_modules/core-js/modules/_uid.js","node_modules/core-js/modules/_object-keys.js","node_modules/core-js/modules/_to-absolute-index.js","node_modules/core-js/modules/_object-create.js","node_modules/core-js/modules/_object-gopn.js","node_modules/core-js/modules/_set-species.js","node_modules/core-js/modules/_an-instance.js","node_modules/core-js/modules/_for-of.js","node_modules/core-js/modules/_redefine-all.js","node_modules/core-js/modules/_validate-collection.js","node_modules/core-js/library/modules/_ie8-dom-define.js","node_modules/core-js/library/modules/_redefine.js","node_modules/core-js/library/modules/_object-keys-internal.js","node_modules/core-js/library/modules/_iobject.js","node_modules/core-js/library/modules/_object-gpo.js","node_modules/core-js/library/modules/_wks-ext.js","node_modules/core-js/library/modules/_wks-define.js","node_modules/buffer/index.js","node_modules/matrix-js-sdk/lib/models/event-timeline.js","node_modules/matrix-react-sdk/lib/UserAddress.js","node_modules/lodash/_getNative.js","node_modules/matrix-react-sdk/lib/Avatar.js","node_modules/matrix-react-sdk/lib/Tinter.js","node_modules/matrix-react-sdk/lib/IdentityAuthClient.js","node_modules/matrix-react-sdk/lib/utils/Timer.js","node_modules/matrix-react-sdk/lib/RoomNotifs.js","node_modules/matrix-react-sdk/lib/ContentMessages.js","node_modules/matrix-react-sdk/lib/components/views/elements/LabelledToggleSwitch.js","node_modules/matrix-react-sdk/res/img/spinner.gif","node_modules/matrix-react-sdk/lib/autocomplete/AutocompleteProvider.js","node_modules/matrix-react-sdk/lib/autocomplete/Components.js","node_modules/core-js/modules/_set-to-string-tag.js","node_modules/core-js/modules/_classof.js","node_modules/core-js/modules/_string-trim.js","node_modules/core-js/modules/_iterators.js","node_modules/core-js/library/modules/_object-dps.js","node_modules/core-js/library/modules/_html.js","node_modules/core-js/library/modules/_iter-step.js","node_modules/core-js/library/modules/_object-gops.js","node_modules/matrix-js-sdk/lib/pushprocessor.js","node_modules/matrix-react-sdk/lib/settings/handlers/SettingsHandler.js","node_modules/lodash/_baseGetTag.js","node_modules/lodash/_Symbol.js","node_modules/matrix-react-sdk/lib/stores/ActiveWidgetStore.js","node_modules/matrix-react-sdk/lib/components/structures/AutoHideScrollbar.js","node_modules/matrix-react-sdk/lib/components/views/elements/ReplyThread.js","node_modules/matrix-react-sdk/lib/components/structures/RightPanel.js","node_modules/matrix-react-sdk/lib/ratelimitedfunc.js","node_modules/react-beautiful-dnd/lib/state/get-area.js","node_modules/react-beautiful-dnd/lib/state/get-draggables-inside-droppable.js","node_modules/react-beautiful-dnd/lib/state/get-displacement.js","node_modules/matrix-react-sdk/lib/utils/EventUtils.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/QuestionDialog.js","node_modules/lodash/_castPath.js","node_modules/lodash/_toKey.js","node_modules/commonmark/lib/common.js","node_modules/lodash/pick.js","node_modules/slate/node_modules/debug/src/browser.js","node_modules/core-js/modules/_shared.js","node_modules/core-js/modules/_iobject.js","node_modules/core-js/modules/_object-pie.js","node_modules/core-js/modules/_flags.js","node_modules/core-js/modules/_species-constructor.js","node_modules/core-js/library/modules/_string-at.js","node_modules/core-js/library/modules/_iter-create.js","node_modules/core-js/library/modules/_array-includes.js","node_modules/core-js/library/modules/_to-absolute-index.js","node_modules/babel-runtime/node_modules/regenerator-runtime/runtime-module.js","node_modules/babel-runtime/node_modules/regenerator-runtime/runtime.js","node_modules/timers-browserify/main.js","node_modules/setimmediate/setImmediate.js","node_modules/core-js/library/fn/object/keys.js","node_modules/core-js/library/modules/es6.object.keys.js","node_modules/core-js/library/modules/es6.array.iterator.js","node_modules/core-js/library/modules/_add-to-unscopables.js","node_modules/core-js/library/modules/_object-gopn.js","node_modules/core-js/library/modules/_object-gopd.js","node_modules/babel-runtime/core-js/object/define-property.js","node_modules/babel-runtime/core-js/object/freeze.js","node_modules/babel-runtime/core-js/object/set-prototype-of.js","node_modules/core-js/library/fn/get-iterator.js","node_modules/core-js/library/modules/core.get-iterator.js","node_modules/core-js/library/modules/_for-of.js","node_modules/matrix-js-sdk/lib/crypto/store/indexeddb-crypto-store.js","node_modules/matrix-js-sdk/lib/crypto/olmlib.js","node_modules/matrix-js-sdk/lib/webrtc/call.js","node_modules/matrix-react-sdk/lib/groups.js","node_modules/matrix-react-sdk/lib/Terms.js","node_modules/matrix-react-sdk/lib/Lifecycle.js","node_modules/domelementtype/index.js","node_modules/source-map/lib/util.js","node_modules/flux/utils.js","node_modules/matrix-react-sdk/lib/shouldHideEvent.js","node_modules/lodash/lodash.js","node_modules/react-beautiful-dnd/lib/state/spacing.js","node_modules/react-beautiful-dnd/lib/state/move-to-edge.js","node_modules/matrix-react-sdk/lib/utils/ErrorUtils.js","node_modules/filesize/lib/filesize.js","node_modules/matrix-react-sdk/lib/components/views/avatars/MemberAvatar.js","node_modules/matrix-react-sdk/lib/AddThreepid.js","node_modules/lodash/keys.js","node_modules/lodash/isArrayLike.js","node_modules/lodash/isSymbol.js","node_modules/matrix-react-sdk/lib/autocomplete/QueryMatcher.js","node_modules/lodash/sortBy.js","node_modules/matrix-react-sdk/lib/components/views/rooms/E2EIcon.js","node_modules/lodash/_copyObject.js","node_modules/invariant/browser.js","node_modules/core-js/modules/_array-includes.js","node_modules/core-js/modules/_object-gops.js","node_modules/core-js/modules/_is-array.js","node_modules/core-js/modules/_string-at.js","node_modules/core-js/modules/_is-regexp.js","node_modules/core-js/modules/_iter-detect.js","node_modules/core-js/modules/_regexp-exec-abstract.js","node_modules/core-js/modules/_fix-re-wks.js","node_modules/core-js/modules/_user-agent.js","node_modules/core-js/modules/_collection.js","node_modules/core-js/modules/_typed.js","node_modules/core-js/modules/_object-forced-pam.js","node_modules/core-js/modules/_set-collection-of.js","node_modules/core-js/modules/_set-collection-from.js","node_modules/core-js/library/modules/_iter-call.js","node_modules/core-js/library/modules/_is-array-iter.js","node_modules/core-js/library/modules/_iter-detect.js","node_modules/core-js/library/modules/_is-array.js","node_modules/core-js/library/modules/_object-gopn-ext.js","node_modules/object-assign/index.js","node_modules/babel-runtime/core-js/number/is-finite.js","node_modules/loglevel/lib/loglevel.js","node_modules/matrix-js-sdk/lib/models/user.js","node_modules/matrix-js-sdk/lib/sync-accumulator.js","node_modules/matrix-js-sdk/lib/indexeddb-helpers.js","node_modules/matrix-js-sdk/lib/http-api.js","node_modules/babel-runtime/core-js/reflect/construct.js","node_modules/babel-runtime/core-js/map.js","node_modules/matrix-js-sdk/lib/crypto/verification/Error.js","node_modules/matrix-js-sdk/lib/content-repo.js","node_modules/matrix-react-sdk/lib/settings/handlers/MatrixClientBackedSettingsHandler.js","node_modules/matrix-react-sdk/lib/settings/controllers/SettingController.js","node_modules/matrix-react-sdk/lib/RoomInvite.js","node_modules/matrix-react-sdk/lib/utils/MultiInviter.js","node_modules/matrix-react-sdk/lib/createRoom.js","node_modules/lodash/_nativeCreate.js","node_modules/lodash/_ListCache.js","node_modules/lodash/_assocIndexOf.js","node_modules/lodash/eq.js","node_modules/lodash/_getMapData.js","node_modules/matrix-react-sdk/lib/stores/WidgetEchoStore.js","node_modules/htmlparser2/lib/index.js","node_modules/inherits/inherits_browser.js","node_modules/matrix-react-sdk/lib/stores/RoomListStore.js","node_modules/linkifyjs/lib/linkify/utils/class.js","node_modules/matrix-react-sdk/lib/GroupAddressPicker.js","node_modules/matrix-react-sdk/lib/components/views/elements/ResizeHandle.js","node_modules/react-beautiful-dnd/lib/index.js","node_modules/react-beautiful-dnd/lib/state/no-impact.js","node_modules/react-beautiful-dnd/lib/state/dimension.js","node_modules/react-motion/lib/stripStyle.js","node_modules/react-beautiful-dnd/lib/view/drag-handle/util/stop-event.js","node_modules/matrix-react-sdk/lib/stores/TagOrderStore.js","node_modules/matrix-react-sdk/lib/ObjectUtils.js","node_modules/matrix-react-sdk/lib/email.js","node_modules/matrix-react-sdk/lib/components/views/elements/Validation.js","node_modules/matrix-react-sdk/res/img/notif-active.svg","node_modules/matrix-react-sdk/lib/utils/UrlUtils.js","node_modules/matrix-react-sdk/lib/components/views/elements/ToggleSwitch.js","node_modules/matrix-react-sdk/lib/SlashCommands.js","node_modules/matrix-react-sdk/lib/components/views/elements/TintableSvg.js","node_modules/matrix-react-sdk/res/img/ellipsis.svg","node_modules/matrix-react-sdk/lib/components/views/messages/MFileBody.js","node_modules/matrix-react-sdk/lib/utils/DecryptFile.js","node_modules/lodash/_arrayMap.js","node_modules/lodash/_isIndex.js","node_modules/lodash/_baseUnary.js","node_modules/lodash/_getTag.js","node_modules/lodash/_baseGet.js","node_modules/lodash/identity.js","node_modules/matrix-react-sdk/lib/notifications/NotificationUtils.js","node_modules/slate-plain-serializer/lib/slate-plain-serializer.es.js","node_modules/is-hotkey/lib/index.js","node_modules/type-of/index.js","node_modules/matrix-react-sdk/lib/rageshake/rageshake.js","node_modules/core-js/modules/_dom-create.js","node_modules/core-js/modules/_wks-define.js","node_modules/core-js/modules/_shared-key.js","node_modules/core-js/modules/_enum-bug-keys.js","node_modules/core-js/modules/_html.js","node_modules/core-js/modules/_set-proto.js","node_modules/core-js/modules/_string-ws.js","node_modules/core-js/modules/_inherit-if-required.js","node_modules/core-js/modules/_string-repeat.js","node_modules/core-js/modules/_math-sign.js","node_modules/core-js/modules/_math-expm1.js","node_modules/core-js/modules/_iter-define.js","node_modules/core-js/modules/_iter-create.js","node_modules/core-js/modules/_string-context.js","node_modules/core-js/modules/_fails-is-regexp.js","node_modules/core-js/modules/_is-array-iter.js","node_modules/core-js/modules/_create-property.js","node_modules/core-js/modules/core.get-iterator-method.js","node_modules/core-js/modules/_array-species-create.js","node_modules/core-js/modules/_array-fill.js","node_modules/core-js/modules/es6.array.iterator.js","node_modules/core-js/modules/_regexp-exec.js","node_modules/core-js/modules/_advance-string-index.js","node_modules/core-js/modules/_task.js","node_modules/core-js/modules/_microtask.js","node_modules/core-js/modules/_new-promise-capability.js","node_modules/core-js/modules/_typed-buffer.js","node_modules/core-js/library/fn/array/from.js","node_modules/core-js/library/modules/es6.array.from.js","node_modules/core-js/library/modules/_create-property.js","node_modules/core-js/library/fn/json/stringify.js","node_modules/babel-runtime/core-js/symbol/iterator.js","node_modules/core-js/library/fn/symbol/iterator.js","node_modules/babel-runtime/core-js/symbol.js","node_modules/core-js/library/fn/symbol/index.js","node_modules/core-js/library/modules/es6.symbol.js","node_modules/core-js/library/modules/_enum-keys.js","node_modules/core-js/library/modules/es7.symbol.async-iterator.js","node_modules/core-js/library/modules/es7.symbol.observable.js","node_modules/core-js/library/fn/object/define-property.js","node_modules/core-js/library/modules/es6.object.define-property.js","node_modules/core-js/library/fn/object/create.js","node_modules/core-js/library/modules/es6.object.create.js","node_modules/matrix-js-sdk/lib/matrix.js","node_modules/unhomoglyph/index.js","node_modules/babel-runtime/core-js/is-iterable.js","node_modules/core-js/library/fn/is-iterable.js","node_modules/core-js/library/modules/core.is-iterable.js","node_modules/matrix-js-sdk/lib/store/indexeddb-local-backend.js","node_modules/matrix-js-sdk/lib/errors.js","node_modules/core-js/library/modules/_redefine-all.js","node_modules/core-js/library/modules/_an-instance.js","node_modules/core-js/library/modules/_validate-collection.js","node_modules/matrix-js-sdk/lib/crypto/store/memory-crypto-store.js","node_modules/matrix-js-sdk/lib/crypto/index.js","node_modules/matrix-js-sdk/lib/randomstring.js","node_modules/core-js/library/modules/_task.js","node_modules/core-js/library/modules/_new-promise-capability.js","node_modules/another-json/another-json.js","node_modules/matrix-js-sdk/lib/crypto/algorithms/base.js","node_modules/matrix-js-sdk/lib/crypto/deviceinfo.js","node_modules/querystring-es3/index.js","node_modules/matrix-js-sdk/lib/models/room-member.js","node_modules/matrix-js-sdk/lib/filter.js","node_modules/matrix-js-sdk/lib/models/event-timeline-set.js","node_modules/matrix-js-sdk/node_modules/qs/lib/utils.js","node_modules/matrix-react-sdk/lib/TextForEvent.js","node_modules/fbjs/lib/invariant.js","node_modules/lodash/uniq.js","node_modules/lodash/_MapCache.js","node_modules/lodash/_Map.js","node_modules/lodash/_setToArray.js","node_modules/matrix-react-sdk/lib/theme.js","node_modules/matrix-react-sdk/lib/cryptodevices.js","node_modules/matrix-react-sdk/lib/Resend.js","node_modules/matrix-react-sdk/lib/Login.js","node_modules/matrix-react-sdk/lib/stores/TypingStore.js","src/vector/getconfig.js","node_modules/sanitize-html/dist/index.js","node_modules/postcss/lib/declaration.js","node_modules/postcss/lib/node.js","node_modules/postcss/lib/stringify.js","node_modules/path-browserify/index.js","node_modules/postcss/lib/parse.js","node_modules/postcss/lib/comment.js","node_modules/postcss/lib/at-rule.js","node_modules/postcss/lib/container.js","node_modules/postcss/lib/rule.js","node_modules/babel-runtime/core-js/number/max-safe-integer.js","node_modules/matrix-react-sdk/lib/Unread.js","node_modules/matrix-react-sdk/lib/utils/HostingLink.js","node_modules/matrix-react-sdk/node_modules/qs/lib/utils.js","node_modules/matrix-react-sdk/lib/utils/permalinks/PermalinkConstructor.js","node_modules/matrix-react-sdk/lib/linkify-matrix.js","node_modules/highlight.js/lib/index.js","node_modules/linkifyjs/lib/linkify.js","node_modules/linkifyjs/lib/linkify/core/tokens/text.js","node_modules/matrix-react-sdk/lib/components/views/right_panel/HeaderButton.js","node_modules/matrix-react-sdk/lib/components/views/right_panel/HeaderButtons.js","node_modules/matrix-react-sdk/lib/components/structures/MainSplit.js","node_modules/matrix-react-sdk/lib/resizer/index.js","node_modules/matrix-react-sdk/lib/resizer/distributors/fixed.js","node_modules/matrix-react-sdk/lib/resizer/item.js","node_modules/matrix-react-sdk/res/img/icons-create-room.svg","node_modules/matrix-react-sdk/res/img/external-link.svg","node_modules/react-beautiful-dnd/lib/state/is-within.js","node_modules/react-beautiful-dnd/lib/state/visibility/is-partially-visible.js","node_modules/reselect/lib/index.js","node_modules/react-beautiful-dnd/lib/view/get-window-scroll-position.js","node_modules/react-motion/lib/mapToZero.js","node_modules/react-motion/lib/stepper.js","node_modules/react-motion/node_modules/performance-now/lib/performance-now.js","node_modules/raf/index.js","node_modules/react-motion/lib/shouldStopAnimation.js","node_modules/react-beautiful-dnd/lib/view/drag-handle/util/create-scheduler.js","node_modules/react-beautiful-dnd/lib/view/get-window-from-ref.js","node_modules/react-beautiful-dnd/lib/view/key-codes.js","node_modules/matrix-react-sdk/lib/actions/actionCreators.js","node_modules/matrix-react-sdk/lib/Registration.js","node_modules/matrix-react-sdk/lib/components/structures/TabbedView.js","node_modules/matrix-react-sdk/lib/components/views/elements/SyntaxHighlight.js","node_modules/matrix-react-sdk/lib/components/views/auth/ServerTypeSelector.js","node_modules/matrix-react-sdk/res/img/icon_context_delete.svg","node_modules/matrix-react-sdk/lib/utils/IdentityServerUtils.js","node_modules/velocity-animate/velocity.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/ErrorDialog.js","node_modules/matrix-react-sdk/lib/components/views/elements/AppTile.js","node_modules/matrix-react-sdk/lib/components/views/rooms/Autocomplete.js","node_modules/lodash/_baseFlatten.js","node_modules/lodash/_arrayPush.js","node_modules/lodash/isArguments.js","node_modules/lodash/_Stack.js","node_modules/lodash/_getSymbols.js","node_modules/lodash/isBuffer.js","node_modules/lodash/isLength.js","node_modules/lodash/_nodeUtil.js","node_modules/lodash/_isPrototype.js","node_modules/lodash/_isKey.js","node_modules/lodash/_flatRest.js","node_modules/emojibase-regex/emoticon.js","node_modules/matrix-react-sdk/lib/components/views/rooms/BasicMessageComposer.js","node_modules/matrix-react-sdk/lib/editor/model.js","node_modules/matrix-react-sdk/lib/editor/render.js","node_modules/matrix-react-sdk/lib/editor/dom.js","node_modules/matrix-react-sdk/lib/editor/parts.js","node_modules/matrix-react-sdk/lib/editor/deserialize.js","node_modules/commonmark/lib/node.js","node_modules/matrix-react-sdk/lib/components/views/rooms/Stickerpicker.js","node_modules/lodash/_assignValue.js","node_modules/lodash/_getPrototype.js","node_modules/lodash/_cloneArrayBuffer.js","node_modules/matrix-react-sdk/lib/components/views/rooms/ReplyPreview.js","node_modules/matrix-react-sdk/lib/notifications/PushRuleVectorState.js","node_modules/react-is/index.js","node_modules/lodash-es/_root.js","node_modules/lodash-es/_Symbol.js","node_modules/lodash-es/_getRawTag.js","node_modules/lodash-es/_objectToString.js","node_modules/lodash-es/_baseGetTag.js","node_modules/lodash-es/_overArg.js","node_modules/lodash-es/_getPrototype.js","node_modules/lodash-es/isObjectLike.js","node_modules/lodash-es/isPlainObject.js","node_modules/redux/es/createStore.js","node_modules/redux/es/combineReducers.js","node_modules/redux/es/bindActionCreators.js","node_modules/redux/es/compose.js","node_modules/redux/es/applyMiddleware.js","node_modules/redux/es/index.js","node_modules/symbol-observable/es/index.js","node_modules/esrever/esrever.js","node_modules/lodash/omit.js","node_modules/react-immutable-proptypes/dist/ImmutablePropTypes.js","node_modules/isomorphic-base64/browser.js","node_modules/core-js/modules/_ie8-dom-define.js","node_modules/core-js/modules/_wks-ext.js","node_modules/core-js/modules/_object-keys-internal.js","node_modules/core-js/modules/_object-dps.js","node_modules/core-js/modules/_object-gopn-ext.js","node_modules/core-js/modules/_object-assign.js","node_modules/core-js/modules/_same-value.js","node_modules/core-js/modules/_bind.js","node_modules/core-js/modules/_invoke.js","node_modules/core-js/modules/_parse-int.js","node_modules/core-js/modules/_parse-float.js","node_modules/core-js/modules/_a-number-value.js","node_modules/core-js/modules/_is-integer.js","node_modules/core-js/modules/_math-log1p.js","node_modules/core-js/modules/_math-fround.js","node_modules/core-js/modules/_iter-call.js","node_modules/core-js/modules/_array-reduce.js","node_modules/core-js/modules/_array-copy-within.js","node_modules/core-js/modules/_iter-step.js","node_modules/core-js/modules/es6.regexp.exec.js","node_modules/core-js/modules/es6.regexp.flags.js","node_modules/core-js/modules/_perform.js","node_modules/core-js/modules/_promise-resolve.js","node_modules/core-js/modules/es6.map.js","node_modules/core-js/modules/_collection-strong.js","node_modules/core-js/modules/es6.set.js","node_modules/core-js/modules/es6.weak-map.js","node_modules/core-js/modules/_collection-weak.js","node_modules/core-js/modules/_to-index.js","node_modules/core-js/modules/_own-keys.js","node_modules/core-js/modules/_flatten-into-array.js","node_modules/core-js/modules/_string-pad.js","node_modules/core-js/modules/_object-to-array.js","node_modules/core-js/modules/_collection-to-json.js","node_modules/core-js/modules/_array-from-iterable.js","node_modules/core-js/modules/_math-scale.js","node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js","node_modules/matrix-react-sdk/lib/VectorConferenceHandler.js","node_modules/matrix-js-sdk/lib/content-helpers.js","node_modules/matrix-js-sdk/lib/store/memory.js","node_modules/matrix-js-sdk/lib/store/indexeddb.js","node_modules/core-js/library/modules/_set-proto.js","node_modules/core-js/library/modules/_invoke.js","node_modules/matrix-js-sdk/lib/client.js","node_modules/core-js/library/modules/_collection-strong.js","node_modules/core-js/library/modules/_set-species.js","node_modules/core-js/library/modules/_collection.js","node_modules/core-js/library/modules/_collection-to-json.js","node_modules/core-js/library/modules/_set-collection-of.js","node_modules/core-js/library/modules/_set-collection-from.js","node_modules/core-js/library/modules/_object-to-array.js","node_modules/matrix-js-sdk/lib/ReEmitter.js","node_modules/matrix-js-sdk/lib/crypto/store/localStorage-crypto-store.js","node_modules/core-js/library/modules/_species-constructor.js","node_modules/core-js/library/modules/_perform.js","node_modules/core-js/library/modules/_promise-resolve.js","node_modules/matrix-js-sdk/lib/crypto/verification/Base.js","node_modules/safe-buffer/index.js","node_modules/matrix-js-sdk/lib/models/room-state.js","node_modules/matrix-js-sdk/lib/models/room.js","node_modules/babel-runtime/core-js/number/is-integer.js","node_modules/matrix-js-sdk/lib/models/group.js","node_modules/matrix-js-sdk/lib/service-types.js","node_modules/matrix-js-sdk/lib/autodiscovery.js","node_modules/matrix-js-sdk/node_modules/qs/lib/formats.js","node_modules/matrix-react-sdk/lib/utils/createMatrixClient.js","node_modules/util/util.js","node_modules/date-names/en.js","node_modules/matrix-react-sdk/lib/Roles.js","node_modules/lodash/_SetCache.js","node_modules/lodash/isFunction.js","node_modules/lodash/_freeGlobal.js","node_modules/lodash/_toSource.js","node_modules/lodash/_cacheHas.js","node_modules/lodash/_Set.js","node_modules/matrix-react-sdk/res/img/chevron-left.png","node_modules/matrix-react-sdk/res/img/fileicon.png","node_modules/matrix-react-sdk/res/img/files.png","node_modules/matrix-react-sdk/res/img/flags/AD.png","node_modules/matrix-react-sdk/res/img/flags/AE.png","node_modules/matrix-react-sdk/res/img/flags/AF.png","node_modules/matrix-react-sdk/res/img/flags/AG.png","node_modules/matrix-react-sdk/res/img/flags/AI.png","node_modules/matrix-react-sdk/res/img/flags/AL.png","node_modules/matrix-react-sdk/res/img/flags/AM.png","node_modules/matrix-react-sdk/res/img/flags/AO.png","node_modules/matrix-react-sdk/res/img/flags/AQ.png","node_modules/matrix-react-sdk/res/img/flags/AR.png","node_modules/matrix-react-sdk/res/img/flags/AS.png","node_modules/matrix-react-sdk/res/img/flags/AT.png","node_modules/matrix-react-sdk/res/img/flags/AU.png","node_modules/matrix-react-sdk/res/img/flags/AW.png","node_modules/matrix-react-sdk/res/img/flags/AX.png","node_modules/matrix-react-sdk/res/img/flags/AZ.png","node_modules/matrix-react-sdk/res/img/flags/BA.png","node_modules/matrix-react-sdk/res/img/flags/BB.png","node_modules/matrix-react-sdk/res/img/flags/BD.png","node_modules/matrix-react-sdk/res/img/flags/BE.png","node_modules/matrix-react-sdk/res/img/flags/BF.png","node_modules/matrix-react-sdk/res/img/flags/BG.png","node_modules/matrix-react-sdk/res/img/flags/BH.png","node_modules/matrix-react-sdk/res/img/flags/BI.png","node_modules/matrix-react-sdk/res/img/flags/BJ.png","node_modules/matrix-react-sdk/res/img/flags/BL.png","node_modules/matrix-react-sdk/res/img/flags/BM.png","node_modules/matrix-react-sdk/res/img/flags/BN.png","node_modules/matrix-react-sdk/res/img/flags/BO.png","node_modules/matrix-react-sdk/res/img/flags/BQ.png","node_modules/matrix-react-sdk/res/img/flags/BR.png","node_modules/matrix-react-sdk/res/img/flags/BS.png","node_modules/matrix-react-sdk/res/img/flags/BT.png","node_modules/matrix-react-sdk/res/img/flags/BV.png","node_modules/matrix-react-sdk/res/img/flags/BW.png","node_modules/matrix-react-sdk/res/img/flags/BY.png","node_modules/matrix-react-sdk/res/img/flags/BZ.png","node_modules/matrix-react-sdk/res/img/flags/CA.png","node_modules/matrix-react-sdk/res/img/flags/CC.png","node_modules/matrix-react-sdk/res/img/flags/CD.png","node_modules/matrix-react-sdk/res/img/flags/CF.png","node_modules/matrix-react-sdk/res/img/flags/CG.png","node_modules/matrix-react-sdk/res/img/flags/CH.png","node_modules/matrix-react-sdk/res/img/flags/CI.png","node_modules/matrix-react-sdk/res/img/flags/CK.png","node_modules/matrix-react-sdk/res/img/flags/CL.png","node_modules/matrix-react-sdk/res/img/flags/CM.png","node_modules/matrix-react-sdk/res/img/flags/CN.png","node_modules/matrix-react-sdk/res/img/flags/CO.png","node_modules/matrix-react-sdk/res/img/flags/CR.png","node_modules/matrix-react-sdk/res/img/flags/CU.png","node_modules/matrix-react-sdk/res/img/flags/CV.png","node_modules/matrix-react-sdk/res/img/flags/CW.png","node_modules/matrix-react-sdk/res/img/flags/CX.png","node_modules/matrix-react-sdk/res/img/flags/CY.png","node_modules/matrix-react-sdk/res/img/flags/CZ.png","node_modules/matrix-react-sdk/res/img/flags/DE.png","node_modules/matrix-react-sdk/res/img/flags/DJ.png","node_modules/matrix-react-sdk/res/img/flags/DK.png","node_modules/matrix-react-sdk/res/img/flags/DM.png","node_modules/matrix-react-sdk/res/img/flags/DO.png","node_modules/matrix-react-sdk/res/img/flags/DZ.png","node_modules/matrix-react-sdk/res/img/flags/EC.png","node_modules/matrix-react-sdk/res/img/flags/EE.png","node_modules/matrix-react-sdk/res/img/flags/EG.png","node_modules/matrix-react-sdk/res/img/flags/EH.png","node_modules/matrix-react-sdk/res/img/flags/ER.png","node_modules/matrix-react-sdk/res/img/flags/ES.png","node_modules/matrix-react-sdk/res/img/flags/ET.png","node_modules/matrix-react-sdk/res/img/flags/FI.png","node_modules/matrix-react-sdk/res/img/flags/FJ.png","node_modules/matrix-react-sdk/res/img/flags/FK.png","node_modules/matrix-react-sdk/res/img/flags/FM.png","node_modules/matrix-react-sdk/res/img/flags/FO.png","node_modules/matrix-react-sdk/res/img/flags/FR.png","node_modules/matrix-react-sdk/res/img/flags/GA.png","node_modules/matrix-react-sdk/res/img/flags/GB.png","node_modules/matrix-react-sdk/res/img/flags/GD.png","node_modules/matrix-react-sdk/res/img/flags/GE.png","node_modules/matrix-react-sdk/res/img/flags/GF.png","node_modules/matrix-react-sdk/res/img/flags/GG.png","node_modules/matrix-react-sdk/res/img/flags/GH.png","node_modules/matrix-react-sdk/res/img/flags/GI.png","node_modules/matrix-react-sdk/res/img/flags/GL.png","node_modules/matrix-react-sdk/res/img/flags/GM.png","node_modules/matrix-react-sdk/res/img/flags/GN.png","node_modules/matrix-react-sdk/res/img/flags/GP.png","node_modules/matrix-react-sdk/res/img/flags/GQ.png","node_modules/matrix-react-sdk/res/img/flags/GR.png","node_modules/matrix-react-sdk/res/img/flags/GS.png","node_modules/matrix-react-sdk/res/img/flags/GT.png","node_modules/matrix-react-sdk/res/img/flags/GU.png","node_modules/matrix-react-sdk/res/img/flags/GW.png","node_modules/matrix-react-sdk/res/img/flags/GY.png","node_modules/matrix-react-sdk/res/img/flags/HK.png","node_modules/matrix-react-sdk/res/img/flags/HM.png","node_modules/matrix-react-sdk/res/img/flags/HN.png","node_modules/matrix-react-sdk/res/img/flags/HR.png","node_modules/matrix-react-sdk/res/img/flags/HT.png","node_modules/matrix-react-sdk/res/img/flags/HU.png","node_modules/matrix-react-sdk/res/img/flags/ID.png","node_modules/matrix-react-sdk/res/img/flags/IE.png","node_modules/matrix-react-sdk/res/img/flags/IL.png","node_modules/matrix-react-sdk/res/img/flags/IM.png","node_modules/matrix-react-sdk/res/img/flags/IN.png","node_modules/matrix-react-sdk/res/img/flags/IO.png","node_modules/matrix-react-sdk/res/img/flags/IQ.png","node_modules/matrix-react-sdk/res/img/flags/IR.png","node_modules/matrix-react-sdk/res/img/flags/IS.png","node_modules/matrix-react-sdk/res/img/flags/IT.png","node_modules/matrix-react-sdk/res/img/flags/JE.png","node_modules/matrix-react-sdk/res/img/flags/JM.png","node_modules/matrix-react-sdk/res/img/flags/JO.png","node_modules/matrix-react-sdk/res/img/flags/JP.png","node_modules/matrix-react-sdk/res/img/flags/KE.png","node_modules/matrix-react-sdk/res/img/flags/KG.png","node_modules/matrix-react-sdk/res/img/flags/KH.png","node_modules/matrix-react-sdk/res/img/flags/KI.png","node_modules/matrix-react-sdk/res/img/flags/KM.png","node_modules/matrix-react-sdk/res/img/flags/KN.png","node_modules/matrix-react-sdk/res/img/flags/KP.png","node_modules/matrix-react-sdk/res/img/flags/KR.png","node_modules/matrix-react-sdk/res/img/flags/KW.png","node_modules/matrix-react-sdk/res/img/flags/KY.png","node_modules/matrix-react-sdk/res/img/flags/KZ.png","node_modules/matrix-react-sdk/res/img/flags/LA.png","node_modules/matrix-react-sdk/res/img/flags/LB.png","node_modules/matrix-react-sdk/res/img/flags/LC.png","node_modules/matrix-react-sdk/res/img/flags/LI.png","node_modules/matrix-react-sdk/res/img/flags/LK.png","node_modules/matrix-react-sdk/res/img/flags/LR.png","node_modules/matrix-react-sdk/res/img/flags/LS.png","node_modules/matrix-react-sdk/res/img/flags/LT.png","node_modules/matrix-react-sdk/res/img/flags/LU.png","node_modules/matrix-react-sdk/res/img/flags/LV.png","node_modules/matrix-react-sdk/res/img/flags/LY.png","node_modules/matrix-react-sdk/res/img/flags/MA.png","node_modules/matrix-react-sdk/res/img/flags/MC.png","node_modules/matrix-react-sdk/res/img/flags/MD.png","node_modules/matrix-react-sdk/res/img/flags/ME.png","node_modules/matrix-react-sdk/res/img/flags/MF.png","node_modules/matrix-react-sdk/res/img/flags/MG.png","node_modules/matrix-react-sdk/res/img/flags/MH.png","node_modules/matrix-react-sdk/res/img/flags/MK.png","node_modules/matrix-react-sdk/res/img/flags/ML.png","node_modules/matrix-react-sdk/res/img/flags/MM.png","node_modules/matrix-react-sdk/res/img/flags/MN.png","node_modules/matrix-react-sdk/res/img/flags/MO.png","node_modules/matrix-react-sdk/res/img/flags/MP.png","node_modules/matrix-react-sdk/res/img/flags/MQ.png","node_modules/matrix-react-sdk/res/img/flags/MR.png","node_modules/matrix-react-sdk/res/img/flags/MS.png","node_modules/matrix-react-sdk/res/img/flags/MT.png","node_modules/matrix-react-sdk/res/img/flags/MU.png","node_modules/matrix-react-sdk/res/img/flags/MV.png","node_modules/matrix-react-sdk/res/img/flags/MW.png","node_modules/matrix-react-sdk/res/img/flags/MX.png","node_modules/matrix-react-sdk/res/img/flags/MY.png","node_modules/matrix-react-sdk/res/img/flags/MZ.png","node_modules/matrix-react-sdk/res/img/flags/NA.png","node_modules/matrix-react-sdk/res/img/flags/NC.png","node_modules/matrix-react-sdk/res/img/flags/NE.png","node_modules/matrix-react-sdk/res/img/flags/NF.png","node_modules/matrix-react-sdk/res/img/flags/NG.png","node_modules/matrix-react-sdk/res/img/flags/NI.png","node_modules/matrix-react-sdk/res/img/flags/NL.png","node_modules/matrix-react-sdk/res/img/flags/NO.png","node_modules/matrix-react-sdk/res/img/flags/NP.png","node_modules/matrix-react-sdk/res/img/flags/NR.png","node_modules/matrix-react-sdk/res/img/flags/NU.png","node_modules/matrix-react-sdk/res/img/flags/NZ.png","node_modules/matrix-react-sdk/res/img/flags/OM.png","node_modules/matrix-react-sdk/res/img/flags/PA.png","node_modules/matrix-react-sdk/res/img/flags/PE.png","node_modules/matrix-react-sdk/res/img/flags/PF.png","node_modules/matrix-react-sdk/res/img/flags/PG.png","node_modules/matrix-react-sdk/res/img/flags/PH.png","node_modules/matrix-react-sdk/res/img/flags/PK.png","node_modules/matrix-react-sdk/res/img/flags/PL.png","node_modules/matrix-react-sdk/res/img/flags/PM.png","node_modules/matrix-react-sdk/res/img/flags/PN.png","node_modules/matrix-react-sdk/res/img/flags/PR.png","node_modules/matrix-react-sdk/res/img/flags/PS.png","node_modules/matrix-react-sdk/res/img/flags/PT.png","node_modules/matrix-react-sdk/res/img/flags/PW.png","node_modules/matrix-react-sdk/res/img/flags/PY.png","node_modules/matrix-react-sdk/res/img/flags/QA.png","node_modules/matrix-react-sdk/res/img/flags/RE.png","node_modules/matrix-react-sdk/res/img/flags/RO.png","node_modules/matrix-react-sdk/res/img/flags/RS.png","node_modules/matrix-react-sdk/res/img/flags/RU.png","node_modules/matrix-react-sdk/res/img/flags/RW.png","node_modules/matrix-react-sdk/res/img/flags/SA.png","node_modules/matrix-react-sdk/res/img/flags/SB.png","node_modules/matrix-react-sdk/res/img/flags/SC.png","node_modules/matrix-react-sdk/res/img/flags/SD.png","node_modules/matrix-react-sdk/res/img/flags/SE.png","node_modules/matrix-react-sdk/res/img/flags/SG.png","node_modules/matrix-react-sdk/res/img/flags/SH.png","node_modules/matrix-react-sdk/res/img/flags/SI.png","node_modules/matrix-react-sdk/res/img/flags/SJ.png","node_modules/matrix-react-sdk/res/img/flags/SK.png","node_modules/matrix-react-sdk/res/img/flags/SL.png","node_modules/matrix-react-sdk/res/img/flags/SM.png","node_modules/matrix-react-sdk/res/img/flags/SN.png","node_modules/matrix-react-sdk/res/img/flags/SO.png","node_modules/matrix-react-sdk/res/img/flags/SR.png","node_modules/matrix-react-sdk/res/img/flags/SS.png","node_modules/matrix-react-sdk/res/img/flags/ST.png","node_modules/matrix-react-sdk/res/img/flags/SV.png","node_modules/matrix-react-sdk/res/img/flags/SX.png","node_modules/matrix-react-sdk/res/img/flags/SY.png","node_modules/matrix-react-sdk/res/img/flags/SZ.png","node_modules/matrix-react-sdk/res/img/flags/TC.png","node_modules/matrix-react-sdk/res/img/flags/TD.png","node_modules/matrix-react-sdk/res/img/flags/TF.png","node_modules/matrix-react-sdk/res/img/flags/TG.png","node_modules/matrix-react-sdk/res/img/flags/TH.png","node_modules/matrix-react-sdk/res/img/flags/TJ.png","node_modules/matrix-react-sdk/res/img/flags/TK.png","node_modules/matrix-react-sdk/res/img/flags/TL.png","node_modules/matrix-react-sdk/res/img/flags/TM.png","node_modules/matrix-react-sdk/res/img/flags/TN.png","node_modules/matrix-react-sdk/res/img/flags/TO.png","node_modules/matrix-react-sdk/res/img/flags/TR.png","node_modules/matrix-react-sdk/res/img/flags/TT.png","node_modules/matrix-react-sdk/res/img/flags/TV.png","node_modules/matrix-react-sdk/res/img/flags/TW.png","node_modules/matrix-react-sdk/res/img/flags/TZ.png","node_modules/matrix-react-sdk/res/img/flags/UA.png","node_modules/matrix-react-sdk/res/img/flags/UG.png","node_modules/matrix-react-sdk/res/img/flags/US.png","node_modules/matrix-react-sdk/res/img/flags/UY.png","node_modules/matrix-react-sdk/res/img/flags/UZ.png","node_modules/matrix-react-sdk/res/img/flags/VA.png","node_modules/matrix-react-sdk/res/img/flags/VC.png","node_modules/matrix-react-sdk/res/img/flags/VE.png","node_modules/matrix-react-sdk/res/img/flags/VG.png","node_modules/matrix-react-sdk/res/img/flags/VI.png","node_modules/matrix-react-sdk/res/img/flags/VN.png","node_modules/matrix-react-sdk/res/img/flags/VU.png","node_modules/matrix-react-sdk/res/img/flags/WF.png","node_modules/matrix-react-sdk/res/img/flags/WS.png","node_modules/matrix-react-sdk/res/img/flags/YE.png","node_modules/matrix-react-sdk/res/img/flags/YT.png","node_modules/matrix-react-sdk/res/img/flags/ZA.png","node_modules/matrix-react-sdk/res/img/flags/ZM.png","node_modules/matrix-react-sdk/res/img/flags/ZW.png","node_modules/matrix-react-sdk/res/img/social/email-1.png","node_modules/matrix-react-sdk/res/img/social/facebook.png","node_modules/matrix-react-sdk/res/img/social/linkedin.png","node_modules/matrix-react-sdk/res/img/social/reddit.png","node_modules/matrix-react-sdk/res/img/social/twitter-2.png","node_modules/matrix-react-sdk/res/img/stickerpack-placeholder.png","node_modules/matrix-react-sdk/lib/utils/StorageManager.js","node_modules/matrix-react-sdk/lib/integrations/IntegrationManagerInstance.js","node_modules/matrix-react-sdk/lib/utils/TypeUtils.js","node_modules/matrix-react-sdk/lib/UserActivity.js","src/vector/platform/VectorBasePlatform.js","node_modules/matrix-react-sdk/lib/components/structures/EmbeddedPage.js","node_modules/htmlparser2/lib/Parser.js","node_modules/htmlparser2/lib/Tokenizer.js","node_modules/entities/lib/decode_codepoint.js","node_modules/domhandler/index.js","node_modules/domhandler/lib/node.js","node_modules/domutils/index.js","node_modules/dom-serializer/node_modules/entities/lib/decode.js","node_modules/dom-serializer/node_modules/entities/lib/encode.js","node_modules/htmlparser2/lib/WritableStream.js","node_modules/postcss/lib/css-syntax-error.js","node_modules/postcss/lib/stringifier.js","node_modules/postcss/lib/processor.js","node_modules/postcss/lib/lazy-result.js","node_modules/source-map/source-map.js","node_modules/source-map/lib/source-map-generator.js","node_modules/source-map/lib/base64-vlq.js","node_modules/source-map/lib/array-set.js","node_modules/postcss/lib/list.js","node_modules/postcss/lib/root.js","node_modules/babel-runtime/core-js/set-immediate.js","node_modules/matrix-react-sdk/lib/utils/Accessibility.js","node_modules/matrix-react-sdk/lib/stores/CustomRoomTagStore.js","node_modules/flux/lib/FluxStoreGroup.js","node_modules/flux/lib/FluxReduceStore.js","node_modules/flux/lib/FluxStore.js","node_modules/fbemitter/lib/EmitterSubscription.js","node_modules/matrix-react-sdk/node_modules/qs/lib/formats.js","node_modules/matrix-react-sdk/lib/utils/permalinks/SpecPermalinkConstructor.js","node_modules/linkifyjs/lib/linkify/core/state.js","node_modules/linkifyjs/lib/linkify/core/tokens/create-token-class.js","node_modules/matrix-react-sdk/lib/components/views/right_panel/GroupHeaderButtons.js","node_modules/matrix-react-sdk/lib/resizer/sizer.js","node_modules/matrix-react-sdk/res/img/cancel-small.svg","node_modules/matrix-react-sdk/res/img/icons-room-add.svg","node_modules/matrix-react-sdk/lib/components/structures/IndicatorScrollbar.js","node_modules/matrix-react-sdk/lib/components/views/auth/InteractiveAuthEntryComponents.js","node_modules/matrix-react-sdk/lib/components/structures/TagPanelButtons.js","node_modules/react-beautiful-dnd/lib/state/get-displacement-map.js","node_modules/react-beautiful-dnd/lib/state/visibility/is-visible-through-frame.js","node_modules/react-beautiful-dnd/lib/state/move-to-next-index/is-visible-in-new-location.js","node_modules/react-beautiful-dnd/lib/view/animation.js","node_modules/react-beautiful-dnd/lib/state/action-creators.js","node_modules/raf-schd/esm/index.js","node_modules/react-beautiful-dnd/lib/view/placeholder/index.js","node_modules/react-motion/lib/presets.js","node_modules/react-beautiful-dnd/lib/view/drag-handle/util/block-standard-key-events.js","node_modules/react-beautiful-dnd/lib/view/get-center-position.js","node_modules/matrix-react-sdk/lib/PageTypes.js","node_modules/matrix-react-sdk/lib/CallMediaHandler.js","node_modules/matrix-react-sdk/lib/stores/SessionStore.js","node_modules/matrix-react-sdk/lib/utils/pages.js","node_modules/matrix-react-sdk/lib/actions/TagOrderActions.js","node_modules/matrix-react-sdk/lib/actions/RoomListActions.js","node_modules/matrix-react-sdk/res/img/icons-groups.svg","node_modules/matrix-react-sdk/lib/utils/DirectoryUtils.js","node_modules/matrix-react-sdk/res/img/e2e/warning.svg","node_modules/matrix-react-sdk/lib/components/structures/RoomSubList.js","node_modules/matrix-react-sdk/lib/components/views/rooms/RoomTile.js","node_modules/matrix-react-sdk/res/img/icon_person.svg","node_modules/matrix-react-sdk/lib/components/views/elements/LazyRenderList.js","node_modules/matrix-react-sdk/lib/components/structures/RoomView.js","node_modules/browser-encrypt-attachment/index.js","node_modules/matrix-react-sdk/lib/utils/EditorStateTransfer.js","node_modules/matrix-react-sdk/lib/components/views/context_menus/TopLeftMenu.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/LogoutDialog.js","node_modules/matrix-react-sdk/lib/components/views/avatars/BaseAvatar.js","node_modules/matrix-react-sdk/lib/components/views/auth/CountryDropdown.js","node_modules/matrix-react-sdk/lib/phonenumber.js","node_modules/matrix-react-sdk/lib/components/views/auth/ServerConfig.js","node_modules/matrix-react-sdk/lib/components/views/context_menus/StatusMessageContextMenu.js","node_modules/matrix-react-sdk/lib/components/views/avatars/RoomAvatar.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/DeactivateAccountDialog.js","node_modules/matrix-react-sdk/lib/components/views/settings/tabs/room/AdvancedRoomSettingsTab.js","node_modules/matrix-react-sdk/lib/components/views/settings/tabs/room/RolesRoomSettingsTab.js","node_modules/matrix-react-sdk/lib/components/views/settings/tabs/room/GeneralRoomSettingsTab.js","node_modules/matrix-react-sdk/lib/components/views/room_settings/RoomProfileSettings.js","node_modules/matrix-react-sdk/lib/components/views/settings/tabs/room/SecurityRoomSettingsTab.js","node_modules/matrix-react-sdk/lib/components/views/settings/tabs/room/NotificationSettingsTab.js","node_modules/qr.js/lib/mode.js","node_modules/qr.js/lib/ErrorCorrectLevel.js","node_modules/qr.js/lib/Polynomial.js","node_modules/qr.js/lib/math.js","node_modules/matrix-react-sdk/lib/ScalarMessaging.js","node_modules/matrix-react-sdk/lib/components/views/settings/tabs/user/GeneralUserSettingsTab.js","node_modules/matrix-react-sdk/lib/components/views/settings/ProfileSettings.js","node_modules/matrix-react-sdk/lib/components/views/elements/LanguageDropdown.js","node_modules/matrix-react-sdk/lib/boundThreepids.js","node_modules/matrix-react-sdk/res/img/feather-customised/warning-triangle.svg","node_modules/matrix-react-sdk/lib/components/views/settings/tabs/user/LabsUserSettingsTab.js","node_modules/matrix-react-sdk/lib/components/views/settings/tabs/user/SecurityUserSettingsTab.js","node_modules/matrix-react-sdk/lib/components/views/settings/tabs/user/NotificationUserSettingsTab.js","node_modules/matrix-react-sdk/lib/components/views/settings/tabs/user/PreferencesUserSettingsTab.js","node_modules/matrix-react-sdk/lib/components/views/settings/tabs/user/VoiceUserSettingsTab.js","node_modules/matrix-react-sdk/lib/components/views/settings/tabs/user/HelpUserSettingsTab.js","node_modules/matrix-react-sdk/lib/components/views/settings/tabs/user/FlairUserSettingsTab.js","node_modules/matrix-react-sdk/lib/components/views/groups/GroupUserSettings.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/WidgetOpenIDPermissionsDialog.js","node_modules/matrix-react-sdk/res/img/network-matrix.svg","node_modules/matrix-react-sdk/lib/components/views/elements/AppPermission.js","node_modules/matrix-react-sdk/lib/components/views/elements/AppWarning.js","node_modules/matrix-react-sdk/lib/components/views/elements/MessageSpinner.js","node_modules/matrix-react-sdk/lib/components/views/elements/TagTile.js","node_modules/matrix-react-sdk/lib/components/views/elements/Flair.js","node_modules/matrix-react-sdk/lib/components/views/elements/ManageIntegsButton.js","node_modules/matrix-react-sdk/lib/components/views/elements/PersistedElement.js","node_modules/matrix-react-sdk/lib/utils/pillify.js","node_modules/matrix-react-sdk/lib/components/views/messages/MImageBody.js","node_modules/matrix-react-sdk/lib/components/views/messages/MessageEvent.js","node_modules/matrix-react-sdk/lib/components/views/right_panel/RoomHeaderButtons.js","node_modules/matrix-react-sdk/lib/components/views/rooms/AppsDrawer.js","node_modules/lodash/flatMap.js","node_modules/lodash/_baseIteratee.js","node_modules/lodash/_baseIsEqual.js","node_modules/lodash/_equalArrays.js","node_modules/lodash/_Uint8Array.js","node_modules/lodash/_getAllKeys.js","node_modules/lodash/_baseGetAllKeys.js","node_modules/lodash/stubArray.js","node_modules/lodash/_arrayLikeKeys.js","node_modules/lodash/isTypedArray.js","node_modules/lodash/_overArg.js","node_modules/lodash/_isStrictComparable.js","node_modules/lodash/_matchesStrictComparable.js","node_modules/lodash/get.js","node_modules/lodash/toString.js","node_modules/lodash/hasIn.js","node_modules/lodash/_baseMap.js","node_modules/matrix-react-sdk/lib/autocomplete/Autocompleter.js","node_modules/lodash/_overRest.js","node_modules/lodash/_setToString.js","node_modules/lodash/_defineProperty.js","node_modules/matrix-react-sdk/lib/editor/offset.js","node_modules/matrix-react-sdk/lib/editor/range.js","node_modules/matrix-react-sdk/lib/editor/serialize.js","node_modules/matrix-react-sdk/lib/Markdown.js","node_modules/entities/index.js","node_modules/commonmark/lib/render/renderer.js","node_modules/matrix-react-sdk/lib/utils/Receipt.js","node_modules/matrix-react-sdk/res/img/room_replaced.svg","node_modules/ms/index.js","node_modules/lodash/_baseAssignValue.js","node_modules/lodash/keysIn.js","node_modules/lodash/_getSymbolsIn.js","node_modules/lodash/_getAllKeysIn.js","node_modules/lodash/toNumber.js","node_modules/slate-md-serializer/lib/urls.js","node_modules/lodash/clamp.js","node_modules/matrix-react-sdk/lib/components/views/rooms/PinnedEventTile.js","node_modules/matrix-react-sdk/lib/components/views/rooms/RoomDetailRow.js","node_modules/matrix-react-sdk/lib/components/views/rooms/SimpleRoomHeader.js","node_modules/matrix-react-sdk/res/img/button-text-formatting.svg","node_modules/matrix-react-sdk/lib/notifications/StandardActions.js","node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","node_modules/react-redux/es/utils/PropTypes.js","node_modules/react-redux/es/components/Provider.js","node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","node_modules/@babel/runtime/helpers/esm/extends.js","node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","node_modules/react-redux/es/utils/Subscription.js","node_modules/react-redux/es/components/connectAdvanced.js","node_modules/react-redux/es/utils/shallowEqual.js","node_modules/react-redux/es/connect/wrapMapToProps.js","node_modules/react-redux/es/connect/mapDispatchToProps.js","node_modules/react-redux/es/connect/mapStateToProps.js","node_modules/react-redux/es/connect/mergeProps.js","node_modules/react-redux/es/connect/selectorFactory.js","node_modules/react-redux/es/connect/connect.js","node_modules/react-redux/es/index.js","node_modules/symbol-observable/es/ponyfill.js","node_modules/lodash-es/_freeGlobal.js","node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","node_modules/direction/index.js","node_modules/selection-is-backward/index.js","node_modules/lodash/throttle.js","node_modules/react-dom/server.browser.js","node_modules/babel-polyfill/lib/index.js","node_modules/core-js/shim.js","node_modules/core-js/modules/es6.symbol.js","node_modules/core-js/modules/_function-to-string.js","node_modules/core-js/modules/_enum-keys.js","node_modules/core-js/modules/es6.object.create.js","node_modules/core-js/modules/es6.object.define-property.js","node_modules/core-js/modules/es6.object.define-properties.js","node_modules/core-js/modules/es6.object.get-own-property-descriptor.js","node_modules/core-js/modules/es6.object.get-prototype-of.js","node_modules/core-js/modules/es6.object.keys.js","node_modules/core-js/modules/es6.object.get-own-property-names.js","node_modules/core-js/modules/es6.object.freeze.js","node_modules/core-js/modules/es6.object.seal.js","node_modules/core-js/modules/es6.object.prevent-extensions.js","node_modules/core-js/modules/es6.object.is-frozen.js","node_modules/core-js/modules/es6.object.is-sealed.js","node_modules/core-js/modules/es6.object.is-extensible.js","node_modules/core-js/modules/es6.object.assign.js","node_modules/core-js/modules/es6.object.is.js","node_modules/core-js/modules/es6.object.set-prototype-of.js","node_modules/core-js/modules/es6.object.to-string.js","node_modules/core-js/modules/es6.function.bind.js","node_modules/core-js/modules/es6.function.name.js","node_modules/core-js/modules/es6.function.has-instance.js","node_modules/core-js/modules/es6.parse-int.js","node_modules/core-js/modules/es6.parse-float.js","node_modules/core-js/modules/es6.number.constructor.js","node_modules/core-js/modules/es6.number.to-fixed.js","node_modules/core-js/modules/es6.number.to-precision.js","node_modules/core-js/modules/es6.number.epsilon.js","node_modules/core-js/modules/es6.number.is-finite.js","node_modules/core-js/modules/es6.number.is-integer.js","node_modules/core-js/modules/es6.number.is-nan.js","node_modules/core-js/modules/es6.number.is-safe-integer.js","node_modules/core-js/modules/es6.number.max-safe-integer.js","node_modules/core-js/modules/es6.number.min-safe-integer.js","node_modules/core-js/modules/es6.number.parse-float.js","node_modules/core-js/modules/es6.number.parse-int.js","node_modules/core-js/modules/es6.math.acosh.js","node_modules/core-js/modules/es6.math.asinh.js","node_modules/core-js/modules/es6.math.atanh.js","node_modules/core-js/modules/es6.math.cbrt.js","node_modules/core-js/modules/es6.math.clz32.js","node_modules/core-js/modules/es6.math.cosh.js","node_modules/core-js/modules/es6.math.expm1.js","node_modules/core-js/modules/es6.math.fround.js","node_modules/core-js/modules/es6.math.hypot.js","node_modules/core-js/modules/es6.math.imul.js","node_modules/core-js/modules/es6.math.log10.js","node_modules/core-js/modules/es6.math.log1p.js","node_modules/core-js/modules/es6.math.log2.js","node_modules/core-js/modules/es6.math.sign.js","node_modules/core-js/modules/es6.math.sinh.js","node_modules/core-js/modules/es6.math.tanh.js","node_modules/core-js/modules/es6.math.trunc.js","node_modules/core-js/modules/es6.string.from-code-point.js","node_modules/core-js/modules/es6.string.raw.js","node_modules/core-js/modules/es6.string.trim.js","node_modules/core-js/modules/es6.string.iterator.js","node_modules/core-js/modules/es6.string.code-point-at.js","node_modules/core-js/modules/es6.string.ends-with.js","node_modules/core-js/modules/es6.string.includes.js","node_modules/core-js/modules/es6.string.repeat.js","node_modules/core-js/modules/es6.string.starts-with.js","node_modules/core-js/modules/es6.string.anchor.js","node_modules/core-js/modules/es6.string.big.js","node_modules/core-js/modules/es6.string.blink.js","node_modules/core-js/modules/es6.string.bold.js","node_modules/core-js/modules/es6.string.fixed.js","node_modules/core-js/modules/es6.string.fontcolor.js","node_modules/core-js/modules/es6.string.fontsize.js","node_modules/core-js/modules/es6.string.italics.js","node_modules/core-js/modules/es6.string.link.js","node_modules/core-js/modules/es6.string.small.js","node_modules/core-js/modules/es6.string.strike.js","node_modules/core-js/modules/es6.string.sub.js","node_modules/core-js/modules/es6.string.sup.js","node_modules/core-js/modules/es6.date.now.js","node_modules/core-js/modules/es6.date.to-json.js","node_modules/core-js/modules/es6.date.to-iso-string.js","node_modules/core-js/modules/_date-to-iso-string.js","node_modules/core-js/modules/es6.date.to-string.js","node_modules/core-js/modules/es6.date.to-primitive.js","node_modules/core-js/modules/_date-to-primitive.js","node_modules/core-js/modules/es6.array.is-array.js","node_modules/core-js/modules/es6.array.from.js","node_modules/core-js/modules/es6.array.of.js","node_modules/core-js/modules/es6.array.join.js","node_modules/core-js/modules/es6.array.slice.js","node_modules/core-js/modules/es6.array.sort.js","node_modules/core-js/modules/es6.array.for-each.js","node_modules/core-js/modules/_array-species-constructor.js","node_modules/core-js/modules/es6.array.map.js","node_modules/core-js/modules/es6.array.filter.js","node_modules/core-js/modules/es6.array.some.js","node_modules/core-js/modules/es6.array.every.js","node_modules/core-js/modules/es6.array.reduce.js","node_modules/core-js/modules/es6.array.reduce-right.js","node_modules/core-js/modules/es6.array.index-of.js","node_modules/core-js/modules/es6.array.last-index-of.js","node_modules/core-js/modules/es6.array.copy-within.js","node_modules/core-js/modules/es6.array.fill.js","node_modules/core-js/modules/es6.array.find.js","node_modules/core-js/modules/es6.array.find-index.js","node_modules/core-js/modules/es6.array.species.js","node_modules/core-js/modules/es6.regexp.constructor.js","node_modules/core-js/modules/es6.regexp.to-string.js","node_modules/core-js/modules/es6.regexp.match.js","node_modules/core-js/modules/es6.regexp.replace.js","node_modules/core-js/modules/es6.regexp.search.js","node_modules/core-js/modules/es6.regexp.split.js","node_modules/core-js/modules/es6.promise.js","node_modules/core-js/modules/es6.weak-set.js","node_modules/core-js/modules/es6.typed.array-buffer.js","node_modules/core-js/modules/es6.typed.data-view.js","node_modules/core-js/modules/es6.typed.int8-array.js","node_modules/core-js/modules/es6.typed.uint8-array.js","node_modules/core-js/modules/es6.typed.uint8-clamped-array.js","node_modules/core-js/modules/es6.typed.int16-array.js","node_modules/core-js/modules/es6.typed.uint16-array.js","node_modules/core-js/modules/es6.typed.int32-array.js","node_modules/core-js/modules/es6.typed.uint32-array.js","node_modules/core-js/modules/es6.typed.float32-array.js","node_modules/core-js/modules/es6.typed.float64-array.js","node_modules/core-js/modules/es6.reflect.apply.js","node_modules/core-js/modules/es6.reflect.construct.js","node_modules/core-js/modules/es6.reflect.define-property.js","node_modules/core-js/modules/es6.reflect.delete-property.js","node_modules/core-js/modules/es6.reflect.enumerate.js","node_modules/core-js/modules/es6.reflect.get.js","node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js","node_modules/core-js/modules/es6.reflect.get-prototype-of.js","node_modules/core-js/modules/es6.reflect.has.js","node_modules/core-js/modules/es6.reflect.is-extensible.js","node_modules/core-js/modules/es6.reflect.own-keys.js","node_modules/core-js/modules/es6.reflect.prevent-extensions.js","node_modules/core-js/modules/es6.reflect.set.js","node_modules/core-js/modules/es6.reflect.set-prototype-of.js","node_modules/core-js/modules/es7.array.includes.js","node_modules/core-js/modules/es7.array.flat-map.js","node_modules/core-js/modules/es7.array.flatten.js","node_modules/core-js/modules/es7.string.at.js","node_modules/core-js/modules/es7.string.pad-start.js","node_modules/core-js/modules/es7.string.pad-end.js","node_modules/core-js/modules/es7.string.trim-left.js","node_modules/core-js/modules/es7.string.trim-right.js","node_modules/core-js/modules/es7.string.match-all.js","node_modules/core-js/modules/es7.symbol.async-iterator.js","node_modules/core-js/modules/es7.symbol.observable.js","node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","node_modules/core-js/modules/es7.object.values.js","node_modules/core-js/modules/es7.object.entries.js","node_modules/core-js/modules/es7.object.define-getter.js","node_modules/core-js/modules/es7.object.define-setter.js","node_modules/core-js/modules/es7.object.lookup-getter.js","node_modules/core-js/modules/es7.object.lookup-setter.js","node_modules/core-js/modules/es7.map.to-json.js","node_modules/core-js/modules/es7.set.to-json.js","node_modules/core-js/modules/es7.map.of.js","node_modules/core-js/modules/es7.set.of.js","node_modules/core-js/modules/es7.weak-map.of.js","node_modules/core-js/modules/es7.weak-set.of.js","node_modules/core-js/modules/es7.map.from.js","node_modules/core-js/modules/es7.set.from.js","node_modules/core-js/modules/es7.weak-map.from.js","node_modules/core-js/modules/es7.weak-set.from.js","node_modules/core-js/modules/es7.global.js","node_modules/core-js/modules/es7.system.global.js","node_modules/core-js/modules/es7.error.is-error.js","node_modules/core-js/modules/es7.math.clamp.js","node_modules/core-js/modules/es7.math.deg-per-rad.js","node_modules/core-js/modules/es7.math.degrees.js","node_modules/core-js/modules/es7.math.fscale.js","node_modules/core-js/modules/es7.math.iaddh.js","node_modules/core-js/modules/es7.math.isubh.js","node_modules/core-js/modules/es7.math.imulh.js","node_modules/core-js/modules/es7.math.rad-per-deg.js","node_modules/core-js/modules/es7.math.radians.js","node_modules/core-js/modules/es7.math.scale.js","node_modules/core-js/modules/es7.math.umulh.js","node_modules/core-js/modules/es7.math.signbit.js","node_modules/core-js/modules/es7.promise.finally.js","node_modules/core-js/modules/es7.promise.try.js","node_modules/core-js/modules/es7.reflect.define-metadata.js","node_modules/core-js/modules/es7.reflect.delete-metadata.js","node_modules/core-js/modules/es7.reflect.get-metadata.js","node_modules/core-js/modules/es7.reflect.get-metadata-keys.js","node_modules/core-js/modules/es7.reflect.get-own-metadata.js","node_modules/core-js/modules/es7.reflect.get-own-metadata-keys.js","node_modules/core-js/modules/es7.reflect.has-metadata.js","node_modules/core-js/modules/es7.reflect.has-own-metadata.js","node_modules/core-js/modules/es7.reflect.metadata.js","node_modules/core-js/modules/es7.asap.js","node_modules/core-js/modules/es7.observable.js","node_modules/core-js/modules/web.timers.js","node_modules/core-js/modules/web.immediate.js","node_modules/core-js/modules/web.dom.iterable.js","node_modules/regenerator-runtime/runtime.js","node_modules/core-js/fn/regexp/escape.js","node_modules/core-js/modules/core.regexp.escape.js","node_modules/core-js/modules/_replacer.js","src/vector/index.js","node_modules/olm/olm.wasm","src/vector/rageshakesetup.js","node_modules/core-js/library/fn/object/assign.js","node_modules/core-js/library/modules/es6.object.assign.js","node_modules/core-js/library/modules/_object-assign.js","node_modules/react/cjs/react.production.min.js","src/vector/modernizr.js","node_modules/babel-runtime/core-js/object/prevent-extensions.js","node_modules/core-js/library/fn/object/prevent-extensions.js","node_modules/core-js/library/modules/es6.object.prevent-extensions.js","node_modules/core-js/library/fn/object/freeze.js","node_modules/core-js/library/modules/es6.object.freeze.js","node_modules/babel-runtime/core-js/object/seal.js","node_modules/core-js/library/fn/object/seal.js","node_modules/core-js/library/modules/es6.object.seal.js","node_modules/babel-runtime/core-js/object/define-properties.js","node_modules/core-js/library/fn/object/define-properties.js","node_modules/core-js/library/modules/es6.object.define-properties.js","node_modules/core-js/library/fn/object/get-own-property-descriptor.js","node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js","node_modules/babel-runtime/core-js/object/is-extensible.js","node_modules/core-js/library/fn/object/is-extensible.js","node_modules/core-js/library/modules/es6.object.is-extensible.js","node_modules/babel-runtime/core-js/object/is-frozen.js","node_modules/core-js/library/fn/object/is-frozen.js","node_modules/core-js/library/modules/es6.object.is-frozen.js","node_modules/babel-runtime/core-js/object/is-sealed.js","node_modules/core-js/library/fn/object/is-sealed.js","node_modules/core-js/library/modules/es6.object.is-sealed.js","node_modules/babel-runtime/core-js/object/get-own-property-names.js","node_modules/core-js/library/fn/object/get-own-property-names.js","node_modules/core-js/library/modules/es6.object.get-own-property-names.js","node_modules/core-js/library/fn/object/get-prototype-of.js","node_modules/core-js/library/modules/es6.object.get-prototype-of.js","node_modules/react-dom/cjs/react-dom.production.min.js","node_modules/scheduler/index.js","node_modules/scheduler/cjs/scheduler.production.min.js","node_modules/matrix-react-sdk/lib/Skinner.js","node_modules/base64-js/index.js","node_modules/ieee754/index.js","node_modules/isarray/index.js","node_modules/core-js/library/fn/number/is-finite.js","node_modules/core-js/library/modules/es6.number.is-finite.js","node_modules/core-js/library/fn/object/set-prototype-of.js","node_modules/core-js/library/modules/es6.object.set-prototype-of.js","node_modules/matrix-js-sdk/lib/store/indexeddb-remote-backend.js","node_modules/content-type/index.js","node_modules/matrix-js-sdk/lib/realtime-callbacks.js","node_modules/babel-runtime/core-js/reflect/get-prototype-of.js","node_modules/core-js/library/fn/reflect/get-prototype-of.js","node_modules/core-js/library/modules/es6.reflect.get-prototype-of.js","node_modules/babel-runtime/core-js/reflect/set-prototype-of.js","node_modules/core-js/library/fn/reflect/set-prototype-of.js","node_modules/core-js/library/modules/es6.reflect.set-prototype-of.js","node_modules/core-js/library/fn/reflect/construct.js","node_modules/core-js/library/modules/es6.reflect.construct.js","node_modules/core-js/library/modules/_bind.js","node_modules/core-js/library/fn/set.js","node_modules/core-js/library/modules/es6.set.js","node_modules/core-js/library/modules/_array-methods.js","node_modules/core-js/library/modules/_array-species-create.js","node_modules/core-js/library/modules/_array-species-constructor.js","node_modules/core-js/library/modules/es7.set.to-json.js","node_modules/core-js/library/modules/_array-from-iterable.js","node_modules/core-js/library/modules/es7.set.of.js","node_modules/core-js/library/modules/es7.set.from.js","node_modules/core-js/library/fn/object/entries.js","node_modules/core-js/library/modules/es7.object.entries.js","node_modules/matrix-js-sdk/lib/crypto/RoomList.js","node_modules/core-js/library/fn/object/values.js","node_modules/core-js/library/modules/es7.object.values.js","node_modules/matrix-js-sdk/lib/crypto/store/indexeddb-crypto-store-backend.js","node_modules/core-js/library/fn/map.js","node_modules/core-js/library/modules/es6.map.js","node_modules/core-js/library/modules/es7.map.to-json.js","node_modules/core-js/library/modules/es7.map.of.js","node_modules/core-js/library/modules/es7.map.from.js","node_modules/matrix-js-sdk/lib/crypto/OutgoingRoomKeyRequestManager.js","node_modules/matrix-js-sdk/lib/crypto/verification/QRCode.js","node_modules/core-js/library/fn/promise.js","node_modules/core-js/library/modules/es6.promise.js","node_modules/core-js/library/modules/_microtask.js","node_modules/core-js/library/modules/_user-agent.js","node_modules/core-js/library/modules/es7.promise.finally.js","node_modules/core-js/library/modules/es7.promise.try.js","node_modules/matrix-js-sdk/lib/crypto/verification/SAS.js","node_modules/matrix-js-sdk/lib/crypto/OlmDevice.js","node_modules/matrix-js-sdk/lib/crypto/algorithms/index.js","node_modules/matrix-js-sdk/lib/crypto/algorithms/olm.js","node_modules/matrix-js-sdk/lib/crypto/algorithms/megolm.js","node_modules/matrix-js-sdk/lib/crypto/DeviceList.js","node_modules/matrix-js-sdk/lib/crypto/recoverykey.js","node_modules/bs58/index.js","node_modules/base-x/src/index.js","node_modules/matrix-js-sdk/lib/crypto/backup_password.js","node_modules/punycode/punycode.js","node_modules/url/util.js","node_modules/querystring-es3/decode.js","node_modules/querystring-es3/encode.js","node_modules/matrix-js-sdk/lib/models/search-result.js","node_modules/matrix-js-sdk/lib/models/event-context.js","node_modules/matrix-js-sdk/lib/store/stub.js","node_modules/matrix-js-sdk/lib/filter-component.js","node_modules/matrix-js-sdk/lib/sync.js","node_modules/core-js/library/fn/number/is-integer.js","node_modules/core-js/library/modules/es6.number.is-integer.js","node_modules/core-js/library/modules/_is-integer.js","node_modules/matrix-js-sdk/lib/models/room-summary.js","node_modules/matrix-js-sdk/lib/models/relations.js","node_modules/matrix-js-sdk/lib/base-apis.js","node_modules/matrix-js-sdk/lib/scheduler.js","node_modules/matrix-js-sdk/lib/store/session/webstorage.js","node_modules/matrix-js-sdk/lib/timeline-window.js","node_modules/matrix-js-sdk/lib/interactive-auth.js","node_modules/matrix-js-sdk/node_modules/qs/lib/index.js","node_modules/matrix-js-sdk/node_modules/qs/lib/stringify.js","node_modules/matrix-js-sdk/node_modules/qs/lib/parse.js","node_modules/matrix-react-sdk/lib/settings/handlers/DeviceSettingsHandler.js","node_modules/matrix-react-sdk/lib/settings/handlers/RoomDeviceSettingsHandler.js","node_modules/matrix-react-sdk/lib/settings/handlers/DefaultSettingsHandler.js","node_modules/matrix-react-sdk/lib/settings/handlers/RoomAccountSettingsHandler.js","node_modules/matrix-react-sdk/lib/settings/handlers/AccountSettingsHandler.js","node_modules/matrix-react-sdk/lib/settings/handlers/RoomSettingsHandler.js","node_modules/matrix-react-sdk/lib/settings/handlers/ConfigSettingsHandler.js","node_modules/counterpart/index.js","node_modules/extend/index.js","node_modules/util/support/isBufferBrowser.js","node_modules/util/node_modules/inherits/inherits_browser.js","node_modules/sprintf-js/src/sprintf.js","node_modules/except/index.js","node_modules/indexof/index.js","node_modules/counterpart/strftime.js","node_modules/date-names/index.js","node_modules/counterpart/locales/en.js","node_modules/pluralizers/en.js","webapp/i18n/languages.json","node_modules/flux/index.js","node_modules/flux/lib/Dispatcher.js","node_modules/matrix-react-sdk/lib/settings/Settings.js","node_modules/matrix-react-sdk/lib/settings/controllers/NotificationControllers.js","node_modules/prop-types/factoryWithThrowingShims.js","node_modules/prop-types/lib/ReactPropTypesSecret.js","node_modules/create-react-class/factory.js","node_modules/fbjs/lib/emptyObject.js","node_modules/lodash/_baseUniq.js","node_modules/lodash/_mapCacheClear.js","node_modules/lodash/_Hash.js","node_modules/lodash/_hashClear.js","node_modules/lodash/_baseIsNative.js","node_modules/lodash/_getRawTag.js","node_modules/lodash/_objectToString.js","node_modules/lodash/_isMasked.js","node_modules/lodash/_coreJsData.js","node_modules/lodash/_getValue.js","node_modules/lodash/_hashDelete.js","node_modules/lodash/_hashGet.js","node_modules/lodash/_hashHas.js","node_modules/lodash/_hashSet.js","node_modules/lodash/_listCacheClear.js","node_modules/lodash/_listCacheDelete.js","node_modules/lodash/_listCacheGet.js","node_modules/lodash/_listCacheHas.js","node_modules/lodash/_listCacheSet.js","node_modules/lodash/_mapCacheDelete.js","node_modules/lodash/_isKeyable.js","node_modules/lodash/_mapCacheGet.js","node_modules/lodash/_mapCacheHas.js","node_modules/lodash/_mapCacheSet.js","node_modules/lodash/_setCacheAdd.js","node_modules/lodash/_setCacheHas.js","node_modules/lodash/_arrayIncludes.js","node_modules/lodash/_baseIndexOf.js","node_modules/lodash/_baseFindIndex.js","node_modules/lodash/_baseIsNaN.js","node_modules/lodash/_strictIndexOf.js","node_modules/lodash/_arrayIncludesWith.js","node_modules/lodash/_createSet.js","node_modules/lodash/noop.js","node_modules/matrix-react-sdk/res/img sync ^\\.\\/.*\\.png$","node_modules/matrix-react-sdk/res/img/03b381.png","node_modules/matrix-react-sdk/res/img/368bd6.png","node_modules/matrix-react-sdk/res/img/ac3ba8.png","node_modules/matrix-react-sdk/res/img/attach.png","node_modules/matrix-react-sdk/res/img/call.png","node_modules/matrix-react-sdk/res/img/cancel-black.png","node_modules/matrix-react-sdk/res/img/cancel-black2.png","node_modules/matrix-react-sdk/res/img/cancel.png","node_modules/matrix-react-sdk/res/img/chevron-right.png","node_modules/matrix-react-sdk/res/img/chevron.png","node_modules/matrix-react-sdk/res/img/close-white.png","node_modules/matrix-react-sdk/res/img/create-big.png","node_modules/matrix-react-sdk/res/img/create.png","node_modules/matrix-react-sdk/res/img/delete.png","node_modules/matrix-react-sdk/res/img/directory-big.png","node_modules/matrix-react-sdk/res/img/download.png","node_modules/matrix-react-sdk/res/img/edit.png","node_modules/matrix-react-sdk/res/img/file.png","node_modules/matrix-react-sdk/res/img/filegrid.png","node_modules/matrix-react-sdk/res/img/filelist.png","node_modules/matrix-react-sdk/res/img/hide.png","node_modules/matrix-react-sdk/res/img/info.png","node_modules/matrix-react-sdk/res/img/list-close.png","node_modules/matrix-react-sdk/res/img/list-open.png","node_modules/matrix-react-sdk/res/img/member_chevron.png","node_modules/matrix-react-sdk/res/img/menu.png","node_modules/matrix-react-sdk/res/img/newmessages.png","node_modules/matrix-react-sdk/res/img/placeholder.png","node_modules/matrix-react-sdk/res/img/search.png","node_modules/matrix-react-sdk/res/img/selected.png","node_modules/matrix-react-sdk/res/img/settings-big.png","node_modules/matrix-react-sdk/res/img/settings.png","node_modules/matrix-react-sdk/res/img/trans.png","node_modules/matrix-react-sdk/res/img/typing.png","node_modules/matrix-react-sdk/res/img/upload-big.png","node_modules/matrix-react-sdk/res/img/upload.png","node_modules/matrix-react-sdk/res/img/video.png","node_modules/matrix-react-sdk/res/img/voice.png","node_modules/matrix-react-sdk/res/img/voip-mute.png","node_modules/matrix-react-sdk/res/img/voip.png","node_modules/matrix-react-sdk/res/img/warning.png","node_modules/matrix-react-sdk/res/img/warning2.png","node_modules/matrix-react-sdk/res/img/zoom.png","node_modules/matrix-react-sdk/lib/settings/controllers/CustomStatusController.js","node_modules/matrix-react-sdk/lib/settings/controllers/ThemeController.js","node_modules/matrix-react-sdk/lib/settings/controllers/LowBandwidthController.js","node_modules/matrix-react-sdk/lib/settings/handlers/LocalEchoWrapper.js","node_modules/matrix-react-sdk/lib/settings/WatchManager.js","node_modules/matrix-react-sdk/lib/actions/MatrixActionCreators.js","node_modules/matrix-react-sdk/lib/ScalarAuthClient.js","node_modules/matrix-react-sdk/lib/Presence.js","src/vector/url_utils.js","src/vector/platform/ElectronPlatform.js","node_modules/matrix-react-sdk/lib/BasePlatform.js","node_modules/favico.js/favico.js","src/vector/platform/WebPlatform.js","node_modules/ua-parser-js/src/ua-parser.js","node_modules/olm/olm.js","src/component-index.js","src/components/structures/VectorEmbeddedPage.js","node_modules/domhandler/lib/element.js","node_modules/htmlparser2/lib/FeedHandler.js","node_modules/domutils/lib/stringify.js","node_modules/dom-serializer/index.js","node_modules/dom-serializer/node_modules/domelementtype/lib/index.js","node_modules/dom-serializer/node_modules/entities/lib/index.js","node_modules/dom-serializer/node_modules/entities/lib/decode_codepoint.js","node_modules/domutils/lib/traversal.js","node_modules/domutils/lib/manipulation.js","node_modules/domutils/lib/querying.js","node_modules/domutils/lib/legacy.js","node_modules/domutils/lib/helpers.js","node_modules/htmlparser2/lib/Stream.js","node_modules/string_decoder/lib/string_decoder.js","node_modules/htmlparser2/lib/ProxyHandler.js","node_modules/htmlparser2/lib/CollectingHandler.js","node_modules/xtend/immutable.js","node_modules/lodash.escaperegexp/index.js","node_modules/lodash.clonedeep/index.js","node_modules/lodash.mergewith/index.js","node_modules/lodash.isstring/index.js","node_modules/lodash.isplainobject/index.js","node_modules/srcset/index.js","node_modules/number-is-nan/index.js","node_modules/array-uniq/index.js","node_modules/postcss/lib/postcss.js","node_modules/postcss/lib/map-generator.js","node_modules/source-map/lib/base64.js","node_modules/source-map/lib/mapping-list.js","node_modules/source-map/lib/source-map-consumer.js","node_modules/source-map/lib/binary-search.js","node_modules/source-map/lib/quick-sort.js","node_modules/source-map/lib/source-node.js","node_modules/postcss/lib/warn-once.js","node_modules/postcss/lib/result.js","node_modules/postcss/lib/warning.js","node_modules/postcss/lib/parser.js","node_modules/postcss/lib/tokenize.js","node_modules/postcss/lib/input.js","node_modules/postcss/lib/previous-map.js","node_modules/postcss/lib/vendor.js","src/components/views/auth/VectorAuthFooter.js","src/components/views/auth/VectorAuthHeaderLogo.js","src/components/views/auth/VectorAuthPage.js","src/components/views/auth/VectorCustomServerDialog.js","node_modules/matrix-react-sdk/lib/component-index.js","node_modules/matrix-react-sdk/lib/components/structures/CompatibilityPage.js","node_modules/core-js/library/fn/set-immediate.js","node_modules/core-js/library/modules/web.immediate.js","node_modules/matrix-react-sdk/lib/components/structures/CustomRoomTagPanel.js","node_modules/core-js/library/fn/number/max-safe-integer.js","node_modules/core-js/library/modules/es6.number.max-safe-integer.js","node_modules/flux/lib/FluxContainer.js","node_modules/flux/node_modules/fbjs/lib/shallowEqual.js","node_modules/flux/lib/FluxMapStore.js","node_modules/fbemitter/index.js","node_modules/fbemitter/lib/BaseEventEmitter.js","node_modules/fbemitter/lib/EventSubscription.js","node_modules/fbemitter/lib/EventSubscriptionVendor.js","node_modules/fbjs/lib/emptyFunction.js","node_modules/flux/lib/abstractMethod.js","node_modules/flux/node_modules/immutable/dist/immutable.js","node_modules/flux/lib/FluxMixinLegacy.js","node_modules/matrix-react-sdk/lib/components/structures/FilePanel.js","node_modules/matrix-react-sdk/lib/components/structures/GenericErrorPage.js","node_modules/matrix-react-sdk/lib/components/structures/GroupView.js","node_modules/matrix-react-sdk/node_modules/qs/lib/index.js","node_modules/matrix-react-sdk/node_modules/qs/lib/stringify.js","node_modules/matrix-react-sdk/node_modules/qs/lib/parse.js","node_modules/is-ip/index.js","node_modules/ip-regex/index.js","node_modules/matrix-react-sdk/lib/utils/permalinks/RiotPermalinkConstructor.js","node_modules/highlight.js/lib/highlight.js","node_modules/highlight.js/lib/languages/1c.js","node_modules/highlight.js/lib/languages/abnf.js","node_modules/highlight.js/lib/languages/accesslog.js","node_modules/highlight.js/lib/languages/actionscript.js","node_modules/highlight.js/lib/languages/ada.js","node_modules/highlight.js/lib/languages/angelscript.js","node_modules/highlight.js/lib/languages/apache.js","node_modules/highlight.js/lib/languages/applescript.js","node_modules/highlight.js/lib/languages/arcade.js","node_modules/highlight.js/lib/languages/cpp.js","node_modules/highlight.js/lib/languages/arduino.js","node_modules/highlight.js/lib/languages/armasm.js","node_modules/highlight.js/lib/languages/xml.js","node_modules/highlight.js/lib/languages/asciidoc.js","node_modules/highlight.js/lib/languages/aspectj.js","node_modules/highlight.js/lib/languages/autohotkey.js","node_modules/highlight.js/lib/languages/autoit.js","node_modules/highlight.js/lib/languages/avrasm.js","node_modules/highlight.js/lib/languages/awk.js","node_modules/highlight.js/lib/languages/axapta.js","node_modules/highlight.js/lib/languages/bash.js","node_modules/highlight.js/lib/languages/basic.js","node_modules/highlight.js/lib/languages/bnf.js","node_modules/highlight.js/lib/languages/brainfuck.js","node_modules/highlight.js/lib/languages/cal.js","node_modules/highlight.js/lib/languages/capnproto.js","node_modules/highlight.js/lib/languages/ceylon.js","node_modules/highlight.js/lib/languages/clean.js","node_modules/highlight.js/lib/languages/clojure.js","node_modules/highlight.js/lib/languages/clojure-repl.js","node_modules/highlight.js/lib/languages/cmake.js","node_modules/highlight.js/lib/languages/coffeescript.js","node_modules/highlight.js/lib/languages/coq.js","node_modules/highlight.js/lib/languages/cos.js","node_modules/highlight.js/lib/languages/crmsh.js","node_modules/highlight.js/lib/languages/crystal.js","node_modules/highlight.js/lib/languages/cs.js","node_modules/highlight.js/lib/languages/csp.js","node_modules/highlight.js/lib/languages/css.js","node_modules/highlight.js/lib/languages/d.js","node_modules/highlight.js/lib/languages/markdown.js","node_modules/highlight.js/lib/languages/dart.js","node_modules/highlight.js/lib/languages/delphi.js","node_modules/highlight.js/lib/languages/diff.js","node_modules/highlight.js/lib/languages/django.js","node_modules/highlight.js/lib/languages/dns.js","node_modules/highlight.js/lib/languages/dockerfile.js","node_modules/highlight.js/lib/languages/dos.js","node_modules/highlight.js/lib/languages/dsconfig.js","node_modules/highlight.js/lib/languages/dts.js","node_modules/highlight.js/lib/languages/dust.js","node_modules/highlight.js/lib/languages/ebnf.js","node_modules/highlight.js/lib/languages/elixir.js","node_modules/highlight.js/lib/languages/elm.js","node_modules/highlight.js/lib/languages/ruby.js","node_modules/highlight.js/lib/languages/erb.js","node_modules/highlight.js/lib/languages/erlang-repl.js","node_modules/highlight.js/lib/languages/erlang.js","node_modules/highlight.js/lib/languages/excel.js","node_modules/highlight.js/lib/languages/fix.js","node_modules/highlight.js/lib/languages/flix.js","node_modules/highlight.js/lib/languages/fortran.js","node_modules/highlight.js/lib/languages/fsharp.js","node_modules/highlight.js/lib/languages/gams.js","node_modules/highlight.js/lib/languages/gauss.js","node_modules/highlight.js/lib/languages/gcode.js","node_modules/highlight.js/lib/languages/gherkin.js","node_modules/highlight.js/lib/languages/glsl.js","node_modules/highlight.js/lib/languages/gml.js","node_modules/highlight.js/lib/languages/go.js","node_modules/highlight.js/lib/languages/golo.js","node_modules/highlight.js/lib/languages/gradle.js","node_modules/highlight.js/lib/languages/groovy.js","node_modules/highlight.js/lib/languages/haml.js","node_modules/highlight.js/lib/languages/handlebars.js","node_modules/highlight.js/lib/languages/haskell.js","node_modules/highlight.js/lib/languages/haxe.js","node_modules/highlight.js/lib/languages/hsp.js","node_modules/highlight.js/lib/languages/htmlbars.js","node_modules/highlight.js/lib/languages/http.js","node_modules/highlight.js/lib/languages/hy.js","node_modules/highlight.js/lib/languages/inform7.js","node_modules/highlight.js/lib/languages/ini.js","node_modules/highlight.js/lib/languages/irpf90.js","node_modules/highlight.js/lib/languages/isbl.js","node_modules/highlight.js/lib/languages/java.js","node_modules/highlight.js/lib/languages/javascript.js","node_modules/highlight.js/lib/languages/jboss-cli.js","node_modules/highlight.js/lib/languages/json.js","node_modules/highlight.js/lib/languages/julia.js","node_modules/highlight.js/lib/languages/julia-repl.js","node_modules/highlight.js/lib/languages/kotlin.js","node_modules/highlight.js/lib/languages/lasso.js","node_modules/highlight.js/lib/languages/ldif.js","node_modules/highlight.js/lib/languages/leaf.js","node_modules/highlight.js/lib/languages/less.js","node_modules/highlight.js/lib/languages/lisp.js","node_modules/highlight.js/lib/languages/livecodeserver.js","node_modules/highlight.js/lib/languages/livescript.js","node_modules/highlight.js/lib/languages/llvm.js","node_modules/highlight.js/lib/languages/lsl.js","node_modules/highlight.js/lib/languages/lua.js","node_modules/highlight.js/lib/languages/makefile.js","node_modules/highlight.js/lib/languages/mathematica.js","node_modules/highlight.js/lib/languages/matlab.js","node_modules/highlight.js/lib/languages/maxima.js","node_modules/highlight.js/lib/languages/mel.js","node_modules/highlight.js/lib/languages/mercury.js","node_modules/highlight.js/lib/languages/mipsasm.js","node_modules/highlight.js/lib/languages/mizar.js","node_modules/highlight.js/lib/languages/perl.js","node_modules/highlight.js/lib/languages/mojolicious.js","node_modules/highlight.js/lib/languages/monkey.js","node_modules/highlight.js/lib/languages/moonscript.js","node_modules/highlight.js/lib/languages/n1ql.js","node_modules/highlight.js/lib/languages/nginx.js","node_modules/highlight.js/lib/languages/nimrod.js","node_modules/highlight.js/lib/languages/nix.js","node_modules/highlight.js/lib/languages/nsis.js","node_modules/highlight.js/lib/languages/objectivec.js","node_modules/highlight.js/lib/languages/ocaml.js","node_modules/highlight.js/lib/languages/openscad.js","node_modules/highlight.js/lib/languages/oxygene.js","node_modules/highlight.js/lib/languages/parser3.js","node_modules/highlight.js/lib/languages/pf.js","node_modules/highlight.js/lib/languages/pgsql.js","node_modules/highlight.js/lib/languages/php.js","node_modules/highlight.js/lib/languages/plaintext.js","node_modules/highlight.js/lib/languages/pony.js","node_modules/highlight.js/lib/languages/powershell.js","node_modules/highlight.js/lib/languages/processing.js","node_modules/highlight.js/lib/languages/profile.js","node_modules/highlight.js/lib/languages/prolog.js","node_modules/highlight.js/lib/languages/properties.js","node_modules/highlight.js/lib/languages/protobuf.js","node_modules/highlight.js/lib/languages/puppet.js","node_modules/highlight.js/lib/languages/purebasic.js","node_modules/highlight.js/lib/languages/python.js","node_modules/highlight.js/lib/languages/q.js","node_modules/highlight.js/lib/languages/qml.js","node_modules/highlight.js/lib/languages/r.js","node_modules/highlight.js/lib/languages/reasonml.js","node_modules/highlight.js/lib/languages/rib.js","node_modules/highlight.js/lib/languages/roboconf.js","node_modules/highlight.js/lib/languages/routeros.js","node_modules/highlight.js/lib/languages/rsl.js","node_modules/highlight.js/lib/languages/ruleslanguage.js","node_modules/highlight.js/lib/languages/rust.js","node_modules/highlight.js/lib/languages/sas.js","node_modules/highlight.js/lib/languages/scala.js","node_modules/highlight.js/lib/languages/scheme.js","node_modules/highlight.js/lib/languages/scilab.js","node_modules/highlight.js/lib/languages/scss.js","node_modules/highlight.js/lib/languages/shell.js","node_modules/highlight.js/lib/languages/smali.js","node_modules/highlight.js/lib/languages/smalltalk.js","node_modules/highlight.js/lib/languages/sml.js","node_modules/highlight.js/lib/languages/sqf.js","node_modules/highlight.js/lib/languages/sql.js","node_modules/highlight.js/lib/languages/stan.js","node_modules/highlight.js/lib/languages/stata.js","node_modules/highlight.js/lib/languages/step21.js","node_modules/highlight.js/lib/languages/stylus.js","node_modules/highlight.js/lib/languages/subunit.js","node_modules/highlight.js/lib/languages/swift.js","node_modules/highlight.js/lib/languages/taggerscript.js","node_modules/highlight.js/lib/languages/yaml.js","node_modules/highlight.js/lib/languages/tap.js","node_modules/highlight.js/lib/languages/tcl.js","node_modules/highlight.js/lib/languages/tex.js","node_modules/highlight.js/lib/languages/thrift.js","node_modules/highlight.js/lib/languages/tp.js","node_modules/highlight.js/lib/languages/twig.js","node_modules/highlight.js/lib/languages/typescript.js","node_modules/highlight.js/lib/languages/vala.js","node_modules/highlight.js/lib/languages/vbnet.js","node_modules/highlight.js/lib/languages/vbscript.js","node_modules/highlight.js/lib/languages/vbscript-html.js","node_modules/highlight.js/lib/languages/verilog.js","node_modules/highlight.js/lib/languages/vhdl.js","node_modules/highlight.js/lib/languages/vim.js","node_modules/highlight.js/lib/languages/x86asm.js","node_modules/highlight.js/lib/languages/xl.js","node_modules/highlight.js/lib/languages/xquery.js","node_modules/highlight.js/lib/languages/zephir.js","node_modules/linkifyjs/index.js","node_modules/linkifyjs/lib/linkify/utils/options.js","node_modules/linkifyjs/lib/linkify/core/scanner.js","node_modules/linkifyjs/lib/linkify/core/parser.js","node_modules/linkifyjs/lib/linkify/core/tokens/multi.js","node_modules/linkifyjs/element.js","node_modules/linkifyjs/lib/linkify-element.js","node_modules/linkifyjs/string.js","node_modules/linkifyjs/lib/linkify-string.js","node_modules/emojibase-regex/index.js","node_modules/matrix-react-sdk/lib/resizer/distributors/collapse.js","node_modules/matrix-react-sdk/lib/resizer/distributors/roomsublist.js","node_modules/matrix-react-sdk/lib/resizer/resizer.js","node_modules/matrix-react-sdk/res/img/camera.svg","node_modules/matrix-react-sdk/lib/components/structures/InteractiveAuth.js","node_modules/matrix-react-sdk/lib/components/structures/LeftPanel.js","node_modules/matrix-react-sdk/lib/components/structures/LoggedInView.js","node_modules/react-beautiful-dnd/lib/view/drag-drop-context/index.js","node_modules/react-beautiful-dnd/lib/view/drag-drop-context/drag-drop-context.js","node_modules/react-beautiful-dnd/lib/state/create-store.js","(webpack)/buildin/harmony-module.js","node_modules/redux-thunk/es/index.js","node_modules/react-beautiful-dnd/lib/state/reducer.js","node_modules/react-beautiful-dnd/lib/state/get-drag-impact/index.js","node_modules/react-beautiful-dnd/lib/state/get-droppable-over.js","node_modules/react-beautiful-dnd/lib/state/visibility/is-position-in-frame.js","node_modules/react-beautiful-dnd/lib/state/axis.js","node_modules/react-beautiful-dnd/lib/state/get-drag-impact/in-home-list.js","node_modules/react-beautiful-dnd/lib/state/get-drag-impact/in-foreign-list.js","node_modules/react-beautiful-dnd/lib/state/move-to-next-index/index.js","node_modules/react-beautiful-dnd/lib/state/move-to-next-index/in-home-list.js","node_modules/react-beautiful-dnd/lib/state/move-to-next-index/in-foreign-list.js","node_modules/react-beautiful-dnd/lib/state/move-cross-axis/index.js","node_modules/react-beautiful-dnd/lib/state/move-cross-axis/get-best-cross-axis-droppable.js","node_modules/react-beautiful-dnd/lib/state/move-cross-axis/get-closest-draggable.js","node_modules/react-beautiful-dnd/lib/state/move-cross-axis/move-to-new-droppable/index.js","node_modules/react-beautiful-dnd/lib/state/move-cross-axis/move-to-new-droppable/to-home-list.js","node_modules/react-beautiful-dnd/lib/state/move-cross-axis/move-to-new-droppable/to-foreign-list.js","node_modules/react-beautiful-dnd/lib/state/fire-hooks.js","node_modules/react-beautiful-dnd/lib/state/dimension-marshal/dimension-marshal.js","node_modules/react-beautiful-dnd/lib/view/style-marshal/style-marshal.js","node_modules/react-beautiful-dnd/lib/view/style-marshal/get-styles.js","node_modules/react-beautiful-dnd/lib/state/can-start-drag.js","node_modules/react-beautiful-dnd/lib/state/get-new-home-client-center.js","node_modules/react-beautiful-dnd/lib/view/droppable/index.js","node_modules/react-beautiful-dnd/lib/view/droppable/connected-droppable.js","node_modules/react-is/cjs/react-is.production.min.js","node_modules/react-beautiful-dnd/lib/state/selectors.js","node_modules/react-beautiful-dnd/lib/view/droppable/droppable.js","node_modules/react-beautiful-dnd/lib/view/droppable-dimension-publisher/index.js","node_modules/react-beautiful-dnd/lib/view/droppable-dimension-publisher/droppable-dimension-publisher.js","node_modules/react-beautiful-dnd/lib/view/get-closest-scrollable.js","node_modules/react-beautiful-dnd/lib/view/placeholder/placeholder.js","node_modules/react-beautiful-dnd/lib/view/draggable/index.js","node_modules/react-beautiful-dnd/lib/view/draggable/connected-draggable.js","node_modules/react-beautiful-dnd/lib/view/draggable/draggable.js","node_modules/react-beautiful-dnd/lib/view/draggable-dimension-publisher/index.js","node_modules/react-beautiful-dnd/lib/view/draggable-dimension-publisher/draggable-dimension-publisher.js","node_modules/react-beautiful-dnd/lib/view/moveable/index.js","node_modules/react-beautiful-dnd/lib/view/moveable/moveable.js","node_modules/react-motion/lib/react-motion.js","node_modules/react-motion/lib/Motion.js","node_modules/performance-now/lib/performance-now.js","node_modules/react-motion/lib/StaggeredMotion.js","node_modules/react-motion/lib/TransitionMotion.js","node_modules/react-motion/lib/mergeDiff.js","node_modules/react-motion/lib/spring.js","node_modules/react-motion/lib/reorderKeys.js","node_modules/react-beautiful-dnd/lib/view/drag-handle/index.js","node_modules/react-beautiful-dnd/lib/view/drag-handle/drag-handle.js","node_modules/react-beautiful-dnd/lib/view/drag-handle/util/should-allow-dragging-from-target.js","node_modules/react-beautiful-dnd/lib/view/drag-handle/sensor/create-mouse-sensor.js","node_modules/react-beautiful-dnd/lib/view/drag-handle/util/is-sloppy-click-threshold-exceeded.js","node_modules/react-beautiful-dnd/lib/view/drag-handle/sensor/create-keyboard-sensor.js","node_modules/react-beautiful-dnd/lib/view/drag-handle/sensor/create-touch-sensor.js","node_modules/matrix-react-sdk/lib/utils/FontManager.js","node_modules/matrix-react-sdk/res/fonts/Twemoji_Mozilla/TwemojiMozilla-colr.woff2","node_modules/matrix-react-sdk/res/fonts/Twemoji_Mozilla/TwemojiMozilla-sbix.woff2","node_modules/matrix-react-sdk/lib/components/structures/MatrixChat.js","node_modules/focus-visible/dist/focus-visible.js","node_modules/matrix-react-sdk/lib/DecryptionFailureTracker.js","node_modules/matrix-react-sdk/lib/RoomListSorter.js","node_modules/matrix-react-sdk/lib/stores/LifecycleStore.js","node_modules/matrix-react-sdk/lib/KeyRequestHandler.js","node_modules/matrix-react-sdk/lib/utils/ResizeNotifier.js","node_modules/matrix-react-sdk/lib/components/structures/MessagePanel.js","node_modules/matrix-react-sdk/lib/components/structures/MyGroups.js","node_modules/matrix-react-sdk/lib/components/structures/NotificationPanel.js","node_modules/matrix-react-sdk/lib/components/structures/RoomDirectory.js","node_modules/matrix-react-sdk/lib/components/structures/RoomStatusBar.js","node_modules/matrix-react-sdk/res/img/sound-indicator.svg","node_modules/matrix-react-sdk/lib/ActiveRoomObserver.js","node_modules/matrix-react-sdk/lib/extend.js","node_modules/png-chunks-extract/index.js","node_modules/crc-32/crc32.js","node_modules/blueimp-canvas-to-blob/js/canvas-to-blob.js","node_modules/matrix-react-sdk/lib/stores/RoomScrollStateStore.js","node_modules/matrix-react-sdk/res/img/fullscreen.svg","node_modules/matrix-react-sdk/res/img/video-unmute.svg","node_modules/matrix-react-sdk/res/img/video-mute.svg","node_modules/matrix-react-sdk/res/img/voice-unmute.svg","node_modules/matrix-react-sdk/res/img/voice-mute.svg","node_modules/matrix-react-sdk/res/img/voip-chevron.svg","node_modules/matrix-react-sdk/lib/components/structures/ScrollPanel.js","node_modules/matrix-react-sdk/lib/components/structures/SearchBox.js","node_modules/matrix-react-sdk/lib/components/structures/TagPanel.js","node_modules/matrix-react-sdk/lib/actions/GroupActions.js","node_modules/matrix-react-sdk/res/img/icons-close.svg","node_modules/matrix-react-sdk/lib/components/structures/TimelinePanel.js","node_modules/matrix-react-sdk/lib/components/structures/TopLeftMenuButton.js","node_modules/matrix-react-sdk/lib/components/structures/UploadBar.js","node_modules/matrix-react-sdk/lib/components/structures/UserView.js","node_modules/matrix-react-sdk/lib/components/structures/ViewSource.js","node_modules/matrix-react-sdk/lib/components/structures/auth/ForgotPassword.js","node_modules/matrix-react-sdk/lib/PasswordReset.js","node_modules/matrix-react-sdk/lib/components/structures/auth/Login.js","node_modules/matrix-react-sdk/lib/components/structures/auth/PostRegistration.js","node_modules/matrix-react-sdk/lib/components/structures/auth/Registration.js","node_modules/matrix-react-sdk/res/img/matrix-org-bw-logo.svg","node_modules/matrix-react-sdk/res/img/modular-bw-logo.svg","node_modules/matrix-react-sdk/res/img/feather-customised/globe.svg","node_modules/matrix-react-sdk/lib/components/structures/auth/SoftLogout.js","node_modules/matrix-react-sdk/lib/components/views/auth/AuthBody.js","node_modules/matrix-react-sdk/lib/components/views/auth/AuthFooter.js","node_modules/matrix-react-sdk/lib/components/views/auth/AuthHeader.js","node_modules/matrix-react-sdk/lib/components/views/auth/AuthHeaderLogo.js","node_modules/matrix-react-sdk/lib/components/views/auth/AuthPage.js","node_modules/matrix-react-sdk/lib/components/views/auth/CaptchaForm.js","node_modules/matrix-react-sdk/res/img/flags sync ^\\.\\/.*\\.png$","node_modules/matrix-react-sdk/lib/components/views/auth/CustomServerDialog.js","node_modules/matrix-react-sdk/lib/components/views/auth/LanguageSelector.js","node_modules/matrix-react-sdk/lib/components/views/auth/ModularServerConfig.js","node_modules/matrix-react-sdk/lib/components/views/auth/PasswordLogin.js","node_modules/matrix-react-sdk/lib/components/views/auth/RegistrationForm.js","node_modules/matrix-react-sdk/lib/components/views/auth/SignInToText.js","node_modules/matrix-react-sdk/lib/components/views/auth/Welcome.js","node_modules/matrix-react-sdk/lib/components/views/avatars/GroupAvatar.js","node_modules/matrix-react-sdk/lib/components/views/avatars/MemberStatusMessageAvatar.js","node_modules/matrix-react-sdk/lib/components/views/context_menus/GenericElementContextMenu.js","node_modules/matrix-react-sdk/lib/components/views/context_menus/GenericTextContextMenu.js","node_modules/matrix-react-sdk/lib/components/views/context_menus/GroupInviteTileContextMenu.js","node_modules/matrix-react-sdk/lib/components/views/context_menus/MessageContextMenu.js","node_modules/matrix-react-sdk/lib/components/views/context_menus/RoomTileContextMenu.js","node_modules/matrix-react-sdk/res/img/notif-slider.svg","node_modules/matrix-react-sdk/res/img/icon-context-mute-off-copy.svg","node_modules/matrix-react-sdk/res/img/icon-context-mute-off.svg","node_modules/matrix-react-sdk/res/img/icon-context-mute-mentions.svg","node_modules/matrix-react-sdk/res/img/icon-context-mute.svg","node_modules/matrix-react-sdk/res/img/icons-settings-room.svg","node_modules/matrix-react-sdk/res/img/icon_context_fave.svg","node_modules/matrix-react-sdk/res/img/icon_context_fave_on.svg","node_modules/matrix-react-sdk/res/img/icon_context_low.svg","node_modules/matrix-react-sdk/res/img/icon_context_low_on.svg","node_modules/matrix-react-sdk/res/img/icon_context_person.svg","node_modules/matrix-react-sdk/res/img/icon_context_person_on.svg","node_modules/matrix-react-sdk/lib/components/views/context_menus/TagTileContextMenu.js","node_modules/matrix-react-sdk/lib/components/views/create_room/CreateRoomButton.js","node_modules/matrix-react-sdk/lib/components/views/create_room/Presets.js","node_modules/matrix-react-sdk/lib/components/views/create_room/RoomAlias.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/AddressPickerDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/AskInviteAnywayDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/BaseDialog.js","node_modules/focus-trap-react/dist/focus-trap-react.js","node_modules/focus-trap/index.js","node_modules/tabbable/index.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/BugReportDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/ChangelogDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/ConfirmAndWaitRedactDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/ConfirmRedactDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/ConfirmUserActionDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/ConfirmWipeDeviceDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/CreateGroupDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/CreateRoomDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/CryptoStoreTooNewDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/DeviceVerifyDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/DevtoolsDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/IncomingSasDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/InfoDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/InteractiveAuthDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/KeyShareDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/LazyLoadingDisabledDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/LazyLoadingResyncDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/MessageEditHistoryDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/RedesignFeedbackDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/ReportEventDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/RoomSettingsDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/RoomUpgradeDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/SessionRestoreErrorDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/SetEmailDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/SetMxIdDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/SetPasswordDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/ShareDialog.js","node_modules/qrcode-react/dist/index.js","node_modules/qr.js/index.js","node_modules/qr.js/lib/QRCode.js","node_modules/qr.js/lib/8BitByte.js","node_modules/qr.js/lib/RSBlock.js","node_modules/qr.js/lib/BitBuffer.js","node_modules/qr.js/lib/util.js","node_modules/matrix-react-sdk/res/img/matrix-m.svg","node_modules/matrix-react-sdk/lib/components/views/dialogs/SlashCommandHelpDialog.js","node_modules/matrix-react-sdk/lib/utils/colour.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/StorageEvictedDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/TabbedIntegrationManagerDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/TermsDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/TextInputDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/UnknownDeviceDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/UploadConfirmDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/UploadFailureDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/UserSettingsDialog.js","node_modules/matrix-react-sdk/lib/components/views/dialogs/keybackup/RestoreKeyBackupDialog.js","node_modules/matrix-react-sdk/lib/components/views/directory/NetworkDropdown.js","node_modules/matrix-react-sdk/lib/components/views/elements/AccessibleTooltipButton.js","node_modules/matrix-react-sdk/lib/components/views/elements/ActionButton.js","node_modules/matrix-react-sdk/lib/components/views/elements/AddressSelector.js","node_modules/matrix-react-sdk/res/img/search-icon-vector.svg","node_modules/matrix-react-sdk/lib/components/views/elements/AddressTile.js","node_modules/matrix-react-sdk/res/img/icon-email-user.svg","node_modules/matrix-react-sdk/res/img/icon-address-delete.svg","node_modules/matrix-react-sdk/lib/WidgetMessaging.js","node_modules/matrix-react-sdk/lib/FromWidgetPostMessageApi.js","node_modules/matrix-react-sdk/lib/WidgetMessagingEndpoint.js","node_modules/matrix-react-sdk/lib/ToWidgetPostMessageApi.js","node_modules/matrix-react-sdk/lib/components/views/elements/CreateRoomButton.js","node_modules/matrix-react-sdk/lib/components/views/elements/DNDTagTile.js","node_modules/matrix-react-sdk/lib/components/views/elements/DeviceVerifyButtons.js","node_modules/matrix-react-sdk/lib/components/views/elements/DialogButtons.js","node_modules/matrix-react-sdk/lib/components/views/elements/DirectorySearchBox.js","node_modules/matrix-react-sdk/lib/components/views/elements/Dropdown.js","node_modules/matrix-react-sdk/lib/components/views/elements/EditableItemList.js","node_modules/matrix-react-sdk/res/img/feather-customised/cancel.svg","node_modules/matrix-react-sdk/lib/components/views/elements/EditableText.js","node_modules/matrix-react-sdk/lib/components/views/elements/EditableTextContainer.js","node_modules/matrix-react-sdk/lib/components/views/elements/ErrorBoundary.js","node_modules/matrix-react-sdk/lib/components/views/elements/GeminiScrollbarWrapper.js","node_modules/react-gemini-scrollbar/dist/index.js","node_modules/gemini-scrollbar/index.js","node_modules/matrix-react-sdk/lib/components/views/elements/GroupsButton.js","node_modules/matrix-react-sdk/lib/components/views/elements/ImageView.js","node_modules/matrix-react-sdk/res/img/rotate-ccw.svg","node_modules/matrix-react-sdk/res/img/rotate-cw.svg","node_modules/matrix-react-sdk/res/img/cancel-white.svg","node_modules/matrix-react-sdk/lib/components/views/elements/InlineSpinner.js","node_modules/matrix-react-sdk/lib/components/views/elements/InteractiveTooltip.js","node_modules/matrix-react-sdk/lib/components/views/elements/MemberEventListSummary.js","node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","node_modules/matrix-react-sdk/lib/components/views/elements/PersistentApp.js","node_modules/matrix-react-sdk/lib/components/views/elements/Pill.js","node_modules/matrix-react-sdk/lib/components/views/elements/PowerSelector.js","node_modules/matrix-react-sdk/lib/components/views/elements/ProgressBar.js","node_modules/matrix-react-sdk/lib/components/views/elements/RoomAliasField.js","node_modules/matrix-react-sdk/lib/components/views/elements/RoomDirectoryButton.js","node_modules/matrix-react-sdk/res/img/icons-directory.svg","node_modules/matrix-react-sdk/lib/components/views/elements/SettingsFlag.js","node_modules/matrix-react-sdk/lib/components/views/elements/Spinner.js","node_modules/matrix-react-sdk/lib/components/views/elements/Spoiler.js","node_modules/matrix-react-sdk/lib/components/views/elements/StartChatButton.js","node_modules/matrix-react-sdk/res/img/icons-people.svg","node_modules/matrix-react-sdk/lib/components/views/elements/TextWithTooltip.js","node_modules/matrix-react-sdk/lib/components/views/elements/TintableSvgButton.js","node_modules/matrix-react-sdk/lib/components/views/elements/Tooltip.js","node_modules/matrix-react-sdk/lib/components/views/elements/TooltipButton.js","node_modules/matrix-react-sdk/lib/components/views/elements/TruncatedList.js","node_modules/matrix-react-sdk/lib/components/views/elements/UserSelector.js","node_modules/matrix-react-sdk/lib/components/views/globals/CookieBar.js","node_modules/matrix-react-sdk/lib/components/views/globals/MatrixToolbar.js","node_modules/matrix-react-sdk/lib/components/views/globals/NewVersionBar.js","node_modules/matrix-react-sdk/lib/components/views/globals/PasswordNagBar.js","node_modules/matrix-react-sdk/lib/components/views/globals/ServerLimitBar.js","node_modules/matrix-react-sdk/lib/components/views/globals/UpdateCheckBar.js","node_modules/matrix-react-sdk/lib/components/views/groups/GroupInviteTile.js","node_modules/matrix-react-sdk/lib/components/views/groups/GroupMemberInfo.js","node_modules/matrix-react-sdk/lib/components/views/groups/GroupMemberList.js","node_modules/matrix-react-sdk/res/img/icon-invite-people.svg","node_modules/matrix-react-sdk/lib/components/views/groups/GroupMemberTile.js","node_modules/matrix-react-sdk/lib/components/views/groups/GroupPublicityToggle.js","node_modules/matrix-react-sdk/lib/components/views/groups/GroupRoomInfo.js","node_modules/matrix-react-sdk/lib/components/views/groups/GroupRoomList.js","node_modules/matrix-react-sdk/lib/components/views/groups/GroupRoomTile.js","node_modules/matrix-react-sdk/lib/components/views/groups/GroupTile.js","node_modules/matrix-react-sdk/lib/components/views/messages/DateSeparator.js","node_modules/matrix-react-sdk/lib/components/views/messages/EditHistoryMessage.js","node_modules/matrix-react-sdk/lib/utils/MessageDiffUtils.js","node_modules/diff-match-patch/index.js","node_modules/matrix-react-sdk/lib/components/views/messages/MAudioBody.js","node_modules/isomorphic-fetch/fetch-npm-browserify.js","node_modules/isomorphic-fetch/node_modules/whatwg-fetch/fetch.js","node_modules/matrix-react-sdk/res/img/download.svg","node_modules/matrix-react-sdk/res/img/feather-customised/eye.svg","node_modules/matrix-react-sdk/lib/components/views/messages/MStickerBody.js","node_modules/matrix-react-sdk/res/img/icons-show-stickers.svg","node_modules/matrix-react-sdk/lib/components/views/messages/MVideoBody.js","node_modules/matrix-react-sdk/lib/components/views/messages/MessageActionBar.js","node_modules/matrix-react-sdk/lib/components/views/messages/MessageTimestamp.js","node_modules/matrix-react-sdk/lib/components/views/messages/ReactMessageAction.js","node_modules/matrix-react-sdk/lib/components/views/messages/ReactionTooltipButton.js","node_modules/matrix-react-sdk/lib/components/views/messages/ReactionsQuickTooltip.js","node_modules/matrix-react-sdk/lib/components/views/messages/ReactionsRow.js","node_modules/matrix-react-sdk/lib/components/views/messages/ReactionsRowButton.js","node_modules/matrix-react-sdk/lib/components/views/messages/ReactionsRowButtonTooltip.js","node_modules/matrix-react-sdk/lib/components/views/messages/RoomAvatarEvent.js","node_modules/matrix-react-sdk/lib/components/views/messages/RoomCreate.js","node_modules/matrix-react-sdk/lib/components/views/messages/SenderProfile.js","node_modules/matrix-react-sdk/lib/components/views/messages/TextualBody.js","node_modules/matrix-react-sdk/lib/components/views/messages/TextualEvent.js","node_modules/matrix-react-sdk/lib/components/views/messages/UnknownBody.js","node_modules/matrix-react-sdk/lib/components/views/messages/ViewSourceEvent.js","node_modules/matrix-react-sdk/lib/components/views/room_settings/AliasSettings.js","node_modules/matrix-react-sdk/lib/components/views/room_settings/ColorSettings.js","node_modules/matrix-react-sdk/res/img/tick.svg","node_modules/matrix-react-sdk/lib/components/views/room_settings/RelatedGroupSettings.js","node_modules/matrix-react-sdk/lib/components/views/room_settings/UrlPreviewSettings.js","node_modules/lodash/_isFlattenable.js","node_modules/lodash/_baseIsArguments.js","node_modules/lodash/map.js","node_modules/lodash/_baseMatches.js","node_modules/lodash/_baseIsMatch.js","node_modules/lodash/_stackClear.js","node_modules/lodash/_stackDelete.js","node_modules/lodash/_stackGet.js","node_modules/lodash/_stackHas.js","node_modules/lodash/_stackSet.js","node_modules/lodash/_baseIsEqualDeep.js","node_modules/lodash/_arraySome.js","node_modules/lodash/_equalByTag.js","node_modules/lodash/_mapToArray.js","node_modules/lodash/_equalObjects.js","node_modules/lodash/_arrayFilter.js","node_modules/lodash/_baseTimes.js","node_modules/lodash/stubFalse.js","node_modules/lodash/_baseIsTypedArray.js","node_modules/lodash/_baseKeys.js","node_modules/lodash/_nativeKeys.js","node_modules/lodash/_DataView.js","node_modules/lodash/_Promise.js","node_modules/lodash/_WeakMap.js","node_modules/lodash/_getMatchData.js","node_modules/lodash/_baseMatchesProperty.js","node_modules/lodash/_stringToPath.js","node_modules/lodash/_memoizeCapped.js","node_modules/lodash/memoize.js","node_modules/lodash/_baseToString.js","node_modules/lodash/_baseHasIn.js","node_modules/lodash/_hasPath.js","node_modules/lodash/property.js","node_modules/lodash/_baseProperty.js","node_modules/lodash/_basePropertyDeep.js","node_modules/lodash/_baseEach.js","node_modules/lodash/_baseForOwn.js","node_modules/lodash/_baseFor.js","node_modules/lodash/_createBaseFor.js","node_modules/lodash/_createBaseEach.js","node_modules/matrix-react-sdk/lib/autocomplete/CommandProvider.js","node_modules/lodash/at.js","node_modules/lodash/_baseAt.js","node_modules/lodash/flatten.js","node_modules/lodash/_apply.js","node_modules/lodash/_baseSetToString.js","node_modules/lodash/constant.js","node_modules/lodash/_shortOut.js","node_modules/lodash/_baseOrderBy.js","node_modules/lodash/_baseSortBy.js","node_modules/lodash/_compareMultiple.js","node_modules/lodash/_compareAscending.js","node_modules/lodash/_baseRest.js","node_modules/lodash/_isIterateeCall.js","node_modules/matrix-react-sdk/lib/autocomplete/CommunityProvider.js","node_modules/matrix-react-sdk/lib/autocomplete/DuckDuckGoProvider.js","node_modules/whatwg-fetch/fetch.js","node_modules/matrix-react-sdk/lib/autocomplete/RoomProvider.js","node_modules/matrix-react-sdk/lib/autocomplete/UserProvider.js","node_modules/matrix-react-sdk/lib/autocomplete/EmojiProvider.js","node_modules/matrix-react-sdk/lib/autocomplete/NotifProvider.js","node_modules/matrix-react-sdk/lib/components/views/rooms/AuxPanel.js","node_modules/matrix-react-sdk/res/img/upload-big.svg","node_modules/matrix-react-sdk/lib/editor/diff.js","node_modules/matrix-react-sdk/lib/editor/position.js","node_modules/matrix-react-sdk/lib/editor/history.js","node_modules/matrix-react-sdk/lib/editor/caret.js","node_modules/matrix-react-sdk/lib/editor/operations.js","node_modules/matrix-react-sdk/lib/editor/autocomplete.js","node_modules/matrix-react-sdk/lib/components/views/rooms/EditMessageComposer.js","node_modules/commonmark/lib/index.js","node_modules/commonmark/lib/blocks.js","node_modules/mdurl/encode.js","node_modules/mdurl/decode.js","node_modules/entities/lib/encode.js","node_modules/entities/lib/decode.js","node_modules/commonmark/lib/inlines.js","node_modules/commonmark/lib/normalize-reference.js","node_modules/commonmark/lib/from-code-point.js","node_modules/string.prototype.repeat/repeat.js","node_modules/commonmark/lib/render/html.js","node_modules/commonmark/lib/render/xml.js","node_modules/lodash/escape.js","node_modules/lodash/_escapeHtmlChar.js","node_modules/lodash/_basePropertyOf.js","node_modules/matrix-react-sdk/lib/components/views/rooms/EntityTile.js","node_modules/matrix-react-sdk/res/img/plus.svg","node_modules/matrix-react-sdk/res/img/mod.svg","node_modules/matrix-react-sdk/res/img/admin.svg","node_modules/matrix-react-sdk/lib/components/views/rooms/EventTile.js","node_modules/matrix-react-sdk/lib/components/views/rooms/ForwardMessage.js","node_modules/matrix-react-sdk/lib/components/views/rooms/JumpToBottomButton.js","node_modules/matrix-react-sdk/lib/components/views/rooms/LinkPreviewWidget.js","node_modules/matrix-react-sdk/lib/ImageUtils.js","node_modules/matrix-react-sdk/lib/components/views/rooms/MemberDeviceInfo.js","node_modules/matrix-react-sdk/lib/components/views/rooms/MemberInfo.js","node_modules/matrix-react-sdk/res/img/create-big.svg","node_modules/matrix-react-sdk/lib/components/views/rooms/MemberList.js","node_modules/matrix-react-sdk/lib/components/views/rooms/MemberTile.js","node_modules/matrix-react-sdk/lib/components/views/rooms/MessageComposer.js","node_modules/matrix-react-sdk/lib/components/views/rooms/MessageComposerFormatBar.js","node_modules/matrix-react-sdk/lib/components/views/rooms/MessageComposerInput.js","node_modules/slate-react/node_modules/debug/src/common.js","node_modules/isobject/index.js","node_modules/lodash/_baseClone.js","node_modules/lodash/_arrayEach.js","node_modules/lodash/_baseAssign.js","node_modules/lodash/_baseAssignIn.js","node_modules/lodash/_baseKeysIn.js","node_modules/lodash/_nativeKeysIn.js","node_modules/lodash/_cloneBuffer.js","node_modules/lodash/_copyArray.js","node_modules/lodash/_copySymbols.js","node_modules/lodash/_copySymbolsIn.js","node_modules/lodash/_initCloneArray.js","node_modules/lodash/_initCloneByTag.js","node_modules/lodash/_cloneDataView.js","node_modules/lodash/_cloneRegExp.js","node_modules/lodash/_cloneSymbol.js","node_modules/lodash/_cloneTypedArray.js","node_modules/lodash/_initCloneObject.js","node_modules/lodash/_baseCreate.js","node_modules/lodash/isMap.js","node_modules/lodash/_baseIsMap.js","node_modules/lodash/isSet.js","node_modules/lodash/_baseIsSet.js","node_modules/lodash/_baseUnset.js","node_modules/lodash/last.js","node_modules/lodash/_parent.js","node_modules/lodash/_baseSlice.js","node_modules/lodash/_customOmitClone.js","node_modules/lodash/isPlainObject.js","node_modules/lodash/_basePick.js","node_modules/lodash/_basePickBy.js","node_modules/lodash/_baseSet.js","node_modules/slate/node_modules/debug/src/common.js","node_modules/get-document/index.js","node_modules/get-window/needs-ie-fallback.br.js","node_modules/lodash/debounce.js","node_modules/lodash/now.js","node_modules/slate-html-serializer/lib/slate-html-serializer.es.js","node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","node_modules/slate-md-serializer/lib/renderer.js","node_modules/slate-md-serializer/lib/parser.js","node_modules/matrix-react-sdk/lib/autocomplete/PlainWithPillsSerializer.js","node_modules/matrix-react-sdk/lib/stores/MessageComposerStore.js","node_modules/matrix-react-sdk/lib/SlateComposerHistoryManager.js","node_modules/lodash/_baseClamp.js","node_modules/matrix-react-sdk/res/img/cancel-red.svg","node_modules/matrix-react-sdk/lib/components/views/rooms/PinnedEventsPanel.js","node_modules/matrix-react-sdk/lib/utils/PinningUtils.js","node_modules/matrix-react-sdk/lib/components/views/rooms/PresenceLabel.js","node_modules/matrix-react-sdk/lib/components/views/rooms/ReadReceiptMarker.js","node_modules/matrix-react-sdk/lib/Velociraptor.js","node_modules/matrix-react-sdk/lib/VelocityBounce.js","node_modules/matrix-react-sdk/lib/components/views/rooms/RoomBreadcrumbs.js","node_modules/matrix-react-sdk/lib/components/views/rooms/RoomDetailList.js","node_modules/matrix-react-sdk/lib/components/views/rooms/RoomDropTarget.js","node_modules/matrix-react-sdk/lib/components/views/rooms/RoomHeader.js","node_modules/matrix-react-sdk/lib/components/views/rooms/RoomList.js","node_modules/matrix-react-sdk/lib/resizer/distributors/roomsublist2.js","node_modules/babel-runtime/core-js/math/sign.js","node_modules/core-js/library/fn/math/sign.js","node_modules/core-js/library/modules/es6.math.sign.js","node_modules/core-js/library/modules/_math-sign.js","node_modules/matrix-react-sdk/lib/components/views/rooms/RoomNameEditor.js","node_modules/matrix-react-sdk/lib/components/views/rooms/RoomPreviewBar.js","node_modules/matrix-react-sdk/lib/components/views/rooms/RoomRecoveryReminder.js","node_modules/matrix-react-sdk/lib/components/views/rooms/RoomTopicEditor.js","node_modules/matrix-react-sdk/lib/components/views/rooms/RoomUpgradeWarningBar.js","node_modules/matrix-react-sdk/lib/components/views/rooms/SearchBar.js","node_modules/matrix-react-sdk/lib/components/views/rooms/SearchResultTile.js","node_modules/matrix-react-sdk/lib/components/views/rooms/SearchableEntityList.js","node_modules/matrix-react-sdk/lib/components/views/rooms/SendMessageComposer.js","node_modules/matrix-react-sdk/lib/SendHistoryManager.js","node_modules/matrix-react-sdk/lib/components/views/rooms/SlateMessageComposer.js","node_modules/matrix-react-sdk/res/img sync ^\\.\\/button\\-text\\-.*\\.svg$","node_modules/matrix-react-sdk/res/img/button-text-block-quote-on.svg","node_modules/matrix-react-sdk/res/img/button-text-block-quote.svg","node_modules/matrix-react-sdk/res/img/button-text-bold-on.svg","node_modules/matrix-react-sdk/res/img/button-text-bold.svg","node_modules/matrix-react-sdk/res/img/button-text-bulleted-list-on.svg","node_modules/matrix-react-sdk/res/img/button-text-bulleted-list.svg","node_modules/matrix-react-sdk/res/img/button-text-deleted-on.svg","node_modules/matrix-react-sdk/res/img/button-text-deleted.svg","node_modules/matrix-react-sdk/res/img/button-text-inline-code-on.svg","node_modules/matrix-react-sdk/res/img/button-text-inline-code.svg","node_modules/matrix-react-sdk/res/img/button-text-italic-on.svg","node_modules/matrix-react-sdk/res/img/button-text-italic.svg","node_modules/matrix-react-sdk/res/img/button-text-numbered-list-on.svg","node_modules/matrix-react-sdk/res/img/button-text-numbered-list.svg","node_modules/matrix-react-sdk/res/img/button-text-underlined-on.svg","node_modules/matrix-react-sdk/res/img/button-text-underlined.svg","node_modules/matrix-react-sdk/res/img/icon-text-cancel.svg","node_modules/matrix-react-sdk/lib/components/views/rooms/ThirdPartyMemberInfo.js","node_modules/matrix-react-sdk/lib/components/views/rooms/TopUnreadMessagesBar.js","node_modules/matrix-react-sdk/lib/components/views/rooms/UserTile.js","node_modules/matrix-react-sdk/lib/components/views/rooms/WhoIsTypingTile.js","node_modules/matrix-react-sdk/lib/WhoIsTyping.js","node_modules/matrix-react-sdk/lib/components/views/settings/ChangeAvatar.js","node_modules/matrix-react-sdk/lib/components/views/settings/ChangeDisplayName.js","node_modules/matrix-react-sdk/lib/components/views/settings/ChangePassword.js","node_modules/matrix-react-sdk/lib/components/views/settings/DevicesPanel.js","node_modules/matrix-react-sdk/lib/components/views/settings/DevicesPanelEntry.js","node_modules/matrix-react-sdk/lib/components/views/settings/EnableNotificationsButton.js","node_modules/matrix-react-sdk/lib/components/views/settings/IntegrationsManager.js","node_modules/matrix-react-sdk/lib/components/views/settings/KeyBackupPanel.js","node_modules/matrix-react-sdk/lib/components/views/settings/Notifications.js","node_modules/matrix-react-sdk/lib/notifications/index.js","node_modules/matrix-react-sdk/lib/notifications/VectorPushRulesDefinitions.js","node_modules/matrix-react-sdk/lib/notifications/ContentRules.js","node_modules/matrix-react-sdk/lib/components/views/settings/SetIdServer.js","node_modules/matrix-react-sdk/lib/components/views/settings/SetIntegrationManager.js","node_modules/matrix-react-sdk/lib/components/views/settings/account/EmailAddresses.js","node_modules/matrix-react-sdk/lib/components/views/settings/account/PhoneNumbers.js","node_modules/matrix-react-sdk/lib/components/views/settings/discovery/EmailAddresses.js","node_modules/matrix-react-sdk/lib/components/views/settings/discovery/PhoneNumbers.js","node_modules/matrix-react-sdk/lib/components/views/terms/InlineTermsAgreement.js","node_modules/matrix-react-sdk/lib/components/views/verification/VerificationCancelled.js","node_modules/matrix-react-sdk/lib/components/views/verification/VerificationComplete.js","node_modules/matrix-react-sdk/lib/components/views/verification/VerificationShowSas.js","node_modules/matrix-react-sdk/lib/components/views/voip/CallPreview.js","node_modules/matrix-react-sdk/lib/components/views/voip/CallView.js","node_modules/matrix-react-sdk/lib/components/views/voip/IncomingCallBox.js","node_modules/matrix-react-sdk/lib/components/views/voip/VideoFeed.js","node_modules/matrix-react-sdk/lib/components/views/voip/VideoView.js","node_modules/diff-dom/src/diffDOM/dom/fromVirtual.js","node_modules/diff-dom/src/diffDOM/dom/apply.js","node_modules/diff-dom/src/diffDOM/dom/undo.js","node_modules/diff-dom/src/diffDOM/virtual/helpers.js","node_modules/diff-dom/src/diffDOM/virtual/apply.js","node_modules/diff-dom/src/diffDOM/virtual/fromDOM.js","node_modules/diff-dom/src/diffDOM/virtual/fromString.js","node_modules/diff-dom/src/diffDOM/virtual/diff.js","node_modules/diff-dom/src/diffDOM/index.js","node_modules/diff-dom/src/TraceLogger.js","node_modules/diff-dom/src/index.js","node_modules/slate-prop-types/lib/slate-prop-types.es.js","node_modules/is-in-browser/dist/module.js","node_modules/slate-dev-environment/lib/slate-dev-environment.es.js","node_modules/slate-base64-serializer/lib/slate-base64-serializer.es.js","node_modules/slate-hotkeys/lib/slate-hotkeys.es.js","node_modules/slate-react/node_modules/memoize-one/dist/memoize-one.esm.js","node_modules/slate-react/lib/slate-react.es.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","installedModules","6","__webpack_require__","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","s","default","instance","Constructor","TypeError","obj","_defineProperty","_defineProperty2","defineProperties","props","descriptor","configurable","writable","protoProps","staticProps","_getIterator3","_interopRequireDefault","_assign2","_keys2","_typeof3","newTranslatableError","translatedMessage","_t","_td","substitute","replaceByRegexes","setMissingEntryGenerator","f","_counterpart2","setLanguage","preferredLangs","Array","isArray","langToUse","availLangs","getLangsJson","then","result","getLanguage","i18nFolder","fileName","langData","registerTranslations","setLocale","_SettingsStore2","setValue","_SettingsStore","SettingLevel","DEVICE","log","getAllLanguagesFromJson","langsObject","langs","langKey","label","getLanguagesFromBrowser","navigator","languages","language","userLanguage","getNormalizedLanguageKeys","languageKeys","normalizedLanguage","normalizeLanguageKey","languageParts","split","getCurrentLanguage","pickBestLanguage","currentLang","normalisedLangs","map","currentLangIndex","indexOf","closeLangIndex","find","substr","enIndex","startsWith","_browserRequest2","_bluebird2","_react2","ANNOTATE_STRINGS","text","variables","tags","substituted","options","count","forEach","k","warn","translated","translate","locale","safeCounterpartTranslate","interpolate","className","regexpMapping","variable","_regexpMapping","tag","mapping","output","shouldWrapInSpan","regexpString","regexp","RegExp","matchFoundSomewhere","outputIndex","inputText","match","exec","index","parts","prevMatch","capturedGroups","replaced","Function","apply","tail","startIndex","splice","concat","join","toLowerCase","replace","getLocale","url","method","response","body","status","JSON","parse","langPath","inTrs","outTrs","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","next","done","keyParts","return","weblateToCounterpart","setSeparator","setFallbackLocale","_Skinner","_Skinner2","loadSkin","skinObject","load","resetSkin","reset","getComponent","componentName","_typeof2","self","ReferenceError","_setPrototypeOf2","_create2","subClass","superClass","constructor","__proto__","define","u","a","_dereq_","code","1","SomePromiseArray","_SomePromiseArray","any","ret","setHowMany","setUnwrap","init","this","2","firstLineError","schedule","Queue","util","Async","_customScheduler","_isTickUsed","_lateQueue","_normalQueue","_haveDrainedQueues","_trampolineEnabled","drainQueues","_drainQueues","_schedule","AsyncInvokeLater","fn","receiver","arg","_queueTick","AsyncInvoke","AsyncSettlePromises","_pushOne","_drainQueue","queue","_drainQueueStep","_settlePromises","setScheduler","prev","hasCustomScheduler","enableTrampoline","disableTrampolineIfNecessary","hasDevTools","haveItemsQueued","fatalError","isNode","process","stderr","write","stack","exit","throwLater","arguments","invokeLater","invoke","settlePromises","_reset","3","INTERNAL","tryConvertToPromise","debug","calledBind","rejectThis","_","_reject","targetRejected","context","promiseRejectionQueued","bindingPromise","_then","bindingResolved","thisArg","_bitField","_resolveCallback","bindingRejected","_propagateFrom","propagateFromFunction","_boundValue","boundValueFunction","maybePromise","_target","_setBoundTo","_setOnCancel","_boundTo","_isBound","4","old","bluebird","noConflict","5","cr","callerCache","getterCache","canEvaluate","caller","methodName","classString","toString","ensureMethod","pop","namedGetter","indexedGetter","Math","max","isIdentifier","args","propertyName","maybeGetter","getGetter","PromiseArray","apiRejection","tryCatch","errorObj","async","_async","cancel","cancellation","_warn","child","_isCancellable","_cancelBy","_isFollowing","_followee","_cancelBranched","parent","_cancellationParent","_setWillBeCancelled","_branchHasCancelled","_branchesRemainingToCancel","_enoughBranchesHaveCancelled","canceller","_invokeOnCancel","_cancel","_setCancelled","_cancelPromises","_length","_unsetOnCancel","_onCancelField","isPending","_isCancelled","isCancellable","isCancelled","_doInvokeOnCancel","onCancelCallback","internalOnly","_attachExtraTrace","_resultCancelled","_onCancel","_invokeInternalOnCancel","7","NEXT_FILTER","getKeys","keys","instances","cb","boundTo","predicateLoop","item","matchesPredicate","isObject","j","8","longStackTraces","contextStack","Context","_trace","CapturedTrace","peekContext","lastIndex","_promiseCreated","_pushContext","_popContext","_peekContext","trace","deactivateLongStackTraces","activateLongStackTraces","Promise_pushContext","Promise_popContext","Promise_PeekContext","Promise_peekContext","Promise_promiseCreated","ctx","9","unhandledRejectionHandled","possiblyUnhandledRejection","printWarning","getDomain","_getDomain","Warning","es5","canAttachTrace","bluebirdFramePattern","nodeFramePattern","parseLinePattern","stackFramePattern","formatStack","indentStackFrames","debugging","env","warnings","wForgottenReturn","suppressUnhandledRejections","_ensurePossibleRejectionHandled","_setRejectionIsUnhandled","_notifyUnhandledRejection","_notifyUnhandledRejectionIsHandled","fireRejectionEvent","_setReturnedNonUndefined","_returnedNonUndefined","_isRejectionUnhandled","reason","_settledValue","_setUnhandledRejectionIsNotified","_unsetUnhandledRejectionIsNotified","_isUnhandledRejectionNotified","_unsetRejectionIsUnhandled","shouldUseOwnTrace","onPossiblyUnhandledRejection","domain","domainBind","onUnhandledRejectionHandled","disableLongStackTraces","config","longStackTracesIsSupported","Promise_captureStackTrace","_captureStackTrace","Promise_attachExtraTrace","Promise_dereferenceTrace","_dereferenceTrace","longStackTracesCaptureStackTrace","longStackTracesAttachExtraTrace","longStackTracesDereferenceTrace","hasLongStackTraces","fireDomEvent","CustomEvent","global","dispatchEvent","eventData","detail","cancelable","domEvent","Event","createEvent","initCustomEvent","fireGlobalEvent","emit","generatePromiseLifecycleEventObject","eventToObjectGenerator","promiseCreated","promiseFulfilled","promiseRejected","promiseResolved","promiseCancelled","promiseChained","warning","unhandledRejection","rejectionHandled","activeFireEvent","globalEventFired","domEventFired","defaultFireEvent","cancellationExecute","executor","onCancel","_attachCancellationCallback","cancellationAttachCancellationCallback","previousOnCancel","cancellationOnCancel","cancellationSetOnCancel","cancellationClearCancellationData","cancellationPropagateFrom","flags","branchesRemainingToCancel","opts","warningsOption","_clearCancellationData","_execute","monitoring","_fireEvent","handler","isFulfilled","ignoreSelf","_parent","attachExtraTrace","__stackCleaned__","parsed","parseStackAndMessage","notEnumerableProp","formatAndLogError","cleanStack","line","isTraceLine","test","isInternalFrame","shouldIgnore","charAt","stackFramesAsArray","title","isSoft","String","localHandler","localEventFired","formatNonError","str","stringify","maxChars","snip","captureStackTrace","parseLineInfoRegex","parseLineInfo","matches","parseInt","_promisesCreated","uncycle","inherits","nodes","stackToIndex","node","cycleEdgeNode","currentChildLength","stacks","current","currentLastIndex","currentLastLine","commonRootMeetPoint","removeCommonRoots","removeDuplicateOrEmptyJumps","reconstructStack","v8stackFramePattern","v8stackFormatter","stackTraceLimit","ignoreUntil","hasStackAfterThrow","isTTY","color","checkForgottenReturns","returnValue","handlerLine","creatorLine","traceLines","lineMatches","firstUserLine","msg","setBounds","lastLineError","firstFileName","lastFileName","firstStackLines","lastStackLines","firstIndex","info","deprecated","replacement","10","returner","thrower","thenReturn","thenThrow","catchThrow","_reason","caught","catchReturn","_value","11","PromiseReduce","reduce","PromiseAll","promiseAllThis","each","mapSeries","12","_TypeError","_RangeError","Objectfreeze","freeze","subError","nameProperty","defaultMessage","SubError","CancellationError","TimeoutError","AggregateError","RangeError","methods","level","OperationalError","cause","indent","lines","errorTypes","RejectionError","13","isES5","getDescriptor","getOwnPropertyDescriptor","names","getOwnPropertyNames","getPrototypeOf","propertyIsWritable","prop","set","has","proto","ObjectKeys","desc","14","PromiseMap","filter","15","catchFilter","PassThroughHandlerContext","called","cancelPromise","FinallyHandlerCancelReaction","finallyHandler","checkCancel","succeed","fail","reasonOrValue","isFinallyHandler","isRejected","_passThrough","success","lastly","tap","tapCatch","handlerOrPredicate","len","catchInstances","16","Proxyable","yieldHandlers","PromiseSpawn","generatorFunction","yieldHandler","internal","_finallyPromise","_promise","_stack","_generatorFunction","_receiver","_generator","_yieldHandlers","_yieldedPromise","_cancellationPhase","_isResolved","_cleanup","_fulfill","_promiseCancelled","coroutine","returnSentinel","_continue","_promiseFulfilled","_promiseRejected","_run","_rejectCallback","traceParent","promiseFromYieldHandler","bitField","_proxy","PromiseSpawn$","generator","spawn","addYieldHandler","17","last","spread","18","MappingPromiseArray","limit","_filter","constructor$","_callback","_preservedValues","_limit","_inFlight","_queue","_asyncInit","concurrency","isFinite","_init$","_init","values","_values","preservedValues","callback","_totalResolved","_resolve","booleans","19","_resolveFromSyncValue","attempt","20","maybeWrapAsError","rErrorKey","wrapAsOperationalError","isUntypedError","markAsOriginatingFromRejection","multiArgs","wrapped","21","spreadAdapter","val","nodeback","successAdapter","errorAdapter","newReason","asCallback","nodeify","adapter","22","makeSelfResolutionError","reflectHandler","PromiseInspection","UNDEFINED_BINDING","errors","APPLY","createContext","nodebackForPromise","check","_fulfillmentHandler0","_rejectionHandler0","_promise0","_receiver0","_resolveFromExecutor","deferResolve","v","deferReject","fillTypes","reflect","didFulfill","didReject","_setIsFinal","toJSON","fulfillmentValue","rejectionReason","originatesFromRejection","getNewLibraryCopy","is","fromNode","fromCallback","_isFateSealed","_setAsyncGuaranteed","cast","_setFulfilled","fulfilled","rejected","internalData","haveInternalData","settler","_settlePromiseCtx","_settlePromiseLateCancellationObserver","_addCallbacks","_setLength","_setRejected","_setFollowing","_isFinal","_unsetCancelled","_receiverAt","_promiseAt","_fulfillmentHandlerAt","_rejectionHandlerAt","_migrateCallback0","follower","fulfill","_migrateCallbackAt","base","proxyable","shouldBind","_setFollowee","synchronous","ignoreNonErrorWarnings","ensureErrorObject","hasStack","_settlePromiseFromHandler","x","_settlePromise","isPromise","asyncGuaranteed","_settlePromise0","_clearCallbackDataAtIndex","_fulfillPromises","_rejectPromises","defer","pending","version","toFastProperties","b","23","resolveValueIfEmpty","asArray","_iterate","_resolveEmptyArray","Map","toResolutionValue","getActualLength","shouldCopyValues","isResolved","24","THIS","withAppended","defaultPromisified","__isPromisified__","noCopyPropsPattern","defaultFilter","propsFilter","isPromisified","hasPromisified","suffix","getDataPropertyOrDefault","promisifiableMethods","suffixRegexp","inheritedDataKeys","passesDefaultFilter","keyWithoutAsyncSuffix","checkValid","escapeIdentRegex","makeNodePromisified","makeNodePromisifiedEval","__","defaultThis","promisified","promisifyAll","promisifier","promisifiedKey","promisify","copyDescriptors","isClass","25","Es6Map","mapToEntries","size","extractEntry","PropertiesPromiseArray","entries","isMap","_isMap","castValue","entriesToMap","keyOffset","26","capacity","_capacity","_front","_willBeOverCapacity","_checkCapacity","wrapMask","front","_resizeTo","oldCapacity","srcIndex","dst","dstIndex","arrayMove","27","raceLater","array","race","28","ReductionPromiseArray","initialValue","_each","_fn","_initialValue","_currentCancellable","_eachValues","completed","valueOrReason","gotAccum","accum","_gotAccum","gotValue","_eachComplete","sender","_resultCancelled$","29","div","toggleScheduled","div2","NativePromise","getNativePromise","MutationObserver","GlobalSetImmediate","setImmediate","ProcessNextTick","nextTick","isRecentNode","nativePromise","standalone","cordova","documentElement","attributes","classList","toggle","observe","disconnect","30","SettledPromiseArray","_promiseResolved","inspection","_settledValueField","settle","31","CANCELLATION","_howMany","_unwrap","_initialized","some","howMany","isArrayResolved","_canPossiblyFulfill","_getRangeError","_addFulfilled","_fulfilled","_addRejected","_checkOutcome","_rejected","32","__isCancelled","33","hasProp","doGetThen","getThen","isAnyBluebirdPromise","doThenable","34","HandleWrapper","handle","afterValue","delay","ms","successClear","failureClear","handleWrapper","afterTimeout","35","NULL","dispose","resources","iterator","thenable","_isDisposable","_getDisposer","_setDisposable","castPreservingDisposable","tryDispose","Disposer","_data","_context","FunctionDisposer","maybeUnwrapDisposer","isDisposer","ResourceList","resource","doDispose","_unsetDisposable","using","input","spreadArgs","disposer","reflectedResources","resultPromise","inspections","_disposer","36","tryCatchTarget","globalObject","tryCatcher","Child","Parent","T","isPrimitive","maybeError","safeToString","appendee","defaultValue","excludedPrototypes","isExcludedProto","visitedKeys","enumeration","thisAssignmentPattern","hasMethods","hasMethodsOtherThanConstructor","hasThisAssignmentAndStaticMethods","FakeConstructor","ic","foo","rident","filledRange","prefix","isError","ignore","from","to","ArrayFrom","itResult","it","hasEnvVariables","chrome","loadTimes","versions","Number","P","_regenerator2","_bluebird","_classCallCheck3","_createClass3","_matrixJsSdk","_utils2","_eventTimeline2","_eventTimelineSet2","_index2","_createMatrixClient2","_MatrixActionCreators2","_Modal2","_crypto","_MatrixClientBackedSettingsHandler2","StorageManager","newObj","_interopRequireWildcard","_IdentityAuthClient2","MatrixClientPeg","matrixClient","_justRegisteredUserId","initialSyncLimit","_currentClientCreds","_ref2","_ref","indexedDbWorkerScript","stop","uid","credentials","userId","creds","_createClient","mark","_callee","_arr","_i","dbType","CryptoStoreTooNewDialog","wrap","store","startup","abrupt","t0","MemoryStore","localStorage","trackStores","getValue","initCrypto","setCryptoInitialised","t1","createDialog","host","location","deepCopy","pendingEventOrdering","lazyLoadMembers","start","_callee2","_context2","assign","sent","startClient","homeserverUrl","baseUrl","identityServerUrl","idBaseUrl","deviceId","getDeviceId","accessToken","getAccessToken","guest","isGuest","timelineSupport","forceTURN","fallbackICEServerAllowed","verificationMethods","SAS","unstableClientRelationAggregation","identityServer","setMaxListeners","setGuest","Boolean","notifTimelineSet","getLiveTimeline","setPaginationToken","BACKWARDS","setNotifTimelineSet","mxMatrixClientPeg","React","factory","ReactNoopUpdateQueue","Component","updater","isValidElement","SLICE$0","createClass","ctor","Iterable","isIterable","Seq","KeyedIterable","isKeyed","KeyedSeq","IndexedIterable","isIndexed","IndexedSeq","SetIterable","isAssociative","SetSeq","maybeIterable","IS_ITERABLE_SENTINEL","maybeKeyed","IS_KEYED_SENTINEL","maybeIndexed","IS_INDEXED_SENTINEL","maybeAssociative","isOrdered","maybeOrdered","IS_ORDERED_SENTINEL","Keyed","Indexed","Set","SHIFT","SIZE","MASK","NOT_SET","CHANGE_LENGTH","DID_ALTER","MakeRef","ref","SetRef","OwnerID","arrCopy","arr","offset","newArr","ii","ensureSize","iter","__iterate","returnTrue","wrapIndex","uint32Index","NaN","wholeSlice","begin","end","resolveBegin","resolveIndex","resolveEnd","defaultIndex","min","ITERATE_KEYS","ITERATE_VALUES","ITERATE_ENTRIES","REAL_ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","ITERATOR_SYMBOL","Iterator","iteratorValue","iteratorResult","iteratorDone","hasIterator","getIteratorFn","isIterator","maybeIterator","getIterator","iterable","iteratorFn","isArrayLike","emptySequence","toSeq","seq","maybeIndexedSeqFromValue","ObjectSeq","seqFromValue","toKeyedSeq","fromEntrySeq","keyedSeqFromValue","entrySeq","toIndexedSeq","indexedSeqFromValue","toSetSeq","KEYS","VALUES","ENTRIES","inspect","toSource","of","__toString","cacheResult","_cache","__iterateUncached","toArray","reverse","seqIterate","__iterator","seqIterator","isSeq","EMPTY_SEQ","EMPTY_REPEAT","EMPTY_RANGE","IS_SEQ_SENTINEL","ArraySeq","_array","_object","_keys","IterableSeq","_iterable","IteratorSeq","_iteratorCache","maybeSeq","useKeys","cache","maxIndex","entry","__iteratorUncached","fromJS","json","converter","fromJSWith","parentJSON","isPlainObj","fromJSDefault","toList","toMap","valueA","valueB","valueOf","equals","deepEqual","__hash","notAssociative","every","flipped","allEqual","bSize","Repeat","times","Infinity","invariant","condition","Range","step","abs","_start","_end","ceil","Collection","KeyedCollection","IndexedCollection","SetCollection","notSetValue","iterations","includes","searchValue","lastIndexOf","this$0","other","possibleIndex","floor","offsetValue","imul","smi","i32","hash","h","STRING_HASH_CACHE_MIN_STRLEN","string","stringHashCache","hashString","STRING_HASH_CACHE_SIZE","STRING_HASH_CACHE_MAX_SIZE","cachedHashString","hashCode","usingWeakMap","weakMap","UID_HASH_KEY","canDefineProperty","propertyIsEnumerable","nodeType","uniqueID","getIENodeHash","objHashUID","isExtensible","hashJSObj","charCodeAt","WeakMap","assertNotInfinite","emptyMap","withMutations","maybeMap","IS_MAP_SENTINEL","_root","updateMap","setIn","keyPath","updateIn","remove","deleteIn","update","updatedValue","updateInDeepMap","existing","keyPathIter","isNotSet","existingValue","newValue","nextExisting","nextUpdated","forceIterator","clear","__ownerID","__altered","merge","mergeIntoMapWith","mergeWith","merger","iters","mergeIn","mergeDeep","deepMerger","mergeDeepWith","deepMergerWith","mergeDeepIn","sort","comparator","OrderedMap","sortFactory","sortBy","mapper","mutable","asMutable","wasAltered","__ensureOwner","asImmutable","MapIterator","iterate","ownerID","makeMap","EMPTY_MAP","MapPrototype","ArrayMapNode","BitmapIndexedNode","bitmap","HashArrayMapNode","HashCollisionNode","keyHash","ValueNode","_type","_reverse","mapIteratorFrame","mapIteratorValue","__prev","root","newRoot","newSize","didChangeSize","didAlter","updateNode","isLeafNode","mergeIntoNode","newNode","idx1","idx2","iterables","mergeIntoCollectionWith","nextValue","collection","mergeIntoMap","popCount","idx","canEdit","newArray","removeIn","removed","exists","MAX_ARRAY_MAP_SIZE","createNodes","isEditable","newEntries","bit","keyHashFrag","MAX_BITMAP_INDEXED_SIZE","including","expandedNodes","expandNodes","newBitmap","newNodes","newLen","after","spliceOut","spliceIn","newCount","MIN_HASH_ARRAY_MAP_SIZE","excluding","packedII","packedNodes","packNodes","keyMatch","subNode","List","empty","emptyList","isList","makeList","VNode","list","setSize","maybeList","IS_LIST_SENTINEL","listNodeFor","_origin","setListBounds","newTail","_tail","getTailOffset","updateVNode","_level","updateList","insert","oldSize","unshift","mergeIntoListWith","iterateList","DONE","ListPrototype","removeBefore","originIndex","newChild","removingFirst","oldChild","editable","editableVNode","removeAfter","sizeIndex","EMPTY_LIST","EMPTY_ORDERED_MAP","left","right","tailPos","iterateNodeOrLeaf","iterateLeaf","iterateNode","origin","nodeHas","lowerNode","newLowerNode","rawIndex","owner","oldOrigin","newOrigin","newCapacity","newLevel","offsetShift","oldTailOffset","newTailOffset","oldTail","beginIndex","maxSize","emptyOrderedMap","isOrderedMap","maybeOrderedMap","makeOrderedMap","omap","_map","_list","updateOrderedMap","newMap","newList","flip","ToKeyedSequence","indexed","_iter","_useKeys","ToIndexedSequence","ToSetSequence","FromEntriesSequence","flipFactory","flipSequence","makeSequence","reversedSequence","cacheResultThrough","mapFactory","mappedSequence","reverseFactory","filterFactory","predicate","filterSequence","sliceFactory","originalSize","resolvedBegin","resolvedEnd","sliceSize","resolvedSize","sliceSeq","skipped","isSkipping","skipWhileFactory","skipSequence","skipping","concatFactory","isKeyedIterable","singleton","concatSeq","flatten","sum","flattenFactory","depth","flatSequence","stopped","flatDeep","currentDepth","defaultComparator","maxFactory","maxCompare","comp","zipWithFactory","keyIter","zipper","zipSequence","iterators","isDone","steps","reify","validateEntry","resolveSize","iterableClass","Record","defaultValues","hasInitialized","RecordType","setProp","setProps","RecordTypePrototype","_name","_defaultValues","RecordPrototype","valueSeq","indexedIterable","recordName","defaultVal","_empty","makeRecord","likeRecord","record","emptySet","isSet","add","maybeSet","IS_SET_SENTINEL","fromKeys","keySeq","updateSet","union","intersect","originalSet","subtract","OrderedSet","__make","EMPTY_SET","SetPrototype","__empty","makeSet","emptyOrderedSet","isOrderedSet","maybeOrderedSet","EMPTY_ORDERED_SET","OrderedSetPrototype","makeOrderedSet","Stack","emptyStack","isStack","unshiftAll","maybeStack","IS_STACK_SENTINEL","_head","peek","makeStack","pushAll","EMPTY_STACK","StackPrototype","mixin","keyCopier","getOwnPropertySymbols","toJS","__toJS","toObject","toOrderedMap","toOrderedSet","toSet","toStack","__toStringMapper","findEntry","found","findLastEntry","sideEffect","separator","joined","isFirst","reducer","initialReduction","reduction","useFirst","reduceRight","reversed","not","butLast","isEmpty","countBy","grouper","groups","countByFactory","entriesSequence","entryMapper","filterNot","findLast","first","flatMap","coerce","flatMapFactory","searchKey","getIn","searchKeyPath","nested","groupBy","isKeyedIter","groupByFactory","hasIn","isSubset","isSuperset","keyMapper","maxBy","neg","defaultNegComparator","minBy","rest","skip","amount","skipLast","skipWhile","skipUntil","take","takeLast","takeWhile","takeSequence","iterating","takeWhileFactory","takeUntil","ordered","keyed","murmurHashOfSize","hashMerge","hashIterable","IterablePrototype","quoteString","chain","contains","noLengthWarning","findKey","findLastKey","keyOf","lastKeyOf","mapEntries","mapKeys","KeyedIterablePrototype","defaultZipper","findIndex","removeNum","numArgs","spliced","findLastIndex","interpose","interposedSequence","interposeFactory","interleave","zipped","interleaved","zip","zipWith","core","hide","redefine","$export","source","own","out","exp","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","IS_BIND","B","expProto","U","W","R","_getPrototypeOf2","_possibleConstructorReturn3","_get3","_inherits3","MatrixDispatcher","_flux$Dispatcher","payload","sync","_this2","action","dispatch","Dispatcher","mxDispatcher","_toConsumableArray3","_extends3","_slicedToArray3","_reactDom2","_propTypes2","_createReactClass2","_Analytics2","_dispatcher2","_languageHandler","AsyncWrapper","displayName","propTypes","prom","isRequired","getInitialState","component","componentWillMount","_this","_unmounted","setState","catch","componentWillUnmount","_onWrapperCancelClick","onFinished","render","state","BaseDialog","DialogButtons","primaryButton","onPrimaryButtonClick","hasCancel","Spinner","ModalManager","_counter","_priorityModal","_staticModal","_modals","closeAll","container","getElementById","id","analyticsAction","analyticsInfo","trackEvent","_len","_key","_len2","_key2","appendDialog","Element","_len3","_key3","createDialogAsync","_len4","_key4","appendDialogAsync","_len5","_key5","_len6","_key6","modal","_getCloseFn2","_getCloseFn","_getCloseFn3","closeDialog","onFinishedProm","modalCount","elem","deferred","_len7","_key7","_reRender","isPriorityModal","isStaticModal","_buildModal2","_buildModal","close","finished","_buildModal3","modalsToClose","unmountComponentAtNode","getOrCreateContainer","getOrCreateStaticContainer","classes","staticDialog","onClick","_classes","dialog","singletonModalManager","queryString","indexedDB","matrixcs","qs","qsStringifyOptions","setCryptoStoreFactory","IndexedDBCryptoStore","_stringify2","_DeviceSettingsHandler2","_RoomDeviceSettingsHandler2","_DefaultSettingsHandler2","_RoomAccountSettingsHandler2","_AccountSettingsHandler2","_RoomSettingsHandler2","_ConfigSettingsHandler2","_SdkConfig2","_Settings","_LocalEchoWrapper2","_WatchManager","ROOM_DEVICE","ROOM_ACCOUNT","ACCOUNT","ROOM","CONFIG","DEFAULT","defaultWatchManager","WatchManager","defaultSettings","invertedDefaultSettings","featureNames","SETTINGS","isFeature","invertedSettingName","LEVEL_HANDLERS","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","LEVEL_ORDER","SettingsStore","settingName","roomId","callbackFn","setting","originalSettingName","watcherId","Date","getTime","localizedCallback","changedInRoomId","atLevel","newValAtLevel","_watchers","watchSetting","watcherReference","unwatchSetting","_monitors","registerWatcher","inRoomId","newValueAtLevel","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","_roomId","possibleFeatures","_getFeatureState","excludeDefault","levelOrder","supportedLevelsAreOrdered","supportedLevels","getValueAt","explicit","minIndex","configValue","handlers","_getHandlers","_getFinalValue","_handler","calculatedValue","calculatedAtLevel","resultingValue","controller","actualValue","getValueOverride","_getHandler","canSetValue","onChange","_x8","_x9","_x10","_x11","isSupported","realSettingName","def","doChecks","_iteratorNormalCompletion4","_didIteratorError4","_iteratorError4","_step4","_iterator4","handlerName","_value3","_value4","_value2","_iteratorNormalCompletion5","_didIteratorError5","_iteratorError5","_step5","_iterator5","_value5","_value6","_iteratorNormalCompletion6","_didIteratorError6","_iteratorError6","_step6","_iterator6","featuresConfig","featureState","mxSettingsStore","g","hasOwn","classNames","argType","inner","__e","_objectWithoutProperties3","AccessibleButton","_Keyboard","element","children","kind","disabled","restProps","onKeyDown","keyCode","KeyCode","ENTER","stopPropagation","preventDefault","SPACE","onKeyUp","inputRef","tabIndex","role","func","bool","defaultProps","generate","resetGenerator","KeyUtils","setGenerator","_typeof","classCallCheck","_extends","setPrototypeOf","objectWithoutProperties","possibleConstructorReturn","slicedToArray","_n","_d","_e","_s","sliceIterator","toConsumableArray","arr2","Data","attrs","fromJSON","DEFAULTS","Document","_Record","preserveKeys","isDocument","_object$data","_object$key","_object$nodes","Node","createList","DEFAULTS$1","Inline","isInline","elements","DEFAULTS$2","Mark","isMark","DEFAULTS$3","marks","Leaf","newMark","newMarks","set$$1","isLeaf","leaves","invalid","leaf","firstLeaf","endOffset","startOffset","_object$text","_object$marks","ENABLED","CACHE_KEY","LEAF","UNDEFINED","UNSET","memoize","properties","_loop","original","__cache_key","__cache","__cache_no_args","takesArguments","cachedValue","resetMemoization","MAX_SAFE_INTEGER","useMemoization","enabled","DEFAULTS$4","Text","addMarks","newFirst","_Leaf$splitLeaves","splitLeaves","_Leaf$splitLeaves2","before","bundle","_Leaf$splitLeaves3","_Leaf$splitLeaves4","middle","setLeaves","decorations","dec","hasStart","hasEnd","_Leaf$splitLeaves5","_Leaf$splitLeaves6","_Leaf$splitLeaves7","_Leaf$splitLeaves8","addMark","createLeaves","getActiveMarks","leafEnd","leafStart","_this3","getMarks","getMarksAsArray","searchLeafAtOffset","_searchLeafAtOffset2","delta","beforeText","afterText","nextLeaves","removeMark","_Leaf$splitLeaves9","_Leaf$splitLeaves10","_Leaf$splitLeaves11","_Leaf$splitLeaves12","_searchLeafAtOffset3","_leaves2","_Leaf$splitLeaves13","_Leaf$splitLeaves14","getLeaves","updateMark","_Leaf$splitLeaves15","_Leaf$splitLeaves16","_Leaf$splitLeaves17","_Leaf$splitLeaves18","splitted","regenerateKey","isText","_attrs","ranges","Block","isBlock","DEFAULTS$5","Changes","change","selection","methodAtRange","moveToStart","moveToEnd","isExpanded","addMarkAtRange","sel","select","_marks","getActiveMarksAtRange","_sel","delete","deleteAtRange","insertBlock","block","insertBlockAtRange","getNode","moveToEndOfNode","insertFragment","fragment","startText","endText","startInline","lastText","getLastText","lastInline","getClosestInline","firstChild","lastChild","getTexts","isAppending","isAtStartOfNode","isAtEndOfNode","isInserting","hasBlockChildren","insertFragmentAtRange","newTexts","newText","moveToStartOfNode","moveForward","insertInline","inline","insertInlineAtRange","insertText","getInsertMarksAtRange","insertTextAtRange","removeMarkAtRange","_marks2","_sel2","replaceMark","oldMark","splitBlock","splitBlockAtRange","toggleMark","activeMarks","wrapText","wrapTextAtRange","isCollapsed","moveStartBackward","moveEndBackward","isForward","SURROGATE_START","SURROGATE_END","CHAMELEON","PUNCTUATION","isSurrogate","isWord","char","remaining","getCharLength","getCharOffset","getWordOffset","started","TextUtils","getCharOffsetBackward","getCharOffsetForward","getWordOffsetBackward","getWordOffsetForward","Changes$1","compare","path","pv","tv","create$1","crop","decrement","increment","isAbove","_crop","_crop2","isEqual","isYounger","_crop9","_crop10","pl","tl","range","texts","getTextsAtRange","withoutNormalizing","addMarkByKey","addMarksAtRange","snapshotSelection","startKey","endKey","schema","isStartVoid","hasVoidParent","isEndVoid","startBlock","getClosestBlock","endBlock","isHanging","getFirstText","prevText","getPreviousText","startVoid","getClosestVoid","nextText","getNextText","removeNodeByKey","endVoid","_prevText","startLength","endLength","ancestor","getCommonAncestor","startChild","getFurthestAncestor","endChild","startParent","getParent","startParentIndex","endParentIndex","_index","startChildIndex","endChildIndex","removeTextByKey","lonely","getFurthestOnlyChildAncestor","moveNodeByKey","mergeNodeByKey","deleteCharBackwardAtRange","getOffset","deleteBackwardAtRange","deleteLineBackwardAtRange","deleteWordBackwardAtRange","_range","focus","voidParent","isVoid","getDescendant","prevBlock","prevVoid","moveAnchorTo","moveFocusBackward","traversed","deleteCharForwardAtRange","deleteForwardAtRange","deleteLineForwardAtRange","deleteWordForwardAtRange","_range2","nextBlock","getNextBlock","_nextBlock","nextVoid","moveFocusTo","moveFocusForward","_next","extra","insertNodeByKey","atEnd","siblingText","splitRange","splitDescendantsByKey","moveTo","normalize","mapDescendants","isAtStart","blocks","getBlocks","firstBlock","lastBlock","lonelyChild","getFurthest","removeNode","newIndex","nextChild","getNextSibling","nextNodes","inlineChild","inlineIndex","assertDescendant","splitNodeByKey","insertTextByKey","removeMarkByKey","setBlocksAtRange","getBlocksAtRange","sets","setNodeByKey","setInlinesAtRange","inlines","getInlinesAtRange","height","_range6","isBackward","moveAnchorToStartOfNode","setFocus","setPath","anchor","resolveRange","splitInlineAtRange","_range7","toggleMarkAtRange","unwrapBlockAtRange","createProperties","wrappers","getClosest","hasDescendant","firstMatch","lastMatch","firstText","unwrapInlineAtRange","wrapBlockAtRange","firstblock","lastblock","siblings","p1","p2","indexes","ind","wrapInlineAtRange","inlineParent","wrapInlineByKey","endInline","endIndex","splitText","inlinekey","rng","isFocused","startInner","startInnerIndex","endInner","startInlines","endInlines","startNode","endNode","startRange","endRange","PathUtils","isAfter","_crop3","_crop4","isBefore","_crop5","_crop6","isOlder","_crop7","_crop8","isSibling","lift","relate","av","transform","operation","position","pIndex","pEqual","pYounger","pAbove","np","newPath","npIndex","npEqual","npYounger","npAbove","paths","Changes$2","assertNode","operations","bx","by","ax","ay","applyOperations","insertNodeByPath","applyOperation","getMarksAtIndex","previous","getPreviousSibling","getTextsAsArray","removals","parentPath","removeNodeByPath","createRange","removeTextByPath","activeMark","insertTextByPath","replaceTextByPath","_options$target","textPath","textOffset","splitNodeByPath","getAncestors","prevIndex","moveToRangeOfNode","parentIndex","grandPath","isLast","moveNodeByPath","updatedPath","wrapBlockByPath","wrapInlineByPath","assertPath","newKey","textKey","splitDescendantsByPath","Changes$3","history","_history","undos","redos","op","_op","withoutSaving","_history2","invert","inverse","_inverse","DEFAULTS$6","Point","isUnset","hasNode","point","setOffset","moveBackward","getPath","_text","getTextAtOffset","isPoint","_object$offset","_object$path","DEFAULTS$7","Decoration","_properties","isDecoration","isRange","TYPES","decoration","DEFAULTS$8","Selection","isSelection","DEFAULTS$9","createSet","_object$isFocused","Changes$4","proxy","_change$value$selecti","_len31","_key31","pointEdgeObject","edge","toUpperCase","Edge","pointEdgeSideObject","side","Side","getDirectionNode","pointBackward","pointForward","isInBlock","isPreviousInVoid","isNextInVoid","blur","deselect","moveAnchorBackward","moveAnchorForward","moveAnchorToEndOfBlock","moveAnchorToEndOfInline","moveAnchorToEndOfDocument","moveAnchorToEndOfNode","moveToAnchor","moveAnchorToEndOfNextBlock","moveAnchorToEndOfNextInline","moveAnchorToEndOfNextText","moveAnchorToEndOfPreviousBlock","moveAnchorToEndOfPreviousInline","moveAnchorToEndOfPreviousText","moveAnchorToEndOfText","moveAnchorToStartOfBlock","moveAnchorToStartOfDocument","moveAnchorToStartOfInline","moveAnchorToStartOfNextBlock","moveAnchorToStartOfNextInline","moveAnchorToStartOfNextText","moveAnchorToStartOfPreviousBlock","moveAnchorToStartOfPreviousInline","moveAnchorToStartOfPreviousText","moveAnchorToStartOfText","_change$moveAnchorBac","moveEndForward","_len8","_key8","moveEndTo","_len9","_key9","moveEndToEndOfBlock","moveEndToEndOfDocument","moveEndToEndOfNode","moveEndToEndOfInline","moveEndToEndOfNextBlock","moveEndToEndOfNextInline","moveEndToEndOfNextText","_len10","_key10","moveEndToEndOfPreviousBlock","moveEndToEndOfPreviousInline","moveEndToEndOfPreviousText","moveEndToEndOfText","moveEndToStartOfBlock","moveEndToStartOfDocument","moveEndToStartOfNode","moveEndToStartOfInline","moveEndToStartOfNextBlock","moveEndToStartOfNextInline","moveEndToStartOfNextText","_len11","_key11","moveEndToStartOfPreviousBlock","moveEndToStartOfPreviousInline","moveEndToStartOfPreviousText","moveEndToStartOfText","_len12","_key12","_len13","_key13","_len14","_key14","moveFocusToEndOfBlock","moveFocusToEndOfDocument","moveFocusToEndOfNode","moveToFocus","moveFocusToEndOfInline","moveFocusToEndOfNextBlock","moveFocusToEndOfNextInline","moveFocusToEndOfNextText","_len15","_key15","moveFocusToEndOfPreviousBlock","moveFocusToEndOfPreviousInline","moveFocusToEndOfPreviousText","moveFocusToEndOfText","moveFocusToStartOfBlock","moveFocusToStartOfDocument","moveFocusToStartOfNode","moveFocusToStartOfInline","moveFocusToStartOfNextBlock","moveFocusToStartOfNextInline","moveFocusToStartOfNextText","_len16","_key16","moveFocusToStartOfPreviousBlock","moveFocusToStartOfPreviousInline","moveFocusToStartOfPreviousText","moveFocusToStartOfText","_change$moveAnchorFor","_len17","_key17","_len18","_key18","moveStartForward","_len19","_key19","moveStartTo","_len20","_key20","moveStartToEndOfBlock","moveStartToEndOfDocument","moveStartToEndOfNode","moveStartToEndOfInline","moveStartToEndOfNextBlock","moveStartToEndOfNextInline","moveStartToEndOfNextText","_len21","_key21","moveStartToEndOfPreviousBlock","moveStartToEndOfPreviousInline","moveStartToEndOfPreviousText","moveStartToEndOfText","moveStartToStartOfBlock","moveStartToStartOfDocument","moveStartToStartOfNode","moveStartToStartOfInline","moveStartToStartOfNextBlock","moveStartToStartOfNextInline","moveStartToStartOfNextText","_len22","_key22","moveStartToStartOfPreviousBlock","moveStartToStartOfPreviousInline","moveStartToStartOfPreviousText","moveStartToStartOfText","_len23","_key23","moveToEndOfBlock","moveToEndOfDocument","moveToEndOfInline","moveToEndOfNextBlock","moveToEndOfNextInline","moveToEndOfNextText","_len24","_key24","moveToEndOfPreviousBlock","moveToEndOfPreviousInline","moveToEndOfPreviousText","moveToEndOfText","moveToRangeOfDocument","_len25","_key25","moveToStartOfBlock","moveToStartOfDocument","moveToStartOfInline","moveToStartOfNextBlock","moveToStartOfNextInline","moveToStartOfNextText","_len26","_key26","moveToStartOfPreviousBlock","moveToStartOfPreviousInline","moveToStartOfPreviousText","moveToStartOfText","_options$snapshot","snapshot","setProperties","resolveSelection","setAnchor","_len27","_key27","setEnd","_len28","_key28","_len29","_key29","setStart","_len30","_key30","withoutMerging","DEFAULTS$10","History","prevBatch","prevOperation","shouldMerge","batch","_batch","isHistory","_object$redos","_object$undos","createOperationsList","DEFAULTS$11","plugins","Stack$1","Stack$$1","plugin","getPluginsWith","_attrs$plugins","SlateError","_Error","debug$1","CORE_RULES","DEFAULTS$12","rules","Schema","testRules","failure","validateRules","getNodeRules","validateNode","rule","defaultNormalize","isAtomic","isSchema","_plugin$schema","_schema$blocks","_schema$inlines","_schema$marks","_options$every","_error","validateObject","validateType","validateData","_ret","validateMarks","validateText","validateFirst","validateLast","defs","nextDef","validateParent","validatePrevious","validateNext","validateNodes","DEFAULTS$13","Value","Change","insertNode","mapRanges","updatePoints","clearAtomicRanges","newDocument","mergeNode","resolvePath","withPath","one","two","moveNode","unset","removeText","rangeOffset","_range3","setNode","setMark","resolveDecoration","_value12","splitNode","_range4","_value14","createSelection","decs","createDecoration","_value15","preserveData","preserveDecorations","preserveHistory","preserveSelection","preserveSchema","getPreviousBlock","getNextInline","getPreviousInline","getMarksAtRange","getFragmentAtRange","isValue","_object$decorations","_object$document","_object$selection","_object$schema","_object$history","Changes$5","Changes$6","debug$2","Operation","_op2","_op3","_path","_op4","_path2","_offset","_path3","_op6","_path4","_op7","_path5","_offset2","_mark","_path6","_op9","_path7","_offset3","_op10","_path8","_offset4","_length2","_mark2","_op11","_path9","_properties2","setSelection","_properties3","_op14","_path10","_properties4","debug$3","invertOperation","inversePath","inverseNewPath","pathLast","newPathLast","_inversePath","_inversePath2","_op5","inverseNode","inverseProperties","inverseMark","_inverseProperties","inverseSelection","inverseProps","_op8","inverseValue","_inverseProperties2","OPERATION_ATTRIBUTES","add_mark","insert_node","insert_text","merge_node","move_node","remove_mark","remove_node","remove_text","set_mark","set_node","set_selection","set_value","split_node","DEFAULTS$14","ATTRIBUTES","_v","_v2","_v3","_v4","_v5","isOperation","debug$4","tmp","dirty","save","_tmp","newDirtyPaths","table","getKeysToPathsTable","_parentPath","nextPath","_parentPath2","previousPath","_parentPath3","newParentPath","getDirtyPaths","memo","transformed","normalizeDirtyPaths","normalizeNodeByPath","Interface","Classes","Class","create$2","TYPE","is$$1","ObjectInterface","ModelInterface","NodeInterface","validate","getFirstInvalidNode","descendant","normalizeNode","getText","ElementInterface","replaceNode","resolvePoint","forEachDescendant","getMarksAtPosition","_endText","getActiveMarksBetweenOffsets","startMarks","endMarks","ancestors","getBlocksAsArray","isLeafBlock","getBlocksAtRangeAsArray","getBlocksByTypeAsArray","allDecorations","startAt","deep","targetPath","targetPosition","getInlinesAsArray","isLeafInline","getInlinesAtRangeAsArray","_this4","getTextsAtRangeAsArray","getInlinesByTypeAsArray","currentMarks","closestBlock","getOrderedMarksAtRange","getMarksByTypeAsArray","getNextNode","hasChild","getOrderedMarksBetweenPositions","getMarksBetweenOffsets","getTextsBetweenPositionsAsArray","getPreviousNode","isSelected","dir","_range8","_range9","getChild","_this5","_this6","mergeText","_PathUtils$crop","_PathUtils$crop2","_child$splitText","_child$splitText2","befores","afters","_loop$1","_iteratorNormalCompletion$1","_didIteratorError$1","_iteratorError$1","_step$1","_iterator$1","RangeInterface","setPoints","Operations","_assign","IS_WRAP","C","virtual","integrations_ui_url","integrations_rest_url","bug_report_endpoint_url","SdkConfig","mxReactSdkConfig","cfg","defaultKeys","liveConfig","newConfig","put","__g","_from","_from2","USE_SYMBOL","unhomoglyph","encodeParams","params","encodeURIComponent","substring","encodeUri","pathTemplate","results","findElement","removeElement","isFunction","checkObjectHasKeys","checkObjectHasNoAdditionalKeys","allowedKeys","deepCompare","y","isNaN","extend","propName","runPolyfills","fun","res","O","A","kValue","mappedValue","superCtor","Temp","Properties","super_","isNumber","removeHiddenChars","removeHiddenCharsRegex","escapeRegExp","globToRegexp","glob","extended","pat","ensureNoTrailingSlash","endsWith","_isIterable3","isObjectObject","prot","toInteger","anObject","IE8_DOM_DEFINE","toPrimitive","dP","Attributes","createDesc","ReflectOwnKeys","Reflect","ReflectApply","ownKeys","NumberIsNaN","EventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","$getMaxListeners","that","_addListener","listener","prepend","events","newListener","warned","w","emitter","onceWrapper","fired","removeListener","wrapFn","_onceWrap","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","copy","getMaxListeners","doError","er","listeners","addListener","on","prependListener","once","prependOnceListener","originalListener","spliceOne","off","removeAllListeners","rawListeners","eventNames","logger","getLogger","setLevel","levels","DEBUG","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","defined","punycode","Url","protocol","slashes","auth","port","hostname","search","query","pathname","href","urlParse","relative","resolveObject","format","isString","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","querystring","parseQueryString","slashesDenoteHost","queryIndex","splitter","uSplit","trim","simplePath","lowerProto","atSign","hostEnd","hec","decodeURIComponent","parseHost","ipv6Hostname","hostparts","part","newpart","validParts","notHost","toASCII","ae","esc","escape","qm","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","isNullOrUndefined","authInHost","isNull","hasTrailingSlash","up","isAbsolute","IObject","RoomPermalinkCreator","_entries2","makeGenericPermalink","entityId","getPermalinkConstructor","forEntity","makeUserPermalink","forUser","makeRoomPermalink","forRoom","room","_MatrixClientPeg2","getRoom","permalinkCreator","makeGroupPermalink","groupId","forGroup","isPermalinkHost","_SpecPermalinkConstructor2","tryTransformPermalinkToLocalHref","permalink","matrixLinkify","VECTOR_URL_PATTERN","permalinkParts","parsePermalink","roomIdOrAlias","eventIdPart","eventId","getPrimaryPermalinkEntity","_RiotPermalinkConstructor2","entityInfo","_isIp2","_SpecPermalinkConstructor","_room","_highestPlUserId","_populationMap","_bannedHostsRegexps","_allowedHostsRegexps","_serverCandidates","_started","onMembership","onRoomState","currentState","_updateAllowedServers","_updateHighestPlUser","_updatePopulationMap","_updateServerCandidates","forEvent","getType","evt","member","oldMembership","membership","serverName","getServerName","hasJoined","plEvent","getStateEvents","content","getContent","users","maxEntry","getMember","isHostnameIpAddress","isHostInRegex","_maxEntry","powerLevel","bannedHostsRegexps","allowedHostsRegexps","aclEvent","getRegex","deny","allowed","allow","populationMap","getJoinedMembers","candidates","remainingServers","riotPrefix","fullUrl","getHostnameFromMatrixDomain","URL","regexps","getDocument","doc","needsIEFallback","parentWindow","execScript","win","_parentWindow","defaultView","_values2","_PlatformPeg2","hashRegex","hashVarRegex","getRedactedUrl","_window$location","getRedactedHash","customVariables","expl","example","whitelistRedact","whitelist","Analytics","_paq","firstPage","piwik","siteId","platform","_setVisitVariable","getHumanReadableName","getAppVersion","getElementsByTagName","parentNode","insertBefore","generationTimeMs","category","whitelistedHSUrls","whitelistedISUrls","rows","Piwik","Tracker","getAsyncTracker","getCustomVariable","exampleValue","resolution","screen","width","otherVariables","CurrentPageURL","userAgent","ErrorDialog","createTrackedDialog","description","row","mxAnalytics","PlatformPeg","plaf","mxPlatformPeg","_symbol2","isOnlyCtrlOrCmdKeyEvent","ev","metaKey","altKey","ctrlKey","shiftKey","isOnlyCtrlOrCmdIgnoreShiftKeyEvent","BACKSPACE","TAB","ESCAPE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","DELETE","KEY_A","KEY_B","KEY_C","KEY_D","KEY_E","KEY_F","KEY_G","KEY_H","KEY_I","KEY_J","KEY_K","KEY_L","KEY_M","KEY_N","KEY_O","KEY_P","KEY_Q","KEY_R","KEY_S","KEY_T","KEY_U","KEY_V","KEY_W","KEY_X","KEY_Y","KEY_Z","KEY_BACKTICK","Key","End","BACKTICK","K","unicodeToShortcode","emptyVariation","VARIATION_SELECTOR","_compact2","unicode","shortcodes","shortcodeToUnicode","shortcode","processHtmlForSending","html","contentDiv","innerHTML","contentHTML","tagName","temp","cloneNode","sanitizedHtmlNode","insaneHtml","saneHtml","_sanitizeHtml2","sanitizeHtmlParams","dangerouslySetInnerHTML","__html","isUrlPermitted","inputUrl","_url2","PERMITTED_URL_SCHEMES","bodyToHtml","highlights","isHtmlMessage","formatted_body","bodyHasEmoji","sanitizeParams","forComposerQuote","composerSanitizeHtmlParams","strippedBody","safeBody","isDisplayedWithHtml","highlighter","HtmlHighlighter","highlightLink","safeHighlights","highlight","textFilter","safeText","applyHighlights","formattedBody","stripReplyFallback","_ReplyThread2","stripHTMLReply","stripPlainReply","SURROGATE_PAIR_PATTERN","SYMBOL_PATTERN","returnString","emojiBody","disableBigEmoji","contentBodyTrimmed","WHITESPACE_REGEX","ZWJ_REGEX","BIGEMOJI_REGEX","_classnames2","linkifyString","linkifyElement","_linkifyMatrix2","_element2","linkifyAndSanitizeHtml","dirtyHtml","checkBlockNode","nodeName","linkify","_string2","_emojibaseRegex2","_Permalinks","COLOR_REGEX","fromCharCode","transformTags","attribs","mxcUrlToHttp","class","cl","style","customCSSMapper","customAttributeKey","cssAttributeKey","customAttributeValue","allowedTags","allowedAttributes","font","span","img","ol","selfClosing","allowedSchemes","allowProtocolRelative","BaseHighlighter","highlightClass","safeSnippet","lastOffset","safeHighlight","subSnippet","_applySubHighlights","_processSnippet","_BaseHighlighter","snippet","encodeURI","_BaseHighlighter2","TextHighlighter","_utils","INITIAL_STATE","joining","joinError","initialEventId","isInitialEventHighlighted","roomAlias","roomLoading","roomLoadError","forwardingEvent","quotingEvent","RoomViewStore","_Store","_state","newState","__emitChange","_viewRoom","_setState","_viewRoomError","_joinRoom","_joinRoomError","getRoomId","room_id","replyingToEvent","RoomSettingsDialog","room_alias","event_id","highlighted","shouldPeek","should_peek","isEditingSettings","auto_join","initialEventPixelOffset","getRoomIdForAlias","oob_data","joinRoom","errcode","Store","singletonRoomViewStore","$at","iterated","aFunction","$keys","enumBugKeys","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","noop","browser","argv","binding","cwd","chdir","umask","fails","KEY","_defineProperty3","_promise2","limitConcurrency","ongoingRequestCount","LIMIT","backlogQueue","checkBacklog","finish","_x","_events2","_groups","_FlairStore2","parseMembersResponse","apiMember","groupMemberFromApiObject","parseRoomsResponse","apiRoom","groupRoomFromApiObject","GroupStore","_EventEmitter","_this$_fetchResourceP","_this$_resourceFetche","STATE_KEY","GroupMembers","GroupInvitedMembers","Summary","GroupRooms","_ready","_fetchResourcePromise","_resourceFetcher","getGroupSummary","getGroupRooms","getGroupUsers","getGroupInvitedUsers","stateKey","clientPromise","_notifyListeners","httpStatus","finally","_fetchResource","unregister","unregisterListener","user","is_publicised","is_privileged","isPublic","addRoomToGroup","updateGroupRoomVisibility","removeRoomFromGroup","inviteUserToGroup","acceptGroupInvite","joinGroup","leaveGroup","categoryId","addRoomToGroupSummary","roleId","addUserToGroupSummary","removeRoomFromGroupSummary","removeUserFromGroupSummary","isPublished","setGroupPublicity","invalidatePublicisedGroups","singletonGroupStore","closest","distance","patch","absolute","negate","point1","point2","otherValue","sqrt","pow","points","_lodash","VALIDATION_THROTTLE_MS","Field","_React$PureComponent","onFocus","focused","validateOnChange","onBlur","debounce","valid","feedback","_ref3","_ref2$allowEmpty","allowEmpty","onValidate","feedbackVisible","_props","postfix","tooltipContent","flagInvalid","tooltipClassName","inputProps","inputElement","placeholder","fieldInput","prefixContainer","postfixContainer","hasValidationFlag","fieldClasses","mx_Field_labelAlwaysTopLeft","mx_Field_valid","mx_Field_invalid","Tooltip","fieldTooltip","addlClassName","visible","htmlFor","PureComponent","oneOf","SRC","$toString","TPL","inspectSource","safe","quot","createHTML","attribute","NAME","simpleIsEqual","lastThis","lastArgs","lastResult","calledOnce","isNewArgEqualToLast","newArg","newArgs","resultFn","pIE","toIObject","gOPD","IE_PROTO","ObjectProto","px","random","TAG","stat","Iterators","TO_STRING_TAG","DOMIterables","_WidgetEchoStore2","_ActiveWidgetStore2","_IntegrationManagers","WidgetUtils","client","me","getMyMembership","maySendStateEvent","testUrlString","testUrl","scalarUrls","integrations_widgets_urls","defaultManager","IntegrationManagers","sharedInstance","getPrimaryManager","apiUrl","scalarUrl","widgetId","eventInIntendedState","getAccountData","timerId","onAccountData","eventsInIntendedState","evList","widgetPresent","onRoomStateEvents","widgetType","widgetUrl","widgetName","widgetData","userWidgets","getUserWidgets","addingWidget","getUserId","state_key","setAccountData","waitForUserWidget","setRoomWidgetEcho","sendStateEvent","waitForRoomWidget","removeRoomWidgetEcho","appsStateEvents","getUserWidgetsArray","widget","widgets","uiUrl","setUserWidget","_ref4","appId","app","myUserId","getUser","avatarUrl","waitForIframeLoad","creatorUserId","appType","capWhitelist","isUserWidget","widgetLocation","userWidget","_IntegrationManagerInstance","_WidgetUtils2","KIND_PREFERENCE","KIND_ACCOUNT","KIND_HOMESERVER","KIND_CONFIG","_managers","_wellknownRefreshTimerId","_compileManagers","_instance","stopWatching","_client","_onAccountData","setInterval","_setupHomeserverManagers","clearInterval","_setupConfiguredManager","_setupAccountManagers","IntegrationManagerInstance","_primaryManager","homeserverDomain","discoveryResponse","managers","hsManager","getHomeserverName","AutoDiscovery","getRawClientConfig","getIntegrationManagerWidgets","manager","localeCompare","hasManager","getOrderedManagers","IntegrationsManager","configured","integrationId","TabbedIntegrationManagerDialog","removeIntegrationManagerWidgets","addIntegrationManagerWidget","_x4","_callee3","domainName","wkConfig","_context3","fetch","_x5","mxIntegrationManagers","dPs","Empty","createDict","iframeDocument","iframe","display","contentWindow","open","lt","shared","_isFinite2","_logger2","EventStatus","NOT_SENT","ENCRYPTING","SENDING","QUEUED","SENT","CANCELLED","interns","intern","MatrixEvent","forwardLooking","_pushActions","_replacingEvent","_localRedactionEvent","_clearEvent","_senderCurve25519Key","_claimedEd25519Key","_forwardingCurve25519KeyChain","_decryptionPromise","_retryDecryption","getId","getSender","user_id","getWireType","getTs","origin_server_ts","getDate","getOriginalContent","getWireContent","getPrevContent","getUnsigned","prev_content","getDirectionalContent","getAge","age","getStateKey","isState","makeEncrypted","crypto_type","crypto_content","senderCurve25519Key","claimedEd25519Key","isBeingDecrypted","isDecryptionFailure","msgtype","attemptDecryption","crypto","isEncrypted","_decryptionLoop","cancelAndResendKeyRequest","wireContent","requestRoomKey","algorithm","session_id","sender_key","getKeyRequestRecipients","recipients","device_id","_badEncryptedMessage","decryptEvent","detailedString","_setClearData","setPushActions","_x2","clearEvent","decryptionResult","forwardingCurve25519KeyChain","getClearContent","getSenderKey","getKeysClaimed","ed25519","getClaimedEd25519Key","getForwardingCurve25519KeyChain","unsigned","unmarkLocallyRedacted","redacted_because","markLocallyRedacted","redactionEvent","makeRedacted","redaction_event","_REDACT_KEEP_KEY_MAP","keeps","_REDACT_KEEP_CONTENT_MAP","isRedacted","isRedaction","getPushActions","pushActions","handleRemoteEcho","oldUnsigned","oldId","setStatus","isSending","replaceLocalEventId","isRelation","relType","relation","rel_type","getRelation","makeReplaced","newEvent","getAssociatedStatus","getServerAggregatedRelation","relations","replacingEventId","replaceRelation","replacingEvent","replacingEventDate","ts","localRedactionEvent","getAssociatedId","redacts","hasAssocation","updateAssociatedId","flagCancelled","cancelled","decrypted","encrypted","freeGlobal","freeSelf","ValidatedServerConfig","_TypeUtils","LIVELINESS_DISCOVERY_ERRORS","ERROR_INVALID_HOMESERVER","ERROR_INVALID_IDENTITY_SERVER","AutoDiscoveryUtils","pageName","isLivelinessError","sub","isFatalError","errorMessage","serverIsAlive","serverErrorIsFatal","serverDeadError","identityUrl","wellknownConfig","syntaxOnly","base_url","fromDiscoveryConfig","buildValidatedConfigFromDiscovery","_x3","findClientConfig","_x6","_x7","discoveryResult","hsResult","isResult","defaultConfig","preferredIdentityUrl","SUCCESS","PROMPT","ALL_ERRORS","preferredHomeserverUrl","preferredHomeserverName","makeType","hsUrl","hsName","hsNameIsDifferent","isUrl","isDefault","formatDate","date","showTwelveHour","now","days","getDaysArray","months","getMonthsArray","toDateString","formatTime","weekDayName","getDay","time","getFullYear","monthName","getMonth","day","formatFullDate","formatFullDateNoTime","fullYear","formatFullTime","wantsDateSeparator","prevEventDate","nextEventDate","MILLIS_IN_DAY","pad","twelveHourTime","showSeconds","hours","getHours","minutes","getMinutes","ampm","getSeconds","toLength","asc","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","callbackfn","copyright","XHR","XMLHttpRequest","options_onResponse","onResponse","verbose","formatted","uri","unsupported_options","headers","DEFAULT_TIMEOUT","accept","serialize","form","encoding","multi","boundry","multipart","authorization","o1","o2","o3","h1","h2","h3","h4","bits","b64","ac","enc","tmp_arr","b64_enc","username","password","xhr","timed_out","is_cors","ajaxLocation","rurl","ajaxLocParts","is_crossDomain","supports_cors","req_seq","seq_id","_id","cors_err","cors","timeoutTimer","duration","did","onreadystatechange","readyState","OPENED","setRequestHeader","HEADERS_RECEIVED","on_response","LOADING","on_loading","responseText","on_end","withCredentials","send","statusCode","loading","run_xhr","defaults","requester","de","post","shortcut","couch","resp","_startCallApp","haveScalar","scalarClient","currentRoomWidgets","_ErrorDialog3","_ErrorDialog4","widgetSessionId","confId","getScalarClient","connect","hasCredentials","show","getRoomWidgets","roomHasPendingWidgetsOfType","integrations_jitsi_widget_url","setRoomWidget","_ErrorDialog5","_matrixJsSdk2","_cryptodevices","mxCalls","calls","ConferenceHandler","audioPromises","play","audioId","audio","pause","_setCallListeners","QuestionDialog","button","confirmed","showUnknownDeviceDialogForCalls","direction","answer","_reAttemptCall","getTurnServers","cli","cancelButton","setFallbackICEServerAllowed","_showICEFallbackPrompt","_setCallState","oldState","hangupParty","hangupReason","call_state","mxCallHandler","register","getAnyActiveCall","supportsVoip","_ErrorDialog","members","_ErrorDialog2","newCall","placeVoiceCall","placeVideoCall","remote_element","local_element","screenCapErrorString","screenCaptureErrorString","placeScreenSharingCall","placeCall","createNewMatrixCall","_call","hangup","callHandler","getCallForRoom","getCall","getConferenceCallForRoom","roomsWithCalls","setConferenceHandler","confHandler","getConferenceHandler","_uniq3","DMRoomMap","roomToUser","_hasSentOutPatchDirectAccountDataPatch","mDirectEvent","userToRooms","_populateRoomToUser","selfRoomIds","guessedUserIdsThatChanged","guessDMUserId","ids","roomIds","_getUserToRooms","getDMInviter","selfDMs","neededPatching","_patchUpSelfDMs","_sharedInstance","formatCount","toFixed","formatCryptoKey","getUserNameColorClass","formatCommaSeparatedList","items","itemLimit","lastItem","LIBRARY","$typed","$buffer","anInstance","propertyDesc","redefineAll","toIndex","toAbsoluteIndex","classof","isArrayIter","gOPN","getIterFn","wks","createArrayMethod","createArrayIncludes","speciesConstructor","ArrayIterators","$iterDetect","setSpecies","arrayFill","arrayCopyWithin","$DP","$GOPD","Uint8Array","ArrayProto","$ArrayBuffer","ArrayBuffer","$DataView","DataView","arrayForEach","arrayFilter","arraySome","arrayEvery","arrayFind","arrayFindIndex","arrayIncludes","arrayIndexOf","arrayValues","arrayKeys","arrayEntries","arrayLastIndexOf","arrayReduce","arrayReduceRight","arrayJoin","arraySort","arraySlice","arrayToString","arrayToLocaleString","toLocaleString","ITERATOR","TYPED_CONSTRUCTOR","DEF_CONSTRUCTOR","ALL_CONSTRUCTORS","CONSTR","TYPED_ARRAY","TYPED","VIEW","$map","allocate","LITTLE_ENDIAN","Uint16Array","buffer","FORCED_SET","toOffset","BYTES","speciesFromList","fromList","addGetter","$from","aLen","mapfn","iterFn","$of","TO_LOCALE_BUG","$toLocaleString","copyWithin","fill","searchElement","comparefn","subarray","$begin","byteOffset","BYTES_PER_ELEMENT","$slice","$set","arrayLike","$iterators","isTAIndex","$getDesc","$setDesc","$TypedArrayPrototype$","wrapper","CLAMPED","GETTER","SETTER","TypedArray","Base","TAC","FORCED","ABV","TypedArrayPrototype","addElement","round","setter","$offset","$length","byteLength","klass","$len","$nativeIterator","CORRECT_ITER_NAME","$iterator","getOrCreateMetadataMap","targetKey","targetMetadata","keyMetadata","MetadataKey","metadataMap","MetadataValue","$iterCreate","setToStringTag","BUGGY","returnThis","IS_SET","IteratorPrototype","getMethod","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","cof","ARG","tryGet","callee","_getOwnPropertyDescriptor2","_TextForEvent2","_Avatar2","Notifier","notifsByRoom","pendingEncryptedEventIds","notificationMessageForEvent","textForEvent","_displayPopupNotification","supportsNotifications","maySendNotifications","hasFocus","isBodyEnabled","avatarUrlForMember","notif","displayNotification","getSoundForRoom","_playAudioNotification","sound","selector","audioElement","querySelector","Audio","boundOnEvent","onEvent","boundOnSyncStateChange","onSyncStateChange","boundOnRoomReceipt","onRoomReceipt","boundOnEventDecrypted","onEventDecrypted","toolbarHidden","isSyncing","boundOnRoomTimeline","supportsDesktopNotifications","setEnabled","enable","isLevelSupported","isEnabled","requestNotificationPermission","setToolbarHidden","isPossible","isAudioEnabled","hidden","persistent","setItem","shouldShowToolbar","_isToolbarHidden","getItem","_evaluateEvent","getUnreadNotificationCount","clearNotification","actions","getPushActionsForEvent","notify","tweaks","loudNotification","mxNotifier","_setImmediate3","createMenu","ElementClass","hasBackground","closeMenu","menu","ContextualMenu","elementClass","windowResize","_Accessibility","ContextualMenuContainerId","_React$Component","_onKeyDown","contextMenuRect","onContextMenu","collectContextMenuRect","focusCapturedRef","getBoundingClientRect","clientX","clientY","clickEvent","initMouseEvent","elementFromPoint","chevronFace","top","bottom","chevronOffset","hasChevron","adjusted","clientHeight","chevron","menuClasses","menuStyle","menuWidth","menuHeight","menuPaddingTop","menuPaddingLeft","menuPaddingBottom","menuPaddingRight","wrapperStyle","zIndex","onResize","_console","formatArgs","useColors","namespace","humanize","diff","lastC","namespaces","storage","removeItem","__nwjs","WebkitAppearance","firebug","exception","$1","localstorage","colors","formatters","META","setDesc","FREEZE","preventExtensions","setMeta","meta","NEED","fastKey","getWeak","onFreeze","UNSCOPABLES","getIteratorMethod","webpackPolyfill","deprecate","argIndex","framesToPop","_groupSupport","FlairStore","_matrixClient","_userGroups","_groupProfiles","_groupProfilesPromise","_usersPending","_usersInFlight","_debounceTimeoutID","_batchedGetPublicGroups","updatedUserGroups","getPublicisedGroups","profile","getGroupProfile","avatar_url","shortDescription","short_description","refreshGroupProfile","getGroupProfileCached","singletonFlairStore","getDisplayAliasForRoom","getCanonicalAlias","getAliases","getOnlyOtherMember","isConfCallRoom","conferenceHandler","isConfCallRoomCache","otherMember","isConferenceUser","_isConfCallRoom","looksLikeDirectMessageRoom","myMembership","isKicked","tagNames","getJoinedMemberCount","getInvitedMemberCount","guessAndSetDMRoom","isDirect","newTarget","guessedUserId","oldestTs","oldestUser","getMembers","_user","guessDMRoomTargetId","setDMRoom","dmRoomMap","thisUserId","_roomList","indexOfRoom","roomList","_getArea","_getArea2","pageYOffset","pageXOffset","innerWidth","innerHeight","storeKey","droppableIdKey","dimensionMarshalKey","styleContextKey","canLiftContextKey","hiddenKeys","DESCRIPTORS","SPECIES","forbiddenField","BREAK","RETURN","wksExt","$Symbol","base64","ieee754","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","encodingOrOffset","allocUnsafe","fromArrayLike","fromArrayBuffer","isEncoding","actual","fromString","isBuffer","checked","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","indexSize","arrLength","valLength","read","buf","readUInt16BE","foundIndex","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","typedArraySupport","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","pos","swap16","swap32","swap64","thisStart","thisEnd","thisCopy","targetCopy","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","_freeze2","RoomState","EventTimeline","eventTimelineSet","_eventTimelineSet","_baseIndex","_startState","paginationToken","_endState","_prevTimeline","_nextTimeline","_paginationRequests","toISOString","FORWARDS","initialiseState","stateEvents","setStateEvents","forkLive","forkState","getState","timeline","clone","fork","getFilter","getTimelineSet","getBaseIndex","getEvents","getPaginationToken","token","getNeighbouringTimeline","setNeighbouringTimeline","neighbour","addEvent","atStart","stateContext","timelineSet","getUnfilteredTimelineSet","setEventMetadata","insertIndex","toStartOfTimeline","getSentinelMember","removeEvent","UserAddressType","addressTypes","getAddressType","isEmailAddress","emailRegex","isUserId","mxUserIdRegex","isRoomId","mxRoomIdRegex","_propTypes","shape","addressType","address","avatarMxc","isKnown","baseIsNative","_DMRoomMap2","resizeMethod","getAvatarUrl","getHomeserverUrl","devicePixelRatio","defaultAvatarUrlForString","avatarUrlForUser","ContentRepo","getHttpUriForMxc","images","total","getInitialLetter","initial","chars","second","avatarUrlForRoom","explicitRoomAvatar","otherUserId","getUserIdForRoomId","getAvatarFallbackMember","Tinter","keyRgb","keyHex","currentTint","cssFixups","cssAttrs","svgAttrs","tintables","theme","forceTint","tintable","primaryColor","secondaryColor","tertiaryColor","whiteColor","blackColor","getComputedStyle","calcCssFixups","tint","tintSvgWhite","tintSvgBlack","styleSheets","ss","cssRules","selectorText","attr","cssFixup","svgs","fixups","svgDoc","contentDocument","getAttribute","svgFixup","singletonTinter","_Terms","IdentityAuthClient","authEnabled","tempClient","createClient","_ref2$check","_readToken","registerForToken","_writeToken","_checkToken","TermsNotSignedError","getIdentityAccount","startTermsFlow","Service","SERVICE_TYPES","IS","getIdentityServerUrl","hsOpenIdToken","_ref5","identityAccessToken","getOpenIdToken","registerWithIdentityServer","access_token","Timer","_timeout","_onTimeout","_setNotStarted","_timerHandle","_startTs","elapsed","isSmallerTimeout","isRunning","MENTION_BADGE_STATES","BADGE_STATES","MUTE","MENTIONS_ONLY","ALL_MESSAGES","ALL_MESSAGES_LOUD","shouldShowNotifBadge","shouldShowMentionBadge","countRoomsWithNotif","rooms","roomNotifState","getRoomNotifsState","notifBadges","mentionBadges","isInvite","hasMembershipState","aggregateNotificationCount","notificationCount","getRoomHasBadge","setRoomNotifsState","roomRule","getRoomPushRule","deletePushRule","rule_id","addPushRule","conditions","pattern","setRoomNotifsStateMuted","overrideMuteRule","findOverrideMuteRule","setPushRuleEnabled","set_tweak","setRoomNotifsStateUnmuted","oldRoomId","oldRoom","_pushprocessor2","isMuteRule","actionListToActionsObject","pushRules","override","isRuleForRoom","cond","UploadCanceledError","_construct2","loadImageElement","imageFile","objectUrl","imgPromise","parsePromise","hidpi","createObjectURL","revokeObjectURL","readFileAsArrayBuffer","arrayBuffer","chunks","_pngChunksExtract2","PHYS_HIDPI","_extend2","_RoomViewStore2","_browserEncryptAttachment2","MAX_WIDTH","MAX_HEIGHT","_extendableBuiltin2","cls","ExtendableBuiltin","_extendableBuiltin","createThumbnail","inputWidth","inputHeight","mimeType","targetWidth","targetHeight","canvas","getContext","drawImage","toBlob","thumbnail","thumbnail_info","mimetype","infoForVideoFile","videoFile","videoInfo","video","reader","FileReader","onloadeddata","readAsDataURL","loadVideoElement","videoWidth","videoHeight","uploadFile","thumbnail_url","thumbnail_file","file","readAsArrayBuffer","progressHandler","isRoomEncrypted","canceled","uploadPromise","encryptInfo","encryptAttachment","encryptResult","blob","Blob","uploadContent","includeFilename","abort","cancelUpload","basePromise","promise1","ContentMessages","inprogress","nextId","_mediaConfig","getMediaConfig","sendStickerMessage","files","tooBigFiles","okFiles","UploadFailureDialog","uploadFailureDialogPromise","UploadConfirmDialog","uploadAll","getQuotingEvent","hasCancelButton","shouldUpload","_ensureMediaConfigFetched","_isFileSizeAcceptable","badFiles","totalFiles","contentMessages","shouldContinue","currentIndex","shouldUploadAll","_sendContentToRoom","delegateYield","thumbnailType","imageInfo","infoForImageFile","upload","loaded","onProgress","sendMessage","http_status","inprogressKeys","mx_ContentMessages","_ToggleSwitch2","LabelledToggleSwitch","firstPart","secondPart","toggleInFront","AutocompleteProvider","commandRegex","forcedCommandRegex","force","shouldForceComplete","command","completions","PillCompletion","TextualCompletion","subtitle","_React$Component2","_props2","initialComponent","spaces","space","ltrim","rtrim","exporter","ALIAS","FORCE","RULEKINDS_IN_ORDER","DEFAULT_OVERRIDE_RULES","PushProcessor","cachedGlobToRegex","matchingRuleFromKindSet","kindset","device","ruleKindIndex","ruleset","ruleIndex","rawrule","templateRuleToRaw","ruleMatchesEvent","tprule","eventFulfillsCondition","condition_functions","eventFulfillsEventMatchCondition","eventFulfillsDeviceCondition","eventFulfillsDisplayNameCondition","eventFulfillsRoomMemberCountCondition","eventFulfillsSenderNotifPermCondition","notifLevelKey","mayTriggerNotifOfType","memberCount","ineq","rhs","valueForDottedKey","regex","createCachedRegex","thispart","pushActionsForEventAndRulesets","rulesets","allDevNames","devname","devrules","matchingRule","matchingRuleForEventWithRulesets","actionObj","actionsForEvent","clientRuleset","globalOverrides","ruleId","applyRuleDefaults","getPushRuleById","scope","actionlist","actionobj","rewriteDefaultRules","incomingRules","newRules","defaultRule","SettingsHandler","getRawTag","objectToString","nullTag","undefinedTag","symToStringTag","ActiveWidgetStore","_persistentWidgetId","_capsByWidgetId","_widgetMessagingByWidgetId","_roomIdByWidgetId","dispatcherRef","destroyPersistentWidget","toDeleteId","setWidgetPersistence","delWidgetMessaging","delWidgetCapabilities","delRoomId","caps","cap","wm","singletonActiveWidgetStore","getScrollbarWidth","alternativeOverflow","overflow","msOverflowStyle","scrollbarWidth","offsetWidth","clientWidth","removeChild","installed","installBodyClassesIfNeeded","innerText","install","AutoHideScrollbar","onOverflow","onUnderflow","_collectContainerRef","_needsOverflowListener","containerRef","scrollHeight","checkOverflow","wrappedRef","scrollTop","onScroll","onWheel","_DateUtils","ReplyThread","onRoomRedaction","unmounted","forceUpdate","loadedEv","onQuoteClick","canCollapse","collapse","parentEv","initialize","onHeightChanged","getEvent","getParentEventId","loadNextEvent","inReplyToEventId","findEventById","getEventTimeline","header","Pill","TYPE_USER_MENTION","shouldShowPillAvatar","EventTile","DateSeparator","evTiles","dateSep","mxEvent","tileShape","isTwelveHour","mRelatesTo","mInReplyTo","_ev$getContent","evLink","userLink","mxid","_lines","instanceOf","contextTypes","MatrixClient","_ratelimitedfunc2","_GroupAddressPicker","_GroupStore2","RightPanel","phase","_getPhaseFromProps","isUserPrivilegedInGroup","onAction","onRoomStateMember","onGroupStoreUpdated","onInviteToGroupButtonClick","onAddRoomToGroupButtonClick","_delayedUpdate","Phase","GroupMemberList","RoomMemberInfo","RoomMemberList","_initGroupStore","_unregisterGroupStore","newProps","registerListener","isUserPrivileged","showGroupInviteDialog","showGroupAddRoomDialog","groupRoomId","MemberList","MemberInfo","ThirdPartyMemberInfo","NotificationPanel","FilePanel","GroupMemberInfo","GroupRoomList","GroupRoomInfo","panel","Room3pidMemberInfo","groupMember","resizeNotifier","collapsed","throttledFn","throttle","leading","trailing","_bind","boundFn","cancelPendingCall","center","_memoizeOne2","droppable","draggables","draggable","droppableId","_getDisplacementMap2","_isPartiallyVisible2","destination","previousImpact","viewport","movement","displaced","isVisible","page","withMargin","shouldAnimate","draggableId","isContentActionable","eventStatus","canEditContent","canEditOwnEvent","findEditableEvent","fromEventId","getPendingEvents","maxIdx","inc","beginIdx","endIdx","MAX_JUMP_DISTANCE","foundFromEventId","_shouldHideEvent2","extraButtons","danger","getDefaultProps","onOk","primaryButtonClass","contentId","isKey","stringToPath","isSymbol","INFINITY","encode","decode","decodeHTML","ENTITY","OPENTAG","CLOSETAG","reHtmlTag","reBackslashOrAmp","ESCAPABLE","reEntityOrEscapedChar","reXmlSpecial","reXmlSpecialOrEntity","unescapeChar","replaceUnsafeChar","unescapeString","normalizeURI","escapeXml","preserve_entities","basePick","pick","flatRest","ignoreCase","multiline","sticky","D","TO_STRING","IS_INCLUDES","el","fromIndex","hadRuntime","regeneratorRuntime","oldRuntime","Op","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","inModule","runtime","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","getProto","NativeIteratorPrototype","Gp","GeneratorFunctionPrototype","Generator","GeneratorFunction","isGeneratorFunction","genFun","awrap","__await","defineIteratorMethods","AsyncIterator","innerFn","outerFn","tryLocsList","skipTempReset","_sent","delegate","tryEntries","resetTryEntry","rootRecord","completion","rval","dispatchException","loc","tryLoc","hasCatch","hasFinally","catchLoc","finallyLoc","finallyEntry","complete","afterLoc","thrown","resultName","nextLoc","protoGenerator","_invoke","doneResult","delegateResult","maybeInvokeDelegate","makeInvokeMethod","previousPromise","callInvokeWithMethodAndArg","unwrapped","pushTryEntry","locs","iteratorMethod","Timeout","clearFn","_clearFn","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","clearImmediate","registerImmediate","channel","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","MessageChannel","port1","port2","addEventListener","attachEvent","task","addToUnscopables","_k","Arguments","_localStorageCryptoStore2","_memoryCryptoStore2","IndexedDBCryptoStoreBackend","_errors","IndexedDBHelpers","dbName","_indexedDB","_dbName","_backendPromise","req","VERSION","onupgradeneeded","db","oldVersion","upgradeDatabase","onblocked","onsuccess","Backend","backend","doTxn","STORE_INBOUND_GROUP_SESSIONS","txn","getEndToEndInboundGroupSession","InvalidCryptoStoreError","TOO_NEW","deleteDatabase","_connect","getOrAddOutgoingRoomKeyRequest","requestBody","getOutgoingRoomKeyRequest","wantedStates","getOutgoingRoomKeyRequestByState","getOutgoingRoomKeyRequestsByTarget","requestId","expectedState","updates","updateOutgoingRoomKeyRequest","deleteOutgoingRoomKeyRequest","getAccount","newData","storeAccount","countEndToEndSessions","deviceKey","sessionId","getEndToEndSession","getEndToEndSessions","getAllEndToEndSessions","sessionInfo","storeEndToEndSession","getAllEndToEndInboundGroupSessions","sessionData","addEndToEndInboundGroupSession","storeEndToEndInboundGroupSession","deviceData","storeEndToEndDeviceData","getEndToEndDeviceData","roomInfo","storeEndToEndRoom","getEndToEndRooms","getSessionsNeedingBackup","countSessionsNeedingBackup","sessions","unmarkSessionsNeedingBackup","markSessionsNeedingBackup","stores","STORE_ACCOUNT","STORE_SESSIONS","STORE_DEVICE_DATA","STORE_ROOMS","STORE_BACKUP","_verifyKeyAndStartSession","olmDevice","oneTimeKey","deviceInfo","sid","_context4","_verifySignature","getFingerprint","createOutboundSession","getIdentityKey","_x12","_x13","_x14","_x15","anotherjson","utils","OLM_ALGORITHM","MEGOLM_ALGORITHM","MEGOLM_BACKUP_ALGORITHM","encryptMessageForDevice","resultsObject","ourUserId","ourDeviceId","recipientUserId","recipientDevice","payloadFields","getSessionIdForDevice","sender_device","deviceEd25519Key","recipient","recipient_keys","encryptMessage","ensureOlmSessionsForDevices","baseApis","devicesByUser","devicesWithoutSession","resolveSession","devices","oneTimeKeyAlgorithm","otk_res","_loop2","_userId","_sessionsInProgress","_resolve2","claimOneTimeKeys","t3","t4","one_time_keys","userRes","_loop3","deviceRes","keyId","t5","t6","verifySignature","signingUserId","signingDeviceId","signingKey","signKeyId","signature","signatures","_x16","_x17","_x18","_x19","_x20","MatrixCall","webRtc","turnServers","isFallbackICEServerAllowed","urls","FALLBACK_ICE_SERVER","server","callId","didConnect","candidateSendQueue","candidateSendTries","mediaPromises","screenSharingStream","_answerContent","CALL_TIMEOUT_MS","ERR_LOCAL_OFFER_FAILED","ERR_NO_USER_MEDIA","ERR_UNKNOWN_DEVICES","ERR_SEND_INVITE","ERR_SEND_ANSWER","debuglog","checkForErrorListener","_placeCallWithConstraints","_getUserMediaVideoContraints","remoteVideoElement","localVideoElement","_tryPlayRemoteStream","screenConstraints","_getScreenSharingConstraints","getUserMedia","stream","audioConstraints","callError","playElement","queueId","pauseElement","assignElement","srcObject","getLocalVideoElement","getRemoteVideoElement","getRemoteAudioElement","remoteAudioElement","setLocalVideoElement","localAVStream","autoplay","muted","vel","setRemoteVideoElement","setRemoteAudioElement","_tryPlayRemoteAudioStream","_initWithInvite","peerConn","_createPeerConnection","setRemoteDescription","RtcSessionDescription","offer","hookCallback","_onSetRemoteDescriptionSuccess","_onSetRemoteDescriptionError","sdp","stopAllMedia","signalingState","lifetime","_initWithHangup","_sendAnswer","waitForLocalAVStream","_maybeGotUserMediaForAnswer","_replacedBy","successor","suppressEvent","terminate","call_id","sendEvent","setLocalVideoMuted","setTracksEnabled","getVideoTracks","isLocalVideoMuted","isTracksEnabled","setMicrophoneMuted","getAudioTracks","isMicrophoneMuted","_maybeGotUserMediaForInvite","constraints","MediaStream","videoEl","addTrack","addStream","_getUserMediaFailed","createOffer","_gotLocalOffer","_getLocalOfferFailed","_sendCandidateQueue","cancelPendingEvent","localVidEl","createAnswer","setLocalDescription","localDescription","_gotLocalIceCandidate","candidate","sdpMid","sdpMLineIndex","sendCandidate","_gotRemoteIceCandidate","cand","addIceCandidate","RtcIceCandidate","_receivedAnswer","_onIceConnectionStateChanged","iceConnectionState","_onSignallingStateChanged","_onAddStream","remoteAVStream","remoteAStream","forAllTracksOnStream","onstarted","_onRemoteStreamTrackStarted","oninactive","_onRemoteStreamEnded","onended","_onRemoteStreamStarted","_onHangupReceived","_onAnsweredElsewhere","tracks","eventType","shouldEmit","player","isOpenWebRTC","audioOutput","setSinkId","ael","cands","delayMs","callList","pc","RtcPeerConnection","iceTransportPolicy","iceServers","oniceconnectionstatechange","onsignalingstatechange","onicecandidate","onaddstream","mediaSource","mandatory","chromeMediaSource","chromeMediaSourceId","maxWidth","maxHeight","minFrameRate","maxFrameRate","callType","isWebkit","webkitGetUserMedia","audioInput","ideal","videoInput","exact","forAllVideoTracksOnStream","forAllAudioTracksOnStream","setAudioOutput","setAudioInput","setVideoInput","scripts","mozGetUserMedia","RTCPeerConnection","webkitRTCPeerConnection","mozRTCPeerConnection","RTCSessionDescription","webkitRTCSessionDescription","mozRTCSessionDescription","RTCIceCandidate","webkitRTCIceCandidate","mozRTCIceCandidate","vendor","optionsForceTURN","_forceTURN","GroupRoomType","GroupMemberType","apiObject","displayname","isPrivileged","canonical_alias","canonicalAlias","topic","numJoinedMembers","num_joined_members","worldReadable","world_readable","guestCanJoin","guest_can_join","is_public","_set2","services","termsPromises","terms","policiesAndServicePairs","currentAcceptedTerms","agreedUrlSet","unagreedPoliciesAndServicePairs","service","policies","unagreedPolicies","_step4$value","policyName","policy","policyAgreed","lang","numAcceptedBeforeAgreement","newlyAgreedUrls","newAcceptedTerms","agreePromises","interactionCallback","dialogTermsInteractionCallback","getTerms","serviceType","accepted","t2","policiesAndService","urlsForService","agreeToTerms","_2","agreedUrls","extraClassNames","TermsDialog","loadSession","enableGuest","guestHsUrl","guestIsUrl","fragmentQueryParams","defaultDeviceDisplayName","guest_user_id","guest_access_token","_doSetLoggedIn","_restoreFromLocalStorage","ignoreGuest","_registerAsGuest","AbortLoginAndRebuildStorage","_handleLoadSessionFailure","_getLocalStorageSessi2","getLocalStorageSessionVars","clearStorage","softLogout","isSoftLogout","_clearStorage","checkConsistency","dataInLocalStorage","cryptoInited","dataInCryptoStore","_showStorageEvictedDialog","setLoggedIn","_persistCredentialsToLocalStorage","cachedPassword","replaceUsingCreds","startMatrixClient","_callee4","startSyncing","_Notifier2","_UserActivity2","_TypingStore2","_Presence2","makeShared","startWatching","getStoredSessionOwner","_getLocalStorageSessi","getStoredSessionIsGuest","sessVars","attemptTokenLogin","queryParams","loginToken","homeserver","_Login","sendLoginRequest","initial_device_display_name","handleInvalidStoreError","InvalidStoreError","TOGGLED_LAZY_LOADING","LazyLoadingResyncDialog","LazyLoadingDisabledDialog","deleteAllData","reload","stopMatrixClient","hydrateSession","oldUserId","oldDeviceId","_isLoggingOut","overwrite","logout","onLoggedOut","isLoggingOut","registerGuest","SessionRestoreErrorDialog","StorageEvictedDialog","clearStores","unsetClient","stopClient","Directive","Comment","Script","Style","Tag","CDATA","Doctype","isTag","getArg","aArgs","aName","aDefaultValue","urlRegexp","dataUrlRegexp","aUrl","scheme","urlGenerate","aParsedUrl","aPath","aRoot","aPathUrl","aRootUrl","supportsNullProto","identity","isProtoString","strcmp","aStr1","aStr2","toSetString","aStr","fromSetString","compareByOriginalPositions","mappingA","mappingB","onlyCompareOriginal","cmp","originalLine","originalColumn","generatedColumn","generatedLine","compareByGeneratedPositionsDeflated","onlyCompareGenerated","compareByGeneratedPositionsInflated","parseSourceMapInput","computeSourceURL","sourceRoot","sourceURL","sourceMapURL","Container","MapStore","Mixin","ReduceStore","eventDiff","isMemberEvent","prevContent","isMembershipChanged","isJoin","isPart","isJoinToJoin","isDisplaynameChange","isAvatarChange","memberEventDiff","LARGE_ARRAY_SIZE","CORE_ERROR_TEXT","FUNC_ERROR_TEXT","HASH_UNDEFINED","MAX_MEMOIZE_SIZE","PLACEHOLDER","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","WRAP_BIND_FLAG","WRAP_BIND_KEY_FLAG","WRAP_CURRY_BOUND_FLAG","WRAP_CURRY_FLAG","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","WRAP_FLIP_FLAG","DEFAULT_TRUNC_LENGTH","DEFAULT_TRUNC_OMISSION","HOT_COUNT","HOT_SPAN","LAZY_FILTER_FLAG","LAZY_MAP_FLAG","MAX_INTEGER","NAN","MAX_ARRAY_LENGTH","MAX_ARRAY_INDEX","HALF_MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","asyncTag","boolTag","dateTag","domExcTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","proxyTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","weakSetTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrim","reTrimStart","reTrimEnd","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","reOptMod","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","parseFloat","freeParseInt","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","types","require","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","isDate","nodeIsMap","nodeIsRegExp","isRegExp","nodeIsSet","nodeIsTypedArray","isTypedArray","arrayAggregator","iteratee","accumulator","arrayEach","arrayEachRight","resIndex","baseIndexOf","arrayIncludesWith","arrayMap","arrayPush","initAccum","asciiSize","baseProperty","baseFindKey","eachFunc","baseFindIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","baseTimes","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","mapToArray","overArg","replaceHolders","setToArray","setToPairs","stringSize","unicodeSize","stringToArray","unicodeToArray","asciiToArray","unescapeHtmlChar","runInContext","arrayProto","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","nativeObjectToString","objectCtorString","oldDash","reIsNative","getPrototype","objectCreate","spreadableSymbol","isConcatSpreadable","symIterator","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","nativeCreate","metaMap","realNames","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","ListCache","MapCache","SetCache","__data__","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","number","lower","upper","baseClone","bitmask","customizer","isDeep","isFlat","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","Ctor","cloneArrayBuffer","dataView","cloneDataView","cloneTypedArray","cloneRegExp","symbol","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","isCommon","valuesLength","outer","computed","valuesIndex","templateSettings","getMapData","pairs","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","baseFilter","baseFlatten","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","baseGt","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","maxLength","seen","baseInvoke","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","convert","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","baseIteratee","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","getMatchData","matchesStrictComparable","isStrictComparable","baseMerge","mergeFunc","safeGet","isTyped","isArrayLikeObject","isPlainObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","comparer","baseSortBy","objCriteria","criteria","othCriteria","ordersLength","compareAscending","order","compareMultiple","basePickBy","baseSet","basePullAll","basePullAt","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","seenIndex","baseUpdate","baseWhile","isDrop","baseWrapperValue","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","castRest","castSlice","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","createCaseFirst","createCompounder","words","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","funcs","prereq","thru","getFuncName","funcName","getData","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","oldArray","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","createOver","arrayFunc","createPadding","charsLength","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","setData","setWrapToString","createRound","precision","pair","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrValue","otherFunc","stubArray","hasPath","hasFunc","isLength","ctorString","isMaskable","stubFalse","otherArgs","shortOut","reference","details","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","rand","memoizeCapped","quote","subString","difference","differenceBy","differenceWith","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","unionBy","unionWith","unzip","group","unzipWith","without","xor","xorBy","xorWith","interceptor","wrapperAt","forEachRight","invokeMap","keyBy","partition","bindKey","maxWait","lastCallTime","lastInvokeTime","maxing","invokeFunc","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","flush","resolver","memoized","Cache","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","gte","isInteger","lte","iteratorToArray","remainder","isBinary","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","invertBy","omit","pickBy","toPairs","toPairsIn","camelCase","word","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","bindAll","methodNames","flow","flowRight","methodOf","over","overEvery","overSome","basePropertyDeep","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplier","multiplicand","minuend","subtrahend","castArray","compact","conforms","baseConforms","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","baseFill","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","fromPairs","functions","functionsIn","mapValues","matchesProperty","nthArg","omitBy","orderBy","propertyOf","pullAllBy","pullAllWith","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","takeRight","takeRightWhile","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","updateWith","valuesIn","zipObject","zipObjectDeep","entriesIn","extendWith","clamp","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isElement","isEqualWith","isMatch","isMatchWith","isNative","isNil","isSafeInteger","isUndefined","isWeakMap","isWeakSet","strictLastIndexOf","mean","meanBy","stubObject","stubString","stubTrue","nth","strLength","padEnd","padStart","radix","floating","repeat","sample","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sumBy","template","settings","isEscaping","isEvaluating","imports","importsKeys","importsValues","reDelimiters","evaluate","escapeValue","interpolateValue","esTemplateValue","evaluateValue","toLower","toSafeInteger","toUpper","trimEnd","trimStart","truncate","omission","newEnd","unescape","uniqueId","eachRight","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","isRight","view","getView","iterLength","takeCount","iterIndex","commit","getCorners","addPosition","_extends2","spacing1","spacing2","spacing","_position","sourceEdge","destinationEdge","destinationAxis","getCorner","area","crossAxisStart","corner","centerDiff","signed","crossLine","messageForResourceLimitError","messageForSyncError","limitError","limit_type","admin_contact","adminContact","limitType","strings","extraTranslations","errString","iec","jedec","fullform","filesize","full","fullforms","unix","spacer","standard","symbols","num","suffixes","exponent","opt","Avatar","sdk","dispatcher","fallbackUserId","viewUserOnClick","_getState","componentWillReceiveProps","nextProps","imageUrl","BaseAvatar","otherProps","idName","AddThreepid","clientSecret","generateClientSecret","submitUrl","emailAddress","requestAdd3pidEmailToken","authClient","doesServerSupportSeparateAddAndBind","requestEmailToken","addEmailAddress","phoneCountry","phoneNumber","requestAdd3pidMsisdnToken","submit_url","requestMsisdnToken","addMsisdn","identityServerDomain","bindThreePid","client_secret","id_server","id_access_token","addThreePidOnly","addThreePid","msisdnToken","submitMsisdnTokenOtherUrl","submitMsisdnToken","t7","t8","t9","t10","t11","t12","t13","t14","_map2","_at3","_flatMap3","_sortBy3","stripDiacritics","QueryMatcher","objects","_options","_funcs","setObjects","shouldMatchWordsOnly","shouldMatchPrefix","_items","keyValues","resultKey","sortedResults","isWarning","isVerified","e2eIconClasses","mx_E2EIcon","mx_E2EIcon_warning","mx_E2EIcon_verified","e2eTitle","isUser","icon","_AccessibleButton2","MATCH","SAFE_CLOSING","riter","skipClosing","builtinExec","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","re","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","fns","nativeMethod","arg2","forceStringMethod","strfn","rxfn","forOf","inheritIfRequired","common","IS_WEAK","ADDER","fixMethod","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","getConstructor","setStrong","Typed","TypedArrayConstructors","__defineSetter__","COLLECTION","mapFn","nextItem","windowNames","getWindowNames","propIsEnumerable","test1","test2","test3","letter","shouldUseNative","definition","undefinedType","logMethods","bindMethod","replaceLoggingMethods","loggerName","methodFactory","enableLoggingWhenConsoleArrives","defaultMethodFactory","realMethod","Logger","defaultLevel","currentLevel","storageKey","getPersistedLevel","storedLevel","cookie","getLevel","persist","SILENT","levelNum","levelName","persistLevelIfPossible","setDefaultLevel","enableAll","TRACE","disableAll","initialLevel","defaultLogger","_loggersByName","_log","getLoggers","User","presence","presenceStatusMsg","_unstable_statusMessage","rawDisplayName","lastActiveAgo","lastPresenceTs","currentlyActive","_updateModifiedTime","setPresenceEvent","firstFire","eventsToFire","currently_active","status_msg","last_active_ago","setDisplayName","oldName","setRawDisplayName","setAvatarUrl","oldUrl","_modified","getLastModifiedTime","getLastActiveTs","_unstable_updateStatusMessage","SyncAccumulator","maxTimelineEntries","accountData","inviteRooms","joinRooms","nextBatch","invite","leave","syncResponse","_accumulateRooms","_accumulateGroups","_accumulateAccountData","next_batch","account_data","_accumulateRoom","_accumulateInviteState","_accumulateJoinState","invite_state","currentData","hasAdded","_currentState","_timeline","_accountData","_unreadNotifications","_summary","_readReceipts","unread_notifications","summary","acc","ephemeral","limited","prev_batch","_accumulateGroup","cat","roomData","roomJson","evType","receiptEvent","receiptData","msgData","rollBackState","timelineEvent","prevStateEvent","prev_sender","accData","roomsData","groupsData","eventMap","parseContentType","callbacks","PREFIX_R0","PREFIX_UNSTABLE","PREFIX_IDENTITY_V1","PREFIX_IDENTITY_V2","PREFIX_MEDIA_R0","MatrixHttpApi","event_emitter","onlyData","useAuthorizationHeader","uploads","setIdBaseUrl","getContentUri","contentType","rawResponse","onlyContentUri","bodyParser","rawBody","content_uri","requestCallback","timeout_fn","timeout_timer","queryArgs","filename","authedRequest","promise0","getCurrentUploads","idServerRequest","fullUri","_matrix_opts","localTimeoutMs","Authorization","requestPromise","consent_uri","requestOtherUrl","_request","getUrl","extraParams","timeoutId","timedOut","resetTimeout","MatrixError","reqPromise","useQuerystring","handlerFn","onprogress","ex","userDefinedCallback","getResponseHeader","getResponseContentType","jsonBody","parseErrorResponse","errorJson","newInvalidMessageError","newUserMismatchError","newKeyMismatchError","newUnexpectedMessageError","newUnknownMethodError","newUnknownTransactionError","newTimeoutError","newUserCancelledError","newVerificationError","errorFactory","_event","extradata","mxc","allowDirectLinks","serverAndMediaId","fragmentOffset","getIdenticonUri","identiconString","$ident","MatrixClientBackedSettingsHandler","_SettingsHandler","_instances","oldClient","initMatrixClient","SettingController","showStartChatInviteDialog","AddressPickerDialog","validAddressTypes","_onStartDmFinished","showRoomInviteDialog","shouldInvite","addrs","addrTexts","addr","inviteMultipleToRoom","_showAnyInviteErrors","states","inviter","_onRoomInviteFinished","isValid3pidInvite","requiredKeys","_MultiInviter2","_UserAddress","_createRoom2","_isDmChat","getDMRoomsForUserId","dmRoom","dmUserId","failedUsers","fatal","roomName","getErrorText","errorList","MultiInviter","targetId","busy","completionStates","_addrs","errorText","_inviteMore","_canceled","ignoreProfile","addrType","inviteByEmail","getProfileInfo","_inviteToRoom","_doInvite","nextIndex","unknownProfileErrors","unknownProfileUsers","inviteUnknowns","AskInviteAnywayDialog","onInviteAnyways","onGiveUp","_addr","Rooms","spinner","Loader","defaultPreset","createOpts","preset","visibility","invite_3pid","medium","is_direct","andView","initial_state","guest_access","createRoom","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","isKeyable","WidgetEchoStore","_roomWidgetEcho","echoedWidgets","roomEchoState","singletonWidgetEchoStore","Parser","DomHandler","defineProp","Tokenizer","ElementType","DefaultHandler","FeedHandler","parseDOM","dom","parseFeed","feed","createDomStream","elementCb","EVENTS","cdatastart","cdataend","processinginstruction","comment","commentend","closetag","opentag","opentagname","TempCtor","_maxSafeInteger2","_Unread2","CATEGORY_ORDER","LIST_ORDERS","RoomListStore","_getManualComparator","_recentsComparator","byImportance","orderRoomsByImportance","_generateInitialRoomLists","defaultLists","lists","presentationLists","ready","stickyRoomId","monitorSetting","logicallyReady","updateSortingAlgorithm","tagsEnabled","prevState","isFeatureEnabled","_roomUpdateTriggered","isLiveEvent","isLiveUnfilteredRoomTimelineEvent","_eventTriggersRecentReorder","getTimelineForEvent","event_type","currentStickyId","_setRoomCategory","ignoreSticky","_calculateCategory","_filterTags","existingEntries","lastTimestampFn","targetCategoryIndex","desiredCategoryBoundaryIndex","foundBoundary","pushedEntry","entryCategoryIndex","changedBoundary","listsClone","timestampCache","lastTimestamp","_tsOfNewestEvent","targetTags","_getRecommendedTagsForRoom","insertedIntoTags","_slotRoomIntoList","upToIndex","expectedCount","targetTag","_iteratorNormalCompletion7","_didIteratorError7","_iteratorError7","_step7","_iterator7","getRooms","latestEventTsCache","listKey","entryA","entryB","eventTriggersUnreadCount","unread","doesRoomHaveUnreadMessages","tsOfNewestEventFn","roomA","roomB","categoryA","categoryB","idxA","idxB","timestampA","optimisticRequest","metaA","metaB","metaData","_lexicographicalComparator","singletonRoomListStore","multiInviter","_onGroupInviteFinished","addRoomsPublicly","checkboxContainer","extraNode","pickerType","mayClientSendStateEvent","relatedGroupsEvent","_onGroupAddRoomFinished","ResizeHandle","vertical","_dragDropContext","_droppable","_draggable","noImpact","noMovement","isBeyondStartPosition","getDroppableDimension","scrollDroppable","clip","getDraggableDimension","noSpacing","_axis","_spacing","addSpacing","_ref$margin","margin","_ref$windowScroll","windowScroll","withScroll","withoutMargin","frame","subject","newScroll","scrollDiff","frameScroll","scrollDisplacement","displacedSubject","displacement","clipped","frameClient","_ref2$frameScroll","_ref2$direction","_ref2$margin","_ref2$padding","padding","_ref2$windowScroll","_ref2$isEnabled","withWindowScroll","axis","horizontal","withMarginAndPadding","RoomNotifs","orderedTags","orderedTagsAccountData","hasSynced","joinedGroupIds","selectedTags","anchorTag","TagOrderStore","relatedGroupIds","getGroupIdsForRoomId","_updateBadges","tagOrderingEvent","tagOrderingEventContent","removedTagsAccountData","removedTags","_updateOrderedTags","event_content","_storeId","getStoreId","hasFetchedJoinedGroups","newTags","ctrlOrCmdKey","groupIds","changedBadges","badge","newBadges","badges","_mergeGroupsAndTags","tagsToKeep","groupIdsToAdd","singletonTagOrderStore","getKeyValueArrayDiffs","beforeKey","afterKey","muxedKey","afterVal","place","beforeVal","itemDelta","shallowEqual","objA","objB","keysA","keysB","EMAIL_ADDRESS_REGEX","looksValid","email","ruleValid","_ref3$allowEmpty","abbreviateUrl","parsedUrl","unabbreviateUrl","longUrl","_url","ToggleSwitch","_toggle","_onClick","CommandMap","CommandCategories","processCommandInput","cmd","aliases","runFn","_HtmlUtils","_QuestionDialog2","_colour","_UrlUtils","_IdentityServerUtils","singleMxcUpload","fileSelector","onchange","click","Command","_ref2$args","_ref2$category","_ref2$hideCompletionA","hideCompletionAfterSpace","getCommand","getCommandWithArgs","shrug","sendTextMessage","messages","plain","ddg","upgraderoom","getVersion","newVersion","upgradeRoom","getUsage","admin","nick","myroomnick","roomavatar","myroomavatar","myavatar","setRoomTopic","topicEvents","topicHtml","InfoDialog","roomname","setRoomName","defaultIdentityServerUrl","getDefaultIdentityServerUrl","defaultIdentityServerName","_ref6","useDefault","useDefaultIdentityServer","getCompletionState","isPermalink","viaServers","via_servers","entity","_viaServers","targetRoomId","aliasEvents","_aliases","leaveRoomChain","kick","ban","unban","ignoredUsers","getIgnoredUsers","setIgnoredUsers","unignore","powerLevelEvent","setPowerLevel","deop","devtools","DevtoolsDialog","advanced","addwidget","canUserModifyWidgets","nowMs","verify","fingerprint","getStoredDevice","fprint","setDeviceVerified","discardsession","forceDiscardSession","rainbow","sendHtmlMessage","textToHtmlRainbow","rainbowme","sendHtmlEmote","help","SlashCommandHelpDialog","newballsplease","goto","roomnick","_Tinter2","TintableSvg","statics","mounts","idSequence","componentDidMount","applySvgFixups","onLoad","calcSvgFixups","registerTintable","_filesize2","_DecryptFile","tintedDownloadImageURL","nextMountId","svg","DOMParser","parseFromString","svgString","XMLSerializer","serializeToString","btoa","remoteRender","imgSrc","download","fontFamily","createTextNode","textContent","remoteSetTint","imgStyle","computedStyle","cssText","getPropertyValue","decryptedBlob","appConfig","presentableTextForFile","linkText","_getContentUrl","componentDidUpdate","prevProps","refs","downloadImage","dummyLink","contentUrl","fileSize","fileType","decrypting","decryptFile","renderer_url","cross_origin_renderer_url","downloadProps","fileTooBig","blobUrl","tempAnchor","responseData","decryptAttachment","dataArray","ALLOWED_BLOB_MIMETYPES","encodeActions","decodeActions","serializeNode","_options$delimiter2","delimiter","isBlockList","deserialize","_options$defaultBlock","defaultBlock","_options$defaultMarks","defaultMarks","_options$delimiter","_options$toJSON","IS_MAC","MODIFIERS","alt","control","ALIASES","break","ctl","ctrl","del","down","ins","mod","option","spacebar","windows","CODES","backspace","tab","enter","capslock","pageup","pagedown","home","arrowleft","arrowup","arrowright","arrowdown","numlock","scrolllock","'","isHotkey","hotkey","parseHotkey","compareHotkey","byKey","optional","toKeyName","modifier","which","toKeyCode","expected","isCodeHotkey","isKeyHotkey","ConsoleLogger","logs","consoleObj","consoleFunctionsToLevels","fnName","originalFn","keepLogs","logsToFlush","IndexedDBLogStore","flushPromise","flushAgainPromise","logObjStore","createObjectStore","createIndex","unique","_generateLogEntry","_generateLastModifiedTime","transaction","objStore","objectStore","oncomplete","errorCode","fetchLogs","fetchLogIds","deleteLogs","allLogIds","removeLogIds","openKeyCursor","IDBKeyRange","only","cursor","primaryKey","continue","keyRange","resultMapper","openCursor","mx_rage_initPromise","mx_rage_logger","monkeyPatch","mx_rage_store","cleanup","consume","getLogsForReport","buggy","sign","$expm1","expm1","searchString","$defineProperty","endPos","re1","re2","regexpFlags","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","NPCG_INCLUDED","reCopy","cel","setTask","clearTask","Dispatch","counter","macrotask","Observer","WebKitMutationObserver","characterData","PromiseCapability","$$resolve","$$reject","PROTOTYPE","WRONG_INDEX","BaseBuffer","LN2","$BUFFER","$LENGTH","$OFFSET","packIEEE754","mLen","nBytes","eLen","eMax","eBias","rt","unpackIEEE754","nBits","unpackI32","packI8","packI16","packI32","packF64","packF32","isLittleEndian","intIndex","_b","pack","conversion","ArrayBufferProto","$setInt8","setInt8","getInt8","setUint8","bufferLength","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","createProperty","$JSON","$fails","wksDefine","enumKeys","_create","gOPNExt","$GOPS","_stringify","HIDDEN","TO_PRIMITIVE","isEnum","SymbolRegistry","AllSymbols","OPSymbols","USE_NATIVE","QObject","findChild","setSymbolDesc","protoDesc","sym","$defineProperties","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","es6Symbols","wellKnownSymbols","keyFor","useSetter","useSimple","FAILS_ON_PRIMITIVES","replacer","$replacer","gOPS","$Object","ContentHelpers","MatrixInMemoryStore","IndexedDBStore","IndexedDBStoreBackend","Room","Group","EventTimelineSet","RoomMember","MatrixScheduler","WebStorageSessionStore","CRYPTO_ENABLED","Filter","TimelineWindow","InteractiveAuth","MemoryCryptoStore","setMatrixCallAudioOutput","setMatrixCallAudioInput","setMatrixCallVideoInput","getRequest","wrapRequest","origRequest","cryptoStoreFactory","fac","scheduler","cryptoStore","REPLACE_RE","replace_fn","_syncAccumulator2","selectQuery","txnAsPromise","reqAsEventPromise","reqAsPromise","reqAsCursorPromise","_ref7","LocalIndexedDBStoreBackend","indexedDBInterface","_disconnected","_syncAccumulator","_isNewlyCreated","createDatabase","upgradeSchemaV2","upgradeSchemaV3","onversionchange","isNewlyCreated","_loadAccountData","_loadSyncData","syncData","accumulate","getOutOfBandMembers","roomIndex","membershipEvents","oobWritten","oob_written","setOutOfBandMembers","tx","markerObject","clearOutOfBandMembers","readTx","roomRange","minStateKeyProm","maxStateKeyProm","minStateKey","maxStateKey","writeTx","writeStore","membersKeyRange","bound","clearDatabase","getSavedSync","getJSON","getNextBatchToken","setSyncData","syncToDatabase","userTuples","_persistUserPresenceEvents","_persistAccountData","_persistSyncData","try","clobber","_this7","tuples","_this8","tuple","getUserPresenceEvents","_this9","_this10","_this11","getClientOptions","_this12","storeClientOptions","_outgoingRoomKeyRequests","_account","_sessions","_inboundGroupSessions","_deviceData","_rooms","_sessionsNeedingBackup","_getOutgoingRoomKeyRequest","deviceSessions","_iteratorNormalCompletion8","_didIteratorError8","_iteratorError8","_step8","_iterator8","_iteratorNormalCompletion9","_didIteratorError9","_iteratorError9","_step9","_iterator9","senderKey","session","_iteratorNormalCompletion10","_didIteratorError10","_iteratorError10","_step10","_iterator10","sessionKey","_iteratorNormalCompletion11","_didIteratorError11","_iteratorError11","_step11","_iterator11","_defaultVerificationM","_uploadOneTimeKeys","_callee6","oneTimeKeys","oneTimeJson","_context6","_olmDevice","getOneTimeKeys","curve25519","_signObject","_baseApis","uploadKeysRequest","_deviceId","markKeysAsPublished","isCryptoAvailable","Olm","Crypto","_randomstring","_OutgoingRoomKeyRequestManager2","_indexeddbCryptoStore2","_QRCode","_SAS2","OlmDevice","olmlib","algorithms","DeviceInfo","DeviceVerification","DeviceList","defaultVerificationMethods","ScanQRCode","ShowQRCode","QR_CODE_SCAN","QR_CODE_SHOW","_ref8","_ref9","_ref12","_ref13","_ref14","_ref17","_ref18","_ref19","_ref20","_ref21","_ref22","_ref24","_ref26","_ref27","_ref28","sessionStore","clientStore","_sessionStore","_clientStore","_cryptoStore","_verificationMethods","backupInfo","backupKey","_checkedForBackup","_sendingBackups","_deviceList","_lastOneTimeKeyCheck","_oneTimeKeyCheckInProgress","_roomEncryptors","_roomDecryptors","_supportedAlgorithms","DECRYPTION_CLASSES","_deviceKeys","_globalBlacklistUnverifiedDevices","_outgoingRoomKeyRequestManager","_receivedRoomKeyRequests","_receivedRoomKeyRequestCancellations","_processingRoomKeyRequests","_lazyLoadMembers","_roomDeviceTrackingState","_lastNewSessionForced","_verificationTransactions","_maybeUploadOneTimeKeys","maxKeysPerCycle","maxOneTimeKeys","maxNumberOfOneTimeKeys","keyLimit","_oneTimeKeyCount","one_time_key_counts","signed_curve25519","keyCount","uploadLoop","keysThisLoop","generateOneTimeKeys","myDevices","deviceCurve25519Key","getRawStoredDevicesForUser","verified","VERIFIED","known","storeDevicesForUser","saveIfDirty","_checkAndStartKeyBackup","trustInfo","getKeyBackupVersion","isKeyBackupTrusted","usable","enableKeyBackup","disableKeyBackup","setTrustedBackupPubKey","trustedPubKey","setLocalTrustedBackupPubKey","checkKeyBackup","returnInfo","_callee5","trustedPubkey","mySigs","keyIdParts","sigInfo","_context5","trusted_locally","sigs","auth_data","public_key","getLocalTrustedBackupPubKey","enableLazyLoading","registerEventHandlers","eventEmitter","_onRoomMembership","_onToDeviceEvent","getOlmVersion","getDeviceEd25519Key","setGlobalBlacklistUnverifiedDevices","getGlobalBlacklistUnverifiedDevices","uploadDeviceKeys","deviceKeys","device_keys","updateOneTimeKeyCount","currentCount","downloadKeys","userIds","forceDownload","getStoredDevicesForUser","saveDeviceList","setDeviceVerification","blocked","dev","verificationStatus","UNVERIFIED","BLOCKED","knownStatus","fromStorage","requestVerification","transactionId","randomString","transaction_id","from_device","timestamp","msgMap","sendToDevice","beginKeyVerification","verifier","getOlmSessionsForUser","_callee7","_context7","getSessionInfoForDevice","deviceIdKey","getEventSenderDeviceInfo","getDeviceByIdentityKey","claimedKey","alg","setRoomEncryption","_callee8","inhibitDeviceQuery","existingConfig","storeConfigPromise","AlgClass","_context8","getRoomEncryption","ENCRYPTION_CLASSES","trackRoomDevices","refreshOutdatedDeviceLists","_ref10","trackMembers","_callee9","_context9","getEncryptionTargetMembers","startTrackingDeviceList","ensureOlmSessionsForUsers","exportRoomKeys","_callee10","exportedSessions","_context10","sess","exportInboundGroupSession","first_known_index","importRoomKeys","_getRoomDecryptor","importRoomKey","scheduleKeyBackupSend","_callee11","numFailures","maxDelay","_context11","_backupPendingKeys","_callee12","firstKnownIndex","forwardedCount","_context12","encrypt","forwarding_curve25519_key_chain","first_message_index","forwarded_count","is_verified","session_data","sendKeyBackup","backupGroupSession","_callee13","keysClaimed","exportFormat","_context13","_x21","_x22","scheduleAllGroupSessionsForBackup","_callee14","_context14","flagAllGroupSessionsForBackup","_callee15","_context15","encryptEvent","_callee16","encryptedContent","_context16","_x23","_x24","handleDeviceListChanges","_callee17","syncDeviceLists","_context17","oldSyncToken","_evalDeviceListChanges","_x25","_x26","resend","sendRoomKeyRequest","cancelRoomKeyRequest","onCryptoEvent","_callee18","_context18","_x28","onSyncWillProcess","stopTrackingAllDeviceLists","_x29","onSyncCompleted","nextSyncToken","setSyncToken","lastKnownSyncToken","catchingUp","_processReceivedRoomKeyRequests","_x30","_callee19","deviceLists","e2eUserIds","_context19","changed","invalidateUserDeviceList","_getTrackedE2eUsers","stopTrackingDeviceList","_x31","_callee20","_context20","_getTrackedE2eRooms","_onRoomKeyEvent","_onRoomKeyRequestEvent","_onKeyVerificationRequest","_onKeyVerificationStart","_onKeyVerificationMessage","_onToDeviceBadEncrypted","onRoomKeyEvent","next_method","devId","handleEvent","_callee21","lastNewSessionForced","requestsToResend","keyReq","_context21","ciphertext","getOutgoingSentRoomKeyRequest","_x32","shouldEncryptForInvitedMembers","onRoomMembership","IncomingRoomKeyRequest","_req","IncomingRoomKeyRequestCancellation","_callee22","requests","cancellations","_context22","_processReceivedRoomKeyRequest","_processReceivedRoomKeyRequestCancellation","_callee23","encryptor","_device","decryptor","_context23","reshareKeyWithDevice","hasKeysForKeyRequest","share","shareKeysWithDevice","_x33","_x34","decryptors","DecryptionError","_callee24","_context24","_x35","requesting_device_id","request_id","escaped","escapes","escapeString","sep","stringifyArray","stringifyObject","UnknownDeviceError","DecryptionAlgorithm","EncryptionAlgorithm","registerAlgorithm","keyRequest","_detailedStringForDecryptionError","_Error2","toStorage","getDisplayName","device_display_name","isBlocked","isUnverified","typing","powerLevelNorm","_isOutOfBand","markOutOfBand","isOutOfBand","setMembershipEvent","roomState","selfUserId","disambiguate","getUserIdsWithDisplayName","calculateDisplayName","setPowerLevelEvent","evContent","maxLevel","users_default","lvl","oldPowerLevel","oldPowerLevelNorm","setTypingEvent","oldTyping","typingList","user_ids","memberEvent","memberContent","inviteSender","allowDefault","rawUrl","getMxcAvatarUrl","httpUrl","FilterComponent","keyNesting","nestedKeys","currentObj","filterId","LAZY_LOADING_MESSAGES_FILTER","lazy_load_members","LAZY_LOADING_SYNC_FILTER","getFilterId","getDefinition","setDefinition","room_filter_json","room_filter_fields","not_rooms","_include_leave","include_leave","_room_filter","_room_timeline_filter","getRoomTimelineFilterComponent","filterRoomTimeline","setTimelineLimit","setIncludeLeaveRooms","includeLeave","fromJson","jsonObj","_relations2","_timelineSupport","_liveTimeline","_unstableClientRelationAggregation","_timelines","_eventIdToTimeline","_relations","setFilter","eventIdToTimeline","replaceEventId","oldEventId","newEventId","existingTimeline","resetLiveTimeline","backPaginationToken","forwardPaginationToken","resetAllTimelines","oldTimeline","newTimeline","addTimeline","addEventsToTimeline","inverseDirection","didUpdate","lastEventWasNew","existingIsLive","timelineIsLive","backwardsIsLive","forwardsIsLive","addEventToTimeline","addLiveEvent","duplicateStrategy","tlEvents","encryptedType","setRelationsTarget","aggregateRelations","liveEvent","localEvent","compareEventOrdering","eventId1","eventId2","timeline1","timeline2","evId","getRelationsForEvent","relationType","relationsForEvent","relationsWithRelType","relationsWithEventType","setTargetEvent","relatesToEventId","relatesToEvent","hexTable","arrayToObject","plainObjects","combine","compacted","compactQueue","decoder","strWithoutPlus","defaultEncoder","$0","allowPrototypes","mergeTarget","targetItem","_CallHandler2","Roles","_RoomInvite","senderDisplayName","senderName","supported","eventContent","stateHandlers","oldAliases","newAliases","addedAliases","removedAliases","addedAddresses","removedAddresses","oldAlias","alias","targetName","threePidContent","third_party_invite","display_name","oldDisplayName","targetDisplayName","history_visibility","userDefault","fromPowerLevel","textualPowerLevel","toPowerLevel","powerLevelDiffText","changes","allow_ip_literals","bannedServers","srv","unbannedServers","allowedServers","unallowedServers","allowban","join_rule","prevGroups","added","newGroups","oldGroups","_event$getPrevContent","prevName","prevType","prevUrl","validateFormat","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","DEFAULT_THEME","enumerateThemes","BUILTIN_THEMES","customThemes","customThemeNames","setTheme","stylesheetName","customTheme","themeName","knownNames","getCustomTheme","is_dark","_step2$value","hexColor","setProperty","setCustomThemeVars","styleElements","switchTheme","cssLoaded","getUnknownDevicesForRoom","roomMembers","unknownDevices","markAllDevicesKnown","setDeviceKnown","showUnknownDeviceDialogForMessages","UnknownDeviceDialog","sendAnywayLabel","sendLabel","onSend","_Resend2","resendUnsentEvents","focusComposer","sendAnyway","cancelUnsentEvents","removeFromQueue","resendEvent","loginType","loginParams","wellknown","login","well_known","Login","fallbackHsUrl","_hsUrl","_isUrl","_fallbackHsUrl","_currentFlowIndex","_flows","_defaultDeviceDisplayName","_createTemporaryClient","loginFlows","flows","flowIndex","flowStep","pass","isEmail","identifier","country","originalLoginError","originalError","fallbackError","getSsoLoginUrl","_Timer2","TypingStore","_typingStates","isTyping","currentTyping","serverTimer","userTimer","restart","setSelfTyping","sendTyping","mxTypingStore","relativeLocation","getConfig","configJson","configJsonFilename","cachebuster","htmlparser","quoteRegexp","srcset","postcss","sanitizeHtml","VALID_HTML_ATTRIBUTE_NAME","_recursing","Frame","tagPosition","updateParentNodeText","parser","htmlParserDefaults","allowedAttributesMap","allowedAttributesGlobMap","nonTextTagsArray","nonTextTags","globRegex","allowedClassesMap","allowedClasses","transformTagsAll","transformTagsMap","transFun","simpleTransform","skipMap","transformMap","skipText","skipTextDepth","onopentag","transformedTag","hasText","passedAllowedAttributesMapCheck","multiple","splitStrArray","allowedSchemesAppliedToAttributes","naughtyHref","allowIframeRelativeUrls","allowedIframeHostnames","evil","clss","filterClasses","filteredAST","extractedAttributes","attributeObject","stringifyStyleAttributes","abstractSyntaxTree","allowedStyles","selectedRule","astRules","allowedDeclarationsList","regularExpression","filterDeclarations","filterCss","escapeHtml","ontext","lastFrame","onclosetag","exclusiveFilter","decodeEntities","allowedSchemesByTag","newTagName","newAttribs","attrib","_default","_Node","Declaration","_cssSyntaxError","_stringifier","raws","_proto","positionBy","column","stringifier","overrides","cloned","cloneBefore","cloneAfter","insertAfter","replaceWith","_nodes","fixed","raw","defaultType","cleanRaws","keepBetween","between","positionInside","builder","normalizeArray","allowAboveRoot","xs","resolvedPath","resolvedAbsolute","trailingSlash","fromParts","toParts","samePartsLength","outputParts","dirname","hasRoot","matchedSlash","basename","extname","startDot","startPart","preDotState","_parser","_input","css","_Container","AtRule","append","_Container$prototype$","_Container$prototype$2","_declaration","_comment","_defineProperties","lastEach","walk","postcssNode","walkDecls","walkRules","walkAtRules","walkComments","_children","_isArray","_i2","_isArray2","_i3","_isArray3","_i4","_isArray4","_i5","exist","_isArray5","_i6","_isArray6","_i7","removeAll","_isArray7","_i8","replaceValues","decl","fast","cleanSource","_isArray8","_i9","_isArray9","_i10","_i11","_container","Rule","comma","_shouldHideEvent","haveTileForEvent","readUpToId","getEventReadUpTo","getHostingLink","campaign","hostingLink","hosting_signup_link","hostingUrl","_qs2","utm_campaign","PermalinkParts","PermalinkConstructor","serverCandidates","TT","scanner","TOKENS","MultiToken","S_START","UNDERSCORE","ROOMALIAS","isLink","S_HASH","jump","POUND","S_HASH_NAME","State","S_HASH_NAME_COLON","S_HASH_NAME_COLON_DOMAIN","S_HASH_NAME_COLON_DOMAIN_DOT","S_ROOMALIAS","S_ROOMALIAS_COLON","S_ROOMALIAS_COLON_NUM","roomnameTokens","DOT","PLUS","NUM","DOMAIN","TLD","LOCALHOST","COLON","USERID","S_AT","AT","S_AT_NAME","S_AT_NAME_COLON","S_AT_NAME_COLON_DOMAIN","S_AT_NAME_COLON_DOMAIN_DOT","S_USERID","S_USERID_COLON","S_USERID_COLON_NUM","usernameTokens","GROUPID","S_PLUS","S_PLUS_NAME","S_PLUS_NAME_COLON","S_PLUS_NAME_COLON_DOMAIN","S_PLUS_NAME_COLON_DOMAIN_DOT","S_GROUPID","S_GROUPID_COLON","S_GROUPID_COLON_NUM","groupIdTokens","onUserClick","onAliasClick","onGroupClick","MATRIXTO_URL_PATTERN","MATRIXTO_MD_LINK_PATTERN","MATRIXTO_BASE_URL","formatHref","linkAttributes","hljs","registerLanguage","tokenize","_class","tokens","filtered","AMPERSAND","CLOSEPAREN","CLOSEANGLEBRACKET","CLOSEBRACKET","CLOSEBRACE","OPENPAREN","OPENANGLEBRACKET","OPENBRACKET","OPENBRACE","WS","SYM","SLASH","MAILTO","PROTOCOL","QUERY","NL","_createTokenClass","TextToken","createTokenClass","inheritsToken","HeaderButton","analytics","mx_RightPanel_headerButton","mx_RightPanel_headerButton_highlight","isHighlighted","arrayOf","HeaderButtons","initialPhase","collapsedRhs","extras","validPhases","setPhase","phases","renderButtons","_ResizeHandle2","_resizer","MainSplit","_setResizeContainerRef","_onResized","notifyRightHandleResized","resizer","Resizer","resizeContainer","FixedDistributor","onResized","setClassNames","rhsSize","forHandleAt","resize","attach","_createResizer","detach","wasExpanded","wasCollapsed","wasPanelSet","wasPanelCleared","bodyView","Children","panelView","_fixed2","_collapse2","_roomsublist2","_resizer2","CollapseDistributor","RoomSubListDistributor","_item2","_sizer2","beforeOffset","resizeHandle","sizer","containerElement","ResizeItem","isReverseResizeHandle","domNode","nextElementSibling","previousElementSibling","forwards","moveNext","isResizeHandle","_copyWith","_advance","getItemSize","getItemOffset","setItemSize","clearItemSize","firstHandle","parentElement","lastHandle","lowerBound","upperBound","_isVisibleThroughFrame","_isVisibleThroughFrame2","isVisibleInDroppable","isVisibleInViewport","defaultEqualityCheck","areArgumentsShallowlyEqual","equalityCheck","defaultMemoize","getDependencies","dependencies","dep","dependencyTypes","createSelectorCreator","memoizeOptions","recomputations","resultFunc","memoizedResultFunc","resetRecomputations","createStructuredSelector","selectors","selectorCreator","createSelector","objectKeys","composition","secondPerFrame","destX","newV","newX","reusedTuple","getNanoSeconds","hrtime","loadTime","performance","hr","vendors","raf","caf","_now","cp","polyfill","requestAnimationFrame","cancelAnimationFrame","currentStyle","currentVelocity","styleValue","_rafSchd2","isDraggingFn","ifDragging","memoizedMove","onMove","move","onMoveForward","onMoveBackward","crossAxisMoveForward","onCrossAxisMoveForward","crossAxisMoveBackward","onCrossAxisMoveBackward","windowScrollMove","onWindowScroll","ownerDocument","arrowLeft","arrowUp","arrowRight","arrowDown","asyncAction","pendingFn","startAnyRegistrationFlow","SAFE_LOCALPART_REGEX","proceed","go_home_on_cancel","go_welcome_on_cancel","TabbedView","Tab","tabLabel","tabIconClass","tabJsx","activeTabIndex","tabs","_getActiveTabIndex","tabIcon","_setActiveTab","labels","_renderTabLabel","_renderTabPanel","_highlight","SyntaxHighlight","_el","highlightBlock","ADVANCED","PREMIUM","FREE","getTypeFromServerConfig","serverConfig","_AutoDiscoveryUtils","logo","ServerTypeSelector","currentTarget","dataset","updateSelectedType","selected","serverTypes","jQuery","$","isWindow","class2type","isArraylike","expando","setId","uuid","removeData","copyIsArray","q","dequeue","elems","box","clientTop","scrollLeft","clientLeft","offsetParent","offsetParentFn","parentOffset","marginTop","marginLeft","borderTopWidth","borderLeftWidth","Velocity","Utilities","timeLast","IE","documentMode","rAFShim","webkitRequestAnimationFrame","mozRequestAnimationFrame","timeDelta","timeCurrent","perf","nowOffset","timing","navigationStart","_slice","_inArray","sanitizeElements","Type","isWrapped","isSVG","SVGElement","isEmptyObject","isJQuery","jquery","DURATION_DEFAULT","EASING_DEFAULT","isMobile","isAndroid","isGingerbread","isChrome","isFirefox","prefixElement","prefixMatches","scrollAnchor","scrollPropertyLeft","scrollPropertyTop","isTicking","delayedElements","CSS","Redirects","Easings","easing","progress","loop","mobileHA","_cacheValues","promiseRejectEmpty","isAnimating","tweensContainer","rootPropertyValueCache","transformCache","hook","mock","major","minor","pauseAll","queueName","currentTime","activeCall","resume","pauseDelayOnElement","resumeAll","resumeDelayOnElement","generateSpringRK4","springAccelerationForState","tension","friction","springEvaluateStateWithDerivative","initialState","dt","derivative","dx","dv","springIntegrateState","dxdt","dvdt","springRK4Factory","have_duration","last_state","initState","time_lapsed","percentComplete","linear","swing","cos","PI","spring","easingArray","generateBezier","RegEx","isHex","valueUnwrap","wrappedValueAlreadyExtracted","valueSplit","Lists","transformsBase","transforms3D","colorNames","Hooks","templates","registered","rgbComponents","rootProperty","hookTemplate","hookNames","fullHookName","hookPosition","getRoot","hookData","getUnit","unit","fixColors","$2","cleanRootPropertyValue","rootPropertyValue","Values","isCSSNullValue","extractValue","hookRoot","injectValue","hookValue","rootPropertyValueParts","Normalizations","propertyValue","extracted","blurComponent","opacity","zoom","transformName","colorName","converted","black","blue","gray","green","red","white","hexToRgb","augmentDimension","wantInner","augment","sides","fields","getDimension","outerWidth","outerHeight","Names","subMatch","SVGAttribute","SVGAttributes","prefixCheck","vendorsLength","propertyPrefixed","hex","rgbParts","getUnitType","getDisplayType","addClass","currentClass","removeClass","forceStyleLookup","computePropertyValue","computedValue","toggleDisplay","setPropertyValue","revertDisplay","contentBoxHeight","offsetHeight","contentBoxWidth","normalizedPropertyName","normalizedPropertyValue","getBBox","scrollData","scrollTo","alternateValue","hookName","flushTransformCache","transformString","getTransformFloat","transformProperty","SVGTransforms","skewX","skewY","scale","rotate","transformValue","perspective","arg3","adjustedSet","animate","getChain","isUtility","promiseData","elementsWrapped","argumentIndex","propertiesMap","syntacticSugar","rejecter","elementsLength","elementsIndex","startingArgumentPosition","activeElement","delayTimer","callsToStop","activeTween","endValue","currentValue","completeCall","durationOriginal","delayOriginal","backwards","elementIndex","stagger","drag","abortError","callUnitConversionData","lastParent","lastPosition","lastFontSize","lastPercentToPxWidth","lastPercentToPxHeight","lastEmToPx","remToPx","vwToPx","vhToPx","processElement","reverseCallsCount","reverseOptions","elementArrayIndex","elementUnitConversionData","clearQueue","velocityQueueEntryFlag","callIndex","delayComplete","delayBegin","buildQueue","lastTweensContainer","scrollPositionCurrent","scrollPositionCurrentAlternate","scrollPositionEnd","scrollDirection","scrollOffset","scroll","startValue","unitType","lastTween","lastStartValue","parsePropertyValue","valueData","skipResolvingEasing","getEasing","fixPropertyValue","separatedValue","endValueUnitType","startValueUnitType","separateValue","numericValue","iStart","iEnd","aStart","aEnd","inCalc","inRGB","inRGBA","cStart","cEnd","tStart","tEnd","dotStart","dotEnd","uStart","uEnd","nStart","nEnd","sameRatioIndicators","myParent","fontSize","samePercentRatio","sameEmRatio","unitRatios","emToPx","percentToPxWidth","percentToPxHeight","dummy","createElementNS","measurement","calculateUnitRatios","colorComponents","endValueRGB","startValueRGB","tick","ticker","updateTicker","velocity","elementsSize","inlineValues","computedValues","marginBottom","paddingTop","paddingBottom","delayPaused","delayRemaining","generateStep","mX1","mY1","mX2","mY2","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","mSampleValues","Float32Array","aA1","aA2","calcBezier","aT","getSlope","getTForX","aX","intervalStart","currentSample","lastSample","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","_precomputed","precompute","calcSampleValues","getControlPoints","callsLength","compactSparseArray","callContainer","timeStart","firstTick","tweenDummyValue","pauseObject","millisecondsEllapsed","callLength","transformPropertyExists","flexValue","tween","patternReplace","tweenDelta","adjustedSetData","translate3d","isStopped","remainingCallsExist","transformHAPropertyExists","tweenContainer","oldStartValue","Zepto","oneOfType","autoFocus","_querystring2","_WidgetMessaging2","_AppPermission2","_AppWarning2","_MessageSpinner2","ALLOWED_APP_URL_SCHEMES","AppTile","_persistKey","_getNewState","_onAction","_onLoaded","_onEditClick","_onDeleteClick","_onCancelClick","_onSnapshotClick","onClickMenuBar","_onMinimiseClick","_grantWidgetPermission","_revokeWidgetPermission","_onPopoutWidgetClick","_onReloadWidgetClick","widgetPermissionId","hasPermissionToLoad","PersistedElement","initialising","isMounted","_addWurlParams","deleting","widgetPageTitle","capability","widgetHasCapability","urlString","parentUrl","parentContentProtocol","childContentProtocol","setScalarToken","getWidgetPersistence","destroyElement","isScalarUrl","_scalarClient","getScalarToken","scalarToken","scalar_token","_fetchWidgetTitle","onEditClick","openAll","getWidgetMessaging","getScreenshot","screenshot","onDeleteClick","_canUserModify","appFrame","_setupWidgetMessaging","setRoomId","widgetMessaging","setWidgetMessaging","getCapabilities","requestedCapabilities","requestedWhitelistCapabilies","whitelistCapabilities","setWidgetCapabilities","onCapabilityRequest","_hasCapability","getScalarPageTitle","appTileName","menu_bar","parsedWidgetUrl","safeWidgetUrl","formatAppTileName","titleSpacer","onMinimiseClick","_getSafeUrl","appTileBody","appTileBodyClass","miniMode","loadingElement","isMixedContent","errorMsg","allowFullScreen","sandbox","persistKey","onPermissionGranted","canUserModify","showEditButton","showDeleteButton","showDelete","showCancelButton","showCancel","showPictureSnapshotButton","showMinimiseButton","showMinimise","showMaximiseButton","appTileClass","fullWidth","menuBarClasses","mx_AppTileMenuBar","mx_AppTileMenuBar_expanded","showMenubar","pointerEvents","handleMinimisePointerEvents","showTitle","_getTileTitle","showReload","showPopout","generateCompletionDomId","_flatMap2","_Autocompleter2","COMPOSER_SELECTED","Autocomplete","autocompleter","completionPromise","onCompletionClicked","completionList","selectionOffset","shouldShowCompletions","forceComplete","_applyNewProps","oldQuery","destroy","queryRequested","debounceCompletionsRequest","autocompleteDelay","processQuery","getCompletions","processCompletions","provider","currentSelection","countCompletions","completionCount","onConfirm","onSelectionChange","selectedCompletion","findDOMNode","offsetTop","renderedCompletions","completionResult","componentPosition","cloneElement","getName","renderCompletions","stackClear","stackDelete","stackGet","stackHas","stackSet","_model2","_caret2","_operations","_dom","_Autocomplete","_Autocomplete2","_parts2","_deserialize","_render","_emoticon2","REGEX_EMOTICON_WHITESPACE","ctrlShortcutLabel","cloneSelection","anchorNode","anchorOffset","focusNode","focusOffset","rangeCount","BasicMessageEditor","_replaceEmoticon","caretPosition","inputType","model","expandBackwardsWhile","emoticonMatch","emoticon","partCreator","hasPrecedingSpace","moveStart","_updateEditorState","renderModel","_editorRef","_setLastCaretFromPosition","_showPlaceholder","_hidePlaceholder","autoComplete","historyManager","tryPush","_onCompositionStart","_isIMEComposing","_onCompositionEnd","ua","_onInput","_onPaste","clipboardData","_modifiedFlag","getRangeForSelection","getSelection","parsePlainTextMessage","replaceRangeAndMoveCaret","_getCaretOffsetAndTex","getCaretOffsetAndText","caret","_onBlur","removeEventListener","_onSelectionChange","_onFocus","_lastSelection","_refreshLastCaretIfNeeded","_hasTextSelected","_formatBarRef","selectionRect","getRangeAt","showAt","modKey","handled","_onFormatAction","canUndo","_this$historyManager$","undo","canRedo","_this$historyManager$2","redo","_parts","_caret","_insertText","metaOrAltPressed","modifierPressed","hasCompletions","onUpArrow","onDownArrow","onTab","onEscape","_tabCompleteName","_onAutoCompleteConfirm","onComponentConfirm","_onAutoCompleteSelectionChange","completionIndex","onComponentSelectionChange","ensureLastChangesPushed","toggleInlineFormat","formatRangeAsCode","formatRangeAsQuote","_autocompleteRef","removeProperty","nativeEvent","isComposing","textToInsert","_getCaretOffsetAndTex2","_isCaretAtEnd","isAtEnd","_lastCaret","asOffset","_getCaretOffsetAndTex3","getCaret","showVisualBell","positionForOffset","atNodeEnd","addedLen","pillCandidate","hasSelection","setUpdateCallback","setTransformCallback","setAutoCompleteCreator","autoCompleteCreator","_getInitialCaretPosition","initialCaret","getPositionAtEnd","queryLen","beginning","MessageComposerFormatBar","shortcuts","bold","italics","contentEditable","onPaste","_diff2","_position2","EditorModel","updateCallback","_onAutoComplete","replaceParts","_autoCompletePartIdx","_autoCompletePartCount","lastPart","lastPartIndex","_autoComplete","_updateCallback","_partCreator","_activePartIdx","_transformCallback","transformCallback","previousValue","diffDeletion","diffAtCaret","serializedParts","deserializePart","_splitAt","newTextLength","_insertPart","_diff","removedOffsetDecrease","_addText","_mergeAdjacentParts","caretOffset","newPosition","canOpenAutoComplete","acPromise","_setActivePart","transformAddedLen","_transform","createAutoComplete","onPartUpdate","prevPart","isMerged","_removePart","_replacePart","createDefaultPart","addLen","validateAndInsert","splitPart","newPart","createPartForInput","appendUntilRejected","totalOffset","atPartEnd","currentOffset","partLen","positionA","positionB","startPosition","endPosition","newStartPartIndex","asPosition","insertIdx","CARET_NODE_CHAR","_getIterator2","needsCaretNodeBefore","needsCaretNodeAfter","isLastOfLine","nodeToInsert","nextSibling","isCaretNode","editor","lineContainer","childNodes","currentNode","updateCaretNode","createCaretNode","canUpdateDOMNode","nextNode","updateDOMNode","toDOMNode","caretNode","removeNextSiblings","reconcileLine","foundBR","partNode","reconcileEmptyLine","walkDOMDepthFirst","_getSelectionOffsetAn","getSelectionOffsetAndText","focusPosition","anchorPosition","rootNode","enterNodeCallback","leaveNodeCallback","selectionNode","_tryReduceSelectionTo","ELEMENT_NODE","childNodeCount","TEXT_NODE","characterOffset","tryReduceSelectionToTextNode","_getTextAndOffsetToNo","offsetToNode","foundNode","nodeText","nodeValue","getTextNodeValue","getTextAndOffsetToNode","offsetWithinNode","zwsIdx","CommandPartCreator","PartCreator","PlainPart","getAutocompleterComponent","updateQuery","_autocomplete2","BasePart","strWithRemoval","acceptsRemoval","acceptsInsertion","beforeInsert","afterInsert","_BasePart","PillPart","_BasePart2","resourceId","setAvatar","textNode","initialLetter","avatarBackground","avatarLetter","NewlinePart","_BasePart3","RoomPillPart","_PillPart","displayAlias","_setAvatarVars","AtRoomPillPart","_RoomPillPart","UserPillPart","_PillPart2","_member","defaultAvatarUrl","PillCandidatePart","_PlainPart","_autoCompleteCreator","newline","atRoomPill","roomPill","userPill","partIndex","CommandPart","_PartCreator","_PillCandidatePart","_toConsumableArray2","parseEvent","_ref$isQuotedMessage","isQuotedMessage","lastNode","inQuote","checkIgnored","newParts","parseAtRoomMentions","parseResult","parseHeader","parseLink","preLines","parseCodeBlock","listDepth","checkDecendInto","parseElement","isFirstNode","QUOTE_LINE_PREFIX","prefixQuoteLines","decend","parseHtmlMessage","textPart","isContainer","resumeAt","entering","cur","_firstChild","NodeWalker","sourcepos","_lastChild","_prev","_sourcepos","_lastLineBlank","_open","_string_content","_literal","_listData","_info","_destination","_title","_isFenced","_fenceChar","_fenceLength","_fenceOffset","_onEnter","_onExit","tight","delim","unlink","prependChild","sibling","walker","_AppTile2","_PersistedElement2","Stickerpicker","_onShowStickersClick","_onHideStickersClick","_launchManageIntegrations","_removeStickerpickerWidgets","_updateWidget","_onWidgetAction","_onResize","_onFinished","popoverWidth","popoverHeight","showStickers","imError","stickerpickerX","stickerpickerY","stickerpickerWidget","_imError","_acquireScalarClient","disableWidgetAssets","removeStickerpickerWidgets","_sendVisibilityToWidget","getStickerpickerWidgets","currentWidget","currentUrl","newUrl","_prevSentVisibility","sendVisibility","_errorStickerpickerContent","stickersContent","border","_defaultStickerpickerContent","buttonRect","stickerPickerChevronOffset","stickerPickerX","stickerPickerY","GenericElementContextMenu","stickersButton","stickerPicker","_getStickerpickerContent","Fragment","cancelQuoting","ReplyPreview","_onRoomViewStoreUpdate","_roomStoreToken","StandardActions","NotificationUtils","OFF","ON","LOUD","actionsFor","pushRuleVectorState","ACTION_NOTIFY","ACTION_HIGHLIGHT_DEFAULT_SOUND","contentRuleVectorStateKind","decoded","stateKind","ActionTypes","INIT","preloadedState","enhancer","currentReducer","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","subscribe","isSubscribed","replaceReducer","nextReducer","outerSubscribe","observer","observeState","unsubscribe","getUndefinedStateErrorMessage","actionType","combineReducers","reducers","reducerKeys","finalReducers","finalReducerKeys","shapeAssertionError","assertReducerShape","hasChanged","nextState","previousStateForKey","nextStateForKey","bindActionCreator","actionCreator","bindActionCreators","actionCreators","boundActionCreators","compose","applyMiddleware","middlewares","createStore","_dispatch","middlewareAPI","middleware","regexSymbolWithCombiningMarks","regexSurrogatePair","esrever","Immutable","ANONYMOUS","ImmutablePropTypes","listOf","typeChecker","createIterableTypeChecker","mapOf","valuesTypeChecker","keysTypeChecker","createMapOfTypeCheckerFactory","orderedMapOf","setOf","orderedSetOf","stackOf","iterableOf","recordOf","recordKeys","createChainableTypeChecker","propFullName","propValue","propType","getPropType","checker","mutablePropValue","createShapeChecker","mapContains","shapeTypes","createShapeTypeChecker","createImmutableTypeChecker","orderedMap","orderedSet","isRecord","checkType","chainedCheckType","immutableClassName","immutableClassTypeValidator","locationName","propValues","atob","$assign","factories","construct","partArgs","un","$parseInt","$trim","ws","$parseFloat","log1p","EPSILON","EPSILON32","MAX32","MIN32","fround","$abs","$sign","forced","newPromiseCapability","promiseCapability","strong","getEntry","$iterDefine","_f","_l","InternalMap","weak","NATIVE_WEAK_MAP","IS_IE11","ActiveXObject","uncaughtFrozenStore","ufstore","$WeakMap","$has","UncaughtFrozenStore","findUncaughtFrozen","IS_CONCAT_SPREADABLE","flattenIntoArray","sourceLen","spreadable","targetIndex","sourceIndex","fillString","stringLength","fillStr","intMaxLength","fillLen","stringFiller","isEntries","inLow","inHigh","outLow","outHigh","ConferenceCall","groupChatRoomId","confUserId","getConferenceUserIdForRoom","setup","_joinConferenceUser","_getConferenceUserRoom","groupRoom","confRoom","confUser","base64part","slot","makeHtmlMessage","htmlBody","makeHtmlNotice","makeHtmlEmote","makeTextMessage","makeNotice","makeEmoteMessage","syncToken","filters","_oobMembers","_clientOptions","getSyncToken","storeGroup","getGroup","getGroups","storeRoom","_onRoomMember","removeRoom","getRoomSummaries","storeUser","getUsers","scrollback","storeEvents","toStart","storeFilter","getFilterIdByName","filterName","setFilterIdByName","storeAccountDataEvents","wantsSave","getSavedSyncToken","_memory","_indexeddbLocalBackend2","_indexeddbRemoteBackend2","_user2","workerScript","workerApi","Worker","startedUp","_syncTs","_userModifiedMap","degradable","fallback","_MemoryStore$prototyp","userPresenceEvents","rawEvent","_reallySave","_setDeviceVerification","_ReEmitter2","_RoomList2","_crypto2","_recoverykey","_backup_password","httpApi","SearchResult","StubStore","webRtcCall","contentRepo","SyncApi","MatrixBaseApis","_ref11","keysFromRecoverySession","decryptionKey","_step$value","keyFromRecoverySession","decrypt","mac","olmVersion","reEmitter","setProcessFunction","eventToSend","_updatePendingEventStatus","_sendEventHttpRequest","clientRunning","_supportsVoip","candidatesByCall","callEventBuffer","isClientPrepared","callEventHandler","existingCall","existingCalls","thisCall","ignoreCallIds","setupCallEventHandler","_syncingRetry","_syncApi","_peekSync","_isGuest","_ongoingScrollbacks","urlPreviewCache","_notifTimelineSet","_fallbackICEServerAllowed","_pushProcessor","_serverVersionsCache","_cachedCapabilities","oldActions","oldHighlight","newHighlight","hasUserReadEvent","setUnreadNotificationCount","eid","highlightCount","_sendEvent","encryptionPromise","_encryptEventIfNeeded","queueEvent","getQueueForEvent","updatePendingEvent","err2","_getEncryptedIfNeededEventType","newStatus","txnId","_txnId","makeTxnId","pathParams","$roomId","$eventType","$stateKey","$txnId","$redactsEventId","_http","_membershipChange","$room_id","$membership","_presenceList","$userId","_PojoToMatrixEventMapper","plainOldJsObject","reEmit","_clientRunning","getUserIdLocalpart","setForceTURN","getSyncState","getSyncStateData","getScheduler","retryImmediately","getNotifTimelineSet","fresh","expiration","capabilities","cacheMs","isCryptoEnabled","uploadKeys","setDeviceBlocked","isEventSenderVerified","cancelAndResendEventRoomKeyRequest","getKeyBackupEnabled","free","PkEncryption","set_recipient_key","prepareKeyBackupVersion","decryption","publicKey","authData","keyInfo","PkDecryption","keyForNewBackup","init_with_private_key","private_key_salt","salt","private_key_iterations","generate_key","recovery_key","encodeRecoveryKey","get_private_key","createKeyBackupVersion","deleteKeyBackupVersion","$version","_makeKeyBackupPath","$sessionId","queryData","isValidRecoveryKey","recoveryKey","decodeRecoveryKey","RESTORE_BACKUP_ERROR_BAD_KEY","restoreKeyBackupWithPassword","targetSessionId","privKey","keyForExistingBackup","_restoreKeyBackup","restoreKeyBackupWithRecoveryKey","totalKeyCount","backupPubKey","roomKeys","imported","deleteKeysFromBackup","getVisibleRooms","allRooms","replacedRooms","predecessor","contents","$type","ignored_users","isUserIgnored","syncRoom","sign_promise","inviteSignUrl","reqOpts","arrayFormat","signed_invite_object","third_party_signed","$roomid","_clientOpts","removeEventFromQueue","getRoomTags","setRoomTag","metadata","$tag","deleteRoomTag","setRoomAccountData","_sendCompleteEvent","eventObject","addPendingEvent","redactEvent","sendNotice","sendEmoteMessage","sendImageMessage","sendHtmlNotice","sendReceipt","receiptType","$receiptType","$eventId","_addLocalEchoReceipt","sendReadReceipt","hasPendingEvent","addlContent","setRoomReadMarkers","rmEventId","rrEvent","rrEventId","setRoomReadMarkersHttpRequest","getUrlPreview","og","timeoutMs","getRoomUpgradeHistory","verifyLinks","currentRoom","upgradeHistory","refRoom","tombstone","tombstoneEvent","_refRoom","_predecessor","inviteByThreePid","doesServerAcceptIdentityAccessToken","_x27","includeFuture","eligibleToLeave","populationResults","doLeave","forget","deleteRoom","membershipValue","_setMembershipState","setProfileInfo","$info","mxcUrl","_unstable_setStatusMessage","newMessage","isJoined","looksLikeDm","getInvitedAndJoinedMemberCount","setPresence","getPresenceList","inviteToPresenceList","dropFromPresenceList","timeToWaitMs","errorTs","timeWaitedMs","numAdded","_createMessagesRequest","matrixEvents","setUnknownStateEvents","events_after","events_before","getEventMapper","fromToken","timelineFilter","paginateEventTimeline","eventTimeline","isNotifTimeline","pendingRequest","next_token","notifications","notification","resetNotifTimelineSet","peekInRoom","stopPeeking","setGuestAccess","writePromise","allowJoin","readPromise","allowRead","requestRegisterEmailToken","sendAttempt","nextLink","_requestTokenFromEndpoint","send_attempt","next_link","requestRegisterMsisdnToken","phone_number","requestPasswordEmailToken","requestPasswordMsisdnToken","endpoint","postParams","idServerUrl","setRoomMutePushRule","mute","hasDontNotifyRule","roomPushRule","ruleRefreshDeferred","getPushRules","searchMessageText","roomEvents","search_term","search_categories","room_events","searchRoomEvents","term","order_by","event_context","before_limit","after_limit","include_profile","searchResults","_query","_processRoomEventsSearch","backPaginateRoomEventsSearch","searchOpts","hl","sr","syncLeftRooms","_syncedLeftRooms","_syncLeftRoomsPromise","syncApi","createFilter","filter_id","allowCached","$filterId","getOrCreateFilter","existingFilter","oldDef","newDef","existingId","createdFilter","turnServer","_turnServers","isSynapseAdministrator","whoisSynapseUser","deactivateSynapseUser","checkTurnServers","uris","ttl","servers","credential","_checkTurnServersTimeoutID","canResetEntireTimeline","_canResetTimelineCallback","_storeClientOptions","primTypes","serializableOpts","_ref15","_ref16","getVersions","doesServerSupportLazyLoading","unstableFeatures","doesServerRequireIdServerParam","hasLazyLoadMembersEnabled","setCanResetTimelineCallback","getCanResetTimelineCallback","fetchedEventType","originalEvent","allEvents","fetchRelations","original_event","_x36","_x37","_x38","_x39","_c","IS_ADDER","Reemitter","boundHandlers","eventName","forSource","_handleEvent","boundHandler","E2E_PREFIX","KEY_END_TO_END_ACCOUNT","KEY_DEVICE_DATA","KEY_INBOUND_SESSION_PREFIX","KEY_ROOMS_PREFIX","KEY_SESSIONS_NEEDING_BACKUP","keyEndToEndSessions","keyEndToEndInboundGroupSession","keyEndToEndRoomsPrefix","LocalStorageCryptoStore","_MemoryCryptoStore","webStore","getJsonItem","fixedSessions","_getEndToEndSessions","setJsonItem","sessionsNeedingBackup","timeoutException","VerificationBase","startEvent","_done","_transactionTimeoutTimer","_resetTimer","_expectedEvent","_resolveEvent","_rejectEvent","_endTimer","timeoutEvent","_sendToDevice","_doVerification","verifiedDevices","copyProps","SafeBuffer","OOB_STATUS_NOTSTARTED","oobMemberFlags","_sentinels","_displayNameToUserIds","_userIdsToDisplayNames","_tokenToInvite","_joinedMemberCount","_summaryJoinedMemberCount","_invitedMemberCount","_summaryInvitedMemberCount","_oobMemberFlags","_updateDisplayNameCache","strippedOldName","existingUserIds","filteredUserIDs","strippedDisplayname","setJoinedMemberCount","setInvitedMemberCount","getMembersExcept","excludedIds","sentinel","eventsByStateKey","eventsForType","unknownStateEvents","_setStateEvent","_updateThirdPartyTokenCache","_getOrCreateMember","_updateMember","pwrLvlEvent","needsOutOfBandMembers","markOutOfBandMembersStarted","markOutOfBandMembersFailed","_setOutOfBandMember","stateEvent","existingMember","getInviteForThreePidToken","maySendRedactionForEvent","canRedact","maySendEvent","_hasSufficientPowerLevelFor","powerLevelsEvent","powerLevels","requiredLevel","maySendMessage","_maySendEventOfType","stateEventType","power_levels_event","power_levels","events_levels","state_default","events_default","userPowerLevel","required_level","notifLevel","_isInteger2","RoomSummary","SAFE_ROOM_VERSIONS","synthesizeReceipt","fakeReceipt","storageToken","_opts","_txnToEvent","_receipts","_receiptCacheByEventId","_realReceipts","_notificationCounts","_timelineSets","_fixUpLegacyTimelineFields","_filteredTimelineSets","_pendingEventList","_blacklistUnverifiedDevices","_selfMembership","_summaryHeroes","_membersPromise","ver","shouldUpgradeToVersion","getRecommendedVersion","versionCap","safeVer","available","_checkVersionAgainstCapability","urgent","needsUpgrade","currentVersion","userMayUpgradeRoom","inviterId","anyMember","hasHeroes","availableMember","_availableMember","availableUser","updateMyMembership","prevMembership","_cleanupAfterLeaving","_loadMembersFromServer","lastSyncToken","http","not_membership","_loadMembers","fromServer","rawMembersEvents","memberEvents","loadMembersIfNeeded","inMemoryUpdate","oobMembers","clearLoadedMembersIfNeeded","hasUnverifiedDevices","e2eMembers","getTimelineSets","setSummary","heroes","joinedCount","invitedCount","setBlacklistUnverifiedDevices","getBlacklistUnverifiedDevices","roomAvatarEvent","mainUrl","aliasStrings","aliasEvent","getMembersWithMembership","getDefaultRoomName","calculateRoomName","getOrCreateFilteredTimelineSet","unfilteredLiveTimeline","removeFilteredTimelineSet","_addLiveEvent","redactId","redactedEvent","existingEvent","_handleRemoteEcho","addReceipt","_aggregateNonLiveRelation","remoteEvent","oldStatus","ALLOWED_TRANSITIONS","ignoreRoomNameEvent","mRoomName","inviteJoinCount","otherNames","otherMembers","memberNamesToRoomName","thirdPartyInvites","leftNames","countWithoutMe","_pendingEventList$spl","removedEvent","_revertRedactionLocalEcho","addLiveEvents","liveTimeline","addEphemeralEvents","removeEvents","eventIds","removedAny","recalculate","membershipEvent","strippedStateEvents","invite_room_state","strippedEvent","getUsersReadUpTo","getReceiptsForEvent","receipt","ignoreSynthesized","receipts","fake","_addReceiptsToStructure","_buildReceiptCache","existingReceipt","ordering","receiptCacheByEventId","addTags","addAccountData","setProfile","setMyMembership","setInviter","_freeze","IM","clientConfig","hsVersions","failingClientConfig","isResponse","FAIL_ERROR","ERROR_INVALID","FAIL_PROMPT","ERROR_INVALID_HS_BASE_URL","_sanitizeWellKnownUrl","_fetchWellKnownObject","ERROR_INVALID_IS","ERROR_INVALID_IS_BASE_URL","notProps","saferUrl","ERROR_MISSING_WELLKNOWN","ERROR_INVALID_JSON","ERROR_GENERIC_FAILURE","percentTwenties","Format","RFC1738","RFC3986","createMatrixClient","storeOpts","getOwnPropertyDescriptors","descriptors","formatRegExp","noDeprecation","throwDeprecation","traceDeprecation","debugEnviron","debugs","stylize","stylizeNoColor","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","styles","recurseTimes","primitive","simple","formatPrimitive","visibleKeys","arrayToHash","formatError","braces","toUTCString","formatProperty","formatArray","numLinesEst","reduceToSingleString","ar","NODE_DEBUG","pid","kCustomPromisifiedSymbol","callbackifyOnRejected","promiseResolve","promiseReject","custom","callbackify","callbackified","maybeCb","rej","__locale","abbreviated_days","abbreviated_months","am","pm","levelRoleMap","usersDefault","LEVEL_ROLE_MAP","0","setCacheAdd","setCacheHas","checkSyncStore","healthy","_results","track","checkCryptoStore","SYNC_STORE_NAME","CRYPTO_STORE_NAME","_ScalarAuthClient2","setTermsInteractionCallback","policyInfo","getScalarInterfaceUrlForRoom","CURRENTLY_ACTIVE_THRESHOLD_MS","RECENTLY_ACTIVE_THRESHOLD_MS","UserActivity","windowObj","documentObj","_window","_document","_attachedActiveNowTimers","_attachedActiveRecentlyTimers","_activeNowTimeout","_activeRecentlyTimeout","_onUserActivity","_onWindowBlurred","_onPageVisibilityChanged","lastScreenX","lastScreenY","timer","_timeWhile","userActiveNow","userActiveRecently","attachedTimers","passive","capture","visibilityState","screenX","screenY","_runTimersUntilTimeout","mxUserActivity","updateCheckStatusEnum","CHECKING","ERROR","NOTAVAILABLE","DOWNLOADING","READY","VectorBasePlatform","showUpdateCheck","startUpdateCheck","stopUpdateCheck","getVectorConfig","bgColor","errorDidOccur","favicon","_updateFavicon","dis","_favicon","Favico","animation","BasePlatform","_classnames3","EmbeddedPage","_dispatcherRef","g1","_classnames","scrollbar","GeminiScrollbarWrapper","autoshow","formTags","optgroup","datalist","textarea","openImpliesClose","tr","th","td","thead","link","li","h5","h6","voidElements","basefont","br","col","embed","isindex","keygen","param","wbr","foreignContextElements","math","htmlIntegrationElements","mi","mo","mn","mtext","foreignObject","re_nameEnd","cbs","_cbs","_tagname","_attribname","_attribvalue","_attribs","_foreignContext","_lowerCaseTagNames","lowerCaseTags","xmlMode","_lowerCaseAttributeNames","lowerCaseAttributeNames","_tokenizer","onparserinit","_updatePosition","initialOffset","_sectionStart","getAbsoluteIndex","onopentagname","onopentagend","_closeCurrentTag","onselfclosingtag","recognizeSelfClosing","onattribname","onattribdata","onattribend","onattribute","_getInstructionName","ondeclaration","onprocessinginstruction","oncomment","oncommentend","oncdata","recognizeCDATA","oncdatastart","oncdataend","onend","onreset","parseComplete","parseChunk","decodeCodePoint","entityMap","legacyMap","xmlMap","TEXT","BEFORE_TAG_NAME","IN_TAG_NAME","IN_SELF_CLOSING_TAG","BEFORE_CLOSING_TAG_NAME","IN_CLOSING_TAG_NAME","AFTER_CLOSING_TAG_NAME","BEFORE_ATTRIBUTE_NAME","IN_ATTRIBUTE_NAME","AFTER_ATTRIBUTE_NAME","BEFORE_ATTRIBUTE_VALUE","IN_ATTRIBUTE_VALUE_DQ","IN_ATTRIBUTE_VALUE_SQ","IN_ATTRIBUTE_VALUE_NQ","BEFORE_DECLARATION","IN_DECLARATION","IN_PROCESSING_INSTRUCTION","BEFORE_COMMENT","IN_COMMENT","AFTER_COMMENT_1","AFTER_COMMENT_2","BEFORE_CDATA_1","BEFORE_CDATA_2","BEFORE_CDATA_3","BEFORE_CDATA_4","BEFORE_CDATA_5","BEFORE_CDATA_6","IN_CDATA","AFTER_CDATA_1","AFTER_CDATA_2","BEFORE_SPECIAL","BEFORE_SPECIAL_END","BEFORE_SCRIPT_1","BEFORE_SCRIPT_2","BEFORE_SCRIPT_3","BEFORE_SCRIPT_4","BEFORE_SCRIPT_5","AFTER_SCRIPT_1","AFTER_SCRIPT_2","AFTER_SCRIPT_3","AFTER_SCRIPT_4","AFTER_SCRIPT_5","BEFORE_STYLE_1","BEFORE_STYLE_2","BEFORE_STYLE_3","BEFORE_STYLE_4","AFTER_STYLE_1","AFTER_STYLE_2","AFTER_STYLE_3","AFTER_STYLE_4","BEFORE_ENTITY","BEFORE_NUMERIC_ENTITY","IN_NAMED_ENTITY","IN_NUMERIC_ENTITY","IN_HEX_ENTITY","SPECIAL_NONE","SPECIAL_SCRIPT","SPECIAL_STYLE","whitespace","ifElseState","FAILURE","consumeSpecialNameChar","NEXT_STATE","_buffer","_bufferOffset","_baseState","_special","_running","_ended","_xmlMode","_decodeEntities","_stateText","_getSection","_stateBeforeTagName","_stateInTagName","_emitToken","_stateBeforeCloseingTagName","_stateInCloseingTagName","_stateAfterCloseingTagName","_stateBeforeAttributeName","_stateInSelfClosingTag","_stateInAttributeName","_stateAfterAttributeName","_stateBeforeAttributeValue","_stateInAttributeValueDoubleQuotes","_stateInAttributeValueSingleQuotes","_stateInAttributeValueNoQuotes","_stateBeforeDeclaration","_stateInDeclaration","_stateInProcessingInstruction","_stateBeforeComment","_stateInComment","_stateAfterComment1","_stateAfterComment2","_stateBeforeCdata1","_stateBeforeCdata2","_stateBeforeCdata3","_stateBeforeCdata4","_stateBeforeCdata5","_stateBeforeCdata6","_stateInCdata","_stateAfterCdata1","_stateAfterCdata2","_stateBeforeSpecial","_stateBeforeSpecialEnd","_stateBeforeScript1","_stateBeforeScript2","_stateBeforeScript3","_stateBeforeScript4","_stateBeforeScript5","_stateAfterScript1","_stateAfterScript2","_stateAfterScript3","_stateAfterScript4","_stateAfterScript5","_stateBeforeStyle1","_stateBeforeStyle2","_stateBeforeStyle3","_stateBeforeStyle4","_stateAfterStyle1","_stateAfterStyle2","_stateAfterStyle3","_stateAfterStyle4","_stateBeforeEntity","_stateBeforeNumericEntity","_parseNamedEntityStrict","_emitPartial","_parseLegacyEntity","_stateInNamedEntity","_decodeNumericEntity","sectionStart","_stateInNumericEntity","_stateInHexEntity","_parse","_finish","_handleTrailingData","decodeMap","re_whitespace","NodePrototype","ElementPrototype","elementCB","defaultOpts","_elementCB","_tagStack","normalizeWhitespace","withStartIndices","withEndIndices","_handleCallback","_createDomElement","withDomLvl1","_addDomElement","previousSibling","lastTag","ignoreWhitespace","nodeTypes","domLvl1","cdata","shorthand","DomUtils","__importDefault","entities_json_1","legacy_json_1","xml_json_1","decode_codepoint_1","getStrictDecoder","getReplacer","decodeXML","decodeHTMLStrict","sorter","legacy","inverseXML","getInverseObj","xmlReplacer","getInverseReplacer","encodeXML","getInverse","inverseHTML","htmlReplacer","single","encodeHTML","reNonASCII","reAstralSymbols","singleCharReplacer","astralReplacer","reXmlChars","Stream","WritableStream","Writable","StringDecoder","_decoder","decodeStrings","_write","_supportsColor","_chalk","_terminalHighlight","_wrapNativeSuper","Wrapper","_construct","_getPrototypeOf","_setPrototypeOf","sham","Proxy","isNativeReflectConstruct","CssSyntaxError","setMessage","_assertThisInitialized","showSourceCode","stdout","aside","gutter","DEFAULT_RAW","colon","beforeDecl","beforeRule","beforeOpen","beforeClose","beforeComment","emptyBody","commentLeft","commentRight","semicolon","Stringifier","rawValue","important","ownSemicolon","atrule","afterName","detect","rawCache","beforeAfter","rawSemicolon","rawEmptyBody","rawIndent","rawBeforeComment","rawBeforeDecl","rawBeforeRule","rawBeforeClose","rawBeforeOpen","rawColon","_lazyResult","Processor","use","_process","normalized","_mapGenerator","_result","LazyResult","processor","stringified","processed","syntax","onFulfilled","onRejected","onFinally","handleError","postcssVersion","postcssPlugin","asyncTick","processing","lastPlugin","SourceMapGenerator","SourceMapConsumer","SourceNode","base64VLQ","ArraySet","MappingList","_file","_sourceRoot","_skipValidation","_sources","_names","_mappings","_sourcesContents","_version","fromSourceMap","aSourceMapConsumer","eachMapping","newMapping","generated","addMapping","sourceFile","sourceRelative","sourceContentFor","setSourceContent","_validateMapping","aSourceFile","aSourceContent","applySourceMap","aSourceMapPath","newSources","newNames","unsortedForEach","originalPositionFor","aGenerated","aOriginal","aSource","_serializeMappings","nameIdx","sourceIdx","previousGeneratedColumn","previousGeneratedLine","previousOriginalColumn","previousOriginalLine","previousName","previousSource","mappings","_generateSourcesContent","aSources","aSourceRoot","sourcesContent","aValue","digit","encoded","vlq","toVLQSigned","VLQ_BASE","aIndex","aOutParam","continuation","shifted","hasNativeMap","_set","fromArray","aArray","aAllowDuplicates","sStr","isDuplicate","aIdx","separators","Root","toResult","_RoomListStore2","STANDARD_TAGS_REGEX","commonPrefix","spaceIdx","CustomRoomTagStore","_getUpdatedTags","_roomListStoreToken","_onDispatch","roomLists","getRoomLists","prefixes","backwardsPrefix","forwardsPrefix","notifs","oldTags","newTagNames","prevTags","singletonCustomRoomTagStore","FluxStoreGroup","_classCallCheck","_dispatcher","getDispatcher","_getUniformDispatcher","storeTokens","getDispatchToken","_dispatchToken","waitFor","release","FluxStore","abstractMethod","FluxReduceStore","_FluxStore","_inherits","areEqual","__invokeOnDispatch","__changed","startingState","endingState","__emitter","__changeEvent","__className","__dispatcher","__onDispatch","EmitterSubscription","_EventSubscription","subscriber","_PermalinkConstructor2","_PermalinkConstructor3","SpecPermalinkConstructor","_PermalinkConstructor","encodeServerCandidates","testHost","secondaryParts","via","stateify","TokenState","CharacterState","BaseState","tClass","defaultTransition","accepts","character","charOrRegExp","tokenClass","endToken","defaultToken","newStates","_HeaderButton2","_HeaderButtons3","_RightPanel2","GROUP_PHASES","ROOM_PHASES","GroupHeaderButtons","_HeaderButtons","_onMembersClicked","_onRoomsClicked","togglePhase","isPhase","Sizer","offsetLeft","_getOffset","getTotalSize","pageY","pageX","_AutoHideScrollbar2","IndicatorScrollbar","onMouseWheel","verticalScrollsHorizontally","_scrollElement","deltaX","_likelyTrackpadUser","_checkAgainForTrackpad","additionalScroll","deltaY","_collectScroller","_collectScrollerComponent","_autoHideScrollbar","leftIndicatorOffset","rightIndicatorOffset","scroller","autoHideScrollbar","hasTopOverflow","hasBottomOverflow","hasLeftOverflow","hasRightOverflow","scrollWidth","trackHorizontalOverflow","getScrollTop","leftIndicatorStyle","rightIndicatorStyle","leftOverflowIndicator","rightOverflowIndicator","FallbackAuthEntry","MsisdnAuthEntry","EmailIdentityAuthEntry","TermsAuthEntry","RecaptchaAuthEntry","PasswordAuthEntry","getEntryComponentForLoginType","AuthEntryComponents","LOGIN_TYPE","submitAuthDict","_onSubmit","_onPasswordFieldChange","passwordBoxClass","submitButtonOrSpinner","errorSection","onSubmit","stageParams","_onCaptchaResponse","CaptchaForm","sitePublicKey","onCaptchaResponse","showContinue","allPolicies","prefLang","initToggles","pickedPolicies","policyId","langPolicy","tryContinue","_trySubmit","_togglePolicy","newToggles","toggledPolicies","allChecked","checkboxes","submitButton","authSessionId","inputs","stageState","setEmailSid","requestingToken","_submitUrl","_sid","_msisdn","_tokenBox","_requestMsisdnToken","msisdn","_onTokenChange","_onFormSubmit","idServerParsedUrl","threepid_creds","threepidCreds","enableSubmit","submitClasses","mx_InteractiveAuthEntryComponents_msisdnSubmit","mx_GeneralButton","_popupWindow","_onReceiveMessage","fallbackButton","_onShowFallbackClick","getFallbackAuthUrl","TagPanelButtons","RedesignFeedbackDialog","GroupsButton","ActionButton","tooltip","_memoizeOne","_isWithin","_isWithin2","isWithinVertical","isWithinHorizontal","isPartiallyVisibleVertically","isPartiallyVisibleHorizontally","isBiggerVertically","isBiggerHorizontally","_isPartiallyVisible","newCenter","physics","stiffness","damping","outOfTheWay","dropAnimationFinished","completeDrop","prepare","clean","moveByWindowScroll","updateDroppableDimensionIsEnabled","updateDroppableDimensionScroll","publishDroppableDimensions","publishDraggableDimensions","completeLift","requestDimensions","_noImpact2","_getNewHomeClientCenter2","getScrollDiff","windowScrollDiff","droppableScrollDiff","isScrollAllowed","dimensions","animateDrop","trigger","newHomeOffset","impact","_state$drag","dimension","clientOffset","_state$drag2","frameId","wrapperFn","_placeholder","noWobble","gentle","wobbly","stiff","keyCodes","_stopEvent","_stopEvent2","HomePage","RoomView","RoomDirectory","UserView","GroupView","MyGroups","Matrix","hasAnyLabeledDevices","mediaDevices","enumerateDevices","getDevices","audiooutput","audioinput","videoinput","loadDevices","audioOutDeviceId","audioDeviceId","videoDeviceId","getAudioOutput","getAudioInput","getVideoInput","SessionStore","_update","singletonSessionStore","getHomePageUrl","pagesConfig","embeddedPages","pageUrl","homeUrl","welcomePageUrl","_actionCreators","_TagOrderStore2","TagOrderActions","destinationIx","getOrderedTags","getRemovedTagsAccountData","storeId","RoomListActions","oldTag","newTag","oldIndex","indexBefore","indexAfter","prevOrder","nextOrder","hasChangedSubLists","promiseToDelete","promiseToAdd","instanceForInstanceId","protocols","instance_id","protocolNameForInstanceId","FormattingUtils","_IndicatorScrollbar2","_RoomTile2","_LazyRenderList2","RoomSubList","addRoomLabel","startAsHidden","showSpinner","onHeaderClick","incomingCall","isFiltered","headerItems","extraTiles","scrollerHeight","isCollapsableOnClick","stuck","forceExpand","isHidden","originalPosition","onRoomTileClick","clear_search","_updateSubListCount","makeRoomTile","roomSubList","refreshSubList","_onNotifBadgeClick","_onInviteBadgeClick","group_id","_getHeaderJsx","AccessibleTooltipButton","subListNotifications","subListNotifCount","subListNotifHighlight","badgeClasses","IncomingCallBox","addRoomButton","onAddRoom","chevronClasses","tabindex","setHeight","subList","_updateLazyRenderHeight","_onScroll","_canUseLazyListRendering","subListClasses","renderItem","itemHeight","tiles","_ContextualMenu","_ActiveRoomObserver2","transparent","isDragging","hover","badgeHover","menuDisplayed","notifState","statusMessage","_getStatusMessage","_isDirectMessageRoom","dmRooms","_shouldShowStatusMessage","_getStatusMessageUser","selfId","statusUser","onRoomName","accountDataEvent","_onActiveRoomChange","_onStatusMessageCommitted","shouldComponentUpdate","onMouseEnter","badgeOnMouseEnter","onMouseLeave","badgeOnMouseLeave","_showContextMenu","RoomTileContextMenu","onOpenMenu","elementRect","subtext","avatarClasses","limitedCount","badgeContent","subtextLabel","nameClasses","contextMenuButton","RoomAvatar","ariaLabel","dmIndicator","OVERFLOW_ITEMS","ItemRange","topCount","renderCount","bottomCount","topGrow","bottomGrow","LazyRenderList","renderRange","getVisibleRangeFromProps","expand","intersectRange","prevSize","renderedItems","itemsAfterTop","_ContentMessages2","_ObjectUtils2","_MainSplit2","_RoomScrollStateStore2","BROWSER_SUPPORTS_SANDBOX","RoomContext","canReact","canReply","onRegistered","thirdPartyInvite","oobData","peekLoading","mediaConfig","membersLoaded","numUnreadMessages","draggingFile","searching","callState","guestsCanJoin","canPeek","showApps","isAlone","isPeeking","showingPinned","atEndOfLiveTimeline","atEndOfLiveTimelineInit","showTopUnreadMessagesBar","auxPanelMaxHeight","statusBarVisible","upgradeRecommendation","childContextTypes","getChildContext","onRoom","onRoomTimeline","onRoomAccountData","onMyMembership","onKeyBackupStatus","onDeviceVerificationChanged","_onWidgetEchoStoreUpdate","getRoomAlias","isRoomLoading","getRoomLoadError","isJoining","getInitialEventId","getForwardingEvent","_shouldShowApps","_onRoomLoaded","roomScrollState","getScrollState","focussedEvent","pixelOffset","_setupRoom","_getRoomId","_getPermalinkCreatorForRoom","_permalinkCreators","_stopAllPermalinkCreators","autoJoin","onJoinButtonClicked","getEchoedRoomWidgets","roomHasPendingWidgets","_getCallForRoom","_updateConfCallNotification","onPageUnload","inviteBox","roomView","ondrop","onDrop","onDragOver","onDragLeaveOrEnd","messagePanel","isAtEndOfLiveTimeline","setScrollState","_getScrollState","_updateRoomMembers","ctrlCmdOnly","onMuteAudioClick","onMuteVideoClick","_checkIfAlone","injectSticker","sendContentListToRoom","onCancelSearchClick","_updatePreviewUrlVisibility","_updateE2EStatus","onRoomRecoveryReminderDontAskAgain","canResetTimeline","_calculatePeekRules","_loadMembersIfJoined","_calculateRecommendedVersion","_updatePermissions","guestAccessEvent","historyVisibility","showUrlPreview","e2eStatus","updateTint","colorScheme","primary_color","secondary_color","dueToMember","_updateDMState","memberCountInfluence","countInfluence","warnedAboutLonelyRoom","joinedOrInvitedMemberCount","confMember","confCall","displayConfCallNotification","dmInviter","onSearchResultsFillRequest","searchPromise","_handleSearchResult","onInviteButtonClick","onStopAloneWarningClick","deferred_action","signUrl","onMessageListScroll","_updateTopUnreadMessagesBar","dataTransfer","dropEffect","sendStickerContentToRoom","onSearch","searchTerm","searchScope","searchHighlights","searchResultsPanel","resetScrollState","searchId","localSearchId","searchInProgress","getSearchResultTiles","SearchResultTile","scrollPanel","checkScroll","lastRoomId","mxEv","resultLink","searchResult","onPinnedClick","nowShowingPinned","onSettingsClick","onCancelClick","onLeaveClick","onForgetClick","errCode","onRejectButtonClicked","rejecting","rejectError","onRejectThreepidInviteButtonClicked","onSearchClick","jumpToLiveTimeline","jumpToReadMarker","forgetReadMarker","showBar","canJumpToReadMarker","scrollState","stuckAtBottom","trackedScrollToken","onFullscreenClick","fullscreen","onStatusBarVisible","onStatusBarHidden","handleScrollKey","_gatherTimelinePanelRef","_getOldRoom","_getHiddenHighlightCount","_onHiddenHighlightsClick","RoomHeader","ForwardMessage","AuxPanel","SearchBar","PinnedEventsPanel","ScrollPanel","RoomPreviewBar","TimelinePanel","RoomUpgradeWarningBar","RoomRecoveryReminder","ErrorBoundary","canPreview","previewLoading","inviterName","invitedEmail","onJoinClick","onRejectClick","inviteEvent","inCall","scrollheader_classes","mx_RoomView_scrollheader","statusBar","isStatusAreaExpanded","UploadBar","RoomStatusBar","sentMessageAndIsAlone","hasActiveCall","onInviteClick","onStopWarningClick","onVisible","onHidden","roomVersionRecommendation","showRoomUpgradeBar","showRoomRecoveryReminder","hiddenHighlightCount","aux","previewBar","hideCancel","hideRightPanel","recommendation","onDontAskAgainSet","auxPanel","fullHeight","hideAppsDrawer","messageComposer","searchInfo","MessageComposer","SlateMessageComposer","searchCount","voiceMuteButton","zoomButton","videoMuteButton","marginRight","hideMessagePanel","onFillRequest","shouldHighlight","highlightedEventId","showReadReceipts","manageReadReceipts","manageReadMarkers","eventPixelOffset","onReadMarkerUpdated","showReactions","topUnreadMessagesBar","TopUnreadMessagesBar","onScrollUpClick","onCloseClick","jumpToBottom","JumpToBottomButton","onScrollToBottomClick","statusBarAreaClass","fadableSectionClasses","rightPanel","inRoom","encodeBase64","uint8Array","latin1String","paddedBase64","inputLength","outputLength","plaintextBuffer","cryptoKey","exportedKey","ciphertextBuffer","sha256Buffer","ivArray","getRandomValues","subtle","generateKey","generateKeyResult","exportKey","exportKeyResult","digest","digestResult","iv","hashes","sha256","decodeBase64","expectedSha256base64","importKey","importKeyResult","counterLength","EditorStateTransfer","_serializedParts","TopLeftMenu","_LogoutDialog2","_HostingLink","viewHomePage","openSettings","signIn","signOut","hostingSignupLink","hostingSignup","homePageItem","hasHomePage","signInOutItem","settingsItem","LogoutDialog","_onSettingsLinkClick","_onExportE2eKeysClicked","_onSetRecoveryMethodClick","_onLogoutConfirm","shouldLoadBackupStatus","_loadBackupStatus","createTrackedDialogAsync","RestoreKeyBackupDialog","dialogContent","setupButtonCaption","defaultToInitialLetter","onClientSync","newImageUrls","imageUrls","oldImageUrls","syncState","urlsIndex","defaultImageUrl","onError","lineHeight","imgNode","_phonenumber","COUNTRIES_BY_ISO2","COUNTRIES","iso2","countryMatchesSearchQuery","CountryDropdown","_onSearchChange","_onOptionChange","_getShortOption","defaultCountry","defaultCountryCode","searchQuery","onOptionChange","isSmall","countryPrefix","showPrefix","_flagImgForIso2","Dropdown","displayedCountries","matched","onSearchChange","getShortOption","searchEnabled","PHONE_NUMBER_REGEXP","_AutoDiscoveryUtils2","_matrix","ServerConfig","onHomeserverBlur","_hsTimeoutId","_waitThenInvoke","validateServer","onHomeserverChange","onIdentityServerBlur","_isTimeoutId","onIdentityServerChange","onAfterSubmit","showHelpPopup","CustomServerDialog","showIdentityServer","validateAndApplyServer","showIdentityServerIfRequiredByHomeserver","isIdentityServerRequiredByHomeserver","onServerConfigChange","validateServerConfigWithStaticUrls","authComponentStateForError","existingTimeoutId","delayTimeMs","submitText","submitClass","_renderHomeserverSection","_renderIdentityServerSection","StatusMessageContextMenu","comittedStatusMessage","waiting","_onClearClick","_onStatusChange","actionButton","viewAvatarOnClick","getImageUrls","getRoomAvatarUrl","onRoomAvatarClick","ImageView","Lifecycle","_velocityAnimate2","DeactivateAccountDialog","_passwordField","_onOk","_onEraseFieldChange","shouldErase","errStr","deactivateAccount","okLabel","okEnabled","onEnterPressed","titleClass","AdvancedRoomSettingsTab","_upgradeRoom","RoomUpgradeDialog","_openDevtools","_onOldRoomClicked","closeSettingsFn","additionalStateChanges","upgraded","replacement_room","unfederatableSection","roomUpgradeButton","oldRoomLink","hasPreviousRoom","BannedUser","plEventsToLabels","plEventsToShow","parseIntWithDefault","_temp","_onUnbanClick","onUnbanned","unbanButton","canUnban","RolesRoomSettingsTab","_temp2","_ret2","_onPowerLevelsChanged","powerLevelKey","plContent","parentObj","_onUserPowerLevelChanged","eventsSection","stateLevel","eventsLevel","desiredEvent","PowerSelector","canChangeLevels","powerLevelDescriptors","eventsLevels","userLevels","banLevel","defaultUserLevel","currentUserLevel","_populateDefaultPlEvents","privilegedUsersSection","mutedUsersSection","privilegedUsers","mutedUsers","canChange","plDiff","toLocaleLowerCase","banned","bannedUsersSection","canBanUsers","banEvent","bannedBy","powerSelectors","eventPowerSelectors","_RoomProfileSettings2","_LabelledToggleSwitch2","GeneralRoomSettingsTab","onRoomPublishChange","valueBefore","isRoomPublished","setRoomDirectoryVisibility","_onLeaveClick","getRoomDirectoryVisibility","AliasSettings","RelatedGroupSettings","UrlPreviewSettings","canActuallySetAliases","canSetCanonical","canonicalAliasEv","canChangeGroups","groupsEvent","canSetCanonicalAlias","canSetAliases","canonicalAliasEvent","canSetRelatedGroups","_Field2","RoomProfileSettings","_initialiseProps","avatarEvent","topicEvent","nameEvent","originalDisplayName","originalAvatarUrl","avatarFile","originalTopic","enableProfileSave","canSetName","canSetTopic","canSetAvatar","showOverlayAnyways","avatarElement","avatarOverlayClasses","avatarHoverElement","_uploadAvatar","disabledOverlayClasses","_saveProfile","noValidate","_onAvatarChanged","_onDisplayNameChanged","_onTopicChanged","avatarUpload","SecurityRoomSettingsTab","_onStateEvent","_onEncryptionChange","confirm","beforeEncrypted","_fixGuestAccess","beforeJoinRule","joinRule","beforeGuestAccess","guestAccess","_onRoomAccessRadioToggle","_onHistoryRadioToggle","beforeHistory","_updateBlacklistDevicesFlag","_pullContentPropertyFromEvent","hasAliases","canChangeAccess","guestWarning","aliasWarning","canChangeHistory","SettingsFlag","hasEncryptionPermission","canEnableEncryption","encryptionSettings","_renderRoomAccess","_renderHistory","NotificationsSettingsTab","currentSound","uploadedFile","soundData","soundUpload","_saveSound","currentUploadedFile","_clearSound","_onSoundUploadChanged","_triggerUploader","_onClickSaveSound","MODE_NUMBER","MODE_ALPHA_NUM","MODE_8BIT_BYTE","MODE_KANJI","L","M","Q","H","QRPolynomial","getLength","gexp","glog","ratio","QRMath","LOG_TABLE","EXP_TABLE","sendResponse","sendError","nestedError","setWidget","widget_id","getWidgets","widgetStateEvents","returnStateEvent","onMessage","configUrl","openManagerUrl","eventOriginUrl","api","getMembershipState","inviteUser","botOptions","setBotOptions","getStateEvent","powerEvent","setBotPower","is_state","canSendEvent","getRoomEncState","getMembershipCount","setPlumbingState","getJoinRules","startListening","stopListening","setOpenManagerUrl","languageHandler","_ProfileSettings2","_LanguageDropdown2","_DeactivateAccountDialog2","_theme","_boundThreepids","GeneralUserSettingsTab","haveIdServer","_getThreepidState","_onEmailsChange","emails","_onMsisdnsChange","msisdns","_onLanguageChange","newLanguage","_onThemeChange","newTheme","_onPasswordChangeError","errMsg","_onPasswordChanged","_onDeactivateClicked","serverSupportsSeparateAddAndBind","idServerHasUnsignedTerms","requiredPolicyInfo","hasTerms","threepids","_checkTerms","getThreepidsWithBindStatus","idAccessToken","policiesAndServices","idServerName","ChangePassword","EmailAddresses","PhoneNumbers","passwordChangeForm","rowClassName","buttonKind","threepidSection","onEmailsChange","onMsisdnsChange","SetIdServer","InlineTermsAgreement","intro","introElement","missingTerms","SetIntegrationManager","discoWarning","_renderProfileSection","_renderAccountSection","_renderLanguageSection","_renderThemeSection","_renderDiscoverySection","_renderIntegrationManagerSection","_renderManagementSection","ProfileSettings","LanguageDropdown","_language","getLanguageFromBrowser","languageMatchesSearchQuery","filterMedium","lookupResults","getThreePids","bulkLookupThreePids","threepid","LabsSettingToggle","_onChange","setFeatureEnabled","featureId","LabsUserSettingsTab","getLabsFeatures","IgnoredUser","_onUnignoreClicked","onUnignored","SecurityUserSettingsTab","_updateAnalytics","disable","_onImportE2eKeysClicked","_onUserUnignored","_getInvitedRooms","_manageInvites","invitedRoomIds","managingInvites","invitedRoomAmt","retry_after_ms","_onAcceptAllInvitesClicked","_onRejectAllInvitesClicked","invitedRooms","ignoredUserIds","identityKey","importExportButtons","InlineSpinner","onClickAccept","onClickReject","DevicesPanel","KeyBackupPanel","keyBackup","_renderCurrentDeviceInfo","showDetailsModal","_renderIgnoredUsers","_renderManageInvites","NotificationUserSettingsTab","Notifications","PreferencesUserSettingsTab","_onAutoLaunchChange","setAutoLaunchEnabled","autoLaunch","_onAlwaysShowMenuBarChange","setAutoHideMenuBarEnabled","alwaysShowMenuBar","_onMinimizeToTrayChange","setMinimizeToTrayEnabled","minimizeToTray","_onAutocompleteDelayChange","_onReadMarkerInViewThresholdMs","readMarkerInViewThresholdMs","_onReadMarkerOutOfViewThresholdMs","readMarkerOutOfViewThresholdMs","autoLaunchSupported","alwaysShowMenuBarSupported","minimizeToTraySupported","supportsAutoLaunch","getAutoLaunchEnabled","supportsAutoHideMenuBar","getAutoHideMenuBarEnabled","supportsMinimizeToTray","getMinimizeToTrayEnabled","settingIds","autoLaunchOption","autoHideMenuOption","minimizeToTrayOption","_renderGroup","COMPOSER_SETTINGS","TIMELINE_SETTINGS","ROOM_LIST_SETTINGS","ADVANCED_SETTINGS","_CallMediaHandler2","Modal","VoiceUserSettingsTab","_refreshMediaDevices","activeAudioOutput","activeAudioInput","activeVideoInput","getTracks","_requestMediaPermissions","_setAudioOutput","_setAudioInput","_setVideoInput","_changeWebRtcMethod","p2p","_changeFallbackICEServerAllowed","requestButton","speakerDropdown","microphoneDropdown","webcamDropdown","defaultOption","getDefaultDevice","audioOutputs","defaultDevice","_renderDeviceOptions","audioInputs","_defaultDevice","videoInputs","_defaultDevice2","packageJson","REACT_SDK_VERSION","gitHead","semVerRegex","ghVersionLabel","repo","HelpUserSettingsTab","_onClearCacheAndReload","_onBugReport","BugReportDialog","_onStartBotChat","welcomeUserId","_showSpoiler","selectNodeContents","removeAllRanges","addRange","vectorVersion","canUpdate","canSelfUpdate","terms_and_conditions_links","legalLinks","tocEntry","faqText","reactSdkVersion","updateButton","_renderLegal","_renderCredits","_GroupUserSettings2","FlairUserSettingsTab","getJoinedGroups","groupPublicityToggles","GroupPublicityToggle","WidgetOpenIDPermissionsDialog","_onAllow","_onPermissionSelection","_onDeny","_onRememberSelectionChange","newVal","rememberSelection","currentValues","securityKey","getWidgetSecurityKey","AppPermission","curlBase","getCurlBase","wurl","curl","curlString","searchParams","URLSearchParams","e2eWarningText","cookieWarning","AppWarning","imgClass","imgClassName","_onFlairStoreUpdated","_refreshGroup","refreshGroupRooms","refreshGroupMembers","_openContextMenu","TagTileContextMenu","onContextButtonClick","onMouseOver","onMouseOut","mx_TagTile","mx_TagTile_selected","getGroupBadge","badgeElement","tip","contextButton","FlairAvatar","groupProfile","Flair","profiles","_generateAvatars","_getGroupProfiles","avatars","ManageIntegsButton","onManageIntegrations","openNoManagerDialog","integrationsButton","_resizeObserverPolyfill2","getContainer","containerId","collectChildContainer","collectChild","_repositionChild","resizeObserver","childContainer","unobserve","updateChild","updateChildVisibility","updateChildPosition","parentRect","pillifyLinks","pillified","isMessagePillUrl","pillContainer","pill","inMessage","replaceChild","_Pill","currentTextNode","roomNotifTextNodes","roomNotifPos","nextTextNode","roomTextNode","roomNotifLen","pushProcessor","atRoomRule","roomNotifTextNode","_pillContainer","_pill","TYPE_AT_ROOM_MENTION","HiddenImagePlaceholder","_MFileBody2","MImageBody","onImageError","onImageLoad","onImageEnter","onImageLeave","_isGif","decryptedUrl","decryptedThumbnailUrl","imgError","imgLoaded","loadedImageDimensions","showImage","_getThumbUrl","image","_refs$image","naturalWidth","naturalHeight","pixelRatio","thumbWidth","thumbHeight","isLargerThanThumbnail","thumbnailPromise","thumbnailUrl","_afterComponentDidMount","_afterComponentWillUnmount","thumbUrl","infoWidth","infoHeight","imageElement","wrapImage","maxImageHeight","gifLabel","getPlaceholder","showPlaceholder","getTooltip","_messageContent","fileBody","getFileBody","getEventTileOps","UnknownBody","bodyTypes","evTypes","BodyType","editState","MEMBER_PHASES","RoomHeaderButtons","_onFilesClicked","_onNotificationsClicked","_ScalarMessaging2","apps","_getApps","_updateApps","hideWidgetKey","makeAppConfig","onClickAddWidget","getCapWhitelistForAppTypeInRoomId","addWidget","baseIsTypedArray","_CommandProvider2","_CommunityProvider2","_DuckDuckGoProvider2","_RoomProvider2","_UserProvider2","_EmojiProvider2","_NotifProvider2","PROVIDERS","Autocompleter","providers","Prov","completionsList","completionsState","getCurrentCommand","DocumentOffset","_model","bIsLarger","forwardsWhile","backwardsWhile","newLength","oldLength","iteratePartsBetween","startIdx","_replaceRange","serializedPart","mdSerialize","htmlSerializeIfNeeded","_ref$forceHTML","forceHTML","md","_Markdown2","isPlainText","toHTML","textSerialize","containsEmote","stripEmoteCommand","unescapeMessage","_Markdown","_commonmark2","_escape2","ALLOWED_HTML_TAGS","TEXT_NODES","is_allowed_html_tag","literal","html_if_tag_allowed","lit","is_multi_line","par","Markdown","renderer","HtmlRenderer","softbreak","real_paragraph","paragraph","html_inline","html_block","XML","HTML","decodeStrict","HTMLStrict","encodeHTML4","encodeHTML5","decodeXMLStrict","decodeHTML4","decodeHTML5","decodeHTML4Strict","decodeHTML5Strict","Renderer","ast","lastOut","findReadReceiptFromUserId","receiptKeys","rcpt","plural","msAbs","isPlural","long","fmtLong","fmtShort","decodeSafe","decodeURI","_MessageEvent2","_MemberAvatar2","mxRoom","onUnpinned","onTileClicked","onUnpinClicked","pinnedEvents","pinned","_canUnpin","unpinButton","roomShape","onMouseDown","_linkifyTopic","onTopicClick","guestRead","guestJoin","perms","CancelButton","ACTION_NOTIFY_DEFAULT_SOUND","ACTION_NOTIFY_RING_SOUND","ACTION_HIGHLIGHT","ACTION_DONT_NOTIFY","ACTION_DISABLED","_inheritsLoose","subscriptionShape","trySubscribe","tryUnsubscribe","notifyNestedSubs","storeShape","createProvider","_Provider$childContex","subscriptionKey","Provider","_Component","_objectWithoutPropertiesLoose","excluded","sourceKeys","CLEARED","nullListeners","Subscription","parentSub","onStateChange","addNestedSub","hotReloadingVersion","dummyState","connectAdvanced","selectorFactory","_contextTypes","_childContextTypes","_ref2$getDisplayName","_ref2$methodName","_ref2$renderCountProp","renderCountProp","_ref2$shouldHandleSta","shouldHandleStateChanges","_ref2$storeKey","_ref2$withRef","withRef","connectOptions","WrappedComponent","wrappedComponentName","selectorFactoryOptions","Connect","propsMode","setWrappedInstance","initSelector","initSubscription","subscription","getWrappedInstance","wrappedInstance","sourceSelector","makeSelectorStateful","notifyNestedSubsOnComponentDidUpdate","addExtraProps","withExtras","wrapMapToPropsConstant","getConstant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","stateOrDispatch","ownProps","mapDispatchToProps","mapStateToProps","defaultMergeProps","stateProps","dispatchProps","mergeProps","mergedProps","pure","areMergedPropsEqual","hasRunOnce","nextMergedProps","wrapMergePropsFunc","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","hasRunAtLeastOnce","handleSubsequentCalls","nextOwnProps","nextStateProps","statePropsChanged","propsChanged","stateChanged","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","strictEqual","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","_ref$selectorFactory","_ref3$pure","_ref3$areStatesEqual","_ref3$areOwnPropsEqua","_ref3$areStatePropsEq","_ref3$areMergedPropsE","extraOptions","symbolObservablePonyfill","observable","ReactIs","REACT_STATICS","contextType","getDerivedStateFromError","getDerivedStateFromProps","mixins","KNOWN_STATICS","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","ForwardRef","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","EXPRESSION_LEFT_TO_RIGHT","EXPRESSION_RIGHT_TO_LEFT","compareDocumentPosition","_babelPolyfill","DEFINE_PROPERTY","$getPrototypeOf","$freeze","$seal","$preventExtensions","$isFrozen","$isSealed","$isExtensible","FProto","nameRE","HAS_INSTANCE","FunctionProto","$Number","BROKEN_COF","TRIM","argument","third","maxCode","digits","aNumberValue","$toFixed","c2","numToString","fractionDigits","z","x2","$toPrecision","toPrecision","_isFinite","MIN_SAFE_INTEGER","$acosh","acosh","MAX_VALUE","$asinh","asinh","$atanh","atanh","cbrt","clz32","LOG2E","cosh","hypot","value1","value2","larg","$imul","xn","yn","xl","yl","log10","LOG10E","log2","sinh","tanh","trunc","$fromCodePoint","fromCodePoint","callSite","tpl","codePointAt","$endsWith","$startsWith","$toISOString","lz","getUTCFullYear","getUTCMilliseconds","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","DateProto","hint","upTo","$sort","$forEach","STRICT","$filter","$some","$every","$reduce","$indexOf","NEGATIVE_ZERO","$find","$flags","$RegExp","CORRECT_NEW","tiRE","piRE","fiU","advanceStringIndex","regExpExec","$match","maybeCallNative","rx","fullUnicode","matchStr","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","REPLACE","$replace","replaceValue","functionalReplace","accumulatedResult","nextSourcePosition","captures","namedCaptures","replacerArgs","getSubstitution","ch","sameValue","SEARCH","$search","previousLastIndex","callRegExpExec","$min","$push","SUPPORTS_Y","SPLIT","$split","internalSplit","lastLength","lastLastIndex","splitLimit","separatorCopy","unicodeMatching","lim","Internal","newGenericPromiseCapability","OwnPromiseCapability","microtask","newPromiseCapabilityModule","perform","v8","$Promise","FakePromise","PromiseRejectionEvent","isThenable","isReject","ok","reaction","exited","_h","onHandleUnhandled","onUnhandled","unhandled","isUnhandled","onunhandledrejection","_a","onrejectionhandled","$reject","_w","$resolve","$index","alreadyCalled","$isView","fin","viewS","viewT","rApply","fApply","thisArgument","argumentsList","rConstruct","NEW_TARGET_BUG","ARGS_BUG","Target","$args","propertyKey","deleteProperty","Enumerate","enumerate","V","existingDescriptor","ownDesc","setProto","$includes","arraySpeciesCreate","depthArg","$pad","WEBKIT_BUG","getFlags","RegExpProto","$RegExpStringIterator","_r","matchAll","getDesc","$values","__defineGetter__","__lookupGetter__","__lookupSetter__","DEG_PER_RAD","RAD_PER_DEG","degrees","radians","fscale","iaddh","x0","x1","y0","y1","$x0","$y0","isubh","imulh","$u","$v","u0","v0","u1","v1","umulh","signbit","toMetaKey","ordinaryDefineOwnMetadata","defineMetadata","metadataKey","metadataValue","deleteMetadata","ordinaryHasOwnMetadata","ordinaryGetOwnMetadata","ordinaryGetMetadata","getMetadata","ordinaryOwnMetadataKeys","ordinaryMetadataKeys","oKeys","pKeys","getMetadataKeys","getOwnMetadata","getOwnMetadataKeys","ordinaryHasMetadata","hasMetadata","hasOwnMetadata","$metadata","asap","OBSERVABLE","cleanupSubscription","subscriptionClosed","_o","closeSubscription","SubscriptionObserver","$Observable","Observable","MSIE","boundArgs","$task","ArrayValues","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","$re","regExp","vector_indexeddb_worker_script","setIndexedDbWorkerScript","CallHandler","VectorConferenceHandler","onHashChange","locateFile","olmWasmPath","ipcRenderer","ElectronPlatform","migrateFromOldOrigin","WebPlatform","configError","configSyntaxError","SyntaxError","loadLanguage","fragparts","parseQsFromFragment","parseQs","isIos","MSStream","InstallTrigger","GenericErrorPage","matrixChat","ReactDOM","validBrowser","checkBrowserFeatures","acceptInvalidBrowser","urlWithoutQuery","startUpdater","verifyServerConfig","MatrixChat","onNewScreen","makeRegistrationUrl","realQueryParams","startingFragmentQueryParams","disable_guests","onTokenLoginCompleted","initialScreenAfterLogin","getScreenFromLocation","getDefaultDeviceDisplayName","CompatibilityPage","onAccept","loadApp","validatedConfig","incompatibleOptions","lastLocationHashSet","featureList","Modernizr","featureComplete","showScreen","routeUrl","rageshake","mxSendRageshake","withLogs","userText","sendLogs","progressCallback","for","aa","ba","ca","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","isReactComponent","isPureReactComponent","I","suspense","J","__self","__source","$$typeof","_owner","N","keyPrefix","ea","fa","da","X","createRef","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","Consumer","forwardRef","lazy","_ctor","_status","useCallback","useContext","useEffect","useImperativeHandle","useDebugValue","useLayoutEffect","useMemo","useReducer","useRef","useState","Profiler","StrictMode","Suspense","unstable_SuspenseList","createFactory","unstable_withSuspenseConfig","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentDispatcher","ReactCurrentBatchConfig","ReactCurrentOwner","IsSomeRendererActing","Y","Z","testRunner","tests","setClasses","docElement","_config","classPrefix","baseVal","enableJSClass","enableClasses","getBody","injectElementWithStyles","styleSheet","background","domToCSS","nativeTestProps","supports","cssToDOM","testProps","mStyle","modElem","fnBind","testDOMProps","testPropsAll","cssomPrefixes","domPrefixes","testAllProps","ModernizrProto","usePrefixes","_q","addTest","addAsyncTest","testStyles","omPrefixes","_cssomPrefixes","_domPrefixes","stringAccess","reservedWords","zeroWidthChars","eval","es5array","es5date","es5function","es5object","strictmode","es5string","es5syntax","es5undefined","atRule","CSSRule","prefixed","indexeddb","seal","isFrozen","isSealed","extractEvents","eventTypes","phasedRegistrationNames","ha","registrationName","ia","ja","ka","la","ma","na","oa","pa","qa","sa","ta","va","wa","ra","xa","ya","za","Aa","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","Ba","Ca","injectEventPluginOrder","injectEventPluginsByName","Da","stateNode","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","dispatchConfig","Na","_targetInst","Oa","Pa","Qa","Ra","Sa","Ta","animationend","animationiteration","animationstart","transitionend","Ua","Va","Wa","transition","Xa","Ya","Za","ab","bb","eb","fb","gb","hb","isDefaultPrevented","defaultPrevented","jb","eventPool","kb","destructor","ib","getPooled","cancelBubble","eventPhase","bubbles","timeStamp","isTrusted","lb","mb","nb","ob","pb","qb","sb","tb","ub","beforeInput","bubbled","captured","compositionEnd","compositionStart","compositionUpdate","vb","wb","xb","yb","Cb","Ab","Bb","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","datetime","month","tel","week","Qb","Rb","srcElement","correspondingUseElement","Sb","Tb","Vb","_valueTracker","stopTracking","Ub","Wb","Xb","Yb","Zb","$b","bc","cc","dc","ec","fc","gc","hc","jc","kc","lc","mc","oc","_debugOwner","_debugSource","lineNumber","qc","rc","sc","tc","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","sanitizeURL","xc","yc","zc","vc","wc","uc","removeAttribute","setAttributeNS","Ac","Bc","defaultChecked","_wrapperState","initialChecked","Cc","controlled","Dc","Ec","Fc","Gc","xlinkHref","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","detachEvent","Qc","Rc","Sc","Tc","Uc","Vc","_isInputEventSupported","Wc","Xc","Alt","Control","Meta","Shift","Yc","getModifierState","Zc","$c","ad","bd","cd","dd","buttons","relatedTarget","fromElement","toElement","movementX","movementY","ed","pointerId","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","fd","mouseEnter","mouseLeave","pointerEnter","pointerLeave","gd","alternate","hd","jd","kd","responder","ld","effectTag","od","qd","pd","rd","animationName","elapsedTime","pseudoElement","sd","ud","charCode","vd","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","wd","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","xd","yd","zd","touches","targetTouches","changedTouches","Ad","Bd","wheelDeltaX","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Cd","Dd","Ed","Fd","Gd","Hd","Id","Jd","Kd","Ld","eventPriority","Md","getEventPriority","Nd","Od","Pd","targetInst","containerInfo","topLevelType","Qd","Rd","Sd","Td","Ud","Vd","Wd","Xd","Yd","Zd","HTMLIFrameElement","be","ce","ee","fe","ge","he","ie","selectionStart","selectionEnd","je","onSelect","le","ke","defaultSelected","ne","pe","qe","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","mathml","se","te","ue","ve","MSApp","execUnsafeLocalFunction","namespaceURI","we","xe","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","orphans","tabSize","widows","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","ye","ze","Ae","Ce","menuitem","De","Ee","Fe","Ge","He","Ie","Je","Ke","Le","Me","Ne","Oe","Pe","Qe","Re","Se","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Te","Ue","Ve","We","Xe","__reactInternalMemoizedMergedChildContext","Ye","Ze","unstable_runWithPriority","$e","unstable_scheduleCallback","af","unstable_cancelCallback","bf","unstable_shouldYield","cf","unstable_requestPaint","df","unstable_now","ef","unstable_getCurrentPriorityLevel","ff","unstable_ImmediatePriority","hf","unstable_UserBlockingPriority","jf","unstable_NormalPriority","kf","unstable_LowPriority","lf","unstable_IdlePriority","mf","nf","pf","qf","rf","sf","tf","uf","vf","wf","xf","yf","zf","Af","Cf","Df","Ef","Ff","Gf","Hf","If","Jf","childExpirationTime","Kf","firstContext","expirationTime","Lf","Mf","observedBits","responders","Nf","Of","baseState","firstUpdate","lastUpdate","firstCapturedUpdate","lastCapturedUpdate","firstEffect","lastEffect","firstCapturedEffect","lastCapturedEffect","Pf","Qf","suspenseConfig","nextEffect","Rf","Sf","updateQueue","memoizedState","Tf","Uf","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","fg","_reactInternalFiber","cg","dg","eg","gg","hg","ig","UNSAFE_componentWillReceiveProps","jg","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","kg","lg","_stringRef","mg","ng","pg","elementType","qg","implementation","rg","sg","rb","Be","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Hg","memoizedProps","revealOrder","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","dh","eh","fh","hh","ih","jh","kh","lh","mh","lastRenderedReducer","lastRenderedState","eagerReducer","eagerState","nh","deps","oh","ph","qh","rh","sh","readContext","useResponder","uh","vh","wh","xh","yh","pendingProps","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","UNSAFE_componentWillUpdate","componentWillUpdate","Mh","Nh","pendingContext","Oh","Ph","unstable_avoidThisFallback","Qh","isBackwards","rendering","tailExpiration","tailMode","Rh","Sh","Th","Uh","Vh","Wh","$h","ai","bi","onclick","ci","WeakSet","di","gi","fi","ji","ei","ki","ni","_reactRootContainer","oi","wasMultiple","pi","qi","ri","si","ti","ui","vi","wi","componentDidCatch","xi","componentStack","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","Ti","Ui","Vi","Wi","Xi","Yi","pingTime","Zi","firstPendingTime","lastPendingTime","callbackExpirationTime","callbackNode","$i","aj","bj","cj","ej","fj","gj","hj","finishedWork","finishedExpirationTime","timeoutHandle","ij","jj","pingCache","kj","lj","firstBatch","_defer","_expirationTime","_onComplete","dj","busyMinDurationMs","busyDelayMs","mj","nj","zb","focusedElem","selectionRange","gh","oj","__reactInternalSnapshotBeforeUpdate","$d","$a","Fj","Xh","Yh","Gj","nd","Zh","gf","pj","qj","rj","Bf","sj","hydrate","unstable_observedBits","uj","pendingChildren","vj","wj","xj","yj","zj","Bj","_callbacks","_hasChildren","_didComplete","Cj","_didCommit","_onCommit","Dj","_internalRoot","Ej","Hj","Jj","hasAttribute","Ij","Kj","Aj","querySelectorAll","unmount","createBatch","Nj","createPortal","unstable_renderSubtreeIntoContainer","unstable_createPortal","unstable_batchedUpdates","unstable_interactiveUpdates","unstable_discreteUpdates","unstable_flushDiscreteUpdates","flushSync","unstable_createRoot","unstable_createSyncRoot","unstable_flushControlled","Events","findFiberByHostInstance","bundleType","rendererPackageName","isDisabled","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","tj","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","Oj","Pj","unstable_forceFrameRate","priorityLevel","startTime","unstable_next","unstable_wrapCallback","unstable_continueExecution","unstable_pauseExecution","unstable_getFirstCallbackNode","Skinner","components","compKeys","addComponent","replaces","mxSkinner","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","lookup","isLE","RemoteIndexedDBStoreBackend","_workerScript","_workerApi","_worker","_nextSeq","_startPromise","_ensureStarted","_doCmd","_onWorkerMessage","PARAM_REGEXP","TEXT_REGEXP","TOKEN_REGEXP","QESC_REGEXP","QUOTE_REGEXP","TYPE_REGEXP","qstring","ContentType","parameters","getHeader","getcontenttype","_logger","TIMER_CHECK_PERIOD_MS","_count","_realCallbackKey","_callbackList","setNow","_scheduleRealCallback","runAt","_runCallbacks","callbacksToRun","binarySearch","RoomList","_roomEncryption","outgoingRoomKeyRequestsStore","_db","stateIndex","wantedState","promiseifyTxn","_wantedState","getReq","abortWithException","countReq","lastReceivedMessageTs","addReq","sessionGetReq","_mx_abortexception","onabort","ROOM_KEY_REQUEST_STATES","OutgoingRoomKeyRequestManager","_sendOutgoingRoomKeyRequestsTimer","_sendOutgoingRoomKeyRequestsRunning","_startTimer","updatedReq","cancellationTxnId","requestTxnId","_sendOutgoingRoomKeyRequestCancellation","stringifyRequestBody","_sendOutgoingRoomKeyRequests","_sendOutgoingRoomKeyRequest","stringifyRecipientList","requestMessage","_sendMessageToDevices","andResend","contentMap","recip","_Base4","MATRIXTO_REGEXP","KEY_REGEXP","newQRCodeError","_Base","_Base2","_verifyKeys","_Base3","_anotherJson2","olmutil","newMismatchedSASError","newMismatchedCommitmentError","emojiMapping","sasGenerators","decimal","sasBytes","emoji","generateSas","sas","macMethods","KEY_AGREEMENT_LIST","HASHES_LIST","MAC_LIST","SAS_LIST","KEY_AGREEMENT_SET","HASHES_SET","MAC_SET","SAS_SET","anArray","aSet","Utility","_doRespondVerification","_doSendVerification","initialMessage","sasMethods","macMethod","hashCommitment","olmSAS","commitmentStr","sasInfo","verifySAS","key_agreement_protocols","message_authentication_codes","short_authentication_string","_waitForEvent","key_agreement_protocol","message_authentication_code","commitment","get_pubkey","set_their_key","generate_bytes","_sendMAC","mismatch","_checkMAC","keyAgreement","hashMethod","baseInfo","_initialiseAccount","pickleKey","account","pickledAccount","unpickle","pickle","MAX_PLAINTEXT_LENGTH","checkPayloadLength","payloadString","_pickleKey","_maxOneTimeKeys","_outboundGroupSessionStore","_inboundGroupSessionMessageIndexes","e2eKeys","Account","identity_keys","max_number_of_one_time_keys","get_library_version","_getAccount","_storeAccount","_getSession","_unpickleSession","Session","_saveSession","pickledSessionInfo","_getUtility","utility","mark_keys_as_published","numKeys","generate_one_time_keys","theirIdentityKey","theirOneTimeKey","newSessionId","create_outbound","createInboundSession","theirDeviceIdentityKey","messageType","create_inbound_from","remove_one_time_keys","getSessionIdsForDevice","sessionIds","nowait","sessionInfos","idxOfBest","thisSessInfo","thisLastReceived","bestSessInfo","bestLastReceived","deviceIdentityKey","sessInfo","hasReceivedMessage","has_received_message","decryptMessage","matchesSession","_this13","matches_inbound","_saveOutboundGroupSession","pickledSession","_getOutboundGroupSession","pickled","OutboundGroupSession","createOutboundGroupSession","encryptGroupMessage","getOutboundGroupSessionKey","chain_index","message_index","session_key","_unpickleInboundGroupSession","InboundGroupSession","_getInboundGroupSession","_this14","addInboundGroupSession","_this15","existingSession","existingSessionData","import_session","decryptGroupMessage","_this16","plaintext","messageIndexKey","msgInfo","hasInboundSessionKeys","_this17","_x40","_x41","getInboundGroupSessionKey","chainIndex","_this18","exportedSession","export_session","senderEd25519Key","_x42","_x43","_x44","_x45","messageIndex","ed25519_verify","OlmEncryption","_sessionPrepared","_prepPromise","OlmDecryption","_ensureSession","claimedKeys","_decryptMessage","intended","our_key","reported_sender","reported_room","decryptionErrors","OutboundSessionInfo","useCount","creationTime","sharedWithDevices","MegolmEncryption","_setupPromise","_outboundSessions","_sessionRotationPeriodMsgs","_sessionRotationPeriodMs","rotation_period_ms","rotation_period_msgs","MegolmDecryption","_pendingEvents","needsRotation","rotationPeriodMsgs","rotationPeriodMs","sessionLifetime","markSharedWithDevice","sharedWithTooManyDevices","devicesInRoom","_ensureOutboundSession","prepareSession","oldSession","shareMap","userDevices","_prepareNewSession","_shareKeyWithDevices","returnSession","_splitUserDeviceMap","devicemap","mapSlices","currentSliceId","entriesInCurrentSlice","devicesToShareWith","sessionResults","_encryptAndSendKeysToDevices","userDeviceMap","obSessionInfo","sentChainIndex","sender_claimed_ed25519_key","userDeviceMaps","_getDevicesInRoom","_checkForUnknownDevices","payloadJson","isBlacklisting","_addEventToPendingList","_requestKeysForEvent","_removeEventFromPendingList","forwardingKeyChain","ed25519Key","_buildKeyForwardingMessage","sender_claimed_keys","_updateStoredDeviceKeysForUser","userStore","userResult","updated","deviceResult","_storeDeviceKeys","signKey","deviceStore","_olmlib2","_deviceinfo2","_devices","_userByIdentityKey","_deviceTrackingStatus","_syncToken","_serialiser","DeviceListUpdateSerialiser","_keyDownloadsInProgressByUser","_dirty","_savePromise","_resolveSavePromise","_savePromiseTime","_saveTimer","trackingStatus","idKey","targetTime","savePromise","resolveSavePromise","st","usersToDownload","downloadPromise","_doKeyDownload","_getDevicesFromStore","stored","devs","_step5$value","_identityKey","_step8$value","_step9$value","_identityKey2","updateDevicesForUsers","deviceList","_downloadInProgress","_keyDownloadsQueuedByUser","_queuedQueryDeferred","_doQueuedQueries","downloadUsers","downloadKeysForUsers","dk","_processQueryResponseForUser","_setRawStoredDevicesForUser","OLM_RECOVERY_KEY_PREFIX","parity","_bs2","recoverykey","PRIVATE_KEY_LENGTH","basex","_Buffer","ALPHABET","BASE_MAP","BASE","LEADER","FACTOR","iFACTOR","decodeUnsafe","psz","zeroes","b256","carry","it3","it4","vch","pbegin","pend","b58","it1","it2","_regenerator","deriveKey","backupData","DEFAULT_ITERATIONS","subtleCrypto","TextEncoder","keybits","deriveBits","maxInt","tMin","tMax","skew","damp","initialBias","initialN","regexPunycode","regexNonASCII","regexSeparators","baseMinusTMin","stringFromCharCode","mapDomain","ucs2decode","ucs2encode","digitToBasic","flag","adapt","numPoints","firstTime","basic","oldi","baseMinusT","bias","handledCPCount","basicLength","handledCPCountPlusOne","qMinusT","maxKeys","kstr","vstr","stringifyPrimitive","ks","EventContext","rank","eventContext","eventMapper","jsonContext","setPaginateToken","addEvents","ourEvent","_ourEventIndex","_paginateTokens","_paginateRequests","getTimeline","getOurEventIndex","getPaginateToken","filter_json","not_types","senders","not_senders","contains_url","_checkFields","literal_keys","actual_value","filter_value","type_prefix","_matches_wildcard","match_func","allowed_values","contains_url_filter","getFilterName","resolveInvitesToProfiles","pollTimeout","_peekRoomId","_currentSyncRequest","_syncState","_syncStateData","_catchingUp","_keepAliveTimer","_connectionReturnedDefer","_notifEvents","_failedSyncCount","_storeIsInvalid","createNewUser","_registerStateListeners","createGroup","_deregisterStateListeners","qps","leaveRooms","_mapSyncResponseToRoomArray","leaveObj","isBrandNewRoom","timelineEvents","_mapSyncEventsFormat","_processRoomEvents","_processEventsForNotifs","roomInitialSync","peekRoom","oldStateEvents","presenceEvent","_resolveInvites","_peekPoll","recoverFromSyncStartupError","savedSyncPromise","keepaliveProm","_startKeepAlives","_updateSyncState","_wasLazyLoadingToggled","lazyLoadMembersBefore","prevClientOptions","_shouldAbortSync","checkLazyLoadStatus","_doSyncRequest","savedSyncToken","_sync","_onOnlineBound","_onOnline","tok","savedSync","_syncFromCache","syncEventData","_processSyncResponse","syncOptions","_onSyncError","hasSyncedBefore","_getSyncParams","_getGuestFilter","disablePresence","set_presence","since","_cacheBuster","connDidFail","cancelledKeyVerificationTxns","to_device","toDeviceEvent","_processGroupSyncEntry","inviteObj","joinObj","ephemeralEvents","accountDataEvents","processRoomEvent","notification_count","highlight_count","device_lists","device_one_time_keys_count","_pokeKeepAlive","groupsSection","sectionName","groupInfo","isBrandNew","arrObj","_requestedProfileInfo","stateEventList","timelineEventList","timelineWasEmpty","_guestRooms","Relations","_onEventStatus","_removeEvent","_onBeforeRedaction","_removeAnnotationFromAggregation","_targetEvent","getLastReplacement","_annotationsByKey","_annotationsBySender","_sortedAnnotationsByKey","_addAnnotationToAggregation","eventsForKey","aEvents","eventsFromSender","minTs","getRelations","_serviceTypes","termsUrlForService","httpOpts","_txnCtr","stripProto","setIdentityServerUrl","isLoggedIn","isUsernameAvailable","bindThreepids","guestAccessToken","inhibitLogin","bind_email","bind_msisdn","inhibit_login","x_show_msisdn","registerRequest","login_data","loginWithPassword","loginWithSAML2","relayState","relay_state","getCasLoginUrl","redirectUrl","loginWithToken","erase","$loginType","$relationType","fetchRoomEvent","includeMembership","excludeMembership","atEventId","new_version","$groupId","setGroupProfile","setGroupJoinPolicy","removeUserFromGroup","$roleId","$categoryId","publicise","getJoinedRooms","getJoinedRoomMembers","publicRooms","query_params","createAlias","$alias","deleteAlias","resolveRoomAlias","setRoomDirectoryVisibilityAppService","networkId","$networkId","searchUserDirectory","unbindThreePid","deleteThreePid","setPassword","authDict","newPassword","setDeviceDetails","$device_id","deleteDevice","deleteMultipleDevices","getPushers","setPusher","pusher","$kind","$ruleId","setPushRuleActions","queryparams","$deviceId","key_algorithm","queries","getKeyChanges","oldToken","newToken","getIdentityHashDetails","identityHashedLookup","addressPairs","localMapping","foundAddresses","hashed","plainAddress","med","unhashed","lookupThreePid","v1results","originalQuery","getThirdpartyProtocols","getThirdpartyLocation","$protocol","getThirdpartyUser","termsUrls","user_accepts","reportEvent","score","retryAlgorithm","queueAlgorithm","RETRY_BACKOFF_RATELIMIT","QUEUE_MESSAGES","_queues","_activeQueues","_procFn","_startProcessingQueues","_processQueue","_peekNextEvent","_removeNextEvent","attempts","waitTimeMs","waitTime","removeEndToEndAccount","getEndToEndAccount","getAllEndToEndDevices","keyEndToEndDevicesForUser","getEndToEndDeviceTrackingStatus","KEY_END_TO_END_DEVICE_LIST_TRACKING_STATUS","getEndToEndDeviceSyncToken","KEY_END_TO_END_DEVICE_SYNC_TOKEN","removeEndToEndDeviceData","removeByPrefix","getKeysWithPrefix","removeAllEndToEndSessions","getAllEndToEndInboundGroupSessionKeys","removeAllEndToEndInboundGroupSessions","getAllEndToEndRooms","keyEndToEndRoom","removeAllEndToEndRooms","pubkey","KEY_END_TO_END_TRUSTED_BACKUP_PUBKEY","toRemove","_timelineSet","_eventCount","_windowLimit","windowLimit","TimelineIndex","initialWindowSize","initFields","eventIndex","canPaginate","paginate","makeRequest","requestLimit","pendingPaginate","retreat","advance","excess","unpaginate","startOfTimeline","cappedDelta","_requestCallback","doRequest","_busyChangedCallback","busyChanged","_stateUpdatedCallback","stateUpdated","startAuthStage","_resolveFunc","_rejectFunc","_inputs","_requestEmailTokenCallback","_clientSecret","_emailSid","emailSid","_requestingEmailToken","_chosenFlow","_currentStage","_submitPromise","attemptAuth","_startNextAuthStage","_doRequest","poll","getSessionId","getClientSecret","getStageParams","getChosenFlow","getEmailSid","errorFlows","haveFlows","requestTokenResult","stages","nextStage","_chooseStage","stageStatus","_chooseFlow","_firstUncompletedStage","haveEmail","haveMsisdn","flowHasEmail","flowHasMsisdn","stage","required_stages","available_flows","stageType","formats","arrayPrefixGenerators","brackets","indices","pushToArray","valueOrArray","toISO","defaultFormat","addQueryPrefix","allowDots","charsetSentinel","encoder","encodeValuesOnly","formatter","serializeDate","skipNulls","strictNullHandling","generateArrayPrefix","objKeys","normalizeStringifyOptions","arrayLimit","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","numberStr","parseKeys","givenKey","segment","cleanRoot","parseObject","normalizeParseOptions","tempObj","cleanStr","skipIndex","bracketEqualsPos","parseValues","_SettingsHandler3","DeviceSettingsHandler","watchManager","_featureNames","_readFeature","_getSettings","_writeFeature","notifyUpdate","featureName","RoomDeviceSettingsHandler","_read","_getKey","DefaultSettingsHandler","invertedDefaults","_defaults","_invertedDefaults","RoomAccountSettingsHandler","_MatrixClientBackedSe","newClient","_val","_content","AccountSettingsHandler","_val2","preferredValue","_content2","_content3","RoomSettingsHandler","_onEvent","ConfigSettingsHandler","settingsConfig","sprintf","except","strftime","translations","hasOwnProp","Counterpart","_registry","fallbackLocales","interpolations","normalizedKeys","keepTrailingDot","keyTransformer","generateMissingEntry","getFallbackLocale","getAvailableLocales","availableLocales","setAvailableLocales","getSeparator","setInterpolate","getInterpolate","setKeyTransformer","getKeyTransformer","getMissingEntryGenerator","registerInterpolations","onLocaleChange","addLocaleChangeListener","offLocaleChange","removeLocaleChangeListener","onTranslationNotFound","addTranslationNotFoundListener","offTranslationNotFound","removeTranslationNotFoundListener","addErrorListener","offError","removeErrorListener","fallbackLocale","_normalizeKeys","_fallback","fallbackKeys","_pluralize","_interpolate","localize","pluralizeFunc","withLocale","withScope","withSeparator","_normalizeKey","normalizedKeyArray","dateOrTime","Instance","Translator","toStr","hasOwnConstructor","hasIsPrototypeOf","getProperty","not_string","not_bool","not_type","not_primitive","numeric_arg","not_json","modulo","key_access","index_access","parse_tree","pad_character","pad_length","is_positive","tree_length","param_no","toExponential","pad_char","align","sprintf_format","fmt","sprintf_cache","_fmt","arg_names","field_list","replacement_field","field_match","sprintf_parse","vsprintf","ap","dateNames","hours12","hour","weekNumber","firstWeekday","wday","firstDayOfYear","weekNum","ordinal","tzString","getTimezoneOffset","counterpart","pluralize","short","_isDispatching","_isHandled","_isPending","_lastID","_invokeCallback","_startDispatching","_stopDispatching","_pendingPayload","_NotificationControllers","_CustomStatusController2","_ThemeController2","_LowBandwidthController2","LEVELS_ROOM_SETTINGS","LEVELS_ROOM_SETTINGS_WITH_ROOM","LEVELS_ACCOUNT_SETTINGS","LEVELS_FEATURE","LEVELS_DEVICE_ONLY_SETTINGS","LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG","NotificationsEnabledController","NotificationBodyEnabledController","AudioNotificationsEnabledController","_SettingController5","isMasterRuleEnabled","masterRule","_SettingController","_SettingController2","_SettingController3","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","secret","getShim","ReactPropTypes","objectOf","checkPropTypes","PropTypes","emptyObject","_invariant","MIXINS_KEY","ReactComponent","injectedMixins","ReactClassInterface","updateComponent","ReactClassStaticInterface","RESERVED_SPEC_KEYS","mixSpecIntoComponent","createMergedResultFunction","specPolicy","mixStaticSpecIntoComponent","autobind","validateMethodOverride","isAlreadyDefined","ReactClassMixin","spec","autoBindPairs","__reactAutoBindPairs","isReactClassMethod","createChainedFunction","mergeIntoWithNoDuplicateKeys","bindAutoBindMethod","IsMountedPreMixin","__isMounted","IsMountedPostMixin","replaceState","ReactClassComponent","autoBindKey","bindAutoBindMethods","hashClear","hashDelete","hashGet","hashHas","hashSet","isMasked","webpackContext","webpackContextResolve","CustomStatusController","ThemeController","LowBandwidthController","LocalEchoWrapper","cacheRoomId","bySetting","handlerPromise","roomWatchers","createSyncAction","createAccountDataAction","createRoomAccountDataAction","createRoomAction","createRoomTagsAction","roomTagsEvent","createRoomReceiptAction","createRoomTimelineAction","createSelfMembershipAction","createEventDecryptedAction","_matrixClientListenersStop","_addMatrixClientListener","stopListener","ScalarAuthClient","termsInteractionCallback","configApiUrl","configUiUrl","isDefaultManager","_readTokenFromStore","_getAccountName","parsedImRestUrl","tokenObject","exchangeForScalarToken","_writeTokenToStore","openidTokenObject","scalarRestUrl","scalarPageLookupUrl","getStarterLink","page_title_cache_item","cached_title","starterLinkUrl","PRESENCE_STATES","Presence","_activitySignal","_unavailableTimer","hashparts","getUpdateCheckStatus","_pendingIpcCalls","_nextIpcCallId","_onIpcReply","onUpdateDownloaded","_ipcCall","updateInfo","releaseNotes","notifBody","silent","Notification","feedUrl","platformName","ipcCallId","reply","setNotificationCount","_opt","_orig","_canvas","_img","_lastBadge","_readyCb","_stop","_browser","_animTimeout","_drawTimeout","_doc","_def","textColor","fontStyle","elementId","dataUrl","opera","safari","HTMLElement","clearRect","setIcon","drawVideo","paused","ended","circle","more","beginPath","textAlign","lineTo","quadraticCurveTo","arc","fillStyle","closePath","stroke","fillText","rectangle","fillRect","attrname","mergedOpt","getIcon","elm","getLink","toDataURL","fade","none","popFade","slide","revert","animationType","msHidden","webkitHidden","mozHidden","isUp","isLeft","videoElement","newImg","webcam","newVideo","oGetUserMedia","msGetUserMedia","runningVersion","permission","requestPermission","_getVersion","pollForUpdate","updateState","appName","UAParser","browserName","getBrowser","osName","getOS","MODEL","VENDOR","MOBILE","TABLET","regexes","extensions","mergedRegexes","str1","str2","lowerize","rgx","maps","oldsafari","amazon","sprint","os","cpu","engine","uastring","getResult","rgxmap","getCPU","architecture","getDevice","getEngine","getUA","setUA","BROWSER","MAJOR","CPU","ARCHITECTURE","CONSOLE","SMARTTV","WEARABLE","EMBEDDED","ENGINE","OS","onInitSuccess","onInitFail","_scriptDir","olmInitPromise","olm_exports","Module","currentScript","randomBytes","OLM_OPTIONS","onRuntimeInitialized","_olm_error","_olm_pk_private_key_length","onAbort","thisProgram","quit","preRun","postRun","__dirname","readFileSync","readBinary","assert","readbuffer","scriptArgs","responseType","readAsync","setWindowTitle","print","printErr","tempI64","tempDouble","ALLOC_STACK","TextDecoder","HEAP8","Int8Array","HEAP16","Int16Array","HEAP32","Int32Array","HEAPU8","HEAPU16","HEAPU32","Uint32Array","HEAPF32","HEAPF64","Float64Array","TOTAL_STACK","TOTAL_MEMORY","dynCall_v","dynCall_vi","WebAssembly","Memory","wasmMemory","maximum","preloadedImages","preloadedAudios","wasmBinary","memory","asm","usingWasm","monitorRunDependencies","instantiate","instantiateWasm","instantiateStreaming","asm2wasm","asmPreload","reallocBuffer","grow","wasmTableSize","wasmMaxTableSize","Table","wasmTable","memoryBase","STATIC_BASE","tableBase","STATIC_BUMP","enlargeMemory","getTotalMemory","abortOnCannotGrowMemory","___setErrNo","___errno_location","_emscripten_memcpy_big","DYNAMICTOP_PTR","STACKTOP","_free","_malloc","_olm_account","_olm_account_generate_one_time_keys","_olm_account_generate_one_time_keys_random_length","_olm_account_identity_keys","_olm_account_identity_keys_length","_olm_account_last_error","_olm_account_mark_keys_as_published","_olm_account_max_number_of_one_time_keys","_olm_account_one_time_keys","_olm_account_one_time_keys_length","_olm_account_sign","_olm_account_signature_length","_olm_account_size","_olm_clear_account","_olm_clear_inbound_group_session","_olm_clear_outbound_group_session","_olm_clear_pk_decryption","_olm_clear_pk_encryption","_olm_clear_pk_signing","_olm_clear_sas","_olm_clear_session","_olm_clear_utility","_olm_create_account","_olm_create_account_random_length","_olm_create_inbound_session","_olm_create_inbound_session_from","_olm_create_outbound_session","_olm_create_outbound_session_random_length","_olm_create_sas","_olm_create_sas_random_length","_olm_decrypt","_olm_decrypt_max_plaintext_length","_olm_ed25519_verify","_olm_encrypt","_olm_encrypt_message_length","_olm_encrypt_message_type","_olm_encrypt_random_length","_olm_export_inbound_group_session","_olm_export_inbound_group_session_length","_olm_get_library_version","_olm_group_decrypt","_olm_group_decrypt_max_plaintext_length","_olm_group_encrypt","_olm_group_encrypt_message_length","_olm_import_inbound_group_session","_olm_inbound_group_session","_olm_inbound_group_session_first_known_index","_olm_inbound_group_session_id","_olm_inbound_group_session_id_length","_olm_inbound_group_session_is_verified","_olm_inbound_group_session_last_error","_olm_inbound_group_session_size","_olm_init_inbound_group_session","_olm_init_outbound_group_session","_olm_init_outbound_group_session_random_length","_olm_matches_inbound_session","_olm_matches_inbound_session_from","_olm_outbound_group_session","_olm_outbound_group_session_id","_olm_outbound_group_session_id_length","_olm_outbound_group_session_key","_olm_outbound_group_session_key_length","_olm_outbound_group_session_last_error","_olm_outbound_group_session_message_index","_olm_outbound_group_session_size","_olm_pickle_account","_olm_pickle_account_length","_olm_pickle_inbound_group_session","_olm_pickle_inbound_group_session_length","_olm_pickle_outbound_group_session","_olm_pickle_outbound_group_session_length","_olm_pickle_pk_decryption","_olm_pickle_pk_decryption_length","_olm_pickle_session","_olm_pickle_session_length","_olm_pk_ciphertext_length","_olm_pk_decrypt","_olm_pk_decryption","_olm_pk_decryption_last_error","_olm_pk_decryption_size","_olm_pk_encrypt","_olm_pk_encrypt_random_length","_olm_pk_encryption","_olm_pk_encryption_last_error","_olm_pk_encryption_set_recipient_key","_olm_pk_encryption_size","_olm_pk_generate_key","_olm_pk_generate_key_random_length","_olm_pk_get_private_key","_olm_pk_key_from_private","_olm_pk_key_length","_olm_pk_mac_length","_olm_pk_max_plaintext_length","_olm_pk_sign","_olm_pk_signature_length","_olm_pk_signing","_olm_pk_signing_key_from_seed","_olm_pk_signing_last_error","_olm_pk_signing_public_key_length","_olm_pk_signing_seed_length","_olm_pk_signing_size","_olm_remove_one_time_keys","_olm_sas","_olm_sas_calculate_mac","_olm_sas_calculate_mac_long_kdf","_olm_sas_generate_bytes","_olm_sas_get_pubkey","_olm_sas_last_error","_olm_sas_mac_length","_olm_sas_pubkey_length","_olm_sas_set_their_key","_olm_sas_size","_olm_session","_olm_session_has_received_message","_olm_session_id","_olm_session_id_length","_olm_session_last_error","_olm_session_size","_olm_sha256","_olm_sha256_length","_olm_unpickle_account","_olm_unpickle_inbound_group_session","_olm_unpickle_outbound_group_session","_olm_unpickle_pk_decryption","_olm_unpickle_session","_olm_utility","_olm_utility_last_error","_olm_utility_size","stackAlloc","stackRestore","stackSave","calledRun","preInit","noExitRuntime","init_with_seed","generate_seed","calculate_mac","calculate_mac_long_kdf","create_inbound","matches_inbound_from","PkSigning","structures$VectorEmbeddedPage","views$auth$VectorAuthFooter","views$auth$VectorAuthHeaderLogo","views$auth$VectorAuthPage","views$auth$VectorCustomServerDialog","VectorEmbeddedPage","getElements","what","where","getOneElement","recurse","addConditionally","isValidFeed","childs","feedRoot","pubDate","getOuterHTML","getInnerHTML","entities","foreignNames","elementNames","attributeNames","unencodedElements","xmp","noembed","noframes","noscript","singleTag","cheerio","renderTag","renderDirective","renderComment","renderCdata","renderText","foreignModeIntegrationPoints","formatAttrs","decode_1","encode_1","encode_2","decode_2","decode_json_1","getChildren","getSiblings","getAttributeValue","hasAttrib","replaceElement","currNext","findOneChild","findOne","existsOne","findAll","rootElems","testElement","tag_name","tag_type","tag_contains","Checks","getAttribCheck","combineFuncs","getElementsByTagType","removeSubsets","POSITION","comparePos","nodeA","nodeB","sharedParent","aSibling","bSibling","aParents","bParents","uniqueSort","Cbs","readable","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckExtraBytes","utf8CheckIncomplete","ProxyHandler","CollectingHandler","addMapEntry","addSetEntry","isHostObject","cloneFunc","cloneMap","cloneSet","numberIsNan","arrayUniq","reInt","intVal","floatVal","density","_processor","_atRule","_vendor","_rule","creator","transformer","processOpts","pluginOpts","_sourceMap","MapGenerator","mapOpts","previousMaps","annotation","isSourcesContent","withContent","clearAnnotation","setSourcesContent","already","applyPrevMaps","consumer","isAnnotation","toBase64","addAnnotation","outputFile","eol","generateMap","generateString","sourcePath","intToCharMap","_sorted","_last","aCallback","aThisArg","aMapping","lineA","lineB","columnA","columnB","quickSort","aSourceMap","aSourceMapURL","sourceMap","sections","IndexedSourceMapConsumer","BasicSourceMapConsumer","_absoluteSources","_sourceMapURL","Mapping","_sections","offsetLine","offsetColumn","generatedOffset","__generatedMappings","_parseMappings","__originalMappings","_charIsMappingSeparator","GENERATED_ORDER","ORIGINAL_ORDER","GREATEST_LOWER_BOUND","LEAST_UPPER_BOUND","aContext","aOrder","_generatedMappings","_originalMappings","allGeneratedPositionsFor","needle","_findSourceIndex","_findMapping","lastColumn","relativeSource","smc","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","cachedSegments","originalMappings","aNeedle","aMappings","aLineName","aColumnName","aComparator","aBias","computeColumnSpans","nextMapping","lastGeneratedColumn","hasContentsOfAllSources","nullOnMissing","fileUriAbsPath","generatedPositionFor","sectionIndex","section","generatedPosition","sectionMappings","adjustedMapping","aHaystack","aCompare","recursiveSearch","aLow","aHigh","doQuickSort","pivot","REGEX_NEWLINE","isSourceNode","aLine","aColumn","aChunks","sourceContents","fromStringWithSourceMap","aGeneratedCode","aRelativePath","remainingLines","remainingLinesIndex","shiftNextLine","getNextLine","lastGeneratedLine","lastMapping","nextLine","addMappingWithCode","aChunk","aFn","aSep","newChildren","replaceRight","aPattern","aReplacement","walkSourceContents","toStringWithSourceMap","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","sourceContent","printed","_warning","Result","_tokenize","createTokenizer","tokenizer","endOfFile","nextToken","freeSemicolon","emptyRule","endFile","bracket","back","unclosedBracket","unknownWord","spacesAndCommentsFromEnd","spacesAndCommentsFromStart","precheckMissedSemicolon","stringFrom","spacesFromEnd","checkMissedSemicolon","unnamedAtrule","unexpectedClose","unclosedBlock","lastTokenType","doubleColon","founded","nextOffset","escapePos","currentToken","ignoreErrors","returned","unclosed","ignoreUnclosed","NEWLINE","FEED","CR","OPEN_SQUARE","CLOSE_SQUARE","OPEN_CURLY","CLOSE_CURLY","SEMICOLON","CLOSE_PARENTHESES","controlChar","OPEN_PARENTHESES","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","RE_BAD_BRACKET","RE_AT_END","RE_HEX_ESCAPE","ASTERISK","RE_WORD_END","_previousMap","sequence","Input","hasBOM","mapResolve","_fs","PreviousMap","loadAnnotation","startWith","loadMap","consumerCache","decodeInline","prevPath","existsSync","unprefixed","brandingConfig","branding","links","authFooterLinks","linkEntry","VectorAuthHeaderLogo","logoUrl","authHeaderLogoUrl","VectorAuthPage","AuthFooter","backgroundUrl","welcomeBackgroundUrl","pageStyle","blurStyle","borderRadius","_AutoHideScrollbar","_CompatibilityPage","_CompatibilityPage2","_ContextualMenu2","_CustomRoomTagPanel","_CustomRoomTagPanel2","_EmbeddedPage","_EmbeddedPage2","_FilePanel","_FilePanel2","_GenericErrorPage","_GenericErrorPage2","_GroupView","_GroupView2","_IndicatorScrollbar","_InteractiveAuth","_InteractiveAuth2","_LeftPanel","_LeftPanel2","_LoggedInView","_LoggedInView2","_MainSplit","_MatrixChat","_MatrixChat2","_MessagePanel","_MessagePanel2","_MyGroups","_MyGroups2","_NotificationPanel","_NotificationPanel2","_RightPanel","_RoomDirectory","_RoomDirectory2","_RoomStatusBar","_RoomStatusBar2","_RoomSubList","_RoomSubList2","_RoomView","_RoomView2","_ScrollPanel","_ScrollPanel2","_SearchBox","_SearchBox2","_TabbedView","_TabbedView2","_TagPanel","_TagPanel2","_TagPanelButtons","_TagPanelButtons2","_TimelinePanel","_TimelinePanel2","_TopLeftMenuButton","_TopLeftMenuButton2","_UploadBar","_UploadBar2","_UserView","_UserView2","_ViewSource","_ViewSource2","_ForgotPassword","_ForgotPassword2","_Login2","_PostRegistration","_PostRegistration2","_Registration","_Registration2","_SoftLogout","_SoftLogout2","_AuthBody","_AuthBody2","_AuthFooter","_AuthFooter2","_AuthHeader","_AuthHeader2","_AuthHeaderLogo","_AuthHeaderLogo2","_AuthPage","_AuthPage2","_CaptchaForm","_CaptchaForm2","_CountryDropdown","_CountryDropdown2","_CustomServerDialog","_CustomServerDialog2","_InteractiveAuthEntryComponents","_InteractiveAuthEntryComponents2","_LanguageSelector","_LanguageSelector2","_ModularServerConfig","_ModularServerConfig2","_PasswordLogin","_PasswordLogin2","_RegistrationForm","_RegistrationForm2","_ServerConfig","_ServerConfig2","_ServerTypeSelector","_ServerTypeSelector2","_SignInToText","_SignInToText2","_Welcome","_Welcome2","_BaseAvatar","_BaseAvatar2","_GroupAvatar","_GroupAvatar2","_MemberAvatar","_MemberStatusMessageAvatar","_MemberStatusMessageAvatar2","_RoomAvatar","_RoomAvatar2","_GenericElementContextMenu","_GenericElementContextMenu2","_GenericTextContextMenu","_GenericTextContextMenu2","_GroupInviteTileContextMenu","_GroupInviteTileContextMenu2","_MessageContextMenu","_MessageContextMenu2","_RoomTileContextMenu","_RoomTileContextMenu2","_StatusMessageContextMenu","_StatusMessageContextMenu2","_TagTileContextMenu","_TagTileContextMenu2","_TopLeftMenu","_TopLeftMenu2","_CreateRoomButton","_CreateRoomButton2","_Presets","_Presets2","_RoomAlias","_RoomAlias2","_AddressPickerDialog","_AddressPickerDialog2","_AskInviteAnywayDialog","_AskInviteAnywayDialog2","_BaseDialog","_BaseDialog2","_BugReportDialog","_BugReportDialog2","_ChangelogDialog","_ChangelogDialog2","_ConfirmAndWaitRedactDialog","_ConfirmAndWaitRedactDialog2","_ConfirmRedactDialog","_ConfirmRedactDialog2","_ConfirmUserActionDialog","_ConfirmUserActionDialog2","_ConfirmWipeDeviceDialog","_ConfirmWipeDeviceDialog2","_CreateGroupDialog","_CreateGroupDialog2","_CreateRoomDialog","_CreateRoomDialog2","_CryptoStoreTooNewDialog","_CryptoStoreTooNewDialog2","_DeactivateAccountDialog","_DeviceVerifyDialog","_DeviceVerifyDialog2","_DevtoolsDialog","_DevtoolsDialog2","_IncomingSasDialog","_IncomingSasDialog2","_InfoDialog","_InfoDialog2","_InteractiveAuthDialog","_InteractiveAuthDialog2","_KeyShareDialog","_KeyShareDialog2","_LazyLoadingDisabledDialog","_LazyLoadingDisabledDialog2","_LazyLoadingResyncDialog","_LazyLoadingResyncDialog2","_LogoutDialog","_MessageEditHistoryDialog","_MessageEditHistoryDialog2","_QuestionDialog","_RedesignFeedbackDialog","_RedesignFeedbackDialog2","_ReportEventDialog","_ReportEventDialog2","_RoomSettingsDialog","_RoomSettingsDialog2","_RoomUpgradeDialog","_RoomUpgradeDialog2","_SessionRestoreErrorDialog","_SessionRestoreErrorDialog2","_SetEmailDialog","_SetEmailDialog2","_SetMxIdDialog","_SetMxIdDialog2","_SetPasswordDialog","_SetPasswordDialog2","_ShareDialog","_ShareDialog2","_SlashCommandHelpDialog","_SlashCommandHelpDialog2","_StorageEvictedDialog","_StorageEvictedDialog2","_TabbedIntegrationManagerDialog","_TabbedIntegrationManagerDialog2","_TermsDialog","_TermsDialog2","_TextInputDialog","_TextInputDialog2","_UnknownDeviceDialog","_UnknownDeviceDialog2","_UploadConfirmDialog","_UploadConfirmDialog2","_UploadFailureDialog","_UploadFailureDialog2","_UserSettingsDialog","_UserSettingsDialog2","_WidgetOpenIDPermissionsDialog","_WidgetOpenIDPermissionsDialog2","_RestoreKeyBackupDialog","_RestoreKeyBackupDialog2","_NetworkDropdown","_NetworkDropdown2","_AccessibleButton","_AccessibleTooltipButton","_AccessibleTooltipButton2","_ActionButton","_ActionButton2","_AddressSelector","_AddressSelector2","_AddressTile","_AddressTile2","_AppPermission","_AppTile","_AppWarning","_CreateRoomButton3","_CreateRoomButton4","_DNDTagTile","_DNDTagTile2","_DeviceVerifyButtons","_DeviceVerifyButtons2","_DialogButtons","_DialogButtons2","_DirectorySearchBox","_DirectorySearchBox2","_Dropdown","_Dropdown2","_EditableItemList","_EditableItemList2","_EditableText","_EditableText2","_EditableTextContainer","_EditableTextContainer2","_ErrorBoundary","_ErrorBoundary2","_Field","_Flair","_Flair2","_GeminiScrollbarWrapper","_GeminiScrollbarWrapper2","_GroupsButton","_GroupsButton2","_ImageView","_ImageView2","_InlineSpinner","_InlineSpinner2","_InteractiveTooltip","_InteractiveTooltip2","_LabelledToggleSwitch","_LanguageDropdown","_LazyRenderList","_ManageIntegsButton","_ManageIntegsButton2","_MemberEventListSummary","_MemberEventListSummary2","_MessageSpinner","_PersistedElement","_PersistentApp","_PersistentApp2","_Pill2","_PowerSelector","_PowerSelector2","_ProgressBar","_ProgressBar2","_ReplyThread","_ResizeHandle","_RoomAliasField","_RoomAliasField2","_RoomDirectoryButton","_RoomDirectoryButton2","_SettingsFlag","_SettingsFlag2","_Spinner","_Spinner2","_Spoiler","_Spoiler2","_StartChatButton","_StartChatButton2","_SyntaxHighlight","_SyntaxHighlight2","_TagTile","_TagTile2","_TextWithTooltip","_TextWithTooltip2","_TintableSvg","_TintableSvg2","_TintableSvgButton","_TintableSvgButton2","_ToggleSwitch","_Tooltip","_Tooltip2","_TooltipButton","_TooltipButton2","_TruncatedList","_TruncatedList2","_UserSelector","_UserSelector2","_Validation","_Validation2","_CookieBar","_CookieBar2","_MatrixToolbar","_MatrixToolbar2","_NewVersionBar","_NewVersionBar2","_PasswordNagBar","_PasswordNagBar2","_ServerLimitBar","_ServerLimitBar2","_UpdateCheckBar","_UpdateCheckBar2","_GroupInviteTile","_GroupInviteTile2","_GroupMemberInfo","_GroupMemberInfo2","_GroupMemberList","_GroupMemberList2","_GroupMemberTile","_GroupMemberTile2","_GroupPublicityToggle","_GroupPublicityToggle2","_GroupRoomInfo","_GroupRoomInfo2","_GroupRoomList","_GroupRoomList2","_GroupRoomTile","_GroupRoomTile2","_GroupTile","_GroupTile2","_GroupUserSettings","_DateSeparator","_DateSeparator2","_EditHistoryMessage","_EditHistoryMessage2","_MAudioBody","_MAudioBody2","_MFileBody","_MImageBody","_MImageBody2","_MStickerBody","_MStickerBody2","_MVideoBody","_MVideoBody2","_MessageActionBar","_MessageActionBar2","_MessageEvent","_MessageTimestamp","_MessageTimestamp2","_ReactMessageAction","_ReactMessageAction2","_ReactionTooltipButton","_ReactionTooltipButton2","_ReactionsQuickTooltip","_ReactionsQuickTooltip2","_ReactionsRow","_ReactionsRow2","_ReactionsRowButton","_ReactionsRowButton2","_ReactionsRowButtonTooltip","_ReactionsRowButtonTooltip2","_RoomAvatarEvent2","_RoomCreate2","_SenderProfile2","_TextualBody2","_TextualEvent2","_UnknownBody2","_ViewSourceEvent2","_GroupHeaderButtons2","_HeaderButtons2","_RoomHeaderButtons2","_AliasSettings2","_ColorSettings2","_RelatedGroupSettings2","_UrlPreviewSettings2","_AppsDrawer2","_AuxPanel2","_BasicMessageComposer2","_E2EIcon2","_EditMessageComposer2","_EntityTile2","_EventTile2","_ForwardMessage2","_JumpToBottomButton2","_LinkPreviewWidget2","_MemberDeviceInfo2","_MemberInfo2","_MemberList2","_MemberTile2","_MessageComposer2","_MessageComposerFormatBar2","_MessageComposerInput2","_PinnedEventTile2","_PinnedEventsPanel2","_PresenceLabel2","_ReadReceiptMarker2","_ReplyPreview2","_RoomBreadcrumbs2","_RoomDetailList2","_RoomDetailRow2","_RoomDropTarget2","_RoomHeader2","_RoomNameEditor2","_RoomPreviewBar2","_RoomRecoveryReminder2","_RoomTopicEditor2","_RoomUpgradeWarningBar2","_SearchBar2","_SearchResultTile2","_SearchableEntityList2","_SendMessageComposer2","_SimpleRoomHeader2","_SlateMessageComposer2","_Stickerpicker2","_ThirdPartyMemberInfo2","_TopUnreadMessagesBar2","_UserTile2","_WhoIsTypingTile2","_ChangeAvatar2","_ChangeDisplayName2","_ChangePassword2","_DevicesPanel2","_DevicesPanelEntry2","_EnableNotificationsButton2","_IntegrationsManager2","_KeyBackupPanel2","_Notifications2","_SetIdServer2","_SetIntegrationManager2","_EmailAddresses2","_PhoneNumbers2","_EmailAddresses4","_PhoneNumbers4","_AdvancedRoomSettingsTab2","_GeneralRoomSettingsTab2","_NotificationSettingsTab2","_RolesRoomSettingsTab2","_SecurityRoomSettingsTab2","_FlairUserSettingsTab2","_GeneralUserSettingsTab2","_HelpUserSettingsTab2","_LabsUserSettingsTab2","_NotificationUserSettingsTab2","_PreferencesUserSettingsTab2","_SecurityUserSettingsTab2","_VoiceUserSettingsTab2","_InlineTermsAgreement2","_VerificationCancelled2","_VerificationComplete2","_VerificationShowSas2","_CallPreview2","_CallView2","_IncomingCallBox2","_VideoFeed2","_VideoView2","_CustomRoomTagStore2","CustomRoomTagPanel","getSortedTags","_tagStoreToken","CustomRoomTagTile","mx_CustomRoomTagPanel_empty","CustomRoomTagPanel_tileSelected","DEFAULT_OPTIONS","withProps","getStores","calculateState","realOptions","FluxContainerClass","setChanged","_fluxContainerSubscriptions","_fluxContainerStoreGroup","nextContext","_FluxContainerBase","PureFluxContainerClass","bHasOwnProperty","FluxMapStore","_FluxReduceStore","getAll","newKeys","oldKey","fbemitter","EventSubscriptionVendor","BaseEventEmitter","_subscriber","_currentSubscription","addSubscription","removeCurrentListener","removeAllSubscriptions","removeSubscription","subscriptions","getSubscriptionsForType","thatReturnsTrue","__emitToSubscription","EventSubscription","_subscriptionsForType","subscriptionsForType","makeEmptyFunction","thatReturns","thatReturnsFalse","thatReturnsNull","thatReturnsThis","thatReturnsArgument","_fluxMixinSubscriptions","_fluxMixinStoreGroup","updateTimelineSet","noRoom","LONG_DESC_PLACEHOLDER","RoomSummaryType","UserSummaryType","summaryInfo","role_id","CategoryRoomList","editing","onAddRoomsToSummaryClicked","addButton","roomNodes","FeaturedRoom","catHeader","onDeleteClicked","roomNameNode","deleteButton","RoleUserList","onAddUsersClicked","shouldOmitSelf","userNodes","FeaturedUser","roleHeader","userNameNode","groupIsNew","groupStore","isGroupPublicised","groupRooms","groupRoomsLoading","saving","uploadingAvatar","avatarChanged","membershipBusy","publicityBusy","inviterProfile","_onGroupMyMembership","_changeAvatarComponent","_closeSettings","firstInit","_fetchInviterProfile","willDoOnboarding","errorGroupId","getSummary","summaryLoading","isStateReady","getGroupPublicity","isUserMember","getGroupMembers","inviterProfileBusy","_onShowRhsClick","profileForm","joinableForm","policyType","is_openly_joinable","sideDisabled","_onShareClick","ShareDialog","_onNameChange","newProfileForm","_onShortDescChange","_onLongDescChange","long_description","_onAvatarSelected","_onJoinableChange","_onSaveClick","_saveGroup","_onAcceptInviteClick","_onRejectInviteClick","_onJoinClick","_leaveGroupWarnings","groupName","_onAddRoomsClick","_getGroupSection","groupSettingsSectionClasses","changeDelayWarning","_getJoinableNode","_getLongDescriptionNode","_getRoomsNode","RoomDetailList","TooltipButton","roomsHelpNode","helpText","addRoomRow","roomDetailListClassName","_getFeaturedRoomsNode","defaultCategoryRooms","categoryRooms","rooms_section","category_id","defaultCategoryNode","categoryRoomNodes","catId","categories","_getFeaturedUsersNode","noRoleUsers","roleUsers","users_section","noRoleNode","roleUserNodes","roles","_getMembershipSection","httpInviterAvatar","membershipContainerExtraClasses","membershipButtonExtraClasses","membershipButtonTooltip","membershipButtonText","membershipButtonOnClick","membershipButtonClasses","membershipContainerClasses","groupJoinableLoading","groupDescEditingClasses","GroupAvatar","avatarNode","nameNode","shortDescNode","rightButtons","avatarImage","groupAvatarUrl","EditableText","placeholderClassName","blurToCancel","onValueChanged","onGroupHeaderItemClick","headerClasses","extraText","ipRegex","isIp","v4","v6","v6seg","ip","RiotPermalinkConstructor","riotUrl","_riotUrl","entityType","API_REPLACES","noHighlightRe","languagePrefixRe","fixMarkupRe","spanEndTag","tabReplace","useBR","testRe","lexeme","isNotHighlighted","inherit","nodeStream","_nodeStream","restoreLanguageApi","langApiRestored","variants","compileLanguage","reStr","langRe","case_insensitive","compileMode","compiled","keywords","beginKeywords","compiled_keywords","kw","lexemesRe","lexemes","beginRe","endSameAsBegin","endsWithParent","endRe","terminator_end","illegal","illegalRe","relevance","cached_variants","variant","expand_mode","starts","terminators","backreferenceRe","numCaptures","joinRe","ignore_illegals","escapeRe","keywordMatch","match_str","buildSpan","classname","insideSpan","leaveOpen","noPrefix","openSpan","processBuffer","subLanguage","mode_buffer","continuations","highlightAuto","processSubLanguage","keyword_match","last_index","processKeywords","startNewMode","processLexeme","new_mode","subMode","excludeBegin","returnBegin","end_mode","endOfMode","endsParent","returnEnd","excludeEnd","isIllegal","languageSubset","second_best","autoDetection","fixMarkup","originalStream","resultNode","blockLanguage","nodeStack","selectStream","mergeStreams","prevClassName","resultLang","buildClassName","initHighlighting","disableAutodetect","configure","user_options","initHighlightingOnLoad","listLanguages","IDENT_RE","UNDERSCORE_IDENT_RE","NUMBER_RE","C_NUMBER_RE","BINARY_NUMBER_RE","RE_STARTERS_RE","BACKSLASH_ESCAPE","APOS_STRING_MODE","QUOTE_STRING_MODE","PHRASAL_WORDS_MODE","COMMENT","C_LINE_COMMENT_MODE","C_BLOCK_COMMENT_MODE","HASH_COMMENT_MODE","NUMBER_MODE","C_NUMBER_MODE","BINARY_NUMBER_MODE","CSS_NUMBER_MODE","REGEXP_MODE","TITLE_MODE","UNDERSCORE_TITLE_MODE","METHOD_GUARD","KEYWORD","v7_keywords","LITERAL","NUMBERS","STRINGS","DATE","COMMENTS","keyword","built_in","v7_system_constants","v8_system_sets_of_values","v8_shared_object","v7_meta_keywords","commentMode","ruleDeclarationMode","AS3_REST_ARG_MODE","ID_REGEX","VAR_DECLS","builtInTypeMode","objectHandleMode","genericMode","NUMBER","nomarkup","STRING","PARAMS","COMMENT_MODE_1","KEYWORDS","SUBST","TEMPLATE_STRING","PARAMS_CONTAINS","CPP_PRIMITIVE_TYPES","PREPROCESSOR","FUNCTION_TITLE","CPP_KEYWORDS","EXPRESSION_CONTAINS","preprocessor","CPP","TAG_INTERNALS","BACKTICK_ESCAPE","VARIABLE","VAR","QUOTE_STRING","COMMENT_MODES","CHAR_STRING","PROCEDURE","OBJECT","EXPRESSIONS","SYMBOL_RE","HINT","HINT_COL","LIST","BODY","DEFAULT_CONTAINS","JS_IDENT_RE","TITLE","COMMANDS","INT_SUFFIX","CRYSTAL_METHOD_RE","CRYSTAL_PATH_RE","CRYSTAL_KEYWORDS","EXPANSION","recursiveParen","Q_STRING","REGEXP","CRYSTAL_DEFAULT_CONTAINS","VERBATIM_STRING","VERBATIM_STRING_NO_LF","SUBST_NO_LF","INTERPOLATED_STRING","INTERPOLATED_VERBATIM_STRING","INTERPOLATED_VERBATIM_STRING_NO_LF","TYPE_IDENT_RE","RULE","integer_re","escape_sequence_re","D_INTEGER_MODE","D_FLOAT_MODE","D_CHARACTER_MODE","D_STRING_MODE","D_NESTING_COMMENT_MODE","BRACED_SUBST","DIRECTIVE","CLASS","FUNCTION","FILTER","DTS_REFERENCE","DTS_KEYWORD","DTS_LABEL","DTS_CELL_PROPERTY","DTS_NODE","ELIXIR_IDENT_RE","ELIXIR_KEYWORDS","ELIXIR_DEFAULT_CONTAINS","CONSTRUCTOR","RUBY_METHOD_RE","RUBY_KEYWORDS","YARDOCTAG","IRB_OBJECT","RUBY_DEFAULT_CONTAINS","IRB_DEFAULT","BASIC_ATOM_RE","FUNCTION_NAME_RE","ERLANG_RESERVED","NAMED_FUN","FUNCTION_CALL","TUPLE","VAR1","VAR2","RECORD_ACCESS","BLOCK_STATEMENTS","BASIC_MODES","METHOD","TYPEPARAM","SYMBOLS","QSTR","ASSIGNMENT","DESCTEXT","AT_COMMENT_MODE","STRUCT_TYPE","PARSE_PARAMS","FUNCTION_DEF","DEFINITION","BUILT_IN_REF","STRING_REF","FUNCTION_REF","FUNCTION_REF_PARAMS","GCODE_CODE","GO_KEYWORDS","BUILT_INS","PRAGMA","TAG_INNARDS","DOCTAGS","CONSTANTS","METHODS","VARIABLES","FUNCTION_NAME_IDENT_RE","JAVA_NUMBER_MODE","HTML_TEMPLATE","CSS_TEMPLATE","PARAMSBLOCK","LITERALS","VALUE_CONTAINER","ARRAY","VARIABLE_NAME_RE","INTERPOLATION","INTERPOLATED_VARIABLE","COMMAND","MACROCALL","LABEL","ANNOTATION_USE_SITE","ANNOTATION","KOTLIN_NUMBER_MODE","KOTLIN_NESTED_COMMENT","KOTLIN_PAREN_TYPE","KOTLIN_PAREN_TYPE2","LASSO_CLOSE_RE","LASSO_KEYWORDS","HTML_COMMENT","LASSO_NOPROCESS","LASSO_START","LASSO_DATAMEMBER","LASSO_CODE","LASSO_IDENT_RE","INTERP_IDENT_RE","RULES","VALUE","STRING_MODE","IDENT_MODE","PARENS_MODE","VALUE_WITH_RULESETS","MIXIN_GUARD_MODE","RULE_MODE","AT_RULE_MODE","VAR_RULE_MODE","SELECTOR_MODE","LISP_IDENT_RE","LISP_SIMPLE_NUMBER_RE","IDENT","MEC","QUOTED","QUOTED_ATOM","TITLE1","TITLE2","SUBST_SIMPLE","LSL_STRINGS","LSL_NUMBERS","LONG_BRACKETS","FUNC","VAR_ASSIG","TARGET","TRANSPOSE","ATOM","PERL_KEYWORDS","STRING_CONTAINS","PERL_DEFAULT_CONTAINS","NIX_KEYWORDS","ANTIQUOTE","DEFINES","LANGUAGES","LEXEMES","CLASS_KEYWORDS","SPECIAL_VARS","FUNCTIONS","OXYGENE_KEYWORDS","CURLY_COMMENT","PAREN_COMMENT","CURLY_SUBCOMMENT","COMMENT_MODE","TYPES_RE","FUNCTIONS_RE","SQL_KW","SQL_BI","PS_COMMENT","PARENTED","LINE_COMMENT","BACKTICK_STRING","WS0","DELIM","KEY_OTHER","DELIM_AND_VALUE","QML_IDENT_RE","ID_ID","QML_ATTRIBUTE","QML_OBJECT","RE_IDENT","RE_MODULE_IDENT","RE_OPERATOR","RE_OPERATOR_SPACED","RE_NUMBER","OPERATOR_MODE","LIST_CONTENTS_MODES","MODULE_ACCESS_CONTENTS","PARAMS_CONTENTS","FUNCTION_BLOCK_MODE","CONSTRUCTOR_MODE","PATTERN_MATCH_BLOCK_MODE","MODULE_ACCESS_MODE","IDENTIFIER","PROPERTY","STATEMENTS","APOS_STRING","NUM_SUFFIX","BUILTINS","SCHEME_IDENT_RE","SCHEME_SIMPLE_NUMBER_RE","QUOTED_IDENT","QUOTED_LIST","COMMON_CONTAINS","HEXCOLOR","smali_instr_low_prio","CHAR","VAR_IDENT_RE","HEX_COLOR","TAG_END","SWIFT_KEYWORDS","BLOCK_COMMENT","keyName","TPID","TPLABEL","FUNCTION_NAMES","TAGS","DECORATOR","ARGS","XL_KEYWORDS","DOUBLE_QUOTE_TEXT","IMPORT","FUNCTION_DEFINITION","CONTAINS","defaultProtocol","nl2br","ignoreTags","Options","linkClass","ignoredTags","toHref","formattedHref","getObject","optionValue","tlds","ALPHANUM","WHITESPACE","domainStates","makeState","S_NUM","S_DOMAIN","S_DOMAIN_HYPHEN","S_WS","partialProtocolFileStates","partialProtocolFtpStates","partialProtocolHttpStates","partialProtocolMailtoStates","S_PROTOCOL_FILE","S_PROTOCOL_FTP","S_PROTOCOL_HTTP","S_MAILTO","S_PROTOCOL_SECURE","S_FULL_PROTOCOL","S_FULL_MAILTO","partialLocalhostStates","lowerStr","tokenLength","latestAccepting","sinceAccepts","TOKEN","_multi","MULTI_TOKENS","S_PROTOCOL","S_PROTOCOL_SLASH","S_PROTOCOL_SLASH_SLASH","S_DOMAIN_DOT","S_TLD","S_TLD_COLON","S_TLD_PORT","S_URL","S_URL_NON_ACCEPTING","S_URL_OPENBRACE","S_URL_OPENBRACKET","S_URL_OPENANGLEBRACKET","S_URL_OPENPAREN","S_URL_OPENBRACE_Q","S_URL_OPENBRACKET_Q","S_URL_OPENANGLEBRACKET_Q","S_URL_OPENPAREN_Q","S_URL_OPENBRACE_SYMS","S_URL_OPENBRACKET_SYMS","S_URL_OPENANGLEBRACKET_SYMS","S_URL_OPENPAREN_SYMS","S_EMAIL_DOMAIN","S_EMAIL_DOMAIN_DOT","S_EMAIL","EMAIL","S_EMAIL_COLON","S_EMAIL_PORT","S_MAILTO_EMAIL","MAILTOEMAIL","S_MAILTO_EMAIL_NON_ACCEPTING","S_LOCALPART","S_LOCALPART_AT","S_LOCALPART_DOT","S_NL","qsAccepting","qsNonAccepting","localpartAccepting","multis","textTokens","secondState","multiLength","MULTI","isDomainToken","hasProtocol","hasSlashSlash","TEXT_TOKEN","HTML_NODE","TXT_NODE","replaceChildWithChildren","lastNewChild","tokensToNodes","_opts$resolve","linkifyElementHelper","childElement","helper","escapeText","escapeAttr","attributesToString","linkifyStr","CollapseItem","_ResizeItem","onCollapsed","_FixedDistributor","toggleSize","isCollapsedSize","notifyCollapsed","RoomSizer","_Sizer","RoomSubListItem","scrollItem","minSize","_handleSize","_remainder","containerOffset","sizes","distributorCtor","resizing","_onMouseDown","handleIndex","_getResizeHandles","_createSizerAndDistributor","distributor","_createSizerAndDistri3","onMouseMove","offsetFromEvent","resizeFromContainerOffset","finishResize","Distributor","createSizer","createItem","onAuthFinished","continueIsManaged","authStage","stageErrorText","submitButtonEnabled","_authLogic","_onBusyChanged","_authStateUpdated","_requestEmailToken","_intervalId","_args","stageComponent","oldStage","_setFocus","_submitAuthDict","_renderCurrentStage","StageComponent","_onAuthStageFailed","_setEmailSid","_VectorConferenceHandler2","LeftPanel","searchFilter","breadcrumbs","focusedElement","_breadcrumbsWatcherRef","_onBreadcrumbsChanged","_tagPanelWatcherRef","useBreadcrumbs","setBreadcrumbs","searchExpanded","valueAtLevel","_onMoveFocus","descending","lastElementChild","firstElementChild","focusedDescending","onHideClick","onSearchCleared","collectRoomList","_onSearchFocus","_onSearchBlur","RoomBreadcrumbs","TagPanel","TopLeftMenuButton","SearchBox","CallPreview","tagPanelEnabled","tagPanelContainer","isCustomTagsEnabled","containerClasses","exploreButton","searchBox","enableRoomSearchFocus","blurredPlaceholder","onCleared","_reactBeautifulDnd","_PageTypes2","_FontManager","_SessionStore2","_pages","_TagOrderActions2","_RoomListActions2","canElementReceiveInput","LoggedInView","page_type","onRoomCreated","authCache","useCompactLayout","serverNoticeEvents","_loadResizerPreferences","_onNativeKeyDown","_sessionStoreToken","_setStateFromSessionStore","_updateServerNoticeEvents","onSync","fixupColorFonts","showCookieBar","hasNewVersion","userHasGeneratedPassword","showNotifierToolbar","notifyBannersChanged","canResetTimelineInRoom","getCachedPassword","collapseConfig","notifyLeftHandleResized","lhsSize","oldSyncState","oldErrCode","syncErrorData","newErrCode","pinStateEvent","pinnedEventIds","canReceiveInput","_onReactKeyDown","hasModifier","_onScrollKeyPressed","isClickShortcut","_onDragEnd","dest","moveTag","_onRoomTileEndDrag","prevTag","tagRoom","leftDisabled","rightDisabled","targetClasses","mouseDown","_onMouseUp","MatrixToolbar","CookieBar","NewVersionBar","UpdateCheckBar","PasswordNagBar","ServerLimitBar","pageElement","roomOobData","currentRoomId","middleDisabled","currentUserId","currentGroupId","currentGroupIsNew","usageLimitEvent","topBar","policyUrl","newVersionReleaseNotes","checkingForUpdate","bodyClasses","hideToSRUsers","onMouseUp","DragDropContext","onDragEnd","collapseLhs","_DragDropContext$chil","_createStore2","_fireHooks2","_dimensionMarshal2","_styleMarshal2","_canStartDrag2","_contextKeys","canLift","dimensionMarshal","styleMarshal","styleContext","publishDraggables","publishDroppables","updateDroppableScroll","updateDroppableIsEnabled","hooks","onDragStart","onPhaseChange","mount","_redux","_reduxThunk2","_reducer2","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","originalModule","createThunkMiddleware","extraArgument","thunk","withExtraArgument","_extends5","_noImpact","_getDragImpact2","_moveToNextIndex2","_moveCrossAxis2","_dimension","noDimensions","canPublishDimension","clientSelection","currentWindowScroll","newImpact","pageCenter","droppables","updateStateAfterDimensionChange","additions","_dimensions","_additions","_newState","_action$payload","_windowScroll","_impact","_action$payload2","_id2","_newState2","_action$payload3","_id3","updatedDroppableDimension","_action$payload4","_windowScroll2","_windowScroll3","isMovingForward","_impact2","_page","_client2","_current","_descriptor","_home","_result2","_page2","_client3","_action$payload5","_impact3","_result3","_result4","_getDroppableOver2","_getDraggablesInsideDroppable2","_inHomeList2","_inForeignList2","previousDroppableOverId","destinationId","isWithinHomeDroppable","insideDestination","insideHome","_isPositionInFrame2","getRequiredGrowth","existingSpace","requiredSpace","endOfDraggables","getWithGrowth","growth","maybe","withPlaceholder","isHome","wasOver","requiredGrowth","isClippedByFrame","subjectWithGrowth","getClippedAreaWithPlaceholder","crossAxisEnd","crossAxisSize","_getDisplacement2","_getViewport2","originalCenter","homeScrollDiff","currentCenter","destinationScrollDiff","isInHomeList","_isVisibleInNewLocation2","_moveToEdge2","getIndex","insideDroppable","proposedIndex","isMovingTowardStart","destinationDisplacement","insideForeignDroppable","movingRelativeTo","isMovingPastLastIndex","movingRelativeToDisplacement","_getBestCrossAxisDroppable2","_getClosestDraggable2","_moveToNewDroppable2","getSafeClipped","sourceClipped","isBetweenSourceClipped","targetClipped","isBetweenDestinationClipped","isWithinDroppable","distanceToA","distanceToB","_toHomeList2","_toForeignList2","originalIndex","isMovingPastOriginalIndex","modified","isGoingBeforeTarget","currentPhase","previousPhase","_current$drop$result","_source","_source2","isCollecting","stopCollecting","setFrameId","processSecondaryDimensions","toBeCollected","draggablesToBeCollected","droppablesToBeCollected","getToBeCollected","collectFrameId","toBePublishedBuffer","publishFrameId","toBePublished","watchScroll","unwatchScroll","registerDraggable","unregisterDraggable","registerDroppable","droppableCallbacks","unregisterDroppable","draggableEntry","homeEntry","processPrimaryDimensions","_getStyles2","setStyle","proposed","dropAnimating","userCancel","resting","dragging","_animation","dragHandleSelector","dragHandleStyles","grabCursor","blockPointerEvents","draggableStyles","animateMovement","homeCenter","draggablesInDestination","destinationFragment","_connectedDroppable","makeSelector","_reactRedux","_reselect","_selectors","_droppable2","getIsDraggingOver","getMapProps","isDraggingOver","phaseSelector","dragSelector","draggingDraggableSelector","pendingDropSelector","isDropDisabled","_isDraggingOver","typeOf","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","Memo","Portal","isValidElementType","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isPortal","isProfiler","isStrictMode","isSuspense","_react","_droppableDimensionPublisher2","_placeholder2","Droppable","setRef","ignoreContainerClipping","provided","innerRef","targetRef","_droppableDimensionPublisher","_getWindowScrollPosition2","_getClosestScrollable2","DroppableDimensionPublisher","closestScrollable","isWatchingScroll","publishedDescriptor","getScrollOffset","memoizedUpdateScroll","scheduleScrollUpdate","onClosestScroll","getMemoizedDescriptor","unpublish","publish","_this$props","paddingRight","paddingLeft","isElementScrollable","isScrollable","overflowY","overflowX","getClosestScrollable","Placeholder","_PureComponent","_placeholder$margin","_placeholder$withoutM","boxSizing","_connectedDraggable","_draggable2","defaultMapProps","isDropAnimating","shouldAnimateDragMovement","shouldAnimateDisplacement","memoizedOffset","getNotDraggingProps","getDraggingProps","getOutOfTheWayMovement","movingOutOfTheWay","zIndexOptions","_Draggable$contextTyp","_invariant2","_draggableDimensionPublisher2","_moveable2","_dragHandle2","_getCenterPosition2","Draggable","onMoveEnd","onLift","throwIfCannotDrag","_this$props2","getDraggableRef","getDraggingStyle","movementStyle","_dimension$client$wit","getNotDraggingStyle","getProvided","dragHandleProps","useDraggingStyle","draggableStyle","draggableProps","getSnapshot","getSpeed","isDragDisabled","disableInteractiveElementBlocking","speed","canDragInteractiveElements","_draggableDimensionPublisher","DraggableDimensionPublisher","_moveable","_reactMotion","isAtOrigin","Movable","onRest","getFinal","final","isNotMoving","Motion","defaultStyle","getStyle","_interopRequire","_Motion","_StaggeredMotion","StaggeredMotion","_TransitionMotion","TransitionMotion","_spring","_presets","presets","_stripStyle","stripStyle","_reorderKeys","reorderKeys","_createClass","_mapToZero2","_stripStyle2","_stepper4","_performanceNow2","_raf2","_shouldStopAnimation2","msPerFrame","wasAnimating","animationID","prevTime","accumulatedTime","unreadPropStyle","clearUnreadPropStyle","destStyle","lastIdealStyle","lastIdealVelocity","startAnimationIfNecessary","propsStyle","currentFrameCompletion","framesToCatchUp","newLastIdealStyle","newLastIdealVelocity","newCurrentStyle","newCurrentVelocity","newLastIdealStyleValue","newLastIdealVelocityValue","_stepper","_stepper2","nextIdealX","nextIdealV","defaultState","renderedChildren","moduleLoadTime","nodeLoadTime","upTime","uptime","unreadPropStyles","currentStyles","currentVelocities","lastIdealStyles","lastIdealVelocities","someDirty","destStyles","shouldStopAnimationAll","newLastIdealStyles","newLastIdealVelocities","newCurrentStyles","newCurrentVelocities","defaultStyles","_mergeDiff2","rehydrateStyles","mergedPropsStyles","plainStyles","cUnreadPropStyles","mergedPropsStyle","mergeAndSync","willEnter","willLeave","didLeave","oldMergedPropsStyles","oldCurrentStyles","oldCurrentVelocities","oldLastIdealStyles","oldLastIdealVelocities","newMergedPropsStyles","oldMergedPropsStyle","leavingStyle","newMergedPropsStyleCell","foundOldIndex","plainStyle","unmounting","_mergeAndSync","propStyles","_mergeAndSync2","newMergedPropsStyle","styleThatEntered","defaultStyleCell","_mergeAndSync3","hydratedStyles","onRemove","prevKeyIndex","nextKeyIndex","nextOrderA","nextOrderB","prevOrderA","prevOrderB","_presets2","_dragHandle","_DragHandle$contextTy","_shouldAllowDraggingFromTarget2","_createMouseSensor2","_createKeyboardSensor2","_createTouchSensor2","getFalse","DragHandle","mouseSensor","isCapturing","keyboardSensor","onTouchStart","touchSensor","onTouchMove","canStartCapturing","isAnySensorCapturing","isAnySensorDragging","sensors","sensor","wasCapturing","wasDragging","kill","interactiveTagNames","isContentEditable","_createScheduler2","_isSloppyClickThresholdExceeded2","_getWindowFromRef2","_blockStandardKeyEvents2","preventClick","stopDragging","unbindWindowEvents","stopPendingDrag","windowBindings","mousemove","startDragging","mouseup","mousedown","keydown","webkitmouseforcechanged","webkitForce","MouseEvent","WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN","forcePressThreshold","eventKeys","bindWindowEvents","eventKey","startPendingDrag","sloppyClickThreshold","executeBasedOnDirection","timeForLongPress","hasMoved","longPressTimerId","touchmove","_event$touches$","touchend","touchcancel","touchstart","orientationchange","contextmenu","touchforcechange","touch","isColrFontSupported","_navigator","colrFontSupported","safariVersionCheck","Image","getImageData","colrFontCheckStarted","fonts","FontFace","weight","safariVersionMatch","macOSVersionStr","safariVersionStr","macOSVersion","safariVersion","_DecryptionFailureTracker","RoomListSorter","_createRoom3","_KeyRequestHandler2","_ErrorUtils","_ResizeNotifier2","_RoomNotifs","VIEWS","WELCOME","LOGIN","REGISTER","POST_REGISTRATION","FORGOT_PASSWORD","LOGGING_IN","LOGGED_IN","SOFT_LOGOUT","ONBOARDING_FLOW_STARTERS","registrationUrl","viewUserId","register_client_secret","register_session_id","register_id_sid","syncError","getFallbackHsUrl","fallback_hs_url","getServerProperties","firstSyncComplete","firstSyncPromise","sync_timeline_limit","_screenAfterLogin","_windowWidth","handleResize","_pageChanging","_dispatchTimelineResize","subTitleStatus","loggedIn","firstScreen","_loadSession","_showScreenAfterLogin","loadedSession","shouldTrackPageChange","startPageChangeTimer","durationMs","stopPageChangeTimer","trackPageChange","measure","clearMarks","getEntriesByName","setStateForNewView","_onSoftLogout","screenAfterLogin","_startRegistration","notifyNewScreen","_leaveRoom","_viewUser","subAction","_viewNextRoom","_viewIndexedRoom","UserSettingsDialog","_viewSomethingBehindModal","_createRoom","CreateGroupDialog","_setPage","_viewGroup","_viewWelcome","_viewHome","_setMxId","_chatCreateOrReuse","_onLoggedIn","_onLoggedOut","_onWillStartClient","_onClientStarted","onVersion","onSendEvent","pageType","hs_url","is_url","roomIndexDelta","mostRecentActivityFirst","presentedId","theAlias","group_is_new","SetMxIdDialog","submitted","setJustRegisteredUserId","onDifferentServerClicked","onLoginClick","CreateRoomDialog","shouldCreate","_leaveRoomWarnings","joinRules","roomToLeave","shouldLeave","leftRoomId","_startWelcomeUserChat","saveWelcomeUser","currentUserIsJustRegistered","_viewLastRoom","_setPageSubtitle","IncomingSasDialog","_loggedInView","updateStatusIndicator","errObj","consentUri","dft","DecryptionFailureTracker","eventDecrypted","krh","handleKeyRequest","handleKeyRequestCancellation","blacklistEnabled","haveNewVersion","newVersionInfo","segments","roomString","signurl","room_name","room_avatar_url","inviter_name","onLogoutClick","notifyWindowResized","onRegisterClick","onForgotPasswordClick","onFinishPostRegistration","latest","brand","notifCount","setErrorStatus","onCloseAllSettings","_makeRegistrationUrl","referrer","_collectLoggedInView","PostRegistration","onComplete","isStoreError","errorBox","Welcome","Registration","idSid","onLoggedIn","ForgotPassword","SoftLogout","applyFocusVisiblePolyfill","hadKeyboardEvent","hadFocusVisibleRecently","hadFocusVisibleRecentlyTimeout","inputTypesWhitelist","isValidFocusTarget","addFocusVisibleClass","onPointerDown","addInitialPointerMoveListeners","onInitialPointerMove","readOnly","DOCUMENT_FRAGMENT_NODE","DOCUMENT_NODE","DecryptionFailure","_extends4","failedEventId","errorCodeMapFn","failures","failureCounts","trackedEventHashMap","checkInterval","trackInterval","_trackDecryptionFailure","_mapErrorCode","addDecryptionFailure","removeDecryptionFailuresForEvent","checkFailures","CHECK_INTERVAL_MS","trackFailures","TRACK_INTERVAL_MS","nowTs","failuresGivenGrace","failuresNotReady","GRACE_PERIOD_MS","dedupedFailuresMap","trackedEventIds","dedupedFailures","_aggregateFailures","trackedErrorCode","_maxSafeInteger","tsOfNewestEvent","LifecycleStore","deferredAction","singletonLifecycleStore","KeyRequestHandler","_currentUser","_currentDevice","_pendingKeyRequests","_processNextRequest","KeyShareDialog","appendTrackedDialog","ResizeNotifier","_throttledMiddlePanel","continuedTypes","isMembershipChange","backPaginating","forwardPaginating","readMarkerEventId","readMarkerVisible","suppressFirstDateSeparator","stickyBottom","alwaysShowTimestamps","currentReadMarkerEventId","currentGhostEventId","_readReceiptMap","_readReceiptsByEvent","_readReceiptsByUserId","_readMarkerGhostNode","_showHiddenEventsInTimeline","_isMounted","getNodeForEventId","eventNodes","isAtBottom","getReadMarkerPosition","readMarker","readMarkerNode","messageWrapper","wrapperRect","readMarkerRect","scrollToTop","scrollToBottom","scrollRelative","mult","scrollToEvent","offsetBase","scrollToToken","scrollToEventIfNeeded","scrollIntoView","behavior","checkFillState","_isUnmounting","_shouldShowEvent","_getEventTiles","MemberEventListSummary","lastShownEvent","lastShownNonLocalEchoIndex","prevEvent","_getReadReceiptsByShownEvent","_mxEv","wantTile","readMarkerInMels","ts1","_wantsDateSeparator","dateSeparator","summarisedEvents","collapsedMxEv","highlightInMels","eventTiles","_getTilesForEvent","onToggle","_onHeightChanged","startExpanded","_getReadMarkerTile","isVisibleReadMarker","_getReadMarkerGhostTile","isEditing","eventTypeContinues","eventDate","scrollToken","readReceipts","_collectEventNode","readReceiptMap","checkUnmounting","eventSendStatus","isSelectedEvent","_getReadReceiptsForEvent","roomMember","receiptsByEvent","receiptsByUserId","lastShownEventId","_existingReceipts","newReceipts","_lastShownEventId","existingReceipts","r1","r2","_startAnimation","ghostNode","_onTypingShown","preventShrinking","_onTypingHidden","updatePreventShrinking","updateTimelineMinHeight","whoIsTyping","isTypingVisible","onTimelineReset","clearPreventShrinking","WhoIsTypingTile","topSpinner","bottomSpinner","onShown","onUnfillRequest","_fetch","_onCreateGroupClick","SimpleRoomHeader","GroupTile","contentHeader","groupNodes","_DirectoryUtils","get_display_alias_for_room","protocolsLoading","instanceId","includeAll","roomServer","filterString","filterTimeout","refreshRoomList","getMoreRooms","my_filter_string","my_server","my_next_batch","third_party_instance_id","include_all_networks","generic_search_term","_s$publicRooms","removeFromDirectory","should_delete","onRoomClicked","showRoom","onFilterChange","onFilterClear","onJoinFromSearchClick","protocolName","_getFieldsForThirdPartyLocation","showRoomAlias","onPreviewClick","onViewClick","onCreateRoomClick","getRow","clientRoom","hasJoinedRoom","previewButton","joinOrViewButton","collectScrollPanel","_stringLooksLikeId","field_type","userInput","requiredFields","location_fields","thisField","scrollpanel_content","startAtBottom","listHeader","NetworkDropdown","DirectorySearchBox","instance_expected_field_type","field_types","last_field","exampleRoom","showJoinButton","onClear","explanation","cryptodevices","getUnsentMessages","onResendAllClick","onCancelAllClick","syncStateData","unsentMessages","_onRoomLocalEchoUpdated","_checkSize","_onSendWithoutVerifyingClick","_onResendAllClick","_onCancelAllClick","_onShowDevicesClick","_getSize","_shouldShowConnectionError","_getIndicator","errorIsMauError","_getUnsentMessageContent","consentError","resourceLimitError","_getContent","indicator","ActiveRoomObserver","_activeRoomId","_emit","mx_ActiveRoomObserver","crc32","uint32","crcActual","int32","chunkData","CRC32","signed_crc_table","use_buffer","crc32_buf_8","crc","bstr","DO_NOT_EXPORT_CRC","CanvasPrototype","HTMLCanvasElement","hasBlobConstructor","hasArrayBufferViewSupport","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","dataURIPattern","dataURLtoBlob","dataURI","mediaType","isBase64","dataString","byteString","intArray","getBlob","mozGetAsFile","quality","RoomScrollStateStore","_scrollStateMap","mx_RoomScrollStateStore","_fillRequestWhileRunning","_isFilling","_pendingFillRequests","_getScrollNode","_scrollTimeout","_saveScrollState","preventShrinkingState","_restoreSavedScrollState","sn","_getExcessHeight","contentHeight","_getMessagesHeight","clippedHeight","_getListHeight","unclippedScrollTop","isFirstCall","itemlist","firstTile","contentTop","fillPromises","_maybeFill","_checkUnfillState","excessHeight","origExcessHeight","markerScrollToken","tile","scrollTokens","_unfillDebouncer","hasMoreResults","_bottomGrowth","_heightUpdateInProgress","scrollNode","trackedNode","_getTrackedNode","viewportBottom","_topFromBottom","bottomOffset","newBottomOffset","bottomDiff","_updateHeight","minHeight","newHeight","oldTop","preexistingScrollTop","newTop","topDiff","_divScroll","_collectScroll","divScroll","messageList","lastTileNode","offsetFromBottom","offsetNode","balanceElement","_preventShrinkingStat","shouldClear","offsetDiff","blurred","_clearSearch","clearButton","_GroupActions2","_onClientSync","_tagOrderStoreToken","getSelectedTags","fetchJoinedGroups","_filterStoreToken","onCreateGroupClick","onClearFilterClick","DNDTagTile","itemsSelected","mx_TagPanel_items_selected","GroupActions","_EditorStateTransfer2","ObjectUtils","timelineCap","roomReadMarkerTsMap","initialReadMarker","readmarker","_getCurrentReadReceipt","liveEvents","timelineLoading","canBackPaginate","canForwardPaginate","clientSyncState","lastRRSentEventId","lastRMSentEventId","updateReadReceiptOnUserActivity","updateReadMarkerOnUserActivity","onRoomTimelineReset","onLocalEchoUpdated","onEventReplaced","_initTimeline","_readReceiptActivityTimer","_readMarkerActivityTimer","onMessageListUnfillRequest","_timelineWindow","canPaginateKey","_getEvents","onMessageListFillRequest","_shouldPaginate","paginatingKey","_getEvents2","otherDirection","canPaginateOtherWayKey","rmPosition","_readMarkerTimeout","changeTimeout","_getEvents3","lastLiveEvent","updatedState","callRMUpdated","_setReadMarker","_loadTimeline","replacedEvent","_reloadEvents","readMarkerPosition","initialTimeout","timeWhileActiveRecently","updateReadMarker","timeWhileActiveNow","shouldSendRR","currentRREventId","currentRREventIndex","_indexForEventId","lastReadEventIndex","_getLastDisplayedEventIndex","ignoreOwn","lastReadEvent","shouldSendRM","hiddenRR","lastDisplayedIndex","allowPartial","lastDisplayedEvent","_advanceReadMarkerPastMyEvents","_ev","rmId","rmTs","initialEvent","onLoaded","isNodeInView","boundingRect","adjacentInvisibleEventCount","isInView","eventTs","inhibitSetState","_props$timelineSet","MessagePanel","_buttonRef","menuFunctions","profileInfo","onToggleMenu","_getProfileInfo","_getDisplayName","nameElement","chevronElement","mounted","innerProgressStyle","uploadedSize","totalSize","uploadText","_loadProfileInfo","fakeEvent","_PasswordReset2","password2","serverRequiresIdServer","_checkServerLiveliness","pwReset","submitPasswordReset","resetPassword","showErrorDialog","onVerify","checkEmailLinkClicked","onSubmitForm","onInputChanged","onServerDetailsNextPhaseClick","onEditServerDetailsClick","renderServerDetails","renderForgot","serverDeadSection","yourMatrixAccountText","TextWithTooltip","editLink","renderSendingEmail","renderEmailSent","renderDone","AuthPage","AuthHeader","AuthBody","resetPasswordJsx","PasswordReset","PHONE_NUMBER_REGEX","loginIncorrect","canTryLogin","currentFlow","_stepRendererMap","_renderPasswordStep","_renderSsoStep","_loginLogic","_initLoginLogic","onPasswordLoginError","isBusy","onPasswordLogin","aliveAgain","componentState","loginViaPassword","usingEmail","errorTop","errorDetail","hs","_errorTextFromError","onUsernameChanged","onUsernameBlur","doWellknownLookup","discoveryState","validateServerName","onPhoneCountryChanged","onPhoneNumberChanged","onPhoneNumberBlur","isDefaultServer","loginLogic","getFlows","_isSupportedFlow","chooseFlow","_getCurrentFlowStep","getCurrentFlowStep","renderServerComponent","serverDetailsProps","renderLoginComponentForStep","stepRenderer","PasswordLogin","initialUsername","initialPhoneCountry","initialPhoneNumber","disableSubmit","SignInToText","loader","errorTextSection","errorString","ChangeDisplayName","ChangeAvatar","initialAvatarUrl","ServerType","serverType","formVals","doingUIAuth","completedNoSignin","registeredUsername","differentLoggedInUserId","_replaceClient","getDefaultPhaseForServerType","onServerTypeChange","_serverConfig","_makeRegisterRequest","onFormSubmit","_onUIAuthFinished","msisdnAvailable","sessionOwner","sessionIsGuest","_setupPushers","pushers","emailPusher","onGoToFormClicked","_getUIAuthInputs","_onLoginClickWithCheck","ModularServerConfig","serverDetails","renderRegisterComponent","RegistrationForm","defaultUsername","defaultEmail","defaultPhoneCountry","defaultPhoneNumber","defaultPassword","canSubmit","goBack","regDoneText","newAccountId","loggedInUserId","LOGIN_VIEW","PASSWORD","CAS","SSO","UNSUPPORTED","FLOWS_TO_VIEWS","onClearAll","ConfirmWipeDeviceDialog","wipeData","onPasswordChange","onForgotPassword","onSsoLogin","ssoUrl","loginView","keyBackupNeeded","_initLogin","loginViews","chosenView","appUrl","trySsoLogin","introText","_renderSignInSection","AuthHeaderLogo","LanguageSelector","_captchaWidgetId","grecaptcha","_onCaptchaLoaded","mx_on_recaptcha_loaded","scriptTag","recaptchaContainer","_resetRecaptcha","_renderRecaptcha","divId","sitekey","newLang","_ServerConfig3","initialPassword","LOGIN_FIELD_MXID","onLoginTypeChange","onPasswordChanged","isLoginEmpty","LOGIN_FIELD_EMAIL","LOGIN_FIELD_PHONE","phonePrefix","forgotPasswordJsx","pwFieldClass","loginField","renderLoginField","disable_3pid_login","_email2","onValidationChange","fieldValid","passwordConfirm","passwordComplexity","passwordSafe","haveIs","verifyFieldsBeforeSubmit","_doSubmit","fieldIDsInDisplayOrder","fieldID","field","invalidField","allFieldsValid","findFirstInvalidField","fieldIDs","markFieldValid","onEmailChange","onEmailValidate","fieldState","validateEmailRules","_authStepIsRequired","onPasswordValidate","validatePasswordRules","complexity","scorePassword","allowUnsafe","suggestions","onPasswordConfirmChange","onPasswordConfirmValidate","validatePasswordConfirmRules","onPhoneCountryChange","onPhoneNumberChange","onPhoneNumberValidate","validatePhoneNumberRules","onUsernameChange","onUsernameValidate","validateUsernameRules","_authStepIsUsed","_showEmail","_showPhoneNumber","threePidLogin","haveRequiredIs","renderEmail","emailPlaceholder","renderPassword","renderPasswordConfirm","renderPhoneNumber","phoneLabel","renderUsername","registerButton","emailHelperText","noIsText","signInToText","welcomeUrl","getGroupAvatarUrl","MemberStatusMessageAvatar","hasStatus","avatar","GenericTextContextMenu","GroupInviteTileContextMenu","_onClickReject","_EventUtils","canCancel","eventTileOps","collapseReplyThread","canPin","_checkPermissions","_isPinned","pinnedEvent","onResendClick","onResendEditClick","onResendRedactionClick","onResendReactionsClick","_getUnsentReactions","e2eInfoClicked","e2eInfoCallback","onReportEventClick","ReportEventDialog","onViewSourceClick","ViewSource","onViewClearSourceClick","onRedactClick","ConfirmRedactDialog","onCancelSendClick","editEvent","pendingReactions","_getPendingReactions","onForwardClick","onPinClick","onUnhidePreviewClick","unhideWidget","onPermalinkClick","onCollapseReplyThreadClick","_getReactions","editStatus","redactStatus","unsentReactionsCount","pendingReactionsCount","allowCancel","resendButton","resendEditButton","resendReactionsButton","resendRedactionButton","redactButton","forwardButton","pinButton","viewClearSourceButton","unhidePreviewButton","externalURLButton","quoteButton","isSent","unsentCount","viewSourceButton","isWidgetHidden","permalinkButton","getInnerText","external_url","e2eInfo","reportEventButton","isFavourite","isLowPriority","isDirectMessage","_toggleTag","tagNameOn","tagNameOff","_onClickFavourite","_onClickLowPriority","_onClickDM","newIsDirectMessage","_onClickLeave","_onClickForget","_saveNotifState","_onClickAlertMe","_onClickAllNotifs","_onClickMentions","_onClickMute","_renderNotifMenu","alertMeClasses","allNotifsClasses","mentionsClasses","muteNotifsClasses","_onClickSettings","_renderSettingsMenu","_renderLeaveMenu","leaveClickHandler","leaveText","_renderRoomTagMenu","favouriteClasses","lowPriorityClasses","dmClasses","_onViewCommunityClick","_onRemoveClick","removeTag","onCreateRoom","Presets","PrivateChat","PublicChat","Custom","getAliasLocalpart","curr_val","setSelectionRange","new_val","Email","addressTypeName","includeSelf","invalidAddressError","selectedList","searchError","serverSupportsUserDirectory","suggestedList","textinput","onButtonClick","_addAddressesToList","addressSelector","moveSelectionUp","moveSelectionDown","chooseSelection","onDismissed","onQueryChanged","queryChangedDebouncer","_doNaiveGroupSearch","_doUserDirectorySearch","_doLocalSearch","_doNaiveGroupRoomSearch","_doRoomSearch","_cancelThreepidLookup","onSelected","_getFilteredSuggestions","lowerCaseQuery","userIdMatch","displayNameMatch","_processResults","nameMatch","topicMatch","aliasMatch","shortestMatchingAliasLength","queryLowercase","_lookupThreepid","moveSelectionTop","addressTexts","hasError","addressText","addrObj","selectedAddresses","onUseDefaultIdentityServerClick","onManageSettingsClick","AddressSelector","scrollElement","inputLabel","AddressTile","canDismiss","showAddress","filteredSuggestedList","validTypeDescriptions","validTypesList","addressList","truncateAt","_onInviteClicked","_onInviteNeverWarnClicked","_onGiveUpClicked","_focusTrapReact2","fixedWidth","_classNames","headerButton","createFocusTrap","checkedProps","FocusTrap","_possibleConstructorReturn","previouslyFocusedElement","specifiedFocusTrapOptions","focusTrapOptions","tailoredFocusTrapOptions","returnFocusOnDeactivate","optionName","focusTrap","_createFocusTrap","activate","deactivate","unpause","elementProps","tabbable","listeningFocusTrap","tryFocus","userOptions","tabbableNodes","firstTabbableNode","lastTabbableNode","nodeFocusedBeforeActivation","tabEvent","escapeDeactivates","trap","activateOptions","defaultedActivateOptions","onActivate","addListeners","removeListeners","deactivateOptions","defaultedDeactivateOptions","returnFocus","onDeactivate","updateTabbableNodes","getNodeForOption","firstFocusNode","checkFocus","checkClick","checkPointerDown","checkKey","clickOutsideDeactivates","stopImmediatePropagation","readjustFocus","currentFocusIndex","handleTab","isEscapeEvent","candidateIndexAttr","candidateIndex","elementDocument","basicTabbables","orderedTabbables","isUnavailable","isOffCache","isOff","nodeComputedStyle","createIsUnavailable","candidateSelectors","includeContainer","msMatchesSelector","webkitMatchesSelector","candidateSelector","issueUrl","_onTextChange","_onIssueUrlChange","_onSendLogsChange","_sendProgressCallback","REPOS","ChangelogDialog","version2","statusText","commits","sha","html_url","_elementsForCommit","ConfirmAndWaitRedactDialog","onParentFinished","isRedacting","redact","redactionErrorCode","askReason","_reasonField","_collectReasonField","MemberAvatar","confirmButtonClass","reasonBox","httpAvatarUrl","_onConfirm","_onDecline","groupError","creating","createError","_onGroupNameChange","_onGroupIdChange","_onGroupIdBlur","_checkGroupId","groupIdError","localpart","createErrorNode","detailsOpen","noFederate","default_federate","nameIsValid","_roomCreateOptions","localPart","creation_content","_detailsRef","onDetailsToggled","_nameFieldRef","_aliasFieldRef","isValid","onNameChange","onTopicChange","onPublicChange","onAliasChange","onNoFederateChange","collectDetailsRef","onNameValidate","_validateRoomName","RoomAliasField","privateLabel","publicLabel","aliasField","doLogout","MODE_LEGACY","MODE_SAS","PHASE_START","PHASE_WAIT_FOR_PARTNER_TO_ACCEPT","PHASE_SHOW_SAS","PHASE_WAIT_FOR_PARTNER_TO_CONFIRM","PHASE_VERIFIED","PHASE_CANCELLED","DeviceVerifyDialog","_onSwitchToLegacyClick","_verifier","_onVerifierShowSas","_onSwitchToSasClick","_onLegacyFinished","_onSasRequestClick","_onSasMatchesClick","_showSasEvent","_onVerifiedDoneClick","sasVerified","_renderSasVerificationPhaseStart","_renderSasVerificationPhaseWaitAccept","_renderSasVerificationPhaseShowSas","_renderSasVerificationPhaseWaitForPartnerToConfirm","_renderSasVerificationPhaseVerified","_renderSasVerificationPhaseCancelled","VerificationShowSas","onDone","VerificationComplete","VerificationCancelled","_renderLegacyVerification","_renderSasVerification","DevtoolsComponent","GenericEditor","_DevtoolsComponent","onBack","_send","SendCustomEvent","_GenericEditor","_Object$assign","isStateEvent","forceStateEvent","_buttons","textInput","float","SendAccountData","_GenericEditor2","_Object$assign3","isRoomAccountData","forceMode","INITIAL_LOAD_TILES","LOAD_TILES_STEP_SIZE","FilteredList","showAll","createOverflowElement","overflowCount","totalCount","onQuery","filteredChildren","getChildCount","filterChildren","lcQuery","TruncatedList","RoomStateExplorer","_DevtoolsComponent2","roomStateEvents","editEv","onQueryEventType","onQueryStateKey","queryEventType","queryStateKey","filterEventType","filterStateKey","stateGroup","stateKeys","onClickFn","browseEventType","AccountDataExplorer","_DevtoolsComponent3","ServersInRoomList","_DevtoolsComponent4","Entries","_React$Component3","prevMode","getLabel","Entry","_setMode","_onContinueClick","_onVerifierCancel","opponentProfile","opponentProfileError","_fetchOpponentProfile","prof","_renderPhaseStart","_renderPhaseShowSas","_renderPhaseWaitForPartnerToConfirm","_renderPhaseVerified","_renderPhaseCancelled","hasCloseButton","authError","_onAuthFinished","_onDismissClick","_collectInteractiveAuth","wasNewDevice","_onVerifyClicked","_onShareClicked","_onIgnoreClicked","_renderContent","description1","description2","MessageEditHistoryDialog","loadMoreEdits","newEvents","isLoading","_locallyRedactEventsIfNeeded","pendingEvents","pendingRedaction","EditHistoryMessage","lastEvent","baseEventId","isBaseEvent","previousEdit","_renderEdits","existingIssuesLink","newIssueLink","_onReasonChange","_getTabs","recommended","_targetVersion","_onUpgradeClick","_sendBugReport","_onClearStorageClick","_onRefreshClick","clearStorageButton","dialogButtons","_AddThreepid2","emailBusy","onEmailAddressChanged","_addThreepid","onEmailDialogFinished","onCancelled","verifyEmailAddress","emailInput","usernameBusy","usernameError","usernameCheckSupport","input_value","onValueChange","_usernameCheckTimeout","_doUsernameCheck","uiAuth","isAvailable","errMessage","error_string","_generatePassword","_generatedPassword","inputClasses","usernameIndicator","usernameAvailable","usernameIndicatorClasses","authErrorIndicator","canContinue","WarmFuzzy","didSetEmail","advice","extraAdvice","buttonClassNames","autoFocusNewPasswordInput","shouldAskForEmail","_qrcodeReact2","socials","_url3","_url4","_url5","onCopyClick","onLinkSpecificEventCheckboxClick","linkSpecificEvent","_selectText","successful","execCommand","closeCopiedTooltip","onmouseleave","matrixToUrl","checkbox","encodedUrl","onLinkClick","logoWidth","social","getDOMNode","qr","QRCode","utf16to8","qrcode","cells","tileW","tileH","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","getBackingStorePixelRatio","rdx","cell","cdx","fgColor","dwidth","dheight","logoHeight","dy","ErrorCorrectLevel","typeNumber","errorCorrectLevel","addData","make","BitByte","RSBlock","BitBuffer","Polynomial","moduleCount","dataCache","dataList","isDark","getModuleCount","rsBlocks","getRSBlocks","totalDataCount","dataCount","getLengthInBits","makeImpl","getBestMaskPattern","maskPattern","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","minLostPoint","lostPoint","getLostPoint","createMovieClip","target_mc","instance_name","qr_mc","createEmptyMovieClip","beginFill","endFill","getPatternPosition","getBCHTypeNumber","getBCHTypeInfo","bitIndex","byteIndex","dark","getMask","PAD0","PAD1","putBit","createBytes","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","rsPoly","getErrorCorrectPolynomial","modPoly","modIndex","totalCodeCount","QR8bitByte","ECL","QRRSBlock","RS_BLOCK_TABLE","rsBlock","getRsBlockTable","QRBitBuffer","bufIndex","Mode","QRMaskPattern","QRUtil","PATTERN_POSITION_TABLE","G15","G18","G15_MASK","getBCHDigit","errorCorrectLength","qrCode","sameCount","darkCount","_SlashCommands","colSpan","hueToRGB","frequency","_hueToRGB","_hueToRGB2","_onSignOutClick","logRequest","openManager","currentLoading","currentConnected","currentScalarClient","connected","_renderTabs","_renderTab","TermsCheckbox","_React$PureComponent2","_onNextClick","_onTermsCheckboxChange","parsedBaseUrl","policyValues","termDoc","termsLang","serviceName","_nameForServiceType","_summaryForServiceType","_policiesAndService","docsAgreedForService","docAgreed","primaryDisabled","UserUnknownDeviceList","MemberDeviceInfo","deviceListEntries","showDeviceId","UnknownDeviceList","userListEntries","_onDeviceVerificationChanged","_onDismissClicked","_onSendAnywayClicked","_onSendClicked","haveUnknownDevices","sendButtonOnClick","sendButtonLabel","RoomName","_onUploadClick","_onUploadAllClick","_objectUrl","preview","uploadAllButton","getUploadLimit","sizeOfThisFile","howManyOthers","loadError","restoreError","recoverInfo","recoveryKeyValid","forceRecoveryKey","passPhrase","restoreType","_onDone","_onUseRecoveryKeyClick","_onResetRecoveryClick","_onRecoveryKeyChange","_onPassPhraseNext","_onRecoveryKeyNext","_onPassPhraseChange","_onPassPhraseKeyPress","_onRecoveryKeyKeyPress","backupHasPassphrase","failedToDecrypt","failedCount","sessionCount","onKeyPress","button1","button2","keyStatus","DEFAULT_ICON_URL","dropdownRootElement","ignoreEvent","onInputClick","onRootClick","onDocumentClick","onMenuOptionClick","onInputKeyUp","collectRoot","collectInputTextBox","inputTextBox","expanded","selectedServer","selectedInstanceId","includeAllNetworks","selectedNetwork","roomDirectory","_makeMenuOption","sortedInstances","handleClicks","imgUrl","clickHandler","menuOptions","_getMenuOptions","mouseOverAction","iconPath","showTooltip","_onMouseEnter","_onMouseLeave","maxSelected","_maxSelected","elementHeight","addressListElement","selectAddress","createAddressListTiles","justified","networkName","networkUrl","listSize","imgUrls","isMatrixAddress","idClasses","unknownMxClasses","emailClasses","unknownClasses","dismiss","_FromWidgetPostMessageApi2","_ToWidgetPostMessageApi2","mxFromWidgetMessaging","mxToWidgetMessaging","WidgetMessaging","fromWidget","toWidget","_onOpenIdRequest","messageToWidget","addEndpoint","removeEndpoint","rawEv","widgetSecurityKey","responseBody","_credentials","_WidgetMessagingEndpoint2","SUPPORTED_WIDGET_API_VERSIONS","FromWidgetPostMessageApi","widgetMessagingEndpoints","widgetListeners","onPostMessage","endpointUrl","ep","trustedEndpoint","supported_versions","integType","integId","_classCallCheck2","WidgetMessageEndpoint","ToWidgetPostMessageApi","_timeoutMs","_requestMap","targetWindow","targetOrigin","CreateRoomButton","callout","onVerifyClick","onUnverifyClick","onBlacklistClick","onUnblacklistClick","blacklistButton","verifyButton","primaryButtonClassName","_collectInput","_onKeyUp","_onJoinButtonClick","mx_DirectorySearchBox","join_button","MenuOption","dropdownKey","optClasses","mx_Dropdown_option","mx_Dropdown_option_highlight","_onInputClick","_onRootClick","_onDocumentClick","_onMenuOptionClick","_onInputKeyPress","_onInputKeyUp","_onInputChange","_collectRoot","_collectInputTextBox","_setHighlightedOption","_reindexChildren","highlightedOption","childrenByKey","_nextOption","_prevOption","optionKey","selectedChild","dropdownClasses","mx_Dropdown","mx_Dropdown_disabled","EditableItem","_onRemove","verifyRemove","_onDontRemove","_onActuallyRemove","EditableItemList","_onItemAdded","onItemAdded","newItem","_onItemRemoved","onItemRemoved","_onNewItemChanged","onNewItemChanged","editableItems","canRemove","editableItemsSection","itemsLabel","noItemsLabel","_renderNewItemField","labelClassName","blurToSubmit","Phases","Display","Edit","editable_div","edit","cancelEdit","shouldSubmit","onFinish","onClickDiv","submit","EditableTextContainer","_onValueChanged","getInitialValue","_reactGeminiScrollbar2","wrappedProps","forceGemini","GeminiScrollbar","createReactClass","createElements","_objectWithoutProperties","SCROLLBAR_WIDTH","DONT_CREATE_GEMINI","CLASSNAMES","isIE","agent","sw","_created","_cursorDown","_prevPageX","_prevPageY","_viewElement","_scrollbarVerticalElement","_thumbVerticalElement","_scrollbarHorizontalElement","verticalScrollbar","horizontalScrollbar","thumb","prevented","resizeTrigger","_createResizeTrigger","_thumbHorizontalElement","_bindEvents","resizeHandler","_resizeHandler","_resizeTriggerElement","heightPercentage","widthPercentage","_scrollHandler","_unbindEvents","getViewElement","scrollHandler","clickVerticalTrackHandler","_clickVerticalTrackHandler","clickHorizontalTrackHandler","_clickHorizontalTrackHandler","clickVerticalThumbHandler","_clickVerticalThumbHandler","clickHorizontalThumbHandler","_clickHorizontalThumbHandler","mouseUpDocumentHandler","_mouseUpDocumentHandler","mouseMoveDocumentHandler","_mouseMoveDocumentHandler","containerScrollHandler","_containerScrollHandler","viewElement","msTransform","webkitTransform","thumbPositionPercentage","_startDrag","onselectstart","rotateCounterClockwise","rotationDegrees","rotateClockwise","sizeRes","mayRedact","eventMeta","eventRedact","effectiveStyle","InteractiveTooltipContainerId","isInRect","rect","getDiagonalSlope","InteractiveTooltip","collectContentRect","contentRect","collectTarget","targetRect","canTooltipFitAboveTarget","contentRectWithBuffer","trapezoidLeft","trapezoidCenter","trapezoidRight","diagonalSlope","isInUpperRightHalf","isInUpperLeftHalf","_contentRectWithBuffer","_trapezoidLeft","_trapezoidCenter","_trapezoidRight","isInLowerRightHalf","isInLowerLeftHalf","hideTooltip","onTargetMouseOver","renderTooltip","targetTop","onVisibilityChange","forceHidden","targetLeft","targetBottom","_FormattingUtils","summaryLength","avatarsMaxLength","threshold","_toggleSummary","_renderSummary","eventAggregates","orderedTransitionSequences","summaries","transitions","userNames","nameList","_renderNameList","splitTransitions","canonicalTransitions","_getCanonicalTransitions","descs","_coalesceRepeatedTransitions","_getDescriptionForTransition","transitionType","repeats","transitionList","modMap","newTransition","userCount","severalUsers","oneUser","_renderAvatars","_getTransitionSequence","_getTransition","_getAggregate","userEvents","aggregate","aggregateIndices","firstEvent","eventsToRender","fewEvents","expandedEvents","avatarMembers","seq1","seq2","summaryContainer","toggleButton","MapShim","class_1","__entries__","isBrowser","global$1","requestAnimationFrame$1","trailingTimeout","REFRESH_DELAY","transitionKeys","mutationObserverSupported","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","leadingCall","trailingCall","resolvePending","timeoutCallback","addObserver","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","childList","subtree","getInstance","instance_","defineConfigurable","getWindowOf","emptyRect","createRectInit","toFloat","getBordersSize","positions","getHTMLElementContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","getContentRect","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","broadcastRect","ResizeObserverEntry","rectInit","Constr","DOMRectReadOnly","ResizeObserverSPI","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","clearActive","observation","ResizeObserver","persistentWidgetId","getPersistentWidgetId","_onActiveWidgetStoreUpdate","persistentWidgetInRoomId","persistentWidgetInRoom","appEvent","_Rooms","REGEX_LOCAL_PERMALINK","isPillUrl","TYPE_ROOM_MENTION","TYPE_GROUP_MENTION","pillType","matrixToMatch","localMember","localRoom","doProfileLookup","onUserPillClicked","pillClass","_room2","_state$group","offsetKey","maxValue","customValue","selectValue","_initStateFromProps","isCustom","customLevel","onSelectChange","onCustomChange","onCustomBlur","onCustomKeyDown","picker","progressStyle","_asFullAlias","_onValidate","_validationRules","fullAlias","poundSign","aliasPostfix","maxlength","_fieldRef","RoomDirectoryButton","isExplicit","manualSave","Spoiler","toggleVisible","contentHtml","StartChatButton","TintableSvgButton","tooltipContainer","_renderTooltip","parentBox","tooltipClasses","_getChildren","_getChildCount","overflowNode","totalChildren","selected_users","addUser","removeUser","onAddUserId","user_id_input","onUsageDataClicked","onReject","hideToolbar","checkVersion","displayReleaseNotes","installUpdate","displayChangelog","onUpdateClicked","action_button","SetPasswordDialog","toolbarClasses","getStatusText","getUpdateCheckStatusEnum","onBadgeClicked","badgeEllipsis","isInvited","removingUser","isUserInvited","getGroupInvitedMembers","_onKick","ConfirmUserActionDialog","adminTools","kickButton","groupMemberName","membersError","invitedMembers","invitedMembersError","_fetchMembers","_createOverflowTile","EntityTile","avatarJsx","presenceState","suppressOnHover","_showFullMemberList","onSearchQueryChanged","makeGroupMemberTiles","memberList","memberListError","GroupMemberTile","matchesName","matchesId","uniqueMembers","bName","memberTiles","fetching","fetchingInvitedMembers","inputBox","invited","inviteButton","powerStatus","POWER_STATUS_ADMIN","_groupStoreToken","_onPublicityToggle","showDescription","avatarHeight","groupRoomPublicityLoading","groupRoomRemoveLoading","_updateGroupRoom","_changeGroupRoomPublicity","groupRoomName","_showFullRoomList","makeGroupRoomTiles","GroupRoomTile","matchesAlias","nop","descElement","avatarClone","droppableProvided","droppableSnapshot","today","yesterday","setDate","HtmlUtils","_MessageDiffUtils","_pillify","getReplacedContent","originalContent","_onAssociatedStatusChanged","sendStatus","_onRedactClick","_onViewSourceClick","contentContainer","contentElements","editBodyDiffToHtml","_renderActionBar","editContent","originalBody","getSanitizedHtmlBody","editBody","diffActions","originalDiffActions","nextDiff","routeIsEqual","route","filterCancelingOutDiffs","_diffDom","DiffDOM","diffMathPatch","_diffMatchPatch2","originalRootNode","renderDifferenceInDOM","adjustRoutes","wrapInsertion","wrapDeletion","diffTreeToDOM","stringAsTextNode","childDesc","isRouteOfNextSibling","route1","route2","lastD1Idx","remainingDiffs","_findRefNodes","isAddition","refNode","refParentNode","findRefNodes","delNode","oldValue","insNode","_delNode","_delNode2","textDiffs","diff_main","diff_cleanupSemantic","textDiffNode","_delNode3","updatedNode","_insNode3","_container2","diff_match_patch","Diff_Timeout","Diff_EditCost","Match_Threshold","Match_Distance","Patch_DeleteThreshold","Patch_Margin","Match_MaxBits","Diff","text1","text2","opt_checklines","opt_deadline","deadline","checklines","commonlength","diff_commonPrefix","commonprefix","diff_commonSuffix","commonsuffix","diffs","diff_compute_","diff_cleanupMerge","longtext","shorttext","hm","diff_halfMatch_","text1_a","text1_b","text2_a","text2_b","mid_common","diffs_a","diffs_b","diff_lineMode_","diff_bisect_","diff_linesToChars_","chars1","chars2","linearray","lineArray","diff_charsToLines_","pointer","count_delete","count_insert","text_delete","text_insert","text1_length","text2_length","max_d","v_offset","v_length","v2","k1start","k1end","k2start","k2end","k1","k1_offset","k2_offset","diff_bisectSplit_","k2","y2","text1a","text2a","text1b","text2b","diffsb","lineHash","diff_linesToCharsMunge_","lineStart","lineEnd","lineArrayLength","pointermin","pointermax","pointermid","pointerstart","pointerend","diff_commonOverlap_","text_length","best","dmp","diff_halfMatchI_","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","seed","best_common","prefixLength","suffixLength","hm1","hm2","equalities","equalitiesLength","lastequality","length_insertions1","length_deletions1","length_insertions2","length_deletions2","diff_cleanupSemanticLossless","deletion","insertion","overlap_length1","overlap_length2","diff_cleanupSemanticScore_","char1","char2","nonAlphaNumeric1","nonAlphaNumericRegex_","nonAlphaNumeric2","whitespace1","whitespaceRegex_","whitespace2","lineBreak1","linebreakRegex_","lineBreak2","blankLine1","blanklineEndRegex_","blankLine2","blanklineStartRegex_","equality1","equality2","commonOffset","commonString","bestEquality1","bestEdit","bestEquality2","bestScore","diff_cleanupEfficiency","pre_ins","pre_del","post_ins","post_del","diff_xIndex","last_chars1","last_chars2","diff_prettyHtml","pattern_amp","pattern_lt","pattern_gt","pattern_para","diff_text1","diff_text2","diff_levenshtein","levenshtein","insertions","deletions","diff_toDelta","diff_fromDelta","diffsLength","match_main","match_bitap_","match_alphabet_","match_bitapScore_","accuracy","proximity","score_threshold","best_loc","bin_min","bin_mid","matchmask","last_rd","bin_max","charMatch","patch_addContext_","start2","length1","start1","length2","patch_make","opt_b","opt_c","patches","patch_obj","patchDiffLength","char_count1","char_count2","prepatch_text","postpatch_text","diff_type","diff_text","patch_deepCopy","patchesCopy","patchCopy","patch_apply","nullPadding","patch_addPadding","patch_splitMax","start_loc","expected_loc","end_loc","index2","index1","paddingLength","extraLength","patch_size","bigpatch","precontext","postcontext","patch_toText","patch_fromText","textline","textPointer","patchHeader","MAudioBody","playing","controls","support","formData","viewClasses","isArrayBufferView","normalizeName","normalizeValue","iteratorFor","Headers","consumed","bodyUsed","fileReaderReady","readBlobAsArrayBuffer","bufferClone","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","_bodyArrayBuffer","readAsText","readArrayBufferAsText","Request","upcased","signal","Response","bodyInit","redirectStatuses","redirect","DOMException","aborted","abortXhr","rawHeaders","getAllResponseHeaders","responseURL","ontimeout","_MImageBody3","MStickerBody","TintableSVG","thumbScale","widthMulti","heightMulti","poster","preload","autoPlay","MessageActionBar","onDecrypted","onFocusChange","onCryptoClick","onReplyClick","onOptionsClick","MessageContextMenu","getTile","getReplyThread","replyThread","buttonRight","buttonBottom","buttonTop","ReactMessageAction","reactions","reactButton","replyButton","editButton","renderReactButton","MessageTimestamp","onReactionsChange","ReactionsQuickTooltip","ReactionTooltipButton","myReactionEvent","mx_ReactionTooltipButton","mx_ReactionTooltipButton_selected","myReactions","getMyReactions","hoveredItem","getAnnotationsBySender","shortcodeLabel","ReactionsRow","onShowAllClick","ReactionsRowButton","getSortedAnnotationsByKey","reactionEvents","showAllButton","MAX_ITEMS_WHEN_LIMITED","tooltipRendered","tooltipVisible","ReactionsRowButtonTooltip","mx_ReactionsRowButton","mx_ReactionsRowButton_selected","tooltipLabel","reactionEvent","shortName","reactors","reactedWith","onAvatarClick","_onLinkClicked","prevRoom","predecessorPermalink","userGroups","relatedGroups","_updateRelatedGroups","getPublicisedGroupsCached","_getDisplayedGroups","displayedGroups","colorClass","flair","enableFlair","nameElem","nameFlair","_highlight2","widgetHidden","copyToClipboard","textArea","_applyFormatting","activateSpoilers","calculateUrlPreview","_addCodeCopyButton","stoppedEditing","editedMarkerHovered","findLinks","spoilerContainer","spoiler","outerHTML","isLinkPreviewable","copyCode","onEmoteSenderClick","onStarterLinkClick","starterLink","integrationManager","completeUrl","integrationsUrl","_onMouseEnterEditedMarker","_onMouseLeaveEditedMarker","_openHistoryDialog","_renderEditedMarker","editedTooltip","dateString","EditMessageComposer","stripReply","LinkPreviewWidget","TextForEvent","redactedBecauseUserId","ViewSourceEvent","mx_ViewSourceEvent_expanded","domainToAliases","remoteDomains","updatingCanonicalAlias","localDomain","aliasEventsToDictionary","dict","canonicalValue","canonicalAliasSection","onCanonicalAliasChange","remoteAliasesSection","newAlias","onNewAliasChanged","onLocalAliasAdded","onLocalAliasDeleted","isAliasValid","localAliases","domainAliases","changeCanonicalAlias","ROOM_COLORS","getKeyRgb","_getColorIndex","saveSettings","originalState","room_color","_onColorSchemeChanged","boundClick","backgroundColor","GROUP_ID_REGEX","onNewGroupChanged","newGroupId","onGroupAdded","validateGroupId","newGroupsList","updateGroups","onGroupDeleted","_onClickUserSettings","previewsForAccount","previewsForRoom","accountEnabled","previewsForRoomAccount","_AutocompleteProvider3","_QueryMatcher2","_Components","COMMAND_RE","CommandProvider","_AutocompleteProvider","matcher","_getCurrentCommand","COMMUNITY_REGEX","CommunityProvider","joinedGroups","matchedString","DDG_REGEX","DuckDuckGoProvider","getQueryUri","Results","Answer","AnswerType","RelatedTopics","AbstractText","isDataView","ROOM_REGEX","RoomProvider","matcherObjects","displayedAlias","completionId","USER_REGEX","FORCED_USER_REGEX","UserProvider","_onRoomTimelineBound","_onRoomTimeline","_onRoomStateMemberBound","_onRoomStateMember","onUserSpoke","_makeUsers","fullMatch","lastSpoken","user2","_strippedEmoji2","EMOJI_REGEX","EMOJI_SHORTNAMES","emoji_order","shortname","aliases_ascii","_orderBy","EmojiProvider","nameMatcher","sorters","AT_ROOM_REGEX","NotifProvider","counters","_computeCounters","_rateLimitedUpdate","onConferenceNotificationClick","stateEvs","severity","CallView","fileDropTarget","conferenceCallNotification","supportedText","joinNode","callView","maxVideoHeight","appsDrawer","stateViews","firstDiff","compareLen","oldStr","newStr","firstDiffIdx","diffLen","caretPositionBeforeInput","oldValueBeforeCaret","newValueBeforeCaret","startInCommon","commonStartLen","diffStringsAtEnd","DocumentPosition","otherPos","startPos","lastPartIdx","MAX_STEP_LENGTH","HistoryManager","_newlyTypedCharCount","_currentIndex","_changedSinceLastPush","_nonWordBoundarySinceLastPush","_addedSinceLastPush","_removedSinceLastPush","isWordBoundary","serializeParts","shouldPush","_shouldPush","_pushState","getNodeAndOffsetForPosition","setDocumentRangeSelection","setCaretPosition","getLineAndNodePosition","_getNodeAndOffsetForP","_getLineAndNodePositi","lineIndex","nodeIndex","lineNode","lineResult","nextPart","findNodeInLineForPart","_moveOutOfUneditableP","moveOutOfUneditablePart","replaceRangeAndExpandSelection","oldLen","firstOffset","rangeStartsAtBeginningOfLine","startsWithPartial","isFirstPart","previousIsNewline","rangeEndsAtEndOfLine","endsWithPartial","isLastPart","nextIsNewline","partWithoutPrefix","partWithoutSuffix","suffixPartText","AutocompleteWrapperModel","_getAutocompleterComponent","_updateQuery","_queryPart","acComponent","moveSelection","_partIndex","_partForCompletion","createMentionParts","_serialize","createEditContent","editedEvent","isEmote","relatesTo","isReply","plainPrefix","htmlPrefix","getTextReplyFallback","mxReply","getHtmlReplyFallback","newContent","contentBody","_setEditorRef","_sendEdit","_cancelEdit","isModified","isCaretAtStart","previousEvent","_getRoom","isCaretAtEnd","nextEvent","_isContentModified","_cancelPreviousPendingEdit","saveDisabled","oldContent","setEditorState","_createEditorModel","hasEditorState","getSerializedParts","XmlRenderer","InlineParser","reHtmlBlockOpen","reHtmlBlockClose","reThematicBreak","reMaybeSpecial","reNonSpace","reBulletListMarker","reOrderedListMarker","reATXHeadingMarker","reCodeFence","reClosingCodeFence","reSetextHeadingLine","reLineEnding","isSpaceOrTab","ln","endsWithBlankLine","addLine","partiallyConsumedTab","charsToTab","currentLine","addChild","canContain","finalize","column_number","newBlock","closeUnmatchedBlocks","allClosed","oldtip","lastMatchedContainer","acceptsLines","subitem","block_quote","indented","nextNonspace","advanceNextNonspace","advanceOffset","blank","markerOffset","heading","thematic_break","code_block","newlinePos","firstLine","_htmlBlockType","hasReferenceDefs","inlineParser","parseReference","refmap","blockStarts","fenceLength","blockType","list_data","item_data","nextc","spacesStartCol","spacesStartOffset","bulletChar","blank_item","spaces_after_marker","parseListMarker","charsToAdvance","nextNonspaceColumn","findNextNonspace","cols","incorporateLine","all_matched","lastLineLength","matchedLeaf","startsLen","lastLineBlank","cont","above","processInlines","timeEnd","encodeCache","exclude","keepEscaped","nextCode","defaultChars","getEncodeCache","componentChars","decodeCache","getDecodeCache","b1","b2","b3","b4","re_nonASCII","re_astralSymbols","re_xmlChars","normalizeReference","ESCAPED_CHAR","rePunctuation","reLinkTitle","reLinkDestinationBraces","reEscapable","reEntityHere","reTicks","reTicksHere","reEllipses","reDash","reEmailAutolink","reAutolink","reSpnl","reWhitespaceChar","reWhitespace","reUnicodeWhitespaceChar","reFinalSpace","reInitialSpace","reSpaceAtEndOfLine","reLinkLabel","reMain","spnl","parseBackticks","ticks","afterOpenTicks","parseBackslash","subj","parseAutolink","parseHtmlTag","scanDelims","char_before","char_after","cc_after","left_flanking","right_flanking","can_open","can_close","after_is_whitespace","after_is_punctuation","before_is_whitespace","before_is_punctuation","numdelims","startpos","handleDelim","delimiters","origdelims","removeDelimiter","processEmphasis","stack_bottom","opener","closer","old_closer","opener_inl","closer_inl","tempstack","use_delims","opener_found","openers_bottom","odd_match","closercc","emph","parseLinkTitle","parseLinkDestination","savepos","openparens","parseLinkLabel","parseOpenBracket","addBracket","parseBang","parseCloseBracket","is_image","reflabel","removeBracket","beforelabel","bracketAfter","previousDelimiter","parseEntity","parseString","smart","enCount","emCount","parseNewline","lastc","hardbreak","rawlabel","matchChars","beforetitle","atLineEnd","normlabel","parseInline","parseInlines","highSurrogate","lowSurrogate","MAX_SIZE","codeUnits","reUnsafeProtocol","reSafeDataProtocol","potentiallyUnsafe","disableTags","linebreak","grandparent","listTight","tagname","info_words","listType","listStart","custom_inline","onEnter","onExit","custom_block","selfclosing","att","reXMLTag","indentLevel","nodetype","listDelimiter","delimword","PRESENCE_CLASS","presenceLastActiveAgo","presenceLastTs","presenceCurrentlyActive","showInviteButton","showPresence","mainClassNames","nameEl","activeAgo","PresenceLabel","presenceLabel","power","_EntityTile$POWER_STA","_EntityTile$POWER_STA2","POWER_STATUS_MODERATOR","eventTileTypes","stateEventTileTypes","getHandlerTile","contextual","actionBarFocused","allReadAvatars","previouslyRequestedKeys","getReactions","_suppressReadReceiptAnimation","_verifyEvent","_onDecrypted","_onReactionsCreated","_propsEqual","rA","rB","toggleAllReadAvatars","getReadAvatars","ReadReceiptMarker","MAX_READ_AVATARS","readReceiptInfo","leftOffset","suppressAnimation","remText","onSenderProfileClick","onRequestKeysClick","onPermalinkClicked","_renderE2EPadlock","E2ePadlockUndecryptable","E2ePadlockUnverified","E2ePadlockUnencrypted","onActionBarFocusChange","SenderProfile","isInfoMessage","tileHandler","EventTileType","isMessageEvent","isEncryptionFailure","mx_EventTile","mx_EventTile_isEditing","mx_EventTile_info","mx_EventTile_12hr","mx_EventTile_encrypting","mx_EventTile_sending","mx_EventTile_notSent","mx_EventTile_highlight","mx_EventTile_selected","mx_EventTile_continuation","mx_EventTile_last","mx_EventTile_contextual","mx_EventTile_actionBarFocused","mx_EventTile_verified","mx_EventTile_unverified","mx_EventTile_bad","mx_EventTile_emote","mx_EventTile_redacted","readAvatars","avatarSize","needsSenderProfile","actionBar","keyRequestHelpText","keyRequestInfoContent","keyRequestInfo","reactionsRow","thread","makeThread","_thread","messageTypes","E2ePadlock","ImageUtils","onImageClick","_thumbHeight","DeviceVerifyButtons","iconClasses","mx_MemberDeviceInfo_icon","mx_MemberDeviceInfo_icon_blacklisted","mx_MemberDeviceInfo_icon_verified","mx_MemberDeviceInfo_icon_unverified","deviceName","ambiguous","_Receipt","can","modifyLevel","synapseDeactivate","redactMessages","isTargetMod","updating","devicesLoading","isIgnoring","_cancelDeviceList","_enableDevices","onDeleteRoom","onRoomMemberName","onRoomMemberMembership","_checkIgnoreState","_updateStateForNewMember","_disambiguateDevices","indexList","_getE2EStatus","_calculateOpsPermissions","_downloadDeviceList","onIgnoreToggle","onKick","onBanOrUnban","onRedactAllMessages","_props$member","eventsToRedact","_warnSelfDemote","onMuteToggle","isMuted","levelToSend","onModToggle","modLevel","onSynapseDeactivate","_applyPowerChange","onPowerChange","myPower","onNewDMClick","canDeactivate","defaultPerms","them","_calculateCanPermissions","_isMuted","isMe","modifyLevelMax","editPowerLevel","powerLevelContent","onMemberAvatarClick","_renderDevices","devComponents","onShareUserClick","_renderUserOptions","ignoreButton","insertPillButton","inviteUserButton","readReceiptButton","onInviteUserButton","shareUserButton","startChat","banButton","muteButton","giveModButton","synapseDeactivateButton","RoomTile","labelClasses","mx_MemberInfo_createRoom_label","mx_RoomTile_name","startNewChat","kickLabel","muteLabel","toggleMod","giveOpLabel","sameHomeserver","memberName","powerLevelUsersDefault","enablePresenceByHsUrl","statusLabel","roomMemberDetails","e2eIconElement","backButton","rate_limited_func","_getMembersState","_mounted","_showMembersAccordingToMembershipWithLL","_listenForMembersChanges","_showPresence","onRoomStateEvent","onUserPresenceChange","_updateList","_cli","filteredJoinedMembers","_filterMembers","filteredInvitedMembers","truncateAtJoined","truncateAtInvited","_updateListNow","getMembersWithUser","allMembers","filteredAndSortedMembers","memberSort","_createOverflowTileJoined","_showMoreJoinedMemberList","_createOverflowTileInvited","_showMoreInvitedMemberList","memberString","memberA","memberB","userA","userB","presenceIndex","convertPresence","nameA","nameB","_onPending3pidInviteClick","_getPending3PidInvites","_makeMemberTiles","MemberTile","_getChildrenJoined","_getChildCountJoined","_getChildrenInvited","targets","_getChildCountInvited","canInvite","invitedHeader","invitedSection","getStatusMessage","member_last_modified_time","user_last_modified_time","getPowerLabel","userName","powerLevelNumber","powerStatusMap","ComposerAvatar","CallButton","VideoCallButton","HangupButton","UploadButton","onUploadClick","onUploadFileInputChange","uploadInput","tfiles","onInputStateChanged","_onRoomStateEvents","_onTombstoneClick","renderPlaceholderText","isQuoting","_getRoomTombstone","canSendMessages","_waitForOwnMember","inputState","replacementRoomId","replacementRoom","createEventId","roomIsEncrypted","SendMessageComposer","callInProgress","messageComposerInput","continuesLink","wrapperClasses","mx_MessageComposer_wrapper","mx_MessageComposer_hasE2EIcon","FormatButton","_slateReact","_slate","_slateHtmlSerializer2","_slateMdSerializer2","_slatePlainSerializer2","_PlainWithPillsSerializer2","_MessageComposerStore2","_SlateComposerHistoryManager2","BLOCK_TAGS","blockquote","ul","pre","MARK_TAGS","em","strike","SLATE_SCHEMA","MessageComposerInput","isRichTextEnabled","setRichtextMode","suppressAutoComplete","plainWithMdPills","pillFormat","plainWithIdPills","plainWithPlainPills","permalinkEntity","renderNode","renderMark","savedState","getEditorState","editorState","createEditorState","editor_state","rich_text","originalEditorState","currentlyComposedEditorState","someCompletions","wantRichText","wasRichText","mdToRichEditorState","richToMdEditorState","textWithMdPills","markdown","_editor","firstGrandChild","activeEditorState","mx_MessageComposer_input_error","markdownClasses","mx_MessageComposer_input_markdownIndicator","mx_MessageComposer_markdownDisabled","autocomplete","onAutocompleteConfirm","setDisplayedCompletion","getAutocompleteQuery","getSelectionRange","onMarkdownToggleClicked","Editor","_collectEditor","spellCheck","anchorText","anchorBlock","replaceNodeByKey","insertFragmentByKey","fragmentChange","wrapBlock","_change","focusedNode","focusInline","focusText","previousText","focusKey","currentStartOffset","hasMark","hasBlock","handleReturn","onBackspace","onVerticalArrow","onSpace","_KeyCode$KEY_M$KeyCod","ctrlCmdCommand","handleKeyCommand","setBlocks","unwrapBlock","enableRichtext","transfer","getEventTransfer","isMac","contentText","commandText","replyingToEv","mustSendHTML","shouldSendHTML","findDescendant","sourceWithPills","mdWithPills","toPlaintext","sendHtmlFn","sendTextFn","replyContent","makeReplyMixIn","nestedReply","getNestedReplyText","shouldSelectHistory","shouldEditLastMessage","selectHistory","_document2","historyItem","displayedCompletion","_editorState","_displayedCompletion$","_displayedCompletion$2","_displayedCompletion$3","_displayedCompletion$4","_displayedCompletion$5","_change2","onFormatButtonClicked","selectColor","createDebug","curr","skips","cloneSymbol","baseIsMap","baseIsSet","commonAncestorContainer","startContainer","TEXT_RULE","defaultParseHtml","parseHtml","deserializeElements","cruftNewline","deserializeElement","deserializeMark","applyMark","serializeLeaf","addKey","serializeString","Html","_options$parseHtml","_options$rules","listing","suppressContentEditableWarning","suppressHydrationWarning","domNamespace","childIndex","footer","threadID","exhausted","currentSelectValue","previousWasTextNode","makeStaticMarkup","suspenseDepth","contextIndex","contextValueStack","clearProviders","pushProvider","popProvider","fallbackFrame","renderDOM","renderToString","renderToStaticMarkup","renderToNodeStream","renderToStaticNodeStream","_parser2","_immutable","_urls","tableHeader","addNewLine","_toConsumableArray","serializeLeaves","inCodeBlock","leavesText","gfm","tables","breaks","pedantic","smartLists","langPrefix","fences","nptable","lheading","Lexer","normal","bullet","bq","loose","bull","newlines","todo","endsWithNewline","reflink","nolink","InlineLexer","TextNode","_inside","_href","inLink","outputLink","codespan","groupTextInLeaves","childNode","accLast","lastIsText","listitem","tablerow","tablecell","parseText","_cells","_body","_body2","_body3","_flags","MarkdownParser","PlainWithPillsSerializer","_serializeNode","_options$pillFormat","localStoragePrefix","MessageComposerStore","richText","stateStr","singletonMessageComposerStore","_clamp3","HistoryItem","SlateComposerHistoryManager","sessionStorage","_PinningUtils2","_updatePinnedMessages","contexts","isPinnable","_updateReadState","readStateEvents","readPinsEvent","event_ids","_getPinnedTiles","PinningUtils","ago","getDuration","getPrettyPresence","Velociraptor","bounce","suppressDisplay","rrInfo","oldInfo","newElement","startTopOffset","startStyles","enterTransitionOpts","dateTime","ReactDom","_updateChildren","oldChildren","oldNode","restingStyle","startStyle","_collectNode","transitionOpts","_domNode","easeOutBounce","pow2","onRoomMembershipChanged","_calculateRoomBadges","onBreadcrumbsChanged","_loadRoomIds","_shouldEnable","storedRooms","_settingWatchRef","roomModel","animated","_appendRoomId","_calculateBadgesForRoom","zero","redBadge","formattedCount","showCount","highlightNotifs","unreadNotifs","greyBadge","existingIdx","moveToOrigin","_onHover","_isDmRoom","_RoomDetailRow","getRows","RoomDetailRow","onDetailsClick","_SimpleRoomHeader","_onRoomAccountData","_onRoomNameChange","onShareRoomClick","_hasUnreadPins","currentPinEvent","_hasPins","searchStatus","settingsButton","pinnedEventsButton","e2eIcon","settingsHint","textClasses","mx_RoomHeader_settingsHint","topicElement","roomAvatar","pinsIndicator","forgetButton","searchButton","shareRoomButton","manageIntegsButton","rightRow","_roomsublist","Receipt","labelForTagName","_hoverClearTimer","_subListRefs","sizesJson","collapsedJson","subListSizes","collapsedState","_layoutSections","_unfilteredlayout","Layout","_checkSubListsOverflow","allowWhitespace","handleHeight","_filteredLayout","_layout","isLoadingLeftRooms","totalRoomCount","incomingCallTag","customTags","getTags","_visibleRoomsForGroup","_visibleRooms","updateVisibleRoomsForTag","updateVisibleRooms","_delayedRefreshRoomList","_customTagStoreToken","_delayedRefreshRoomListLoopCount","getLayout","forceLayoutUpdate","_repositionIncomingCallBox","getTagNameForRoomId","onArchivedHeaderClick","scrollToPosition","visibleGroupRooms","roomSet","totalRooms","filteredLists","isRoomVisible","filteredRooms","taggedRoom","_whenScrolling","_hideTooltip","incomingCallBox","scrollArea","scrollAreaOffset","scrollAreaHeight","bottomMargin","_getHeaderItems","_makeGroupInviteTiles","lcFilter","GroupInviteTile","_applySearchFilter","_handleCollapsedState","collapseSection","expandSection","_subListRef","_mapSubListProps","subListsProps","chosenKey","_collectResizeContainer","incomingCallIfTaggedAs","subLists","tagSubLists","subListComponents","_sign2","applyHeight","initialSizes","_applyHeight","_collapsedState","_availableHeight","_sectionHeights","_heights","_clampedOffset","_lastOffset","_allowWhitespace","_handleHeight","_applyNewSize","openHandle","availableHeight","heightChanged","sectionsChanged","totalHeight","_getAvailableHeight","defaultHeight","_getMinHeight","_getMaxHeight","_getSectionIndex","Handle","nonCollapsedSectionCount","_applyOverflow","_applyHeights","_commitHeights","_sectionHeight","maxItems","blend","unclampedSections","overflowPerSection","overflowAbove","overflowBelow","constrained","_rebalanceAbove","_rebalanceBelow","_relayout","layout","_sectionIndex","_initialHeight","_setUncommittedSectionHeight","_handle","myId","defaultName","_placeholderName","getRoomName","MessageCase","NotLoggedIn","Joining","Loading","Rejecting","Kicked","Banned","OtherThreePIDError","InvitedEmailNotFoundInAccount","InvitedEmailNoIdentityServer","InvitedEmailMismatch","Invite","ViewingRoom","RoomNotFound","OtherError","spinnerState","_checkInvitedEmail","account3pids","accountEmails","invitedEmailMxid","threePidFetchError","_getMessageCase","myMember","_getMyMember","_getKickOrBanInfo","kickerMember","_joinRule","_roomName","_getInviteMember","inviterUserId","_isDMInvite","_makeScreenAfterLogin","darkStyle","subTitle","primaryActionHandler","primaryActionLabel","secondaryActionHandler","secondaryActionLabel","messageCase","_getKickOrBanInfo2","_getKickOrBanInfo3","_memberName","errCodeMessage","inviteMember","inviterElement","issueLink","subTitleElements","titleElement","secondaryButton","showSetupDialog","onOnNotNowClick","notNowClicked","onDontAskAgainClick","onDontAskAgain","onSetup","onSetupClick","setupCaption","getTopic","_onStateEvents","onUpgradeClick","doUpgradeWarnings","onThisRoomClick","_searchIfQuery","onAllRoomsClick","searchButtonClasses","mx_SearchBar_searchButton","mx_SearchBar_searching","thisRoomClasses","mx_SearchBar_button","mx_SearchBar_unselected","allRoomsClasses","SearchableEntityList","emptyQueryShowsAll","showInputBox","getSearchResults","setQuery","onQuerySubmit","_showAll","_createOverflowEntity","getJsx","_SendHistoryManager2","createMessageContent","repliedToEvent","addReplyToMessageContent","_sendMessage","_saveStoredEditorState","_clearStoredEditorState","_editorStateKey","_insertMention","_insertQuotedMessage","selectSendHistory","isSelectionCollapsed","sendHistoryManager","isServerError","_isSlashCommand","_runSlashCommand","clearUndoHistory","getEditableRootNode","_restoreStoredEditorState","quoteParts","SendHistoryManager","itemJSON","editorModel","formatButtonList","FormattingButton","showFormatting","onClickHandler","_onAutocompleteConfirm","onToggleFormattingClicked","onToggleMarkdownClicked","renderFormatBar","_state$inputState","formatButtons","markName","showFormattingButton","showFormatBar","newDisplayName","onKickClick","kickLevel","canKick","presenceActiveAgo","_WhoIsTyping2","whoIsTypingLimit","usersTyping","usersTypingApartFromMe","delayedStopTypingTimers","onRoomMemberTyping","wasVisible","_isVisible","_abortUserTimer","usersTypingApartFromMeAndIgnored","_updateDelayedStopTypingTimers","usersThatStoppedTyping","usersThatStartedTyping","_removeUserTimer","_renderTypingIndicatorAvatars","othersCount","stoppedUsersOnTimer","typingString","whoIsTypingString","memberKeys","lastPerson","showUploadSection","Uploading","avatarSet","setAvatarFromFile","httpPromise","onFileSelected","avatarImg","uploadSection","_changeDisplayName","newDisplayname","onCheckPassword","buttonClassName","oldPass","newPass","confirmPass","oldPassword","newPasswordConfirm","changePassword","_changePassword","_optionallySetEmail","SetEmailDialog","onChangeOldPassword","onChangeNewPassword","onChangeNewPasswordConfirm","onClickChange","confirmPassword","currentPassword","passwordLabel","deviceLoadError","selectedDevices","_renderDevice","_onDeviceSelectionToggled","_loadDevices","errtxt","lastSeenDelta","last_seen_ts","idA","idB","_makeDeleteRequest","InteractiveAuthDialog","DevicesPanelEntry","onDeviceToggled","_classes2","_deviceCompare","lastSeen","lastSeenDate","last_seen_ip","myDeviceClass","_startNewBackup","_deleteBackup","_onKeyBackupSessionsRemaining","_onKeyBackupStatus","_restoreBackup","sessionsRemaining","_checkKeyBackupStatus","backupSigStatus","encryptedMessageAreEncrypted","clientBackupStatus","restoreButtonCaption","uploadStatus","backupSigStatuses","sig","validity","fromThisDevice","sigStatus","trustedLocally","_notifications","LEGACY_RULES","DISPLAY","masterPushRule","vectorPushRules","vectorContentRules","vectorState","PushRuleVectorState","externalPushRules","externalContentRules","_refreshFromServer","onEnableNotificationsChange","onEnableDesktopNotificationsChange","onEnableDesktopNotificationBodyChange","onEnableAudioNotificationsChange","getEmailPusher","pushkey","onEnableEmailNotificationsChange","emailPusherPromise","app_id","app_display_name","onNotifStateButtonClicked","vectorRuleId","newPushRuleVectorState","_setKeywordsPushRuleVectorState","getRule","_setPushRuleVectorState","onKeywordsClicked","TextInputDialog","should_leave","newKeywords","_setKeywords","deferreds","ruleDefinition","VectorPushRulesDefinitions","vectorStateToActions","_updatePushRuleActions","resps","removeDeferreds","vectorContentRulesPatterns","pushRuleVectorStateKind","_addDisabledPushRule","_portRulesToNewAPI","needsUpdate","pushRulesPromise","rule_categories","defaultRules","master","vector","others","contentRules","ContentRules","parseContentRules","externalRules","vectorRuleIds","ruleToVectorState","otherRulesDescriptions","_rule2","ruleDescription","pushersPromise","renderNotifRulesTableRow","renderNotifRulesTableRows","hasEmailPusher","emailNotificationsRow","masterPushRuleDiv","emailThreepids","tp","emailNotificationsRows","threePid","externalKeywords","_rule3","devicesSection","advancedSettings","VectorPushRuleDefinition","loud","_categoriseContentRules","loud_but_disabled","on_but_disabled","checkIdentityServerUrl","currentClientIdServer","_onIdentityServerChanged","idServer","_getTooltip","checking","_idServerChangeEnabled","_saveIdServer","_checkIdServer","_this$state","_confirmed","_showNoTermsWarning","_showServerChangeWarning","unboundMessage","new","_onDisconnectClicked","disconnectBusy","idserver","_disconnectIdServer","newFieldVal","defaultIdServer","boundThreepids","_Modal$createTrackedD2","sectionTitle","bodyText","discoSection","discoButtonContent","discoBodyText","_onUrlChanged","_canChange","_continueTerms","overwriteManagerOnAccount","currentManager","_setManager","offline","tryDiscoverManager","trimmedApiUrl","managerName","ExistingEmailAddress","onRemoved","_onRemoved","_onChangeNewEmailAddress","newEmailAddress","_onAddClick","verifying","continueDisabled","addTask","existingEmailElements","ExistingPhoneNumber","phone","_onChangeNewPhoneNumber","newPhoneNumber","_onChangeNewPhoneNumberCode","newPhoneNumberCode","verifyMsisdn","haveMsisdnToken","verifyError","_onCountryChanged","existingPhoneElements","addVerifySection","EmailAddress","onRevokeClick","changeBinding","errorTitle","onShareClick","onContinueClick","_props$email","changeBindingTangledAddBind","bindEmailAddress","_props$email2","PhoneNumber","onVerificationCodeChange","verificationCode","_props$msisdn","bindMsisdn","_props$msisdn2","_onContinue","servicePolicies","availablePolicies","renderablePolicy","rendered","policyLink","hasUnchecked","_renderCheckboxes","sasDisplay","sasCaption","emojiBlocks","numberBlocks","_onCallViewClick","callForRoom","showVoice","PersistentApp","showCall","getVideoView","VideoView","voice","callRoom","onAnswerClick","incomingCallText","vid","getFullScreenElement","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","msFullscreenElement","remote","local","setContainer","requestFullScreen","webkitRequestFullScreen","mozRequestFullScreen","msRequestFullscreen","exitMethod","exitFullscreen","mozCancelFullScreen","webkitExitFullscreen","msExitFullscreen","VideoFeed","localVideoFeedClasses","objToNode","objNode","insideSvg","createComment","valueDiffing","getFromRoute","applyDiff","tree","nodeArray","_const","preDiffApply","addAttribute","modifyAttribute","modifyTextElement","textDiff","modifyValue","modifyComment","modifyChecked","modifySelected","relocateGroup","groupLength","removeTextElement","addTextElement","postDiffApply","undoDOM","undoDiff","aKey","elementDescriptors","findUniqueDescriptors","uniqueDescriptors","duplicateDescriptors","inUnique","uniqueInBoth","l1","l2","l1Unique","l2Unique","inBoth","removeDone","outerDone","innerDone","valueDone","e1","e2","e1Attributes","e2Attributes","roughlyEqual","sameSiblings","preventRecursion","nodeList1","nodeList2","childUniqueDescriptors","cloneObj","findCommonSubsets","c1","marked1","marked2","lcsSize","c1Length","c2Length","subsetsSame","c1Desc","c2Desc","c1Index","c1Element","c2Index","c2Element","makeArray","DiffTracker","getFromVirtualRoute","applyVirtual","routeInfo","newSubsets","movedNode","subsets","splitLength","applyVirtualDiff","nodeToObj","aNode","tagRE","attrRE","menuItem","byTag","inComponent","isOpen","nextChar","tagMatch","voidElement","reg","parseTag","stringToObj","cleanObj","t1Node","t2Node","diffcount","foundAll","t1Orig","t2Orig","tracker","findDiffs","diffcap","diffError","findNextDiff","fdiffs","maxDepth","findOuterDiff","filterOuterDiff","findInnerDiff","findValueDiff","attr1","attr2","attrLength","maxNodeDiffCount","t1ChildNodes","t2ChildNodes","childNodesLengthDifference","maxChildCount","subtrees","subsetsAge","oldTree","newTree","subset","returnIndex","markBoth","markSubTrees","attemptGroupRelocation","gapInformation","stable","gaps1","gaps2","endOld","endNew","getGapInformation","destinationDifferent","toGroup","similarNode","testI","shortest","expectedValue","compress","varNames","varName","DiffFinder","applyDOM","TraceLogger","wrapkey","oldfn","fout","stringCollapse","terminator","isChange","isData","isInlineList","isLeafList","isMarkSet","isNodeList","isRangeList","isTextList","features","InputEvent","_name2","ANDROID_API_VERSIONS","IS_FIREFOX","IS_SAFARI","IS_IE","IS_EDGE","IS_ANDROID","IS_IOS","ANDROID_API_VERSION","versionString","getAndroidApiVersion","HAS_INPUT_EVENTS_LEVEL_2","deserializeNode","HOTKEYS","moveWordBackward","moveWordForward","deleteBackward","deleteForward","extendBackward","extendForward","italic","APPLE_HOTKEYS","moveLineBackward","moveLineForward","deleteLineBackward","deleteLineForward","deleteWordBackward","deleteWordForward","extendLineBackward","extendLineForward","transposeCharacter","WINDOWS_HOTKEYS","Hotkeys","IS_APPLE","generic","apple","isGeneric","isApple","isWindows","EVENT_HANDLERS","PLUGIN_PROPS","PARSER","OffsetKey","_matches","renderMarks","_props3","isLastText","isLastLeaf","Text$1","Text$$1","_initialiseProps$1","renderLeaf","pLast","nLast","Void","_initialiseProps$2","outline","getChildrenDecorations","activeDecorations","childrenDecorations","keyOrders","globalOrder","endPoints","startKeyOrder","containingChildOrder","nextChildIndex","containingChild","getContainingChildOrder","isRangeStart","endKeyOrder","isRangeEnd","orderChildDecorations","Node$1","Node$$1","_initialiseProps$3","shouldUpdate","getSelectionIndexes","getDecorations","isChildSelected","getTextDirection","findDOMNode$1","findDOMPoint","createNodeIterator","NodeFilter","SHOW_TEXT","FILTER_ACCEPT","findDOMRange","isBackward$$1","domAnchor","domFocus","ZERO_WIDTH_ATTRIBUTE","ZERO_WIDTH_SELECTOR","OFFSET_KEY_ATTRIBUTE","RANGE_SELECTOR","TEXT_SELECTOR","VOID_SELECTOR","findPoint","nativeNode","nativeOffset","_normalizeNodeAndOffs","getEditableChild","normalizeNodeAndOffset","nearestNode","nearestOffset","rangeNode","voidNode","createPoint","triedForward","triedBackward","findRange","native","StaticRange","endContainer","_native","OVERFLOWS","IS_IOS_11","scrollToSelection","findScrollContainer","backward","cloneRange","cursorRect","getClientRects","yOffset","xOffset","scrollerTop","scrollerLeft","scrollerBordersY","scrollerBordersX","scrollerPaddingTop","scrollerPaddingBottom","scrollerPaddingLeft","scrollerPaddingRight","_window$getComputedSt","borderBottomWidth","borderRightWidth","scrollerRect","cursorTop","cursorLeft","createTextRange","FIREFOX_NODE_TYPE_ACCESS_ERROR","Content","isUpdatingSelection","updateSelection","isBlurred","isInEditor","setBaseAndExtent","onNativeSelectionChange","onBeforeInput","toRange","whiteSpace","wordWrap","WebkitUserModify","autoCorrect","TRANSFER_TYPES","FRAGMENT","NODE","RICH","cloneFragment","_value$selection","cloneContents","setEndAfter","zw","isNewline","valFromSelection","plainText","selectAllChildren","findNode","getEventRange","isPrevious","caretRangeFromPoint","caretPositionFromPoint","moveToPoint","FRAGMENT$1","HTML$1","TEXT$1","FRAGMENT_MATCHER","rich","embeddedTypes","getEmbeddedTypes","getAsFile","getTransferType","TEXT$2","setEventTransfer","mime","debug$5","AfterPlugin","isDraggingInternally","_event$getTargetRange","getTargetRanges","targetRange","onCopy","onCut","isVoidBlock","isVoidInline","selectionIncludesNode","onInput","lastLeaf","corrected","entire","isSplitBlock","isDeleteBackward","deleteCharBackward","isDeleteForward","deleteCharForward","isDeleteLineBackward","isDeleteLineForward","isDeleteWordBackward","isDeleteWordForward","isRedo","isUndo","isMoveLineBackward","isMoveLineForward","isExtendLineBackward","isExtendLineForward","isMoveBackward","isMoveForward","_startText","isExtendBackward","_previousText","_startText2","_isPreviousInVoid","isExtendForward","_nextText","_startText3","_isNextInVoid","frag","anchorInline","focusBlock","setIsFocused","renderEditor","renderPlaceholder","debug$6","BeforePlugin","compositionCount","isCopying","onCompositionEnd","onCompositionStart","onDragEnter","onDragExit","onDragLeave","isCompose","isBold","isItalic","isTransposeCharacter","debug$7","_initialiseProps$4","resolvePlugins","resolveSchema","resolveStack","resolveValue","isChanging","operationsSize","resolveChange","beforePlugin","afterPlugin","editorPlugin","_prop"],"mappings":"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AAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACvE,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACvE,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACvE,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACvE,IAAU,IAAM,IAAU,IAC1B,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACvE,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACvE,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACtF,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACtF,IAAU,IAAM,IAAU,IAC1B,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,KAAM,IAAU,KAC1B,IAAU,KAAM,IAAU,KAC1B,IAAU,KAAM,IAAU,MAutBxBW,GAAiBX,GAntBH,CAChB,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,UAutBP,SAASY,GAAiBC,GACxB,MAAO,KAAOxD,GAAcwD,GAsB9B,SAASC,GAAWliJ,GAClB,OAAOm+I,GAAa9uK,KAAK2wB,GAsC3B,SAASmiJ,GAAWvrL,GAClB,IAAI0C,GAAS,EACT3E,EAASN,MAAMuC,EAAI4tB,MAKvB,OAHA5tB,EAAIkB,SAAQ,SAAS1G,EAAOM,GAC1BiD,IAAS2E,GAAS,CAAC5H,EAAKN,MAEnBuD,EAWT,SAASytL,GAAQ13H,EAAM6Y,GACrB,OAAO,SAAS1kE,GACd,OAAO6rD,EAAK6Y,EAAU1kE,KAa1B,SAASwjL,GAAep8J,EAAO4oF,GAM7B,IALA,IAAIv1G,GAAS,EACTlM,EAAS64B,EAAM74B,OACf+yL,EAAW,EACXxrL,EAAS,KAEJ2E,EAAQlM,GAAQ,CACvB,IAAIgE,EAAQ60B,EAAM3sB,GACdlI,IAAUy9G,GAAez9G,IAAU0lL,IACrC7wJ,EAAM3sB,GAASw9K,EACfniL,EAAOwrL,KAAc7mL,GAGzB,OAAO3E,EAUT,SAAS2tL,GAAWrsK,GAClB,IAAI3c,GAAS,EACT3E,EAASN,MAAM4hB,EAAIuO,MAKvB,OAHAvO,EAAIne,SAAQ,SAAS1G,GACnBuD,IAAS2E,GAASlI,KAEbuD,EAUT,SAAS4tL,GAAWtsK,GAClB,IAAI3c,GAAS,EACT3E,EAASN,MAAM4hB,EAAIuO,MAKvB,OAHAvO,EAAIne,SAAQ,SAAS1G,GACnBuD,IAAS2E,GAAS,CAAClI,EAAOA,MAErBuD,EAoDT,SAAS6tL,GAAWxiJ,GAClB,OAAOkiJ,GAAWliJ,GAkCpB,SAAqBA,GACnB,IAAIrrC,EAASspL,GAAUx2K,UAAY,EACnC,KAAOw2K,GAAU5uK,KAAK2wB,MAClBrrC,EAEJ,OAAOA,EAtCH8tL,CAAYziJ,GACZygJ,GAAUzgJ,GAUhB,SAAS0iJ,GAAc1iJ,GACrB,OAAOkiJ,GAAWliJ,GAoCpB,SAAwBA,GACtB,OAAOA,EAAO5mC,MAAM6kL,KAAc,GApC9B0E,CAAe3iJ,GAhkBrB,SAAsBA,GACpB,OAAOA,EAAOzpC,MAAM,IAgkBhBqsL,CAAa5iJ,GAUnB,IAAI6iJ,GAAmBzB,GA/6BH,CAClB,QAAS,IACT,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,QAAS,MAg/BX,IA+zeIpgL,GA/zee,SAAU8hL,EAAa3hL,GAIxC,IA6BM4vB,EA7BF18B,GAHJ8M,EAAqB,MAAXA,EAAkBmkC,GAAOtkC,GAAE+oH,SAASzkF,GAAKj4C,SAAU8T,EAASH,GAAEgwJ,KAAK1rH,GAAM+4I,MAG/DhqL,MAChBiwD,EAAOnjD,EAAQmjD,KACf/0D,GAAQ4R,EAAQ5R,MAChBoK,GAAWwH,EAAQxH,SACnB4J,GAAOpC,EAAQoC,KACflW,GAAS8T,EAAQ9T,OACjB2L,GAASmI,EAAQnI,OACjB4W,GAASzO,EAAQyO,OACjBld,GAAYyO,EAAQzO,UAGpBqwL,GAAa1uL,EAAM/G,UACnB01L,GAAYrpL,GAASrM,UACrB21L,GAAc51L,GAAOC,UAGrB41L,GAAa/hL,EAAQ,sBAGrBgiL,GAAeH,GAAU9/K,SAGzB3V,GAAiB01L,GAAY11L,eAG7B61L,GAAY,EAGZC,IACEtyJ,EAAM,SAAS13B,KAAK6pL,IAAcA,GAAWz8K,MAAQy8K,GAAWz8K,KAAKyqG,UAAY,KACvE,iBAAmBngF,EAAO,GAQtCuyJ,GAAuBL,GAAY//K,SAGnCqgL,GAAmBJ,GAAa31L,KAAKH,IAGrCm2L,GAAUl+I,GAAKtkC,EAGfyiL,GAAazqL,GAAO,IACtBmqL,GAAa31L,KAAKD,IAAgB4M,QAAQkhL,GAAc,QACvDlhL,QAAQ,yDAA0D,SAAW,KAI5E4rI,GAASg5C,GAAgB59K,EAAQ4kI,OAAS31I,EAC1Cc,GAASiQ,EAAQjQ,OACjB6gI,GAAa5wH,EAAQ4wH,WACrBoU,GAAcJ,GAASA,GAAOI,YAAc/1I,EAC5CszL,GAAetB,GAAQ/0L,GAAOyoB,eAAgBzoB,IAC9Cs2L,GAAet2L,GAAOoE,OACtBkvC,GAAuBsiJ,GAAYtiJ,qBACnC5mC,GAASgpL,GAAWhpL,OACpB6pL,GAAmB1yL,GAASA,GAAO2yL,mBAAqBzzL,EACxD0zL,GAAc5yL,GAASA,GAAOk6B,SAAWh7B,EACzCk1J,GAAiBp0J,GAASA,GAAOC,YAAcf,EAE/CU,GAAkB,WACpB,IACE,IAAI45D,EAAOq5H,GAAU12L,GAAQ,kBAE7B,OADAq9D,EAAK,GAAI,GAAI,IACNA,EACP,MAAOt8D,KALU,GASjB41L,GAAkB7iL,EAAQxR,eAAiB21C,GAAK31C,cAAgBwR,EAAQxR,aACxEs0L,GAAS3/H,GAAQA,EAAK8+D,MAAQ99E,GAAKgf,KAAK8+D,KAAO9+D,EAAK8+D,IACpD8gE,GAAgB/iL,EAAQ9Q,aAAei1C,GAAKj1C,YAAc8Q,EAAQ9Q,WAGlE8zL,GAAa5gL,GAAKo7B,KAClBylJ,GAAc7gL,GAAKi8B,MACnB6kJ,GAAmBh3L,GAAOumD,sBAC1B0wI,GAAiBv+C,GAASA,GAAOU,SAAWr2I,EAC5Cm0L,GAAiBpjL,EAAQ6Z,SACzBwpK,GAAazB,GAAW9oL,KACxBwqL,GAAarC,GAAQ/0L,GAAOoZ,KAAMpZ,IAClCq3L,GAAYnhL,GAAKC,IACjBmhL,GAAYphL,GAAKo1B,IACjBisJ,GAAYtgI,EAAK8+D,IACjByhE,GAAiB1jL,EAAQqP,SACzBs0K,GAAevhL,GAAK8tG,OACpB0zE,GAAgBhC,GAAWznJ,QAG3B82F,GAAW2xD,GAAU5iL,EAAS,YAC9B+gB,GAAM6hK,GAAU5iL,EAAS,OACzB3S,GAAUu1L,GAAU5iL,EAAS,WAC7B01B,GAAMktJ,GAAU5iL,EAAS,OACzBggC,GAAU4iJ,GAAU5iL,EAAS,WAC7B6jL,GAAejB,GAAU12L,GAAQ,UAGjC43L,GAAU9jJ,IAAW,IAAIA,GAGzB+jJ,GAAY,GAGZC,GAAqBpqJ,GAASq3F,IAC9BgzD,GAAgBrqJ,GAAS7Y,IACzBmjK,GAAoBtqJ,GAASvsC,IAC7B82L,GAAgBvqJ,GAASlE,IACzB0uJ,GAAoBxqJ,GAASoG,IAG7BqkJ,GAAct0L,GAASA,GAAO5D,UAAY8C,EAC1Cq1L,GAAgBD,GAAcA,GAAYhoJ,QAAUptC,EACpDs1L,GAAiBF,GAAcA,GAAYtiL,SAAW9S,EAyH1D,SAASu1L,GAAOv0L,GACd,GAAIw0L,GAAax0L,KAAWkD,GAAQlD,MAAYA,aAAiBy0L,IAAc,CAC7E,GAAIz0L,aAAiB00L,GACnB,OAAO10L,EAET,GAAI7D,GAAeC,KAAK4D,EAAO,eAC7B,OAAO20L,GAAa30L,GAGxB,OAAO,IAAI00L,GAAc10L,GAW3B,IAAI40L,GAAc,WAChB,SAASn0L,KACT,OAAO,SAASskB,GACd,IAAKnP,GAASmP,GACZ,MAAO,GAET,GAAIwtK,GACF,OAAOA,GAAaxtK,GAEtBtkB,EAAOvE,UAAY6oB,EACnB,IAAIxhB,EAAS,IAAI9C,EAEjB,OADAA,EAAOvE,UAAY8C,EACZuE,GAZM,GAqBjB,SAASsxL,MAWT,SAASH,GAAc10L,EAAO80L,GAC5BxoL,KAAKyoL,YAAc/0L,EACnBsM,KAAK0oL,YAAc,GACnB1oL,KAAK2oL,YAAcH,EACnBxoL,KAAK4oL,UAAY,EACjB5oL,KAAK6oL,WAAan2L,EAgFpB,SAASy1L,GAAYz0L,GACnBsM,KAAKyoL,YAAc/0L,EACnBsM,KAAK0oL,YAAc,GACnB1oL,KAAK8oL,QAAU,EACf9oL,KAAK+oL,cAAe,EACpB/oL,KAAKgpL,cAAgB,GACrBhpL,KAAKipL,cAAgBrO,EACrB56K,KAAKkpL,UAAY,GAgHnB,SAASC,GAAKliK,GACZ,IAAIrrB,GAAS,EACTlM,EAAoB,MAAXu3B,EAAkB,EAAIA,EAAQv3B,OAG3C,IADAsQ,KAAKilC,UACIrpC,EAAQlM,GAAQ,CACvB,IAAIuvC,EAAQhY,EAAQrrB,GACpBoE,KAAKuY,IAAI0mB,EAAM,GAAIA,EAAM,KAiG7B,SAASmqJ,GAAUniK,GACjB,IAAIrrB,GAAS,EACTlM,EAAoB,MAAXu3B,EAAkB,EAAIA,EAAQv3B,OAG3C,IADAsQ,KAAKilC,UACIrpC,EAAQlM,GAAQ,CACvB,IAAIuvC,EAAQhY,EAAQrrB,GACpBoE,KAAKuY,IAAI0mB,EAAM,GAAIA,EAAM,KA8G7B,SAASoqJ,GAASpiK,GAChB,IAAIrrB,GAAS,EACTlM,EAAoB,MAAXu3B,EAAkB,EAAIA,EAAQv3B,OAG3C,IADAsQ,KAAKilC,UACIrpC,EAAQlM,GAAQ,CACvB,IAAIuvC,EAAQhY,EAAQrrB,GACpBoE,KAAKuY,IAAI0mB,EAAM,GAAIA,EAAM,KAiG7B,SAASqqJ,GAAS7rK,GAChB,IAAI7hB,GAAS,EACTlM,EAAmB,MAAV+tB,EAAiB,EAAIA,EAAO/tB,OAGzC,IADAsQ,KAAKupL,SAAW,IAAIF,KACXztL,EAAQlM,GACfsQ,KAAK8zC,IAAIr2B,EAAO7hB,IA6CpB,SAASw5C,GAAMnuB,GACb,IAAI93B,EAAO6Q,KAAKupL,SAAW,IAAIH,GAAUniK,GACzCjnB,KAAK8mB,KAAO33B,EAAK23B,KAqGnB,SAAS0iK,GAAc91L,EAAO+1L,GAC5B,IAAIC,EAAQ9yL,GAAQlD,GAChBi2L,GAASD,GAASE,GAAYl2L,GAC9Bm2L,GAAUH,IAAUC,GAAS5gD,GAASr1I,GACtCo2L,GAAUJ,IAAUC,IAAUE,GAAU1H,GAAazuL,GACrDq2L,EAAcL,GAASC,GAASE,GAAUC,EAC1C7yL,EAAS8yL,EAAcnG,GAAUlwL,EAAMhE,OAAQwiB,IAAU,GACzDxiB,EAASuH,EAAOvH,OAEpB,IAAK,IAAIsE,KAAON,GACT+1L,IAAa55L,GAAeC,KAAK4D,EAAOM,IACvC+1L,IAEQ,UAAP/1L,GAEC61L,IAAkB,UAAP71L,GAA0B,UAAPA,IAE9B81L,IAAkB,UAAP91L,GAA0B,cAAPA,GAA8B,cAAPA,IAEtDg2L,GAAQh2L,EAAKtE,KAElBuH,EAAOjH,KAAKgE,GAGhB,OAAOiD,EAUT,SAASgzL,GAAY1hK,GACnB,IAAI74B,EAAS64B,EAAM74B,OACnB,OAAOA,EAAS64B,EAAM2hK,GAAW,EAAGx6L,EAAS,IAAMgD,EAWrD,SAASy3L,GAAgB5hK,EAAOr0B,GAC9B,OAAOk2L,GAAYC,GAAU9hK,GAAQ+hK,GAAUp2L,EAAG,EAAGq0B,EAAM74B,SAU7D,SAAS66L,GAAahiK,GACpB,OAAO6hK,GAAYC,GAAU9hK,IAY/B,SAASiiK,GAAiBr2L,EAAQH,EAAKN,IAChCA,IAAUhB,GAAc+3L,GAAGt2L,EAAOH,GAAMN,MACxCA,IAAUhB,GAAesB,KAAOG,IACnCu2L,GAAgBv2L,EAAQH,EAAKN,GAcjC,SAASi3L,GAAYx2L,EAAQH,EAAKN,GAChC,IAAIk3L,EAAWz2L,EAAOH,GAChBnE,GAAeC,KAAKqE,EAAQH,IAAQy2L,GAAGG,EAAUl3L,KAClDA,IAAUhB,GAAesB,KAAOG,IACnCu2L,GAAgBv2L,EAAQH,EAAKN,GAYjC,SAASm3L,GAAatiK,EAAOv0B,GAE3B,IADA,IAAItE,EAAS64B,EAAM74B,OACZA,KACL,GAAI+6L,GAAGliK,EAAM74B,GAAQ,GAAIsE,GACvB,OAAOtE,EAGX,OAAQ,EAcV,SAASo7L,GAAepiJ,EAAY2wF,EAAQgpD,EAAUC,GAIpD,OAHAyI,GAASriJ,GAAY,SAASh1C,EAAOM,EAAK00C,GACxC2wF,EAAOipD,EAAa5uL,EAAO2uL,EAAS3uL,GAAQg1C,MAEvC45I,EAYT,SAAS0I,GAAW72L,EAAQmoD,GAC1B,OAAOnoD,GAAU82L,GAAW3uI,EAAQvzC,GAAKuzC,GAASnoD,GAyBpD,SAASu2L,GAAgBv2L,EAAQH,EAAKN,GACzB,aAAPM,GAAsBZ,GACxBA,GAAee,EAAQH,EAAK,CAC1B,cAAgB,EAChB,YAAc,EACd,MAASN,EACT,UAAY,IAGdS,EAAOH,GAAON,EAYlB,SAASw3L,GAAO/2L,EAAQuyE,GAMtB,IALA,IAAI9qE,GAAS,EACTlM,EAASg3E,EAAMh3E,OACfuH,EAASN,EAAMjH,GACf6pD,EAAiB,MAAVplD,IAEFyH,EAAQlM,GACfuH,EAAO2E,GAAS29C,EAAO7mD,EAAYY,GAAIa,EAAQuyE,EAAM9qE,IAEvD,OAAO3E,EAYT,SAASqzL,GAAUa,EAAQC,EAAOC,GAShC,OARIF,GAAWA,IACTE,IAAU34L,IACZy4L,EAASA,GAAUE,EAAQF,EAASE,GAElCD,IAAU14L,IACZy4L,EAASA,GAAUC,EAAQD,EAASC,IAGjCD,EAmBT,SAASG,GAAU53L,EAAO63L,EAASC,EAAYx3L,EAAKG,EAAQqO,GAC1D,IAAIvL,EACAw0L,EAASF,EAAUlS,EACnBqS,EAASH,EAAUjS,EACnBqS,EAASJ,EAAUhS,EAKvB,GAHIiS,IACFv0L,EAAS9C,EAASq3L,EAAW93L,EAAOM,EAAKG,EAAQqO,GAASgpL,EAAW93L,IAEnEuD,IAAWvE,EACb,OAAOuE,EAET,IAAKqS,GAAS5V,GACZ,OAAOA,EAET,IAAIg2L,EAAQ9yL,GAAQlD,GACpB,GAAIg2L,GAEF,GADAzyL,EAu7GJ,SAAwBsxB,GACtB,IAAI74B,EAAS64B,EAAM74B,OACfuH,EAAS,IAAIsxB,EAAMtpB,YAAYvP,GAG/BA,GAA6B,iBAAZ64B,EAAM,IAAkB14B,GAAeC,KAAKy4B,EAAO,WACtEtxB,EAAO2E,MAAQ2sB,EAAM3sB,MACrB3E,EAAO23B,MAAQrG,EAAMqG,OAEvB,OAAO33B,EAh8GI20L,CAAel4L,IACnB+3L,EACH,OAAOpB,GAAU32L,EAAOuD,OAErB,CACL,IAAI+D,EAAM6wL,GAAOn4L,GACbo4L,EAAS9wL,GAAOugL,GAAWvgL,GAAOwgL,EAEtC,GAAIzyC,GAASr1I,GACX,OAAOq4L,GAAYr4L,EAAO+3L,GAE5B,GAAIzwL,GAAO2gL,GAAa3gL,GAAOggL,GAAY8Q,IAAW33L,GAEpD,GADA8C,EAAUy0L,GAAUI,EAAU,GAAKE,GAAgBt4L,IAC9C+3L,EACH,OAAOC,EA2mEf,SAAuBpvI,EAAQnoD,GAC7B,OAAO82L,GAAW3uI,EAAQ2vI,GAAa3vI,GAASnoD,GA3mEtC+3L,CAAcx4L,EAnH1B,SAAsBS,EAAQmoD,GAC5B,OAAOnoD,GAAU82L,GAAW3uI,EAAQ6vI,GAAO7vI,GAASnoD,GAkHrBi4L,CAAan1L,EAAQvD,IA8lEtD,SAAqB4oD,EAAQnoD,GAC3B,OAAO82L,GAAW3uI,EAAQ+vI,GAAW/vI,GAASnoD,GA9lEpCm4L,CAAY54L,EAAOs3L,GAAW/zL,EAAQvD,QAEvC,CACL,IAAKotL,GAAc9lL,GACjB,OAAO7G,EAAST,EAAQ,GAE1BuD,EAs8GN,SAAwB9C,EAAQ6G,EAAKywL,GACnC,IAAIc,EAAOp4L,EAAO8K,YAClB,OAAQjE,GACN,KAAKmhL,GACH,OAAOqQ,GAAiBr4L,GAE1B,KAAKgnL,EACL,KAAKC,EACH,OAAO,IAAImR,GAAMp4L,GAEnB,KAAKioL,GACH,OA1nDN,SAAuBqQ,EAAUhB,GAC/B,IAAI90D,EAAS80D,EAASe,GAAiBC,EAAS91D,QAAU81D,EAAS91D,OACnE,OAAO,IAAI81D,EAASxtL,YAAY03H,EAAQ81D,EAAS10D,WAAY00D,EAASjzD,YAwnD3DkzD,CAAcv4L,EAAQs3L,GAE/B,KAAKpP,GAAY,KAAKC,GACtB,KAAKC,GAAS,KAAKC,GAAU,KAAKC,GAClC,KAAKC,GAAU,KAAKC,GAAiB,KAAKC,GAAW,KAAKC,GACxD,OAAO8P,GAAgBx4L,EAAQs3L,GAEjC,KAAKhQ,EACH,OAAO,IAAI8Q,EAEb,KAAK7Q,EACL,KAAKK,GACH,OAAO,IAAIwQ,EAAKp4L,GAElB,KAAK0nL,GACH,OA7nDN,SAAqBxgL,GACnB,IAAIpE,EAAS,IAAIoE,EAAO4D,YAAY5D,EAAOihD,OAAQgiI,GAAQ3iL,KAAKN,IAEhE,OADApE,EAAO8S,UAAY1O,EAAO0O,UACnB9S,EA0nDI21L,CAAYz4L,GAErB,KAAK2nL,GACH,OAAO,IAAIyQ,EAEb,KAAKvQ,GACH,OAtnDe6Q,EAsnDI14L,EArnDhB4zL,GAAgBp4L,GAAOo4L,GAAcj4L,KAAK+8L,IAAW,GAD9D,IAAqBA,EAh3DNC,CAAep5L,EAAOsH,EAAKywL,IAIxCjpL,IAAUA,EAAQ,IAAI4yC,IACtB,IAAI23I,EAAUvqL,EAAMlP,IAAII,GACxB,GAAIq5L,EACF,OAAOA,EAETvqL,EAAM+V,IAAI7kB,EAAOuD,GAEb48C,GAAMngD,GACRA,EAAM0G,SAAQ,SAAS4yL,GACrB/1L,EAAO68C,IAAIw3I,GAAU0B,EAAUzB,EAASC,EAAYwB,EAAUt5L,EAAO8O,OAE9D0kB,GAAMxzB,IACfA,EAAM0G,SAAQ,SAAS4yL,EAAUh5L,GAC/BiD,EAAOshB,IAAIvkB,EAAKs3L,GAAU0B,EAAUzB,EAASC,EAAYx3L,EAAKN,EAAO8O,OAIzE,IAIInN,EAAQq0L,EAAQh3L,GAJLi5L,EACVD,EAASuB,GAAeC,GACxBxB,EAASS,GAASpjL,IAEkBrV,GASzC,OARA6uL,GAAUltL,GAAS3B,GAAO,SAASs5L,EAAUh5L,GACvCqB,IAEF23L,EAAWt5L,EADXM,EAAMg5L,IAIRrC,GAAY1zL,EAAQjD,EAAKs3L,GAAU0B,EAAUzB,EAASC,EAAYx3L,EAAKN,EAAO8O,OAEzEvL,EAyBT,SAASk2L,GAAeh5L,EAAQmoD,EAAQjnD,GACtC,IAAI3F,EAAS2F,EAAM3F,OACnB,GAAc,MAAVyE,EACF,OAAQzE,EAGV,IADAyE,EAASxE,GAAOwE,GACTzE,KAAU,CACf,IAAIsE,EAAMqB,EAAM3F,GACZugD,EAAYqM,EAAOtoD,GACnBN,EAAQS,EAAOH,GAEnB,GAAKN,IAAUhB,KAAesB,KAAOG,KAAa87C,EAAUv8C,GAC1D,OAAO,EAGX,OAAO,EAaT,SAAS05L,GAAUpgI,EAAMqgI,EAAMrnL,GAC7B,GAAmB,mBAARgnD,EACT,MAAM,IAAIh4D,GAAUikL,GAEtB,OAAOtmL,IAAW,WAAaq6D,EAAK9wD,MAAMxJ,EAAWsT,KAAUqnL,GAcjE,SAASC,GAAe/kK,EAAO9K,EAAQ4kK,EAAUr8I,GAC/C,IAAIpqC,GAAS,EACT4lC,EAAWyzF,GACXs4D,GAAW,EACX79L,EAAS64B,EAAM74B,OACfuH,EAAS,GACTu2L,EAAe/vK,EAAO/tB,OAE1B,IAAKA,EACH,OAAOuH,EAELorL,IACF5kK,EAASmlK,GAASnlK,EAAQomK,GAAUxB,KAElCr8I,GACFxE,EAAWmhJ,GACX4K,GAAW,GAEJ9vK,EAAO/tB,QAAUqpL,IACxBv3I,EAAWuiJ,GACXwJ,GAAW,EACX9vK,EAAS,IAAI6rK,GAAS7rK,IAExBgwK,EACA,OAAS7xL,EAAQlM,GAAQ,CACvB,IAAIgE,EAAQ60B,EAAM3sB,GACd8xL,EAAuB,MAAZrL,EAAmB3uL,EAAQ2uL,EAAS3uL,GAGnD,GADAA,EAASsyC,GAAwB,IAAVtyC,EAAeA,EAAQ,EAC1C65L,GAAYG,GAAaA,EAAU,CAErC,IADA,IAAIC,EAAcH,EACXG,KACL,GAAIlwK,EAAOkwK,KAAiBD,EAC1B,SAASD,EAGbx2L,EAAOjH,KAAK0D,QAEJ8tC,EAAS/jB,EAAQiwK,EAAU1nJ,IACnC/uC,EAAOjH,KAAK0D,GAGhB,OAAOuD,EAjkCTgxL,GAAO2F,iBAAmB,CAQxB,OAAUvQ,GAQV,SAAYC,GAQZ,YAAeC,GAQf,SAAY,GAQZ,QAAW,CAQT,EAAK0K,KAKTA,GAAOr4L,UAAY24L,GAAW34L,UAC9Bq4L,GAAOr4L,UAAUqP,YAAcgpL,GAE/BG,GAAcx4L,UAAY04L,GAAWC,GAAW34L,WAChDw4L,GAAcx4L,UAAUqP,YAAcmpL,GAsHtCD,GAAYv4L,UAAY04L,GAAWC,GAAW34L,WAC9Cu4L,GAAYv4L,UAAUqP,YAAckpL,GAoGpCgB,GAAKv5L,UAAUq1C,MAvEf,WACEjlC,KAAKupL,SAAWjC,GAAeA,GAAa,MAAQ,GACpDtnL,KAAK8mB,KAAO,GAsEdqiK,GAAKv5L,UAAkB,OAzDvB,SAAoBoE,GAClB,IAAIiD,EAAS+I,KAAKwY,IAAIxkB,WAAegM,KAAKupL,SAASv1L,GAEnD,OADAgM,KAAK8mB,MAAQ7vB,EAAS,EAAI,EACnBA,GAuDTkyL,GAAKv5L,UAAU0D,IA3Cf,SAAiBU,GACf,IAAI7E,EAAO6Q,KAAKupL,SAChB,GAAIjC,GAAc,CAChB,IAAIrwL,EAAS9H,EAAK6E,GAClB,OAAOiD,IAAWiiL,EAAiBxmL,EAAYuE,EAEjD,OAAOpH,GAAeC,KAAKX,EAAM6E,GAAO7E,EAAK6E,GAAOtB,GAsCtDy2L,GAAKv5L,UAAU4oB,IA1Bf,SAAiBxkB,GACf,IAAI7E,EAAO6Q,KAAKupL,SAChB,OAAOjC,GAAgBn4L,EAAK6E,KAAStB,EAAa7C,GAAeC,KAAKX,EAAM6E,IAyB9Em1L,GAAKv5L,UAAU2oB,IAZf,SAAiBvkB,EAAKN,GACpB,IAAIvE,EAAO6Q,KAAKupL,SAGhB,OAFAvpL,KAAK8mB,MAAQ9mB,KAAKwY,IAAIxkB,GAAO,EAAI,EACjC7E,EAAK6E,GAAQszL,IAAgB5zL,IAAUhB,EAAawmL,EAAiBxlL,EAC9DsM,MAyHTopL,GAAUx5L,UAAUq1C,MApFpB,WACEjlC,KAAKupL,SAAW,GAChBvpL,KAAK8mB,KAAO,GAmFdsiK,GAAUx5L,UAAkB,OAvE5B,SAAyBoE,GACvB,IAAI7E,EAAO6Q,KAAKupL,SACZ3tL,EAAQivL,GAAa17L,EAAM6E,GAE/B,QAAI4H,EAAQ,KAIRA,GADYzM,EAAKO,OAAS,EAE5BP,EAAKuW,MAELrJ,GAAOvM,KAAKX,EAAMyM,EAAO,KAEzBoE,KAAK8mB,MACA,IA0DTsiK,GAAUx5L,UAAU0D,IA9CpB,SAAsBU,GACpB,IAAI7E,EAAO6Q,KAAKupL,SACZ3tL,EAAQivL,GAAa17L,EAAM6E,GAE/B,OAAO4H,EAAQ,EAAIlJ,EAAYvD,EAAKyM,GAAO,IA2C7CwtL,GAAUx5L,UAAU4oB,IA/BpB,SAAsBxkB,GACpB,OAAO62L,GAAa7qL,KAAKupL,SAAUv1L,IAAQ,GA+B7Co1L,GAAUx5L,UAAU2oB,IAlBpB,SAAsBvkB,EAAKN,GACzB,IAAIvE,EAAO6Q,KAAKupL,SACZ3tL,EAAQivL,GAAa17L,EAAM6E,GAQ/B,OANI4H,EAAQ,KACRoE,KAAK8mB,KACP33B,EAAKa,KAAK,CAACgE,EAAKN,KAEhBvE,EAAKyM,GAAO,GAAKlI,EAEZsM,MA2GTqpL,GAASz5L,UAAUq1C,MAtEnB,WACEjlC,KAAK8mB,KAAO,EACZ9mB,KAAKupL,SAAW,CACd,KAAQ,IAAIJ,GACZ,IAAO,IAAK3kK,IAAO4kK,IACnB,OAAU,IAAID,KAkElBE,GAASz5L,UAAkB,OArD3B,SAAwBoE,GACtB,IAAIiD,EAAS42L,GAAW7tL,KAAMhM,GAAa,OAAEA,GAE7C,OADAgM,KAAK8mB,MAAQ7vB,EAAS,EAAI,EACnBA,GAmDToyL,GAASz5L,UAAU0D,IAvCnB,SAAqBU,GACnB,OAAO65L,GAAW7tL,KAAMhM,GAAKV,IAAIU,IAuCnCq1L,GAASz5L,UAAU4oB,IA3BnB,SAAqBxkB,GACnB,OAAO65L,GAAW7tL,KAAMhM,GAAKwkB,IAAIxkB,IA2BnCq1L,GAASz5L,UAAU2oB,IAdnB,SAAqBvkB,EAAKN,GACxB,IAAIvE,EAAO0+L,GAAW7tL,KAAMhM,GACxB8yB,EAAO33B,EAAK23B,KAIhB,OAFA33B,EAAKopB,IAAIvkB,EAAKN,GACdsM,KAAK8mB,MAAQ33B,EAAK23B,MAAQA,EAAO,EAAI,EAC9B9mB,MA2DTspL,GAAS15L,UAAUkkD,IAAMw1I,GAAS15L,UAAUI,KAnB5C,SAAqB0D,GAEnB,OADAsM,KAAKupL,SAAShxK,IAAI7kB,EAAOwlL,GAClBl5K,MAkBTspL,GAAS15L,UAAU4oB,IANnB,SAAqB9kB,GACnB,OAAOsM,KAAKupL,SAAS/wK,IAAI9kB,IAuG3B0hD,GAAMxlD,UAAUq1C,MA3EhB,WACEjlC,KAAKupL,SAAW,IAAIH,GACpBppL,KAAK8mB,KAAO,GA0EdsuB,GAAMxlD,UAAkB,OA9DxB,SAAqBoE,GACnB,IAAI7E,EAAO6Q,KAAKupL,SACZtyL,EAAS9H,EAAa,OAAE6E,GAG5B,OADAgM,KAAK8mB,KAAO33B,EAAK23B,KACV7vB,GA0DTm+C,GAAMxlD,UAAU0D,IA9ChB,SAAkBU,GAChB,OAAOgM,KAAKupL,SAASj2L,IAAIU,IA8C3BohD,GAAMxlD,UAAU4oB,IAlChB,SAAkBxkB,GAChB,OAAOgM,KAAKupL,SAAS/wK,IAAIxkB,IAkC3BohD,GAAMxlD,UAAU2oB,IArBhB,SAAkBvkB,EAAKN,GACrB,IAAIvE,EAAO6Q,KAAKupL,SAChB,GAAIp6L,aAAgBi6L,GAAW,CAC7B,IAAI0E,EAAQ3+L,EAAKo6L,SACjB,IAAK/kK,IAAQspK,EAAMp+L,OAASqpL,EAAmB,EAG7C,OAFA+U,EAAM99L,KAAK,CAACgE,EAAKN,IACjBsM,KAAK8mB,OAAS33B,EAAK23B,KACZ9mB,KAET7Q,EAAO6Q,KAAKupL,SAAW,IAAIF,GAASyE,GAItC,OAFA3+L,EAAKopB,IAAIvkB,EAAKN,GACdsM,KAAK8mB,KAAO33B,EAAK23B,KACV9mB,MAscT,IAAI+qL,GAAWgD,GAAeC,IAU1BC,GAAgBF,GAAeG,IAAiB,GAWpD,SAASC,GAAUzlJ,EAAYuH,GAC7B,IAAIh5C,GAAS,EAKb,OAJA8zL,GAASriJ,GAAY,SAASh1C,EAAOkI,EAAO8sC,GAE1C,OADAzxC,IAAWg5C,EAAUv8C,EAAOkI,EAAO8sC,MAG9BzxC,EAaT,SAASm3L,GAAa7lK,EAAO85J,EAAUr8I,GAIrC,IAHA,IAAIpqC,GAAS,EACTlM,EAAS64B,EAAM74B,SAEVkM,EAAQlM,GAAQ,CACvB,IAAIgE,EAAQ60B,EAAM3sB,GACd4X,EAAU6uK,EAAS3uL,GAEvB,GAAe,MAAX8f,IAAoBk6K,IAAah7L,EAC5B8gB,GAAYA,IAAYy+I,GAASz+I,GAClCwyB,EAAWxyB,EAASk6K,IAE1B,IAAIA,EAAWl6K,EACXvc,EAASvD,EAGjB,OAAOuD,EAuCT,SAASo3L,GAAW3lJ,EAAYuH,GAC9B,IAAIh5C,EAAS,GAMb,OALA8zL,GAASriJ,GAAY,SAASh1C,EAAOkI,EAAO8sC,GACtCuH,EAAUv8C,EAAOkI,EAAO8sC,IAC1BzxC,EAAOjH,KAAK0D,MAGTuD,EAcT,SAASq3L,GAAY/lK,EAAO+oB,EAAOrB,EAAWs+I,EAAUt3L,GACtD,IAAI2E,GAAS,EACTlM,EAAS64B,EAAM74B,OAKnB,IAHAugD,IAAcA,EAAYu+I,IAC1Bv3L,IAAWA,EAAS,MAEX2E,EAAQlM,GAAQ,CACvB,IAAIgE,EAAQ60B,EAAM3sB,GACd01C,EAAQ,GAAKrB,EAAUv8C,GACrB49C,EAAQ,EAEVg9I,GAAY56L,EAAO49C,EAAQ,EAAGrB,EAAWs+I,EAAUt3L,GAEnD4rL,GAAU5rL,EAAQvD,GAEV66L,IACVt3L,EAAOA,EAAOvH,QAAUgE,GAG5B,OAAOuD,EAcT,IAAIw3L,GAAUC,KAYVC,GAAeD,IAAc,GAUjC,SAASV,GAAW75L,EAAQkuL,GAC1B,OAAOluL,GAAUs6L,GAAQt6L,EAAQkuL,EAAUt5K,IAW7C,SAASmlL,GAAgB/5L,EAAQkuL,GAC/B,OAAOluL,GAAUw6L,GAAax6L,EAAQkuL,EAAUt5K,IAYlD,SAAS6lL,GAAcz6L,EAAQkB,GAC7B,OAAOu/H,GAAYv/H,GAAO,SAASrB,GACjC,OAAO61F,GAAW11F,EAAOH,OAY7B,SAAS66L,GAAQ16L,EAAQmmE,GAMvB,IAHA,IAAI1+D,EAAQ,EACRlM,GAHJ4qE,EAAOw0H,GAASx0H,EAAMnmE,IAGJzE,OAED,MAAVyE,GAAkByH,EAAQlM,GAC/ByE,EAASA,EAAO46L,GAAMz0H,EAAK1+D,OAE7B,OAAQA,GAASA,GAASlM,EAAUyE,EAASzB,EAc/C,SAASs8L,GAAe76L,EAAQ86L,EAAUC,GACxC,IAAIj4L,EAASg4L,EAAS96L,GACtB,OAAOyC,GAAQzC,GAAU8C,EAAS4rL,GAAU5rL,EAAQi4L,EAAY/6L,IAUlE,SAASg7L,GAAWz7L,GAClB,OAAa,MAATA,EACKA,IAAUhB,EAAYi1J,GAAeD,EAEtCE,IAAkBA,MAAkBj4J,GAAO+D,GAq2FrD,SAAmBA,GACjB,IAAI07L,EAAQv/L,GAAeC,KAAK4D,EAAOk0J,IACnC5sJ,EAAMtH,EAAMk0J,IAEhB,IACEl0J,EAAMk0J,IAAkBl1J,EACxB,IAAI28L,GAAW,EACf,MAAO3+L,IAET,IAAIuG,EAAS2uL,GAAqB91L,KAAK4D,GACnC27L,IACED,EACF17L,EAAMk0J,IAAkB5sJ,SAEjBtH,EAAMk0J,KAGjB,OAAO3wJ,EAr3FHuwJ,CAAU9zJ,GAy4GhB,SAAwBA,GACtB,OAAOkyL,GAAqB91L,KAAK4D,GAz4G7B+zJ,CAAe/zJ,GAYrB,SAAS47L,GAAO57L,EAAOkuC,GACrB,OAAOluC,EAAQkuC,EAWjB,SAAS2tJ,GAAQp7L,EAAQH,GACvB,OAAiB,MAAVG,GAAkBtE,GAAeC,KAAKqE,EAAQH,GAWvD,SAASw7L,GAAUr7L,EAAQH,GACzB,OAAiB,MAAVG,GAAkBH,KAAOrE,GAAOwE,GA0BzC,SAASs7L,GAAiBC,EAAQrN,EAAUr8I,GAS1C,IARA,IAAIxE,EAAWwE,EAAa28I,GAAoB1tD,GAC5CvlI,EAASggM,EAAO,GAAGhgM,OACnBigM,EAAYD,EAAOhgM,OACnBkgM,EAAWD,EACXE,EAASl5L,EAAMg5L,GACfG,EAAYrvJ,IACZxpC,EAAS,GAEN24L,KAAY,CACjB,IAAIrnK,EAAQmnK,EAAOE,GACfA,GAAYvN,IACd95J,EAAQq6J,GAASr6J,EAAOs7J,GAAUxB,KAEpCyN,EAAY7I,GAAU1+J,EAAM74B,OAAQogM,GACpCD,EAAOD,IAAa5pJ,IAAeq8I,GAAa3yL,GAAU,KAAO64B,EAAM74B,QAAU,KAC7E,IAAI45L,GAASsG,GAAYrnK,GACzB71B,EAEN61B,EAAQmnK,EAAO,GAEf,IAAI9zL,GAAS,EACTm0L,EAAOF,EAAO,GAElBpC,EACA,OAAS7xL,EAAQlM,GAAUuH,EAAOvH,OAASogM,GAAW,CACpD,IAAIp8L,EAAQ60B,EAAM3sB,GACd8xL,EAAWrL,EAAWA,EAAS3uL,GAASA,EAG5C,GADAA,EAASsyC,GAAwB,IAAVtyC,EAAeA,EAAQ,IACxCq8L,EACEhM,GAASgM,EAAMrC,GACflsJ,EAASvqC,EAAQy2L,EAAU1nJ,IAC5B,CAEL,IADA4pJ,EAAWD,IACFC,GAAU,CACjB,IAAI7wJ,EAAQ8wJ,EAAOD,GACnB,KAAM7wJ,EACEglJ,GAAShlJ,EAAO2uJ,GAChBlsJ,EAASkuJ,EAAOE,GAAWlC,EAAU1nJ,IAE3C,SAASynJ,EAGTsC,GACFA,EAAK//L,KAAK09L,GAEZz2L,EAAOjH,KAAK0D,IAGhB,OAAOuD,EA+BT,SAAS+4L,GAAW77L,EAAQmmE,EAAMt0D,GAGhC,IAAIgnD,EAAiB,OADrB74D,EAASgT,GAAOhT,EADhBmmE,EAAOw0H,GAASx0H,EAAMnmE,KAEMA,EAASA,EAAO46L,GAAMvyK,GAAK89C,KACvD,OAAe,MAARtN,EAAet6D,EAAYwJ,GAAM8wD,EAAM74D,EAAQ6R,GAUxD,SAASiqL,GAAgBv8L,GACvB,OAAOw0L,GAAax0L,IAAUy7L,GAAWz7L,IAAUsnL,EAuCrD,SAASkV,GAAYx8L,EAAOkuC,EAAO2pJ,EAASC,EAAYhpL,GACtD,OAAI9O,IAAUkuC,IAGD,MAATluC,GAA0B,MAATkuC,IAAmBsmJ,GAAax0L,KAAWw0L,GAAatmJ,GACpEluC,GAAUA,GAASkuC,GAAUA,EAmBxC,SAAyBztC,EAAQytC,EAAO2pJ,EAASC,EAAY2E,EAAW3tL,GACtE,IAAI4tL,EAAWx5L,GAAQzC,GACnBk8L,EAAWz5L,GAAQgrC,GACnB0uJ,EAASF,EAAWnV,EAAW4Q,GAAO13L,GACtCo8L,EAASF,EAAWpV,EAAW4Q,GAAOjqJ,GAKtC4uJ,GAHJF,EAASA,GAAUtV,EAAUW,EAAY2U,IAGhB3U,EACrB8U,GAHJF,EAASA,GAAUvV,EAAUW,EAAY4U,IAGhB5U,EACrB+U,EAAYJ,GAAUC,EAE1B,GAAIG,GAAa3nD,GAAS50I,GAAS,CACjC,IAAK40I,GAASnnG,GACZ,OAAO,EAETwuJ,GAAW,EACXI,GAAW,EAEb,GAAIE,IAAcF,EAEhB,OADAhuL,IAAUA,EAAQ,IAAI4yC,IACdg7I,GAAYjO,GAAahuL,GAC7Bw8L,GAAYx8L,EAAQytC,EAAO2pJ,EAASC,EAAY2E,EAAW3tL,GAy0EnE,SAAoBrO,EAAQytC,EAAO5mC,EAAKuwL,EAASC,EAAY2E,EAAW3tL,GACtE,OAAQxH,GACN,KAAKohL,GACH,GAAKjoL,EAAOqlI,YAAc53F,EAAM43F,YAC3BrlI,EAAO4jI,YAAcn2F,EAAMm2F,WAC9B,OAAO,EAET5jI,EAASA,EAAOwiI,OAChB/0F,EAAQA,EAAM+0F,OAEhB,KAAKwlD,GACH,QAAKhoL,EAAOqlI,YAAc53F,EAAM43F,aAC3B22D,EAAU,IAAI97D,GAAWlgI,GAAS,IAAIkgI,GAAWzyF,KAKxD,KAAKu5I,EACL,KAAKC,EACL,KAAKM,EAGH,OAAO+O,IAAIt2L,GAASytC,GAEtB,KAAK05I,EACH,OAAOnnL,EAAO3B,MAAQovC,EAAMpvC,MAAQ2B,EAAO5B,SAAWqvC,EAAMrvC,QAE9D,KAAKspL,GACL,KAAKE,GAIH,OAAO5nL,GAAWytC,EAAQ,GAE5B,KAAK65I,EACH,IAAImV,EAAUnM,GAEhB,KAAK3I,GACH,IAAI+U,EAAYtF,EAAU/R,EAG1B,GAFAoX,IAAYA,EAAUhM,IAElBzwL,EAAO2yB,MAAQ8a,EAAM9a,OAAS+pK,EAChC,OAAO,EAGT,IAAI9D,EAAUvqL,EAAMlP,IAAIa,GACxB,GAAI44L,EACF,OAAOA,GAAWnrJ,EAEpB2pJ,GAAW9R,EAGXj3K,EAAM+V,IAAIpkB,EAAQytC,GAClB,IAAI3qC,EAAS05L,GAAYC,EAAQz8L,GAASy8L,EAAQhvJ,GAAQ2pJ,EAASC,EAAY2E,EAAW3tL,GAE1F,OADAA,EAAc,OAAErO,GACT8C,EAET,KAAK+kL,GACH,GAAI+L,GACF,OAAOA,GAAcj4L,KAAKqE,IAAW4zL,GAAcj4L,KAAK8xC,GAG9D,OAAO,EAt4EDkvJ,CAAW38L,EAAQytC,EAAO0uJ,EAAQ/E,EAASC,EAAY2E,EAAW3tL,GAExE,KAAM+oL,EAAU/R,GAAuB,CACrC,IAAIuX,EAAeP,GAAY3gM,GAAeC,KAAKqE,EAAQ,eACvD68L,EAAeP,GAAY5gM,GAAeC,KAAK8xC,EAAO,eAE1D,GAAImvJ,GAAgBC,EAAc,CAChC,IAAIC,EAAeF,EAAe58L,EAAOT,QAAUS,EAC/C+8L,EAAeF,EAAepvJ,EAAMluC,QAAUkuC,EAGlD,OADAp/B,IAAUA,EAAQ,IAAI4yC,IACf+6I,EAAUc,EAAcC,EAAc3F,EAASC,EAAYhpL,IAGtE,IAAKkuL,EACH,OAAO,EAGT,OADAluL,IAAUA,EAAQ,IAAI4yC,IAq4ExB,SAAsBjhD,EAAQytC,EAAO2pJ,EAASC,EAAY2E,EAAW3tL,GACnE,IAAIquL,EAAYtF,EAAU/R,EACtB2X,EAAWjE,GAAW/4L,GACtBi9L,EAAYD,EAASzhM,OAErBigM,EADWzC,GAAWtrJ,GACDlyC,OAEzB,GAAI0hM,GAAazB,IAAckB,EAC7B,OAAO,EAET,IAAIj1L,EAAQw1L,EACZ,KAAOx1L,KAAS,CACd,IAAI5H,EAAMm9L,EAASv1L,GACnB,KAAMi1L,EAAY78L,KAAO4tC,EAAQ/xC,GAAeC,KAAK8xC,EAAO5tC,IAC1D,OAAO,EAIX,IAAI+4L,EAAUvqL,EAAMlP,IAAIa,GACxB,GAAI44L,GAAWvqL,EAAMlP,IAAIsuC,GACvB,OAAOmrJ,GAAWnrJ,EAEpB,IAAI3qC,GAAS,EACbuL,EAAM+V,IAAIpkB,EAAQytC,GAClBp/B,EAAM+V,IAAIqpB,EAAOztC,GAEjB,IAAIk9L,EAAWR,EACf,OAASj1L,EAAQw1L,GAAW,CAC1Bp9L,EAAMm9L,EAASv1L,GACf,IAAIgvL,EAAWz2L,EAAOH,GAClBs9L,EAAW1vJ,EAAM5tC,GAErB,GAAIw3L,EACF,IAAI+F,EAAWV,EACXrF,EAAW8F,EAAU1G,EAAU52L,EAAK4tC,EAAOztC,EAAQqO,GACnDgpL,EAAWZ,EAAU0G,EAAUt9L,EAAKG,EAAQytC,EAAOp/B,GAGzD,KAAM+uL,IAAa7+L,EACVk4L,IAAa0G,GAAYnB,EAAUvF,EAAU0G,EAAU/F,EAASC,EAAYhpL,GAC7E+uL,GACD,CACLt6L,GAAS,EACT,MAEFo6L,IAAaA,EAAkB,eAAPr9L,GAE1B,GAAIiD,IAAWo6L,EAAU,CACvB,IAAIG,EAAUr9L,EAAO8K,YACjBwyL,EAAU7vJ,EAAM3iC,YAGhBuyL,GAAWC,GACV,gBAAiBt9L,GAAU,gBAAiBytC,KACzB,mBAAX4vJ,GAAyBA,aAAmBA,GACjC,mBAAXC,GAAyBA,aAAmBA,KACvDx6L,GAAS,GAKb,OAFAuL,EAAc,OAAErO,GAChBqO,EAAc,OAAEo/B,GACT3qC,EAj8EAy6L,CAAav9L,EAAQytC,EAAO2pJ,EAASC,EAAY2E,EAAW3tL,GA3D5DmvL,CAAgBj+L,EAAOkuC,EAAO2pJ,EAASC,EAAY0E,GAAa1tL,IAmFzE,SAASovL,GAAYz9L,EAAQmoD,EAAQu1I,EAAWrG,GAC9C,IAAI5vL,EAAQi2L,EAAUniM,OAClBA,EAASkM,EACTk2L,GAAgBtG,EAEpB,GAAc,MAAVr3L,EACF,OAAQzE,EAGV,IADAyE,EAASxE,GAAOwE,GACTyH,KAAS,CACd,IAAIzM,EAAO0iM,EAAUj2L,GACrB,GAAKk2L,GAAgB3iM,EAAK,GAClBA,EAAK,KAAOgF,EAAOhF,EAAK,MACtBA,EAAK,KAAMgF,GAEnB,OAAO,EAGX,OAASyH,EAAQlM,GAAQ,CAEvB,IAAIsE,GADJ7E,EAAO0iM,EAAUj2L,IACF,GACXgvL,EAAWz2L,EAAOH,GAClB+9L,EAAW5iM,EAAK,GAEpB,GAAI2iM,GAAgB3iM,EAAK,IACvB,GAAIy7L,IAAal4L,KAAesB,KAAOG,GACrC,OAAO,MAEJ,CACL,IAAIqO,EAAQ,IAAI4yC,GAChB,GAAIo2I,EACF,IAAIv0L,EAASu0L,EAAWZ,EAAUmH,EAAU/9L,EAAKG,EAAQmoD,EAAQ95C,GAEnE,KAAMvL,IAAWvE,EACTw9L,GAAY6B,EAAUnH,EAAUpR,EAAuBC,EAAwB+R,EAAYhpL,GAC3FvL,GAEN,OAAO,GAIb,OAAO,EAWT,SAASi9I,GAAaxgJ,GACpB,SAAK4V,GAAS5V,KAo4FEs5D,EAp4FiBt5D,EAq4FxBiyL,IAAeA,MAAc34H,MAl4FxB68B,GAAWn2F,GAASqyL,GAAatH,IAChC9sK,KAAK0rB,GAAS3pC,IAg4F/B,IAAkBs5D,EAp1FlB,SAASglI,GAAat+L,GAGpB,MAAoB,mBAATA,EACFA,EAEI,MAATA,EACK8iL,GAEW,iBAAT9iL,EACFkD,GAAQlD,GACXu+L,GAAoBv+L,EAAM,GAAIA,EAAM,IACpCw+L,GAAYx+L,GAEXU,GAASV,GAUlB,SAASy+L,GAASh+L,GAChB,IAAKi+L,GAAYj+L,GACf,OAAO4yL,GAAW5yL,GAEpB,IAAI8C,EAAS,GACb,IAAK,IAAIjD,KAAOrE,GAAOwE,GACjBtE,GAAeC,KAAKqE,EAAQH,IAAe,eAAPA,GACtCiD,EAAOjH,KAAKgE,GAGhB,OAAOiD,EAUT,SAASo7L,GAAWl+L,GAClB,IAAKmV,GAASnV,GACZ,OAo8FJ,SAAsBA,GACpB,IAAI8C,EAAS,GACb,GAAc,MAAV9C,EACF,IAAK,IAAIH,KAAOrE,GAAOwE,GACrB8C,EAAOjH,KAAKgE,GAGhB,OAAOiD,EA38FEq7L,CAAan+L,GAEtB,IAAIo+L,EAAUH,GAAYj+L,GACtB8C,EAAS,GAEb,IAAK,IAAIjD,KAAOG,GACD,eAAPH,IAAyBu+L,GAAY1iM,GAAeC,KAAKqE,EAAQH,KACrEiD,EAAOjH,KAAKgE,GAGhB,OAAOiD,EAYT,SAASu7L,GAAO9+L,EAAOkuC,GACrB,OAAOluC,EAAQkuC,EAWjB,SAAS6wJ,GAAQ/pJ,EAAY25I,GAC3B,IAAIzmL,GAAS,EACT3E,EAASklC,GAAYuM,GAAc/xC,EAAM+xC,EAAWh5C,QAAU,GAKlE,OAHAq7L,GAASriJ,GAAY,SAASh1C,EAAOM,EAAK00C,GACxCzxC,IAAS2E,GAASymL,EAAS3uL,EAAOM,EAAK00C,MAElCzxC,EAUT,SAASi7L,GAAY51I,GACnB,IAAIu1I,EAAYa,GAAap2I,GAC7B,OAAwB,GAApBu1I,EAAUniM,QAAemiM,EAAU,GAAG,GACjCc,GAAwBd,EAAU,GAAG,GAAIA,EAAU,GAAG,IAExD,SAAS19L,GACd,OAAOA,IAAWmoD,GAAUs1I,GAAYz9L,EAAQmoD,EAAQu1I,IAY5D,SAASI,GAAoB33H,EAAMy3H,GACjC,OAAIhgC,GAAMz3F,IAASs4H,GAAmBb,GAC7BY,GAAwB5D,GAAMz0H,GAAOy3H,GAEvC,SAAS59L,GACd,IAAIy2L,EAAWt3L,GAAIa,EAAQmmE,GAC3B,OAAQswH,IAAal4L,GAAak4L,IAAamH,EAC3Cj5I,GAAM3kD,EAAQmmE,GACd41H,GAAY6B,EAAUnH,EAAUpR,EAAuBC,IAe/D,SAASoZ,GAAU1+L,EAAQmoD,EAAQr0B,EAAUujK,EAAYhpL,GACnDrO,IAAWmoD,GAGfmyI,GAAQnyI,GAAQ,SAASy1I,EAAU/9L,GAEjC,GADAwO,IAAUA,EAAQ,IAAI4yC,IAClB9rC,GAASyoL,IA+BjB,SAAuB59L,EAAQmoD,EAAQtoD,EAAKi0B,EAAU6qK,EAAWtH,EAAYhpL,GAC3E,IAAIooL,EAAWmI,GAAQ5+L,EAAQH,GAC3B+9L,EAAWgB,GAAQz2I,EAAQtoD,GAC3B+4L,EAAUvqL,EAAMlP,IAAIy+L,GAExB,GAAIhF,EAEF,YADAvC,GAAiBr2L,EAAQH,EAAK+4L,GAGhC,IAAIloJ,EAAW2mJ,EACXA,EAAWZ,EAAUmH,EAAW/9L,EAAM,GAAKG,EAAQmoD,EAAQ95C,GAC3D9P,EAEA66L,EAAW1oJ,IAAanyC,EAE5B,GAAI66L,EAAU,CACZ,IAAI7D,EAAQ9yL,GAAQm7L,GAChBlI,GAAUH,GAAS3gD,GAASgpD,GAC5BiB,GAAWtJ,IAAUG,GAAU1H,GAAa4P,GAEhDltJ,EAAWktJ,EACPrI,GAASG,GAAUmJ,EACjBp8L,GAAQg0L,GACV/lJ,EAAW+lJ,EAEJqI,GAAkBrI,GACzB/lJ,EAAWwlJ,GAAUO,GAEdf,GACP0D,GAAW,EACX1oJ,EAAWknJ,GAAYgG,GAAU,IAE1BiB,GACPzF,GAAW,EACX1oJ,EAAW8nJ,GAAgBoF,GAAU,IAGrCltJ,EAAW,GAGNquJ,GAAcnB,IAAanI,GAAYmI,IAC9CltJ,EAAW+lJ,EACPhB,GAAYgB,GACd/lJ,EAAWsuJ,GAAcvI,GAEjBthL,GAASshL,KAAa/gG,GAAW+gG,KACzC/lJ,EAAWmnJ,GAAgB+F,KAI7BxE,GAAW,EAGXA,IAEF/qL,EAAM+V,IAAIw5K,EAAUltJ,GACpBiuJ,EAAUjuJ,EAAUktJ,EAAU9pK,EAAUujK,EAAYhpL,GACpDA,EAAc,OAAEuvL,IAElBvH,GAAiBr2L,EAAQH,EAAK6wC,GAzF1BuuJ,CAAcj/L,EAAQmoD,EAAQtoD,EAAKi0B,EAAU4qK,GAAWrH,EAAYhpL,OAEjE,CACH,IAAIqiC,EAAW2mJ,EACXA,EAAWuH,GAAQ5+L,EAAQH,GAAM+9L,EAAW/9L,EAAM,GAAKG,EAAQmoD,EAAQ95C,GACvE9P,EAEAmyC,IAAanyC,IACfmyC,EAAWktJ,GAEbvH,GAAiBr2L,EAAQH,EAAK6wC,MAE/BsnJ,IAwFL,SAASkH,GAAQ9qK,EAAOr0B,GACtB,IAAIxE,EAAS64B,EAAM74B,OACnB,GAAKA,EAIL,OAAOs6L,GADP91L,GAAKA,EAAI,EAAIxE,EAAS,EACJA,GAAU64B,EAAMr0B,GAAKxB,EAYzC,SAAS4gM,GAAY5qJ,EAAY6qJ,EAAWC,GAC1C,IAAI53L,GAAS,EAUb,OATA23L,EAAY3Q,GAAS2Q,EAAU7jM,OAAS6jM,EAAY,CAAC/c,IAAWqN,GAAU4P,OA1uF9E,SAAoBlrK,EAAOmrK,GACzB,IAAIhkM,EAAS64B,EAAM74B,OAGnB,IADA64B,EAAMwd,KAAK2tJ,GACJhkM,KACL64B,EAAM74B,GAAU64B,EAAM74B,GAAQgE,MAEhC,OAAO60B,EA4uFEorK,CAPMlB,GAAQ/pJ,GAAY,SAASh1C,EAAOM,EAAK00C,GAIpD,MAAO,CAAE,SAHMk6I,GAAS2Q,GAAW,SAASlR,GAC1C,OAAOA,EAAS3uL,MAEa,QAAWkI,EAAO,MAASlI,OAGlC,SAASS,EAAQytC,GACzC,OAm4BJ,SAAyBztC,EAAQytC,EAAO4xJ,GACtC,IAAI53L,GAAS,EACTg4L,EAAcz/L,EAAO0/L,SACrBC,EAAclyJ,EAAMiyJ,SACpBnkM,EAASkkM,EAAYlkM,OACrBqkM,EAAeP,EAAO9jM,OAE1B,OAASkM,EAAQlM,GAAQ,CACvB,IAAIuH,EAAS+8L,GAAiBJ,EAAYh4L,GAAQk4L,EAAYl4L,IAC9D,GAAI3E,EAAQ,CACV,GAAI2E,GAASm4L,EACX,OAAO98L,EAET,IAAIg9L,EAAQT,EAAO53L,GACnB,OAAO3E,GAAmB,QAATg9L,GAAmB,EAAI,IAU5C,OAAO9/L,EAAOyH,MAAQgmC,EAAMhmC,MA35BnBs4L,CAAgB//L,EAAQytC,EAAO4xJ,MA4B1C,SAASW,GAAWhgM,EAAQuyE,EAAOz2B,GAKjC,IAJA,IAAIr0C,GAAS,EACTlM,EAASg3E,EAAMh3E,OACfuH,EAAS,KAEJ2E,EAAQlM,GAAQ,CACvB,IAAI4qE,EAAOoM,EAAM9qE,GACblI,EAAQm7L,GAAQ16L,EAAQmmE,GAExBrqB,EAAUv8C,EAAO4mE,IACnB85H,GAAQn9L,EAAQ63L,GAASx0H,EAAMnmE,GAAST,GAG5C,OAAOuD,EA2BT,SAASo9L,GAAY9rK,EAAO9K,EAAQ4kK,EAAUr8I,GAC5C,IAAI5sC,EAAU4sC,EAAau9I,GAAkBb,GACzC9mL,GAAS,EACTlM,EAAS+tB,EAAO/tB,OAChBqgM,EAAOxnK,EAQX,IANIA,IAAU9K,IACZA,EAAS4sK,GAAU5sK,IAEjB4kK,IACF0N,EAAOnN,GAASr6J,EAAOs7J,GAAUxB,OAE1BzmL,EAAQlM,GAKf,IAJA,IAAIqkK,EAAY,EACZrgK,EAAQ+pB,EAAO7hB,GACf8xL,EAAWrL,EAAWA,EAAS3uL,GAASA,GAEpCqgK,EAAY36J,EAAQ22L,EAAMrC,EAAU35B,EAAW/tH,KAAgB,GACjE+pJ,IAASxnK,GACXlsB,GAAOvM,KAAKigM,EAAMh8B,EAAW,GAE/B13J,GAAOvM,KAAKy4B,EAAOwrI,EAAW,GAGlC,OAAOxrI,EAYT,SAAS+rK,GAAW/rK,EAAOo7C,GAIzB,IAHA,IAAIj0E,EAAS64B,EAAQo7C,EAAQj0E,OAAS,EAClCqa,EAAYra,EAAS,EAElBA,KAAU,CACf,IAAIkM,EAAQ+nE,EAAQj0E,GACpB,GAAIA,GAAUqa,GAAanO,IAAU0rE,EAAU,CAC7C,IAAIA,EAAW1rE,EACXouL,GAAQpuL,GACVS,GAAOvM,KAAKy4B,EAAO3sB,EAAO,GAE1B24L,GAAUhsK,EAAO3sB,IAIvB,OAAO2sB,EAYT,SAAS2hK,GAAWkB,EAAOC,GACzB,OAAOD,EAAQ1E,GAAYU,MAAkBiE,EAAQD,EAAQ,IAkC/D,SAASoJ,GAAWlyJ,EAAQpuC,GAC1B,IAAI+C,EAAS,GACb,IAAKqrC,GAAUpuC,EAAI,GAAKA,EAAIq9D,EAC1B,OAAOt6D,EAIT,GACM/C,EAAI,IACN+C,GAAUqrC,IAEZpuC,EAAIwyL,GAAYxyL,EAAI,MAElBouC,GAAUA,SAELpuC,GAET,OAAO+C,EAWT,SAASw9L,GAASznI,EAAM93B,GACtB,OAAOw/J,GAAYC,GAAS3nI,EAAM93B,EAAOshJ,IAAWxpH,EAAO,IAU7D,SAAS4nI,GAAWlsJ,GAClB,OAAOuhJ,GAAYxsK,GAAOirB,IAW5B,SAASmsJ,GAAensJ,EAAYx0C,GAClC,IAAIq0B,EAAQ9K,GAAOirB,GACnB,OAAO0hJ,GAAY7hK,EAAO+hK,GAAUp2L,EAAG,EAAGq0B,EAAM74B,SAalD,SAAS0kM,GAAQjgM,EAAQmmE,EAAM5mE,EAAO83L,GACpC,IAAKliL,GAASnV,GACZ,OAAOA,EAST,IALA,IAAIyH,GAAS,EACTlM,GAHJ4qE,EAAOw0H,GAASx0H,EAAMnmE,IAGJzE,OACdqa,EAAYra,EAAS,EACrBgpD,EAASvkD,EAEI,MAAVukD,KAAoB98C,EAAQlM,GAAQ,CACzC,IAAIsE,EAAM+6L,GAAMz0H,EAAK1+D,IACjBipC,EAAWnxC,EAEf,GAAIkI,GAASmO,EAAW,CACtB,IAAI6gL,EAAWlyI,EAAO1kD,IACtB6wC,EAAW2mJ,EAAaA,EAAWZ,EAAU52L,EAAK0kD,GAAUhmD,KAC3CA,IACfmyC,EAAWv7B,GAASshL,GAChBA,EACCZ,GAAQ1vH,EAAK1+D,EAAQ,IAAM,GAAK,IAGzC+uL,GAAYjyI,EAAQ1kD,EAAK6wC,GACzB6T,EAASA,EAAO1kD,GAElB,OAAOG,EAWT,IAAI2gM,GAAevN,GAAqB,SAASv6H,EAAM79D,GAErD,OADAo4L,GAAQhvK,IAAIy0C,EAAM79D,GACX69D,GAFoBwpH,GAazBue,GAAmB3hM,GAA4B,SAAS45D,EAAM1qB,GAChE,OAAOlvC,GAAe45D,EAAM,WAAY,CACtC,cAAgB,EAChB,YAAc,EACd,MAASgoI,GAAS1yJ,GAClB,UAAY,KALwBk0I,GAgBxC,SAASye,GAAYvsJ,GACnB,OAAO0hJ,GAAY3sK,GAAOirB,IAY5B,SAASwsJ,GAAU3sK,EAAO2M,EAAO0F,GAC/B,IAAIh/B,GAAS,EACTlM,EAAS64B,EAAM74B,OAEfwlC,EAAQ,IACVA,GAASA,EAAQxlC,EAAS,EAAKA,EAASwlC,IAE1C0F,EAAMA,EAAMlrC,EAASA,EAASkrC,GACpB,IACRA,GAAOlrC,GAETA,EAASwlC,EAAQ0F,EAAM,EAAMA,EAAM1F,IAAW,EAC9CA,KAAW,EAGX,IADA,IAAIj+B,EAASN,EAAMjH,KACVkM,EAAQlM,GACfuH,EAAO2E,GAAS2sB,EAAM3sB,EAAQs5B,GAEhC,OAAOj+B,EAYT,SAASk+L,GAASzsJ,EAAYuH,GAC5B,IAAIh5C,EAMJ,OAJA8zL,GAASriJ,GAAY,SAASh1C,EAAOkI,EAAO8sC,GAE1C,QADAzxC,EAASg5C,EAAUv8C,EAAOkI,EAAO8sC,SAG1BzxC,EAeX,SAASm+L,GAAgB7sK,EAAO70B,EAAO2hM,GACrC,IAAIC,EAAM,EACNC,EAAgB,MAAThtK,EAAgB+sK,EAAM/sK,EAAM74B,OAEvC,GAAoB,iBAATgE,GAAqBA,GAAUA,GAAS6hM,GAAQza,EAAuB,CAChF,KAAOwa,EAAMC,GAAM,CACjB,IAAIC,EAAOF,EAAMC,IAAU,EACvB7H,EAAWnlK,EAAMitK,GAEJ,OAAb9H,IAAsBz7B,GAASy7B,KAC9B2H,EAAc3H,GAAYh6L,EAAUg6L,EAAWh6L,GAClD4hM,EAAME,EAAM,EAEZD,EAAOC,EAGX,OAAOD,EAET,OAAOE,GAAkBltK,EAAO70B,EAAO8iL,GAAU6e,GAgBnD,SAASI,GAAkBltK,EAAO70B,EAAO2uL,EAAUgT,GACjD3hM,EAAQ2uL,EAAS3uL,GASjB,IAPA,IAAI4hM,EAAM,EACNC,EAAgB,MAAThtK,EAAgB,EAAIA,EAAM74B,OACjCgmM,EAAWhiM,GAAUA,EACrBiiM,EAAsB,OAAVjiM,EACZkiM,EAAc3jC,GAASv+J,GACvBmiM,EAAiBniM,IAAUhB,EAExB4iM,EAAMC,GAAM,CACjB,IAAIC,EAAM9O,IAAa4O,EAAMC,GAAQ,GACjC7H,EAAWrL,EAAS95J,EAAMitK,IAC1BM,EAAepI,IAAah7L,EAC5BqjM,EAAyB,OAAbrI,EACZsI,EAAiBtI,GAAaA,EAC9BuI,EAAchkC,GAASy7B,GAE3B,GAAIgI,EACF,IAAIQ,EAASb,GAAcW,OAE3BE,EADSL,EACAG,IAAmBX,GAAcS,GACjCH,EACAK,GAAkBF,IAAiBT,IAAeU,GAClDH,EACAI,GAAkBF,IAAiBC,IAAcV,IAAeY,IAChEF,IAAaE,IAGbZ,EAAc3H,GAAYh6L,EAAUg6L,EAAWh6L,GAEtDwiM,EACFZ,EAAME,EAAM,EAEZD,EAAOC,EAGX,OAAOvO,GAAUsO,EAAM1a,GAYzB,SAASsb,GAAe5tK,EAAO85J,GAM7B,IALA,IAAIzmL,GAAS,EACTlM,EAAS64B,EAAM74B,OACf+yL,EAAW,EACXxrL,EAAS,KAEJ2E,EAAQlM,GAAQ,CACvB,IAAIgE,EAAQ60B,EAAM3sB,GACd8xL,EAAWrL,EAAWA,EAAS3uL,GAASA,EAE5C,IAAKkI,IAAU6uL,GAAGiD,EAAUqC,GAAO,CACjC,IAAIA,EAAOrC,EACXz2L,EAAOwrL,KAAwB,IAAV/uL,EAAc,EAAIA,GAG3C,OAAOuD,EAWT,SAASm/L,GAAa1iM,GACpB,MAAoB,iBAATA,EACFA,EAELu+J,GAASv+J,GACJinL,GAEDjnL,EAWV,SAAS2iM,GAAa3iM,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIkD,GAAQlD,GAEV,OAAOkvL,GAASlvL,EAAO2iM,IAAgB,GAEzC,GAAIpkC,GAASv+J,GACX,OAAOs0L,GAAiBA,GAAel4L,KAAK4D,GAAS,GAEvD,IAAIuD,EAAUvD,EAAQ,GACtB,MAAkB,KAAVuD,GAAkB,EAAIvD,IAAWw+J,EAAY,KAAOj7J,EAY9D,SAASq/L,GAAS/tK,EAAO85J,EAAUr8I,GACjC,IAAIpqC,GAAS,EACT4lC,EAAWyzF,GACXvlI,EAAS64B,EAAM74B,OACf69L,GAAW,EACXt2L,EAAS,GACT84L,EAAO94L,EAEX,GAAI+uC,EACFunJ,GAAW,EACX/rJ,EAAWmhJ,QAER,GAAIjzL,GAAUqpL,EAAkB,CACnC,IAAIxgK,EAAM8pK,EAAW,KAAO92G,GAAUhjD,GACtC,GAAIhQ,EACF,OAAOqsK,GAAWrsK,GAEpBg1K,GAAW,EACX/rJ,EAAWuiJ,GACXgM,EAAO,IAAIzG,QAGXyG,EAAO1N,EAAW,GAAKprL,EAEzBw2L,EACA,OAAS7xL,EAAQlM,GAAQ,CACvB,IAAIgE,EAAQ60B,EAAM3sB,GACd8xL,EAAWrL,EAAWA,EAAS3uL,GAASA,EAG5C,GADAA,EAASsyC,GAAwB,IAAVtyC,EAAeA,EAAQ,EAC1C65L,GAAYG,GAAaA,EAAU,CAErC,IADA,IAAI6I,EAAYxG,EAAKrgM,OACd6mM,KACL,GAAIxG,EAAKwG,KAAe7I,EACtB,SAASD,EAGTpL,GACF0N,EAAK//L,KAAK09L,GAEZz2L,EAAOjH,KAAK0D,QAEJ8tC,EAASuuJ,EAAMrC,EAAU1nJ,KAC7B+pJ,IAAS94L,GACX84L,EAAK//L,KAAK09L,GAEZz2L,EAAOjH,KAAK0D,IAGhB,OAAOuD,EAWT,SAASs9L,GAAUpgM,EAAQmmE,GAGzB,OAAiB,OADjBnmE,EAASgT,GAAOhT,EADhBmmE,EAAOw0H,GAASx0H,EAAMnmE,aAEUA,EAAO46L,GAAMvyK,GAAK89C,KAapD,SAASk8H,GAAWriM,EAAQmmE,EAAMhjC,EAASk0J,GACzC,OAAO4I,GAAQjgM,EAAQmmE,EAAMhjC,EAAQu3J,GAAQ16L,EAAQmmE,IAAQkxH,GAc/D,SAASiL,GAAUluK,EAAO0nB,EAAWymJ,EAAQtT,GAI3C,IAHA,IAAI1zL,EAAS64B,EAAM74B,OACfkM,EAAQwnL,EAAY1zL,GAAU,GAE1B0zL,EAAYxnL,MAAYA,EAAQlM,IACtCugD,EAAU1nB,EAAM3sB,GAAQA,EAAO2sB,KAEjC,OAAOmuK,EACHxB,GAAU3sK,EAAQ66J,EAAY,EAAIxnL,EAASwnL,EAAYxnL,EAAQ,EAAIlM,GACnEwlM,GAAU3sK,EAAQ66J,EAAYxnL,EAAQ,EAAI,EAAKwnL,EAAY1zL,EAASkM,GAa1E,SAAS+6L,GAAiBjjM,EAAOgrI,GAC/B,IAAIznI,EAASvD,EAIb,OAHIuD,aAAkBkxL,KACpBlxL,EAASA,EAAOvD,SAEX6hI,GAAYmJ,GAAS,SAASznI,EAAQ+mD,GAC3C,OAAOA,EAAOgP,KAAK9wD,MAAM8hD,EAAOl6C,QAAS++K,GAAU,CAAC5rL,GAAS+mD,EAAOh4C,SACnE/O,GAaL,SAAS2/L,GAAQlH,EAAQrN,EAAUr8I,GACjC,IAAIt2C,EAASggM,EAAOhgM,OACpB,GAAIA,EAAS,EACX,OAAOA,EAAS4mM,GAAS5G,EAAO,IAAM,GAKxC,IAHA,IAAI9zL,GAAS,EACT3E,EAASN,EAAMjH,KAEVkM,EAAQlM,GAIf,IAHA,IAAI64B,EAAQmnK,EAAO9zL,GACfg0L,GAAY,IAEPA,EAAWlgM,GACdkgM,GAAYh0L,IACd3E,EAAO2E,GAAS0xL,GAAer2L,EAAO2E,IAAU2sB,EAAOmnK,EAAOE,GAAWvN,EAAUr8I,IAIzF,OAAOswJ,GAAShI,GAAYr3L,EAAQ,GAAIorL,EAAUr8I,GAYpD,SAAS6wJ,GAAcxhM,EAAOooB,EAAQq5K,GAMpC,IALA,IAAIl7L,GAAS,EACTlM,EAAS2F,EAAM3F,OACfqnM,EAAat5K,EAAO/tB,OACpBuH,EAAS,KAEJ2E,EAAQlM,GAAQ,CACvB,IAAIgE,EAAQkI,EAAQm7L,EAAat5K,EAAO7hB,GAASlJ,EACjDokM,EAAW7/L,EAAQ5B,EAAMuG,GAAQlI,GAEnC,OAAOuD,EAUT,SAAS+/L,GAAoBtjM,GAC3B,OAAOu/L,GAAkBv/L,GAASA,EAAQ,GAU5C,SAASujM,GAAavjM,GACpB,MAAuB,mBAATA,EAAsBA,EAAQ8iL,GAW9C,SAASsY,GAASp7L,EAAOS,GACvB,OAAIyC,GAAQlD,GACHA,EAEFq+J,GAAMr+J,EAAOS,GAAU,CAACT,GAASs+J,GAAaxsJ,GAAS9R,IAYhE,IAAIwjM,GAAWzC,GAWf,SAAS0C,GAAU5uK,EAAO2M,EAAO0F,GAC/B,IAAIlrC,EAAS64B,EAAM74B,OAEnB,OADAkrC,EAAMA,IAAQloC,EAAYhD,EAASkrC,GAC1B1F,GAAS0F,GAAOlrC,EAAU64B,EAAQ2sK,GAAU3sK,EAAO2M,EAAO0F,GASrE,IAAI3oC,GAAeq0L,IAAmB,SAAS1lI,GAC7C,OAAOhZ,GAAK31C,aAAa2uD,IAW3B,SAASmrI,GAAYp1D,EAAQ80D,GAC3B,GAAIA,EACF,OAAO90D,EAAOhiI,QAEhB,IAAIjF,EAASinI,EAAOjnI,OAChBuH,EAASwxI,GAAcA,GAAY/4I,GAAU,IAAIinI,EAAO13H,YAAYvP,GAGxE,OADAinI,EAAOvoC,KAAKn3F,GACLA,EAUT,SAASu1L,GAAiB1vC,GACxB,IAAI7lJ,EAAS,IAAI6lJ,EAAY79I,YAAY69I,EAAYtjB,YAErD,OADA,IAAInF,GAAWp9H,GAAQshB,IAAI,IAAI87G,GAAWyoB,IACnC7lJ,EAgDT,SAAS01L,GAAgByK,EAAY3L,GACnC,IAAI90D,EAAS80D,EAASe,GAAiB4K,EAAWzgE,QAAUygE,EAAWzgE,OACvE,OAAO,IAAIygE,EAAWn4L,YAAY03H,EAAQygE,EAAWr/D,WAAYq/D,EAAW1nM,QAW9E,SAASskM,GAAiBtgM,EAAOkuC,GAC/B,GAAIluC,IAAUkuC,EAAO,CACnB,IAAIy1J,EAAe3jM,IAAUhB,EACzBijM,EAAsB,OAAVjiM,EACZ4jM,EAAiB5jM,GAAUA,EAC3BkiM,EAAc3jC,GAASv+J,GAEvBoiM,EAAel0J,IAAUlvC,EACzBqjM,EAAsB,OAAVn0J,EACZo0J,EAAiBp0J,GAAUA,EAC3Bq0J,EAAchkC,GAASrwH,GAE3B,IAAMm0J,IAAcE,IAAgBL,GAAeliM,EAAQkuC,GACtDg0J,GAAeE,GAAgBE,IAAmBD,IAAcE,GAChEN,GAAaG,GAAgBE,IAC5BqB,GAAgBrB,IACjBsB,EACH,OAAO,EAET,IAAM3B,IAAcC,IAAgBK,GAAeviM,EAAQkuC,GACtDq0J,GAAeoB,GAAgBC,IAAmB3B,IAAcC,GAChEG,GAAasB,GAAgBC,IAC5BxB,GAAgBwB,IACjBtB,EACH,OAAQ,EAGZ,OAAO,EAuDT,SAASuB,GAAYvxL,EAAMwxL,EAAUC,EAASC,GAU5C,IATA,IAAIC,GAAa,EACbC,EAAa5xL,EAAKtW,OAClBmoM,EAAgBJ,EAAQ/nM,OACxBooM,GAAa,EACbC,EAAaP,EAAS9nM,OACtBsoM,EAAchR,GAAU4Q,EAAaC,EAAe,GACpD5gM,EAASN,EAAMohM,EAAaC,GAC5BC,GAAeP,IAEVI,EAAYC,GACnB9gM,EAAO6gM,GAAaN,EAASM,GAE/B,OAASH,EAAYE,IACfI,GAAeN,EAAYC,KAC7B3gM,EAAOwgM,EAAQE,IAAc3xL,EAAK2xL,IAGtC,KAAOK,KACL/gM,EAAO6gM,KAAe9xL,EAAK2xL,KAE7B,OAAO1gM,EAcT,SAASihM,GAAiBlyL,EAAMwxL,EAAUC,EAASC,GAWjD,IAVA,IAAIC,GAAa,EACbC,EAAa5xL,EAAKtW,OAClByoM,GAAgB,EAChBN,EAAgBJ,EAAQ/nM,OACxB0oM,GAAc,EACdC,EAAcb,EAAS9nM,OACvBsoM,EAAchR,GAAU4Q,EAAaC,EAAe,GACpD5gM,EAASN,EAAMqhM,EAAcK,GAC7BJ,GAAeP,IAEVC,EAAYK,GACnB/gM,EAAO0gM,GAAa3xL,EAAK2xL,GAG3B,IADA,IAAI39J,EAAS29J,IACJS,EAAaC,GACpBphM,EAAO+iC,EAASo+J,GAAcZ,EAASY,GAEzC,OAASD,EAAeN,IAClBI,GAAeN,EAAYC,KAC7B3gM,EAAO+iC,EAASy9J,EAAQU,IAAiBnyL,EAAK2xL,MAGlD,OAAO1gM,EAWT,SAASozL,GAAU/tI,EAAQ/zB,GACzB,IAAI3sB,GAAS,EACTlM,EAAS4sD,EAAO5sD,OAGpB,IADA64B,IAAUA,EAAQ5xB,EAAMjH,MACfkM,EAAQlM,GACf64B,EAAM3sB,GAAS0gD,EAAO1gD,GAExB,OAAO2sB,EAaT,SAAS0iK,GAAW3uI,EAAQjnD,EAAOlB,EAAQq3L,GACzC,IAAI8M,GAASnkM,EACbA,IAAWA,EAAS,IAKpB,IAHA,IAAIyH,GAAS,EACTlM,EAAS2F,EAAM3F,SAEVkM,EAAQlM,GAAQ,CACvB,IAAIsE,EAAMqB,EAAMuG,GAEZipC,EAAW2mJ,EACXA,EAAWr3L,EAAOH,GAAMsoD,EAAOtoD,GAAMA,EAAKG,EAAQmoD,GAClD5pD,EAEAmyC,IAAanyC,IACfmyC,EAAWyX,EAAOtoD,IAEhBskM,EACF5N,GAAgBv2L,EAAQH,EAAK6wC,GAE7B8lJ,GAAYx2L,EAAQH,EAAK6wC,GAG7B,OAAO1wC,EAmCT,SAASokM,GAAiBl/D,EAAQm/D,GAChC,OAAO,SAAS9vJ,EAAY25I,GAC1B,IAAIr1H,EAAOp2D,GAAQ8xC,GAAc05I,GAAkB0I,GAC/CxI,EAAckW,EAAcA,IAAgB,GAEhD,OAAOxrI,EAAKtkB,EAAY2wF,EAAQo6D,GAAYpR,EAAU,GAAIC,IAW9D,SAASmW,GAAeC,GACtB,OAAOjE,IAAS,SAAStgM,EAAQwkM,GAC/B,IAAI/8L,GAAS,EACTlM,EAASipM,EAAQjpM,OACjB87L,EAAa97L,EAAS,EAAIipM,EAAQjpM,EAAS,GAAKgD,EAChDkmM,EAAQlpM,EAAS,EAAIipM,EAAQ,GAAKjmM,EAWtC,IATA84L,EAAckN,EAAShpM,OAAS,GAA0B,mBAAd87L,GACvC97L,IAAU87L,GACX94L,EAEAkmM,GAASC,GAAeF,EAAQ,GAAIA,EAAQ,GAAIC,KAClDpN,EAAa97L,EAAS,EAAIgD,EAAY84L,EACtC97L,EAAS,GAEXyE,EAASxE,GAAOwE,KACPyH,EAAQlM,GAAQ,CACvB,IAAI4sD,EAASq8I,EAAQ/8L,GACjB0gD,GACFo8I,EAASvkM,EAAQmoD,EAAQ1gD,EAAO4vL,GAGpC,OAAOr3L,KAYX,SAAS45L,GAAe7K,EAAUE,GAChC,OAAO,SAAS16I,EAAY25I,GAC1B,GAAkB,MAAd35I,EACF,OAAOA,EAET,IAAKvM,GAAYuM,GACf,OAAOw6I,EAASx6I,EAAY25I,GAM9B,IAJA,IAAI3yL,EAASg5C,EAAWh5C,OACpBkM,EAAQwnL,EAAY1zL,GAAU,EAC9BusC,EAAWtsC,GAAO+4C,IAEd06I,EAAYxnL,MAAYA,EAAQlM,KACa,IAA/C2yL,EAASpmJ,EAASrgC,GAAQA,EAAOqgC,KAIvC,OAAOyM,GAWX,SAASgmJ,GAActL,GACrB,OAAO,SAASjvL,EAAQkuL,EAAU4M,GAMhC,IALA,IAAIrzL,GAAS,EACTqgC,EAAWtsC,GAAOwE,GAClBkB,EAAQ45L,EAAS96L,GACjBzE,EAAS2F,EAAM3F,OAEZA,KAAU,CACf,IAAIsE,EAAMqB,EAAM+tL,EAAY1zL,IAAWkM,GACvC,IAA+C,IAA3CymL,EAASpmJ,EAASjoC,GAAMA,EAAKioC,GAC/B,MAGJ,OAAO9nC,GAgCX,SAAS2kM,GAAgBxzL,GACvB,OAAO,SAASg9B,GAGd,IAAI2hJ,EAAaO,GAFjBliJ,EAAS98B,GAAS88B,IAGd0iJ,GAAc1iJ,GACd5vC,EAEA6xL,EAAMN,EACNA,EAAW,GACX3hJ,EAAOxwB,OAAO,GAEdu9I,EAAW40B,EACXkT,GAAUlT,EAAY,GAAG1nL,KAAK,IAC9B+lC,EAAO3tC,MAAM,GAEjB,OAAO4vL,EAAIj/K,KAAgB+pJ,GAW/B,SAAS0pC,GAAiBn7K,GACxB,OAAO,SAAS0kB,GACd,OAAOizF,GAAYyjE,GAAMC,GAAO32J,GAAQ7lC,QAAQ4jL,GAAQ,KAAMziK,EAAU,KAY5E,SAASs7K,GAAW3M,GAClB,OAAO,WAIL,IAAIvmL,EAAOrD,UACX,OAAQqD,EAAKtW,QACX,KAAK,EAAG,OAAO,IAAI68L,EACnB,KAAK,EAAG,OAAO,IAAIA,EAAKvmL,EAAK,IAC7B,KAAK,EAAG,OAAO,IAAIumL,EAAKvmL,EAAK,GAAIA,EAAK,IACtC,KAAK,EAAG,OAAO,IAAIumL,EAAKvmL,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC/C,KAAK,EAAG,OAAO,IAAIumL,EAAKvmL,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACxD,KAAK,EAAG,OAAO,IAAIumL,EAAKvmL,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACjE,KAAK,EAAG,OAAO,IAAIumL,EAAKvmL,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC1E,KAAK,EAAG,OAAO,IAAIumL,EAAKvmL,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAErF,IAAImzL,EAAc7Q,GAAWiE,EAAK38L,WAC9BqH,EAASs1L,EAAKrwL,MAAMi9L,EAAanzL,GAIrC,OAAOsD,GAASrS,GAAUA,EAASkiM,GAgDvC,SAASC,GAAWC,GAClB,OAAO,SAAS3wJ,EAAYuH,EAAW8jH,GACrC,IAAI93H,EAAWtsC,GAAO+4C,GACtB,IAAKvM,GAAYuM,GAAa,CAC5B,IAAI25I,EAAWoR,GAAYxjJ,EAAW,GACtCvH,EAAa3/B,GAAK2/B,GAClBuH,EAAY,SAASj8C,GAAO,OAAOquL,EAASpmJ,EAASjoC,GAAMA,EAAKioC,IAElE,IAAIrgC,EAAQy9L,EAAc3wJ,EAAYuH,EAAW8jH,GACjD,OAAOn4J,GAAS,EAAIqgC,EAASomJ,EAAW35I,EAAW9sC,GAASA,GAASlJ,GAWzE,SAAS4mM,GAAWlW,GAClB,OAAO7vB,IAAS,SAASgmC,GACvB,IAAI7pM,EAAS6pM,EAAM7pM,OACfkM,EAAQlM,EACR8pM,EAASpR,GAAcx4L,UAAU6pM,KAKrC,IAHIrW,GACFmW,EAAM37J,UAEDhiC,KAAS,CACd,IAAIoxD,EAAOusI,EAAM39L,GACjB,GAAmB,mBAARoxD,EACT,MAAM,IAAIh4D,GAAUikL,GAEtB,GAAIugB,IAAW/gE,GAAgC,WAArBihE,GAAY1sI,GACpC,IAAIyrE,EAAU,IAAI2vD,GAAc,IAAI,GAIxC,IADAxsL,EAAQ68H,EAAU78H,EAAQlM,IACjBkM,EAAQlM,GAAQ,CAGvB,IAAIiqM,EAAWD,GAFf1sI,EAAOusI,EAAM39L,IAGTzM,EAAmB,WAAZwqM,EAAwBC,GAAQ5sI,GAAQt6D,EAMjD+lI,EAJEtpI,GAAQ0qM,GAAW1qM,EAAK,KACtBA,EAAK,KAAO8qL,EAAgBJ,EAAkBE,EAAoBG,KACjE/qL,EAAK,GAAGO,QAAqB,GAAXP,EAAK,GAElBspI,EAAQihE,GAAYvqM,EAAK,KAAK+M,MAAMu8H,EAAStpI,EAAK,IAElC,GAAf69D,EAAKt9D,QAAemqM,GAAW7sI,GACtCyrE,EAAQkhE,KACRlhE,EAAQghE,KAAKzsI,GAGrB,OAAO,WACL,IAAIhnD,EAAOrD,UACPjP,EAAQsS,EAAK,GAEjB,GAAIyyH,GAA0B,GAAfzyH,EAAKtW,QAAekH,GAAQlD,GACzC,OAAO+kI,EAAQqhE,MAAMpmM,GAAOA,QAK9B,IAHA,IAAIkI,EAAQ,EACR3E,EAASvH,EAAS6pM,EAAM39L,GAAOM,MAAM8D,KAAMgG,GAAQtS,IAE9CkI,EAAQlM,GACfuH,EAASsiM,EAAM39L,GAAO9L,KAAKkQ,KAAM/I,GAEnC,OAAOA,MAwBb,SAAS8iM,GAAa/sI,EAAMu+H,EAASznL,EAAS0zL,EAAUC,EAASuC,EAAeC,EAAcC,EAAQC,EAAKC,GACzG,IAAIC,EAAQ9O,EAAUtR,EAClBqgB,EAAS/O,EAAU7R,EACnB6gB,EAAYhP,EAAU5R,EACtB+d,EAAYnM,GAAW1R,EAAkBC,GACzC0gB,EAASjP,EAAUpR,EACnBoS,EAAOgO,EAAY7nM,EAAYwmM,GAAWlsI,GA6C9C,OA3CA,SAASyrE,IAKP,IAJA,IAAI/oI,EAASiT,UAAUjT,OACnBsW,EAAOrP,EAAMjH,GACbkM,EAAQlM,EAELkM,KACLoK,EAAKpK,GAAS+G,UAAU/G,GAE1B,GAAI87L,EACF,IAAIvmF,EAAcspF,GAAUhiE,GACxBiiE,EAp/HZ,SAAsBnyK,EAAO4oF,GAI3B,IAHA,IAAIzhH,EAAS64B,EAAM74B,OACfuH,EAAS,EAENvH,KACD64B,EAAM74B,KAAYyhH,KAClBl6G,EAGN,OAAOA,EA2+HkB0jM,CAAa30L,EAAMmrG,GASxC,GAPIqmF,IACFxxL,EAAOuxL,GAAYvxL,EAAMwxL,EAAUC,EAASC,IAE1CsC,IACFh0L,EAAOkyL,GAAiBlyL,EAAMg0L,EAAeC,EAAcvC,IAE7DhoM,GAAUgrM,EACNhD,GAAahoM,EAAS0qM,EAAO,CAC/B,IAAIQ,EAAajW,GAAe3+K,EAAMmrG,GACtC,OAAO0pF,GACL7tI,EAAMu+H,EAASwO,GAActhE,EAAQtnB,YAAartG,EAClDkC,EAAM40L,EAAYV,EAAQC,EAAKC,EAAQ1qM,GAG3C,IAAIypM,EAAcmB,EAASx2L,EAAU9D,KACjCiB,EAAKs5L,EAAYpB,EAAYnsI,GAAQA,EAczC,OAZAt9D,EAASsW,EAAKtW,OACVwqM,EACFl0L,EA83CN,SAAiBuiB,EAAOo7C,GACtB,IAAIsmE,EAAY1hH,EAAM74B,OAClBA,EAASu3L,GAAUtjH,EAAQj0E,OAAQu6I,GACnC6wD,EAAWzQ,GAAU9hK,GAEzB,KAAO74B,KAAU,CACf,IAAIkM,EAAQ+nE,EAAQj0E,GACpB64B,EAAM74B,GAAUs6L,GAAQpuL,EAAOquI,GAAa6wD,EAASl/L,GAASlJ,EAEhE,OAAO61B,EAv4CIwyK,CAAQ/0L,EAAMk0L,GACZM,GAAU9qM,EAAS,GAC5BsW,EAAK43B,UAEHy8J,GAASF,EAAMzqM,IACjBsW,EAAKtW,OAASyqM,GAEZn6L,MAAQA,OAAS4nC,IAAQ5nC,gBAAgBy4H,IAC3Cx3H,EAAKsrL,GAAQ2M,GAAWj4L,IAEnBA,EAAG/E,MAAMi9L,EAAanzL,IAajC,SAASg1L,GAAe3hE,EAAQ4hE,GAC9B,OAAO,SAAS9mM,EAAQkuL,GACtB,OA59DJ,SAAsBluL,EAAQklI,EAAQgpD,EAAUC,GAI9C,OAHA0L,GAAW75L,GAAQ,SAAST,EAAOM,EAAKG,GACtCklI,EAAOipD,EAAaD,EAAS3uL,GAAQM,EAAKG,MAErCmuL,EAw9DE4Y,CAAa/mM,EAAQklI,EAAQ4hE,EAAW5Y,GAAW,KAY9D,SAAS8Y,GAAoBC,EAAUtrK,GACrC,OAAO,SAASp8B,EAAOkuC,GACrB,IAAI3qC,EACJ,GAAIvD,IAAUhB,GAAakvC,IAAUlvC,EACnC,OAAOo9B,EAKT,GAHIp8B,IAAUhB,IACZuE,EAASvD,GAEPkuC,IAAUlvC,EAAW,CACvB,GAAIuE,IAAWvE,EACb,OAAOkvC,EAEW,iBAATluC,GAAqC,iBAATkuC,GACrCluC,EAAQ2iM,GAAa3iM,GACrBkuC,EAAQy0J,GAAaz0J,KAErBluC,EAAQ0iM,GAAa1iM,GACrBkuC,EAAQw0J,GAAax0J,IAEvB3qC,EAASmkM,EAAS1nM,EAAOkuC,GAE3B,OAAO3qC,GAWX,SAASokM,GAAWC,GAClB,OAAO/nC,IAAS,SAASggC,GAEvB,OADAA,EAAY3Q,GAAS2Q,EAAW1P,GAAU4P,OACnCgB,IAAS,SAASzuL,GACvB,IAAIlC,EAAU9D,KACd,OAAOs7L,EAAU/H,GAAW,SAASlR,GACnC,OAAOnmL,GAAMmmL,EAAUv+K,EAASkC,YAexC,SAASu1L,GAAc7rM,EAAQslJ,GAG7B,IAAIwmD,GAFJxmD,EAAQA,IAAUtiJ,EAAY,IAAM2jM,GAAarhD,IAEzBtlJ,OACxB,GAAI8rM,EAAc,EAChB,OAAOA,EAAchH,GAAWx/C,EAAOtlJ,GAAUslJ,EAEnD,IAAI/9I,EAASu9L,GAAWx/C,EAAOyxC,GAAW/2L,EAASo1L,GAAW9vC,KAC9D,OAAOwvC,GAAWxvC,GACdmiD,GAAUnS,GAAc/tL,GAAS,EAAGvH,GAAQ6M,KAAK,IACjDtF,EAAOtC,MAAM,EAAGjF,GA6CtB,SAASk4E,GAAYw7G,GACnB,OAAO,SAASluJ,EAAO0F,EAAKiG,GAa1B,OAZIA,GAAuB,iBAARA,GAAoBg4J,GAAe3jK,EAAO0F,EAAKiG,KAChEjG,EAAMiG,EAAOnuC,GAGfwiC,EAAQumK,GAASvmK,GACb0F,IAAQloC,GACVkoC,EAAM1F,EACNA,EAAQ,GAER0F,EAAM6gK,GAAS7gK,GAr7CrB,SAAmB1F,EAAO0F,EAAKiG,EAAMuiJ,GAKnC,IAJA,IAAIxnL,GAAS,EACTlM,EAASs3L,GAAUP,IAAY7rJ,EAAM1F,IAAU2L,GAAQ,IAAK,GAC5D5pC,EAASN,EAAMjH,GAEZA,KACLuH,EAAOmsL,EAAY1zL,IAAWkM,GAASs5B,EACvCA,GAAS2L,EAEX,OAAO5pC,EA+6CEykM,CAAUxmK,EAAO0F,EADxBiG,EAAOA,IAASnuC,EAAawiC,EAAQ0F,EAAM,GAAK,EAAK6gK,GAAS56J,GAC3BuiJ,IAWvC,SAASuY,GAA0BP,GACjC,OAAO,SAAS1nM,EAAOkuC,GAKrB,MAJsB,iBAATluC,GAAqC,iBAATkuC,IACvCluC,EAAQkoM,GAASloM,GACjBkuC,EAAQg6J,GAASh6J,IAEZw5J,EAAS1nM,EAAOkuC,IAqB3B,SAASi5J,GAAc7tI,EAAMu+H,EAASsQ,EAAU1qF,EAAartG,EAAS0zL,EAAUC,EAASyC,EAAQC,EAAKC,GACpG,IAAI0B,EAAUvQ,EAAU1R,EAMxB0R,GAAYuQ,EAAU/hB,EAAoBC,GAC1CuR,KAAauQ,EAAU9hB,EAA0BD,IAEjCH,IACd2R,KAAa7R,EAAiBC,IAEhC,IAAIjd,EAAU,CACZ1vG,EAAMu+H,EAASznL,EAVCg4L,EAAUtE,EAAW9kM,EAFtBopM,EAAUrE,EAAU/kM,EAGdopM,EAAUppM,EAAY8kM,EAFvBsE,EAAUppM,EAAY+kM,EAYzByC,EAAQC,EAAKC,GAG5BnjM,EAAS4kM,EAAS3/L,MAAMxJ,EAAWgqK,GAKvC,OAJIm9B,GAAW7sI,IACb+uI,GAAQ9kM,EAAQylK,GAElBzlK,EAAOk6G,YAAcA,EACd6qF,GAAgB/kM,EAAQ+1D,EAAMu+H,GAUvC,SAAS0Q,GAAY32L,GACnB,IAAI0nD,EAAOnnD,GAAKP,GAChB,OAAO,SAAS6lL,EAAQ+Q,GAGtB,GAFA/Q,EAASyQ,GAASzQ,IAClB+Q,EAAyB,MAAbA,EAAoB,EAAIjV,GAAUn7F,GAAUowG,GAAY,OACnDrV,GAAesE,GAAS,CAGvC,IAAIgR,GAAQ32L,GAAS2lL,GAAU,KAAKtyL,MAAM,KAI1C,SADAsjM,GAAQ32L,GAFIwnD,EAAKmvI,EAAK,GAAK,MAAQA,EAAK,GAAKD,KAEnB,KAAKrjM,MAAM,MACvB,GAAK,MAAQsjM,EAAK,GAAKD,IAEvC,OAAOlvI,EAAKm+H,IAWhB,IAAI5/G,GAAcpyC,IAAQ,EAAIyrJ,GAAW,IAAIzrJ,GAAI,CAAC,EAAE,KAAK,IAAO+4H,EAAmB,SAASz0I,GAC1F,OAAO,IAAI0b,GAAI1b,IAD2DgtF,GAW5E,SAAS2xF,GAAcnN,GACrB,OAAO,SAAS96L,GACd,IAAI6G,EAAM6wL,GAAO13L,GACjB,OAAI6G,GAAOygL,EACFgJ,GAAWtwL,GAEhB6G,GAAO8gL,GACF+I,GAAW1wL,GAn3I1B,SAAqBA,EAAQkB,GAC3B,OAAOutL,GAASvtL,GAAO,SAASrB,GAC9B,MAAO,CAACA,EAAKG,EAAOH,OAm3IXqoM,CAAYloM,EAAQ86L,EAAS96L,KA6BxC,SAASmoM,GAAWtvI,EAAMu+H,EAASznL,EAAS0zL,EAAUC,EAASyC,EAAQC,EAAKC,GAC1E,IAAIG,EAAYhP,EAAU5R,EAC1B,IAAK4gB,GAA4B,mBAARvtI,EACvB,MAAM,IAAIh4D,GAAUikL,GAEtB,IAAIvpL,EAAS8nM,EAAWA,EAAS9nM,OAAS,EAS1C,GARKA,IACH67L,KAAaxR,EAAoBC,GACjCwd,EAAWC,EAAU/kM,GAEvBynM,EAAMA,IAAQznM,EAAYynM,EAAMnT,GAAUl7F,GAAUquG,GAAM,GAC1DC,EAAQA,IAAU1nM,EAAY0nM,EAAQtuG,GAAUsuG,GAChD1qM,GAAU+nM,EAAUA,EAAQ/nM,OAAS,EAEjC67L,EAAUvR,EAAyB,CACrC,IAAIggB,EAAgBxC,EAChByC,EAAexC,EAEnBD,EAAWC,EAAU/kM,EAEvB,IAAIvD,EAAOorM,EAAY7nM,EAAYknM,GAAQ5sI,GAEvC0vG,EAAU,CACZ1vG,EAAMu+H,EAASznL,EAAS0zL,EAAUC,EAASuC,EAAeC,EAC1DC,EAAQC,EAAKC,GAkBf,GAfIjrM,GAy6BN,SAAmBA,EAAMmtD,GACvB,IAAIivI,EAAUp8L,EAAK,GACfotM,EAAajgJ,EAAO,GACpBkgJ,EAAajR,EAAUgR,EACvBhP,EAAWiP,GAAc9iB,EAAiBC,EAAqBM,GAE/DwiB,EACAF,GAActiB,GAAmBsR,GAAW1R,GAC5C0iB,GAActiB,GAAmBsR,GAAWrR,GAAqB/qL,EAAK,GAAGO,QAAU4sD,EAAO,IAC1FigJ,IAAetiB,EAAgBC,IAAsB59H,EAAO,GAAG5sD,QAAU4sD,EAAO,IAAQivI,GAAW1R,EAGvG,IAAM0T,IAAYkP,EAChB,OAAOttM,EAGLotM,EAAa7iB,IACfvqL,EAAK,GAAKmtD,EAAO,GAEjBkgJ,GAAcjR,EAAU7R,EAAiB,EAAIE,GAG/C,IAAIlmL,EAAQ4oD,EAAO,GACnB,GAAI5oD,EAAO,CACT,IAAI8jM,EAAWroM,EAAK,GACpBA,EAAK,GAAKqoM,EAAWD,GAAYC,EAAU9jM,EAAO4oD,EAAO,IAAM5oD,EAC/DvE,EAAK,GAAKqoM,EAAW7S,GAAex1L,EAAK,GAAIiqL,GAAe98H,EAAO,IAGrE5oD,EAAQ4oD,EAAO,MAEbk7I,EAAWroM,EAAK,GAChBA,EAAK,GAAKqoM,EAAWU,GAAiBV,EAAU9jM,EAAO4oD,EAAO,IAAM5oD,EACpEvE,EAAK,GAAKqoM,EAAW7S,GAAex1L,EAAK,GAAIiqL,GAAe98H,EAAO,KAGrE5oD,EAAQ4oD,EAAO,MAEbntD,EAAK,GAAKuE,GAGR6oM,EAAatiB,IACf9qL,EAAK,GAAgB,MAAXA,EAAK,GAAamtD,EAAO,GAAK2qI,GAAU93L,EAAK,GAAImtD,EAAO,KAGrD,MAAXntD,EAAK,KACPA,EAAK,GAAKmtD,EAAO,IAGnBntD,EAAK,GAAKmtD,EAAO,GACjBntD,EAAK,GAAKqtM,EA19BRE,CAAUhgC,EAASvtK,GAErB69D,EAAO0vG,EAAQ,GACf6uB,EAAU7uB,EAAQ,GAClB54J,EAAU44J,EAAQ,GAClB86B,EAAW96B,EAAQ,GACnB+6B,EAAU/6B,EAAQ,KAClB09B,EAAQ19B,EAAQ,GAAKA,EAAQ,KAAOhqK,EAC/B6nM,EAAY,EAAIvtI,EAAKt9D,OACtBs3L,GAAUtqB,EAAQ,GAAKhtK,EAAQ,KAErB67L,GAAW1R,EAAkBC,KACzCyR,KAAa1R,EAAkBC,IAE5ByR,GAAWA,GAAW7R,EAGzBziL,EADSs0L,GAAW1R,GAAmB0R,GAAWzR,EApgBtD,SAAqB9sH,EAAMu+H,EAAS6O,GAClC,IAAI7N,EAAO2M,GAAWlsI,GAwBtB,OAtBA,SAASyrE,IAMP,IALA,IAAI/oI,EAASiT,UAAUjT,OACnBsW,EAAOrP,EAAMjH,GACbkM,EAAQlM,EACRyhH,EAAcspF,GAAUhiE,GAErB78H,KACLoK,EAAKpK,GAAS+G,UAAU/G,GAE1B,IAAI67L,EAAW/nM,EAAS,GAAKsW,EAAK,KAAOmrG,GAAenrG,EAAKtW,EAAS,KAAOyhH,EACzE,GACAwzE,GAAe3+K,EAAMmrG,GAGzB,OADAzhH,GAAU+nM,EAAQ/nM,QACL0qM,EACJS,GACL7tI,EAAMu+H,EAASwO,GAActhE,EAAQtnB,YAAaz+G,EAClDsT,EAAMyxL,EAAS/kM,EAAWA,EAAW0nM,EAAQ1qM,GAG1CwM,GADG8D,MAAQA,OAAS4nC,IAAQ5nC,gBAAgBy4H,EAAW8zD,EAAOv/H,EACpDhtD,KAAMgG,IA8ed22L,CAAY3vI,EAAMu+H,EAAS6O,GAC1B7O,GAAWxR,GAAqBwR,IAAY7R,EAAiBK,IAAwB0d,EAAQ/nM,OAG9FqqM,GAAa79L,MAAMxJ,EAAWgqK,GA9O3C,SAAuB1vG,EAAMu+H,EAASznL,EAAS0zL,GAC7C,IAAI8C,EAAS/O,EAAU7R,EACnB6S,EAAO2M,GAAWlsI,GAkBtB,OAhBA,SAASyrE,IAQP,IAPA,IAAIk/D,GAAa,EACbC,EAAaj1L,UAAUjT,OACvBooM,GAAa,EACbC,EAAaP,EAAS9nM,OACtBsW,EAAOrP,EAAMohM,EAAaH,GAC1B32L,EAAMjB,MAAQA,OAAS4nC,IAAQ5nC,gBAAgBy4H,EAAW8zD,EAAOv/H,IAE5D8qI,EAAYC,GACnB/xL,EAAK8xL,GAAaN,EAASM,GAE7B,KAAOF,KACL5xL,EAAK8xL,KAAen1L,YAAYg1L,GAElC,OAAOz7L,GAAM+E,EAAIq5L,EAASx2L,EAAU9D,KAAMgG,IA0NjC42L,CAAc5vI,EAAMu+H,EAASznL,EAAS0zL,QAJ/C,IAAIvgM,EAhmBR,SAAoB+1D,EAAMu+H,EAASznL,GACjC,IAAIw2L,EAAS/O,EAAU7R,EACnB6S,EAAO2M,GAAWlsI,GAMtB,OAJA,SAASyrE,IAEP,OADUz4H,MAAQA,OAAS4nC,IAAQ5nC,gBAAgBy4H,EAAW8zD,EAAOv/H,GAC3D9wD,MAAMo+L,EAASx2L,EAAU9D,KAAM2C,YA0lB5Bk6L,CAAW7vI,EAAMu+H,EAASznL,GASzC,OAAOk4L,IADM7sM,EAAO2lM,GAAciH,IACJ9kM,EAAQylK,GAAU1vG,EAAMu+H,GAexD,SAASuR,GAAuBlS,EAAUmH,EAAU/9L,EAAKG,GACvD,OAAIy2L,IAAal4L,GACZ+3L,GAAGG,EAAUrF,GAAYvxL,MAAUnE,GAAeC,KAAKqE,EAAQH,GAC3D+9L,EAEFnH,EAiBT,SAASmS,GAAoBnS,EAAUmH,EAAU/9L,EAAKG,EAAQmoD,EAAQ95C,GAOpE,OANI8G,GAASshL,IAAathL,GAASyoL,KAEjCvvL,EAAM+V,IAAIw5K,EAAUnH,GACpBiI,GAAUjI,EAAUmH,EAAUr/L,EAAWqqM,GAAqBv6L,GAC9DA,EAAc,OAAEuvL,IAEXnH,EAYT,SAASoS,GAAgBtpM,GACvB,OAAOw/L,GAAcx/L,GAAShB,EAAYgB,EAgB5C,SAASi9L,GAAYpoK,EAAOqZ,EAAO2pJ,EAASC,EAAY2E,EAAW3tL,GACjE,IAAIquL,EAAYtF,EAAU/R,EACtBvvC,EAAY1hH,EAAM74B,OAClBigM,EAAY/tJ,EAAMlyC,OAEtB,GAAIu6I,GAAa0lD,KAAekB,GAAalB,EAAY1lD,GACvD,OAAO,EAGT,IAAI8iD,EAAUvqL,EAAMlP,IAAIi1B,GACxB,GAAIwkK,GAAWvqL,EAAMlP,IAAIsuC,GACvB,OAAOmrJ,GAAWnrJ,EAEpB,IAAIhmC,GAAS,EACT3E,GAAS,EACT84L,EAAQxE,EAAU9R,EAA0B,IAAI6P,GAAW52L,EAM/D,IAJA8P,EAAM+V,IAAIgQ,EAAOqZ,GACjBp/B,EAAM+V,IAAIqpB,EAAOrZ,KAGR3sB,EAAQquI,GAAW,CAC1B,IAAIgzD,EAAW10K,EAAM3sB,GACjB01L,EAAW1vJ,EAAMhmC,GAErB,GAAI4vL,EACF,IAAI+F,EAAWV,EACXrF,EAAW8F,EAAU2L,EAAUrhM,EAAOgmC,EAAOrZ,EAAO/lB,GACpDgpL,EAAWyR,EAAU3L,EAAU11L,EAAO2sB,EAAOqZ,EAAOp/B,GAE1D,GAAI+uL,IAAa7+L,EAAW,CAC1B,GAAI6+L,EACF,SAEFt6L,GAAS,EACT,MAGF,GAAI84L,GACF,IAAKl7D,GAAUjzF,GAAO,SAAS0vJ,EAAU1B,GACnC,IAAK7L,GAASgM,EAAMH,KACfqN,IAAa3L,GAAYnB,EAAU8M,EAAU3L,EAAU/F,EAASC,EAAYhpL,IAC/E,OAAOutL,EAAK//L,KAAK4/L,MAEjB,CACN34L,GAAS,EACT,YAEG,GACDgmM,IAAa3L,IACXnB,EAAU8M,EAAU3L,EAAU/F,EAASC,EAAYhpL,GACpD,CACLvL,GAAS,EACT,OAKJ,OAFAuL,EAAc,OAAE+lB,GAChB/lB,EAAc,OAAEo/B,GACT3qC,EAyKT,SAASs8J,GAASvmG,GAChB,OAAO0nI,GAAYC,GAAS3nI,EAAMt6D,EAAWy+C,IAAU6b,EAAO,IAUhE,SAASkgI,GAAW/4L,GAClB,OAAO66L,GAAe76L,EAAQ4U,GAAMsjL,IAWtC,SAASY,GAAa94L,GACpB,OAAO66L,GAAe76L,EAAQg4L,GAAQF,IAUxC,IAAI2N,GAAWrS,GAAiB,SAASv6H,GACvC,OAAOu6H,GAAQj0L,IAAI05D,IADIy9C,GAWzB,SAASivF,GAAY1sI,GAKnB,IAJA,IAAI/1D,EAAU+1D,EAAKx6D,KAAO,GACtB+1B,EAAQi/J,GAAUvwL,GAClBvH,EAASG,GAAeC,KAAK03L,GAAWvwL,GAAUsxB,EAAM74B,OAAS,EAE9DA,KAAU,CACf,IAAIP,EAAOo5B,EAAM74B,GACbwtM,EAAY/tM,EAAK69D,KACrB,GAAiB,MAAbkwI,GAAqBA,GAAalwI,EACpC,OAAO79D,EAAKqD,KAGhB,OAAOyE,EAUT,SAASwjM,GAAUztI,GAEjB,OADan9D,GAAeC,KAAKm4L,GAAQ,eAAiBA,GAASj7H,GACrDmkD,YAchB,SAASsiF,KACP,IAAIx8L,EAASgxL,GAAO5F,UAAYA,GAEhC,OADAprL,EAASA,IAAWorL,GAAW2P,GAAe/6L,EACvC0L,UAAUjT,OAASuH,EAAO0L,UAAU,GAAIA,UAAU,IAAM1L,EAWjE,SAAS42L,GAAW30L,EAAKlF,GACvB,IAgYiBN,EACbtB,EAjYAjD,EAAO+J,EAAIqwL,SACf,OAiYgB,WADZn3L,SADasB,EA/XAM,KAiYmB,UAAR5B,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAVsB,EACU,OAAVA,GAlYDvE,EAAmB,iBAAP6E,EAAkB,SAAW,QACzC7E,EAAK+J,IAUX,SAASw5L,GAAav+L,GAIpB,IAHA,IAAI8C,EAAS8R,GAAK5U,GACdzE,EAASuH,EAAOvH,OAEbA,KAAU,CACf,IAAIsE,EAAMiD,EAAOvH,GACbgE,EAAQS,EAAOH,GAEnBiD,EAAOvH,GAAU,CAACsE,EAAKN,EAAOk/L,GAAmBl/L,IAEnD,OAAOuD,EAWT,SAASovL,GAAUlyL,EAAQH,GACzB,IAAIN,EA7uJR,SAAkBS,EAAQH,GACxB,OAAiB,MAAVG,EAAiBzB,EAAYyB,EAAOH,GA4uJ7BwgC,CAASrgC,EAAQH,GAC7B,OAAOkgJ,GAAaxgJ,GAASA,EAAQhB,EAqCvC,IAAI25L,GAAc1F,GAA+B,SAASxyL,GACxD,OAAc,MAAVA,EACK,IAETA,EAASxE,GAAOwE,GACTygI,GAAY+xD,GAAiBxyL,IAAS,SAAS04L,GACpD,OAAO5pJ,GAAqBnzC,KAAKqE,EAAQ04L,QANRsQ,GAiBjClR,GAAgBtF,GAA+B,SAASxyL,GAE1D,IADA,IAAI8C,EAAS,GACN9C,GACL0uL,GAAU5rL,EAAQo1L,GAAWl4L,IAC7BA,EAAS6xL,GAAa7xL,GAExB,OAAO8C,GAN8BkmM,GAgBnCtR,GAASsD,GA2Eb,SAASiO,GAAQjpM,EAAQmmE,EAAM+iI,GAO7B,IAJA,IAAIzhM,GAAS,EACTlM,GAHJ4qE,EAAOw0H,GAASx0H,EAAMnmE,IAGJzE,OACduH,GAAS,IAEJ2E,EAAQlM,GAAQ,CACvB,IAAIsE,EAAM+6L,GAAMz0H,EAAK1+D,IACrB,KAAM3E,EAAmB,MAAV9C,GAAkBkpM,EAAQlpM,EAAQH,IAC/C,MAEFG,EAASA,EAAOH,GAElB,OAAIiD,KAAY2E,GAASlM,EAChBuH,KAETvH,EAAmB,MAAVyE,EAAiB,EAAIA,EAAOzE,SAClB4tM,GAAS5tM,IAAWs6L,GAAQh2L,EAAKtE,KACjDkH,GAAQzC,IAAWy1L,GAAYz1L,IA6BpC,SAAS63L,GAAgB73L,GACvB,MAAqC,mBAAtBA,EAAO8K,aAA8BmzL,GAAYj+L,GAE5D,GADAm0L,GAAWtC,GAAa7xL,IA8E9B,SAASq6L,GAAc96L,GACrB,OAAOkD,GAAQlD,IAAUk2L,GAAYl2L,OAChCwyL,IAAoBxyL,GAASA,EAAMwyL,KAW1C,SAAS8D,GAAQt2L,EAAOhE,GACtB,IAAI0C,SAAcsB,EAGlB,SAFAhE,EAAmB,MAAVA,EAAiB6hE,EAAmB7hE,KAGlC,UAAR0C,GACU,UAARA,GAAoBusL,GAAShtK,KAAKje,KAChCA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQhE,EAajD,SAASmpM,GAAenlM,EAAOkI,EAAOzH,GACpC,IAAKmV,GAASnV,GACZ,OAAO,EAET,IAAI/B,SAAcwJ,EAClB,SAAY,UAARxJ,EACK+pC,GAAYhoC,IAAW61L,GAAQpuL,EAAOzH,EAAOzE,QACrC,UAAR0C,GAAoBwJ,KAASzH,IAE7Bs2L,GAAGt2L,EAAOyH,GAAQlI,GAa7B,SAASq+J,GAAMr+J,EAAOS,GACpB,GAAIyC,GAAQlD,GACV,OAAO,EAET,IAAItB,SAAcsB,EAClB,QAAY,UAARtB,GAA4B,UAARA,GAA4B,WAARA,GAC/B,MAATsB,IAAiBu+J,GAASv+J,MAGvB+pL,GAAc9rK,KAAKje,KAAW8pL,GAAa7rK,KAAKje,IAC1C,MAAVS,GAAkBT,KAAS/D,GAAOwE,IAyBvC,SAAS0lM,GAAW7sI,GAClB,IAAI2sI,EAAWD,GAAY1sI,GACvBprB,EAAQqmJ,GAAO0R,GAEnB,GAAoB,mBAAT/3J,KAAyB+3J,KAAYxR,GAAYv4L,WAC1D,OAAO,EAET,GAAIo9D,IAASprB,EACX,OAAO,EAET,IAAIzyC,EAAOyqM,GAAQh4J,GACnB,QAASzyC,GAAQ69D,IAAS79D,EAAK,IA7S5BulI,IAAYm3D,GAAO,IAAIn3D,GAAS,IAAIF,YAAY,MAAQ4nD,IACxD53J,IAAOqnK,GAAO,IAAIrnK,KAAQi3J,GAC1B3qL,IAxzLU,oBAwzLC+6L,GAAO/6L,GAAQC,YAC1BooC,IAAO0yJ,GAAO,IAAI1yJ,KAAQ2iJ,IAC1Br4I,IAAWooJ,GAAO,IAAIpoJ,KAAYw4I,MACrC4P,GAAS,SAASn4L,GAChB,IAAIuD,EAASk4L,GAAWz7L,GACpB64L,EAAOt1L,GAAU0kL,EAAYjoL,EAAMuL,YAAcvM,EACjD6qM,EAAahR,EAAOlvJ,GAASkvJ,GAAQ,GAEzC,GAAIgR,EACF,OAAQA,GACN,KAAK9V,GAAoB,OAAOrL,GAChC,KAAKsL,GAAe,OAAOjM,EAC3B,KAAKkM,GAAmB,MAp0LjB,mBAq0LP,KAAKC,GAAe,OAAO9L,GAC3B,KAAK+L,GAAmB,OAAO5L,GAGnC,OAAOhlL,IA+SX,IAAIumM,GAAahY,GAAa37F,GAAa4zG,GAS3C,SAASrL,GAAY1+L,GACnB,IAAI64L,EAAO74L,GAASA,EAAMuL,YAG1B,OAAOvL,KAFqB,mBAAR64L,GAAsBA,EAAK38L,WAAc21L,IAa/D,SAASqN,GAAmBl/L,GAC1B,OAAOA,GAAUA,IAAU4V,GAAS5V,GAYtC,SAASi/L,GAAwB3+L,EAAK+9L,GACpC,OAAO,SAAS59L,GACd,OAAc,MAAVA,IAGGA,EAAOH,KAAS+9L,IACpBA,IAAar/L,GAAcsB,KAAOrE,GAAOwE,MAsIhD,SAASwgM,GAAS3nI,EAAM93B,EAAO2wC,GAE7B,OADA3wC,EAAQ8xJ,GAAU9xJ,IAAUxiC,EAAas6D,EAAKt9D,OAAS,EAAKwlC,EAAO,GAC5D,WAML,IALA,IAAIlvB,EAAOrD,UACP/G,GAAS,EACTlM,EAASs3L,GAAUhhL,EAAKtW,OAASwlC,EAAO,GACxC3M,EAAQ5xB,EAAMjH,KAETkM,EAAQlM,GACf64B,EAAM3sB,GAASoK,EAAKkvB,EAAQt5B,GAE9BA,GAAS,EAET,IADA,IAAI8hM,EAAY/mM,EAAMu+B,EAAQ,KACrBt5B,EAAQs5B,GACfwoK,EAAU9hM,GAASoK,EAAKpK,GAG1B,OADA8hM,EAAUxoK,GAAS2wC,EAAUt9C,GACtBrsB,GAAM8wD,EAAMhtD,KAAM09L,IAY7B,SAASv2L,GAAOhT,EAAQmmE,GACtB,OAAOA,EAAK5qE,OAAS,EAAIyE,EAAS06L,GAAQ16L,EAAQ+gM,GAAU56H,EAAM,GAAI,IAiCxE,SAASy4H,GAAQ5+L,EAAQH,GACvB,IAAY,gBAARA,GAAgD,mBAAhBG,EAAOH,KAIhC,aAAPA,EAIJ,OAAOG,EAAOH,GAiBhB,IAAI+nM,GAAU4B,GAAS7I,IAUnBniM,GAAa6zL,IAAiB,SAASx5H,EAAMqgI,GAC/C,OAAOzlJ,GAAKj1C,WAAWq6D,EAAMqgI,IAW3BqH,GAAciJ,GAAS5I,IAY3B,SAASiH,GAAgBvjE,EAASmlE,EAAWrS,GAC3C,IAAIjvI,EAAUshJ,EAAY,GAC1B,OAAOlJ,GAAYj8D,EA1brB,SAA2Bn8E,EAAQuhJ,GACjC,IAAInuM,EAASmuM,EAAQnuM,OACrB,IAAKA,EACH,OAAO4sD,EAET,IAAIvyC,EAAYra,EAAS,EAGzB,OAFAmuM,EAAQ9zL,IAAcra,EAAS,EAAI,KAAO,IAAMmuM,EAAQ9zL,GACxD8zL,EAAUA,EAAQthM,KAAK7M,EAAS,EAAI,KAAO,KACpC4sD,EAAO7/C,QAAQuhL,GAAe,uBAAyB6f,EAAU,UAkb5CC,CAAkBxhJ,EAqHhD,SAA2BuhJ,EAAStS,GAOlC,OANAhJ,GAAUxH,GAAW,SAASohB,GAC5B,IAAIzoM,EAAQ,KAAOyoM,EAAK,GACnB5Q,EAAU4Q,EAAK,KAAQlnE,GAAc4oE,EAASnqM,IACjDmqM,EAAQ7tM,KAAK0D,MAGVmqM,EAAQ93J,OA5HuCg4J,CAtjBxD,SAAwBzhJ,GACtB,IAAI5gD,EAAQ4gD,EAAO5gD,MAAMuiL,IACzB,OAAOviL,EAAQA,EAAM,GAAG7C,MAAMqlL,IAAkB,GAojBwB8f,CAAe1hJ,GAASivI,KAYlG,SAASoS,GAAS3wI,GAChB,IAAI7yD,EAAQ,EACR8jM,EAAa,EAEjB,OAAO,WACL,IAAIC,EAAQhX,KACRxtH,EAAY6gH,GAAY2jB,EAAQD,GAGpC,GADAA,EAAaC,EACTxkI,EAAY,GACd,KAAMv/D,GAASmgL,EACb,OAAO33K,UAAU,QAGnBxI,EAAQ,EAEV,OAAO6yD,EAAK9wD,MAAMxJ,EAAWiQ,YAYjC,SAASynL,GAAY7hK,EAAOzB,GAC1B,IAAIlrB,GAAS,EACTlM,EAAS64B,EAAM74B,OACfqa,EAAYra,EAAS,EAGzB,IADAo3B,EAAOA,IAASp0B,EAAYhD,EAASo3B,IAC5BlrB,EAAQkrB,GAAM,CACrB,IAAIq3K,EAAOjU,GAAWtuL,EAAOmO,GACzBrW,EAAQ60B,EAAM41K,GAElB51K,EAAM41K,GAAQ51K,EAAM3sB,GACpB2sB,EAAM3sB,GAASlI,EAGjB,OADA60B,EAAM74B,OAASo3B,EACRyB,EAUT,IAAIypI,GAvTJ,SAAuBhlG,GACrB,IAAI/1D,EAAS45D,GAAQ7D,GAAM,SAASh5D,GAIlC,OAHI+qC,EAAMjY,OAASqyJ,GACjBp6I,EAAMkG,QAEDjxC,KAGL+qC,EAAQ9nC,EAAO8nC,MACnB,OAAO9nC,EA8SUmnM,EAAc,SAAS97J,GACxC,IAAIrrC,EAAS,GAOb,OAN6B,KAAzBqrC,EAAOkB,WAAW,IACpBvsC,EAAOjH,KAAK,IAEdsyC,EAAO7lC,QAAQihL,IAAY,SAAShiL,EAAOyvL,EAAQkT,EAAOC,GACxDrnM,EAAOjH,KAAKquM,EAAQC,EAAU7hM,QAAQ2hL,GAAc,MAAS+M,GAAUzvL,MAElEzE,KAUT,SAAS83L,GAAMr7L,GACb,GAAoB,iBAATA,GAAqBu+J,GAASv+J,GACvC,OAAOA,EAET,IAAIuD,EAAUvD,EAAQ,GACtB,MAAkB,KAAVuD,GAAkB,EAAIvD,IAAWw+J,EAAY,KAAOj7J,EAU9D,SAASomC,GAAS2vB,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAOy4H,GAAa31L,KAAKk9D,GACzB,MAAOt8D,IACT,IACE,OAAQs8D,EAAO,GACf,MAAOt8D,KAEX,MAAO,GA4BT,SAAS23L,GAAa5vD,GACpB,GAAIA,aAAmB0vD,GACrB,OAAO1vD,EAAQqZ,QAEjB,IAAI76I,EAAS,IAAImxL,GAAc3vD,EAAQgwD,YAAahwD,EAAQkwD,WAI5D,OAHA1xL,EAAOyxL,YAAc2B,GAAU5xD,EAAQiwD,aACvCzxL,EAAO2xL,UAAanwD,EAAQmwD,UAC5B3xL,EAAO4xL,WAAapwD,EAAQowD,WACrB5xL,EAsIT,IAAIsnM,GAAa9J,IAAS,SAASlsK,EAAO9K,GACxC,OAAOw1K,GAAkB1qK,GACrB+kK,GAAe/kK,EAAO+lK,GAAY7wK,EAAQ,EAAGw1K,IAAmB,IAChE,MA6BFuL,GAAe/J,IAAS,SAASlsK,EAAO9K,GAC1C,IAAI4kK,EAAW7lK,GAAKiB,GAIpB,OAHIw1K,GAAkB5Q,KACpBA,EAAW3vL,GAENugM,GAAkB1qK,GACrB+kK,GAAe/kK,EAAO+lK,GAAY7wK,EAAQ,EAAGw1K,IAAmB,GAAOQ,GAAYpR,EAAU,IAC7F,MA0BFoc,GAAiBhK,IAAS,SAASlsK,EAAO9K,GAC5C,IAAIuoB,EAAaxpB,GAAKiB,GAItB,OAHIw1K,GAAkBjtJ,KACpBA,EAAatzC,GAERugM,GAAkB1qK,GACrB+kK,GAAe/kK,EAAO+lK,GAAY7wK,EAAQ,EAAGw1K,IAAmB,GAAOvgM,EAAWszC,GAClF,MAsON,SAASqV,GAAU9yB,EAAO0nB,EAAW8jH,GACnC,IAAIrkK,EAAkB,MAAT64B,EAAgB,EAAIA,EAAM74B,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIkM,EAAqB,MAAbm4J,EAAoB,EAAIjoE,GAAUioE,GAI9C,OAHIn4J,EAAQ,IACVA,EAAQorL,GAAUt3L,EAASkM,EAAO,IAE7BunL,GAAc56J,EAAOkrK,GAAYxjJ,EAAW,GAAIr0C,GAsCzD,SAAS6/C,GAAclzB,EAAO0nB,EAAW8jH,GACvC,IAAIrkK,EAAkB,MAAT64B,EAAgB,EAAIA,EAAM74B,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIkM,EAAQlM,EAAS,EAOrB,OANIqkK,IAAcrhK,IAChBkJ,EAAQkwF,GAAUioE,GAClBn4J,EAAQm4J,EAAY,EAChBizB,GAAUt3L,EAASkM,EAAO,GAC1BqrL,GAAUrrL,EAAOlM,EAAS,IAEzByzL,GAAc56J,EAAOkrK,GAAYxjJ,EAAW,GAAIr0C,GAAO,GAiBhE,SAASu1C,GAAQ5oB,GAEf,OADsB,MAATA,EAAgB,EAAIA,EAAM74B,QACvB4+L,GAAY/lK,EAAO,GAAK,GAgG1C,SAAS31B,GAAK21B,GACZ,OAAQA,GAASA,EAAM74B,OAAU64B,EAAM,GAAK71B,EA0E9C,IAAIgsM,GAAejK,IAAS,SAAS/E,GACnC,IAAIiP,EAAS/b,GAAS8M,EAAQsH,IAC9B,OAAQ2H,EAAOjvM,QAAUivM,EAAO,KAAOjP,EAAO,GAC1CD,GAAiBkP,GACjB,MA0BFC,GAAiBnK,IAAS,SAAS/E,GACrC,IAAIrN,EAAW7lK,GAAKkzK,GAChBiP,EAAS/b,GAAS8M,EAAQsH,IAO9B,OALI3U,IAAa7lK,GAAKmiL,GACpBtc,EAAW3vL,EAEXisM,EAAOj5L,MAEDi5L,EAAOjvM,QAAUivM,EAAO,KAAOjP,EAAO,GAC1CD,GAAiBkP,EAAQlL,GAAYpR,EAAU,IAC/C,MAwBFwc,GAAmBpK,IAAS,SAAS/E,GACvC,IAAI1pJ,EAAaxpB,GAAKkzK,GAClBiP,EAAS/b,GAAS8M,EAAQsH,IAM9B,OAJAhxJ,EAAkC,mBAAdA,EAA2BA,EAAatzC,IAE1DisM,EAAOj5L,MAEDi5L,EAAOjvM,QAAUivM,EAAO,KAAOjP,EAAO,GAC1CD,GAAiBkP,EAAQjsM,EAAWszC,GACpC,MAoCN,SAASxpB,GAAK+L,GACZ,IAAI74B,EAAkB,MAAT64B,EAAgB,EAAIA,EAAM74B,OACvC,OAAOA,EAAS64B,EAAM74B,EAAS,GAAKgD,EAuFtC,IAAIosM,GAAOrK,GAASsK,IAsBpB,SAASA,GAAQx2K,EAAO9K,GACtB,OAAQ8K,GAASA,EAAM74B,QAAU+tB,GAAUA,EAAO/tB,OAC9C2kM,GAAY9rK,EAAO9K,GACnB8K,EAqFN,IAAIy2K,GAASzrC,IAAS,SAAShrI,EAAOo7C,GACpC,IAAIj0E,EAAkB,MAAT64B,EAAgB,EAAIA,EAAM74B,OACnCuH,EAASi0L,GAAO3iK,EAAOo7C,GAM3B,OAJA2wH,GAAW/rK,EAAOq6J,GAASj/G,GAAS,SAAS/nE,GAC3C,OAAOouL,GAAQpuL,EAAOlM,IAAWkM,EAAQA,KACxCmqC,KAAKiuJ,KAED/8L,KA2ET,SAAS2mC,GAAQrV,GACf,OAAgB,MAATA,EAAgBA,EAAQ8+J,GAAcv3L,KAAKy4B,GAkapD,IAAI6rB,GAAQqgJ,IAAS,SAAS/E,GAC5B,OAAO4G,GAAShI,GAAYoB,EAAQ,EAAGuD,IAAmB,OA0BxDgM,GAAUxK,IAAS,SAAS/E,GAC9B,IAAIrN,EAAW7lK,GAAKkzK,GAIpB,OAHIuD,GAAkB5Q,KACpBA,EAAW3vL,GAEN4jM,GAAShI,GAAYoB,EAAQ,EAAGuD,IAAmB,GAAOQ,GAAYpR,EAAU,OAwBrF6c,GAAYzK,IAAS,SAAS/E,GAChC,IAAI1pJ,EAAaxpB,GAAKkzK,GAEtB,OADA1pJ,EAAkC,mBAAdA,EAA2BA,EAAatzC,EACrD4jM,GAAShI,GAAYoB,EAAQ,EAAGuD,IAAmB,GAAOvgM,EAAWszC,MAgG9E,SAASm5J,GAAM52K,GACb,IAAMA,IAASA,EAAM74B,OACnB,MAAO,GAET,IAAIA,EAAS,EAOb,OANA64B,EAAQqsG,GAAYrsG,GAAO,SAAS62K,GAClC,GAAInM,GAAkBmM,GAEpB,OADA1vM,EAASs3L,GAAUoY,EAAM1vM,OAAQA,IAC1B,KAGJk0L,GAAUl0L,GAAQ,SAASkM,GAChC,OAAOgnL,GAASr6J,EAAOy6J,GAAapnL,OAyBxC,SAASyjM,GAAU92K,EAAO85J,GACxB,IAAM95J,IAASA,EAAM74B,OACnB,MAAO,GAET,IAAIuH,EAASkoM,GAAM52K,GACnB,OAAgB,MAAZ85J,EACKprL,EAEF2rL,GAAS3rL,GAAQ,SAASmoM,GAC/B,OAAOljM,GAAMmmL,EAAU3vL,EAAW0sM,MAwBtC,IAAIE,GAAU7K,IAAS,SAASlsK,EAAO9K,GACrC,OAAOw1K,GAAkB1qK,GACrB+kK,GAAe/kK,EAAO9K,GACtB,MAqBF8hL,GAAM9K,IAAS,SAAS/E,GAC1B,OAAOkH,GAAQhiE,GAAY86D,EAAQuD,QA0BjCuM,GAAQ/K,IAAS,SAAS/E,GAC5B,IAAIrN,EAAW7lK,GAAKkzK,GAIpB,OAHIuD,GAAkB5Q,KACpBA,EAAW3vL,GAENkkM,GAAQhiE,GAAY86D,EAAQuD,IAAoBQ,GAAYpR,EAAU,OAwB3Eod,GAAUhL,IAAS,SAAS/E,GAC9B,IAAI1pJ,EAAaxpB,GAAKkzK,GAEtB,OADA1pJ,EAAkC,mBAAdA,EAA2BA,EAAatzC,EACrDkkM,GAAQhiE,GAAY86D,EAAQuD,IAAoBvgM,EAAWszC,MAmBhEgW,GAAMy4I,GAAS0K,IA6DnB,IAAIljJ,GAAUw4I,IAAS,SAAS/E,GAC9B,IAAIhgM,EAASggM,EAAOhgM,OAChB2yL,EAAW3yL,EAAS,EAAIggM,EAAOhgM,EAAS,GAAKgD,EAGjD,OADA2vL,EAA8B,mBAAZA,GAA0BqN,EAAOhqL,MAAO28K,GAAY3vL,EAC/D2sM,GAAU3P,EAAQrN,MAkC3B,SAAS3nI,GAAMhnD,GACb,IAAIuD,EAASgxL,GAAOv0L,GAEpB,OADAuD,EAAO0xL,WAAY,EACZ1xL,EAsDT,SAASwiM,GAAK/lM,EAAOgsM,GACnB,OAAOA,EAAYhsM,GAmBrB,IAAIisM,GAAYpsC,IAAS,SAAS7sF,GAChC,IAAIh3E,EAASg3E,EAAMh3E,OACfwlC,EAAQxlC,EAASg3E,EAAM,GAAK,EAC5BhzE,EAAQsM,KAAKyoL,YACbiX,EAAc,SAASvrM,GAAU,OAAO+2L,GAAO/2L,EAAQuyE,IAE3D,QAAIh3E,EAAS,GAAKsQ,KAAK0oL,YAAYh5L,SAC7BgE,aAAiBy0L,IAAiB6B,GAAQ90J,KAGhDxhC,EAAQA,EAAMiB,MAAMugC,GAAQA,GAASxlC,EAAS,EAAI,KAC5Cg5L,YAAY14L,KAAK,CACrB,KAAQypM,GACR,KAAQ,CAACiG,GACT,QAAWhtM,IAEN,IAAI01L,GAAc10L,EAAOsM,KAAK2oL,WAAW8Q,MAAK,SAASlxK,GAI5D,OAHI74B,IAAW64B,EAAM74B,QACnB64B,EAAMv4B,KAAK0C,GAEN61B,MAZAvoB,KAAKy5L,KAAKiG,MA+PrB,IAAI/nJ,GAAU4gJ,IAAiB,SAASthM,EAAQvD,EAAOM,GACjDnE,GAAeC,KAAKmH,EAAQjD,KAC5BiD,EAAOjD,GAET02L,GAAgBzzL,EAAQjD,EAAK,MAmIjC,IAAIsF,GAAO8/L,GAAW/9I,IAqBlBnD,GAAWkhJ,GAAW39I,IA2G1B,SAASrhD,GAAQsuC,EAAY25I,GAE3B,OADWzrL,GAAQ8xC,GAAc65I,GAAYwI,IACjCriJ,EAAY+qJ,GAAYpR,EAAU,IAuBhD,SAASud,GAAal3J,EAAY25I,GAEhC,OADWzrL,GAAQ8xC,GAAc85I,GAAiByL,IACtCvlJ,EAAY+qJ,GAAYpR,EAAU,IA0BhD,IAAI1pI,GAAU4/I,IAAiB,SAASthM,EAAQvD,EAAOM,GACjDnE,GAAeC,KAAKmH,EAAQjD,GAC9BiD,EAAOjD,GAAKhE,KAAK0D,GAEjBg3L,GAAgBzzL,EAAQjD,EAAK,CAACN,OAsElC,IAAImsM,GAAYpL,IAAS,SAAS/rJ,EAAY4xB,EAAMt0D,GAClD,IAAIpK,GAAS,EACTkwL,EAAwB,mBAARxxH,EAChBrjE,EAASklC,GAAYuM,GAAc/xC,EAAM+xC,EAAWh5C,QAAU,GAKlE,OAHAq7L,GAASriJ,GAAY,SAASh1C,GAC5BuD,IAAS2E,GAASkwL,EAAS5vL,GAAMo+D,EAAM5mE,EAAOsS,GAAQgqL,GAAWt8L,EAAO4mE,EAAMt0D,MAEzE/O,KA+BL6oM,GAAQvH,IAAiB,SAASthM,EAAQvD,EAAOM,GACnD02L,GAAgBzzL,EAAQjD,EAAKN,MA6C/B,SAASwF,GAAIwvC,EAAY25I,GAEvB,OADWzrL,GAAQ8xC,GAAck6I,GAAW6P,IAChC/pJ,EAAY+qJ,GAAYpR,EAAU,IAkFhD,IAAI0d,GAAYxH,IAAiB,SAASthM,EAAQvD,EAAOM,GACvDiD,EAAOjD,EAAM,EAAI,GAAGhE,KAAK0D,MACxB,WAAa,MAAO,CAAC,GAAI,OAmS5B,IAAIyyC,GAASsuJ,IAAS,SAAS/rJ,EAAY6qJ,GACzC,GAAkB,MAAd7qJ,EACF,MAAO,GAET,IAAIh5C,EAAS6jM,EAAU7jM,OAMvB,OALIA,EAAS,GAAKmpM,GAAenwJ,EAAY6qJ,EAAU,GAAIA,EAAU,IACnEA,EAAY,GACH7jM,EAAS,GAAKmpM,GAAetF,EAAU,GAAIA,EAAU,GAAIA,EAAU,MAC5EA,EAAY,CAACA,EAAU,KAElBD,GAAY5qJ,EAAY4lJ,GAAYiF,EAAW,GAAI,OAqBxD7tE,GAAM6gE,IAAU,WAClB,OAAO3+I,GAAKgf,KAAK8+D,OA0DnB,SAASy0E,GAAIntI,EAAM94D,EAAG0kM,GAGpB,OAFA1kM,EAAI0kM,EAAQlmM,EAAYwB,EACxBA,EAAK84D,GAAa,MAAL94D,EAAa84D,EAAKt9D,OAASwE,EACjCooM,GAAWtvI,EAAMitH,EAAevnL,EAAWA,EAAWA,EAAWA,EAAWwB,GAoBrF,SAAS+9D,GAAO/9D,EAAG84D,GACjB,IAAI/1D,EACJ,GAAmB,mBAAR+1D,EACT,MAAM,IAAIh4D,GAAUikL,GAGtB,OADA/kL,EAAI43F,GAAU53F,GACP,WAOL,QANMA,EAAI,IACR+C,EAAS+1D,EAAK9wD,MAAM8D,KAAM2C,YAExBzO,GAAK,IACP84D,EAAOt6D,GAEFuE,GAuCX,IAAIhD,GAAOwgM,IAAS,SAASznI,EAAMlpD,EAAS0zL,GAC1C,IAAIjM,EAAU7R,EACd,GAAI8d,EAAS9nM,OAAQ,CACnB,IAAI+nM,EAAU9S,GAAe6S,EAAUiD,GAAUxmM,KACjDs3L,GAAWxR,EAEb,OAAOuiB,GAAWtvI,EAAMu+H,EAASznL,EAAS0zL,EAAUC,MAgDlDuI,GAAUvL,IAAS,SAAStgM,EAAQH,EAAKwjM,GAC3C,IAAIjM,EAAU7R,EAAiBC,EAC/B,GAAI6d,EAAS9nM,OAAQ,CACnB,IAAI+nM,EAAU9S,GAAe6S,EAAUiD,GAAUuF,KACjDzU,GAAWxR,EAEb,OAAOuiB,GAAWtoM,EAAKu3L,EAASp3L,EAAQqjM,EAAUC,MAsJpD,SAASrnF,GAASpjD,EAAMqgI,EAAMnzL,GAC5B,IAAI44G,EACAD,EACAotF,EACAhpM,EACAq+G,EACA4qF,EACAC,EAAiB,EACjB/wC,GAAU,EACVgxC,GAAS,EACT/wC,GAAW,EAEf,GAAmB,mBAARriG,EACT,MAAM,IAAIh4D,GAAUikL,GAUtB,SAASonB,EAAWl6E,GAClB,IAAIngH,EAAO8sG,EACPhvG,EAAU+uG,EAKd,OAHAC,EAAWD,EAAWngH,EACtBytM,EAAiBh6E,EACjBlvH,EAAS+1D,EAAK9wD,MAAM4H,EAASkC,GAuB/B,SAASs6L,EAAan6E,GACpB,IAAIo6E,EAAoBp6E,EAAO+5E,EAM/B,OAAQA,IAAiBxtM,GAAc6tM,GAAqBlT,GACzDkT,EAAoB,GAAOH,GANJj6E,EAAOg6E,GAM8BF,EAGjE,SAASO,IACP,IAAIr6E,EAAOT,KACX,GAAI46E,EAAan6E,GACf,OAAOs6E,EAAat6E,GAGtB7Q,EAAU3iH,GAAW6tM,EA3BvB,SAAuBr6E,GACrB,IAEIu6E,EAAcrT,GAFMlnE,EAAO+5E,GAI/B,OAAOE,EACHnZ,GAAUyZ,EAAaT,GAJD95E,EAAOg6E,IAK7BO,EAoB+BC,CAAcx6E,IAGnD,SAASs6E,EAAat6E,GAKpB,OAJA7Q,EAAU5iH,EAIN28J,GAAYv8C,EACPutF,EAAWl6E,IAEpBrT,EAAWD,EAAWngH,EACfuE,GAeT,SAAS2pM,IACP,IAAIz6E,EAAOT,KACPm7E,EAAaP,EAAan6E,GAM9B,GAJArT,EAAWnwG,UACXkwG,EAAW7yG,KACXkgM,EAAe/5E,EAEX06E,EAAY,CACd,GAAIvrF,IAAY5iH,EACd,OAzEN,SAAqByzH,GAMnB,OAJAg6E,EAAiBh6E,EAEjB7Q,EAAU3iH,GAAW6tM,EAAcnT,GAE5Bj+B,EAAUixC,EAAWl6E,GAAQlvH,EAmEzB6pM,CAAYZ,GAErB,GAAIE,EAIF,OAFAnuM,GAAaqjH,GACbA,EAAU3iH,GAAW6tM,EAAcnT,GAC5BgT,EAAWH,GAMtB,OAHI5qF,IAAY5iH,IACd4iH,EAAU3iH,GAAW6tM,EAAcnT,IAE9Bp2L,EAIT,OA3GAo2L,EAAOuO,GAASvO,IAAS,EACrB/jL,GAASpP,KACXk1J,IAAYl1J,EAAQk1J,QAEpB6wC,GADAG,EAAS,YAAalmM,GACH8sL,GAAU4U,GAAS1hM,EAAQ+lM,UAAY,EAAG5S,GAAQ4S,EACrE5wC,EAAW,aAAcn1J,IAAYA,EAAQm1J,SAAWA,GAoG1DuxC,EAAUl6L,OApCV,WACM4uG,IAAY5iH,GACdT,GAAaqjH,GAEf6qF,EAAiB,EACjBrtF,EAAWotF,EAAertF,EAAWyC,EAAU5iH,GAgCjDkuM,EAAUG,MA7BV,WACE,OAAOzrF,IAAY5iH,EAAYuE,EAASwpM,EAAa/6E,OA6BhDk7E,EAqBT,IAAI98K,GAAQ2wK,IAAS,SAASznI,EAAMhnD,GAClC,OAAOonL,GAAUpgI,EAAM,EAAGhnD,MAsBxBgnB,GAAQynK,IAAS,SAASznI,EAAMqgI,EAAMrnL,GACxC,OAAOonL,GAAUpgI,EAAM4uI,GAASvO,IAAS,EAAGrnL,MAqE9C,SAAS6qD,GAAQ7D,EAAMg0I,GACrB,GAAmB,mBAARh0I,GAAmC,MAAZg0I,GAAuC,mBAAZA,EAC3D,MAAM,IAAIhsM,GAAUikL,GAEtB,IAAIgoB,EAAW,WACb,IAAIj7L,EAAOrD,UACP3O,EAAMgtM,EAAWA,EAAS9kM,MAAM8D,KAAMgG,GAAQA,EAAK,GACnD+4B,EAAQkiK,EAASliK,MAErB,GAAIA,EAAMvmB,IAAIxkB,GACZ,OAAO+qC,EAAMzrC,IAAIU,GAEnB,IAAIiD,EAAS+1D,EAAK9wD,MAAM8D,KAAMgG,GAE9B,OADAi7L,EAASliK,MAAQA,EAAMxmB,IAAIvkB,EAAKiD,IAAW8nC,EACpC9nC,GAGT,OADAgqM,EAASliK,MAAQ,IAAK8xB,GAAQqwI,OAAS7X,IAChC4X,EA0BT,SAAS5xF,GAAOp/D,GACd,GAAwB,mBAAbA,EACT,MAAM,IAAIj7C,GAAUikL,GAEtB,OAAO,WACL,IAAIjzK,EAAOrD,UACX,OAAQqD,EAAKtW,QACX,KAAK,EAAG,OAAQugD,EAAUngD,KAAKkQ,MAC/B,KAAK,EAAG,OAAQiwC,EAAUngD,KAAKkQ,KAAMgG,EAAK,IAC1C,KAAK,EAAG,OAAQiqC,EAAUngD,KAAKkQ,KAAMgG,EAAK,GAAIA,EAAK,IACnD,KAAK,EAAG,OAAQiqC,EAAUngD,KAAKkQ,KAAMgG,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE9D,OAAQiqC,EAAU/zC,MAAM8D,KAAMgG,IAlClC6qD,GAAQqwI,MAAQ7X,GA2FhB,IAAI8X,GAAWjK,IAAS,SAASlqI,EAAMo0I,GAKrC,IAAIC,GAJJD,EAAmC,GAArBA,EAAW1xM,QAAekH,GAAQwqM,EAAW,IACvDxe,GAASwe,EAAW,GAAIvd,GAAU4P,OAClC7Q,GAAS0L,GAAY8S,EAAY,GAAIvd,GAAU4P,QAEtB/jM,OAC7B,OAAO+kM,IAAS,SAASzuL,GAIvB,IAHA,IAAIpK,GAAS,EACTlM,EAASu3L,GAAUjhL,EAAKtW,OAAQ2xM,KAE3BzlM,EAAQlM,GACfsW,EAAKpK,GAASwlM,EAAWxlM,GAAO9L,KAAKkQ,KAAMgG,EAAKpK,IAElD,OAAOM,GAAM8wD,EAAMhtD,KAAMgG,SAqCzBs7L,GAAU7M,IAAS,SAASznI,EAAMwqI,GACpC,IAAIC,EAAU9S,GAAe6S,EAAUiD,GAAU6G,KACjD,OAAOhF,GAAWtvI,EAAM+sH,EAAmBrnL,EAAW8kM,EAAUC,MAmC9D8J,GAAe9M,IAAS,SAASznI,EAAMwqI,GACzC,IAAIC,EAAU9S,GAAe6S,EAAUiD,GAAU8G,KACjD,OAAOjF,GAAWtvI,EAAMgtH,EAAyBtnL,EAAW8kM,EAAUC,MAyBpE+J,GAAQjuC,IAAS,SAASvmG,EAAM2W,GAClC,OAAO24H,GAAWtvI,EAAMktH,EAAiBxnL,EAAWA,EAAWA,EAAWixE,MAia5E,SAAS8mH,GAAG/2L,EAAOkuC,GACjB,OAAOluC,IAAUkuC,GAAUluC,GAAUA,GAASkuC,GAAUA,EA0B1D,IAAI6/J,GAAK9F,GAA0BrM,IAyB/BoS,GAAM/F,IAA0B,SAASjoM,EAAOkuC,GAClD,OAAOluC,GAASkuC,KAqBdgoJ,GAAcqG,GAAgB,WAAa,OAAOttL,UAApB,IAAsCstL,GAAkB,SAASv8L,GACjG,OAAOw0L,GAAax0L,IAAU7D,GAAeC,KAAK4D,EAAO,YACtDuvC,GAAqBnzC,KAAK4D,EAAO,WA0BlCkD,GAAUD,EAAMC,QAmBhB+qL,GAAgBD,GAAoBmC,GAAUnC,IAn4PlD,SAA2BhuL,GACzB,OAAOw0L,GAAax0L,IAAUy7L,GAAWz7L,IAAUyoL,IA65PrD,SAAShgJ,GAAYzoC,GACnB,OAAgB,MAATA,GAAiB4pM,GAAS5pM,EAAMhE,UAAYm6F,GAAWn2F,GA4BhE,SAASu/L,GAAkBv/L,GACzB,OAAOw0L,GAAax0L,IAAUyoC,GAAYzoC,GA0C5C,IAAIq1I,GAAW69C,IAAkB6W,GAmB7B5b,GAASD,GAAaiC,GAAUjC,IA9+PpC,SAAoBluL,GAClB,OAAOw0L,GAAax0L,IAAUy7L,GAAWz7L,IAAU0nL,GAqpQrD,SAASvqJ,GAAQn9B,GACf,IAAKw0L,GAAax0L,GAChB,OAAO,EAET,IAAIsH,EAAMm0L,GAAWz7L,GACrB,OAAOsH,GAAOsgL,GAAYtgL,GAAOqgL,GACN,iBAAjB3nL,EAAMnB,SAA4C,iBAAdmB,EAAMlB,OAAqB0gM,GAAcx/L,GAkDzF,SAASm2F,GAAWn2F,GAClB,IAAK4V,GAAS5V,GACZ,OAAO,EAIT,IAAIsH,EAAMm0L,GAAWz7L,GACrB,OAAOsH,GAAOugL,GAAWvgL,GAAOwgL,GAAUxgL,GAAOkgL,GAAYlgL,GAAO4gL,GA6BtE,SAAS+lB,GAAUjuM,GACjB,MAAuB,iBAATA,GAAqBA,GAASo4F,GAAUp4F,GA6BxD,SAAS4pM,GAAS5pM,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GAAS69D,EA4B7C,SAASjoD,GAAS5V,GAChB,IAAItB,SAAcsB,EAClB,OAAgB,MAATA,IAA0B,UAARtB,GAA4B,YAARA,GA2B/C,SAAS81L,GAAax0L,GACpB,OAAgB,MAATA,GAAiC,iBAATA,EAoBjC,IAAIwzB,GAAQ46J,GAAY+B,GAAU/B,IAlwQlC,SAAmBpuL,GACjB,OAAOw0L,GAAax0L,IAAUm4L,GAAOn4L,IAAU+nL,GAm9QjD,SAASxwF,GAASv3F,GAChB,MAAuB,iBAATA,GACXw0L,GAAax0L,IAAUy7L,GAAWz7L,IAAUgoL,EA+BjD,SAASwX,GAAcx/L,GACrB,IAAKw0L,GAAax0L,IAAUy7L,GAAWz7L,IAAUioL,EAC/C,OAAO,EAET,IAAIljK,EAAQutK,GAAatyL,GACzB,GAAc,OAAV+kB,EACF,OAAO,EAET,IAAI8zK,EAAO18L,GAAeC,KAAK2oB,EAAO,gBAAkBA,EAAMxZ,YAC9D,MAAsB,mBAARstL,GAAsBA,aAAgBA,GAClD9G,GAAa31L,KAAKy8L,IAAS1G,GAoB/B,IAAI7D,GAAWD,GAAe8B,GAAU9B,IAl8QxC,SAAsBruL,GACpB,OAAOw0L,GAAax0L,IAAUy7L,GAAWz7L,IAAUmoL,IAm/QrD,IAAIhoI,GAAQouI,GAAY4B,GAAU5B,IAz+QlC,SAAmBvuL,GACjB,OAAOw0L,GAAax0L,IAAUm4L,GAAOn4L,IAAUooL,IA2/QjD,SAASnrF,GAASj9F,GAChB,MAAuB,iBAATA,IACVkD,GAAQlD,IAAUw0L,GAAax0L,IAAUy7L,GAAWz7L,IAAUqoL,GAoBpE,SAAS9pB,GAASv+J,GAChB,MAAuB,iBAATA,GACXw0L,GAAax0L,IAAUy7L,GAAWz7L,IAAUsoL,GAoBjD,IAAImG,GAAeD,GAAmB2B,GAAU3B,IA7hRhD,SAA0BxuL,GACxB,OAAOw0L,GAAax0L,IAClB4pM,GAAS5pM,EAAMhE,WAAamxL,GAAesO,GAAWz7L,KAmnR1D,IAAI0nH,GAAKugF,GAA0BnJ,IAyB/BoP,GAAMjG,IAA0B,SAASjoM,EAAOkuC,GAClD,OAAOluC,GAASkuC,KA0BlB,SAASjE,GAAQjqC,GACf,IAAKA,EACH,MAAO,GAET,GAAIyoC,GAAYzoC,GACd,OAAOi9F,GAASj9F,GAASsxL,GAActxL,GAAS22L,GAAU32L,GAE5D,GAAI0yL,IAAe1yL,EAAM0yL,IACvB,OA95VN,SAAyB14J,GAIvB,IAHA,IAAIv+B,EACA8H,EAAS,KAEJ9H,EAAOu+B,EAAShwB,QAAQC,MAC/B1G,EAAOjH,KAAKb,EAAKuE,OAEnB,OAAOuD,EAu5VI4qM,CAAgBnuM,EAAM0yL,OAE/B,IAAIprL,EAAM6wL,GAAOn4L,GAGjB,OAFWsH,GAAOygL,EAASgJ,GAAczpL,GAAO8gL,GAAS8I,GAAannK,IAE1D/pB,GA0Bd,SAAS+nM,GAAS/nM,GAChB,OAAKA,GAGLA,EAAQkoM,GAASloM,MACHw+J,GAAYx+J,KAAWw+J,GACvBx+J,EAAQ,GAAK,EAAI,GACfgnL,EAEThnL,GAAUA,EAAQA,EAAQ,EAPd,IAAVA,EAAcA,EAAQ,EAoCjC,SAASo4F,GAAUp4F,GACjB,IAAIuD,EAASwkM,GAAS/nM,GAClBouM,EAAY7qM,EAAS,EAEzB,OAAOA,GAAWA,EAAU6qM,EAAY7qM,EAAS6qM,EAAY7qM,EAAU,EA8BzE,SAASwwH,GAAS/zH,GAChB,OAAOA,EAAQ42L,GAAUx+F,GAAUp4F,GAAQ,EAAGknL,GAAoB,EA0BpE,SAASghB,GAASloM,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIu+J,GAASv+J,GACX,OAAOinL,EAET,GAAIrxK,GAAS5V,GAAQ,CACnB,IAAIkuC,EAAgC,mBAAjBluC,EAAMosC,QAAwBpsC,EAAMosC,UAAYpsC,EACnEA,EAAQ4V,GAASs4B,GAAUA,EAAQ,GAAMA,EAE3C,GAAoB,iBAATluC,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQA,EAAM+I,QAAQohL,GAAQ,IAC9B,IAAIkkB,EAAWvjB,GAAW7sK,KAAKje,GAC/B,OAAQquM,GAAYrjB,GAAU/sK,KAAKje,GAC/BwtL,GAAaxtL,EAAMiB,MAAM,GAAIotM,EAAW,EAAI,GAC3CxjB,GAAW5sK,KAAKje,GAASinL,GAAOjnL,EA2BvC,SAASy/L,GAAcz/L,GACrB,OAAOu3L,GAAWv3L,EAAOy4L,GAAOz4L,IAsDlC,SAAS8R,GAAS9R,GAChB,OAAgB,MAATA,EAAgB,GAAK2iM,GAAa3iM,GAqC3C,IAAI2hC,GAASojK,IAAe,SAAStkM,EAAQmoD,GAC3C,GAAI81I,GAAY91I,IAAWngB,GAAYmgB,GACrC2uI,GAAW3uI,EAAQvzC,GAAKuzC,GAASnoD,QAGnC,IAAK,IAAIH,KAAOsoD,EACVzsD,GAAeC,KAAKwsD,EAAQtoD,IAC9B22L,GAAYx2L,EAAQH,EAAKsoD,EAAOtoD,OAoClCguM,GAAWvJ,IAAe,SAAStkM,EAAQmoD,GAC7C2uI,GAAW3uI,EAAQ6vI,GAAO7vI,GAASnoD,MAgCjC8tM,GAAexJ,IAAe,SAAStkM,EAAQmoD,EAAQr0B,EAAUujK,GACnEP,GAAW3uI,EAAQ6vI,GAAO7vI,GAASnoD,EAAQq3L,MA+BzC0W,GAAazJ,IAAe,SAAStkM,EAAQmoD,EAAQr0B,EAAUujK,GACjEP,GAAW3uI,EAAQvzC,GAAKuzC,GAASnoD,EAAQq3L,MAoBvC2W,GAAK5uC,GAAS23B,IA8DlB,IAAI7+D,GAAWooE,IAAS,SAAStgM,EAAQwkM,GACvCxkM,EAASxE,GAAOwE,GAEhB,IAAIyH,GAAS,EACTlM,EAASipM,EAAQjpM,OACjBkpM,EAAQlpM,EAAS,EAAIipM,EAAQ,GAAKjmM,EAMtC,IAJIkmM,GAASC,GAAeF,EAAQ,GAAIA,EAAQ,GAAIC,KAClDlpM,EAAS,KAGFkM,EAAQlM,GAMf,IALA,IAAI4sD,EAASq8I,EAAQ/8L,GACjBvG,EAAQ82L,GAAO7vI,GACf8lJ,GAAc,EACdC,EAAchtM,EAAM3F,SAEf0yM,EAAaC,GAAa,CACjC,IAAIruM,EAAMqB,EAAM+sM,GACZ1uM,EAAQS,EAAOH,IAEfN,IAAUhB,GACT+3L,GAAG/2L,EAAO6xL,GAAYvxL,MAAUnE,GAAeC,KAAKqE,EAAQH,MAC/DG,EAAOH,GAAOsoD,EAAOtoD,IAK3B,OAAOG,KAsBLmuM,GAAe7N,IAAS,SAASzuL,GAEnC,OADAA,EAAKhW,KAAK0C,EAAWqqM,IACd7gM,GAAMopC,GAAW5yC,EAAWsT,MAgSrC,SAAS1S,GAAIa,EAAQmmE,EAAMxqC,GACzB,IAAI74B,EAAmB,MAAV9C,EAAiBzB,EAAYm8L,GAAQ16L,EAAQmmE,GAC1D,OAAOrjE,IAAWvE,EAAYo9B,EAAe74B,EA4D/C,SAAS6hD,GAAM3kD,EAAQmmE,GACrB,OAAiB,MAAVnmE,GAAkBipM,GAAQjpM,EAAQmmE,EAAMk1H,IAqBjD,IAAI5lH,GAASoxH,IAAe,SAAS/jM,EAAQvD,EAAOM,GACrC,MAATN,GACyB,mBAAlBA,EAAM8R,WACf9R,EAAQkyL,GAAqB91L,KAAK4D,IAGpCuD,EAAOvD,GAASM,IACfghM,GAASxe,KA4BR+rB,GAAWvH,IAAe,SAAS/jM,EAAQvD,EAAOM,GACvC,MAATN,GACyB,mBAAlBA,EAAM8R,WACf9R,EAAQkyL,GAAqB91L,KAAK4D,IAGhC7D,GAAeC,KAAKmH,EAAQvD,GAC9BuD,EAAOvD,GAAO1D,KAAKgE,GAEnBiD,EAAOvD,GAAS,CAACM,KAElBy/L,IAoBC5wL,GAAS4xL,GAASzE,IA8BtB,SAASjnL,GAAK5U,GACZ,OAAOgoC,GAAYhoC,GAAUq1L,GAAcr1L,GAAUg+L,GAASh+L,GA0BhE,SAASg4L,GAAOh4L,GACd,OAAOgoC,GAAYhoC,GAAUq1L,GAAcr1L,GAAQ,GAAQk+L,GAAWl+L,GAuGxE,IAAIixC,GAAQqzJ,IAAe,SAAStkM,EAAQmoD,EAAQr0B,GAClD4qK,GAAU1+L,EAAQmoD,EAAQr0B,MAkCxBqd,GAAYmzJ,IAAe,SAAStkM,EAAQmoD,EAAQr0B,EAAUujK,GAChEqH,GAAU1+L,EAAQmoD,EAAQr0B,EAAUujK,MAuBlCgX,GAAOjvC,IAAS,SAASp/J,EAAQuyE,GACnC,IAAIzvE,EAAS,GACb,GAAc,MAAV9C,EACF,OAAO8C,EAET,IAAIw0L,GAAS,EACb/kH,EAAQk8G,GAASl8G,GAAO,SAASpM,GAG/B,OAFAA,EAAOw0H,GAASx0H,EAAMnmE,GACtBs3L,IAAWA,EAASnxH,EAAK5qE,OAAS,GAC3B4qE,KAET2wH,GAAW92L,EAAQ84L,GAAa94L,GAAS8C,GACrCw0L,IACFx0L,EAASq0L,GAAUr0L,EAAQoiL,EAAkBC,EAAkBC,EAAoByjB,KAGrF,IADA,IAAIttM,EAASg3E,EAAMh3E,OACZA,KACL6kM,GAAUt9L,EAAQyvE,EAAMh3E,IAE1B,OAAOuH,KA4CT,IAAIq8J,GAAOC,IAAS,SAASp/J,EAAQuyE,GACnC,OAAiB,MAAVvyE,EAAiB,GAtlT1B,SAAkBA,EAAQuyE,GACxB,OAAOytH,GAAWhgM,EAAQuyE,GAAO,SAAShzE,EAAO4mE,GAC/C,OAAOxhB,GAAM3kD,EAAQmmE,MAolTM+4F,CAASl/J,EAAQuyE,MAqBhD,SAAS+7H,GAAOtuM,EAAQ87C,GACtB,GAAc,MAAV97C,EACF,MAAO,GAET,IAAIkB,EAAQutL,GAASqK,GAAa94L,IAAS,SAASmkB,GAClD,MAAO,CAACA,MAGV,OADA23B,EAAYwjJ,GAAYxjJ,GACjBkkJ,GAAWhgM,EAAQkB,GAAO,SAAS3B,EAAO4mE,GAC/C,OAAOrqB,EAAUv8C,EAAO4mE,EAAK,OA4IjC,IAAIooI,GAAUtG,GAAcrzL,IA0BxB45L,GAAYvG,GAAcjQ,IA4K9B,SAAS1uK,GAAOtpB,GACd,OAAiB,MAAVA,EAAiB,GAAK2vL,GAAW3vL,EAAQ4U,GAAK5U,IAkNvD,IAAIyuM,GAAY7J,IAAiB,SAAS9hM,EAAQ4rM,EAAMjnM,GAEtD,OADAinM,EAAOA,EAAKrmM,cACLvF,GAAU2E,EAAQknM,GAAWD,GAAQA,MAkB9C,SAASC,GAAWxgK,GAClB,OAAOygK,GAAWv9L,GAAS88B,GAAQ9lC,eAqBrC,SAASy8L,GAAO32J,GAEd,OADAA,EAAS98B,GAAS88B,KACDA,EAAO7lC,QAAQmiL,GAASwF,IAAc3nL,QAAQ6jL,GAAa,IAsH9E,IAAI0iB,GAAYjK,IAAiB,SAAS9hM,EAAQ4rM,EAAMjnM,GACtD,OAAO3E,GAAU2E,EAAQ,IAAM,IAAMinM,EAAKrmM,iBAuBxCymM,GAAYlK,IAAiB,SAAS9hM,EAAQ4rM,EAAMjnM,GACtD,OAAO3E,GAAU2E,EAAQ,IAAM,IAAMinM,EAAKrmM,iBAoBxC0mM,GAAapK,GAAgB,eA0NjC,IAAIqK,GAAYpK,IAAiB,SAAS9hM,EAAQ4rM,EAAMjnM,GACtD,OAAO3E,GAAU2E,EAAQ,IAAM,IAAMinM,EAAKrmM,iBAgE5C,IAAI4mM,GAAYrK,IAAiB,SAAS9hM,EAAQ4rM,EAAMjnM,GACtD,OAAO3E,GAAU2E,EAAQ,IAAM,IAAMmnM,GAAWF,MAkiBlD,IAAIQ,GAAYtK,IAAiB,SAAS9hM,EAAQ4rM,EAAMjnM,GACtD,OAAO3E,GAAU2E,EAAQ,IAAM,IAAMinM,EAAK72H,iBAoBxC+2H,GAAajK,GAAgB,eAqBjC,SAASE,GAAM12J,EAAQ64G,EAASy9C,GAI9B,OAHAt2J,EAAS98B,GAAS88B,IAClB64G,EAAUy9C,EAAQlmM,EAAYyoJ,KAEdzoJ,EAxvbpB,SAAwB4vC,GACtB,OAAOo+I,GAAiB/uK,KAAK2wB,GAwvblBghK,CAAehhK,GA5hb5B,SAAsBA,GACpB,OAAOA,EAAO5mC,MAAM8kL,KAAkB,GA2hbF+iB,CAAajhK,GA/ncnD,SAAoBA,GAClB,OAAOA,EAAO5mC,MAAMyiL,KAAgB,GA8ncuBqlB,CAAWlhK,GAE7DA,EAAO5mC,MAAMy/I,IAAY,GA2BlC,IAAIj9H,GAAUu2K,IAAS,SAASznI,EAAMhnD,GACpC,IACE,OAAO9J,GAAM8wD,EAAMt6D,EAAWsT,GAC9B,MAAOtV,GACP,OAAOmgC,GAAQngC,GAAKA,EAAI,IAAImB,GAAMnB,OA8BlC+yM,GAAUlwC,IAAS,SAASp/J,EAAQuvM,GAKtC,OAJAnhB,GAAUmhB,GAAa,SAAS1vM,GAC9BA,EAAM+6L,GAAM/6L,GACZ02L,GAAgBv2L,EAAQH,EAAKC,GAAKE,EAAOH,GAAMG,OAE1CA,KAqGT,SAAS6gM,GAASthM,GAChB,OAAO,WACL,OAAOA,GAkDX,IAAIiwM,GAAOrK,KAuBPsK,GAAYtK,IAAW,GAkB3B,SAAS9iB,GAAS9iL,GAChB,OAAOA,EA6CT,SAAS2uL,GAASr1H,GAChB,OAAOglI,GAA4B,mBAARhlI,EAAqBA,EAAOs+H,GAAUt+H,EAAMqsH,IAyFzE,IAAIz8K,GAAS63L,IAAS,SAASn6H,EAAMt0D,GACnC,OAAO,SAAS7R,GACd,OAAO67L,GAAW77L,EAAQmmE,EAAMt0D,OA2BhC69L,GAAWpP,IAAS,SAAStgM,EAAQ6R,GACvC,OAAO,SAASs0D,GACd,OAAO01H,GAAW77L,EAAQmmE,EAAMt0D,OAwCpC,SAASgwC,GAAM7hD,EAAQmoD,EAAQpiD,GAC7B,IAAI7E,EAAQ0T,GAAKuzC,GACbonJ,EAAc9U,GAActyI,EAAQjnD,GAEzB,MAAX6E,GACEoP,GAASgzC,KAAYonJ,EAAYh0M,SAAW2F,EAAM3F,UACtDwK,EAAUoiD,EACVA,EAASnoD,EACTA,EAAS6L,KACT0jM,EAAc9U,GAActyI,EAAQvzC,GAAKuzC,KAE3C,IAAI5B,IAAUpxC,GAASpP,IAAY,UAAWA,IAAcA,EAAQwgD,OAChEoxI,EAASjiG,GAAW11F,GAqBxB,OAnBAouL,GAAUmhB,GAAa,SAASp+L,GAC9B,IAAI0nD,EAAO1Q,EAAOh3C,GAClBnR,EAAOmR,GAAc0nD,EACjB8+H,IACF33L,EAAOvE,UAAU0V,GAAc,WAC7B,IAAIkjL,EAAWxoL,KAAK2oL,UACpB,GAAIjuI,GAAS8tI,EAAU,CACrB,IAAIvxL,EAAS9C,EAAO6L,KAAKyoL,aACrB/pD,EAAUznI,EAAOyxL,YAAc2B,GAAUrqL,KAAK0oL,aAIlD,OAFAhqD,EAAQ1uI,KAAK,CAAE,KAAQg9D,EAAM,KAAQrqD,UAAW,QAAWxO,IAC3D8C,EAAO0xL,UAAYH,EACZvxL,EAET,OAAO+1D,EAAK9wD,MAAM/H,EAAQ0uL,GAAU,CAAC7iL,KAAKtM,SAAUiP,iBAKnDxO,EAmCT,SAASs2G,MAiDT,IAAIq5F,GAAOzI,GAAWzY,IA0BlBmhB,GAAY1I,GAAWvmE,IA0BvBkvE,GAAW3I,GAAWxmE,IAwB1B,SAASzgI,GAASkmE,GAChB,OAAOy3F,GAAMz3F,GAAQ0oH,GAAa+L,GAAMz0H,IAt0X1C,SAA0BA,GACxB,OAAO,SAASnmE,GACd,OAAO06L,GAAQ16L,EAAQmmE,IAo0XwB2pI,CAAiB3pI,GAuEpE,IAAIgB,GAAQsM,KAsCRs8H,GAAat8H,IAAY,GAoB7B,SAASu1H,KACP,MAAO,GAgBT,SAASM,KACP,OAAO,EA+JT,IAAI3pJ,GAAMqnJ,IAAoB,SAASgJ,EAAQC,GAC7C,OAAOD,EAASC,IACf,GAuBCnjK,GAAOg7J,GAAY,QAiBnBoI,GAASlJ,IAAoB,SAASmJ,EAAUC,GAClD,OAAOD,EAAWC,IACjB,GAuBCziK,GAAQm6J,GAAY,SAwKxB,IAgaM3/I,GAhaFkoJ,GAAWrJ,IAAoB,SAASsJ,EAAYC,GACtD,OAAOD,EAAaC,IACnB,GAuBCtrE,GAAQ6iE,GAAY,SAiBpB1nJ,GAAW4mJ,IAAoB,SAASwJ,EAASC,GACnD,OAAOD,EAAUC,IAChB,GAgmBH,OA1iBA3c,GAAOj+I,MAv4MP,SAAe91C,EAAG84D,GAChB,GAAmB,mBAARA,EACT,MAAM,IAAIh4D,GAAUikL,GAGtB,OADA/kL,EAAI43F,GAAU53F,GACP,WACL,KAAMA,EAAI,EACR,OAAO84D,EAAK9wD,MAAM8D,KAAM2C,aAi4M9BslL,GAAOkS,IAAMA,GACblS,GAAO5yJ,OAASA,GAChB4yJ,GAAO+Z,SAAWA,GAClB/Z,GAAOga,aAAeA,GACtBha,GAAOia,WAAaA,GACpBja,GAAOka,GAAKA,GACZla,GAAOh2H,OAASA,GAChBg2H,GAAOh0L,KAAOA,GACdg0L,GAAOwb,QAAUA,GACjBxb,GAAO+X,QAAUA,GACjB/X,GAAO4c,UAr6KP,WACE,IAAKliM,UAAUjT,OACb,MAAO,GAET,IAAIgE,EAAQiP,UAAU,GACtB,OAAO/L,GAAQlD,GAASA,EAAQ,CAACA,IAi6KnCu0L,GAAOvtI,MAAQA,GACfutI,GAAO/1L,MAn+SP,SAAeq2B,EAAOzB,EAAM8xK,GAExB9xK,GADG8xK,EAAQC,GAAetwK,EAAOzB,EAAM8xK,GAAS9xK,IAASp0B,GAClD,EAEAs0L,GAAUl7F,GAAUhlE,GAAO,GAEpC,IAAIp3B,EAAkB,MAAT64B,EAAgB,EAAIA,EAAM74B,OACvC,IAAKA,GAAUo3B,EAAO,EACpB,MAAO,GAMT,IAJA,IAAIlrB,EAAQ,EACR6mL,EAAW,EACXxrL,EAASN,EAAM8vL,GAAW/2L,EAASo3B,IAEhClrB,EAAQlM,GACbuH,EAAOwrL,KAAcyS,GAAU3sK,EAAO3sB,EAAQA,GAASkrB,GAEzD,OAAO7vB,GAm9STgxL,GAAO6c,QAj8SP,SAAiBv8K,GAMf,IALA,IAAI3sB,GAAS,EACTlM,EAAkB,MAAT64B,EAAgB,EAAIA,EAAM74B,OACnC+yL,EAAW,EACXxrL,EAAS,KAEJ2E,EAAQlM,GAAQ,CACvB,IAAIgE,EAAQ60B,EAAM3sB,GACdlI,IACFuD,EAAOwrL,KAAc/uL,GAGzB,OAAOuD,GAs7STgxL,GAAO3rL,OA75SP,WACE,IAAI5M,EAASiT,UAAUjT,OACvB,IAAKA,EACH,MAAO,GAMT,IAJA,IAAIsW,EAAOrP,EAAMjH,EAAS,GACtB64B,EAAQ5lB,UAAU,GAClB/G,EAAQlM,EAELkM,KACLoK,EAAKpK,EAAQ,GAAK+G,UAAU/G,GAE9B,OAAOinL,GAAUjsL,GAAQ2xB,GAAS8hK,GAAU9hK,GAAS,CAACA,GAAQ+lK,GAAYtoL,EAAM,KAk5SlFiiL,GAAO/rC,KAlsCP,SAAc4xC,GACZ,IAAIp+L,EAAkB,MAATo+L,EAAgB,EAAIA,EAAMp+L,OACnCurM,EAAaxH,KASjB,OAPA3F,EAASp+L,EAAckzL,GAASkL,GAAO,SAASqO,GAC9C,GAAsB,mBAAXA,EAAK,GACd,MAAM,IAAInnM,GAAUikL,GAEtB,MAAO,CAACgiB,EAAWkB,EAAK,IAAKA,EAAK,OAJlB,GAOX1H,IAAS,SAASzuL,GAEvB,IADA,IAAIpK,GAAS,IACJA,EAAQlM,GAAQ,CACvB,IAAIysM,EAAOrO,EAAMlyL,GACjB,GAAIM,GAAMigM,EAAK,GAAIn8L,KAAMgG,GACvB,OAAO9J,GAAMigM,EAAK,GAAIn8L,KAAMgG,QAmrCpCiiL,GAAO8c,SArpCP,SAAkBzoJ,GAChB,OA33YF,SAAsBA,GACpB,IAAIjnD,EAAQ0T,GAAKuzC,GACjB,OAAO,SAASnoD,GACd,OAAOg5L,GAAeh5L,EAAQmoD,EAAQjnD,IAw3YjC2vM,CAAa1Z,GAAUhvI,EAAQ+8H,KAqpCxC4O,GAAO+M,SAAWA,GAClB/M,GAAOtwI,QAAUA,GACjBswI,GAAOl0L,OAzsHP,SAAgBnE,EAAWkhE,GACzB,IAAI75D,EAASqxL,GAAW14L,GACxB,OAAqB,MAAdkhE,EAAqB75D,EAAS+zL,GAAW/zL,EAAQ65D,IAwsH1Dm3H,GAAOgd,MA5sMP,SAASA,EAAMj4I,EAAMotI,EAAOxB,GAE1B,IAAI3hM,EAASqlM,GAAWtvI,EAAM6sH,EAAiBnnL,EAAWA,EAAWA,EAAWA,EAAWA,EAD3F0nM,EAAQxB,EAAQlmM,EAAY0nM,GAG5B,OADAnjM,EAAOk6G,YAAc8zF,EAAM9zF,YACpBl6G,GAysMTgxL,GAAOid,WAhqMP,SAASA,EAAWl4I,EAAMotI,EAAOxB,GAE/B,IAAI3hM,EAASqlM,GAAWtvI,EAAM8sH,EAAuBpnL,EAAWA,EAAWA,EAAWA,EAAWA,EADjG0nM,EAAQxB,EAAQlmM,EAAY0nM,GAG5B,OADAnjM,EAAOk6G,YAAc+zF,EAAW/zF,YACzBl6G,GA6pMTgxL,GAAO73E,SAAWA,GAClB63E,GAAO57D,SAAWA,GAClB47D,GAAOqa,aAAeA,GACtBra,GAAOnkK,MAAQA,GACfmkK,GAAOj7J,MAAQA,GACfi7J,GAAOsW,WAAaA,GACpBtW,GAAOuW,aAAeA,GACtBvW,GAAOwW,eAAiBA,GACxBxW,GAAOkd,KArySP,SAAc58K,EAAOr0B,EAAG0kM,GACtB,IAAIlpM,EAAkB,MAAT64B,EAAgB,EAAIA,EAAM74B,OACvC,OAAKA,EAIEwlM,GAAU3sK,GADjBr0B,EAAK0kM,GAAS1kM,IAAMxB,EAAa,EAAIo5F,GAAU53F,IACnB,EAAI,EAAIA,EAAGxE,GAH9B,IAmySXu4L,GAAOmd,UApwSP,SAAmB78K,EAAOr0B,EAAG0kM,GAC3B,IAAIlpM,EAAkB,MAAT64B,EAAgB,EAAIA,EAAM74B,OACvC,OAAKA,EAKEwlM,GAAU3sK,EAAO,GADxBr0B,EAAIxE,GADJwE,EAAK0kM,GAAS1kM,IAAMxB,EAAa,EAAIo5F,GAAU53F,KAEhB,EAAI,EAAIA,GAJ9B,IAkwSX+zL,GAAOod,eAxtSP,SAAwB98K,EAAO0nB,GAC7B,OAAQ1nB,GAASA,EAAM74B,OACnB+mM,GAAUluK,EAAOkrK,GAAYxjJ,EAAW,IAAI,GAAM,GAClD,IAstSNg4I,GAAOqd,UAhrSP,SAAmB/8K,EAAO0nB,GACxB,OAAQ1nB,GAASA,EAAM74B,OACnB+mM,GAAUluK,EAAOkrK,GAAYxjJ,EAAW,IAAI,GAC5C,IA8qSNg4I,GAAOvwD,KA9oSP,SAAcnvG,EAAO70B,EAAOwhC,EAAO0F,GACjC,IAAIlrC,EAAkB,MAAT64B,EAAgB,EAAIA,EAAM74B,OACvC,OAAKA,GAGDwlC,GAAyB,iBAATA,GAAqB2jK,GAAetwK,EAAO70B,EAAOwhC,KACpEA,EAAQ,EACR0F,EAAMlrC,GAnuIV,SAAkB64B,EAAO70B,EAAOwhC,EAAO0F,GACrC,IAAIlrC,EAAS64B,EAAM74B,OAWnB,KATAwlC,EAAQ42D,GAAU52D,IACN,IACVA,GAASA,EAAQxlC,EAAS,EAAKA,EAASwlC,IAE1C0F,EAAOA,IAAQloC,GAAakoC,EAAMlrC,EAAUA,EAASo8F,GAAUlxD,IACrD,IACRA,GAAOlrC,GAETkrC,EAAM1F,EAAQ0F,EAAM,EAAI6sF,GAAS7sF,GAC1B1F,EAAQ0F,GACbrS,EAAM2M,KAAWxhC,EAEnB,OAAO60B,EAstIAg9K,CAASh9K,EAAO70B,EAAOwhC,EAAO0F,IAN5B,IA4oSXqtJ,GAAOnvK,OA9tOP,SAAgB4vB,EAAYuH,GAE1B,OADWr5C,GAAQ8xC,GAAcksF,GAAcy5D,IACnC3lJ,EAAY+qJ,GAAYxjJ,EAAW,KA6tOjDg4I,GAAO7vI,QA1oOP,SAAiB1P,EAAY25I,GAC3B,OAAOiM,GAAYp1L,GAAIwvC,EAAY25I,GAAW,IA0oOhD4F,GAAOud,YAnnOP,SAAqB98J,EAAY25I,GAC/B,OAAOiM,GAAYp1L,GAAIwvC,EAAY25I,GAAWnwB,IAmnOhD+1B,GAAOwd,aA3lOP,SAAsB/8J,EAAY25I,EAAU/wI,GAE1C,OADAA,EAAQA,IAAU5+C,EAAY,EAAIo5F,GAAUx6C,GACrCg9I,GAAYp1L,GAAIwvC,EAAY25I,GAAW/wI,IA0lOhD22I,GAAO92I,QAAUA,GACjB82I,GAAOyd,YAtgSP,SAAqBn9K,GAEnB,OADsB,MAATA,EAAgB,EAAIA,EAAM74B,QACvB4+L,GAAY/lK,EAAO2pI,GAAY,IAqgSjD+1B,GAAO0d,aA9+RP,SAAsBp9K,EAAO+oB,GAE3B,OADsB,MAAT/oB,EAAgB,EAAIA,EAAM74B,QAKhC4+L,GAAY/lK,EADnB+oB,EAAQA,IAAU5+C,EAAY,EAAIo5F,GAAUx6C,IAFnC,IA4+RX22I,GAAOj5I,KA57LP,SAAcge,GACZ,OAAOsvI,GAAWtvI,EAAMmtH,IA47L1B8N,GAAO0b,KAAOA,GACd1b,GAAO2b,UAAYA,GACnB3b,GAAO2d,UA19RP,SAAmB9X,GAKjB,IAJA,IAAIlyL,GAAS,EACTlM,EAAkB,MAATo+L,EAAgB,EAAIA,EAAMp+L,OACnCuH,EAAS,KAEJ2E,EAAQlM,GAAQ,CACvB,IAAIysM,EAAOrO,EAAMlyL,GACjB3E,EAAOklM,EAAK,IAAMA,EAAK,GAEzB,OAAOllM,GAk9RTgxL,GAAO4d,UA96GP,SAAmB1xM,GACjB,OAAiB,MAAVA,EAAiB,GAAKy6L,GAAcz6L,EAAQ4U,GAAK5U,KA86G1D8zL,GAAO6d,YAp5GP,SAAqB3xM,GACnB,OAAiB,MAAVA,EAAiB,GAAKy6L,GAAcz6L,EAAQg4L,GAAOh4L,KAo5G5D8zL,GAAOtvI,QAAUA,GACjBsvI,GAAOlzC,QA34RP,SAAiBxsH,GAEf,OADsB,MAATA,EAAgB,EAAIA,EAAM74B,QACvBwlM,GAAU3sK,EAAO,GAAI,GAAK,IA04R5C0/J,GAAOyW,aAAeA,GACtBzW,GAAO2W,eAAiBA,GACxB3W,GAAO4W,iBAAmBA,GAC1B5W,GAAOr+G,OAASA,GAChBq+G,GAAOsa,SAAWA,GAClBta,GAAO4X,UAAYA,GACnB5X,GAAO5F,SAAWA,GAClB4F,GAAO6X,MAAQA,GACf7X,GAAOl/K,KAAOA,GACdk/K,GAAOkE,OAASA,GAChBlE,GAAO/uL,IAAMA,GACb+uL,GAAO/sI,QA7pGP,SAAiB/mD,EAAQkuL,GACvB,IAAIprL,EAAS,GAMb,OALAorL,EAAWoR,GAAYpR,EAAU,GAEjC2L,GAAW75L,GAAQ,SAAST,EAAOM,EAAKG,GACtCu2L,GAAgBzzL,EAAQorL,EAAS3uL,EAAOM,EAAKG,GAAST,MAEjDuD,GAupGTgxL,GAAO8d,UAxnGP,SAAmB5xM,EAAQkuL,GACzB,IAAIprL,EAAS,GAMb,OALAorL,EAAWoR,GAAYpR,EAAU,GAEjC2L,GAAW75L,GAAQ,SAAST,EAAOM,EAAKG,GACtCu2L,GAAgBzzL,EAAQjD,EAAKquL,EAAS3uL,EAAOM,EAAKG,OAE7C8C,GAknGTgxL,GAAOp1K,QAlgCP,SAAiBypC,GACf,OAAO41I,GAAY5G,GAAUhvI,EAAQ+8H,KAkgCvC4O,GAAO+d,gBAr+BP,SAAyB1rI,EAAMy3H,GAC7B,OAAOE,GAAoB33H,EAAMgxH,GAAUyG,EAAU1Y,KAq+BvD4O,GAAOp3H,QAAUA,GACjBo3H,GAAO7iJ,MAAQA,GACf6iJ,GAAO3iJ,UAAYA,GACnB2iJ,GAAOrrL,OAASA,GAChBqrL,GAAO4b,SAAWA,GAClB5b,GAAOjyI,MAAQA,GACfiyI,GAAO54E,OAASA,GAChB44E,GAAOge,OA9yBP,SAAgB/xM,GAEd,OADAA,EAAI43F,GAAU53F,GACPugM,IAAS,SAASzuL,GACvB,OAAOqtL,GAAQrtL,EAAM9R,OA4yBzB+zL,GAAOua,KAAOA,GACdva,GAAOie,OAt/FP,SAAgB/xM,EAAQ87C,GACtB,OAAOwyJ,GAAOtuM,EAAQk7G,GAAOokF,GAAYxjJ,MAs/F3Cg4I,GAAOr5F,KAh2LP,SAAc5hC,GACZ,OAAOiF,GAAO,EAAGjF,IAg2LnBi7H,GAAOke,QAx2NP,SAAiBz9J,EAAY6qJ,EAAWC,EAAQoF,GAC9C,OAAkB,MAAdlwJ,EACK,IAEJ9xC,GAAQ28L,KACXA,EAAyB,MAAbA,EAAoB,GAAK,CAACA,IAGnC38L,GADL48L,EAASoF,EAAQlmM,EAAY8gM,KAE3BA,EAAmB,MAAVA,EAAiB,GAAK,CAACA,IAE3BF,GAAY5qJ,EAAY6qJ,EAAWC,KA81N5CvL,GAAO6b,KAAOA,GACd7b,GAAOkZ,SAAWA,GAClBlZ,GAAO8b,UAAYA,GACnB9b,GAAO+b,SAAWA,GAClB/b,GAAOqZ,QAAUA,GACjBrZ,GAAOsZ,aAAeA,GACtBtZ,GAAO8X,UAAYA,GACnB9X,GAAO30B,KAAOA,GACd20B,GAAOwa,OAASA,GAChBxa,GAAO7zL,SAAWA,GAClB6zL,GAAOme,WA/rBP,SAAoBjyM,GAClB,OAAO,SAASmmE,GACd,OAAiB,MAAVnmE,EAAiBzB,EAAYm8L,GAAQ16L,EAAQmmE,KA8rBxD2tH,GAAO6W,KAAOA,GACd7W,GAAO8W,QAAUA,GACjB9W,GAAOoe,UAnqRP,SAAmB99K,EAAO9K,EAAQ4kK,GAChC,OAAQ95J,GAASA,EAAM74B,QAAU+tB,GAAUA,EAAO/tB,OAC9C2kM,GAAY9rK,EAAO9K,EAAQg2K,GAAYpR,EAAU,IACjD95J,GAiqRN0/J,GAAOqe,YAvoRP,SAAqB/9K,EAAO9K,EAAQuoB,GAClC,OAAQzd,GAASA,EAAM74B,QAAU+tB,GAAUA,EAAO/tB,OAC9C2kM,GAAY9rK,EAAO9K,EAAQ/qB,EAAWszC,GACtCzd,GAqoRN0/J,GAAO+W,OAASA,GAChB/W,GAAO3sH,MAAQA,GACf2sH,GAAOic,WAAaA,GACpBjc,GAAOuZ,MAAQA,GACfvZ,GAAOj3L,OA3tNP,SAAgB03C,EAAYuH,GAE1B,OADWr5C,GAAQ8xC,GAAcksF,GAAcy5D,IACnC3lJ,EAAY2mE,GAAOokF,GAAYxjJ,EAAW,MA0tNxDg4I,GAAO7jJ,OAxkRP,SAAgB7b,EAAO0nB,GACrB,IAAIh5C,EAAS,GACb,IAAMsxB,IAASA,EAAM74B,OACnB,OAAOuH,EAET,IAAI2E,GAAS,EACT+nE,EAAU,GACVj0E,EAAS64B,EAAM74B,OAGnB,IADAugD,EAAYwjJ,GAAYxjJ,EAAW,KAC1Br0C,EAAQlM,GAAQ,CACvB,IAAIgE,EAAQ60B,EAAM3sB,GACdq0C,EAAUv8C,EAAOkI,EAAO2sB,KAC1BtxB,EAAOjH,KAAK0D,GACZiwE,EAAQ3zE,KAAK4L,IAIjB,OADA04L,GAAW/rK,EAAOo7C,GACX1sE,GAujRTgxL,GAAO3uI,KArsLP,SAAc0T,EAAM93B,GAClB,GAAmB,mBAAR83B,EACT,MAAM,IAAIh4D,GAAUikL,GAGtB,OAAOwb,GAASznI,EADhB93B,EAAQA,IAAUxiC,EAAYwiC,EAAQ42D,GAAU52D,KAksLlD+yJ,GAAOrqJ,QAAUA,GACjBqqJ,GAAOse,WAnrNP,SAAoB79J,EAAYx0C,EAAG0kM,GAOjC,OALE1kM,GADG0kM,EAAQC,GAAenwJ,EAAYx0C,EAAG0kM,GAAS1kM,IAAMxB,GACpD,EAEAo5F,GAAU53F,IAEL0C,GAAQ8xC,GAAcyhJ,GAAkB0K,IACvCnsJ,EAAYx0C,IA6qN1B+zL,GAAO1vK,IA14FP,SAAapkB,EAAQmmE,EAAM5mE,GACzB,OAAiB,MAAVS,EAAiBA,EAASigM,GAAQjgM,EAAQmmE,EAAM5mE,IA04FzDu0L,GAAOue,QA/2FP,SAAiBryM,EAAQmmE,EAAM5mE,EAAO83L,GAEpC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAa94L,EAC3C,MAAVyB,EAAiBA,EAASigM,GAAQjgM,EAAQmmE,EAAM5mE,EAAO83L,IA82FhEvD,GAAOwe,QA7pNP,SAAiB/9J,GAEf,OADW9xC,GAAQ8xC,GAAc6hJ,GAAe0K,IACpCvsJ,IA4pNdu/I,GAAOtzL,MA/gRP,SAAe4zB,EAAO2M,EAAO0F,GAC3B,IAAIlrC,EAAkB,MAAT64B,EAAgB,EAAIA,EAAM74B,OACvC,OAAKA,GAGDkrC,GAAqB,iBAAPA,GAAmBi+J,GAAetwK,EAAO2M,EAAO0F,IAChE1F,EAAQ,EACR0F,EAAMlrC,IAGNwlC,EAAiB,MAATA,EAAgB,EAAI42D,GAAU52D,GACtC0F,EAAMA,IAAQloC,EAAYhD,EAASo8F,GAAUlxD,IAExCs6J,GAAU3sK,EAAO2M,EAAO0F,IAVtB,IA6gRXqtJ,GAAO9hJ,OAASA,GAChB8hJ,GAAOye,WAv1QP,SAAoBn+K,GAClB,OAAQA,GAASA,EAAM74B,OACnBymM,GAAe5tK,GACf,IAq1QN0/J,GAAO0e,aAl0QP,SAAsBp+K,EAAO85J,GAC3B,OAAQ95J,GAASA,EAAM74B,OACnBymM,GAAe5tK,EAAOkrK,GAAYpR,EAAU,IAC5C,IAg0QN4F,GAAOpvL,MA//DP,SAAeypC,EAAQyU,EAAWn6B,GAKhC,OAJIA,GAAyB,iBAATA,GAAqBi8K,GAAev2J,EAAQyU,EAAWn6B,KACzEm6B,EAAYn6B,EAAQlqB,IAEtBkqB,EAAQA,IAAUlqB,EAAYkoL,EAAmBh+J,IAAU,IAI3D0lB,EAAS98B,GAAS88B,MAEQ,iBAAbyU,GACO,MAAbA,IAAsBirI,GAASjrI,OAEpCA,EAAYs/I,GAAat/I,KACPytI,GAAWliJ,GACpB60J,GAAUnS,GAAc1iJ,GAAS,EAAG1lB,GAGxC0lB,EAAOzpC,MAAMk+C,EAAWn6B,GAZtB,IA0/DXqrK,GAAOxrK,OAtqLP,SAAgBuwC,EAAM93B,GACpB,GAAmB,mBAAR83B,EACT,MAAM,IAAIh4D,GAAUikL,GAGtB,OADA/jJ,EAAiB,MAATA,EAAgB,EAAI8xJ,GAAUl7F,GAAU52D,GAAQ,GACjDu/J,IAAS,SAASzuL,GACvB,IAAIuiB,EAAQviB,EAAKkvB,GACbwoK,EAAYvG,GAAUnxL,EAAM,EAAGkvB,GAKnC,OAHI3M,GACFs6J,GAAU6a,EAAWn1K,GAEhBrsB,GAAM8wD,EAAMhtD,KAAM09L,OA2pL7BzV,GAAO9rL,KAjzQP,SAAcosB,GACZ,IAAI74B,EAAkB,MAAT64B,EAAgB,EAAIA,EAAM74B,OACvC,OAAOA,EAASwlM,GAAU3sK,EAAO,EAAG74B,GAAU,IAgzQhDu4L,GAAOruI,KApxQP,SAAcrxB,EAAOr0B,EAAG0kM,GACtB,OAAMrwK,GAASA,EAAM74B,OAIdwlM,GAAU3sK,EAAO,GADxBr0B,EAAK0kM,GAAS1kM,IAAMxB,EAAa,EAAIo5F,GAAU53F,IAChB,EAAI,EAAIA,GAH9B,IAmxQX+zL,GAAO2e,UApvQP,SAAmBr+K,EAAOr0B,EAAG0kM,GAC3B,IAAIlpM,EAAkB,MAAT64B,EAAgB,EAAIA,EAAM74B,OACvC,OAAKA,EAKEwlM,GAAU3sK,GADjBr0B,EAAIxE,GADJwE,EAAK0kM,GAAS1kM,IAAMxB,EAAa,EAAIo5F,GAAU53F,KAEnB,EAAI,EAAIA,EAAGxE,GAJ9B,IAkvQXu4L,GAAO4e,eAxsQP,SAAwBt+K,EAAO0nB,GAC7B,OAAQ1nB,GAASA,EAAM74B,OACnB+mM,GAAUluK,EAAOkrK,GAAYxjJ,EAAW,IAAI,GAAO,GACnD,IAssQNg4I,GAAOnuI,UAhqQP,SAAmBvxB,EAAO0nB,GACxB,OAAQ1nB,GAASA,EAAM74B,OACnB+mM,GAAUluK,EAAOkrK,GAAYxjJ,EAAW,IACxC,IA8pQNg4I,GAAOluK,IAnsPP,SAAarmB,EAAOgsM,GAElB,OADAA,EAAYhsM,GACLA,GAksPTu0L,GAAO94B,SAjnLP,SAAkBniG,EAAMqgI,EAAMnzL,GAC5B,IAAIk1J,GAAU,EACVC,GAAW,EAEf,GAAmB,mBAARriG,EACT,MAAM,IAAIh4D,GAAUikL,GAMtB,OAJI3vK,GAASpP,KACXk1J,EAAU,YAAal1J,IAAYA,EAAQk1J,QAAUA,EACrDC,EAAW,aAAcn1J,IAAYA,EAAQm1J,SAAWA,GAEnDj/C,GAASpjD,EAAMqgI,EAAM,CAC1B,QAAWj+B,EACX,QAAWi+B,EACX,SAAYh+B,KAomLhB44B,GAAOwR,KAAOA,GACdxR,GAAOtqJ,QAAUA,GACjBsqJ,GAAOya,QAAUA,GACjBza,GAAO0a,UAAYA,GACnB1a,GAAO6e,OArfP,SAAgBpzM,GACd,OAAIkD,GAAQlD,GACHkvL,GAASlvL,EAAOq7L,IAElB98B,GAASv+J,GAAS,CAACA,GAAS22L,GAAUr4B,GAAaxsJ,GAAS9R,MAkfrEu0L,GAAOkL,cAAgBA,GACvBlL,GAAOpiH,UA7yFP,SAAmB1xE,EAAQkuL,EAAUC,GACnC,IAAIoH,EAAQ9yL,GAAQzC,GAChB4yM,EAAYrd,GAAS3gD,GAAS50I,IAAWguL,GAAahuL,GAG1D,GADAkuL,EAAWoR,GAAYpR,EAAU,GACd,MAAfC,EAAqB,CACvB,IAAIiK,EAAOp4L,GAAUA,EAAO8K,YAE1BqjL,EADEykB,EACYrd,EAAQ,IAAI6C,EAAO,GAE1BjjL,GAASnV,IACF01F,GAAW0iG,GAAQjE,GAAWtC,GAAa7xL,IAG3C,GAMlB,OAHC4yM,EAAYxkB,GAAYyL,IAAY75L,GAAQ,SAAST,EAAOkI,EAAOzH,GAClE,OAAOkuL,EAASC,EAAa5uL,EAAOkI,EAAOzH,MAEtCmuL,GA0xFT2F,GAAO+e,MAxlLP,SAAeh6I,GACb,OAAOmtI,GAAIntI,EAAM,IAwlLnBi7H,GAAO7zI,MAAQA,GACf6zI,GAAOgX,QAAUA,GACjBhX,GAAOiX,UAAYA,GACnBjX,GAAOgf,KAxkQP,SAAc1+K,GACZ,OAAQA,GAASA,EAAM74B,OAAU4mM,GAAS/tK,GAAS,IAwkQrD0/J,GAAOif,OA9iQP,SAAgB3+K,EAAO85J,GACrB,OAAQ95J,GAASA,EAAM74B,OAAU4mM,GAAS/tK,EAAOkrK,GAAYpR,EAAU,IAAM,IA8iQ/E4F,GAAOkf,SAvhQP,SAAkB5+K,EAAOyd,GAEvB,OADAA,EAAkC,mBAAdA,EAA2BA,EAAatzC,EACpD61B,GAASA,EAAM74B,OAAU4mM,GAAS/tK,EAAO71B,EAAWszC,GAAc,IAshQ5EiiJ,GAAOpsG,MAnwFP,SAAe1nF,EAAQmmE,GACrB,OAAiB,MAAVnmE,GAAwBogM,GAAUpgM,EAAQmmE,IAmwFnD2tH,GAAOkX,MAAQA,GACflX,GAAOoX,UAAYA,GACnBpX,GAAO3jJ,OAvuFP,SAAgBnwC,EAAQmmE,EAAMhjC,GAC5B,OAAiB,MAAVnjC,EAAiBA,EAASqiM,GAAWriM,EAAQmmE,EAAM28H,GAAa3/J,KAuuFzE2wJ,GAAOmf,WA5sFP,SAAoBjzM,EAAQmmE,EAAMhjC,EAASk0J,GAEzC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAa94L,EAC3C,MAAVyB,EAAiBA,EAASqiM,GAAWriM,EAAQmmE,EAAM28H,GAAa3/J,GAAUk0J,IA2sFnFvD,GAAOxqK,OAASA,GAChBwqK,GAAOof,SAnpFP,SAAkBlzM,GAChB,OAAiB,MAAVA,EAAiB,GAAK2vL,GAAW3vL,EAAQg4L,GAAOh4L,KAmpFzD8zL,GAAOqX,QAAUA,GACjBrX,GAAO+Q,MAAQA,GACf/Q,GAAOj0J,KA9kLP,SAActgC,EAAO+kI,GACnB,OAAO6oE,GAAQrK,GAAax+D,GAAU/kI,IA8kLxCu0L,GAAOsX,IAAMA,GACbtX,GAAOuX,MAAQA,GACfvX,GAAOwX,QAAUA,GACjBxX,GAAOjsI,IAAMA,GACbisI,GAAOqf,UAh1PP,SAAmBjyM,EAAOooB,GACxB,OAAOo5K,GAAcxhM,GAAS,GAAIooB,GAAU,GAAIktK,KAg1PlD1C,GAAOsf,cA9zPP,SAAuBlyM,EAAOooB,GAC5B,OAAOo5K,GAAcxhM,GAAS,GAAIooB,GAAU,GAAI22K,KA8zPlDnM,GAAOhsI,QAAUA,GAGjBgsI,GAAOhhK,QAAUy7K,GACjBza,GAAOuf,UAAY7E,GACnB1a,GAAO79F,OAAS43G,GAChB/Z,GAAOwf,WAAaxF,GAGpBjsJ,GAAMiyI,GAAQA,IAKdA,GAAOn0I,IAAMA,GACbm0I,GAAO/pK,QAAUA,GACjB+pK,GAAO2a,UAAYA,GACnB3a,GAAO6a,WAAaA,GACpB7a,GAAOhnJ,KAAOA,GACdgnJ,GAAOyf,MAvpFP,SAAevc,EAAQC,EAAOC,GAa5B,OAZIA,IAAU34L,IACZ24L,EAAQD,EACRA,EAAQ14L,GAEN24L,IAAU34L,IAEZ24L,GADAA,EAAQuQ,GAASvQ,KACCA,EAAQA,EAAQ,GAEhCD,IAAU14L,IAEZ04L,GADAA,EAAQwQ,GAASxQ,KACCA,EAAQA,EAAQ,GAE7Bd,GAAUsR,GAASzQ,GAASC,EAAOC,IA2oF5CpD,GAAOn2C,MAhiLP,SAAep+I,GACb,OAAO43L,GAAU53L,EAAO6lL,IAgiL1B0O,GAAO0f,UAv+KP,SAAmBj0M,GACjB,OAAO43L,GAAU53L,EAAO2lL,EAAkBE,IAu+K5C0O,GAAO2f,cAx8KP,SAAuBl0M,EAAO83L,GAE5B,OAAOF,GAAU53L,EAAO2lL,EAAkBE,EAD1CiS,EAAkC,mBAAdA,EAA2BA,EAAa94L,IAw8K9Du1L,GAAO4f,UAhgLP,SAAmBn0M,EAAO83L,GAExB,OAAOF,GAAU53L,EAAO6lL,EADxBiS,EAAkC,mBAAdA,EAA2BA,EAAa94L,IAggL9Du1L,GAAO6f,WA76KP,SAAoB3zM,EAAQmoD,GAC1B,OAAiB,MAAVA,GAAkB6wI,GAAeh5L,EAAQmoD,EAAQvzC,GAAKuzC,KA66K/D2rI,GAAOgR,OAASA,GAChBhR,GAAO8f,UAjwCP,SAAmBr0M,EAAOo8B,GACxB,OAAiB,MAATp8B,GAAiBA,GAAUA,EAASo8B,EAAep8B,GAiwC7Du0L,GAAOoc,OAASA,GAChBpc,GAAOv8F,SA57EP,SAAkBppD,EAAQhwC,EAAQyzE,GAChCzjC,EAAS98B,GAAS88B,GAClBhwC,EAAS+jM,GAAa/jM,GAEtB,IAAI5C,EAAS4yC,EAAO5yC,OAKhBkrC,EAJJmrC,EAAWA,IAAarzE,EACpBhD,EACA46L,GAAUx+F,GAAU/lB,GAAW,EAAGr2E,GAItC,OADAq2E,GAAYzzE,EAAO5C,SACA,GAAK4yC,EAAO3tC,MAAMoxE,EAAUnrC,IAAQtoC,GAk7EzD21L,GAAOwC,GAAKA,GACZxC,GAAOl1F,OAp5EP,SAAgBzwD,GAEd,OADAA,EAAS98B,GAAS88B,KACA86I,GAAmBzrK,KAAK2wB,GACtCA,EAAO7lC,QAAQygL,GAAiBmH,IAChC/hJ,GAi5EN2lJ,GAAO78F,aA/3EP,SAAsB9oD,GAEpB,OADAA,EAAS98B,GAAS88B,KACAs7I,GAAgBjsK,KAAK2wB,GACnCA,EAAO7lC,QAAQkhL,GAAc,QAC7Br7I,GA43EN2lJ,GAAO9nJ,MA35OP,SAAeuI,EAAYuH,EAAW2oJ,GACpC,IAAI5rI,EAAOp2D,GAAQ8xC,GAAcosF,GAAaq5D,GAI9C,OAHIyK,GAASC,GAAenwJ,EAAYuH,EAAW2oJ,KACjD3oJ,EAAYv9C,GAEPs6D,EAAKtkB,EAAY+qJ,GAAYxjJ,EAAW,KAu5OjDg4I,GAAO3uL,KAAOA,GACd2uL,GAAO5sI,UAAYA,GACnB4sI,GAAOptI,QAxvHP,SAAiB1mD,EAAQ87C,GACvB,OAAOgzI,GAAY9uL,EAAQs/L,GAAYxjJ,EAAW,GAAI+9I,KAwvHxD/F,GAAO/vI,SAAWA,GAClB+vI,GAAOxsI,cAAgBA,GACvBwsI,GAAOntI,YAptHP,SAAqB3mD,EAAQ87C,GAC3B,OAAOgzI,GAAY9uL,EAAQs/L,GAAYxjJ,EAAW,GAAIi+I,KAotHxDjG,GAAOnmJ,MAAQA,GACfmmJ,GAAO7tL,QAAUA,GACjB6tL,GAAO2X,aAAeA,GACtB3X,GAAO+f,MAxrHP,SAAe7zM,EAAQkuL,GACrB,OAAiB,MAAVluL,EACHA,EACAs6L,GAAQt6L,EAAQs/L,GAAYpR,EAAU,GAAI8J,KAsrHhDlE,GAAOggB,WAzpHP,SAAoB9zM,EAAQkuL,GAC1B,OAAiB,MAAVluL,EACHA,EACAw6L,GAAax6L,EAAQs/L,GAAYpR,EAAU,GAAI8J,KAupHrDlE,GAAOigB,OAxnHP,SAAgB/zM,EAAQkuL,GACtB,OAAOluL,GAAU65L,GAAW75L,EAAQs/L,GAAYpR,EAAU,KAwnH5D4F,GAAOkgB,YA3lHP,SAAqBh0M,EAAQkuL,GAC3B,OAAOluL,GAAU+5L,GAAgB/5L,EAAQs/L,GAAYpR,EAAU,KA2lHjE4F,GAAO30L,IAAMA,GACb20L,GAAOwZ,GAAKA,GACZxZ,GAAOyZ,IAAMA,GACbzZ,GAAOzvK,IA5+GP,SAAarkB,EAAQmmE,GACnB,OAAiB,MAAVnmE,GAAkBipM,GAAQjpM,EAAQmmE,EAAMi1H,KA4+GjDtH,GAAOnvI,MAAQA,GACfmvI,GAAOr1L,KAAOA,GACdq1L,GAAOzR,SAAWA,GAClByR,GAAOzmJ,SA/nOP,SAAkBkH,EAAYh1C,EAAOqgK,EAAW6kC,GAC9ClwJ,EAAavM,GAAYuM,GAAcA,EAAajrB,GAAOirB,GAC3DqrH,EAAaA,IAAc6kC,EAAS9sG,GAAUioE,GAAa,EAE3D,IAAIrkK,EAASg5C,EAAWh5C,OAIxB,OAHIqkK,EAAY,IACdA,EAAYizB,GAAUt3L,EAASqkK,EAAW,IAErCpjE,GAASjoD,GACXqrH,GAAarkK,GAAUg5C,EAAWtvC,QAAQ1F,EAAOqgK,IAAc,IAC7DrkK,GAAUgzL,GAAYh6I,EAAYh1C,EAAOqgK,IAAc,GAsnOhEk0B,GAAO7uL,QA7jSP,SAAiBmvB,EAAO70B,EAAOqgK,GAC7B,IAAIrkK,EAAkB,MAAT64B,EAAgB,EAAIA,EAAM74B,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIkM,EAAqB,MAAbm4J,EAAoB,EAAIjoE,GAAUioE,GAI9C,OAHIn4J,EAAQ,IACVA,EAAQorL,GAAUt3L,EAASkM,EAAO,IAE7B8mL,GAAYn6J,EAAO70B,EAAOkI,IAqjSnCqsL,GAAOmgB,QAroFP,SAAiBjd,EAAQj2J,EAAO0F,GAS9B,OARA1F,EAAQumK,GAASvmK,GACb0F,IAAQloC,GACVkoC,EAAM1F,EACNA,EAAQ,GAER0F,EAAM6gK,GAAS7gK,GA3qVnB,SAAqBuwJ,EAAQj2J,EAAO0F,GAClC,OAAOuwJ,GAAUlE,GAAU/xJ,EAAO0F,IAAQuwJ,EAASnE,GAAU9xJ,EAAO0F,GA6qV7DytK,CADPld,EAASyQ,GAASzQ,GACSj2J,EAAO0F,IA6nFpCqtJ,GAAOplL,OAASA,GAChBolL,GAAO2B,YAAcA,GACrB3B,GAAOrxL,QAAUA,GACjBqxL,GAAOtG,cAAgBA,GACvBsG,GAAO9rJ,YAAcA,GACrB8rJ,GAAOgL,kBAAoBA,GAC3BhL,GAAOqgB,UAzuKP,SAAmB50M,GACjB,OAAiB,IAAVA,IAA4B,IAAVA,GACtBw0L,GAAax0L,IAAUy7L,GAAWz7L,IAAUynL,GAwuKjD8M,GAAOl/C,SAAWA,GAClBk/C,GAAOpG,OAASA,GAChBoG,GAAOsgB,UAhrKP,SAAmB70M,GACjB,OAAOw0L,GAAax0L,IAA6B,IAAnBA,EAAMwvC,WAAmBgwJ,GAAcx/L,IAgrKvEu0L,GAAOvwI,QA5oKP,SAAiBhkD,GACf,GAAa,MAATA,EACF,OAAO,EAET,GAAIyoC,GAAYzoC,KACXkD,GAAQlD,IAA0B,iBAATA,GAA4C,mBAAhBA,EAAM2I,QAC1D0sI,GAASr1I,IAAUyuL,GAAazuL,IAAUk2L,GAAYl2L,IAC1D,OAAQA,EAAMhE,OAEhB,IAAIsL,EAAM6wL,GAAOn4L,GACjB,GAAIsH,GAAOygL,GAAUzgL,GAAO8gL,GAC1B,OAAQpoL,EAAMozB,KAEhB,GAAIsrK,GAAY1+L,GACd,OAAQy+L,GAASz+L,GAAOhE,OAE1B,IAAK,IAAIsE,KAAON,EACd,GAAI7D,GAAeC,KAAK4D,EAAOM,GAC7B,OAAO,EAGX,OAAO,GAwnKTi0L,GAAOjtH,QAzlKP,SAAiBtnE,EAAOkuC,GACtB,OAAOsuJ,GAAYx8L,EAAOkuC,IAylK5BqmJ,GAAOugB,YAtjKP,SAAqB90M,EAAOkuC,EAAO4pJ,GAEjC,IAAIv0L,GADJu0L,EAAkC,mBAAdA,EAA2BA,EAAa94L,GAClC84L,EAAW93L,EAAOkuC,GAASlvC,EACrD,OAAOuE,IAAWvE,EAAYw9L,GAAYx8L,EAAOkuC,EAAOlvC,EAAW84L,KAAgBv0L,GAojKrFgxL,GAAOp3J,QAAUA,GACjBo3J,GAAO3qK,SA7/JP,SAAkB5pB,GAChB,MAAuB,iBAATA,GAAqBmzL,GAAenzL,IA6/JpDu0L,GAAOp+F,WAAaA,GACpBo+F,GAAO0Z,UAAYA,GACnB1Z,GAAOqV,SAAWA,GAClBrV,GAAO/gK,MAAQA,GACf+gK,GAAOwgB,QA7zJP,SAAiBt0M,EAAQmoD,GACvB,OAAOnoD,IAAWmoD,GAAUs1I,GAAYz9L,EAAQmoD,EAAQo2I,GAAap2I,KA6zJvE2rI,GAAOygB,YA1xJP,SAAqBv0M,EAAQmoD,EAAQkvI,GAEnC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAa94L,EACrDk/L,GAAYz9L,EAAQmoD,EAAQo2I,GAAap2I,GAASkvI,IAyxJ3DvD,GAAO99F,MA1vJP,SAAez2F,GAIb,OAAOu3F,GAASv3F,IAAUA,IAAUA,GAuvJtCu0L,GAAO0gB,SA1tJP,SAAkBj1M,GAChB,GAAI8pM,GAAW9pM,GACb,MAAM,IAAI7B,GAAMmnL,GAElB,OAAO9kC,GAAaxgJ,IAutJtBu0L,GAAO2gB,MA3qJP,SAAel1M,GACb,OAAgB,MAATA,GA2qJTu0L,GAAOh0F,OApsJP,SAAgBvgG,GACd,OAAiB,OAAVA,GAosJTu0L,GAAOh9F,SAAWA,GAClBg9F,GAAO3+K,SAAWA,GAClB2+K,GAAOC,aAAeA,GACtBD,GAAOiL,cAAgBA,GACvBjL,GAAOjG,SAAWA,GAClBiG,GAAO4gB,cAxjJP,SAAuBn1M,GACrB,OAAOiuM,GAAUjuM,IAAUA,IAAU69D,GAAoB79D,GAAS69D,GAwjJpE02H,GAAOp0I,MAAQA,GACfo0I,GAAOt3F,SAAWA,GAClBs3F,GAAOh2B,SAAWA,GAClBg2B,GAAO9F,aAAeA,GACtB8F,GAAO6gB,YAt9IP,SAAqBp1M,GACnB,OAAOA,IAAUhB,GAs9InBu1L,GAAO8gB,UAl8IP,SAAmBr1M,GACjB,OAAOw0L,GAAax0L,IAAUm4L,GAAOn4L,IAAUuoL,IAk8IjDgM,GAAO+gB,UA96IP,SAAmBt1M,GACjB,OAAOw0L,GAAax0L,IAAUy7L,GAAWz7L,IAAUwoL,IA86IrD+L,GAAO1rL,KAx9RP,SAAcgsB,EAAOwuB,GACnB,OAAgB,MAATxuB,EAAgB,GAAKu+J,GAAWh3L,KAAKy4B,EAAOwuB,IAw9RrDkxI,GAAO+a,UAAYA,GACnB/a,GAAOzrK,KAAOA,GACdyrK,GAAOvmJ,YA/6RP,SAAqBnZ,EAAO70B,EAAOqgK,GACjC,IAAIrkK,EAAkB,MAAT64B,EAAgB,EAAIA,EAAM74B,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIkM,EAAQlM,EAKZ,OAJIqkK,IAAcrhK,IAEhBkJ,GADAA,EAAQkwF,GAAUioE,IACF,EAAIizB,GAAUt3L,EAASkM,EAAO,GAAKqrL,GAAUrrL,EAAOlM,EAAS,IAExEgE,GAAUA,EAhtMrB,SAA2B60B,EAAO70B,EAAOqgK,GAEvC,IADA,IAAIn4J,EAAQm4J,EAAY,EACjBn4J,KACL,GAAI2sB,EAAM3sB,KAAWlI,EACnB,OAAOkI,EAGX,OAAOA,EA0sMDqtM,CAAkB1gL,EAAO70B,EAAOkI,GAChCunL,GAAc56J,EAAO+6J,GAAW1nL,GAAO,IAo6R7CqsL,GAAOgb,UAAYA,GACnBhb,GAAOib,WAAaA,GACpBjb,GAAO7sE,GAAKA,GACZ6sE,GAAO2Z,IAAMA,GACb3Z,GAAOniL,IAhfP,SAAayiB,GACX,OAAQA,GAASA,EAAM74B,OACnB0+L,GAAa7lK,EAAOiuJ,GAAU8Y,IAC9B58L,GA8eNu1L,GAAO/uI,MApdP,SAAe3wB,EAAO85J,GACpB,OAAQ95J,GAASA,EAAM74B,OACnB0+L,GAAa7lK,EAAOkrK,GAAYpR,EAAU,GAAIiN,IAC9C58L,GAkdNu1L,GAAOihB,KAjcP,SAAc3gL,GACZ,OAAOi7J,GAASj7J,EAAOiuJ,KAiczByR,GAAOkhB,OAvaP,SAAgB5gL,EAAO85J,GACrB,OAAOmB,GAASj7J,EAAOkrK,GAAYpR,EAAU,KAua/C4F,GAAOhtJ,IAlZP,SAAa1S,GACX,OAAQA,GAASA,EAAM74B,OACnB0+L,GAAa7lK,EAAOiuJ,GAAUgc,IAC9B9/L,GAgZNu1L,GAAO5uI,MAtXP,SAAe9wB,EAAO85J,GACpB,OAAQ95J,GAASA,EAAM74B,OACnB0+L,GAAa7lK,EAAOkrK,GAAYpR,EAAU,GAAImQ,IAC9C9/L,GAoXNu1L,GAAOkV,UAAYA,GACnBlV,GAAOwV,UAAYA,GACnBxV,GAAOmhB,WAztBP,WACE,MAAO,IAytBTnhB,GAAOohB,WAzsBP,WACE,MAAO,IAysBTphB,GAAOqhB,SAzrBP,WACE,OAAO,GAyrBTrhB,GAAOuc,SAAWA,GAClBvc,GAAOshB,IA55RP,SAAahhL,EAAOr0B,GAClB,OAAQq0B,GAASA,EAAM74B,OAAU2jM,GAAQ9qK,EAAOujE,GAAU53F,IAAMxB,GA45RlEu1L,GAAOljL,WAvhCP,WAIE,OAHI6iC,GAAKtkC,IAAMtD,OACb4nC,GAAKtkC,EAAIwiL,IAEJ9lL,MAohCTioL,GAAOx9E,KAAOA,GACdw9E,GAAOviE,IAAMA,GACbuiE,GAAOjhE,IAp3EP,SAAa1kF,EAAQ5yC,EAAQslJ,GAC3B1yG,EAAS98B,GAAS88B,GAGlB,IAAIknK,GAFJ95M,EAASo8F,GAAUp8F,IAEMo1L,GAAWxiJ,GAAU,EAC9C,IAAK5yC,GAAU85M,GAAa95M,EAC1B,OAAO4yC,EAET,IAAIkzJ,GAAO9lM,EAAS85M,GAAa,EACjC,OACEjO,GAAc7U,GAAY8O,GAAMxgD,GAChC1yG,EACAi5J,GAAc9U,GAAW+O,GAAMxgD,IAy2EnCizC,GAAOwhB,OA90EP,SAAgBnnK,EAAQ5yC,EAAQslJ,GAC9B1yG,EAAS98B,GAAS88B,GAGlB,IAAIknK,GAFJ95M,EAASo8F,GAAUp8F,IAEMo1L,GAAWxiJ,GAAU,EAC9C,OAAQ5yC,GAAU85M,EAAY95M,EACzB4yC,EAASi5J,GAAc7rM,EAAS85M,EAAWx0D,GAC5C1yG,GAw0EN2lJ,GAAOyhB,SA9yEP,SAAkBpnK,EAAQ5yC,EAAQslJ,GAChC1yG,EAAS98B,GAAS88B,GAGlB,IAAIknK,GAFJ95M,EAASo8F,GAAUp8F,IAEMo1L,GAAWxiJ,GAAU,EAC9C,OAAQ5yC,GAAU85M,EAAY95M,EACzB6rM,GAAc7rM,EAAS85M,EAAWx0D,GAAS1yG,EAC5CA,GAwyEN2lJ,GAAOn1K,SA7wEP,SAAkBwvB,EAAQqnK,EAAO/Q,GAM/B,OALIA,GAAkB,MAAT+Q,EACXA,EAAQ,EACCA,IACTA,GAASA,GAEJxiB,GAAe3hL,GAAS88B,GAAQ7lC,QAAQqhL,GAAa,IAAK6rB,GAAS,IAwwE5E1hB,GAAOt0E,OA7pFP,SAAgBy3E,EAAOC,EAAOue,GA2B5B,GA1BIA,GAA+B,kBAAZA,GAAyB/Q,GAAezN,EAAOC,EAAOue,KAC3Eve,EAAQue,EAAWl3M,GAEjBk3M,IAAal3M,IACK,kBAAT24L,GACTue,EAAWve,EACXA,EAAQ34L,GAEe,kBAAT04L,IACdwe,EAAWxe,EACXA,EAAQ14L,IAGR04L,IAAU14L,GAAa24L,IAAU34L,GACnC04L,EAAQ,EACRC,EAAQ,IAGRD,EAAQqQ,GAASrQ,GACbC,IAAU34L,GACZ24L,EAAQD,EACRA,EAAQ,GAERC,EAAQoQ,GAASpQ,IAGjBD,EAAQC,EAAO,CACjB,IAAInqF,EAAOkqF,EACXA,EAAQC,EACRA,EAAQnqF,EAEV,GAAI0oG,GAAYxe,EAAQ,GAAKC,EAAQ,EAAG,CACtC,IAAI8S,EAAO/W,KACX,OAAOH,GAAUmE,EAAS+S,GAAQ9S,EAAQD,EAAQpK,GAAe,QAAUmd,EAAO,IAAIzuM,OAAS,KAAO27L,GAExG,OAAOnB,GAAWkB,EAAOC,IA0nF3BpD,GAAO7xK,OA/8NP,SAAgBsyB,EAAY25I,EAAUC,GACpC,IAAIt1H,EAAOp2D,GAAQ8xC,GAAc6sF,GAAcouD,GAC3Cb,EAAYngL,UAAUjT,OAAS,EAEnC,OAAOs9D,EAAKtkB,EAAY+qJ,GAAYpR,EAAU,GAAIC,EAAaQ,EAAWiI,KA48N5E9C,GAAO3wI,YAn7NP,SAAqB5O,EAAY25I,EAAUC,GACzC,IAAIt1H,EAAOp2D,GAAQ8xC,GAAc8sF,GAAmBmuD,GAChDb,EAAYngL,UAAUjT,OAAS,EAEnC,OAAOs9D,EAAKtkB,EAAY+qJ,GAAYpR,EAAU,GAAIC,EAAaQ,EAAWmL,KAg7N5EhG,GAAO4hB,OAlvEP,SAAgBvnK,EAAQpuC,EAAG0kM,GAMzB,OAJE1kM,GADG0kM,EAAQC,GAAev2J,EAAQpuC,EAAG0kM,GAAS1kM,IAAMxB,GAChD,EAEAo5F,GAAU53F,GAETsgM,GAAWhvL,GAAS88B,GAASpuC,IA6uEtC+zL,GAAOxrL,QAvtEP,WACE,IAAIuJ,EAAOrD,UACP2/B,EAAS98B,GAASQ,EAAK,IAE3B,OAAOA,EAAKtW,OAAS,EAAI4yC,EAASA,EAAO7lC,QAAQuJ,EAAK,GAAIA,EAAK,KAotEjEiiL,GAAOhxL,OAzmGP,SAAgB9C,EAAQmmE,EAAMxqC,GAG5B,IAAIl0B,GAAS,EACTlM,GAHJ4qE,EAAOw0H,GAASx0H,EAAMnmE,IAGJzE,OAOlB,IAJKA,IACHA,EAAS,EACTyE,EAASzB,KAEFkJ,EAAQlM,GAAQ,CACvB,IAAIgE,EAAkB,MAAVS,EAAiBzB,EAAYyB,EAAO46L,GAAMz0H,EAAK1+D,KACvDlI,IAAUhB,IACZkJ,EAAQlM,EACRgE,EAAQo8B,GAEV37B,EAAS01F,GAAWn2F,GAASA,EAAM5D,KAAKqE,GAAUT,EAEpD,OAAOS,GAulGT8zL,GAAO7uD,MAAQA,GACf6uD,GAAO7C,aAAeA,EACtB6C,GAAO6hB,OA73NP,SAAgBphK,GAEd,OADW9xC,GAAQ8xC,GAAcuhJ,GAAc2K,IACnClsJ,IA43Ndu/I,GAAOnhK,KAlzNP,SAAc4hB,GACZ,GAAkB,MAAdA,EACF,OAAO,EAET,GAAIvM,GAAYuM,GACd,OAAOioD,GAASjoD,GAAco8I,GAAWp8I,GAAcA,EAAWh5C,OAEpE,IAAIsL,EAAM6wL,GAAOnjJ,GACjB,OAAI1tC,GAAOygL,GAAUzgL,GAAO8gL,GACnBpzI,EAAW5hB,KAEbqrK,GAASzpJ,GAAYh5C,QAwyN9Bu4L,GAAOkb,UAAYA,GACnBlb,GAAOv8J,KAlwNP,SAAcgd,EAAYuH,EAAW2oJ,GACnC,IAAI5rI,EAAOp2D,GAAQ8xC,GAAcmsF,GAAYsgE,GAI7C,OAHIyD,GAASC,GAAenwJ,EAAYuH,EAAW2oJ,KACjD3oJ,EAAYv9C,GAEPs6D,EAAKtkB,EAAY+qJ,GAAYxjJ,EAAW,KA8vNjDg4I,GAAO8hB,YA/pRP,SAAqBxhL,EAAO70B,GAC1B,OAAO0hM,GAAgB7sK,EAAO70B,IA+pRhCu0L,GAAO+hB,cAnoRP,SAAuBzhL,EAAO70B,EAAO2uL,GACnC,OAAOoT,GAAkBltK,EAAO70B,EAAO+/L,GAAYpR,EAAU,KAmoR/D4F,GAAOgiB,cAhnRP,SAAuB1hL,EAAO70B,GAC5B,IAAIhE,EAAkB,MAAT64B,EAAgB,EAAIA,EAAM74B,OACvC,GAAIA,EAAQ,CACV,IAAIkM,EAAQw5L,GAAgB7sK,EAAO70B,GACnC,GAAIkI,EAAQlM,GAAU+6L,GAAGliK,EAAM3sB,GAAQlI,GACrC,OAAOkI,EAGX,OAAQ,GAymRVqsL,GAAOiiB,gBAplRP,SAAyB3hL,EAAO70B,GAC9B,OAAO0hM,GAAgB7sK,EAAO70B,GAAO,IAolRvCu0L,GAAOkiB,kBAxjRP,SAA2B5hL,EAAO70B,EAAO2uL,GACvC,OAAOoT,GAAkBltK,EAAO70B,EAAO+/L,GAAYpR,EAAU,IAAI,IAwjRnE4F,GAAOmiB,kBAriRP,SAA2B7hL,EAAO70B,GAEhC,GADsB,MAAT60B,EAAgB,EAAIA,EAAM74B,OAC3B,CACV,IAAIkM,EAAQw5L,GAAgB7sK,EAAO70B,GAAO,GAAQ,EAClD,GAAI+2L,GAAGliK,EAAM3sB,GAAQlI,GACnB,OAAOkI,EAGX,OAAQ,GA8hRVqsL,GAAOmb,UAAYA,GACnBnb,GAAOxuL,WA9mEP,SAAoB6oC,EAAQhwC,EAAQyzE,GAOlC,OANAzjC,EAAS98B,GAAS88B,GAClByjC,EAAuB,MAAZA,EACP,EACAukH,GAAUx+F,GAAU/lB,GAAW,EAAGzjC,EAAO5yC,QAE7C4C,EAAS+jM,GAAa/jM,GACfgwC,EAAO3tC,MAAMoxE,EAAUA,EAAWzzE,EAAO5C,SAAW4C,GAwmE7D21L,GAAO1zI,SAAWA,GAClB0zI,GAAO72I,IAzUP,SAAa7oB,GACX,OAAQA,GAASA,EAAM74B,OACnB+zL,GAAQl7J,EAAOiuJ,IACf,GAuUNyR,GAAOoiB,MA7SP,SAAe9hL,EAAO85J,GACpB,OAAQ95J,GAASA,EAAM74B,OACnB+zL,GAAQl7J,EAAOkrK,GAAYpR,EAAU,IACrC,GA2SN4F,GAAOqiB,SAhgEP,SAAkBhoK,EAAQpoC,EAAS0+L,GAIjC,IAAI2R,EAAWtiB,GAAO2F,iBAElBgL,GAASC,GAAev2J,EAAQpoC,EAAS0+L,KAC3C1+L,EAAUxH,GAEZ4vC,EAAS98B,GAAS88B,GAClBpoC,EAAU+nM,GAAa,GAAI/nM,EAASqwM,EAAUzN,IAE9C,IAII0N,EACAC,EALAC,EAAUzI,GAAa,GAAI/nM,EAAQwwM,QAASH,EAASG,QAAS5N,IAC9D6N,EAAc5hM,GAAK2hM,GACnBE,EAAgB9mB,GAAW4mB,EAASC,GAIpC/uM,EAAQ,EACRjB,EAAcT,EAAQS,aAAekkL,GACrCviI,EAAS,WAGTuuJ,EAAevvM,IAChBpB,EAAQ64F,QAAU8rF,IAAWviI,OAAS,IACvC3hD,EAAY2hD,OAAS,KACpB3hD,IAAgB4iL,GAAgBc,GAAeQ,IAAWviI,OAAS,KACnEpiD,EAAQ4wM,UAAYjsB,IAAWviI,OAAS,KACzC,KAMEy7H,EAAY,kBACbloL,GAAeC,KAAKoK,EAAS,cACzBA,EAAQ69K,UAAY,IAAIt7K,QAAQ,UAAW,KAC3C,6BAA+BmkL,GAAmB,KACnD,KAENt+I,EAAO7lC,QAAQouM,GAAc,SAASnvM,EAAOqvM,EAAaC,EAAkBC,EAAiBC,EAAelxK,GAsB1G,OArBAgxK,IAAqBA,EAAmBC,GAGxC3uJ,GAAUha,EAAO3tC,MAAMiH,EAAOo+B,GAAQv9B,QAAQqiL,GAAmBwF,IAG7DymB,IACFP,GAAa,EACbluJ,GAAU,YAAcyuJ,EAAc,UAEpCG,IACFT,GAAe,EACfnuJ,GAAU,OAAS4uJ,EAAgB,eAEjCF,IACF1uJ,GAAU,iBAAmB0uJ,EAAmB,+BAElDpvM,EAAQo+B,EAASt+B,EAAMhM,OAIhBgM,KAGT4gD,GAAU,OAMV,IAAIxhD,EAAWjL,GAAeC,KAAKoK,EAAS,aAAeA,EAAQY,SAC9DA,IACHwhD,EAAS,iBAAmBA,EAAS,SAGvCA,GAAUmuJ,EAAenuJ,EAAO7/C,QAAQqgL,GAAsB,IAAMxgI,GACjE7/C,QAAQsgL,GAAqB,MAC7BtgL,QAAQugL,GAAuB,OAGlC1gI,EAAS,aAAexhD,GAAY,OAAS,SAC1CA,EACG,GACA,wBAEJ,qBACC0vM,EACI,mBACA,KAEJC,EACG,uFAEA,OAEJnuJ,EACA,gBAEF,IAAIrlD,EAASinB,IAAQ,WACnB,OAAOjiB,GAAS0uM,EAAa5yB,EAAY,UAAYz7H,GAClDpgD,MAAMxJ,EAAWk4M,MAMtB,GADA3zM,EAAOqlD,OAASA,EACZzrB,GAAQ55B,GACV,MAAMA,EAER,OAAOA,GAm5DTgxL,GAAOznJ,MApsBP,SAAetsC,EAAGmuL,GAEhB,IADAnuL,EAAI43F,GAAU53F,IACN,GAAKA,EAAIq9D,EACf,MAAO,GAET,IAAI31D,EAAQg/K,EACRlrL,EAASu3L,GAAU/yL,EAAG0mL,GAE1ByH,EAAWoR,GAAYpR,GACvBnuL,GAAK0mL,EAGL,IADA,IAAI3jL,EAAS2sL,GAAUl0L,EAAQ2yL,KACtBzmL,EAAQ1H,GACfmuL,EAASzmL,GAEX,OAAO3E,GAsrBTgxL,GAAOwT,SAAWA,GAClBxT,GAAOn8F,UAAYA,GACnBm8F,GAAOxgE,SAAWA,GAClBwgE,GAAOkjB,QA/3DP,SAAiBz3M,GACf,OAAO8R,GAAS9R,GAAO8I,eA+3DzByrL,GAAO2T,SAAWA,GAClB3T,GAAOmjB,cAvsIP,SAAuB13M,GACrB,OAAOA,EACH42L,GAAUx+F,GAAUp4F,IAAS69D,EAAkBA,GACpC,IAAV79D,EAAcA,EAAQ,GAqsI7Bu0L,GAAOziL,SAAWA,GAClByiL,GAAOojB,QA12DP,SAAiB33M,GACf,OAAO8R,GAAS9R,GAAOs4E,eA02DzBi8G,GAAOn2F,KAj1DP,SAAcxvD,EAAQ0yG,EAAO4jD,GAE3B,IADAt2J,EAAS98B,GAAS88B,MACHs2J,GAAS5jD,IAAUtiJ,GAChC,OAAO4vC,EAAO7lC,QAAQohL,GAAQ,IAEhC,IAAKv7I,KAAY0yG,EAAQqhD,GAAarhD,IACpC,OAAO1yG,EAET,IAAI2hJ,EAAae,GAAc1iJ,GAC3B4hJ,EAAac,GAAchwC,GAI/B,OAAOmiD,GAAUlT,EAHLD,GAAgBC,EAAYC,GAC9BC,GAAcF,EAAYC,GAAc,GAET3nL,KAAK,KAq0DhD0rL,GAAOqjB,QA/yDP,SAAiBhpK,EAAQ0yG,EAAO4jD,GAE9B,IADAt2J,EAAS98B,GAAS88B,MACHs2J,GAAS5jD,IAAUtiJ,GAChC,OAAO4vC,EAAO7lC,QAAQshL,GAAW,IAEnC,IAAKz7I,KAAY0yG,EAAQqhD,GAAarhD,IACpC,OAAO1yG,EAET,IAAI2hJ,EAAae,GAAc1iJ,GAG/B,OAAO60J,GAAUlT,EAAY,EAFnBE,GAAcF,EAAYe,GAAchwC,IAAU,GAEvBz4I,KAAK,KAqyD5C0rL,GAAOsjB,UA/wDP,SAAmBjpK,EAAQ0yG,EAAO4jD,GAEhC,IADAt2J,EAAS98B,GAAS88B,MACHs2J,GAAS5jD,IAAUtiJ,GAChC,OAAO4vC,EAAO7lC,QAAQqhL,GAAa,IAErC,IAAKx7I,KAAY0yG,EAAQqhD,GAAarhD,IACpC,OAAO1yG,EAET,IAAI2hJ,EAAae,GAAc1iJ,GAG/B,OAAO60J,GAAUlT,EAFLD,GAAgBC,EAAYe,GAAchwC,KAElBz4I,KAAK,KAqwD3C0rL,GAAOujB,SA7tDP,SAAkBlpK,EAAQpoC,GACxB,IAAIxK,EAAS0qL,EACTqxB,EAAWpxB,EAEf,GAAI/wK,GAASpP,GAAU,CACrB,IAAI68C,EAAY,cAAe78C,EAAUA,EAAQ68C,UAAYA,EAC7DrnD,EAAS,WAAYwK,EAAU4xF,GAAU5xF,EAAQxK,QAAUA,EAC3D+7M,EAAW,aAAcvxM,EAAUm8L,GAAan8L,EAAQuxM,UAAYA,EAItE,IAAIjC,GAFJlnK,EAAS98B,GAAS88B,IAEK5yC,OACvB,GAAI80L,GAAWliJ,GAAS,CACtB,IAAI2hJ,EAAae,GAAc1iJ,GAC/BknK,EAAYvlB,EAAWv0L,OAEzB,GAAIA,GAAU85M,EACZ,OAAOlnK,EAET,IAAI1H,EAAMlrC,EAASo1L,GAAW2mB,GAC9B,GAAI7wK,EAAM,EACR,OAAO6wK,EAET,IAAIx0M,EAASgtL,EACTkT,GAAUlT,EAAY,EAAGrpJ,GAAKr+B,KAAK,IACnC+lC,EAAO3tC,MAAM,EAAGimC,GAEpB,GAAImc,IAAcrkD,EAChB,OAAOuE,EAASw0M,EAKlB,GAHIxnB,IACFrpJ,GAAQ3jC,EAAOvH,OAASkrC,GAEtBonJ,GAASjrI,IACX,GAAIzU,EAAO3tC,MAAMimC,GAAKu1D,OAAOp5C,GAAY,CACvC,IAAIr7C,EACA6tF,EAAYtyF,EAMhB,IAJK8/C,EAAU7oC,SACb6oC,EAAYz7C,GAAOy7C,EAAUuF,OAAQ92C,GAAS84K,GAAQ3iL,KAAKo7C,IAAc,MAE3EA,EAAUhtC,UAAY,EACdrO,EAAQq7C,EAAUp7C,KAAK4tF,IAC7B,IAAImiH,EAAShwM,EAAME,MAErB3E,EAASA,EAAOtC,MAAM,EAAG+2M,IAAWh5M,EAAYkoC,EAAM8wK,SAEnD,GAAIppK,EAAOlpC,QAAQi9L,GAAat/I,GAAYnc,IAAQA,EAAK,CAC9D,IAAIh/B,EAAQ3E,EAAOyqC,YAAYqV,GAC3Bn7C,GAAS,IACX3E,EAASA,EAAOtC,MAAM,EAAGiH,IAG7B,OAAO3E,EAASw0M,GAyqDlBxjB,GAAO0jB,SAnpDP,SAAkBrpK,GAEhB,OADAA,EAAS98B,GAAS88B,KACA66I,GAAiBxrK,KAAK2wB,GACpCA,EAAO7lC,QAAQwgL,GAAekI,IAC9B7iJ,GAgpDN2lJ,GAAO2jB,SAvpBP,SAAkBh7K,GAChB,IAAIgwB,IAAO8kI,GACX,OAAOlgL,GAASorB,GAAUgwB,GAspB5BqnI,GAAOob,UAAYA,GACnBpb,GAAO8a,WAAaA,GAGpB9a,GAAO1xK,KAAOnc,GACd6tL,GAAO4jB,UAAYjM,GACnB3X,GAAO9vI,MAAQvlD,GAEfojD,GAAMiyI,IACA3rI,GAAS,GACb0xI,GAAW/F,IAAQ,SAASj7H,EAAM1nD,GAC3BzV,GAAeC,KAAKm4L,GAAOr4L,UAAW0V,KACzCg3C,GAAOh3C,GAAc0nD,MAGlB1Q,IACH,CAAE,OAAS,IAWjB2rI,GAAOptB,QA98gBK,UAi9gBZ0nB,GAAU,CAAC,OAAQ,UAAW,QAAS,aAAc,UAAW,iBAAiB,SAASj9K,GACxF2iL,GAAO3iL,GAAY6rG,YAAc82E,MAInC1F,GAAU,CAAC,OAAQ,SAAS,SAASj9K,EAAY1J,GAC/CusL,GAAYv4L,UAAU0V,GAAc,SAASpR,GAC3CA,EAAIA,IAAMxB,EAAY,EAAIs0L,GAAUl7F,GAAU53F,GAAI,GAElD,IAAI+C,EAAU+I,KAAK+oL,eAAiBntL,EAChC,IAAIusL,GAAYnoL,MAChBA,KAAK8xI,QAUT,OARI76I,EAAO8xL,aACT9xL,EAAOgyL,cAAgBhC,GAAU/yL,EAAG+C,EAAOgyL,eAE3ChyL,EAAOiyL,UAAUl5L,KAAK,CACpB,KAAQi3L,GAAU/yL,EAAG0mL,GACrB,KAAQt1K,GAAcrO,EAAO6xL,QAAU,EAAI,QAAU,MAGlD7xL,GAGTkxL,GAAYv4L,UAAU0V,EAAa,SAAW,SAASpR,GACrD,OAAO8L,KAAK49B,UAAUt4B,GAAYpR,GAAG0pC,cAKzC2kJ,GAAU,CAAC,SAAU,MAAO,cAAc,SAASj9K,EAAY1J,GAC7D,IAAIxJ,EAAOwJ,EAAQ,EACfkwM,EAAW15M,GAAQooL,GA/7gBL,GA+7gByBpoL,EAE3C+1L,GAAYv4L,UAAU0V,GAAc,SAAS+8K,GAC3C,IAAIprL,EAAS+I,KAAK8xI,QAMlB,OALA76I,EAAO+xL,cAAch5L,KAAK,CACxB,SAAYyjM,GAAYpR,EAAU,GAClC,KAAQjwL,IAEV6E,EAAO8xL,aAAe9xL,EAAO8xL,cAAgB+iB,EACtC70M,MAKXsrL,GAAU,CAAC,OAAQ,SAAS,SAASj9K,EAAY1J,GAC/C,IAAImwM,EAAW,QAAUnwM,EAAQ,QAAU,IAE3CusL,GAAYv4L,UAAU0V,GAAc,WAClC,OAAOtF,KAAK+rM,GAAU,GAAGr4M,QAAQ,OAKrC6uL,GAAU,CAAC,UAAW,SAAS,SAASj9K,EAAY1J,GAClD,IAAIowM,EAAW,QAAUpwM,EAAQ,GAAK,SAEtCusL,GAAYv4L,UAAU0V,GAAc,WAClC,OAAOtF,KAAK+oL,aAAe,IAAIZ,GAAYnoL,MAAQA,KAAKgsM,GAAU,OAItE7jB,GAAYv4L,UAAUk1M,QAAU,WAC9B,OAAO9kM,KAAK8Y,OAAO09J,KAGrB2R,GAAYv4L,UAAU0J,KAAO,SAAS22C,GACpC,OAAOjwC,KAAK8Y,OAAOm3B,GAAWr9C,QAGhCu1L,GAAYv4L,UAAUsoD,SAAW,SAASjI,GACxC,OAAOjwC,KAAK49B,UAAUtkC,KAAK22C,IAG7Bk4I,GAAYv4L,UAAUiwM,UAAYpL,IAAS,SAASn6H,EAAMt0D,GACxD,MAAmB,mBAARs0D,EACF,IAAI6tH,GAAYnoL,MAElBA,KAAK9G,KAAI,SAASxF,GACvB,OAAOs8L,GAAWt8L,EAAO4mE,EAAMt0D,SAInCmiL,GAAYv4L,UAAUoB,OAAS,SAASi/C,GACtC,OAAOjwC,KAAK8Y,OAAOu2F,GAAOokF,GAAYxjJ,MAGxCk4I,GAAYv4L,UAAU+E,MAAQ,SAASugC,EAAO0F,GAC5C1F,EAAQ42D,GAAU52D,GAElB,IAAIj+B,EAAS+I,KACb,OAAI/I,EAAO8xL,eAAiB7zJ,EAAQ,GAAK0F,EAAM,GACtC,IAAIutJ,GAAYlxL,IAErBi+B,EAAQ,EACVj+B,EAASA,EAAO2vM,WAAW1xK,GAClBA,IACTj+B,EAASA,EAAOkuM,KAAKjwK,IAEnB0F,IAAQloC,IAEVuE,GADA2jC,EAAMkxD,GAAUlxD,IACD,EAAI3jC,EAAOmuM,WAAWxqK,GAAO3jC,EAAO2iD,KAAKhf,EAAM1F,IAEzDj+B,IAGTkxL,GAAYv4L,UAAUi3M,eAAiB,SAAS52J,GAC9C,OAAOjwC,KAAK49B,UAAUkc,UAAU7J,GAAWrS,WAG7CuqJ,GAAYv4L,UAAU+tC,QAAU,WAC9B,OAAO39B,KAAK45C,KAAKghI,IAInBoT,GAAW7F,GAAYv4L,WAAW,SAASo9D,EAAM1nD,GAC/C,IAAI2mM,EAAgB,qCAAqCt6L,KAAKrM,GAC1D4mM,EAAU,kBAAkBv6L,KAAKrM,GACjC6mM,EAAalkB,GAAOikB,EAAW,QAAwB,QAAd5mM,EAAuB,QAAU,IAAOA,GACjF8mM,EAAeF,GAAW,QAAQv6L,KAAKrM,GAEtC6mM,IAGLlkB,GAAOr4L,UAAU0V,GAAc,WAC7B,IAAI5R,EAAQsM,KAAKyoL,YACbziL,EAAOkmM,EAAU,CAAC,GAAKvpM,UACvB0pM,EAAS34M,aAAiBy0L,GAC1B9F,EAAWr8K,EAAK,GAChBsmM,EAAUD,GAAUz1M,GAAQlD,GAE5BgsM,EAAc,SAAShsM,GACzB,IAAIuD,EAASk1M,EAAWjwM,MAAM+rL,GAAQpF,GAAU,CAACnvL,GAAQsS,IACzD,OAAQkmM,GAAW1jB,EAAYvxL,EAAO,GAAKA,GAGzCq1M,GAAWL,GAAoC,mBAAZ5pB,GAA6C,GAAnBA,EAAS3yL,SAExE28M,EAASC,GAAU,GAErB,IAAI9jB,EAAWxoL,KAAK2oL,UAChB4jB,IAAavsM,KAAK0oL,YAAYh5L,OAC9B88M,EAAcJ,IAAiB5jB,EAC/BikB,EAAWJ,IAAWE,EAE1B,IAAKH,GAAgBE,EAAS,CAC5B54M,EAAQ+4M,EAAW/4M,EAAQ,IAAIy0L,GAAYnoL,MAC3C,IAAI/I,EAAS+1D,EAAK9wD,MAAMxI,EAAOsS,GAE/B,OADA/O,EAAOyxL,YAAY14L,KAAK,CAAE,KAAQypM,GAAM,KAAQ,CAACiG,GAAc,QAAWhtM,IACnE,IAAI01L,GAAcnxL,EAAQuxL,GAEnC,OAAIgkB,GAAeC,EACVz/I,EAAK9wD,MAAM8D,KAAMgG,IAE1B/O,EAAS+I,KAAKy5L,KAAKiG,GACZ8M,EAAeN,EAAUj1M,EAAOvD,QAAQ,GAAKuD,EAAOvD,QAAWuD,QAK1EsrL,GAAU,CAAC,MAAO,OAAQ,QAAS,OAAQ,SAAU,YAAY,SAASj9K,GACxE,IAAI0nD,EAAOq4H,GAAW//K,GAClBonM,EAAY,0BAA0B/6L,KAAKrM,GAAc,MAAQ,OACjE8mM,EAAe,kBAAkBz6L,KAAKrM,GAE1C2iL,GAAOr4L,UAAU0V,GAAc,WAC7B,IAAIU,EAAOrD,UACX,GAAIypM,IAAiBpsM,KAAK2oL,UAAW,CACnC,IAAIj1L,EAAQsM,KAAKtM,QACjB,OAAOs5D,EAAK9wD,MAAMtF,GAAQlD,GAASA,EAAQ,GAAIsS,GAEjD,OAAOhG,KAAK0sM,IAAW,SAASh5M,GAC9B,OAAOs5D,EAAK9wD,MAAMtF,GAAQlD,GAASA,EAAQ,GAAIsS,UAMrDgoL,GAAW7F,GAAYv4L,WAAW,SAASo9D,EAAM1nD,GAC/C,IAAI6mM,EAAalkB,GAAO3iL,GACxB,GAAI6mM,EAAY,CACd,IAAIn4M,EAAMm4M,EAAW35M,KAAO,GACvB3C,GAAeC,KAAK03L,GAAWxzL,KAClCwzL,GAAUxzL,GAAO,IAEnBwzL,GAAUxzL,GAAKhE,KAAK,CAAE,KAAQsV,EAAY,KAAQ6mM,QAItD3kB,GAAUuS,GAAarnM,EAAWinL,GAAoBnnL,MAAQ,CAAC,CAC7D,KAAQ,UACR,KAAQE,IAIVy1L,GAAYv4L,UAAUkiJ,MAz5dtB,WACE,IAAI76I,EAAS,IAAIkxL,GAAYnoL,KAAKyoL,aAOlC,OANAxxL,EAAOyxL,YAAc2B,GAAUrqL,KAAK0oL,aACpCzxL,EAAO6xL,QAAU9oL,KAAK8oL,QACtB7xL,EAAO8xL,aAAe/oL,KAAK+oL,aAC3B9xL,EAAO+xL,cAAgBqB,GAAUrqL,KAAKgpL,eACtC/xL,EAAOgyL,cAAgBjpL,KAAKipL,cAC5BhyL,EAAOiyL,UAAYmB,GAAUrqL,KAAKkpL,WAC3BjyL,GAk5dTkxL,GAAYv4L,UAAUguC,QAv4dtB,WACE,GAAI59B,KAAK+oL,aAAc,CACrB,IAAI9xL,EAAS,IAAIkxL,GAAYnoL,MAC7B/I,EAAO6xL,SAAW,EAClB7xL,EAAO8xL,cAAe,OAEtB9xL,EAAS+I,KAAK8xI,SACPg3C,UAAY,EAErB,OAAO7xL,GA+3dTkxL,GAAYv4L,UAAU8D,MAp3dtB,WACE,IAAI60B,EAAQvoB,KAAKyoL,YAAY/0L,QACzBizF,EAAM3mF,KAAK8oL,QACXY,EAAQ9yL,GAAQ2xB,GAChBokL,EAAUhmH,EAAM,EAChBsjD,EAAYy/C,EAAQnhK,EAAM74B,OAAS,EACnCk9M,EAwoIN,SAAiB13K,EAAO0F,EAAKwmK,GAC3B,IAAIxlM,GAAS,EACTlM,EAAS0xM,EAAW1xM,OAExB,OAASkM,EAAQlM,GAAQ,CACvB,IAAIP,EAAOiyM,EAAWxlM,GAClBkrB,EAAO33B,EAAK23B,KAEhB,OAAQ33B,EAAKiD,MACX,IAAK,OAAa8iC,GAASpO,EAAM,MACjC,IAAK,YAAa8T,GAAO9T,EAAM,MAC/B,IAAK,OAAa8T,EAAMqsJ,GAAUrsJ,EAAK1F,EAAQpO,GAAO,MACtD,IAAK,YAAaoO,EAAQ8xJ,GAAU9xJ,EAAO0F,EAAM9T,IAGrD,MAAO,CAAE,MAASoO,EAAO,IAAO0F,GAvpIrBiyK,CAAQ,EAAG5iE,EAAWjqI,KAAKkpL,WAClCh0J,EAAQ03K,EAAK13K,MACb0F,EAAMgyK,EAAKhyK,IACXlrC,EAASkrC,EAAM1F,EACft5B,EAAQ+wM,EAAU/xK,EAAO1F,EAAQ,EACjCq+J,EAAYvzL,KAAKgpL,cACjB8jB,EAAavZ,EAAU7jM,OACvB+yL,EAAW,EACXsqB,EAAY9lB,GAAUv3L,EAAQsQ,KAAKipL,eAEvC,IAAKS,IAAWijB,GAAW1iE,GAAav6I,GAAUq9M,GAAar9M,EAC7D,OAAOinM,GAAiBpuK,EAAOvoB,KAAK0oL,aAEtC,IAAIzxL,EAAS,GAEbw2L,EACA,KAAO/9L,KAAY+yL,EAAWsqB,GAAW,CAMvC,IAHA,IAAIC,GAAa,EACbt5M,EAAQ60B,EAHZ3sB,GAAS+qF,KAKAqmH,EAAYF,GAAY,CAC/B,IAAI39M,EAAOokM,EAAUyZ,GACjB3qB,EAAWlzL,EAAKkzL,SAChBjwL,EAAOjD,EAAKiD,KACZs7L,EAAWrL,EAAS3uL,GAExB,GAAItB,GAAQqoL,EACV/mL,EAAQg6L,OACH,IAAKA,EAAU,CACpB,GAAIt7L,GAAQooL,EACV,SAASiT,EAET,MAAMA,GAIZx2L,EAAOwrL,KAAc/uL,EAEvB,OAAOuD,GAy0dTgxL,GAAOr4L,UAAUuyM,GAAKxC,GACtB1X,GAAOr4L,UAAU8qD,MAzgQjB,WACE,OAAOA,GAAM16C,OAygQfioL,GAAOr4L,UAAUq9M,OA5+PjB,WACE,OAAO,IAAI7kB,GAAcpoL,KAAKtM,QAASsM,KAAK2oL,YA4+P9CV,GAAOr4L,UAAU8N,KAn9PjB,WACMsC,KAAK6oL,aAAen2L,IACtBsN,KAAK6oL,WAAalrJ,GAAQ39B,KAAKtM,UAEjC,IAAIiK,EAAOqC,KAAK4oL,WAAa5oL,KAAK6oL,WAAWn5L,OAG7C,MAAO,CAAE,KAAQiO,EAAM,MAFXA,EAAOjL,EAAYsN,KAAK6oL,WAAW7oL,KAAK4oL,eA+8PtDX,GAAOr4L,UAAUkqM,MA55PjB,SAAsBpmM,GAIpB,IAHA,IAAIuD,EACAkQ,EAASnH,KAENmH,aAAkBohL,IAAY,CACnC,IAAIz2C,EAAQu2C,GAAalhL,GACzB2qI,EAAM82C,UAAY,EAClB92C,EAAM+2C,WAAan2L,EACfuE,EACFqwE,EAASmhH,YAAc32C,EAEvB76I,EAAS66I,EAEX,IAAIxqE,EAAWwqE,EACf3qI,EAASA,EAAOshL,YAGlB,OADAnhH,EAASmhH,YAAc/0L,EAChBuD,GA44PTgxL,GAAOr4L,UAAUguC,QAr3PjB,WACE,IAAIlqC,EAAQsM,KAAKyoL,YACjB,GAAI/0L,aAAiBy0L,GAAa,CAChC,IAAIzpK,EAAUhrB,EAUd,OATIsM,KAAK0oL,YAAYh5L,SACnBgvB,EAAU,IAAIypK,GAAYnoL,QAE5B0e,EAAUA,EAAQkf,WACV8qJ,YAAY14L,KAAK,CACvB,KAAQypM,GACR,KAAQ,CAAC77J,IACT,QAAWlrC,IAEN,IAAI01L,GAAc1pK,EAAS1e,KAAK2oL,WAEzC,OAAO3oL,KAAKy5L,KAAK77J,KAu2PnBqqJ,GAAOr4L,UAAUgxB,OAASqnK,GAAOr4L,UAAUkwC,QAAUmoJ,GAAOr4L,UAAU8D,MAt1PtE,WACE,OAAOijM,GAAiB32L,KAAKyoL,YAAazoL,KAAK0oL,cAw1PjDT,GAAOr4L,UAAUuoD,MAAQ8vI,GAAOr4L,UAAUgD,KAEtCwzL,KACF6B,GAAOr4L,UAAUw2L,IAh8PnB,WACE,OAAOpmL,OAi8PFioL,GAMD7C,GAQNx9I,GAAKtkC,EAAIA,IAIT,aACE,OAAOA,IACR,oCAaHxT,KAAKkQ,Q,yDCrthBPrQ,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQ28M,WAAa38M,EAAQypC,OAASzpC,EAAQyqE,QAAUzqE,EAAQ48M,YAAc58M,EAAQujD,SAAMphD,EAE5F,IAIgCuC,EAJ5Bm4M,EAAY,EAAQ,IAEpB/uJ,GAE4BppD,EAFOm4M,IAEcn4M,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAE7E1E,EAAQujD,IAAM,SAAau5J,EAAUC,GAC7C,MAAO,CACL9sE,IAAK6sE,EAAS7sE,IAAM8sE,EAAS9sE,IAC7BxzF,KAAMqgK,EAASrgK,KAAOsgK,EAAStgK,KAC/BC,MAAOogK,EAASpgK,MAAQqgK,EAASrgK,MACjCwzF,OAAQ4sE,EAAS5sE,OAAS6sE,EAAS7sE,SAIrBlwI,EAAQ48M,YAAc,SAAqBI,EAASxnI,GACpE,OAAO,EAAI1nB,EAAUxpD,SAAS,GAAI04M,EAAS,CACzCtgK,MAAOsgK,EAAQtgK,MAAQ84B,EAASziD,EAChCm9G,OAAQ8sE,EAAQ9sE,OAAS16D,EAASmkB,KAIxB35F,EAAQyqE,QAAU,SAAiBqyI,EAAUC,GACzD,OAAOD,EAAS7sE,MAAQ8sE,EAAS9sE,KAAO6sE,EAASpgK,QAAUqgK,EAASrgK,OAASogK,EAAS5sE,SAAW6sE,EAAS7sE,QAAU4sE,EAASrgK,OAASsgK,EAAStgK,MAGpIz8C,EAAQypC,OAAS,SAAgBuzK,EAASpjI,GACrD,MAAO,CACLq2D,IAAK+sE,EAAQ/sE,IAAMr2D,EAAM+f,EACzBj9C,MAAOsgK,EAAQtgK,MAAQk9B,EAAM7mD,EAC7Bm9G,OAAQ8sE,EAAQ9sE,OAASt2D,EAAM+f,EAC/Bl9C,KAAMugK,EAAQvgK,KAAOm9B,EAAM7mD,IAId/yB,EAAQ28M,WAAa,SAAoBK,GACxD,MAAO,CAAC,CAAEjqL,EAAGiqL,EAAQvgK,KAAMk9C,EAAGqjH,EAAQ/sE,KAAO,CAAEl9G,EAAGiqL,EAAQtgK,MAAOi9C,EAAGqjH,EAAQ/sE,KAAO,CAAEl9G,EAAGiqL,EAAQvgK,KAAMk9C,EAAGqjH,EAAQ9sE,QAAU,CAAEn9G,EAAGiqL,EAAQtgK,MAAOi9C,EAAGqjH,EAAQ9sE,W,6BCzC5J9wI,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAAI85M,EAAY,EAAQ,IAExBj9M,EAAQsE,QAAU,SAAUq+B,GAC1B,IAAIopB,EAASppB,EAAKopB,OACdmxJ,EAAav6K,EAAKu6K,WAClBx9C,EAAc/8H,EAAK+8H,YACnBy9C,EAAkBx6K,EAAKw6K,gBACvBC,EAAkBz6K,EAAKy6K,gBAEvBC,EAAY,SAAmBC,GACjC,OAAO,EAAIL,EAAUr+F,OAAOw+F,EAAgBl8L,KAAMo8L,EAAKF,EAAgBD,IAAmBG,EAAKF,EAAgBG,kBAG7GC,EAASH,EAAU39C,GAEnB+9C,GAAa,EAAIR,EAAUp+F,WAAU,EAAIo+F,EAAUj5J,UAAU+H,EAAOmzG,OAAQm+C,EAAUtxJ,KAEtF2xJ,GAAS,EAAIT,EAAUr+F,OAAOw+F,EAAgBl8L,MAAsB,QAAfg8L,GAAwB,EAAI,GAAKO,EAAWL,EAAgBl8L,MAAOu8L,EAAWL,EAAgBO,YAEvJ,OAAO,EAAIV,EAAU15J,KAAKi6J,EAAQE,K,6BCvBpCt+M,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IASgCuB,EAT5BgzF,EAAU,EAAQ,IAElBpyF,GAO4BZ,EAPMgzF,IAOehzF,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GALvF1E,EAAQ49M,6BAA+BA,EACvC59M,EAAQ69M,oBAyDR,SAA6B95M,GACzB,GAAoB,8BAAhBA,EAAI60G,QAAyC,CAC7C,IAAIklG,EAAaF,EAA6B75M,EAAInF,KAAKm/M,WAAYh6M,EAAInF,KAAKo/M,cAAe,CACvF,qBAAuB,EAAI3vJ,EAAiBzoD,KAAK,0DACjD,IAAI,EAAIyoD,EAAiBzoD,KAAK,8DAE9Bq4M,EAAeL,EAA6B75M,EAAInF,KAAKm/M,WAAYh6M,EAAInF,KAAKo/M,cAAe,CACzF,IAAI,EAAI3vJ,EAAiBzoD,KAAK,qFAElC,OAAO+gC,MAAM9lC,cACT,MACA,KACA8lC,MAAM9lC,cACF,MACA,KACAi9M,GAEJn3K,MAAM9lC,cACF,MACA,KACAo9M,IAIR,OAAOt3K,MAAM9lC,cACT,MACA,MACA,EAAIwtD,EAAiB1oD,IAAI,kDAlFrC,IAAI0oD,EAAmB,EAAQ,GAkB/B,SAASuvJ,EAA6BM,EAAWD,EAAcE,EAASC,GACpE,IAAIC,EAAYF,EAAQD,QACN/7M,IAAdk8M,IAAyBA,EAAYF,EAAQ,KAcjD,OAAIE,EAAUptK,SAAS,QACZ,EAAIod,EAAiB1oD,IAAI04M,EAAW,IAAI,EAAI/4M,EAAShB,SAAS,CAAE,EAb7D,SAAiB0uH,GAC3B,OAAIirF,EACOt3K,MAAM9lC,cACT,IACA,CAAEk/F,KAAMk+G,EAAcl8M,OAAQ,SAAU2gG,IAAK,YAC7CswB,GAGGA,IAK4EorF,KAEhF,EAAI/vJ,EAAiB1oD,IAAI04M,EAAW,GAAID,K,8BClDvD;;;;;;;;CASA,SAAWzgM,GACV,IAAIgW,EAAI,UACJ2oK,EAAS,CACZgiB,IAAK,CACJ/kF,KAAM,CAAC,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC7DojB,MAAO,CAAC,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAE/D4hE,MAAO,CACNhlF,KAAM,CAAC,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACtDojB,MAAO,CAAC,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,QAGrD6hE,EAAW,CACdF,IAAK,CAAC,GAAI,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAClEC,MAAO,CAAC,GAAI,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,QAAS,UAWrE,SAASE,EAAS7tM,GACjB,IAKI0hB,EACAinG,EACA7oF,EACAguK,EACAC,EACA/1J,EAEAj+C,EACAk+H,EACA+1E,EACAC,EACAC,EACAC,EAjBAh6M,EAAaqN,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,GAAmBA,UAAU,GAAK,GAEjF1L,EAAS,GACT4nB,EAAM,EACNnuB,OAAI,EAOJ6+M,OAAM,EAQV,GAAIplH,MAAMhpF,GACT,MAAM,IAAItP,MAAM,qBA2EjB,OAxEAi4H,GAA2B,IAApBx0H,EAAWw0H,KAClBqlF,GAA2B,IAApB75M,EAAW65M,KAClBtsL,EAAOvtB,EAAWutB,MAAQ,EAC1Bu2G,OAA6B1mI,IAArB4C,EAAW8jI,MAAsB9jI,EAAW8jI,MAAQ+1E,EAAO,EAAI,EACvEC,OAA+B18M,IAAtB4C,EAAW85M,OAAuB95M,EAAW85M,OAASD,EAAO,GAAK,IAC3EG,EAAUh6M,EAAWg6M,SAAWh6M,EAAWk6M,UAAY,GACvDH,EAAoB,IAATxsL,GAAavtB,EAAW+5M,UAAsB,QACzDn0M,EAAS5F,EAAW4F,QAAU,SAC9B+zM,GAA+B,IAAxB35M,EAAWy5M,SAClBG,EAAY55M,EAAW45M,qBAAqBv4M,MAAQrB,EAAW45M,UAAY,GAC3Ex+M,OAA4BgC,IAAxB4C,EAAWm6M,SAAyBn6M,EAAWm6M,UAAY,EAG/DxuK,EAAOpe,EAAO,EAAI,IAAO,MADzBs2B,GADAo2J,EAAM/9K,OAAOrwB,IACD,KAKXouM,GAAOA,KAIG,IAAP7+M,GAAYy5F,MAAMz5F,MACrBA,EAAImV,KAAKi8B,MAAMj8B,KAAKhO,IAAI03M,GAAO1pM,KAAKhO,IAAIopC,KAEhC,IACPvwC,EAAI,GAKFA,EAAI,IACPA,EAAI,GAIO,IAAR6+M,GACHt4M,EAAO,GAAK,EACZA,EAAO,GAAKk4M,EAAO,GAAKtiB,EAAOwiB,GAAUvlF,EAAO,OAAS,SAASp5H,KAElEmuB,EAAM0wL,GAAgB,IAAT1sL,EAAahd,KAAK6pG,IAAI,EAAO,GAAJh/G,GAAUmV,KAAK6pG,IAAI,IAAMh/G,IAE3Do5H,IACHjrG,GAAY,IAEDoiB,GAAQvwC,EAAI,IACtBmuB,GAAYoiB,EACZvwC,KAIFuG,EAAO,GAAKu6B,OAAO3S,EAAI0zG,QAAQ7hI,EAAI,EAAI0oI,EAAQ,IAC/CniI,EAAO,GAAc,KAAT4rB,GAAqB,IAANnyB,EAAUo5H,EAAO,KAAO,KAAO+iE,EAAOwiB,GAAUvlF,EAAO,OAAS,SAASp5H,GAEhGy+M,IACHl4M,EAAO,GAAkB,UAAbo4M,EAAuBp4M,EAAO,GAAG6a,OAAO,GAAKphB,EAAI,EAAIuG,EAAO,GAAGwF,QAAQ,KAAM,IAAMxF,EAAO,GAElGitB,EAAEvS,KAAK1a,EAAO,MACjBA,EAAO,GAAK4O,KAAKi8B,MAAM7qC,EAAO,IAC9BA,EAAO,GAAK,MAMXkiD,IACHliD,EAAO,IAAMA,EAAO,IAIrBA,EAAO,GAAKq4M,EAAQr4M,EAAO,KAAOA,EAAO,GAG1B,UAAXiE,EACIjE,EAGO,aAAXiE,EACIxK,EAGO,WAAXwK,EACI,CAAExH,MAAOuD,EAAO,GAAIsuB,OAAQtuB,EAAO,GAAI41L,OAAQ51L,EAAO,KAG1Dg4M,IACHh4M,EAAO,GAAKi4M,EAAUx+M,GAAKw+M,EAAUx+M,GAAKq+M,EAASM,GAAU3+M,IAAMo5H,EAAO,MAAQ,SAAyB,IAAd7yH,EAAO,GAAW,GAAK,MAG9GA,EAAOsF,KAAK6yM,IAIpBJ,EAAS1N,QAAU,SAAUoO,GAC5B,OAAO,SAAUvuM,GAChB,OAAO6tM,EAAS7tM,EAAKuuM,KAMtBl/M,EAAOD,QAAUy+M,EArJnB,CA6JqB,oBAAXv6M,QAAyBA,U,+CCpKnC,IAEI4pD,EAAYzoD,EAFA,EAAQ,KAMpBi2D,EAA4Bj2D,EAFA,EAAQ,MAMpCgE,EAAUhE,EAFD,EAAQ,IAMjB4oD,EAAc5oD,EAFD,EAAQ,IAMrB6oD,EAAqB7oD,EAFD,EAAQ,KAIhC,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvF,IAAI06M,EAAS,EAAQ,KAgBjBC,EAAM,EAAQ,GACdC,EAAa,EAAQ,IAEzBr/M,EAAOD,SAAU,EAAIkuD,EAAmB5pD,SAAS,CAC7CiqD,YAAa,eAEbC,UAAW,CACPy4C,OAAQh5C,EAAY3pD,QAAQV,OAC5B27M,eAAgBtxJ,EAAY3pD,QAAQytC,OACpC+5D,MAAO79C,EAAY3pD,QAAQs2L,OAC3BlpH,OAAQzjB,EAAY3pD,QAAQs2L,OAC5B/2C,aAAc51F,EAAY3pD,QAAQytC,OAElCmhB,QAASjF,EAAY3pD,QAAQm4D,KAE7B+iJ,gBAAiBvxJ,EAAY3pD,QAAQo4D,KACrCj7C,MAAOwsC,EAAY3pD,QAAQytC,QAG/BqvH,gBAAiB,WACb,MAAO,CACHt1D,MAAO,GACPp6B,OAAQ,GACRmyE,aAAc,OACd27D,iBAAiB,IAIzB7wJ,gBAAiB,WACb,OAAOl/C,KAAKgwM,UAAUhwM,KAAK3K,QAG/B46M,0BAA2B,SAAmCC,GAC1DlwM,KAAKu/C,SAASv/C,KAAKgwM,UAAUE,KAGjCF,UAAW,SAAmB36M,GAC1B,OAAIA,EAAMmiG,OACC,CACHhlG,KAAM6C,EAAMmiG,OAAOhlG,KACnBwf,MAAO3c,EAAM2c,OAAS3c,EAAMmiG,OAAOjkE,OACnC48K,SAAUR,EAAOxzE,mBAAmB9mI,EAAMmiG,OAAQniG,EAAMgnG,MAAOhnG,EAAM4sE,OAAQ5sE,EAAM++I,eAEhF/+I,EAAMy6M,eACN,CACHt9M,KAAM6C,EAAMy6M,eACZ99L,MAAO3c,EAAMy6M,qBAGjBv7M,QAAQ3C,MAAM,mEAItBguD,OAAQ,WACJ,IAAIP,EAAQr/C,KAERowM,EAAaR,EAAIpxM,aAAa,sBAE9BoyG,EAAS5wG,KAAK3K,MACdmiG,EAASoZ,EAAOpZ,OAChBs4G,EAAiBl/F,EAAOk/F,eACxBrsJ,EAAUmtD,EAAOntD,QACjBssJ,EAAkBn/F,EAAOm/F,gBACzBM,GAAa,EAAIxkJ,EAA0Bh3D,SAAS+7G,EAAQ,CAAC,SAAU,iBAAkB,UAAW,oBAEpGr9E,EAASikE,EAASA,EAAOjkE,OAASu8K,EAWtC,OATIC,IACAtsJ,EAAU,WACNosJ,EAAW5xJ,SAAS,CAChBD,OAAQ,YACRw5C,OAAQn4C,EAAMhqD,MAAMmiG,WAKzB59F,EAAQ/E,QAAQzD,cAAcg/M,GAAY,EAAI/xJ,EAAUxpD,SAAS,GAAIw7M,EAAY,CAAE79M,KAAMwN,KAAK6/C,MAAMrtD,KAAMwf,MAAOhS,KAAK6/C,MAAM7tC,MAC/Hs+L,OAAQ/8K,EAAQ52B,IAAKqD,KAAK6/C,MAAMswJ,SAAU1sJ,QAASA,S,6BCnH/D9zD,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEIg+B,EAAgB97B,EAFD,EAAQ,KAIvB+7B,EAAY,EAAQ,GAIpBC,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxBq/F,EAAoBr/F,EAFD,EAAQ,KAI3BgpD,EAAmB,EAAQ,GAI3BjsB,EAAuB/8B,EAFD,EAAQ,MAIlC,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAcvF,IAAIs7M,EAAc,WACd,SAASA,KACL,EAAI3+K,EAAiB/8B,SAASmL,KAAMuwM,GAEpCvwM,KAAKwwM,aAAev7G,EAAkBpgG,QAAQvB,MAAMm9M,uBACpDzwM,KAAK88J,UAAY,KACjB98J,KAAK0wM,UAAY,KAySV,IACCz5F,EArGA1G,EAjEAt9E,EA7FAC,EA6XZ,OAzZA,EAAIrB,EAAch9B,SAAS07M,EAAa,CAAC,CACrCv8M,IAAK,kBACLN,MAAO,SAAyBi9M,GAC5B,IAAItxJ,EAAQr/C,KAEZ,OAAOi1F,EAAkBpgG,QAAQvB,MAAMs9M,yBAAyBD,EAAc3wM,KAAKwwM,aAAc,GAAGx5M,MAAK,SAAUwzF,GAE/G,OADAnrC,EAAMy9G,UAAYtyE,EAAIq0E,IACfr0E,KACR,SAAUl2F,GAMT,KALoB,sBAAhBA,EAAI60G,QACJ70G,EAAI/B,SAAU,EAAIqsD,EAAiB1oD,IAAI,wCAChC5B,EAAIi5G,aACXj5G,EAAI/B,QAAU+B,EAAI/B,QAAW,YAAc+B,EAAIi5G,WAAa,KAE1Dj5G,OAWf,CACCN,IAAK,mBACLN,OACQw/B,GAAO,EAAIvB,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASC,EAAQg9K,GAC1F,IAEIE,EAAYj4D,EAFZ76F,EAAS/9C,KAGb,OAAO0xB,EAAc78B,QAAQm/B,MAAK,SAAkB7F,GAChD,OACI,OAAQA,EAAStsB,KAAOssB,EAASzwB,MAC7B,KAAK,EAGD,OAFAsC,KAAK/L,MAAO,EACZk6B,EAASzwB,KAAO,GACT,EAAIi0B,EAAU5gC,SAASkkG,EAAkBpgG,QAAQvB,MAAMw9M,uCAElE,KAAK,EACD,IAAK3iL,EAASmH,KAAM,CAChBnH,EAASzwB,KAAO,GAChB,MAMJ,OAFAmzM,EAAa,IAAIl+K,EAAqB99B,QACtCs5B,EAASzwB,KAAO,GACT,EAAIi0B,EAAU5gC,SAAS8/M,EAAW96K,kBAE7C,KAAK,EAED,OADA6iH,EAAsBzqH,EAASmH,KACxBnH,EAASgG,OAAO,SAAU8gE,EAAkBpgG,QAAQvB,MAAMy9M,kBAAkBJ,EAAc3wM,KAAKwwM,aAAc,OAAG99M,OAAWA,EAAWkmJ,GAAqB5hJ,MAAK,SAAUwzF,GAE7K,OADAzsC,EAAO++G,UAAYtyE,EAAIq0E,IAChBr0E,KACR,SAAUl2F,GAMT,KALoB,sBAAhBA,EAAI60G,QACJ70G,EAAI/B,SAAU,EAAIqsD,EAAiB1oD,IAAI,wCAChC5B,EAAIi5G,aACXj5G,EAAI/B,QAAU+B,EAAI/B,QAAW,YAAc+B,EAAIi5G,WAAa,KAE1Dj5G,MAGd,KAAK,GACD,OAAO65B,EAASgG,OAAO,SAAUn0B,KAAKgxM,gBAAgBL,IAE1D,KAAK,GACL,IAAK,MACD,OAAOxiL,EAASiF,UAG7BO,EAAS3zB,UAGhB,SAA0B0rG,GACtB,OAAOx4E,EAAKh3B,MAAM8D,KAAM2C,cAcjC,CACC3O,IAAK,YACLN,MAAO,SAAmBu9M,EAAcC,GACpC,IAAI99I,EAASpzD,KAEb,OAAOi1F,EAAkBpgG,QAAQvB,MAAM69M,0BAA0BF,EAAcC,EAAalxM,KAAKwwM,aAAc,GAAGx5M,MAAK,SAAUwzF,GAG7H,OAFAp3B,EAAO0pG,UAAYtyE,EAAIq0E,IACvBzrG,EAAOs9I,UAAYlmH,EAAI4mH,WAChB5mH,KACR,SAAUl2F,GAMT,KALoB,sBAAhBA,EAAI60G,QACJ70G,EAAI/B,SAAU,EAAIqsD,EAAiB1oD,IAAI,uCAChC5B,EAAIi5G,aACXj5G,EAAI/B,QAAU+B,EAAI/B,QAAW,YAAc+B,EAAIi5G,WAAa,KAE1Dj5G,OAYf,CACCN,IAAK,aACLN,OACQu/B,GAAQ,EAAItB,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASyB,EAAS87K,EAAcC,GAC1G,IAEIL,EAAYj4D,EAFZ/yD,EAAS7lF,KAGb,OAAO0xB,EAAc78B,QAAQm/B,MAAK,SAAmBoB,GACjD,OACI,OAAQA,EAAUvzB,KAAOuzB,EAAU13B,MAC/B,KAAK,EAGD,OAFAsC,KAAK/L,MAAO,EACZmhC,EAAU13B,KAAO,GACV,EAAIi0B,EAAU5gC,SAASkkG,EAAkBpgG,QAAQvB,MAAMw9M,uCAElE,KAAK,EACD,IAAK17K,EAAUE,KAAM,CACjBF,EAAU13B,KAAO,GACjB,MAMJ,OAFAmzM,EAAa,IAAIl+K,EAAqB99B,QACtCugC,EAAU13B,KAAO,GACV,EAAIi0B,EAAU5gC,SAAS8/M,EAAW96K,kBAE7C,KAAK,EAED,OADA6iH,EAAsBxjH,EAAUE,KACzBF,EAAUjB,OAAO,SAAU8gE,EAAkBpgG,QAAQvB,MAAM+9M,mBAAmBJ,EAAcC,EAAalxM,KAAKwwM,aAAc,OAAG99M,OAAWA,EAAWkmJ,GAAqB5hJ,MAAK,SAAUwzF,GAE5L,OADA3E,EAAOi3E,UAAYtyE,EAAIq0E,IAChBr0E,KACR,SAAUl2F,GAMT,KALoB,sBAAhBA,EAAI60G,QACJ70G,EAAI/B,SAAU,EAAIqsD,EAAiB1oD,IAAI,uCAChC5B,EAAIi5G,aACXj5G,EAAI/B,QAAU+B,EAAI/B,QAAW,YAAc+B,EAAIi5G,WAAa,KAE1Dj5G,MAGd,KAAK,GACD,OAAO8gC,EAAUjB,OAAO,SAAUn0B,KAAKsxM,UAAUL,EAAcC,IAEnE,KAAK,GACL,IAAK,MACD,OAAO97K,EAAUhC,UAG9B+B,EAAUn1B,UAGjB,SAAoBu/G,EAAK4E,GACrB,OAAOlxF,EAAM/2B,MAAM8D,KAAM2C,cAalC,CACC3O,IAAK,wBACLN,OACQ68G,GAAQ,EAAI5+E,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAAS2mF,IACnF,IAAIk3F,EAAsBV,EAAYj4D,EACtC,OAAOlnH,EAAc78B,QAAQm/B,MAAK,SAAmBwmF,GACjD,OACI,OAAQA,EAAU34G,KAAO24G,EAAU98G,MAC/B,KAAK,EAID,OAHA6zM,EAAuBt8G,EAAkBpgG,QAAQvB,MAAMqiC,UAAU98B,MAAM,OAAO,GAC9E2hH,EAAU34G,KAAO,EACjB24G,EAAU98G,KAAO,GACV,EAAIi0B,EAAU5gC,SAASkkG,EAAkBpgG,QAAQvB,MAAMw9M,uCAElE,KAAK,EACD,IAAKt2F,EAAUllF,KAAM,CACjBklF,EAAU98G,KAAO,GACjB,MAGJ,IAAKsC,KAAK/L,KAAM,CACZumH,EAAU98G,KAAO,GACjB,MAKJ,OAFAmzM,EAAa,IAAIl+K,EAAqB99B,QACtC2lH,EAAU98G,KAAO,GACV,EAAIi0B,EAAU5gC,SAAS8/M,EAAW96K,kBAE7C,KAAK,EAGD,OAFA6iH,EAAsBp+B,EAAUllF,KAChCklF,EAAU98G,KAAO,IACV,EAAIi0B,EAAU5gC,SAASkkG,EAAkBpgG,QAAQvB,MAAMk+M,aAAa,CACvE3yC,IAAK7+J,KAAK88J,UACV20C,cAAezxM,KAAKwwM,aACpBkB,UAAWH,EACXI,gBAAiB/4D,KAGzB,KAAK,GACDp+B,EAAU98G,KAAO,GACjB,MAEJ,KAAK,GAED,OADA88G,EAAU98G,KAAO,IACV,EAAIi0B,EAAU5gC,SAASkkG,EAAkBpgG,QAAQvB,MAAMs+M,gBAAgB,CAC1E/yC,IAAK7+J,KAAK88J,UACV20C,cAAezxM,KAAKwwM,gBAG5B,KAAK,GACDh2F,EAAU98G,KAAO,GACjB,MAEJ,KAAK,GAED,OADA88G,EAAU98G,KAAO,IACV,EAAIi0B,EAAU5gC,SAASkkG,EAAkBpgG,QAAQvB,MAAMu+M,YAAY,CACtEhzC,IAAK7+J,KAAK88J,UACV20C,cAAezxM,KAAKwwM,aACpBkB,UAAWH,GACZvxM,KAAK/L,OAEZ,KAAK,GACDumH,EAAU98G,KAAO,GACjB,MAEJ,KAAK,GASD,MARA88G,EAAU34G,KAAO,GACjB24G,EAAUpmF,GAAKomF,EAAiB,MAAE,GAEF,MAA5BA,EAAUpmF,GAAGm5E,WACbiN,EAAUpmF,GAAG7hC,SAAU,EAAIqsD,EAAiB1oD,IAAI,+EACzCskH,EAAUpmF,GAAGm5E,aACpBiN,EAAUpmF,GAAG7hC,SAAW,YAAcioH,EAAUpmF,GAAGm5E,WAAa,KAE9DiN,EAAUpmF,GAEpB,KAAK,GACL,IAAK,MACD,OAAOomF,EAAUpnF,UAG9BinF,EAAUr6G,KAAM,CAAC,CAAC,EAAG,UAG5B,WACI,OAAOuwG,EAAMr0G,MAAM8D,KAAM2C,cAelC,CACC3O,IAAK,kBACLN,OACQujH,GAAQ,EAAItlF,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAAS8+I,EAASs/B,GAC5F,IAAIjB,EAAY55M,EAAQs6M,EACxB,OAAO7/K,EAAc78B,QAAQm/B,MAAK,SAAmB8qI,GACjD,OACI,OAAQA,EAAUj9J,KAAOi9J,EAAUphK,MAC/B,KAAK,EAID,GAHAmzM,EAAa,IAAIl+K,EAAqB99B,QACtCoC,OAAS,GAEJ+I,KAAK0wM,UAAW,CACjB5xC,EAAUphK,KAAO,EACjB,MAIJ,OADAohK,EAAUphK,KAAO,GACV,EAAIi0B,EAAU5gC,SAASkkG,EAAkBpgG,QAAQvB,MAAMy+M,0BAA0B/xM,KAAK0wM,UAAW1wM,KAAK88J,UAAW98J,KAAKwwM,aAAcsB,IAE/I,KAAK,EACD76M,EAAS6nK,EAAUxpI,KACnBwpI,EAAUphK,KAAO,GACjB,MAEJ,KAAK,EAOD,OANAohK,EAAU1qI,GAAKzC,EAAU5gC,QACzB+tK,EAAUnqI,GAAKsgE,EAAkBpgG,QAAQvB,MACzCwrK,EAAUoR,GAAKlwK,KAAK88J,UACpBgC,EAAUwC,GAAKthK,KAAKwwM,aACpB1xC,EAAUyC,GAAKuwC,EACfhzC,EAAUphK,KAAO,IACV,EAAIi0B,EAAU5gC,SAAS8/M,EAAW96K,kBAE7C,KAAK,GAID,OAHA+oI,EAAU+C,GAAK/C,EAAUxpI,KACzBwpI,EAAUgD,GAAKhD,EAAUnqI,GAAGq9K,kBAAkBliN,KAAKgvK,EAAUnqI,GAAImqI,EAAUoR,GAAIpR,EAAUwC,GAAIxC,EAAUyC,GAAIzC,EAAU+C,IACrH/C,EAAUphK,KAAO,IACV,EAAIohK,EAAU1qI,IAAI0qI,EAAUgD,IAEvC,KAAK,GACD7qK,EAAS6nK,EAAUxpI,KAEvB,KAAK,GACD,IAAKr+B,EAAOkyG,QAAS,CACjB21D,EAAUphK,KAAO,GACjB,MAGJ,MAAMzG,EAEV,KAAK,GAGD,OAFAs6M,EAAuBt8G,EAAkBpgG,QAAQvB,MAAMqiC,UAAU98B,MAAM,OAAO,GAC9EimK,EAAUphK,KAAO,IACV,EAAIi0B,EAAU5gC,SAASkkG,EAAkBpgG,QAAQvB,MAAMw9M,uCAElE,KAAK,GACD,IAAKhyC,EAAUxpI,KAAM,CACjBwpI,EAAUphK,KAAO,GACjB,MAGJ,IAAKsC,KAAK/L,KAAM,CACZ6qK,EAAUphK,KAAO,GACjB,MASJ,OANAohK,EAAUmzC,GAAKtgL,EAAU5gC,QACzB+tK,EAAUozC,GAAKj9G,EAAkBpgG,QAAQvB,MACzCwrK,EAAUqzC,GAAKnyM,KAAK88J,UACpBgC,EAAUszC,IAAMpyM,KAAKwwM,aACrB1xC,EAAUuzC,IAAMd,EAChBzyC,EAAUphK,KAAO,IACV,EAAIi0B,EAAU5gC,SAAS8/M,EAAW96K,kBAE7C,KAAK,GAUD,OATA+oI,EAAUwzC,IAAMxzC,EAAUxpI,KAC1BwpI,EAAUyzC,IAAM,CACZ1zC,IAAKC,EAAUqzC,GACfV,cAAe3yC,EAAUszC,IACzBV,UAAW5yC,EAAUuzC,IACrBV,gBAAiB7yC,EAAUwzC,KAE/BxzC,EAAU0zC,IAAM1zC,EAAUozC,GAAGV,aAAa1hN,KAAKgvK,EAAUozC,GAAIpzC,EAAUyzC,KACvEzzC,EAAUphK,KAAO,IACV,EAAIohK,EAAUmzC,IAAInzC,EAAU0zC,KAEvC,KAAK,GACD1zC,EAAUphK,KAAO,GACjB,MAEJ,KAAK,GAED,OADAohK,EAAUphK,KAAO,IACV,EAAIi0B,EAAU5gC,SAASkkG,EAAkBpgG,QAAQvB,MAAMs+M,gBAAgB,CAC1E/yC,IAAK7+J,KAAK88J,UACV20C,cAAezxM,KAAKwwM,gBAG5B,KAAK,GACD1xC,EAAUphK,KAAO,GACjB,MAEJ,KAAK,GAED,OADAohK,EAAUphK,KAAO,IACV,EAAIi0B,EAAU5gC,SAASkkG,EAAkBpgG,QAAQvB,MAAMu+M,YAAY,CACtEhzC,IAAK7+J,KAAK88J,UACV20C,cAAezxM,KAAKwwM,aACpBkB,UAAWH,GACZvxM,KAAK/L,OAEZ,KAAK,GACL,IAAK,MACD,OAAO6qK,EAAU1rI,UAG9Bo/I,EAAUxyK,UAGjB,SAAyBo6G,GACrB,OAAOnD,EAAM/6G,MAAM8D,KAAM2C,gBAM9B4tM,EA1aO,GA6blBhgN,EAAQsE,QAAU07M,EAClB//M,EAAOD,QAAUA,EAAiB,S,gBC1elC,IAAIi5L,EAAgB,EAAQ,KACxB2I,EAAW,EAAQ,MACnBh2J,EAAc,EAAQ,KAkC1B3rC,EAAOD,QAJP,SAAc4D,GACZ,OAAOgoC,EAAYhoC,GAAUq1L,EAAcr1L,GAAUg+L,EAASh+L,K,gBCjChE,IAAI01F,EAAa,EAAQ,KACrByzG,EAAW,EAAQ,KA+BvB9sM,EAAOD,QAJP,SAAqBmD,GACnB,OAAgB,MAATA,GAAiB4pM,EAAS5pM,EAAMhE,UAAYm6F,EAAWn2F,K,gBC7BhE,IAAIy7L,EAAa,EAAQ,KACrBjH,EAAe,EAAQ,KAGvBlM,EAAY,kBAwBhBxrL,EAAOD,QALP,SAAkBmD,GAChB,MAAuB,iBAATA,GACXw0L,EAAax0L,IAAUy7L,EAAWz7L,IAAUsoL,I,6BCvBjDrsL,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEIiC,EAAgBC,EAFA,EAAQ,KAMxB68M,EAAQ78M,EAFD,EAAQ,MAMfg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxB88M,EAAO98M,EAFA,EAAQ,OAMf+8M,EAAY/8M,EAFA,EAAQ,MAMpBg9M,EAAWh9M,EAFA,EAAQ,MAMnBw7H,EAASx7H,EAFA,EAAQ,MAIrB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAoBvF,SAAS49M,EAAgBvgM,GACrB,OAAOA,EAAIguD,UAAU,OAAO7jE,QAAQ,mBAAoB,IAiB5D,IAAIq2M,EAAe,WACf,SAASA,EAAaC,GAClB,IAAI74M,EAAUyI,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,GAAmBA,UAAU,GAAK,IAClF,EAAIivB,EAAiB/8B,SAASmL,KAAM8yM,GAEpC9yM,KAAKgzM,SAAW94M,EAChB8F,KAAKw+B,MAAQtkC,EAAQ6O,KACrB/I,KAAKizM,OAAS/4M,EAAQq/L,OAAS,GAE/Bv5L,KAAKkzM,WAAWH,QAI2BrgN,IAAvCsN,KAAKgzM,SAASG,uBACdnzM,KAAKgzM,SAASG,sBAAuB,QAKDzgN,IAApCsN,KAAKgzM,SAASI,oBACdpzM,KAAKgzM,SAASI,mBAAoB,GAyJ1C,OArJA,EAAIvhL,EAAch9B,SAASi+M,EAAc,CAAC,CACtC9+M,IAAK,aACLN,MAAO,SAAoBq/M,GACvB/yM,KAAKqzM,OAAS,IAAIZ,EAAM59M,QAExB,IAAIwI,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiB7K,EAErB,IACI,IAAK,IAAqD8K,EAAjDC,GAAY,EAAI9H,EAAcd,SAASk+M,KAAmB11M,GAA6BG,EAAQC,EAAUC,QAAQC,MAAON,GAA4B,EAAM,CAC/J,IAAIlJ,EAASqJ,EAAM9J,MAEf4/M,GAAY,EAAIZ,EAAK79M,SAASV,EAAQ6L,KAAKw+B,OAE3CunB,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBvzD,EAEtB,IACI,IAAK,IAA0DwzD,EAAtDC,GAAa,EAAIxwD,EAAcd,SAASmL,KAAKizM,UAAmBltJ,GAA8BG,EAASC,EAAWzoD,QAAQC,MAAOooD,GAA6B,EAAM,CACzK,IAAIxvD,EAAI2vD,EAAOxyD,MAEf4/M,EAAUtjN,KAAKuG,EAAEpC,KAEvB,MAAOG,GACL0xD,GAAqB,EACrBC,EAAkB3xD,EACpB,QACE,KACSyxD,GAA8BI,EAAWtoD,QAC1CsoD,EAAWtoD,SAEjB,QACE,GAAImoD,EACA,MAAMC,GAKlB,IAAIyB,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBl1D,EAEtB,IACI,IAAK,IAAwDm1D,EAApDC,GAAa,EAAInyD,EAAcd,SAASy+M,KAAsB5rJ,GAA8BG,EAASC,EAAWpqD,QAAQC,MAAO+pD,GAA6B,EAAM,CACvK,IAEI1zD,EAAM6+M,EAFKhrJ,EAAOn0D,OAEc8I,cAC/BwD,KAAKqzM,OAAO76L,IAAIxkB,IACjBgM,KAAKqzM,OAAO96L,IAAIvkB,EAAK,IAEzBgM,KAAKqzM,OAAO//M,IAAIU,GAAKhE,KAAKmE,IAEhC,MAAOG,GACLqzD,GAAqB,EACrBC,EAAkBtzD,EACpB,QACE,KACSozD,GAA8BI,EAAWjqD,QAC1CiqD,EAAWjqD,SAEjB,QACE,GAAI8pD,EACA,MAAMC,KAKxB,MAAOtzD,GACLgJ,GAAoB,EACpBC,EAAiBjJ,EACnB,QACE,KACS+I,GAA6BI,EAAUI,QACxCJ,EAAUI,SAEhB,QACE,GAAIP,EACA,MAAMC,MAKvB,CACCvJ,IAAK,QACLN,MAAO,SAAe08F,GAClB,IAAI/wC,EAAQr/C,KAMZ,GAJAowF,EAAQyiH,EAAgBziH,GAAO5zF,cAC3BwD,KAAKgzM,SAASG,uBACd/iH,EAAQA,EAAM3zF,QAAQ,SAAU,KAEf,IAAjB2zF,EAAM1gG,OACN,MAAO,GAEX,IAAIg6F,EAAU,GAIV3/B,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBv3D,EAEtB,IACI,IAAK,IAAiEw3D,EAA7DC,GAAa,EAAIx0D,EAAcd,SAASmL,KAAKqzM,OAAOtqM,UAAmBghD,GAA8BG,EAASC,EAAWzsD,QAAQC,MAAOosD,GAA6B,EAAM,CAChL,IAAI/1D,EAAMk2D,EAAOx2D,MAEb6/M,EAAYv/M,EACZgM,KAAKgzM,SAASG,uBACdI,EAAYA,EAAU92M,QAAQ,SAAU,KAE5C,IAAIb,EAAQ23M,EAAUn6M,QAAQg3F,IACf,IAAXx0F,GAAkBoE,KAAKgzM,SAASI,mBAA+B,IAAVx3M,GACrD8tF,EAAQ15F,KAAK,CAAEgE,IAAKA,EAAK4H,MAAOA,KAQ1C,MAAOtH,GACL01D,GAAqB,EACrBC,EAAkB31D,EACpB,QACE,KACSy1D,GAA8BI,EAAWtsD,QAC1CssD,EAAWtsD,SAEjB,QACE,GAAImsD,EACA,MAAMC,GAKlB,IAAIupJ,GAAgB,EAAIZ,EAAS/9M,SAAS60F,GAAS,SAAUm/E,GACzD,OAAOA,EAAUjtK,SAMrB,OAAO,EAAIw1H,EAAOv8H,UAAS,EAAI89M,EAAU99M,SAAS2+M,GAAe,SAAU3qC,GACvE,OAAOxpH,EAAMg0J,OAAO//M,IAAIu1K,EAAU70K,aAIvC8+M,EA7KQ,GAgLnBviN,EAAQsE,QAAUi+M,EAClBtiN,EAAOD,QAAUA,EAAiB,S,gBC7PlC,IAAI+9L,EAAc,EAAQ,KACtBgF,EAAc,EAAQ,MACtBmB,EAAW,EAAQ,MACnBoE,EAAiB,EAAQ,MA+BzB1yJ,EAASsuJ,GAAS,SAAS/rJ,EAAY6qJ,GACzC,GAAkB,MAAd7qJ,EACF,MAAO,GAET,IAAIh5C,EAAS6jM,EAAU7jM,OAMvB,OALIA,EAAS,GAAKmpM,EAAenwJ,EAAY6qJ,EAAU,GAAIA,EAAU,IACnEA,EAAY,GACH7jM,EAAS,GAAKmpM,EAAetF,EAAU,GAAIA,EAAU,GAAIA,EAAU,MAC5EA,EAAY,CAACA,EAAU,KAElBD,EAAY5qJ,EAAY4lJ,EAAYiF,EAAW,GAAI,OAG5D/iM,EAAOD,QAAU41C,G,6BC7CjBx2C,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGXnD,EAAQsE,QAAU,SAAUQ,GACxB,IAAIo+M,EAA6B,YAAjBp+M,EAAM0H,OAClB22M,EAA8B,aAAjBr+M,EAAM0H,OACnB42M,GAAiB,EAAI3vG,EAAanvG,SAAS,CAC3C++M,YAAY,EACZC,mBAAoBJ,EACpBK,oBAAqBJ,GACtBr+M,EAAMuF,WACLm5M,OAAW,EACXN,EACAM,EAAW1+M,EAAM2+M,QAAS,EAAIp1J,EAAiB1oD,IAAI,+CAAgD,EAAI0oD,EAAiB1oD,IAAI,uDACrHw9M,IACPK,EAAW1+M,EAAM2+M,QAAS,EAAIp1J,EAAiB1oD,IAAI,0CAA2C,EAAI0oD,EAAiB1oD,IAAI,mDAE3H,IAAI+9M,EAAO/8K,MAAM9lC,cAAc,MAAO,CAAEwJ,UAAW+4M,EAAgB3hM,MAAO+hM,IAC1E,OAAI1+M,EAAMouD,QACCvsB,MAAM9lC,cACT8iN,EAAmBr/M,QACnB,CAAE4uD,QAASpuD,EAAMouD,SACjBwwJ,GAGGA,GAIf,IAEIjwG,EAAepuG,EAFD,EAAQ,KAItBgpD,EAAmB,EAAQ,GAI3Bs1J,EAAqBt+M,EAFD,EAAQ,KAIhC,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAkBvFzE,EAAOD,QAAUA,EAAiB,S,gBC5DlC,IAAIo6L,EAAc,EAAQ,KACtBD,EAAkB,EAAQ,MAsC9Bl6L,EAAOD,QA1BP,SAAoB+rD,EAAQjnD,EAAOlB,EAAQq3L,GACzC,IAAI8M,GAASnkM,EACbA,IAAWA,EAAS,IAKpB,IAHA,IAAIyH,GAAS,EACTlM,EAAS2F,EAAM3F,SAEVkM,EAAQlM,GAAQ,CACvB,IAAIsE,EAAMqB,EAAMuG,GAEZipC,EAAW2mJ,EACXA,EAAWr3L,EAAOH,GAAMsoD,EAAOtoD,GAAMA,EAAKG,EAAQmoD,QAClD5pD,OAEaA,IAAbmyC,IACFA,EAAWyX,EAAOtoD,IAEhBskM,EACF5N,EAAgBv2L,EAAQH,EAAK6wC,GAE7B8lJ,EAAYx2L,EAAQH,EAAK6wC,GAG7B,OAAO1wC,I,6BCYT3D,EAAOD,QA5BS,SAASowC,EAAW+vD,EAAQrxF,EAAG6kB,EAAGlxB,EAAGC,EAAGvC,EAAG6F,GAOzD,IAAKoqC,EAAW,CACd,IAAI/uC,EACJ,QAAec,IAAXg+F,EACF9+F,EAAQ,IAAIC,MACV,qIAGG,CACL,IAAImU,EAAO,CAAC3G,EAAG6kB,EAAGlxB,EAAGC,EAAGvC,EAAG6F,GACvBmtI,EAAW,GACf9xI,EAAQ,IAAIC,MACV6+F,EAAOj0F,QAAQ,OAAO,WAAa,OAAOuJ,EAAK09H,UAE3ClxI,KAAO,sBAIf,MADAZ,EAAM+xI,YAAc,EACd/xI,K,gBC1CV,IAAI0hH,EAAY,EAAQ,IACpBmU,EAAW,EAAQ,IACnB4L,EAAkB,EAAQ,KAC9B7iI,EAAOD,QAAU,SAAUsjK,GACzB,OAAO,SAAU3rC,EAAO4rC,EAAIC,GAC1B,IAGIrgK,EAHA+2F,EAAI6oB,EAAU4U,GACdx4H,EAAS+3H,EAASh9B,EAAE/6F,QACpBkM,EAAQy3H,EAAgB0gC,EAAWrkK,GAIvC,GAAImkK,GAAeC,GAAMA,GAAI,KAAOpkK,EAASkM,GAG3C,IAFAlI,EAAQ+2F,EAAE7uF,OAEGlI,EAAO,OAAO,OAEtB,KAAMhE,EAASkM,EAAOA,IAAS,IAAIi4J,GAAej4J,KAAS6uF,IAC5DA,EAAE7uF,KAAWk4J,EAAI,OAAOD,GAAej4J,GAAS,EACpD,OAAQi4J,IAAgB,K,cCpB9BtjK,EAAQgG,EAAI5G,OAAOumD,uB,gBCCnB,IAAIglF,EAAM,EAAQ,KAClB1qI,EAAOD,QAAUoG,MAAMC,SAAW,SAAiBuK,GACjD,MAAmB,SAAZ+5H,EAAI/5H,K,gBCHb,IAAI2qF,EAAY,EAAQ,KACpB6D,EAAU,EAAQ,KAGtBn/F,EAAOD,QAAU,SAAUqjK,GACzB,OAAO,SAAU5mE,EAAMy/C,GACrB,IAGIptI,EAAG6kB,EAHHtvB,EAAIsd,OAAOy9E,EAAQ3C,IACnBx9F,EAAIs8F,EAAU2gD,GACdh8I,EAAImE,EAAElF,OAEV,OAAIF,EAAI,GAAKA,GAAKiB,EAAUmjK,EAAY,QAAKlhK,GAC7C2M,EAAIzK,EAAE4uC,WAAWh0C,IACN,OAAU6P,EAAI,OAAU7P,EAAI,IAAMiB,IAAMyzB,EAAItvB,EAAE4uC,WAAWh0C,EAAI,IAAM,OAAU00B,EAAI,MACxF0vI,EAAYh/J,EAAEkd,OAAOtiB,GAAK6P,EAC1Bu0J,EAAYh/J,EAAED,MAAMnF,EAAGA,EAAI,GAA2B00B,EAAI,OAAzB7kB,EAAI,OAAU,IAAqB,S,gBCb5E,IAAIiK,EAAW,EAAQ,IACnB4xH,EAAM,EAAQ,KACdi5E,EAAQ,EAAQ,GAAR,CAAkB,SAC9B3jN,EAAOD,QAAU,SAAU4gC,GACzB,IAAI6wJ,EACJ,OAAO14K,EAAS6nB,UAAmCz+B,KAA1BsvL,EAAW7wJ,EAAGgjL,MAA0BnyB,EAAsB,UAAX9mD,EAAI/pG,M,gBCNlF,IAAI4kG,EAAW,EAAQ,GAAR,CAAkB,YAC7Bq+E,GAAe,EAEnB,IACE,IAAIC,EAAQ,CAAC,GAAGt+E,KAChBs+E,EAAc,OAAI,WAAcD,GAAe,GAE/Cz9M,MAAMo6B,KAAKsjL,GAAO,WAAc,MAAM,KACtC,MAAO3jN,IAETF,EAAOD,QAAU,SAAUoL,EAAM24M,GAC/B,IAAKA,IAAgBF,EAAc,OAAO,EAC1C,IAAI7hG,GAAO,EACX,IACE,IAAIx4E,EAAM,CAAC,GACPK,EAAOL,EAAIg8F,KACf37F,EAAK18B,KAAO,WAAc,MAAO,CAAEC,KAAM40G,GAAO,IAChDx4E,EAAIg8F,GAAY,WAAc,OAAO37F,GACrCz+B,EAAKo+B,GACL,MAAOrpC,IACT,OAAO6hH,I,6BClBT,IAAI+gB,EAAU,EAAQ,KAClBihF,EAAcj5M,OAAO1L,UAAU+L,KAInCnL,EAAOD,QAAU,SAAU+sD,EAAGP,GAC5B,IAAIphD,EAAO2hD,EAAE3hD,KACb,GAAoB,mBAATA,EAAqB,CAC9B,IAAI1E,EAAS0E,EAAK7L,KAAKwtD,EAAGP,GAC1B,GAAsB,iBAAX9lD,EACT,MAAM,IAAIjC,UAAU,sEAEtB,OAAOiC,EAET,GAAmB,WAAfq8H,EAAQh2E,GACV,MAAM,IAAItoD,UAAU,+CAEtB,OAAOu/M,EAAYzkN,KAAKwtD,EAAGP,K,6BClB7B,EAAQ,KACR,IAAIX,EAAW,EAAQ,IACnBD,EAAO,EAAQ,IACf6uD,EAAQ,EAAQ,IAChBrb,EAAU,EAAQ,KAClB+jC,EAAM,EAAQ,IACd8gF,EAAa,EAAQ,KAErB5sE,EAAUlU,EAAI,WAEd+gF,GAAiCzpG,GAAM,WAIzC,IAAI0pG,EAAK,IAMT,OALAA,EAAG/4M,KAAO,WACR,IAAI1E,EAAS,GAEb,OADAA,EAAO4gD,OAAS,CAAEx4C,EAAG,KACdpI,GAEyB,MAA3B,GAAGwF,QAAQi4M,EAAI,WAGpBC,EAAoC,WAEtC,IAAID,EAAK,OACLE,EAAeF,EAAG/4M,KACtB+4M,EAAG/4M,KAAO,WAAc,OAAOi5M,EAAa14M,MAAM8D,KAAM2C,YACxD,IAAI1L,EAAS,KAAK4B,MAAM67M,GACxB,OAAyB,IAAlBz9M,EAAOvH,QAA8B,MAAduH,EAAO,IAA4B,MAAdA,EAAO,GANpB,GASxCzG,EAAOD,QAAU,SAAU06G,EAAKv7G,EAAQiM,GACtC,IAAIk5M,EAASnhF,EAAIzoB,GAEb6pG,GAAuB9pG,GAAM,WAE/B,IAAIvgB,EAAI,GAER,OADAA,EAAEoqH,GAAU,WAAc,OAAO,GACZ,GAAd,GAAG5pG,GAAKxgB,MAGbsqH,EAAoBD,GAAuB9pG,GAAM,WAEnD,IAAIgqG,GAAa,EACbN,EAAK,IAST,OARAA,EAAG/4M,KAAO,WAAiC,OAAnBq5M,GAAa,EAAa,MACtC,UAAR/pG,IAGFypG,EAAGz1M,YAAc,GACjBy1M,EAAGz1M,YAAY2oI,GAAW,WAAc,OAAO8sE,IAEjDA,EAAGG,GAAQ,KACHG,UACLtiN,EAEL,IACGoiN,IACAC,GACQ,YAAR9pG,IAAsBwpG,GACd,UAARxpG,IAAoB0pG,EACrB,CACA,IAAIM,EAAqB,IAAIJ,GACzBK,EAAMv5M,EACRg0F,EACAklH,EACA,GAAG5pG,IACH,SAAyBkqG,EAAc95M,EAAQiX,EAAK8iM,EAAMC,GACxD,OAAIh6M,EAAOM,OAAS64M,EACdM,IAAwBO,EAInB,CAAE13M,MAAM,EAAMjK,MAAOuhN,EAAmBnlN,KAAKuL,EAAQiX,EAAK8iM,IAE5D,CAAEz3M,MAAM,EAAMjK,MAAOyhN,EAAarlN,KAAKwiB,EAAKjX,EAAQ+5M,IAEtD,CAAEz3M,MAAM,MAGf23M,EAAQJ,EAAI,GACZK,EAAOL,EAAI,GAEf94J,EAASlqC,OAAOtiB,UAAWq7G,EAAKqqG,GAChCn5J,EAAK7gD,OAAO1L,UAAWilN,EAAkB,GAAVnlN,EAG3B,SAAU4yC,EAAQnhC,GAAO,OAAOo0M,EAAKzlN,KAAKwyC,EAAQtiC,KAAMmB,IAGxD,SAAUmhC,GAAU,OAAOizK,EAAKzlN,KAAKwyC,EAAQtiC,W,gBC5FrD,IACI5H,EADS,EAAQ,IACEA,UAEvB5H,EAAOD,QAAU6H,GAAaA,EAAUokG,WAAa,I,6BCFrD,IAAItuF,EAAS,EAAQ,IACjBmuC,EAAU,EAAQ,IAClBD,EAAW,EAAQ,IACnB+2E,EAAc,EAAQ,KACtB8P,EAAO,EAAQ,KACfuyE,EAAQ,EAAQ,KAChBviF,EAAa,EAAQ,KACrB3pH,EAAW,EAAQ,IACnB0hG,EAAQ,EAAQ,IAChB+oB,EAAc,EAAQ,KACtBuG,EAAiB,EAAQ,KACzBm7E,EAAoB,EAAQ,KAEhCjlN,EAAOD,QAAU,SAAUoiH,EAAM8lB,EAASnhH,EAASo+L,EAAQ9tF,EAAQ+tF,GACjE,IAAI78E,EAAO5qH,EAAOykG,GACdxqB,EAAI2wC,EACJ88E,EAAQhuF,EAAS,MAAQ,MACzBnvG,EAAQ0vE,GAAKA,EAAEv4F,UACf66F,EAAI,GACJorH,EAAY,SAAU5qG,GACxB,IAAIhqG,EAAKwX,EAAMwyF,GACf7uD,EAAS3jC,EAAOwyF,EACP,UAAPA,EAAkB,SAAU5rG,GAC1B,QAAOs2M,IAAYrsM,EAASjK,KAAa4B,EAAGnR,KAAKkQ,KAAY,IAANX,EAAU,EAAIA,IAC5D,OAAP4rG,EAAe,SAAa5rG,GAC9B,QAAOs2M,IAAYrsM,EAASjK,KAAa4B,EAAGnR,KAAKkQ,KAAY,IAANX,EAAU,EAAIA,IAC5D,OAAP4rG,EAAe,SAAa5rG,GAC9B,OAAOs2M,IAAYrsM,EAASjK,QAAK3M,EAAYuO,EAAGnR,KAAKkQ,KAAY,IAANX,EAAU,EAAIA,IAChE,OAAP4rG,EAAe,SAAa5rG,GAAqC,OAAhC4B,EAAGnR,KAAKkQ,KAAY,IAANX,EAAU,EAAIA,GAAWW,MACxE,SAAaX,EAAG6kB,GAAwC,OAAnCjjB,EAAGnR,KAAKkQ,KAAY,IAANX,EAAU,EAAIA,EAAG6kB,GAAWlkB,QAGvE,GAAgB,mBAALmoF,IAAqBwtH,GAAWl9L,EAAMre,UAAY4wG,GAAM,YACjE,IAAI7iB,GAAIlhE,UAAUvpB,WAMb,CACL,IAAI5I,EAAW,IAAIqzF,EAEf2tH,EAAiBhhN,EAAS8gN,GAAOD,EAAU,IAAM,EAAG,IAAM7gN,EAE1DihN,EAAuB/qG,GAAM,WAAcl2G,EAAS0jB,IAAI,MAExDw9L,EAAmBjiF,GAAY,SAAU35F,GAAQ,IAAI+tD,EAAE/tD,MAEvD67K,GAAcN,GAAW3qG,GAAM,WAIjC,IAFA,IAAIkrG,EAAY,IAAI/tH,EAChBvsF,EAAQ,EACLA,KAASs6M,EAAUN,GAAOh6M,EAAOA,GACxC,OAAQs6M,EAAU19L,KAAK,MAEpBw9L,KACH7tH,EAAIswC,GAAQ,SAAUnmI,EAAQ2pC,GAC5Bg3F,EAAW3gI,EAAQ61F,EAAGwqB,GACtB,IAAI3lB,EAAOyoH,EAAkB,IAAI38E,EAAQxmI,EAAQ61F,GAEjD,OADgBz1F,MAAZupC,GAAuBu5K,EAAMv5K,EAAU2rF,EAAQ56B,EAAK4oH,GAAQ5oH,GACzDA,MAEPp9F,UAAY6oB,EACdA,EAAMxZ,YAAckpF,IAElB4tH,GAAwBE,KAC1BJ,EAAU,UACVA,EAAU,OACVjuF,GAAUiuF,EAAU,SAElBI,GAAcH,IAAgBD,EAAUD,GAExCD,GAAWl9L,EAAMwsB,cAAcxsB,EAAMwsB,WApCzCkjD,EAAIutH,EAAOS,eAAe19E,EAAS9lB,EAAMiV,EAAQguF,GACjDziF,EAAYhrC,EAAEv4F,UAAW0nB,GACzB2rH,EAAKC,MAAO,EA4Cd,OAPA5I,EAAenyC,EAAGwqB,GAElBloB,EAAEkoB,GAAQxqB,EACV9rC,EAAQA,EAAQQ,EAAIR,EAAQgB,EAAIhB,EAAQM,GAAKwrC,GAAK2wC,GAAOruC,GAEpDkrH,GAASD,EAAOU,UAAUjuH,EAAGwqB,EAAMiV,GAEjCz/B,I,gBCpET,IAfA,IASIkuH,EATAnoM,EAAS,EAAQ,IACjBiuC,EAAO,EAAQ,IACf9oB,EAAM,EAAQ,KACdgjG,EAAQhjG,EAAI,eACZijG,EAAOjjG,EAAI,QACX4lG,KAAS/qH,EAAOsmH,cAAetmH,EAAOwmH,UACtCyB,EAAS8C,EACTzpI,EAAI,EAIJ8mN,EAAyB,iHAE3Bz9M,MAAM,KAEDrJ,EAPC,IAQF6mN,EAAQnoM,EAAOooM,EAAuB9mN,QACxC2sD,EAAKk6J,EAAMzmN,UAAWymI,GAAO,GAC7Bl6E,EAAKk6J,EAAMzmN,UAAW0mI,GAAM,IACvBH,GAAS,EAGlB3lI,EAAOD,QAAU,CACf0oI,IAAKA,EACL9C,OAAQA,EACRE,MAAOA,EACPC,KAAMA,I,6BCxBR9lI,EAAOD,QAAU,EAAQ,OAAkB,EAAQ,GAAR,EAAoB,WAC7D,IAAI4vG,EAAIt6F,KAAK8tG,SAGb4iG,iBAAiBzmN,KAAK,KAAMqwG,GAAG,sBACxB,EAAQ,IAAaA,O,6BCL9B,IAAI9jD,EAAU,EAAQ,IAEtB7rD,EAAOD,QAAU,SAAUimN,GACzBn6J,EAAQA,EAAQU,EAAGy5J,EAAY,CAAEl5K,GAAI,WAGnC,IAFA,IAAI5tC,EAASiT,UAAUjT,OACnBg7F,EAAI,IAAI/zF,MAAMjH,GACXA,KAAUg7F,EAAEh7F,GAAUiT,UAAUjT,GACvC,OAAO,IAAIsQ,KAAK0qF,Q,6BCPpB,IAAIruC,EAAU,EAAQ,IAClBmtD,EAAY,EAAQ,IACpB5+F,EAAM,EAAQ,KACd4qM,EAAQ,EAAQ,KAEpBhlN,EAAOD,QAAU,SAAUimN,GACzBn6J,EAAQA,EAAQU,EAAGy5J,EAAY,CAAEzlL,KAAM,SAAcurB,GACnD,IACIrhD,EAASyvF,EAAGx2F,EAAG+U,EADfwtM,EAAQ9zM,UAAU,GAKtB,OAHA6mG,EAAUxpG,OACV/E,OAAoBvI,IAAV+jN,IACGjtG,EAAUitG,GACT/jN,MAAV4pD,EAA4B,IAAIt8C,MACpC0qF,EAAI,GACAzvF,GACF/G,EAAI,EACJ+U,EAAK2B,EAAI6rM,EAAO9zM,UAAU,GAAI,GAC9B6yM,EAAMl5J,GAAQ,GAAO,SAAUo6J,GAC7BhsH,EAAE16F,KAAKiZ,EAAGytM,EAAUxiN,UAGtBshN,EAAMl5J,GAAQ,EAAOouC,EAAE16F,KAAM06F,GAExB,IAAI1qF,KAAK0qF,S,gBCxBpB,IAAIqB,EAAW,EAAQ,IACvBv7F,EAAOD,QAAU,SAAUm9B,EAAUzsB,EAAIvN,EAAOuzB,GAC9C,IACE,OAAOA,EAAUhmB,EAAG8qF,EAASr4F,GAAO,GAAIA,EAAM,IAAMuN,EAAGvN,GAEvD,MAAOhD,GACP,IAAIkP,EAAM8tB,EAAiB,OAE3B,WADYh7B,IAARkN,GAAmBmsF,EAASnsF,EAAI9P,KAAK49B,IACnCh9B,K,gBCRV,IAAIojH,EAAY,EAAQ,IACpBiiB,EAAW,EAAQ,GAAR,CAAkB,YAC7BzB,EAAa39H,MAAM/G,UAEvBY,EAAOD,QAAU,SAAU4gC,GACzB,YAAcz+B,IAAPy+B,IAAqB2iF,EAAUn9G,QAAUw6B,GAAMmjG,EAAWyB,KAAc5kG,K,gBCNjF,IAAI4kG,EAAW,EAAQ,GAAR,CAAkB,YAC7Bq+E,GAAe,EAEnB,IACE,IAAIC,EAAQ,CAAC,GAAGt+E,KAChBs+E,EAAc,OAAI,WAAcD,GAAe,GAE/Cz9M,MAAMo6B,KAAKsjL,GAAO,WAAc,MAAM,KACtC,MAAO3jN,IAETF,EAAOD,QAAU,SAAUoL,EAAM24M,GAC/B,IAAKA,IAAgBF,EAAc,OAAO,EAC1C,IAAI7hG,GAAO,EACX,IACE,IAAIx4E,EAAM,CAAC,GACPK,EAAOL,EAAIg8F,KACf37F,EAAK18B,KAAO,WAAc,MAAO,CAAEC,KAAM40G,GAAO,IAChDx4E,EAAIg8F,GAAY,WAAc,OAAO37F,GACrCz+B,EAAKo+B,GACL,MAAOrpC,IACT,OAAO6hH,I,gBCnBT,IAAI2oB,EAAM,EAAQ,IAClB1qI,EAAOD,QAAUoG,MAAMC,SAAW,SAAiBuK,GACjD,MAAmB,SAAZ+5H,EAAI/5H,K,gBCFb,IAAImyG,EAAY,EAAQ,IACpBkgB,EAAO,EAAQ,KAAkBj9H,EACjCiP,EAAW,GAAGA,SAEdmxM,EAA+B,iBAAVliN,QAAsBA,QAAU9E,OAAOwoB,oBAC5DxoB,OAAOwoB,oBAAoB1jB,QAAU,GAUzCjE,EAAOD,QAAQgG,EAAI,SAA6B46B,GAC9C,OAAOwlL,GAAoC,mBAArBnxM,EAAS1V,KAAKqhC,GATjB,SAAUA,GAC7B,IACE,OAAOqiG,EAAKriG,GACZ,MAAOzgC,GACP,OAAOimN,EAAYhiN,SAK0CiiN,CAAezlL,GAAMqiG,EAAKlgB,EAAUniF,M;;;;;ECTrG,IAAI+kB,EAAwBvmD,OAAOumD,sBAC/BrmD,EAAiBF,OAAOC,UAAUC,eAClCgnN,EAAmBlnN,OAAOC,UAAUqzC,qBAExC,SAASoT,EAASx3B,GACjB,GAAIA,QACH,MAAM,IAAI7pB,UAAU,yDAGrB,OAAOrF,OAAOkvB,GA+CfruB,EAAOD,QA5CP,WACC,IACC,IAAKZ,OAAO0lC,OACX,OAAO,EAMR,IAAIyhL,EAAQ,IAAI5kM,OAAO,OAEvB,GADA4kM,EAAM,GAAK,KACkC,MAAzCnnN,OAAOwoB,oBAAoB2+L,GAAO,GACrC,OAAO,EAKR,IADA,IAAIC,EAAQ,GACHvnN,EAAI,EAAGA,EAAI,GAAIA,IACvBunN,EAAM,IAAM7kM,OAAO4yF,aAAat1G,IAAMA,EAKvC,GAAwB,eAHXG,OAAOwoB,oBAAoB4+L,GAAO79M,KAAI,SAAUhF,GAC5D,OAAO6iN,EAAM7iN,MAEHqI,KAAK,IACf,OAAO,EAIR,IAAIy6M,EAAQ,GAIZ,MAHA,uBAAuBn+M,MAAM,IAAIuB,SAAQ,SAAU68M,GAClDD,EAAMC,GAAUA,KAGf,yBADEtnN,OAAOoZ,KAAKpZ,OAAO0lC,OAAO,GAAI2hL,IAAQz6M,KAAK,IAM9C,MAAOjI,GAER,OAAO,GAIQ4iN,GAAoBvnN,OAAO0lC,OAAS,SAAU/iC,EAAQgqD,GAKtE,IAJA,IAAIvrB,EAEAu+K,EADAt+K,EAAKqlB,EAAS/jD,GAGTsC,EAAI,EAAGA,EAAI+N,UAAUjT,OAAQkF,IAAK,CAG1C,IAAK,IAAIZ,KAFT+8B,EAAOphC,OAAOgT,UAAU/N,IAGnB/E,EAAeC,KAAKihC,EAAM/8B,KAC7Bg9B,EAAGh9B,GAAO+8B,EAAK/8B,IAIjB,GAAIkiD,EAAuB,CAC1Bo5J,EAAUp5J,EAAsBnlB,GAChC,IAAK,IAAIvhC,EAAI,EAAGA,EAAI8/M,EAAQ5/M,OAAQF,IAC/BqnN,EAAiB/mN,KAAKihC,EAAMu+K,EAAQ9/M,MACvCwhC,EAAGs+K,EAAQ9/M,IAAMuhC,EAAKu+K,EAAQ9/M,MAMlC,OAAOwhC,I,gBCxFRxgC,EAAOD,QAAU,CAAE,QAAW,EAAQ,MAAwCsD,YAAY,I,gBCA1F,SAMC,SAAU+zC,EAAMuvK,GACb,kBAEqB,0BAAjB,EAMA,WAIJ,IAAI1sG,EAAO,aACP2sG,EAAgB,YAEhBC,EAAa,CACb,QACA,QACA,OACA,OACA,SAIJ,SAASC,EAAWriN,EAAKqQ,GACrB,IAAI1I,EAAS3H,EAAIqQ,GACjB,GAA2B,mBAAhB1I,EAAO3I,KACd,OAAO2I,EAAO3I,KAAKgB,GAEnB,IACI,OAAOgH,SAASrM,UAAUqE,KAAKnE,KAAK8M,EAAQ3H,GAC9C,MAAOvE,GAEL,OAAO,WACH,OAAOuL,SAASrM,UAAUsM,MAAMA,MAAMU,EAAQ,CAAC3H,EAAK0N,cA0BpE,SAAS40M,EAAsBhgM,EAAOigM,GAElC,IAAK,IAAIhoN,EAAI,EAAGA,EAAI6nN,EAAW3nN,OAAQF,IAAK,CACxC,IAAI8V,EAAa+xM,EAAW7nN,GAC5BwQ,KAAKsF,GAAe9V,EAAI+nB,EACpBkzF,EACAzqG,KAAKy3M,cAAcnyM,EAAYiS,EAAOigM,GAI9Cx3M,KAAKnI,IAAMmI,KAAKmD,MAKpB,SAASu0M,EAAgCpyM,EAAYiS,EAAOigM,GACxD,OAAO,kBACQjjN,UAAY6iN,IACnBG,EAAsBznN,KAAKkQ,KAAMuX,EAAOigM,GACxCx3M,KAAKsF,GAAYpJ,MAAM8D,KAAM2C,aAOzC,SAASg1M,EAAqBryM,EAAYiS,EAAOigM,GAE7C,OA9CJ,SAAoBlyM,GAKhB,MAJmB,UAAfA,IACAA,EAAa,cAGN/Q,UAAY6iN,SAEY1kN,IAAxB6B,QAAQ+Q,GACRgyM,EAAW/iN,QAAS+Q,QACJ5S,IAAhB6B,QAAQsD,IACRy/M,EAAW/iN,QAAS,OAEpBk2G,GAkCJmtG,CAAWtyM,IACXoyM,EAAgCx7M,MAAM8D,KAAM2C,WAGvD,SAASk1M,EAAOrlN,EAAMslN,EAAc3gL,GAClC,IACI4gL,EADAp5M,EAAOqB,KAEPg4M,EAAa,WAuBjB,SAASC,IACL,IAAIC,EAEJ,UAAWzjN,SAAW2iN,EAAtB,CAEA,IACIc,EAAczjN,OAAO6/B,aAAa0jL,GACpC,MAAOlnL,IAGT,UAAWonL,IAAgBd,EACvB,IACI,IAAIe,EAAS1jN,OAAOtD,SAASgnN,OACzBrjL,EAAWqjL,EAAO/+M,QAClBkwF,mBAAmB0uH,GAAc,MACnB,IAAdljL,IACAojL,EAAc,WAAWv8M,KAAKw8M,EAAOxjN,MAAMmgC,IAAW,IAE5D,MAAOhE,IAQb,YAJiCp+B,IAA7BiM,EAAK4wF,OAAO2oH,KACZA,OAAcxlN,GAGXwlN,GAhDP1lN,IACFwlN,GAAc,IAAMxlN,GAwDtBmM,EAAKnM,KAAOA,EAEZmM,EAAK4wF,OAAS,CAAE,MAAS,EAAG,MAAS,EAAG,KAAQ,EAAG,KAAQ,EACvD,MAAS,EAAG,OAAU,GAE1B5wF,EAAK84M,cAAgBtgL,GAAWwgL,EAEhCh5M,EAAKy5M,SAAW,WACZ,OAAOL,GAGXp5M,EAAK2wF,SAAW,SAAU/3E,EAAO8gM,GAI7B,GAHqB,iBAAV9gM,QAA2D7kB,IAArCiM,EAAK4wF,OAAOh4E,EAAMy0D,iBAC/Cz0D,EAAQ5Y,EAAK4wF,OAAOh4E,EAAMy0D,kBAET,iBAAVz0D,GAAsBA,GAAS,GAAKA,GAAS5Y,EAAK4wF,OAAO+oH,QAUhE,KAAM,6CAA+C/gM,EAJrD,GALAwgM,EAAexgM,GACC,IAAZ8gM,GAtEZ,SAAgCE,GAC5B,IAAIC,GAAanB,EAAWkB,IAAa,UAAUvsI,cAEnD,UAAWv3E,SAAW2iN,EAAtB,CAGA,IAEI,YADA3iN,OAAO6/B,aAAa0jL,GAAcQ,GAEpC,MAAO1nL,IAGT,IACIr8B,OAAOtD,SAASgnN,OACd7uH,mBAAmB0uH,GAAc,IAAMQ,EAAY,IACvD,MAAO1nL,MAwDD2nL,CAAuBlhM,GAE3BggM,EAAsBznN,KAAK6O,EAAM4Y,EAAO/kB,UAC7B+B,UAAY6iN,GAAiB7/L,EAAQ5Y,EAAK4wF,OAAO+oH,OACxD,MAAO,oCAOnB35M,EAAK+5M,gBAAkB,SAAUnhM,GACxB0gM,KACDt5M,EAAK2wF,SAAS/3E,GAAO,IAI7B5Y,EAAKg6M,UAAY,SAASN,GACtB15M,EAAK2wF,SAAS3wF,EAAK4wF,OAAOqpH,MAAOP,IAGrC15M,EAAKk6M,WAAa,SAASR,GACvB15M,EAAK2wF,SAAS3wF,EAAK4wF,OAAO+oH,OAAQD,IAItC,IAAIS,EAAeb,IACC,MAAhBa,IACAA,EAA+B,MAAhBhB,EAAuB,OAASA,GAEnDn5M,EAAK2wF,SAASwpH,GAAc,GAS9B,IAAIC,EAAgB,IAAIlB,EAEpBmB,EAAiB,GACrBD,EAAc1pH,UAAY,SAAmB78F,GACzC,GAAoB,iBAATA,GAA8B,KAATA,EAC9B,MAAM,IAAIwC,UAAU,kDAGtB,IAAIo6F,EAAS4pH,EAAexmN,GAK5B,OAJK48F,IACHA,EAAS4pH,EAAexmN,GAAQ,IAAIqlN,EAClCrlN,EAAMumN,EAAcX,WAAYW,EAActB,gBAE3CroH,GAIX,IAAI6pH,SAAexkN,SAAW2iN,EAAiB3iN,OAAOoD,SAAMnF,EAc5D,OAbAqmN,EAAch0M,WAAa,WAMvB,cALWtQ,SAAW2iN,GACf3iN,OAAOoD,MAAQkhN,IAClBtkN,OAAOoD,IAAMohN,GAGVF,GAGXA,EAAcG,WAAa,WACvB,OAAOF,GAGJD,IA/Oc,kCAHzB,I,6BCcA,IAAIrsH,EAAe,EAAQ,IAAUA,aA4BrC,SAASysH,EAAK5lL,GACVvzB,KAAKuzB,OAASA,EACdvzB,KAAKo5M,SAAW,UAChBp5M,KAAKq5M,kBAAoB,KACzBr5M,KAAKs5M,wBAA0B,GAC/Bt5M,KAAK8+C,YAAcvrB,EACnBvzB,KAAKu5M,eAAiBhmL,EACtBvzB,KAAKs3G,UAAY,KACjBt3G,KAAKw5M,cAAgB,EACrBx5M,KAAKy5M,eAAiB,EACtBz5M,KAAK05M,iBAAkB,EACvB15M,KAAKotF,OAAS,CACVgsH,SAAU,KACV50E,QAAS,MAEbxkI,KAAK25M,sBA1CG,EAAQ,IA4Cd1mM,SAASkmM,EAAMzsH,GAWrBysH,EAAKvpN,UAAUgqN,iBAAmB,SAAU9nN,GACxC,GAAwB,eAApBA,EAAMwlG,UAAV,CAGA,IAAIuiH,EAAqC,OAAzB75M,KAAKotF,OAAOgsH,SAC5Bp5M,KAAKotF,OAAOgsH,SAAWtnN,EAEvB,IAAIgoN,EAAe,IACfhoN,EAAMmmG,aAAamhH,WAAap5M,KAAKo5M,UAAYS,IACjDC,EAAa9pN,KAAK,iBAElB8B,EAAMmmG,aAAaysC,YAAc5yI,EAAMmmG,aAAaysC,aAAe1kI,KAAKs3G,WACxEwiG,EAAa9pN,KAAK,kBAElB8B,EAAMmmG,aAAa41E,aAAe/7K,EAAMmmG,aAAa41E,cAAgB7tK,KAAK8+C,aAC1Eg7J,EAAa9pN,KAAK,yBAEsB0C,IAAxCZ,EAAMmmG,aAAa8hH,kBAAkCjoN,EAAMmmG,aAAa8hH,mBAAqB/5M,KAAK05M,iBAClGI,EAAa9pN,KAAK,wBAGtBgQ,KAAKo5M,SAAWtnN,EAAMmmG,aAAamhH,SACnCU,EAAa9pN,KAAK,uBAEd8B,EAAMmmG,aAAa+hH,aACnBh6M,KAAKq5M,kBAAoBvnN,EAAMmmG,aAAa+hH,YAE5CloN,EAAMmmG,aAAa41E,cACnB7tK,KAAK8+C,YAAchtD,EAAMmmG,aAAa41E,aAEtC/7K,EAAMmmG,aAAaysC,aACnB1kI,KAAKs3G,UAAYxlH,EAAMmmG,aAAaysC,YAExC1kI,KAAKw5M,cAAgB1nN,EAAMmmG,aAAagiH,gBACxCj6M,KAAKy5M,eAAiB7yJ,KAAK8+D,MAC3B1lH,KAAK05M,gBAAkB5nN,EAAMmmG,aAAa8hH,iBAE1C/5M,KAAK25M,sBAEL,IAAK,IAAInqN,EAAI,EAAGA,EAAIsqN,EAAapqN,OAAQF,IACrCwQ,KAAK4O,KAAKkrM,EAAatqN,GAAIsC,EAAOkO,QAS1Cm5M,EAAKvpN,UAAUsqN,eAAiB,SAAU1nN,GACtC,IAAI2nN,EAAUn6M,KAAK8+C,YACnB9+C,KAAK8+C,YAActsD,EACfA,IAAS2nN,GACTn6M,KAAK25M,uBASbR,EAAKvpN,UAAUwqN,kBAAoB,SAAU5nN,GACzCwN,KAAKu5M,eAAiB/mN,GAQ1B2mN,EAAKvpN,UAAUyqN,aAAe,SAAU19M,GACpC,IAAI29M,EAASt6M,KAAKs3G,UAClBt3G,KAAKs3G,UAAY36G,EACbA,IAAQ29M,GACRt6M,KAAK25M,uBAObR,EAAKvpN,UAAU+pN,oBAAsB,WACjC35M,KAAKu6M,UAAY3zJ,KAAK8+D,OAS1ByzF,EAAKvpN,UAAU4qN,oBAAsB,WACjC,OAAOx6M,KAAKu6M,WAQhBpB,EAAKvpN,UAAU6qN,gBAAkB,WAC7B,OAAOz6M,KAAKy5M,eAAiBz5M,KAAKw5M,eAQtCL,EAAKvpN,UAAU8qN,8BAAgC,SAAU5oN,GAChDA,EAAMmmG,aAAqDj4F,KAAKs5M,wBAA0BxnN,EAAMmmG,aAAqB,OAAjGj4F,KAAKs5M,wBAA0B,GACxDt5M,KAAK25M,sBACL35M,KAAK4O,KAAK,+BAAgC5O,OAM9CxP,EAAOD,QAAU4oN,G,6BCjMjB,IAEIr6M,EAAWlJ,EAFD,EAAQ,KAMlBE,EAASF,EAFD,EAAQ,KAMhBg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxBm8B,EAAUn8B,EAFD,EAAQ,KAMjB2lH,EAAW3lH,EAFD,EAAQ,KAItB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAkCvF,IAAI0lN,EAAkB,WAUlB,SAASA,EAAgBnqM,IACrB,EAAIohB,EAAiB/8B,SAASmL,KAAM26M,IAEpCnqM,EAAOA,GAAQ,IACVoqM,mBAAqBpqM,EAAKoqM,oBAAsB,GACrD56M,KAAKwQ,KAAOA,EACZxQ,KAAK66M,YAAc,GAGnB76M,KAAK86M,YAAc,GAGnB96M,KAAK+6M,UAAY,GAuBjB/6M,KAAKg7M,UAAY,KAGjBh7M,KAAK63C,OAAS,CACVojK,OAAQ,GACR1+M,KAAM,GACN2+M,MAAO,IA6df,OAzdA,EAAIrpL,EAAch9B,SAAS8lN,EAAiB,CAAC,CACzC3mN,IAAK,aACLN,MAAO,SAAoBynN,GACvBn7M,KAAKo7M,iBAAiBD,GACtBn7M,KAAKq7M,kBAAkBF,GACvBn7M,KAAKs7M,uBAAuBH,GAC5Bn7M,KAAKg7M,UAAYG,EAAaI,aAEnC,CACCvnN,IAAK,yBACLN,MAAO,SAAgCynN,GACnC,IAAI97J,EAAQr/C,KAEPm7M,EAAaK,cAAiBL,EAAaK,aAAapuH,QAI7D+tH,EAAaK,aAAapuH,OAAOhzF,SAAQ,SAAU1J,GAC/C2uD,EAAMw7J,YAAYnqN,EAAE0B,MAAQ1B,OASrC,CACCsD,IAAK,mBACLN,MAAO,SAA0BynN,GAC7B,IAAIp9J,EAAS/9C,KAERm7M,EAAajhE,QAGdihE,EAAajhE,MAAM+gE,SACnB,EAAInlN,EAAOjB,SAASsmN,EAAajhE,MAAM+gE,QAAQ7gN,SAAQ,SAAUmsD,GAC7DxI,EAAO09J,gBAAgBl1J,EAAQ,SAAU40J,EAAajhE,MAAM+gE,OAAO10J,OAGvE40J,EAAajhE,MAAM39I,OACnB,EAAIzG,EAAOjB,SAASsmN,EAAajhE,MAAM39I,MAAMnC,SAAQ,SAAUmsD,GAC3DxI,EAAO09J,gBAAgBl1J,EAAQ,OAAQ40J,EAAajhE,MAAM39I,KAAKgqD,OAGnE40J,EAAajhE,MAAMghE,QACnB,EAAIplN,EAAOjB,SAASsmN,EAAajhE,MAAMghE,OAAO9gN,SAAQ,SAAUmsD,GAC5DxI,EAAO09J,gBAAgBl1J,EAAQ,QAAS40J,EAAajhE,MAAMghE,MAAM30J,UAI9E,CACCvyD,IAAK,kBACLN,MAAO,SAAyB6yD,EAAQm1C,EAAUvsG,GAY9C,OAAQusG,GACJ,IAAK,SAED17F,KAAK07M,uBAAuBn1J,EAAQp3D,GACpC,MACJ,IAAK,OACG6Q,KAAK86M,YAAYv0J,WAKVvmD,KAAK86M,YAAYv0J,GAG5BvmD,KAAK27M,qBAAqBp1J,EAAQp3D,GAClC,MACJ,IAAK,QACG6Q,KAAK86M,YAAYv0J,UAEVvmD,KAAK86M,YAAYv0J,UAGjBvmD,KAAK+6M,UAAUx0J,GAE1B,MACJ,QACIg1D,EAAS1mH,QAAQjD,MAAM,sBAAuB8pG,MAG3D,CACC1nG,IAAK,yBACLN,MAAO,SAAgC6yD,EAAQp3D,GAC3C,GAAKA,EAAKysN,cAAiBzsN,EAAKysN,aAAaxuH,OAI7C,GAAKptF,KAAK86M,YAAYv0J,GAAtB,CASA,IAAIs1J,EAAc77M,KAAK86M,YAAYv0J,GACnCp3D,EAAKysN,aAAaxuH,OAAOhzF,SAAQ,SAAU1J,GAEvC,IADA,IAAIorN,GAAW,EACNtsN,EAAI,EAAGA,EAAIqsN,EAAYD,aAAaxuH,OAAO19F,OAAQF,IAAK,CAC7D,IAAIgkB,EAAUqoM,EAAYD,aAAaxuH,OAAO59F,GAC1CgkB,EAAQphB,OAAS1B,EAAE0B,MAAQohB,EAAQ4iG,WAAa1lH,EAAE0lH,YAClDylG,EAAYD,aAAaxuH,OAAO59F,GAAKkB,EACrCorN,GAAW,GAGdA,GACDD,EAAYD,aAAaxuH,OAAOp9F,KAAKU,WAnBzCsP,KAAK86M,YAAYv0J,GAAU,CACvBq1J,aAAczsN,EAAKysN,gBAyBhC,CACC5nN,IAAK,uBACLN,MAAO,SAA8B6yD,EAAQp3D,GAoCpC6Q,KAAK+6M,UAAUx0J,KAGhBvmD,KAAK+6M,UAAUx0J,GAAU,CACrBw1J,eAAe,EAAIj9M,EAASjK,SAAS,MACrCmnN,UAAW,GACXC,cAAc,EAAIn9M,EAASjK,SAAS,MACpCqnN,qBAAsB,GACtBC,SAAU,GACVC,cAAe,KAGvB,IAAIP,EAAc77M,KAAK+6M,UAAUx0J,GAajC,GAXIp3D,EAAKqsN,cAAgBrsN,EAAKqsN,aAAapuH,QAEvCj+F,EAAKqsN,aAAapuH,OAAOhzF,SAAQ,SAAU1J,GACvCmrN,EAAYI,aAAavrN,EAAE0B,MAAQ1B,KAKvCvB,EAAKktN,uBACLR,EAAYK,qBAAuB/sN,EAAKktN,sBAExCltN,EAAKmtN,QAAS,CACd,IAIIC,EAAMV,EAAYM,SAClB/qK,EAAMjiD,EAAKmtN,QACfC,EANiB,YAMCnrK,EAND,aAMoBmrK,EANpB,YAOjBA,EALuB,yBAKCnrK,EALD,0BAK0BmrK,EAL1B,yBAMvBA,EAPwB,0BAOCnrK,EAPD,2BAO2BmrK,EAP3B,0BAgF5B,GAtEIptN,EAAKqtN,WAAartN,EAAKqtN,UAAUpvH,QACjCj+F,EAAKqtN,UAAUpvH,OAAOhzF,SAAQ,SAAU1J,GASrB,cAAXA,EAAE0B,MAAyB1B,EAAEsnG,UAejC,EAAIliG,EAAOjB,SAASnE,EAAEsnG,SAAS59F,SAAQ,SAAU67F,GACxCvlG,EAAEsnG,QAAQ/B,GAAS,YAGxB,EAAIngG,EAAOjB,SAASnE,EAAEsnG,QAAQ/B,GAAS,WAAW77F,SAAQ,SAAUm5B,GAEhEsoL,EAAYO,cAAc7oL,GAAU,CAChCpkC,KAAMuB,EAAEsnG,QAAQ/B,GAAS,UAAU1iE,GACnC0iE,QAASA,YASzB9mG,EAAK0iJ,UAAY1iJ,EAAK0iJ,SAAS4qE,UAC/BZ,EAAYG,UAAY,IAOxB7sN,EAAK0wD,OAAS1wD,EAAK0wD,MAAMutC,QACzBj+F,EAAK0wD,MAAMutC,OAAOhzF,SAAQ,SAAU1J,GAChC6uD,EAASs8J,EAAYE,cAAerrN,MAGxCvB,EAAK0iJ,UAAY1iJ,EAAK0iJ,SAASzkD,QAC/Bj+F,EAAK0iJ,SAASzkD,OAAOhzF,SAAQ,SAAU1J,EAAGkL,GAEtC2jD,EAASs8J,EAAYE,cAAerrN,GAGpCmrN,EAAYG,UAAUhsN,KAAK,CACvB8B,MAAOpB,EACP2hJ,MAAiB,IAAVz2I,EAAczM,EAAK0iJ,SAAS6qE,WAAa,UAOxDb,EAAYG,UAAUtsN,OAASsQ,KAAKwQ,KAAKoqM,mBAEzC,IADA,IACSprN,EADQqsN,EAAYG,UAAUtsN,OAASsQ,KAAKwQ,KAAKoqM,mBACjCprN,EAAIqsN,EAAYG,UAAUtsN,OAAQF,IACvD,GAAIqsN,EAAYG,UAAUxsN,GAAG6iJ,MAAO,CAEhCwpE,EAAYG,UAAYH,EAAYG,UAAUrnN,MAAMnF,EAAGqsN,EAAYG,UAAUtsN,QAC7E,SAWjB,CACCsE,IAAK,oBACLN,MAAO,SAA2BynN,GAC9B,IAAI/nJ,EAASpzD,KAERm7M,EAAatjK,SAGdsjK,EAAatjK,OAAOojK,SACpB,EAAInlN,EAAOjB,SAASsmN,EAAatjK,OAAOojK,QAAQ7gN,SAAQ,SAAUi7F,GAC9DjiC,EAAOupJ,iBAAiBtnH,EAAS,SAAU8lH,EAAatjK,OAAOojK,OAAO5lH,OAG1E8lH,EAAatjK,OAAOt7C,OACpB,EAAIzG,EAAOjB,SAASsmN,EAAatjK,OAAOt7C,MAAMnC,SAAQ,SAAUi7F,GAC5DjiC,EAAOupJ,iBAAiBtnH,EAAS,OAAQ8lH,EAAatjK,OAAOt7C,KAAK84F,OAGtE8lH,EAAatjK,OAAOqjK,QACpB,EAAIplN,EAAOjB,SAASsmN,EAAatjK,OAAOqjK,OAAO9gN,SAAQ,SAAUi7F,GAC7DjiC,EAAOupJ,iBAAiBtnH,EAAS,QAAS8lH,EAAatjK,OAAOqjK,MAAM7lH,UAIjF,CACCrhG,IAAK,mBACLN,MAAO,SAA0B2hG,EAASqG,EAAUvsG,GAGhD,IAFA,IAAIykC,EAAO,CAAC,SAAU,OAAQ,SAErBC,EAAK,EAAGA,EAAKD,EAAKlkC,OAAQmkC,IAAM,CACrC,IAAI+oL,EAAMhpL,EAAKC,UACR7zB,KAAK63C,OAAO+kK,GAAKvnH,GAE5Br1F,KAAK63C,OAAO6jD,GAAUrG,GAAWlmG,IAkBtC,CACC6E,IAAK,UACLN,MAAO,WACH,IAAImyF,EAAS7lF,KAET7Q,EAAO,CACPoN,KAAM,GACN0+M,OAAQ,GAYRC,MAAO,KAEX,EAAIplN,EAAOjB,SAASmL,KAAK86M,aAAa1gN,SAAQ,SAAUmsD,GACpDp3D,EAAK8rN,OAAO10J,GAAUs/B,EAAOi1H,YAAYv0J,OAE7C,EAAIzwD,EAAOjB,SAASmL,KAAK+6M,WAAW3gN,SAAQ,SAAUmsD,GAClD,IAAIs2J,EAAWh3H,EAAOk1H,UAAUx0J,GAC5Bu2J,EAAW,CACXN,UAAW,CAAEpvH,OAAQ,IACrBouH,aAAc,CAAEpuH,OAAQ,IACxBvtC,MAAO,CAAEutC,OAAQ,IACjBykD,SAAU,CACNzkD,OAAQ,GACRsvH,WAAY,MAEhBL,qBAAsBQ,EAASX,qBAC/BI,QAASO,EAASV,WAGtB,EAAIrmN,EAAOjB,SAASgoN,EAASZ,cAAc7hN,SAAQ,SAAU2iN,GACzDD,EAAStB,aAAapuH,OAAOp9F,KAAK6sN,EAASZ,aAAac,OAI5D,IAAIC,EAAe,CACf5qN,KAAM,YACNi2G,QAAS9hD,EACTyxC,QAAS,KAIb,EAAIliG,EAAOjB,SAASgoN,EAAST,eAAehiN,SAAQ,SAAUm5B,GAC1D,IAAI0pL,EAAcJ,EAAST,cAAc7oL,GACpCypL,EAAahlH,QAAQilH,EAAYhnH,WAClC+mH,EAAahlH,QAAQilH,EAAYhnH,SAAW,CACxC,SAAU,KAGlB+mH,EAAahlH,QAAQilH,EAAYhnH,SAAS,UAAU1iE,GAAU0pL,EAAY9tN,SAG1E,EAAI2G,EAAOjB,SAASmoN,EAAahlH,SAAStoG,OAAS,GACnDotN,EAASN,UAAUpvH,OAAOp9F,KAAKgtN,GAInCH,EAASb,UAAU5hN,SAAQ,SAAU8iN,GACjC,IAAKJ,EAASjrE,SAAS6qE,WAAY,CAG/B,IAAKQ,EAAQ7qE,MACT,OAEJyqE,EAASjrE,SAAS6qE,WAAaQ,EAAQ7qE,MAE3CyqE,EAASjrE,SAASzkD,OAAOp9F,KAAKktN,EAAQprN,UAO1C,IADA,IAAIqrN,GAAgB,EAAIr+M,EAASjK,SAAS,MACjCrF,EAAIstN,EAASjrE,SAASzkD,OAAO19F,OAAS,EAAGF,GAAK,EAAGA,IAAK,CAC3D,IAAI4tN,EAAgBN,EAASjrE,SAASzkD,OAAO59F,GAC7C,GAAgC,OAA5B4tN,EAAchnG,gBAAkD1jH,IAA5B0qN,EAAchnG,UAAtD,CAMA,IAAIinG,EAAiBtrL,EAAQl9B,QAAQkgC,SAASqoL,GAC1CC,EAAep9F,WACXo9F,EAAep9F,SAAS1C,eACxB8/F,EAAerlH,QAAUqlH,EAAep9F,SAAS1C,cAEjD8/F,EAAep9F,SAASq9F,cACxBD,EAAe7zL,OAAS6zL,EAAep9F,SAASq9F,cAGxD/9J,EAAS49J,EAAeE,KAE5B,EAAIvnN,EAAOjB,SAASgoN,EAASd,eAAe3hN,SAAQ,SAAU2iN,IAC1D,EAAIjnN,EAAOjB,SAASgoN,EAASd,cAAcgB,IAAS3iN,SAAQ,SAAUgzG,GAClE,IAAIjQ,EAAK0/G,EAASd,cAAcgB,GAAQ3vG,GACpC+vG,EAAcJ,IAAWI,EAAcJ,GAAQ3vG,KAE/CjQ,EAAKggH,EAAcJ,GAAQ3vG,IAE/B0vG,EAASj9J,MAAMutC,OAAOp9F,KAAKmtG,SAGnChuG,EAAKoN,KAAKgqD,GAAUu2J,KAIxB,IAAIS,EAAU,GAKd,OAJA,EAAIznN,EAAOjB,SAASmL,KAAK66M,aAAazgN,SAAQ,SAAU2iN,GACpDQ,EAAQvtN,KAAK61F,EAAOg1H,YAAYkC,OAG7B,CACH/B,UAAWh7M,KAAKg7M,UAChBwC,UAAWruN,EACXsuN,WAAYz9M,KAAK63C,OACjBgjK,YAAa0C,KAGtB,CACCvpN,IAAK,oBACLN,MAAO,WACH,OAAOsM,KAAKg7M,cAGbL,EAhhBW,GAmhBtB,SAASp7J,EAASm+J,EAAU5rN,GACA,OAApBA,EAAMskH,gBAA0C1jH,IAApBZ,EAAMskH,WAA4BtkH,EAAMM,OAGnEsrN,EAAS5rN,EAAMM,QAChBsrN,EAAS5rN,EAAMM,OAAQ,EAAI0M,EAASjK,SAAS,OAEjD6oN,EAAS5rN,EAAMM,MAAMN,EAAMskH,WAAatkH,GAG5CtB,EAAOD,QAAUoqN,G,6BCvlBjBhrN,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAEXnD,EAAQ24C,OAgBR,SAAgB4a,EAAW02G,GACvB,OAAO,IAAI7gK,EAAW9E,SAAQ,SAAU9D,EAASC,GAC7C,IAAIk4C,GAAS,EACT0xH,EAAM92G,EAAUq3D,KAAKq/C,GACzBI,EAAIE,gBAAkB,WAGlB5xH,GAAS,GAEb0xH,EAAIM,UAAY,WACZ,OAAOlqK,KAEX4pK,EAAIO,UAAY,WACHP,EAAI3jK,OACV+rD,QACE9Z,GAMD4a,EAAU83G,eAAepB,GAE7BzpK,EAAQm4C,IAEZ0xH,EAAI7oK,QAAU,SAAUorG,GACpB,OAAOnsG,EAAOmsG,EAAG7qG,OAAOV,YAxCpC,IAIgCqD,EAJ5B08B,EAAY,EAAQ,GAEpBh4B,GAE4B1E,EAFQ08B,IAEa18B,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,I,8BCXvF,YAsBA,IAEI6J,EAAWlJ,EAFD,EAAQ,KAMlBwuD,EAAcxuD,EAFD,EAAQ,KAMrBG,EAAWH,EAFA,EAAQ,KAMnB+D,EAAa/D,EAFD,EAAQ,IAMpB2lH,EAAW3lH,EAFD,EAAQ,KAItB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvF,IAAI0oN,EAAmB,EAAQ,MAAgB1gN,MAE3CuiK,EAAQ,EAAQ,IAMhBo+C,EAAY,EAAQ,MAWxBptN,EAAOD,QAAQstN,UAAY,qBAK3BrtN,EAAOD,QAAQutN,gBAAkB,2BAKjCttN,EAAOD,QAAQwtN,mBAAqB,2BAKpCvtN,EAAOD,QAAQytN,mBAAqB,uBAKpCxtN,EAAOD,QAAQ0tN,gBAAkB,oBA2BjCztN,EAAOD,QAAQ2tN,cAAgB,SAAuBC,EAAe3tM,GACjEgvJ,EAAM11E,mBAAmBt5E,EAAM,CAAC,UAAW,UAAW,WACtDA,EAAK4tM,SAAW5tM,EAAK4tM,WAAY,EACjCp+M,KAAKm+M,cAAgBA,EACrBn+M,KAAKwQ,KAAOA,EACZxQ,KAAKq+M,uBAAyB1nL,QAAQnmB,EAAK6tM,wBAC3Cr+M,KAAKs+M,QAAU,IAGnB9tN,EAAOD,QAAQ2tN,cAActuN,UAAY,CAKrC2uN,aAAc,SAAsB5hN,GAChCqD,KAAKwQ,KAAKmlB,UAAYh5B,GAQ1B6hN,cAAe,WACX,IAAIn1H,EAAS,CACT0vD,aAAc/4I,KAAKwQ,KAAKslB,aAE5B,MAAO,CACHjT,KAAM7iB,KAAKwQ,KAAKilB,QAChB6kC,KAAM,2BACN+uB,OAAQA,IA4ChB42D,cAAe,SAAuBX,EAAM9uI,GACpCgvJ,EAAM31E,WAAWr5E,GAEjBA,EAAO,CACHoN,SAAUpN,QAEE9d,IAAT8d,IACPA,EAAO,IAIX,IAAI0vI,GAA2C,IAAzB1vI,EAAK0vI,gBAIvBu+D,EAAcjuM,EAAKpe,MAAQktJ,EAAKltJ,MAAQ,2BACxCgF,EAAWoZ,EAAKhe,MAAQ8sJ,EAAK9sJ,KAQ7BsK,EAAOwiJ,EACPxiJ,EAAK2nK,QAAiC,mBAAhB3nK,EAAK2nK,SAC3BlpD,EAAS1mH,QAAQyF,KAAK,6IACtBwC,EAAOA,EAAK2nK,QAKhB,IAAIi6C,EAAcluM,EAAKkuM,iBACHhsN,IAAhBgsN,IACIxwM,EAAOo6G,eACPo2F,GAAc,GAEdnjG,EAAS1mH,QAAQyF,KAAK,8LACtBokN,GAAc,IAItB,IAAIC,EAAiBnuM,EAAKmuM,eACrBD,QAAkChsN,IAAnBisN,IACZzwM,EAAOo6G,gBACP/M,EAAS1mH,QAAQyF,KAAK,iNACtBqkN,GAAiB,GAEjBA,GAAiB,GAYzB,IAAIv8D,EAAS,CAAEC,OAAQ,EAAGxN,MAAO,GAC7BhkJ,OAAU,EAMV+tN,EAAa,KAcjB,GAbKF,IACDE,EAAa,SAAoBC,GAC7B,IAAI/hN,EAAOE,KAAKC,MAAM4hN,GACtB,GAAIF,QAEajsN,KADboK,EAAOA,EAAKgiN,aAER,MAAMjtN,MAAM,gBAGpB,OAAOiL,IAIXoR,EAAOo6G,eAAgB,CACvB,IAAIxkG,EAAQnqB,EAAW9E,QAAQivB,QAC3BwmG,EAAM,IAAIp8G,EAAOo6G,eACrB85B,EAAO93B,IAAMA,EACb,IAAIrhH,EAAK81M,EAAgBj7L,EAAOtT,EAAKoN,SAAU5d,KAAKwQ,KAAK4tM,UAErDY,EAAa,WACb10F,EAAI61B,QACJl3I,EAAG,IAAIpX,MAAM,aAKjBy4H,EAAI20F,cAAgBrB,EAAUjrN,WAAWqsN,EAAY,KAErD10F,EAAIgB,mBAAqB,WACrB,OAAQhB,EAAIiB,YACR,KAAKr9G,EAAOo6G,eAAen8E,KAEvB,IAAIwgF,EADJixF,EAAU3rN,aAAaq4H,EAAI20F,eAE3B,IACI,IAAK30F,EAAIwB,aACL,MAAM,IAAIj6H,MAAM,qBAEpB86H,EAAOrC,EAAIwB,aACP8yF,IACAjyF,EAAOiyF,EAAWjyF,IAExB,MAAOr4H,GAGL,OAFAA,EAAIkuJ,YAAcl4B,EAAIvtH,YACtBkM,EAAG3U,GAGP2U,OAAGvW,EAAW43H,EAAKqC,KAI/BrC,EAAI83B,OAAOyX,iBAAiB,YAAY,SAAU18D,GAC9CygH,EAAU3rN,aAAaq4H,EAAI20F,eAC3B78D,EAAOC,OAASllD,EAAGklD,OACnBD,EAAOvN,MAAQ13C,EAAG03C,MAClBvqB,EAAI20F,cAAgBrB,EAAUjrN,WAAWqsN,EAAY,KACjDxuM,EAAKgvI,iBACLhvI,EAAKgvI,gBAAgB,CACjB6C,OAAQllD,EAAGklD,OACXxN,MAAO13C,EAAG03C,WAItB,IAAIl4I,EAAMqD,KAAKwQ,KAAKilB,QAAU,2BAE1BypL,EAAY,GAEZh/D,GAAmB9oJ,GACnB8nN,EAAUlvN,KAAK,YAAcs5F,mBAAmBlyF,IAG/C4I,KAAKq+M,wBACNa,EAAUlvN,KAAK,gBAAkBs5F,mBAAmBtpF,KAAKwQ,KAAKslB,cAG9DopL,EAAUxvN,OAAS,IACnBiN,GAAO,IAAMuiN,EAAU3iN,KAAK,MAGhC+tH,EAAInP,KAAK,OAAQx+G,GACbqD,KAAKq+M,wBACL/zF,EAAImB,iBAAiB,gBAAiB,UAAYzrH,KAAKwQ,KAAKslB,aAEhEw0F,EAAImB,iBAAiB,eAAgBgzF,GACrCn0F,EAAI2B,KAAKnvH,IACTjM,EAAUizB,EAAMjzB,SAGRsvJ,MAAQ71B,EAAI61B,MAAMlsJ,KAAKq2H,OAC5B,CACH,IAAI+oD,EAAc,GAEdnzB,GAAmB9oJ,IACnBi8K,EAAY8rC,SAAW/nN,GAG3BvG,EAAUmP,KAAKo/M,cAAc5uM,EAAKoN,SAAU,OAAQ,UAAWy1J,EAAav2K,EAAM,CAC9E8zB,OAAQ,oBACRi4F,QAAS,CAAE,eAAgB41F,GAC3Br/K,MAAM,EACNw/K,WAAYA,IAIpB,IAAIjgN,EAAOqB,KAGPq/M,EAAWxuN,EAAQ28G,SAAQ,WAC3B,IAAK,IAAIh+G,EAAI,EAAGA,EAAImP,EAAK2/M,QAAQ5uN,SAAUF,EACvC,GAAImP,EAAK2/M,QAAQ9uN,KAAO4yJ,EAEpB,YADAzjJ,EAAK2/M,QAAQjiN,OAAO7M,EAAG,MAYnC,OALA6vN,EAASl/D,MAAQtvJ,EAAQsvJ,MAEzBiC,EAAOvxJ,QAAUwuN,EACjBr/M,KAAKs+M,QAAQtuN,KAAKoyJ,GAEXi9D,GAGXj/D,aAAc,SAAsBvvJ,GAChC,QAAIA,EAAQsvJ,QACRtvJ,EAAQsvJ,SACD,IAKfm/D,kBAAmB,WACf,OAAOt/M,KAAKs+M,SAGhBiB,gBAAiB,SAAyB3hM,EAAUhhB,EAAQ09D,EAAM+uB,EAAQz4D,EAAQkF,GAC9E,IAAK91B,KAAKwQ,KAAKmlB,UACX,MAAM,IAAI9jC,MAAM,mCAGpB,IAAI2tN,EAAUx/M,KAAKwQ,KAAKmlB,UAAY/E,EAAS0pC,EAE7C,QAAiB5nE,IAAbkrB,IAA2B4hJ,EAAM31E,WAAWjsE,GAC5C,MAAM/rB,MAAM,oDAAqE,IAAb+rB,EAA2B,aAAc,EAAI7nB,EAASlB,SAAS+oB,KAGvI,IAAIpN,EAAO,CACPm4G,IAAK62F,EACL5iN,OAAQA,EACRovH,iBAAiB,EACjB5sF,MAAM,EACNqgL,aAAcz/M,KAAKwQ,KACnBq4G,QAAS,IAEE,QAAXjsH,EACA4T,EAAKwzC,GAAKqlC,EAC+E,iBAA/D,IAAXA,EAAyB,aAAc,EAAItzF,EAASlB,SAASw0F,MAC5E74E,EAAK4uB,KAAOiqD,GAEZvzD,IACAtlB,EAAKq4G,QAAuB,cAAI,UAAY/yF,GAGhD,IAAIhS,EAAQnqB,EAAW9E,QAAQivB,QAE/B,OADA9jB,KAAKwQ,KAAK/d,QAAQ+d,EAAMuuM,EAAgBj7L,EAAOlG,EAAU5d,KAAKwQ,KAAK4tM,WAC5Dt6L,EAAMjzB,SAkCjBuuN,cAAe,SAAuBxhM,EAAUhhB,EAAQ09D,EAAM+4G,EAAalkL,EAAMqhB,GACxE6iK,IACDA,EAAc,IAEdrzK,KAAKq+M,wBACD/gM,SAAS9M,KAETA,EAAO,CACHkvM,eAAgBlvM,IAGnBA,IACDA,EAAO,IAENA,EAAKq4G,UACNr4G,EAAKq4G,QAAU,IAEdr4G,EAAKq4G,QAAQ82F,gBACdnvM,EAAKq4G,QAAQ82F,cAAgB,UAAY3/M,KAAKwQ,KAAKslB,aAEnDu9I,EAAYt6B,qBACLs6B,EAAYt6B,cAGlBs6B,EAAYt6B,eACbs6B,EAAYt6B,aAAe/4I,KAAKwQ,KAAKslB,aAI7C,IAAI8pL,EAAiB5/M,KAAKvN,QAAQmrB,EAAUhhB,EAAQ09D,EAAM+4G,EAAalkL,EAAMqhB,GAEzE7R,EAAOqB,KAWX,OAVA4/M,EAAepgK,OAAM,SAAUlrD,GACR,mBAAfA,EAAI60G,QACJxqG,EAAKw/M,cAAcvvM,KAAK,qBAAsBta,GACxB,uBAAfA,EAAI60G,SACXxqG,EAAKw/M,cAAcvvM,KAAK,aAActa,EAAI/B,QAAS+B,EAAInF,KAAK0wN,gBAM7DD,GAiCXntN,QAAS,SAAiBmrB,EAAUhhB,EAAQ09D,EAAM+4G,EAAalkL,EAAMqhB,GAEjE,IAAIogB,OAAyBl+B,KAD7B8d,EAAOA,GAAQ,IACGogB,OAAuBpgB,EAAKogB,OAAS5wB,KAAKwQ,KAAKogB,OAC7D4uL,EAAUx/M,KAAKwQ,KAAKilB,QAAU7E,EAAS0pC,EAE3C,OAAOt6D,KAAK8/M,gBAAgBliM,EAAUhhB,EAAQ4iN,EAASnsC,EAAalkL,EAAMqhB,IAgC9EsvM,gBAAiB,SAAyBliM,EAAUhhB,EAAQ+rH,EAAK0qD,EAAalkL,EAAMqhB,GAUhF,OATIA,QACAA,EAAO,GACA8M,SAAS9M,KAEhBA,EAAO,CACHkvM,eAAgBlvM,IAIjBxQ,KAAK+/M,SAASniM,EAAUhhB,EAAQ+rH,EAAK0qD,EAAalkL,EAAMqhB,IAcnEwvM,OAAQ,SAAgB1lJ,EAAM+4G,EAAaziJ,GACvC,IAAIizB,EAAc,GAIlB,OAHIwvH,IACAxvH,EAAc,IAAM27G,EAAMp2E,aAAaiqF,IAEpCrzK,KAAKwQ,KAAKilB,QAAU7E,EAAS0pC,EAAOzW,GA6B/Ck8J,SAAU,SAAkBniM,EAAUhhB,EAAQ+rH,EAAK0qD,EAAalkL,EAAMqhB,GAClE,QAAiB9d,IAAbkrB,IAA2B4hJ,EAAM31E,WAAWjsE,GAC5C,MAAM/rB,MAAM,oDAAqE,IAAb+rB,EAA2B,aAAc,EAAI7nB,EAASlB,SAAS+oB,KAEvIpN,EAAOA,GAAQ,GAEf,IAAI7R,EAAOqB,KACX,GAAIA,KAAKwQ,KAAKyvM,YACV,IAAK,IAAIjsN,KAAOgM,KAAKwQ,KAAKyvM,YACjBjgN,KAAKwQ,KAAKyvM,YAAYpwN,eAAemE,KAG1Cq/K,EAAYr/K,GAAOgM,KAAKwQ,KAAKyvM,YAAYjsN,IAIjD,IAAI60H,EAAU22C,EAAMp1E,OAAO,GAAI55E,EAAKq4G,SAAW,IAC3CzpF,OAAqB1sC,IAAd8d,EAAK4uB,MAA4B5uB,EAAK4uB,KAC7Cw/K,EAAapuM,EAAKouM,WAOlBx/K,IACIjwC,IACAA,GAAO,EAAIi1D,EAAYvvD,SAAS1F,GAChC05H,EAAQ,gBAAkB,oBAGzBA,EAAgB,SACjBA,EAAgB,OAAI,yBAGLn2H,IAAfksN,IACAA,EAAa,SAAoBC,GAC7B,OAAO7hN,KAAKC,MAAM4hN,MAK9B,IAAI/6L,EAAQnqB,EAAW9E,QAAQivB,QAE3Bo8L,OAAY,EACZC,GAAW,EACXvlD,OAAM,EACN8kD,EAAiBlvM,EAAKkvM,gBAAkB1/M,KAAKwQ,KAAKkvM,eAElDU,EAAe,WACXV,IACIQ,GACAtC,EAAU3rN,aAAaiuN,GAE3BA,EAAYtC,EAAUjrN,YAAW,WAC7BwtN,GAAW,EACPvlD,GAAOA,EAAIza,OACXya,EAAIza,QAERr8H,EAAM9yB,OAAO,IAAIR,EAAOD,QAAQ8vN,YAAY,CACxCzuN,MAAO,2CACPu3G,QAAS,2BACT73G,QAASouN,OAEdA,KAGXU,IAEA,IAAIE,EAAax8L,EAAMjzB,QAEvB,KACI+pK,EAAM56J,KAAKwQ,KAAK/d,QAAQ,CACpBk2H,IAAKA,EACL/rH,OAAQA,EACRovH,iBAAiB,EACjBhoE,GAAIqvH,EACJpvH,mBAAoBzzC,EAAKyzC,mBACzBs8J,gBAAgB,EAChBzjN,KAAM3N,EACNiwC,MAAM,EACN9tC,QAASouN,EACT72F,QAASA,GAAW,GACpB42F,aAAcz/M,KAAKwQ,OACpB,SAAUlc,EAAKuI,EAAUC,GACpB4iN,IACA9B,EAAU3rN,aAAaiuN,GACnBC,IAKQpB,EAAgBj7L,EAAOlG,EAAUjf,EAAK6R,KAAK4tM,SAAUQ,EACrE4B,CAAUlsN,EAAKuI,EAAUC,SAOrB,eAAgB89J,IAChBA,EAAI6lD,WAAa,SAAU/vN,GAGvB0vN,MAMJxlD,EAAIza,QAAOmgE,EAAWngE,MAAQya,EAAIza,MAAMlsJ,KAAK2mK,KAEvD,MAAO8lD,GACL58L,EAAM9yB,OAAO0vN,GACT9iM,GACAA,EAAS8iM,GAGjB,OAAOJ,IAkBf,IAAIvB,EAAkB,SAAyBj7L,EAAO68L,EAAqBvC,EAAUQ,GAGjF,OAFA+B,EAAsBA,GAAuB,aAEtC,SAAUrsN,EAAKuI,EAAUC,GAC5B,IAAKxI,EACD,IACQuI,EAASqvH,YAAc,IACvB53H,EAqCpB,SAA4BuI,EAAUC,GAClC,IAAIywG,EAAa1wG,EAASqvH,WACtBuyF,EA4BR,SAAgC5hN,GAC5B,IAAI4hN,OAAc,EACd5hN,EAAS+jN,kBAETnC,EAAc5hN,EAAS+jN,kBAAkB,gBAClC/jN,EAASgsH,UAEhB41F,EAAc5hN,EAASgsH,QAAQ,iBAAmB,MAGtD,IAAK41F,EACD,OAAO,KAGX,IACI,OAAOd,EAAiBc,GAC1B,MAAO/tN,GACL,MAAM,IAAImB,MAAM,+BAAkC4sN,EAAc,MAAS/tN,IA7C3DmwN,CAAuBhkN,GAErCvI,OAAM,EACV,GAAImqN,EACA,GAAyB,qBAArBA,EAAYrsN,KAA6B,CACzC,IAAI0uN,EAAyF,iBAA7D,IAAThkN,EAAuB,aAAc,EAAI/G,EAASlB,SAASiI,IAAsBA,EAAOE,KAAKC,MAAMH,GAC1HxI,EAAM,IAAI9D,EAAOD,QAAQ8vN,YAAYS,OACT,eAArBrC,EAAYrsN,OACnBkC,EAAM,IAAIzC,MAAM,mBAAqB07G,EAAa,WAAazwG,IAIlExI,IACDA,EAAM,IAAIzC,MAAM,mBAAqB07G,EAAa,WAGtD,OADAj5G,EAAIi5G,WAAaA,EACVj5G,EAvDeysN,CAAmBlkN,EAAUC,GAC5B8hN,IACP9hN,EAAO8hN,EAAW9hN,IAExB,MAAOpM,GACL4D,EAAM,IAAIzC,MAAM,kCAAoCnB,GAI5D,GAAI4D,EACAwvB,EAAM9yB,OAAOsD,GACbqsN,EAAoBrsN,OACjB,CACH,IAAIk2F,EAAM,CACNjrF,KAAM1C,EAASqvH,WAIfrD,QAAShsH,EAASgsH,QAClB15H,KAAM2N,GAEVgnB,EAAM/yB,QAAQqtN,EAAWthN,EAAO0tF,GAChCm2H,EAAoB,KAAMvC,EAAWthN,EAAO0tF,MA6ExDh6F,EAAOD,QAAQ8vN,YAAc,SAAqBW,GAC9CA,EAAYA,GAAa,GACzBhhN,KAAKmpG,QAAU63G,EAAU73G,QACzBnpG,KAAKxN,KAAOwuN,EAAU73G,SAAW,qBACjCnpG,KAAKzN,QAAUyuN,EAAUpvN,OAAS,kBAClCoO,KAAK7Q,KAAO6xN,GAEhBxwN,EAAOD,QAAQ8vN,YAAYzwN,WAAY,EAAIkP,EAASjK,SAAShD,MAAMjC,WAEnEY,EAAOD,QAAQ8vN,YAAYzwN,UAAUqP,YAAczO,EAAOD,QAAQ8vN,c,kCCz2BlE7vN,EAAOD,QAAU,CAAE,QAAW,EAAQ,MAAyCsD,YAAY,I,gBCA3FrD,EAAOD,QAAU,CAAE,QAAW,EAAQ,MAA2BsD,YAAY,I,6BCE7ElE,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQ0wN,uBAAyB1wN,EAAQ2wN,qBAAuB3wN,EAAQ4wN,oBAAsB5wN,EAAQ6wN,0BAA4B7wN,EAAQ8wN,sBAAwB9wN,EAAQ+wN,2BAA6B/wN,EAAQgxN,gBAAkBhxN,EAAQixN,2BAAwB9uN,EACjQnC,EAAQkxN,qBAAuBA,EAC/BlxN,EAAQmxN,aAAeA,EAEvB,IAAIC,EAAS,EAAQ,KAErB,SAASF,EAAqBliN,EAAMkN,EAAQm1M,GAI1C,OAHAA,EAAYA,GAAa,IACfriN,KAAOA,EACjBqiN,EAAUn1M,OAASA,EACZ,IAAIk1M,EAAO1lG,YAAY,CAC5B7pH,KAAM,4BACN4lG,QAAS4pH,IAwBb,SAASF,EAAaniN,EAAMkN,GAC1B,OAAO,SAAUm1M,GACf,OAAOH,EAAqBliN,EAAMkN,EAAQm1M,IAOlBrxN,EAAQixN,sBAAwBE,EAAa,SAAU,qBAK7DnxN,EAAQgxN,gBAAkBG,EAAa,YAAa,aAKzCnxN,EAAQ+wN,2BAA6BI,EAAa,wBAAyB,uBAKhFnxN,EAAQ8wN,sBAAwBK,EAAa,mBAAoB,kBAK7DnxN,EAAQ6wN,0BAA4BM,EAAa,uBAAwB,sBAK/EnxN,EAAQ4wN,oBAAsBO,EAAa,iBAAkB,gBAK5DnxN,EAAQ2wN,qBAAuBQ,EAAa,eAAgB,iBAK1DnxN,EAAQ0wN,uBAAyBS,EAAa,oBAAqB,oB,6BCjEhG,IAAIliD,EAAQ,EAAQ,IAGpBhvK,EAAOD,QAAU,CAebokJ,iBAAkB,SAA0Bl/G,EAASosL,EAAKxlH,EAAOp6B,EAAQmyE,EAAc0tE,GACnF,GAAmB,iBAARD,IAAqBA,EAC5B,MAAO,GAEX,GAA8B,IAA1BA,EAAIzoN,QAAQ,UACZ,OAAI0oN,EACOD,EAEA,GAGf,IAAIE,EAAmBF,EAAIltN,MAAM,GAC7Bi8B,EAAS,8BACTy4D,EAAS,GAETgT,IACAhT,EAAOgT,MAAQx2F,KAAKuzH,MAAM/8B,IAE1Bp6B,IACAonB,EAAOpnB,OAASp8D,KAAKuzH,MAAMn3D,IAE3BmyE,IACA/qD,EAAOzsF,OAASw3I,GAEhBorB,EAAMz2J,KAAKsgF,GAAQ35F,OAAS,IAG5BkhC,EAAS,gCAGb,IAAIoxL,EAAiBD,EAAiB3oN,QAAQ,KAC1Cq9D,EAAW,GAKf,OAJIurJ,GAAkB,IAClBvrJ,EAAWsrJ,EAAiBxoN,OAAOyoN,GACnCD,EAAmBA,EAAiBxoN,OAAO,EAAGyoN,IAE3CvsL,EAAU7E,EAASmxL,GAAkD,IAA9BviD,EAAMz2J,KAAKsgF,GAAQ35F,OAAe,GAAK,IAAM8vK,EAAMp2E,aAAaC,IAAW5yB,GAY7HwrJ,gBAAiB,SAAyBxsL,EAASysL,EAAiB7lH,EAAOp6B,GACvE,IAAKigJ,EACD,OAAO,KAEN7lH,IACDA,EAAQ,IAEPp6B,IACDA,EAAS,IAEb,IAAIonB,EAAS,CACTgT,MAAOA,EACPp6B,OAAQA,GAMZ,OAAOxsC,EAHI+pI,EAAMh2E,UAAU,2CAA4C,CACnE24H,OAAQD,KAE2C,IAA9B1iD,EAAMz2J,KAAKsgF,GAAQ35F,OAAe,GAAK,IAAM8vK,EAAMp2E,aAAaC,O,6BCtGjG15F,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEI6pD,EAAmB3nD,EAFD,EAAQ,IAM1BD,EAAgBC,EAFA,EAAQ,KAMxBg8B,EAAmBh8B,EAFA,EAAQ,IAM3B4nD,EAA8B5nD,EAFA,EAAQ,IAMtCi8B,EAAgBj8B,EAFA,EAAQ,IAMxB8nD,EAAa9nD,EAFA,EAAQ,IAQzB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GASvF,IAAImtN,EAAoC,SAAUC,GAmC9C,SAASD,KACL,EAAIxwL,EAAiB/8B,SAASmL,KAAMoiN,GAEpC,IAAI/iK,GAAQ,EAAI7B,EAA4B3oD,SAASmL,MAAOoiN,EAAkCljN,YAAa,EAAIq+C,EAAiB1oD,SAASutN,IAAoCtyN,KAAKkQ,OAGlL,OADAoiN,EAAkCE,WAAWtyN,KAAKqvD,GAC3CA,EASX,OAjDA,EAAI3B,EAAW7oD,SAASutN,EAAmCC,IAC3D,EAAIxwL,EAAch9B,SAASutN,EAAmC,KAAM,CAAC,CACjEpuN,IAAK,eACLukB,IAAK,SAAa87F,GACd,IAAIkuG,EAAYH,EAAkCt+E,cAClDs+E,EAAkCt+E,cAAgBzvB,EAElD,IAAIh3G,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiB7K,EAErB,IACI,IAAK,IAA0F8K,EAAtFC,GAAY,EAAI9H,EAAcd,SAASutN,EAAkCE,cAAsBjlN,GAA6BG,EAAQC,EAAUC,QAAQC,MAAON,GAA4B,EAAM,CACrLG,EAAM9J,MAEZ8uN,iBAAiBD,EAAWluG,IAE3C,MAAO//G,GACLgJ,GAAoB,EACpBC,EAAiBjJ,EACnB,QACE,KACS+I,GAA6BI,EAAUI,QACxCJ,EAAUI,SAEhB,QACE,GAAIP,EACA,MAAMC,SAgB1B,EAAIs0B,EAAch9B,SAASutN,EAAmC,CAAC,CAC3DpuN,IAAK,mBACLN,MAAO,WACHa,QAAQ+F,KAAK,uCAGd8nN,EAlD6B,CAXhBxsN,EAFA,EAAQ,MAgEZf,SAgBpButN,EAAkCE,WAAa,GAC/C/xN,EAAQsE,QAAUutN,EAClB5xN,EAAOD,QAAUA,EAAiB,S,6BC9GlCZ,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEIk+B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAI5B,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GA0BvF,IAAIwtN,EAAoB,WACpB,SAASA,KACL,EAAI7wL,EAAiB/8B,SAASmL,KAAMyiN,GAkCxC,OA/BA,EAAI5wL,EAAch9B,SAAS4tN,EAAmB,CAAC,CAC3CzuN,IAAK,mBAaLN,MAAO,SAA0B6jB,EAAOgvC,EAAQuC,EAAiBC,GAC7D,OAAO,OAUZ,CACC/0D,IAAK,WACLN,MAAO,SAAkB6jB,EAAOgvC,EAAQ1hB,QAIrC49K,EApCa,GAuCxBlyN,EAAQsE,QAAU4tN,EAClBjyN,EAAOD,QAAUA,EAAiB,S,6BC9ElCZ,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEIiC,EAAgBC,EAFA,EAAQ,KAMxBE,EAASF,EAFD,EAAQ,KAMhBu1G,EAAYv1G,EAFD,EAAQ,KAIvBrF,EAAQmyN,0BA2ER,WACI,IAAIC,EAAsBryC,EAAGz7K,QAAQ2J,aAAa,+BAElD6zB,EAAQx9B,QAAQ6nG,oBAAoB,eAAgB,GAAIimH,EAAqB,CACzE3wM,OAAO,EAAI4sC,EAAiB1oD,IAAI,gBAChCymG,aAAa,EAAI/9C,EAAiB1oD,IAAI,2CACtCi7G,YAAa,SAAqByxG,GAG9B,OAAIA,EAAkBphL,SAAS,UACpB,EAAIod,EAAiB1oD,IAAI,6BAE7B,EAAI0oD,EAAiB1oD,IAAI,sBAEpC0sN,kBAAmB,CAAC,aAAc,SAClCn0F,QAAQ,EAAI7vE,EAAiB1oD,IAAI,cACjCypD,WAAYkjK,GACC,MAAqB,GAAoB,IA3F9DtyN,EAAQuyN,qBA8FR,SAA8Bv8J,GAC1B,IAAIo8J,EAAsBryC,EAAGz7K,QAAQ2J,aAAa,+BAElD6zB,EAAQx9B,QAAQ6nG,oBAAoB,cAAe,GAAIimH,EAAqB,CACxE3wM,OAAO,EAAI4sC,EAAiB1oD,IAAI,2BAChCu4H,QAAQ,EAAI7vE,EAAiB1oD,IAAI,gBACjCi7G,YAAa,SAAqByxG,GAG9B,OAAIA,EAAkBphL,SAAS,UACpB,EAAIod,EAAiB1oD,IAAI,6BAE7B,EAAI0oD,EAAiB1oD,IAAI,sBAEpC0sN,kBAAmB,CAAC,aAAc,SAClCjjK,WAAY,SAAoBojK,EAAcC,IAgFtD,SAA+Bz8J,EAAQw8J,EAAcC,GACjD,IAAKD,EAAc,OAEnB,IAAIE,EAAYD,EAAM9pN,KAAI,SAAUgqN,GAChC,OAAOA,EAAKnvE,WAIhBovE,EAAqB58J,EAAQ08J,GAAWjsN,MAAK,SAAUC,GACnD,IAAI+9F,EAAOC,EAAkBpgG,QAAQvB,MAAM4hG,QAAQ3uC,GACnD,OAAO68J,EAAqBnsN,EAAOosN,OAAQruH,EAAM/9F,EAAOqsN,YACzD9jK,OAAM,SAAUlrD,GACfC,QAAQ3C,MAAM0C,EAAIkO,OAClB,IAAIi6F,EAAc6zE,EAAGz7K,QAAQ2J,aAAa,uBAC1C6zB,EAAQx9B,QAAQ6nG,oBAAoB,mBAAoB,GAAID,EAAa,CACrEzqF,OAAO,EAAI4sC,EAAiB1oD,IAAI,oBAChCymG,YAAaroG,GAAOA,EAAI/B,QAAU+B,EAAI/B,SAAU,EAAIqsD,EAAiB1oD,IAAI,yBA/FzEqtN,CAAsBh9J,EAAQw8J,EAAcC,KAEnC,MAAqB,GAAoB,IA/G9DzyN,EAAQizN,kBAuHR,SAA2B1xN,GACvB,IAAKA,GAA6B,8BAApBA,EAAMwlG,UAA2C,OAAO,EAItE,IADA,IAAImsH,EAAe,CAAC,mBAAoB,aAAc,gBAC7Cj0N,EAAI,EAAGA,EAAIi0N,EAAa/zN,SAAUF,EACvC,IAAKsC,EAAMmmG,aAAawrH,EAAaj0N,IAAK,OAAO,EAIrD,OAAO,GA/HX,IAEIoK,EAAUhE,EAFD,EAAQ,IAMjBq/F,EAAoBr/F,EAFD,EAAQ,KAM3B8tN,EAAiB9tN,EAFD,EAAQ,MAMxBy8B,EAAUz8B,EAFD,EAAQ,KAIjB+tN,EAAe,EAAQ,KAIvBC,EAAehuN,EAFD,EAAQ,MAMtB06K,EAAK16K,EAFD,EAAQ,IAMZ+oD,EAAe/oD,EAFD,EAAQ,KAMtBu+I,EAAcv+I,EAFD,EAAQ,MAIrBgpD,EAAmB,EAAQ,GAE/B,SAAShpD,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GA4BvF,SAASkuN,EAAqB58J,EAAQy8J,GAClC,IAAIM,EAAU,IAAII,EAAe7uN,QAAQ0xD,GACzC,OAAO+8J,EAAQrI,OAAO+H,GAAOhsN,MAAK,SAAUqsN,GACxC,OAAOl4G,EAAUt2G,QAAQ9D,QAAQ,CAAEsyN,OAAQA,EAAQC,QAASA,OAgEpE,SAAST,EAAmBE,EAAcC,GACtC,GAAKD,EAAL,CAEA,IA0I4BG,EA1IxBD,EAAYD,EAAM9pN,KAAI,SAAUgqN,GAChC,OAAOA,EAAKnvE,WAGhB,GAsEJ,SAAmBkvE,GACf,OAAyB,IAArBA,EAAUvzN,QAAmE,gBAAnD,EAAIi0N,EAAatwE,gBAAgB4vE,EAAU,IAvErEY,CAAUZ,GAAY,CACtB,IAAI/oE,GAqIoBgpE,EArIWD,EAAU,GAsIjC,IAAI9uE,EAAYt/I,QAAQogG,EAAkBpgG,QAAQvB,OAC1CwwN,oBAAoBZ,GACxBpqM,QAAO,SAAUirM,GACjC,IAAI/uH,EAAOC,EAAkBpgG,QAAQvB,MAAM4hG,QAAQ6uH,GACnD,GAAI/uH,EACA,MAAkC,SAA3BA,EAAKuf,sBA1IZ2lC,EAAMxqJ,OAAS,EAEfivD,EAAa9pD,QAAQopD,SAAS,CAC1BD,OAAQ,YACRqqD,QAAS6xC,EAAM,GACftxC,aAAa,EACb3B,SAAS,KAIb,EAAI28G,EAAa/uN,SAAS,CAAEmvN,SAAUf,EAAU,KAAMzjK,OAAM,SAAUlrD,GAClE,IAAImoG,EAAc6zE,EAAGz7K,QAAQ2J,aAAa,uBAC1C6zB,EAAQx9B,QAAQ6nG,oBAAoB,uBAAwB,GAAID,EAAa,CACzEzqF,OAAO,EAAI4sC,EAAiB1oD,IAAI,wBAChCymG,YAAaroG,GAAOA,EAAI/B,QAAU+B,EAAI/B,SAAU,EAAIqsD,EAAiB1oD,IAAI,8BAIlF,GAAyB,IAArB+sN,EAAUvzN,QAEjB,EAAIk0N,EAAa/uN,SAAS,CAAEmvN,SAAUf,EAAU,KAAMzjK,OAAM,SAAUlrD,GAClE,IAAImoG,EAAc6zE,EAAGz7K,QAAQ2J,aAAa,uBAC1C6zB,EAAQx9B,QAAQ6nG,oBAAoB,uBAAwB,GAAID,EAAa,CACzEzqF,OAAO,EAAI4sC,EAAiB1oD,IAAI,wBAChCymG,YAAaroG,GAAOA,EAAI/B,QAAU+B,EAAI/B,SAAU,EAAIqsD,EAAiB1oD,IAAI,6BAG9E,CAEH,IAAI8+F,OAAO,GACX,EAAI4uH,EAAa/uN,WAAWmC,MAAK,SAAUuvD,GAEvC,OADAyuC,EAAOC,EAAkBpgG,QAAQvB,MAAM4hG,QAAQ3uC,GACxC48J,EAAqB58J,EAAQ08J,MACrCjsN,MAAK,SAAUC,GACd,OAAOmsN,EAAqBnsN,EAAOosN,OAAQruH,EAAM/9F,EAAOqsN,YACzD9jK,OAAM,SAAUlrD,GACfC,QAAQ3C,MAAM0C,EAAIkO,OAClB,IAAIi6F,EAAc6zE,EAAGz7K,QAAQ2J,aAAa,uBAC1C6zB,EAAQx9B,QAAQ6nG,oBAAoB,mBAAoB,GAAID,EAAa,CACrEzqF,OAAO,EAAI4sC,EAAiB1oD,IAAI,oBAChCymG,YAAaroG,GAAOA,EAAI/B,QAAU+B,EAAI/B,SAAU,EAAIqsD,EAAiB1oD,IAAI,2BAoCzF,SAASktN,EAAqBJ,EAAOhuH,EAAMsuH,GAEvC,IAAIW,GAAc,EAAInuN,EAAOjB,SAASmuN,GAAOlqM,QAAO,SAAUzZ,GAC1D,MAAoB,UAAb2jN,EAAM3jN,MAEjB,GAA2B,IAAvB4kN,EAAYv0N,QAAgB4zN,EAAQY,MAAO,CAI3C,IAAIznH,EAAc6zE,EAAGz7K,QAAQ2J,aAAa,uBAC1C6zB,EAAQx9B,QAAQ6nG,oBAAoB,qCAAsC,GAAID,EAAa,CACvFzqF,OAAO,EAAI4sC,EAAiB1oD,IAAI,sCAAuC,CAAEiuN,SAAUnvH,EAAKxiG,OACxFmqG,YAAa2mH,EAAQc,aAAaH,EAAY,UAE/C,CACH,IAAII,EAAY,GACZhnN,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiB7K,EAErB,IACI,IAAK,IAAyD8K,EAArDC,GAAY,EAAI9H,EAAcd,SAASovN,KAAuB5mN,GAA6BG,EAAQC,EAAUC,QAAQC,MAAON,GAA4B,EAAM,CACnK,IAAI6lN,EAAO1lN,EAAM9J,MAEjB,GAAoB,UAAhBsvN,EAAME,GAAmB,CACzB,IAAIz2M,EAAS62M,EAAQc,aAAalB,GAClCmB,EAAUr0N,KAAKkzN,EAAO,KAAOz2M,KAGvC,MAAOnY,GACLgJ,GAAoB,EACpBC,EAAiBjJ,EACnB,QACE,KACS+I,GAA6BI,EAAUI,QACxCJ,EAAUI,SAEhB,QACE,GAAIP,EACA,MAAMC,GAKlB,GAAI8mN,EAAU30N,OAAS,EAAG,CACtB,IAAImgI,EAAeygD,EAAGz7K,QAAQ2J,aAAa,uBAC3C6zB,EAAQx9B,QAAQ6nG,oBAAoB,mDAAoD,GAAImzB,EAAc,CACtG79G,OAAO,EAAI4sC,EAAiB1oD,IAAI,iEAAkE,CAAEiuN,SAAUnvH,EAAKxiG,OACnHmqG,YAAa0nH,EAAU9nN,KAAK3C,EAAQ/E,QAAQzD,cAAc,KAAM,UAK5E,OAAO4xN,I,6BCjSXrzN,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEIoC,EAASF,EAFD,EAAQ,KAMhB87B,EAAgB97B,EAFD,EAAQ,KAIvB+7B,EAAY,EAAQ,GAEpBh4B,EAAa/D,EAAuB+7B,GAIpCh8B,EAAgBC,EAFA,EAAQ,KAMxBwoD,EAAsBxoD,EAFA,EAAQ,KAM9Bg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAUxBq/F,GAJUr/F,EAFD,EAAQ,IAMGA,EAFD,EAAQ,MAI3B+tN,EAAe,EAAQ,KAIvB72D,EAAel3J,EAFD,EAAQ,KAItBgpD,EAAmB,EAAQ,GAI3B1sB,EAAUt8B,EAFD,EAAQ,IAMjBy8B,EAAUz8B,EAFD,EAAQ,KAMjB4B,EAAkB5B,EAFD,EAAQ,KAI7B,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAKvF,IAAIqvN,EAAe,WAIf,SAASA,EAAaC,IAClB,EAAI3yL,EAAiB/8B,SAASmL,KAAMskN,GAEhB,MAAhBC,EAAS,IACTvkN,KAAKumD,OAAS,KACdvmD,KAAKq1F,QAAUkvH,IAEfvkN,KAAKumD,OAASg+J,EACdvkN,KAAKq1F,QAAU,MAGnBr1F,KAAK0/I,UAAW,EAChB1/I,KAAKgjN,MAAQ,GACbhjN,KAAKwkN,MAAO,EACZxkN,KAAKykN,iBAAmB,GACxBzkN,KAAK0f,OAAS,GACd1f,KAAKwiD,SAAW,KAmFT,IACCtvB,EA4QZ,OApVA,EAAIrB,EAAch9B,SAASyvN,EAAc,CAAC,CACtCtwN,IAAK,SACLN,MAAO,SAAgBsvN,GACnB,IAAI0B,EAEJ,GAAI1kN,KAAKgjN,MAAMtzN,OAAS,EACpB,MAAM,IAAImC,MAAM,6BAEnB6yN,EAAS1kN,KAAKgjN,OAAOhzN,KAAKkM,MAAMwoN,GAAQ,EAAItmK,EAAoBvpD,SAASmuN,IAE1E,IAAI3lN,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiB7K,EAErB,IACI,IAAK,IAAwD8K,EAApDC,GAAY,EAAI9H,EAAcd,SAASmL,KAAKgjN,SAAiB3lN,GAA6BG,EAAQC,EAAUC,QAAQC,MAAON,GAA4B,EAAM,CAClK,IAAI6lN,EAAO1lN,EAAM9J,MAE8B,QAA3C,EAAIiwN,EAAatwE,gBAAgB6vE,KACjCljN,KAAKykN,iBAAiBvB,GAAQ,QAC9BljN,KAAK0f,OAAOwjM,GAAQ,CAChB/5G,QAAS,YACTw7G,WAAW,EAAI/lK,EAAiB1oD,IAAI,2BAIlD,MAAO5B,GACLgJ,GAAoB,EACpBC,EAAiBjJ,EACnB,QACE,KACS+I,GAA6BI,EAAUI,QACxCJ,EAAUI,SAEhB,QACE,GAAIP,EACA,MAAMC,GAQlB,OAHAyC,KAAKwiD,SAAW7oD,EAAW9E,QAAQivB,QACnC9jB,KAAK4kN,YAAY,GAEV5kN,KAAKwiD,SAAS3xD,UAO1B,CACCmD,IAAK,SACLN,MAAO,WACEsM,KAAKwkN,OAEVxkN,KAAK6kN,WAAY,EACjB7kN,KAAKwiD,SAASxxD,OAAO,IAAIa,MAAM,gBAEpC,CACCmC,IAAK,qBACLN,MAAO,SAA4BwvN,GAC/B,OAAOljN,KAAKykN,iBAAiBvB,KAElC,CACClvN,IAAK,eACLN,MAAO,SAAsBwvN,GACzB,OAAOljN,KAAK0f,OAAOwjM,GAAQljN,KAAK0f,OAAOwjM,GAAMyB,UAAY,OAE9D,CACC3wN,IAAK,gBACLN,OACQw/B,GAAO,EAAIvB,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASC,EAAQ4yB,EAAQ28J,EAAM4B,GACxG,IAAIC,EAAU/vH,EAAMwC,EACpB,OAAO9lE,EAAc78B,QAAQm/B,MAAK,SAAkB7F,GAChD,OACI,OAAQA,EAAStsB,KAAOssB,EAASzwB,MAC7B,KAAK,EAGD,GAAmB,WAFnBqnN,GAAW,EAAIpB,EAAatwE,gBAAgB6vE,IAEf,CACzB/0L,EAASzwB,KAAO,EAChB,MAGJ,OAAOywB,EAASgG,OAAO,SAAU8gE,EAAkBpgG,QAAQvB,MAAM0xN,cAAcz+J,EAAQ28J,IAE3F,KAAK,EACD,GAAmB,eAAb6B,EAA4B,CAC9B52L,EAASzwB,KAAO,GAChB,MAKJ,GAFAs3F,EAAOC,EAAkBpgG,QAAQvB,MAAM4hG,QAAQ3uC,GAErC,CACNp4B,EAASzwB,KAAO,EAChB,MAGJ,MAAM,IAAI7L,MAAM,kBAEpB,KAAK,EAGD,KAFA2lG,EAASxC,EAAKoD,UAAU8qH,MAER,CAAC,OAAQ,UAAU1hL,SAASg2D,EAAOE,YAAc,CAC7DvpE,EAASzwB,KAAO,GAChB,MAGJ,KAAM,CAAEyrG,QAAS,uBAAwBv3G,MAAO,0BAEpD,KAAK,GACD,GAAOkzN,IAAiBttN,EAAgB3C,QAAQ2/B,SAAS,iCAAkCx0B,KAAKumD,QAAU,CACtGp4B,EAASzwB,KAAO,GAChB,MAKJ,OAFAywB,EAAStsB,KAAO,GAChBssB,EAASzwB,KAAO,IACT,EAAIi0B,EAAU5gC,SAASkkG,EAAkBpgG,QAAQvB,MAAM2xN,eAAe/B,IAEjF,KAAK,GAGD,GAFU/0L,EAASmH,KAEN,CACTnH,EAASzwB,KAAO,GAChB,MAGJ,MAAM,IAAI7L,MAAM,uBAEpB,KAAK,GACDs8B,EAASzwB,KAAO,GAChB,MAEJ,KAAK,GAGD,MAFAywB,EAAStsB,KAAO,GAChBssB,EAASiG,GAAKjG,EAAgB,MAAE,IAC1B,CACFg7E,QAAS,sBACTv3G,MAAO,mDAGf,KAAK,GACD,OAAOu8B,EAASgG,OAAO,SAAU8gE,EAAkBpgG,QAAQvB,MAAM2nN,OAAO10J,EAAQ28J,IAEpF,KAAK,GACD,MAAM,IAAIrxN,MAAM,uBAEpB,KAAK,GACL,IAAK,MACD,OAAOs8B,EAASiF,UAG7BO,EAAS3zB,KAAM,CAAC,CAAC,GAAI,UAG5B,SAAuB0rG,EAAI6T,EAAK4E,GAC5B,OAAOjxF,EAAKh3B,MAAM8D,KAAM2C,cAKjC,CACC3O,IAAK,YACLN,MAAO,SAAmBqgJ,EAAS+wE,GAC/B,IAAIzlK,EAAQr/C,KAEZ,OAAO,IAAIrG,EAAW9E,SAAQ,SAAU9D,EAASC,GAC7CuD,QAAQsD,IAAI,YAAck8I,IAGJ,OAAlB10F,EAAMg2C,QACKy3D,EAAaj4J,QAAQs5G,kBAAkB9uD,EAAMg2C,QAAS0+C,GAEtD10F,EAAM6lK,cAAc7lK,EAAMkH,OAAQwtF,EAAS+wE,IAGjD9tN,MAAK,WACNqoD,EAAMwlK,YAIVxlK,EAAMolK,iBAAiB1wE,GAAW,iBAC3B10F,EAAM3/B,OAAOq0H,GAEpBhjJ,QACDyuD,OAAM,SAAUlrD,GACf,IAAI+qD,EAAMwlK,UAAV,CAIA,IAAIF,OAAY,EACZT,GAAQ,EACZ,GAAoB,gBAAhB5vN,EAAI60G,QACJ+6G,GAAQ,EACRS,GAAY,EAAI/lK,EAAiB1oD,IAAI,kEAClC,GAAoB,yBAAhB5B,EAAI60G,QACXw7G,GAAY,EAAI/lK,EAAiB1oD,IAAI,yCAA0C,CAAEq9B,OAAQwgH,QACtF,IAAoB,qBAAhBz/I,EAAI60G,QAKX,YAHAx2G,YAAW,WACP0sD,EAAM8lK,UAAUpxE,EAAS+wE,GAAe9tN,KAAKjG,EAASC,KACvD,KAEI,CAAC,cAAe,mBAAoB,uBAAuBwwC,SAASltC,EAAI60G,SAC/Ew7G,GAAY,EAAI/lK,EAAiB1oD,IAAI,kCAAmC,CAAE4mH,QAASi3B,IAC5D,0BAAhBz/I,EAAI60G,QACXw7G,GAAY,EAAI/lK,EAAiB1oD,IAAI,wCAAyC,CAAE4mH,QAASi3B,IAClE,wBAAhBz/I,EAAI60G,SAAsC27G,EAKjDH,EADuB,gBAAhBrwN,EAAI60G,SACC,EAAIvqD,EAAiB1oD,IAAI,yDACd,+BAAhB5B,EAAI60G,SACC,EAAIvqD,EAAiB1oD,IAAI,oEAEzB,EAAI0oD,EAAiB1oD,IAAI,yBAPrC3B,QAAQ+F,KAAK,QAAUy5I,EAAU,6DACjC10F,EAAM8lK,UAAUpxE,GAAS,GAAM/8I,KAAKjG,EAASC,IASjDquD,EAAMolK,iBAAiB1wE,GAAW,QAClC10F,EAAM3/B,OAAOq0H,GAAW,CAAE4wE,UAAWA,EAAWx7G,QAAS70G,EAAI60G,SAE7D9pD,EAAMmlK,MAAQN,EACd7kK,EAAM6kK,MAAQA,EAEVA,EACAlzN,IAEAD,aAKjB,CACCiD,IAAK,cACLN,MAAO,SAAqB0xN,EAAWN,GACnC,IAAI/mK,EAAS/9C,KAEb,IAAIA,KAAK6kN,UAIT,GAAIO,IAAcplN,KAAKgjN,MAAMtzN,OAA7B,CAuEA,IAAIwzN,EAAOljN,KAAKgjN,MAAMoC,GAKyB,QAA3C,EAAIzB,EAAatwE,gBAAgB6vE,IAOD,YAAhCljN,KAAKykN,iBAAiBvB,GAK1BljN,KAAKmlN,UAAUjC,EAAM4B,GAAe9tN,MAAK,WACrC+mD,EAAO6mK,YAAYQ,EAAY,EAAGN,MACnCtlK,OAAM,WACL,OAAOzB,EAAOyE,SAASzxD,QAAQgtD,EAAO0mK,qBAdtCzkN,KAAK4kN,YAAYQ,EAAY,OA7EjC,CAEI,GADAplN,KAAKwkN,MAAO,GACR,EAAI1uN,EAAOjB,SAASmL,KAAK0f,QAAQhwB,OAAS,IAAMsQ,KAAKq1F,QAAS,CAG9D,IAAIgwH,EAAuB,CAAC,cAAe,mBAAoB,wBAAyB,sBAAuB,uBAC3GC,GAAsB,EAAIxvN,EAAOjB,SAASmL,KAAK0f,QAAQ5G,QAAO,SAAUzZ,GACxE,OAAOgmN,EAAqB7jL,SAASuc,EAAOr+B,OAAOrgB,GAAG8pG,YAG1D,GAAIm8G,EAAoB51N,OAAS,EAAG,CAChC,IAAI61N,EAAiB,WACjB,IAAI50N,EAAW20N,EAAoBpsN,KAAI,SAAUkG,GAC7C,OAAO2+C,EAAOonK,UAAU/lN,GAAG,MAE/BzF,EAAW9E,QAAQ/B,IAAInC,GAAUqG,MAAK,WAClC,OAAO+mD,EAAOyE,SAASzxD,QAAQgtD,EAAO0mK,sBAI9C,IAAKjtN,EAAgB3C,QAAQ2/B,SAAS,iCAAkCx0B,KAAKumD,QAEzE,YADAg/J,IAIJ,IAAIC,EAAwBtzL,EAAQr9B,QAAQ2J,aAAa,iCAuCzD,OAtCAjK,QAAQsD,IAAI,2CACZw6B,EAAQx9B,QAAQ6nG,oBAAoB,mDAAoD,GAAI8oH,EAAuB,CAC/GF,oBAAqBA,EAAoBpsN,KAAI,SAAUkG,GACnD,MAAO,CAAEm0B,OAAQn0B,EAAGulN,UAAW5mK,EAAOr+B,OAAOtgB,GAAGulN,cAEpDc,gBAAiB,WACb,OAAOF,KAEXG,SAAU,WAEN,IAAI3/J,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBvzD,EAEtB,IACI,IAAK,IAAkEwzD,EAA9DC,GAAa,EAAIxwD,EAAcd,SAASywN,KAAgCv/J,GAA8BG,EAASC,EAAWzoD,QAAQC,MAAOooD,GAA6B,EAAM,CACjL,IAAI4/J,EAAQz/J,EAAOxyD,MAEnBqqD,EAAO0mK,iBAAiBkB,GAAS,WAEvC,MAAOrxN,GACL0xD,GAAqB,EACrBC,EAAkB3xD,EACpB,QACE,KACSyxD,GAA8BI,EAAWtoD,QAC1CsoD,EAAWtoD,SAEjB,QACE,GAAImoD,EACA,MAAMC,GAKlBlI,EAAOyE,SAASzxD,QAAQgtD,EAAO0mK,sBAM/CzkN,KAAKwiD,SAASzxD,QAAQiP,KAAKykN,uBA4BhCH,EApXQ,GAsYnB/zN,EAAQsE,QAAUyvN,EAClB9zN,EAAOD,QAAUA,EAAiB,S,6BCxclC,IAEI0kG,EAAoBr/F,EAFD,EAAQ,KAM3By8B,EAAUz8B,EAFD,EAAQ,KAMjBs8B,EAAUt8B,EAFD,EAAQ,IAIjBgpD,EAAmB,EAAQ,GAI3BD,EAAe/oD,EAFD,EAAQ,KAMtBgwN,EAQJ,SAAiC3wN,GAAO,GAAIA,GAAOA,EAAIpB,WAAc,OAAOoB,EAAc,IAAIw9B,EAAS,GAAI,GAAW,MAAPx9B,EAAe,IAAK,IAAIjB,KAAOiB,EAAWtF,OAAOC,UAAUC,eAAeC,KAAKmF,EAAKjB,KAAMy+B,EAAOz+B,GAAOiB,EAAIjB,IAAgC,OAAtBy+B,EAAO59B,QAAUI,EAAYw9B,EARtPC,CAFC,EAAQ,MAMjB/4B,EAAa/D,EAFD,EAAQ,IAIpB+tN,EAAe,EAAQ,KAI3B,SAAS/tN,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAqIvFzE,EAAOD,QAvGP,SAAoBigB,QAEK9d,KADrB8d,EAAOA,GAAQ,IACNq1M,UAAuBr1M,EAAKq1M,SAAU,GAE/C,IAAIppH,EAAcvqE,EAAQr9B,QAAQ2J,aAAa,uBAC3CsnN,EAAS5zL,EAAQr9B,QAAQ2J,aAAa,oBAEtC61G,EAASpf,EAAkBpgG,QAAQvB,MACvC,GAAI+gH,EAAOp+E,UAEP,OADA0oB,EAAa9pD,QAAQopD,SAAS,CAAED,OAAQ,yBACjCrkD,EAAW9E,QAAQ9D,QAAQ,MAGtC,IAAIg1N,EAAgBv1M,EAAKwzM,SAAW,uBAAyB,eAGzDgC,EAAax1M,EAAKw1M,YAAc,GAGpC,GAFAA,EAAWC,OAASD,EAAWC,QAAUF,EACzCC,EAAWE,WAAaF,EAAWE,YAAc,UAC7C11M,EAAKwzM,eAAkCtxN,IAAtBszN,EAAW/K,OAC5B,QAAQ,EAAI0I,EAAatwE,gBAAgB7iI,EAAKwzM,WAC1C,IAAK,aACDgC,EAAW/K,OAAS,CAACzqM,EAAKwzM,UAC1B,MACJ,IAAK,QACDgC,EAAWG,YAAc,CAAC,CACtBzU,UAAWz8G,EAAkBpgG,QAAQvB,MAAMmlJ,sBAAqB,GAChE2tE,OAAQ,QACRryE,QAASvjI,EAAKwzM,WAI1BxzM,EAAKwzM,eAAqCtxN,IAAzBszN,EAAWK,YAC5BL,EAAWK,WAAY,QAIN3zN,IAAjB8d,EAAK81M,UACL91M,EAAK81M,SAAU,GAMnBN,EAAWO,cAAgBP,EAAWO,eAAiB,CAAC,CACpDvuH,QAAS,CACLwuH,aAAc,YAElBp0N,KAAM,sBACNgkH,UAAW,KAGf,IAAIp0D,OAAQ,EACRxxC,EAAKq1M,UAAS7jK,EAAQ3vB,EAAQx9B,QAAQ+/B,aAAakxL,EAAQ,KAAM,sBAErE,IAAIv/J,OAAS,EACb,OAAO8tD,EAAOoyG,WAAWT,GAAYx4G,SAAQ,WACrCxrD,GAAOA,EAAMgB,WAClBhsD,MAAK,SAAUwzF,GAEd,OADAjkC,EAASikC,EAAI6d,QACT73F,EAAKwzM,SACE4B,EAAMn/E,UAAUlgF,EAAQ/1C,EAAKwzM,UAE7BrqN,EAAW9E,QAAQ9D,aAE/BiG,MAAK,WAgBJ,OAXIwZ,EAAK81M,SACL3nK,EAAa9pD,QAAQopD,SAAS,CAC1BD,OAAQ,YACRqqD,QAAS9hD,EACTqiD,aAAa,EAIb3B,SAAS,IAGV1gD,KACR,SAAUjyD,GAETqqD,EAAa9pD,QAAQopD,SAAS,CAC1BD,OAAQ,oBAEZzpD,QAAQ3C,MAAM,yBAA2B20D,EAAS,IAAMjyD,GACxD,IAAIqoG,GAAc,EAAI/9C,EAAiB1oD,IAAI,4DAW3C,MAVoB,+BAAhB5B,EAAI60G,UAIJxM,GAAc,EAAI/9C,EAAiB1oD,IAAI,4DAE3Cm8B,EAAQx9B,QAAQ6nG,oBAAoB,yBAA0B,GAAID,EAAa,CAC3EzqF,OAAO,EAAI4sC,EAAiB1oD,IAAI,0BAChCymG,YAAaA,IAEV,U,gBCjKf,IAGI2qF,EAHY,EAAQ,IAGLjB,CAAU12L,OAAQ,UAErCa,EAAOD,QAAU+2L,G,gBCLjB,IAAIo/B,EAAiB,EAAQ,MACzBC,EAAkB,EAAQ,MAC1BC,EAAe,EAAQ,MACvBC,EAAe,EAAQ,MACvBC,EAAe,EAAQ,MAS3B,SAAS19B,EAAUniK,GACjB,IAAIrrB,GAAS,EACTlM,EAAoB,MAAXu3B,EAAkB,EAAIA,EAAQv3B,OAG3C,IADAsQ,KAAKilC,UACIrpC,EAAQlM,GAAQ,CACvB,IAAIuvC,EAAQhY,EAAQrrB,GACpBoE,KAAKuY,IAAI0mB,EAAM,GAAIA,EAAM,KAK7BmqJ,EAAUx5L,UAAUq1C,MAAQyhL,EAC5Bt9B,EAAUx5L,UAAkB,OAAI+2N,EAChCv9B,EAAUx5L,UAAU0D,IAAMszN,EAC1Bx9B,EAAUx5L,UAAU4oB,IAAMquM,EAC1Bz9B,EAAUx5L,UAAU2oB,IAAMuuM,EAE1Bt2N,EAAOD,QAAU64L,G,gBC/BjB,IAAIqB,EAAK,EAAQ,KAoBjBj6L,EAAOD,QAVP,SAAsBg4B,EAAOv0B,GAE3B,IADA,IAAItE,EAAS64B,EAAM74B,OACZA,KACL,GAAI+6L,EAAGliK,EAAM74B,GAAQ,GAAIsE,GACvB,OAAOtE,EAGX,OAAQ,I,cCmBVc,EAAOD,QAJP,SAAYmD,EAAOkuC,GACjB,OAAOluC,IAAUkuC,GAAUluC,GAAUA,GAASkuC,GAAUA,I,gBCjC1D,IAAImlL,EAAY,EAAQ,MAiBxBv2N,EAAOD,QAPP,SAAoB2I,EAAKlF,GACvB,IAAI7E,EAAO+J,EAAIqwL,SACf,OAAOw9B,EAAU/yN,GACb7E,EAAmB,iBAAP6E,EAAkB,SAAW,QACzC7E,EAAK+J,M,6BCZX,IAEI+gG,EAAWrkG,EAFD,EAAQ,KAMlBE,EAASF,EAFD,EAAQ,KAMhBD,EAAgBC,EAFA,EAAQ,KAMxBC,EAAWD,EAFD,EAAQ,KAMlB2nD,EAAmB3nD,EAFD,EAAQ,IAM1Bg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxB4nD,EAA8B5nD,EAFA,EAAQ,IAMtC8nD,EAAa9nD,EAFA,EAAQ,IAQzB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAMvF,IAAI+xN,EAAkB,SAAU36G,GAG5B,SAAS26G,KACL,EAAIp1L,EAAiB/8B,SAASmL,KAAMgnN,GAEpC,IAAI3nK,GAAQ,EAAI7B,EAA4B3oD,SAASmL,MAAOgnN,EAAgB9nN,YAAa,EAAIq+C,EAAiB1oD,SAASmyN,IAAkBl3N,KAAKkQ,OAS9I,OAPAq/C,EAAM4nK,gBAAkB,GAOjB5nK,EAyHX,OAvIA,EAAI3B,EAAW7oD,SAASmyN,EAAiB36G,IA8BzC,EAAIx6E,EAAch9B,SAASmyN,EAAiB,CAAC,CACzChzN,IAAK,uBACLN,MAAO,SAA8B6yD,EAAQwmE,GACzC,IAAIm6F,EAAgB,GAEhBC,GAAgB,EAAItxN,EAAShB,SAAS,GAAImL,KAAKinN,gBAAgB1gK,IAE/DlpD,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiB7K,EAErB,IACI,IAAK,IAAgE8K,EAA5DC,GAAY,EAAI9H,EAAcd,SAASk4H,KAA8B1vH,GAA6BG,EAAQC,EAAUC,QAAQC,MAAON,GAA4B,EAAM,CAC1K,IAAIkwF,EAAI/vF,EAAM9J,MAEVyhH,EAAW5nB,EAAEowB,cAIZwpG,EAAchyG,IAAqE,KAAxD,EAAIr/G,EAAOjB,SAASsyN,EAAchyG,IAAWzlH,QACzEw3N,EAAcl3N,KAAKu9F,UAEhB45H,EAAchyG,IAE3B,MAAO7gH,GACLgJ,GAAoB,EACpBC,EAAiBjJ,EACnB,QACE,KACS+I,GAA6BI,EAAUI,QACxCJ,EAAUI,SAEhB,QACE,GAAIP,EACA,MAAMC,GAKlB,OAAO2pN,IAEZ,CACClzN,IAAK,8BACLN,MAAO,SAAqC6yD,EAAQwmE,EAAoB36H,GACpE,IAAI+0N,GAAgB,EAAItxN,EAAShB,SAAS,GAAImL,KAAKinN,gBAAgB1gK,IAI/DR,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBvzD,EAEtB,IACI,IAAK,IAAiEwzD,EAA7DC,GAAa,EAAIxwD,EAAcd,SAASk4H,KAA+BhnE,GAA8BG,EAASC,EAAWzoD,QAAQC,MAAOooD,GAA6B,EAAM,QAIzKohK,EAHCjhK,EAAOxyD,MAEEiqH,gBAKvB,MAAOrpH,GACL0xD,GAAqB,EACrBC,EAAkB3xD,EACpB,QACE,KACSyxD,GAA8BI,EAAWtoD,QAC1CsoD,EAAWtoD,SAEjB,QACE,GAAImoD,EACA,MAAMC,GAKlB,YAAavzD,IAATN,GACO,EAAI0D,EAAOjB,SAASsyN,GAAez3N,OAAS,GAE5C,EAAIuqG,EAASplG,SAASsyN,GAAez7L,MAAK,SAAUmrF,GACvD,OAAOA,EAAOzkH,OAASA,OAIpC,CACC4B,IAAK,wBACLN,MAAO,SAA+B6yD,EAAQwmE,GAC1C,OAAO/sH,KAAKytH,4BAA4BlnE,EAAQwmE,KAErD,CACC/4H,IAAK,oBACLN,MAAO,SAA2B6yD,EAAQ4uD,EAAUt1D,QACXntD,IAAjCsN,KAAKinN,gBAAgB1gK,KAAuBvmD,KAAKinN,gBAAgB1gK,GAAU,IAE/EvmD,KAAKinN,gBAAgB1gK,GAAQ4uD,GAAYt1D,EACzC7/C,KAAK4O,KAAK,YAEf,CACC5a,IAAK,uBACLN,MAAO,SAA8B6yD,EAAQ4uD,UAClCn1G,KAAKinN,gBAAgB1gK,GAAQ4uD,GAC6B,KAA7D,EAAIr/G,EAAOjB,SAASmL,KAAKinN,gBAAgB1gK,IAAS72D,eAAqBsQ,KAAKinN,gBAAgB1gK,GAChGvmD,KAAK4O,KAAK,cAGXo4M,EAxIW,CARPpxN,EAFD,EAAQ,KAmJXf,SAgBPuyN,EAA2B,KAC1BA,IACDA,EAA2B,IAAIJ,GAEnCx2N,EAAOD,QAAU62N,G,gBC7MjB,IAAIC,EAAS,EAAQ,KACjBC,EAAa,EAAQ,KAEzB,SAASC,EAAW/0N,EAAMkB,GAGtB,cAFOlD,EAAOD,QAAQiC,GACtBhC,EAAOD,QAAQiC,GAAQkB,EAChBA,EAGXlD,EAAOD,QAAU,CACb82N,OAAQA,EACRG,UAAW,EAAQ,KACnBC,YAAa,EAAQ,KACrBH,WAAYA,EACZ,kBACI,OAAOC,EAAW,cAAe,EAAQ,QAE7C,aACI,OAAOA,EAAW,SAAU,EAAQ,QAExC,qBACI,OAAOA,EAAW,iBAAkB,EAAQ,OAEhD,mBACI,OAAOA,EAAW,eAAgB,EAAQ,QAE9C,eACI,OAAOA,EAAW,WAAY,EAAQ,OAE1C,wBACI,OAAOA,EACH,oBACA,EAAQ,QAIhBG,eAAgBJ,EAChB,iBACI,OAAOC,EAAW,aAAcvnN,KAAK2nN,cAGzCC,SAAU,SAASz4N,EAAM+K,GACrB,IAAI4W,EAAU,IAAIw2M,EAAWptN,GAE7B,OADA,IAAImtN,EAAOv2M,EAAS5W,GAAS0gC,IAAIzrC,GAC1B2hB,EAAQ+2M,KAEnBC,UAAW,SAASC,EAAM7tN,GACtB,IAAI4W,EAAU,IAAItgB,EAAOD,QAAQo3N,YAAYztN,GAE7C,OADA,IAAImtN,EAAOv2M,EAAS5W,GAAS0gC,IAAImtL,GAC1Bj3M,EAAQ+2M,KAEnBG,gBAAiB,SAAS/+M,EAAI/O,EAAS+tN,GACnC,IAAIn3M,EAAU,IAAIw2M,EAAWr+M,EAAI/O,EAAS+tN,GAC1C,OAAO,IAAIZ,EAAOv2M,EAAS5W,IAG/BguN,OAAQ,CAEJx1G,UAAW,EACXy1G,WAAY,EACZC,SAAU,EACVtuN,KAAM,EACNuuN,sBAAuB,EACvBC,QAAS,EACTC,WAAY,EACZC,SAAU,EACVC,QAAS,EACTC,YAAa,EACb92N,MAAO,EACPgpC,IAAK,K,cCrEgB,mBAAlBjrC,OAAOoE,OAEhBvD,EAAOD,QAAU,SAAkBmnC,EAAMmzD,GACnCA,IACFnzD,EAAKszD,OAASH,EACdnzD,EAAK9nC,UAAYD,OAAOoE,OAAO82F,EAAUj7F,UAAW,CAClDqP,YAAa,CACXvL,MAAOgkC,EACPrkC,YAAY,EACZmC,UAAU,EACVD,cAAc,OAOtB/E,EAAOD,QAAU,SAAkBmnC,EAAMmzD,GACvC,GAAIA,EAAW,CACbnzD,EAAKszD,OAASH,EACd,IAAI89H,EAAW,aACfA,EAAS/4N,UAAYi7F,EAAUj7F,UAC/B8nC,EAAK9nC,UAAY,IAAI+4N,EACrBjxL,EAAK9nC,UAAUqP,YAAcy4B,K,8BCvBnC,YAEA/nC,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEIk1N,EAAmBhzN,EAFD,EAAQ,MAM1BwoD,EAAsBxoD,EAFA,EAAQ,KAM9BC,EAAWD,EAFD,EAAQ,KAMlBE,EAASF,EAFD,EAAQ,KAMhBD,EAAgBC,EAFA,EAAQ,KAMxB2nD,EAAmB3nD,EAFD,EAAQ,IAM1Bg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxB4nD,EAA8B5nD,EAFA,EAAQ,IAMtC8nD,EAAa9nD,EAFA,EAAQ,IAIrBmxG,EAAS,EAAQ,KAIjBpoD,EAAe/oD,EAFD,EAAQ,KAMtBu+I,EAAcv+I,EAFD,EAAQ,MAMrBizN,EAAWjzN,EAFD,EAAQ,MAMlB4B,EAAkB5B,EAFD,EAAQ,KAI7B,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAcvF,IAoBI6zN,EAAiB,CApBF,MAgBC,OACA,OACA,QAGhBC,EAAc,CACd,cAAe,SACf,wBAAyB,SACzB,wBAAyB,SACzB,wBAAyB,SACzB,gBAAiB,SACjB,0BAA2B,UAsB3BC,EAAgB,SAAUrhH,GAG1B,SAASqhH,KACL,EAAIp3L,EAAiB/8B,SAASmL,KAAMgpN,GAEpC,IAAI3pK,GAAQ,EAAI7B,EAA4B3oD,SAASmL,MAAOgpN,EAAc9pN,YAAa,EAAIq+C,EAAiB1oD,SAASm0N,IAAgBl5N,KAAKkQ,KAAM2+C,EAAa9pD,UAK7J,OAHAwqD,EAAM7hC,QACN6hC,EAAM4pK,qBAAuB5pK,EAAM4pK,qBAAqBh1N,KAAKorD,GAC7DA,EAAM6pK,mBAAqB7pK,EAAM6pK,mBAAmBj1N,KAAKorD,GAClDA,EA20BX,OAr1BA,EAAI3B,EAAW7oD,SAASm0N,EAAerhH,IAmBvC,EAAI91E,EAAch9B,SAASm0N,EAAe,CAAC,CACvCh1N,IAAK,yBACLN,MAAO,SAAgCkrH,GAGnC,IAAIuqG,EAtCM,eAsCSvqG,EACnBrqH,QAAQsD,IAAI,qDAAuDsxN,GACnEnpN,KAAKgoG,UAAU,CAAEohH,uBAAwBD,IAGzCnpN,KAAKqpN,8BAEV,CACCr1N,IAAK,QACLN,MAAO,WAEH,IAAI41N,EAAe,CACf,kBAAmB,GACnB,wBAAyB,GACzB,cAAe,GACf,wBAAyB,GACzB,wBAAyB,GACzB,gBAAiB,GACjB,0BAA2B,IAE/BtpN,KAAK4nG,OAAS,CAGV2hH,MAAOD,EACPE,kBAAmBF,EACnBG,OAAO,EACPC,aAAc,KACdN,wBAAwB,GAG5B5xN,EAAgB3C,QAAQ80N,eAAe,6BAA8B,MACrEnyN,EAAgB3C,QAAQ80N,eAAe,sBAAuB,QAEnE,CACC31N,IAAK,YACLN,MAAO,SAAmBm0G,GAKtB,GAAIA,EAAgB,MAAG,CACnB,IAAI2hH,EAAoB,GACpBnsN,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiB7K,EAErB,IACI,IAAK,IAAoF8K,EAAhFC,GAAY,EAAI9H,EAAcd,UAAS,EAAIiB,EAAOjB,SAASgzG,EAAgB,UAAcxqG,GAA6BG,EAAQC,EAAUC,QAAQC,MAAON,GAA4B,EAAM,CAC9L,IAAIrJ,EAAMwJ,EAAM9J,MAEhB81N,EAAkBx1N,GAAO6zG,EAAgB,MAAE7zG,GAAKkF,KAAI,SAAUxI,GAC1D,OAAOA,EAAEskG,SAGnB,MAAO1gG,GACLgJ,GAAoB,EACpBC,EAAiBjJ,EACnB,QACE,KACS+I,GAA6BI,EAAUI,QACxCJ,EAAUI,SAEhB,QACE,GAAIP,EACA,MAAMC,GAKlBsqG,EAA4B,kBAAI2hH,EAEpCxpN,KAAK4nG,QAAS,EAAI/xG,EAAShB,SAASmL,KAAK4nG,OAAQC,GACjD7nG,KAAK8nG,iBAEV,CACC9zG,IAAK,eACLN,MAAO,SAAsBmqD,GACzB,IAAI+rK,EAAiB5pN,KAAK8jI,eAAiB9jI,KAAK4nG,OAAO6hH,MACvD,OAAQ5rK,EAAQG,QACZ,IAAK,kBAEG,IAAK4rK,EAAgB,MAEO,+BAAxB/rK,EAAQyI,YACRtmD,KAAK6pN,wBAA4C,IAArBhsK,EAAQhZ,SA1H1C,aAMJ,UAqHyC,wBAAxBgZ,EAAQyI,cACftmD,KAAKgoG,UAAU,CAAE8hH,YAAajsK,EAAQhZ,WACtC7kC,KAAKqpN,6BAGb,MAEJ,IAAK,qBAEG,GAA4B,aAAtBxrK,EAAQksK,WAA8C,aAAlBlsK,EAAQgC,MAC9C,MAOJ7/C,KAAKgoG,UAAU,CAAE8hH,YAAatyN,EAAgB3C,QAAQm1N,iBAAiB,yBAEvEhqN,KAAK8jI,cAAgBjmF,EAAQhrB,aAE7B,IAAI+rF,EAAYpnH,EAAgB3C,QAAQ2/B,SAAS,8BAhJnD,aAMJ,SA2IMx0B,KAAK6pN,uBAAuBjrG,GAEhC,MACJ,IAAK,6BAEG,IAAKgrG,EAAgB,MAIrB,IAAIxyG,EAAWp3G,KAAK8jI,cAAc3tB,YAC9BpwD,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBvzD,EAEtB,IACI,IAAK,IAA8FwzD,EAA1FC,GAAa,EAAIxwD,EAAcd,UAAS,EAAIiB,EAAOjB,SAASgpD,EAAQ/rD,MAAMmmG,iBAA0BlyC,GAA8BG,EAASC,EAAWzoD,QAAQC,MAAOooD,GAA6B,EAAM,CAC7M,IAAIkwC,EAAU/vC,EAAOxyD,MAGrB,IADmB,EAAIoC,EAAOjB,SAASgpD,EAAQ/rD,MAAMmmG,aAAahC,GAAS,WAAa,IACvEz0D,SAAS41E,GAEtB,YADAp3G,KAAKiqN,qBAAqBpsK,EAAQm3C,KAAKzuC,SAIjD,MAAOjyD,GACL0xD,GAAqB,EACrBC,EAAkB3xD,EACpB,QACE,KACSyxD,GAA8BI,EAAWtoD,QAC1CsoD,EAAWtoD,SAEjB,QACE,GAAImoD,EACA,MAAMC,GAKtB,MACJ,IAAK,0BAEG,IAAK2jK,EAAgB,MAGrB5pN,KAAKqpN,4BAET,MACJ,IAAK,8BAEG,KAAKO,GAAmB/rK,EAAQqsK,aAAgBrsK,EAAQssK,mCAAsCnqN,KAAKoqN,4BAA4BvsK,EAAQ/rD,QACnI,MAGJkO,KAAKiqN,qBAAqBpsK,EAAQ/rD,MAAMs2G,aAE5C,MAGJ,IAAK,gCAEG,IAAKwhH,EAAgB,MAErB,IAAIrjK,EAAS1I,EAAQ/rD,MAAMs2G,YAG3B,IAAK7hD,EAAQ,MAEb,IAAIyuC,EAAOh1F,KAAK8jI,cAAc5uC,QAAQ3uC,GAGtC,IAAKyuC,EAAM,MAOX,GALmBA,EAAKn+D,oBACJm+D,EAAKq1H,oBAAoBxsK,EAAQ/rD,MAAM8qH,WAIpB58G,KAAKoqN,4BAA4BvsK,EAAQ/rD,OAC5E,MAGJkO,KAAKiqN,qBAAqB1jK,GAE9B,MACJ,IAAK,4BAEG,IAAKqjK,EAAgB,MACrB,GAA2B,aAAvB/rK,EAAQysK,WAA2B,MAGvCtqN,KAAKqpN,4BAET,MACJ,IAAK,kCASL,IAAK,qBAEG,IAAKO,EAAgB,MACrB5pN,KAAKiqN,qBAAqBpsK,EAAQm3C,KAAKzuC,QAAQ,GAEnD,MAkBJ,IAAK,uBACL,IAAK,gBAIGvmD,KAAKwd,QACLxd,KAAK8jI,cAAgB,KAEzB,MACJ,IAAK,YAEG,IAAK8lF,EAAgB,MAIrB,IAAIW,EAAkBvqN,KAAK4nG,OAAO8hH,aAClC1pN,KAAKgoG,UAAU,CAAE0hH,aAAc7rK,EAAQwqD,UACnCkiH,GACAvqN,KAAKwqN,iBAAiBxqN,KAAK8jI,cAAc5uC,QAAQq1H,GAnTzD,WAyTb,CACCv2N,IAAK,uBACLN,MAAO,SAA8B6yD,EAAQkkK,GAKzC,GAAIzqN,KAAK4nG,OAAO8hH,eAAiBnjK,GAAUkkK,EAAc,CAErD,IAAIz1H,EAAOh1F,KAAK8jI,cAAc5uC,QAAQ3uC,GACtC,IAAKyuC,EAAM,OAEX,IAAI0G,EAAW17F,KAAK0qN,mBAAmB11H,GACvCh1F,KAAKwqN,iBAAiBx1H,EAAM0G,MAGrC,CACC1nG,IAAK,cACLN,MAAO,SAAqBsG,GAExB,OADAA,EAAOA,GAAO,EAAIlE,EAAOjB,SAASmF,GAAQ,GACtCgG,KAAK4nG,OAAOkiH,YAAoB9vN,EAC7BA,EAAK8e,QAAO,SAAUnlB,GACzB,QAASo1N,EAAYp1N,QAG9B,CACCK,IAAK,6BACLN,MAAO,SAAoCshG,GACvC,IAAIh7F,EAAO,GAEP2rI,EAAe3wC,EAAKuf,kBACxB,GAAqB,SAAjBoxB,GAA4C,WAAjBA,EAA2B,CAEtD3rI,EAAKhK,KAAKkM,MAAMlC,GAAM,EAAIokD,EAAoBvpD,SAASmL,KAAK2qN,YAAY31H,EAAKh7F,QAM7E,IAAI0sI,EAAYyN,EAAYt/I,QAAQwmH,SACf,WAAjBsqB,EACA3rI,EAAKhK,KAAK,yBACH02I,EAAU2O,mBAAmBrgD,EAAKzuC,SAA2B,IAAhBvsD,EAAKtK,OAGzDsK,EAAKhK,KAAK,yBACa,IAAhBgK,EAAKtK,QACZsK,EAAKhK,KAAK,8BAEP21I,GAEP3rI,EAAKhK,KAAK,2BAGd,OAAOgK,IAEZ,CACChG,IAAK,oBACLN,MAAO,SAA2BshG,EAAM0G,EAAU1gG,EAAK4vN,EAAiB77K,EAAS87K,GAC7E,IAAIC,EAAsBhC,EAAe1vN,QAAQsiG,GAoD7CqvH,EAA+B,EAC/BC,GAAgB,EAChBC,GAAc,EAEdvjK,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBl1D,EAEtB,IACI,IAAK,IAA8Dm1D,EAA1DC,GAAa,EAAInyD,EAAcd,SAAS+1N,KAA4BljK,GAA8BG,EAASC,EAAWpqD,QAAQC,MAAO+pD,GAA6B,EAAM,CAC7K,IAAIzoB,EAAQ4oB,EAAOn0D,MAGnB,GAAIurC,EAAM+1D,KAAKzuC,SAAWyuC,EAAKzuC,OAA/B,CAOA,GAAItnB,EAAM+1D,KAAKzuC,SAAWvmD,KAAK4nG,OAAO8hH,eAAiBuB,EAAa,CAChE,IAAIC,EAAqBpC,EAAe1vN,QAAQ6lC,EAAMy8D,UAGlDwvH,GAAsBJ,IAAwBE,IAC9CD,EAA+Bh8K,EAAQr/C,OAAS,EAChDs7N,GAAgB,GAMpB,IAAIG,EAAkBD,EAAqBJ,GAEvCK,GADkBD,IAAuBJ,GACHD,EAAgB71H,IAAS61H,EAAgB5rL,EAAM+1D,SACjFm2H,EAGAp8K,EAAQ1yC,OAAO0uN,EAA8B,EAAG,CAAE/1H,KAAMA,EAAM0G,SAAUA,IAGxE3sD,EAAQ/+C,KAAK,CAAEglG,KAAMA,EAAM0G,SAAUA,IAEzCuvH,GAAc,GAKtBl8K,EAAQ/+C,KAAKivC,KAEnB,MAAO3qC,GACLqzD,GAAqB,EACrBC,EAAkBtzD,EACpB,QACE,KACSozD,GAA8BI,EAAWjqD,QAC1CiqD,EAAWjqD,SAEjB,QACE,GAAI8pD,EACA,MAAMC,GAYlB,OAPKqjK,GAAeF,GAAgC,IAChDx2N,QAAQ+F,KAAK,WAAa06F,EAAKzuC,OAAS,oCAAsCvrD,GAC9EzG,QAAQ+F,KAAK,4BAA8BywN,EAA+B,kBAAoBrvH,GAC9F3sD,EAAQ1yC,OAAO0uN,EAA8B,EAAG,CAAE/1H,KAAMA,EAAM0G,SAAUA,IACxEuvH,GAAc,GAGXA,IAEZ,CACCj3N,IAAK,mBACLN,MAAO,SAA0BshG,EAAM0G,GACnC,IAAI39C,EAAS/9C,KAEb,GAAKg1F,EAAL,CAEA,IAAIo2H,EAAa,GAGbC,EAAiB,GACjBC,EAAgB,SAAuBt2H,GAIvC,OAHKq2H,EAAer2H,EAAKzuC,UACrB8kK,EAAer2H,EAAKzuC,QAAUxI,EAAOwtK,iBAAiBv2H,IAEnDq2H,EAAer2H,EAAKzuC,SAE3BilK,EAAaxrN,KAAKyrN,2BAA2Bz2H,GAC7C02H,EAAmB,GAYnB3hK,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBv3D,EAEtB,IACI,IAAK,IAAqFw3D,EAAjFC,GAAa,EAAIx0D,EAAcd,UAAS,EAAIiB,EAAOjB,SAASmL,KAAK4nG,OAAO2hH,UAAmBx/J,GAA8BG,EAASC,EAAWzsD,QAAQC,MAAOosD,GAA6B,EAAM,CACpM,IAAI/1D,EAAMk2D,EAAOx2D,MAKjB,GAHqB83N,EAAWhqL,SAASxtC,GAOlC,GAAyB,WAArB+0N,EAAY/0N,GAGnBo3N,EAAWp3N,GAAOgM,KAAK4nG,OAAO2hH,MAAMv1N,GAAK8kB,QAAO,SAAUpoB,GACtD,OAAOA,EAAEskG,KAAKzuC,SAAWyuC,EAAKzuC,UAElC6kK,EAAWp3N,GAAKhE,KAAK,CAAEglG,KAAMA,EAAM0G,SAAUA,IAC7CgwH,EAAiB17N,KAAKgE,OACnB,CACHo3N,EAAWp3N,GAAO,GAEAgM,KAAK2rN,kBAAkB32H,EAAM0G,EAAU1nG,EAAKgM,KAAK4nG,OAAO2hH,MAAMv1N,GAAMo3N,EAAWp3N,GAAMs3N,KAQnG/2N,QAAQ+F,KAAK,WAAa06F,EAAKzuC,OAAS,2CACxChyD,QAAQ+F,KAAK,mEACb/F,QAAQ+F,KAAK,uBAAwB,CACjCohG,SAAUA,EACV1nG,IAAKA,EACL43N,UAAWR,EAAWp3N,GAAKtE,OAC3Bm8N,cAAe7rN,KAAK4nG,OAAO2hH,MAAMv1N,GAAKtE,SAE1C07N,EAAWp3N,GAAKqI,OAAO,EAAG,EAAG,CAAE24F,KAAMA,EAAM0G,SAAUA,KAEzDgwH,EAAiB17N,KAAKgE,QAhCtBo3N,EAAWp3N,GAAOgM,KAAK4nG,OAAO2hH,MAAMv1N,GAAK8kB,QAAO,SAAUpoB,GACtD,OAAOA,EAAEskG,KAAKzuC,SAAWyuC,EAAKzuC,WAqC5C,MAAOjyD,GACL01D,GAAqB,EACrBC,EAAkB31D,EACpB,QACE,KACSy1D,GAA8BI,EAAWtsD,QAC1CssD,EAAWtsD,SAEjB,QACE,GAAImsD,EACA,MAAMC,GAKlB,IAAIO,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBh4D,EAEtB,IACI,IAAK,IAAyDi4D,EAArDC,GAAa,EAAIj1D,EAAcd,SAAS22N,KAAuBhhK,GAA8BG,EAASC,EAAWltD,QAAQC,MAAO6sD,GAA6B,EAAM,CACxK,IAAIshK,EAAYnhK,EAAOj3D,MAEnByG,EAAQ,EACR4xN,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBv5N,EAEtB,IACI,IAAK,IAA+Dw5N,EAA3DC,GAAa,EAAIx2N,EAAcd,SAAS62N,KAA6BK,GAA8BG,EAASC,EAAWzuN,QAAQC,MAAOouN,GAA6B,EAAM,CAC5JG,EAAOx4N,QAELo4N,GAAW3xN,KAErC,MAAO7F,GACL03N,GAAqB,EACrBC,EAAkB33N,EACpB,QACE,KACSy3N,GAA8BI,EAAWtuN,QAC1CsuN,EAAWtuN,SAEjB,QACE,GAAImuN,EACA,MAAMC,GAKJ,IAAV9xN,GACA5F,QAAQ+F,KAAK,WAAa06F,EAAKzuC,OAAS,aAAepsD,EAAQ,WAKzE,MAAO7F,GACLm2D,GAAqB,EACrBC,EAAkBp2D,EACpB,QACE,KACSk2D,GAA8BI,EAAW/sD,QAC1C+sD,EAAW/sD,SAEjB,QACE,GAAI4sD,EACA,MAAMC,GAKlB,IAAIK,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBv4D,EAEtB,IACI,IAAK,IAA8Ew4D,EAA1EC,GAAa,EAAIx1D,EAAcd,UAAS,EAAIiB,EAAOjB,SAASu2N,MAAwBrgK,GAA8BG,EAASC,EAAWztD,QAAQC,MAAOotD,GAA6B,EAAM,CAC7L,IAAI/vD,EAAMkwD,EAAOx3D,MAEQ,WAArBq1N,EAAY/tN,IAChBowN,EAAWpwN,GAAK+qC,KAAK/lC,KAAKipN,qBAAqBjuN,KAErD,MAAO1G,GACL02D,GAAqB,EACrBC,EAAkB32D,EACpB,QACE,KACSy2D,GAA8BI,EAAWttD,QAC1CstD,EAAWttD,SAEjB,QACE,GAAImtD,EACA,MAAMC,GAKlBjrD,KAAKgoG,UAAU,CAAEuhH,MAAO6B,OAE7B,CACCp3N,IAAK,4BACLN,MAAO,WACH,IAAI0/D,EAASpzD,KAKbzL,QAAQsD,IAAI,iCAEZ,IAAI0xN,EAAQ,CACR,kBAAmB,GACnB,wBAAyB,GACzB,cAAe,GACf,wBAAyB,GACzB,wBAAyB,GACzB,gBAAiB,GACjB,0BAA2B,IAG3B7iF,EAAYyN,EAAYt/I,QAAQwmH,SAEpCr7G,KAAK8jI,cAAcsoF,WAAWhyN,SAAQ,SAAU46F,GAC5C,IAAIoiB,EAAWhkD,EAAO0wE,cAAc3tB,YAChCze,EAAa1C,EAAKuf,kBAClBD,EAAKtf,EAAKoD,UAAUgf,GAExB,GAAmB,WAAf1f,EACA6xH,EAAM,yBAAyBv5N,KAAK,CAAEglG,KAAMA,EAAM0G,SAltBnD,aAmtBI,GAAmB,SAAfhE,GAAwC,QAAfA,GAAwB4c,GAAMA,EAAGsxB,WAAY,CAE7E,IAAIC,GAAW,EAAI/vI,EAAOjB,SAASmgG,EAAKh7F,MASxC,IANA6rI,EAAWA,EAAS/sH,QAAO,SAAUnlB,GAGjC,YAAoBjB,IAAb62N,EAAM51N,KAAqBA,EAAE8F,WAAW,OAAS25D,EAAOw0C,OAAOkiH,gBAG7Dp6N,OACT,IAAK,IAAIF,EAAI,EAAGA,EAAIq2I,EAASn2I,OAAQF,IAAK,CACtC,IAAIyxG,EAAU4kC,EAASr2I,GACvB+5N,EAAMtoH,GAAWsoH,EAAMtoH,IAAY,GAGnC,IAAIvF,EAltBZ,OAmtBqC,WAAzBqtH,EAAY9nH,KAAuBvF,EAAWtoC,EAAOs3J,mBAAmB11H,IAC5Eu0H,EAAMtoH,GAASjxG,KAAK,CAAEglG,KAAMA,EAAM0G,SAAUA,SAEzCgrC,EAAU2O,mBAAmBrgD,EAAKzuC,QAEzCgjK,EAAM,yBAAyBv5N,KAAK,CAAEglG,KAAMA,EAAM0G,SAAUtoC,EAAOs3J,mBAAmB11H,KAEtFu0H,EAAM,yBAAyBv5N,KAAK,CAAEglG,KAAMA,EAAM0G,SAAUtoC,EAAOs3J,mBAAmB11H,SAEpE,UAAf0C,GAGP6xH,EAAM,2BAA2Bv5N,KAAK,CAAEglG,KAAMA,EAAM0G,SA/tBpD,YAsuBR,IAAI2wH,EAAqB,IAEzB,EAAIv2N,EAAOjB,SAAS00N,GAAOnvN,SAAQ,SAAUkyN,GACzC,IAAItmL,OAAa,EACjB,OAAQ+iL,EAAYuD,IAChB,IAAK,SACDtmL,EAAa,SAAoBumL,EAAQC,GACrC,OAAOp5J,EAAO81J,mBAAmBqD,EAAQC,GAAQ,SAAUx3H,GACvD,IAAKA,EAAM,OAAO4zH,EAAiB/zN,QAEnC,GAAIw3N,EAAmBr3H,EAAKzuC,QACxB,OAAO8lK,EAAmBr3H,EAAKzuC,QAGnC,IAAI47D,EAAK/uD,EAAOm4J,iBAAiBv2H,GAEjC,OADAq3H,EAAmBr3H,EAAKzuC,QAAU47D,EAC3BA,MAGf,MACJ,IAAK,SACL,QACIn8E,EAAaotB,EAAO61J,qBAAqBqD,GAGjD/C,EAAM+C,GAASvmL,KAAKC,MAGxBhmC,KAAKgoG,UAAU,CACXuhH,MAAOA,EACPE,OAAO,MAGhB,CACCz1N,IAAK,8BACLN,MAAO,SAAqCypG,GACxC,OAAOA,EAAG6f,UAAY6rG,EAASh0N,QAAQ43N,yBAAyBtvH,IAAOA,EAAG0f,cAAgB78G,KAAK8jI,cAAcxwG,YAAYC,UAE9H,CACCv/B,IAAK,mBACLN,MAAO,SAA0BshG,GAG7B,IAAKA,IAASA,EAAK68C,SAAU,OAAO+2E,EAAiB/zN,QAErD,IAAK,IAAIrF,EAAIwlG,EAAK68C,SAASniJ,OAAS,EAAGF,GAAK,IAAKA,EAAG,CAChD,IAAI2tG,EAAKnI,EAAK68C,SAASriJ,GACvB,GAAIwQ,KAAKoqN,4BAA4BjtH,GACjC,OAAOA,EAAG6f,QAOlB,OAAIhoB,EAAK68C,SAASniJ,QAAUslG,EAAK68C,SAAS,GAAG70B,QAClChoB,EAAK68C,SAAS,GAAG70B,QAEjB4rG,EAAiB/zN,UAGjC,CACCb,IAAK,qBACLN,MAAO,SAA4BshG,GAC/B,IAAKh1F,KAAK4nG,OAAOwhH,uBAKb,MA3yBI,OA+yBR,GADep0H,EAAKwpC,2BAA2B,aAAe,EAChD,MAj0BP,MAm0BP,IAAIkuF,EAAS13H,EAAKwpC,6BAA+B,EACjD,OAAIkuF,EApzBI,QAszBRA,EAAS7D,EAASh0N,QAAQ83N,2BAA2B33H,IArzB7C,OACA,SAyzBb,CACChhG,IAAK,qBACLN,MAAO,SAA4B64N,EAAQC,EAAQI,GAC/C,IAAIC,EAAQN,EAAOv3H,KACf83H,EAAQN,EAAOx3H,KACf+3H,EAAYR,EAAO7wH,SACnBsxH,EAAYR,EAAO9wH,SAEvB,GAAIqxH,IAAcC,EAAW,CACzB,IAAIC,EAAOnE,EAAe1vN,QAAQ2zN,GAC9BG,EAAOpE,EAAe1vN,QAAQ4zN,GAClC,OAAIC,EAAOC,EAAa,EACpBD,EAAOC,GAAc,EAClB,EAGX,IAAIC,EAAaP,EAAkBC,GAEnC,OADiBD,EAAkBE,GACfK,IAEzB,CACCn5N,IAAK,6BACLN,MAAO,SAAoCm5N,EAAOC,GAC9C,OAAOD,EAAMr6N,KAAOs6N,EAAMt6N,KAAO,GAAK,IAE3C,CACCwB,IAAK,uBACLN,MAAO,SAA8ButG,EAASmsH,GAC1C,IAAIvnI,EAAS7lF,KAEb,OAAO,SAAUusN,EAAQC,GACrB,IAAIK,EAAQN,EAAOv3H,KACf83H,EAAQN,EAAOx3H,KAEfq4H,EAAQR,EAAM7yN,KAAKinG,GACnBqsH,EAAQR,EAAM9yN,KAAKinG,GAEnBmsH,GAAqBP,IAAUO,EAAkBp4H,OAAMq4H,EAAQD,EAAkBG,UACjFH,GAAqBN,IAAUM,EAAkBp4H,OAAMs4H,EAAQF,EAAkBG,UAGrF,IAAIluN,EAAIguN,EAAQ77L,OAAO67L,EAAMp5B,YAASvhM,EAClCwxB,EAAIopM,EAAQ97L,OAAO87L,EAAMr5B,YAASvhM,EAGtC,YAAUA,IAAN2M,QAAyB3M,IAANwxB,EACZ,OACMxxB,IAAN2M,QAAyB3M,IAANwxB,GAClB,EAGL7kB,IAAM6kB,EAAI2hE,EAAO2nI,2BAA2BX,EAAOC,GAASztN,EAAI6kB,EAAI,GAAK,KAGzF,CACClwB,IAAK,eACLN,MAAO,WACH,OAAOsM,KAAK4nG,OAAO4hH,sBAGpBR,EAt1BS,CAu1BlBjiH,EAAOqC,YAE6B12G,IAAlCwb,EAAOu/M,yBACPv/M,EAAOu/M,uBAAyB,IAAIzE,GAExCz4N,EAAQsE,QAAUqZ,EAAOu/M,uBACzBj9N,EAAOD,QAAUA,EAAiB,U,+CC19BlCA,EAAQsD,YAAa,EACrBtD,EAAQ0iB,SACR,SAAkB9L,EAAQN,GACzB,IAAIxR,EAAQsN,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,GAAmBA,UAAU,GAAK,GAE5E4oF,EAAW57F,OAAOoE,OAAOoT,EAAOvX,WACpC,IAAK,IAAI8B,KAAK2D,EACbk2F,EAAS75F,GAAK2D,EAAM3D,GAIrB,OAFA65F,EAAStsF,YAAc4H,EACvBA,EAAMjX,UAAY27F,EACX1kF,I,6BCXRlX,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEIoC,EAASF,EAFD,EAAQ,KAMhBD,EAAgBC,EAFA,EAAQ,KAMxBu1G,EAAYv1G,EAFD,EAAQ,KAIvBrF,EAAQ29J,sBA+BR,SAA+B74D,GAC3B,OAAO,IAAI8V,EAAUt2G,SAAQ,SAAU9D,EAASC,GAC5C,IAAI2rG,EAAc/iG,EAAQ/E,QAAQzD,cAC9B,MACA,KACAwI,EAAQ/E,QAAQzD,cACZ,MACA,MACA,EAAIwtD,EAAiB1oD,IAAI,iDAE7B0D,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,YACb,EAAIgkD,EAAiB1oD,IAAI,8GAI7BysN,EAAsBryC,EAAGz7K,QAAQ2J,aAAa,+BAClD6zB,EAAQx9B,QAAQ6nG,oBAAoB,eAAgB,GAAIimH,EAAqB,CACzE3wM,OAAO,EAAI4sC,EAAiB1oD,IAAI,gCAChCymG,YAAaA,EACbwU,aAAa,EAAIvyD,EAAiB1oD,IAAI,qBACtCu4H,QAAQ,EAAI7vE,EAAiB1oD,IAAI,uBACjC0sN,kBAAmB,CAAC,cACpBjjK,WAAY,SAAoB9lC,EAASmpM,GAChCnpM,GAmErB,SAAgCw7E,EAAS2tH,GACrC,IAAI0K,EAAe,IAAIhK,EAAe7uN,QAAQwgG,GAE1C4tH,EAAYD,EAAM9pN,KAAI,SAAUgqN,GAChC,OAAOA,EAAKnvE,WAGhB,OAAO25E,EAAazS,OAAOgI,GAAWjsN,MAAK,SAAUytN,GAEjD,IAAIJ,EAAY,GACZhnN,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiB7K,EAErB,IACI,IAAK,IAAmF8K,EAA/EC,GAAY,EAAI9H,EAAcd,UAAS,EAAIiB,EAAOjB,SAAS4vN,MAA6BpnN,GAA6BG,EAAQC,EAAUC,QAAQC,MAAON,GAA4B,EAAM,CAC7L,IAAI6lN,EAAO1lN,EAAM9J,MAEG,UAAhBsvN,EAAME,IACNmB,EAAUr0N,KAAKkzN,IAGzB,MAAO5uN,GACLgJ,GAAoB,EACpBC,EAAiBjJ,EACnB,QACE,KACS+I,GAA6BI,EAAUI,QACxCJ,EAAUI,SAEhB,QACE,GAAIP,EACA,MAAMC,GAKlB,GAAI8mN,EAAU30N,OAAS,EAAG,CACtB,IAAI+sG,EAAc6zE,EAAGz7K,QAAQ2J,aAAa,uBAC1C6zB,EAAQx9B,QAAQ6nG,oBAAoB,oDAAqD,GAAID,EAAa,CACtGzqF,OAAO,EAAI4sC,EAAiB1oD,IAAI,uDAAwD,CAAEm/F,QAASA,IACnGsH,YAAa0nH,EAAU9nN,KAAK,YAGrCijD,OAAM,SAAUlrD,GACf,IAAImoG,EAAc6zE,EAAGz7K,QAAQ2J,aAAa,uBAC1C6zB,EAAQx9B,QAAQ6nG,oBAAoB,kCAAmC,GAAID,EAAa,CACpFzqF,OAAO,EAAI4sC,EAAiB1oD,IAAI,uCAChCymG,aAAa,EAAI/9C,EAAiB1oD,IAAI,wCAAyC,CAAEm/F,QAASA,SAjHtFs4H,CAAuBt4H,EAAS2tH,GAAOhsN,KAAKjG,EAASC,KAE5C,MAAqB,GAAoB,OA3DlET,EAAQ49J,uBA6ER,SAAgC94D,GAC5B,OAAO,IAAI8V,EAAUt2G,SAAQ,SAAU9D,EAASC,GAC5C,IAAI48N,GAAmB,EAInBjxH,EAAc/iG,EAAQ/E,QAAQzD,cAC9B,MACA,KACAwI,EAAQ/E,QAAQzD,cACZ,MACA,MACA,EAAIwtD,EAAiB1oD,IAAI,0DAI7B23N,EAAoBj0N,EAAQ/E,QAAQzD,cACpC,QACA,CAAEwJ,UAAW,2CACbhB,EAAQ/E,QAAQzD,cAAc,QAAS,CAAEgB,KAAM,WAAYqxD,QAhBvC,SAA2B/yD,GAC/Ck9N,EAAmBl9N,EAAE4B,OAAO02I,WAgB5BpvI,EAAQ/E,QAAQzD,cACZ,MACA,MACA,EAAIwtD,EAAiB1oD,IAAI,0EAI7BysN,EAAsBryC,EAAGz7K,QAAQ2J,aAAa,+BAClD6zB,EAAQx9B,QAAQ6nG,oBAAoB,qBAAsB,GAAIimH,EAAqB,CAC/E3wM,OAAO,EAAI4sC,EAAiB1oD,IAAI,8BAChCymG,YAAaA,EACbmxH,UAAWD,EACX18G,aAAa,EAAIvyD,EAAiB1oD,IAAI,sBACtCu4H,QAAQ,EAAI7vE,EAAiB1oD,IAAI,oBACjC63N,WAAY,OACZnL,kBAAmB,CAAC,cACpBjjK,WAAY,SAAoB9lC,EAASmpM,GAChCnpM,GA6DrB,SAAiCw7E,EAAS2tH,EAAO4K,GAC7C,IAAI/6L,EAAeoiE,EAAkBpgG,QAAQvB,MACzC+wN,EAAY,GAChB,OAAOl5G,EAAUt2G,QAAQ/B,IAAIkwN,EAAM9pN,KAAI,SAAUgqN,GAC7C,OAAOp2D,EAAaj4J,QAAQm5G,eAAe3Y,EAAS6tH,EAAKnvE,QAAS65E,GAAkBpuK,OAAM,WACtF6kK,EAAUr0N,KAAKkzN,EAAKnvE,YACrB/8I,MAAK,WACJ,IAAIuvD,EAAS28J,EAAKnvE,QACd/+C,EAAOniE,EAAaqiE,QAAQ3uC,GAEhC,GAAKyuC,GAASA,EAAKgC,aAAag3H,wBAAwB,wBAAyBn7L,GAAjF,CAIA,IAAIo7L,EAAqBj5H,EAAKgC,aAAae,eAAe,wBAAyB,IAC/ElgD,EAASo2K,GAAqBA,EAAmBh2H,aAAapgD,QAAe,GAGjF,OAAKA,EAAOrW,SAAS6zD,QAArB,GACIx9C,EAAO7nD,KAAKqlG,GACLJ,EAAkBpgG,QAAQvB,MAAMkjH,eAAejwD,EAAQ,wBAAyB,CAAE1O,OAAQA,GAAU,SAEhHr3B,cACHxpB,MAAK,WACL,GAAyB,IAArBqtN,EAAU30N,OAAd,CAGA,IAAI+sG,EAAc6zE,EAAGz7K,QAAQ2J,aAAa,uBAC1C6zB,EAAQx9B,QAAQ6nG,oBAAoB,gDAAiD,GAAID,EAAa,CAClGzqF,OAAO,EAAI4sC,EAAiB1oD,IAAI,oDAAqD,CAAEm/F,QAASA,IAChGsH,YAAa0nH,EAAU9nN,KAAK,YAzFxB2xN,CAAwB74H,EAAS2tH,EAAO4K,GAAkB52N,KAAKjG,EAASC,KAE/D,MAAqB,GAAoB,OApHlE,IAEI4I,EAAUhE,EAFD,EAAQ,IAMjBy8B,EAAUz8B,EAFD,EAAQ,KAMjB06K,EAAK16K,EAFD,EAAQ,IAMZ8tN,EAAiB9tN,EAFD,EAAQ,MAIxBgpD,EAAmB,EAAQ,GAI3Bq2C,EAAoBr/F,EAFD,EAAQ,KAM3Bk3J,EAAel3J,EAFD,EAAQ,KAI1B,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,K,6BC7CvFtF,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEIkG,EAAUhE,EAFD,EAAQ,IAMjB4oD,EAAc5oD,EAFD,EAAQ,IAIzB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAGvF,IAAIk5N,EAAe,SAAsB94N,GACrC,IAAIo2D,EAAa,CAAC,mBASlB,OARIp2D,EAAM+4N,SACN3iK,EAAWz7D,KAAK,4BAEhBy7D,EAAWz7D,KAAK,8BAEhBqF,EAAMuoC,SACN6tB,EAAWz7D,KAAK,2BAEb4J,EAAQ/E,QAAQzD,cACnB,MACA,CAAEwJ,UAAW6wD,EAAWlvD,KAAK,KAAM,UAAWlH,EAAMurD,IACpDhnD,EAAQ/E,QAAQzD,cAAc,MAAO,QAK7C+8N,EAAapvK,UAAY,CACrBqvK,SAAU5vK,EAAY3pD,QAAQo4D,KAC9BrvB,QAAS4gB,EAAY3pD,QAAQo4D,KAC7BrM,GAAIpC,EAAY3pD,QAAQytC,QAG5B/xC,EAAQsE,QAAUs5N,EAClB39N,EAAOD,QAAUA,EAAiB,S,6BCxClCZ,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAAI26N,EAAmB,EAAQ,MAE/B1+N,OAAOyD,eAAe7C,EAAS,kBAAmB,CAChD8C,YAAY,EACZC,IAAK,WACH,OAAOsC,EAAuBy4N,GAAkBx5N,WAIpD,IAAIy5N,EAAa,EAAQ,MAEzB3+N,OAAOyD,eAAe7C,EAAS,YAAa,CAC1C8C,YAAY,EACZC,IAAK,WACH,OAAOsC,EAAuB04N,GAAYz5N,WAI9C,IAAI05N,EAAa,EAAQ,MASzB,SAAS34N,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAPvFtF,OAAOyD,eAAe7C,EAAS,YAAa,CAC1C8C,YAAY,EACZC,IAAK,WACH,OAAOsC,EAAuB24N,GAAY15N,Y,6BC3B9ClF,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAIT,IAQI86N,EAAW,CACbp+D,SAPe7/J,EAAQk+N,WAAa,CACpCp+D,UAAW,GACX72G,OAJW,CAAEl2B,EAAG,EAAG4mE,EAAG,GAKtBwkI,uBAAuB,GAKvB9/F,UAAW,KACXqhC,YAAa,MAGf1/J,EAAQsE,QAAU25N,G,6BCnBlB7+N,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQo+N,sBAAwBp+N,EAAQq+N,gBAAkBr+N,EAAQs+N,KAAOt+N,EAAQu+N,sBAAwBv+N,EAAQw+N,eAAYr8N,EAE7H,IAEI2rD,EAAYzoD,EAFA,EAAQ,KAIpBo5N,EAAQ,EAAQ,MAIhBhoF,EAAYpxI,EAFD,EAAQ,MAInBq5N,EAAW,EAAQ,KAEnBzhB,EAAY,EAAQ,IAExB,SAAS53M,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvF,IAAIq4C,EAAS,CAAEhqB,EAAG,EAAG4mE,EAAG,GAEpB6kI,EAAYx+N,EAAQw+N,UAAY,CAClCvuF,IAAK,EACLvzF,MAAO,EACPwzF,OAAQ,EACRzzF,KAAM,GAGJmgK,EAAc,SAAqBU,EAAM1jI,GAC3C,IAAIq2D,EAAMqtE,EAAKrtE,IACXvzF,EAAQ4gK,EAAK5gK,MACbwzF,EAASotE,EAAKptE,OACdzzF,EAAO6gK,EAAK7gK,KAEhB,OAAO,EAAIg6F,EAAUnyI,SAAS,CAC5B2rI,IAAKA,EAAMr2D,EAAM+f,EACjBl9C,KAAMA,EAAOm9B,EAAM7mD,EACnBm9G,OAAQA,EAASt2D,EAAM+f,EACvBj9C,MAAOA,EAAQk9B,EAAM7mD,KAIrB4rM,EAAa,SAAoBrhB,EAAMN,GACzC,IAAI/sE,EAAMqtE,EAAKrtE,IACXvzF,EAAQ4gK,EAAK5gK,MACbwzF,EAASotE,EAAKptE,OACdzzF,EAAO6gK,EAAK7gK,KAEhB,OAAO,EAAIg6F,EAAUnyI,SAAS,CAC5B2rI,IAAKA,EAAM+sE,EAAQ/sE,IACnBxzF,KAAMA,EAAOugK,EAAQvgK,KAErByzF,OAAQA,EAAS8sE,EAAQ9sE,OACzBxzF,MAAOA,EAAQsgK,EAAQtgK,SAsCvB4hL,GAlCwBt+N,EAAQu+N,sBAAwB,SAA+B57L,GACzF,IAAI59B,EAAa49B,EAAK59B,WAClB++G,EAASnhF,EAAKmhF,OACd86G,EAAcj8L,EAAKk8L,OACnBA,OAAyB18N,IAAhBy8N,EAA4BJ,EAAYI,EACjDE,EAAoBn8L,EAAKo8L,aAGzBC,EAAapiB,EAAY94F,OAFY3hH,IAAtB28N,EAAkC/hL,EAAS+hL,GAyB9D,MArBgB,CACd/5N,WAAYA,EACZ67G,YAAa,CACXi+G,OAAQA,EACRI,cAAe,CACbnzH,MAAOgY,EAAOhY,MACdp6B,OAAQoyC,EAAOpyC,SAInBoyC,OAAQ,CACNm7G,eAAe,EAAIxoF,EAAUnyI,SAASw/G,GACtCm8C,YAAY,EAAIxpB,EAAUnyI,SAASq6N,EAAW76G,EAAQ+6G,KAGxD7+D,KAAM,CACJi/D,eAAe,EAAIxoF,EAAUnyI,SAAS06N,GACtC/+D,YAAY,EAAIxpB,EAAUnyI,SAASq6N,EAAWK,EAAYH,OAOrD7+N,EAAQs+N,KAAO,SAAcY,EAAOC,GAC7C,IAAIz4N,GAAS,EAAI+vI,EAAUnyI,SAAS,CAClC2rI,IAAK36H,KAAKC,IAAI4pN,EAAQlvF,IAAKivF,EAAMjvF,KACjCvzF,MAAOpnC,KAAKo1B,IAAIy0L,EAAQziL,MAAOwiL,EAAMxiL,OACrCwzF,OAAQ56H,KAAKo1B,IAAIy0L,EAAQjvF,OAAQgvF,EAAMhvF,QACvCzzF,KAAMnnC,KAAKC,IAAI4pN,EAAQ1iL,KAAMyiL,EAAMziL,QAGrC,OAAI/1C,EAAOolG,OAAS,GAAKplG,EAAOgrE,QAAU,EACjC,KAGFhrE,IAGa1G,EAAQq+N,gBAAkB,SAAyBj/D,EAAWggE,GAClF,IAAIlrL,EAAWkrH,EAAUQ,SAErBy/D,GAAa,EAAIpiB,EAAUj5J,UAAUo7K,EAAWlrL,EAASorL,YAAY96E,SAErE+6E,GAAqB,EAAItiB,EAAUn+F,QAAQugH,GAC3CG,GAAmB,EAAId,EAASj1L,QAAQyK,EAASirL,QAASI,GAE1D3/D,EAAW,CACbs/D,MAAOhrL,EAASgrL,MAChBC,QAASjrL,EAASirL,QAElBG,YAAa,CACX96E,QAAStwG,EAASorL,YAAY96E,QAC9BvhI,QAASm8M,EACT5tF,KAAM,CACJruI,MAAOk8N,EACPI,aAAcF,IAGlBG,QAASpB,EAAKpqL,EAASgrL,MAAOM,IAGhC,OAAO,EAAI1xK,EAAUxpD,SAAS,GAAI86J,EAAW,CAC3CQ,SAAUA,KAIc5/J,EAAQo+N,sBAAwB,SAA+B17L,GACzF,IAAI39B,EAAa29B,EAAM39B,WACnB++G,EAASphF,EAAMohF,OACf67G,EAAcj9L,EAAMi9L,YACpBC,EAAoBl9L,EAAM48L,YAC1BA,OAAoCn9N,IAAtBy9N,EAAkC7iL,EAAS6iL,EACzDC,EAAkBn9L,EAAM27F,UACxBA,OAAgCl8H,IAApB09N,EAAgC,WAAaA,EACzDC,EAAep9L,EAAMm8L,OACrBA,OAA0B18N,IAAjB29N,EAA6BtB,EAAYsB,EAClDC,EAAgBr9L,EAAMs9L,QACtBA,OAA4B79N,IAAlB49N,EAA8BvB,EAAYuB,EACpDE,EAAqBv9L,EAAMq8L,aAC3BA,OAAsC58N,IAAvB89N,EAAmCljL,EAASkjL,EAC3DC,EAAkBx9L,EAAM2qG,UACxBA,OAAgClrI,IAApB+9N,GAAuCA,EAEnDjgE,EAAa0+D,EAAW76G,EAAQ+6G,GAChCsB,EAAmBvjB,EAAY94F,EAAQi7G,GAGvCI,EAAUR,EAAWwB,EAAkBtB,GAEvCK,EACGS,EAGE/iB,EAAY+iB,EAAaZ,GAFvBI,EAKPv/D,EAAW,CACbs/D,MAAOA,EACPI,YAAa,CACX96E,QAAS86E,EAETr8M,QAASq8M,EACT9tF,KAAM,CACJruI,MAAO45C,EACP0iL,aAAc1iL,IAGlBoiL,QAASA,EACTO,QAASpB,EAAKY,EAAOC,IAoBvB,MAjBgB,CACdp6N,WAAYA,EACZsoI,UAAWA,EACX+yF,KAAoB,aAAd/hG,EAA2BogG,EAAMZ,SAAWY,EAAM4B,WACxDv8G,OAAQ,CACNm7G,eAAe,EAAIxoF,EAAUnyI,SAASw/G,GACtCm8C,YAAY,EAAIxpB,EAAUnyI,SAAS27J,GACnCqgE,sBAAsB,EAAI7pF,EAAUnyI,SAASq6N,EAAW1+D,EAAY+/D,KAEtEhgE,KAAM,CACJi/D,eAAe,EAAIxoF,EAAUnyI,SAAS67N,GACtClgE,WAAYk/D,EACZmB,sBAAsB,EAAI7pF,EAAUnyI,SAASq6N,EAAWwB,GAAkB,EAAIzB,EAASn7K,KAAKs7K,EAAQmB,MAEtGpgE,SAAUA,K,6BC/Ld5/J,EAAQsD,YAAa,EACrBtD,EAAiB,QAEjB,SAAoB60G,GAClB,IAAIxlG,EAAM,GACV,IAAK,IAAI5L,KAAOoxG,EACTz1G,OAAOC,UAAUC,eAAeC,KAAKs1G,EAAOpxG,KAGjD4L,EAAI5L,GAA6B,iBAAfoxG,EAAMpxG,GAAoBoxG,EAAMpxG,GAAOoxG,EAAMpxG,GAAK6qB,KAEtE,OAAOjf,GAGTpP,EAAOD,QAAUA,EAAiB,S,6BClBlCZ,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGTnD,EAAQsE,QAAU,SAAU/C,GAC1BA,EAAM46D,iBACN56D,EAAM26D,oB,8BCRR,YAEA98D,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEI+6K,EAAQ74K,EAFD,EAAQ,KAMfwoD,EAAsBxoD,EAFA,EAAQ,KAM9BC,EAAWD,EAFD,EAAQ,KAMlB2nD,EAAmB3nD,EAFD,EAAQ,IAM1Bg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxB4nD,EAA8B5nD,EAFA,EAAQ,IAMtC8nD,EAAa9nD,EAFA,EAAQ,IAIrBmxG,EAAS,EAAQ,KAIjBpoD,EAAe/oD,EAFD,EAAQ,KAMtBk3J,EAAel3J,EAFD,EAAQ,KAMtB8oD,EAAc9oD,EAFD,EAAQ,KAMrBk7N,EAMJ,SAAiC77N,GAAO,GAAIA,GAAOA,EAAIpB,WAAc,OAAOoB,EAAc,IAAIw9B,EAAS,GAAI,GAAW,MAAPx9B,EAAe,IAAK,IAAIjB,KAAOiB,EAAWtF,OAAOC,UAAUC,eAAeC,KAAKmF,EAAKjB,KAAMy+B,EAAOz+B,GAAOiB,EAAIjB,IAAgC,OAAtBy+B,EAAO59B,QAAUI,EAAYw9B,EANjPC,CAFC,EAAQ,MAMtBuiE,EAAoBr/F,EAFD,EAAQ,KAM/B,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAiBvF,IAAI+xG,EAAgB,CAChB+pH,YAAa,KACbC,uBAAwB,KACxBC,WAAW,EACXC,eAAgB,KAEhBC,aAAc,GAEdC,UAAW,MAOXC,EAAgB,SAAU1pH,GAG1B,SAAS0pH,KACL,EAAIz/L,EAAiB/8B,SAASmL,KAAMqxN,GAGpC,IAAIhyK,GAAQ,EAAI7B,EAA4B3oD,SAASmL,MAAOqxN,EAAcnyN,YAAa,EAAIq+C,EAAiB1oD,SAASw8N,IAAgBvhO,KAAKkQ,KAAM2+C,EAAa9pD,UAG7J,OADAwqD,EAAMuoD,QAAS,EAAI/xG,EAAShB,SAAS,GAAImyG,GAClC3nD,EA+NX,OAxOA,EAAI3B,EAAW7oD,SAASw8N,EAAe1pH,IAYvC,EAAI91E,EAAch9B,SAASw8N,EAAe,CAAC,CACvCr9N,IAAK,YACLN,MAAO,SAAmBm0G,GACtB7nG,KAAK4nG,QAAS,EAAI/xG,EAAShB,SAASmL,KAAK4nG,OAAQC,GACjD7nG,KAAK8nG,iBAEV,CACC9zG,IAAK,eACLN,MAAO,SAAsBmqD,GACzB,OAAQA,EAAQG,QAEZ,IAAK,YAEG,IAAIszK,EAAkBxkE,EAAaj4J,QAAQ08N,qBAAqB1zK,EAAQwqD,SACxEroG,KAAKwxN,cAAcF,GACnB,MAER,IAAK,qBAKG,GAHsB,YAAlBzzK,EAAQgC,OAAyC,aAAlBhC,EAAQgC,OACvC7/C,KAAKwxN,gBAEmB,aAAtB3zK,EAAQksK,WAA8C,aAAlBlsK,EAAQgC,MAC9C,MAEJ,IAAI4xK,EAAmB5zK,EAAQhrB,aAAawiF,eAAe,8BACvDq8G,EAA0BD,EAAmBA,EAAiBx5H,aAAe,GACjFj4F,KAAKgoG,UAAU,CACXgpH,uBAAwBU,EAAwB13N,MAAQ,KACxD23N,uBAAwBD,EAAwBE,aAAe,KAC/DX,WAAW,IAEfjxN,KAAK6xN,qBACL,MAGR,IAAK,4BAEG,GAA2B,+BAAvBh0K,EAAQysK,WAA6C,MAIzD,GAAIzsK,EAAQi0K,cAAcC,WAAa/xN,KAAKgyN,aAAc,MAE1DhyN,KAAKgoG,UAAU,CACXgpH,uBAAwBnzK,EAAQi0K,cAAgBj0K,EAAQi0K,cAAc93N,KAAO,KAC7E23N,uBAAwB9zK,EAAQi0K,cAAgBj0K,EAAQi0K,cAAcF,YAAc,OAExF5xN,KAAK6xN,qBACL,MAGR,IAAK,yCAEG7xN,KAAKgoG,UAAU,CACXkpH,eAAgBrzK,EAAQ5mD,OAAO4gD,OAAO9R,OACtCksL,wBAAwB,IAE5BjyN,KAAK6xN,qBACL,MAER,IAAK,kCAGG7xN,KAAKgoG,UAAU,CACX+oH,YAAalzK,EAAQprD,QAAQuH,KAC7B23N,uBAAwB9zK,EAAQprD,QAAQm/N,cAE5C,MAER,IAAK,oCAGG5xN,KAAKgoG,UAAU,CACX2pH,uBAAwB9zK,EAAQprD,QAAQm/N,cAE5C5xN,KAAK6xN,qBACL,MAER,IAAK,aAEG,IAAIK,EAAU,GAEd,GAAIr0K,EAAQ0/C,SAAU,CAElB,IAAIroE,EAAQl1B,KAAK4nG,OAAOmpH,YAAY33N,QAAQ4G,KAAK4nG,OAAOwpH,WACpDx2L,EAAM56B,KAAK4nG,OAAOmpH,YAAY33N,QAAQykD,EAAQ7iD,KAKlD,IAHe,IAAXk6B,IACAA,EAAQ0F,GAER1F,EAAQ0F,EAAK,CACb,IAAIsmE,EAAOhsE,EACXA,EAAQ0F,EACRA,EAAMsmE,EAEVgxH,EAAUr0K,EAAQs0K,aAAenyN,KAAK4nG,OAAOupH,aAAe,GAC5De,EAAU,GAAG51N,QAAO,EAAI8hD,EAAoBvpD,SAAS,IAAI45K,EAAM55K,QAAQmL,KAAK4nG,OAAOmpH,YAAYp8N,MAAMugC,EAAO0F,EAAM,GAAGt+B,OAAO41N,WAKpHA,EAHJr0K,EAAQs0K,aAEJnyN,KAAK4nG,OAAOupH,aAAa3vL,SAASqc,EAAQ7iD,KAChCgF,KAAK4nG,OAAOupH,aAAar4M,QAAO,SAAUnlB,GAChD,OAAOA,IAAMkqD,EAAQ7iD,OAGf,GAAGsB,QAAO,EAAI8hD,EAAoBvpD,SAASmL,KAAK4nG,OAAOupH,cAAe,CAACtzK,EAAQ7iD,MAInF,CAAC6iD,EAAQ7iD,KAIlBgF,KAAK4nG,OAAOupH,aAAa3vL,SAASqc,EAAQ7iD,MAC3CgF,KAAKgoG,UAAU,CACXopH,UAAWvzK,EAAQ7iD,MAK/BgF,KAAKgoG,UAAU,CACXmpH,aAAce,IAGlBxzK,EAAY7pD,QAAQksD,WAAW,cAAe,cAElD,MACJ,IAAK,gBACD/gD,KAAKgoG,UAAU,CACXmpH,aAAc,KAElBzyK,EAAY7pD,QAAQksD,WAAW,cAAe,iBAC9C,MACJ,IAAK,uBACL,IAAK,gBAIG/gD,KAAK4nG,QAAS,EAAI/xG,EAAShB,SAAS,GAAImyG,MAKzD,CACChzG,IAAK,gBACLN,MAAO,WACH,IAAI0+N,EAAWzvN,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,GAAmBA,UAAU,GAAK3C,KAAK4nG,OAAOspH,eAE/F,GAAIkB,GAAYA,EAAS1iO,OAAQ,CAC7B,IAAI2kH,EAASpf,EAAkBpgG,QAAQvB,MACnC++N,EAAgB,GACpBD,EAASh4N,SAAQ,SAAUi7F,GACvB,IAAI6kD,EAAQ4S,EAAaj4J,QAAQo4G,cAAc5X,GAASn8F,KAAI,SAAU3F,GAClE,OAAO8gH,EAAOnf,QAAQ3hG,EAAEgzD,WAE3BztC,QAAO,SAAUvlB,GACd,OAAOA,WAEP++N,EAAQp4E,GAAS42E,EAAWr2E,2BAA2BP,GAC3Dm4E,EAAch9H,GAAWi9H,GAAyB,IAAhBA,EAAMn4N,MAAcm4N,OAAQ5/N,KAElE,IAAI6/N,GAAY,EAAI18N,EAAShB,SAAS,GAAImL,KAAK4nG,OAAO4qH,OAAQH,GAC9DryN,KAAKgoG,UAAU,CAAEwqH,OAAQD,OAGlC,CACCv+N,IAAK,qBACLN,MAAO,WACHsM,KAAKgoG,UAAU,CACX+oH,YAAa/wN,KAAK4nG,OAAOqpH,WAAajxN,KAAK4nG,OAAOqqH,uBAAyBjyN,KAAKyyN,sBAAwB,SAGjH,CACCz+N,IAAK,sBACLN,MAAO,WACH,IAAI0+N,EAAWpyN,KAAK4nG,OAAOspH,gBAAkB,GACzCl3N,EAAOgG,KAAK4nG,OAAOopH,wBAA0B,GAC7CY,EAAc,IAAInjD,EAAM55K,QAAQmL,KAAK4nG,OAAO+pH,wBAA0B,IAEtEe,EAAa14N,EAAK8e,QAAO,SAAUnlB,GACnC,OAAiB,MAATA,EAAE,IAAcy+N,EAAS5wL,SAAS7tC,MAAQi+N,EAAYp5M,IAAI7kB,MAGlEg/N,EAAgBP,EAASt5M,QAAO,SAAUu8E,GAC1C,OAAQr7F,EAAKwnC,SAAS6zD,KAAau8H,EAAYp5M,IAAI68E,MAGvD,OAAOq9H,EAAWp2N,OAAOq2N,KAE9B,CACC3+N,IAAK,gBACLN,MAAO,SAAuB2hG,GAC1B,IAAIm9H,EAASxyN,KAAK4nG,OAAO4qH,OACzB,OAAOA,GAAUA,EAAOn9H,KAE7B,CACCrhG,IAAK,iBACLN,MAAO,WACH,OAAOsM,KAAK4nG,OAAOmpH,cAExB,CACC/8N,IAAK,4BACLN,MAAO,WACH,OAAOsM,KAAK4nG,OAAO+pH,yBAExB,CACC39N,IAAK,aACLN,MAAO,WAIH,OADKsM,KAAKgrH,MAAKhrH,KAAKgrH,IAAMnlH,KAAK8tG,SAASnuG,SAAS,IAAI7Q,MAAM,EAAG,KACvDqL,KAAKgrH,MAEjB,CACCh3H,IAAK,kBACLN,MAAO,WACH,OAAOsM,KAAK4nG,OAAOupH,iBAGpBE,EAzOS,CA0OlBtqH,EAAOqC,YAE6B12G,IAAlCwb,EAAO0kN,yBACP1kN,EAAO0kN,uBAAyB,IAAIvB,GAExC9gO,EAAQsE,QAAUqZ,EAAO0kN,uBACzBpiO,EAAOD,QAAUA,EAAiB,U,+CC5UlC,IAEIwF,EAAWH,EAFA,EAAQ,KAMnBE,EAASF,EAFD,EAAQ,KAIpB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GA0BvFzE,EAAOD,QAAQsiO,sBAAwB,SAAU5gK,EAAQjoB,GACrD,IAAI0/C,EAAU,GACVj2B,EAAQ,GAuDZ,OAtDA,EAAI39D,EAAOjB,SAASo9D,GAAQ73D,SAAQ,SAAU04N,GAC1Cr/J,EAAMq/J,GAAar/J,EAAMq/J,IAAc,EACvCr/J,EAAMq/J,SAEV,EAAIh9N,EAAOjB,SAASm1C,GAAO5vC,SAAQ,SAAU24N,GACzCt/J,EAAMs/J,GAAYt/J,EAAMs/J,IAAa,EACrCt/J,EAAMs/J,SAGV,EAAIj9N,EAAOjB,SAAS4+D,GAAOr5D,SAAQ,SAAU44N,GACzC,OAAQv/J,EAAMu/J,IACV,KAAK,EAEDhpL,EAAMgpL,GAAU54N,SAAQ,SAAU64N,GAC9BvpI,EAAQ15F,KAAK,CAAEkjO,MAAO,MAAOl/N,IAAKg/N,EAAUn0M,IAAKo0M,OAErD,MACJ,KAAM,EAEFhhK,EAAO+gK,GAAU54N,SAAQ,SAAU+4N,GAC/BzpI,EAAQ15F,KAAK,CAAEkjO,MAAO,MAAOl/N,IAAKg/N,EAAUn0M,IAAKs0M,OAErD,MACJ,KAAK,EAIG,IAAIC,EAAY,GAChBnhK,EAAO+gK,GAAU54N,SAAQ,SAAU+4N,GAC/BC,EAAUD,GAAaC,EAAUD,IAAc,EAC/CC,EAAUD,QAEdnpL,EAAMgpL,GAAU54N,SAAQ,SAAU64N,GAC9BG,EAAUH,GAAYG,EAAUH,IAAa,EAC7CG,EAAUH,SAGd,EAAIn9N,EAAOjB,SAASu+N,GAAWh5N,SAAQ,SAAUgP,GACrB,IAApBgqN,EAAUhqN,GACVsgF,EAAQ15F,KAAK,CAAEkjO,MAAO,MAAOl/N,IAAKg/N,EAAUn0M,IAAKzV,KACrB,IAArBgqN,EAAUhqN,IACjBsgF,EAAQ15F,KAAK,CAAEkjO,MAAO,MAAOl/N,IAAKg/N,EAAUn0M,IAAKzV,OAKzD,MAER,QACI7U,QAAQ3C,MAAM,2BAA6B6hE,EAAMu/J,GAAY,oCAKlEtpI,GASXl5F,EAAOD,QAAQ8iO,aAAe,SAAUC,EAAMC,GAC1C,GAAID,IAASC,EACT,OAAO,EAGX,GAAkF,iBAA7D,IAATD,EAAuB,aAAc,EAAIv9N,EAASlB,SAASy+N,KAAgC,OAATA,GAA+F,iBAA7D,IAATC,EAAuB,aAAc,EAAIx9N,EAASlB,SAAS0+N,KAAgC,OAATA,EACrM,OAAO,EAGX,IAAIC,GAAQ,EAAI19N,EAAOjB,SAASy+N,GAC5BG,GAAQ,EAAI39N,EAAOjB,SAAS0+N,GAEhC,GAAIC,EAAM9jO,SAAW+jO,EAAM/jO,OACvB,OAAO,EAGX,IAAK,IAAIF,EAAI,EAAGA,EAAIgkO,EAAM9jO,OAAQF,IAAK,CACnC,IAAIwE,EAAMw/N,EAAMhkO,GAChB,IAAK+jO,EAAK1jO,eAAemE,IAAQs/N,EAAKt/N,KAASu/N,EAAKv/N,GAChD,OAAO,EAIf,OAAO,I,6BC3GX,IAAI0/N,EAAsB,2CAE1BljO,EAAOD,QAAU,CACbojO,WAAY,SAAoBC,GAC5B,OAAOF,EAAoB/hN,KAAKiiN,M,6BCpBxCjkO,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEIg+B,EAAgB97B,EAFD,EAAQ,KAMvBD,EAAgBC,EAFA,EAAQ,KAIxB+7B,EAAY,EAAQ,GAExBphC,EAAQsE,QAyBR,SAAwBq+B,GACpB,IAAIypE,EAAczpE,EAAKypE,YACnB3jB,EAAQ9lD,EAAK8lD,MAEjB,OACQ/lD,GAAQ,EAAItB,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASC,EAAQ48E,GAC3F,IAKI7mB,EAAS2mB,EAAOhzG,EAA2BC,EAAmBC,EAAgBE,EAAWD,EAAO+7E,EAAMs6I,EAAW/5N,EAAMywE,EAAOszH,EAASye,EAAStkH,EAASsY,EALzJ58G,EAAQ68G,EAAM78G,MACdu8G,EAAUM,EAAMN,QAChB6jH,EAAmBvjH,EAAME,WACzBA,OAAkC/9G,IAArBohO,GAAwCA,EAIzD,OAAOpiM,EAAc78B,QAAQm/B,MAAK,SAAkB7F,GAChD,OACI,OAAQA,EAAStsB,KAAOssB,EAASzwB,MAC7B,KAAK,EACD,GAAOhK,IAAS+8G,EAAa,CACzBtiF,EAASzwB,KAAO,EAChB,MAGJ,OAAOywB,EAASgG,OAAO,SAAU,CAC7Bk8E,MAAO,KACPC,SAAU,OAGlB,KAAK,EAID,GAHA5mB,EAAU,GACV2mB,GAAQ,GAEFr3B,IAASA,EAAMtpF,OAAS,CAC1By+B,EAASzwB,KAAO,GAChB,MAGJL,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiB7K,EACjBy7B,EAAStsB,KAAO,EAChBpE,GAAY,EAAI9H,EAAcd,SAASmkF,GAE3C,KAAK,GACD,GAAI37E,GAA6BG,EAAQC,EAAUC,QAAQC,KAAM,CAC7DwwB,EAASzwB,KAAO,GAChB,MAKJ,IAFA67E,EAAO/7E,EAAM9J,OAEDM,KAAQulF,EAAK5nE,KAAO,CAC5Bwc,EAASzwB,KAAO,GAChB,MAGJ,OAAOywB,EAASgG,OAAO,WAAY,IAEvC,KAAK,GAED,OADAhG,EAASzwB,KAAO,IACT,EAAIi0B,EAAU5gC,SAASwoF,EAAK5nE,KAAK7hB,KAAKkQ,KAAM,CAAEtM,MAAOA,EAAO+8G,WAAYA,KAEnF,KAAK,GAKD,GAJAojH,EAAY1lM,EAASmH,KAErB+6E,EAAQA,GAASwjH,GAEXA,IAAat6I,EAAK82B,MAAQ,CAC5BliF,EAASzwB,KAAO,GAChB,MAOJ,GAFA5D,EAAOy/E,EAAK82B,MAAMvgH,KAAKkQ,MAEb,CACNmuB,EAASzwB,KAAO,GAChB,MAGJ,OAAOywB,EAASgG,OAAO,WAAY,IAEvC,KAAK,GACDu1D,EAAQ15F,KAAK,CACTgE,IAAKulF,EAAKvlF,IACVq8G,OAAO,EACPv2G,KAAMA,IAEVq0B,EAASzwB,KAAO,GAChB,MAEJ,KAAK,GACD,GAAOm2N,IAAat6I,EAAKtpB,QAAU,CAC/B9hC,EAASzwB,KAAO,GAChB,MAOJ,GAFA6sE,EAAQgP,EAAKtpB,QAAQngE,KAAKkQ,MAEf,CACPmuB,EAASzwB,KAAO,GAChB,MAGJ,OAAOywB,EAASgG,OAAO,WAAY,IAEvC,KAAK,GACDu1D,EAAQ15F,KAAK,CACTgE,IAAKulF,EAAKvlF,IACVq8G,OAAO,EACPv2G,KAAMywE,IAGd,KAAK,GACDltE,GAA4B,EAC5B8wB,EAASzwB,KAAO,GAChB,MAEJ,KAAK,GACDywB,EAASzwB,KAAO,GAChB,MAEJ,KAAK,GACDywB,EAAStsB,KAAO,GAChBssB,EAASiG,GAAKjG,EAAgB,MAAE,GAChC7wB,GAAoB,EACpBC,EAAiB4wB,EAASiG,GAE9B,KAAK,GACDjG,EAAStsB,KAAO,GAChBssB,EAAStsB,KAAO,IAEXxE,GAA6BI,EAAUI,QACxCJ,EAAUI,SAGlB,KAAK,GAGD,GAFAswB,EAAStsB,KAAO,IAEXvE,EAAmB,CACpB6wB,EAASzwB,KAAO,GAChB,MAGJ,MAAMH,EAEV,KAAK,GACD,OAAO4wB,EAASs9E,OAAO,IAE3B,KAAK,GACD,OAAOt9E,EAASs9E,OAAO,IAE3B,KAAK,GACD,GAAIwE,EAAS,CACT9hF,EAASzwB,KAAO,GAChB,MAGJ,OAAOywB,EAASgG,OAAO,SAAU,CAC7Bk8E,MAAOA,EACPC,SAAU,OAGlB,KAAK,GA+CD,OA9CAutF,OAAU,EAENn0G,GAAWA,EAAQh6F,SACnBmuM,EAAU3mK,MAAM9lC,cACZ,KACA,CAAEwJ,UAAW,yBACb8uF,EAAQxwF,KAAI,SAAUjC,GAClB,IAAIssD,GAAU,EAAIygD,EAAanvG,SAAS,CACpC,sBAAwB,EACxB,oBAAuBoC,EAAOo5G,MAC9B,uBAA0Bp5G,EAAOo5G,QAErC,OAAOn5E,MAAM9lC,cACT,KACA,CAAE4C,IAAKiD,EAAOjD,IAAK4G,UAAW2oD,GAC9BtsD,EAAO6C,WAMvBwiN,OAAU,EAEN3/G,IAGA3E,EAAU2E,EAAY7sG,KAAKkQ,MAE3Bs8M,EAAUplL,MAAM9lC,cACZ,MACA,CAAEwJ,UAAW,6BACbo9F,IAIRsY,OAAW,GAEPgsG,GAAWze,KACXvtF,EAAWp5E,MAAM9lC,cACb,MACA,CAAEwJ,UAAW,iBACb0hN,EACAze,IAID1vK,EAASgG,OAAO,SAAU,CAC7Bk8E,MAAOA,EACPC,SAAUA,IAGlB,KAAK,GACL,IAAK,MACD,OAAOniF,EAASiF,UAG7BO,EAAS3zB,KAAM,CAAC,CAAC,EAAG,GAAI,GAAI,IAAK,CAAC,GAAG,CAAE,GAAI,UAGlD,SAAoB0rG,GAChB,OAAOz4E,EAAM/2B,MAAM8D,KAAM2C,YA9N1B,IACCswB,GA5BZ,IAEI+wE,EAAepuG,EAFD,EAAQ,KAI1B,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GA4QvFzE,EAAOD,QAAUA,EAAiB,S,cClSlCC,EAAOD,QAAU,gC,6BCEjBZ,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAEXnD,EAAQwjO,cAeR,SAAuB30N,GACnB,IAAKA,EAAG,MAAO,GAEf,IAAI40N,EAAYnyH,EAAMhtG,QAAQoI,MAAMmC,GAEpC,IAAK40N,EAAW,OAAO50N,EAEvB,GAAuB,MAAnB40N,EAAU15J,KAEV,OAAO05J,EAAUn/L,KAGrB,OAAOz1B,GA1BX7O,EAAQ0jO,gBA2CR,SAAyB70N,GACrB,IAAKA,EAAG,MAAO,GAEf,IAAI80N,EAAU90N,EACTA,EAAE3F,WAAW,cAAay6N,EAAU,WAAa90N,GAEtD,OAAwB,OADXyiG,EAAMhtG,QAAQoI,MAAMi3N,GACtBhkI,SAA0B9wF,EAE9B80N,GAjDX,IAIgCj/N,EAJ5Bk/N,EAAO,EAAQ,IAEftyH,GAE4B5sG,EAFGk/N,IAEkBl/N,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,I,6BCVvFtF,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEI2qD,EAAYzoD,EAFA,EAAQ,KAMpBi2D,EAA4Bj2D,EAFA,EAAQ,MAMpC2nD,EAAmB3nD,EAFD,EAAQ,IAM1Bg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxB4nD,EAA8B5nD,EAFA,EAAQ,IAMtC8nD,EAAa9nD,EAFA,EAAQ,IAMrBgE,EAAUhE,EAFD,EAAQ,IAMjB4oD,EAAc5oD,EAFD,EAAQ,IAMrBouG,EAAepuG,EAFD,EAAQ,KAItBm2D,EAAY,EAAQ,IAExB,SAASn2D,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAkBvF,IAAIm/N,EAAe,SAAUz0F,GAGzB,SAASy0F,EAAa/+N,IAClB,EAAIu8B,EAAiB/8B,SAASmL,KAAMo0N,GAEpC,IAAI/0K,GAAQ,EAAI7B,EAA4B3oD,SAASmL,MAAOo0N,EAAal1N,YAAa,EAAIq+C,EAAiB1oD,SAASu/N,IAAetkO,KAAKkQ,KAAM3K,IA+B9I,OA7BAgqD,EAAMg1K,QAAU,WACZ,IAAIh1K,EAAMhqD,MAAM82D,SAAhB,CAEA,IAAI07C,GAAYxoD,EAAMQ,MAAMmpF,QAC5B3pF,EAAME,SAAS,CAAEypF,QAASnhC,IACtBxoD,EAAMhqD,MAAMi0D,UACZjK,EAAMhqD,MAAMi0D,SAASu+C,KAI7BxoD,EAAMi1K,SAAW,SAAU5jO,GACvBA,EAAE+7D,kBACF/7D,EAAEg8D,iBAEFrN,EAAMg1K,WAGVh1K,EAAMugF,WAAa,SAAUlvI,GACzBA,EAAE+7D,kBACF/7D,EAAEg8D,iBAEEh8D,EAAE47D,UAAYP,EAAUQ,QAAQC,OAAS97D,EAAE47D,UAAYP,EAAUQ,QAAQI,OACzEtN,EAAMg1K,WAIdh1K,EAAMQ,MAAQ,CACVmpF,QAAS3zI,EAAM2zI,UAAW,GAEvB3pF,EAyCX,OA7EA,EAAI3B,EAAW7oD,SAASu/N,EAAcz0F,IAuCtC,EAAI9tG,EAAch9B,SAASu/N,EAAc,CAAC,CACtCpgO,IAAK,4BACLN,MAAO,SAAmCw8M,GAClCA,EAAUlnE,UAAYhpI,KAAK6/C,MAAMmpF,SACjChpI,KAAKu/C,SAAS,CAAEypF,QAASknE,EAAUlnE,YAG5C,CACCh1I,IAAK,SACLN,MAAO,WAEH,IAAIk9G,EAAS5wG,KAAK3K,MAEd82D,GADUykD,EAAOo4B,QACNp4B,EAAOzkD,UAElB92D,GADWu7G,EAAOtnD,UACV,EAAIuC,EAA0Bh3D,SAAS+7G,EAAQ,CAAC,UAAW,WAAY,cAG/ErtD,GAAU,EAAIygD,EAAanvG,SAAS,CACpC,iBAAmB,EACnB,mBAAsBmL,KAAK6/C,MAAMmpF,QACjC,yBAA4BhpI,KAAK3K,MAAM82D,WAE3C,OAAOvyD,EAAQ/E,QAAQzD,cACnB,OACA,EAAIitD,EAAUxpD,SAAS,GAAIQ,EAAO,CAC9BuF,UAAW2oD,EACXE,QAASzjD,KAAKs0N,SACdjoK,UAAWrsD,KAAK4/H,WAChB7yE,KAAM,WACN,eAAgB/sD,KAAK6/C,MAAMmpF,QAC3B,gBAAiB78E,EACjBW,SAAU,IAEdlzD,EAAQ/E,QAAQzD,cAAc,MAAO,CAAEwJ,UAAW,8BAIvDw5N,EA9EQ,CA+EjBx6N,EAAQ/E,QAAQwiC,WAElB+8L,EAAar1K,UAAY,CAErBiqF,QAASxqF,EAAY3pD,QAAQo4D,KAG7Bd,SAAU3N,EAAY3pD,QAAQo4D,KAG9B3D,SAAU9K,EAAY3pD,QAAQm4D,MAElCz8D,EAAQsE,QAAUu/N,EAClB5jO,EAAOD,QAAUA,EAAiB,S,6BC5JlCZ,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAEXnD,EAAQgkO,WAAahkO,EAAQikO,uBAAoB9hO,EAEjD,IAEI2rD,EAAYzoD,EAFA,EAAQ,KAMpB0oD,EAAkB1oD,EAFA,EAAQ,KAM1Bg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAIxB+7B,EAAY,EAAQ,GAEpBh4B,EAAa/D,EAAuB+7B,GAExCphC,EAAQkkO,oBAm/BR,SAA6BluK,EAAQ33B,GAIjC,GAAiB,OADjBA,EAAQA,EAAMnyB,QAAQ,OAAQ,KACpB,GAAY,OAAO,KAE7B,IAAIqtH,EAAOl7F,EAAMlzB,MAAM,0BACnBg5N,OAAM,EACN1uN,OAAO,EACP8jH,GACA4qG,EAAM5qG,EAAK,GAAGvgC,UAAU,GAAG/sF,cAC3BwJ,EAAO8jH,EAAK,IAEZ4qG,EAAM9lM,EAGN+lM,EAAQD,KACRA,EAAMC,EAAQD,IAElB,OAAIH,EAAWG,GAENH,EAAWG,GAAKE,MAEdL,EAAWG,GAAKrqH,IAAI9jD,EAAQvgD,GAFA,KAI5BhV,GAAO,EAAI4tD,EAAiB1oD,IAAI,yBAA2B,IAAM04B,IA1gChF,IAEIh1B,EAAUhE,EAFD,EAAQ,IAMjBq/F,EAAoBr/F,EAFD,EAAQ,KAM3B+oD,EAAe/oD,EAFD,EAAQ,KAMtBs8B,EAAUt8B,EAFD,EAAQ,IAIjBgpD,EAAmB,EAAQ,GAI3BvsB,EAAUz8B,EAFD,EAAQ,KAMjB8tN,EAAiB9tN,EAFD,EAAQ,MAIxBi/N,EAAa,EAAQ,IAIrBC,EAAmBl/N,EAFD,EAAQ,MAM1BmiH,EAAgBniH,EAFD,EAAQ,KAIvBm/N,EAAU,EAAQ,MAElBpR,EAAe,EAAQ,KAEvBqR,EAAY,EAAQ,KAEpBC,EAAuB,EAAQ,KAE/BrwH,EAAc,EAAQ,IAE1B,SAAShvG,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAoBvF,IACQi+B,EADJgiM,GACIhiM,GAAO,EAAIvB,EAAU/0B,SAAQ,WAC7B,OAAO,IAAIjD,EAAW9E,SAAQ,SAAU9D,GACpC,IAAIokO,EAAehkO,SAASC,cAAc,SAC1C+jO,EAAa3jO,aAAa,OAAQ,QAClC2jO,EAAaC,SAAW,SAAUj4H,GAC9B,IAAImiD,EAAOniD,EAAG7qG,OAAOuuJ,MAAM,GAEvBK,EAAsBhvH,EAAQr9B,QAAQ2J,aAAa,+BACvD6zB,EAAQx9B,QAAQ6nG,oBAAoB,4BAA6B,GAAIwkD,EAAqB,CACtF5B,KAAMA,EACN3/F,WAAY,SAAoBiiG,GAC5B7wJ,EAAQ6wJ,EAAiB3sD,EAAkBpgG,QAAQvB,MAAM2sJ,cAAcX,GAAQ,UAK3F61E,EAAaE,cAId,WACH,OAAOniM,EAAKh3B,MAAM8D,KAAM2C,aAI5B6xN,EAAoBjkO,EAAQikO,kBAAoB,CAChD,UAAY,EAAI51K,EAAiBzoD,KAAK,YACtC,SAAW,EAAIyoD,EAAiBzoD,KAAK,WACrC,OAAS,EAAIyoD,EAAiBzoD,KAAK,SACnC,UAAY,EAAIyoD,EAAiBzoD,KAAK,YACtC,OAAS,EAAIyoD,EAAiBzoD,KAAK,UAGnCm/N,EAAU,WACV,SAASA,EAAQriM,GACb,IAAIzgC,EAAOygC,EAAMzgC,KACb+iO,EAAatiM,EAAMjtB,KACnBA,OAAsBtT,IAAf6iO,EAA2B,GAAKA,EACvC54H,EAAc1pE,EAAM0pE,YACpBi4H,EAAQ3hM,EAAM2hM,MACdY,EAAiBviM,EAAMyoE,SACvBA,OAA8BhpG,IAAnB8iO,EAA+BhB,EAAkB5yL,MAAQ4zL,EACpEC,EAAwBxiM,EAAMyiM,yBAC9BA,OAAqDhjO,IAA1B+iO,GAA8CA,GAC7E,EAAI7jM,EAAiB/8B,SAASmL,KAAMs1N,GAEpCt1N,KAAKqjJ,QAAU,IAAM7wJ,EACrBwN,KAAKgG,KAAOA,EACZhG,KAAK28F,YAAcA,EACnB38F,KAAK40N,MAAQA,EACb50N,KAAK07F,SAAWA,EAChB17F,KAAK01N,yBAA2BA,EAwBpC,OArBA,EAAI7jM,EAAch9B,SAASygO,EAAS,CAAC,CACjCthO,IAAK,aACLN,MAAO,WACH,OAAOsM,KAAKqjJ,UAEjB,CACCrvJ,IAAK,qBACLN,MAAO,WACH,OAAOsM,KAAK21N,aAAe,IAAM31N,KAAKgG,OAE3C,CACChS,IAAK,MACLN,MAAO,SAAa6yD,EAAQvgD,GACxB,OAAOhG,KAAK40N,MAAM3gO,KAAK+L,KAAhBA,CAAsBumD,EAAQvgD,KAE1C,CACChS,IAAK,WACLN,MAAO,WACH,OAAO,EAAIkrD,EAAiB1oD,IAAI,SAAW,KAAO8J,KAAK41N,yBAGxDN,EA1CG,GA6Cd,SAAStkO,EAAOY,GACZ,MAAO,CAAEA,MAAOA,GAGpB,SAASioB,EAAQhpB,GACb,MAAO,CAAEA,QAASA,GAStB,IAAI0jO,EAAahkO,EAAQgkO,WAAa,CAClCsB,MAAO,IAAIP,EAAQ,CACf9iO,KAAM,QACNwT,KAAM,YACN22F,aAAa,EAAI/9C,EAAiBzoD,KAAK,+CACvCy+N,MAAO,SAAeruK,EAAQvgD,GAC1B,IAAIzT,EAAU,aAId,OAHIyT,IACAzT,EAAUA,EAAU,IAAMyT,GAEvB6T,EAAQo7E,EAAkBpgG,QAAQvB,MAAMwiO,gBAAgBvvK,EAAQh0D,KAE3EmpG,SAAU84H,EAAkBuB,WAEhCC,MAAO,IAAIV,EAAQ,CACf9iO,KAAM,QACNwT,KAAM,YACN22F,aAAa,EAAI/9C,EAAiBzoD,KAAK,sEACvCy+N,MAAO,SAAeruK,EAAQwvK,GAC1B,OAAOl8M,EAAQo7E,EAAkBpgG,QAAQvB,MAAMwiO,gBAAgBvvK,EAAQwvK,KAE3Er6H,SAAU84H,EAAkBuB,WAEhCE,IAAK,IAAIX,EAAQ,CACb9iO,KAAM,MACNwT,KAAM,UACN22F,aAAa,EAAI/9C,EAAiBzoD,KAAK,mCACvCy+N,MAAO,SAAeruK,EAAQvgD,GAC1B,IAAIy2F,EAAcvqE,EAAQr9B,QAAQ2J,aAAa,uBAM/C,OAJA6zB,EAAQx9B,QAAQ6nG,oBAAoB,iBAAkB,wBAAyBD,EAAa,CACxFzqF,OAAO,EAAI4sC,EAAiB1oD,IAAI,yBAChCymG,aAAa,EAAI/9C,EAAiB1oD,IAAI,iFAEnC2jB,KAEX6hF,SAAU84H,EAAkB91F,QAC5Bg3F,0BAA0B,IAG9BQ,YAAa,IAAIZ,EAAQ,CACrB9iO,KAAM,cACNwT,KAAM,gBACN22F,aAAa,EAAI/9C,EAAiBzoD,KAAK,oCACvCy+N,MAAO,SAAeruK,EAAQvgD,GAC1B,GAAIA,EAAM,CACN,IAAIgpH,EAAM/5B,EAAkBpgG,QAAQvB,MAChC0hG,EAAOg6B,EAAI95B,QAAQ3uC,GACvB,OAAKyuC,EAAKgC,aAAag3H,wBAAwB,mBAAoBh/F,GA6F5Dn1G,EAzFqBwY,EAAQx9B,QAAQ6nG,oBAAoB,iBAAkB,4BAA6Bo4H,EAAiBjgO,QAAS,CACrImd,OAAO,EAAI4sC,EAAiB1oD,IAAI,6BAChCymG,YAAa/iG,EAAQ/E,QAAQzD,cACzB,MACA,KACAwI,EAAQ/E,QAAQzD,cACZ,IACA,MACA,EAAIwtD,EAAiB1oD,IAAI,oEAE7B0D,EAAQ/E,QAAQzD,cACZ,IACA,MACA,EAAIwtD,EAAiB1oD,IAAI,kLAA6L,GAAI,CACtN,EAAK,SAAWqtH,GACZ,OAAO3pH,EAAQ/E,QAAQzD,cACnB,IACA,KACAmyH,OAKhB3pH,EAAQ/E,QAAQzD,cACZ,IACA,MACA,EAAIwtD,EAAiB1oD,IAAI,yKAAoL,GAAI,CAC7M,EAAK,SAAWqtH,GACZ,OAAO3pH,EAAQ/E,QAAQzD,cACnB,IACA,KACAmyH,IAGR,UAAa,WACT,OAAO3pH,EAAQ/E,QAAQzD,cACnB,IACA,CAAEk/F,KAAM,0DACJh+F,OAAQ,SAAU2gG,IAAK,YAC3B,+DAKhBr5F,EAAQ/E,QAAQzD,cACZ,IACA,MACA,EAAIwtD,EAAiB1oD,IAAI,yPAAyQ,GAAI,CAClS,EAAK,SAAWqtH,GACZ,OAAO3pH,EAAQ/E,QAAQzD,cACnB,IACA,KACAmyH,IAGR,EAAK,SAAWA,GACZ,OAAO3pH,EAAQ/E,QAAQzD,cACnB,IACA,KACAmyH,OAKhB3pH,EAAQ/E,QAAQzD,cACZ,IACA,MACA,EAAIwtD,EAAiB1oD,IAAI,+GAAqH,GAAI,CAC9I8kK,WAAY,WACR,OAAOphK,EAAQ/E,QAAQzD,cACnB,OACA,KACA4jG,EAAOA,EAAKmhI,aAAe,MAGnCC,WAAY,WACR,OAAOx8N,EAAQ/E,QAAQzD,cACnB,OACA,KACA4U,QAMpByoH,QAAQ,EAAI7vE,EAAiB1oD,IAAI,aAEA+sD,SAEbjsD,MAAK,SAAUu5G,GAInC,IAHY,EAAIjyD,EAAgBzpD,SAAS07G,EAAO,GAC5B,GAIpB,OAAOye,EAAIqnG,YAAY9vK,EAAQvgD,OAlGxBhV,GAAO,EAAI4tD,EAAiB1oD,IAAI,kEAqG/C,OAAOlF,EAAOgP,KAAKs2N,aAEvB56H,SAAU84H,EAAkB+B,QAGhCC,KAAM,IAAIlB,EAAQ,CACd9iO,KAAM,OACNwT,KAAM,iBACN22F,aAAa,EAAI/9C,EAAiBzoD,KAAK,iCACvCy+N,MAAO,SAAeruK,EAAQvgD,GAC1B,OAAIA,EACO6T,EAAQo7E,EAAkBpgG,QAAQvB,MAAM4mN,eAAel0M,IAE3DhV,EAAOgP,KAAKs2N,aAEvB56H,SAAU84H,EAAkB91F,UAGhC+3F,WAAY,IAAInB,EAAQ,CACpB9iO,KAAM,aACNwT,KAAM,iBACN22F,aAAa,EAAI/9C,EAAiBzoD,KAAK,0DACvCy+N,MAAO,SAAeruK,EAAQvgD,GAC1B,GAAIA,EAAM,CACN,IAAIgpH,EAAM/5B,EAAkBpgG,QAAQvB,MAChC6pG,EAAK6xB,EAAI95B,QAAQ3uC,GAAQywC,aAAae,eAAe,gBAAiBi3B,EAAI7Y,aAC1Ene,GAAU,EAAI35C,EAAUxpD,SAAS,GAAIsoG,EAAKA,EAAGlF,aAAe,CAAEP,WAAY,QAAU,CACpFm2E,YAAa7nK,IAEjB,OAAO6T,EAAQm1G,EAAIxY,eAAejwD,EAAQ,gBAAiByxC,EAASg3B,EAAI7Y,cAE5E,OAAOnlH,EAAOgP,KAAKs2N,aAEvB56H,SAAU84H,EAAkB91F,UAGhCg4F,WAAY,IAAIpB,EAAQ,CACpB9iO,KAAM,aACNwT,KAAM,cACN22F,aAAa,EAAI/9C,EAAiBzoD,KAAK,0CACvCy+N,MAAO,SAAeruK,EAAQvgD,GAC1B,IAAInV,EAAU8I,EAAW9E,QAAQ9D,QAAQiV,GAKzC,OAJKA,IACDnV,EAAUqkO,KAGPr7M,EAAQhpB,EAAQmG,MAAK,SAAU2F,GAClC,GAAKA,EACL,OAAOs4F,EAAkBpgG,QAAQvB,MAAMkjH,eAAejwD,EAAQ,gBAAiB,CAAE5pD,IAAKA,GAAO,SAGrG++F,SAAU84H,EAAkB91F,UAGhCi4F,aAAc,IAAIrB,EAAQ,CACtB9iO,KAAM,eACNwT,KAAM,cACN22F,aAAa,EAAI/9C,EAAiBzoD,KAAK,iDACvCy+N,MAAO,SAAeruK,EAAQvgD,GAC1B,IAAIgpH,EAAM/5B,EAAkBpgG,QAAQvB,MAChC0hG,EAAOg6B,EAAI95B,QAAQ3uC,GACnBhzB,EAASy7F,EAAI7Y,YAEbtlH,EAAU8I,EAAW9E,QAAQ9D,QAAQiV,GAKzC,OAJKA,IACDnV,EAAUqkO,KAGPr7M,EAAQhpB,EAAQmG,MAAK,SAAU2F,GAClC,GAAKA,EAAL,CACA,IAAIwgG,EAAKnI,EAAKgC,aAAae,eAAe,gBAAiBxkE,GACvDykE,GAAU,EAAI35C,EAAUxpD,SAAS,GAAIsoG,EAAKA,EAAGlF,aAAe,CAAEP,WAAY,QAAU,CACpFgtC,WAAY/nI,IAEhB,OAAOqyH,EAAIxY,eAAejwD,EAAQ,gBAAiByxC,EAASzkE,SAGpEmoE,SAAU84H,EAAkB91F,UAGhCk4F,SAAU,IAAItB,EAAQ,CAClB9iO,KAAM,WACNwT,KAAM,cACN22F,aAAa,EAAI/9C,EAAiBzoD,KAAK,oCACvCy+N,MAAO,SAAeruK,EAAQvgD,GAC1B,IAAInV,EAAU8I,EAAW9E,QAAQ9D,QAAQiV,GAKzC,OAJKA,IACDnV,EAAUqkO,KAGPr7M,EAAQhpB,EAAQmG,MAAK,SAAU2F,GAClC,GAAKA,EACL,OAAOs4F,EAAkBpgG,QAAQvB,MAAM+mN,aAAa19M,QAG5D++F,SAAU84H,EAAkB91F,UAGhCuvC,MAAO,IAAIqnD,EAAQ,CACf9iO,KAAM,QACNwT,KAAM,YACN22F,aAAa,EAAI/9C,EAAiBzoD,KAAK,+BACvCy+N,MAAO,SAAeruK,EAAQvgD,GAC1B,IAAIgpH,EAAM/5B,EAAkBpgG,QAAQvB,MACpC,GAAI0S,EACA,OAAO6T,EAAQm1G,EAAI6nG,aAAatwK,EAAQvgD,IAE5C,IAAIgvF,EAAOg6B,EAAI95B,QAAQ3uC,GACvB,IAAKyuC,EAAM,OAAOhkG,EAAO,gBAAkBu1D,GAE3C,IAAIuwK,EAAc9hI,EAAKgC,aAAae,eAAe,eAAgB,IAC/Dk2E,EAAQ6oD,GAAeA,EAAY7+H,aAAag2E,MAChD8oD,EAAY9oD,GAAQ,EAAI4mD,EAAWxwH,wBAAwB4pE,IAAS,EAAIrvH,EAAiB1oD,IAAI,2BAE7F8gO,EAAa9kM,EAAQr9B,QAAQ2J,aAAa,sBAK9C,OAJA6zB,EAAQx9B,QAAQ6nG,oBAAoB,iBAAkB,QAASs6H,EAAY,CACvEhlN,MAAOgjF,EAAKxiG,KACZmqG,YAAa/iG,EAAQ/E,QAAQzD,cAAc,MAAO,CAAEqwG,wBAAyB,CAAEC,OAAQq1H,OAEpFl9M,KAEX6hF,SAAU84H,EAAkB+B,QAGhCU,SAAU,IAAI3B,EAAQ,CAClB9iO,KAAM,WACNwT,KAAM,SACN22F,aAAa,EAAI/9C,EAAiBzoD,KAAK,sBACvCy+N,MAAO,SAAeruK,EAAQvgD,GAC1B,OAAIA,EACO6T,EAAQo7E,EAAkBpgG,QAAQvB,MAAM4jO,YAAY3wK,EAAQvgD,IAEhEhV,EAAOgP,KAAKs2N,aAEvB56H,SAAU84H,EAAkB+B,QAGhCtb,OAAQ,IAAIqa,EAAQ,CAChB9iO,KAAM,SACNwT,KAAM,YACN22F,aAAa,EAAI/9C,EAAiBzoD,KAAK,8CACvCy+N,MAAO,SAAeruK,EAAQvgD,GAC1B,GAAIA,EAAM,CACN,IAAI6M,EAAU7M,EAAKtK,MAAM,WACzB,GAAImX,EAAS,CAGT,IAAIkhI,EAAUlhI,EAAQ,GAIlBowC,EAAWtpD,EAAW9E,QAAQ9D,UAClC,GAAkD,WAA9C,EAAI4yN,EAAatwE,gBAAgBU,KAAyB9+C,EAAkBpgG,QAAQvB,MAAMmlJ,uBAAwB,CAClH,IAAI0+E,GAA2B,EAAIlC,EAAqBmC,+BACxD,IAAID,EAeA,OAAOnmO,GAAO,EAAI4tD,EAAiB1oD,IAAI,mEAFvC+sD,EAZ6B5wB,EAAQx9B,QAAQ6nG,oBAAoB,iBAAkB,kBAAmBo4H,EAAiBjgO,QAAS,CAC5Hmd,OAAO,EAAI4sC,EAAiB1oD,IAAI,0BAChCymG,YAAa/iG,EAAQ/E,QAAQzD,cACzB,IACA,MACA,EAAIwtD,EAAiB1oD,IAAI,sJAAiK,CACtLmhO,2BAA2B,EAAIrC,EAAUjB,eAAeoD,MAGhE1oG,QAAQ,EAAI7vE,EAAiB1oD,IAAI,cAGH+sD,SAK1C,IAAIqgK,EAAU,IAAII,EAAe7uN,QAAQ0xD,GACzC,OAAO1sC,EAAQopC,EAASjsD,MAAK,WACzB,IAAI2hJ,EAAQh2I,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,GAAmBA,UAAU,GAAK,GAC5E20N,GAAQ,EAAIh5K,EAAgBzpD,SAAS8jJ,EAAO,GAC5C4+E,EAAaD,EAAM,GAEvB,GAAIC,GACA,EAAItC,EAAqBuC,iCACtB,IAAmB,IAAfD,EACP,MAAM,IAAI1lO,OAAM,EAAI+sD,EAAiB1oD,IAAI,mEAE7C,OAAOotN,EAAQrI,OAAO,CAAClnE,OACxB/8I,MAAK,WACJ,GAA4C,YAAxCssN,EAAQmU,mBAAmB1jF,GAC3B,MAAM,IAAIliJ,MAAMyxN,EAAQc,aAAarwE,SAKrD,OAAO/iJ,EAAOgP,KAAKs2N,aAEvB56H,SAAU84H,EAAkB91F,UAGhCniI,KAAM,IAAI+4N,EAAQ,CACd9iO,KAAM,OACNwT,KAAM,eACN22F,aAAa,EAAI/9C,EAAiBzoD,KAAK,+BACvCy+N,MAAO,SAAeruK,EAAQvgD,GAC1B,GAAIA,EAAM,CAaN,IAAIqjF,EAASrjF,EAAKnN,MAAM,KACxB,GAAIwwF,EAAO35F,OAAS,EAAG,OAAOsB,EAAOgP,KAAKs2N,YAE1C,IAAIoB,GAAc,EAClB,GAAIruI,EAAO,GAAG5vF,WAAW,UAAY4vF,EAAO,GAAG5vF,WAAW,UAAW,CAGjE,IAAIu6N,EAAY,IAAIz6H,IAAIlQ,EAAO,IAC3B6G,EAAW8jI,EAAUn/L,MAAQm/L,EAAU9jI,UAIvC,EAAI0U,EAAYrP,iBAAiBrF,KACjCwnI,GAAc,GAGtB,GAAqB,MAAjBruI,EAAO,GAAG,GAAY,CACtB,IAAIge,EAAYhe,EAAO,GAUvB,OATKge,EAAU7lE,SAAS,OACpB6lE,GAAa,IAAMpS,EAAkBpgG,QAAQvB,MAAM2X,aAGvD0zC,EAAa9pD,QAAQopD,SAAS,CAC1BD,OAAQ,YACRwqD,WAAYnB,EACZyB,WAAW,IAERjvF,IACJ,GAAqB,MAAjBwvE,EAAO,GAAG,GAAY,CAC7B,IAAIthC,EAAUshC,EAAO,GACjBsuI,EAAatuI,EAAOhtF,OAAO,GAY/B,OAVAsiD,EAAa9pD,QAAQopD,SAAS,CAC1BD,OAAQ,YACRqqD,QAAStgD,EACTv3C,KAAM,CAEFmnN,WAAYA,GAEhBC,YAAaD,EACb7uH,WAAW,IAERjvF,IACJ,GAAI69M,EAAa,CACpB,IAAI7hI,GAAiB,EAAI+O,EAAY9O,gBAAgBzM,EAAO,IAI5D,IAAKwM,EACD,OAAO7kG,EAAOgP,KAAKs2N,YAKvB,IAAKzgI,EAAeE,cAChB,OAAO/kG,EAAOgP,KAAKs2N,YAGvB,IAAIuB,EAAShiI,EAAeE,cACxB+hI,EAAcjiI,EAAe8hI,WAC7B1hI,EAAUJ,EAAeI,QAEzBh4C,EAAW,CACXD,OAAQ,YACR8qD,WAAW,GAsBf,MAnBkB,MAAd+uH,EAAO,GAAY55K,EAAkB,QAAI45K,EAAY55K,EAAqB,WAAI45K,EAE9E5hI,IACAh4C,EAAmB,SAAIg4C,EACvBh4C,EAAsB,aAAI,GAG1B65K,IAEA75K,EAAe,KAAI,CAEf05K,WAAYG,GAIhB75K,EAAsB,YAAI65K,GAG9Bn5K,EAAa9pD,QAAQopD,SAASA,GACvBpkC,KAGf,OAAO7oB,EAAOgP,KAAKs2N,aAEvB56H,SAAU84H,EAAkB91F,UAGhClsC,KAAM,IAAI8iI,EAAQ,CACd9iO,KAAM,OACNwT,KAAM,iBACN22F,aAAa,EAAI/9C,EAAiBzoD,KAAK,cACvCy+N,MAAO,SAAeruK,EAAQvgD,GAC1B,IAAIgpH,EAAM/5B,EAAkBpgG,QAAQvB,MAEhCykO,OAAe,EACnB,GAAI/xN,EAAM,CACN,IAAI6M,EAAU7M,EAAKtK,MAAM,WACzB,GAAImX,EAAS,CACT,IAAIw0F,EAAYx0F,EAAQ,GACxB,GAAqB,MAAjBw0F,EAAU,GAAY,OAAOr2G,EAAOgP,KAAKs2N,YAExCjvH,EAAU7lE,SAAS,OACpB6lE,GAAa,IAAM2nB,EAAI/jH,aAK3B,IADA,IAAIivI,EAAQlrB,EAAIo9F,WACP58N,EAAI,EAAGA,EAAI0qJ,EAAMxqJ,OAAQF,IAAK,CAEnC,IADA,IAAIwoO,EAAc99E,EAAM1qJ,GAAGwnG,aAAae,eAAe,kBAC9CxuF,EAAI,EAAGA,EAAIyuN,EAAYtoO,OAAQ6Z,IAAK,CAEzC,IADA,IAAI0uN,EAAWD,EAAYzuN,GAAG0uF,aAAa08H,SAAW,GAC7Ct6N,EAAI,EAAGA,EAAI49N,EAASvoO,OAAQ2K,IACjC,GAAI49N,EAAS59N,KAAOgtG,EAAW,CAC3B0wH,EAAe79E,EAAM1qJ,GAAG+2D,OACxB,MAGR,GAAIwxK,EAAc,MAEtB,GAAIA,EAAc,MAEtB,IAAKA,EAAc,OAAO/mO,GAAO,EAAI4tD,EAAiB1oD,IAAI,4BAA8B,IAAMmxG,IAKtG,OADK0wH,IAAcA,EAAexxK,GAC3B1sC,EAAQm1G,EAAIkpG,eAAeH,GAAc/gO,MAAK,WACjD2nD,EAAa9pD,QAAQopD,SAAS,CAAED,OAAQ,wBAGhD09C,SAAU84H,EAAkB91F,UAGhCy5F,KAAM,IAAI7C,EAAQ,CACd9iO,KAAM,OACNwT,KAAM,qBACN22F,aAAa,EAAI/9C,EAAiBzoD,KAAK,4BACvCy+N,MAAO,SAAeruK,EAAQvgD,GAC1B,GAAIA,EAAM,CACN,IAAI6M,EAAU7M,EAAKtK,MAAM,qBACzB,GAAImX,EACA,OAAOgH,EAAQo7E,EAAkBpgG,QAAQvB,MAAM6kO,KAAK5xK,EAAQ1zC,EAAQ,GAAIA,EAAQ,KAGxF,OAAO7hB,EAAOgP,KAAKs2N,aAEvB56H,SAAU84H,EAAkB+B,QAIhC6B,IAAK,IAAI9C,EAAQ,CACb9iO,KAAM,MACNwT,KAAM,qBACN22F,aAAa,EAAI/9C,EAAiBzoD,KAAK,2BACvCy+N,MAAO,SAAeruK,EAAQvgD,GAC1B,GAAIA,EAAM,CACN,IAAI6M,EAAU7M,EAAKtK,MAAM,qBACzB,GAAImX,EACA,OAAOgH,EAAQo7E,EAAkBpgG,QAAQvB,MAAM8kO,IAAI7xK,EAAQ1zC,EAAQ,GAAIA,EAAQ,KAGvF,OAAO7hB,EAAOgP,KAAKs2N,aAEvB56H,SAAU84H,EAAkB+B,QAIhC8B,MAAO,IAAI/C,EAAQ,CACf9iO,KAAM,QACNwT,KAAM,YACN22F,aAAa,EAAI/9C,EAAiBzoD,KAAK,6BACvCy+N,MAAO,SAAeruK,EAAQvgD,GAC1B,GAAIA,EAAM,CACN,IAAI6M,EAAU7M,EAAKtK,MAAM,WACzB,GAAImX,EAEA,OAAOgH,EAAQo7E,EAAkBpgG,QAAQvB,MAAM+kO,MAAM9xK,EAAQ1zC,EAAQ,KAG7E,OAAO7hB,EAAOgP,KAAKs2N,aAEvB56H,SAAU84H,EAAkB+B,QAGhCzlM,OAAQ,IAAIwkM,EAAQ,CAChB9iO,KAAM,SACNwT,KAAM,YACN22F,aAAa,EAAI/9C,EAAiBzoD,KAAK,kDACvCy+N,MAAO,SAAeruK,EAAQvgD,GAC1B,GAAIA,EAAM,CACN,IAAIgpH,EAAM/5B,EAAkBpgG,QAAQvB,MAEhCuf,EAAU7M,EAAKtK,MAAM,WACzB,GAAImX,EAAS,CACT,IAAI0gB,EAAS1gB,EAAQ,GACjBylN,EAAetpG,EAAIupG,kBAEvB,OADAD,EAAatoO,KAAKujC,GACX1Z,EAAQm1G,EAAIwpG,gBAAgBF,GAActhO,MAAK,WAClD,IAAIggO,EAAa9kM,EAAQr9B,QAAQ2J,aAAa,sBAC9C6zB,EAAQx9B,QAAQ6nG,oBAAoB,iBAAkB,eAAgBs6H,EAAY,CAC9EhlN,OAAO,EAAI4sC,EAAiB1oD,IAAI,gBAChCymG,YAAa/iG,EAAQ/E,QAAQzD,cACzB,MACA,KACAwI,EAAQ/E,QAAQzD,cACZ,IACA,MACA,EAAIwtD,EAAiB1oD,IAAI,kCAAmC,CAAEq9B,OAAQA,aAO9F,OAAOviC,EAAOgP,KAAKs2N,aAEvB56H,SAAU84H,EAAkB91F,UAGhC+5F,SAAU,IAAInD,EAAQ,CAClB9iO,KAAM,WACNwT,KAAM,YACN22F,aAAa,EAAI/9C,EAAiBzoD,KAAK,+DACvCy+N,MAAO,SAAeruK,EAAQvgD,GAC1B,GAAIA,EAAM,CACN,IAAIgpH,EAAM/5B,EAAkBpgG,QAAQvB,MAEhCuf,EAAU7M,EAAKtK,MAAM,WACzB,GAAImX,EAAS,CACT,IAAI0gB,EAAS1gB,EAAQ,GACjBylN,EAAetpG,EAAIupG,kBACnB38N,EAAQ08N,EAAal/N,QAAQm6B,GAEjC,OADe,IAAX33B,GAAc08N,EAAaj8N,OAAOT,EAAO,GACtCie,EAAQm1G,EAAIwpG,gBAAgBF,GAActhO,MAAK,WAClD,IAAIggO,EAAa9kM,EAAQr9B,QAAQ2J,aAAa,sBAC9C6zB,EAAQx9B,QAAQ6nG,oBAAoB,iBAAkB,iBAAkBs6H,EAAY,CAChFhlN,OAAO,EAAI4sC,EAAiB1oD,IAAI,kBAChCymG,YAAa/iG,EAAQ/E,QAAQzD,cACzB,MACA,KACAwI,EAAQ/E,QAAQzD,cACZ,IACA,MACA,EAAIwtD,EAAiB1oD,IAAI,wCAAyC,CAAEq9B,OAAQA,aAOpG,OAAOviC,EAAOgP,KAAKs2N,aAEvB56H,SAAU84H,EAAkB91F,UAIhCl1D,GAAI,IAAI8rJ,EAAQ,CACZ9iO,KAAM,KACNwT,KAAM,4BACN22F,aAAa,EAAI/9C,EAAiBzoD,KAAK,oCACvCy+N,MAAO,SAAeruK,EAAQvgD,GAC1B,GAAIA,EAAM,CACN,IAAI6M,EAAU7M,EAAKtK,MAAM,wBACrB88F,EAAa,GACjB,GAAI3lF,EAAS,CACT,IAAI0gB,EAAS1gB,EAAQ,GAIrB,GAHuB,IAAnBA,EAAQnjB,aAAgBgD,IAAcmgB,EAAQ,KAC9C2lF,EAAa1lF,SAASD,EAAQ,MAE7Bs3E,MAAMqO,GAAa,CACpB,IAAIw2B,EAAM/5B,EAAkBpgG,QAAQvB,MAChC0hG,EAAOg6B,EAAI95B,QAAQ3uC,GACvB,IAAKyuC,EAAM,OAAOhkG,EAAO,gBAAkBu1D,GAE3C,IAAImyK,EAAkB1jI,EAAKgC,aAAae,eAAe,sBAAuB,IAC9E,OAAOl+E,EAAQm1G,EAAI2pG,cAAcpyK,EAAQhzB,EAAQilE,EAAYkgI,MAIzE,OAAO1nO,EAAOgP,KAAKs2N,aAEvB56H,SAAU84H,EAAkB+B,QAIhCqC,KAAM,IAAItD,EAAQ,CACd9iO,KAAM,OACNwT,KAAM,YACN22F,aAAa,EAAI/9C,EAAiBzoD,KAAK,4BACvCy+N,MAAO,SAAeruK,EAAQvgD,GAC1B,GAAIA,GACcA,EAAKtK,MAAM,WACZ,CACT,IAAIszH,EAAM/5B,EAAkBpgG,QAAQvB,MAChC0hG,EAAOg6B,EAAI95B,QAAQ3uC,GACvB,IAAKyuC,EAAM,OAAOhkG,EAAO,gBAAkBu1D,GAE3C,IAAImyK,EAAkB1jI,EAAKgC,aAAae,eAAe,sBAAuB,IAC9E,OAAOl+E,EAAQm1G,EAAI2pG,cAAcpyK,EAAQvgD,OAAMtT,EAAWgmO,IAGlE,OAAO1nO,EAAOgP,KAAKs2N,aAEvB56H,SAAU84H,EAAkB+B,QAGhCsC,SAAU,IAAIvD,EAAQ,CAClB9iO,KAAM,WACNmqG,aAAa,EAAI/9C,EAAiBzoD,KAAK,oCACvCy+N,MAAO,SAAeruK,GAClB,IAAIuyK,EAAiB5mM,EAAQr9B,QAAQ2J,aAAa,0BAElD,OADA6zB,EAAQx9B,QAAQ+/B,aAAakkM,EAAgB,CAAEvyK,OAAQA,IAChD1sC,KAEX6hF,SAAU84H,EAAkBuE,WAGhCC,UAAW,IAAI1D,EAAQ,CACnB9iO,KAAM,YACNwT,KAAM,QACN22F,aAAa,EAAI/9C,EAAiBzoD,KAAK,2CACvCy+N,MAAO,SAAeruK,EAAQvgD,GAC1B,IAAKA,IAASA,EAAKvM,WAAW,cAAgBuM,EAAKvM,WAAW,WAC1D,OAAOzI,GAAO,EAAI4tD,EAAiB1oD,IAAI,mDAE3C,GAAI6hH,EAAcljH,QAAQokO,qBAAqB1yK,GAAS,CACpD,IAAIhzB,EAAS0hE,EAAkBpgG,QAAQvB,MAAM6iH,YACzC+iH,GAAQ,IAAItyK,MAAOC,UACnBsuD,EAAW7rB,mBAAmB/iC,EAAS,IAAMhzB,EAAS,IAAM2lM,GAChE,OAAOr/M,EAAQk+F,EAAcljH,QAAQ84H,cAAcpnE,EAAQ4uD,EAAU,WAAYnvG,EAAM,gBAAiB,KAExG,OAAOhV,GAAO,EAAI4tD,EAAiB1oD,IAAI,6CAG/CwlG,SAAU84H,EAAkB+B,QAIhC4C,OAAQ,IAAI7D,EAAQ,CAChB9iO,KAAM,SACNwT,KAAM,6CACN22F,aAAa,EAAI/9C,EAAiBzoD,KAAK,6CACvCy+N,MAAO,SAAeruK,EAAQvgD,GAC1B,GAAIA,EAAM,CACN,IAAI6M,EAAU7M,EAAKtK,MAAM,yBACzB,GAAImX,EAAS,CACT,IAAIm8G,EAAM/5B,EAAkBpgG,QAAQvB,MAEhCigC,EAAS1gB,EAAQ,GACjB+iB,EAAW/iB,EAAQ,GACnBumN,EAAcvmN,EAAQ,GAE1B,OAAOgH,EAGPlgB,EAAW9E,QAAQ9D,QAAQi+H,EAAIqqG,gBAAgB9lM,EAAQqC,IAAW5+B,MAAK,SAAU0tJ,GAC7E,IAAKA,EACD,MAAM,IAAI7yJ,OAAM,EAAI+sD,EAAiB1oD,IAAI,gCAAmC,KAAOq9B,EAAS,KAAOqC,EAAW,KAGlH,GAAI8uH,EAAOgvD,aACP,MAAIhvD,EAAOsa,mBAAqBo6D,EACtB,IAAIvnO,OAAM,EAAI+sD,EAAiB1oD,IAAI,6BAEnC,IAAIrE,OAAM,EAAI+sD,EAAiB1oD,IAAI,6DAIjD,GAAIwuJ,EAAOsa,mBAAqBo6D,EAAa,CACzC,IAAIE,EAAS50E,EAAOsa,iBACpB,MAAM,IAAIntK,OAAM,EAAI+sD,EAAiB1oD,IAAI,+NAA0O,CAC/QojO,OAAQA,EACR/lM,OAAQA,EACRqC,SAAUA,EACVwjM,YAAaA,KAIrB,OAAOpqG,EAAIuqG,kBAAkBhmM,EAAQqC,GAAU,MAChD5+B,MAAK,WAEJ,IAAIggO,EAAa9kM,EAAQr9B,QAAQ2J,aAAa,sBAC9C6zB,EAAQx9B,QAAQ6nG,oBAAoB,iBAAkB,eAAgBs6H,EAAY,CAC9EhlN,OAAO,EAAI4sC,EAAiB1oD,IAAI,gBAChCymG,YAAa/iG,EAAQ/E,QAAQzD,cACzB,MACA,KACAwI,EAAQ/E,QAAQzD,cACZ,IACA,MACA,EAAIwtD,EAAiB1oD,IAAI,sIAA6I,CAAEq9B,OAAQA,EAAQqC,SAAUA,aAO1N,OAAO5kC,EAAOgP,KAAKs2N,aAEvB56H,SAAU84H,EAAkBuE,WAMhCzkH,GAAI,IAAIghH,EAAQ,CACZ9iO,KAAM,KACNwT,KAAM,YACN22F,aAAa,EAAI/9C,EAAiBzoD,KAAK,mBACvCulG,SAAU84H,EAAkBuB,SAC5BL,0BAA0B,IAG9B8D,eAAgB,IAAIlE,EAAQ,CACxB9iO,KAAM,iBACNmqG,aAAa,EAAI/9C,EAAiBzoD,KAAK,kFACvCy+N,MAAO,SAAeruK,GAClB,IACI0uC,EAAkBpgG,QAAQvB,MAAMmmO,oBAAoBlzK,GACtD,MAAO71D,GACL,OAAOM,EAAON,EAAE6B,SAEpB,OAAOsnB,KAEX6hF,SAAU84H,EAAkBuE,WAGhCW,QAAS,IAAIpE,EAAQ,CACjB9iO,KAAM,UACNmqG,aAAa,EAAI/9C,EAAiBzoD,KAAK,iDACvC6P,KAAM,YACN4uN,MAAO,SAAeruK,EAAQvgD,GAC1B,OAAKA,EACE6T,EAAQo7E,EAAkBpgG,QAAQvB,MAAMqmO,gBAAgBpzK,EAAQvgD,GAAM,EAAI+uN,EAAQ6E,mBAAmB5zN,KAD1FhV,EAAOgP,KAAKm2G,cAGlCza,SAAU84H,EAAkBuB,WAGhC8D,UAAW,IAAIvE,EAAQ,CACnB9iO,KAAM,YACNmqG,aAAa,EAAI/9C,EAAiBzoD,KAAK,+CACvC6P,KAAM,YACN4uN,MAAO,SAAeruK,EAAQvgD,GAC1B,OAAKA,EACE6T,EAAQo7E,EAAkBpgG,QAAQvB,MAAMwmO,cAAcvzK,EAAQvgD,GAAM,EAAI+uN,EAAQ6E,mBAAmB5zN,KADxFhV,EAAOgP,KAAKm2G,cAGlCza,SAAU84H,EAAkBuB,WAGhCgE,KAAM,IAAIzE,EAAQ,CACd9iO,KAAM,OACNmqG,aAAa,EAAI/9C,EAAiBzoD,KAAK,0DACvCy+N,MAAO,WACH,IAAIoF,EAAyB9nM,EAAQr9B,QAAQ2J,aAAa,kCAG1D,OADA6zB,EAAQx9B,QAAQ6nG,oBAAoB,iBAAkB,OAAQs9H,GACvDngN,KAEX6hF,SAAU84H,EAAkBuE,YAMhCpE,EAAU,CACVprN,EAAG,OACH0wN,eAAgB,iBAChBC,KAAM,OACNC,SAAU,e,6BCjgCd,IAEIrkO,EAASF,EAFD,EAAQ,KAMhBgE,EAAUhE,EAFD,EAAQ,IAMjB4oD,EAAc5oD,EAFD,EAAQ,IAMrB6oD,EAAqB7oD,EAFD,EAAQ,KAM5BwkO,EAAWxkO,EAFD,EAAQ,MAItB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAkBvF,IAAIolO,GAAc,EAAI57K,EAAmB5pD,SAAS,CAC9CiqD,YAAa,cAEbC,UAAW,CACPttD,IAAK+sD,EAAY3pD,QAAQytC,OAAO2c,WAChCo9C,MAAO79C,EAAY3pD,QAAQytC,OAAO2c,WAClCgjB,OAAQzjB,EAAY3pD,QAAQytC,OAAO2c,WACnCrkD,UAAW4jD,EAAY3pD,QAAQytC,QAGnCg4L,QAAS,CAELC,OAAQ,GACRC,WAAY,GAGhBp7K,mBAAoB,WAChBp/C,KAAKm3I,OAAS,IAGlBsjF,kBAAmB,WACfz6N,KAAK4gD,GAAKy5K,EAAYG,aACtBH,EAAYE,OAAOv6N,KAAK4gD,IAAM5gD,MAGlCy/C,qBAAsB,kBACX46K,EAAYE,OAAOv6N,KAAK4gD,KAGnC61F,KAAM,WAGF2jF,EAASvlO,QAAQ6lO,eAAe16N,KAAKm3I,SAGzCwjF,OAAQ,SAAgB7oO,GAEpBkO,KAAKm3I,OAASijF,EAASvlO,QAAQ+lO,cAAc,CAAC9oO,EAAMQ,SACpD8nO,EAASvlO,QAAQ6lO,eAAe16N,KAAKm3I,SAGzCv3F,OAAQ,WACJ,OAAOhmD,EAAQ/E,QAAQzD,cAAc,SAAU,CAAEwJ,UAAW,mBAAqBoF,KAAK3K,MAAMuF,UAAYoF,KAAK3K,MAAMuF,UAAY,IAC3HxI,KAAM,gBACNjD,KAAM6Q,KAAK3K,MAAM5D,IACjB4qG,MAAOr8F,KAAK3K,MAAMgnG,MAClBp6B,OAAQjiE,KAAK3K,MAAM4sE,OACnB04J,OAAQ36N,KAAK26N,OACb7tK,SAAU,UAMtBstK,EAASvlO,QAAQgmO,kBAAiB,WAC1BR,EAAYE,SACZ,EAAIzkO,EAAOjB,SAASwlO,EAAYE,QAAQngO,SAAQ,SAAUwmD,GACtDy5K,EAAYE,OAAO35K,GAAI61F,aAKnCjmJ,EAAOD,QAAU8pO,G,cCtGjB7pO,EAAOD,QAAU,4B,6BCEjB,IAEI8tD,EAAYzoD,EAFA,EAAQ,KAMpBE,EAASF,EAFD,EAAQ,KAMhBgE,EAAUhE,EAFD,EAAQ,IAMjB4oD,EAAc5oD,EAFD,EAAQ,IAMrB6oD,EAAqB7oD,EAFD,EAAQ,KAM5BklO,EAAallO,EAFD,EAAQ,MAMpBq/F,EAAoBr/F,EAFD,EAAQ,KAM3Bs8B,EAAUt8B,EAFD,EAAQ,IAIjBgpD,EAAmB,EAAQ,GAE3Bm8K,EAAe,EAAQ,KAIvBX,EAAWxkO,EAFD,EAAQ,MAMlB8D,EAAmB9D,EAFD,EAAQ,MAM1By8B,EAAUz8B,EAFD,EAAQ,KAIrB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAGvF,IAAI+lO,OAAyB,EAoBzBC,EAAc,EACdV,EAAS,GA6BbH,EAASvlO,QAAQgmO,kBAxBjB,YAOI,EAAInhO,EAAiB7E,SAAS,CAAE8zH,IAAK,EAAQ,QAAuC,SAAUr0H,EAAKuI,EAAUC,GACzG,IAAIxI,EAAJ,CAEA,IAAI4mO,GAAM,IAAIC,WAAYC,gBAAgBt+N,EAAM,iBAE5Cq6I,EAASijF,EAASvlO,QAAQ+lO,cAAc,CAAC,CAAEvjF,gBAAiB6jF,KAChEd,EAASvlO,QAAQ6lO,eAAevjF,GAEhC,IAAIkkF,GAAY,IAAIC,eAAgBC,kBAAkBL,GACtDF,EAAyB,6BAA+BvmO,OAAO+mO,KAAKH,IAEpE,EAAIvlO,EAAOjB,SAAS0lO,GAAQngO,SAAQ,SAAUwmD,GAC1C25K,EAAO35K,GAAI61F,iBA0EvB,SAASglF,EAAa3pO,GAClB,IAAI3C,EAAO2C,EAAM3C,KAEb02G,EAAM10G,SAASC,cAAc,OACjCy0G,EAAIjlD,GAAK,MACTilD,EAAIp0G,IAAMtC,EAAKusO,OAEf,IAAIr8N,EAAIlO,SAASC,cAAc,KAC/BiO,EAAEuhD,GAAK,IACPvhD,EAAE4zF,IAAM9jG,EAAK8jG,IACb5zF,EAAE/M,OAASnD,EAAKmD,OAChB+M,EAAEs8N,SAAWxsO,EAAKwsO,SAClBt8N,EAAE+lG,MAAQj2G,EAAKi2G,MACf/lG,EAAE+lG,MAAMw2H,WAAa,+BACrBv8N,EAAEixF,KAAO77F,OAAO8kG,IAAIojD,gBAAgBxtJ,EAAK4wJ,MACzC1gJ,EAAExM,YAAYgzG,GACdxmG,EAAExM,YAAY1B,SAAS0qO,eAAe1sO,EAAK2sO,cAE3C,IAAIh/N,EAAO3L,SAAS2L,KAGpBA,EAAKsoG,MAAQ,gCACbtoG,EAAKjK,YAAYwM,GAOrB,SAAS08N,EAAcjqO,GACnB,IAAI3C,EAAO2C,EAAM3C,KAEb02G,EAAM10G,SAASwvD,eAAe,OAClCklD,EAAIp0G,IAAMtC,EAAKusO,OACf71H,EAAIT,MAAQj2G,EAAK6sO,SAET7qO,SAASwvD,eAAe,KAC9BykD,MAAQj2G,EAAKi2G,MAQnB,SAAS62H,EAAcjwK,GACnB,IAAKA,EACD,MAAO,GAEX,IAAIo5C,EAAQ3wG,OAAO8hJ,iBAAiBvqF,EAAS,MACzCkwK,EAAU92H,EAAM82H,QACpB,GAAe,IAAXA,EAGA,IAAK,IAAI1sO,EAAI,EAAGA,EAAI41G,EAAM11G,OAAQF,IAC9B0sO,GAAW92H,EAAM51G,GAAK,IACtB0sO,GAAW92H,EAAM+2H,iBAAiB/2H,EAAM51G,IAAM,IAGtD,OAAO0sO,EAGX1rO,EAAOD,SAAU,EAAIkuD,EAAmB5pD,SAAS,CAC7CiqD,YAAa,YAEbI,gBAAiB,WACb,MAAO,CACHk9K,cAAep8N,KAAK3K,MAAM+mO,cAAgBp8N,KAAK3K,MAAM+mO,cAAgB,OAI7Er9K,UAAW,CAEPgtG,QAASvtG,EAAY3pD,QAAQV,OAAO8qD,WAEpCm9K,cAAe59K,EAAY3pD,QAAQV,OAEnC62J,gBAAiBxsG,EAAY3pD,QAAQm4D,KAErCg/F,UAAWxtG,EAAY3pD,QAAQytC,QAGnCoqH,aAAc,CACV2vE,UAAW79K,EAAY3pD,QAAQV,QAUnCmoO,uBAAwB,SAAgCtkI,GACpD,IAAIukI,GAAW,EAAI39K,EAAiB1oD,IAAI,cAiBxC,OAhBI8hG,EAAQl7F,MAAQk7F,EAAQl7F,KAAKpN,OAAS,IAGtC6sO,EAAWvkI,EAAQl7F,MAGnBk7F,EAAQ3iF,MAAQ2iF,EAAQ3iF,KAAKyR,OAQ7By1M,GAAY,MAAO,EAAIzB,EAAWjmO,SAASmjG,EAAQ3iF,KAAKyR,MAAQ,KAE7Dy1M,GAGXC,eAAgB,WACZ,IAAIxkI,EAAUh4F,KAAK3K,MAAM02J,QAAQ9zD,aACjC,OAAOhD,EAAkBpgG,QAAQvB,MAAM2xG,aAAajN,EAAQr7F,MAGhE89N,kBAAmB,WAGfz6N,KAAK4gD,GAAKq6K,IACVV,EAAOv6N,KAAK4gD,IAAM5gD,KAClBA,KAAKy2I,QAGTgmF,mBAAoB,SAA4BC,EAAW3S,GACnD/pN,KAAK3K,MAAM21J,kBAAoB++D,EAAUqS,eAAiBp8N,KAAK6/C,MAAMu8K,eACrEp8N,KAAK3K,MAAM21J,mBAInBvrG,qBAAsB,kBAEX86K,EAAOv6N,KAAK4gD,KAGvB61F,KAAM,WAEEz2I,KAAK28N,KAAKC,gBACV58N,KAAK28N,KAAKC,cAAcnrO,IAAMupO,GAE9Bh7N,KAAK28N,KAAK3hH,QAIVh7G,KAAK28N,KAAK3hH,OAAOE,cAAck+C,YAAY,CACvC75J,KAAMw8N,EAAcv2N,WACpBk2N,OAAQV,EACR51H,MAAO62H,EAAcj8N,KAAK28N,KAAKE,YAChC,MAIXj9K,OAAQ,WACJ,IAAIP,EAAQr/C,KAERg4F,EAAUh4F,KAAK3K,MAAM02J,QAAQ9zD,aAC7Bn+F,EAAOkG,KAAKs8N,uBAAuBtkI,GACnCumB,OAA+B7rH,IAAjBslG,EAAQsnD,KACtBloJ,EAAW4gG,EAAQl7F,MAAQk7F,EAAQl7F,KAAKpN,OAAS,EAAIsoG,EAAQl7F,MAAO,EAAI8hD,EAAiB1oD,IAAI,cAC7F4mO,EAAa98N,KAAKw8N,iBAClB//H,EAAcvqE,EAAQr9B,QAAQ2J,aAAa,uBAC3Cu+N,EAAW/kI,EAAQ3iF,KAAO2iF,EAAQ3iF,KAAKyR,KAAO,KAC9Ck2M,EAAWhlI,EAAQ3iF,KAAO2iF,EAAQ3iF,KAAKkpI,SAAW,2BAEtD,GAAIhgC,EAAa,CACb,GAAiC,OAA7Bv+G,KAAK6/C,MAAMu8K,cAAwB,CAInC,IAAIa,GAAa,EAsBjB,OAAOrjO,EAAQ/E,QAAQzD,cACnB,OACA,CAAEwJ,UAAW,eAAgB++B,IAAK,QAClC//B,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,yBACbhB,EAAQ/E,QAAQzD,cACZ,IACA,CAAEk/F,KAAM,qBAAsB7sC,QA7B5B,WACV,GAAIw5K,EACA,OAAO,EAEXA,GAAa,GACb,EAAIlC,EAAamC,aAAallI,EAAQsnD,MAAMtoJ,MAAK,SAAU+oJ,GACvD1gG,EAAME,SAAS,CACX68K,cAAer8E,OAEpBvgG,OAAM,SAAUlrD,GACfC,QAAQ+F,KAAK,iCAAkChG,GAC/C+9B,EAAQx9B,QAAQ6nG,oBAAoB,8BAA+B,GAAID,EAAa,CAChFzqF,OAAO,EAAI4sC,EAAiB1oD,IAAI,SAChCymG,aAAa,EAAI/9C,EAAiB1oD,IAAI,oCAE3Cs3G,SAAQ,WACPyvH,GAAa,QAcT,EAAIr+K,EAAiB1oD,IAAI,mBAAoB,CAAE4D,KAAMA,OAOrE,IAiBIqjO,EAzOoB,sCA8OxB,OAJIn9N,KAAKyD,QAAQ44N,WAAar8N,KAAKyD,QAAQ44N,UAAUe,4BACjDD,EAAen9N,KAAKyD,QAAQ44N,UAAUe,2BAE1CD,GAAgB,WAAa7zI,mBAAmB70F,OAAOqgC,SAASwY,QACzD1zC,EAAQ/E,QAAQzD,cACnB,OACA,CAAEwJ,UAAW,gBACbhB,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,yBACbhB,EAAQ/E,QAAQzD,cACZ,MACA,CAAEg0G,MAAO,CAAE6V,QAAS,SACpBrhH,EAAQ/E,QAAQzD,cAAc,IAAK,CAAEuoC,IAAK,eAE9C//B,EAAQ/E,QAAQzD,cAAc,SAAU,CAAEK,IAAK0rO,EAAcxC,OAjClD,SAAsBx9H,GACrCA,EAAG7qG,OAAO4oH,cAAck+C,YAAY,CAChC75J,KAAMk8N,EAAaj2N,WACnBk2N,OAAQV,EACR51H,MAAO62H,EAAc58K,EAAMs9K,KAAKE,WAChC98E,KAAM1gG,EAAMQ,MAAMu8K,cAIlBT,SAAUvkO,EACV67F,IAAK,WACL3gG,OAAQ,SACRwpO,aAAa,EAAIl9K,EAAiB1oD,IAAI,oBAAqB,CAAE4D,KAAMA,KACpE,MAoBoF6/B,IAAK,aAG7F,GAAImjM,EAAY,CACnB,IAAIO,EAAgB,CAChB/qO,OAAQ,SACR2gG,IAAK,WAKL3C,KAAMwsI,GAONQ,EAAiC,iBAAbP,GAAwBA,EAAW,SAmC3D,MAjCI,CAAC,mBAAmBv7L,SAASw7L,KAAcM,EAE3CD,EAAuB,QAAI,SAAU3sO,GACjC6D,QAAQsD,IAAI,eAAiBmlO,EAAW,0BAGxCtsO,EAAEg8D,iBACFh8D,EAAE+7D,kBAIFguD,MAAMqiH,GAAY9lO,MAAK,SAAU6F,GAC7B,OAAOA,EAASkjJ,UACjB/oJ,MAAK,SAAU+oJ,GACd,IAAIw9E,EAAUhkI,IAAIojD,gBAAgBoD,GAG9By9E,EAAarsO,SAASC,cAAc,KACxCosO,EAAW7B,SAAWvkO,EACtBomO,EAAWltI,KAAOitI,EAClBpsO,SAAS2L,KAAKjK,YAAY2qO,GAC1BA,EAAWnI,QACXmI,EAAWp5L,aAKnBi5L,EAAwB,SAAIjmO,EAMH,cAAzB4I,KAAK3K,MAAM22J,UACJpyJ,EAAQ/E,QAAQzD,cACnB,OACA,CAAEwJ,UAAW,gBACbhB,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,yBACbhB,EAAQ/E,QAAQzD,cACZ,KACA,EAAIitD,EAAUxpD,SAAS,CAAE+F,UAAW,6BAA+ByiO,GACnEjmO,GAEJwC,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,sBACbo9F,EAAQ3iF,MAAQ2iF,EAAQ3iF,KAAKyR,MAAO,EAAIg0M,EAAWjmO,SAASmjG,EAAQ3iF,KAAKyR,MAAQ,MAKtFltB,EAAQ/E,QAAQzD,cACnB,OACA,CAAEwJ,UAAW,gBACbhB,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,yBACbhB,EAAQ/E,QAAQzD,cACZ,IACAisO,EACAzjO,EAAQ/E,QAAQzD,cAAc,MAAO,CAAEK,IAAKupO,EAAwB3+H,MAAO,KAAMp6B,OAAQ,KAAMtoC,IAAK,mBACpG,EAAIilB,EAAiB1oD,IAAI,oBAAqB,CAAE4D,KAAMA,OAMtE,IAAIimE,EAAQjmE,EAAO,KAAOA,EAAO,GACjC,OAAOF,EAAQ/E,QAAQzD,cACnB,OACA,CAAEwJ,UAAW,iBACb,EAAIgkD,EAAiB1oD,IAAI,wBAAyB,CAAE6pE,MAAOA,S,6BC1f3EpwE,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAEXnD,EAAQ2sO,YAwGR,SAAqB59E,GACjB,IAAI3iJ,EAAMs4F,EAAkBpgG,QAAQvB,MAAM2xG,aAAaq6C,EAAK3iJ,KAE5D,OAAOhD,EAAW9E,QAAQ9D,QAAQ0pH,MAAM99G,IAAM3F,MAAK,SAAU6F,GACzD,OAAOA,EAASigJ,iBACjB9lJ,MAAK,SAAUymO,GAGd,OAAOrgF,EAA2BvoJ,QAAQ6oO,kBAAkBD,EAAcn+E,MAC3EtoJ,MAAK,SAAU2mO,GAOd,IAAIp/E,EAAWe,EAAKf,SAAWe,EAAKf,SAAS1lJ,MAAM,KAAK,GAAGi5F,OAAS,GAMpE,OALK8rI,EAAuBr/E,KACxBA,EAAW,4BAGJ,IAAIyB,KAAK,CAAC29E,GAAY,CAAEvrO,KAAMmsJ,QA3HjD,IAEInB,EAA6BxnJ,EAFD,EAAQ,MAIxC,EAAQ,MAER,IAEIq/F,EAAoBr/F,EAFD,EAAQ,KAM3B+D,EAAa/D,EAFD,EAAQ,IAIxB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAuDvF,IAAI2oO,EAAyB,CACzB,cAAc,EACd,aAAa,EACb,aAAa,EAEb,aAAa,EACb,cAAc,EACd,aAAa,EAEb,aAAa,EACb,cAAc,EACd,aAAa,EACb,cAAc,EACd,aAAa,EACb,cAAc,EACd,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,gBAAgB,I,cC3EpBptO,EAAOD,QAXP,SAAkBg4B,EAAO85J,GAKvB,IAJA,IAAIzmL,GAAS,EACTlM,EAAkB,MAAT64B,EAAgB,EAAIA,EAAM74B,OACnCuH,EAASN,MAAMjH,KAEVkM,EAAQlM,GACfuH,EAAO2E,GAASymL,EAAS95J,EAAM3sB,GAAQA,EAAO2sB,GAEhD,OAAOtxB,I,cChBT,IAAIs6D,EAAmB,iBAGnBotH,EAAW,mBAoBfnuL,EAAOD,QAVP,SAAiBmD,EAAOhE,GACtB,IAAI0C,SAAcsB,EAGlB,SAFAhE,EAAmB,MAAVA,EAAiB6hE,EAAmB7hE,KAGlC,UAAR0C,GACU,UAARA,GAAoBusL,EAAShtK,KAAKje,KAChCA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQhE,I,cCRjDc,EAAOD,QANP,SAAmBy8D,GACjB,OAAO,SAASt5D,GACd,OAAOs5D,EAAKt5D,M,gBCThB,IAAIghI,EAAW,EAAQ,MACnBlwG,EAAM,EAAQ,KACd1zB,EAAU,EAAQ,MAClBqoC,EAAM,EAAQ,KACdsK,EAAU,EAAQ,MAClB0rJ,EAAa,EAAQ,KACrB9xJ,EAAW,EAAQ,KAYnBoqJ,EAAqBpqJ,EAASq3F,GAC9BgzD,EAAgBrqJ,EAAS7Y,GACzBmjK,EAAoBtqJ,EAASvsC,GAC7B82L,EAAgBvqJ,EAASlE,GACzB0uJ,EAAoBxqJ,EAASoG,GAS7BooJ,EAASsD,GAGRz6D,GAnBa,qBAmBDm3D,EAAO,IAAIn3D,EAAS,IAAIF,YAAY,MAChDhwG,GA1BQ,gBA0BDqnK,EAAO,IAAIrnK,IAClB1zB,GAzBY,oBAyBD+6L,EAAO/6L,EAAQC,YAC1BooC,GAzBQ,gBAyBD0yJ,EAAO,IAAI1yJ,IAClBsK,GAzBY,oBAyBDooJ,EAAO,IAAIpoJ,MACzBooJ,EAAS,SAASn4L,GAChB,IAAIuD,EAASk4L,EAAWz7L,GACpB64L,EA/BQ,mBA+BDt1L,EAAsBvD,EAAMuL,iBAAcvM,EACjD6qM,EAAahR,EAAOlvJ,EAASkvJ,GAAQ,GAEzC,GAAIgR,EACF,OAAQA,GACN,KAAK9V,EAAoB,MA/Bf,oBAgCV,KAAKC,EAAe,MAtCf,eAuCL,KAAKC,EAAmB,MArCf,mBAsCT,KAAKC,EAAe,MArCf,eAsCL,KAAKC,EAAmB,MArCf,mBAwCb,OAAO5wL,IAIXzG,EAAOD,QAAUs7L,G,gBCzDjB,IAAIiD,EAAW,EAAQ,KACnBC,EAAQ,EAAQ,KAsBpBv+L,EAAOD,QAZP,SAAiB4D,EAAQmmE,GAMvB,IAHA,IAAI1+D,EAAQ,EACRlM,GAHJ4qE,EAAOw0H,EAASx0H,EAAMnmE,IAGJzE,OAED,MAAVyE,GAAkByH,EAAQlM,GAC/ByE,EAASA,EAAO46L,EAAMz0H,EAAK1+D,OAE7B,OAAQA,GAASA,GAASlM,EAAUyE,OAASzB,I,cCA/ClC,EAAOD,QAJP,SAAkBmD,GAChB,OAAOA,I,6BCCT,IAIgCuB,EAJ5ByJ,EAAW,EAAQ,IAEnB3I,GAE4Bd,EAFMyJ,IAEezJ,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvFzE,EAAOD,QAAU,CAObstO,cAAe,SAAuB7/K,GAClC,IAAI4gF,EAAS5gF,EAAO4gF,OAChBpC,EAAQx+E,EAAOw+E,MACf15B,EAAY9kD,EAAO8kD,UACvB,GAAI87B,EAAQ,CACR,IAAIF,EAAU,CAAC,UASf,OARIlC,GACAkC,EAAQ1uI,KAAK,CAAE,UAAa,QAAS,MAASwsI,IAE9C15B,EACA47B,EAAQ1uI,KAAK,CAAE,UAAa,cAE5B0uI,EAAQ1uI,KAAK,CAAE,UAAa,YAAa,OAAS,IAE/C0uI,EAEP,MAAO,CAAC,gBAUhBo/F,cAAe,SAAuBp/F,GAKlC,IAJA,IAAIE,GAAS,EACTpC,EAAQ,KACR15B,GAAY,EAEPtzG,EAAI,EAAGA,EAAIkvI,EAAQhvI,SAAUF,EAAG,CACrC,IAAIwuD,EAAS0gF,EAAQlvI,GACrB,GAAe,WAAXwuD,EACA4gF,GAAS,OACN,GAAe,gBAAX5gF,EACP4gF,GAAS,MACN,IAAsF,iBAA/D,IAAX5gF,EAAyB,aAAc,EAAIjoD,EAASlB,SAASmpD,IAW5E,OAAO,KAVP,GAAyB,UAArBA,EAAOw9F,UACPhf,EAAQx+E,EAAOtqD,UACZ,IAAyB,cAArBsqD,EAAOw9F,UAId,OAAO,KAHP14C,EAAY9kD,EAAOtqD,aAWbhB,IAAdowG,IAEAA,GAAY,GAGhB,IAAI7rG,EAAS,CAAE2nI,OAAQA,EAAQ97B,UAAWA,GAI1C,OAHc,OAAV05B,IACAvlI,EAAOulI,MAAQA,GAEZvlI,K,6BC5Ff,2BAGIw2D,EAAW99D,OAAO0lC,QAAU,SAAU/iC,GACxC,IAAK,IAAI9C,EAAI,EAAGA,EAAImT,UAAUjT,OAAQF,IAAK,CACzC,IAAI8sD,EAAS35C,UAAUnT,GAEvB,IAAK,IAAIwE,KAAOsoD,EACV3sD,OAAOC,UAAUC,eAAeC,KAAKwsD,EAAQtoD,KAC/C1B,EAAO0B,GAAOsoD,EAAOtoD,IAK3B,OAAO1B,GA+ET,SAASyrO,EAAc3qN,GACrB,IACI4qN,GADUr7N,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,GAAmBA,UAAU,GAAK,IAChDs7N,UAC9BA,OAAoCvrO,IAAxBsrO,EAAoC,KAAOA,EAG3D,MAAoB,aAAhB5qN,EAAKjf,QAAyC,UAAhBif,EAAKjf,QAAsB,QAAM+pO,YAAY9qN,EAAKF,OAC3EE,EAAKF,MAAMha,IAAI6kO,GAAexhO,KAAK0hO,GAEnC7qN,EAAKtZ,KAUhB,IAAI8B,EAAQ,CACVuiO,YArFF,SAAqB77L,GACnB,IAAIpoC,EAAUyI,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,GAAmBA,UAAU,GAAK,GAC9Ey7N,EAAwBlkO,EAAQmkO,aAChCA,OAAyC3rO,IAA1B0rO,EAAsC,OAASA,EAC9DE,EAAwBpkO,EAAQqkO,aAChCA,OAAyC7rO,IAA1B4rO,EAAsC,GAAKA,EAC1DE,EAAqBtkO,EAAQ+jO,UAC7BA,OAAmCvrO,IAAvB8rO,EAAmC,KAAOA,EACtDC,EAAkBvkO,EAAQ0mB,OAC1BA,OAA6BluB,IAApB+rO,GAAwCA,EAGjD,MAAI5qL,MAAM0qL,KACZA,EAAeA,EAAa5gM,WAG9B0gM,EAAe,OAAKx7J,iBAAiBw7J,GACrCE,EAAeA,EAAarlO,IAAI,OAAK2pE,kBAErC,IAAIzjC,EAAO,CACTjrC,OAAQ,QACRhD,SAAU,CACRgD,OAAQ,WACRhF,KAAM,GACN+jB,MAAOovB,EAAOzpC,MAAMolO,GAAW/kO,KAAI,SAAUuY,GAC3C,OAAOg8C,EAAS,GAAI4wK,EAAc,CAChClqO,OAAQ,QACRhF,KAAM,GACN+jB,MAAO,CAAC,CACN/e,OAAQ,OACR67D,OAAQ,CAAC,CACP77D,OAAQ,OACR2F,KAAM2X,EACNi+C,MAAO6uK,aASnB,OADU39M,EAASwe,EAAO,QAAMmvB,SAASnvB,IA6CzC4pF,UAlCF,SAAmBt1H,GACjB,IAAIwG,EAAUyI,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,GAAmBA,UAAU,GAAK,GAElF,OAAOo7N,EAAcrqO,EAAMvC,SAAU+I,KAkCxB,a,6BCnHfvK,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IA6ET,IAtEA,IAAIgrO,EAA0B,oBAAVjqO,QAAyB,uBAAuBkd,KAAKld,OAAO2D,UAAU8iG,UAEtFyjI,EAAY,CACdC,IAAK,SACLC,QAAS,UACT57F,KAAM,UACN9yI,MAAO,YAGL2uO,EAAU,CACZhrL,IAAK,IACLirL,MAAO,QACPrK,IAAK,OACLrxE,QAAS,OACT27E,IAAK,UACLC,KAAM,UACNC,IAAK,SACLC,KAAM,YACNrsI,IAAK,SACLssI,IAAK,SACLpyL,KAAM,YACNqyL,IAAKX,EAAS,OAAS,UACvBhvB,IAAK,MACL4vB,OAAQ,MACRzhO,OAAQ,QACRovC,MAAO,aACP62G,MAAO,IACPy7E,SAAU,IACVprI,GAAI,UACJ2F,IAAK,OACL0lI,QAAS,QAGPC,EAAQ,CACVC,UAAW,EACXC,IAAK,EACLC,MAAO,GACPzvO,MAAO,GACP0uO,QAAS,GACTD,IAAK,GACLtwG,MAAO,GACPuxG,SAAU,GACV9sI,OAAQ,GACR,IAAK,GACL+sI,OAAQ,GACRC,SAAU,GACVnlM,IAAK,GACLolM,KAAM,GACNC,UAAW,GACXC,QAAS,GACTC,WAAY,GACZC,UAAW,GACXt0L,OAAQ,GACRmqB,OAAQ,GACRgtE,KAAM,GACNo9F,QAAS,IACTC,WAAY,IACZ,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,IACN,IAAK,IACLC,IAAM,KAGChqO,EAAI,EAAGA,EAAI,GAAIA,IACtBkpO,EAAM,IAAMlpO,GAAK,IAAMA,EAOzB,SAASiqO,EAASC,EAAQvmO,EAASpI,IAC7BoI,GAAa,UAAWA,IAC1BpI,EAAQoI,EACRA,EAAU,MAGPvD,MAAMC,QAAQ6pO,KACjBA,EAAS,CAACA,IAGZ,IAAIl4M,EAAQk4M,EAAOvnO,KAAI,SAAUopC,GAC/B,OAAOo+L,EAAYp+L,EAAQpoC,MAEzB4lB,EAAQ,SAAepvB,GACzB,OAAO63B,EAAMmD,MAAK,SAAUv3B,GAC1B,OAAOwsO,EAAcxsO,EAAQzD,OAIjC,OADmB,MAAToB,EAAgBguB,EAAQA,EAAMhuB,GAgB1C,SAAS4uO,EAAYD,EAAQvmO,GAC3B,IAAI0mO,EAAQ1mO,GAAWA,EAAQ0mO,MAC3BhhO,EAAM,GAIN6d,GADJgjN,EAASA,EAAOhkO,QAAQ,KAAM,SACV5D,MAAM,KACtBnJ,EAAS+tB,EAAO/tB,OAIpB,IAAK,IAAI2K,KAAKskO,EACZ/+N,EAAI++N,EAAUtkO,KAAM,EAGtB,IAAIgD,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiB7K,EAErB,IACE,IAAK,IAA2C8K,EAAvCC,EAAYggB,EAAOjqB,OAAOk6B,cAAsBrwB,GAA6BG,EAAQC,EAAUC,QAAQC,MAAON,GAA4B,EAAM,CACvJ,IAAI3J,EAAQ8J,EAAM9J,MAEdmtO,EAAWntO,EAAMg4F,SAAS,KAE1Bm1I,IACFntO,EAAQA,EAAMiB,MAAM,GAAI,IAG1B,IAAInC,EAAOsuO,EAAUptO,GACjBqtO,EAAWpC,EAAUnsO,GAEV,IAAX9C,GAAiBqxO,IACfH,EACFhhO,EAAI5L,IAAMxB,EAEVoN,EAAIohO,MAAQC,EAAUvtO,IAItBqtO,IACFnhO,EAAImhO,IAAYF,GAAW,OAG/B,MAAOvsO,GACPgJ,GAAoB,EACpBC,EAAiBjJ,EACjB,QACA,KACO+I,GAA6BI,EAAUI,QAC1CJ,EAAUI,SAEZ,QACA,GAAIP,EACF,MAAMC,GAKZ,OAAOqC,EAOT,SAAS+gO,EAAcxsO,EAAQrC,GAC7B,IAAK,IAAIkC,KAAOG,EAAQ,CACtB,IAAI+sO,EAAW/sO,EAAOH,GAClB60I,OAAS,EAEb,GAAgB,MAAZq4F,KAYU,OAPZr4F,EADU,QAAR70I,EACOlC,EAAMkC,IAAIwI,cACF,UAARxI,EACa,KAAbktO,GAAmC,KAAhBpvO,EAAMkvO,MAAe,GAAKlvO,EAAMkvO,MAEnDlvO,EAAMkC,MAGkB,IAAbktO,IAIlBr4F,IAAWq4F,GACb,OAAO,EAIX,OAAO,EAOT,SAASD,EAAUzuO,GAGjB,OAFAA,EAAOsuO,EAAUtuO,GACNitO,EAAMjtO,IAASA,EAAKw5E,cAAcxoC,WAAW,GAI1D,SAASs9L,EAAUtuO,GAGjB,OAFAA,EAAOA,EAAKgK,cACZhK,EAAOssO,EAAQtsO,IAASA,EAQ1BjC,EAAQsE,QAAU2rO,EAClBjwO,EAAQiwO,SAAWA,EACnBjwO,EAAQ4wO,aAjIR,SAAsBV,EAAQ3uO,GAC5B,OAAO0uO,EAASC,EAAQ3uO,IAiI1BvB,EAAQ6wO,YA9HR,SAAqBX,EAAQ3uO,GAC3B,OAAO0uO,EAASC,EAAQ,CAAEG,OAAO,GAAQ9uO,IA8H3CvB,EAAQmwO,YAAcA,EACtBnwO,EAAQowO,cAAgBA,EACxBpwO,EAAQ0wO,UAAYA,EACpB1wO,EAAQuwO,UAAYA,G,cCpPpB,IAAIt7N,EAAW7V,OAAOC,UAAU4V,SAEhChV,EAAOD,QAAU,SAASsuB,GACxB,OAAQrZ,EAAS1V,KAAK+uB,IACpB,IAAK,oBAAqB,MAAO,WACjC,IAAK,gBAAiB,MAAO,OAC7B,IAAK,kBAAmB,MAAO,SAC/B,IAAK,qBAAsB,MAAO,YAClC,IAAK,iBAAkB,MAAO,QAC9B,IAAK,kBAAmB,MAAO,SAGjC,GAAkB,iBAAPA,GAAmBA,GAA4B,iBAAdA,EAAInvB,OAC9C,IACE,GAAyB,mBAAdmvB,EAAIw8G,OAAsB,MAAO,YAC5C,MAAOqlF,GACP,GAAIA,aAAc1rN,UAChB,MAAO,YAKb,OAAY,OAAR6pB,EAAqB,YACbnsB,IAARmsB,EAA0B,YAC1BA,GAAwB,IAAjBA,EAAIqkB,SAAuB,UAClCrkB,IAAQlvB,OAAOkvB,GAAa,gBAElBA,I,gCC3BhB,YAEA,IAEI6S,EAAgB97B,EAFD,EAAQ,KAIvB+7B,EAAY,EAAQ,GAEpBh4B,EAAa/D,EAAuB+7B,GAIpCyyB,EAAcxuD,EAFD,EAAQ,KAMrBG,EAAWH,EAFA,EAAQ,KAMnBE,EAASF,EAFD,EAAQ,KAMhBg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAI5B,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAwBvF,IAkiBYs7G,EArCAt9E,EAreRouM,EAAgB,WAChB,SAASA,KACL,EAAIzvM,EAAiB/8B,SAASmL,KAAMqhO,GAEpCrhO,KAAKshO,KAAO,GAiFhB,OA9EA,EAAIzvM,EAAch9B,SAASwsO,EAAe,CAAC,CACvCrtO,IAAK,cACLN,MAAO,SAAqB6tO,GACxB,IAAIliL,EAAQr/C,KAGRwhO,EAA2B,CAC3B3pO,IAAK,IACLwd,KAAM,IACN/a,KAAM,IACN1I,MAAO,MAEX,EAAIkE,EAAOjB,SAAS2sO,GAA0BpnO,SAAQ,SAAUqnO,GAC5D,IAAIlqN,EAAQiqN,EAAyBC,GACjCC,EAAaH,EAAWE,GAAQxtO,KAAKstO,GACzCA,EAAWE,GAAU,WACjB,IAAK,IAAIzgL,EAAOr+C,UAAUjT,OAAQsW,EAAOrP,MAAMqqD,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IACzEj7C,EAAKi7C,GAAQt+C,UAAUs+C,GAG3B5B,EAAMxnD,IAAIqE,MAAMmjD,EAAO,CAAC9nC,GAAOjb,OAAO0J,IACtC07N,EAAWxlO,WAAMxJ,EAAWsT,SAIzC,CACChS,IAAK,MACLN,MAAO,SAAa6jB,GAChB,IAAK,IAAI2pC,EAAQv+C,UAAUjT,OAAQsW,EAAOrP,MAAMuqD,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IAClGn7C,EAAKm7C,EAAQ,GAAKx+C,UAAUw+C,GAIhC,IAAIghE,GAAK,IAAIv7D,MAAOyqF,cAkBhB5/H,EAAO0wG,EAAK,IAAM5qG,EAAQ,KAf9BvR,EAAOA,EAAK9M,KAAI,SAAUiI,GACtB,OAAIA,aAAetP,MACRsP,EAAI5O,SAAW4O,EAAIqB,MAAQ,KAAOrB,EAAIqB,MAAQ,IAC8B,iBAA5D,IAARrB,EAAsB,aAAc,EAAIpL,EAASlB,SAASsM,KAClE,EAAIijD,EAAYvvD,SAASsM,GAEzBA,MAS0B5E,KAAK,KAAO,KAErDkV,EAAOA,EAAKhV,QAAQ,wBAAyB,eAG7CuD,KAAKshO,MAAQ7vN,IASlB,CACCzd,IAAK,QACLN,MAAO,SAAeiuO,GAGlB,GAAIA,EACA,OAAO3hO,KAAKshO,KAEhB,IAAIM,EAAc5hO,KAAKshO,KAEvB,OADAthO,KAAKshO,KAAO,GACLM,MAGRP,EArFS,GA2FhBQ,EAAoB,WACpB,SAASA,EAAkB/9K,EAAWsrC,IAClC,EAAIx9D,EAAiB/8B,SAASmL,KAAM6hO,GAEpC7hO,KAAK8jD,UAAYA,EACjB9jD,KAAKovF,OAASA,EACdpvF,KAAK4gD,GAAK,YAAc/6C,KAAK8tG,SAAW/sD,KAAK8+D,MAC7C1lH,KAAKpE,MAAQ,EACboE,KAAK+6J,GAAK,KACV/6J,KAAK8hO,aAAe,KAEpB9hO,KAAK+hO,kBAAoB,KAmIlB,IACC7uM,EA8KZ,OA1SA,EAAIrB,EAAch9B,SAASgtO,EAAmB,CAAC,CAC3C7tO,IAAK,UACLN,MAAO,WACH,IAAIqqD,EAAS/9C,KAET46J,EAAM56J,KAAK8jD,UAAUq3D,KAAK,QAC9B,OAAO,IAAIxhH,EAAW9E,SAAQ,SAAU9D,EAASC,GAC7C4pK,EAAIO,UAAY,SAAUrpK,GACtBisD,EAAOg9G,GAAKjpK,EAAMQ,OAAO2E,OAEzB0hH,YAAY56D,EAAOgjJ,MAAM9sM,KAAK8pD,GAhJ9B,KAiJAhtD,KAGJ6pK,EAAI7oK,QAAU,SAAUD,GACpB,IAAIwC,EAAM,gCAAkCxC,EAAMQ,OAAOV,MAAMY,KAC/D+B,QAAQ3C,MAAM0C,GACdtD,EAAO,IAAIa,MAAMyC,KAIrBsmK,EAAIE,gBAAkB,SAAUhpK,GAC5B,IAAIipK,EAAKjpK,EAAMQ,OAAO2E,OAClB+qO,EAAcjnE,EAAGknE,kBAAkB,OAAQ,CAC3C/9L,QAAS,CAAC,KAAM,WAKpB89L,EAAYE,YAAY,KAAM,KAAM,CAAEC,QAAQ,IAE9CH,EAAYluL,IAAIiK,EAAOqkL,kBAAkB,IAAIx7K,KAAS,mCAE9Bm0G,EAAGknE,kBAAkB,cAAe,CACxD/9L,QAAS,OAEK4P,IAAIiK,EAAOskL,mCAyB1C,CACCruO,IAAK,QACLN,MAAO,WACH,IAAI0/D,EAASpzD,KAGb,OAAIA,KAAK8hO,cAAgB9hO,KAAK8hO,aAAa75N,YACnCjI,KAAK+hO,mBAAqB/hO,KAAK+hO,kBAAkB95N,YAG1CjI,KAAK+hO,mBAIhB/hO,KAAK+hO,kBAAoB/hO,KAAK8hO,aAAa9qO,MAAK,WAC5C,OAAOo8D,EAAO2tI,WAEX/gM,KAAK+hO,oBAIhB/hO,KAAK8hO,aAAe,IAAInoO,EAAW9E,SAAQ,SAAU9D,EAASC,GAC1D,GAAKoiE,EAAO2nG,GAAZ,CAMA,IAAIpjJ,EAAQy7C,EAAOg8B,OAAO2xG,QAC1B,GAAqB,IAAjBppL,EAAMjoB,OAAV,CAIA,IAAI8rK,EAAMpoG,EAAO2nG,GAAGunE,YAAY,CAAC,OAAQ,eAAgB,aACrDC,EAAW/mE,EAAIgnE,YAAY,QAC/BhnE,EAAIinE,WAAa,SAAU3wO,GACvBf,KAEJyqK,EAAIzpK,QAAU,SAAUD,GACpByC,QAAQ3C,MAAM,0BAA2BE,GACzCd,EAAO,IAAIa,MAAM,yBAA2BC,EAAMQ,OAAOowO,aAE7DH,EAASzuL,IAAIsf,EAAOgvK,kBAAkBzqN,IACnB6jJ,EAAIgnE,YAAY,eACtB15I,IAAI11B,EAAOivK,kCAdpBtxO,SALAC,EAAO,IAAIa,MAAM,6BAqBlBmO,KAAK8hO,gBAcjB,CACC9tO,IAAK,UACLN,OACQw/B,GAAO,EAAIvB,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASC,IAClF,IAAIonI,EAAI4nE,EAAWC,EAAaC,EAAYC,EAAWC,EAAczB,EAAMx6M,EAAMt3B,EAAGmoB,EACpF,OAAO+Z,EAAc78B,QAAQm/B,MAAK,SAAkB7F,GAChD,OACI,OAAQA,EAAStsB,KAAOssB,EAASzwB,MAC7B,KAAK,EA8ED,OA7EAmlO,EAAa,SAAoBjiL,GAC7B,OAAO,IAAIjnD,EAAW9E,SAAQ,SAAU9D,EAASC,GAC7C,IAAIwqK,EAAMT,EAAGunE,YAAY,CAAC,OAAQ,eAAgB,aAC9CnvO,EAAIqoK,EAAIgnE,YAAY,QAEZrvO,EAAEyI,MAAM,MAAMonO,cAAcC,YAAYC,KAAKtiL,IACnDu6G,UAAY,SAAUrpK,GACxB,IAAIqxO,EAASrxO,EAAMQ,OAAO2E,OACrBksO,IAGLhwO,EAAE8iE,OAAOktK,EAAOC,YAChBD,EAAOE,aAEX7nE,EAAIinE,WAAa,WACb1xO,KAEJyqK,EAAIzpK,QAAU,SAAUD,GACpBd,EAAO,IAAIa,MAAM,8BAAsC+uD,EAAK,OAAS9uD,EAAMQ,OAAOowO,aAGnElnE,EAAIgnE,YAAY,eACtBvsK,OAAOrV,OAI5BgiL,EAAc,WAEV,IA2Jf3uM,EAAOqvM,EAAUC,EAC9BnzI,EA5JgCj9F,EAAI4nK,EAAGunE,YAAY,cAAe,YAAYE,YAAY,eAC9D,OA0JfvuM,EA1JkC9gC,EA0J3BmwO,OA1J8B5wO,EA0JpB6wO,EA1J+B,SAAUJ,GACvC,MAAO,CACHviL,GAAIuiL,EAAOzvO,MAAMktD,GACjBuhE,GAAIghH,EAAOzvO,MAAMyuH,KAwJrD/xB,EAAQn8D,EAAMuvM,WAAWF,GACtB,IAAI3pO,EAAW9E,SAAQ,SAAU9D,EAASC,GAC7C,IAAI04F,EAAU,GACd0G,EAAMr+F,QAAU,SAAUD,GACtBd,EAAO,IAAIa,MAAM,iBAAmBC,EAAMQ,OAAOowO,aAGrDtyI,EAAM+qE,UAAY,SAAUrpK,GACxB,IAAIqxO,EAASrxO,EAAMQ,OAAO2E,OACrBksO,GAILz5I,EAAQ15F,KAAKuzO,EAAaJ,IAC1BA,EAAOE,YAJHtyO,EAAQ24F,QAhKe1yF,MAAK,SAAUwzF,GAEd,OAAOA,EAAIzkD,MAAK,SAAU1mC,EAAG6kB,GACzB,OAAOA,EAAEi+F,GAAK9iH,EAAE8iH,MACjBjpH,KAAI,SAAUmG,GACb,OAAOA,EAAEuhD,UAKrB+hL,EAAY,SAAmB/hL,GAC3B,IAAI4hL,EAAcznE,EAAGunE,YAAY,OAAQ,YAAYE,YAAY,QAEjE,OAAO,IAAI7oO,EAAW9E,SAAQ,SAAU9D,EAASC,GAC7C,IAAIo/F,EAAQoyI,EAAY5mO,MAAM,MAAM4nO,WAAWP,YAAYC,KAAKtiL,GAAK,QACjEjpC,EAAQ,GACZy4E,EAAMr+F,QAAU,SAAUD,GACtBd,EAAO,IAAIa,MAAM,iBAAmBC,EAAMQ,OAAOowO,aAErDtyI,EAAM+qE,UAAY,SAAUrpK,GACxB,IAAIqxO,EAASrxO,EAAMQ,OAAO2E,OACrBksO,EAIDxrN,EAAMjoB,OAASyzO,EAAOzvO,MAAMikB,MAAMjoB,QA/S/D,SA+SyFioB,EAAMjoB,OAAS,EAC3EqB,EAAQ4mB,IAERA,EAAQwrN,EAAOzvO,MAAMikB,MAAQA,EAC7BwrN,EAAOE,YAPPtyO,EAAQ4mB,QAaxBojJ,EAAK/6J,KAAK+6J,GAOV5sI,EAASzwB,KAAO,GACT,EAAIi0B,EAAU5gC,SAAS6xO,KAElC,KAAK,EACDE,EAAY30M,EAASmH,KACrBytM,EAAe,GACfzB,EAAO,GACPx6M,EAAO,EACPt3B,EAAI,EAER,KAAK,GACD,KAAMA,EAAIszO,EAAUpzO,QAAS,CACzBy+B,EAASzwB,KAAO,GAChB,MAIJ,OADAywB,EAASzwB,KAAO,IACT,EAAIi0B,EAAU5gC,SAAS4xO,EAAUG,EAAUtzO,KAEtD,KAAK,GAGD,GAFAmoB,EAAQwW,EAASmH,OAEX9lC,EAAI,GAAKs3B,EAAOnP,EAAMjoB,OAtVzC,SAsViE,CAChDy+B,EAASzwB,KAAO,GAChB,MAMJ,OADAqlO,EAAeD,EAAUnuO,MAAMnF,EAAI,GAC5B2+B,EAASgG,OAAO,QAAS,IAEpC,KAAK,GAEDmtM,EAAKtxO,KAAK,CACN2nB,MAAOA,EACPipC,GAAIkiL,EAAUtzO,KAElBs3B,GAAQnP,EAAMjoB,OAElB,KAAK,GACDF,IACA2+B,EAASzwB,KAAO,GAChB,MAEJ,KAAK,GAaD,OAZIqlO,EAAarzO,OAAS,IACtB6E,QAAQsD,IAAI,kBAAmBkrO,GAG/BppO,EAAW9E,QAAQ/B,IAAIiwO,EAAa7pO,KAAI,SAAU0nD,GAC9C,OAAOiiL,EAAWjiL,OAClB5pD,MAAK,WACLzC,QAAQsD,IAAI,WAAakrO,EAAarzO,OAAS,iBAChD,SAAU4E,GACTC,QAAQ3C,MAAM0C,OAGf65B,EAASgG,OAAO,SAAUmtM,GAErC,KAAK,GACL,IAAK,MACD,OAAOnzM,EAASiF,UAG7BO,EAAS3zB,UAGhB,WACI,OAAOkzB,EAAKh3B,MAAM8D,KAAM2C,cAKjC,CACC3O,IAAK,oBACLN,MAAO,SAA2BikB,GAC9B,MAAO,CACHipC,GAAI5gD,KAAK4gD,GACTjpC,MAAOA,EACP/b,MAAOoE,KAAKpE,WAGrB,CACC5H,IAAK,4BACLN,MAAO,WACH,MAAO,CACHktD,GAAI5gD,KAAK4gD,GACTuhE,GAAIv7D,KAAK8+D,WAIdm8G,EA7Ta,GAgWxBrxO,EAAOD,QAAU,CAObwP,KAAM,WACF,GAAImO,EAAOu1N,oBACP,OAAOv1N,EAAOu1N,oBAElBv1N,EAAOw1N,eAAiB,IAAIrC,EAC5BnzN,EAAOw1N,eAAeC,YAAYlvO,OAAOF,SAIzC,IAAIuvD,OAAY,EAChB,IACIA,EAAYrvD,OAAOqvD,UACrB,MAAOpzD,IAET,OAAIozD,GACA51C,EAAO01N,cAAgB,IAAI/B,EAAkB/9K,EAAW51C,EAAOw1N,gBAC/Dx1N,EAAOu1N,oBAAsBv1N,EAAO01N,cAAcv2G,UAC3Cn/G,EAAOu1N,sBAElBv1N,EAAOu1N,oBAAsB9pO,EAAW9E,QAAQ9D,UACzCmd,EAAOu1N,sBAGlB1iC,MAAO,WACE7yL,EAAO01N,eAGZ11N,EAAO01N,cAAc7iC,SAOzB8iC,SACQ5wM,GAAQ,EAAItB,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASyB,IACnF,OAAOzD,EAAc78B,QAAQm/B,MAAK,SAAmBoB,GACjD,OACI,OAAQA,EAAUvzB,KAAOuzB,EAAU13B,MAC/B,KAAK,EACD,GAAIwQ,EAAO01N,cAAe,CACtBxuM,EAAU13B,KAAO,EACjB,MAGJ,OAAO03B,EAAUjB,OAAO,UAE5B,KAAK,EAED,OADAiB,EAAU13B,KAAO,GACV,EAAIi0B,EAAU5gC,SAASmd,EAAO01N,cAAcE,WAEvD,KAAK,EACL,IAAK,MACD,OAAO1uM,EAAUhC,UAG9B+B,EAAUn1B,UAGjB,WACI,OAAOizB,EAAM/2B,MAAM8D,KAAM2C,aAWjCohO,kBACQxzH,GAAQ,EAAI5+E,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAAS2mF,IACnF,OAAO3oF,EAAc78B,QAAQm/B,MAAK,SAAmBwmF,GACjD,OACI,OAAQA,EAAU34G,KAAO24G,EAAU98G,MAC/B,KAAK,EACD,GAAIwQ,EAAOw1N,eAAgB,CACvBlpH,EAAU98G,KAAO,EACjB,MAGJ,MAAM,IAAI7L,MAAM,qDAEpB,KAAK,EACD,IAAKqc,EAAO01N,cAAe,CACvBppH,EAAU98G,KAAO,GACjB,MAIJ,OADA88G,EAAU98G,KAAO,GACV,EAAIi0B,EAAU5gC,SAASmd,EAAO01N,cAAc7iC,SAEvD,KAAK,EAED,OADAvmF,EAAU98G,KAAO,GACV,EAAIi0B,EAAU5gC,SAASmd,EAAO01N,cAAcE,WAEvD,KAAK,EACD,OAAOtpH,EAAUrmF,OAAO,SAAUqmF,EAAUllF,MAEhD,KAAK,GACD,OAAOklF,EAAUrmF,OAAO,SAAU,CAAC,CAC/Bxc,MAAOzJ,EAAOw1N,eAAe3iC,OAAM,GACnCngJ,GAAI,OAGZ,KAAK,GACL,IAAK,MACD,OAAO45D,EAAUpnF,UAG9BinF,EAAUr6G,UAGjB,WACI,OAAOuwG,EAAMr0G,MAAM8D,KAAM2C,gB,mCCnoBrC,IAAI2G,EAAW,EAAQ,IACnBnY,EAAW,EAAQ,IAAaA,SAEhC8vB,EAAK3X,EAASnY,IAAamY,EAASnY,EAASC,eACjDZ,EAAOD,QAAU,SAAU4gC,GACzB,OAAOlQ,EAAK9vB,EAASC,cAAc+/B,GAAM,K,gBCL3C,IAAIjjB,EAAS,EAAQ,IACjBguC,EAAO,EAAQ,KACf42E,EAAU,EAAQ,KAClBkV,EAAS,EAAQ,KACjB50I,EAAiB,EAAQ,IAAgBmD,EAC7C/F,EAAOD,QAAU,SAAUiC,GACzB,IAAIy1I,EAAU/rF,EAAK1oD,SAAW0oD,EAAK1oD,OAASs/H,EAAU,GAAK5kH,EAAO1a,QAAU,IACtD,KAAlBhB,EAAKsf,OAAO,IAAetf,KAAQy1I,GAAU70I,EAAe60I,EAASz1I,EAAM,CAAEkB,MAAOs0I,EAAOzxI,EAAE/D,O,gBCPnG,IAAI6oH,EAAS,EAAQ,IAAR,CAAqB,QAC9BhoF,EAAM,EAAQ,KAClB7iC,EAAOD,QAAU,SAAUyD,GACzB,OAAOqnH,EAAOrnH,KAASqnH,EAAOrnH,GAAOq/B,EAAIr/B,M,cCF3CxD,EAAOD,QAAU,gGAEfsI,MAAM,M,gBCHR,IAAI1H,EAAW,EAAQ,IAAaA,SACpCX,EAAOD,QAAUY,GAAYA,EAASs5B,iB,gBCCtC,IAAInhB,EAAW,EAAQ,IACnByiF,EAAW,EAAQ,IACnBjsE,EAAQ,SAAU2qE,EAAGhyE,GAEvB,GADAszE,EAAStB,IACJnhF,EAASmP,IAAoB,OAAVA,EAAgB,MAAMzjB,UAAUyjB,EAAQ,8BAElEjoB,EAAOD,QAAU,CACfgoB,IAAK5oB,OAAO+9D,iBAAmB,aAAe,GAC5C,SAAU/7C,EAAMqyN,EAAOzrN,GACrB,KACEA,EAAM,EAAQ,IAAR,CAAkBtc,SAASnM,KAAM,EAAQ,IAAkByG,EAAE5G,OAAOC,UAAW,aAAa2oB,IAAK,IACnG5G,EAAM,IACVqyN,IAAUryN,aAAgBhb,OAC1B,MAAOjG,GAAKszO,GAAQ,EACtB,OAAO,SAAwBv5I,EAAGhyE,GAIhC,OAHAqH,EAAM2qE,EAAGhyE,GACLurN,EAAOv5I,EAAEvrF,UAAYuZ,EACpBF,EAAIkyE,EAAGhyE,GACLgyE,GAVX,CAYE,IAAI,QAAS/3F,GACjBotB,MAAOA,I,cCvBTtvB,EAAOD,QAAU,kD,gBCAjB,IAAI+Y,EAAW,EAAQ,IACnBokD,EAAiB,EAAQ,KAAgBn1C,IAC7C/nB,EAAOD,QAAU,SAAUy8F,EAAM16F,EAAQ61F,GACvC,IACI12D,EADAsrB,EAAIzqD,EAAO2M,YAIb,OAFE89C,IAAMorC,GAAiB,mBAALprC,IAAoBtrB,EAAIsrB,EAAEntD,aAAeu4F,EAAEv4F,WAAa0Z,EAASmoB,IAAMi8B,GAC3FA,EAAes/B,EAAMv7D,GACdu7D,I,6BCNX,IAAIlB,EAAY,EAAQ,KACpB6D,EAAU,EAAQ,KAEtBn/F,EAAOD,QAAU,SAAgB4J,GAC/B,IAAImY,EAAMJ,OAAOy9E,EAAQ3vF,OACrBwqF,EAAM,GACNt2F,EAAI43F,EAAU3xF,GAClB,GAAIjG,EAAI,GAAKA,GAAKusC,IAAU,MAAMppB,WAAW,2BAC7C,KAAMnjB,EAAI,GAAIA,KAAO,KAAOoe,GAAOA,GAAc,EAAJpe,IAAOs2F,GAAOl4E,GAC3D,OAAOk4E,I,cCTTh6F,EAAOD,QAAUsV,KAAKo+N,MAAQ,SAAc3gN,GAE1C,OAAmB,IAAXA,GAAKA,IAAWA,GAAKA,EAAIA,EAAIA,EAAI,GAAK,EAAI,I,cCFpD,IAAI4gN,EAASr+N,KAAKs+N,MAClB3zO,EAAOD,SAAY2zO,GAEdA,EAAO,IAAM,oBAAsBA,EAAO,IAAM,qBAE7B,OAAnBA,GAAQ,OACT,SAAe5gN,GACjB,OAAmB,IAAXA,GAAKA,GAAUA,EAAIA,GAAK,MAAQA,EAAI,KAAOA,EAAIA,EAAIA,EAAI,EAAIzd,KAAK42C,IAAIn5B,GAAK,GAC/E4gN,G,6BCRJ,IAAIpxG,EAAU,EAAQ,KAClBz2E,EAAU,EAAQ,IAClBD,EAAW,EAAQ,IACnBD,EAAO,EAAQ,IACf23D,EAAY,EAAQ,KACpBumB,EAAc,EAAQ,KACtBC,EAAiB,EAAQ,KACzBliH,EAAiB,EAAQ,IACzB29G,EAAW,EAAQ,GAAR,CAAkB,YAC7BwE,IAAU,GAAGxxH,MAAQ,QAAU,GAAGA,QAKlCyxH,EAAa,WAAc,OAAOx6H,MAEtCxP,EAAOD,QAAU,SAAUuoI,EAAMnmB,EAAM59G,EAAa2I,EAAM2nD,EAASo1E,EAAQzB,GACzEqB,EAAYtlI,EAAa49G,EAAMj1G,GAC/B,IAeI4Z,EAAStjB,EAAK0mI,EAfdC,EAAY,SAAUzuE,GACxB,IAAKquE,GAASruE,KAAQzzC,EAAO,OAAOA,EAAMyzC,GAC1C,OAAQA,GACN,IAVK,OAWL,IAVO,SAUM,OAAO,WAAoB,OAAO,IAAIn3D,EAAYiL,KAAMksD,IACrE,OAAO,WAAqB,OAAO,IAAIn3D,EAAYiL,KAAMksD,KAEzD0nD,EAAMjB,EAAO,YACbioB,EAdO,UAcMv1E,EACbw1E,GAAa,EACbpiH,EAAQqgH,EAAKlpI,UACbkrI,EAAUriH,EAAMs9G,IAAat9G,EAnBjB,eAmBuC4sC,GAAW5sC,EAAM4sC,GACpE01E,EAAWD,GAAWH,EAAUt1E,GAChC21E,EAAW31E,EAAWu1E,EAAwBD,EAAU,WAArBI,OAAkCroI,EACrEuoI,EAAqB,SAARtoB,GAAkBl6F,EAAMwO,SAAqB6zG,EAwB9D,GArBIG,IACFP,EAAoBtiH,EAAe6iH,EAAWnrI,KAAK,IAAIgpI,OAC7BnpI,OAAOC,WAAa8qI,EAAkBh9H,OAE9D48H,EAAeI,EAAmB9mB,GAAK,GAElCkf,GAAiD,mBAA/B4H,EAAkB3E,IAAyB55E,EAAKu+E,EAAmB3E,EAAUyE,IAIpGI,GAAcE,GAjCP,WAiCkBA,EAAQtoI,OACnCqoI,GAAa,EACbE,EAAW,WAAoB,OAAOD,EAAQhrI,KAAKkQ,QAG/C8yH,IAAWkG,IAAYuB,IAASM,GAAepiH,EAAMs9G,IACzD55E,EAAK1jC,EAAOs9G,EAAUgF,GAGxBjnB,EAAUnB,GAAQooB,EAClBjnB,EAAUF,GAAO4mB,EACbn1E,EAMF,GALA/tC,EAAU,CACRmG,OAAQm9G,EAAaG,EAAWJ,EA9CzB,UA+CP5xH,KAAM0xH,EAASM,EAAWJ,EAhDrB,QAiDL1zG,QAAS+zG,GAEPhC,EAAQ,IAAKhlI,KAAOsjB,EAChBtjB,KAAOykB,GAAQ2jC,EAAS3jC,EAAOzkB,EAAKsjB,EAAQtjB,SAC7CqoD,EAAQA,EAAQ5qB,EAAI4qB,EAAQM,GAAK49E,GAASM,GAAaloB,EAAMr7F,GAEtE,OAAOA,I,6BClET,IAAIvjB,EAAS,EAAQ,KACjBuB,EAAa,EAAQ,KACrBglI,EAAiB,EAAQ,KACzBI,EAAoB,GAGxB,EAAQ,GAAR,CAAmBA,EAAmB,EAAQ,GAAR,CAAkB,aAAa,WAAc,OAAO16H,QAE1FxP,EAAOD,QAAU,SAAUwE,EAAa49G,EAAMj1G,GAC5C3I,EAAYnF,UAAYmE,EAAO2mI,EAAmB,CAAEh9H,KAAMpI,EAAW,EAAGoI,KACxE48H,EAAevlI,EAAa49G,EAAO,e,gBCVrC,IAAIqvE,EAAW,EAAQ,KACnBryF,EAAU,EAAQ,KAEtBn/F,EAAOD,QAAU,SAAUy8F,EAAMo3I,EAAczxH,GAC7C,GAAIqvE,EAASoiD,GAAe,MAAMpvO,UAAU,UAAY29G,EAAO,0BAC/D,OAAOzgG,OAAOy9E,EAAQ3C,M,gBCNxB,IAAImnH,EAAQ,EAAQ,GAAR,CAAkB,SAC9B3jN,EAAOD,QAAU,SAAU06G,GACzB,IAAIypG,EAAK,IACT,IACE,MAAMzpG,GAAKypG,GACX,MAAOhkN,GACP,IAEE,OADAgkN,EAAGP,IAAS,GACJ,MAAMlpG,GAAKypG,GACnB,MAAOn+M,KACT,OAAO,I,gBCTX,IAAIu9G,EAAY,EAAQ,KACpBiiB,EAAW,EAAQ,GAAR,CAAkB,YAC7BzB,EAAa39H,MAAM/G,UAEvBY,EAAOD,QAAU,SAAU4gC,GACzB,YAAcz+B,IAAPy+B,IAAqB2iF,EAAUn9G,QAAUw6B,GAAMmjG,EAAWyB,KAAc5kG,K,6BCLjF,IAAIkzM,EAAkB,EAAQ,IAC1Bj4I,EAAa,EAAQ,KAEzB57F,EAAOD,QAAU,SAAU4D,EAAQyH,EAAOlI,GACpCkI,KAASzH,EAAQkwO,EAAgB9tO,EAAEpC,EAAQyH,EAAOwwF,EAAW,EAAG14F,IAC/DS,EAAOyH,GAASlI,I,gBCNvB,IAAI4/H,EAAU,EAAQ,KAClByC,EAAW,EAAQ,GAAR,CAAkB,YAC7BjiB,EAAY,EAAQ,KACxBtjH,EAAOD,QAAU,EAAQ,KAAWgzI,kBAAoB,SAAUpyG,GAChE,GAAUz+B,MAANy+B,EAAiB,OAAOA,EAAG4kG,IAC1B5kG,EAAG,eACH2iF,EAAUwf,EAAQniG,M,gBCLzB,IAAI0iG,EAAqB,EAAQ,MAEjCrjI,EAAOD,QAAU,SAAUygE,EAAUthE,GACnC,OAAO,IAAKmkI,EAAmB7iE,GAAxB,CAAmCthE,K,6BCF5C,IAAI2mD,EAAW,EAAQ,IACnBg9E,EAAkB,EAAQ,KAC1B5L,EAAW,EAAQ,IACvBj3H,EAAOD,QAAU,SAAcmD,GAO7B,IANA,IAAI+2F,EAAIp0C,EAASr2C,MACbtQ,EAAS+3H,EAASh9B,EAAE/6F,QACpBynI,EAAOx0H,UAAUjT,OACjBkM,EAAQy3H,EAAgB8D,EAAO,EAAIx0H,UAAU,QAAKjQ,EAAWhD,GAC7DkrC,EAAMu8F,EAAO,EAAIx0H,UAAU,QAAKjQ,EAChC4xO,OAAiB5xO,IAARkoC,EAAoBlrC,EAAS2jI,EAAgBz4F,EAAKlrC,GACxD40O,EAAS1oO,GAAO6uF,EAAE7uF,KAAWlI,EACpC,OAAO+2F,I,6BCZT,IAAIuvE,EAAmB,EAAQ,KAC3Bn5H,EAAO,EAAQ,KACfizE,EAAY,EAAQ,KACpBR,EAAY,EAAQ,IAMxB9iH,EAAOD,QAAU,EAAQ,IAAR,CAA0BoG,MAAO,SAAS,SAAU4yG,EAAUr9C,GAC7ElsD,KAAK9J,GAAKo9G,EAAU/J,GACpBvpG,KAAK6zB,GAAK,EACV7zB,KAAKi6J,GAAK/tG,KAET,WACD,IAAIu+B,EAAIzqF,KAAK9J,GACTg2D,EAAOlsD,KAAKi6J,GACZr+J,EAAQoE,KAAK6zB,KACjB,OAAK42D,GAAK7uF,GAAS6uF,EAAE/6F,QACnBsQ,KAAK9J,QAAKxD,EACHmuC,EAAK,IAEaA,EAAK,EAApB,QAARqrB,EAA+BtwD,EACvB,UAARswD,EAAiCu+B,EAAE7uF,GACxB,CAACA,EAAO6uF,EAAE7uF,OACxB,UAGHk4G,EAAUomD,UAAYpmD,EAAUn9G,MAEhCqjK,EAAiB,QACjBA,EAAiB,UACjBA,EAAiB,Y,6BC/BjB,IAaMuqE,EACAC,EAdFC,EAAc,EAAQ,KAEtBC,EAAappO,OAAO1L,UAAU+L,KAI9BgpO,EAAgBzyN,OAAOtiB,UAAU6M,QAEjCmoO,EAAcF,EAIdG,GACEN,EAAM,IACNC,EAAM,MACVE,EAAW50O,KAAKy0O,EAAK,KACrBG,EAAW50O,KAAK00O,EAAK,KACM,IAApBD,EAAc,WAA+B,IAApBC,EAAc,WAI5CM,OAAuCpyO,IAAvB,OAAOiJ,KAAK,IAAI,IAExBkpO,GAA4BC,KAGtCF,EAAc,SAActyN,GAC1B,IACIvI,EAAWg7N,EAAQrpO,EAAOlM,EAD1BklN,EAAK10M,KAwBT,OArBI8kO,IACFC,EAAS,IAAIzpO,OAAO,IAAMo5M,EAAGp4J,OAAS,WAAYmoL,EAAY30O,KAAK4kN,KAEjEmwB,IAA0B96N,EAAY2qM,EAAa,WAEvDh5M,EAAQgpO,EAAW50O,KAAK4kN,EAAIpiM,GAExBuyN,GAA4BnpO,IAC9Bg5M,EAAa,UAAIA,EAAGxmM,OAASxS,EAAME,MAAQF,EAAM,GAAGhM,OAASqa,GAE3D+6N,GAAiBppO,GAASA,EAAMhM,OAAS,GAI3Ci1O,EAAc70O,KAAK4L,EAAM,GAAIqpO,GAAQ,WACnC,IAAKv1O,EAAI,EAAGA,EAAImT,UAAUjT,OAAS,EAAGF,SACfkD,IAAjBiQ,UAAUnT,KAAkBkM,EAAMlM,QAAKkD,MAK1CgJ,IAIXlL,EAAOD,QAAUq0O,G,6BCxDjB,IAAIziC,EAAK,EAAQ,IAAR,EAAwB,GAIjC3xM,EAAOD,QAAU,SAAUwsD,EAAGnhD,EAAO4kG,GACnC,OAAO5kG,GAAS4kG,EAAU2hG,EAAGplJ,EAAGnhD,GAAOlM,OAAS,K,gBCNlD,IAaIo0B,EAAO80I,EAAS3oE,EAbhBrlF,EAAM,EAAQ,KACd/H,EAAS,EAAQ,KACjBg+F,EAAO,EAAQ,KACfmkI,EAAM,EAAQ,KACd92N,EAAS,EAAQ,IACjB7L,EAAU6L,EAAO7L,QACjB4iO,EAAU/2N,EAAOgc,aACjBg7M,EAAYh3N,EAAOwqJ,eACnBgB,EAAiBxrJ,EAAOwrJ,eACxByrE,EAAWj3N,EAAOi3N,SAClBC,EAAU,EACV3jO,EAAQ,GAGR4oG,EAAM,WACR,IAAIzpD,GAAM5gD,KAEV,GAAIyB,EAAM5R,eAAe+wD,GAAK,CAC5B,IAAI3/C,EAAKQ,EAAMm/C,UACRn/C,EAAMm/C,GACb3/C,MAGAisF,EAAW,SAAUp7F,GACvBu4G,EAAIv6G,KAAKgC,EAAM3C,OAGZ81O,GAAYC,IACfD,EAAU,SAAsBhkO,GAG9B,IAFA,IAAI+E,EAAO,GACPxW,EAAI,EACDmT,UAAUjT,OAASF,GAAGwW,EAAKhW,KAAK2S,UAAUnT,MAMjD,OALAiS,IAAQ2jO,GAAW,WAEjBviO,EAAoB,mBAAN5B,EAAmBA,EAAKhF,SAASgF,GAAK+E,IAEtD8d,EAAMshN,GACCA,GAETF,EAAY,SAAwBtkL,UAC3Bn/C,EAAMm/C,IAGmB,WAA9B,EAAQ,IAAR,CAAkBv+C,GACpByhB,EAAQ,SAAU88B,GAChBv+C,EAAQ+nB,SAASxf,EAAIy/F,EAAKzpD,EAAI,KAGvBukL,GAAYA,EAASz/G,IAC9B5hG,EAAQ,SAAU88B,GAChBukL,EAASz/G,IAAI96G,EAAIy/F,EAAKzpD,EAAI,KAGnB84G,GAETzpE,GADA2oE,EAAU,IAAIc,GACCE,MACfhB,EAAQe,MAAMH,UAAYtsE,EAC1BppE,EAAQlZ,EAAIqlF,EAAKmpE,YAAanpE,EAAM,IAG3B/hF,EAAO2rJ,kBAA0C,mBAAfT,cAA8BlrJ,EAAOmrJ,eAChFv1I,EAAQ,SAAU88B,GAChB1yC,EAAOkrJ,YAAYx4G,EAAK,GAAI,MAE9B1yC,EAAO2rJ,iBAAiB,UAAW3sE,GAAU,IAG7CppE,EAvDqB,uBAsDUkhN,EAAI,UAC3B,SAAUpkL,GAChBigD,EAAKhuG,YAAYmyO,EAAI,WAA6B,mBAAI,WACpDnkI,EAAKuoD,YAAYppJ,MACjBqqG,EAAIv6G,KAAK8wD,KAKL,SAAUA,GAChBjuD,WAAWiY,EAAIy/F,EAAKzpD,EAAI,GAAI,KAIlCpwD,EAAOD,QAAU,CACfgoB,IAAK0sN,EACLhgM,MAAOigM,I,gBClFT,IAAIh3N,EAAS,EAAQ,IACjBm3N,EAAY,EAAQ,KAAW9sN,IAC/B+sN,EAAWp3N,EAAO8b,kBAAoB9b,EAAOq3N,uBAC7CljO,EAAU6L,EAAO7L,QACjBvR,EAAUod,EAAOpd,QACjBsR,EAAuC,WAA9B,EAAQ,IAAR,CAAkBC,GAE/B7R,EAAOD,QAAU,WACf,IAAIqC,EAAM4pB,EAAMoiH,EAEZmiE,EAAQ,WACV,IAAI55L,EAAQlG,EAEZ,IADImB,IAAW+E,EAAS9E,EAAQ4K,SAAS9F,EAAO1E,OACzC7P,GAAM,CACXqO,EAAKrO,EAAKqO,GACVrO,EAAOA,EAAK8K,KACZ,IACEuD,IACA,MAAOvQ,GAGP,MAFIkC,EAAMgsI,IACLpiH,OAAO9pB,EACNhC,GAER8rB,OAAO9pB,EACLyU,GAAQA,EAAOy4N,SAIrB,GAAIx9N,EACFw8H,EAAS,WACPv8H,EAAQ+nB,SAAS22K,SAGd,IAAIukC,GAAcp3N,EAAO9V,WAAa8V,EAAO9V,UAAUmyB,WAQvD,GAAIz5B,GAAWA,EAAQC,QAAS,CAErC,IAAIF,EAAUC,EAAQC,aAAQ2B,GAC9BksI,EAAS,WACP/tI,EAAQmG,KAAK+pM,SASfniE,EAAS,WAEPymG,EAAUv1O,KAAKoe,EAAQ6yL,QAvBgD,CACzE,IAAIn2K,GAAS,EACTxX,EAAOjiB,SAAS0qO,eAAe,IACnC,IAAIyJ,EAASvkC,GAAOl2K,QAAQzX,EAAM,CAAEoyN,eAAe,IACnD5mG,EAAS,WACPxrH,EAAKjkB,KAAOy7B,GAAUA,GAsB1B,OAAO,SAAU3pB,GACf,IAAI84J,EAAO,CAAE94J,GAAIA,EAAIvD,UAAMhL,GACvB8pB,IAAMA,EAAK9e,KAAOq8J,GACjBnnK,IACHA,EAAOmnK,EACPn7B,KACApiH,EAAOu9I,K,6BChEb,IAAIvwD,EAAY,EAAQ,IAExB,SAASi8H,EAAkBt9I,GACzB,IAAIp3F,EAASC,EACbgP,KAAKnP,QAAU,IAAIs3F,GAAE,SAAUu9I,EAAWC,GACxC,QAAgBjzO,IAAZ3B,QAAoC2B,IAAX1B,EAAsB,MAAMgE,UAAU,2BACnEjE,EAAU20O,EACV10O,EAAS20O,KAEX3lO,KAAKjP,QAAUy4G,EAAUz4G,GACzBiP,KAAKhP,OAASw4G,EAAUx4G,GAG1BR,EAAOD,QAAQgG,EAAI,SAAU4xF,GAC3B,OAAO,IAAIs9I,EAAkBt9I,K,6BCf/B,IAAIj6E,EAAS,EAAQ,IACjBy5H,EAAc,EAAQ,IACtB7U,EAAU,EAAQ,KAClBC,EAAS,EAAQ,KACjB52E,EAAO,EAAQ,IACfg3E,EAAc,EAAQ,KACtBnoB,EAAQ,EAAQ,IAChBioB,EAAa,EAAQ,KACrBnnC,EAAY,EAAQ,KACpB27B,EAAW,EAAQ,IACnB2L,EAAU,EAAQ,KAClBI,EAAO,EAAQ,KAAkBj9H,EACjC21F,EAAK,EAAQ,IAAgB31F,EAC7B09H,EAAY,EAAQ,KACpBqG,EAAiB,EAAQ,KAGzBsrG,EAAY,YAEZC,EAAc,eACdtxG,EAAermH,EAAmB,YAClCumH,EAAYvmH,EAAgB,SAC5BrI,EAAOqI,EAAOrI,KACdwR,EAAanJ,EAAOmJ,WAEpBopB,EAAWvyB,EAAOuyB,SAClBqlM,EAAavxG,EACbzzF,EAAMj7B,EAAKi7B,IACX4uE,EAAM7pG,EAAK6pG,IACX5tE,EAAQj8B,EAAKi8B,MACbjqC,EAAMgO,EAAKhO,IACXkuO,EAAMlgO,EAAKkgO,IAIXC,EAAUr+F,EAAc,KAHf,SAITs+F,EAAUt+F,EAAc,KAHV,aAIdu+F,EAAUv+F,EAAc,KAHV,aAMlB,SAASw+F,EAAYzyO,EAAO0yO,EAAMC,GAChC,IAOI31O,EAAGqC,EAAGC,EAPN2jI,EAAS,IAAIhgI,MAAM0vO,GACnBC,EAAgB,EAATD,EAAaD,EAAO,EAC3BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBE,EAAc,KAATL,EAAc12H,EAAI,GAAI,IAAMA,EAAI,GAAI,IAAM,EAC/ClgH,EAAI,EACJoF,EAAIlB,EAAQ,GAAe,IAAVA,GAAe,EAAIA,EAAQ,EAAI,EAAI,EAkCxD,KAhCAA,EAAQotC,EAAIptC,KAECA,GAASA,IAAU+sC,GAE9B1tC,EAAIW,GAASA,EAAQ,EAAI,EACzBhD,EAAI61O,IAEJ71O,EAAIoxC,EAAMjqC,EAAInE,GAASqyO,GACnBryO,GAASV,EAAI08G,EAAI,GAAIh/G,IAAM,IAC7BA,IACAsC,GAAK,IAGLU,GADEhD,EAAI81O,GAAS,EACNC,EAAKzzO,EAELyzO,EAAK/2H,EAAI,EAAG,EAAI82H,IAEfxzO,GAAK,IACftC,IACAsC,GAAK,GAEHtC,EAAI81O,GAASD,GACfxzO,EAAI,EACJrC,EAAI61O,GACK71O,EAAI81O,GAAS,GACtBzzO,GAAKW,EAAQV,EAAI,GAAK08G,EAAI,EAAG02H,GAC7B11O,GAAQ81O,IAERzzO,EAAIW,EAAQg8G,EAAI,EAAG82H,EAAQ,GAAK92H,EAAI,EAAG02H,GACvC11O,EAAI,IAGD01O,GAAQ,EAAGzvG,EAAOnnI,KAAW,IAAJuD,EAASA,GAAK,IAAKqzO,GAAQ,GAG3D,IAFA11O,EAAIA,GAAK01O,EAAOrzO,EAChBuzO,GAAQF,EACDE,EAAO,EAAG3vG,EAAOnnI,KAAW,IAAJkB,EAASA,GAAK,IAAK41O,GAAQ,GAE1D,OADA3vG,IAASnnI,IAAU,IAAJoF,EACR+hI,EAET,SAAS+vG,EAAc/vG,EAAQyvG,EAAMC,GACnC,IAOItzO,EAPAuzO,EAAgB,EAATD,EAAaD,EAAO,EAC3BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBI,EAAQL,EAAO,EACf92O,EAAI62O,EAAS,EACbzxO,EAAI+hI,EAAOnnI,KACXkB,EAAQ,IAAJkE,EAGR,IADAA,IAAM,EACC+xO,EAAQ,EAAGj2O,EAAQ,IAAJA,EAAUimI,EAAOnnI,GAAIA,IAAKm3O,GAAS,GAIzD,IAHA5zO,EAAIrC,GAAK,IAAMi2O,GAAS,EACxBj2O,KAAOi2O,EACPA,GAASP,EACFO,EAAQ,EAAG5zO,EAAQ,IAAJA,EAAU4jI,EAAOnnI,GAAIA,IAAKm3O,GAAS,GACzD,GAAU,IAANj2O,EACFA,EAAI,EAAI81O,MACH,IAAI91O,IAAM61O,EACf,OAAOxzO,EAAI0nC,IAAM7lC,GAAK6rC,EAAWA,EAEjC1tC,GAAQ28G,EAAI,EAAG02H,GACf11O,GAAQ81O,EACR,OAAQ5xO,GAAK,EAAI,GAAK7B,EAAI28G,EAAI,EAAGh/G,EAAI01O,GAGzC,SAASQ,EAAU15F,GACjB,OAAOA,EAAM,IAAM,GAAKA,EAAM,IAAM,GAAKA,EAAM,IAAM,EAAIA,EAAM,GAEjE,SAAS25F,EAAO11M,GACd,MAAO,CAAM,IAALA,GAEV,SAAS21M,EAAQ31M,GACf,MAAO,CAAM,IAALA,EAAWA,GAAM,EAAI,KAE/B,SAAS41M,EAAQ51M,GACf,MAAO,CAAM,IAALA,EAAWA,GAAM,EAAI,IAAMA,GAAM,GAAK,IAAMA,GAAM,GAAK,KAEjE,SAAS61M,EAAQ71M,GACf,OAAOg1M,EAAYh1M,EAAI,GAAI,GAE7B,SAAS81M,EAAQ91M,GACf,OAAOg1M,EAAYh1M,EAAI,GAAI,GAG7B,SAAS8lG,EAAU9uC,EAAGn0F,EAAK0mB,GACzBwxE,EAAG/D,EAAEy9I,GAAY5xO,EAAK,CAAEV,IAAK,WAAc,OAAO0M,KAAK0a,MAGzD,SAASpnB,EAAIs5M,EAAM1/D,EAAOtxI,EAAOsrO,GAC/B,IACIC,EAAW/zG,GADCx3H,GAEhB,GAAIurO,EAAWj6F,EAAQ0/D,EAAKq5B,GAAU,MAAM5uN,EAAWwuN,GACvD,IAAI5xM,EAAQ24K,EAAKo5B,GAASoB,GACtBlyM,EAAQiyM,EAAWv6B,EAAKs5B,GACxBmB,EAAOpzM,EAAMt/B,MAAMugC,EAAOA,EAAQg4G,GACtC,OAAOg6F,EAAiBG,EAAOA,EAAKzpM,UAEtC,SAASrlB,EAAIq0L,EAAM1/D,EAAOtxI,EAAO0rO,EAAY5zO,EAAOwzO,GAClD,IACIC,EAAW/zG,GADCx3H,GAEhB,GAAIurO,EAAWj6F,EAAQ0/D,EAAKq5B,GAAU,MAAM5uN,EAAWwuN,GAIvD,IAHA,IAAI5xM,EAAQ24K,EAAKo5B,GAASoB,GACtBlyM,EAAQiyM,EAAWv6B,EAAKs5B,GACxBmB,EAAOC,GAAY5zO,GACdlE,EAAI,EAAGA,EAAI09I,EAAO19I,IAAKykC,EAAMiB,EAAQ1lC,GAAK63O,EAAKH,EAAiB13O,EAAI09I,EAAQ19I,EAAI,GAG3F,GAAKujI,EAAOkG,IAgFL,CACL,IAAKjuB,GAAM,WACTupB,EAAa,QACRvpB,GAAM,WACX,IAAIupB,GAAc,OACdvpB,GAAM,WAIV,OAHA,IAAIupB,EACJ,IAAIA,EAAa,KACjB,IAAIA,EAAa95F,KApOF,eAqOR85F,EAAa/hI,QAClB,CAMF,IADA,IACyCwB,EADrCuzO,GAJJhzG,EAAe,SAAqB7kI,GAElC,OADAujI,EAAWjzH,KAAMu0H,GACV,IAAIuxG,EAAW1yG,EAAQ1jI,MAEIk2O,GAAaE,EAAWF,GACnD78N,EAAOyqH,EAAKsyG,GAAav8N,EAAI,EAAQR,EAAKrZ,OAAS6Z,IACnDvV,EAAM+U,EAAKQ,QAASgrH,GAAep4E,EAAKo4E,EAAcvgI,EAAK8xO,EAAW9xO,IAE1E8+H,IAASy0G,EAAiBtoO,YAAcs1H,GAG/C,IAAIq4E,EAAO,IAAIn4E,EAAU,IAAIF,EAAa,IACtCizG,EAAW/yG,EAAUmxG,GAAW6B,QACpC76B,EAAK66B,QAAQ,EAAG,YAChB76B,EAAK66B,QAAQ,EAAG,aACZ76B,EAAK86B,QAAQ,IAAO96B,EAAK86B,QAAQ,IAAIv0G,EAAYsB,EAAUmxG,GAAY,CACzE6B,QAAS,SAAiB1vG,EAAYrkI,GACpC8zO,EAAS13O,KAAKkQ,KAAM+3H,EAAYrkI,GAAS,IAAM,KAEjDi0O,SAAU,SAAkB5vG,EAAYrkI,GACtC8zO,EAAS13O,KAAKkQ,KAAM+3H,EAAYrkI,GAAS,IAAM,OAEhD,QAhHH6gI,EAAe,SAAqB7kI,GAClCujI,EAAWjzH,KAAMu0H,EA9IF,eA+If,IAAIiF,EAAapG,EAAQ1jI,GACzBsQ,KAAKonO,GAAKnzG,EAAUnkI,KAAK,IAAI6G,MAAM6iI,GAAa,GAChDx5H,KAAKimO,GAAWzsG,GAGlB/E,EAAY,SAAkBkC,EAAQoB,EAAYyB,GAChDvG,EAAWjzH,KAAMy0H,EApJL,YAqJZxB,EAAW0D,EAAQpC,EArJP,YAsJZ,IAAIqzG,EAAejxG,EAAOsvG,GACtBjsM,EAAS8xD,EAAUisC,GACvB,GAAI/9F,EAAS,GAAKA,EAAS4tM,EAAc,MAAMvwN,EAAW,iBAE1D,GAAI2iB,GADJw/F,OAA4B9mI,IAAf8mI,EAA2BouG,EAAe5tM,EAASytF,EAAS+R,IAC/CouG,EAAc,MAAMvwN,EAxJ/B,iBAyJfrX,KAAKgmO,GAAWrvG,EAChB32H,KAAKkmO,GAAWlsM,EAChBh6B,KAAKimO,GAAWzsG,GAGdmO,IACF1Q,EAAU1C,EAhJI,aAgJuB,MACrC0C,EAAUxC,EAlJD,SAkJoB,MAC7BwC,EAAUxC,EAlJI,aAkJoB,MAClCwC,EAAUxC,EAlJI,aAkJoB,OAGpCtB,EAAYsB,EAAUmxG,GAAY,CAChC8B,QAAS,SAAiB3vG,GACxB,OAAOzkI,EAAI0M,KAAM,EAAG+3H,GAAY,IAAM,IAAM,IAE9C8vG,SAAU,SAAkB9vG,GAC1B,OAAOzkI,EAAI0M,KAAM,EAAG+3H,GAAY,IAElC+vG,SAAU,SAAkB/vG,GAC1B,IAAImV,EAAQ55I,EAAI0M,KAAM,EAAG+3H,EAAYp1H,UAAU,IAC/C,OAAQuqI,EAAM,IAAM,EAAIA,EAAM,KAAO,IAAM,IAE7C66F,UAAW,SAAmBhwG,GAC5B,IAAImV,EAAQ55I,EAAI0M,KAAM,EAAG+3H,EAAYp1H,UAAU,IAC/C,OAAOuqI,EAAM,IAAM,EAAIA,EAAM,IAE/B86F,SAAU,SAAkBjwG,GAC1B,OAAO6uG,EAAUtzO,EAAI0M,KAAM,EAAG+3H,EAAYp1H,UAAU,MAEtDslO,UAAW,SAAmBlwG,GAC5B,OAAO6uG,EAAUtzO,EAAI0M,KAAM,EAAG+3H,EAAYp1H,UAAU,OAAS,GAE/DulO,WAAY,SAAoBnwG,GAC9B,OAAO2uG,EAAcpzO,EAAI0M,KAAM,EAAG+3H,EAAYp1H,UAAU,IAAK,GAAI,IAEnEwlO,WAAY,SAAoBpwG,GAC9B,OAAO2uG,EAAcpzO,EAAI0M,KAAM,EAAG+3H,EAAYp1H,UAAU,IAAK,GAAI,IAEnE8kO,QAAS,SAAiB1vG,EAAYrkI,GACpC6kB,EAAIvY,KAAM,EAAG+3H,EAAY8uG,EAAQnzO,IAEnCi0O,SAAU,SAAkB5vG,EAAYrkI,GACtC6kB,EAAIvY,KAAM,EAAG+3H,EAAY8uG,EAAQnzO,IAEnC00O,SAAU,SAAkBrwG,EAAYrkI,GACtC6kB,EAAIvY,KAAM,EAAG+3H,EAAY+uG,EAASpzO,EAAOiP,UAAU,KAErD0lO,UAAW,SAAmBtwG,EAAYrkI,GACxC6kB,EAAIvY,KAAM,EAAG+3H,EAAY+uG,EAASpzO,EAAOiP,UAAU,KAErD2lO,SAAU,SAAkBvwG,EAAYrkI,GACtC6kB,EAAIvY,KAAM,EAAG+3H,EAAYgvG,EAASrzO,EAAOiP,UAAU,KAErD4lO,UAAW,SAAmBxwG,EAAYrkI,GACxC6kB,EAAIvY,KAAM,EAAG+3H,EAAYgvG,EAASrzO,EAAOiP,UAAU,KAErD6lO,WAAY,SAAoBzwG,EAAYrkI,GAC1C6kB,EAAIvY,KAAM,EAAG+3H,EAAYkvG,EAASvzO,EAAOiP,UAAU,KAErD8lO,WAAY,SAAoB1wG,EAAYrkI,GAC1C6kB,EAAIvY,KAAM,EAAG+3H,EAAYivG,EAAStzO,EAAOiP,UAAU,OAsCzD23H,EAAe/F,EA/PI,eAgQnB+F,EAAe7F,EA/PC,YAgQhBt4E,EAAKs4E,EAAUmxG,GAAY7yG,EAAOuD,MAAM,GACxC/lI,EAAoB,YAAIgkI,EACxBhkI,EAAiB,SAAIkkI,G,gBCnRrB,EAAQ,IACR,EAAQ,KACRjkI,EAAOD,QAAU,EAAQ,IAAuBoG,MAAMo6B,M,6BCDtD,IAAInmB,EAAM,EAAQ,IACdyxC,EAAU,EAAQ,IAClBhG,EAAW,EAAQ,IACnBvmD,EAAO,EAAQ,KACfyjI,EAAc,EAAQ,KACtB9L,EAAW,EAAQ,KACnBihH,EAAiB,EAAQ,KACzBj1G,EAAY,EAAQ,KAExBp3E,EAAQA,EAAQU,EAAIV,EAAQM,GAAK,EAAQ,IAAR,EAA0B,SAAUviB,GAAQzjC,MAAMo6B,KAAKqJ,MAAW,QAAS,CAE1GrJ,KAAM,SAAconG,GAClB,IAOIzoI,EAAQuH,EAAQ4pC,EAAMnT,EAPtB+8D,EAAIp0C,EAAS8hF,GACbhwC,EAAmB,mBAARnoF,KAAqBA,KAAOrJ,MACvCwgI,EAAOx0H,UAAUjT,OACjB0nI,EAAQD,EAAO,EAAIx0H,UAAU,QAAKjQ,EAClCuI,OAAoBvI,IAAV0kI,EACVx7H,EAAQ,EACRy7H,EAAS5D,EAAUhpC,GAIvB,GAFIxvF,IAASm8H,EAAQxsH,EAAIwsH,EAAOD,EAAO,EAAIx0H,UAAU,QAAKjQ,EAAW,IAEvDA,MAAV2kI,GAAyBlvC,GAAKxxF,OAAS48H,EAAY8D,GAMrD,IAAKpgI,EAAS,IAAIkxF,EADlBz4F,EAAS+3H,EAASh9B,EAAE/6F,SACSA,EAASkM,EAAOA,IAC3C8sO,EAAezxO,EAAQ2E,EAAOX,EAAUm8H,EAAM3sC,EAAE7uF,GAAQA,GAAS6uF,EAAE7uF,SANrE,IAAK8xB,EAAW2pG,EAAOvnI,KAAK26F,GAAIxzF,EAAS,IAAIkxF,IAAOtnD,EAAOnT,EAAShwB,QAAQC,KAAM/B,IAChF8sO,EAAezxO,EAAQ2E,EAAOX,EAAUnL,EAAK49B,EAAU0pG,EAAO,CAACv2F,EAAKntC,MAAOkI,IAAQ,GAAQilC,EAAKntC,OASpG,OADAuD,EAAOvH,OAASkM,EACT3E,M,6BCjCX,IAAIotO,EAAkB,EAAQ,IAC1Bj4I,EAAa,EAAQ,IAEzB57F,EAAOD,QAAU,SAAU4D,EAAQyH,EAAOlI,GACpCkI,KAASzH,EAAQkwO,EAAgB9tO,EAAEpC,EAAQyH,EAAOwwF,EAAW,EAAG14F,IAC/DS,EAAOyH,GAASlI,I,gBCNvB,IAAIwoD,EAAO,EAAQ,IACfysL,EAAQzsL,EAAKl/C,OAASk/C,EAAKl/C,KAAO,CAAEuV,UAAWvV,KAAKuV,YACxD/hB,EAAOD,QAAU,SAAmB4gC,GAClC,OAAOw3M,EAAMp2N,UAAUrW,MAAMysO,EAAOhmO,a,gBCHtCnS,EAAOD,QAAU,CAAE,QAAW,EAAQ,KAAuCsD,YAAY,I,gBCAzF,EAAQ,IACR,EAAQ,IACRrD,EAAOD,QAAU,EAAQ,KAA0BgG,EAAE,a,gBCFrD/F,EAAOD,QAAU,CAAE,QAAW,EAAQ,KAA8BsD,YAAY,I,gBCAhF,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACRrD,EAAOD,QAAU,EAAQ,IAAuBiD,Q,6BCFhD,IAAI0a,EAAS,EAAQ,IACjBsK,EAAM,EAAQ,IACdmvH,EAAc,EAAQ,IACtBtrF,EAAU,EAAQ,IAClBD,EAAW,EAAQ,KACnBwmF,EAAO,EAAQ,KAAW33B,IAC1B29H,EAAS,EAAQ,IACjBvtH,EAAS,EAAQ,KACjBif,EAAiB,EAAQ,IACzBjnG,EAAM,EAAQ,IACdqgG,EAAM,EAAQ,IACdsU,EAAS,EAAQ,KACjB6gG,EAAY,EAAQ,KACpBC,EAAW,EAAQ,KACnBlyO,EAAU,EAAQ,KAClBm1F,EAAW,EAAQ,IACnBziF,EAAW,EAAQ,IACnB+sC,EAAW,EAAQ,IACnBi9D,EAAY,EAAQ,IACpBrnB,EAAc,EAAQ,KACtBG,EAAa,EAAQ,IACrB28I,EAAU,EAAQ,KAClBC,EAAU,EAAQ,KAClB50G,EAAQ,EAAQ,KAChB60G,EAAQ,EAAQ,KAChB90G,EAAM,EAAQ,IACd1qB,EAAQ,EAAQ,IAChB8J,EAAO6gB,EAAM79H,EACb21F,EAAKioC,EAAI59H,EACTi9H,EAAOw1G,EAAQzyO,EACf0xI,EAAU/5H,EAAO1a,OACjBm1O,EAAQz6N,EAAOlR,KACfksO,EAAaP,GAASA,EAAMp2N,UAE5B42N,EAASz1G,EAAI,WACb01G,EAAe11G,EAAI,eACnB21G,EAAS,GAAGpmM,qBACZqmM,EAAiBjuH,EAAO,mBACxBkuH,EAAaluH,EAAO,WACpBmuH,EAAYnuH,EAAO,cACnB5H,EAAc9jH,OAAgB,UAC9B85O,EAA+B,mBAAXxhG,KAA2BghG,EAAM1yO,EACrDmzO,EAAUx7N,EAAOw7N,QAEjBrwG,GAAUqwG,IAAYA,EAAiB,YAAMA,EAAiB,UAAEC,UAGhEC,EAAgBjiG,GAAeihG,GAAO,WACxC,OAES,GAFFG,EAAQ78I,EAAG,GAAI,IAAK,CACzB54F,IAAK,WAAc,OAAO44F,EAAGlsF,KAAM,IAAK,CAAEtM,MAAO,IAAK2L,MACpDA,KACD,SAAU8xB,EAAIn9B,EAAK2/J,GACtB,IAAIk2E,EAAYt2H,EAAKE,EAAaz/G,GAC9B61O,UAAkBp2H,EAAYz/G,GAClCk4F,EAAG/6D,EAAIn9B,EAAK2/J,GACRk2E,GAAa14M,IAAOsiF,GAAavnB,EAAGunB,EAAaz/G,EAAK61O,IACxD39I,EAEAl4D,EAAO,SAAUh5B,GACnB,IAAI8uO,EAAMP,EAAWvuO,GAAO+tO,EAAQ9gG,EAAiB,WAErD,OADA6hG,EAAI7vE,GAAKj/J,EACF8uO,GAGL73E,EAAWw3E,GAAyC,iBAApBxhG,EAAQv6G,SAAuB,SAAUyD,GAC3E,MAAoB,iBAANA,GACZ,SAAUA,GACZ,OAAOA,aAAc82G,GAGnBo8F,EAAkB,SAAwBlzM,EAAIn9B,EAAK2/J,GAKrD,OAJIxiI,IAAOsiF,GAAa4wH,EAAgBmF,EAAWx1O,EAAK2/J,GACxD5nE,EAAS56D,GACTn9B,EAAMi4F,EAAYj4F,GAAK,GACvB+3F,EAAS4nE,GACLn7I,EAAI+wN,EAAYv1O,IACb2/J,EAAEtgK,YAIDmlB,EAAI2Y,EAAIg4M,IAAWh4M,EAAGg4M,GAAQn1O,KAAMm9B,EAAGg4M,GAAQn1O,IAAO,GAC1D2/J,EAAIo1E,EAAQp1E,EAAG,CAAEtgK,WAAY+4F,EAAW,GAAG,OAJtC5zE,EAAI2Y,EAAIg4M,IAASj9I,EAAG/6D,EAAIg4M,EAAQ/8I,EAAW,EAAG,KACnDj7D,EAAGg4M,GAAQn1O,IAAO,GAIX41O,EAAcz4M,EAAIn9B,EAAK2/J,IACzBznE,EAAG/6D,EAAIn9B,EAAK2/J,IAEnBo2E,EAAoB,SAA0B54M,EAAIM,GACpDs6D,EAAS56D,GAKT,IAJA,IAGIn9B,EAHA+U,EAAO+/N,EAASr3M,EAAI6hF,EAAU7hF,IAC9BjiC,EAAI,EACJiB,EAAIsY,EAAKrZ,OAENe,EAAIjB,GAAG60O,EAAgBlzM,EAAIn9B,EAAM+U,EAAKvZ,KAAMiiC,EAAEz9B,IACrD,OAAOm9B,GAKL64M,EAAwB,SAA8Bh2O,GACxD,IAAIi2O,EAAIZ,EAAOv5O,KAAKkQ,KAAMhM,EAAMi4F,EAAYj4F,GAAK,IACjD,QAAIgM,OAASyzG,GAAej7F,EAAI+wN,EAAYv1O,KAASwkB,EAAIgxN,EAAWx1O,QAC7Di2O,IAAMzxN,EAAIxY,KAAMhM,KAASwkB,EAAI+wN,EAAYv1O,IAAQwkB,EAAIxY,KAAMmpO,IAAWnpO,KAAKmpO,GAAQn1O,KAAOi2O,IAE/FC,EAA4B,SAAkC/4M,EAAIn9B,GAGpE,GAFAm9B,EAAKmiF,EAAUniF,GACfn9B,EAAMi4F,EAAYj4F,GAAK,GACnBm9B,IAAOsiF,IAAej7F,EAAI+wN,EAAYv1O,IAASwkB,EAAIgxN,EAAWx1O,GAAlE,CACA,IAAI2/J,EAAIpgD,EAAKpiF,EAAIn9B,GAEjB,OADI2/J,IAAKn7I,EAAI+wN,EAAYv1O,IAAUwkB,EAAI2Y,EAAIg4M,IAAWh4M,EAAGg4M,GAAQn1O,KAAO2/J,EAAEtgK,YAAa,GAChFsgK,IAELw2E,EAAuB,SAA6Bh5M,GAKtD,IAJA,IAGIn9B,EAHAkkB,EAAQs7G,EAAKlgB,EAAUniF,IACvBl6B,EAAS,GACTzH,EAAI,EAED0oB,EAAMxoB,OAASF,GACfgpB,EAAI+wN,EAAYv1O,EAAMkkB,EAAM1oB,OAASwE,GAAOm1O,GAAUn1O,GAAO4uI,GAAM3rI,EAAOjH,KAAKgE,GACpF,OAAOiD,GAEPmzO,GAAyB,SAA+Bj5M,GAM1D,IALA,IAIIn9B,EAJAq2O,EAAQl5M,IAAOsiF,EACfv7F,EAAQs7G,EAAK62G,EAAQb,EAAYl2H,EAAUniF,IAC3Cl6B,EAAS,GACTzH,EAAI,EAED0oB,EAAMxoB,OAASF,IAChBgpB,EAAI+wN,EAAYv1O,EAAMkkB,EAAM1oB,OAAU66O,IAAQ7xN,EAAIi7F,EAAaz/G,IAAciD,EAAOjH,KAAKu5O,EAAWv1O,IACxG,OAAOiD,GAINwyO,IAYHrtL,GAXA6rF,EAAU,WACR,GAAIjoI,gBAAgBioI,EAAS,MAAMjzI,UAAU,gCAC7C,IAAIgG,EAAMq4B,EAAI1wB,UAAUjT,OAAS,EAAIiT,UAAU,QAAKjQ,GAChDwlI,EAAO,SAAUxkI,GACfsM,OAASyzG,GAAaykB,EAAKpoI,KAAK05O,EAAW91O,GAC3C8kB,EAAIxY,KAAMmpO,IAAW3wN,EAAIxY,KAAKmpO,GAASnuO,KAAMgF,KAAKmpO,GAAQnuO,IAAO,GACrE4uO,EAAc5pO,KAAMhF,EAAKoxF,EAAW,EAAG14F,KAGzC,OADIi0I,GAAetO,GAAQuwG,EAAcn2H,EAAaz4G,EAAK,CAAEzF,cAAc,EAAMgjB,IAAK2/G,IAC/ElkG,EAAKh5B,KAEY,UAAG,YAAY,WACvC,OAAOgF,KAAKi6J,MAGd7lC,EAAM79H,EAAI2zO,EACV/1G,EAAI59H,EAAI8tO,EACR,EAAQ,KAAkB9tO,EAAIyyO,EAAQzyO,EAAI4zO,EAC1C,EAAQ,KAAiB5zO,EAAIyzO,EAC7Bf,EAAM1yO,EAAI6zO,GAENziG,IAAgB,EAAQ,KAC1BvrF,EAASq3D,EAAa,uBAAwBu2H,GAAuB,GAGvEhiG,EAAOzxI,EAAI,SAAU/D,GACnB,OAAOwhC,EAAK0/F,EAAIlhI,MAIpB6pD,EAAQA,EAAQQ,EAAIR,EAAQgB,EAAIhB,EAAQM,GAAK8sL,EAAY,CAAEj2O,OAAQy0I,IAEnE,IAAK,IAAIqiG,GAAa,iHAGpBzxO,MAAM,KAAM0Q,GAAI,EAAG+gO,GAAW56O,OAAS6Z,IAAGmqH,EAAI42G,GAAW/gO,OAE3D,IAAK,IAAIghO,GAAmB9gI,EAAMiqB,EAAIz/F,OAAQ55B,GAAI,EAAGkwO,GAAiB76O,OAAS2K,IAAIwuO,EAAU0B,GAAiBlwO,OAE9GgiD,EAAQA,EAAQU,EAAIV,EAAQM,GAAK8sL,EAAY,SAAU,CAErD,IAAO,SAAUz1O,GACf,OAAOwkB,EAAI8wN,EAAgBt1O,GAAO,IAC9Bs1O,EAAet1O,GACfs1O,EAAet1O,GAAOi0I,EAAQj0I,IAGpCw2O,OAAQ,SAAgBV,GACtB,IAAK73E,EAAS63E,GAAM,MAAM90O,UAAU80O,EAAM,qBAC1C,IAAK,IAAI91O,KAAOs1O,EAAgB,GAAIA,EAAet1O,KAAS81O,EAAK,OAAO91O,GAE1Ey2O,UAAW,WAAcpxG,GAAS,GAClCqxG,UAAW,WAAcrxG,GAAS,KAGpCh9E,EAAQA,EAAQU,EAAIV,EAAQM,GAAK8sL,EAAY,SAAU,CAErD11O,OA/FY,SAAgBo9B,EAAIM,GAChC,YAAa/+B,IAAN++B,EAAkBs3M,EAAQ53M,GAAM44M,EAAkBhB,EAAQ53M,GAAKM,IAgGtEr+B,eAAgBixO,EAEhBjvO,iBAAkB20O,EAElB9xN,yBAA0BiyN,EAE1B/xN,oBAAqBgyN,EAErBj0L,sBAAuBk0L,KAKzB,IAAIO,GAAsB/B,GAAO,WAAcK,EAAM1yO,EAAE,MAEvD8lD,EAAQA,EAAQU,EAAIV,EAAQM,EAAIguL,GAAqB,SAAU,CAC7Dz0L,sBAAuB,SAA+B/kB,GACpD,OAAO83M,EAAM1yO,EAAE8/C,EAASllB,OAK5Bw3M,GAAStsL,EAAQA,EAAQU,EAAIV,EAAQM,IAAM8sL,GAAcb,GAAO,WAC9D,IAAI7rL,EAAIkrF,IAIR,MAA0B,UAAnBihG,EAAW,CAACnsL,KAA2C,MAAxBmsL,EAAW,CAAE7pO,EAAG09C,KAAyC,MAAzBmsL,EAAWv5O,OAAOotD,QACrF,OAAQ,CACXxqC,UAAW,SAAmB4e,GAI5B,IAHA,IAEIy5M,EAAUC,EAFV7kO,EAAO,CAACmrB,GACR3hC,EAAI,EAEDmT,UAAUjT,OAASF,GAAGwW,EAAKhW,KAAK2S,UAAUnT,MAEjD,GADAq7O,EAAYD,EAAW5kO,EAAK,IACvBsD,EAASshO,SAAoBl4O,IAAPy+B,KAAoB8gI,EAAS9gI,GAMxD,OALKv6B,EAAQg0O,KAAWA,EAAW,SAAU52O,EAAKN,GAEhD,GADwB,mBAAbm3O,IAAyBn3O,EAAQm3O,EAAU/6O,KAAKkQ,KAAMhM,EAAKN,KACjEu+J,EAASv+J,GAAQ,OAAOA,IAE/BsS,EAAK,GAAK4kO,EACH1B,EAAWhtO,MAAMysO,EAAO3iO,MAKnCiiI,EAAiB,UAAEmhG,IAAiB,EAAQ,GAAR,CAAmBnhG,EAAiB,UAAGmhG,EAAcnhG,EAAiB,UAAEnoG,SAE5Gw6F,EAAe2N,EAAS,UAExB3N,EAAez0H,KAAM,QAAQ,GAE7By0H,EAAepsH,EAAOlR,KAAM,QAAQ,I,gBCpPpC,IAAI8L,EAAU,EAAQ,IAClBgiO,EAAO,EAAQ,KACfz3H,EAAM,EAAQ,KAClB7iH,EAAOD,QAAU,SAAU4gC,GACzB,IAAIl6B,EAAS6R,EAAQqoB,GACjBk7J,EAAay+C,EAAKv0O,EACtB,GAAI81L,EAKF,IAJA,IAGIr4L,EAHAs7M,EAAUjjB,EAAWl7J,GACrBk4M,EAASh2H,EAAI98G,EACb/G,EAAI,EAED8/M,EAAQ5/M,OAASF,GAAO65O,EAAOv5O,KAAKqhC,EAAIn9B,EAAMs7M,EAAQ9/M,OAAOyH,EAAOjH,KAAKgE,GAChF,OAAOiD,I,gBCbX,EAAQ,IAAR,CAAyB,kB,gBCAzB,EAAQ,IAAR,CAAyB,e,gBCAzB,EAAQ,KACR,IAAI8zO,EAAU,EAAQ,IAAuBp7O,OAC7Ca,EAAOD,QAAU,SAAwB4gC,EAAIn9B,EAAK2kB,GAChD,OAAOoyN,EAAQ33O,eAAe+9B,EAAIn9B,EAAK2kB,K,gBCHzC,IAAI0jC,EAAU,EAAQ,IAEtBA,EAAQA,EAAQU,EAAIV,EAAQM,GAAK,EAAQ,IAAmB,SAAU,CAAEvpD,eAAgB,EAAQ,IAAgBmD,K,gBCFhH,EAAQ,KACR,IAAIw0O,EAAU,EAAQ,IAAuBp7O,OAC7Ca,EAAOD,QAAU,SAAgBkhC,EAAGkiI,GAClC,OAAOo3E,EAAQh3O,OAAO09B,EAAGkiI,K,gBCH3B,IAAIt3G,EAAU,EAAQ,IAEtBA,EAAQA,EAAQU,EAAG,SAAU,CAAEhpD,OAAQ,EAAQ,Q,8BCF/C,YAqBAvD,EAAOD,QAAQy6O,eAAiB,EAAQ,KAExCx6O,EAAOD,QAAQ0rH,YAAc,EAAQ,KAAkBA,YAEvDzrH,EAAOD,QAAQirH,YAAc,EAAQ,KAAkBA,YAEvDhrH,EAAOD,QAAQ8jC,YAAc,EAAQ,KAAkBA,YAMvD7jC,EAAOD,QAAQ06O,oBAAsBz6O,EAAOD,QAAQ8jC,YAEpD7jC,EAAOD,QAAQ26O,eAAiB,EAAQ,KAAqBA,eAE7D16O,EAAOD,QAAQ46O,sBAAwB,EAAQ,KAAqBA,sBAEpE36O,EAAOD,QAAQoqN,gBAAkB,EAAQ,KAEzCnqN,EAAOD,QAAQ2tN,cAAgB,EAAQ,KAAcA,cAErD1tN,EAAOD,QAAQ8vN,YAAc,EAAQ,KAAcA,YAEnD7vN,EAAOD,QAAQqjL,kBAAoB,EAAQ,KAAYA,kBAEvDpjL,EAAOD,QAAQo8J,aAAe,EAAQ,KAAYA,aAElDn8J,EAAOD,QAAQ66O,KAAO,EAAQ,KAE9B56O,EAAOD,QAAQ86O,MAAQ,EAAQ,KAE/B76O,EAAOD,QAAQogJ,cAAgB,EAAQ,KAEvCngJ,EAAOD,QAAQ+6O,iBAAmB,EAAQ,KAE1C96O,EAAOD,QAAQg7O,WAAa,EAAQ,KAEpC/6O,EAAOD,QAAQmgJ,UAAY,EAAQ,KAEnClgJ,EAAOD,QAAQ4oN,KAAO,EAAQ,KAE9B3oN,EAAOD,QAAQi7O,gBAAkB,EAAQ,MAGzCh7O,EAAOD,QAAQk7O,uBAAyB,EAAQ,MAEhDj7O,EAAOD,QAAQm7O,eAAiB,EAAQ,KAAYA,eAEpDl7O,EAAOD,QAAQmkJ,YAAc,EAAQ,KAErClkJ,EAAOD,QAAQo7O,OAAS,EAAQ,KAEhCn7O,EAAOD,QAAQq7O,eAAiB,EAAQ,MAAqBA,eAE7Dp7O,EAAOD,QAAQs7O,gBAAkB,EAAQ,MAEzCr7O,EAAOD,QAAQgpH,cAAgB,EAAQ,KAAmBA,cAE1D/oH,EAAOD,QAAQgoJ,cAAgB,EAAQ,KAAmBA,cAE1D/nJ,EAAOD,QAAQu7O,kBAAoB,EAAQ,KAAsCj3O,QACjFrE,EAAOD,QAAQ4zD,qBAAuB,EAAQ,KAAyCtvD,QAUvFrE,EAAOD,QAAQkgI,oBAAsB,EAAQ,KAAiBA,oBAQ9DjgI,EAAOD,QAAQw7O,yBAA2B,EAAQ,KAAiBt/D,eAOnEj8K,EAAOD,QAAQy7O,wBAA0B,EAAQ,KAAiBt/D,cAOlEl8K,EAAOD,QAAQ07O,wBAA0B,EAAQ,KAAiBt/D,cAIlE,IAAIl6K,OAAU,EAOdjC,EAAOD,QAAQkC,QAAU,SAAUc,GACjCd,EAAUc,GAOZ/C,EAAOD,QAAQ27O,WAAa,WAC1B,OAAOz5O,GASTjC,EAAOD,QAAQ47O,YAAc,SAAU1zG,GACrC,IAAI2zG,EAAc35O,EAClBA,EAAU,SAAiByH,EAAS0jB,GAClC,OAAO66G,EAAQ2zG,EAAalyO,EAAS0jB,KAIzC,IAAIyuN,EAAqB,WACvB,OAAO,IAAI77O,EAAOD,QAAQu7O,mBAS5Bt7O,EAAOD,QAAQ2zD,sBAAwB,SAAUooL,GAC/CD,EAAqBC,GA0BvB97O,EAAOD,QAAQsnJ,aAAe,SAAUrnI,GAYtC,MAXoB,iBAATA,IACTA,EAAO,CACL,QAAWA,IAGfA,EAAK/d,QAAU+d,EAAK/d,SAAWA,EAC/B+d,EAAKyjB,MAAQzjB,EAAKyjB,OAAS,IAAIzjC,EAAOD,QAAQ8jC,YAAY,CACxDC,aAAcpmB,EAAOomB,eAEvB9jB,EAAK+7N,UAAY/7N,EAAK+7N,WAAa,IAAI/7O,EAAOD,QAAQi7O,gBACtDh7N,EAAKg8N,YAAch8N,EAAKg8N,aAAeH,IAChC,IAAI77O,EAAOD,QAAQo8J,aAAan8I,M,+CCrMzC,IAAIrhB,EAAO,EAAQ,KAMnB,IAAIs9O,EAAanxO,OAAO3L,OAAOoZ,KAAK5Z,GAAM+J,KAJ1C,SAAsBoZ,GACpB,OAAOA,EAAI7V,QAAQ,yBAA0B,WAGaF,KAAK,KAAM,KAEvE,SAASmwO,EAAWhxO,GAClB,OAAOvM,EAAKuM,GAOdlL,EAAOD,QAJP,SAAqB+hB,GACnB,OAAOA,EAAI7V,QAAQgwO,EAAYC,K,wjqDChBjCl8O,EAAOD,QAAU,CAAE,QAAW,EAAQ,KAAmCsD,YAAY,I,gBCArF,EAAQ,IACR,EAAQ,IACRrD,EAAOD,QAAU,EAAQ,M,gBCFzB,IAAI+iI,EAAU,EAAQ,KAClByC,EAAW,EAAQ,GAAR,CAAkB,YAC7BjiB,EAAY,EAAQ,IACxBtjH,EAAOD,QAAU,EAAQ,IAAWqnC,WAAa,SAAUzG,GACzD,IAAIs5D,EAAI96F,OAAOwhC,GACf,YAAuBz+B,IAAhB+3F,EAAEsrC,IACJ,eAAgBtrC,GAEhBqpB,EAAUjkH,eAAeyjI,EAAQ7oC,M,6BCNxC96F,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEIiC,EAAgBC,EAFA,EAAQ,KAMxB87B,EAAgB97B,EAFD,EAAQ,KAIvB+7B,EAAY,EAAQ,GAEpBh4B,EAAa/D,EAAuB+7B,GAIpC2sB,EAAkB1oD,EAFA,EAAQ,KAM1B+2O,EAAoB/2O,EAFD,EAAQ,MAM3Bm8B,EAAUn8B,EAFD,EAAQ,KAMjB2kK,EAMJ,SAAiCtlK,GAAO,GAAIA,GAAOA,EAAIpB,WAAc,OAAOoB,EAAc,IAAIw9B,EAAS,GAAI,GAAW,MAAPx9B,EAAe,IAAK,IAAIjB,KAAOiB,EAAWtF,OAAOC,UAAUC,eAAeC,KAAKmF,EAAKjB,KAAMy+B,EAAOz+B,GAAOiB,EAAIjB,IAAgC,OAAtBy+B,EAAO59B,QAAUI,EAAYw9B,EAN3OC,CAFC,EAAQ,MAM5B6oF,EAAW3lH,EAFD,EAAQ,KAMtB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAoDvF,SAAS23O,EAAY34M,EAAOqvM,EAAUC,GAClC,IAAInzI,EAAQn8D,EAAMuvM,WAAWF,GAC7B,OAAO,IAAI3pO,EAAW9E,SAAQ,SAAU9D,EAASC,GAC7C,IAAI04F,EAAU,GACd0G,EAAMr+F,QAAU,SAAUD,GACtBd,EAAO,IAAIa,MAAM,iBAAmBC,EAAMQ,OAAOowO,aAGrDtyI,EAAM+qE,UAAY,SAAUrpK,GACxB,IAAIqxO,EAASrxO,EAAMQ,OAAO2E,OACrBksO,GAILz5I,EAAQ15F,KAAKuzO,EAAaJ,IAC1BA,EAAOE,YAJHtyO,EAAQ24F,OASxB,SAASmjJ,EAAarxE,GAClB,OAAO,IAAI7hK,EAAW9E,SAAQ,SAAU9D,EAASC,GAC7CwqK,EAAIinE,WAAa,SAAU3wO,GACvBf,EAAQe,IAEZ0pK,EAAIzpK,QAAU,SAAUD,GACpBd,EAAOc,EAAMQ,OAAOV,WAKhC,SAASk7O,EAAkBlyE,GACvB,OAAO,IAAIjhK,EAAW9E,SAAQ,SAAU9D,EAASC,GAC7C4pK,EAAIO,UAAY,SAAUrpK,GACtBf,EAAQe,IAEZ8oK,EAAI7oK,QAAU,SAAUD,GACpBd,EAAOc,EAAMQ,OAAOV,WAKhC,SAASm7O,EAAanyE,GAClB,OAAO,IAAIjhK,EAAW9E,SAAQ,SAAU9D,EAASC,GAC7C4pK,EAAIO,UAAY,WACZ,OAAOpqK,EAAQ6pK,IAEnBA,EAAI7oK,QAAU,SAAUuC,GACpB,OAAOtD,EAAOsD,OAK1B,SAAS04O,EAAmBpyE,GACxB,OAAOkyE,EAAkBlyE,GAAK5jK,MAAK,SAAUlF,GACzC,OAAOA,EAAMQ,OAAO2E,UAe5B,IAifYg2O,EAtSAh2H,EA/CA1G,EA5JR28H,EAA6B,SAAoCC,EAAoB3yE,GACrFx6J,KAAK8jD,UAAYqpL,EACjBntO,KAAK06J,QAAU,kBAAoBF,GAAU,WAC7Cx6J,KAAK+6J,GAAK,KACV/6J,KAAKotO,eAAgB,EACrBptO,KAAKqtO,iBAAmB,IAAIV,EAAkB93O,QAC9CmL,KAAKstO,iBAAkB,GAG3BJ,EAA2BhkM,OAAS,SAAU4a,EAAW02G,GAErD,OADAA,EAAS,kBAAoBA,GAAU,WAChCD,EAAiBrxH,OAAO4a,EAAW02G,IAG9C0yE,EAA2Bt9O,UAAY,CAMnCy9H,QAAS,WACL,IAAIhuE,EAAQr/C,KAEZ,IAAKA,KAAKotO,cAEN,OADA7xH,EAAS1mH,QAAQgD,IAAI,uEACd8B,EAAW9E,QAAQ9D,UAG9BiP,KAAKotO,eAAgB,EAErB7xH,EAAS1mH,QAAQgD,IAAI,qDACrB,IAAI+iK,EAAM56J,KAAK8jD,UAAUq3D,KAAKn7G,KAAK06J,QAvJ7B,GA+KN,OAvBAE,EAAIE,gBAAkB,SAAU39D,GAC5B,IAAI49D,EAAK59D,EAAG7qG,OAAO2E,OACf+jK,EAAa79D,EAAG69D,WACpBz/C,EAAS1mH,QAAQgD,IAAI,sDAAwDmjK,GACzEA,EAAa,IAEb37G,EAAMiuL,iBAAkB,EA7IxC,SAAwBvyE,GAEpBA,EAAGknE,kBAAkB,QAAS,CAAE/9L,QAAS,CAAC,YAI1C62H,EAAGknE,kBAAkB,cAAe,CAAE/9L,QAAS,CAAC,UAGhD62H,EAAGknE,kBAAkB,OAAQ,CAAE/9L,QAAS,CAAC,aAqI7BqpM,CAAexyE,IAEfC,EAAa,GApI7B,SAAyBD,GACCA,EAAGknE,kBAAkB,wBAAyB,CAChE/9L,QAAS,CAAC,UAAW,eAETg+L,YAAY,OAAQ,WAiIxBsL,CAAgBzyE,GAEhBC,EAAa,GAhI7B,SAAyBD,GACrBA,EAAGknE,kBAAkB,iBAAkB,CAAE/9L,QAAS,CAAC,aAgIvCupM,CAAgB1yE,IAKxBH,EAAIM,UAAY,WACZ3/C,EAAS1mH,QAAQgD,IAAI,2EAGzB0jH,EAAS1mH,QAAQgD,IAAI,8DACdi1O,EAAkBlyE,GAAK5jK,MAAK,SAAUmmG,GAUzC,OATAoe,EAAS1mH,QAAQgD,IAAI,iDACrBwnD,EAAM07G,GAAK59D,EAAG7qG,OAAO2E,OAIrBooD,EAAM07G,GAAG2yE,gBAAkB,WACvBruL,EAAM07G,GAAG/3G,SAGN3D,EAAM7hC,YAIrBmwN,eAAgB,WACZ,OAAOh0O,EAAW9E,QAAQ9D,QAAQiP,KAAKstO,kBAO3C9vN,MAAO,WACH,IAAIugC,EAAS/9C,KAEb,OAAOrG,EAAW9E,QAAQ/B,IAAI,CAACkN,KAAK4tO,mBAAoB5tO,KAAK6tO,kBAAkB72O,MAAK,SAAUk8B,GAC1F,IAAID,GAAQ,EAAIqrB,EAAgBzpD,SAASq+B,EAAM,GAC3C2nL,EAAc5nL,EAAM,GACpB66M,EAAW76M,EAAM,GAErBsoF,EAAS1mH,QAAQgD,IAAI,mDACrBkmD,EAAOsvL,iBAAiBU,WAAW,CAC/BxyB,WAAYuyB,EAAS9yB,UACrB9gE,MAAO4zF,EAAStwB,UAChB3lK,OAAQi2L,EAASrwB,WACjBjC,aAAc,CACVpuH,OAAQytH,SAaxBmzB,oBAAqB,SAA6BznL,GAC9C,IAAI6M,EAASpzD,KAEb,OAAO,IAAIrG,EAAW9E,SAAQ,SAAU9D,EAASC,GAC7C,IAEIi9O,EAFK76K,EAAO2nG,GAAGunE,YAAY,CAAC,yBAA0B,YAC3CE,YAAY,yBACL5mO,MAAM,QACxB0/D,EAAQ2nK,YAAYC,KAAK38K,GACzB9zD,EAAUw7O,EAAUzK,WAAWloK,GAE/B4yK,EAAmB,GAMnBC,GAAa,EAEjB17O,EAAQ0oK,UAAY,SAAUrpK,GAC1B,IAAIqxO,EAASrxO,EAAMQ,OAAO2E,OAC1B,IAAKksO,EAED,OAAK+K,EAAiBx+O,QAAWy+O,EAG1Bp9O,EAAQm9O,GAFJn9O,EAAQ,MAIvB,IAAI4iD,EAASwvL,EAAOzvO,MAChBigD,EAAOy6L,YACPD,GAAa,EAEbD,EAAiBl+O,KAAK2jD,GAE1BwvL,EAAOE,YAEX5wO,EAAQV,QAAU,SAAUuC,GACxBtD,EAAOsD,OAEZ0C,MAAK,SAAUo2F,GAEd,OADAmuB,EAAS1mH,QAAQgD,IAAI,YAAcu1F,GAAUA,EAAO19F,QAAW,2CAA6C62D,EAAS,QAC9G6mC,MAWfihJ,qBACQ99H,GAAQ,EAAI5+E,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASC,EAAQ4yB,EAAQ2nL,GACnG,IAAII,EAAIr6M,EAAOs6M,EACf,OAAO78M,EAAc78B,QAAQm/B,MAAK,SAAkB7F,GAChD,OACI,OAAQA,EAAStsB,KAAOssB,EAASzwB,MAC7B,KAAK,EAqBD,OApBA69G,EAAS1mH,QAAQgD,IAAI,8BAAgCq2O,EAAiBx+O,OAAU,gBAAkB62D,GAClG+nL,EAAKtuO,KAAK+6J,GAAGunE,YAAY,CAAC,yBAA0B,aACpDruM,EAAQq6M,EAAG9L,YAAY,yBAEvB0L,EAAiB9zO,SAAQ,SAAU1J,GAC/BujC,EAAM60D,IAAIp4F,MAOd69O,EAAe,CACXlmI,QAAS9hD,EACT6nL,aAAa,EACbh4H,UAAW,GAGfniF,EAAM60D,IAAIylJ,GACVpgN,EAASzwB,KAAO,GACT,EAAIi0B,EAAU5gC,SAAS87O,EAAayB,IAE/C,KAAK,EACD/yH,EAAS1mH,QAAQgD,IAAI,gCAAkC0uD,EAAS,KAEpE,KAAK,EACL,IAAK,MACD,OAAOp4B,EAASiF,UAG7BO,EAAS3zB,UAGhB,SAA6B0rG,EAAI6T,GAC7B,OAAOhP,EAAMr0G,MAAM8D,KAAM2C,aAMjC6rO,uBACQv3H,GAAQ,EAAItlF,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASyB,EAASoxB,GAC5F,IAAIkoL,EAAQx6M,EAAOg6M,EAAWS,EAAWC,EAAiBC,EAAiBj2F,EAAO2+E,EAAOuX,EAAaC,EAAaC,EAASC,EAAYC,EAExI,OAAOv9M,EAAc78B,QAAQm/B,MAAK,SAAmBoB,GACjD,OACI,OAAQA,EAAUvzB,KAAOuzB,EAAU13B,MAC/B,KAAK,EAkBD,OAXA+wO,EAASzuO,KAAK+6J,GAAGunE,YAAY,CAAC,yBAA0B,YACxDruM,EAAQw6M,EAAOjM,YAAY,yBAC3ByL,EAAYh6M,EAAMr4B,MAAM,QACxB8yO,EAAYzL,YAAYC,KAAK38K,GAC7BooL,EAAkB3B,EAAmBiB,EAAUjL,cAAc0L,EAAW,SAAS13O,MAAK,SAAUmsO,GAC5F,OAAOA,GAAUA,EAAOC,WAAW,MAEvCwL,EAAkB5B,EAAmBiB,EAAUjL,cAAc0L,EAAW,SAAS13O,MAAK,SAAUmsO,GAC5F,OAAOA,GAAUA,EAAOC,WAAW,MAEvChuM,EAAU13B,KAAO,GACV,EAAIi0B,EAAU5gC,SAAS4I,EAAW9E,QAAQ/B,IAAI,CAAC67O,EAAiBC,KAE3E,KAAK,EAYD,OAXAj2F,EAAQvjH,EAAUE,KAClBgiM,GAAQ,EAAIh5K,EAAgBzpD,SAAS8jJ,EAAO,GAC5Ck2F,EAAcvX,EAAM,GACpBwX,EAAcxX,EAAM,GACpByX,EAAU/uO,KAAK+6J,GAAGunE,YAAY,CAAC,yBAA0B,aACzD0M,EAAaD,EAAQvM,YAAY,yBACjCyM,EAAkBhM,YAAYiM,MAAM,CAAC3oL,EAAQsoL,GAAc,CAACtoL,EAAQuoL,IAGpEvzH,EAAS1mH,QAAQgD,IAAI,uDAA+D0uD,EAAS,oBAAsB,CAACA,EAAQsoL,GAAc,CAACtoL,EAAQuoL,IACnJ15M,EAAU13B,KAAO,IACV,EAAIi0B,EAAU5gC,SAASg8O,EAAaiC,EAAW/4K,OAAOg5K,KAEjE,KAAK,GACL,IAAK,MACD,OAAO75M,EAAUhC,UAG9B+B,EAAUn1B,UAGjB,SAA+BmkH,GAC3B,OAAOlN,EAAM/6G,MAAM8D,KAAM2C,aAWjCwsO,cAAe,WACX,IAAItpJ,EAAS7lF,KAEb,OAAO,IAAIrG,EAAW9E,SAAQ,SAAU9D,EAASC,GAC7CuqH,EAAS1mH,QAAQgD,IAAI,gCAAkCguF,EAAO60E,SAC9D,IAAIE,EAAM/0E,EAAO/hC,UAAU83G,eAAe/1E,EAAO60E,SAEjDE,EAAIM,UAAY,WACZ3/C,EAAS1mH,QAAQgD,IAAI,8BAAgCguF,EAAO60E,QAAU,kCAG1EE,EAAI7oK,QAAU,SAAUorG,GAIpBoe,EAAS1mH,QAAQyF,KAAK,4CAA8C6iG,EAAG7qG,OAAOV,OAC9Eb,KAGJ6pK,EAAIO,UAAY,WACZ5/C,EAAS1mH,QAAQgD,IAAI,+BAAiCguF,EAAO60E,SAC7D3pK,SAcZq+O,aAAc,SAAsBhhJ,QACnB17F,IAAT07F,IAAoBA,GAAO,GAE/B,IAAIj/F,EAAO6Q,KAAKqtO,iBAAiBgC,UACjC,OAAKlgP,EAAK6rN,UACN5sH,EAGOz0F,EAAW9E,QAAQ9D,QAAQghC,EAAQl9B,QAAQkgC,SAAS5lC,IAEpDwK,EAAW9E,QAAQ9D,QAAQ5B,GANVwK,EAAW9E,QAAQ9D,QAAQ,OAU3Du+O,kBAAmB,WACf,OAAO31O,EAAW9E,QAAQ9D,QAAQiP,KAAKqtO,iBAAiBiC,sBAG5DC,YAAa,SAAqBzB,GAC9B,IAAI/mJ,EAAS/mF,KAEb,OAAOrG,EAAW9E,QAAQ9D,UAAUiG,MAAK,WACrC+vF,EAAOsmJ,iBAAiBU,WAAWD,OAI3C0B,eAAgB,SAAwBC,GACpC,IAAI3B,EAAW9tO,KAAKqtO,iBAAiBgC,UAErC,OAAO11O,EAAW9E,QAAQ/B,IAAI,CAACkN,KAAK0vO,2BAA2BD,GAAazvO,KAAK2vO,oBAAoB7B,EAASjzB,aAAc76M,KAAK4vO,iBAAiB9B,EAAS9yB,UAAW8yB,EAAStwB,UAAWswB,EAASrwB,eAUvMmyB,iBAAkB,SAA0B50B,EAAWwC,EAAWC,GAC9D,IAAIz2H,EAAShnF,KAGb,OADAu7G,EAAS1mH,QAAQgD,IAAI,8BAA+BmjN,GAC7CrhN,EAAW9E,QAAQg7O,KAAI,WAC1B,IAAIr0E,EAAMx0E,EAAO+zE,GAAGunE,YAAY,CAAC,QAAS,aAQ1C,OAPY9mE,EAAIgnE,YAAY,QACtB15I,IAAI,CACNgnJ,QAAS,IACT90B,UAAWA,EACXwC,UAAWA,EACXC,WAAYA,IAETovB,EAAarxE,OAU5Bm0E,oBAAqB,SAA6B90B,GAC9C,IAAIk1B,EAAS/vO,KAEb,OAAOrG,EAAW9E,QAAQg7O,KAAI,WAG1B,IAFA,IAAIr0E,EAAMu0E,EAAOh1E,GAAGunE,YAAY,CAAC,eAAgB,aAC7CruM,EAAQunI,EAAIgnE,YAAY,eACnBhzO,EAAI,EAAGA,EAAIqrN,EAAYnrN,OAAQF,IACpCykC,EAAM60D,IAAI+xH,EAAYrrN,IAE1B,OAAOq9O,EAAarxE,OAY5Bk0E,2BAA4B,SAAoCM,GAC5D,IAAIC,EAASjwO,KAEb,OAAOrG,EAAW9E,QAAQg7O,KAAI,WAC1B,IAAIr0E,EAAMy0E,EAAOl1E,GAAGunE,YAAY,CAAC,SAAU,aACvCruM,EAAQunI,EAAIgnE,YAAY,SACxBnlO,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiB7K,EAErB,IACI,IAAK,IAAoD8K,EAAhDC,GAAY,EAAI9H,EAAcd,SAASm7O,KAAkB3yO,GAA6BG,EAAQC,EAAUC,QAAQC,MAAON,GAA4B,EAAM,CAC9J,IAAI6yO,EAAQ1yO,EAAM9J,MAElBugC,EAAM60D,IAAI,CACNv1D,OAAQ28M,EAAM,GACdp+O,MAAOo+O,EAAM,MAGvB,MAAO57O,GACLgJ,GAAoB,EACpBC,EAAiBjJ,EACnB,QACE,KACS+I,GAA6BI,EAAUI,QACxCJ,EAAUI,SAEhB,QACE,GAAIP,EACA,MAAMC,GAKlB,OAAOsvO,EAAarxE,OAU5B20E,sBAAuB,WACnB,IAAIC,EAASpwO,KAEb,OAAOrG,EAAW9E,QAAQg7O,KAAI,WAG1B,OAAOjD,EAFGwD,EAAOr1E,GAAGunE,YAAY,CAAC,SAAU,YAC3BE,YAAY,cACF9vO,GAAW,SAAUywO,GAC3C,MAAO,CAACA,EAAOzvO,MAAM6/B,OAAQ4vM,EAAOzvO,MAAM5B,cAStD87O,iBAAkB,WACd,IAAIyC,EAAUrwO,KAGd,OADAu7G,EAAS1mH,QAAQgD,IAAI,uDACd8B,EAAW9E,QAAQg7O,KAAI,WAG1B,OAAOjD,EAFGyD,EAAQt1E,GAAGunE,YAAY,CAAC,eAAgB,YAClCE,YAAY,oBACF9vO,GAAW,SAAUywO,GAC3C,OAAOA,EAAOzvO,SACfsD,MAAK,SAAUC,GAEd,OADAskH,EAAS1mH,QAAQgD,IAAI,mDACdZ,SASnB42O,cAAe,WACX,IAAIyC,EAAUtwO,KAGd,OADAu7G,EAAS1mH,QAAQgD,IAAI,oDACd8B,EAAW9E,QAAQg7O,KAAI,WAG1B,OAAOjD,EAFG0D,EAAQv1E,GAAGunE,YAAY,CAAC,QAAS,YAC3BE,YAAY,aACF9vO,GAAW,SAAUywO,GAC3C,OAAOA,EAAOzvO,SACfsD,MAAK,SAAU0yF,GAKd,OAJA6xB,EAAS1mH,QAAQgD,IAAI,gDACjB6xF,EAAQh6F,OAAS,GACjB6rH,EAAS1mH,QAAQyF,KAAK,6CAEnBovF,EAAQh6F,OAAS,EAAIg6F,EAAQ,GAAK,UAKrD6mJ,iBAAkB,WACd,IAAIC,EAAUxwO,KAEd,OAAOrG,EAAW9E,QAAQ9D,UAAUiG,MAAK,WAGrC,OAAO41O,EAFG4D,EAAQz1E,GAAGunE,YAAY,CAAC,kBAAmB,YACrCE,YAAY,uBACF9vO,GAAW,SAAUywO,GAC3C,GAAIA,EAAOzvO,OAASyvO,EAAOzvO,OAASyvO,EAAOzvO,MAAMwG,QAC7C,OAAOipO,EAAOzvO,MAAMwG,WAEzBlD,MAAK,SAAU0yF,GACd,OAAOA,EAAQ,UAK3B+mJ,oBACQxD,GAAQ,EAAIt7M,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAAS2mF,EAASngH,GAC5F,IAAIshK,EACJ,OAAO9pI,EAAc78B,QAAQm/B,MAAK,SAAmBwmF,GACjD,OACI,OAAQA,EAAU34G,KAAO24G,EAAU98G,MAC/B,KAAK,EASD,OARA89J,EAAMx7J,KAAK+6J,GAAGunE,YAAY,CAAC,kBAAmB,cAClCE,YAAY,kBAElB15I,IAAI,CACNgnJ,QAAS,IACT51O,QAASA,IAEbsgH,EAAU98G,KAAO,GACV,EAAIi0B,EAAU5gC,SAAS87O,EAAarxE,IAE/C,KAAK,EACL,IAAK,MACD,OAAOhhD,EAAUpnF,UAG9BinF,EAAUr6G,UAGjB,SAA4Bo6G,GACxB,OAAO6yH,EAAM/wO,MAAM8D,KAAM2C,cAOrCpS,EAAQsE,QAAUq4O,G,6BCjrBlBv9O,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAEIoL,EAAWlJ,EAFD,EAAQ,KAMlB2nD,EAAmB3nD,EAFD,EAAQ,OAM1BiJ,EAAmBjJ,EAFD,EAAQ,OAM1BwmJ,EAAcxmJ,EAFD,EAAQ,MAOzB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAIvF,SAAS2+K,EAAkBnnK,EAAQ/Y,GACjC,IAAInB,EAAU,4BAA8Bka,EAAS,uEACjD3X,GAAW,EAAIsnJ,EAAYvnJ,SAAShD,MAAO,CAACU,IAIhD,OAHA,EAAIsM,EAAiBhK,SAASC,GAAU,EAAIyoD,EAAiB1oD,SAASmL,OACtElL,EAAS2X,OAASA,EAClB3X,EAASpB,MAAQA,EACVoB,EAeT,SAAS4mK,EAAwBjvJ,GAC/B,IAAIla,EAAU,mCAAqCka,EAAS,uEACxD3X,GAAW,EAAIsnJ,EAAYvnJ,SAAShD,MAAO,CAACU,IAIhD,OAHA,EAAIsM,EAAiBhK,SAASC,GAAU,EAAIyoD,EAAiB1oD,SAASmL,OACtElL,EAAS2X,OAASA,EAClB3X,EAAStC,KAAO,0BACTsC,EAlCTvE,EAAQqjL,kBAAoBA,EAC5BrjL,EAAQmrK,wBAA0BA,EAelCkY,EAAkBC,qBAAuB,uBAEzCD,EAAkBhkL,WAAY,EAAIkP,EAASjK,SAAShD,MAAMjC,UAAW,CACnEqP,YAAa,CACXvL,MAAO7B,MACPwB,YAAY,EACZmC,UAAU,EACVD,cAAc,MAGlB,EAAIsJ,EAAiBhK,SAAS++K,EAAmB/hL,OAWjD6pK,EAAwBC,QAAU,UAElCD,EAAwB9rK,WAAY,EAAIkP,EAASjK,SAAShD,MAAMjC,UAAW,CACzEqP,YAAa,CACXvL,MAAO7B,MACPwB,YAAY,EACZmC,UAAU,EACVD,cAAc,MAGlB,EAAIsJ,EAAiBhK,SAAS6mK,EAAyB7pK,Q,gBCrEvD,IAAIsqD,EAAO,EAAQ,IACnB3rD,EAAOD,QAAU,SAAU+B,EAAQb,EAAK8gH,GACtC,IAAK,IAAIv+G,KAAOvC,EACV8gH,GAAQjgH,EAAO0B,GAAM1B,EAAO0B,GAAOvC,EAAIuC,GACtCmoD,EAAK7pD,EAAQ0B,EAAKvC,EAAIuC,IAC3B,OAAO1B,I,cCLX9B,EAAOD,QAAU,SAAU4gC,EAAIp8B,EAAavC,EAAMq1I,GAChD,KAAM12G,aAAcp8B,SAAoCrC,IAAnBm1I,GAAgCA,KAAkB12G,EACrF,MAAMn8B,UAAUxC,EAAO,2BACvB,OAAO2+B,I,gBCHX,IAAI7nB,EAAW,EAAQ,IACvB9Y,EAAOD,QAAU,SAAU4gC,EAAI0yD,GAC7B,IAAKv6E,EAAS6nB,IAAOA,EAAGj7B,KAAO2tF,EAAM,MAAM7uF,UAAU,0BAA4B6uF,EAAO,cACxF,OAAO1yD,I,6BCDTxhC,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEIumG,EAAWrkG,EAFD,EAAQ,KAMlBE,EAASF,EAFD,EAAQ,KAMhBC,EAAWD,EAFD,EAAQ,KAMlBD,EAAgBC,EAFA,EAAQ,KAMxBg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxB+D,EAAa/D,EAFD,EAAQ,IAMpB2lH,EAAW3lH,EAFD,EAAQ,KAMlBm8B,EAAUn8B,EAFD,EAAQ,KAIrB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAWvF,IAAI62O,EAAoB,WACpB,SAASA,KACL,EAAIl6M,EAAiB/8B,SAASmL,KAAM8rO,GAEpC9rO,KAAK0wO,yBAA2B,GAChC1wO,KAAK2wO,SAAW,KAGhB3wO,KAAK4wO,UAAY,GAEjB5wO,KAAK6wO,sBAAwB,GAE7B7wO,KAAK8wO,YAAc,KAEnB9wO,KAAK+wO,OAAS,GAEd/wO,KAAKgxO,uBAAyB,GA+kBlC,OArkBA,EAAIn/M,EAAch9B,SAASi3O,EAAmB,CAAC,CAC3C93O,IAAK,gBACLN,MAAO,WACH,OAAOiG,EAAW9E,QAAQ9D,YAc/B,CACCiD,IAAK,iCACLN,MAAO,SAAwCjB,GAC3C,IAAI4sD,EAAQr/C,KAER+7J,EAActpK,EAAQspK,YAE1B,OAAOpiK,EAAW9E,QAAQg7O,KAAI,WAE1B,IAAIprM,EAAW4a,EAAM4xL,2BAA2Bl1E,GAEhD,OAAIt3H,GAEA82E,EAAS1mH,QAAQgD,IAAI,4CAA+CkkK,EAAY1zD,QAAU,MAAQ0zD,EAAYl9C,WAAa,yBACpHp6E,IAKX82E,EAAS1mH,QAAQgD,IAAI,8BAAgCkkK,EAAY1zD,QAAU,MAAQ0zD,EAAYl9C,YAC/Fx/D,EAAMqxL,yBAAyB1gP,KAAKyC,GAC7BA,QAehB,CACCuB,IAAK,4BACLN,MAAO,SAAmCqoK,GACtC,OAAOpiK,EAAW9E,QAAQ9D,QAAQiP,KAAKixO,2BAA2Bl1E,MAevE,CACC/nK,IAAK,6BACLN,MAAO,SAAoCqoK,GACvC,IAAI1+J,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiB7K,EAErB,IACI,IAAK,IAA2E8K,EAAvEC,GAAY,EAAI9H,EAAcd,SAASmL,KAAK0wO,4BAAoCrzO,GAA6BG,EAAQC,EAAUC,QAAQC,MAAON,GAA4B,EAAM,CACrL,IAAIonC,EAAWjnC,EAAM9J,MAErB,GAAIq+B,EAAQl9B,QAAQo1F,YAAYxlD,EAASs3H,YAAaA,GAClD,OAAOt3H,GAGjB,MAAOnwC,GACLgJ,GAAoB,EACpBC,EAAiBjJ,EACnB,QACE,KACS+I,GAA6BI,EAAUI,QACxCJ,EAAUI,SAEhB,QACE,GAAIP,EACA,MAAMC,GAKlB,OAAO,OAaZ,CACCvJ,IAAK,mCACLN,MAAO,SAA0CuoK,GAC7C,IAAIl2G,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBvzD,EAEtB,IACI,IAAK,IAA4EwzD,EAAxEC,GAAa,EAAIxwD,EAAcd,SAASmL,KAAK0wO,4BAAqC3qL,GAA8BG,EAASC,EAAWzoD,QAAQC,MAAOooD,GAA6B,EAAM,CAC3L,IAAI60G,EAAM10G,EAAOxyD,MACbg0D,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBl1D,EAEtB,IACI,IAAK,IAA2Dm1D,EAAvDC,GAAa,EAAInyD,EAAcd,SAASonK,KAAyBv0G,GAA8BG,EAASC,EAAWpqD,QAAQC,MAAO+pD,GAA6B,EAAM,CAC1K,IAAI7H,EAAQgI,EAAOn0D,MAEnB,GAAIknK,EAAI/6G,QAAUA,EACd,OAAOlmD,EAAW9E,QAAQ9D,QAAQ6pK,IAG5C,MAAOtmK,GACLqzD,GAAqB,EACrBC,EAAkBtzD,EACpB,QACE,KACSozD,GAA8BI,EAAWjqD,QAC1CiqD,EAAWjqD,SAEjB,QACE,GAAI8pD,EACA,MAAMC,KAKxB,MAAOtzD,GACL0xD,GAAqB,EACrBC,EAAkB3xD,EACpB,QACE,KACSyxD,GAA8BI,EAAWtoD,QAC1CsoD,EAAWtoD,SAEjB,QACE,GAAImoD,EACA,MAAMC,GAKlB,OAAOtsD,EAAW9E,QAAQ9D,QAAQ,QAEvC,CACCiD,IAAK,qCACLN,MAAO,SAA4C6/B,EAAQqC,EAAUqmI,GACjE,IAAIvyE,EAAU,GAEV3/B,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBv3D,EAEtB,IACI,IAAK,IAA4Ew3D,EAAxEC,GAAa,EAAIx0D,EAAcd,SAASmL,KAAK0wO,4BAAqC3mL,GAA8BG,EAASC,EAAWzsD,QAAQC,MAAOosD,GAA6B,EAAM,CAC3L,IAAI6wG,EAAM1wG,EAAOx2D,MACb82D,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBh4D,EAEtB,IACI,IAAK,IAA2Di4D,EAAvDC,GAAa,EAAIj1D,EAAcd,SAASonK,KAAyBzxG,GAA8BG,EAASC,EAAWltD,QAAQC,MAAO6sD,GAA6B,EAAM,CAC1K,IAAI3K,EAAQ8K,EAAOj3D,MAEfknK,EAAI/6G,QAAUA,GAAS+6G,EAAI57C,WAAWx9E,SAAS,CAAEjO,OAAQA,EAAQqC,SAAUA,KAC3E8zD,EAAQ15F,KAAK4qK,IAGvB,MAAOtmK,GACLm2D,GAAqB,EACrBC,EAAkBp2D,EACpB,QACE,KACSk2D,GAA8BI,EAAW/sD,QAC1C+sD,EAAW/sD,SAEjB,QACE,GAAI4sD,EACA,MAAMC,KAKxB,MAAOp2D,GACL01D,GAAqB,EACrBC,EAAkB31D,EACpB,QACE,KACSy1D,GAA8BI,EAAWtsD,QAC1CssD,EAAWtsD,SAEjB,QACE,GAAImsD,EACA,MAAMC,GAKlB,OAAOtwD,EAAW9E,QAAQ9D,QAAQ24F,KAgBvC,CACC11F,IAAK,+BACLN,MAAO,SAAsC0oK,EAAWC,EAAeC,GACnE,IAAIvxG,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBv4D,EAEtB,IACI,IAAK,IAA4Ew4D,EAAxEC,GAAa,EAAIx1D,EAAcd,SAASmL,KAAK0wO,4BAAqC3lL,GAA8BG,EAASC,EAAWztD,QAAQC,MAAOotD,GAA6B,EAAM,CAC3L,IAAI6vG,EAAM1vG,EAAOx3D,MAEjB,GAAIknK,EAAIwB,YAAcA,EAItB,OAAIxB,EAAI/6G,OAASw8G,GACb9gD,EAAS1mH,QAAQyF,KAAK,uCAAyC+hK,EAAgB,iCAAyCzB,EAAI/6G,OACrHlmD,EAAW9E,QAAQ9D,QAAQ,SAEtC,EAAI8E,EAAShB,SAAS+lK,EAAK0B,GACpB3iK,EAAW9E,QAAQ9D,QAAQ6pK,KAExC,MAAOtmK,GACL02D,GAAqB,EACrBC,EAAkB32D,EACpB,QACE,KACSy2D,GAA8BI,EAAWttD,QAC1CstD,EAAWttD,SAEjB,QACE,GAAImtD,EACA,MAAMC,GAKlB,OAAOtxD,EAAW9E,QAAQ9D,QAAQ,QAavC,CACCiD,IAAK,+BACLN,MAAO,SAAsC0oK,EAAWC,GACpD,IAAK,IAAI7sK,EAAI,EAAGA,EAAIwQ,KAAK0wO,yBAAyBhhP,OAAQF,IAAK,CAC3D,IAAIorK,EAAM56J,KAAK0wO,yBAAyBlhP,GAExC,GAAIorK,EAAIwB,YAAcA,EAItB,OAAIxB,EAAI/6G,OAASw8G,GACb9gD,EAAS1mH,QAAQyF,KAAK,2CAA6CsgK,EAAI/6G,MAAQ,cAAsBw8G,EAAgB,KAC9G1iK,EAAW9E,QAAQ9D,QAAQ,QAGtCiP,KAAK0wO,yBAAyBr0O,OAAO7M,EAAG,GACjCmK,EAAW9E,QAAQ9D,QAAQ6pK,IAGtC,OAAOjhK,EAAW9E,QAAQ9D,QAAQ,QAKvC,CACCiD,IAAK,aACLN,MAAO,SAAoB8nK,EAAKxuG,GAC5BA,EAAKhtD,KAAK2wO,YAEf,CACC38O,IAAK,eACLN,MAAO,SAAsB8nK,EAAKkB,GAC9B18J,KAAK2wO,SAAWj0E,IAKrB,CACC1oK,IAAK,wBACLN,MAAO,SAA+B8nK,EAAKxuG,GACvC,OAAO,EAAIl3D,EAAOjB,SAASmL,KAAK4wO,WAAWlhP,SAEhD,CACCsE,IAAK,qBACLN,MAAO,SAA4BmpK,EAAWC,EAAWtB,EAAKxuG,GAE1DA,GADqBhtD,KAAK4wO,UAAU/zE,IAAc,IAC9BC,IAAc,QAEvC,CACC9oK,IAAK,sBACLN,MAAO,SAA6BmpK,EAAWrB,EAAKxuG,GAChDA,EAAKhtD,KAAK4wO,UAAU/zE,IAAc,MAEvC,CACC7oK,IAAK,yBACLN,MAAO,SAAgC8nK,EAAKxuG,GACxC,IAAI++J,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBv5N,EAEtB,IACI,IAAK,IAAoFw5N,EAAhFC,GAAa,EAAIx2N,EAAcd,UAAS,EAAIolG,EAASplG,SAASmL,KAAK4wO,cAAuB7kB,GAA8BG,EAASC,EAAWzuN,QAAQC,MAAOouN,GAA6B,EAAM,CACnM,IAAImlB,EAAiBhlB,EAAOx4N,MACxBy9O,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkB3+O,EAEtB,IACI,IAAK,IAAoF4+O,EAAhFC,GAAa,EAAI57O,EAAcd,UAAS,EAAIolG,EAASplG,SAASq8O,MAA4BC,GAA8BG,EAASC,EAAW7zO,QAAQC,MAAOwzO,GAA6B,EAAM,CAGnMnkL,EAFWskL,EAAO59O,QAIxB,MAAOY,GACL88O,GAAqB,EACrBC,EAAkB/8O,EACpB,QACE,KACS68O,GAA8BI,EAAW1zO,QAC1C0zO,EAAW1zO,SAEjB,QACE,GAAIuzO,EACA,MAAMC,KAKxB,MAAO/8O,GACL03N,GAAqB,EACrBC,EAAkB33N,EACpB,QACE,KACSy3N,GAA8BI,EAAWtuN,QAC1CsuN,EAAWtuN,SAEjB,QACE,GAAImuN,EACA,MAAMC,MAKvB,CACCj4N,IAAK,uBACLN,MAAO,SAA8BmpK,EAAWC,EAAWI,EAAa1B,GACpE,IAAI01E,EAAiBlxO,KAAK4wO,UAAU/zE,QACbnqK,IAAnBw+O,IACAA,EAAiB,GACjBlxO,KAAK4wO,UAAU/zE,GAAaq0E,GAEhCA,EAAep0E,GAAaI,IAKjC,CACClpK,IAAK,iCACLN,MAAO,SAAwCsqH,EAAqB8+C,EAAWtB,EAAKxuG,GAChFA,EAAKhtD,KAAK6wO,sBAAsB7yH,EAAsB,IAAM8+C,IAAc,QAE/E,CACC9oK,IAAK,qCACLN,MAAO,SAA4C8nK,EAAKxuG,GACpD,IAAIwkL,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBh/O,EAEtB,IACI,IAAK,IAA8Fi/O,EAA1FC,GAAa,EAAIj8O,EAAcd,UAAS,EAAIiB,EAAOjB,SAASmL,KAAK6wO,0BAAmCW,GAA8BG,EAASC,EAAWl0O,QAAQC,MAAO6zO,GAA6B,EAAM,CAC7M,IAAIx9O,EAAM29O,EAAOj+O,MAOjBs5D,EAAK,CACD6kL,UAAW79O,EAAIuF,OAAO,EAAG,IACzBujK,UAAW9oK,EAAIuF,OAAO,IACtB8jK,YAAar9J,KAAK6wO,sBAAsB78O,MAGlD,MAAOM,GACLm9O,GAAqB,EACrBC,EAAkBp9O,EACpB,QACE,KACSk9O,GAA8BI,EAAW/zO,QAC1C+zO,EAAW/zO,SAEjB,QACE,GAAI4zO,EACA,MAAMC,GAKlB1kL,EAAK,QAEV,CACCh5D,IAAK,iCACLN,MAAO,SAAwCsqH,EAAqB8+C,EAAWO,EAAa7B,GACxF,IAAInhK,EAAI2jH,EAAsB,IAAM8+C,OACEpqK,IAAlCsN,KAAK6wO,sBAAsBx2O,KAC3B2F,KAAK6wO,sBAAsBx2O,GAAKgjK,KAGzC,CACCrpK,IAAK,mCACLN,MAAO,SAA0CsqH,EAAqB8+C,EAAWO,EAAa7B,GAC1Fx7J,KAAK6wO,sBAAsB7yH,EAAsB,IAAM8+C,GAAaO,IAKzE,CACCrpK,IAAK,wBACLN,MAAO,SAA+B8nK,EAAKxuG,GACvCA,EAAKhtD,KAAK8wO,eAEf,CACC98O,IAAK,0BACLN,MAAO,SAAiC8pK,EAAYhC,GAChDx7J,KAAK8wO,YAActzE,IAKxB,CACCxpK,IAAK,oBACLN,MAAO,SAA2B6yD,EAAQo3G,EAAUnC,GAChDx7J,KAAK+wO,OAAOxqL,GAAUo3G,IAE3B,CACC3pK,IAAK,mBACLN,MAAO,SAA0B8nK,EAAKxuG,GAClCA,EAAKhtD,KAAK+wO,UAEf,CACC/8O,IAAK,2BACLN,MAAO,SAAkCkpB,GACrC,IAAIohJ,EAAW,GACf,IAAK,IAAI8zE,KAAW9xO,KAAKgxO,uBACrB,GAAIhxO,KAAK6wO,sBAAsBiB,KAC3B9zE,EAAShuK,KAAK,CACV6hP,UAAWC,EAAQv4O,OAAO,EAAG,IAC7BujK,UAAWg1E,EAAQv4O,OAAO,IAC1B8jK,YAAar9J,KAAK6wO,sBAAsBiB,KAExCl1N,GAASk1N,EAAQpiP,QAAUktB,GAC3B,MAIZ,OAAOjjB,EAAW9E,QAAQ9D,QAAQitK,KAEvC,CACChqK,IAAK,6BACLN,MAAO,WACH,OAAOiG,EAAW9E,QAAQ9D,SAAQ,EAAI+E,EAAOjB,SAASmL,KAAKgxO,wBAAwBthP,UAExF,CACCsE,IAAK,8BACLN,MAAO,SAAqCsqK,GACxC,IAAI+zE,GAA8B,EAC9BC,GAAsB,EACtBC,OAAmBv/O,EAEvB,IACI,IAAK,IAAwDw/O,EAApDC,GAAc,EAAIx8O,EAAcd,SAASmpK,KAAsB+zE,GAA+BG,EAAUC,EAAYz0O,QAAQC,MAAOo0O,GAA8B,EAAM,CAC5K,IAAID,EAAUI,EAAQx+O,MAElB0+O,EAAaN,EAAQD,UAAY,IAAMC,EAAQh1E,iBAC5C98J,KAAKgxO,uBAAuBoB,IAEzC,MAAO99O,GACL09O,GAAsB,EACtBC,EAAmB39O,EACrB,QACE,KACSy9O,GAA+BI,EAAYt0O,QAC5Cs0O,EAAYt0O,SAElB,QACE,GAAIm0O,EACA,MAAMC,GAKlB,OAAOt4O,EAAW9E,QAAQ9D,YAE/B,CACCiD,IAAK,4BACLN,MAAO,SAAmCsqK,GACtC,IAAIq0E,GAA8B,EAC9BC,GAAsB,EACtBC,OAAmB7/O,EAEvB,IACI,IAAK,IAAwD8/O,EAApDC,GAAc,EAAI98O,EAAcd,SAASmpK,KAAsBq0E,GAA+BG,EAAUC,EAAY/0O,QAAQC,MAAO00O,GAA8B,EAAM,CAC5K,IAAIP,EAAUU,EAAQ9+O,MAElB0+O,EAAaN,EAAQD,UAAY,IAAMC,EAAQh1E,UACnD98J,KAAKgxO,uBAAuBoB,IAAc,GAEhD,MAAO99O,GACLg+O,GAAsB,EACtBC,EAAmBj+O,EACrB,QACE,KACS+9O,GAA+BI,EAAY50O,QAC5C40O,EAAY50O,SAElB,QACE,GAAIy0O,EACA,MAAMC,GAKlB,OAAO54O,EAAW9E,QAAQ9D,YAK/B,CACCiD,IAAK,QACLN,MAAO,SAAeE,EAAMuqK,EAAQnxG,GAChC,OAAOrzD,EAAW9E,QAAQ9D,QAAQi8D,EAAK,WAGxC8+K,EA/lBa,GAinBxBv7O,EAAQsE,QAAUi3O,G,8BCtqBlB,YAuBAn8O,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAEXnD,EAAQ8lC,yBAAsB3jC,EAE9B,IA4CIggP,EAIIpb,EA9CJ1lM,EAAmBh8B,EAFA,EAAQ,IAM3B64K,EAAQ74K,EAFD,EAAQ,KAMfwuD,EAAcxuD,EAFD,EAAQ,KAMrBwoD,EAAsBxoD,EAFA,EAAQ,KAI9B+7B,EAAY,EAAQ,GAEpBh4B,EAAa/D,EAAuB+7B,GAIpC97B,EAAWD,EAFD,EAAQ,KAMlBE,EAASF,EAFD,EAAQ,KAMhB87B,EAAgB97B,EAFD,EAAQ,KAMvBD,EAAgBC,EAFA,EAAQ,KAMxB68M,EAAQ78M,EAFD,EAAQ,MAMfs1G,EAAmBt1G,EAFA,EAAQ,KAO3B+8O,GACIrb,GAAQ,EAAI3lM,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASk/M,EAASt0H,GAC5F,IAAIu0H,EAAaC,EAAaniP,EAAUixK,EAAOvnK,EAAGmwF,EAClD,OAAO94D,EAAc78B,QAAQm/B,MAAK,SAAmB++M,GACjD,OACI,OAAQA,EAAUlxO,KAAOkxO,EAAUr1O,MAC/B,KAAK,EAED,OADAq1O,EAAUr1O,KAAO,GACV,EAAIi0B,EAAU5gC,SAASutH,EAAO00H,WAAWC,kBAEpD,KAAK,EAMD,IAAKrxE,KALLixE,EAAcE,EAAUz9M,KACxBw9M,EAAc,GACdniP,EAAW,GAGGkiP,EAAYK,WAClBL,EAAYK,WAAWrjP,eAAe+xK,KACtCvnK,EAAI,CACArG,IAAK6+O,EAAYK,WAAWtxE,IAGhCkxE,EAAY,qBAAuBlxE,GAASvnK,EAC5C1J,EAASX,KAAKsuH,EAAO60H,YAAY94O,KAKzC,OADA04O,EAAUr1O,KAAO,GACV,EAAIi0B,EAAU5gC,SAAS4I,EAAW9E,QAAQ/B,IAAInC,IAEzD,KAAK,EAED,OADAoiP,EAAUr1O,KAAO,IACV,EAAIi0B,EAAU5gC,SAASutH,EAAO80H,UAAUC,kBAAkB,CAC7D7xE,cAAesxE,GAChB,CAGC7zH,UAAWX,EAAOg1H,aAG1B,KAAK,GAGD,OAFA9oJ,EAAMuoJ,EAAUz9M,KAChBy9M,EAAUr1O,KAAO,IACV,EAAIi0B,EAAU5gC,SAASutH,EAAO00H,WAAWO,uBAEpD,KAAK,GACD,OAAOR,EAAU5+M,OAAO,SAAUq2D,GAEtC,KAAK,GACL,IAAK,MACD,OAAOuoJ,EAAU3/M,UAG9Bw/M,EAAU5yO,UAGV,SAA4BmkH,GAC/B,OAAOmzG,EAAMp7N,MAAM8D,KAAM2C,aAejCpS,EAAQijP,kBAmDR,WACI,OAAO78M,QAAQzoB,EAAOulO,MAnD1BljP,EAAQsE,QAAU6+O,GAElB,IAAI/mJ,EAAU,EAAQ,IAIlB4uB,EAAW3lH,EAFD,EAAQ,KAIlB+9O,EAAgB,EAAQ,KAIxBC,EAAkCh+O,EAFD,EAAQ,OAMzCi+O,EAAyBj+O,EAFD,EAAQ,MAIhCk+O,EAAU,EAAQ,MAIlBC,EAAQn+O,EAFD,EAAQ,OAIfgjF,EAAS,EAAQ,KAErB,SAAShjF,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvF,IAAIsqK,EAAc,EAAQ,KAEtBC,EAAQ,EAAQ,IAChBw0E,EAAY,EAAQ,MACpBC,EAAS,EAAQ,KACjBC,EAAa,EAAQ,MACrBC,EAAa,EAAQ,KACrBC,EAAqBD,EAAWC,mBAChCC,EAAa,EAAQ,MAAgBx/O,QAGrCy/O,GAA8B5B,EAAwB,IAAI,EAAIxnI,EAAiBr2G,SAAS69O,EAAuBoB,EAAQS,WAAW5hI,KAAMmhI,EAAQS,aAAa,EAAIrpI,EAAiBr2G,SAAS69O,EAAuBoB,EAAQU,WAAW7hI,KAAMmhI,EAAQU,aAAa,EAAItpI,EAAiBr2G,SAAS69O,EAAuBqB,EAAMl/O,QAAQ89G,KAAMohI,EAAMl/O,SAAU69O,GAKnUniP,EAAQ8lC,oBAAsB,CACpDo+M,aAAcX,EAAQS,WAAW5hI,KACjC+hI,aAAcZ,EAAQU,WAAW7hI,KACjCr8E,IAAKy9M,EAAMl/O,QAAQ89G,MAOvB,IA6RQpC,EAmEAooC,EA0aAs0F,EAmJA0H,EAuIAC,EAoTAC,EAiIAC,EAiJAC,EAoHAC,EAyGAC,EAkEAC,EAyCAC,EA0BAC,EAqCAC,EAqhBAC,EA8RAC,EAqIAC,EAyEAC,EAj9FR,SAAS/B,GAAOhzE,EAAUg1E,EAAcniN,EAAQqC,EAAU+/M,EAAanJ,EAAa1lG,EAAUzwG,GAS1F,GARAr2B,KAAKozO,UAAY1yE,EACjB1gK,KAAK41O,cAAgBF,EACrB11O,KAAKkhK,QAAU3tI,EACfvzB,KAAKszO,UAAY19M,EACjB51B,KAAK61O,aAAeF,EACpB31O,KAAK81O,aAAetJ,EACpBxsO,KAAK4mI,UAAYE,EACjB9mI,KAAK+1O,qBAAuB,IAAItjC,EAAM59M,QAClCwhC,EAAqB,CACrB,IAAIh5B,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiB7K,EAErB,IACI,IAAK,IAAiE8K,EAA7DC,GAAY,EAAI9H,EAAcd,SAASwhC,KAA+Bh5B,GAA6BG,EAAQC,EAAUC,QAAQC,MAAON,GAA4B,EAAM,CAC3K,IAAIT,EAASY,EAAM9J,MAEG,iBAAXkJ,EACH03O,EAA2B13O,IAC3BoD,KAAK+1O,qBAAqBx9N,IAAI3b,EAAQ03O,EAA2B13O,IAE9DA,EAAO+1G,MACd3yG,KAAK+1O,qBAAqBx9N,IAAI3b,EAAO+1G,KAAM/1G,IAGrD,MAAOtI,GACLgJ,GAAoB,EACpBC,EAAiBjJ,EACnB,QACE,KACS+I,GAA6BI,EAAUI,QACxCJ,EAAUI,SAEhB,QACE,GAAIP,EACA,MAAMC,IAStByC,KAAKg2O,WAAa,KAClBh2O,KAAKi2O,UAAY,KACjBj2O,KAAKk2O,mBAAoB,EACzBl2O,KAAKm2O,iBAAkB,EAEvBn2O,KAAKgzO,WAAa,IAAIgB,EAAUxH,GAChCxsO,KAAKo2O,YAAc,IAAI/B,EAAW3zE,EAAU8rE,EAAaxsO,KAAKgzO,YAI9DhzO,KAAKq2O,qBAAuB,KAC5Br2O,KAAKs2O,4BAA6B,EAGlCt2O,KAAKu2O,gBAAkB,GAGvBv2O,KAAKw2O,gBAAkB,GAEvBx2O,KAAKy2O,qBAAuBj3E,EAAMz2J,KAAKmrO,EAAWwC,oBAElD12O,KAAK22O,YAAc,GAEnB32O,KAAK42O,mCAAoC,EAEzC52O,KAAK62O,+BAAiC,IAAIjD,EAAgC/+O,QAAQ6rK,EAAU1gK,KAAKszO,UAAWtzO,KAAK81O,cAIjH91O,KAAK82O,yBAA2B,GAChC92O,KAAK+2O,qCAAuC,GAE5C/2O,KAAKg3O,4BAA6B,EAIlCh3O,KAAKi3O,kBAAmB,EAKxBj3O,KAAKk3O,yBAA2B,GAShCl3O,KAAKm3O,sBAAwB,GAE7Bn3O,KAAKo3O,0BAA4B,IAAI3kC,EAAM59M,QA4e/C,SAASwiP,GAAwB/4H,GAE7B,IAMIg5H,EAAkB,EAEtB,IAAIh5H,EAAOg4H,2BAAX,CAIA,IAAI5wH,EAAM9+D,KAAK8+D,MACf,KAAoC,OAAhCpH,EAAO+3H,sBAAiC3wH,EAAMpH,EAAO+3H,qBAbtC,KAanB,CAKA/3H,EAAO+3H,qBAAuB3wH,EAe9B,IAAI6xH,EAAiBj5H,EAAO00H,WAAWwE,yBAOnCC,EAAW5xO,KAAKi8B,MAAMy1M,EAAiB,GAwB3Cj5H,EAAOg4H,4BAA6B,EACpC38O,EAAW9E,QAAQ9D,UAAUiG,MAAK,WAC9B,YAAgCtE,IAA5B4rH,EAAOo5H,iBAGA/9O,EAAW9E,QAAQ9D,QAAQutH,EAAOo5H,kBAGtCp5H,EAAO80H,UAAUC,kBAAkB,GAAI,CAC1Cp0H,UAAWX,EAAOg1H,YACnBt8O,MAAK,SAAUwzF,GACd,OAAOA,EAAImtJ,oBAAoBC,mBAAqB,QAEzD5gP,MAAK,SAAU6gP,GAKd,OAxCJ,SAASC,EAAWD,GAChB,GAAIJ,GAAYI,EAEZ,OAAOl+O,EAAW9E,QAAQ9D,UAG9B,IAAIgnP,EAAelyO,KAAKo1B,IAAIw8M,EAAWI,EAAUP,GAGjD,OAAOh5H,EAAO00H,WAAWgF,oBAAoBD,GAAc/gP,MAAK,WAC5D,OAAO27O,EAAmBr0H,MAC3BtnH,MAAK,SAAUwzF,GACd,GAAIA,EAAImtJ,qBAAuBntJ,EAAImtJ,oBAAoBC,kBAGnD,OAAOE,EAAWttJ,EAAImtJ,oBAAoBC,mBAE1C,MAAM,IAAI/lP,MAAM,yFAuBjBimP,CAAWD,MACnBr4L,OAAM,SAAU9uD,GACf6qH,EAAS1mH,QAAQjD,MAAM,gCAAiClB,EAAE8R,OAAS9R,MACpE88G,SAAQ,WAGP8Q,EAAOo5H,sBAAmBhlP,EAC1B4rH,EAAOg4H,4BAA6B,KACrC34O,SAtkBP6hK,EAAMvsJ,SAASygO,GAAQ/mJ,EAAQD,cAO/BgnJ,GAAO9jP,UAAUmQ,MAAO,EAAI4xB,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASC,IAC/F,IAAIskN,EAAWr5E,EACf,OAAOltI,EAAc78B,QAAQm/B,MAAK,SAAkB7F,GAChD,OACI,OAAQA,EAAStsB,KAAOssB,EAASzwB,MAC7B,KAAK,EAGD,OAFA69G,EAAS1mH,QAAQgD,IAAI,+BACrBs2B,EAASzwB,KAAO,GACT,EAAIi0B,EAAU5gC,SAASmd,EAAOulO,IAAI1zO,QAE7C,KAAK,EAGD,OAFAw7G,EAAS1mH,QAAQgD,IAAI,sCACrBs2B,EAASzwB,KAAO,GACT,EAAIi0B,EAAU5gC,SAASiP,KAAKgzO,WAAWjzO,QAElD,KAAK,EAGD,OAFAw7G,EAAS1mH,QAAQgD,IAAI,kCACrBs2B,EAASzwB,KAAO,GACT,EAAIi0B,EAAU5gC,SAASiP,KAAKo2O,YAAY/3O,QAEnD,KAAK,EAGD2B,KAAK22O,YAAY,WAAa32O,KAAKszO,WAAatzO,KAAKgzO,WAAW3yE,iBAChErgK,KAAK22O,YAAY,cAAgB32O,KAAKszO,WAAatzO,KAAKgzO,WAAWkF,oBAEnE38H,EAAS1mH,QAAQgD,IAAI,oCACrBogP,EAAYj4O,KAAKo2O,YAAY+B,2BAA2Bn4O,KAAKkhK,YAIzD+2E,EAAY,IAGXA,EAAUj4O,KAAKszO,aAEhB/3H,EAAS1mH,QAAQgD,IAAI,8CACrB+mK,EAAa,CACT71J,KAAM/I,KAAK22O,YACXzC,WAAYl0O,KAAKy2O,qBACjB2B,SAAUhE,EAAmBiE,SAC7BC,OAAO,GAIXL,EAAUj4O,KAAKszO,WAAa10E,EAC5B5+J,KAAKo2O,YAAYmC,oBAAoBv4O,KAAKkhK,QAAS+2E,GACnDj4O,KAAKo2O,YAAYoC,eAGrBj9H,EAAS1mH,QAAQgD,IAAI,sCACrBmI,KAAKy4O,0BAET,KAAK,GACL,IAAK,MACD,OAAOtqN,EAASiF,UAG7BO,EAAS3zB,UAShB0zO,GAAO9jP,UAAU6oP,yBAA0B,EAAI9mN,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASyB,IAClH,IAAI6gN,EAAY0C,EAChB,OAAOhnN,EAAc78B,QAAQm/B,MAAK,SAAmBoB,GACjD,OACI,OAAQA,EAAUvzB,KAAOuzB,EAAU13B,MAC/B,KAAK,EAGD,GAFA69G,EAAS1mH,QAAQgD,IAAI,kCAEhBmI,KAAKozO,UAAUn9M,UAAW,CAC3Bb,EAAU13B,KAAO,EACjB,MAKJ,OAFA69G,EAAS1mH,QAAQgD,IAAI,iDACrBmI,KAAKk2O,mBAAoB,EAClB9gN,EAAUjB,OAAO,SAAU,MAEtC,KAAK,EAID,OAHA6hN,OAAa,EACb5gN,EAAUvzB,KAAO,EACjBuzB,EAAU13B,KAAO,GACV,EAAIi0B,EAAU5gC,SAASiP,KAAKozO,UAAUuF,uBAEjD,KAAK,EACD3C,EAAa5gN,EAAUE,KACvBF,EAAU13B,KAAO,GACjB,MAEJ,KAAK,GASD,OARA03B,EAAUvzB,KAAO,GACjBuzB,EAAUhB,GAAKgB,EAAiB,MAAE,GAElCmmF,EAAS1mH,QAAQgD,IAAI,uCAAwCu9B,EAAUhB,IACnEgB,EAAUhB,GAAGm5E,WAAa,KAAQ,IAElCvtG,KAAKk2O,mBAAoB,GAEtB9gN,EAAUjB,OAAO,SAAU,MAEtC,KAAK,GAID,OAHAn0B,KAAKk2O,mBAAoB,EAEzB9gN,EAAU13B,KAAO,IACV,EAAIi0B,EAAU5gC,SAASiP,KAAK44O,mBAAmB5C,IAE1D,KAAK,GAuBD,OAtBA0C,EAAYtjN,EAAUE,MAGRujN,SAAW74O,KAAKg2O,YAC1Bz6H,EAAS1mH,QAAQgD,IAAI,4BAA8Bm+O,EAAWhyN,QAAU,0BACxEhkB,KAAKozO,UAAU0F,gBAAgB9C,KACvB0C,EAAUG,QAAU74O,KAAKg2O,YACjCz6H,EAAS1mH,QAAQgD,IAAI,8CACrBmI,KAAKozO,UAAU2F,oBACPL,EAAUG,QAAW74O,KAAKg2O,WAE3B0C,EAAUG,QAAU74O,KAAKg2O,aAE5BA,EAAWhyN,UAAYhkB,KAAKg2O,WAAWhyN,SACvCu3F,EAAS1mH,QAAQgD,IAAI,qBAAuBmI,KAAKg2O,WAAWhyN,QAAU,sBAA6BgyN,EAAWhyN,QAAU,gBACxHhkB,KAAKozO,UAAU2F,mBACf/4O,KAAKozO,UAAU0F,gBAAgB9C,IAE/Bz6H,EAAS1mH,QAAQgD,IAAI,kBAAoBm+O,EAAWhyN,QAAU,mBARlEu3F,EAAS1mH,QAAQgD,IAAI,iDAYlBu9B,EAAUjB,OAAO,SAAU,CAAE6hN,WAAYA,EAAY0C,UAAWA,IAE3E,KAAK,GACL,IAAK,MACD,OAAOtjN,EAAUhC,UAG9B+B,EAAUn1B,KAAM,CAAC,CAAC,EAAG,UAG5B0zO,GAAO9jP,UAAUopP,wBACTzoI,GAAQ,EAAI5+E,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAAS2mF,EAAS4+H,GAC5F,OAAOvnN,EAAc78B,QAAQm/B,MAAK,SAAmBwmF,GACjD,OACI,OAAQA,EAAU34G,KAAO24G,EAAU98G,MAC/B,KAAK,EAKD,OAFAsC,KAAK41O,cAAcsD,4BAA4BD,GAC/Cz+H,EAAU98G,KAAO,GACV,EAAIi0B,EAAU5gC,SAASiP,KAAKm5O,kBAEvC,KAAK,EACL,IAAK,MACD,OAAO3+H,EAAUpnF,UAG9BinF,EAAUr6G,UAGV,SAAU0rG,GACb,OAAO6E,EAAMr0G,MAAM8D,KAAM2C,aAajC+wO,GAAO9jP,UAAUupP,gBAAiB,EAAIxnN,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAAS8+I,IACzG,IAAI4mE,EACJ,OAAO1nN,EAAc78B,QAAQm/B,MAAK,SAAmB8qI,GACjD,OACI,OAAQA,EAAUj9J,KAAOi9J,EAAUphK,MAC/B,KAAK,EAGD,OAFAsC,KAAKk2O,mBAAoB,EACzBp3E,EAAUphK,KAAO,GACV,EAAIi0B,EAAU5gC,SAASiP,KAAKy4O,2BAEvC,KAAK,EAED,OADAW,EAAat6E,EAAUxpI,KAChBwpI,EAAU3qI,OAAO,SAAUilN,GAEtC,KAAK,EACL,IAAK,MACD,OAAOt6E,EAAU1rI,UAG9Bo/I,EAAUxyK,UAcjB0zO,GAAO9jP,UAAUgpP,oBACTjgG,GAAQ,EAAIhnH,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAAS2lN,EAASrD,GAC5F,IAAIp2O,EAAK05O,EAAeC,EAAQxzL,EAA4BC,EAAoBC,EAAiBE,EAAYD,EAAQ07G,EAAO43E,EAAYC,EAAS/0F,EAEjJ,OAAOhzH,EAAc78B,QAAQm/B,MAAK,SAAmB0lN,GACjD,OACI,OAAQA,EAAU73O,KAAO63O,EAAUh8O,MAC/B,KAAK,EAOD,GANAkC,EAAM,CACFi5O,QAAQ,EACRc,iBAAiB,EACjBC,KAAM,IAGH5D,GAAeA,EAAWp3H,WAAco3H,EAAW6D,WAAc7D,EAAW6D,UAAUC,YAAe9D,EAAW6D,UAAUx3E,WAAa,CAC1Iq3E,EAAUh8O,KAAO,EACjB,MAIJ,OADA69G,EAAS1mH,QAAQwgB,KAAK,iDACfqkO,EAAUvlN,OAAO,SAAUv0B,GAEtC,KAAK,EACD05O,EAAgBt5O,KAAK41O,cAAcmE,8BAG/B/D,EAAW6D,UAAUC,aAAeR,IACpC/9H,EAAS1mH,QAAQwgB,KAAK,qBAAuBikO,EAAgB,uBAC7D15O,EAAI+5O,iBAAkB,GAG1BJ,EAASvD,EAAW6D,UAAUx3E,WAAWriK,KAAKkhK,UAAY,GAC1Dn7G,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBvzD,EAClBgnP,EAAU73O,KAAO,GACjBskD,GAAa,EAAIxwD,EAAcd,UAAS,EAAIiB,EAAOjB,SAAS0kP,IAEhE,KAAK,GACD,GAAIxzL,GAA8BG,EAASC,EAAWzoD,QAAQC,KAAM,CAChE+7O,EAAUh8O,KAAO,GACjB,MAMJ,GAHAkkK,EAAQ17G,EAAOxyD,MAGS,aAFxB8lP,EAAa53E,EAAM/oK,MAAM,MAER,GAAmB,CAChC6gP,EAAUh8O,KAAO,GACjB,MAIJ,OADA69G,EAAS1mH,QAAQgD,IAAI,oCAAsC2hP,EAAW,IAC/DE,EAAUvlN,OAAO,WAAY,IAExC,KAAK,GAKD,GAJAslN,EAAU,CAAE7jN,SAAU4jN,EAAW,MAEjC90F,EAAS1kJ,KAAKo2O,YAAY/c,gBAAgBr5N,KAAKkhK,QAASu4E,EAAQ7jN,WAEnD,CACT8jN,EAAUh8O,KAAO,GACjB,MAMJ,OAHA+7O,EAAQ/0F,OAASA,EACjBg1F,EAAU73O,KAAO,GACjB63O,EAAUh8O,KAAO,IACV,EAAIi0B,EAAU5gC,SAASkjP,EAAOlyE,gBAAgB/hK,KAAKgzO,YAG1D,EAAIn9O,EAAShB,SAAS,GAAImhP,EAAW6D,WAAY75O,KAAKkhK,QAASxc,EAAO9uH,SAAU8uH,EAAOsa,mBAE3F,KAAK,GACDy6E,EAAQppI,OAAQ,EAChBqpI,EAAUh8O,KAAO,GACjB,MAEJ,KAAK,GACDg8O,EAAU73O,KAAO,GACjB63O,EAAUtlN,GAAKslN,EAAiB,MAAE,IAElCn+H,EAAS1mH,QAAQwgB,KAAK,6BAA+BusJ,EAAQ,WAAa5hK,KAAKkhK,QAAU,cAAgBxc,EAAO9uH,SAAW,iBAAmB8uH,EAAOsa,iBAAkBg3E,EAAW6D,UAAWH,EAAUtlN,IACvMqlN,EAAQppI,OAAQ,EAEpB,KAAK,GACDqpI,EAAUh8O,KAAO,GACjB,MAEJ,KAAK,GACD+7O,EAAQppI,MAAQ,KAChBkL,EAAS1mH,QAAQwgB,KAAK,uCAAyCusJ,GAEnE,KAAK,GACDhiK,EAAIg6O,KAAK5pP,KAAKypP,GAElB,KAAK,GACD1zL,GAA6B,EAC7B2zL,EAAUh8O,KAAO,GACjB,MAEJ,KAAK,GACDg8O,EAAUh8O,KAAO,GACjB,MAEJ,KAAK,GACDg8O,EAAU73O,KAAO,GACjB63O,EAAU/kN,GAAK+kN,EAAiB,MAAE,IAClC1zL,GAAqB,EACrBC,EAAkByzL,EAAU/kN,GAEhC,KAAK,GACD+kN,EAAU73O,KAAO,GACjB63O,EAAU73O,KAAO,IAEZkkD,GAA8BI,EAAWtoD,QAC1CsoD,EAAWtoD,SAGnB,KAAK,GAGD,GAFA67O,EAAU73O,KAAO,IAEZmkD,EAAoB,CACrB0zL,EAAUh8O,KAAO,GACjB,MAGJ,MAAMuoD,EAEV,KAAK,GACD,OAAOyzL,EAAUjuI,OAAO,IAE5B,KAAK,GACD,OAAOiuI,EAAUjuI,OAAO,IAE5B,KAAK,GAKD,OAHA7rG,EAAIi5O,OAASj5O,EAAIg6O,KAAKluN,MAAK,SAAU92B,GACjC,OAAOA,EAAEy7G,OAASz7G,EAAE8vJ,OAAOgvD,iBACzB9zM,EAAI+5O,gBACHD,EAAUvlN,OAAO,SAAUv0B,GAEtC,KAAK,GACL,IAAK,MACD,OAAO85O,EAAUtmN,UAG9BimN,EAAUr5O,KAAM,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAG,CAAE,GAAI,UAGvD,SAAUu/G,GACb,OAAOo5B,EAAMz8I,MAAM8D,KAAM2C,aAMjC+wO,GAAO9jP,UAAUoqP,kBAAoB,WACjCh6O,KAAKi3O,kBAAmB,GAU5BvD,GAAO9jP,UAAUqqP,sBAAwB,SAAUC,GAC/C,IAAI57H,EAASt+G,KAEbk6O,EAAaxrJ,GAAG,yBAAyB,SAAU58F,EAAO0lG,EAAQC,GAC9D,IACI6mB,EAAO67H,kBAAkBroP,EAAO0lG,EAAQC,GAC1C,MAAO/mG,GACL6qH,EAAS1mH,QAAQjD,MAAM,oCAAqClB,OAIpEwpP,EAAaxrJ,GAAG,iBAAiB,SAAU58F,GACvCwsH,EAAO87H,iBAAiBtoP,OAKhC4hP,GAAO9jP,UAAUslC,MAAQ,WACrBl1B,KAAK62O,+BAA+B3hN,SAIxCw+M,GAAO9jP,UAAUwjC,KAAO,WACpBpzB,KAAK62O,+BAA+BzjN,OACpCpzB,KAAKo2O,YAAYhjN,QAMrBsgN,GAAO2G,cAAgB,WACnB,OAAOrG,EAAUqG,iBAQrB3G,GAAO9jP,UAAU0qP,oBAAsB,WACnC,OAAOt6O,KAAKgzO,WAAW3yE,kBAU3BqzE,GAAO9jP,UAAU2qP,oCAAsC,SAAU7mP,GAC7DsM,KAAK42O,kCAAoCljP,GAM7CggP,GAAO9jP,UAAU4qP,oCAAsC,WACnD,OAAOx6O,KAAK42O,mCAOhBlD,GAAO9jP,UAAU6qP,iBAAmB,WAChC,IAAIn8H,EAASt+G,KACTuzB,EAAS+qF,EAAO4iD,QAChBtrI,EAAW0oF,EAAOg1H,UAElBoH,EAAa,CACbxG,WAAY51H,EAAOm4H,qBACnBx3H,UAAWrpF,EACX7sB,KAAMu1G,EAAOq4H,YACb75H,QAASvpF,GAGb,OAAO+qF,EAAO60H,YAAYuH,GAAY1jP,MAAK,WACvCsnH,EAAO80H,UAAUC,kBAAkB,CAC/BsH,YAAaD,GACd,CAGCz7H,UAAWrpF,QAWvB89M,GAAO9jP,UAAUgrP,sBAAwB,SAAUC,GAC/C,IAAIv9N,SAASu9N,GAGT,MAAM,IAAI7lP,UAAU,0DAFpBgL,KAAK03O,iBAAmBmD,GAoG/BnH,GAAO9jP,UAAUkrP,aAAe,SAAUC,EAASC,GAChD,OAAOh7O,KAAKo2O,YAAY0E,aAAaC,EAASC,IAWlDtH,GAAO9jP,UAAUqrP,wBAA0B,SAAU1nN,GACjD,OAAOvzB,KAAKo2O,YAAY6E,wBAAwB1nN,IAYpDmgN,GAAO9jP,UAAUypO,gBAAkB,SAAU9lM,EAAQqC,GACjD,OAAO51B,KAAKo2O,YAAY/c,gBAAgB9lM,EAAQqC,IAepD89M,GAAO9jP,UAAUsrP,eAAiB,SAAUluN,GACxC,OAAOhtB,KAAKo2O,YAAYoC,YAAYxrN,IAoBxC0mN,GAAO9jP,UAAUurP,uBACTlO,GAAQ,EAAIt7M,EAAU/0B,SAAQ,SAAU22B,EAAQqC,EAAUwiN,EAAUgD,EAAS9C,GAC7E,IAAIx3E,EAAU9gK,KAAKo2O,YAAY+B,2BAA2B5kN,GAC1D,IAAKutI,IAAYA,EAAQlrI,GACrB,MAAM,IAAI/jC,MAAM,kBAAoB0hC,EAAS,IAAMqC,GAGvD,IAAIylN,EAAMv6E,EAAQlrI,GACd0lN,EAAqBD,EAAIjD,SAEzBA,EACAkD,EAAqBlH,EAAmBiE,SACpB,OAAbD,GAAqBkD,GAAsBlH,EAAmBiE,WACrEiD,EAAqBlH,EAAmBmH,YAGxCH,EACAE,EAAqBlH,EAAmBoH,QACrB,OAAZJ,GAAoBE,GAAsBlH,EAAmBoH,UACpEF,EAAqBlH,EAAmBmH,YAG5C,IAAIE,EAAcJ,EAAI/C,MAWtB,OAVIA,UACAmD,EAAcnD,GAGd+C,EAAIjD,WAAakD,GAAsBD,EAAI/C,QAAUmD,IACrDJ,EAAIjD,SAAWkD,EACfD,EAAI/C,MAAQmD,EACZz7O,KAAKo2O,YAAYmC,oBAAoBhlN,EAAQutI,GAC7C9gK,KAAKo2O,YAAYoC,eAEdrE,EAAWuH,YAAYL,EAAKzlN,MAGhC,SAAUwkF,EAAKM,EAAK2J,EAAKC,EAAK/6D,GACjC,OAAO0jL,EAAM/wO,MAAM8D,KAAM2C,aAIjC+wO,GAAO9jP,UAAU+rP,oBAAsB,SAAUpoN,EAAQjc,EAASwpJ,GAC9D,IAAIzhH,EAAQr/C,KAEPsX,IAEDA,EAAU,GAAGhb,QAAO,EAAI8hD,EAAoBvpD,SAASmL,KAAK+1O,qBAAqBhtO,UAE9E+3J,IACDA,GAAU,EAAIhrK,EAAOjB,SAASmL,KAAKo2O,YAAY+B,2BAA2B5kN,KAEzEvzB,KAAKo3O,0BAA0B5+N,IAAI+a,IACpCvzB,KAAKo3O,0BAA0B7+N,IAAIgb,EAAQ,IAAIk/K,EAAM59M,SAGzD,IAAI+mP,GAAgB,EAAIjI,EAAckI,cAAc,IAEhDhrP,EAAU,IAAI8I,EAAW9E,SAAQ,SAAU9D,EAASC,GACpDquD,EAAM+3L,0BAA0B9jP,IAAIigC,GAAQhb,IAAIqjO,EAAe,CAC3DnpP,QAAS,CACL6kB,QAASA,EACTwpJ,QAASA,EACT/vK,QAASA,EACTC,OAAQA,QAKhBuB,EAAU,CACVupP,eAAgBF,EAChBG,YAAa/7O,KAAKozO,UAAUx9M,SAC5Bte,QAASA,EACT0kO,UAAWp1L,KAAK8+D,OAEhBu2H,EAAS,GACTv0L,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBl1D,EAEtB,IACI,IAAK,IAAsDm1D,EAAlDC,GAAa,EAAInyD,EAAcd,SAASisK,KAAoBp5G,GAA8BG,EAASC,EAAWpqD,QAAQC,MAAO+pD,GAA6B,EAAM,CAGrKu0L,EAFep0L,EAAOn0D,OAEHnB,GAEzB,MAAO+B,GACLqzD,GAAqB,EACrBC,EAAkBtzD,EACpB,QACE,KACSozD,GAA8BI,EAAWjqD,QAC1CiqD,EAAWjqD,SAEjB,QACE,GAAI8pD,EACA,MAAMC,GAOlB,OAFA5nD,KAAKozO,UAAU8I,aAAa,8BAA8B,EAAIhxI,EAAiBr2G,SAAS,GAAI0+B,EAAQ0oN,IAE7FprP,GAGX6iP,GAAO9jP,UAAUusP,qBAAuB,SAAUv/O,EAAQ22B,EAAQqC,EAAUgmN,GAKxE,GAJK57O,KAAKo3O,0BAA0B5+N,IAAI+a,IACpCvzB,KAAKo3O,0BAA0B7+N,IAAIgb,EAAQ,IAAIk/K,EAAM59M,SAEzD+mP,EAAgBA,IAAiB,EAAIjI,EAAckI,cAAc,MAC7Dj/O,aAAkBjG,OAWf,IAAIqJ,KAAK+1O,qBAAqBv9N,IAAI5b,GAAS,CAC9C,IAAIw/O,EAAW,IAAKp8O,KAAK+1O,qBAAqBziP,IAAIsJ,GAAnC,CAA4CoD,KAAKozO,UAAW7/M,EAAQqC,EAAUgmN,GAK7F,OAJK57O,KAAKo3O,0BAA0B9jP,IAAIigC,GAAQ/a,IAAIojO,IAChD57O,KAAKo3O,0BAA0B9jP,IAAIigC,GAAQhb,IAAIqjO,EAAe,IAElE57O,KAAKo3O,0BAA0B9jP,IAAIigC,GAAQjgC,IAAIsoP,GAAeQ,SAAWA,EAClEA,EAEP,MAAM,EAAIxjK,EAAOyoI,yBAlBjB,GAAsB,IAAlBzkN,EAAOlN,SAAiBsQ,KAAK+1O,qBAAqBv9N,IAAI5b,EAAO,MAAQoD,KAAK+1O,qBAAqBv9N,IAAI5b,EAAO,IAC1G,MAAM,EAAIg8E,EAAOyoI,0BAmC7BqyB,GAAO9jP,UAAUysP,uBACT1H,GAAQ,EAAIhjN,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAAS4oN,EAAS/oN,GAC5F,IAAIutI,EAAS7pK,EAAQsS,EAAGm7I,EAAQmY,EAAWmB,EAC3C,OAAOtsI,EAAc78B,QAAQm/B,MAAK,SAAmBuoN,GACjD,OACI,OAAQA,EAAU16O,KAAO06O,EAAU7+O,MAC/B,KAAK,EACDojK,EAAU9gK,KAAKi7O,wBAAwB1nN,IAAW,GAClDt8B,EAAS,GACTsS,EAAI,EAER,KAAK,EACD,KAAMA,EAAIu3J,EAAQpxK,QAAS,CACvB6sP,EAAU7+O,KAAO,GACjB,MAMJ,OAHAgnJ,EAASoc,EAAQv3J,GACjBszJ,EAAYnY,EAAOwa,iBACnBq9E,EAAU7+O,KAAO,GACV,EAAIi0B,EAAU5gC,SAASiP,KAAKgzO,WAAWwJ,wBAAwB3/E,IAE1E,KAAK,EACDmB,EAAWu+E,EAAUjnN,KAGrBr+B,EAAOytJ,EAAO9uH,UAAY,CACtB6mN,YAAa5/E,EACbmB,SAAUA,GAGlB,KAAK,KACCz0J,EACFgzO,EAAU7+O,KAAO,EACjB,MAEJ,KAAK,GACD,OAAO6+O,EAAUpoN,OAAO,SAAUl9B,GAEtC,KAAK,GACL,IAAK,MACD,OAAOslP,EAAUnpN,UAG9BkpN,EAAUt8O,UAGV,SAAUwpD,GACb,OAAOmrL,EAAMz4O,MAAM8D,KAAM2C,aAWjC+wO,GAAO9jP,UAAU8sP,yBAA2B,SAAU5qP,GAClD,IAAI+/O,EAAY//O,EAAM8tH,eAClBhB,EAAY9sH,EAAMsrH,iBAAiBwB,UAEvC,IAAKizH,IAAcjzH,EACf,OAAO,KAIX,GADsB9sH,EAAMkuH,kCACRtwH,OAAS,EAGzB,OAAO,KAOX,IAAIg1J,EAAS1kJ,KAAKo2O,YAAYuG,uBAAuB/9H,EAAWizH,GAEhE,GAAe,OAAXntF,EAEA,OAAO,KAWX,IAAIk4F,EAAa9qP,EAAMiuH,uBACvB,OAAK68H,EAKDA,IAAel4F,EAAOsa,kBACtBzjD,EAAS1mH,QAAQyF,KAAK,SAAWxI,EAAM8qH,QAAU,uBAAyBggI,EAAa,6BAA+Bl4F,EAAOsa,kBACtH,MAGJta,GATHnpC,EAAS1mH,QAAQyF,KAAK,SAAWxI,EAAM8qH,QAAU,wDAC1C,OAmBf82H,GAAO9jP,UAAU6pO,oBAAsB,SAAUlzK,GAC7C,IAAIs2L,EAAM78O,KAAKu2O,gBAAgBhwL,GAC/B,QAAY7zD,IAARmqP,EAAmB,MAAM,IAAIhrP,MAAM,sBACvC,QAAgCa,IAA5BmqP,EAAIpjB,oBACJ,MAAM,IAAI5nO,MAAM,gEAEpBgrP,EAAIpjB,uBAcRia,GAAO9jP,UAAUktP,mBACTlI,GAAQ,EAAIjjN,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASqpN,EAASx2L,EAAQl5C,EAAQ2vO,GAC5G,IAAIC,EAA6BC,EAAoBC,EAAUN,EAC/D,OAAOnrN,EAAc78B,QAAQm/B,MAAK,SAAmBopN,GACjD,OACI,OAAQA,EAAUv7O,KAAOu7O,EAAU1/O,MAC/B,KAAK,EACD,GAAI2P,EAAOuxG,UAAW,CAClBw+H,EAAU1/O,KAAO,EACjB,MAIJ,OADAnJ,QAAQsD,IAAI,gDACLulP,EAAUjpN,OAAO,UAE5B,KAAK,EASD,KAFA8oN,EAAiBj9O,KAAK4mI,UAAUy2G,kBAAkB92L,IAE7B,CACjB62L,EAAU1/O,KAAO,EACjB,MAGJ,IAAM,EAAI0mD,EAAYvvD,SAASooP,KAAmB,EAAI74L,EAAYvvD,SAASwY,GAAU,CACjF+vO,EAAU1/O,KAAO,EACjB,MAIJ,OADA69G,EAAS1mH,QAAQjD,MAAM,yEAAgF20D,GAChG62L,EAAUjpN,OAAO,UAE5B,KAAK,EAUD,IAFcn0B,KAAKu2O,gBAAgBhwL,GAEjB,CACd62L,EAAU1/O,KAAO,GACjB,MAGJ,OAAO0/O,EAAUjpN,OAAO,UAE5B,KAAK,GAcD,GARA+oN,EAAqB,KAEhBD,IACDC,EAAqBl9O,KAAK4mI,UAAUk2G,kBAAkBv2L,EAAQl5C,IAGlE8vO,EAAWjJ,EAAWoJ,mBAAmBjwO,EAAOuxG,WAElC,CACVw+H,EAAU1/O,KAAO,GACjB,MAGJ,MAAM,IAAI7L,MAAM,0BAA4Bwb,EAAOuxG,WAEvD,KAAK,GAaD,GAZAi+H,EAAM,IAAIM,EAAS,CACf5pN,OAAQvzB,KAAKkhK,QACbtrI,SAAU51B,KAAKszO,UACfh1H,OAAQt+G,KACR0+J,UAAW1+J,KAAKgzO,WAChBtyE,SAAU1gK,KAAKozO,UACf7sL,OAAQA,EACRl5C,OAAQA,IAGZrN,KAAKu2O,gBAAgBhwL,GAAUs2L,GAE1BK,EAAoB,CACrBE,EAAU1/O,KAAO,GACjB,MAIJ,OADA0/O,EAAU1/O,KAAO,IACV,EAAIi0B,EAAU5gC,SAASmsP,GAElC,KAAK,GACD,GAAIl9O,KAAKi3O,iBAAkB,CACvBmG,EAAU1/O,KAAO,GACjB,MAMJ,OAHA69G,EAAS1mH,QAAQgD,IAAI,0BAA4B0uD,EAAS,0DAE1D62L,EAAU1/O,KAAO,IACV,EAAIi0B,EAAU5gC,SAASiP,KAAKu9O,iBAAiBh3L,IAExD,KAAK,GAKIvmD,KAAKg9O,oBACNh9O,KAAKo2O,YAAYoH,6BAErBJ,EAAU1/O,KAAO,GACjB,MAEJ,KAAK,GACD69G,EAAS1mH,QAAQgD,IAAI,0BAA4B0uD,GAErD,KAAK,GACL,IAAK,MACD,OAAO62L,EAAUhqN,UAG9B2pN,EAAU/8O,UAGV,SAAUypD,EAAMC,EAAMy1G,GACzB,OAAOy1E,EAAM14O,MAAM8D,KAAM2C,aAUjC+wO,GAAO9jP,UAAU2tP,iBAAmB,SAAUh3L,GAC1C,IAGQk3L,EAHJ1/L,EAAS/9C,KAET09O,GACID,GAAS,EAAI9rN,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASiqN,IACpF,IAAI3oJ,EACJ,OAAOtjE,EAAc78B,QAAQm/B,MAAK,SAAmB4pN,GACjD,OACI,OAAQA,EAAU/7O,KAAO+7O,EAAUlgP,MAC/B,KAAK,EACD,GAAIqgD,EAAOw4L,gBAAgBhwL,GAAS,CAChCq3L,EAAUlgP,KAAO,EACjB,MAGJ,OAAOkgP,EAAUzpN,OAAO,UAE5B,KAAK,EAGD,GAFA6gE,EAAOj3C,EAAO83L,aAAa3gJ,QAAQ3uC,GAEzB,CACNq3L,EAAUlgP,KAAO,EACjB,MAGJ,MAAM,IAAI7L,MAAM,oDAAsD00D,GAE1E,KAAK,EAGD,OAFAg1D,EAAS1mH,QAAQgD,IAAI,sCAAwC0uD,EAAS,QACtEq3L,EAAUlgP,KAAO,GACV,EAAIi0B,EAAU5gC,SAASikG,EAAK6oJ,8BAEvC,KAAK,EACSD,EAAUtoN,KAEZl7B,SAAQ,SAAUrH,GACtBgrD,EAAOq4L,YAAY0H,wBAAwB/qP,EAAEwgC,WAGrD,KAAK,GACL,IAAK,MACD,OAAOqqN,EAAUxqN,UAG9BuqN,EAAU5/L,OAGV,WACH,OAAO0/L,EAAOvhP,MAAM8D,KAAM2C,aAI9B9R,EAAUmP,KAAKk3O,yBAAyB3wL,GAK5C,OAJK11D,IACDA,EAAU6sP,IACV19O,KAAKk3O,yBAAyB3wL,GAAU11D,GAErCA,GAoBX6iP,GAAO9jP,UAAUmuP,0BAA4B,SAAU7lJ,GAGnD,IAFA,IAAIyoE,EAAgB,GAEXnxK,EAAI,EAAGA,EAAI0oG,EAAMxoG,SAAUF,EAAG,CACnC,IAAI+jC,EAAS2kE,EAAM1oG,GACnBmxK,EAAcptI,GAAU,GAGxB,IADA,IAAIutI,EAAU9gK,KAAKi7O,wBAAwB1nN,IAAW,GAC7ChqB,EAAI,EAAGA,EAAIu3J,EAAQpxK,SAAU6Z,EAAG,CACrC,IAAIq1J,EAAakC,EAAQv3J,GAEfq1J,EAAWM,kBACVl/J,KAAKgzO,WAAWkF,sBAIvBt5E,EAAWw5E,UAAYhE,EAAmBoH,SAK9C76E,EAAcptI,GAAQvjC,KAAK4uK,KAInC,OAAOq1E,EAAOxzE,4BAA4BzgK,KAAKgzO,WAAYhzO,KAAKozO,UAAWzyE,IAQ/E+yE,GAAO9jP,UAAUouP,gBAAiB,EAAIrsN,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASuqN,IACzG,IAEIC,EAFA9qL,EAASpzD,KAGb,OAAO0xB,EAAc78B,QAAQm/B,MAAK,SAAoBmqN,GAClD,OACI,OAAQA,EAAWt8O,KAAOs8O,EAAWzgP,MACjC,KAAK,EAGD,OAFAwgP,EAAmB,GACnBC,EAAWzgP,KAAO,GACX,EAAIi0B,EAAU5gC,SAASiP,KAAK81O,aAAax6E,MAAM,WAAY,CAACu4E,EAAuBh/O,QAAQ0mK,+BAA+B,SAAUC,GACvIpoG,EAAO0iL,aAAa14E,mCAAmC5B,GAAK,SAAU5mK,GAClE,GAAU,OAANA,EAAJ,CAEA,IAAIwpP,EAAOhrL,EAAO4/K,WAAWqL,0BAA0BzpP,EAAEi9O,UAAWj9O,EAAEkoK,UAAWloK,EAAEyoK,oBAC5E+gF,EAAKE,kBACZF,EAAKx/H,UAAYq1H,EAAOv0E,iBACxBw+E,EAAiBluP,KAAKouP,WAIlC,KAAK,EACD,OAAOD,EAAWhqN,OAAO,SAAU+pN,GAEvC,KAAK,EACL,IAAK,MACD,OAAOC,EAAW/qN,UAG/B6qN,EAAWj+O,UASlB0zO,GAAO9jP,UAAU2uP,eAAiB,SAAUx1O,GACxC,IAAI88E,EAAS7lF,KAEb,OAAOrG,EAAW9E,QAAQqE,IAAI6P,GAAM,SAAU/U,GAC1C,OAAKA,EAAIq0G,SAAYr0G,EAAI4qH,UAKf/4B,EAAO24J,kBAAkBxqP,EAAIq0G,QAASr0G,EAAI4qH,WACzC6/H,cAAczqP,IALrBunH,EAAS1mH,QAAQyF,KAAK,8CAA+CtG,GAC9D,UAcnB0/O,GAAO9jP,UAAU8uP,uBACT7J,GAAS,EAAIljN,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASirN,IACpF,IACI3xN,EAAO4xN,EADPC,EAAWl8O,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,GAAmBA,UAAU,GAAK,IAEnF,OAAO+uB,EAAc78B,QAAQm/B,MAAK,SAAoB8qN,GAClD,OACI,OAAQA,EAAWj9O,KAAOi9O,EAAWphP,MACjC,KAAK,EACD,IAAKsC,KAAKm2O,gBAAiB,CACvB2I,EAAWphP,KAAO,EAClB,MAGJ,OAAOohP,EAAW3qN,OAAO,UAE7B,KAAK,EAWD,OATAn0B,KAAKm2O,iBAAkB,EAEvB2I,EAAWj9O,KAAO,EAKlBmrB,EAAQnnB,KAAK8tG,SAAWkrI,EACxBC,EAAWphP,KAAO,GACX,EAAIi0B,EAAU5gC,SAAS4I,EAAW9E,QAAQm4B,MAAMA,IAE3D,KAAK,EACD4xN,EAAc,EAElB,KAAK,EAMD,GAAI5+O,KAAKi2O,UAAW,CAChB6I,EAAWphP,KAAO,GAClB,MAGJ,OAAOohP,EAAW3qN,OAAO,UAE7B,KAAK,GAGD,OAFA2qN,EAAWj9O,KAAO,GAClBi9O,EAAWphP,KAAO,IACX,EAAIi0B,EAAU5gC,SAASiP,KAAK++O,mBAr4CzB,MAu4Cd,KAAK,GAGD,GAAsB,IAFRD,EAAWxpN,KAEC,CACtBwpN,EAAWphP,KAAO,GAClB,MAGJ,OAAOohP,EAAW3qN,OAAO,UAE7B,KAAK,GACDyqN,EAAc,EACdE,EAAWphP,KAAO,GAClB,MAEJ,KAAK,GAOD,GANAohP,EAAWj9O,KAAO,GAClBi9O,EAAW1qN,GAAK0qN,EAAkB,MAAE,IAEpCF,IACArjI,EAAS1mH,QAAQgD,IAAI,4BAA6BinP,EAAW1qN,KAExD0qN,EAAW1qN,GAAGjlC,KAAM,CACrB2vP,EAAWphP,KAAO,GAClB,MAGJ,GAAoC,eAA9BohP,EAAW1qN,GAAGjlC,KAAKg6G,SAA0D,6BAA9B21I,EAAW1qN,GAAGjlC,KAAKg6G,QAAyC,CAC7G21I,EAAWphP,KAAO,GAClB,MAIJ,OADAohP,EAAWphP,KAAO,IACX,EAAIi0B,EAAU5gC,SAASiP,KAAKm5O,kBAEvC,KAAK,GAID,MADAn5O,KAAK4O,KAAK,yBAA0BkwO,EAAW1qN,GAAGjlC,KAAKg6G,SACjD21I,EAAW1qN,GAErB,KAAK,GACD,IAAKwqN,EAAa,CACdE,EAAWphP,KAAO,GAClB,MAIJ,OADAohP,EAAWphP,KAAO,IACX,EAAIi0B,EAAU5gC,SAAS4I,EAAW9E,QAAQm4B,MAAM,IAAOnnB,KAAK6pG,IAAI,EAAG7pG,KAAKo1B,IAAI2jN,EAAc,EAAG,MAExG,KAAK,GACDE,EAAWphP,KAAO,EAClB,MAEJ,KAAK,GAID,OAHAohP,EAAWj9O,KAAO,GAElB7B,KAAKm2O,iBAAkB,EAChB2I,EAAWrzI,OAAO,IAE7B,KAAK,GACL,IAAK,MACD,OAAOqzI,EAAW1rN,UAG/BurN,EAAW3+O,KAAM,CAAC,CAAC,EAAE,CAAE,GAAI,IAAK,CAAC,GAAI,UAGrC,SAAUo/J,GACb,OAAOy1E,EAAO34O,MAAM8D,KAAM2C,aAWlC+wO,GAAO9jP,UAAUmvP,oBACTjK,GAAS,EAAInjN,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASsrN,EAAUpiO,GAC9F,IAAIohJ,EAAUtkG,EAAWvqE,EAAM46D,EAA4BC,EAAoBC,EAAiBE,EAAYD,EAAQ4nL,EAASvrL,EAAQ82G,EAAa4hF,EAAiBr8H,EAAWs8H,EAAgBx6F,EAE9L,OAAOhzH,EAAc78B,QAAQm/B,MAAK,SAAoBmrN,GAClD,OACI,OAAQA,EAAWt9O,KAAOs9O,EAAWzhP,MACjC,KAAK,EAED,OADAyhP,EAAWzhP,KAAO,GACX,EAAIi0B,EAAU5gC,SAASiP,KAAK81O,aAAah4E,yBAAyBlhJ,IAE7E,KAAK,EAGD,IAFAohJ,EAAWmhF,EAAW7pN,MAET5lC,OAAQ,CACjByvP,EAAWzhP,KAAO,EAClB,MAGJ,OAAOyhP,EAAWhrN,OAAO,SAAU,GAEvC,KAAK,EAED,OADAgrN,EAAWzhP,KAAO,GACX,EAAIi0B,EAAU5gC,SAASiP,KAAK81O,aAAa/3E,8BAEpD,KAAK,EACDrkG,EAAYylL,EAAW7pN,KAEvBt1B,KAAK4O,KAAK,oCAAqC8qD,GAE/CvqE,EAAO,GACP46D,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBv3D,EAClBysP,EAAWt9O,KAAO,GAClBsoD,GAAa,EAAIx0D,EAAcd,SAASmpK,GAE5C,KAAK,GACD,GAAIj0G,GAA8BG,EAASC,EAAWzsD,QAAQC,KAAM,CAChEwhP,EAAWzhP,KAAO,GAClB,MAWJ,OARAo0O,EAAU5nL,EAAOx2D,MACjB6yD,EAASurL,EAAQz0E,YAAYh1D,aAER31G,IAAjBvD,EAAKo3D,KACLp3D,EAAKo3D,GAAU,CAAEy3G,SAAU,KAG/BmhF,EAAWzhP,KAAO,IACX,EAAIi0B,EAAU5gC,SAASiP,KAAKgzO,WAAWqL,0BAA0BvM,EAAQD,UAAWC,EAAQh1E,UAAWg1E,EAAQz0E,cAE1H,KAAK,IACDA,EAAc8hF,EAAW7pN,MAEbspF,UAAYq1H,EAAOv0E,wBACxBrC,EAAYx+C,kBACZw+C,EAAYh1D,QACnB42I,EAAkB5hF,EAAYihF,yBAEvBjhF,EAAYihF,kBACnB17H,EAAY5iH,KAAKi2O,UAAUmJ,SAAQ,EAAIh7L,EAAYvvD,SAASwoK,IAC5D6hF,GAAkB7hF,EAAYgiF,iCAAmC,IAAI3vP,OACrEg1J,EAAS1kJ,KAAKo2O,YAAYuG,uBAAuB1I,EAAOv0E,iBAAkBoyE,EAAQD,WAGlF1iP,EAAKo3D,GAAkB,SAAEurL,EAAQh1E,WAAa,CAC1CwiF,oBAAqBL,EACrBM,gBAAiBL,EACjBM,eAAgB96F,IAAUA,EAAOgvD,cACjC+rC,aAAc78H,GAGtB,KAAK,GACD74D,GAA6B,EAC7Bo1L,EAAWzhP,KAAO,GAClB,MAEJ,KAAK,GACDyhP,EAAWzhP,KAAO,GAClB,MAEJ,KAAK,GACDyhP,EAAWt9O,KAAO,GAClBs9O,EAAW/qN,GAAK+qN,EAAkB,MAAE,IACpCn1L,GAAqB,EACrBC,EAAkBk1L,EAAW/qN,GAEjC,KAAK,GACD+qN,EAAWt9O,KAAO,GAClBs9O,EAAWt9O,KAAO,IAEbkoD,GAA8BI,EAAWtsD,QAC1CssD,EAAWtsD,SAGnB,KAAK,GAGD,GAFAshP,EAAWt9O,KAAO,IAEbmoD,EAAoB,CACrBm1L,EAAWzhP,KAAO,GAClB,MAGJ,MAAMusD,EAEV,KAAK,GACD,OAAOk1L,EAAW1zI,OAAO,IAE7B,KAAK,GACD,OAAO0zI,EAAW1zI,OAAO,IAE7B,KAAK,GAED,OADA0zI,EAAWzhP,KAAO,IACX,EAAIi0B,EAAU5gC,SAASiP,KAAKozO,UAAUsM,mBAAchtP,OAAWA,EAAWsN,KAAKg2O,WAAWhyN,QAAS,CAAEk2H,MAAO/qJ,KAEvH,KAAK,GAED,OADAgwP,EAAWzhP,KAAO,IACX,EAAIi0B,EAAU5gC,SAASiP,KAAK81O,aAAa73E,4BAA4BD,IAEhF,KAAK,GAED,OADAmhF,EAAWzhP,KAAO,IACX,EAAIi0B,EAAU5gC,SAASiP,KAAK81O,aAAa/3E,8BAEpD,KAAK,GAKD,OAJArkG,EAAYylL,EAAW7pN,KAEvBt1B,KAAK4O,KAAK,oCAAqC8qD,GAExCylL,EAAWhrN,OAAO,SAAU6pI,EAAStuK,QAEhD,KAAK,GACL,IAAK,MACD,OAAOyvP,EAAW/rN,UAG/B4rN,EAAWh/O,KAAM,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAG,CAAE,GAAI,UAG9C,SAAUs/J,GACb,OAAOw1E,EAAO54O,MAAM8D,KAAM2C,aAIlC+wO,GAAO9jP,UAAU+vP,oBACT5K,GAAS,EAAIpjN,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASksN,EAAUr5L,EAAQsrL,EAAWnyH,EAA8Bo9C,EAAWs1E,EAAYyN,EAAaC,GACnL,OAAOpuN,EAAc78B,QAAQm/B,MAAK,SAAoB+rN,GAClD,OACI,OAAQA,EAAWl+O,KAAOk+O,EAAWriP,MACjC,KAAK,EACD,GAAIsC,KAAKg2O,WAAY,CACjB+J,EAAWriP,KAAO,EAClB,MAGJ,MAAM,IAAI7L,MAAM,+BAEpB,KAAK,EAED,OADAkuP,EAAWriP,KAAO,GACX,EAAIi0B,EAAU5gC,SAASiP,KAAK81O,aAAa53E,0BAA0B,CAAC,CACvE2zE,UAAWA,EACX/0E,UAAWA,MAGnB,KAAK,EAID98J,KAAK0+O,wBAET,KAAK,EACL,IAAK,MACD,OAAOqB,EAAW3sN,UAG/BwsN,EAAW5/O,UAGX,SAAUsiK,EAAMC,EAAMC,EAAMC,EAAMC,EAAMs9E,EAAMC,GACjD,OAAOlL,EAAO74O,MAAM8D,KAAM2C,aAQlC+wO,GAAO9jP,UAAUswP,mCAAoC,EAAIvuN,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASysN,IAC5H,OAAOzuN,EAAc78B,QAAQm/B,MAAK,SAAoBosN,GAClD,OACI,OAAQA,EAAWv+O,KAAOu+O,EAAW1iP,MACjC,KAAK,EAED,OADA0iP,EAAW1iP,KAAO,GACX,EAAIi0B,EAAU5gC,SAASiP,KAAKqgP,iCAEvC,KAAK,EAGDrgP,KAAK0+O,sBAAsB,GAE/B,KAAK,EACL,IAAK,MACD,OAAO0B,EAAWhtN,UAG/B+sN,EAAWngP,UAQlB0zO,GAAO9jP,UAAUywP,+BAAgC,EAAI1uN,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAAS4sN,IACxH,IAEI5mL,EAFAqtB,EAAS/mF,KAGb,OAAO0xB,EAAc78B,QAAQm/B,MAAK,SAAoBusN,GAClD,OACI,OAAQA,EAAW1+O,KAAO0+O,EAAW7iP,MACjC,KAAK,EAED,OADA6iP,EAAW7iP,KAAO,GACX,EAAIi0B,EAAU5gC,SAASiP,KAAK81O,aAAax6E,MAAM,YAAa,CAACu4E,EAAuBh/O,QAAQ0mK,6BAA8Bs4E,EAAuBh/O,QAAQ2pK,eAAe,SAAUhD,GACrLz0E,EAAO+uJ,aAAa14E,mCAAmC5B,GAAK,SAAUs2E,GAClD,OAAZA,GACA/qJ,EAAO+uJ,aAAa53E,0BAA0B,CAAC4zE,GAAUt2E,UAKzE,KAAK,EAED,OADA+kF,EAAW7iP,KAAO,GACX,EAAIi0B,EAAU5gC,SAASiP,KAAK81O,aAAa/3E,8BAEpD,KAAK,EAID,OAHArkG,EAAY6mL,EAAWjrN,KAEvBt1B,KAAK4O,KAAK,oCAAqC8qD,GACxC6mL,EAAWpsN,OAAO,SAAUulC,GAEvC,KAAK,EACL,IAAK,MACD,OAAO6mL,EAAWntN,UAG/BktN,EAAWtgP,UAelB0zO,GAAO9jP,UAAU4wP,cACTxL,GAAS,EAAIrjN,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAAS+sN,EAAU3uP,EAAOkjG,GACrG,IAAIzuC,EAAQs2L,EAAK7kJ,EAASk0D,EAAYw0F,EACtC,OAAOhvN,EAAc78B,QAAQm/B,MAAK,SAAoB2sN,GAClD,OACI,OAAQA,EAAW9+O,KAAO8+O,EAAWjjP,MACjC,KAAK,EACD,GAAIs3F,EAAM,CACN2rJ,EAAWjjP,KAAO,EAClB,MAGJ,MAAM,IAAI7L,MAAM,mDAEpB,KAAK,EAID,GAHA00D,EAASz0D,EAAMs2G,YACfy0I,EAAM78O,KAAKu2O,gBAAgBhwL,GAElB,CACLo6L,EAAWjjP,KAAO,EAClB,MAGJ,MAAM,IAAI7L,MAAM,iIAEpB,KAAK,EAOD,OALKmO,KAAKk3O,yBAAyB3wL,IAC/BvmD,KAAKu9O,iBAAiBh3L,GAG1Bo6L,EAAWjjP,KAAO,GACX,EAAIi0B,EAAU5gC,SAASiP,KAAKk3O,yBAAyB3wL,IAEhE,KAAK,EAcD,OAbAyxC,EAAUlmG,EAAMmmG,cAIhBi0D,EAAal0D,EAAQ,yBAIjBA,GAAU,EAAIniG,EAAShB,SAAS,GAAImjG,IACrB,gBAGnB2oJ,EAAWjjP,KAAO,IACX,EAAIi0B,EAAU5gC,SAAS8rP,EAAIr8E,eAAexrE,EAAMljG,EAAMwlG,UAAWU,IAE5E,KAAK,GACD0oJ,EAAmBC,EAAWrrN,KAG1B42H,IACAw0F,EAAiB,gBAAkBx0F,GAGvCp6J,EAAM+rH,cAAc,mBAAoB6iI,EAAkB1gP,KAAKgzO,WAAWkF,oBAAqBl4O,KAAKgzO,WAAW3yE,kBAEnH,KAAK,GACL,IAAK,MACD,OAAOsgF,EAAWvtN,UAG/BqtN,EAAWzgP,UAGX,SAAU4gP,EAAMC,GACnB,OAAO7L,EAAO94O,MAAM8D,KAAM2C,aAalC+wO,GAAO9jP,UAAUuvH,aAAe,SAAUrtH,GACtC,GAAIA,EAAM6uH,aACN,OAAOhnH,EAAW9E,QAAQ9D,QAAQ,CAC9ByuH,WAAY,CACRnX,QAASv2G,EAAMs2G,YACfh2G,KAAM,iBACN4lG,QAAS,MAIrB,IAAIA,EAAUlmG,EAAMsrH,iBAEpB,OADUp9G,KAAKw+O,kBAAkB1sP,EAAMs2G,YAAapQ,EAAQ4mB,WACjDO,aAAartH,IAW5B4hP,GAAO9jP,UAAUkxP,yBACT7L,GAAS,EAAItjN,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASqtN,EAAUjT,EAAUkT,GACxG,OAAOtvN,EAAc78B,QAAQm/B,MAAK,SAAoBitN,GAClD,OACI,OAAQA,EAAWp/O,KAAOo/O,EAAWvjP,MACjC,KAAK,EACD,GAAIowO,EAASoT,aAAc,CACvBD,EAAWvjP,KAAO,EAClB,MAGJ,OAAOujP,EAAW9sN,OAAO,UAE7B,KAAK,EAED,OADA8sN,EAAWvjP,KAAO,GACX,EAAIi0B,EAAU5gC,SAASiP,KAAKmhP,uBAAuBH,IAE9D,KAAK,EACL,IAAK,MACD,OAAOC,EAAW7tN,UAG/B2tN,EAAW/gP,UAGX,SAAUohP,EAAMC,GACnB,OAAOpM,EAAO/4O,MAAM8D,KAAM2C,aAclC+wO,GAAO9jP,UAAU+uH,eAAiB,SAAUo9C,EAAa/8C,GACrD,IAAIsiI,EAAS3+O,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,IAAmBA,UAAU,GAE5E,OAAO3C,KAAK62O,+BAA+B0K,mBAAmBxlF,EAAa/8C,EAAYsiI,GAAQ9hM,OAAM,SAAU9uD,GAE3G6qH,EAAS1mH,QAAQjD,MAAM,iCAAkClB,MAC1DiN,QASP+1O,GAAO9jP,UAAU4xP,qBAAuB,SAAUzlF,GAC9C/7J,KAAK62O,+BAA+B2K,qBAAqBzlF,GAAav8G,OAAM,SAAU9uD,GAClF6qH,EAAS1mH,QAAQyF,KAAK,2CAA4C5J,MACnEiN,QAQP+1O,GAAO9jP,UAAU6xP,eACTvM,GAAS,EAAIvjN,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASguN,EAAU5vP,GAC9F,IAAIy0D,EAAQyxC,EACZ,OAAOtmE,EAAc78B,QAAQm/B,MAAK,SAAoB2tN,GAClD,OACI,OAAQA,EAAW9/O,KAAO8/O,EAAWjkP,MACjC,KAAK,EAKD,OAJA6oD,EAASz0D,EAAMs2G,YACfpQ,EAAUlmG,EAAMmmG,aAChB0pJ,EAAW9/O,KAAO,EAClB8/O,EAAWjkP,KAAO,GACX,EAAIi0B,EAAU5gC,SAASiP,KAAK88O,kBAAkBv2L,EAAQyxC,GAAS,IAE1E,KAAK,EACD2pJ,EAAWjkP,KAAO,GAClB,MAEJ,KAAK,EACDikP,EAAW9/O,KAAO,EAClB8/O,EAAWvtN,GAAKutN,EAAkB,MAAE,GAEpCpmI,EAAS1mH,QAAQjD,MAAM,wCAA0C20D,EAAS,IAAKo7L,EAAWvtN,IAE9F,KAAK,GACL,IAAK,MACD,OAAOutN,EAAWvuN,UAG/BsuN,EAAW1hP,KAAM,CAAC,CAAC,EAAG,SAGtB,SAAU4hP,GACb,OAAO1M,EAAOh5O,MAAM8D,KAAM2C,aASlC+wO,GAAO9jP,UAAUiyP,mBACT1M,GAAS,EAAIxjN,EAAU/0B,SAAQ,SAAUkxO,GACpCA,EAASoT,eAKV3lI,EAAS1mH,QAAQgD,IAAI,4DACrBmI,KAAKo2O,YAAY0L,6BACjB9hP,KAAKk3O,yBAA2B,OAIjC,SAAU6K,GACb,OAAO5M,EAAOj5O,MAAM8D,KAAM2C,aAYlC+wO,GAAO9jP,UAAUoyP,iBACT5M,GAAS,EAAIzjN,EAAU/0B,SAAQ,SAAUkxO,GACzC,IAAImU,EAAgBnU,EAASmU,cAE7BjiP,KAAKo2O,YAAY8L,aAAapU,EAASmU,eACvCjiP,KAAKo2O,YAAYoC,cAGjBx4O,KAAKo2O,YAAY+L,mBAAqBF,EAGtCjiP,KAAKo2O,YAAY0H,wBAAwB99O,KAAKkhK,SAE9ClhK,KAAKo2O,YAAYoH,6BAMZ1P,EAASsU,aACV/K,GAAwBr3O,MACxBA,KAAKqiP,sCAIN,SAAUC,GACb,OAAOlN,EAAOl5O,MAAM8D,KAAM2C,aAWlC+wO,GAAO9jP,UAAUuxP,wBACT9L,GAAS,EAAI1jN,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAAS6uN,EAAUC,GAC9F,IAEIC,EAFAz7J,EAAShnF,KAGb,OAAO0xB,EAAc78B,QAAQm/B,MAAK,SAAoB0uN,GAClD,OACI,OAAQA,EAAW7gP,KAAO6gP,EAAWhlP,MACjC,KAAK,EAOD,GANI8kP,EAAYG,SAAWhsP,MAAMC,QAAQ4rP,EAAYG,UACjDH,EAAYG,QAAQvoP,SAAQ,SAAUgF,GAClC4nF,EAAOovJ,YAAYwM,yBAAyBxjP,QAI9CojP,EAAYx1M,MAAQr2C,MAAMC,QAAQ4rP,EAAYx1M,OAASw1M,EAAYx1M,KAAKt9C,QAAS,CACnFgzP,EAAWhlP,KAAO,EAClB,MAKJ,OAFAglP,EAAWtuN,GAAKq6I,EAAM55K,QACtB6tP,EAAWhlP,KAAO,GACX,EAAIi0B,EAAU5gC,SAASiP,KAAK6iP,uBAEvC,KAAK,EACDH,EAAW/tN,GAAK+tN,EAAWptN,KAC3BmtN,EAAa,IAAIC,EAAWtuN,GAAGsuN,EAAW/tN,IAG1C6tN,EAAYx1M,KAAK5yC,SAAQ,SAAUgF,GAC1BqjP,EAAWjqO,IAAIpZ,IAChB4nF,EAAOovJ,YAAY0M,uBAAuB1jP,MAItD,KAAK,EACL,IAAK,MACD,OAAOsjP,EAAWtvN,UAG/BmvN,EAAWviP,UAGX,SAAU+iP,GACb,OAAO1N,EAAOn5O,MAAM8D,KAAM2C,aAUlC+wO,GAAO9jP,UAAUizP,qBAAsB,EAAIlxN,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASsvN,IAC9G,IAAIP,EAAYj4L,EAA4BC,EAAoBC,EAAiBE,EAAYD,EAAQqqC,EAAM86B,EAAS/kE,EAA4BC,EAAoBC,EAAiBE,EAAYD,EAAQssC,EAEzM,OAAO9lE,EAAc78B,QAAQm/B,MAAK,SAAoBivN,GAClD,OACI,OAAQA,EAAWphP,KAAOohP,EAAWvlP,MACjC,KAAK,EACD+kP,EAAa,GACbj4L,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBh4D,EAClBuwP,EAAWphP,KAAO,EAClB+oD,GAAa,EAAIj1D,EAAcd,SAASmL,KAAKkjP,uBAEjD,KAAK,EACD,GAAI14L,GAA8BG,EAASC,EAAWltD,QAAQC,KAAM,CAChEslP,EAAWvlP,KAAO,GAClB,MAKJ,OAFAs3F,EAAOrqC,EAAOj3D,MACduvP,EAAWvlP,KAAO,IACX,EAAIi0B,EAAU5gC,SAASikG,EAAK6oJ,8BAEvC,KAAK,GAOD,IANA/tH,EAAUmzH,EAAW3tN,KACrBy1B,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBv4D,EAClBuwP,EAAWphP,KAAO,GAEbspD,GAAa,EAAIx1D,EAAcd,SAASi7H,KAAY/kE,GAA8BG,EAASC,EAAWztD,QAAQC,MAAOotD,GAA6B,EACnJysC,EAAStsC,EAAOx3D,MAEhB+uP,EAAWzyP,KAAKwnG,EAAOjkE,QAE3B0vN,EAAWvlP,KAAO,GAClB,MAEJ,KAAK,GACDulP,EAAWphP,KAAO,GAClBohP,EAAW7uN,GAAK6uN,EAAkB,MAAE,IACpCj4L,GAAqB,EACrBC,EAAkBg4L,EAAW7uN,GAEjC,KAAK,GACD6uN,EAAWphP,KAAO,GAClBohP,EAAWphP,KAAO,IAEbkpD,GAA8BI,EAAWttD,QAC1CstD,EAAWttD,SAGnB,KAAK,GAGD,GAFAolP,EAAWphP,KAAO,IAEbmpD,EAAoB,CACrBi4L,EAAWvlP,KAAO,GAClB,MAGJ,MAAMutD,EAEV,KAAK,GACD,OAAOg4L,EAAWx3I,OAAO,IAE7B,KAAK,GACD,OAAOw3I,EAAWx3I,OAAO,IAE7B,KAAK,GACDjhD,GAA6B,EAC7By4L,EAAWvlP,KAAO,EAClB,MAEJ,KAAK,GACDulP,EAAWvlP,KAAO,GAClB,MAEJ,KAAK,GACDulP,EAAWphP,KAAO,GAClBohP,EAAWtuN,GAAKsuN,EAAkB,MAAE,GACpCx4L,GAAqB,EACrBC,EAAkBu4L,EAAWtuN,GAEjC,KAAK,GACDsuN,EAAWphP,KAAO,GAClBohP,EAAWphP,KAAO,IAEb2oD,GAA8BI,EAAW/sD,QAC1C+sD,EAAW/sD,SAGnB,KAAK,GAGD,GAFAolP,EAAWphP,KAAO,IAEb4oD,EAAoB,CACrBw4L,EAAWvlP,KAAO,GAClB,MAGJ,MAAMgtD,EAEV,KAAK,GACD,OAAOu4L,EAAWx3I,OAAO,IAE7B,KAAK,GACD,OAAOw3I,EAAWx3I,OAAO,IAE7B,KAAK,GACD,OAAOw3I,EAAW9uN,OAAO,SAAUsuN,GAEvC,KAAK,GACL,IAAK,MACD,OAAOQ,EAAW7vN,UAG/B4vN,EAAWhjP,KAAM,CAAC,CAAC,EAAG,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAG,CAAE,GAAI,IAAK,CAAC,GAAG,CAAE,GAAI,UASrF0zO,GAAO9jP,UAAUszP,oBAAsB,WACnC,IAAInT,EAAS/vO,KAEb,OAAOA,KAAK61O,aAAazpB,WAAWtzM,QAAO,SAAUk8E,GAGjD,IADU+6I,EAAOwG,gBAAgBvhJ,EAAKzuC,QAElC,OAAO,EAEX,IAAKwpL,EAAOmH,yBAAyBliJ,EAAKzuC,QACtC,OAAO,EAIX,IAAIo/E,EAAe3wC,EAAKuf,kBACxB,MAAwB,SAAjBoxB,GAA4C,WAAjBA,MAI1C+tG,GAAO9jP,UAAUwqP,iBAAmB,SAAUtoP,GAC1C,IAAIm+O,EAASjwO,KAEb,IAC2B,cAAnBlO,EAAMwlG,WAAgD,wBAAnBxlG,EAAMwlG,UACzCt3F,KAAKmjP,gBAAgBrxP,GACK,sBAAnBA,EAAMwlG,UACbt3F,KAAKojP,uBAAuBtxP,GACD,+BAApBA,EAAMwlG,UACbt3F,KAAKqjP,0BAA0BvxP,GACJ,6BAApBA,EAAMwlG,UACbt3F,KAAKsjP,wBAAwBxxP,GACtBA,EAAMmmG,aAAa6jJ,eAC1B97O,KAAKujP,0BAA0BzxP,GACO,oBAA/BA,EAAMmmG,aAAammB,QAC1Bp+G,KAAKwjP,wBAAwB1xP,GACtBA,EAAMosH,oBAEbpsH,EAAM88F,KAAK,mBAAmB,SAAUuO,GACpC8yI,EAAOmK,iBAAiBj9I,MAGlC,MAAOzsG,GACL6qH,EAAS1mH,QAAQjD,MAAM,gCAAiClB,KAUhEgjP,GAAO9jP,UAAUuzP,gBAAkB,SAAUrxP,GACzC,IAAIkmG,EAAUlmG,EAAMmmG,aAEfD,EAAQqQ,SAAYrQ,EAAQ4mB,WAK5B5+G,KAAKk2O,mBAGNl2O,KAAKy4O,0BAGCz4O,KAAKw+O,kBAAkBxmJ,EAAQqQ,QAASrQ,EAAQ4mB,WACtD6kI,eAAe3xP,IAXfypH,EAAS1mH,QAAQjD,MAAM,gCAoB/B8hP,GAAO9jP,UAAUyzP,0BAA4B,SAAUvxP,GACnD,IAAIs+O,EAASpwO,KAEb,GAAIlO,EAAMsW,cACNmzG,EAAS1mH,QAAQyF,KAAK,8CAAgDxI,EAAM+qH,iBADhF,CAKA,IAAI7kB,EAAUlmG,EAAMmmG,aACpB,GAAM,gBAAiBD,GAA2C,iBAAxBA,EAAQ+jJ,aAA8B,mBAAoB/jJ,GAA2C,iBAAxBA,EAAQ+jJ,aAA8B,YAAa/jJ,GAAcA,EAAQ1gF,mBAAmB3gB,OAAY,cAAeqhG,GAAyC,iBAAtBA,EAAQgkJ,UAAzQ,CAMA,IAAIt2H,EAAM9+D,KAAK8+D,MACf,GAAIA,EAAM1tB,EAAQgkJ,UAAY,KAAiBt2H,EAAM1tB,EAAQgkJ,UAAY,IAErEzgI,EAAS1mH,QAAQgD,IAAI,gEAFzB,CAMA,IAAI2xB,EAAS13B,EAAM+qH,YACnB,GAAIrzF,IAAWxpB,KAAKkhK,SAAWlpE,EAAQ+jJ,cAAgB/7O,KAAKszO,UAA5D,CAKA,GAAItzO,KAAKo3O,0BAA0B5+N,IAAIgR,IACnC,GAAIxpB,KAAKo3O,0BAA0B9jP,IAAIk2B,GAAQhR,IAAIw/E,EAAQ8jJ,gBAAiB,CAGxE,IAAIxnP,GAAM,EAAIskF,EAAOwoI,2BAA2B,CAC5C06B,eAAgB9jJ,EAAQ8jJ,iBAS5B,OAPI97O,KAAKo3O,0BAA0B9jP,IAAIk2B,GAAQl2B,IAAI0kG,EAAQ8jJ,gBAAgBM,SACvEp8O,KAAKo3O,0BAA0B9jP,IAAIk2B,GAAQl2B,IAAI0kG,EAAQ8jJ,gBAAgBM,SAAS11O,OAAOpS,IAEvF0L,KAAKo3O,0BAA0B9jP,IAAIk2B,GAAQl2B,IAAI0kG,EAAQ8jJ,gBAAgB9qP,OAAOsD,GAC9E0L,KAAKk8O,aAAa,6BAA6B,EAAIhxI,EAAiBr2G,SAAS,GAAI20B,GAAQ,EAAI0hF,EAAiBr2G,SAAS,GAAImjG,EAAQ+jJ,YAAaznP,EAAI2jG,sBAExJj4F,KAAKo3O,0BAA0B9jP,IAAIk2B,GAAQysC,OAAO+hC,EAAQ8jJ,sBAI9D97O,KAAKo3O,0BAA0B7+N,IAAIiR,EAAQ,IAAIipL,EAAM59M,SAIzD,IAAIyiB,EAAU,GACVy0M,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBv5N,EAEtB,IACI,IAAK,IAA8Dw5N,EAA1DC,GAAa,EAAIx2N,EAAcd,SAASmjG,EAAQ1gF,WAAoBy0M,GAA8BG,EAASC,EAAWzuN,QAAQC,MAAOouN,GAA6B,EAAM,CAC7K,IAAInvN,EAASsvN,EAAOx4N,MAEE,iBAAXkJ,IAGPoD,KAAK+1O,qBAAqBv9N,IAAI5b,IAC9B0a,EAAQtnB,KAAK4M,KAGvB,MAAOtI,GACL03N,GAAqB,EACrBC,EAAkB33N,EACpB,QACE,KACSy3N,GAA8BI,EAAWtuN,QAC1CsuN,EAAWtuN,SAEjB,QACE,GAAImuN,EACA,MAAMC,GAKlB,GAAuB,IAAnB30M,EAAQ5nB,OACRsQ,KAAKozO,UAAUxkO,KAAK,sCAAuC9c,EAAM+qH,aAAa,WAC1EuzH,EAAO8L,aAAa,6BAA6B,EAAIhxI,EAAiBr2G,SAAS,GAAI20B,GAAQ,EAAI0hF,EAAiBr2G,SAAS,GAAImjG,EAAQ+jJ,aAAa,EAAInjK,EAAO4oI,uBAAuB,CAChLs6B,eAAgB9jJ,EAAQ8jJ,iBACzB7jJ,uBAEJ,CAGH,IAAIxlG,EAAU,CACVX,MAAOA,EACPwlB,QAASA,EACT6kO,qBAAsB,SAA8Bv/O,GAChD,IAAIw/O,EAAWhM,EAAO+L,qBAAqBv/O,EAAQ4sB,EAAQwuE,EAAQ+jJ,YAAa/jJ,EAAQ8jJ,gBAExF,OADA1L,EAAOgH,0BAA0B9jP,IAAIk2B,GAAQl2B,IAAI0kG,EAAQ8jJ,gBAAgBM,SAAWA,EAC7EA,GAEX11O,OAAQ,WACJ0pO,EAAOgD,UAAU8I,aAAa,6BAA6B,EAAIhxI,EAAiBr2G,SAAS,GAAI20B,GAAQ,EAAI0hF,EAAiBr2G,SAAS,GAAImjG,EAAQ+jJ,aAAa,EAAInjK,EAAO4oI,uBAAuB,CAC1Ls6B,eAAgB9jJ,EAAQ8jJ,iBACzB7jJ,kBAGXj4F,KAAKo3O,0BAA0B9jP,IAAIk2B,GAAQjR,IAAIy/E,EAAQ8jJ,eAAgB,CACnErpP,QAASA,IAEbuN,KAAKozO,UAAUxkO,KAAK,8BAA+Bnc,WAhGnD8oH,EAAS1mH,QAAQyF,KAAK,8CAAgDxI,EAAM+qH,eA0GpF62H,GAAO9jP,UAAU0zP,wBAA0B,SAAUxxP,GACjD,IAAIu+O,EAAUrwO,KAEd,GAAIlO,EAAMsW,cACNmzG,EAAS1mH,QAAQyF,KAAK,4CAA8CxI,EAAM+qH,iBAD9E,CAKA,IAAIrzF,EAAS13B,EAAM+qH,YACf7kB,EAAUlmG,EAAMmmG,aAChB2jJ,EAAgB5jJ,EAAQ8jJ,eACxBlmN,EAAWoiE,EAAQ+jJ,YACvB,GAAKH,GAAkBhmN,EAAvB,CAMA,IAAI9kB,EAAU9Q,KAAKo3O,0BAA0B5+N,IAAIgR,IAAWxpB,KAAKo3O,0BAA0B9jP,IAAIk2B,GAAQl2B,IAAIsoP,GAGvGl1O,EAAS,SAAgBpS,GACrBwc,EAAQsrO,SACRtrO,EAAQsrO,SAAS11O,OAAOpS,GACjBwc,EAAQre,SAAWqe,EAAQre,QAAQiU,QAC1CoK,EAAQre,QAAQiU,OAAOpS,GAE3B+7O,EAAQ6L,aAAa,6BAA6B,EAAIhxI,EAAiBr2G,SAAS,GAAI20B,GAAQ,EAAI0hF,EAAiBr2G,SAAS,GAAI+gC,EAAUthC,EAAI2jG,iBAEhJ,GAAKj4F,KAAK+1O,qBAAqBv9N,IAAIw/E,EAAQp7F,QAKpC,GAAIo7F,EAAQ0rJ,aACf,IAAK1jP,KAAK+1O,qBAAqBv9N,IAAIw/E,EAAQ0rJ,aAIvC,YAHAh9O,GAAO,EAAIkyE,EAAOyoI,uBAAuB,CACrCy6B,eAAgB9jJ,EAAQ4jJ,qBAa7B,CACH,IAAIQ,EAAW,IAAKp8O,KAAK+1O,qBAAqBziP,IAAI0kG,EAAQp7F,QAA3C,CAAoDoD,KAAKozO,UAAW5pN,EAAQoM,EAAUoiE,EAAQ8jJ,eAAgBhqP,EAAOgf,GAAWA,EAAQre,SACvJ,GAAKqe,GAQD,IAAKA,EAAQsrO,WACTtrO,EAAQsrO,SAAWA,EACftrO,EAAQre,SAAS,CAIjB,IAAKqe,EAAQre,QAAQquK,QAAQt/H,SAAS5L,GAMlC,YAHAlvB,GAAO,EAAIkyE,EAAOwoI,2BAA2B,CACzC06B,eAAgB9jJ,EAAQ4jJ,iBAIhC,IAAK9qO,EAAQre,QAAQ6kB,QAAQkqB,SAASw2D,EAAQp7F,QAK1C,YAHA8J,GAAO,EAAIkyE,EAAOyoI,uBAAuB,CACrCy6B,eAAgB9jJ,EAAQ4jJ,iBAOhC,IAAIrpP,EAAU,CACVupP,eAAgBF,EAChBr8O,KAAM,aACNkN,OAAQ,mDAERwvO,EAAS,GACT9K,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkB3+O,EAEtB,IACI,IAAK,IAAsE4+O,EAAlEC,GAAa,EAAI57O,EAAcd,SAASic,EAAQre,QAAQquK,WAAoBqwE,GAA8BG,EAASC,EAAW7zO,QAAQC,MAAOwzO,GAA6B,EAAM,CACrL,IAAIwS,EAAQrS,EAAO59O,MAEfiwP,IAAU/tN,IACVqmN,EAAO0H,GAASpxP,IAG1B,MAAO+B,GACL88O,GAAqB,EACrBC,EAAkB/8O,EACpB,QACE,KACS68O,GAA8BI,EAAW1zO,QAC1C0zO,EAAW1zO,SAEjB,QACE,GAAIuzO,EACA,MAAMC,GAKlBrxO,KAAKozO,UAAU8I,aAAa,6BAA6B,EAAIhxI,EAAiBr2G,SAAS,GAAI20B,EAAQyyN,IAEnGnrO,EAAQre,QAAQ1B,QAAQqrP,SAlE3Bp8O,KAAKo3O,0BAA0B5+N,IAAIgR,IACpCxpB,KAAKo3O,0BAA0B7+N,IAAIiR,EAAQ,IAAIipL,EAAM59M,SAEzDic,EAAU9Q,KAAKo3O,0BAA0B9jP,IAAIk2B,GAAQjR,IAAIqjO,EAAe,CACpEQ,SAAUA,IAoElBp8O,KAAKozO,UAAUxkO,KAAK,4BAA6BwtO,QA/FjD11O,GAAO,EAAIkyE,EAAOyoI,uBAAuB,CACrCy6B,eAAgB9jJ,EAAQ4jJ,oBAwGpClI,GAAO9jP,UAAU2zP,0BAA4B,SAAUzxP,GACnD,IAAI03B,EAAS13B,EAAM+qH,YACf++H,EAAgB9pP,EAAMmmG,aAAa6jJ,eACnChrO,EAAU9Q,KAAKo3O,0BAA0B5+N,IAAIgR,IAAWxpB,KAAKo3O,0BAA0B9jP,IAAIk2B,GAAQl2B,IAAIsoP,GAC3G,GAAK9qO,EAEE,GAAwB,8BAApBhf,EAAMwlG,UACbikB,EAAS1mH,QAAQgD,IAAI/F,GACjBgf,EAAQsrO,SACRtrO,EAAQsrO,SAAS11O,OAAO5U,GACjBgf,EAAQre,SAAWqe,EAAQre,QAAQiU,QAC1CoK,EAAQre,QAAQiU,OAAO5U,QAExB,GAAIgf,EAAQsrO,SAAU,CACzB,IAAIA,EAAWtrO,EAAQsrO,SACnBA,EAAShvJ,QAAUgvJ,EAAShvJ,OAAO5rD,SAAS1vC,EAAMwlG,YAClD8kJ,EAASwH,YAAY9xP,KAWjC4hP,GAAO9jP,UAAU4zP,yBACTlO,GAAS,EAAI3jN,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASmwN,EAAU/xP,GAC9F,IAAIkmG,EAASxuE,EAAQo1F,EAAWi+C,EAAWinF,EAAsBp/F,EAAQic,EAAe+/E,EAAkBqD,EAAkBvS,EAA4BC,EAAoBC,EAAiBE,EAAYD,EAAQqS,EAEjN,OAAOtyN,EAAc78B,QAAQm/B,MAAK,SAAoBiwN,GAClD,OACI,OAAQA,EAAWpiP,KAAOoiP,EAAWvmP,MACjC,KAAK,EAMD,GALAs6F,EAAUlmG,EAAMsrH,iBAChB5zF,EAAS13B,EAAM+qH,YACf+B,EAAY5mB,EAAQ4mB,UACpBi+C,EAAY7kE,EAAQ8mB,gBAEHpsH,IAAX82B,QAAsC92B,IAAdmqK,QAAyCnqK,IAAdmqK,EAA0B,CAC/EonF,EAAWvmP,KAAO,EAClB,MAGJ,OAAOumP,EAAW9vN,OAAO,UAE7B,KAAK,EAOD,GAHAn0B,KAAKm3O,sBAAsB3tN,GAAUxpB,KAAKm3O,sBAAsB3tN,IAAW,MAC3Es6N,EAAuB9jP,KAAKm3O,sBAAsB3tN,GAAQqzI,IAAc,GA9hF5D,KAgiFiDj2G,KAAK8+D,OAAQ,CACtEu+H,EAAWvmP,KAAO,GAClB,MAIJ,OADA69G,EAAS1mH,QAAQsO,MAAM,0CAA4CqmB,EAAS,IAAMqzI,EAAY,OAASinF,EAAuB,yBACvHG,EAAW9vN,OAAO,UAE7B,KAAK,GAQD,GAFAuwH,EAAS1kJ,KAAKo2O,YAAYuG,uBAAuB/9H,EAAWi+C,GAEhD,CACRonF,EAAWvmP,KAAO,GAClB,MAIJ,OADA69G,EAAS1mH,QAAQwgB,KAAK,yCAA2CwnJ,EAAY,iCACtEonF,EAAW9vN,OAAO,UAE7B,KAAK,GAKD,OAJAwsI,EAAgB,IAEFn3I,GAAU,CAACk7H,GACzBu/F,EAAWvmP,KAAO,IACX,EAAIi0B,EAAU5gC,SAASkjP,EAAOxzE,4BAA4BzgK,KAAKgzO,WAAYhzO,KAAKozO,UAAWzyE,GAAe,IAErH,KAAK,GAgBD,OAdA3gK,KAAKm3O,sBAAsB3tN,GAAQqzI,GAAaj2G,KAAK8+D,MAQrDg7H,EAAmB,CACf9hI,UAAWq1H,EAAOx0E,cAClB3gD,WAAY9+G,KAAKgzO,WAAWkF,oBAC5BgM,WAAY,IAEhBD,EAAWvmP,KAAO,IACX,EAAIi0B,EAAU5gC,SAASkjP,EAAOr0E,wBAAwB8gF,EAAiBwD,WAAYlkP,KAAKkhK,QAASlhK,KAAKszO,UAAWtzO,KAAKgzO,WAAYxpN,EAAQk7H,EAAQ,CAAEtyJ,KAAM,aAErK,KAAK,GAED,OADA6xP,EAAWvmP,KAAO,IACX,EAAIi0B,EAAU5gC,SAASiP,KAAKozO,UAAU8I,aAAa,oBAAoB,EAAIhxI,EAAiBr2G,SAAS,GAAI20B,GAAQ,EAAI0hF,EAAiBr2G,SAAS,GAAI6vJ,EAAO9uH,SAAU8qN,MAE/K,KAAK,GAED,OADAuD,EAAWvmP,KAAO,IACX,EAAIi0B,EAAU5gC,SAASiP,KAAK62O,+BAA+BsN,8BAA8B36N,EAAQk7H,EAAO9uH,WAEnH,KAAK,GAOD,IANAmuN,EAAmBE,EAAW3uN,KAC9Bk8M,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBh/O,EAClBuxP,EAAWpiP,KAAO,GAEb+vO,GAAa,EAAIj8O,EAAcd,SAASkvP,KAAqBvS,GAA8BG,EAASC,EAAWl0O,QAAQC,MAAO6zO,GAA6B,EAC5JwS,EAASrS,EAAOj+O,MAEhBsM,KAAK2+G,eAAeqlI,EAAOjoF,YAAaioF,EAAOhlI,YAAY,GAE/DilI,EAAWvmP,KAAO,GAClB,MAEJ,KAAK,GACDumP,EAAWpiP,KAAO,GAClBoiP,EAAW7vN,GAAK6vN,EAAkB,MAAE,IACpCxS,GAAqB,EACrBC,EAAkBuS,EAAW7vN,GAEjC,KAAK,GACD6vN,EAAWpiP,KAAO,GAClBoiP,EAAWpiP,KAAO,IAEb2vO,GAA8BI,EAAW/zO,QAC1C+zO,EAAW/zO,SAGnB,KAAK,GAGD,GAFAomP,EAAWpiP,KAAO,IAEb4vO,EAAoB,CACrBwS,EAAWvmP,KAAO,GAClB,MAGJ,MAAMg0O,EAEV,KAAK,GACD,OAAOuS,EAAWx4I,OAAO,IAE7B,KAAK,GACD,OAAOw4I,EAAWx4I,OAAO,IAE7B,KAAK,GACL,IAAK,MACD,OAAOw4I,EAAW7wN,UAG/BywN,EAAW7jP,KAAM,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAG,CAAE,GAAI,UAG9C,SAAUokP,GACb,OAAO9O,EAAOp5O,MAAM8D,KAAM2C,aAYlC+wO,GAAO9jP,UAAUuqP,kBAAoB,SAAUroP,EAAO0lG,EAAQC,GAS1D,IAAIlxC,EAASixC,EAAOjxC,OAEhBs2L,EAAM78O,KAAKu2O,gBAAgBhwL,GAC1Bs2L,IAQD78O,KAAKk3O,yBAAyB3wL,KACL,QAArBixC,EAAOE,YACP6jB,EAAS1mH,QAAQgD,IAAI,kBAAoB2/F,EAAOjkE,OAAS,OAASgzB,GAElEvmD,KAAKo2O,YAAY0H,wBAAwBtmJ,EAAOjkE,SACpB,UAArBikE,EAAOE,YAA0B13F,KAAK61O,aAAa3gJ,QAAQ3uC,GAAQ89L,mCAC1E9oI,EAAS1mH,QAAQgD,IAAI,oBAAsB2/F,EAAOjkE,OAAS,OAASgzB,GACpEvmD,KAAKo2O,YAAY0H,wBAAwBtmJ,EAAOjkE,UAIxDspN,EAAIyH,iBAAiBxyP,EAAO0lG,EAAQC,KASxCi8I,GAAO9jP,UAAUwzP,uBAAyB,SAAUtxP,GAChD,IAAIkmG,EAAUlmG,EAAMmmG,aACpB,GAAuB,YAAnBD,EAAQh6C,OAAsB,CAI9B,IAAI48G,EAAM,IAAI2pF,GAAuBzyP,GACrCkO,KAAK82O,yBAAyB9mP,KAAK4qK,QAChC,GAAuB,yBAAnB5iE,EAAQh6C,OAAmC,CAClD,IAAIwmM,EAAO,IAAIC,GAAmC3yP,GAClDkO,KAAK+2O,qCAAqC/mP,KAAKw0P,KAUvD9Q,GAAO9jP,UAAUyyP,iCAAkC,EAAI1wN,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASgxN,IAC1H,IAEIC,EAAUC,EAFVtU,EAAUtwO,KAGd,OAAO0xB,EAAc78B,QAAQm/B,MAAK,SAAoB6wN,GAClD,OACI,OAAQA,EAAWhjP,KAAOgjP,EAAWnnP,MACjC,KAAK,EACD,IAAKsC,KAAKg3O,2BAA4B,CAClC6N,EAAWnnP,KAAO,EAClB,MAGJ,OAAOmnP,EAAW1wN,OAAO,UAE7B,KAAK,EAsBD,OArBAn0B,KAAKg3O,4BAA6B,EAElC6N,EAAWhjP,KAAO,EAIlB8iP,EAAW3kP,KAAK82O,yBAEhB92O,KAAK82O,yBAA2B,GAChC8N,EAAgB5kP,KAAK+2O,qCAErB/2O,KAAK+2O,qCAAuC,GAS5C8N,EAAWnnP,KAAO,IACX,EAAIi0B,EAAU5gC,SAAS4I,EAAW9E,QAAQqE,IAAIyrP,GAAU,SAAU/pF,GACrE,OAAO01E,EAAQwU,+BAA+BlqF,OAGtD,KAAK,GAED,OADAiqF,EAAWnnP,KAAO,IACX,EAAIi0B,EAAU5gC,SAAS4I,EAAW9E,QAAQqE,IAAI0rP,GAAe,SAAUj+O,GAC1E,OAAO2pO,EAAQyU,2CAA2Cp+O,OAGlE,KAAK,GACDk+O,EAAWnnP,KAAO,GAClB,MAEJ,KAAK,GACDmnP,EAAWhjP,KAAO,GAClBgjP,EAAWzwN,GAAKywN,EAAkB,MAAE,GAEpCtpI,EAAS1mH,QAAQjD,MAAM,sCAAwCizP,EAAWzwN,IAE9E,KAAK,GAID,OAHAywN,EAAWhjP,KAAO,GAElB7B,KAAKg3O,4BAA6B,EAC3B6N,EAAWp5I,OAAO,IAE7B,KAAK,GACL,IAAK,MACD,OAAOo5I,EAAWzxN,UAG/BsxN,EAAW1kP,KAAM,CAAC,CAAC,EAAG,GAAI,GAAI,UAQrC0zO,GAAO9jP,UAAUk1P,gCACTvP,GAAS,EAAI5jN,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASsxN,EAAUpqF,GAC9F,IAAIrnI,EAAQqC,EAAU94B,EAAMypD,EAAQs2L,EAAKoI,EAAWC,EAASC,EAAWzgG,EAExE,OAAOhzH,EAAc78B,QAAQm/B,MAAK,SAAoBoxN,GAClD,OACI,OAAQA,EAAWvjP,KAAOujP,EAAW1nP,MACjC,KAAK,EAUD,GATA61B,EAASqnI,EAAIrnI,OACbqC,EAAWglI,EAAIhlI,SACf94B,EAAO89J,EAAImB,YACXx1G,EAASzpD,EAAKurG,QACdw0I,EAAM//O,EAAK8hH,UAGXrD,EAAS1mH,QAAQgD,IAAI,2BAA6B07B,EAAS,IAAMqC,EAAY,QAAU2wB,EAAS,MAAQzpD,EAAK+hH,WAAa,QAAU+7C,EAAIwB,UAAY,KAE9I7oI,IAAWvzB,KAAKkhK,QAAU,CAC5BkkF,EAAW1nP,KAAO,GAClB,MAGJ,GAAIsC,KAAKu2O,gBAAgBhwL,GAAS,CAC9B6+L,EAAW1nP,KAAO,GAClB,MAIJ,OADA69G,EAAS1mH,QAAQsO,MAAM,yCAA2CojD,GAC3D6+L,EAAWjxN,OAAO,UAE7B,KAAK,GAID,GAHA8wN,EAAYjlP,KAAKu2O,gBAAgBhwL,GACjC2+L,EAAUllP,KAAKo2O,YAAY/c,gBAAgB9lM,EAAQqC,GAEtC,CACTwvN,EAAW1nP,KAAO,GAClB,MAIJ,OADA69G,EAAS1mH,QAAQsO,MAAM,wCAA0CowB,EAAS,IAAMqC,GACzEwvN,EAAWjxN,OAAO,UAE7B,KAAK,GAGD,OAFAixN,EAAWvjP,KAAO,GAClBujP,EAAW1nP,KAAO,IACX,EAAIi0B,EAAU5gC,SAASk0P,EAAUI,qBAAqBvoP,EAAKgiH,WAAYhiH,EAAK+hH,WAAYtrF,EAAQ2xN,IAE3G,KAAK,GACDE,EAAW1nP,KAAO,GAClB,MAEJ,KAAK,GACD0nP,EAAWvjP,KAAO,GAClBujP,EAAWhxN,GAAKgxN,EAAkB,MAAE,IAEpC7pI,EAAS1mH,QAAQyF,KAAK,uCAAyCwC,EAAK+hH,WAAa,gBAAkBtrF,EAAS,IAAM2xN,EAAQtvN,SAAUwvN,EAAWhxN,IAEnJ,KAAK,GACD,OAAOgxN,EAAWjxN,OAAO,UAE7B,KAAK,GACD,GAAIn0B,KAAKw2O,gBAAgBjwL,GAAS,CAC9B6+L,EAAW1nP,KAAO,GAClB,MAIJ,OADA69G,EAAS1mH,QAAQgD,IAAI,yCAA2C0uD,GACzD6+L,EAAWjxN,OAAO,UAE7B,KAAK,GAGD,GAFAgxN,EAAYnlP,KAAKw2O,gBAAgBjwL,GAAQs2L,GAE1B,CACXuI,EAAW1nP,KAAO,GAClB,MAIJ,OADA69G,EAAS1mH,QAAQgD,IAAI,oCAAsCglP,EAAM,YAAct2L,GACxE6+L,EAAWjxN,OAAO,UAE7B,KAAK,GAED,OADAixN,EAAW1nP,KAAO,IACX,EAAIi0B,EAAU5gC,SAASo0P,EAAUG,qBAAqB1qF,IAEjE,KAAK,GACD,GAAIwqF,EAAW9vN,KAAM,CACjB8vN,EAAW1nP,KAAO,GAClB,MAIJ,OADA69G,EAAS1mH,QAAQgD,IAAI,wCAA0C0uD,EAAS,MAAQzpD,EAAK+hH,YAC9EumI,EAAWjxN,OAAO,UAE7B,KAAK,GASD,GAPAymI,EAAI2qF,MAAQ,WACRJ,EAAUK,oBAAoB5qF,MAIlClW,EAAS1kJ,KAAKo2O,YAAY/c,gBAAgB9lM,EAAQqC,MAElC8uH,EAAOgvD,aAAe,CAClC0xC,EAAW1nP,KAAO,GAClB,MAKJ,OAFA69G,EAAS1mH,QAAQgD,IAAI,4CACrB+iK,EAAI2qF,QACGH,EAAWjxN,OAAO,UAE7B,KAAK,GAEDn0B,KAAK4O,KAAK,wBAAyBgsJ,GAEvC,KAAK,GACL,IAAK,MACD,OAAOwqF,EAAWhyN,UAG/B4xN,EAAWhlP,KAAM,CAAC,CAAC,GAAI,UAGvB,SAAUylP,GACb,OAAOlQ,EAAOr5O,MAAM8D,KAAM2C,aASlC+wO,GAAO9jP,UAAUm1P,4CACTvP,GAAS,EAAI7jN,EAAU/0B,SAAQ,SAAU+J,GACzC40G,EAAS1mH,QAAQgD,IAAI,uCAAyC8O,EAAa4sB,OAAS,IAAO5sB,EAAaivB,SAAW,QAAUjvB,EAAay1J,UAAY,KAKtJp8J,KAAK4O,KAAK,oCAAqCjI,MAG5C,SAAU++O,GACb,OAAOlQ,EAAOt5O,MAAM8D,KAAM2C,aAsBlC+wO,GAAO9jP,UAAU4uP,kBAAoB,SAAUj4L,EAAQq4D,GACnD,IAAI+mI,OAAa,EACb9I,OAAM,EAGV,IADAt2L,EAASA,GAAU,SAEfo/L,EAAa3lP,KAAKw2O,gBAAgBjwL,MAE9BvmD,KAAKw2O,gBAAgBjwL,GAAUo/L,EAAa,IAGhD9I,EAAM8I,EAAW/mI,IAEb,OAAOi+H,EAIf,IAAIM,EAAWjJ,EAAWwC,mBAAmB93H,GAC7C,IAAKu+H,EACD,MAAM,IAAIjJ,EAAW0R,gBAAgB,+BAAgC,iCAAmChnI,EAAY,MAaxH,OAXAi+H,EAAM,IAAIM,EAAS,CACf5pN,OAAQvzB,KAAKkhK,QACb5iD,OAAQt+G,KACR0+J,UAAW1+J,KAAKgzO,WAChBtyE,SAAU1gK,KAAKozO,UACf7sL,OAAQA,IAGRo/L,IACAA,EAAW/mI,GAAai+H,GAErBA,GAQXnJ,GAAO9jP,UAAUujP,aACTsC,GAAS,EAAI9jN,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASmyN,EAAU5wP,GAC9F,IAAI2kP,EACJ,OAAOloN,EAAc78B,QAAQm/B,MAAK,SAAoB8xN,GAClD,OACI,OAAQA,EAAWjkP,KAAOikP,EAAWpoP,MACjC,KAAK,EAKD,OAJAk8O,EAAO,IAEF55O,KAAKkhK,SAAW,GACrB4kF,EAAWpoP,KAAO,GACX,EAAIi0B,EAAU5gC,SAASiP,KAAKgzO,WAAW/O,KAAK1kE,EAAYhtJ,UAAUtd,KAE7E,KAAK,EACD2kP,EAAK55O,KAAKkhK,SAAS,WAAalhK,KAAKszO,WAAawS,EAAWxwN,KAE7DrgC,EAAIotK,WAAau3E,EAErB,KAAK,EACL,IAAK,MACD,OAAOkM,EAAW1yN,UAG/ByyN,EAAW7lP,UAGX,SAAU+lP,GACb,OAAOtQ,EAAOv5O,MAAM8D,KAAM2C,aAwBlC,IAAI4hP,GAAyB,SAASA,EAAuBzyP,IACzD,EAAI8/B,EAAiB/8B,SAASmL,KAAMukP,GAEpC,IAAIvsJ,EAAUlmG,EAAMmmG,aAEpBj4F,KAAKuzB,OAASzhC,EAAM+qH,YACpB78G,KAAK41B,SAAWoiE,EAAQguJ,qBACxBhmP,KAAKo8J,UAAYpkE,EAAQiuJ,WACzBjmP,KAAK+7J,YAAc/jE,EAAQl7F,MAAQ,GACnCkD,KAAKulP,MAAQ,WACT,MAAM,IAAI1zP,MAAM,uDAapB4yP,GAAqC,SAASA,EAAmC3yP,IACjF,EAAI8/B,EAAiB/8B,SAASmL,KAAMykP,GAEpC,IAAIzsJ,EAAUlmG,EAAMmmG,aAEpBj4F,KAAKuzB,OAASzhC,EAAM+qH,YACpB78G,KAAK41B,SAAWoiE,EAAQguJ,qBACxBhmP,KAAKo8J,UAAYpkE,EAAQiuJ,c,+CC1wG7Bt2P,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAEXnD,EAAQsrP,aAiBR,SAAsB3hO,GAIlB,IAHA,IAAIta,EAAM,GACNo1I,EAAQ,iEAEHxlJ,EAAI,EAAGA,EAAI0qB,IAAO1qB,EACvBoQ,GAAOo1I,EAAMljI,OAAOjM,KAAKi8B,MAAMj8B,KAAK8tG,SAAWqhC,EAAMtlJ,SAGzD,OAAOkQ,I,gBC9BX,IAaIkkB,EAAO80I,EAAS3oE,EAbhBrlF,EAAM,EAAQ,IACd/H,EAAS,EAAQ,KACjBg+F,EAAO,EAAQ,KACfmkI,EAAM,EAAQ,KACd92N,EAAS,EAAQ,IACjB7L,EAAU6L,EAAO7L,QACjB4iO,EAAU/2N,EAAOgc,aACjBg7M,EAAYh3N,EAAOwqJ,eACnBgB,EAAiBxrJ,EAAOwrJ,eACxByrE,EAAWj3N,EAAOi3N,SAClBC,EAAU,EACV3jO,EAAQ,GAGR4oG,EAAM,WACR,IAAIzpD,GAAM5gD,KAEV,GAAIyB,EAAM5R,eAAe+wD,GAAK,CAC5B,IAAI3/C,EAAKQ,EAAMm/C,UACRn/C,EAAMm/C,GACb3/C,MAGAisF,EAAW,SAAUp7F,GACvBu4G,EAAIv6G,KAAKgC,EAAM3C,OAGZ81O,GAAYC,IACfD,EAAU,SAAsBhkO,GAG9B,IAFA,IAAI+E,EAAO,GACPxW,EAAI,EACDmT,UAAUjT,OAASF,GAAGwW,EAAKhW,KAAK2S,UAAUnT,MAMjD,OALAiS,IAAQ2jO,GAAW,WAEjBviO,EAAoB,mBAAN5B,EAAmBA,EAAKhF,SAASgF,GAAK+E,IAEtD8d,EAAMshN,GACCA,GAETF,EAAY,SAAwBtkL,UAC3Bn/C,EAAMm/C,IAGmB,WAA9B,EAAQ,GAAR,CAAkBv+C,GACpByhB,EAAQ,SAAU88B,GAChBv+C,EAAQ+nB,SAASxf,EAAIy/F,EAAKzpD,EAAI,KAGvBukL,GAAYA,EAASz/G,IAC9B5hG,EAAQ,SAAU88B,GAChBukL,EAASz/G,IAAI96G,EAAIy/F,EAAKzpD,EAAI,KAGnB84G,GAETzpE,GADA2oE,EAAU,IAAIc,GACCE,MACfhB,EAAQe,MAAMH,UAAYtsE,EAC1BppE,EAAQlZ,EAAIqlF,EAAKmpE,YAAanpE,EAAM,IAG3B/hF,EAAO2rJ,kBAA0C,mBAAfT,cAA8BlrJ,EAAOmrJ,eAChFv1I,EAAQ,SAAU88B,GAChB1yC,EAAOkrJ,YAAYx4G,EAAK,GAAI,MAE9B1yC,EAAO2rJ,iBAAiB,UAAW3sE,GAAU,IAG7CppE,EAvDqB,uBAsDUkhN,EAAI,UAC3B,SAAUpkL,GAChBigD,EAAKhuG,YAAYmyO,EAAI,WAA6B,mBAAI,WACpDnkI,EAAKuoD,YAAYppJ,MACjBqqG,EAAIv6G,KAAK8wD,KAKL,SAAUA,GAChBjuD,WAAWiY,EAAIy/F,EAAKzpD,EAAI,GAAI,KAIlCpwD,EAAOD,QAAU,CACfgoB,IAAK0sN,EACLhgM,MAAOigM,I,6BChFT,IAAI17H,EAAY,EAAQ,KAExB,SAASi8H,EAAkBt9I,GACzB,IAAIp3F,EAASC,EACbgP,KAAKnP,QAAU,IAAIs3F,GAAE,SAAUu9I,EAAWC,GACxC,QAAgBjzO,IAAZ3B,QAAoC2B,IAAX1B,EAAsB,MAAMgE,UAAU,2BACnEjE,EAAU20O,EACV10O,EAAS20O,KAEX3lO,KAAKjP,QAAUy4G,EAAUz4G,GACzBiP,KAAKhP,OAASw4G,EAAUx4G,GAG1BR,EAAOD,QAAQgG,EAAI,SAAU4xF,GAC3B,OAAO,IAAIs9I,EAAkBt9I,K,6BCG/B,IAFA,IAAI+9J,EAAU,mBACVC,EAAU,GACL32P,EAAI,EAAGA,EAAI,KAAQA,EACxB22P,EAAQj0O,OAAO4yF,aAAat1G,IACxB,OAAS,OAASA,EAAEgW,SAAS,KAAK7Q,OAAO,GAAGq3E,cAWpD,SAASo6K,EAAa1yP,GAElB,OADAwyP,EAAQn8O,UAAY,EACbrW,EAAM+I,QAAQypP,GAAS,SAASlzP,GAAK,OAAOmzP,EAAQnzP,MAG/D,SAASuf,EAAU7e,GACf,cAAeA,GACX,IAAK,SACD,MAAO,IAAM0yP,EAAa1yP,GAAS,IACvC,IAAK,SACD,OAAO4pB,SAAS5pB,GAASA,EAAQ,OACrC,IAAK,UACD,OAAOA,EACX,IAAK,SACD,OAAc,OAAVA,EACO,OAEPiD,MAAMC,QAAQlD,GAS9B,SAAwB60B,GAGpB,IAFA,IAAI89N,EAAM,IACNpvP,EAAS,GACJzH,EAAI,EAAGA,EAAI+4B,EAAM74B,SAAUF,EAChCyH,GAAUovP,EACVA,EAAM,IACNpvP,GAAUsb,EAAUgW,EAAM/4B,IAE9B,MAAW,KAAP62P,EACO,KAEApvP,EAAS,IAnBDqvP,CAAe5yP,GAuBtC,SAAyBS,GACrB,IAAIkyP,EAAM,IACNpvP,EAAS,GACT8R,EAAOpZ,OAAOoZ,KAAK5U,GACvB4U,EAAKg9B,OACL,IAAK,IAAIv2C,EAAI,EAAGA,EAAIuZ,EAAKrZ,SAAUF,EAAG,CAClC,IAAIwE,EAAM+U,EAAKvZ,GACfyH,GAAUovP,EAAM,IAAMD,EAAapyP,GAAO,KAC1CqyP,EAAM,IACNpvP,GAAUsb,EAAUpe,EAAOH,IAE/B,MAAW,KAAPqyP,EACO,KAEApvP,EAAS,IAnCLsvP,CAAgB7yP,GAC3B,QACI,MAAM,IAAI7B,MAAM,4BAA8B6B,IA9B1DyyP,EAAQ,MAAQ,MAChBA,EAAQ,MAAQ,MAChBA,EAAQ,MAAQ,MAChBA,EAAQ,MAAQ,MAChBA,EAAQ,MAAQ,MAChBA,EAAQ,KAAQ,MAChBA,EAAQ,MAAQ,OA8DhB31P,EAAOD,QAAU,CAACgiB,UAAWA,I,6BC1F7B5iB,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAEXnD,EAAQi2P,mBAAqBj2P,EAAQq1P,gBAAkBr1P,EAAQk2P,oBAAsBl2P,EAAQm2P,oBAAsBn2P,EAAQmmP,mBAAqBnmP,EAAQ+sP,wBAAqB5qP,EAE7K,IAEIoD,EAASF,EAFD,EAAQ,KAMhB2nD,EAAmB3nD,EAFD,EAAQ,IAM1B4nD,EAA8B5nD,EAFA,EAAQ,IAMtC8nD,EAAa9nD,EAFA,EAAQ,IAMrBg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAI5BrF,EAAQo2P,kBA8RR,SAA2B/nI,EAAWqmI,EAAWE,GAC7C7H,EAAmB1+H,GAAaqmI,EAChCvO,EAAmB93H,GAAaumI,GA9RpC,IAEIxrP,EAAa/D,EAFD,EAAQ,IAIxB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAQvF,IAAIqoP,EAAqB/sP,EAAQ+sP,mBAAqB,GA8BlD5G,EAAqBnmP,EAAQmmP,mBAAqB,GAiBlDgQ,EAAsB,WACtB,SAASA,EAAoBr9J,IACzB,EAAIz3D,EAAiB/8B,SAASmL,KAAM0mP,GAEpC1mP,KAAKkhK,QAAU73E,EAAO91D,OACtBvzB,KAAKszO,UAAYjqJ,EAAOzzD,SACxB51B,KAAKsyB,QAAU+2D,EAAOi1B,OACtBt+G,KAAKgzO,WAAa3pJ,EAAOq1E,UACzB1+J,KAAKozO,UAAY/pJ,EAAOq3E,SACxB1gK,KAAK+nD,QAAUshC,EAAO9iC,OA8B1B,OAJA,EAAI10B,EAAch9B,SAAS6xP,EAAqB,CAAC,CAC7C1yP,IAAK,mBACLN,MAAO,SAA0B5B,EAAO0lG,EAAQC,QAE7CivJ,EAvCe,GA0C1Bn2P,EAAQm2P,oBAAsBA,EAe9B,IAAID,EAAsB,WACtB,SAASA,EAAoBp9J,IACzB,EAAIz3D,EAAiB/8B,SAASmL,KAAMymP,GAEpCzmP,KAAKkhK,QAAU73E,EAAO91D,OACtBvzB,KAAKsyB,QAAU+2D,EAAOi1B,OACtBt+G,KAAKgzO,WAAa3pJ,EAAOq1E,UACzB1+J,KAAKozO,UAAY/pJ,EAAOq3E,SACxB1gK,KAAK+nD,QAAUshC,EAAO9iC,OAqE1B,OA5CA,EAAI10B,EAAch9B,SAAS4xP,EAAqB,CAAC,CAC7CzyP,IAAK,iBACLN,MAAO,SAAwB21F,MAUhC,CACCr1F,IAAK,gBACLN,MAAO,SAAuBo+O,MAY/B,CACC99O,IAAK,uBACLN,MAAO,SAA8BkzP,GACjC,OAAOjtP,EAAW9E,QAAQ9D,SAAQ,KASvC,CACCiD,IAAK,sBACLN,MAAO,SAA6BkzP,GAChC,MAAM,IAAI/0P,MAAM,sEAGjB40P,EA7Ee,GAgF1Bl2P,EAAQk2P,oBAAsBA,EAc9B,IAAIb,EAAkB,SAAUhtK,GAG5B,SAASgtK,EAAgBrmP,EAAMsV,EAAKgpL,IAChC,EAAIjsK,EAAiB/8B,SAASmL,KAAM4lP,GAEpC,IAAIvmM,GAAQ,EAAI7B,EAA4B3oD,SAASmL,MAAO4lP,EAAgB1mP,YAAa,EAAIq+C,EAAiB1oD,SAAS+wP,IAAkB91P,KAAKkQ,KAAM6U,IAKpJ,OAHAwqC,EAAM9/C,KAAOA,EACb8/C,EAAM7sD,KAAO,kBACb6sD,EAAM+/D,eASd,SAA2C9qH,EAAKupM,GAC5C,IAAI5mM,EAAS3C,EAAI9B,KAAO,SAAW8B,EAAI/B,QAEnCsrM,IACA5mM,GAAU,MAAO,EAAInB,EAAOjB,SAASgpM,GAAS3kM,KAAI,SAAUmB,GACxD,OAAOA,EAAI,KAAOwjM,EAAQxjM,MAC3BkC,KAAK,OAKZ,OAFAtF,GAAU,IAlBiB4vP,CAAkCxnM,EAAOw+I,GACzDx+I,EAGX,OAbA,EAAI3B,EAAW7oD,SAAS+wP,EAAiBhtK,GAalCgtK,EAdW,CAepB/zP,OAEFtB,EAAQq1P,gBAAkBA,EA0BDr1P,EAAQi2P,mBAAqB,SAAUM,GAG5D,SAASN,EAAmB3xO,EAAKisJ,IAC7B,EAAIlvI,EAAiB/8B,SAASmL,KAAMwmP,GAEpC,IAAIzoM,GAAS,EAAIP,EAA4B3oD,SAASmL,MAAOwmP,EAAmBtnP,YAAa,EAAIq+C,EAAiB1oD,SAAS2xP,IAAqB12P,KAAKkQ,KAAM6U,IAI3J,OAFAkpC,EAAOvrD,KAAO,qBACdurD,EAAO+iH,QAAUA,EACV/iH,EAGX,OAZA,EAAIL,EAAW7oD,SAAS2xP,EAAoBM,GAYrCN,EAb2C,CAcpD30P,Q,6BC9PF,SAASsiP,EAAWv+M,GAEhBjmC,OAAOyD,eAAe4M,KAAM,WAAY,CACpC3M,YAAY,EACZK,MAAOkiC,IAGX51B,KAAKk0O,WAAa,GAClBl0O,KAAK+I,KAAO,GACZ/I,KAAKo4O,SAAWhE,EAAmBmH,WACnCv7O,KAAKs4O,OAAQ,EACbt4O,KAAKigH,SAAW,GAWpBk0H,EAAWuH,YAAc,SAAUzmP,EAAK2gC,GACpC,IAAI40D,EAAM,IAAI2pJ,EAAWv+M,GACzB,IAAK,IAAItd,KAAQrjB,EACTA,EAAIpF,eAAeyoB,KACnBkyE,EAAIlyE,GAAQrjB,EAAIqjB,IAGxB,OAAOkyE,GAQX2pJ,EAAWvkP,UAAUm3P,UAAY,WAC7B,MAAO,CACH7S,WAAYl0O,KAAKk0O,WACjBnrO,KAAM/I,KAAK+I,KACXqvO,SAAUp4O,KAAKo4O,SACfE,MAAOt4O,KAAKs4O,MACZr4H,SAAUjgH,KAAKigH,WASvBk0H,EAAWvkP,UAAUovK,eAAiB,WAClC,OAAOh/J,KAAK+I,KAAK,WAAa/I,KAAK41B,WAQvCu+M,EAAWvkP,UAAUsvK,eAAiB,WAClC,OAAOl/J,KAAK+I,KAAK,cAAgB/I,KAAK41B,WAQ1Cu+M,EAAWvkP,UAAUo3P,eAAiB,WAClC,OAAOhnP,KAAKigH,SAASgnI,qBAAuB,MAQhD9S,EAAWvkP,UAAUs3P,UAAY,WAC7B,OAAOlnP,KAAKo4O,UAAYhE,EAAmBoH,SAQ/CrH,EAAWvkP,UAAU8jN,WAAa,WAC9B,OAAO1zM,KAAKo4O,UAAYhE,EAAmBiE,UAQ/ClE,EAAWvkP,UAAUu3P,aAAe,WAChC,OAAOnnP,KAAKo4O,UAAYhE,EAAmBmH,YAQ/CpH,EAAWvkP,UAAUqkJ,QAAU,WAC3B,OAAqB,GAAdj0I,KAAKs4O,OAMhBnE,EAAWC,mBAAqB,CAC5BiE,SAAU,EACVkD,WAAY,EACZC,SAAU,GAGd,IAAIpH,EAAqBD,EAAWC,mBAGpC5jP,EAAOD,QAAU4jP,G,6BCtKjB5jP,EAAQ6hK,OAAS7hK,EAAQ0M,MAAQ,EAAQ,MACzC1M,EAAQ4hK,OAAS5hK,EAAQgiB,UAAY,EAAQ,O,6BCiB7C,IAAIm6E,EAAe,EAAQ,IAAUA,aACjCgoD,EAAc,EAAQ,KAEtB8qB,EAAQ,EAAQ,IAyBpB,SAAS+rE,EAAWhlL,EAAQhzB,GACxBvzB,KAAKumD,OAASA,EACdvmD,KAAKuzB,OAASA,EACdvzB,KAAKonP,QAAS,EACdpnP,KAAKxN,KAAO+gC,EACZvzB,KAAKu5M,eAAiBhmL,EACtBvzB,KAAKw4F,WAAa,EAClBx4F,KAAKqnP,eAAiB,EACtBrnP,KAAK4tG,KAAO,KACZ5tG,KAAK03F,WAAa,KAClB13F,KAAKotF,OAAS,CACVoK,OAAQ,MAEZx3F,KAAKsnP,cAAe,EACpBtnP,KAAK25M,sBAETn6C,EAAMvsJ,SAASs4N,EAAY7+I,GAK3B6+I,EAAW37O,UAAU23P,cAAgB,WACjCvnP,KAAKsnP,cAAe,GAQxB/b,EAAW37O,UAAU43P,YAAc,WAC/B,OAAOxnP,KAAKsnP,cAYhB/b,EAAW37O,UAAU63P,mBAAqB,SAAU31P,EAAO41P,GACvD,GAAwB,kBAApB51P,EAAMwlG,UAAV,CAIAt3F,KAAKsnP,cAAe,EAEpBtnP,KAAKotF,OAAOoK,OAAS1lG,EAErB,IAAI2lG,EAAgBz3F,KAAK03F,WACzB13F,KAAK03F,WAAa5lG,EAAM0rH,wBAAwB9lB,WAEhD,IAAIyiH,EAAUn6M,KAAKxN,KACnBwN,KAAKxN,KAqLT,SAA8Bm1P,EAAY7oM,EAAa4oM,GACnD,IAAK5oM,GAAeA,IAAgB6oM,EAChC,OAAOA,EAKX,IAAKnoF,EAAMt0E,kBAAkBpsC,GACzB,OAAO6oM,EAGX,IAAKD,EACD,OAAO5oM,EAQX,IAAI8oM,EAAe,SAASj2O,KAAKmtC,GACjC,IAAK8oM,EAAc,CACf,IAAI7M,EAAU2M,EAAUG,0BAA0B/oM,GAClD8oM,EAAe7M,EAAQrvN,MAAK,SAAUtsB,GAClC,OAAOA,IAAMuoP,KAIrB,GAAIC,EACA,OAAO9oM,EAAc,KAAO6oM,EAAa,IAE7C,OAAO7oM,EApNKgpM,CAAqB9nP,KAAKuzB,OAAQzhC,EAAM0rH,wBAAwBqwD,YAAa65E,GAEzF1nP,KAAKu5M,eAAiBznN,EAAM0rH,wBAAwBqwD,aAAe7tK,KAAKuzB,OACpEkkE,IAAkBz3F,KAAK03F,aACvB13F,KAAK25M,sBACL35M,KAAK4O,KAAK,wBAAyB9c,EAAOkO,KAAMy3F,IAEhD0iH,IAAYn6M,KAAKxN,OACjBwN,KAAK25M,sBACL35M,KAAK4O,KAAK,kBAAmB9c,EAAOkO,KAAMm6M,MAWlDoxB,EAAW37O,UAAUm4P,mBAAqB,SAAUrvB,GAChD,GAAkC,wBAA9BA,EAAgBphI,UAApB,CAIA,IAAI0wJ,EAAYtvB,EAAgBl7G,wBAE5ByqI,EAAWD,EAAUE,eAAiB,EAC1C1oF,EAAMplK,QAAQolK,EAAM/hJ,OAAOuqO,EAAU9vJ,QAAQ,SAAUiwJ,GACnDF,EAAWpiP,KAAKC,IAAImiP,EAAUE,MAElC,IAAIC,EAAgBpoP,KAAKw4F,WACrB6vJ,EAAoBroP,KAAKqnP,eAEzBW,EAAU9vJ,YAA0CxlG,IAAjCs1P,EAAU9vJ,MAAMl4F,KAAKuzB,QACxCvzB,KAAKw4F,WAAawvJ,EAAU9vJ,MAAMl4F,KAAKuzB,aACJ7gC,IAA5Bs1P,EAAUE,cACjBloP,KAAKw4F,WAAawvJ,EAAUE,cAE5BloP,KAAKw4F,WAAa,EAEtBx4F,KAAKqnP,eAAiB,EAClBY,EAAW,IACXjoP,KAAKqnP,eAAmC,IAAlBrnP,KAAKw4F,WAAmByvJ,GAK9CG,IAAkBpoP,KAAKw4F,YAAc6vJ,IAAsBroP,KAAKqnP,iBAChErnP,KAAK25M,sBACL35M,KAAK4O,KAAK,wBAAyB8pN,EAAiB14N,SAU5DurO,EAAW37O,UAAU04P,eAAiB,SAAUx2P,GAC5C,GAAwB,aAApBA,EAAMwlG,UAAV,CAGA,IAAIixJ,EAAYvoP,KAAKonP,OACrBpnP,KAAKonP,QAAS,EACd,IAAIoB,EAAa12P,EAAMmmG,aAAawwJ,SAC/BjpF,EAAM5oK,QAAQ4xP,MAIsB,IAArCA,EAAWpvP,QAAQ4G,KAAKuzB,UACxBvzB,KAAKonP,QAAS,GAEdmB,IAAcvoP,KAAKonP,SACnBpnP,KAAK25M,sBACL35M,KAAK4O,KAAK,oBAAqB9c,EAAOkO,UAO9CurO,EAAW37O,UAAU+pN,oBAAsB,WACvC35M,KAAKu6M,UAAY3zJ,KAAK8+D,OAS1B6lH,EAAW37O,UAAU4qN,oBAAsB,WACvC,OAAOx6M,KAAKu6M,WAGhBgxB,EAAW37O,UAAUg2I,SAAW,WAC5B,MAA2B,UAApB5lI,KAAK03F,YAA0B13F,KAAKotF,OAAOoK,OAAOqlB,cAAgB78G,KAAKotF,OAAOoK,OAAOmmB,eAQhG4tH,EAAW37O,UAAUqiI,aAAe,WAGhC,GAAIjyH,KAAKotF,OAAOoK,OAAQ,CAQpB,IAAIkxJ,EAAc1oP,KAAKotF,OAAOoK,OAC1BmxJ,EAAgBD,EAAYzwJ,aAC5B2wJ,EAAeF,EAAY7rI,YAO/B,GALiC,SAA7B8rI,EAAcjxJ,aACdixJ,EAAgBD,EAAYrrI,iBAC5BurI,EAAeF,EAAYprI,cAAcggG,aAGZ,WAA7BqrC,EAAcjxJ,YAA2BixJ,EAActiC,UACvD,OAAOuiC,IAuBnBrd,EAAW37O,UAAUykJ,aAAe,SAAU5+G,EAAS4mE,EAAOp6B,EAAQmyE,EAAcy0G,EAAc/mC,QACzEpvN,IAAjBm2P,IACAA,GAAe,GAGnB,IAAIC,EAAS9oP,KAAK+oP,kBAElB,IAAKD,IAAWD,EACZ,OAAO,KAEX,IAAIG,EAAUt0G,EAAYC,iBAAiBl/G,EAASqzN,EAAQzsJ,EAAOp6B,EAAQmyE,EAAc0tE,GACzF,OAAIknC,IAEOH,EACAn0G,EAAYutE,gBAAgBxsL,EAASz1B,KAAKuzB,OAAQ8oE,EAAOp6B,GAE7D,OAMXspK,EAAW37O,UAAUm5P,gBAAkB,WACnC,OAAI/oP,KAAKotF,OAAOoK,OACLx3F,KAAKotF,OAAOoK,OAAOgmB,wBAAwBknB,WAC3C1kI,KAAK4tG,KACL5tG,KAAK4tG,KAAK0J,UAEd,MAwCX9mH,EAAOD,QAAUg7O,G,6BC9SjB,IAAI0d,EAAkB,EAAQ,MAO9B,SAASn2M,EAAQ79C,EAAKi0P,EAAYrqO,GAG9B,IAFA,IAAIsqO,EAAaD,EAAWrwP,MAAM,KAC9BuwP,EAAan0P,EACRzF,EAAI,EAAGA,EAAI25P,EAAWz5P,OAAS,EAAGF,IAClC45P,EAAWD,EAAW35P,MACvB45P,EAAWD,EAAW35P,IAAM,IAEhC45P,EAAaA,EAAWD,EAAW35P,IAEvC45P,EAAWD,EAAWA,EAAWz5P,OAAS,IAAMmvB,EAWpD,SAAS8sN,EAAOp4M,EAAQ81N,GACpBrpP,KAAKuzB,OAASA,EACdvzB,KAAKqpP,SAAWA,EAChBrpP,KAAKm3M,WAAa,GAGtBw0B,EAAO2d,6BAA+B,CAClCC,mBAAmB,GAGvB5d,EAAO6d,yBAA2B,CAC9Bx0J,KAAM,CACFn1C,MAAO8rL,EAAO2d,+BAQtB3d,EAAO/7O,UAAU65P,YAAc,WAC3B,OAAOzpP,KAAKqpP,UAOhB1d,EAAO/7O,UAAU85P,cAAgB,WAC7B,OAAO1pP,KAAKm3M,YAOhBw0B,EAAO/7O,UAAU+5P,cAAgB,SAAUxyC,GACvCn3M,KAAKm3M,WAAaA,EAkClB,IAAIyyC,EAAmBzyC,EAAWniH,KAG9B60J,EAAqB,GACrBD,IACIA,EAAiB1vG,QACjB2vG,EAAmB3vG,MAAQ0vG,EAAiB1vG,OAE5C0vG,EAAiB1vG,QACjB2vG,EAAmBC,UAAYF,EAAiBE,WAGpD9pP,KAAK+pP,eAAiBH,EAAiBI,gBAAiB,GAG5DhqP,KAAKiqP,aAAe,IAAIhB,EAAgBY,GACxC7pP,KAAKkqP,sBAAwB,IAAIjB,EAAgBW,GAAmBA,EAAiB/3G,UAAiB,KAmB1G85F,EAAO/7O,UAAUu6P,+BAAiC,WAC9C,OAAOnqP,KAAKkqP,uBAShBve,EAAO/7O,UAAUw6P,mBAAqB,SAAUh9J,GAC5C,OAAOptF,KAAKkqP,sBAAsBpxO,OAAO9Y,KAAKiqP,aAAanxO,OAAOs0E,KAOtEu+I,EAAO/7O,UAAUy6P,iBAAmB,SAAUztO,GAC1Ck2B,EAAQ9yC,KAAKm3M,WAAY,sBAAuBv6L,IAQpD+uN,EAAO/7O,UAAU06P,qBAAuB,SAAUC,GAC9Cz3M,EAAQ9yC,KAAKm3M,WAAY,qBAAsBozC,IAWnD5e,EAAO6e,SAAW,SAAUj3N,EAAQ81N,EAAUoB,GAC1C,IAAI3xO,EAAS,IAAI6yN,EAAOp4M,EAAQ81N,GAEhC,OADAvwO,EAAO6wO,cAAcc,GACd3xO,GAIXtoB,EAAOD,QAAUo7O,G,6BCnLjB,IAAIhqB,EAAS,EAAQ,KAIjBpmG,EAAW3lH,EAFD,EAAQ,KAMlB80P,EAAc90P,EAFD,EAAQ,OAIzB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvF,IAAIy3F,EAAe,EAAQ,IAAUA,aACjC8yE,EAAQ,EAAQ,IAChB7uB,EAAgB,EAAQ,KAMxBozB,OAAW,EA4Cf,SAASunE,EAAiBt2I,EAAMxkF,GAC5BxQ,KAAKg1F,KAAOA,EAEZh1F,KAAK2qP,iBAAmBh0N,QAAQnmB,EAAK0lB,iBACrCl2B,KAAK4qP,cAAgB,IAAIj6G,EAAc3wI,MACvCA,KAAK6qP,qCAAuCr6O,EAAK+lB,kCAGjDv2B,KAAK8qP,WAAa,CAAC9qP,KAAK4qP,eACxB5qP,KAAK+qP,mBAAqB,GAE1B/qP,KAAK6c,QAAUrM,EAAKsI,QAAU,KAE1B9Y,KAAK6qP,qCAGL7qP,KAAKgrP,WAAa,IAzDtBjnF,EAAWxoD,EAAS1mH,QAAQgD,IAAI5D,KAAKsnH,EAAS1mH,SA4DlD2qK,EAAMvsJ,SAASq4N,EAAkB5+I,GAMjC4+I,EAAiB17O,UAAUoiJ,UAAY,WACnC,OAAOhyI,KAAK6c,SAQhByuN,EAAiB17O,UAAUq7P,UAAY,SAAUnyO,GAC7C9Y,KAAK6c,QAAU/D,GAYnBwyN,EAAiB17O,UAAUqhK,iBAAmB,WAC1C,OAAKjxJ,KAAKg1F,KAINh1F,KAAK6c,QACE7c,KAAK6c,QAAQutO,mBAAmBpqP,KAAKg1F,KAAKi8D,oBAE1CjxJ,KAAKg1F,KAAKi8D,mBANV,IAefq6E,EAAiB17O,UAAUinC,gBAAkB,WACzC,OAAO72B,KAAK4qP,eAQhBtf,EAAiB17O,UAAUs7P,kBAAoB,SAAUj1J,GACrD,OAAOj2F,KAAK+qP,mBAAmB90J,IASnCq1I,EAAiB17O,UAAUu7P,eAAiB,SAAUC,EAAYC,GAC9D,IAAIC,EAAmBtrP,KAAK+qP,mBAAmBK,GAC3CE,WACOtrP,KAAK+qP,mBAAmBK,GAC/BprP,KAAK+qP,mBAAmBM,GAAcC,IAe9ChgB,EAAiB17O,UAAU27P,kBAAoB,SAAUC,EAAqBC,GAU1E,IAAIC,GAAqB1rP,KAAK2qP,mBAAqBc,EAE/CE,EAAc3rP,KAAK4qP,cACnBgB,EAAcF,EAAoBC,EAAYj6G,SAASf,EAAcW,UAAYq6G,EAAY55G,KAAKpB,EAAcW,UAEhHo6G,GACA1rP,KAAK8qP,WAAa,CAACc,GACnB5rP,KAAK+qP,mBAAqB,IAE1B/qP,KAAK8qP,WAAW96P,KAAK47P,GAGrBH,GAGAE,EAAY70N,mBAAmB20N,EAAwB96G,EAAcW,UAMzEs6G,EAAY90N,mBAAmB00N,EAAqB76G,EAAc55G,WAGlE/2B,KAAK4qP,cAAgBgB,EACrB5rP,KAAK4O,KAAK,qBAAsB5O,KAAKg1F,KAAMh1F,KAAM0rP,IAUrDpgB,EAAiB17O,UAAUy6N,oBAAsB,SAAUp0H,GACvD,IAAIzL,EAAMxqF,KAAK+qP,mBAAmB90J,GAClC,YAAevjG,IAAR83F,EAAoB,KAAOA,GAStC8gJ,EAAiB17O,UAAUy7J,cAAgB,SAAUp1D,GACjD,IAAI56B,EAAKr7D,KAAKqqN,oBAAoBp0H,GAClC,GAAK56B,EAGL,OAAOmkG,EAAM71E,YAAYtuB,EAAG82E,aAAa,SAAUh1C,GAC/C,OAAOA,EAAGyf,SAAW3mB,MAS7Bq1I,EAAiB17O,UAAUi8P,YAAc,WACrC,IAAK7rP,KAAK2qP,iBACN,MAAM,IAAI94P,MAAM,sHAGpB,IAAIggJ,EAAW,IAAIlB,EAAc3wI,MAEjC,OADAA,KAAK8qP,WAAW96P,KAAK6hJ,GACdA,GAsBXy5F,EAAiB17O,UAAUk8P,oBAAsB,SAAU1+J,EAAQ4lD,EAAmBnB,EAAUb,GAC5F,IAAKa,EACD,MAAM,IAAIhgJ,MAAM,qEAGpB,IAAKmhJ,GAAqBnB,GAAY7xI,KAAK4qP,cACvC,MAAM,IAAI/4P,MAAM,+HAGpB,IAAImO,KAAK6c,UACLuwE,EAASptF,KAAK6c,QAAQutO,mBAAmBh9J,IAC7B19F,OAFhB,CAiFA,IA1EA,IAAIk/H,EAAYokB,EAAoBrC,EAAc55G,UAAY45G,EAAcW,SACxEy6G,EAAmB/4G,EAAoBrC,EAAcW,SAAWX,EAAc55G,UAuE9Ei1N,GAAY,EACZC,GAAkB,EACbz8P,EAAI,EAAGA,EAAI49F,EAAO19F,OAAQF,IAAK,CACpC,IAAIsC,EAAQs7F,EAAO59F,GACfymG,EAAUnkG,EAAM8qH,QAEhB0uI,EAAmBtrP,KAAK+qP,mBAAmB90J,GAE/C,GAAKq1J,EAUL,GAFAW,GAAkB,EAEdX,GAAoBz5G,EAAxB,CAKA,IAAIW,EAAYX,EAASS,wBAAwB1jB,GACjD,GAAI4jB,EAWIuxB,EADAunF,GAAoB94G,EACX,SAAWv8C,EAAU,4CAAmDq1J,EAExE,SAAWr1J,EAAU,oCAA2Cq1J,GAE7Ez5G,EAAWy5G,MAff,CAoBA/vI,EAAS1mH,QAAQwgB,KAAK,6BAA+B4gF,EAAU,uBAAyB47C,EAAW,OAASy5G,GAG5G,IAAIY,EAAiBZ,IAAqBtrP,KAAK4qP,cAC3CuB,EAAiBt6G,IAAa7xI,KAAK4qP,cAEnCwB,EAAkBx9H,IAAc+hB,EAAc55G,WAAam1N,EAC3DG,EAAiBz9H,IAAc+hB,EAAcW,UAAY66G,EAEzDC,GAAmBC,GAGfD,GACA7wI,EAAS1mH,QAAQyF,KAAK,iGAAwGgxP,EAAmB,KAEjJe,GACA9wI,EAAS1mH,QAAQyF,KAAK,yFAAgGu3I,EAAW,OAKzIA,EAASU,wBAAwB+4G,EAAkB18H,GACnD08H,EAAiB/4G,wBAAwBV,EAAUk6G,GAEnDl6G,EAAWy5G,EACXU,GAAY,SAlDRjoF,EAAS,SAAW9tE,EAAU,wBAA0B47C,QATxD7xI,KAAKssP,mBAAmBx6P,EAAO+/I,EAAUmB,GACzCi5G,GAAkB,EAClBD,GAAY,EA+DpB,GAAIC,IAAoBD,EAAW,CAC/B,GAAIp9H,IAAc+hB,EAAcW,UAAYO,IAAa7xI,KAAK4qP,cAG1D,OAFArvI,EAAS1mH,QAAQyF,KAAK,CAAE2xP,gBAAiBA,EAAiBD,UAAWA,SACrEzwI,EAAS1mH,QAAQyF,KAAK,8DAAiEu3I,EAAW,OAASb,GAG/Ga,EAAS/6G,mBAAmBk6G,EAAiBpiB,MAUrD08G,EAAiB17O,UAAU28P,aAAe,SAAUz6P,EAAO06P,GACvD,GAAIxsP,KAAK6c,UACQ7c,KAAK6c,QAAQutO,mBAAmB,CAACt4P,IAClCpC,OACR,OAIR,IAAImiJ,EAAW7xI,KAAK+qP,mBAAmBj5P,EAAM8qH,SAC7C,GAAIi1B,EACA,GAA0B,YAAtB26G,EAAiC,CACjCzoF,EAAS,4DAA8DjyK,EAAM8qH,SAE7E,IADA,IAAI6vI,EAAW56G,EAASM,YACf5oI,EAAI,EAAGA,EAAIkjP,EAAS/8P,OAAQ6Z,IACjC,GAAIkjP,EAASljP,GAAGqzG,UAAY9qH,EAAM8qH,QAAS,CAEvC+zB,EAAcmC,iBAAiBhhJ,EAAO+/I,EAASD,SAASjB,EAAcW,WAAW,GAE5Em7G,EAASljP,GAAGmjP,gBACbD,EAASljP,GAAKzX,GAIlB,YAIRiyK,EAAS,2DAA6DjyK,EAAM8qH,cAKpF58G,KAAKssP,mBAAmBx6P,EAAOkO,KAAK4qP,eAAe,IAevDtf,EAAiB17O,UAAU08P,mBAAqB,SAAUx6P,EAAO+/I,EAAUmB,GACvE,IAAI/8C,EAAUnkG,EAAM8qH,QACpBi1B,EAASY,SAAS3gJ,EAAOkhJ,GACzBhzI,KAAK+qP,mBAAmB90J,GAAW47C,EAEnC7xI,KAAK2sP,mBAAmB76P,GACxBkO,KAAK4sP,mBAAmB96P,GAExB,IAAI3C,EAAO,CACP0iJ,SAAUA,EACVg7G,WAAY75G,GAAqBnB,GAAY7xI,KAAK4qP,eAEtD5qP,KAAK4O,KAAK,gBAAiB9c,EAAOkO,KAAKg1F,KAAMr+D,QAAQq8G,IAAoB,EAAO7jJ,IAapFm8O,EAAiB17O,UAAUmxH,iBAAmB,SAAU+rI,EAAY1B,EAAYC,GAE5E,IAAIC,EAAmBtrP,KAAK+qP,mBAAmBK,GAC3CE,UACOtrP,KAAK+qP,mBAAmBK,GAC/BprP,KAAK+qP,mBAAmBM,GAAcC,GAElCtrP,KAAK6c,QACD7c,KAAK6c,QAAQutO,mBAAmB,CAAC0C,IAAap9P,QAC9CsQ,KAAKssP,mBAAmBQ,EAAY9sP,KAAK4qP,eAAe,GAG5D5qP,KAAKssP,mBAAmBQ,EAAY9sP,KAAK4qP,eAAe,IAapEtf,EAAiB17O,UAAUsjJ,YAAc,SAAUj9C,GAC/C,IAAI47C,EAAW7xI,KAAK+qP,mBAAmB90J,GACvC,IAAK47C,EACD,OAAO,KAGX,IAAI5oG,EAAU4oG,EAASqB,YAAYj9C,GACnC,GAAIhtD,EAAS,QACFjpC,KAAK+qP,mBAAmB90J,GAC/B,IAAI9mG,EAAO,CACP0iJ,SAAUA,GAEd7xI,KAAK4O,KAAK,gBAAiBq6B,EAASjpC,KAAKg1F,UAAMtiG,GAAW,EAAMvD,GAEpE,OAAO85C,GAeXqiM,EAAiB17O,UAAUm9P,qBAAuB,SAAUC,EAAUC,GAClE,GAAID,GAAYC,EAEZ,OAAO,EAGX,IAAIC,EAAYltP,KAAK+qP,mBAAmBiC,GACpCG,EAAYntP,KAAK+qP,mBAAmBkC,GAExC,QAAkBv6P,IAAdw6P,EACA,OAAO,KAEX,QAAkBx6P,IAAdy6P,EACA,OAAO,KAGX,GAAID,IAAcC,EAAW,CAMzB,IAHA,IAAI9kN,OAAO,EACPC,OAAO,EACP8kD,EAAS8/J,EAAU/6G,YACdtpG,EAAM,EAAGA,EAAMukD,EAAO19F,cAAoBgD,IAAT21C,QAA+B31C,IAAT41C,GAAqBO,IAAO,CACxF,IAAIukN,EAAOhgK,EAAOvkD,GAAK+zE,QACnBwwI,GAAQJ,IACR3kN,EAAOQ,GAEPukN,GAAQH,IACR3kN,EAAOO,GAGf,OAAOR,EAAOC,EAQlB,IADA,IAAI+yB,EAAK6xL,EACF7xL,GAAI,CACP,GAAIA,IAAO8xL,EAEP,OAAQ,EAEZ9xL,EAAKA,EAAGi3E,wBAAwB3B,EAAcW,UAKlD,IADAj2E,EAAK6xL,EACE7xL,GAAI,CACP,GAAIA,IAAO8xL,EAEP,OAAO,EAEX9xL,EAAKA,EAAGi3E,wBAAwB3B,EAAc55G,WAIlD,OAAO,MAiBXu0M,EAAiB17O,UAAUy9P,qBAAuB,SAAUp3J,EAASq3J,EAAchjF,GAC/E,IAAKtqK,KAAK6qP,mCACN,MAAM,IAAIh5P,MAAM,gDAGpB,IAAKokG,IAAYq3J,IAAiBhjF,EAC9B,MAAM,IAAIz4K,MAAM,gDAOpB,QAFwBmO,KAAKgrP,WAAW/0J,IAAY,IACPq3J,IAAiB,IAClChjF,IAShCghE,EAAiB17O,UAAU+8P,mBAAqB,SAAU76P,GACtD,GAAKkO,KAAK6qP,mCAAV,CAIA,IAAI0C,EAAoBvtP,KAAKgrP,WAAWl5P,EAAM8qH,SAC9C,GAAK2wI,EAAL,CAIA,IAAIC,EAAuBD,EAAkB,aAC7C,GAAKC,EAAL,CAIA,IAAIC,EAAyBD,EAAqB,kBAE9CC,GACAA,EAAuBC,eAAe57P,OAU9Cw5O,EAAiB17O,UAAUg9P,mBAAqB,SAAU96P,GACtD,IAAIutD,EAAQr/C,KAEZ,GAAKA,KAAK6qP,qCAIN/4P,EAAM6uH,cAAgB7uH,EAAMiL,SAAW4kN,EAAOnmG,YAAYM,UAK9D,GAAIhqH,EAAMosH,mBACNpsH,EAAM88F,KAAK,mBAAmB,WAC1BvvC,EAAMutM,mBAAmB96P,UAFjC,CAOA,IAAIyvH,EAAWzvH,EAAM2vH,cACrB,GAAKF,EAAL,CAIA,IAAIosI,EAAmBpsI,EAAS9Y,SAC5B6kJ,EAAe/rI,EAASC,SACxB8oD,EAAYx4K,EAAMwlG,UAIlBi2J,EAAoBvtP,KAAKgrP,WAAW2C,GACnCJ,IACDA,EAAoBvtP,KAAKgrP,WAAW2C,GAAoB,IAE5D,IAAIH,EAAuBD,EAAkBD,GACxCE,IACDA,EAAuBD,EAAkBD,GAAgB,IAE7D,IAAIG,EAAyBD,EAAqBljF,GAElD,IAAKmjF,EAAwB,CACzBA,EAAyBD,EAAqBljF,GAAa,IAAIogF,EAAY71P,QAAQy4P,EAAchjF,EAAWtqK,KAAKg1F,MACjH,IAAI44J,EAAiB5tP,KAAKqrJ,cAAcsiG,GACpCC,IACAH,EAAuBC,eAAeE,GACtCA,EAAeh/O,KAAK,yBAA0B0+O,EAAchjF,IAIpEmjF,EAAuBh7G,SAAS3gJ,MAMpCtB,EAAOD,QAAU+6O,G,6BCjwBjB,IAAI9yN,EAAM7oB,OAAOC,UAAUC,eACvB+G,EAAUD,MAAMC,QAEhBi3P,EAAY,WAEZ,IADA,IAAItlO,EAAQ,GACH/4B,EAAI,EAAGA,EAAI,MAAOA,EACvB+4B,EAAMv4B,KAAK,MAAQR,EAAI,GAAK,IAAM,IAAMA,EAAEgW,SAAS,KAAKwmE,eAG5D,OAAOzjD,EANI,GA4BXulO,EAAgB,SAAuBxxM,EAAQpiD,GAE/C,IADA,IAAIjF,EAAMiF,GAAWA,EAAQ6zP,aAAep+P,OAAOoE,OAAO,MAAQ,GACzDvE,EAAI,EAAGA,EAAI8sD,EAAO5sD,SAAUF,OACR,IAAd8sD,EAAO9sD,KACdyF,EAAIzF,GAAK8sD,EAAO9sD,IAIxB,OAAOyF,GAuLXzE,EAAOD,QAAU,CACbu9P,cAAeA,EACfz4N,OA9HS,SAA4B/iC,EAAQgqD,GAC7C,OAAO3sD,OAAOoZ,KAAKuzC,GAAQlmC,QAAO,SAAUmmM,EAAKvoN,GAE7C,OADAuoN,EAAIvoN,GAAOsoD,EAAOtoD,GACXuoN,IACRjqN,IA2HH07P,QAPU,SAAiB3uP,EAAG6kB,GAC9B,MAAO,GAAG5nB,OAAO+C,EAAG6kB,IAOpB4gL,QA5CU,SAAiBpxM,GAI3B,IAHA,IAAI+N,EAAQ,CAAC,CAAExM,IAAK,CAAE9B,EAAGO,GAAS4kB,KAAM,MACpCqkN,EAAO,GAEFntO,EAAI,EAAGA,EAAIiS,EAAM/R,SAAUF,EAKhC,IAJA,IAAI4Z,EAAO3H,EAAMjS,GACbyF,EAAMmU,EAAKnU,IAAImU,EAAKkP,MAEpBvP,EAAOpZ,OAAOoZ,KAAK9T,GACdsU,EAAI,EAAGA,EAAIR,EAAKrZ,SAAU6Z,EAAG,CAClC,IAAIvV,EAAM+U,EAAKQ,GACXsV,EAAM5pB,EAAIjB,GACK,iBAAR6qB,GAA4B,OAARA,IAAuC,IAAvB89M,EAAKvjO,QAAQylB,KACxDpd,EAAMzR,KAAK,CAAEiF,IAAKA,EAAKqjB,KAAMtkB,IAC7B2oO,EAAK3sO,KAAK6uB,IAOtB,OA/Le,SAAsBpd,GACrC,KAAOA,EAAM/R,OAAS,GAAG,CACrB,IAAI0Z,EAAO3H,EAAMiE,MACbzQ,EAAMmU,EAAKnU,IAAImU,EAAKkP,MAExB,GAAI1hB,EAAQ3B,GAAM,CAGd,IAFA,IAAIg5P,EAAY,GAEP1kP,EAAI,EAAGA,EAAItU,EAAIvF,SAAU6Z,OACR,IAAXtU,EAAIsU,IACX0kP,EAAUj+P,KAAKiF,EAAIsU,IAI3BH,EAAKnU,IAAImU,EAAKkP,MAAQ21O,IA+K9BC,CAAazsP,GAEN/N,GAwBP0+J,OA1HS,SAAU9/I,EAAK67O,EAAS98P,GACjC,IAAI+8P,EAAiB97O,EAAI7V,QAAQ,MAAO,KACxC,GAAgB,eAAZpL,EAEA,OAAO+8P,EAAe3xP,QAAQ,iBAAkBkvM,UAGpD,IACI,OAAOv5G,mBAAmBg8J,GAC5B,MAAO19P,GACL,OAAO09P,IAiHXj8F,OA7GS,SAAgB7/I,EAAK+7O,EAAgBh9P,GAG9C,GAAmB,IAAfihB,EAAI5iB,OACJ,OAAO4iB,EAGX,IAAIgwB,EAAShwB,EAOb,GANmB,iBAARA,EACPgwB,EAAS9uC,OAAO5D,UAAU4V,SAAS1V,KAAKwiB,GAClB,iBAARA,IACdgwB,EAASpwB,OAAOI,IAGJ,eAAZjhB,EACA,OAAO0hG,OAAOzwD,GAAQ7lC,QAAQ,mBAAmB,SAAU6xP,GACvD,MAAO,SAAWx7O,SAASw7O,EAAG35P,MAAM,GAAI,IAAM,SAKtD,IADA,IAAI6nD,EAAM,GACDhtD,EAAI,EAAGA,EAAI8yC,EAAO5yC,SAAUF,EAAG,CACpC,IAAIwD,EAAIsvC,EAAOkB,WAAWh0C,GAGhB,KAANwD,GACS,KAANA,GACM,KAANA,GACM,MAANA,GACCA,GAAK,IAAQA,GAAK,IAClBA,GAAK,IAAQA,GAAK,IAClBA,GAAK,IAAQA,GAAK,IAEtBwpD,GAAOla,EAAOxwB,OAAOtiB,GAIrBwD,EAAI,IACJwpD,GAAYqxM,EAAS76P,GAIrBA,EAAI,KACJwpD,GAAaqxM,EAAS,IAAQ76P,GAAK,GAAM66P,EAAS,IAAY,GAAJ76P,GAI1DA,EAAI,OAAUA,GAAK,MACnBwpD,GAAaqxM,EAAS,IAAQ76P,GAAK,IAAO66P,EAAS,IAAS76P,GAAK,EAAK,IAAS66P,EAAS,IAAY,GAAJ76P,IAIpGxD,GAAK,EACLwD,EAAI,QAAiB,KAAJA,IAAc,GAA8B,KAAvBsvC,EAAOkB,WAAWh0C,IACxDgtD,GAAOqxM,EAAS,IAAQ76P,GAAK,IACvB66P,EAAS,IAAS76P,GAAK,GAAM,IAC7B66P,EAAS,IAAS76P,GAAK,EAAK,IAC5B66P,EAAS,IAAY,GAAJ76P,IAG3B,OAAOwpD,GAkDPusF,SAnBW,SAAkB9zI,GAC7B,SAAKA,GAAsB,iBAARA,OAITA,EAAIgK,aAAehK,EAAIgK,YAAY8pI,UAAY9zI,EAAIgK,YAAY8pI,SAAS9zI,KAelF+sL,SAxBW,SAAkB/sL,GAC7B,MAA+C,oBAAxCtF,OAAOC,UAAU4V,SAAS1V,KAAKmF,IAwBtCmwC,MA7LQ,SAASA,EAAM9yC,EAAQgqD,EAAQpiD,GACvC,IAAKoiD,EACD,OAAOhqD,EAGX,GAAsB,iBAAXgqD,EAAqB,CAC5B,GAAI1lD,EAAQtE,GACRA,EAAOtC,KAAKssD,OACT,KAAIhqD,GAA4B,iBAAXA,EAKxB,MAAO,CAACA,EAAQgqD,IAJXpiD,IAAYA,EAAQ6zP,cAAgB7zP,EAAQq0P,mBAAsB/1O,EAAI1oB,KAAKH,OAAOC,UAAW0sD,MAC9FhqD,EAAOgqD,IAAU,GAMzB,OAAOhqD,EAGX,IAAKA,GAA4B,iBAAXA,EAClB,MAAO,CAACA,GAAQgK,OAAOggD,GAG3B,IAAIkyM,EAAcl8P,EAKlB,OAJIsE,EAAQtE,KAAYsE,EAAQ0lD,KAC5BkyM,EAAcV,EAAcx7P,EAAQ4H,IAGpCtD,EAAQtE,IAAWsE,EAAQ0lD,IAC3BA,EAAOliD,SAAQ,SAAUgP,EAAM5Z,GAC3B,GAAIgpB,EAAI1oB,KAAKwC,EAAQ9C,GAAI,CACrB,IAAIi/P,EAAan8P,EAAO9C,GACpBi/P,GAAoC,iBAAfA,GAA2BrlP,GAAwB,iBAATA,EAC/D9W,EAAO9C,GAAK41C,EAAMqpN,EAAYrlP,EAAMlP,GAEpC5H,EAAOtC,KAAKoZ,QAGhB9W,EAAO9C,GAAK4Z,KAGb9W,GAGJ3C,OAAOoZ,KAAKuzC,GAAQlmC,QAAO,SAAUmmM,EAAKvoN,GAC7C,IAAIN,EAAQ4oD,EAAOtoD,GAOnB,OALIwkB,EAAI1oB,KAAKysN,EAAKvoN,GACduoN,EAAIvoN,GAAOoxC,EAAMm3K,EAAIvoN,GAAMN,EAAOwG,GAElCqiN,EAAIvoN,GAAON,EAER6oN,IACRiyC,M,6BC/FP,IAEI14P,EAASF,EAFD,EAAQ,KAMhBq/F,EAAoBr/F,EAFD,EAAQ,KAM3B84P,EAAgB94P,EAFD,EAAQ,MAIvBgpD,EAAmB,EAAQ,GAI3B+vM,EAQJ,SAAiC15P,GAAO,GAAIA,GAAOA,EAAIpB,WAAc,OAAOoB,EAAc,IAAIw9B,EAAS,GAAI,GAAW,MAAPx9B,EAAe,IAAK,IAAIjB,KAAOiB,EAAWtF,OAAOC,UAAUC,eAAeC,KAAKmF,EAAKjB,KAAMy+B,EAAOz+B,GAAOiB,EAAIjB,IAAgC,OAAtBy+B,EAAO59B,QAAUI,EAAYw9B,EARtPC,CAFC,EAAQ,MAIjBk8N,EAAc,EAAQ,KAItBp3P,EAAkB5B,EAFD,EAAQ,KAM7B,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAsfvF,IAAIyzD,EAAW,CACX,iBA9OJ,SAA6By0C,GACzB,IAAI0xJ,EAAoB1xJ,EAAG3zE,QAAU2zE,EAAG3zE,OAAOh3B,KAAO2qG,EAAG3zE,OAAOh3B,KAAO2qG,EAAG0f,YACtEtqH,EAAUs8P,EAAoB,KAAO1xJ,EAAGlF,aAAan7F,KAMzD,MALgC,YAA5BqgG,EAAGlF,aAAammB,QAChB7rH,EAAU,KAAOs8P,EAAoB,IAAMt8P,EACR,YAA5B4qG,EAAGlF,aAAammB,UACvB7rH,GAAU,EAAIqsD,EAAiB1oD,IAAI,uCAAwC,CAAE24P,kBAAmBA,KAE7Ft8P,GAuOP,gBA3IJ,SAAgCT,GAC5B,IAAIg9P,EAAah9P,EAAM03B,OAAS13B,EAAM03B,OAAOh3B,MAAO,EAAIosD,EAAiB1oD,IAAI,WAEzE81K,EAAW,QACXl6K,EAAMmmG,aAAaiuE,OAASp0K,EAAMmmG,aAAaiuE,MAAMI,MAA4D,IAArDx0K,EAAMmmG,aAAaiuE,MAAMI,IAAIltK,QAAQ,aACjG4yK,EAAW,SAEf,IAAI+iF,EAAY95J,EAAkBpgG,QAAQvB,MAAMs8H,eAAiB,IAAK,EAAIhxE,EAAiB1oD,IAAI,mCAC/F,OAAO,EAAI0oD,EAAiB1oD,IAAI,6CAA8C,CAAE44P,WAAYA,EAAY9iF,SAAUA,IAAc,IAAM+iF,GAoItI,gBA1KJ,SAAgCj9P,GAC5B,IAAIg9P,EAAah9P,EAAM03B,OAAS13B,EAAM03B,OAAOh3B,MAAO,EAAIosD,EAAiB1oD,IAAI,WACzE64P,EAAY95J,EAAkBpgG,QAAQvB,MAAMs8H,eAAiB,IAAK,EAAIhxE,EAAiB1oD,IAAI,mCAC/F,OAAO,EAAI0oD,EAAiB1oD,IAAI,oCAAqC,CAAE44P,WAAYA,IAAgB,IAAMC,GAwKzG,gBArKJ,SAAgCj9P,GAC5B,IAAIg9P,EAAah9P,EAAM03B,OAAS13B,EAAM03B,OAAOh3B,MAAO,EAAIosD,EAAiB1oD,IAAI,WACzE84P,EAAel9P,EAAMmmG,aACrBxrF,EAAS,GAkBb,OAjBKwoF,EAAkBpgG,QAAQvB,MAAMs8H,eAE1Bo/H,EAAaviP,SAEhBA,EADwB,eAAxBuiP,EAAaviP,QACJ,EAAImyC,EAAiB1oD,IAAI,6BACH,mBAAxB84P,EAAaviP,QACX,EAAImyC,EAAiB1oD,IAAI,eACH,gBAAxB84P,EAAaviP,OAKX,IAEA,EAAImyC,EAAiB1oD,IAAI,gCAAiC,CAAEuW,OAAQuiP,EAAaviP,UAb9FA,GAAS,EAAImyC,EAAiB1oD,IAAI,oCAgB/B,EAAI0oD,EAAiB1oD,IAAI,iCAAkC,CAAE44P,WAAYA,IAAgB,IAAMriP,IAmJtGwiP,EAAgB,CAChB,iBA1OJ,SAAiC9xJ,GAM7B,IAAI2xJ,EAAa3xJ,EAAG3zE,QAAU2zE,EAAG3zE,OAAOh3B,KAAO2qG,EAAG3zE,OAAOh3B,KAAO2qG,EAAG0f,YAC/DqyI,EAAa/xJ,EAAGkgB,iBAAiBs3G,SAAW,GAC5Cw6B,EAAahyJ,EAAGlF,aAAa08H,SAAW,GAExCy6B,EAAeD,EAAWr2O,QAAO,SAAUwK,GAC3C,OAAQ4rO,EAAW1tN,SAASle,MAE5B+rO,EAAiBH,EAAWp2O,QAAO,SAAUwK,GAC7C,OAAQ6rO,EAAW3tN,SAASle,MAGhC,OAAK8rO,EAAa1/P,QAAW2/P,EAAe3/P,OAIxC0/P,EAAa1/P,SAAW2/P,EAAe3/P,QAChC,EAAIkvD,EAAiB1oD,IAAI,gFAAiF,CAC7G44P,WAAYA,EACZ30P,MAAOi1P,EAAa1/P,OACpB4/P,eAAgBF,EAAa7yP,KAAK,SAE9B6yP,EAAa1/P,QAAU2/P,EAAe3/P,QACvC,EAAIkvD,EAAiB1oD,IAAI,oFAAqF,CACjH44P,WAAYA,EACZ30P,MAAOk1P,EAAe3/P,OACtB6/P,iBAAkBF,EAAe9yP,KAAK,SAGnC,EAAIqiD,EAAiB1oD,IAAI,uGAAwG,CACpI44P,WAAYA,EACZQ,eAAgBF,EAAa7yP,KAAK,MAClCgzP,iBAAkBF,EAAe9yP,KAAK,QAnBnC,IAyNX,yBAjMJ,SAAoC4gG,GAChC,IAAI2xJ,EAAa3xJ,EAAG3zE,QAAU2zE,EAAG3zE,OAAOh3B,KAAO2qG,EAAG3zE,OAAOh3B,KAAO2qG,EAAG0f,YAC/D2yI,EAAWryJ,EAAGkgB,iBAAiBoyI,MAGnC,OAFetyJ,EAAGlF,aAAaw3J,OAGpB,EAAI7wM,EAAiB1oD,IAAI,oEAAqE,CACjG44P,WAAYA,EACZ/6G,QAAS52C,EAAGlF,aAAaw3J,QAEtBD,GACA,EAAI5wM,EAAiB1oD,IAAI,yDAA0D,CACtF44P,WAAYA,SAFb,GAwLP,cA3YJ,SAA8B3xJ,GAC1B,IAAI0xJ,EAAoB1xJ,EAAG3zE,QAAU2zE,EAAG3zE,OAAOh3B,KAAO2qG,EAAG3zE,OAAOh3B,KAAO2qG,EAAG0f,YAE1E,OAAK1f,EAAGlF,aAAazlG,MAA+C,IAAvC2qG,EAAGlF,aAAazlG,KAAKs/F,OAAOpiG,QAGlD,EAAIkvD,EAAiB1oD,IAAI,+DAAgE,CAC5F24P,kBAAmBA,EACnB1qC,SAAUhnH,EAAGlF,aAAazlG,QAJnB,EAAIosD,EAAiB1oD,IAAI,+CAAgD,CAAE24P,kBAAmBA,KAwYzG,eApZJ,SAA2B1xJ,GACvB,IAAI0xJ,EAAoB1xJ,EAAG3zE,QAAU2zE,EAAG3zE,OAAOh3B,KAAO2qG,EAAG3zE,OAAOh3B,KAAO2qG,EAAG0f,YAC1E,OAAO,EAAIj+D,EAAiB1oD,IAAI,0DAA2D,CACvF24P,kBAAmBA,EACnB5gF,MAAO9wE,EAAGlF,aAAag2E,SAiZ3B,gBAjfJ,SAA4B9wE,GAExB,IAAI2xJ,EAAa3xJ,EAAG3zE,OAAS2zE,EAAG3zE,OAAOh3B,KAAO2qG,EAAG0f,YAC7C6yI,EAAavyJ,EAAG7qG,OAAS6qG,EAAG7qG,OAAOE,KAAO2qG,EAAGwgB,cAC7C46D,EAAcp7E,EAAGkgB,iBACjBrlB,EAAUmF,EAAGlF,aAEbg2B,EAAoBygI,EAAc75P,QAAQs8H,uBAC1C1kH,EAASurF,EAAQvrF,QAAS,EAAImyC,EAAiB1oD,IAAI,UAAY,KAAO8hG,EAAQvrF,OAAS,GAC3F,OAAQurF,EAAQN,YACZ,IAAK,SAEG,IAAIi4J,EAAkB33J,EAAQ43J,mBAC9B,OAAID,EACIA,EAAgBE,cACT,EAAIjxM,EAAiB1oD,IAAI,8DAA+D,CAC3Fw5P,WAAYA,EACZ5wM,YAAa6wM,EAAgBE,gBAG1B,EAAIjxM,EAAiB1oD,IAAI,yCAA0C,CAAEw5P,WAAYA,IAGxFzhI,GAAqBA,EAAkBuX,iBAAiBroC,EAAGwgB,gBACpD,EAAI/+D,EAAiB1oD,IAAI,8CAA+C,CAAE44P,WAAYA,KAEtF,EAAIlwM,EAAiB1oD,IAAI,yCAA0C,CAAE44P,WAAYA,EAAYY,WAAYA,IAIhI,IAAK,MACD,OAAO,EAAI9wM,EAAiB1oD,IAAI,wCAAyC,CAAE44P,WAAYA,EAAYY,WAAYA,IAAgB,IAAMjjP,EACzI,IAAK,OACD,OAAI8rK,GAA0C,SAA3BA,EAAY7gF,WACvB6gF,EAAY1K,aAAe71E,EAAQ61E,aAAe0K,EAAY1K,cAAgB71E,EAAQ61E,aAC/E,EAAIjvH,EAAiB1oD,IAAI,oEAAqE,CACjG45P,eAAgBv3E,EAAY1K,YAC5B/uH,YAAak5C,EAAQ61E,eAEjB0K,EAAY1K,aAAe71E,EAAQ61E,aACpC,EAAIjvH,EAAiB1oD,IAAI,4DAA6D,CACzF44P,WAAY3xJ,EAAG0f,YACf/9D,YAAak5C,EAAQ61E,cAElB0K,EAAY1K,cAAgB71E,EAAQ61E,aACpC,EAAIjvH,EAAiB1oD,IAAI,kEAAmE,CAC/F44P,WAAYA,EACZgB,eAAgBv3E,EAAY1K,cAEzB0K,EAAY7zC,aAAe1sC,EAAQ0sC,YACnC,EAAI9lF,EAAiB1oD,IAAI,gDAAiD,CAAE44P,WAAYA,IACxFv2E,EAAY7zC,YAAc1sC,EAAQ0sC,YAAc6zC,EAAY7zC,aAAe1sC,EAAQ0sC,YACnF,EAAI9lF,EAAiB1oD,IAAI,gDAAiD,CAAE44P,WAAYA,KACvFv2E,EAAY7zC,YAAc1sC,EAAQ0sC,YACnC,EAAI9lF,EAAiB1oD,IAAI,wCAAyC,CAAE44P,WAAYA,IAChFt3P,EAAgB3C,QAAQ2/B,SAAS,+BAEjC,EAAIoqB,EAAiB1oD,IAAI,iCAAkC,CAAE44P,WAAYA,IAEzE,IAGN3xJ,EAAG7qG,QAAQiC,QAAQ+F,KAAK,kCAAoC6iG,EAAGlF,aAAame,WAC7E6X,GAAqBA,EAAkBuX,iBAAiBroC,EAAGwgB,gBACpD,EAAI/+D,EAAiB1oD,IAAI,6BAEzB,EAAI0oD,EAAiB1oD,IAAI,kCAAmC,CAAEw5P,WAAYA,KAG7F,IAAK,QACD,OAAIvyJ,EAAG0f,cAAgB1f,EAAGwgB,cAClBsQ,GAAqBA,EAAkBuX,iBAAiBroC,EAAGwgB,gBACpD,EAAI/+D,EAAiB1oD,IAAI,6BACE,WAA3BqiL,EAAY7gF,YACZ,EAAI94C,EAAiB1oD,IAAI,0CAA2C,CAAEw5P,WAAYA,KAElF,EAAI9wM,EAAiB1oD,IAAI,gCAAiC,CAAEw5P,WAAYA,IAEjD,QAA3Bn3E,EAAY7gF,YACZ,EAAI94C,EAAiB1oD,IAAI,0CAA2C,CAAE44P,WAAYA,EAAYY,WAAYA,IAC/E,WAA3Bn3E,EAAY7gF,YACZ,EAAI94C,EAAiB1oD,IAAI,uDAAyD,CACrF44P,WAAYA,EACZY,WAAYA,IACX,IAAMjjP,GAGJ,EAAImyC,EAAiB1oD,IAAI,wCAAyC,CAAE44P,WAAYA,EAAYY,WAAYA,IAAgB,IAAMjjP,IA2ZjJ,4BA3IJ,SAAoC3a,GAChC,IAAIg9P,EAAah9P,EAAM03B,OAAS13B,EAAM03B,OAAOh3B,KAAOV,EAAM+qH,YAE1D,KAAK,EAAI+xI,EAAYprC,mBAAmB1xN,GAAQ,CAC5C,IAAIi+P,EAAoBj+P,EAAMurH,iBAAiBwyI,eAAgB,EAAIjxM,EAAiB1oD,IAAI,WACxF,OAAO,EAAI0oD,EAAiB1oD,IAAI,oFAAqF,CACjH44P,WAAYA,EACZiB,kBAAmBA,IAI3B,OAAO,EAAInxM,EAAiB1oD,IAAI,+EAAgF,CAC5G44P,WAAYA,EACZiB,kBAAmBj+P,EAAMmmG,aAAa43J,gBA+H1C,4BA3HJ,SAAuC/9P,GACnC,IAAIg9P,EAAah9P,EAAM03B,OAAS13B,EAAM03B,OAAOh3B,KAAOV,EAAM+qH,YAC1D,OAAQ/qH,EAAMmmG,aAAa+3J,oBACvB,IAAK,UACD,OAAO,EAAIpxM,EAAiB1oD,IAAI,wGAA8G,CAAE44P,WAAYA,IAChK,IAAK,SACD,OAAO,EAAIlwM,EAAiB1oD,IAAI,mGAAyG,CAAE44P,WAAYA,IAC3J,IAAK,SACD,OAAO,EAAIlwM,EAAiB1oD,IAAI,uEAAwE,CAAE44P,WAAYA,IAC1H,IAAK,iBACD,OAAO,EAAIlwM,EAAiB1oD,IAAI,6DAA8D,CAAE44P,WAAYA,IAChH,QACI,OAAO,EAAIlwM,EAAiB1oD,IAAI,+EAAgF,CAC5G44P,WAAYA,EACZ5oC,WAAYp0N,EAAMmmG,aAAa+3J,uBA8G3C,oBAzGJ,SAAgCl+P,GAC5B,IAAIg9P,EAAah9P,EAAM03B,OAAS13B,EAAM03B,OAAOh3B,KAAOV,EAAM+qH,YAC1D,OAAO,EAAIj+D,EAAiB1oD,IAAI,4EAA6E,CACzG44P,WAAYA,EACZlwI,UAAW9sH,EAAMmmG,aAAa2mB,aAsGlC,sBAjGJ,SAA2B9sH,GACvB,IAAIg9P,EAAah9P,EAAM03B,OAAS13B,EAAM03B,OAAOh3B,KAAOV,EAAM+qH,YAC1D,KAAK/qH,EAAMurH,kBAAqBvrH,EAAMurH,iBAAiBnlB,OAAUpmG,EAAMmmG,cAAiBnmG,EAAMmmG,aAAaC,OACvG,MAAO,GAEX,IAAI+3J,EAAcn+P,EAAMmmG,aAAaiwJ,eAAiB,EAElDhwJ,EAAQ,IACZ,EAAIpiG,EAAOjB,SAAS/C,EAAMmmG,aAAaC,OAAO99F,SAAQ,SAAUm5B,IAC7B,IAA3B2kE,EAAM9+F,QAAQm6B,IAAgB2kE,EAAMloG,KAAKujC,OAEjD,EAAIz9B,EAAOjB,SAAS/C,EAAMurH,iBAAiBnlB,OAAO99F,SAAQ,SAAUm5B,IACjC,IAA3B2kE,EAAM9+F,QAAQm6B,IAAgB2kE,EAAMloG,KAAKujC,MAEjD,IAAIwuG,EAAO,GAeX,OAbA7pC,EAAM99F,SAAQ,SAAUm5B,GAEpB,IAAIxC,EAAOj/B,EAAMurH,iBAAiBnlB,MAAM3kE,GAEpCvC,EAAKl/B,EAAMmmG,aAAaC,MAAM3kE,GAC9BvC,IAAOD,GACPgxG,EAAK/xI,MAAK,EAAI4uD,EAAiB1oD,IAAI,yDAA0D,CACzFq9B,OAAQA,EACR28N,eAAgBvB,EAAMwB,kBAAkBp/N,EAAMk/N,GAC9CG,aAAczB,EAAMwB,kBAAkBn/N,EAAIi/N,SAIjDluH,EAAKryI,QAGH,EAAIkvD,EAAiB1oD,IAAI,oEAAqE,CACjG44P,WAAYA,EACZuB,mBAAoBtuH,EAAKxlI,KAAK,QAJvB,IAoEX,uBA5DJ,SAA4BzK,GACxB,IAAIg9P,EAAah9P,EAAM+qH,YACvB,OAAO,EAAIj+D,EAAiB1oD,IAAI,2DAA4D,CAAE44P,WAAYA,KA2D1G,oBAjUJ,SAA+B3xJ,GAC3B,IAAI0xJ,EAAoB1xJ,EAAG3zE,QAAU2zE,EAAG3zE,OAAOh3B,KAAO2qG,EAAG3zE,OAAOh3B,KAAO2qG,EAAG0f,YACtE07D,EAAcp7E,EAAGkgB,iBACjBizI,EAAU,GACV98O,EAAU2pF,EAAGlF,aACbp2F,EAAO,CACPg3F,KAAMliG,MAAMC,QAAQ2hL,EAAY1/E,MAAQ0/E,EAAY1/E,KAAO,GAC3DE,MAAOpiG,MAAMC,QAAQ2hL,EAAYx/E,OAASw/E,EAAYx/E,MAAQ,GAC9Dw3J,qBAAuD,IAAlCh4E,EAAYg4E,oBAEjCz2P,EAAO,GAWX,GATIA,EADqB,IAArB+H,EAAKg3F,KAAKnpG,QAAsC,IAAtBmS,EAAKk3F,MAAMrpG,OAC9Bm/P,EAAoB,mCAEpBA,EAAoB,2CAG1Bl4P,MAAMC,QAAQ4c,EAAQulF,SACvBvlF,EAAQulF,MAAQ,IAGS,IAAzBvlF,EAAQulF,MAAMrpG,OACd,OAAOoK,EAAO,iFAGbnD,MAAMC,QAAQ4c,EAAQqlF,QACvBrlF,EAAQqlF,KAAO,IAGnB,IAAI23J,EAAgBh9O,EAAQqlF,KAAK//E,QAAO,SAAU23O,GAC9C,MAAsB,iBAARA,IAAqB5uP,EAAKg3F,KAAKr3D,SAASivN,MAEtDC,EAAkB7uP,EAAKg3F,KAAK//E,QAAO,SAAU23O,GAC7C,MAAsB,iBAARA,IAAqBj9O,EAAQqlF,KAAKr3D,SAASivN,MAEzDE,EAAiBn9O,EAAQulF,MAAMjgF,QAAO,SAAU23O,GAChD,MAAsB,iBAARA,IAAqB5uP,EAAKk3F,MAAMv3D,SAASivN,MAEvDG,EAAmB/uP,EAAKk3F,MAAMjgF,QAAO,SAAU23O,GAC/C,MAAsB,iBAARA,IAAqBj9O,EAAQulF,MAAMv3D,SAASivN,MAmB9D,GAhBID,EAAc9gQ,OAAS,GACvB4gQ,EAAQtgQ,KAAK,oBAAsBwgQ,EAAcj0P,KAAK,MAAQ,oBAG9Dm0P,EAAgBhhQ,OAAS,GACzB4gQ,EAAQtgQ,KAAK,oBAAsB0gQ,EAAgBn0P,KAAK,MAAQ,oCAGhEo0P,EAAejhQ,OAAS,GACxB4gQ,EAAQtgQ,KAAK,oBAAsB2gQ,EAAep0P,KAAK,MAAQ,qBAG/Dq0P,EAAiBlhQ,OAAS,GAC1B4gQ,EAAQtgQ,KAAK,oBAAsB4gQ,EAAiBr0P,KAAK,MAAQ,wCAGjEsF,EAAK0uP,oBAAsB/8O,EAAQ+8O,kBAAmB,CACtD,IAAIM,EAAWr9O,EAAQ+8O,kBAAoB,UAAY,SACvDD,EAAQtgQ,KAAK,mEAAqE6gQ,EAAW,KAGjG,OAAO/2P,EAAOw2P,EAAQ/zP,KAAK,MAmQ3B,mBAxYJ,SAA+B4gG,GAC3B,IAAI0xJ,EAAoB1xJ,EAAG3zE,QAAU2zE,EAAG3zE,OAAOh3B,KAAO2qG,EAAG3zE,OAAOh3B,KAAO2qG,EAAG0f,YAC1E,OAAO,EAAIj+D,EAAiB1oD,IAAI,4CAA6C,CAAE24P,kBAAmBA,KAuYlG,oBApYJ,SAA+B1xJ,GAC3B,IAAI0xJ,EAAoB1xJ,EAAG3zE,QAAU2zE,EAAG3zE,OAAOh3B,KAAO2qG,EAAG3zE,OAAOh3B,KAAO2qG,EAAG0f,YAC1E,OAAQ1f,EAAGlF,aAAa64J,WACpB,IAAK,SACD,OAAO,EAAIlyM,EAAiB1oD,IAAI,wEAAyE,CAAE24P,kBAAmBA,IAClI,IAAK,SACD,OAAO,EAAIjwM,EAAiB1oD,IAAI,mDAAoD,CAAE24P,kBAAmBA,IAC7G,QAEI,OAAO,EAAIjwM,EAAiB1oD,IAAI,0DAA2D,CACvF24P,kBAAmBA,EACnBt1K,KAAM4jB,EAAGlF,aAAa64J,cA0XlC,sBArXJ,SAAiC3zJ,GAC7B,IAAI0xJ,EAAoB1xJ,EAAG3zE,QAAU2zE,EAAG3zE,OAAOh3B,KAAO2qG,EAAG3zE,OAAOh3B,KAAO2qG,EAAG0f,YAC1E,OAAQ1f,EAAGlF,aAAauuH,cACpB,IAAK,WACD,OAAO,EAAI5nK,EAAiB1oD,IAAI,6DAA8D,CAAE24P,kBAAmBA,IACvH,IAAK,YACD,OAAO,EAAIjwM,EAAiB1oD,IAAI,oEAAqE,CAAE24P,kBAAmBA,IAC9H,QAEI,OAAO,EAAIjwM,EAAiB1oD,IAAI,yDAA0D,CACtF24P,kBAAmBA,EACnBt1K,KAAM4jB,EAAGlF,aAAauuH,iBA2WlC,wBAtWJ,SAAmCrpH,GAC/B,IAAI0xJ,EAAoB1xJ,EAAG3zE,QAAU2zE,EAAG3zE,OAAOh3B,KAAO2qG,EAAG3zE,OAAOh3B,KAAO2qG,EAAG0f,YACtEhlE,EAASslD,EAAGlF,aAAapgD,QAAU,GACnCk5M,EAAa5zJ,EAAGkgB,iBAAiBxlE,QAAU,GAC3Cm5M,EAAQn5M,EAAO/+B,QAAO,SAAUyyC,GAChC,OAAQwlM,EAAWvvN,SAAS+pB,MAE5BtiB,EAAU8nN,EAAWj4O,QAAO,SAAUyyC,GACtC,OAAQ1T,EAAOrW,SAAS+pB,MAG5B,OAAIylM,EAAMthQ,SAAWu5C,EAAQv5C,QAClB,EAAIkvD,EAAiB1oD,IAAI,mEAAoE,CAChG24P,kBAAmBA,EACnBh3M,OAAQm5M,EAAMz0P,KAAK,SAEfy0P,EAAMthQ,QAAUu5C,EAAQv5C,QACzB,EAAIkvD,EAAiB1oD,IAAI,oEAAqE,CACjG24P,kBAAmBA,EACnBh3M,OAAQ5O,EAAQ1sC,KAAK,QAElBy0P,EAAMthQ,QAAUu5C,EAAQv5C,QACxB,EAAIkvD,EAAiB1oD,IAAI,2GAAiH,CAC7I24P,kBAAmBA,EACnBoC,UAAWD,EAAMz0P,KAAK,MACtB20P,UAAWjoN,EAAQ1sC,KAAK,QAIrB,IA2UX,4BA9DJ,SAA4BzK,GACxB,IAAIg9P,EAAah9P,EAAM+qH,YAEnBs0I,EAAwBr/P,EAAMurH,iBAC9B+zI,EAAWD,EAAsB3+P,KACjC6+P,EAAWF,EAAsB/+P,KACjCk/P,EAAUH,EAAsBx0P,IAEhCu2B,EAAOphC,EAAMmmG,cAAgB,GAC7BzlG,EAAO0gC,EAAK1gC,KACZJ,EAAO8gC,EAAK9gC,KACZuK,EAAMu2B,EAAKv2B,IAEXm5G,EAAatjH,GAAQ4+P,GAAYh/P,GAAQi/P,GAAY,GAQzD,OANIv7I,GAAcA,EAAWpmH,OAAS,IAClComH,EAAaA,EAAW,GAAG9pC,cAAgB8pC,EAAWnhH,MAAM,GAAK,KAKjEgI,EACI20P,GACO,EAAI1yM,EAAiB1oD,IAAI,mDAAoD,CAChF4/G,WAAYA,EAAYg5I,WAAYA,KAGjC,EAAIlwM,EAAiB1oD,IAAI,gDAAiD,CAC7E4/G,WAAYA,EAAYg5I,WAAYA,KAIrC,EAAIlwM,EAAiB1oD,IAAI,kDAAmD,CAC/E4/G,WAAYA,EAAYg5I,WAAYA,MAgChDt+P,EAAOD,QAAU,CACbsrI,aAAc,SAAsB1+B,GAChC,IAAIrsF,GAAWqsF,EAAGygB,UAAYqxI,EAAgBvmM,GAAUy0C,EAAG7F,WAC3D,OAAIxmF,EAAgBA,EAAQqsF,GACrB,M,6BC5hBf,IAAIo0J,EAAiB,SAAwB7gK,KA+B7ClgG,EAAOD,QArBP,SAAmBowC,EAAW+vD,EAAQrxF,EAAG6kB,EAAGlxB,EAAGC,EAAGvC,EAAG6F,GAGnD,GAFAg7P,EAAe7gK,IAEV/vD,EAAW,CACd,IAAI/uC,EACJ,QAAec,IAAXg+F,EACF9+F,EAAQ,IAAIC,MAAM,qIACb,CACL,IAAImU,EAAO,CAAC3G,EAAG6kB,EAAGlxB,EAAGC,EAAGvC,EAAG6F,GACvBmtI,EAAW,GACf9xI,EAAQ,IAAIC,MAAM6+F,EAAOj0F,QAAQ,OAAO,WACtC,OAAOuJ,EAAK09H,UAERlxI,KAAO,sBAIf,MADAZ,EAAM+xI,YAAc,EACd/xI,K,gBChDV,IAAI0kM,EAAW,EAAQ,MAwBvB9lM,EAAOD,QAJP,SAAcg4B,GACZ,OAAQA,GAASA,EAAM74B,OAAU4mM,EAAS/tK,GAAS,K,gBCrBrD,IAAIipO,EAAgB,EAAQ,MACxBC,EAAiB,EAAQ,MACzBC,EAAc,EAAQ,MACtBC,EAAc,EAAQ,MACtBC,EAAc,EAAQ,MAS1B,SAASvoE,EAASpiK,GAChB,IAAIrrB,GAAS,EACTlM,EAAoB,MAAXu3B,EAAkB,EAAIA,EAAQv3B,OAG3C,IADAsQ,KAAKilC,UACIrpC,EAAQlM,GAAQ,CACvB,IAAIuvC,EAAQhY,EAAQrrB,GACpBoE,KAAKuY,IAAI0mB,EAAM,GAAIA,EAAM,KAK7BoqJ,EAASz5L,UAAUq1C,MAAQusN,EAC3BnoE,EAASz5L,UAAkB,OAAI6hQ,EAC/BpoE,EAASz5L,UAAU0D,IAAMo+P,EACzBroE,EAASz5L,UAAU4oB,IAAMm5O,EACzBtoE,EAASz5L,UAAU2oB,IAAMq5O,EAEzBphQ,EAAOD,QAAU84L,G,gBC/BjB,IAII7kK,EAJY,EAAQ,IAId6hK,CAHC,EAAQ,KAGO,OAE1B71L,EAAOD,QAAUi0B,G,cCWjBh0B,EAAOD,QAVP,SAAoBgoB,GAClB,IAAI3c,GAAS,EACT3E,EAASN,MAAM4hB,EAAIuO,MAKvB,OAHAvO,EAAIne,SAAQ,SAAS1G,GACnBuD,IAAS2E,GAASlI,KAEbuD,I,6BCZTtH,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAEXnD,EAAQshQ,mBAAgBn/P,EAExB,IAEIunG,EAAWrkG,EAFD,EAAQ,KAMlBkJ,EAAWlJ,EAFD,EAAQ,KAMlB0oD,EAAkB1oD,EAFA,EAAQ,KAM1B2+F,EAAY3+F,EAFD,EAAQ,MAMnBD,EAAgBC,EAFA,EAAQ,KAMxBC,EAAWD,EAFD,EAAQ,KAItBrF,EAAQuhQ,gBAgCR,WACI,IAAIC,EAAiB,CACjB,OAAS,EAAInzM,EAAiB1oD,IAAI,eAClC,MAAQ,EAAI0oD,EAAiB1oD,IAAI,eAEjC87P,EAAex6P,EAAgB3C,QAAQ2/B,SAAS,iBAChDy9N,EAAmB,GACnB50P,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiB7K,EAErB,IACI,IAAK,IAA0D8K,EAAtDC,GAAY,EAAI9H,EAAcd,SAASm9P,KAAwB30P,GAA6BG,EAAQC,EAAUC,QAAQC,MAAON,GAA4B,EAAM,CACpK,IACI7K,EADQgL,EAAM9J,MACDlB,KAEjBy/P,EAAiB,UAAYz/P,GAAQA,GAE3C,MAAO8B,GACLgJ,GAAoB,EACpBC,EAAiBjJ,EACnB,QACE,KACS+I,GAA6BI,EAAUI,QACxCJ,EAAUI,SAEhB,QACE,GAAIP,EACA,MAAMC,GAKlB,OAAO,EAAI1H,EAAShB,SAAS,GAAIo9P,EAAkBF,IAhEvDxhQ,EAAQ2hQ,SA8HR,SAAkBn8G,GACTA,IACDA,EAAQv+I,EAAgB3C,QAAQ2/B,SAAS,UAE7C,IAAI29N,EAAiBp8G,EACrB,GAAIA,EAAMt8I,WAAW,WAAY,CAC7B,IAAI24P,EA7BZ,SAAwBC,GAEpB,IAAIL,EAAex6P,EAAgB3C,QAAQ2/B,SAAS,iBACpD,IAAKw9N,EACD,MAAM,IAAIngQ,MAAM,kDAAoDwgQ,EAAY,KAEpF,IAAID,EAAcJ,EAAa14P,MAAK,SAAU3F,GAC1C,OAAOA,EAAEnB,OAAS6/P,KAEtB,IAAKD,EAAa,CACd,IAAIE,EAAaN,EAAa94P,KAAI,SAAUvF,GACxC,OAAOA,EAAEnB,QACV+J,KAAK,MACR,MAAM,IAAI1K,MAAM,6BAA+BwgQ,EAAY,gBAAmBC,GAElF,OAAOF,EAceG,CAAex8G,EAAMx8I,OAAO,IAC9C44P,EAAiBC,EAAYI,QAAU,cAAgB,eAlE/D,SAA4BJ,GACxB,IAAIhtJ,EAAQj0G,SAAS2L,KAAKsoG,MAE1B,GAAIgtJ,EAAY1vH,OAAQ,CACpB,IAAI38E,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBvzD,EAEtB,IACI,IAAK,IAAyFwzD,EAArFC,GAAa,EAAIxwD,EAAcd,UAAS,EAAI0/F,EAAU1/F,SAASu9P,EAAY1vH,WAAoB38E,GAA8BG,EAASC,EAAWzoD,QAAQC,MAAOooD,GAA6B,EAAM,CACxM,IAAI0sM,GAAe,EAAIn0M,EAAgBzpD,SAASqxD,EAAOxyD,MAAO,GAC1DlB,EAAOigQ,EAAa,GACpBC,EAAWD,EAAa,GAE5BrtJ,EAAMutJ,YAAY,KAAOngQ,EAAMkgQ,GAE/BttJ,EAAMutJ,YAAY,KAAOngQ,EAAO,QAASkgQ,EAAW,MACpDttJ,EAAMutJ,YAAY,KAAOngQ,EAAO,SAAUkgQ,EAAW,OAE3D,MAAOp+P,GACL0xD,GAAqB,EACrBC,EAAkB3xD,EACpB,QACE,KACSyxD,GAA8BI,EAAWtoD,QAC1CsoD,EAAWtoD,SAEjB,QACE,GAAImoD,EACA,MAAMC,KAsClB2sM,CAAmBR,GAOvB,IAFA,IAAIS,GAAgB,EAAI/zP,EAASjK,SAAS,MACtCwK,OAAI,EACC7P,EAAI,EAAG6P,EAAIlO,SAASmqG,qBAAqB,QAAQ9rG,GAAIA,IAAK,CAC/D,IAEIkM,EAFO2D,EAAEi4I,aAAa,QAET57I,MAAM,kCACnBA,IACAm3P,EAAcn3P,EAAM,IAAM2D,GAIlC,KAAM8yP,KAAkBU,GACpB,MAAM,IAAIhhQ,MAAM,iBAAmBsgQ,GAcvCU,EAAcV,GAAgBhmM,UAAW,EAEzC,IAAI2mM,EAAc,WAKdD,EAAcV,GAAgBhmM,UAAW,GACzC,EAAI8tC,EAASplG,SAASg+P,GAAez4P,SAAQ,SAAUiF,GAC/CA,GAAKwzP,EAAcV,KACvB9yP,EAAE8sD,UAAW,MAEjBiuK,EAASvlO,QAAQq9P,SAASn8G,IAM1Bg9G,GAAY,EAEhBF,EAAcV,GAAgBngQ,OAAS,WACnC8gQ,KAGJ,IAAK,IAAIj/N,EAAK,EAAGA,EAAK1iC,SAASylJ,YAAYlnJ,OAAQmkC,IAAM,CACrD,IAAIgjH,EAAK1lJ,SAASylJ,YAAY/iH,GAC9B,GAAIgjH,GAAMA,EAAGvmD,OAASuiK,EAAcV,GAAgB7hK,KAAM,CACtDyiK,GAAY,EACZ,OAIJA,IACAF,EAAcV,GAAgBngQ,YAASU,EACvCogQ,MArMR,IAAIl0M,EAAmB,EAAQ,GAI3Bw7K,EAAWxkO,EAFD,EAAQ,MAMlB4B,EAAkB5B,EAFD,EAAQ,KAI7B,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEnE1E,EAAQshQ,cAAgB,S,6BC5C5CliQ,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAEXnD,EAAQyiQ,8BAA2BtgQ,EAEnC,IAoBQwgC,EAlBJxB,EAAgB97B,EAFD,EAAQ,KAIvB+7B,EAAY,EAAQ,GAIpB77B,EAASF,EAFD,EAAQ,KAahBo9P,EAA2BziQ,EAAQyiQ,0BAC/B9/N,GAAO,EAAIvB,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASC,EAAQd,EAAcmiE,GACxG,IAAIi+J,EAAanyF,EAASoyF,EAC1B,OAAOxhO,EAAc78B,QAAQm/B,MAAK,SAAkB7F,GAChD,OACI,OAAQA,EAAStsB,KAAOssB,EAASzwB,MAC7B,KAAK,EAED,OADAywB,EAASzwB,KAAO,GACT,EAAIi0B,EAAU5gC,SAASikG,EAAK6oJ,6BAA6B3kP,KAAI,SAAUnG,GAC1E,OAAOA,EAAEwgC,WAGjB,KAAK,EAGD,OAFA0/N,EAAc9kO,EAASmH,KACvBnH,EAASzwB,KAAO,GACT,EAAIi0B,EAAU5gC,SAAS8hC,EAAaioN,aAAamY,GAAa,IAEzE,KAAK,EAiBD,OAhBAnyF,EAAU3yI,EAASmH,KACnB49N,EAAiB,IAGjB,EAAIp9P,EAAOjB,SAASisK,GAAS1mK,SAAQ,SAAUm5B,IAC3C,EAAIz9B,EAAOjB,SAASisK,EAAQvtI,IAASr6B,KAAI,SAAU08B,GAC/C,IAAI8uH,EAASoc,EAAQvtI,GAAQqC,GAEzB8uH,EAAOyiG,iBAAmBziG,EAAOzQ,iBACFvhJ,IAA3BwgQ,EAAe3/N,KACf2/N,EAAe3/N,GAAU,IAE7B2/N,EAAe3/N,GAAQqC,GAAY8uH,SAIxCv2H,EAASgG,OAAO,SAAU++N,GAErC,KAAK,EACL,IAAK,MACD,OAAO/kO,EAASiF,UAG7BO,EAAS3zB,UAGT,SAAkC0rG,EAAI6T,GACzC,OAAOrsF,EAAKh3B,MAAM8D,KAAM2C,aAIhCpS,EAAQ4iQ,oBA8BR,SAA6BtgO,EAAciuI,IACvC,EAAIhrK,EAAOjB,SAASisK,GAAS1mK,SAAQ,SAAUm5B,IAC3C,EAAIz9B,EAAOjB,SAASisK,EAAQvtI,IAASr6B,KAAI,SAAU08B,GAC/C/C,EAAaugO,eAAe7/N,EAAQqC,GAAU,UAhC1DrlC,EAAQ8iQ,mCA+DR,SAA4CxgO,EAAcmiE,GACtDg+J,EAAyBngO,EAAcmiE,GAAMh+F,MAAK,SAAUk8P,GACxD,IAIII,EAAsBphO,EAAQr9B,QAAQ2J,aAAa,+BACvD6zB,EAAQx9B,QAAQ6nG,oBAAoB,wBAAyB,GAAI42J,EAAqB,CAClFt+J,KAAMA,EACN8rE,QAASoyF,EACTK,iBAAiB,EAAI30M,EAAiB1oD,IAAI,eAC1Cs9P,WAAW,EAAI50M,EAAiB1oD,IAAI,QACpCu9P,OAVgB,WAChBC,EAAS7+P,QAAQ8+P,mBAAmB3+J,IAUpCr1C,WAAYi0M,GACb,+BA5EXrjQ,EAAQo+H,gCA8FR,SAAyC97F,EAAcmiE,EAAM6+J,EAAYN,EAAiBC,GACtFR,EAAyBngO,EAAcmiE,GAAMh+F,MAAK,SAAUk8P,GACxD,IAAII,EAAsBphO,EAAQr9B,QAAQ2J,aAAa,+BACvD6zB,EAAQx9B,QAAQ6nG,oBAAoB,wBAAyB,GAAI42J,EAAqB,CAClFt+J,KAAMA,EACN8rE,QAASoyF,EACTK,gBAAiBA,EACjBC,UAAWA,EACXC,OAAQI,GACT,+BArGX,IAEIH,EAAW99P,EAFD,EAAQ,MAMlBs8B,EAAUt8B,EAFD,EAAQ,IAMjB+oD,EAAe/oD,EAFD,EAAQ,KAMtBy8B,EAAUz8B,EAFD,EAAQ,KAIjBgpD,EAAmB,EAAQ,GAE/B,SAAShpD,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GA8BvF,SAAS2+P,IACLj1M,EAAa9pD,QAAQopD,SAAS,CAAED,OAAQ,qB,6BC9H5C,IAEIi3C,EAAoBr/F,EAFD,EAAQ,KAM3B+oD,EAAe/oD,EAFD,EAAQ,KAItBk8B,EAAe,EAAQ,IAE3B,SAASl8B,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvFzE,EAAOD,QAAU,CACbojQ,mBAAoB,SAA4B3+J,GAC5CA,EAAKi8D,mBAAmBn4I,QAAO,SAAUqkF,GACrC,OAAOA,EAAGpgG,SAAW+0B,EAAa0pF,YAAYC,YAC/CrhH,SAAQ,SAAUtI,GACjBtB,EAAOD,QAAQ+wP,OAAOxvP,OAG9BgiQ,mBAAoB,SAA4B9+J,GAC5CA,EAAKi8D,mBAAmBn4I,QAAO,SAAUqkF,GACrC,OAAOA,EAAGpgG,SAAW+0B,EAAa0pF,YAAYC,YAC/CrhH,SAAQ,SAAUtI,GACjBtB,EAAOD,QAAQwjQ,gBAAgBjiQ,OAGvCwvP,OAAQ,SAAgBxvP,GACpB,IAAIkjG,EAAOC,EAAkBpgG,QAAQvB,MAAM4hG,QAAQpjG,EAAMs2G,aACzDnT,EAAkBpgG,QAAQvB,MAAM0gQ,YAAYliQ,EAAOkjG,GAAMr3F,MAAK,SAAU6sF,GACpE7rC,EAAa9pD,QAAQopD,SAAS,CAC1BD,OAAQ,eACRlsD,MAAOA,OAEZ,SAAUwC,GAGTC,QAAQsD,IAAI,4BAA8BvD,EAAI9B,KAAO,IAAM8B,EAAM,KAEjEqqD,EAAa9pD,QAAQopD,SAAS,CAC1BD,OAAQ,sBACRlsD,MAAOA,QAInBiiQ,gBAAiB,SAAyBjiQ,GACtCmjG,EAAkBpgG,QAAQvB,MAAMi1K,mBAAmBz2K,M,6BC9C3DnC,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAEXnD,EAAQkjL,sBAAmB/gL,EAE3B,IA0BQwgC,EAxBJxB,EAAgB97B,EAFD,EAAQ,KAIvB+7B,EAAY,EAAQ,GAIpBC,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAexB69K,EAAmBljL,EAAQkjL,kBACvBvgJ,GAAO,EAAIvB,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASC,EAAQuxF,EAAOG,EAAO4uI,EAAWC,GACnH,IAAI7/I,EAAQllH,EAAMglQ,EAClB,OAAOziO,EAAc78B,QAAQm/B,MAAK,SAAkB7F,GAChD,OACI,OAAQA,EAAStsB,KAAOssB,EAASzwB,MAC7B,KAAK,EAMD,OALA22G,EAASwZ,EAAch5H,QAAQgjJ,aAAa,CACxCpiH,QAASyvF,EACTvvF,UAAW0vF,IAEfl3F,EAASzwB,KAAO,GACT,EAAIi0B,EAAU5gC,SAASsjH,EAAO+/I,MAAMH,EAAWC,IAE1D,KAAK,EAgBD,OAfA/kQ,EAAOg/B,EAASmH,MAChB6+N,EAAYhlQ,EAAKklQ,cAGTF,EAAU,iBAAmBA,EAAU,gBAA0B,WACjEjvI,EAAQivI,EAAU,gBAA0B,SAC5C5/P,QAAQsD,IAAI,oCAAsCqtH,EAAQ,yBAE1DivI,EAAU,sBAAwBA,EAAU,qBAA+B,WAE3E9uI,EAAQ8uI,EAAU,qBAA+B,SACjD5/P,QAAQsD,IAAI,4BAA8BwtH,EAAQ,0BAInDl3F,EAASgG,OAAO,SAAU,CAC7BqB,cAAe0vF,EACfxvF,kBAAmB2vF,EACnB9xF,OAAQpkC,EAAK2tH,QACblnF,SAAUzmC,EAAK8vH,UACfnpF,YAAa3mC,EAAK4pJ,eAG1B,KAAK,EACL,IAAK,MACD,OAAO5qH,EAASiF,UAG7BO,EAAS3zB,UAGT,SAA0B0rG,EAAI6T,EAAK4E,EAAK/J,GAC3C,OAAOlnF,EAAKh3B,MAAM8D,KAAM2C,aAM5BkrH,EAAgBj4H,EAFD,EAAQ,KAMvBisG,EAAQjsG,EAFD,EAAQ,KAInB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAqBvF,IAAIq/P,EAAQ,WACR,SAASA,EAAMpvI,EAAOG,EAAOkvI,EAAe/jP,IACxC,EAAIohB,EAAiB/8B,SAASmL,KAAMs0P,GAEpCt0P,KAAKw0P,OAAStvI,EACdllH,KAAKy0P,OAASpvI,EACdrlH,KAAK00P,eAAiBH,EACtBv0P,KAAK20P,kBAAoB,EACzB30P,KAAK40P,OAAS,GACd50P,KAAK60P,0BAA4BrkP,EAAKugK,yBA0I1C,OAvIA,EAAIl/I,EAAch9B,SAASy/P,EAAO,CAAC,CAC/BtgQ,IAAK,mBACLN,MAAO,WACH,OAAOsM,KAAKw0P,SAEjB,CACCxgQ,IAAK,uBACLN,MAAO,WACH,OAAOsM,KAAKy0P,SAEjB,CACCzgQ,IAAK,mBACLN,MAAO,SAA0BwxH,GAC7BllH,KAAKw0P,OAAStvI,IAEnB,CACClxH,IAAK,uBACLN,MAAO,SAA8B2xH,GACjCrlH,KAAKy0P,OAASpvI,IASnB,CACCrxH,IAAK,yBACLN,MAAO,WACH,OAAOm6H,EAAch5H,QAAQgjJ,aAAa,CACtCpiH,QAASz1B,KAAKw0P,OACd7+N,UAAW31B,KAAKy0P,WAGzB,CACCzgQ,IAAK,WACLN,MAAO,WACH,IAAIiL,EAAOqB,KAEX,OADaA,KAAK80P,yBACJC,aAAa/9P,MAAK,SAAUC,GAKtC,OAJA0H,EAAKi2P,OAAS39P,EAAO+9P,MACrBr2P,EAAKg2P,kBAAoB,EAGlBh2P,EAAKi2P,YAGrB,CACC5gQ,IAAK,aACLN,MAAO,SAAoBuhQ,GACvBj1P,KAAK20P,kBAAoBM,IAE9B,CACCjhQ,IAAK,qBACLN,MAAO,WAGH,IAAIwhQ,EAAWl1P,KAAK40P,OAAO50P,KAAK20P,mBAChC,OAAOO,EAAWA,EAAS9iQ,KAAO,OAEvC,CACC4B,IAAK,mBACLN,MAAO,SAA0B02H,EAAU6mF,EAAcC,EAAaikD,GAClE,IAAI91M,EAAQr/C,KAERrB,EAAOqB,KAEPo1P,EAAUhrI,EAAShxH,QAAQ,KAAO,EAsBlC86P,EAAc,CACd7pI,SAAU8qI,EACVE,WArBApkD,GAAgBC,EACH,CACT9+M,KAAM,aACNkjQ,QAASrkD,EACT9lB,OAAQ+lB,GAELkkD,EACM,CACThjQ,KAAM,kBACNg0N,OAAQ,QACRryE,QAAS3pB,GAGA,CACTh4H,KAAM,YACNw7G,KAAMwc,GAOVspD,4BAA6B1zK,KAAK60P,2BAWlCU,EAAqB,KACzB,OAAO9hF,EAAiB90K,EAAK61P,OAAQ71P,EAAK81P,OAAQ,mBAAoBP,GAAa10M,OAAM,SAAU5tD,GAE/F,GADA2jQ,EAAqB3jQ,EACI,MAArBA,EAAM27G,YACF5uG,EAAK+1P,eACL,OAb+Bc,EAaVD,EAZtB9hF,EAAiB90K,EAAK+1P,eAAgBr1M,EAAMo1M,OAAQ,mBAAoBP,GAAa10M,OAAM,SAAUi2M,GAGxG,MAFAlhQ,QAAQsD,IAAI,2BAA4B49P,GAElCD,KAJM,IAAuBA,EAgBvC,MAAMD,KACP/1M,OAAM,SAAU5tD,GAEf,MADA2C,QAAQsD,IAAI,eAAgBjG,GACtBA,OAGf,CACCoC,IAAK,iBACLN,MAAO,SAAwBugQ,GAC3B,IAAI5/I,EAASr0G,KAAK80P,yBACd9gC,EAAYnyH,EAAMhtG,QAAQoI,MAAMxI,OAAOqgC,SAASw7D,MAAM,GAU1D,OAJA0jI,EAAU7xL,KAAO,GAEjB6xL,EAAU5jI,MAAkB,WAAIikB,EAAOigC,mBACvC0/E,EAAU5jI,MAAsB,eAAIikB,EAAOokC,uBACpCpkC,EAAOqhJ,eAAe7zJ,EAAMhtG,QAAQ67F,OAAOsjI,GAAYigC,OAG/DK,EAnJC,GAsJZ/jQ,EAAQsE,QAAUy/P,G,8BCtQlB,YAEA3kQ,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEIk+B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxBq/F,EAAoBr/F,EAFD,EAAQ,KAM3B4B,EAAkB5B,EAFD,EAAQ,KAMzB+/P,EAAU//P,EAFD,EAAQ,MAIrB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvF,IAsBI2gQ,EAAc,WACd,SAASA,KACL,EAAIhkO,EAAiB/8B,SAASmL,KAAM41P,GAEpC51P,KAAKzB,QAgFT,OA7EA,EAAIszB,EAAch9B,SAAS+gQ,EAAa,CAAC,CACrC5hQ,IAAK,QAOLN,MAAO,WACHsM,KAAK61P,cAAgB,KAe1B,CACC7hQ,IAAK,gBACLN,MAAO,SAAuB6yD,EAAQuvM,GAClC,IAAIz2M,EAAQr/C,KAEZ,GAAKxI,EAAgB3C,QAAQ2/B,SAAS,6BAClCh9B,EAAgB3C,QAAQ2/B,SAAS,gBAArC,CAEA,IAAIuhO,EAAgB/1P,KAAK61P,cAActvM,IAClCuvM,IAAaC,GAAiBA,GAAiBA,EAAcD,WAAaA,IAK1EC,IACDA,EAAgB/1P,KAAK61P,cAActvM,GAAU,CACzCuvM,SAAUA,EACVE,YAAa,IAAIL,EAAQ9gQ,QAtDjB,KAuDRohQ,UAAW,IAAIN,EAAQ9gQ,QAvEjB,OA2EdkhQ,EAAcD,SAAWA,EAErBA,IACKC,EAAcC,YAAYx8G,YAQxBu8G,EAAcC,YAAYE,UAP7BH,EAAcC,YAAYE,UAAUjzM,WAAWjsD,MAAK,WAChD,IAAI++P,EAAgB12M,EAAMw2M,cAActvM,GACpCwvM,IAAeA,EAAcD,UAAW,MAO/CC,EAAcE,UAAUz8G,YAItBu8G,EAAcE,UAAUC,UAH3BH,EAAcE,UAAUC,UAAUjzM,WAAWjsD,MAAK,WAC9CqoD,EAAM82M,cAAc5vM,GAAQ,OAKxC0uC,EAAkBpgG,QAAQvB,MAAM8iQ,WAAW7vM,EAAQuvM,EA/EnC,UAiFpB,CAAC,CACD9hQ,IAAK,iBACLN,MAAO,WAIH,YAH6BhB,IAAzBwb,EAAOmoP,gBACPnoP,EAAOmoP,cAAgB,IAAIT,GAExB1nP,EAAOmoP,kBAGfT,EApFO,GAuFlBrlQ,EAAQsE,QAAU+gQ,EAClBplQ,EAAOD,QAAUA,EAAiB,U,2NCrH3B,WAA+B+lQ,GAA/B,yFACsB5jQ,IAArB4jQ,IAAgCA,EAAmB,IAC9B,KAArBA,GAA4BA,EAAiB5qK,SAAS,OAAM4qK,GAAoB,KAFjF,gCAI0BC,EAAaD,EAAb,UAAuCnlQ,SAAS8b,OAAhD,UAJ1B,UAIOupP,EAJP,OAMwC,KAAnC,aAAYA,GAAY9mQ,OAN7B,sBAOW,IAAImC,MAPf,gCASQ2kQ,GATR,iEAWcD,EAAUD,EAAmB,gBAX3C,mG,+CAJP,S,mDAmBA,SAASC,EAAUE,GACf,OAAO,IAAI3lQ,WAAQ,SAASC,EAASC,IACjC,aACI,CAAE4L,OAAQ,MAAOD,IAAK85P,EAAoBzyM,GAAI,CAAE0yM,YAAa9vM,KAAK8+D,SAClE,SAACpxH,EAAKuI,EAAUC,GACZ,IACI,GAAIxI,GAAOuI,EAASE,OAAS,KAAOF,EAASE,QAAU,IAcnD,OANIF,IACuB,KAAnBA,EAASE,QAAqC,GAAnBF,EAASE,QAAuB,IAARD,IACnD/L,EAAQ,SAGhBC,EAAO,CAACsD,IAAKA,EAAKuI,SAAUA,IAQhC9L,EAAQiM,KAAKC,MAAMH,IACrB,MAAOpM,GACLM,EAAO,CAACsD,IAAK5D,a,6BC/DjC,IAAIimQ,EAAa,EAAQ,KACrBvsK,EAAS,EAAQ,MACjBwsK,EAAc,EAAQ,MACtBjvD,EAAY,EAAQ,MACpBriK,EAAY,EAAQ,MACpBqrD,EAAW,EAAQ,MACnBuiG,EAAgB,EAAQ,MACxB2jE,EAAS,EAAQ,MACjBC,EAAU,EAAQ,MAClBn6P,EAAM,EAAQ,IAElB,SAAS4Z,EAAKthB,EAAKgU,GACbhU,GAAKtF,OAAOoZ,KAAK9T,GAAKmF,SAAQ,SAAUpG,GAC1CiV,EAAGhU,EAAIjB,GAAMA,MAKjB,SAASwkB,EAAIvjB,EAAKjB,GAChB,MAAO,GAAGnE,eAAeC,KAAKmF,EAAKjB,GAIrC,SAAS8kB,EAAOzZ,EAAG4J,GACjB,IAAI/U,EAAI,GAMR,OALAqiB,EAAKlX,GAAG,SAAUghB,GACZpX,EAAGoX,IACLnsB,EAAElE,KAAKqwB,MAGJnsB,EAGT1D,EAAOD,QAAUwmQ,EAajB,IAAIC,EAA4B,wBAMhC,SAASD,EAAal2J,EAAM3mG,EAAS+8P,GACnC,IAAIhgQ,EAAS,GAEb,SAASigQ,EAAMl8P,EAAKgqG,GAClB,IAAIhY,EAAOhtF,KACXA,KAAKhF,IAAMA,EACXgF,KAAKglG,QAAUA,GAAW,GAC1BhlG,KAAKm3P,YAAclgQ,EAAOvH,OAC1BsQ,KAAKlG,KAAO,GAEZkG,KAAKo3P,qBAAuB,WACtB50P,EAAM9S,SACU8S,EAAMA,EAAM9S,OAAS,GAC3BoK,MAAQkzF,EAAKlzF,OAK1BI,GAIHA,EAAUkwF,EAAO2sK,EAAa1qI,SAAUnyH,IAC5Bm9P,OACVn9P,EAAQm9P,OAASjtK,EAAOktK,EAAoBp9P,EAAQm9P,QAEpDn9P,EAAQm9P,OAASC,GAPnBp9P,EAAU68P,EAAa1qI,UACfgrI,OAASC,EAcnB,IACIC,EACAC,EAFAC,EAAmBv9P,EAAQw9P,aAAe,CAAC,SAAU,QAAS,YAG9Dx9P,EAAQwrG,oBACV6xJ,EAAuB,GACvBC,EAA2B,GAC3BjhP,EAAKrc,EAAQwrG,mBAAmB,SAAUh7E,EAAY1vB,GACpDu8P,EAAqBv8P,GAAO,GAC5B,IAAI28P,EAAY,GAChBjtO,EAAWtwB,SAAQ,SAAUnF,GACvB07F,EAAS17F,IAAQA,EAAImE,QAAQ,MAAQ,EACvCu+P,EAAU3nQ,KAAK4mQ,EAAY3hQ,GAAKwH,QAAQ,QAAS,OAEjD86P,EAAqBv8P,GAAKhL,KAAKiF,MAGnCuiQ,EAAyBx8P,GAAO,IAAIM,OAAO,KAAOq8P,EAAUp7P,KAAK,KAAO,UAG5E,IAAIq7P,EAAoB,GACxBrhP,EAAKrc,EAAQ29P,gBAAgB,SAAUt0M,EAASvoD,GAE1Cu8P,IACG/+O,EAAI++O,EAAsBv8P,KAC7Bu8P,EAAqBv8P,GAAO,IAE9Bu8P,EAAqBv8P,GAAKhL,KAAK,UAGjC4nQ,EAAkB58P,GAAOuoD,KAG3B,IACIu0M,EADAC,EAAmB,GAEvBxhP,EAAKrc,EAAQ6qG,eAAe,SAAUl/B,EAAW7qE,GAC/C,IAAIg9P,EACqB,mBAAdnyL,EACTmyL,EAAWnyL,EACmB,iBAAdA,IAChBmyL,EAAWjB,EAAakB,gBAAgBpyL,IAE9B,MAAR7qE,EACF88P,EAAmBE,EAEnBD,EAAiB/8P,GAAOg9P,KAI5B,IAAI1mN,EAAQ,EACR9uC,EAAQ,GACR01P,EAAU,GACVC,EAAe,GACfC,GAAW,EACXC,EAAgB,EAEhBhB,EAAS,IAAIV,EAAWtvC,OAAO,CACjCixC,UAAW,SAAmB9lQ,EAAMwyG,GAClC,GAAIozJ,EACFC,QADF,CAIA,IAAI5oC,EAAQ,IAAIynC,EAAM1kQ,EAAMwyG,GAC5BxiG,EAAMxS,KAAKy/N,GAEX,IAEI8oC,EAFAh/M,GAAO,EACPi/M,IAAU/oC,EAAM31N,KAEhB0e,EAAIu/O,EAAkBvlQ,KACxB+lQ,EAAiBR,EAAiBvlQ,GAAMA,EAAMwyG,GAE9CyqH,EAAMzqH,QAAUA,EAAUuzJ,EAAevzJ,aAEbtyG,IAAxB6lQ,EAAez+P,OACjB21N,EAAMlmE,UAAYgvG,EAAez+P,MAG/BtH,IAAS+lQ,EAAet3J,UAC1BwuH,EAAMj9N,KAAOA,EAAO+lQ,EAAet3J,QACnCk3J,EAAa7mN,GAASinN,EAAet3J,UAGrC62J,IACFS,EAAiBT,EAAiBtlQ,EAAMwyG,GAExCyqH,EAAMzqH,QAAUA,EAAUuzJ,EAAevzJ,QACrCxyG,IAAS+lQ,EAAet3J,UAC1BwuH,EAAMj9N,KAAOA,EAAO+lQ,EAAet3J,QACnCk3J,EAAa7mN,GAASinN,EAAet3J,UAIrC/mG,EAAQurG,cAAsD,IAAvCvrG,EAAQurG,YAAYrsG,QAAQ5G,KACrD+mD,GAAO,GACiC,IAApCk+M,EAAiBr+P,QAAQ5G,KAC3B4lQ,GAAW,EACXC,EAAgB,GAElBH,EAAQ5mN,IAAS,GAEnBA,IACIiI,IAIJtiD,GAAU,IAAMzE,IACX+kQ,GAAwB/+O,EAAI++O,EAAsB/kQ,IAAS+kQ,EAAqB,OACnFhhP,EAAKyuF,GAAS,SAAUtxG,EAAO2L,GAC7B,GAAK23P,EAA0BrlP,KAAKtS,GAApC,CAMA,IAAI+R,EAGAqnP,GAAkC,EACtC,IAAKlB,GAAwB/+O,EAAI++O,EAAsB/kQ,KAAoD,IAA3C+kQ,EAAqB/kQ,GAAM4G,QAAQiG,IAAak4P,EAAqB,OAAkD,IAA1CA,EAAqB,KAAKn+P,QAAQiG,IAAamZ,EAAIg/O,EAA0BhlQ,IAASglQ,EAAyBhlQ,GAAMmf,KAAKtS,IAAMm4P,EAAyB,MAAQA,EAAyB,KAAK7lP,KAAKtS,GAC/Uo5P,GAAkC,OAC7B,GAAIlB,GAAwBA,EAAqB/kQ,GAAO,CAC7D,IAAI6K,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiB7K,EAErB,IACE,IAAK,IAA+D8K,EAA3DC,EAAY85P,EAAqB/kQ,GAAMgB,OAAOk6B,cAAsBrwB,GAA6BG,EAAQC,EAAUC,QAAQC,MAAON,GAA4B,EAAM,CAC3K,IAAIlK,EAAIqK,EAAM9J,MAEd,GAAIw/L,EAAc//L,IAAMA,EAAEX,MAAQW,EAAEX,OAAS6M,EAAG,CAC9Co5P,GAAkC,EAClC,IAAI5zN,EAAW,GACf,IAAmB,IAAf1xC,EAAEulQ,SAAmB,CAEvB,IAAIC,EAAgBjlQ,EAAMmF,MAAM,KAC5BktD,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBvzD,EAEtB,IACE,IAAK,IAAmDwzD,EAA/CC,EAAawyM,EAAcnlQ,OAAOk6B,cAAuBq4B,GAA8BG,EAASC,EAAWzoD,QAAQC,MAAOooD,GAA6B,EAAM,CACpK,IAAInxD,EAAIsxD,EAAOxyD,OAEc,IAAzBP,EAAEsqB,OAAOrkB,QAAQxE,KACF,KAAbiwC,EACFA,EAAWjwC,EAEXiwC,GAAY,IAAMjwC,IAIxB,MAAON,GACP0xD,GAAqB,EACrBC,EAAkB3xD,EAClB,QACA,KACOyxD,GAA8BI,EAAWtoD,QAC5CsoD,EAAWtoD,SAEb,QACA,GAAImoD,EACF,MAAMC,SAIH9yD,EAAEsqB,OAAOrkB,QAAQ1F,IAAU,IAEpCmxC,EAAWnxC,GAEbA,EAAQmxC,IAGZ,MAAOvwC,GACPgJ,GAAoB,EACpBC,EAAiBjJ,EACjB,QACA,KACO+I,GAA6BI,EAAUI,QAC1CJ,EAAUI,SAEZ,QACA,GAAIP,EACF,MAAMC,IAKd,GAAIk7P,EAAiC,CACnC,IAA8D,IAA1Dv+P,EAAQ0+P,kCAAkCx/P,QAAQiG,IAChDw5P,EAAYrmQ,EAAMkB,GAEpB,mBADO+7N,EAAMzqH,QAAQ3lG,GAIzB,GAAa,WAAT7M,GAA2B,QAAN6M,EAAa,CACpC,IAAIy5F,GAAU,EACd,KAGE1nF,EAASzU,EAAIM,MAAMvJ,GAAO,GAAO,KACa,OAAhB0d,EAAOyjB,MAAqC,OAApBzjB,EAAO0+E,SAG3DgJ,EAAUtgF,EAAIte,EAAS,2BAA6BA,EAAQ4+P,yBAA2B5+P,EAAQ6+P,uBACtF7+P,EAAQ6+P,yBACjBjgK,EAAU5+F,EAAQ6+P,uBAAuBz/P,MAAK,SAAU42F,GACtD,OAAOA,IAAa9+E,EAAO8+E,aAG/B,MAAOx/F,GAEPooG,GAAU,EAEZ,IAAKA,EAEH,mBADO22H,EAAMzqH,QAAQ3lG,GAIzB,GAAU,WAANA,EACF,IAUE,GARAkX,EADAnF,EAASylP,EAAO55P,MAAMvJ,IACT,SAAUA,GACjBmlQ,EAAY,SAAUnlQ,EAAMiJ,OAC9BjJ,EAAMslQ,MAAO,QAGjB5nP,EAAS0H,EAAO1H,GAAQ,SAAUiP,GAChC,OAAQA,EAAE24O,SAEAtpQ,OAEV,mBADO+/N,EAAMzqH,QAAQ3lG,GAGrB3L,EAAQmjQ,EAAOtkP,UAAUuG,EAAO1H,GAAQ,SAAUiP,GAChD,OAAQA,EAAE24O,SAEZvpC,EAAMzqH,QAAQ3lG,GAAK3L,EAErB,MAAOhD,GAGP,mBADO++N,EAAMzqH,QAAQ3lG,GAIzB,GAAU,UAANA,KACF3L,EA0PZ,SAAuB6vD,EAASu1C,GAC9B,IAAKA,EAEH,OAAOv1C,EAGT,OADAA,EAAUA,EAAQ1qD,MAAM,QACTigB,QAAO,SAAUmgP,GAC9B,OAAkC,IAA3BngK,EAAQ1/F,QAAQ6/P,MACtB18P,KAAK,KAlQU28P,CAAcxlQ,EAAOkkQ,EAAkBplQ,KACpC9C,OAET,mBADO+/N,EAAMzqH,QAAQ3lG,GAIzB,GAAU,UAANA,EACF,IAME,GAAqB,KAFrB3L,EA4Md,SAAkCylQ,GAChC,OAAOA,EAAYjmP,MAAM,GAAGA,MAAMkD,QAAO,SAAUgjP,EAAqBC,GAEtE,OADAD,EAAoBppQ,KAAKqpQ,EAAgB/gP,KAAO,IAAM+gP,EAAgB3lQ,OAC/D0lQ,IACN,IAAI78P,KAAK,KAhNQ+8P,CA0KtB,SAAmBC,EAAoBC,GACrC,IAAKA,EACH,OAAOD,EAGT,IAEIE,EAFAN,EAAcxxD,EAAU4xD,GACxBG,EAAWH,EAAmBrmP,MAAM,GAKtCumP,EADED,EAAcE,EAASj9H,WAAa+8H,EAAc,KACrCl0N,EAAUqiK,EAAU6xD,EAAcE,EAASj9H,WAAY+8H,EAAc,MAAM,SAAU5uE,EAAUmH,GAC5G,GAAIp7L,MAAMC,QAAQg0L,GAChB,OAAOA,EAAStuL,OAAOy1L,MAIZynE,EAAcE,EAASj9H,WAAa+8H,EAAc,KAG/DC,IACFN,EAAYjmP,MAAM,GAAGA,MAAQwmP,EAASxmP,MAAMkD,OAgChD,SAA4BqjP,GAC1B,OAAO,SAAUE,EAAyBN,GAEpCI,EAAa5pQ,eAAewpQ,EAAgB/gP,QAC3BmhP,EAAaJ,EAAgB/gP,MAAMoT,MAAK,SAAUkuO,GACnE,OAAOA,EAAkBjoP,KAAK0nP,EAAgB3lQ,WAI9CimQ,EAAwB3pQ,KAAKqpQ,IAGjC,OAAOM,GA5C4CE,CAAmBJ,GAAe,KAGvF,OAAON,EApMuBW,CADOhD,EAAQ75P,MAAMzK,EAAO,KAAOkB,EAAQ,KACbwG,EAAQs/P,iBAI9C9pQ,OAER,mBADO+/N,EAAMzqH,QAAQ3lG,GAGvB,MAAO3O,GAEP,mBADO++N,EAAMzqH,QAAQ3lG,GAIzBpI,GAAU,IAAMoI,EACZ3L,EAAMhE,SACRuH,GAAU,KAAO8iQ,EAAWrmQ,GAAO,GAAQ,iBAGtC+7N,EAAMzqH,QAAQ3lG,eAjKdowN,EAAMzqH,QAAQ3lG,OAqKgB,IAAvCnF,EAAQ6rG,YAAY3sG,QAAQ5G,GAC9ByE,GAAU,OAEVA,GAAU,KACNw4N,EAAMlmE,WAAcivG,GAAYt+P,EAAQ6oG,aAC1C9rG,GAAUw4N,EAAMlmE,eAItBywG,OAAQ,SAAgBlgQ,GACtB,IAAIs+P,EAAJ,CAGA,IACIp9P,EADAi/P,EAAYz3P,EAAMA,EAAM9S,OAAS,GASrC,GANIuqQ,IACFj/P,EAAMi/P,EAAUj/P,IAEhBlB,OAA+BpH,IAAxBunQ,EAAU1wG,UAA0B0wG,EAAU1wG,UAAYzvJ,GAGvD,WAARkB,GAA4B,UAARA,EAKtB/D,GAAU6C,MACL,CACL,IAAIosP,EAAU6T,EAAWjgQ,GAAM,GAC3BI,EAAQ6oG,WACV9rG,GAAUiD,EAAQ6oG,WAAWmjJ,GAE7BjvP,GAAUivP,EAGd,GAAI1jP,EAAM9S,OACI8S,EAAMA,EAAM9S,OAAS,GAC3BoK,MAAQA,IAGlBogQ,WAAY,SAAoB1nQ,GAE9B,GAAI4lQ,EAAU,CAEZ,KADAC,EAIE,OAFAD,GAAW,EAMf,IAAI3oC,EAAQjtN,EAAMkD,MAClB,GAAK+pN,EAAL,CAMA,GAFA2oC,GAAW,EAEPF,IADJ5mN,GAIE,cAFO4mN,EAAQ5mN,QACfm+K,EAAM2nC,uBAIJe,EAAa7mN,KACf9+C,EAAO2lQ,EAAa7mN,UACb6mN,EAAa7mN,IAGlBp3C,EAAQigQ,iBAAmBjgQ,EAAQigQ,gBAAgB1qC,GACrDx4N,EAASA,EAAOsC,OAAO,EAAGk2N,EAAM0nC,cAIlC1nC,EAAM2nC,wBAEqC,IAAvCl9P,EAAQ6rG,YAAY3sG,QAAQ5G,KAKhCyE,GAAU,KAAOzE,EAAO,SAEzB0H,EAAQm9P,QAIX,OAHAA,EAAO90P,MAAMs+F,GACbw2J,EAAOz8N,MAEA3jC,EAEP,SAAS8iQ,EAAWnlQ,EAAGypM,GAoBrB,MAnBiB,iBAANzpM,IACTA,GAAQ,IAENsF,EAAQm9P,OAAO+C,iBACjBxlQ,EAAIA,EAAE6H,QAAQ,KAAM,SAASA,QAAQ,KAAM,QAAQA,QAAQ,MAAO,QAC9D4hM,IACFzpM,EAAIA,EAAE6H,QAAQ,MAAO,YAQzB7H,EAAIA,EAAE6H,QAAQ,4BAA6B,SAC1CA,QAAQ,KAAM,QAAQA,QAAQ,MAAO,QAClC4hM,IACFzpM,EAAIA,EAAE6H,QAAQ,MAAO,WAEhB7H,EAGT,SAASikQ,EAAYrmQ,EAAM89F,GAUzB,IAAIz9E,GAFJy9E,GAJAA,EAAOA,EAAK7zF,QAAQ,gBAAiB,KAIzBA,QAAQ,oBAAqB,KAEtBf,MAAM,kBACzB,IAAKmX,EAEH,QAAIy9E,EAAK50F,MAAM,gBACLxB,EAAQ+rG,sBAMpB,IAAI+vE,EAASnjK,EAAQ,GAAGrW,cAExB,OAAIgc,EAAIte,EAAQmgQ,oBAAqB7nQ,IAC2B,IAAvD0H,EAAQmgQ,oBAAoB7nQ,GAAM4G,QAAQ48K,IAG3C97K,EAAQ8rG,iBAA8D,IAA5C9rG,EAAQ8rG,eAAe5sG,QAAQ48K,IA+FrE,IAAIshF,EAAqB,CACvB8C,gBAAgB,GAElBrD,EAAa1qI,SAAW,CACtB5mB,YAAa,CAAC,KAAM,KAAM,KAAM,KAAM,aAAc,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,SAAU,KAAM,SAAU,OAAQ,KAAM,KAAM,MAAO,QAAS,QAAS,UAAW,QAAS,KAAM,KAAM,KAAM,MAAO,UACpNC,kBAAmB,CACjBrmG,EAAG,CAAC,OAAQ,OAAQ,UAIpBwmG,IAAK,CAAC,QAGRE,YAAa,CAAC,MAAO,KAAM,KAAM,OAAQ,OAAQ,WAAY,QAAS,OAAQ,QAE9EC,eAAgB,CAAC,OAAQ,QAAS,MAAO,UACzCq0J,oBAAqB,GACrBzB,kCAAmC,CAAC,OAAQ,MAAO,QACnD3yJ,uBAAuB,GAGzB8wJ,EAAakB,gBAAkB,SAAUqC,EAAYC,EAAYn1N,GAI/D,OAHAA,OAAkB1yC,IAAV0yC,GAA6BA,EACrCm1N,EAAaA,GAAc,GAEpB,SAAUt5J,EAAS+D,GACxB,IAAIw1J,EACJ,GAAIp1N,EACF,IAAKo1N,KAAUD,EACbv1J,EAAQw1J,GAAUD,EAAWC,QAG/Bx1J,EAAUu1J,EAGZ,MAAO,CACLt5J,QAASq5J,EACTt1J,QAASA,M,6l5BCrnBf,IAEgC/vG,EALhC1E,EAAQsD,YAAa,EACrBtD,EAAQsE,aAAU,EAmBlB,IAwEI4lQ,EAtEJ,SAAUC,GAfV,IAAwB37P,EAAUC,EAkBhC,SAAS27P,EAAYtuI,GACnB,IAAIhtE,EAIJ,OAFAA,EAAQq7M,EAAM5qQ,KAAKkQ,KAAMqsH,IAAarsH,MAChC5N,KAAO,OACNitD,EA2DT,OAlFgCrgD,EAgBJ07P,GAhBN37P,EAgBP47P,GAhBwC/qQ,UAAYD,OAAOoE,OAAOiL,EAAWpP,WAAYmP,EAASnP,UAAUqP,YAAcF,EAAUA,EAASG,UAAYF,EAkFjK27P,EAnET,GAjBgC1lQ,EAFG,EAAQ,OAEUA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,IAqF/EJ,SAGRtE,EAAQsE,QAAU4lQ,EAClBjqQ,EAAOD,QAAUA,EAAQsE,S,6BC9FzBtE,EAAQsD,YAAa,EACrBtD,EAAQsE,aAAU,EAElB,IAAI+lQ,EAAkBhlQ,EAAuB,EAAQ,MAEjDilQ,EAAejlQ,EAAuB,EAAQ,MAE9CszO,EAAatzO,EAAuB,EAAQ,MAEhD,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAiCvF,IAmiBIwlQ,EAjiBJ,WAIE,SAASzrM,EAAKq9D,GAaZ,IAAK,IAAI75H,UAZQ,IAAb65H,IACFA,EAAW,IAGbrsH,KAAK86P,KAAO,GAQKzuI,EACfrsH,KAAKxN,GAAQ65H,EAAS75H,GAqC1B,IAAIuoQ,EAAS/rM,EAAKp/D,UAuelB,OAreAmrQ,EAAOnpQ,MAAQ,SAAeW,EAASie,GAKrC,QAJa,IAATA,IACFA,EAAO,IAGLxQ,KAAKs8C,OAAQ,CACf,IAAImwF,EAAMzsI,KAAKg7P,WAAWxqP,GAC1B,OAAOxQ,KAAKs8C,OAAO1tB,MAAMh9B,MAAMW,EAASk6I,EAAIh7H,KAAMg7H,EAAIwuH,OAAQzqP,GAGhE,OAAO,IAAIoqP,EAAgB/lQ,QAAQtC,IA6BrCwoQ,EAAOzgQ,KAAO,SAAcrD,EAAQ6C,EAAM0W,GACxC,IAAIrhB,EAAO,CACTikB,KAAMpT,MAGR,IAAK,IAAIxQ,KAAKghB,EACZrhB,EAAKK,GAAKghB,EAAKhhB,GAGjB,OAAOyH,EAAOqD,KAAKR,EAAM3K,IAe3B4rQ,EAAO32N,OAAS,WAMd,OALIpkC,KAAKmH,QACPnH,KAAKmH,OAAOiiJ,YAAYppJ,MAG1BA,KAAKmH,YAASzU,EACPsN,MAeT+6P,EAAOv1P,SAAW,SAAkB01P,QACd,IAAhBA,IACFA,EAAchyB,EAAWr0O,SAGvBqmQ,EAAY3oP,YAAW2oP,EAAcA,EAAY3oP,WACrD,IAAItb,EAAS,GAIb,OAHAikQ,EAAYl7P,MAAM,SAAUxQ,GAC1ByH,GAAUzH,KAELyH,GAoBT8jQ,EAAOjpH,MAAQ,SAAeqpH,QACV,IAAdA,IACFA,EAAY,IAGd,IAAIC,EAjNR,SAASj6J,EAAUlsG,EAAKkS,GACtB,IAAIi0P,EAAS,IAAInmQ,EAAIgK,YAErB,IAAK,IAAIzP,KAAKyF,EACZ,GAAKA,EAAIpF,eAAeL,GAAxB,CACA,IAAIkE,EAAQuB,EAAIzF,GACZ4C,SAAcsB,EAER,WAANlE,GAA2B,WAAT4C,EAChB+U,IAAQi0P,EAAO5rQ,GAAK2X,GACT,WAAN3X,EACT4rQ,EAAO5rQ,GAAKkE,EACHA,aAAiBiD,MAC1BykQ,EAAO5rQ,GAAKkE,EAAMwF,KAAI,SAAUqQ,GAC9B,OAAO43F,EAAU53F,EAAG6xP,OAGT,WAAThpQ,GAA+B,OAAVsB,IAAgBA,EAAQytG,EAAUztG,IAC3D0nQ,EAAO5rQ,GAAKkE,GAIhB,OAAO0nQ,EA2LQj6J,CAAUnhG,MAEvB,IAAK,IAAIxN,KAAQ2oQ,EACfC,EAAO5oQ,GAAQ2oQ,EAAU3oQ,GAG3B,OAAO4oQ,GAeTL,EAAOM,YAAc,SAAqBF,QACtB,IAAdA,IACFA,EAAY,IAGd,IAAIC,EAASp7P,KAAK8xI,MAAMqpH,GAExB,OADAn7P,KAAKmH,OAAOq0F,aAAax7F,KAAMo7P,GACxBA,GAYTL,EAAOO,WAAa,SAAoBH,QACpB,IAAdA,IACFA,EAAY,IAGd,IAAIC,EAASp7P,KAAK8xI,MAAMqpH,GAExB,OADAn7P,KAAKmH,OAAOo0P,YAAYv7P,KAAMo7P,GACvBA,GAgBTL,EAAOS,YAAc,WACnB,GAAIx7P,KAAKmH,OAAQ,CACf,IAAK,IAAI65C,EAAOr+C,UAAUjT,OAAQwjB,EAAQ,IAAIvc,MAAMqqD,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAChF/tC,EAAM+tC,GAAQt+C,UAAUs+C,GAG1B,IAAK,IAAIptB,EAAK,EAAG4nO,EAASvoP,EAAO2gB,EAAK4nO,EAAO/rQ,OAAQmkC,IAAM,CACzD,IAAIzgB,EAAOqoP,EAAO5nO,GAClB7zB,KAAKmH,OAAOq0F,aAAax7F,KAAMoT,GAGjCpT,KAAKokC,SAGP,OAAOpkC,MAkBT+6P,EAAOr9P,KAAO,WACZ,GAAKsC,KAAKmH,OAAV,CACA,IAAIvL,EAAQoE,KAAKmH,OAAOvL,MAAMoE,MAC9B,OAAOA,KAAKmH,OAAO+L,MAAMtX,EAAQ,KAgBnCm/P,EAAOl5P,KAAO,WACZ,GAAK7B,KAAKmH,OAAV,CACA,IAAIvL,EAAQoE,KAAKmH,OAAOvL,MAAMoE,MAC9B,OAAOA,KAAKmH,OAAO+L,MAAMtX,EAAQ,KAgBnCm/P,EAAO9oM,OAAS,SAAgBne,GAE9B,OADA9zC,KAAKmH,OAAOq0F,aAAax7F,KAAM8zC,GACxB9zC,MAgBT+6P,EAAO/wN,MAAQ,SAAe8J,GAE5B,OADA9zC,KAAKmH,OAAOo0P,YAAYv7P,KAAM8zC,GACvB9zC,MAGT+6P,EAAOn6O,OAAS,WACd,IAAI86O,EAAQ,GAEZ,IAAK,IAAIlpQ,KAAQwN,KACf,GAAKA,KAAKnQ,eAAe2C,IACZ,WAATA,EAAJ,CACA,IAAIkB,EAAQsM,KAAKxN,GAEbkB,aAAiBiD,MACnB+kQ,EAAMlpQ,GAAQkB,EAAMwF,KAAI,SAAU1J,GAChC,MAAiB,iBAANA,GAAkBA,EAAEoxB,OACtBpxB,EAAEoxB,SAEFpxB,KAGe,iBAAVkE,GAAsBA,EAAMktB,OAC5C86O,EAAMlpQ,GAAQkB,EAAMktB,SAEpB86O,EAAMlpQ,GAAQkB,EAIlB,OAAOgoQ,GAsBTX,EAAOY,IAAM,SAAarjP,EAAMsjP,GAE9B,OADU,IAAIf,EAAahmQ,SAChB8mQ,IAAI37P,KAAMsY,EAAMsjP,IAY7Bb,EAAOnzN,KAAO,WAGZ,IAFA,IAAI3wC,EAAS+I,KAEN/I,EAAOkQ,QACZlQ,EAASA,EAAOkQ,OAGlB,OAAOlQ,GAgBT8jQ,EAAOc,UAAY,SAAmBC,UAC7B97P,KAAK86P,KAAK7oM,cACVjyD,KAAK86P,KAAK9wN,MACZ8xN,UAAoB97P,KAAK86P,KAAKiB,SAGrChB,EAAOiB,eAAiB,SAAwBpgQ,GAK9C,IAJA,IAAI0mC,EAAStiC,KAAKwF,WACdy1P,EAASj7P,KAAKs8C,OAAOpnB,MAAM+lO,OAC3BxpP,EAAOzR,KAAKs8C,OAAOpnB,MAAMzjB,KAEpBjiB,EAAI,EAAGA,EAAIoM,EAAOpM,IACP,OAAd8yC,EAAO9yC,IACTyrQ,EAAS,EACTxpP,GAAQ,GAERwpP,GAAU,EAId,MAAO,CACLxpP,KAAMA,EACNwpP,OAAQA,IAIZF,EAAOC,WAAa,SAAoBxqP,GACtC,IAAIi8H,EAAMzsI,KAAKs8C,OAAOpnB,MAEtB,GAAI1kB,EAAK5U,MACP6wI,EAAMzsI,KAAKg8P,eAAexrP,EAAK5U,YAC1B,GAAI4U,EAAKqyL,KAAM,CACpB,IAAIjnM,EAAQoE,KAAKwF,WAAWpM,QAAQoX,EAAKqyL,OAC1B,IAAXjnM,IAAc6wI,EAAMzsI,KAAKg8P,eAAepgQ,IAG9C,OAAO6wI,GA4FFz9E,EA9hBT,GA+iBAz+D,EAAQsE,QAAU4lQ,EAClBjqQ,EAAOD,QAAUA,EAAQsE,S,6BC5lBzBtE,EAAQsD,YAAa,EACrBtD,EAAQsE,aAAU,EAElB,IAEgCI,EAF5B4lQ,GAE4B5lQ,EAFU,EAAQ,OAEGA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAOvF,IAAIwlQ,EALJ,SAAmBrnP,EAAM6oP,GACb,IAAIpB,EAAahmQ,QAAQonQ,GAC/B1pP,UAAUa,IAIhB7iB,EAAQsE,QAAU4lQ,EAClBjqQ,EAAOD,QAAUA,EAAQsE,S,iBChBzB,YA4BA,SAASqnQ,EAAergQ,EAAOsgQ,GAG7B,IADA,IAAIhoK,EAAK,EACA3kG,EAAIqM,EAAMnM,OAAS,EAAGF,GAAK,EAAGA,IAAK,CAC1C,IAAIgtB,EAAO3gB,EAAMrM,GACJ,MAATgtB,EACF3gB,EAAMQ,OAAO7M,EAAG,GACE,OAATgtB,GACT3gB,EAAMQ,OAAO7M,EAAG,GAChB2kG,KACSA,IACTt4F,EAAMQ,OAAO7M,EAAG,GAChB2kG,KAKJ,GAAIgoK,EACF,KAAOhoK,IAAMA,EACXt4F,EAAMmwC,QAAQ,MAIlB,OAAOnwC,EA0OT,SAASid,EAAQsjP,EAAI7lQ,GACjB,GAAI6lQ,EAAGtjP,OAAQ,OAAOsjP,EAAGtjP,OAAOviB,GAEhC,IADA,IAAIi0F,EAAM,GACDh7F,EAAI,EAAGA,EAAI4sQ,EAAG1sQ,OAAQF,IACvB+G,EAAE6lQ,EAAG5sQ,GAAIA,EAAG4sQ,IAAK5xK,EAAIx6F,KAAKosQ,EAAG5sQ,IAErC,OAAOg7F,EA3OXj6F,EAAQQ,QAAU,WAIhB,IAHA,IAAIsrQ,EAAe,GACfC,GAAmB,EAEd9sQ,EAAImT,UAAUjT,OAAS,EAAGF,IAAM,IAAM8sQ,EAAkB9sQ,IAAK,CACpE,IAAI8qE,EAAQ9qE,GAAK,EAAKmT,UAAUnT,GAAK6S,EAAQwoG,MAG7C,GAAoB,iBAATvwC,EACT,MAAM,IAAItlE,UAAU,6CACVslE,IAIZ+hM,EAAe/hM,EAAO,IAAM+hM,EAC5BC,EAAsC,MAAnBhiM,EAAKxoD,OAAO,IAWjC,OAASwqP,EAAmB,IAAM,KAJlCD,EAAeH,EAAepjP,EAAOujP,EAAaxjQ,MAAM,MAAM,SAASnH,GACrE,QAASA,MACN4qQ,GAAkB//P,KAAK,OAE6B,KAK3DhM,EAAQ+vE,UAAY,SAAShG,GAC3B,IAAI85B,EAAa7jG,EAAQ6jG,WAAW95B,GAChCiiM,EAAqC,MAArBhjQ,EAAO+gE,GAAO,GAclC,OAXAA,EAAO4hM,EAAepjP,EAAOwhD,EAAKzhE,MAAM,MAAM,SAASnH,GACrD,QAASA,MACN0iG,GAAY73F,KAAK,OAER63F,IACZ95B,EAAO,KAELA,GAAQiiM,IACVjiM,GAAQ,MAGF85B,EAAa,IAAM,IAAM95B,GAInC/pE,EAAQ6jG,WAAa,SAAS95B,GAC5B,MAA0B,MAAnBA,EAAKxoD,OAAO,IAIrBvhB,EAAQgM,KAAO,WACb,IAAImqE,EAAQ/vE,MAAM/G,UAAU+E,MAAM7E,KAAK6S,UAAW,GAClD,OAAOpS,EAAQ+vE,UAAUxnD,EAAO4tD,GAAO,SAASh1E,EAAGkK,GACjD,GAAiB,iBAANlK,EACT,MAAM,IAAIsD,UAAU,0CAEtB,OAAOtD,KACN6K,KAAK,OAMVhM,EAAQigG,SAAW,SAASz/D,EAAMC,GAIhC,SAAS8gE,EAAK/3D,GAEZ,IADA,IAAI7E,EAAQ,EACLA,EAAQ6E,EAAIrqC,QACE,KAAfqqC,EAAI7E,GADiBA,KAK3B,IADA,IAAI0F,EAAMb,EAAIrqC,OAAS,EAChBkrC,GAAO,GACK,KAAbb,EAAIa,GADOA,KAIjB,OAAI1F,EAAQ0F,EAAY,GACjBb,EAAIplC,MAAMugC,EAAO0F,EAAM1F,EAAQ,GAfxCnE,EAAOxgC,EAAQQ,QAAQggC,GAAMx3B,OAAO,GACpCy3B,EAAKzgC,EAAQQ,QAAQigC,GAAIz3B,OAAO,GAsBhC,IALA,IAAIijQ,EAAY1qK,EAAK/gE,EAAKl4B,MAAM,MAC5B4jQ,EAAU3qK,EAAK9gE,EAAGn4B,MAAM,MAExBnJ,EAASmW,KAAKo1B,IAAIuhO,EAAU9sQ,OAAQ+sQ,EAAQ/sQ,QAC5CgtQ,EAAkBhtQ,EACbF,EAAI,EAAGA,EAAIE,EAAQF,IAC1B,GAAIgtQ,EAAUhtQ,KAAOitQ,EAAQjtQ,GAAI,CAC/BktQ,EAAkBltQ,EAClB,MAIJ,IAAImtQ,EAAc,GAClB,IAASntQ,EAAIktQ,EAAiBltQ,EAAIgtQ,EAAU9sQ,OAAQF,IAClDmtQ,EAAY3sQ,KAAK,MAKnB,OAFA2sQ,EAAcA,EAAYrgQ,OAAOmgQ,EAAQ9nQ,MAAM+nQ,KAE5BngQ,KAAK,MAG1BhM,EAAQ81P,IAAM,IACd91P,EAAQ0tO,UAAY,IAEpB1tO,EAAQqsQ,QAAU,SAAUtiM,GAE1B,GADoB,iBAATA,IAAmBA,GAAc,IACxB,IAAhBA,EAAK5qE,OAAc,MAAO,IAK9B,IAJA,IAAI6P,EAAO+6D,EAAK92B,WAAW,GACvBq5N,EAAmB,KAATt9P,EACVq7B,GAAO,EACPkiO,GAAe,EACVttQ,EAAI8qE,EAAK5qE,OAAS,EAAGF,GAAK,IAAKA,EAEtC,GAAa,MADb+P,EAAO+6D,EAAK92B,WAAWh0C,KAEnB,IAAKstQ,EAAc,CACjBliO,EAAMprC,EACN,YAIJstQ,GAAe,EAInB,OAAa,IAATliO,EAAmBiiO,EAAU,IAAM,IACnCA,GAAmB,IAARjiO,EAGN,IAEF0/B,EAAK3lE,MAAM,EAAGimC,IAiCvBrqC,EAAQwsQ,SAAW,SAAUziM,EAAM8yE,GACjC,IAAI72I,EA/BN,SAAkB+jE,GACI,iBAATA,IAAmBA,GAAc,IAE5C,IAGI9qE,EAHA0lC,EAAQ,EACR0F,GAAO,EACPkiO,GAAe,EAGnB,IAAKttQ,EAAI8qE,EAAK5qE,OAAS,EAAGF,GAAK,IAAKA,EAClC,GAA2B,KAAvB8qE,EAAK92B,WAAWh0C,IAGhB,IAAKstQ,EAAc,CACjB5nO,EAAQ1lC,EAAI,EACZ,YAEgB,IAATorC,IAGXkiO,GAAe,EACfliO,EAAMprC,EAAI,GAId,OAAa,IAATorC,EAAmB,GAChB0/B,EAAK3lE,MAAMugC,EAAO0F,GAMjBmiO,CAASziM,GAIjB,OAHI8yE,GAAO72I,EAAEgD,QAAQ,EAAI6zI,EAAI19I,UAAY09I,IACvC72I,EAAIA,EAAEgD,OAAO,EAAGhD,EAAE7G,OAAS09I,EAAI19I,SAE1B6G,GAGThG,EAAQysQ,QAAU,SAAU1iM,GACN,iBAATA,IAAmBA,GAAc,IAQ5C,IAPA,IAAI2iM,GAAY,EACZC,EAAY,EACZtiO,GAAO,EACPkiO,GAAe,EAGfK,EAAc,EACT3tQ,EAAI8qE,EAAK5qE,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACzC,IAAI+P,EAAO+6D,EAAK92B,WAAWh0C,GAC3B,GAAa,KAAT+P,GASS,IAATq7B,IAGFkiO,GAAe,EACfliO,EAAMprC,EAAI,GAEC,KAAT+P,GAEkB,IAAd09P,EACFA,EAAWztQ,EACY,IAAhB2tQ,IACPA,EAAc,IACK,IAAdF,IAGTE,GAAe,QArBb,IAAKL,EAAc,CACjBI,EAAY1tQ,EAAI,EAChB,OAuBR,OAAkB,IAAdytQ,IAA4B,IAATriO,GAEH,IAAhBuiO,GAEgB,IAAhBA,GAAqBF,IAAariO,EAAM,GAAKqiO,IAAaC,EAAY,EACjE,GAEF5iM,EAAK3lE,MAAMsoQ,EAAUriO,IAa9B,IAAIrhC,EAA6B,MAApB,KAAKA,QAAQ,GACpB,SAAU+Y,EAAK4iB,EAAOhb,GAAO,OAAO5H,EAAI/Y,OAAO27B,EAAOhb,IACtD,SAAU5H,EAAK4iB,EAAOhb,GAEpB,OADIgb,EAAQ,IAAGA,EAAQ5iB,EAAI5iB,OAASwlC,GAC7B5iB,EAAI/Y,OAAO27B,EAAOhb,M,+CCzSjC3pB,EAAQsD,YAAa,EACrBtD,EAAQsE,aAAU,EAElB,IAAIuoQ,EAAUxnQ,EAAuB,EAAQ,OAEzCynQ,EAASznQ,EAAuB,EAAQ,OAE5C,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GA2BvF,IAAIwlQ,EAzBJ,SAAe6C,EAAK9sP,GAClB,IAAIoe,EAAQ,IAAIyuO,EAAOxoQ,QAAQyoQ,EAAK9sP,GAChC6mP,EAAS,IAAI+F,EAAQvoQ,QAAQ+5B,GAEjC,IACEyoO,EAAOp6P,QACP,MAAOvM,GAaP,MAAMA,EAGR,OAAO2mQ,EAAOzvN,MAIhBr3C,EAAQsE,QAAU4lQ,EAClBjqQ,EAAOD,QAAUA,EAAQsE,S,6BCjCzB,IAEgCI,EALhC1E,EAAQsD,YAAa,EACrBtD,EAAQsE,aAAU,EAgBlB,IAkCI4lQ,EAhCJ,SAAUC,GAZV,IAAwB37P,EAAUC,EAehC,SAASk2K,EAAQ7oD,GACf,IAAIhtE,EAIJ,OAFAA,EAAQq7M,EAAM5qQ,KAAKkQ,KAAMqsH,IAAarsH,MAChC5N,KAAO,UACNitD,EAqBT,OAzCgCrgD,EAaR07P,GAbF37P,EAaPm2K,GAbwCtlL,UAAYD,OAAOoE,OAAOiL,EAAWpP,WAAYmP,EAASnP,UAAUqP,YAAcF,EAAUA,EAASG,UAAYF,EAyCjKk2K,EA7BT,GAdgCjgL,EAFG,EAAQ,OAEUA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,IA4C/EJ,SAGRtE,EAAQsE,QAAU4lQ,EAClBjqQ,EAAOD,QAAUA,EAAQsE,S,6BClDzB,IAEgCI,EALhC1E,EAAQsD,YAAa,EACrBtD,EAAQsE,aAAU,EA0BlB,IAgGI4lQ,EA9FJ,SAAU8C,GAtBV,IAAwBx+P,EAAUC,EAyBhC,SAASw+P,EAAOnxI,GACd,IAAIhtE,EAIJ,OAFAA,EAAQk+M,EAAWztQ,KAAKkQ,KAAMqsH,IAAarsH,MACrC5N,KAAO,SACNitD,EA9BuBrgD,EAuBTu+P,GAvBDx+P,EAuBPy+P,GAvBwC5tQ,UAAYD,OAAOoE,OAAOiL,EAAWpP,WAAYmP,EAASnP,UAAUqP,YAAcF,EAAUA,EAASG,UAAYF,EAiCxK,IAAI+7P,EAASyC,EAAO5tQ,UAgFpB,OA9EAmrQ,EAAO0C,OAAS,WACd,IAAIC,EAEC19P,KAAKkT,QAAOlT,KAAKkT,MAAQ,IAE9B,IAAK,IAAI8tC,EAAOr+C,UAAUjT,OAAQu8D,EAAW,IAAIt1D,MAAMqqD,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IACnFgL,EAAShL,GAAQt+C,UAAUs+C,GAG7B,OAAQy8M,EAAwBH,EAAW3tQ,UAAU6tQ,QAAQ3tQ,KAAKoM,MAAMwhQ,EAAuB,CAAC19P,MAAM1D,OAAO2vD,KAG/G8uM,EAAO5tK,QAAU,WACf,IAAIwwK,EAEC39P,KAAKkT,QAAOlT,KAAKkT,MAAQ,IAE9B,IAAK,IAAIguC,EAAQv+C,UAAUjT,OAAQu8D,EAAW,IAAIt1D,MAAMuqD,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACxF8K,EAAS9K,GAASx+C,UAAUw+C,GAG9B,OAAQw8M,EAAyBJ,EAAW3tQ,UAAUu9F,SAASr9F,KAAKoM,MAAMyhQ,EAAwB,CAAC39P,MAAM1D,OAAO2vD,KAyD3GuxM,EA3FT,GAxBgCvoQ,EAFQ,EAAQ,OAEKA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,IAoH1EJ,SAGbtE,EAAQsE,QAAU4lQ,EAClBjqQ,EAAOD,QAAUA,EAAQsE,S,6BC7HzBtE,EAAQsD,YAAa,EACrBtD,EAAQsE,aAAU,EAElB,IAAI+oQ,EAAehoQ,EAAuB,EAAQ,MAE9CioQ,EAAWjoQ,EAAuB,EAAQ,MAI9C,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvF,SAAS6oQ,EAAkBxrQ,EAAQ+C,GAAS,IAAK,IAAI7F,EAAI,EAAGA,EAAI6F,EAAM3F,OAAQF,IAAK,CAAE,IAAI8F,EAAaD,EAAM7F,GAAI8F,EAAWjC,WAAaiC,EAAWjC,aAAc,EAAOiC,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAM7F,OAAOyD,eAAed,EAAQgD,EAAWtB,IAAKsB,IAyB7S,IA4yBImlQ,EA1yBJ,SAAUC,GAvBV,IAAwB37P,EAAUC,EA0BhC,SAASi5K,IACP,OAAOyiF,EAAMx+P,MAAM8D,KAAM2C,YAAc3C,KA3BThB,EAwBN07P,GAxBJ37P,EAwBPk5K,GAxBwCroL,UAAYD,OAAOoE,OAAOiL,EAAWpP,WAAYmP,EAASnP,UAAUqP,YAAcF,EAAUA,EAASG,UAAYF,EA8BxK,IAhCoBjK,EAAaU,EAAYC,EAgCzCqlQ,EAAS9iF,EAAUroL,UAgyBvB,OA9xBAmrQ,EAAO/qQ,KAAO,SAAc6W,GAG1B,OAFAA,EAAMM,OAASnH,KACfA,KAAKkT,MAAMljB,KAAK6W,GACT7G,MAqCT+6P,EAAOxkP,KAAO,SAAcqH,GACrB5d,KAAK+9P,WAAU/9P,KAAK+9P,SAAW,GAC/B/9P,KAAK2jE,UAAS3jE,KAAK2jE,QAAU,IAClC3jE,KAAK+9P,UAAY,EACjB,IAAIn9M,EAAK5gD,KAAK+9P,SAEd,GADA/9P,KAAK2jE,QAAQ/iB,GAAM,EACd5gD,KAAKkT,MAAV,CAGA,IAFA,IAAItX,EAAO3E,EAEJ+I,KAAK2jE,QAAQ/iB,GAAM5gD,KAAKkT,MAAMxjB,SACnCkM,EAAQoE,KAAK2jE,QAAQ/iB,IAEN,KADf3pD,EAAS2mB,EAAS5d,KAAKkT,MAAMtX,GAAQA,MAErCoE,KAAK2jE,QAAQ/iB,IAAO,EAItB,cADO5gD,KAAK2jE,QAAQ/iB,GACb3pD,IAuBT8jQ,EAAOiD,KAAO,SAAcpgP,GAC1B,OAAO5d,KAAKuW,MAAK,SAAU1P,EAAOrX,GAChC,IAAIyH,EAEJ,IACEA,EAAS2mB,EAAS/W,EAAOrX,GACzB,MAAOkB,GAGP,GAFAA,EAAEutQ,YAAcp3P,EAEZnW,EAAE8R,OAASqE,EAAMy1C,QAAU,aAAa3qC,KAAKjhB,EAAE8R,OAAQ,CACzD,IAAI5N,EAAIiS,EAAMy1C,OACd5rD,EAAE8R,MAAQ9R,EAAE8R,MAAM/F,QAAQ,aAAc,KAAO7H,EAAEg6B,MAAMmC,KAAO,IAAMn8B,EAAEsgC,MAAMzjB,KAAO,IAAM7c,EAAEsgC,MAAM+lO,OAAS,MAG5G,MAAMvqQ,EAOR,OAJe,IAAXuG,GAAoB4P,EAAMm3P,OAC5B/mQ,EAAS4P,EAAMm3P,KAAKpgP,IAGf3mB,MAkCX8jQ,EAAOmD,UAAY,SAAmB5lP,EAAMsF,GAC1C,OAAKA,EASDtF,aAAgBhd,OACX0E,KAAKg+P,MAAK,SAAUn3P,EAAOrX,GAChC,GAAmB,SAAfqX,EAAMzU,MAAmBkmB,EAAK3G,KAAK9K,EAAMyR,MAC3C,OAAOsF,EAAS/W,EAAOrX,MAKtBwQ,KAAKg+P,MAAK,SAAUn3P,EAAOrX,GAChC,GAAmB,SAAfqX,EAAMzU,MAAmByU,EAAMyR,OAASA,EAC1C,OAAOsF,EAAS/W,EAAOrX,OAlBzBouB,EAAWtF,EACJtY,KAAKg+P,MAAK,SAAUn3P,EAAOrX,GAChC,GAAmB,SAAfqX,EAAMzU,KACR,OAAOwrB,EAAS/W,EAAOrX,QA4C/BurQ,EAAOoD,UAAY,SAAmB1hI,EAAU7+G,GAC9C,OAAKA,EASD6+G,aAAoBnhI,OACf0E,KAAKg+P,MAAK,SAAUn3P,EAAOrX,GAChC,GAAmB,SAAfqX,EAAMzU,MAAmBqqI,EAAS9qH,KAAK9K,EAAM41H,UAC/C,OAAO7+G,EAAS/W,EAAOrX,MAKtBwQ,KAAKg+P,MAAK,SAAUn3P,EAAOrX,GAChC,GAAmB,SAAfqX,EAAMzU,MAAmByU,EAAM41H,WAAaA,EAC9C,OAAO7+G,EAAS/W,EAAOrX,OAlBzBouB,EAAW6+G,EACJz8H,KAAKg+P,MAAK,SAAUn3P,EAAOrX,GAChC,GAAmB,SAAfqX,EAAMzU,KACR,OAAOwrB,EAAS/W,EAAOrX,QAmD/BurQ,EAAOqD,YAAc,SAAqB5rQ,EAAMorB,GAC9C,OAAKA,EASDprB,aAAgB8I,OACX0E,KAAKg+P,MAAK,SAAUn3P,EAAOrX,GAChC,GAAmB,WAAfqX,EAAMzU,MAAqBI,EAAKmf,KAAK9K,EAAMrU,MAC7C,OAAOorB,EAAS/W,EAAOrX,MAKtBwQ,KAAKg+P,MAAK,SAAUn3P,EAAOrX,GAChC,GAAmB,WAAfqX,EAAMzU,MAAqByU,EAAMrU,OAASA,EAC5C,OAAOorB,EAAS/W,EAAOrX,OAlBzBouB,EAAWprB,EACJwN,KAAKg+P,MAAK,SAAUn3P,EAAOrX,GAChC,GAAmB,WAAfqX,EAAMzU,KACR,OAAOwrB,EAAS/W,EAAOrX,QAqC/BurQ,EAAOsD,aAAe,SAAsBzgP,GAC1C,OAAO5d,KAAKg+P,MAAK,SAAUn3P,EAAOrX,GAChC,GAAmB,YAAfqX,EAAMzU,KACR,OAAOwrB,EAAS/W,EAAOrX,OA0B7BurQ,EAAO0C,OAAS,WACd,IAAK,IAAIz8M,EAAOr+C,UAAUjT,OAAQu8D,EAAW,IAAIt1D,MAAMqqD,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IACnFgL,EAAShL,GAAQt+C,UAAUs+C,GAG7B,IAAK,IAAIptB,EAAK,EAAGyqO,EAAYryM,EAAUp4B,EAAKyqO,EAAU5uQ,OAAQmkC,IAC5D,KAAIhtB,EAAQy3P,EAAUzqO,GAClB3gB,EAAQlT,KAAKsgE,UAAUz5D,EAAO7G,KAAKwc,MAE9B/e,EAAYyV,EAAOqrP,EAAW5nQ,MAAMC,QAAQ6G,GAAY+gQ,EAAM,EAAvE,IAA0E/gQ,EAAY8gQ,EAAW9gQ,EAAYA,EAAUjK,OAAOk6B,cAAe,CAC3I,IAAIwF,EAEJ,GAAIqrO,EAAU,CACZ,GAAIC,GAAO/gQ,EAAU/N,OAAQ,MAC7BwjC,EAAOz1B,EAAU+gQ,SACZ,CAEL,IADAA,EAAM/gQ,EAAUC,QACRC,KAAM,MACdu1B,EAAOsrO,EAAI9qQ,MAGb,IAAI0f,EAAO8f,EACXlzB,KAAKkT,MAAMljB,KAAKojB,IAIpB,OAAOpT,MAwBT+6P,EAAO5tK,QAAU,WACf,IAAK,IAAIjsC,EAAQv+C,UAAUjT,OAAQu8D,EAAW,IAAIt1D,MAAMuqD,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACxF8K,EAAS9K,GAASx+C,UAAUw+C,GAKzB,IAAIgF,EAFT8F,EAAWA,EAASruB,UAEY6gO,EAAY9nQ,MAAMC,QAAQuvD,GAAau4M,EAAM,EAA7E,IAAgFv4M,EAAas4M,EAAYt4M,EAAaA,EAAW3yD,OAAOk6B,cAAe,CACrJ,IAAIuF,EAEJ,GAAIwrO,EAAW,CACb,GAAIC,GAAOv4M,EAAWz2D,OAAQ,MAC9BujC,EAAQkzB,EAAWu4M,SACd,CAEL,IADAA,EAAMv4M,EAAWzoD,QACTC,KAAM,MACds1B,EAAQyrO,EAAIhrQ,MAGd,IAAImT,EAAQosB,EACR/f,EAAQlT,KAAKsgE,UAAUz5D,EAAO7G,KAAKm4C,MAAO,WAAWva,UAEhDkqB,EAAa50C,EAAOyrP,EAAYhoQ,MAAMC,QAAQkxD,GAAa82M,EAAM,EAA1E,IAA6E92M,EAAa62M,EAAY72M,EAAaA,EAAWt0D,OAAOk6B,cAAe,CAClJ,IAAI6iF,EAEJ,GAAIouJ,EAAW,CACb,GAAIC,GAAO92M,EAAWp4D,OAAQ,MAC9B6gH,EAAQzoD,EAAW82M,SACd,CAEL,IADAA,EAAM92M,EAAWpqD,QACTC,KAAM,MACd4yG,EAAQquJ,EAAIlrQ,MAGd,IAAI0f,EAAOm9F,EACXvwG,KAAKkT,MAAM84B,QAAQ54B,GAGrB,IAAK,IAAIwtC,KAAM5gD,KAAK2jE,QAClB3jE,KAAK2jE,QAAQ/iB,GAAM5gD,KAAK2jE,QAAQ/iB,GAAM1tC,EAAMxjB,OAIhD,OAAOsQ,MAGT+6P,EAAOc,UAAY,SAAmBC,GAGpC,GAFApB,EAAM9qQ,UAAUisQ,UAAU/rQ,KAAKkQ,KAAM87P,GAEjC97P,KAAKkT,MACF,KAAIi3C,EAAanqD,KAAKkT,MAAO2rP,EAAYloQ,MAAMC,QAAQuzD,GAAa20M,EAAM,EAA/E,IAAkF30M,EAAa00M,EAAY10M,EAAaA,EAAW32D,OAAOk6B,cAAe,CACvJ,IAAIupF,EAEJ,GAAI4nJ,EAAW,CACb,GAAIC,GAAO30M,EAAWz6D,OAAQ,MAC9BunH,EAAQ9sD,EAAW20M,SACd,CAEL,IADAA,EAAM30M,EAAWzsD,QACTC,KAAM,MACds5G,EAAQ6nJ,EAAIprQ,MAGHujH,EACN4kJ,UAAUC,MAiBrBf,EAAOv/J,aAAe,SAAsBujK,EAAOjrN,GAEjD,IAmBIl4C,EAnBAxJ,EAAiB,KADrB2sQ,EAAQ/+P,KAAKpE,MAAMmjQ,KACM,UACrB7rP,EAAQlT,KAAKsgE,UAAUxsB,EAAK9zC,KAAKkT,MAAM6rP,GAAQ3sQ,GAAMwrC,UAEhDgtB,EAAa13C,EAAO8rP,EAAYroQ,MAAMC,QAAQg0D,GAAaq0M,EAAM,EAA1E,IAA6Er0M,EAAao0M,EAAYp0M,EAAaA,EAAWp3D,OAAOk6B,cAAe,CAClJ,IAAIirH,EAEJ,GAAIqmH,EAAW,CACb,GAAIC,GAAOr0M,EAAWl7D,OAAQ,MAC9BipJ,EAAQ/tF,EAAWq0M,SACd,CAEL,IADAA,EAAMr0M,EAAWltD,QACTC,KAAM,MACdg7I,EAAQsmH,EAAIvrQ,MAGd,IAAI0f,EAAOulI,EACX34I,KAAKkT,MAAM7W,OAAO0iQ,EAAO,EAAG3rP,GAK9B,IAAK,IAAIwtC,KAAM5gD,KAAK2jE,QAGdo7L,IAFJnjQ,EAAQoE,KAAK2jE,QAAQ/iB,MAGnB5gD,KAAK2jE,QAAQ/iB,GAAMhlD,EAAQsX,EAAMxjB,QAIrC,OAAOsQ,MAYT+6P,EAAOQ,YAAc,SAAqBwD,EAAOjrN,GAC/CirN,EAAQ/+P,KAAKpE,MAAMmjQ,GACnB,IAkBInjQ,EAlBAsX,EAAQlT,KAAKsgE,UAAUxsB,EAAK9zC,KAAKkT,MAAM6rP,IAAQnhO,UAE1CutB,EAAaj4C,EAAOgsP,EAAYvoQ,MAAMC,QAAQu0D,GAAag0M,EAAM,EAA1E,IAA6Eh0M,EAAa+zM,EAAY/zM,EAAaA,EAAW33D,OAAOk6B,cAAe,CAClJ,IAAI4pM,EAEJ,GAAI4nC,EAAW,CACb,GAAIC,GAAOh0M,EAAWz7D,OAAQ,MAC9B4nO,EAAQnsK,EAAWg0M,SACd,CAEL,IADAA,EAAMh0M,EAAWztD,QACTC,KAAM,MACd25N,EAAQ6nC,EAAIzrQ,MAGd,IAAI0f,EAAOkkN,EACXt3N,KAAKkT,MAAM7W,OAAO0iQ,EAAQ,EAAG,EAAG3rP,GAKlC,IAAK,IAAIwtC,KAAM5gD,KAAK2jE,QAGdo7L,GAFJnjQ,EAAQoE,KAAK2jE,QAAQ/iB,MAGnB5gD,KAAK2jE,QAAQ/iB,GAAMhlD,EAAQsX,EAAMxjB,QAIrC,OAAOsQ,MAkBT+6P,EAAO3xG,YAAc,SAAqBviJ,GAIxC,IAAIjL,EAEJ,IAAK,IAAIglD,KALT/5C,EAAQ7G,KAAKpE,MAAMiL,GACnB7G,KAAKkT,MAAMrM,GAAOM,YAASzU,EAC3BsN,KAAKkT,MAAM7W,OAAOwK,EAAO,GAGV7G,KAAK2jE,SAClB/nE,EAAQoE,KAAK2jE,QAAQ/iB,KAER/5C,IACX7G,KAAK2jE,QAAQ/iB,GAAMhlD,EAAQ,GAI/B,OAAOoE,MAcT+6P,EAAOqE,UAAY,WACZ,IAAIjzC,EAAansN,KAAKkT,MAAOmsP,EAAY1oQ,MAAMC,QAAQu1N,GAAamzC,EAAM,EAA/E,IAAkFnzC,EAAakzC,EAAYlzC,EAAaA,EAAW34N,OAAOk6B,cAAe,CACvJ,IAAIu/M,EAEJ,GAAIoyB,EAAW,CACb,GAAIC,GAAOnzC,EAAWz8N,OAAQ,MAC9Bu9O,EAAQ9gB,EAAWmzC,SACd,CAEL,IADAA,EAAMnzC,EAAWzuN,QACTC,KAAM,MACdsvO,EAAQqyB,EAAI5rQ,MAGHu5O,EACN9lO,YAASzU,EAIhB,OADAsN,KAAKkT,MAAQ,GACNlT,MA8BT+6P,EAAOwE,cAAgB,SAAuBpkH,EAAS3qI,EAAMoN,GAW3D,OAVKA,IACHA,EAAWpN,EACXA,EAAO,IAGTxQ,KAAKk+P,WAAU,SAAUsB,GACnBhvP,EAAKnb,QAA4C,IAAnCmb,EAAKnb,MAAM+D,QAAQomQ,EAAKlnP,OACtC9H,EAAKivP,OAA2C,IAAnCD,EAAK9rQ,MAAM0F,QAAQoX,EAAKivP,QACzCD,EAAK9rQ,MAAQ8rQ,EAAK9rQ,MAAM+I,QAAQ0+I,EAASv9H,OAEpC5d,MAeT+6P,EAAO56N,MAAQ,SAAeQ,GAC5B,OAAO3gC,KAAKkT,MAAMitB,MAAMQ,IAe1Bo6N,EAAOrvO,KAAO,SAAciV,GAC1B,OAAO3gC,KAAKkT,MAAMwY,KAAKiV,IAczBo6N,EAAOn/P,MAAQ,SAAeiL,GAC5B,MAAqB,iBAAVA,EACFA,EAGF7G,KAAKkT,MAAM9Z,QAAQyN,IAY5Bk0P,EAAOz6L,UAAY,SAAmBptD,EAAO42L,GAC3C,IAAIzqJ,EAAQr/C,KAEZ,GAAqB,iBAAVkT,EAGTA,EA9sBN,SAASwsP,EAAYxsP,GACnB,OAAOA,EAAMha,KAAI,SAAU1J,GAGzB,OAFIA,EAAE0jB,QAAO1jB,EAAE0jB,MAAQwsP,EAAYlwQ,EAAE0jB,eAC9B1jB,EAAE8sD,OACF9sD,KA0sBGkwQ,CAFI,EAAQ,IAEAziQ,CAAMiW,GAAOA,YAC5B,GAAIvc,MAAMC,QAAQsc,GAGlB,KAAIq+N,EAFTr+N,EAAQA,EAAMve,MAAM,GAESgrQ,EAAYhpQ,MAAMC,QAAQ26O,GAAaquB,EAAM,EAA1E,IAA6EruB,EAAaouB,EAAYpuB,EAAaA,EAAW/9O,OAAOk6B,cAAe,CAClJ,IAAIinN,EAEJ,GAAIgrB,EAAW,CACb,GAAIC,GAAOruB,EAAW7hP,OAAQ,MAC9BilP,EAAQpD,EAAWquB,SACd,CAEL,IADAA,EAAMruB,EAAW7zO,QACTC,KAAM,MACdg3O,EAAQirB,EAAIlsQ,MAGd,IAAIlE,EAAImlP,EACJnlP,EAAE2X,QAAQ3X,EAAE2X,OAAOiiJ,YAAY55J,EAAG,gBAEnC,GAAmB,SAAf0jB,EAAM9gB,KAGV,KAAIw/O,EAFT1+N,EAAQA,EAAMA,MAAMve,MAAM,GAEGkrQ,EAAYlpQ,MAAMC,QAAQg7O,GAAakuB,EAAO,EAA3E,IAA8EluB,EAAaiuB,EAAYjuB,EAAaA,EAAWp+O,OAAOk6B,cAAe,CACnJ,IAAIknN,EAEJ,GAAIirB,EAAW,CACb,GAAIC,GAAQluB,EAAWliP,OAAQ,MAC/BklP,EAAQhD,EAAWkuB,SACd,CAEL,IADAA,EAAOluB,EAAWl0O,QACTC,KAAM,MACfi3O,EAAQkrB,EAAKpsQ,MAGf,IAAIqsQ,EAAOnrB,EACPmrB,EAAK54P,QAAQ44P,EAAK54P,OAAOiiJ,YAAY22G,EAAM,gBAE5C,GAAI7sP,EAAM9gB,KACf8gB,EAAQ,CAACA,QACJ,GAAIA,EAAMoF,KAAM,CACrB,QAA2B,IAAhBpF,EAAMxf,MACf,MAAM,IAAI7B,MAAM,0CACgB,iBAAhBqhB,EAAMxf,QACtBwf,EAAMxf,MAAQwe,OAAOgB,EAAMxf,QAG7Bwf,EAAQ,CAAC,IAAI0qP,EAAa/oQ,QAAQqe,SAC7B,GAAIA,EAAMupH,SAAU,CAGzBvpH,EAAQ,CAAC,IAFE,EAAQ,KAEV,CAASA,SACb,GAAIA,EAAM1gB,KAAM,CAGrB0gB,EAAQ,CAAC,IAFI,EAAQ,KAEZ,CAAWA,QACf,KAAIA,EAAMpZ,KAGf,MAAM,IAAIjI,MAAM,sCAFhBqhB,EAAQ,CAAC,IAAI2qP,EAAShpQ,QAAQqe,IAiBhC,OAZgBA,EAAMha,KAAI,SAAU1J,GAUlC,OATIA,EAAE2X,QAAQ3X,EAAE2X,OAAOiiJ,YAAY55J,QAEN,IAAlBA,EAAEsrQ,KAAK7oM,QACZ63I,QAAwC,IAAvBA,EAAOgxD,KAAK7oM,SAC/BziE,EAAEsrQ,KAAK7oM,OAAS63I,EAAOgxD,KAAK7oM,OAAOx1D,QAAQ,SAAU,KAIzDjN,EAAE2X,OAASk4C,EACJ7vD,MAzxBSuF,EAyyBPkjL,GAzyBoBxiL,EAyyBT,CAAC,CACvBzB,IAAK,QACLV,IAAK,WACH,GAAK0M,KAAKkT,MACV,OAAOlT,KAAKkT,MAAM,KAWnB,CACDlf,IAAK,OACLV,IAAK,WACH,GAAK0M,KAAKkT,MACV,OAAOlT,KAAKkT,MAAMlT,KAAKkT,MAAMxjB,OAAS,QA5zBkCouQ,EAAkB/oQ,EAAYnF,UAAW6F,GAAiBC,GAAaooQ,EAAkB/oQ,EAAaW,GAg0B3KuiL,EAvyBT,CA/BYriL,EAAuB,EAAQ,MAu0BnCf,SAkBRtE,EAAQsE,QAAU4lQ,EAClBjqQ,EAAOD,QAAUA,EAAQsE,S,6BCj2BzBtE,EAAQsD,YAAa,EACrBtD,EAAQsE,aAAU,EAElB,IAAImrQ,EAAapqQ,EAAuB,EAAQ,MAE5Cg5C,EAAQh5C,EAAuB,EAAQ,MAE3C,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvF,SAAS6oQ,EAAkBxrQ,EAAQ+C,GAAS,IAAK,IAAI7F,EAAI,EAAGA,EAAI6F,EAAM3F,OAAQF,IAAK,CAAE,IAAI8F,EAAaD,EAAM7F,GAAI8F,EAAWjC,WAAaiC,EAAWjC,aAAc,EAAOiC,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAM7F,OAAOyD,eAAed,EAAQgD,EAAWtB,IAAKsB,IAiB7S,IAsFImlQ,EApFJ,SAAU8C,GAfV,IAAwBx+P,EAAUC,EAFZjK,EAAaU,EAAYC,EAoB7C,SAASuqQ,EAAK5zI,GACZ,IAAIhtE,EAKJ,OAHAA,EAAQk+M,EAAWztQ,KAAKkQ,KAAMqsH,IAAarsH,MACrC5N,KAAO,OACRitD,EAAMnsC,QAAOmsC,EAAMnsC,MAAQ,IACzBmsC,EAwET,OAhGgCrgD,EAgBXu+P,GAhBCx+P,EAgBPkhQ,GAhBwCrwQ,UAAYD,OAAOoE,OAAOiL,EAAWpP,WAAYmP,EAASnP,UAAUqP,YAAcF,EAAUA,EAASG,UAAYF,EAFpJjK,EA8CPkrQ,GA9CoBxqQ,EA8Cd,CAAC,CAClBzB,IAAK,YACLV,IAAK,WACH,OAAOs7C,EAAM/5C,QAAQqrQ,MAAMlgQ,KAAKy8H,WAElClkH,IAAK,SAAakF,GAChB,IAAI/hB,EAAQsE,KAAKy8H,SAAWz8H,KAAKy8H,SAAS/gI,MAAM,QAAU,KACtD2qP,EAAM3qP,EAAQA,EAAM,GAAK,IAAMsE,KAAK27P,IAAI,UAAW,cACvD37P,KAAKy8H,SAAWh/G,EAAOlhB,KAAK8pP,QAtD4CyX,EAAkB/oQ,EAAYnF,UAAW6F,GAAiBC,GAAaooQ,EAAkB/oQ,EAAaW,GAkG3KuqQ,EAjFT,CAkFED,EAAWnrQ,SAGbtE,EAAQsE,QAAU4lQ,EAClBjqQ,EAAOD,QAAUA,EAAQsE,S,gBCpHzBrE,EAAOD,QAAU,CAAE,QAAW,EAAQ,MAA+CsD,YAAY,I,6BCEjG,IAIgCoB,EAJ5BkrQ,EAAmB,EAAQ,KAE3B3uG,GAE4Bv8J,EAFekrQ,IAEMlrQ,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAkBvF,IAAI29B,EAAkB,EAAQ,IAE1Bg9K,EAAM,EAAQ,GAElBp/M,EAAOD,QAAU,CAKbk8N,yBAA0B,SAAkCtvH,GACxD,QAAIA,EAAG3zE,QAAU2zE,EAAG3zE,OAAO+J,QAAUX,EAAgBt/B,MAAMggC,YAAYC,UAE5C,iBAAhB4pE,EAAG7F,YAEa,6BAAhB6F,EAAG7F,YAEa,iBAAhB6F,EAAG7F,WAAgD,iBAAhB6F,EAAG7F,aAEtB,kBAAhB6F,EAAG7F,WAA4D,YAA3B6F,EAAGlF,aAAammB,WAEpC,kBAAhBjhB,EAAG7F,WAAiD,0BAAhB6F,EAAG7F,WAGlCs4G,EAAIpxM,aAAa,mBAChB4hQ,iBAAiBjjK,SAGtCwvH,2BAA4B,SAAoC33H,GAC5D,IAAIoiB,EAAWxkF,EAAgBt/B,MAAMggC,YAAYC,OAK7C8sO,EAAarrK,EAAKsrK,iBAAiBlpJ,GAQvC,GAAIpiB,EAAK68C,SAASniJ,QAAUslG,EAAK68C,SAAS78C,EAAK68C,SAASniJ,OAAS,GAAG85B,QAAUwrE,EAAK68C,SAAS78C,EAAK68C,SAASniJ,OAAS,GAAG85B,OAAO+J,SAAW6jF,EACpI,OAAO,EAUX,IAAK,IAAI5nH,EAAIwlG,EAAK68C,SAASniJ,OAAS,EAAGF,GAAK,IAAKA,EAAG,CAChD,IAAI2tG,EAAKnI,EAAK68C,SAASriJ,GAEvB,GAAI2tG,EAAGyf,SAAWyjJ,EAId,OAAO,EACJ,KAAK,EAAI7uG,EAAkB38J,SAASsoG,IAAOn9F,KAAKysN,yBAAyBtvH,GAG5E,OAAO,EAOf,OAAO,K,6BC5FfxtG,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAEXnD,EAAQgwQ,eAoCR,SAAwBC,GACpB,IAAIC,EAAc77M,EAAY/vD,QAAQvB,MAAMotQ,oBAC5C,IAAKD,EAAa,OAAO,KACzB,IAAKD,EAAU,OAAOC,EAEtB,GAAoD,eAAhDxrK,EAAkBpgG,QAAQvB,MAAM2X,YAA8B,OAAO,KAEzE,IACI,IAAI01P,EAAa9+J,EAAMhtG,QAAQoI,MAAMwjQ,GACjCp3K,EAASu3K,EAAK/rQ,QAAQoI,MAAM0jQ,EAAWvwK,OAI3C,OAHA/G,EAAOw3K,aAAeL,EACtBG,EAAWxwK,YAASz9F,EACpBiuQ,EAAWvwK,MAAQ/G,EACZs3K,EAAWjwK,SACpB,MAAOhgG,GACL,OAAO+vQ,IAjDf,IAEI5+J,EAAQjsG,EAFD,EAAQ,KAMfgrQ,EAAOhrQ,EAFD,EAAQ,OAMdgvD,EAAchvD,EAFD,EAAQ,KAMrBq/F,EAAoBr/F,EAFD,EAAQ,KAI/B,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,K,6BCrBvF,IAAIujB,EAAM7oB,OAAOC,UAAUC,eACvB+G,EAAUD,MAAMC,QAEhBi3P,EAAY,WAEZ,IADA,IAAItlO,EAAQ,GACH/4B,EAAI,EAAGA,EAAI,MAAOA,EACvB+4B,EAAMv4B,KAAK,MAAQR,EAAI,GAAK,IAAM,IAAMA,EAAEgW,SAAS,KAAKwmE,eAG5D,OAAOzjD,EANI,GA4BXulO,EAAgB,SAAuBxxM,EAAQpiD,GAE/C,IADA,IAAIjF,EAAMiF,GAAWA,EAAQ6zP,aAAep+P,OAAOoE,OAAO,MAAQ,GACzDvE,EAAI,EAAGA,EAAI8sD,EAAO5sD,SAAUF,OACR,IAAd8sD,EAAO9sD,KACdyF,EAAIzF,GAAK8sD,EAAO9sD,IAIxB,OAAOyF,GAuLXzE,EAAOD,QAAU,CACbu9P,cAAeA,EACfz4N,OA9HS,SAA4B/iC,EAAQgqD,GAC7C,OAAO3sD,OAAOoZ,KAAKuzC,GAAQlmC,QAAO,SAAUmmM,EAAKvoN,GAE7C,OADAuoN,EAAIvoN,GAAOsoD,EAAOtoD,GACXuoN,IACRjqN,IA2HH07P,QAPU,SAAiB3uP,EAAG6kB,GAC9B,MAAO,GAAG5nB,OAAO+C,EAAG6kB,IAOpB4gL,QA5CU,SAAiBpxM,GAI3B,IAHA,IAAI+N,EAAQ,CAAC,CAAExM,IAAK,CAAE9B,EAAGO,GAAS4kB,KAAM,MACpCqkN,EAAO,GAEFntO,EAAI,EAAGA,EAAIiS,EAAM/R,SAAUF,EAKhC,IAJA,IAAI4Z,EAAO3H,EAAMjS,GACbyF,EAAMmU,EAAKnU,IAAImU,EAAKkP,MAEpBvP,EAAOpZ,OAAOoZ,KAAK9T,GACdsU,EAAI,EAAGA,EAAIR,EAAKrZ,SAAU6Z,EAAG,CAClC,IAAIvV,EAAM+U,EAAKQ,GACXsV,EAAM5pB,EAAIjB,GACK,iBAAR6qB,GAA4B,OAARA,IAAuC,IAAvB89M,EAAKvjO,QAAQylB,KACxDpd,EAAMzR,KAAK,CAAEiF,IAAKA,EAAKqjB,KAAMtkB,IAC7B2oO,EAAK3sO,KAAK6uB,IAOtB,OA/Le,SAAsBpd,GACrC,KAAOA,EAAM/R,OAAS,GAAG,CACrB,IAAI0Z,EAAO3H,EAAMiE,MACbzQ,EAAMmU,EAAKnU,IAAImU,EAAKkP,MAExB,GAAI1hB,EAAQ3B,GAAM,CAGd,IAFA,IAAIg5P,EAAY,GAEP1kP,EAAI,EAAGA,EAAItU,EAAIvF,SAAU6Z,OACR,IAAXtU,EAAIsU,IACX0kP,EAAUj+P,KAAKiF,EAAIsU,IAI3BH,EAAKnU,IAAImU,EAAKkP,MAAQ21O,IA+K9BC,CAAazsP,GAEN/N,GAwBP0+J,OA1HS,SAAU9/I,EAAK67O,EAAS98P,GACjC,IAAI+8P,EAAiB97O,EAAI7V,QAAQ,MAAO,KACxC,GAAgB,eAAZpL,EAEA,OAAO+8P,EAAe3xP,QAAQ,iBAAkBkvM,UAGpD,IACI,OAAOv5G,mBAAmBg8J,GAC5B,MAAO19P,GACL,OAAO09P,IAiHXj8F,OA7GS,SAAgB7/I,EAAK+7O,EAAgBh9P,GAG9C,GAAmB,IAAfihB,EAAI5iB,OACJ,OAAO4iB,EAGX,IAAIgwB,EAAShwB,EAOb,GANmB,iBAARA,EACPgwB,EAAS9uC,OAAO5D,UAAU4V,SAAS1V,KAAKwiB,GAClB,iBAARA,IACdgwB,EAASpwB,OAAOI,IAGJ,eAAZjhB,EACA,OAAO0hG,OAAOzwD,GAAQ7lC,QAAQ,mBAAmB,SAAU6xP,GACvD,MAAO,SAAWx7O,SAASw7O,EAAG35P,MAAM,GAAI,IAAM,SAKtD,IADA,IAAI6nD,EAAM,GACDhtD,EAAI,EAAGA,EAAI8yC,EAAO5yC,SAAUF,EAAG,CACpC,IAAIwD,EAAIsvC,EAAOkB,WAAWh0C,GAGhB,KAANwD,GACS,KAANA,GACM,KAANA,GACM,MAANA,GACCA,GAAK,IAAQA,GAAK,IAClBA,GAAK,IAAQA,GAAK,IAClBA,GAAK,IAAQA,GAAK,IAEtBwpD,GAAOla,EAAOxwB,OAAOtiB,GAIrBwD,EAAI,IACJwpD,GAAYqxM,EAAS76P,GAIrBA,EAAI,KACJwpD,GAAaqxM,EAAS,IAAQ76P,GAAK,GAAM66P,EAAS,IAAY,GAAJ76P,GAI1DA,EAAI,OAAUA,GAAK,MACnBwpD,GAAaqxM,EAAS,IAAQ76P,GAAK,IAAO66P,EAAS,IAAS76P,GAAK,EAAK,IAAS66P,EAAS,IAAY,GAAJ76P,IAIpGxD,GAAK,EACLwD,EAAI,QAAiB,KAAJA,IAAc,GAA8B,KAAvBsvC,EAAOkB,WAAWh0C,IACxDgtD,GAAOqxM,EAAS,IAAQ76P,GAAK,IACvB66P,EAAS,IAAS76P,GAAK,GAAM,IAC7B66P,EAAS,IAAS76P,GAAK,EAAK,IAC5B66P,EAAS,IAAY,GAAJ76P,IAG3B,OAAOwpD,GAkDPusF,SAnBW,SAAkB9zI,GAC7B,SAAKA,GAAsB,iBAARA,OAITA,EAAIgK,aAAehK,EAAIgK,YAAY8pI,UAAY9zI,EAAIgK,YAAY8pI,SAAS9zI,KAelF+sL,SAxBW,SAAkB/sL,GAC7B,MAA+C,oBAAxCtF,OAAOC,UAAU4V,SAAS1V,KAAKmF,IAwBtCmwC,MA7LQ,SAASA,EAAM9yC,EAAQgqD,EAAQpiD,GACvC,IAAKoiD,EACD,OAAOhqD,EAGX,GAAsB,iBAAXgqD,EAAqB,CAC5B,GAAI1lD,EAAQtE,GACRA,EAAOtC,KAAKssD,OACT,KAAIhqD,GAA4B,iBAAXA,EAKxB,MAAO,CAACA,EAAQgqD,IAJXpiD,IAAYA,EAAQ6zP,cAAgB7zP,EAAQq0P,mBAAsB/1O,EAAI1oB,KAAKH,OAAOC,UAAW0sD,MAC9FhqD,EAAOgqD,IAAU,GAMzB,OAAOhqD,EAGX,IAAKA,GAA4B,iBAAXA,EAClB,MAAO,CAACA,GAAQgK,OAAOggD,GAG3B,IAAIkyM,EAAcl8P,EAKlB,OAJIsE,EAAQtE,KAAYsE,EAAQ0lD,KAC5BkyM,EAAcV,EAAcx7P,EAAQ4H,IAGpCtD,EAAQtE,IAAWsE,EAAQ0lD,IAC3BA,EAAOliD,SAAQ,SAAUgP,EAAM5Z,GAC3B,GAAIgpB,EAAI1oB,KAAKwC,EAAQ9C,GAAI,CACrB,IAAIi/P,EAAan8P,EAAO9C,GACpBi/P,GAAoC,iBAAfA,GAA2BrlP,GAAwB,iBAATA,EAC/D9W,EAAO9C,GAAK41C,EAAMqpN,EAAYrlP,EAAMlP,GAEpC5H,EAAOtC,KAAKoZ,QAGhB9W,EAAO9C,GAAK4Z,KAGb9W,GAGJ3C,OAAOoZ,KAAKuzC,GAAQlmC,QAAO,SAAUmmM,EAAKvoN,GAC7C,IAAIN,EAAQ4oD,EAAOtoD,GAOnB,OALIwkB,EAAI1oB,KAAKysN,EAAKvoN,GACduoN,EAAIvoN,GAAOoxC,EAAMm3K,EAAIvoN,GAAMN,EAAOwG,GAElCqiN,EAAIvoN,GAAON,EAER6oN,IACRiyC,M,6BC/FP7+P,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAEXnD,EAAQuwQ,oBAAiBpuQ,EAEzB,IAEIk/B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAI5B,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAsBvF,IAAI8rQ,EAAuB,WACvB,SAASA,KACL,EAAInvO,EAAiB/8B,SAASmL,KAAM+gQ,GAuCxC,OApCA,EAAIlvO,EAAch9B,SAASksQ,EAAsB,CAAC,CAC9C/sQ,IAAK,WACLN,MAAO,SAAkB6yD,EAAQ0vC,EAAS+qK,GACtC,MAAM,IAAInvQ,MAAM,qBAErB,CACCmC,IAAK,UACLN,MAAO,SAAiBqiG,EAAeirK,GACnC,MAAM,IAAInvQ,MAAM,qBAErB,CACCmC,IAAK,WACLN,MAAO,SAAkB2hG,GACrB,MAAM,IAAIxjG,MAAM,qBAErB,CACCmC,IAAK,UACLN,MAAO,SAAiB6/B,GACpB,MAAM,IAAI1hC,MAAM,qBAErB,CACCmC,IAAK,YACLN,MAAO,SAAmB+gG,GACtB,MAAM,IAAI5iG,MAAM,qBAErB,CACCmC,IAAK,kBACLN,MAAO,SAAyBmhC,GAC5B,MAAM,IAAIhjC,MAAM,qBAErB,CACCmC,IAAK,iBACLN,MAAO,SAAwB2lG,GAC3B,MAAM,IAAIxnG,MAAM,uBAGjBkvQ,EAzCgB,GAgD3BxwQ,EAAQsE,QAAUksQ,EAEGxwQ,EAAQuwQ,eAAiB,WAC1C,SAASA,EAAe/qK,EAAeE,EAAS1iE,EAAQ8hE,EAASsiI,IAC7D,EAAI/lM,EAAiB/8B,SAASmL,KAAM8gQ,GAEpC9gQ,KAAK+1F,cAAgBA,EACrB/1F,KAAKi2F,QAAUA,EACfj2F,KAAKq1F,QAAUA,EACfr1F,KAAKuzB,OAASA,EACdvzB,KAAK23N,WAAaA,EAwBtB,OArBA,EAAI9lM,EAAch9B,SAASisQ,EAAgB,KAAM,CAAC,CAC9C9sQ,IAAK,UACLN,MAAO,SAAiB6/B,GACpB,OAAO,IAAIutO,EAAe,KAAM,KAAMvtO,EAAQ,KAAM,QAEzD,CACCv/B,IAAK,WACLN,MAAO,SAAkB2hG,GACrB,OAAO,IAAIyrK,EAAe,KAAM,KAAM,KAAMzrK,EAAS,QAE1D,CACCrhG,IAAK,UACLN,MAAO,SAAiBqiG,EAAe4hI,GACnC,OAAO,IAAImpC,EAAe/qK,EAAe,KAAM,KAAM,KAAM4hI,GAAc,MAE9E,CACC3jO,IAAK,WACLN,MAAO,SAAkB6yD,EAAQ0vC,EAAS0hI,GACtC,OAAO,IAAImpC,EAAev6M,EAAQ0vC,EAAS,KAAM,KAAM0hI,GAAc,QAGtEmpC,EAhCmC,I,6BCrF9C,IAAIxqK,EAA4B,EAAQ,KAEpCsO,EAAc,EAAQ,IAmB1B,SAASjP,EAAc8O,GAEnB,IAAIw8J,EAAKx8J,EAAQy8J,QAAQC,OAGrBC,EADK38J,EAAQ4yJ,OAAO8J,OACJroI,KAChBuoI,EAAU58J,EAAQ4yJ,OAAOniO,MAE7B,QAAsBxiC,IAAlBuuQ,EAAGK,WACH,MAAM,IAAIzvQ,MAAM,qEAGpB,IAAI0vQ,EAAY,SAAmB7tQ,GAC/B0tQ,EAAWtxQ,KAAKkQ,KAAMtM,GACtBsM,KAAK5N,KAAO,YACZ4N,KAAKwhQ,QAAS,GAElBD,EAAU3xQ,UAAY,IAAIwxQ,EAE1B,IAAIK,EAASJ,EAAQK,KAAKT,EAAGU,OACzBC,EAAc,IAAIn9J,EAAQ4yJ,OAAOwK,MACjCC,EAAoB,IAAIr9J,EAAQ4yJ,OAAOwK,MACvCE,EAA2B,IAAIt9J,EAAQ4yJ,OAAOwK,MAC9CG,EAA+B,IAAIv9J,EAAQ4yJ,OAAOwK,MAClDI,EAAc,IAAIx9J,EAAQ4yJ,OAAOwK,MAAMN,GACvCW,EAAoB,IAAIz9J,EAAQ4yJ,OAAOwK,MACvCM,EAAwB,IAAI19J,EAAQ4yJ,OAAOwK,MAAMN,GAEjDa,EAAiB,CAACnB,EAAGoB,IAAKpB,EAAGqB,KAAMrB,EAAGsB,IAAKtB,EAAGuB,OAAQvB,EAAGwB,IAAKxB,EAAGK,WAAYL,EAAGU,MAIpFV,EAAGyB,WAEHjB,EAAO/yK,GAAG0zK,EAAgBR,GAC1BA,EAAYlzK,GAAG0zK,EAAgBR,GAC/BA,EAAYlzK,GAAGuyK,EAAGuB,OAAQZ,GAE1BA,EAAYlzK,GAAGuyK,EAAG0B,MAAOb,GAEzBA,EAAkBpzK,GAAGuyK,EAAGuB,OAAQT,GAChCD,EAAkBpzK,GAAGuyK,EAAGyB,UAAWT,GACnCH,EAAkBpzK,GAAGuyK,EAAGwB,IAAKR,GAC7BF,EAAyBrzK,GAAGuyK,EAAGoB,IAAKL,GACpCA,EAA6BtzK,GAAGuyK,EAAGuB,OAAQT,GAC3CC,EAA6BtzK,GAAGuyK,EAAGwB,IAAKR,GAExCA,EAAYvzK,GAAGuyK,EAAGoB,IAAKL,GACvBC,EAAYvzK,GAAGuyK,EAAG0B,MAAOT,GACzBA,EAAkBxzK,GAAGuyK,EAAGsB,IAAKJ,GAG7B,IAAIS,EAAS,SAAgBlvQ,GACzB0tQ,EAAWtxQ,KAAKkQ,KAAMtM,GACtBsM,KAAK5N,KAAO,SACZ4N,KAAKwhQ,QAAS,GAElBoB,EAAOhzQ,UAAY,IAAIwxQ,EAEvB,IAAIyB,EAAOxB,EAAQK,KAAKT,EAAG6B,IACvBC,EAAY,IAAIt+J,EAAQ4yJ,OAAOwK,MAC/BmB,EAAkB,IAAIv+J,EAAQ4yJ,OAAOwK,MACrCoB,EAAyB,IAAIx+J,EAAQ4yJ,OAAOwK,MAC5CqB,EAA6B,IAAIz+J,EAAQ4yJ,OAAOwK,MAChDsB,EAAW,IAAI1+J,EAAQ4yJ,OAAOwK,MAAMe,GACpCQ,EAAiB,IAAI3+J,EAAQ4yJ,OAAOwK,MACpCwB,EAAqB,IAAI5+J,EAAQ4yJ,OAAOwK,MAAMe,GAE9CU,EAAiB,CAACrC,EAAGoB,IAAKpB,EAAGK,WAAYL,EAAGqB,KAAMrB,EAAGsB,IAAKtB,EAAGuB,OAAQvB,EAAGwB,IAG5ExB,EAAGyB,WAEHG,EAAKn0K,GAAG40K,EAAgBP,GACxBA,EAAUr0K,GAAG40K,EAAgBP,GAC7BA,EAAUr0K,GAAGuyK,EAAGuB,OAAQO,GAExBA,EAAUr0K,GAAGuyK,EAAG0B,MAAOK,GAEvBA,EAAgBt0K,GAAGuyK,EAAGuB,OAAQS,GAC9BD,EAAgBt0K,GAAGuyK,EAAGyB,UAAWS,GACjCH,EAAgBt0K,GAAGuyK,EAAGwB,IAAKU,GAC3BF,EAAuBv0K,GAAGuyK,EAAGoB,IAAKa,GAClCA,EAA2Bx0K,GAAGuyK,EAAGuB,OAAQS,GACzCC,EAA2Bx0K,GAAGuyK,EAAGwB,IAAKU,GAEtCA,EAASz0K,GAAGuyK,EAAGoB,IAAKa,GACpBC,EAASz0K,GAAGuyK,EAAG0B,MAAOS,GACtBA,EAAe10K,GAAGuyK,EAAGsB,IAAKc,GAG1B,IAAIE,EAAU,SAAiB7vQ,GAC3B0tQ,EAAWtxQ,KAAKkQ,KAAMtM,GACtBsM,KAAK5N,KAAO,UACZ4N,KAAKwhQ,QAAS,GAElB+B,EAAQ3zQ,UAAY,IAAIwxQ,EAExB,IAAIoC,EAASnC,EAAQK,KAAKT,EAAGqB,MACzBmB,EAAc,IAAIh/J,EAAQ4yJ,OAAOwK,MACjC6B,EAAoB,IAAIj/J,EAAQ4yJ,OAAOwK,MACvC8B,EAA2B,IAAIl/J,EAAQ4yJ,OAAOwK,MAC9C+B,EAA+B,IAAIn/J,EAAQ4yJ,OAAOwK,MAClDgC,EAAY,IAAIp/J,EAAQ4yJ,OAAOwK,MAAM0B,GACrCO,EAAkB,IAAIr/J,EAAQ4yJ,OAAOwK,MACrCkC,EAAsB,IAAIt/J,EAAQ4yJ,OAAOwK,MAAM0B,GAE/CS,EAAgB,CAAC/C,EAAGoB,IAAKpB,EAAGK,WAAYL,EAAGqB,KAAMrB,EAAGsB,IAAKtB,EAAGuB,OAAQvB,EAAGwB,IAG3ExB,EAAGyB,WAEHc,EAAO90K,GAAGs1K,EAAeP,GACzBA,EAAY/0K,GAAGs1K,EAAeP,GAC9BA,EAAY/0K,GAAGuyK,EAAGuB,OAAQiB,GAE1BA,EAAY/0K,GAAGuyK,EAAG0B,MAAOe,GAEzBA,EAAkBh1K,GAAGuyK,EAAGuB,OAAQmB,GAChCD,EAAkBh1K,GAAGuyK,EAAGyB,UAAWmB,GACnCH,EAAkBh1K,GAAGuyK,EAAGwB,IAAKoB,GAC7BF,EAAyBj1K,GAAGuyK,EAAGoB,IAAKuB,GACpCA,EAA6Bl1K,GAAGuyK,EAAGuB,OAAQmB,GAC3CC,EAA6Bl1K,GAAGuyK,EAAGwB,IAAKoB,GAExCA,EAAUn1K,GAAGuyK,EAAGoB,IAAKuB,GACrBC,EAAUn1K,GAAGuyK,EAAG0B,MAAOmB,GACvBA,EAAgBp1K,GAAGuyK,EAAGsB,IAAKwB,GAI/BpuK,EAAcsuK,YAAc,SAAUvzQ,EAAG6iC,GACrC7iC,EAAEg8D,kBAENipC,EAAcuuK,aAAe,SAAUxzQ,EAAG22G,GACtC32G,EAAEg8D,kBAENipC,EAAcwuK,aAAe,SAAUzzQ,EAAG2kG,GACtC3kG,EAAEg8D,kBASNipC,EAAcC,mBAAqB,sBAAoCnhG,OAAOqgC,SAASD,KAAOpgC,OAAOqgC,SAASu7D,UAL5F5zF,QAAQ,sBAAuB,QAKyE,uEAE1Hk5F,EAAcyuK,qBAAuB,uDACrCzuK,EAAc0uK,yBAA2B,8EACzC1uK,EAAc2uK,kBAAoBhuK,EAA0B7gE,QAE5DkgE,EAAcz7F,QAAU,CACpBkzF,OAAQ,SAAgBkD,EAAMl+F,GAC1B,OAAQA,GACJ,IAAK,SACD,MAAO,CACHijO,MAAO,SAAe3kO,GAClBilG,EAAcsuK,YAAYvzQ,EAAG4/F,KAGzC,IAAK,YACD,MAAO,CACH+kI,MAAO,SAAe3kO,GAClBilG,EAAcuuK,aAAaxzQ,EAAG4/F,KAG1C,IAAK,UACD,MAAO,CACH+kI,MAAO,SAAe3kO,GAClBilG,EAAcwuK,aAAazzQ,EAAG4/F,OAMlDi0K,WAAY,SAAoBj0K,EAAMl+F,GAClC,OAAQA,GACJ,IAAK,YACL,IAAK,SACL,IAAK,UACL,QAEQ,OAAO,EAAIwyG,EAAYnP,kCAAkCnF,KAKzEk0K,eAAgB,CACZvxK,IAAK,YAGT3gG,OAAQ,SAAgBg+F,EAAMl+F,GAC1B,MAAa,QAATA,GACkB,EAAIwyG,EAAYnP,kCAAkCnF,KAChDA,GAAQA,EAAK50F,MAAMi6F,EAAcC,oBAC1C,KAEA,SAGR,OAIfplG,EAAOD,QAAUolG,G,gBCrOjB,IAAI8uK,EAAO,EAAQ,MAEnBA,EAAKC,iBAAiB,KAAM,EAAQ,OACpCD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,YAAa,EAAQ,OAC3CD,EAAKC,iBAAiB,eAAgB,EAAQ,OAC9CD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,cAAe,EAAQ,OAC7CD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,cAAe,EAAQ,OAC7CD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,UAAW,EAAQ,OACzCD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,WAAY,EAAQ,OAC1CD,EAAKC,iBAAiB,UAAW,EAAQ,OACzCD,EAAKC,iBAAiB,aAAc,EAAQ,OAC5CD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,QAAS,EAAQ,OACvCD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,YAAa,EAAQ,OAC3CD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,YAAa,EAAQ,OAC3CD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,QAAS,EAAQ,OACvCD,EAAKC,iBAAiB,UAAW,EAAQ,OACzCD,EAAKC,iBAAiB,eAAgB,EAAQ,OAC9CD,EAAKC,iBAAiB,QAAS,EAAQ,OACvCD,EAAKC,iBAAiB,eAAgB,EAAQ,OAC9CD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,QAAS,EAAQ,OACvCD,EAAKC,iBAAiB,UAAW,EAAQ,OACzCD,EAAKC,iBAAiB,KAAM,EAAQ,OACpCD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,IAAK,EAAQ,OACnCD,EAAKC,iBAAiB,WAAY,EAAQ,OAC1CD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,aAAc,EAAQ,OAC5CD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,WAAY,EAAQ,OAC1CD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,cAAe,EAAQ,OAC7CD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,QAAS,EAAQ,OACvCD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,UAAW,EAAQ,OACzCD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,QAAS,EAAQ,OACvCD,EAAKC,iBAAiB,QAAS,EAAQ,OACvCD,EAAKC,iBAAiB,UAAW,EAAQ,OACzCD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,KAAM,EAAQ,OACpCD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,aAAc,EAAQ,OAC5CD,EAAKC,iBAAiB,UAAW,EAAQ,OACzCD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,WAAY,EAAQ,OAC1CD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,KAAM,EAAQ,OACpCD,EAAKC,iBAAiB,UAAW,EAAQ,OACzCD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,aAAc,EAAQ,OAC5CD,EAAKC,iBAAiB,YAAa,EAAQ,OAC3CD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,QAAS,EAAQ,OACvCD,EAAKC,iBAAiB,aAAc,EAAQ,OAC5CD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,QAAS,EAAQ,OACvCD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,iBAAkB,EAAQ,OAChDD,EAAKC,iBAAiB,aAAc,EAAQ,OAC5CD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,WAAY,EAAQ,OAC1CD,EAAKC,iBAAiB,cAAe,EAAQ,OAC7CD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,UAAW,EAAQ,OACzCD,EAAKC,iBAAiB,UAAW,EAAQ,OACzCD,EAAKC,iBAAiB,QAAS,EAAQ,OACvCD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,cAAe,EAAQ,OAC7CD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,aAAc,EAAQ,OAC5CD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,QAAS,EAAQ,OACvCD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,aAAc,EAAQ,OAC5CD,EAAKC,iBAAiB,QAAS,EAAQ,OACvCD,EAAKC,iBAAiB,WAAY,EAAQ,OAC1CD,EAAKC,iBAAiB,UAAW,EAAQ,OACzCD,EAAKC,iBAAiB,UAAW,EAAQ,OACzCD,EAAKC,iBAAiB,KAAM,EAAQ,OACpCD,EAAKC,iBAAiB,QAAS,EAAQ,OACvCD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,YAAa,EAAQ,OAC3CD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,aAAc,EAAQ,OAC5CD,EAAKC,iBAAiB,aAAc,EAAQ,OAC5CD,EAAKC,iBAAiB,UAAW,EAAQ,OACzCD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,aAAc,EAAQ,OAC5CD,EAAKC,iBAAiB,WAAY,EAAQ,OAC1CD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,YAAa,EAAQ,OAC3CD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,IAAK,EAAQ,OACnCD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,IAAK,EAAQ,OACnCD,EAAKC,iBAAiB,WAAY,EAAQ,OAC1CD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,WAAY,EAAQ,OAC1CD,EAAKC,iBAAiB,WAAY,EAAQ,OAC1CD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,gBAAiB,EAAQ,OAC/CD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,QAAS,EAAQ,OACvCD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,QAAS,EAAQ,OACvCD,EAAKC,iBAAiB,QAAS,EAAQ,OACvCD,EAAKC,iBAAiB,YAAa,EAAQ,OAC3CD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,QAAS,EAAQ,OACvCD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,UAAW,EAAQ,OACzCD,EAAKC,iBAAiB,QAAS,EAAQ,OACvCD,EAAKC,iBAAiB,eAAgB,EAAQ,OAC9CD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,KAAM,EAAQ,OACpCD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,aAAc,EAAQ,OAC5CD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,QAAS,EAAQ,OACvCD,EAAKC,iBAAiB,WAAY,EAAQ,OAC1CD,EAAKC,iBAAiB,gBAAiB,EAAQ,OAC/CD,EAAKC,iBAAiB,UAAW,EAAQ,OACzCD,EAAKC,iBAAiB,OAAQ,EAAQ,OACtCD,EAAKC,iBAAiB,MAAO,EAAQ,OACrCD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,KAAM,EAAQ,OACpCD,EAAKC,iBAAiB,SAAU,EAAQ,OACxCD,EAAKC,iBAAiB,SAAU,EAAQ,OAExCl0Q,EAAOD,QAAUk0Q,G,6BC1LjBl0Q,EAAQsD,YAAa,EACrBtD,EAAQo0Q,SAAWp0Q,EAAQohB,KAAOphB,EAAQ2wQ,QAAU3wQ,EAAQ8mQ,OAAS9mQ,EAAQ2J,QAAU3J,EAAQ0iB,SAAW1iB,EAAQ+I,UAAO5G,EAEzH,IAAIkyQ,EAAS,EAAQ,KAIjB1qQ,EAAUw4B,EAFC,EAAQ,OAMnBwuO,EAAUxuO,EAFC,EAAQ,OAMnB2kO,EAAS3kO,EAFC,EAAQ,OAItB,SAASA,EAAwBz9B,GAAO,GAAIA,GAAOA,EAAIpB,WAAc,OAAOoB,EAAc,IAAIw9B,EAAS,GAAI,GAAW,MAAPx9B,EAAe,IAAK,IAAIjB,KAAOiB,EAAWtF,OAAOC,UAAUC,eAAeC,KAAKmF,EAAKjB,KAAMy+B,EAAOz+B,GAAOiB,EAAIjB,IAAgC,OAAtBy+B,EAAO59B,QAAUI,EAAYw9B,EAE7P97B,MAAMC,UACVD,MAAMC,QAAU,SAAUuK,GACzB,MAA+C,mBAAxCxR,OAAOC,UAAU4V,SAAS1V,KAAKqR,KAUxC,IAAIwjQ,EAAW,SAAkBryP,GAChC,OAAO+kP,EAAOhtJ,IAAI62J,EAAQ72J,IAAI/3F,KA4C/B/hB,EAAQ+I,KAtCG,SAAcgZ,GAMxB,IALA,IAAIlgB,EAAOuQ,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,GAAmBA,UAAU,GAAK,KAE3EkiQ,EAASF,EAASryP,GAClBwyP,EAAW,GAENt1Q,EAAI,EAAGA,EAAIq1Q,EAAOn1Q,OAAQF,IAAK,CACvC,IAAI6iJ,EAAQwyH,EAAOr1Q,IACf6iJ,EAAMmvH,QAAYpvQ,GAAQigJ,EAAMjgJ,OAASA,GAC5C0yQ,EAAS90Q,KAAKqiJ,EAAMh8F,YAItB,OAAOyuN,GA0BRv0Q,EAAQ0iB,SAAW2xP,EAAO3xP,SAC1B1iB,EAAQ2J,QAAUA,EAClB3J,EAAQ8mQ,OAASA,EACjB9mQ,EAAQ2wQ,QAAUA,EAClB3wQ,EAAQohB,KAdG,SAAcW,GACxB,IAAIlgB,EAAOuQ,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,GAAmBA,UAAU,GAAK,KAE3EkiQ,EAASF,EAASryP,GACtB,OAAyB,IAAlBuyP,EAAOn1Q,QAAgBm1Q,EAAO,GAAGrD,UAAYpvQ,GAAQyyQ,EAAO,GAAGzyQ,OAASA,IAWhF7B,EAAQo0Q,SAAWA,G,6BClFnBp0Q,EAAQsD,YAAa,EACrBtD,EAAQw0Q,UAAYx0Q,EAAQy0Q,WAAaz0Q,EAAQ00Q,kBAAoB10Q,EAAQ20Q,aAAe30Q,EAAQ40Q,WAAa50Q,EAAQ60Q,UAAY70Q,EAAQ80Q,iBAAmB90Q,EAAQ+0Q,YAAc/0Q,EAAQg1Q,UAAYh1Q,EAAQi1Q,GAAKj1Q,EAAQkyQ,IAAMlyQ,EAAQk1Q,IAAMl1Q,EAAQ+wQ,WAAa/wQ,EAAQm1Q,MAAQn1Q,EAAQo1Q,OAASp1Q,EAAQq1Q,SAAWr1Q,EAAQs1Q,MAAQt1Q,EAAQoxQ,MAAQpxQ,EAAQ+xQ,KAAO/xQ,EAAQgyQ,IAAMhyQ,EAAQu1Q,GAAKv1Q,EAAQmyQ,UAAYnyQ,EAAQ+oE,YAAc/oE,EAAQ8xQ,IAAM9xQ,EAAQoyQ,MAAQpyQ,EAAQuyQ,GAAKvyQ,EAAQiyQ,OAASjyQ,EAAQuoI,UAAOpmI,EAE3f,IAAIqzQ,EAAoB,EAAQ,KAE5BnB,EAAS,EAAQ,KAcjBoB,GAAY,EAAID,EAAkBE,oBAOtC,SAASC,EAAcxyQ,GACtB,IAAI2B,EAAQ3B,EAAQ,CAAE2sB,EAAG3sB,GAAU,GACnC,OAAO,EAAIkxQ,EAAO3xP,UAAU+yP,GAAW,EAAID,EAAkBE,oBAAqB5wQ,GARnF2wQ,EAAUp2Q,UAAY,CACrB4V,SAAU,WACT,OAAOxF,KAAKqgB,EAAI,KAclB,IAAImiP,EAAS0D,IAMTpD,EAAKoD,EAAc,KAQnBvD,EAAQuD,EAAc,KAMtB7D,EAAM6D,EAAc,KASpB5sM,EAAc4sM,IAOdxD,EAAYwD,IAOZJ,EAAKI,EAAc,MAMnB3D,EAAM2D,IAMN5D,EAAO4D,EAAc,KAMrBvE,EAAQuE,EAAc,KAatBN,EAAWM,IAQXP,EAASO,EAAc,WAMvBL,EAAQK,EAAc,KAMtBR,EAAQQ,EAAc,KAMtB5E,EAAa4E,EAAc,KAO3BT,EAAMS,IAMNzD,EAAMyD,IAQNV,EAAKU,IAMLX,EAAYW,EAAc,KAC1BZ,EAAcY,EAAc,KAC5Bb,EAAmBa,EAAc,KACjCd,EAAYc,EAAc,KAC1Bf,EAAae,EAAc,KAC3BhB,EAAegB,EAAc,KAC7BjB,EAAoBiB,EAAc,KAClClB,EAAakB,EAAc,KAE3BnB,EAAYmB,EAAc,KAE9B31Q,EAAQuoI,KAAOktI,EACfz1Q,EAAQiyQ,OAASA,EACjBjyQ,EAAQuyQ,GAAKA,EACbvyQ,EAAQoyQ,MAAQA,EAChBpyQ,EAAQ8xQ,IAAMA,EACd9xQ,EAAQ+oE,YAAcA,EACtB/oE,EAAQmyQ,UAAYA,EACpBnyQ,EAAQu1Q,GAAKA,EACbv1Q,EAAQgyQ,IAAMA,EACdhyQ,EAAQ+xQ,KAAOA,EACf/xQ,EAAQoxQ,MAAQA,EAChBpxQ,EAAQs1Q,MAAQA,EAChBt1Q,EAAQq1Q,SAAWA,EACnBr1Q,EAAQo1Q,OAASA,EACjBp1Q,EAAQm1Q,MAAQA,EAChBn1Q,EAAQ+wQ,WAAaA,EACrB/wQ,EAAQk1Q,IAAMA,EACdl1Q,EAAQkyQ,IAAMA,EACdlyQ,EAAQi1Q,GAAKA,EACbj1Q,EAAQg1Q,UAAYA,EACpBh1Q,EAAQ+0Q,YAAcA,EACtB/0Q,EAAQ80Q,iBAAmBA,EAC3B90Q,EAAQ60Q,UAAYA,EACpB70Q,EAAQ40Q,WAAaA,EACrB50Q,EAAQ20Q,aAAeA,EACvB30Q,EAAQ00Q,kBAAoBA,EAC5B10Q,EAAQy0Q,WAAaA,EACrBz0Q,EAAQw0Q,UAAYA,G,uzidCzMpBp1Q,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEIw3G,EAAmBt1G,EAFA,EAAQ,KAM3BwoD,EAAsBxoD,EAFA,EAAQ,KAM9B2nD,EAAmB3nD,EAFD,EAAQ,IAM1Bg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxB4nD,EAA8B5nD,EAFA,EAAQ,IAMtC8nD,EAAa9nD,EAFA,EAAQ,IAMrBgE,EAAUhE,EAFD,EAAQ,IAMjB4oD,EAAc5oD,EAFD,EAAQ,IAMrBouG,EAAepuG,EAFD,EAAQ,KAMtB8oD,EAAc9oD,EAFD,EAAQ,KAMrBs+M,EAAqBt+M,EAFD,EAAQ,KAIhC,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvF,IAAIkxQ,EAAe,SAAUxmI,GAGzB,SAASwmI,KACL,EAAIv0O,EAAiB/8B,SAASmL,KAAMmmQ,GAEpC,IAAI9mN,GAAQ,EAAI7B,EAA4B3oD,SAASmL,MAAOmmQ,EAAajnQ,YAAa,EAAIq+C,EAAiB1oD,SAASsxQ,IAAer2Q,KAAKkQ,OAGxI,OADAq/C,EAAMoE,QAAUpE,EAAMoE,QAAQxvD,KAAKorD,GAC5BA,EAyBX,OAjCA,EAAI3B,EAAW7oD,SAASsxQ,EAAcxmI,IAWtC,EAAI9tG,EAAch9B,SAASsxQ,EAAc,CAAC,CACtCnyQ,IAAK,UACLN,MAAO,SAAiBypG,GACpBz+C,EAAY7pD,QAAQksD,WAAW7kD,MAAMwiD,EAAY7pD,SAAS,EAAIupD,EAAoBvpD,SAASmL,KAAK3K,MAAM+wQ,YACtGpmQ,KAAK3K,MAAMouD,YAEhB,CACCzvD,IAAK,SACLN,MAAO,WACH,IAAI6vD,GAAU,EAAIygD,EAAanvG,UAAS,EAAIq2G,EAAiBr2G,SAAS,CAClEwxQ,4BAA4B,EAC5BC,qCAAsCtmQ,KAAK3K,MAAMkxQ,eAClD,iBAAmBvmQ,KAAK3K,MAAM7C,MAAM,IAEvC,OAAOoH,EAAQ/E,QAAQzD,cAAc8iN,EAAmBr/M,QAAS,CAC7D,gBAAiBmL,KAAK3K,MAAMkxQ,cAC5Bx5M,KAAM,MACN/6C,MAAOhS,KAAK3K,MAAM2c,MAClBpX,UAAW2oD,EACXE,QAASzjD,KAAKyjD,cAGnB0iN,EAlCQ,CAmCjBvsQ,EAAQ/E,QAAQwiC,WAoBlB9mC,EAAQsE,QAAUsxQ,EAGlBA,EAAapnN,UAAY,CAErBwnN,cAAe/nN,EAAY3pD,QAAQo4D,KAAKhO,WAExCwE,QAASjF,EAAY3pD,QAAQm4D,KAAK/N,WAElCqzK,MAAO9zK,EAAY3pD,QAAQue,KAE3BgzP,UAAW5nN,EAAY3pD,QAAQ2xQ,QAAQhoN,EAAY3pD,QAAQytC,QAAQ2c,WAGnEzsD,KAAMgsD,EAAY3pD,QAAQytC,OAAO2c,WAEjCjtC,MAAOwsC,EAAY3pD,QAAQytC,OAAO2c,YAEtCzuD,EAAOD,QAAUA,EAAiB,S,6BC/HlCZ,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEImC,EAAWD,EAFD,EAAQ,KAMlB2nD,EAAmB3nD,EAFD,EAAQ,IAM1Bg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxB4nD,EAA8B5nD,EAFA,EAAQ,IAMtC8nD,EAAa9nD,EAFA,EAAQ,IAMrBgE,EAAUhE,EAFD,EAAQ,IAMjB4oD,EAAc5oD,EAFD,EAAQ,IAMrB+oD,EAAe/oD,EAFD,EAAQ,KAI1B,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvF,IAAIwxQ,EAAgB,SAAU9mI,GAG1B,SAAS8mI,EAAcpxQ,EAAOqxQ,IAC1B,EAAI90O,EAAiB/8B,SAASmL,KAAMymQ,GAEpC,IAAIpnN,GAAQ,EAAI7B,EAA4B3oD,SAASmL,MAAOymQ,EAAcvnQ,YAAa,EAAIq+C,EAAiB1oD,SAAS4xQ,IAAgB32Q,KAAKkQ,KAAM3K,IAOhJ,OALAgqD,EAAMQ,MAAQ,CACVmtG,MAAO33J,EAAMsxQ,aAAe,KAAOD,EACnCx5G,wBAAyB,MAE7B7tG,EAAM8tG,SAAW9tG,EAAM8tG,SAASl5J,KAAKorD,GAC9BA,EAgFX,OA5FA,EAAI3B,EAAW7oD,SAAS4xQ,EAAe9mI,IAevC,EAAI9tG,EAAch9B,SAAS4xQ,EAAe,CAAC,CACvCzyQ,IAAK,qBACLN,MAAO,WACHsM,KAAKkoJ,cAAgBvpG,EAAa9pD,QAAQ66H,SAAS1vH,KAAKmtJ,YAE7D,CACCn5J,IAAK,uBACLN,MAAO,WACHirD,EAAa9pD,QAAQ64G,WAAW1tG,KAAKkoJ,iBAE1C,CACCl0J,IAAK,qBACLN,MAAO,SAA4BgpO,IAC1BA,EAAUiqC,cAAgB3mQ,KAAK3K,MAAMsxQ,cACtC3mQ,KAAKu/C,SAAS,CACVytG,MAAO,SAIpB,CACCh5J,IAAK,WACLN,MAAO,SAAkBs5J,EAAO45G,GACxB5mQ,KAAK3K,MAAMsxQ,cACXhoN,EAAa9pD,QAAQopD,SAAS,CAC1BD,OAAQ,qBAGhBW,EAAa9pD,QAAQopD,UAAS,EAAIpoD,EAAShB,SAAS,CAChDmpD,OAAQ,yBACRgvG,MAAOA,GACR45G,MAER,CACC5yQ,IAAK,cACLN,MAAO,SAAqBs5J,GACxB,IAAI65G,EAAclkQ,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,GAAmBA,UAAU,GAAK,CAACqqJ,GAEnF65G,EAAYrlO,SAASxhC,KAAK6/C,MAAMmtG,OAChCruG,EAAa9pD,QAAQopD,SAAS,CAC1BD,OAAQ,qBAGZh+C,KAAK8mQ,SAAS95G,KAGvB,CACCh5J,IAAK,UACLN,MAAO,SAAiBqzQ,GACpB,OAAI/mQ,KAAK3K,MAAMsxQ,eAGXhwQ,MAAMC,QAAQmwQ,GACPA,EAAOvlO,SAASxhC,KAAK6/C,MAAMmtG,OAE3B+5G,IAAW/mQ,KAAK6/C,MAAMmtG,SAGtC,CACCh5J,IAAK,WACLN,MAAO,SAAkBmqD,GACE,2BAAnBA,EAAQG,QACRh+C,KAAKu/C,SAAS,CACVytG,MAAOnvG,EAAQmvG,UAI5B,CACCh5J,IAAK,SACLN,MAAO,WAEH,OAAOkG,EAAQ/E,QAAQzD,cACnB,MACA,CAAEwJ,UAAW,mBAAoBmyD,KAAM,WACvC/sD,KAAKgnQ,qBAIVP,EA7FS,CA8FlB7sQ,EAAQ/E,QAAQwiC,WAmBlB9mC,EAAQsE,QAAU4xQ,EAGlBA,EAAc1nN,UAAY,CACtB4nN,aAAcnoN,EAAY3pD,QAAQo4D,MAEtCz8D,EAAOD,QAAUA,EAAiB,S,6BCjKlCZ,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEI6pD,EAAmB3nD,EAFD,EAAQ,IAM1Bg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxB4nD,EAA8B5nD,EAFA,EAAQ,IAMtC8nD,EAAa9nD,EAFA,EAAQ,IAMrBgE,EAAUhE,EAFD,EAAQ,IAMjBqxQ,EAAiBrxQ,EAFD,EAAQ,MAIxBsxQ,EAAW,EAAQ,KAEvB,SAAStxQ,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvF,IAAIkyQ,EAAY,SAAUxnI,GAGtB,SAASwnI,EAAU9xQ,IACf,EAAIu8B,EAAiB/8B,SAASmL,KAAMmnQ,GAEpC,IAAI9nN,GAAQ,EAAI7B,EAA4B3oD,SAASmL,MAAOmnQ,EAAUjoQ,YAAa,EAAIq+C,EAAiB1oD,SAASsyQ,IAAYr3Q,KAAKkQ,KAAM3K,IAIxI,OAFAgqD,EAAM+nN,uBAAyB/nN,EAAM+nN,uBAAuBnzQ,KAAKorD,GACjEA,EAAMgoN,WAAahoN,EAAMgoN,WAAWpzQ,KAAKorD,GAClCA,EAsFX,OA/FA,EAAI3B,EAAW7oD,SAASsyQ,EAAWxnI,IAYnC,EAAI9tG,EAAch9B,SAASsyQ,EAAW,CAAC,CACnCnzQ,IAAK,aACLN,MAAO,SAAoBozB,GACvBryB,OAAO6/B,aAAa6pG,QAAQ,cAAer3G,GACvC9mB,KAAK3K,MAAM25J,gBACXhvJ,KAAK3K,MAAM25J,eAAes4G,6BAGnC,CACCtzQ,IAAK,iBACLN,MAAO,WACH,IAKI6zQ,EAAU,IAAIL,EAASM,QAAQxnQ,KAAKynQ,gBAAiBP,EAASQ,iBAAkB,CAAEC,UAAW3nQ,KAAKqnQ,aACtGE,EAAQK,cANS,CACb96O,OAAQ,kBACRshM,SAAU,2BACVxwL,QAAS,4BAIb,IAAIiqO,EAAUpzQ,OAAO6/B,aAAagqG,QAAQ,eAEtCupI,EADY,OAAZA,EACU/0P,SAAS+0P,EAAS,IAElB,IAEdN,EAAQO,YAAY,GAAGC,OAAOF,GAE9BN,EAAQS,SACRhoQ,KAAKunQ,QAAUA,IAEpB,CACCvzQ,IAAK,yBACLN,MAAO,SAAgCi2B,GACnC3pB,KAAKynQ,gBAAkB99O,IAE5B,CACC31B,IAAK,oBACLN,MAAO,WACCsM,KAAK3K,MAAMw5J,QAAU7uJ,KAAK3K,MAAMsxQ,cAChC3mQ,KAAKioQ,mBAGd,CACCj0Q,IAAK,uBACLN,MAAO,WACCsM,KAAKunQ,UACLvnQ,KAAKunQ,QAAQW,SACbloQ,KAAKunQ,QAAU,QAGxB,CACCvzQ,IAAK,qBACLN,MAAO,SAA4BgpO,GAC/B,IAAIyrC,GAAenoQ,KAAK3K,MAAMsxQ,cAAgBjqC,EAAUiqC,aACpDyB,EAAepoQ,KAAK3K,MAAMsxQ,eAAiBjqC,EAAUiqC,aACrD0B,EAAcroQ,KAAK3K,MAAMw5J,QAAU6tE,EAAU7tE,MAC7Cy5G,GAAmBtoQ,KAAK3K,MAAMw5J,OAAS6tE,EAAU7tE,MAEjDs5G,GAAeE,EACfroQ,KAAKioQ,kBACEG,GAAgBE,KACvBtoQ,KAAKunQ,QAAQW,SACbloQ,KAAKunQ,QAAU,QAGxB,CACCvzQ,IAAK,SACLN,MAAO,WACH,IAAI60Q,EAAW3uQ,EAAQ/E,QAAQ2zQ,SAAStlC,KAAKljO,KAAK3K,MAAM42D,UACpDw8M,EAAYzoQ,KAAK3K,MAAMw5J,MAE3B,OAAI7uJ,KAAK3K,MAAMsxQ,eAAiB8B,EACrBF,EAEA3uQ,EAAQ/E,QAAQzD,cACnB,MACA,CAAEwJ,UAAW,eAAgB++B,IAAK35B,KAAKonQ,wBACvCmB,EACA3uQ,EAAQ/E,QAAQzD,cAAc61Q,EAAepyQ,QAAS,CAAE+oC,SAAS,IACjE6qO,OAKTtB,EAhGK,CAiGdvtQ,EAAQ/E,QAAQwiC,WAgBlB9mC,EAAQsE,QAAUsyQ,EAClB32Q,EAAOD,QAAUA,EAAiB,S,6BCtJlC,IAEIm4Q,EAAU9yQ,EAFD,EAAQ,MAMjB+yQ,EAAa/yQ,EAFD,EAAQ,OAMpBgzQ,EAAgBhzQ,EAFD,EAAQ,OAMvBizQ,EAAYjzQ,EAFD,EAAQ,OAIvB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAkBvFzE,EAAOD,QAAU,CACbi3Q,QAASqB,EAAUh0Q,QACnB6yQ,iBAAkBgB,EAAQ7zQ,QAC1Bi0Q,oBAAqBH,EAAW9zQ,QAChCk0Q,uBAAwBH,EAAc/zQ,U,6BCtC1ClF,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEIk+B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxBozQ,EAASpzQ,EAFD,EAAQ,MAMhBqzQ,EAAUrzQ,EAFD,EAAQ,MAIrB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GA4BvF,IAAIyyQ,EAAmB,WAanB,SAASA,EAAiBt+P,IACtB,EAAIwoB,EAAiB/8B,SAASmL,KAAM0nQ,GAEpC1nQ,KAAKoJ,KAAOA,EACZpJ,KAAKkpQ,aAAe9/P,EAAK4wB,SAoB7B,OApCA,EAAInI,EAAch9B,SAAS6yQ,EAAkB,KAAM,CAAC,CAChD1zQ,IAAK,aACLN,MAAO,SAAoBy1Q,EAAc5B,EAAS6B,GAC9C,OAAO,IAAIJ,EAAOn0Q,QAAQs0Q,EAAc5B,EAAS6B,KAEtD,CACCp1Q,IAAK,cACLN,MAAO,SAAqB21Q,EAAkBj7C,EAAUxwL,GACpD,OAAO,IAAIqrO,EAAQp0Q,QAAQw0Q,EAAkBj7C,EAAUxwL,QAW/D,EAAI/L,EAAch9B,SAAS6yQ,EAAkB,CAAC,CAC1C1zQ,IAAK,SACLN,MAAO,SAAgBozB,GACnB9mB,KAAKoJ,KAAK8hC,QAAQpkB,KAEvB,CACC9yB,IAAK,4BACLN,MAAO,SAAmCsmC,GACtCh6B,KAAK+nQ,OAAO/tO,EAASh6B,KAAKkpQ,gBAE/B,CACCl1Q,IAAK,QACLN,MAAO,cACR,CACCM,IAAK,SACLN,MAAO,gBAEJg0Q,EArCY,GAwCvBn3Q,EAAQsE,QAAU6yQ,EAClBl3Q,EAAOD,QAAUA,EAAiB,S,6BCzFlCZ,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEIu1F,EAASrzF,EAFD,EAAQ,KAMhBg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAI5B,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAkBvF,IAAIq0Q,EAAa,WACb,SAASA,EAAWx8O,EAAQy6O,EAAS6B,IACjC,EAAIx3O,EAAiB/8B,SAASmL,KAAMspQ,GAEpC,IAAI1oN,EAAK9zB,EAAOwqH,aAAa,WACzB15G,EAAU2pO,EAAQgC,sBAAsBz8O,GACxC08O,EAAU5rO,EAAU9Q,EAAO28O,mBAAqB38O,EAAO48O,uBAE3D1pQ,KAAKwpQ,QAAUA,EACfxpQ,KAAK4gD,GAAKA,EACV5gD,KAAK49B,QAAUA,EACf59B,KAAKunQ,QAAUA,EACfvnQ,KAAKopQ,MAAQA,EA6FjB,OA1FA,EAAIv3O,EAAch9B,SAASy0Q,EAAY,CAAC,CACpCt1Q,IAAK,YACLN,MAAO,SAAmBo5B,EAAQy6O,EAAS6B,GAEvC,OAAO,IAAI78E,EADAvsL,KAAKf,aACA6tB,EAAQy6O,EAAS6B,KAEtC,CACCp1Q,IAAK,WACLN,MAAO,SAAkBi2Q,GAErB,IAAI78O,EAAS9sB,KAAK49B,QAAU59B,KAAKwpQ,QAAQE,uBAAyB1pQ,KAAKwpQ,QAAQC,mBAC3EG,EAAWD,IAAa3pQ,KAAK49B,QAEjC,GAEQ9Q,EADA88O,EACS98O,EAAO28O,mBAEP38O,EAAO48O,6BAEf58O,IAAW9sB,KAAKunQ,QAAQsC,eAAe/8O,IAEhD,GAAIA,EAAQ,CACR,IAAIisI,EAAa/4J,KAAK8pQ,UAAUh9O,EAAQ9sB,KAAKunQ,QAASvnQ,KAAKopQ,OAE3D,OADArwG,EAAWn7H,QAAU59B,KAAK49B,QACnBm7H,KAGhB,CACC/kK,IAAK,OACLN,MAAO,WACH,OAAOsM,KAAK+pQ,UAAS,KAE1B,CACC/1Q,IAAK,WACLN,MAAO,WACH,OAAOsM,KAAK+pQ,UAAS,KAE1B,CACC/1Q,IAAK,OACLN,MAAO,WACH,OAAOsM,KAAKopQ,MAAMY,YAAYhqQ,KAAKwpQ,WAExC,CACCx1Q,IAAK,SACLN,MAAO,WACH,OAAOsM,KAAKopQ,MAAMa,cAAcjqQ,KAAKwpQ,WAE1C,CACCx1Q,IAAK,UACLN,MAAO,SAAiBozB,GACpB9mB,KAAKopQ,MAAMc,YAAYlqQ,KAAKwpQ,QAAS1iP,GACrC,IAAIlJ,EAAW5d,KAAKunQ,QAAQl6P,OAAOs6P,UAC/B/pP,GACAA,EAASkJ,EAAM9mB,KAAK4gD,GAAI5gD,KAAKwpQ,WAGtC,CACCx1Q,IAAK,YACLN,MAAO,WACHsM,KAAKopQ,MAAMe,cAAcnqQ,KAAKwpQ,SAC9B,IAAI5rP,EAAW5d,KAAKunQ,QAAQl6P,OAAOs6P,UAC/B/pP,GACAA,EAAS,KAAM5d,KAAK4gD,GAAI5gD,KAAKwpQ,WAGtC,CACCx1Q,IAAK,QACLN,MAAO,WACH,IAAI2rD,EAAQr/C,KAERoqQ,GAAc,EAAInhL,EAAOp0F,SAASmL,KAAKwpQ,QAAQa,cAAcp+M,UAAU3yD,MAAK,SAAUw6J,GACtF,OAAOz0G,EAAMkoN,QAAQsC,eAAe/1G,MAExC,GAAIs2G,EACA,OAAOpqQ,KAAK8pQ,UAAUM,EAAapqQ,KAAKunQ,QAASvnQ,KAAKopQ,SAG/D,CACCp1Q,IAAK,OACLN,MAAO,WACH,IAAIqqD,EAAS/9C,KAETsqQ,GAAa,EAAIrhL,EAAOp0F,SAASmL,KAAKwpQ,QAAQa,cAAcp+M,UAAUruB,UAAUtkC,MAAK,SAAUw6J,GAC/F,OAAO/1G,EAAOwpN,QAAQsC,eAAe/1G,MAEzC,GAAIw2G,EACA,OAAOtqQ,KAAK8pQ,UAAUQ,EAAYtqQ,KAAKunQ,QAASvnQ,KAAKopQ,WAI1DE,EAzGM,GA4GjB/4Q,EAAQsE,QAAUy0Q,EAClB94Q,EAAOD,QAAUA,EAAiB,S,cCjJlCC,EAAOD,QAAU,qC,cCAjBC,EAAOD,QAAU,iC,6BCEjBZ,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGTnD,EAAQsE,QAAU,SAAU01Q,EAAYC,GACtC,OAAO,SAAU92Q,GACf,OAAOA,GAAS82Q,GAAc92Q,GAAS62Q,K,6BCN3C56Q,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAMgCuB,EAN5Bw1Q,EAAyB,EAAQ,KAEjCC,GAI4Bz1Q,EAJqBw1Q,IAIAx1Q,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAFnFg6N,EAAW,EAAQ,KAIvB1+N,EAAQsE,QAAU,SAAUq+B,GAC1B,IAAI5gC,EAAS4gC,EAAK5gC,OACd29J,EAAc/8H,EAAK+8H,YACnBE,EAAWj9H,EAAKi9H,SAEhB6/D,EAAe//D,EAAYE,SAAS0/D,YAAY9tF,KAAKiuF,aACrDT,GAAa,EAAIN,EAASj1L,QAAQ1nC,EAAQ09N,GAE9C,IAAK//D,EAAYE,SAAS8/D,QACxB,OAAO,EAGT,IAAI06C,GAAuB,EAAID,EAAwB71Q,SAASo7J,EAAYE,SAAS8/D,QAA1D,CAAmEV,GAE1Fq7C,GAAsB,EAAIF,EAAwB71Q,SAASs7J,EAArC,CAA+Co/D,GAEzE,OAAOo7C,GAAwBC,I,6BCxBjC,SAASC,EAAqBxrQ,EAAG6kB,GAC/B,OAAO7kB,IAAM6kB,EAGf,SAAS4mP,EAA2BC,EAAelpQ,EAAMnE,GACvD,GAAa,OAATmE,GAA0B,OAATnE,GAAiBmE,EAAKnS,SAAWgO,EAAKhO,OACzD,OAAO,EAKT,IADA,IAAIA,EAASmS,EAAKnS,OACTF,EAAI,EAAGA,EAAIE,EAAQF,IAC1B,IAAKu7Q,EAAclpQ,EAAKrS,GAAIkO,EAAKlO,IAC/B,OAAO,EAIX,OAAO,EAGT,SAASw7Q,EAAeh+M,GACtB,IAAI+9M,EAAgBpoQ,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,GAAmBA,UAAU,GAAKkoQ,EAEpF/3J,EAAW,KACXC,EAAa,KAEjB,OAAO,WAOL,OANK+3J,EAA2BC,EAAej4J,EAAUnwG,aAEvDowG,EAAa/lD,EAAK9wD,MAAM,KAAMyG,YAGhCmwG,EAAWnwG,UACJowG,GAIX,SAASk4J,EAAgB1xE,GACvB,IAAI2xE,EAAev0Q,MAAMC,QAAQ2iM,EAAM,IAAMA,EAAM,GAAKA,EAExD,IAAK2xE,EAAa/qO,OAAM,SAAUgrO,GAChC,MAAsB,mBAARA,KACZ,CACF,IAAIC,EAAkBF,EAAahyQ,KAAI,SAAUiyQ,GAC/C,cAAcA,KACb5uQ,KAAK,MACR,MAAM,IAAI1K,MAAM,wGAAgHu5Q,EAAkB,KAGpJ,OAAOF,EAGT,SAASG,EAAsBx6M,GAC7B,IAAK,IAAI7P,EAAOr+C,UAAUjT,OAAQ47Q,EAAiB30Q,MAAMqqD,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IACxGqqN,EAAerqN,EAAO,GAAKt+C,UAAUs+C,GAGvC,OAAO,WACL,IAAK,IAAIC,EAAQv+C,UAAUjT,OAAQ6pM,EAAQ5iM,MAAMuqD,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACjFo4I,EAAMp4I,GAASx+C,UAAUw+C,GAG3B,IAAIoqN,EAAiB,EACjBC,EAAajyE,EAAM7zL,MACnBwlQ,EAAeD,EAAgB1xE,GAE/BkyE,EAAqB56M,EAAQ30D,WAAMxJ,EAAW,CAAC,WAGjD,OAFA64Q,IAEOC,EAAWtvQ,MAAM,KAAMyG,aAC7BrG,OAAOgvQ,IAGN7uI,EAAWuuI,GAAe,WAI5B,IAHA,IAAI3hL,EAAS,GACT35F,EAASw7Q,EAAax7Q,OAEjBF,EAAI,EAAGA,EAAIE,EAAQF,IAE1B65F,EAAOr5F,KAAKk7Q,EAAa17Q,GAAG0M,MAAM,KAAMyG,YAI1C,OAAO8oQ,EAAmBvvQ,MAAM,KAAMmtF,MAUxC,OAPAozC,EAAS+uI,WAAaA,EACtB/uI,EAAS8uI,eAAiB,WACxB,OAAOA,GAET9uI,EAASivI,oBAAsB,WAC7B,OAAOH,EAAiB,GAEnB9uI,GAjGXlsI,EAAQsD,YAAa,EACrBtD,EAAQy6Q,eAAiBA,EACzBz6Q,EAAQ86Q,sBAAwBA,EAChC96Q,EAAQo7Q,yBAoGR,SAAkCC,GAChC,IAAIC,EAAkBlpQ,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,GAAmBA,UAAU,GAAKmpQ,EAE1F,GAAyB,iBAAdF,EACT,MAAM,IAAI/5Q,MAAM,gIAAwI+5Q,GAE1J,IAAIG,EAAap8Q,OAAOoZ,KAAK6iQ,GAC7B,OAAOC,EAAgBE,EAAW7yQ,KAAI,SAAUlF,GAC9C,OAAO43Q,EAAU53Q,OACf,WACF,IAAK,IAAIstD,EAAQ3+C,UAAUjT,OAAQ+tB,EAAS9mB,MAAM2qD,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IAClF9jC,EAAO8jC,GAAS5+C,UAAU4+C,GAG5B,OAAO9jC,EAAOrH,QAAO,SAAU41P,EAAat4Q,EAAOkI,GAEjD,OADAowQ,EAAYD,EAAWnwQ,IAAUlI,EAC1Bs4Q,IACN,QAnBP,IAAIF,EAAiBv7Q,EAAQu7Q,eAAiBT,EAAsBL,I,6BCrGpEr7Q,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGTnD,EAAQsE,QAAU,WAChB,MAAO,CACLyuB,EAAG7uB,OAAOyyI,YACVh9C,EAAGz1F,OAAOwyI,e,6BCJd12I,EAAQsD,YAAa,EACrBtD,EAAiB,QAEjB,SAAmB0E,GACjB,IAAI2K,EAAM,GACV,IAAK,IAAI5L,KAAOiB,EACVtF,OAAOC,UAAUC,eAAeC,KAAKmF,EAAKjB,KAC5C4L,EAAI5L,GAAO,GAGf,OAAO4L,GAGTpP,EAAOD,QAAUA,EAAiB,S,6BCXlCA,EAAQsD,YAAa,EACrBtD,EAAiB,QAIjB,SAAiB07Q,EAAgB3oP,EAAGjD,EAAG6rP,EAAO7xQ,EAAG6pB,EAAGg4K,GAKlD,IAUIiwE,EAAO9rP,IAVIhmB,GAAKipB,EAAI4oP,IAGThoP,EAAI7D,GAOA4rP,EACfG,EAAO9oP,EAAI6oP,EAAOF,EAEtB,GAAIpmQ,KAAKi7B,IAAIqrO,GAAQjwE,GAAar2L,KAAKi7B,IAAIsrO,EAAOF,GAAShwE,EAGzD,OAFAmwE,EAAY,GAAKH,EACjBG,EAAY,GAAK,EACVA,EAKT,OAFAA,EAAY,GAAKD,EACjBC,EAAY,GAAKF,EACVE,GA5BT,IAAIA,EAAc,CAAC,EAAG,GA+BtB77Q,EAAOD,QAAUA,EAAiB,S,iBCzClC,aACA,WACE,IAAI+7Q,EAAgBC,EAAQC,EAEA,oBAAhBC,aAA+C,OAAhBA,aAAyBA,YAAY/mJ,IAC9El1H,EAAOD,QAAU,WACf,OAAOk8Q,YAAY/mJ,OAEZ,MAAQrjH,GAAgDA,EAAQkqQ,QACzE/7Q,EAAOD,QAAU,WACf,OAAQ+7Q,IAAmBE,GAAY,KAEzCD,EAASlqQ,EAAQkqQ,OAMjBC,GALAF,EAAiB,WACf,IAAII,EAEJ,OAAe,KADfA,EAAKH,KACK,GAAWG,EAAG,QAGjB9lN,KAAK8+D,KACdl1H,EAAOD,QAAU,WACf,OAAOq2D,KAAK8+D,MAAQ8mJ,GAEtBA,EAAW5lN,KAAK8+D,QAEhBl1H,EAAOD,QAAU,WACf,OAAO,IAAIq2D,MAAOC,UAAY2lN,GAEhCA,GAAW,IAAI5lN,MAAOC,aAGvB/2D,KAAKkQ,Q,mCC/BR,YAOA,IAPA,MAAU,EAAQ,MACd4nC,EAAyB,oBAAXnzC,OAAyByZ,EAASzZ,OAChDk4Q,EAAU,CAAC,MAAO,UAClBpnP,EAAS,iBACTqnP,EAAMhlO,EAAK,UAAYriB,GACvBsnP,EAAMjlO,EAAK,SAAWriB,IAAWqiB,EAAK,gBAAkBriB,GAEpD/1B,EAAI,GAAIo9Q,GAAOp9Q,EAAIm9Q,EAAQj9Q,OAAQF,IACzCo9Q,EAAMhlO,EAAK+kO,EAAQn9Q,GAAK,UAAY+1B,GACpCsnP,EAAMjlO,EAAK+kO,EAAQn9Q,GAAK,SAAW+1B,IAC5BqiB,EAAK+kO,EAAQn9Q,GAAK,gBAAkB+1B,GAI7C,IAAIqnP,IAAQC,EAAK,CACf,IAAIrwP,EAAO,EACPokC,EAAK,EACLn/C,EAAQ,GAGZmrQ,EAAM,SAAShvP,GACb,GAAoB,IAAjBnc,EAAM/R,OAAc,CACrB,IAAIo9Q,EAAOpnJ,IACPhoH,EAAOmI,KAAKC,IAAI,EALJ,IAAO,IAKiBgnQ,EAAOtwP,IAC/CA,EAAO9e,EAAOovQ,EACdn6Q,YAAW,WACT,IAAIo6Q,EAAKtrQ,EAAM9M,MAAM,GAIrB8M,EAAM/R,OAAS,EACf,IAAI,IAAIF,EAAI,EAAGA,EAAIu9Q,EAAGr9Q,OAAQF,IAC5B,IAAIu9Q,EAAGv9Q,GAAGkzH,UACR,IACEqqJ,EAAGv9Q,GAAGouB,SAASpB,GACf,MAAM9rB,GACNiC,YAAW,WAAa,MAAMjC,IAAK,MAIxCmV,KAAKuzH,MAAM17H,IAOhB,OALA+D,EAAMzR,KAAK,CACT88B,SAAU8zB,EACVhjC,SAAUA,EACV8kG,WAAW,IAEN9hE,GAGTisN,EAAM,SAAS//O,GACb,IAAI,IAAIt9B,EAAI,EAAGA,EAAIiS,EAAM/R,OAAQF,IAC5BiS,EAAMjS,GAAGs9B,SAAWA,IACrBrrB,EAAMjS,GAAGkzH,WAAY,IAM7BlyH,EAAOD,QAAU,SAAS0Q,GAIxB,OAAO2rQ,EAAI98Q,KAAK83C,EAAM3mC,IAExBzQ,EAAOD,QAAQmW,OAAS,WACtBmmQ,EAAI3wQ,MAAM0rC,EAAMjlC,YAElBnS,EAAOD,QAAQy8Q,SAAW,SAAS74Q,GAC5BA,IACHA,EAASyzC,GAEXzzC,EAAO84Q,sBAAwBL,EAC/Bz4Q,EAAO+4Q,qBAAuBL,K,+CCnEhCt8Q,EAAQsD,YAAa,EACrBtD,EAAiB,QAEjB,SAA6B48Q,EAAc/nK,EAAOgoK,GAChD,IAAK,IAAIp5Q,KAAOoxG,EACd,GAAKz1G,OAAOC,UAAUC,eAAeC,KAAKs1G,EAAOpxG,GAAjD,CAIA,GAA6B,IAAzBo5Q,EAAgBp5Q,GAClB,OAAO,EAGT,IAAIq5Q,EAAmC,iBAAfjoK,EAAMpxG,GAAoBoxG,EAAMpxG,GAAOoxG,EAAMpxG,GAAK6qB,IAG1E,GAAIsuP,EAAan5Q,KAASq5Q,EACxB,OAAO,EAIX,OAAO,GAGT78Q,EAAOD,QAAUA,EAAiB,S,6BC5BlCZ,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAEIg8J,EAAe95J,EAFD,EAAQ,KAMtB03Q,EAAY13Q,EAFD,EAAQ,MAIvB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvF1E,EAAQsE,QAAU,SAAU+oN,EAAW2vD,GACrC,IAAIC,EAAa,SAAoBvsQ,GAC/BssQ,KACFtsQ,KAIAwsQ,GAAe,EAAI/9G,EAAa76J,UAAS,SAAUyuB,EAAG4mE,GACxD,IAAI/f,EAAQ,CAAE7mD,EAAGA,EAAG4mE,EAAGA,GACvB0zH,EAAU8vD,OAAOvjM,MA6BnB,MAAO,CACLwjM,MA3BS,EAAIL,EAAUz4Q,UAAS,SAAUs1E,GAC1CqjM,GAAW,WACT,OAAOC,EAAatjM,EAAM7mD,EAAG6mD,EAAM+f,SA0BrCryB,aAtBgB,EAAIy1M,EAAUz4Q,UAAS,WACvC24Q,EAAW5vD,EAAUgwD,kBAsBrBvjM,cAnBiB,EAAIijM,EAAUz4Q,UAAS,WACxC24Q,EAAW5vD,EAAUiwD,mBAmBrBC,sBAhByB,EAAIR,EAAUz4Q,UAAS,WAChD24Q,EAAW5vD,EAAUmwD,2BAgBrBC,uBAb0B,EAAIV,EAAUz4Q,UAAS,WACjD24Q,EAAW5vD,EAAUqwD,4BAarBC,kBAVqB,EAAIZ,EAAUz4Q,UAAS,WAC5C24Q,EAAW5vD,EAAUuwD,sB,6BCjDzBx+Q,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGTnD,EAAQsE,QAAU,SAAU8kC,GAC1B,OAAOA,EAAMA,EAAIy0O,cAAcp0K,YAAcvlG,S,6BCL/C9E,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAECnD,EAAQovO,IAAM,EACZpvO,EAAQqvO,MAAQ,GACfrvO,EAAQwiG,OAAS,GAClBxiG,EAAQuzJ,MAAQ,GACZvzJ,EAAQ89Q,UAAY,GACtB99Q,EAAQ+9Q,QAAU,GACf/9Q,EAAQg+Q,WAAa,GACtBh+Q,EAAQi+Q,UAAY,I,6BCVpC7+Q,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAEXnD,EAAQk+Q,YA4CR,SAAqB7tN,EAAI3/C,EAAIytQ,GACzB,OAAO,SAAUzwN,GACbA,EAAS,CACLD,OAAQ4C,EAAK,WACbnuD,QAA8B,mBAAdi8Q,EAA2BA,SAAch8Q,IAE7DuO,IAAKjK,MAAK,SAAUC,GAChBgnD,EAAS,CAAED,OAAQ4C,EAAK,WAAY3pD,OAAQA,OAC7CuoD,OAAM,SAAUlrD,GACf2pD,EAAS,CAAED,OAAQ4C,EAAK,WAAYtsD,IAAKA,U,6BCxDrD3E,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAEXnD,EAAQo+Q,yBAA2Bp+Q,EAAQq+Q,0BAAuBl8Q,EAElE,IAaQwgC,EAbJvB,EAAY,EAAQ,GAmFpBgtB,GAvE2BpuD,EAAQo+Q,0BAC/Bz7O,GAAO,EAAIvB,EAAU/0B,SAAQ,SAAU1C,QACvBxH,IAAZwH,IAAuBA,EAAU,IAwBrC,IAAIs0H,EAAiBt8F,EAAQr9B,QAAQ2J,aAAa,0BAClD6zB,EAAQx9B,QAAQ6nG,oBAAoB,wBAAyB,GAAI8xB,EAAgB,CAC7Ex8G,OAAO,EAAI4sC,EAAiB1oD,IAAI,yBAChCymG,aAAa,EAAI/9C,EAAiB1oD,IAAI,oEACtCu4H,QAAQ,EAAI7vE,EAAiB1oD,IAAI,YACjCypD,WAAY,SAAoBkvN,GACxBA,EACAlwN,EAAa9pD,QAAQopD,SAAS,CAAED,OAAQ,uBACjC9jD,EAAQ40Q,kBACfnwN,EAAa9pD,QAAQopD,SAAS,CAAED,OAAQ,mBACjC9jD,EAAQ60Q,sBACfpwN,EAAa9pD,QAAQopD,SAAS,CAAED,OAAQ,4BAOjD,SAAkC0tD,GACrC,OAAOx4E,EAAKh3B,MAAM8D,KAAM2C,aA0Bb/M,EAFD,EAAQ,MAMtBs8B,EAAUt8B,EAFD,EAAQ,IAMjBy8B,EAAUz8B,EAFD,EAAQ,KAIjBgpD,EAAmB,EAAQ,GAE/B,SAAShpD,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GA4B5D1E,EAAQq+Q,qBAAuB,qB,6BChI1Dj/Q,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAEXnD,EAAQy+Q,WAAaz+Q,EAAQ0+Q,SAAMv8Q,EAEnC,IAEI6qD,EAAmB3nD,EAFD,EAAQ,IAM1Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxB4nD,EAA8B5nD,EAFA,EAAQ,IAMtC8nD,EAAa9nD,EAFA,EAAQ,IAMrBg8B,EAAmBh8B,EAFA,EAAQ,IAM3BshC,EAYJ,SAAiCjiC,GAAO,GAAIA,GAAOA,EAAIpB,WAAc,OAAOoB,EAAc,IAAIw9B,EAAS,GAAI,GAAW,MAAPx9B,EAAe,IAAK,IAAIjB,KAAOiB,EAAWtF,OAAOC,UAAUC,eAAeC,KAAKmF,EAAKjB,KAAMy+B,EAAOz+B,GAAOiB,EAAIjB,IAAgC,OAAtBy+B,EAAO59B,QAAUI,EAAYw9B,EAZtPC,CAFC,EAAQ,IAIjBksB,EAAmB,EAAQ,GAI3BJ,EAAc5oD,EAFD,EAAQ,IAMrBs8B,EAAUt8B,EAFD,EAAQ,IAMrB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAuBvF,IAAIg6Q,EAOJ1+Q,EAAQ0+Q,IAAM,SAASA,EAAIC,EAAUC,EAAcC,IAC/C,EAAIx9O,EAAiB/8B,SAASmL,KAAMivQ,GAEpCjvQ,KAAK9H,MAAQg3Q,EACblvQ,KAAKi0M,KAAOk7D,EACZnvQ,KAAKlD,KAAOsyQ,IAGC7+Q,EAAQy+Q,WAAa,SAAUrvI,GAG5C,SAASqvI,KACL,EAAIp9O,EAAiB/8B,SAASmL,KAAMgvQ,GAEpC,IAAI3vN,GAAQ,EAAI7B,EAA4B3oD,SAASmL,MAAOgvQ,EAAW9vQ,YAAa,EAAIq+C,EAAiB1oD,SAASm6Q,IAAal/Q,KAAKkQ,OAKpI,OAHAq/C,EAAMQ,MAAQ,CACVwvN,eAAgB,GAEbhwN,EA8FX,OAxGA,EAAI3B,EAAW7oD,SAASm6Q,EAAYrvI,IAapC,EAAI9tG,EAAch9B,SAASm6Q,EAAY,CAAC,CACpCh7Q,IAAK,qBACLN,MAAO,WACH,OAAKsM,KAAK6/C,OAAU7/C,KAAK6/C,MAAMwvN,eACxBrvQ,KAAK6/C,MAAMwvN,eADoC,IAU3D,CACCr7Q,IAAK,gBACLN,MAAO,SAAuBisO,GAC1B,IAAI92L,EAAM7oC,KAAK3K,MAAMi6Q,KAAKl2Q,QAAQumO,IACrB,IAAT92L,EACA7oC,KAAKu/C,SAAS,CAAE8vN,eAAgBxmO,IAEhCt0C,QAAQ3C,MAAM,sBAAwB+tO,EAAIznO,MAAQ,cAG3D,CACClE,IAAK,kBACLN,MAAO,SAAyBisO,GAC5B,IAAI5hL,EAAS/9C,KAET8rD,EAAmB55B,EAAQr9B,QAAQ2J,aAAa,6BAEhD+kD,EAAU,0BAEJvjD,KAAK3K,MAAMi6Q,KAAKl2Q,QAAQumO,KACtB3/N,KAAKuvQ,uBAAsBhsN,GAAW,iCAElD,IAAIisN,EAAU,KACV7vC,EAAI1rB,OACJu7D,EAAUt4O,EAAM9lC,cAAc,OAAQ,CAAEwJ,UAAW,4BAA8B+kO,EAAI1rB,QAGzF,IAII/7M,GAAQ,EAAI0mD,EAAiB1oD,IAAIypO,EAAIznO,OACzC,OAAOg/B,EAAM9lC,cACT06D,EACA,CAAElxD,UAAW2oD,EAASvvD,IAAK,aAAe2rO,EAAIznO,MAAOurD,QAPpC,WACjB,OAAO1F,EAAO0xN,cAAc9vC,KAO5B6vC,EACAt4O,EAAM9lC,cACF,OACA,CAAEwJ,UAAW,+BACb1C,MAIb,CACClE,IAAK,kBACLN,MAAO,SAAyBisO,GAC5B,OAAOzoM,EAAM9lC,cACT,MACA,CAAEwJ,UAAW,yBAA0B5G,IAAK,eAAiB2rO,EAAIznO,OACjEg/B,EAAM9lC,cACF,MACA,CAAEwJ,UAAW,iCACb+kO,EAAI7iO,SAIjB,CACC9I,IAAK,SACLN,MAAO,WACH,IAAI0/D,EAASpzD,KAET0vQ,EAAS1vQ,KAAK3K,MAAMi6Q,KAAKp2Q,KAAI,SAAUymO,GACvC,OAAOvsK,EAAOu8M,gBAAgBhwC,MAE9B9wE,EAAQ7uJ,KAAK4vQ,gBAAgB5vQ,KAAK3K,MAAMi6Q,KAAKtvQ,KAAKuvQ,uBAEtD,OAAOr4O,EAAM9lC,cACT,MACA,CAAEwJ,UAAW,iBACbs8B,EAAM9lC,cACF,MACA,CAAEwJ,UAAW,2BACb80Q,GAEJ7gH,OAILmgH,EAzG2B,CA0GpC93O,EAAMG,YAEG0nB,UAAY,CAEnBuwN,KAAM9wN,EAAY3pD,QAAQ2xQ,QAAQhoN,EAAY3pD,QAAQ43J,WAAWwiH,IAAMhwN,a,6BC7L3EtvD,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEI6pD,EAAmB3nD,EAFD,EAAQ,IAM1Bg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxB4nD,EAA8B5nD,EAFA,EAAQ,IAMtC8nD,EAAa9nD,EAFA,EAAQ,IAMrBgE,EAAUhE,EAFD,EAAQ,IAMjB4oD,EAAc5oD,EAFD,EAAQ,IAIrBi6Q,EAAa,EAAQ,KAEzB,SAASj6Q,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvF,IAAI66Q,EAAkB,SAAUnwI,GAG5B,SAASmwI,EAAgBz6Q,EAAOoO,IAC5B,EAAImuB,EAAiB/8B,SAASmL,KAAM8vQ,GAEpC,IAAIzwN,GAAQ,EAAI7B,EAA4B3oD,SAASmL,MAAO8vQ,EAAgB5wQ,YAAa,EAAIq+C,EAAiB1oD,SAASi7Q,IAAkBhgR,KAAKkQ,KAAM3K,EAAOoO,IAG3J,OADA47C,EAAMnsB,KAAOmsB,EAAMnsB,KAAKj/B,KAAKorD,GACtBA,EAyCX,OAjDA,EAAI3B,EAAW7oD,SAASi7Q,EAAiBnwI,IAezC,EAAI9tG,EAAch9B,SAASi7Q,EAAiB,CAAC,CACzC97Q,IAAK,qBACLN,MAAO,WACCsM,KAAK+vQ,MAAK,EAAIF,EAAWG,gBAAgBhwQ,KAAK+vQ,OAMvD,CACC/7Q,IAAK,OACLN,MAAO,SAAcogK,GACjB9zJ,KAAK+vQ,IAAMj8G,EACX9zJ,KAAKy8N,uBAEV,CACCzoO,IAAK,SACLN,MAAO,WACH,IAAIk9G,EAAS5wG,KAAK3K,MACduF,EAAYg2G,EAAOh2G,UACnBqxD,EAAW2kD,EAAO3kD,SAGtB,OAAOryD,EAAQ/E,QAAQzD,cACnB,MACA,CAAEwJ,UAAWA,EAAY,sBAAuB++B,IAAK35B,KAAKkzB,MAC1Dt5B,EAAQ/E,QAAQzD,cACZ,OACA,KACA66D,QAKT6jN,EAlDW,CAmDpBl2Q,EAAQ/E,QAAQwiC,WAgBlBy4O,EAAgB/wN,UAAY,CACxBnkD,UAAW4jD,EAAY3pD,QAAQytC,OAC/B2pB,SAAUzN,EAAY3pD,QAAQue,MAElC7iB,EAAQsE,QAAUi7Q,EAClBt/Q,EAAOD,QAAUA,EAAiB,S,6BC5GlCZ,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAEXnD,EAAQ06E,MAAQ16E,EAAQ0/Q,SAAW1/Q,EAAQ2/Q,QAAU3/Q,EAAQ4/Q,UAAOz9Q,EAEpE,IAEIunG,EAAWrkG,EAFD,EAAQ,KAMlBD,EAAgBC,EAFA,EAAQ,KAMxB2nD,EAAmB3nD,EAFD,EAAQ,IAM1Bg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxB4nD,EAA8B5nD,EAFA,EAAQ,IAMtC8nD,EAAa9nD,EAFA,EAAQ,IAIzBrF,EAAQ6/Q,wBAyGR,SAAiC/iQ,GAC7B,IAAI63G,EAAQ73G,EAAO63G,MAEnB,OAAKA,EAEMA,IAAUj6C,EAAMklM,KAAKE,aAAanrJ,MAClCirJ,EACA,IAAI52K,IAAI2rB,GAAOh1B,SAASxE,SAAS,eAGjCwkL,EAEAD,EARA,MA3Gf,IAEIr2Q,EAAUhE,EAFD,EAAQ,IAMjB4oD,EAAc5oD,EAFD,EAAQ,IAIrBgpD,EAAmB,EAAQ,GAI3B1sB,EAAUt8B,EAFD,EAAQ,IAMjBouG,EAAepuG,EAFD,EAAQ,KAItB06Q,EAAsB,EAAQ,KAE9BttJ,EAAa,EAAQ,KAEzB,SAASptH,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvF,IAgBIk7Q,EAAO5/Q,EAAQ4/Q,KAAO,OACtBD,EAAU3/Q,EAAQ2/Q,QAAU,UAC5BD,EAAW1/Q,EAAQ0/Q,SAAW,WAE9BhlM,EAAQ16E,EAAQ06E,MAAQ,CACxBklM,KAAM,CACFvvN,GAAIuvN,EACJj4Q,MAAO,WACH,OAAO,EAAI0mD,EAAiB1oD,IAAI,SAEpCq6Q,KAAM,WACF,OAAO32Q,EAAQ/E,QAAQzD,cAAc,MAAO,CAAEK,IAAK,EAAQ,SAE/DkrG,YAAa,WACT,OAAO,EAAI/9C,EAAiB1oD,IAAI,wDAEpCm6Q,cAAc,EAAIrtJ,EAAWiC,UAAUqrJ,EAAoBvtJ,sBAAuB,CAC9EmC,MAAO,qBACPC,OAAQ,aACRC,mBAAmB,EACnBC,MAAO,uBAGf6qJ,QAAS,CACLtvN,GAAIsvN,EACJh4Q,MAAO,WACH,OAAO,EAAI0mD,EAAiB1oD,IAAI,YAEpCq6Q,KAAM,WACF,OAAO32Q,EAAQ/E,QAAQzD,cAAc,MAAO,CAAEK,IAAK,EAAQ,SAE/DkrG,YAAa,WACT,OAAO,EAAI/9C,EAAiB1oD,IAAI,sDAAuD,GAAI,CACvFmJ,EAAG,SAAWkkH,GACV,OAAO3pH,EAAQ/E,QAAQzD,cACnB,IACA,CAAEk/F,KApDR,8FAoD2Bh+F,OAAQ,SAAU2gG,IAAK,YAC5CswB,OAKhB7tF,kBAAmB,qBAEvBu6O,SAAU,CACNrvN,GAAIqvN,EACJ/3Q,MAAO,WACH,OAAO,EAAI0mD,EAAiB1oD,IAAI,aAEpCq6Q,KAAM,WACF,OAAO32Q,EAAQ/E,QAAQzD,cACnB,MACA,KACAwI,EAAQ/E,QAAQzD,cAAc,MAAO,CAAEK,IAAK,EAAQ,SACpD,EAAImtD,EAAiB1oD,IAAI,WAGjCymG,YAAa,WACT,OAAO,EAAI/9C,EAAiB1oD,IAAI,uDAqB5C,IAAIs6Q,EAAqB,SAAUzgK,GAG/B,SAASygK,EAAmBn7Q,IACxB,EAAIu8B,EAAiB/8B,SAASmL,KAAMwwQ,GAEpC,IAAInxN,GAAQ,EAAI7B,EAA4B3oD,SAASmL,MAAOwwQ,EAAmBtxQ,YAAa,EAAIq+C,EAAiB1oD,SAAS27Q,IAAqB1gR,KAAKkQ,KAAM3K,IAE1JgqD,EAAMoE,QAAU,SAAU/yD,GACtBA,EAAE+7D,kBACF,IAAIr6D,EAAO1B,EAAE+/Q,cAAcC,QAAQ9vN,GACnCvB,EAAMsxN,mBAAmBv+Q,IAG7B,IAAIw+Q,EAAWv7Q,EAAMu7Q,SAMrB,OAHAvxN,EAAMQ,MAAQ,CACV+wN,SAAUA,GAEPvxN,EAoFX,OAvGA,EAAI3B,EAAW7oD,SAAS27Q,EAAoBzgK,IAsB5C,EAAIl+E,EAAch9B,SAAS27Q,EAAoB,CAAC,CAC5Cx8Q,IAAK,qBACLN,MAAO,SAA4BtB,GAC3B4N,KAAK6/C,MAAM+wN,WAAax+Q,IAG5B4N,KAAKu/C,SAAS,CACVqxN,SAAUx+Q,IAEV4N,KAAK3K,MAAMi0D,UACXtpD,KAAK3K,MAAMi0D,SAASl3D,MAG7B,CACC4B,IAAK,SACLN,MAAO,WACH,IAAIo4D,EAAmB55B,EAAQr9B,QAAQ2J,aAAa,6BAEhDqyQ,EAAc,GACdxzQ,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiB7K,EAErB,IACI,IAAK,IAA0E8K,EAAtEC,GAAY,EAAI9H,EAAcd,UAAS,EAAIolG,EAASplG,SAASo2E,MAAkB5tE,GAA6BG,EAAQC,EAAUC,QAAQC,MAAON,GAA4B,EAAM,CACpL,IAAIjL,EAAOoL,EAAM9J,MACbktD,EAAKxuD,EAAKwuD,GACV1oD,EAAQ9F,EAAK8F,MACbq4Q,EAAOn+Q,EAAKm+Q,KACZ5zK,EAAcvqG,EAAKuqG,YAEnBp5C,GAAU,EAAIygD,EAAanvG,SAAS,6BAA8B,8BAAgC+rD,EAAI,CACtG,oCAAuCA,IAAO5gD,KAAK6/C,MAAM+wN,WAG7DC,EAAY7gR,KAAK4J,EAAQ/E,QAAQzD,cAC7B,MACA,CAAEwJ,UAAW2oD,EAASvvD,IAAK4sD,GAC3BhnD,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,+BACb1C,KAEJ0B,EAAQ/E,QAAQzD,cACZ06D,EACA,CAAErI,QAASzjD,KAAKyjD,QAAS,UAAW7C,GACpChnD,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,8BACb21Q,KAEJ32Q,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,qCACb+hG,SAKlB,MAAOroG,GACLgJ,GAAoB,EACpBC,EAAiBjJ,EACnB,QACE,KACS+I,GAA6BI,EAAUI,QACxCJ,EAAUI,SAEhB,QACE,GAAIP,EACA,MAAMC,GAKlB,OAAO3D,EAAQ/E,QAAQzD,cACnB,MACA,CAAEwJ,UAAW,yBACbi2Q,OAILL,EAxGc,CAyGvB52Q,EAAQ/E,QAAQo9G,eAElBu+J,EAAmBzxN,UAAY,CAE3B6xN,SAAUpyN,EAAY3pD,QAAQytC,OAE9BgnB,SAAU9K,EAAY3pD,QAAQm4D,KAAK/N,YAEvC1uD,EAAQsE,QAAU27Q,G,cC7QlBhgR,EAAOD,QAAU,uC,6BCEjBZ,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAEXnD,EAAQ6mO,4BAA8BA,EACtC7mO,EAAQinO,yBAgCR,WACI,IAAI76N,EAAMy6N,IAEVniI,EAAkBpgG,QAAQvB,MAAM+iH,eAAe,oBAAqB,CAChE2N,SAAUrnH,KAlClB,IAEIioD,EAAchvD,EAFD,EAAQ,KAMrBq/F,EAAoBr/F,EAFD,EAAQ,KAI/B,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAkBvF,SAASmiO,IACL,OAAOxyK,EAAY/vD,QAAQvB,MAA+B,wBAAS,Q,gBCnCvE;4HAYA,SAAUmB,GACT,aAMA,IAAIA,EAAOq8Q,OAAX,CAKA,IAAIC,EAAI,SAASt0I,EAAUh5H,GAC1B,OAAO,IAAIstQ,EAAE9vQ,GAAGlB,KAAK08H,EAAUh5H,IAQhCstQ,EAAEC,SAAW,SAAS/7Q,GAErB,OAAOA,GAAOA,IAAQA,EAAIR,QAI3Bs8Q,EAAE3+Q,KAAO,SAAS6C,GACjB,OAAKA,EAIiB,iBAARA,GAAmC,mBAARA,EACvCg8Q,EAAWzrQ,EAAS1V,KAAKmF,KAAS,gBAC3BA,EALDA,EAAM,IASf87Q,EAAEn6Q,QAAUD,MAAMC,SAAW,SAAS3B,GACrC,MAAuB,UAAhB87Q,EAAE3+Q,KAAK6C,IAwBf87Q,EAAE79E,cAAgB,SAASj+L,GAC1B,IAAIjB,EAEJ,IAAKiB,GAAuB,WAAhB87Q,EAAE3+Q,KAAK6C,IAAqBA,EAAIiuC,UAAY6tO,EAAEC,SAAS/7Q,GAClE,OAAO,EAGR,IACC,GAAIA,EAAIgK,cACLusD,EAAO17D,KAAKmF,EAAK,iBACjBu2D,EAAO17D,KAAKmF,EAAIgK,YAAYrP,UAAW,iBACzC,OAAO,EAEP,MAAOc,GACR,OAAO,EAGR,IAAKsD,KAAOiB,GAGZ,YAAevC,IAARsB,GAAqBw3D,EAAO17D,KAAKmF,EAAKjB,IAI9C+8Q,EAAEx6P,KAAO,SAASthB,EAAK2oB,EAAU5X,GAChC,IACExW,EAAI,EACJE,EAASuF,EAAIvF,OACbkH,EAAUs6Q,EAAYj8Q,GAExB,GAAI+Q,GACH,GAAIpP,EACH,KAAOpH,EAAIE,IAGI,IAFNkuB,EAAS1hB,MAAMjH,EAAIzF,GAAIwW,GADbxW,UAQnB,IAAKA,KAAKyF,EACT,GAAKA,EAAIpF,eAAeL,KAKV,IAFNouB,EAAS1hB,MAAMjH,EAAIzF,GAAIwW,GAG9B,WAMH,GAAIpP,EACH,KAAOpH,EAAIE,IAGI,IAFNkuB,EAAS9tB,KAAKmF,EAAIzF,GAAIA,EAAGyF,EAAIzF,IADnBA,UAQnB,IAAKA,KAAKyF,EACT,GAAKA,EAAIpF,eAAeL,KAKV,IAFNouB,EAAS9tB,KAAKmF,EAAIzF,GAAIA,EAAGyF,EAAIzF,IAGpC,MAMJ,OAAOyF,GAIR87Q,EAAE5hR,KAAO,SAASikB,EAAMpf,EAAKN,GAE5B,QAAchB,IAAVgB,EAAqB,CACxB,IAAIkpH,EAAQxpG,EAAK29P,EAAEI,SACjBl9O,EAAQ2oF,GAAS79E,EAAM69E,GAEzB,QAAYlqH,IAARsB,EACH,OAAOigC,EACD,GAAIA,GACNjgC,KAAOigC,EACV,OAAOA,EAAMjgC,QAIT,QAAYtB,IAARsB,EAAmB,CAC7B,IAAIo9Q,EAAQh+P,EAAK29P,EAAEI,WAAa/9P,EAAK29P,EAAEI,WAAaJ,EAAEM,MAKtD,OAHAtyO,EAAMqyO,GAASryO,EAAMqyO,IAAU,GAC/BryO,EAAMqyO,GAAOp9Q,GAAON,EAEbA,IAKTq9Q,EAAEO,WAAa,SAASl+P,EAAMrK,GAC7B,IAAI63C,EAAKxtC,EAAK29P,EAAEI,SACdl9O,EAAQ2sB,GAAM7hB,EAAM6hB,GAElB3sB,IAEElrB,EAGJgoQ,EAAEx6P,KAAKxN,GAAM,SAASzF,EAAGtP,UACjBigC,EAAMjgC,aAHP+qC,EAAM6hB,KAUhBmwN,EAAE3mL,OAAS,WACV,IAAI34F,EAAK8/Q,EAAanjL,EAAM57F,EAAM0H,EAAS43I,EACzCx/I,EAASqQ,UAAU,IAAM,GACzBnT,EAAI,EACJE,EAASiT,UAAUjT,OACnB61F,GAAO,EAkBT,IAhBsB,kBAAXjzF,IACVizF,EAAOjzF,EAEPA,EAASqQ,UAAUnT,IAAM,GACzBA,KAGqB,iBAAX8C,GAA0C,aAAnBy+Q,EAAE3+Q,KAAKE,KACxCA,EAAS,IAGN9C,IAAME,IACT4C,EAAS0N,KACTxQ,KAGMA,EAAIE,EAAQF,IAClB,GAAK0K,EAAUyI,UAAUnT,GACxB,IAAKgD,KAAQ0H,EACPA,EAAQrK,eAAe2C,KAG5Bf,EAAMa,EAAOE,GAGTF,KAFJ87F,EAAOl0F,EAAQ1H,MAMX+yF,GAAQ6I,IAAS2iL,EAAE79E,cAAc9kG,KAAUmjL,EAAcR,EAAEn6Q,QAAQw3F,MAClEmjL,GACHA,GAAc,EACdz/H,EAAQrgJ,GAAOs/Q,EAAEn6Q,QAAQnF,GAAOA,EAAM,IAGtCqgJ,EAAQrgJ,GAAOs/Q,EAAE79E,cAAczhM,GAAOA,EAAM,GAG7Ca,EAAOE,GAAQu+Q,EAAE3mL,OAAO7E,EAAMusD,EAAO1jD,SAElB17F,IAAT07F,IACV97F,EAAOE,GAAQ47F,KAMnB,OAAO97F,GAIRy+Q,EAAEtvQ,MAAQ,SAAS8gD,EAAMnwD,EAAMjD,GAkC9B,GAAKozD,EAAL,CAIAnwD,GAAQA,GAAQ,MAAQ,QAExB,IAvCoB2nC,EAAK2vD,EACpB9pF,EAsCD4xQ,EAAIT,EAAE5hR,KAAKozD,EAAMnwD,GAErB,OAAKjD,IAIAqiR,GAAKT,EAAEn6Q,QAAQzH,GACnBqiR,EAAIT,EAAE5hR,KAAKozD,EAAMnwD,GA7CbwN,EAAM8pF,GAAW,IADF3vD,EA8Ce5qC,KA1C7B+hR,EAAYvhR,OAAOoqC,IAEtB,SAAUoe,EAAO88F,GAKhB,IAJA,IAAI/6H,GAAO+6H,EAAOvlJ,OAChB6Z,EAAI,EACJ/Z,EAAI2oD,EAAMzoD,OAEL6Z,EAAI2Q,GACVi+B,EAAM3oD,KAAOylJ,EAAO1rI,KAGrB,GAAI2Q,GAAQA,EACX,UAAqBxnB,IAAduiJ,EAAO1rI,IACb4uC,EAAM3oD,KAAOylJ,EAAO1rI,KAItB4uC,EAAMzoD,OAASF,EAfhB,CAkBGoQ,EAAoB,iBAARm6B,EAAmB,CAACA,GAAOA,GAE1C,GAAG/pC,KAAKF,KAAK8P,EAAKm6B,IAIbn6B,IAkBP4xQ,EAAExhR,KAAKb,GAGDqiR,GATCA,GAAK,KAadT,EAAEU,QAAU,SAASC,EAAOt/Q,GAE3B2+Q,EAAEx6P,KAAKm7P,EAAMxuO,SAAW,CAACwuO,GAASA,GAAO,SAASliR,EAAG+yD,GACpDnwD,EAAOA,GAAQ,KAEf,IAAIqP,EAAQsvQ,EAAEtvQ,MAAM8gD,EAAMnwD,GACxB6O,EAAKQ,EAAMtR,QAEF,eAAP8Q,IACHA,EAAKQ,EAAMtR,SAGR8Q,IACU,OAAT7O,GACHqP,EAAMuqC,QAAQ,cAGf/qC,EAAGnR,KAAKyyD,GAAM,WACbwuN,EAAEU,QAAQlvN,EAAMnwD,WAWpB2+Q,EAAE9vQ,GAAK8vQ,EAAEnhR,UAAY,CACpBmQ,KAAM,SAAS08H,GAEd,GAAIA,EAASv5F,SAGZ,OAFAljC,KAAK,GAAKy8H,EAEHz8H,KAEP,MAAM,IAAInO,MAAM,oBAGlBmoC,OAAQ,WAEP,IAAI23O,EAAM3xQ,KAAK,GAAGigI,sBAAwBjgI,KAAK,GAAGigI,wBAA0B,CAACO,IAAK,EAAGxzF,KAAM,GAE3F,MAAO,CACNwzF,IAAKmxI,EAAInxI,KAAO/rI,EAAOwyI,aAAe91I,SAAS+4J,WAAa,IAAM/4J,SAASygR,WAAa,GACxF5kO,KAAM2kO,EAAI3kO,MAAQv4C,EAAOyyI,aAAe/1I,SAAS0gR,YAAc,IAAM1gR,SAAS2gR,YAAc,KAG9F/rM,SAAU,WAaT,IAAIxjB,EAAOviD,KAAK,GACd+xQ,EAZF,SAAwBxvN,GAGvB,IAFA,IAAIwvN,EAAexvN,EAAKwvN,aAEjBA,GAAyD,SAAxCA,EAAavtK,SAAShoG,eAA4Bu1Q,EAAa3sK,OAAuD,WAA9C2sK,EAAa3sK,MAAMr/B,SAASvpE,eAC3Hu1Q,EAAeA,EAAaA,aAG7B,OAAOA,GAAgB5gR,SAKP6gR,CAAezvN,GAC9BvoB,EAASh6B,KAAKg6B,SACdi4O,EAAe,mBAAmBtgQ,KAAKogQ,EAAavtK,UAAY,CAACg8B,IAAK,EAAGxzF,KAAM,GAAK+jO,EAAEgB,GAAc/3O,SAUtG,OARAA,EAAOwmG,KAAOygD,WAAW1+H,EAAK6iD,MAAM8sK,YAAc,EAClDl4O,EAAOgT,MAAQi0I,WAAW1+H,EAAK6iD,MAAM+sK,aAAe,EAEhDJ,EAAa3sK,QAChB6sK,EAAazxI,KAAOygD,WAAW8wF,EAAa3sK,MAAMgtK,iBAAmB,EACrEH,EAAajlO,MAAQi0I,WAAW8wF,EAAa3sK,MAAMitK,kBAAoB,GAGjE,CACN7xI,IAAKxmG,EAAOwmG,IAAMyxI,EAAazxI,IAC/BxzF,KAAMhT,EAAOgT,KAAOilO,EAAajlO,QAUpC,IAAIjO,EAAQ,GACZgyO,EAAEI,QAAU,YAAc,IAAIvqN,MAAOC,UACrCkqN,EAAEM,KAAO,EAQT,IALA,IAAIJ,EAAa,GACfzlN,EAASylN,EAAWphR,eACpB2V,EAAWyrQ,EAAWzrQ,SAEpBg8K,EAAQ,gEAAgE3oL,MAAM,KACzErJ,EAAI,EAAGA,EAAIgyL,EAAM9xL,OAAQF,IACjCyhR,EAAW,WAAazvF,EAAMhyL,GAAK,KAAOgyL,EAAMhyL,GAAGgN,cAIpDu0Q,EAAE9vQ,GAAGlB,KAAKnQ,UAAYmhR,EAAE9vQ,GAGxBxM,EAAO69Q,SAAW,CAACC,UAAWxB,GAxW9B,SAASG,EAAYj8Q,GACpB,IAAIvF,EAASuF,EAAIvF,OACf0C,EAAO2+Q,EAAE3+Q,KAAK6C,GAEhB,MAAa,aAAT7C,IAAuB2+Q,EAAEC,SAAS/7Q,OAIjB,IAAjBA,EAAIiuC,WAAkBxzC,KAIV,UAAT0C,GAA+B,IAAX1C,GAAkC,iBAAXA,GAAuBA,EAAS,GAAMA,EAAS,KAAMuF,KAvDzG,CAoZGR,QAMF,SAAS0iC,GACT,aAE4D,iBAAnB3mC,EAAOD,QAC/CC,EAAOD,QAAU4mC,SAGH,0BAAd,KAAc,kCAPhB,EAYE,WACD,aACA,OAAO,SAASjpB,EAAQzZ,EAAQtD,EAAUuB,GAsBzC,IAsBK8/Q,EAtBDC,EAAK,WACR,GAAIthR,EAASuhR,aACZ,OAAOvhR,EAASuhR,aAEhB,IAAK,IAAIljR,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC3B,IAAIm6B,EAAMx4B,EAASC,cAAc,OAIjC,GAFAu4B,EAAIo3E,UAAY,iBAAgBvxG,EAAI,iCAEhCm6B,EAAI2xE,qBAAqB,QAAQ5rG,OAGpC,OAFAi6B,EAAM,KAECn6B,EAKV,OAAOkD,EAjBC,GAqBLigR,GACCH,EAAW,EAER/9Q,EAAOm+Q,6BAA+Bn+Q,EAAOo+Q,0BAA4B,SAASj1P,GACxF,IACEk1P,EADEC,GAAc,IAAKnsN,MAAQC,UAQ/B,OAHAisN,EAAYjtQ,KAAKC,IAAI,EAAG,IAAMitQ,EAAcP,IAC5CA,EAAWO,EAAcD,EAElBngR,YAAW,WACjBirB,EAASm1P,EAAcD,KACrBA,KAIDrG,EAAc,WACjB,IAAIuG,EAAOv+Q,EAAOg4Q,aAAe,GAEjC,GAAwB,mBAAbuG,EAAKttJ,IAAoB,CACnC,IAAIutJ,EAAYD,EAAKE,QAAUF,EAAKE,OAAOC,gBAAkBH,EAAKE,OAAOC,iBAAkB,IAAKvsN,MAAQC,UAExGmsN,EAAKttJ,IAAM,WACV,OAAO,IAAK9+D,MAAQC,UAAYosN,GAGlC,OAAOD,EAVU,GAuClB,IAAII,EAAS,WACZ,IAAIz+Q,EAAQgC,MAAM/G,UAAU+E,MAE5B,IAGC,OADAA,EAAM7E,KAAKqB,EAASs5B,iBACb91B,EACN,MAAOjE,GAMR,OAAO,SAASiqC,EAAOC,GACtB,IAAI1gB,EAAMla,KAAKtQ,OAUf,GARqB,iBAAVirC,IACVA,EAAQ,GAGU,iBAARC,IACVA,EAAM1gB,GAGHla,KAAKrL,MACR,OAAOA,EAAM7E,KAAKkQ,KAAM26B,EAAOC,GAGhC,IAAIprC,EACF4rQ,EAAS,GAETlmO,EAASyF,GAAS,EAAKA,EAAQ90B,KAAKC,IAAI,EAAGoU,EAAMygB,GAIjD7T,GAFO8T,EAAM,EAAI1gB,EAAM0gB,EAAM/0B,KAAKo1B,IAAIL,EAAK1gB,IAE7Bgb,EAEhB,GAAIpO,EAAO,EAEV,GADAs0O,EAAS,IAAIzkQ,MAAMmwB,GACf9mB,KAAK8R,OACR,IAAKtiB,EAAI,EAAGA,EAAIs3B,EAAMt3B,IACrB4rQ,EAAO5rQ,GAAKwQ,KAAK8R,OAAOojB,EAAQ1lC,QAGjC,IAAKA,EAAI,EAAGA,EAAIs3B,EAAMt3B,IACrB4rQ,EAAO5rQ,GAAKwQ,KAAKk1B,EAAQ1lC,GAI5B,OAAO4rQ,IAjDG,GAuDTiY,EAAW,WACd,OAAI18Q,MAAM/G,UAAU4xC,SACZ,SAASzH,EAAKlb,GACpB,OAAOkb,EAAIyH,SAAS3iB,IAGlBloB,MAAM/G,UAAUwJ,QACZ,SAAS2gC,EAAKlb,GACpB,OAAOkb,EAAI3gC,QAAQylB,IAAQ,GAGtB,SAASkb,EAAKlb,GACpB,IAAK,IAAIrvB,EAAI,EAAGA,EAAIuqC,EAAIrqC,OAAQF,IAC/B,GAAIuqC,EAAIvqC,KAAOqvB,EACd,OAAO,EAGT,OAAO,IAIT,SAASy0P,EAAiBjkN,GASzB,OAPIkkN,EAAKC,UAAUnkN,GAClBA,EAAW+jN,EAAOtjR,KAAKu/D,GAEbkkN,EAAKnxQ,OAAOitD,KACtBA,EAAW,CAACA,IAGNA,EAGR,IA6CI0hN,EA7CAwC,EAAO,CACVtoL,SAAU,SAASnwF,GAClB,MAA4B,iBAAbA,GAEhB61F,SAAU,SAAS71F,GAClB,MAA4B,iBAAbA,GAEhBlE,QAASD,MAAMC,SAAW,SAASkE,GAClC,MAAoD,mBAA7CnL,OAAOC,UAAU4V,SAAS1V,KAAKgL,IAEvC+uF,WAAY,SAAS/uF,GACpB,MAAoD,sBAA7CnL,OAAOC,UAAU4V,SAAS1V,KAAKgL,IAEvCsH,OAAQ,SAAStH,GAChB,OAAOA,GAAYA,EAASooC,UAI7BswO,UAAW,SAAS14Q,GACnB,OAAOA,GACFA,IAAarG,GACb8+Q,EAAKtoL,SAASnwF,EAASpL,UACtB6jR,EAAK5iL,SAAS71F,KACdy4Q,EAAK1pL,WAAW/uF,KAChBy4Q,EAAKnxQ,OAAOtH,KACQ,IAApBA,EAASpL,QAAgB6jR,EAAKnxQ,OAAOtH,EAAS,MAErD24Q,MAAO,SAAS34Q,GACf,OAAOrG,EAAOi/Q,YAAe54Q,aAAoBrG,EAAOi/Q,YAEzDC,cAAe,SAAS74Q,GACvB,IAAK,IAAItI,KAAQsI,EAChB,GAAIA,EAASjL,eAAe2C,GAC3B,OAAO,EAIT,OAAO,IASPohR,GAAW,EASb,GAPI1lQ,EAAOjN,IAAMiN,EAAOjN,GAAG4yQ,QAC1B9C,EAAI7iQ,EACJ0lQ,GAAW,GAEX7C,EAAIt8Q,EAAO69Q,SAASC,UAGjBE,GAAM,IAAMmB,EACf,MAAM,IAAI/hR,MAAM,wEACV,KAAI4gR,GAAM,GAAV,CAYP,IAAIqB,EAAmB,IACrBC,EAAiB,QAMfzB,EAAW,CAEdzQ,MAAO,CAENmS,SAAU,iEAAiEriQ,KAAKld,EAAO2D,UAAUokG,WAEjGy3K,UAAW,WAAWtiQ,KAAKld,EAAO2D,UAAUokG,WAC5C03K,cAAe,uBAAuBviQ,KAAKld,EAAO2D,UAAUokG,WAC5D23K,SAAU1/Q,EAAO48B,OACjB+iP,UAAW,WAAWziQ,KAAKld,EAAO2D,UAAUokG,WAE5C63K,cAAeljR,EAASC,cAAc,OAEtCkjR,cAAe,GAEfC,aAAc,KAEdC,mBAAoB,KACpBC,kBAAmB,KAEnBC,WAAW,EAEX1mJ,MAAO,GACP2mJ,gBAAiB,CAChBx6Q,MAAO,IAITy6Q,IAAK,GAELrC,UAAWxB,EAEX8D,UAAW,GACXC,QAAS,GAEThkR,QAAS2D,EAAO3D,QAEhBu7H,SAAU,CACT5qH,MAAO,GACP2pH,SAAU0oJ,EACViB,OAAQhB,EACRp5O,MAAOjoC,EACPokK,SAAUpkK,EACVsiR,SAAUtiR,EACVuoH,QAASvoH,EACTwzN,WAAYxzN,EACZuiR,MAAM,EACNjoP,OAAO,EACPkoP,UAAU,EAEVC,cAAc,EAEdC,oBAAoB,GAGrBr1Q,KAAM,SAASisD,GACd+kN,EAAE5hR,KAAK68D,EAAS,WAAY,CAE3BynN,MAAOF,EAAKE,MAAMznN,GAGlBqpN,aAAa,EAEbp5C,cAAe,KAGfq5C,gBAAiB,KAIjBC,uBAAwB,GAExBC,eAAgB,MAIlBC,KAAM,KAENC,MAAM,EACN1xP,QAAS,CAAC2xP,MAAO,EAAGC,MAAO,EAAGzmK,MAAO,GAErChsG,OAAO,EAEP64O,WAAW,EAEX65B,SAAU,SAASC,GAClB,IAAIC,GAAc,IAAKnvN,MAAQC,UAE/BkqN,EAAEx6P,KAAK+7P,EAASzQ,MAAM7zI,OAAO,SAASx+H,EAAGwmR,GAExC,GAAIA,EAAY,CAGf,GAAIF,IAAcpjR,IAAesjR,EAAW,GAAGv0Q,QAAUq0Q,IAAuC,IAAxBE,EAAW,GAAGv0Q,OACrF,OAAO,EAIRu0Q,EAAW,GAAK,CACfC,QAAQ,OAMXlF,EAAEx6P,KAAK+7P,EAASzQ,MAAM8S,iBAAiB,SAASt6Q,EAAG2xD,GAC7CA,GAGLkqN,EAAoBlqN,EAAS+pN,OAI/BI,UAAW,SAASL,GACnB,IAAIC,GAAc,IAAKnvN,MAAQC,UAE/BkqN,EAAEx6P,KAAK+7P,EAASzQ,MAAM7zI,OAAO,SAASx+H,EAAGwmR,GAExC,GAAIA,EAAY,CAGf,GAAIF,IAAcpjR,IAAesjR,EAAW,GAAGv0Q,QAAUq0Q,IAAuC,IAAxBE,EAAW,GAAGv0Q,OACrF,OAAO,EAIJu0Q,EAAW,KACdA,EAAW,GAAGC,QAAS,OAK1BlF,EAAEx6P,KAAK+7P,EAASzQ,MAAM8S,iBAAiB,SAASt6Q,EAAG2xD,GAC7CA,GAGLoqN,EAAqBpqN,EAAS+pN,QAM7BthR,EAAOwyI,cAAgBv0I,GAC1B4/Q,EAASzQ,MAAM0S,aAAe9/Q,EAC9B69Q,EAASzQ,MAAM2S,mBAAqB,cACpClC,EAASzQ,MAAM4S,kBAAoB,gBAEnCnC,EAASzQ,MAAM0S,aAAepjR,EAASs5B,iBAAmBt5B,EAAS2L,KAAKy+F,YAAcpqG,EAAS2L,KAC/Fw1Q,EAASzQ,MAAM2S,mBAAqB,aACpClC,EAASzQ,MAAM4S,kBAAoB,aAwMpC,IAAI4B,EAAqB,WACxB,SAASC,EAA2Bz2N,GACnC,OAASA,EAAM02N,QAAU12N,EAAMv8B,EAAMu8B,EAAM22N,SAAW32N,EAAMx/B,EAG7D,SAASo2P,EAAkCC,EAAcC,EAAIC,GAC5D,IAAI/2N,EAAQ,CACXv8B,EAAGozP,EAAapzP,EAAIszP,EAAWC,GAAKF,EACpCt2P,EAAGq2P,EAAar2P,EAAIu2P,EAAWE,GAAKH,EACpCJ,QAASG,EAAaH,QACtBC,SAAUE,EAAaF,UAGxB,MAAO,CAACK,GAAIh3N,EAAMx/B,EAAGy2P,GAAIR,EAA2Bz2N,IAGrD,SAASk3N,EAAqBl3N,EAAO82N,GACpC,IAAIt3Q,EAAI,CACPw3Q,GAAIh3N,EAAMx/B,EACVy2P,GAAIR,EAA2Bz2N,IAE9B37B,EAAIuyP,EAAkC52N,EAAY,GAAL82N,EAAUt3Q,GACvDrM,EAAIyjR,EAAkC52N,EAAY,GAAL82N,EAAUzyP,GACvDjxB,EAAIwjR,EAAkC52N,EAAO82N,EAAI3jR,GACjDgkR,EAAO,EAAM,GAAO33Q,EAAEw3Q,GAAK,GAAO3yP,EAAE2yP,GAAK7jR,EAAE6jR,IAAM5jR,EAAE4jR,IACnDI,EAAO,EAAM,GAAO53Q,EAAEy3Q,GAAK,GAAO5yP,EAAE4yP,GAAK9jR,EAAE8jR,IAAM7jR,EAAE6jR,IAKrD,OAHAj3N,EAAMv8B,EAAIu8B,EAAMv8B,EAAI0zP,EAAOL,EAC3B92N,EAAMx/B,EAAIw/B,EAAMx/B,EAAI42P,EAAON,EAEpB92N,EAGR,OAAO,SAASq3N,EAAiBX,EAASC,EAAUprJ,GAEnD,IAUE+rJ,EAAeR,EAAIS,EAVjBC,EAAY,CACf/zP,GAAI,EACJjD,EAAG,EACHk2P,QAAS,KACTC,SAAU,MAETl8M,EAAO,CAAC,GACRg9M,EAAc,EAwBhB,IAnBAf,EAAUt1F,WAAWs1F,IAAY,IACjCC,EAAWv1F,WAAWu1F,IAAa,GACnCprJ,EAAWA,GAAY,KAEvBisJ,EAAUd,QAAUA,EACpBc,EAAUb,SAAWA,EASpBG,GAPDQ,EAA6B,OAAb/rJ,IAKfksJ,EAAcJ,EAAiBX,EAASC,IAErBprJ,EAjBb,UAwBNgsJ,EAAaL,EAAqBK,GAAcC,EAAWV,GAE3Dr8M,EAAKtqE,KAAK,EAAIonR,EAAW9zP,GACzBg0P,GAAe,GAETzxQ,KAAKi7B,IAAIs2O,EAAW9zP,GA9Bb,MA8B+Bzd,KAAKi7B,IAAIs2O,EAAW/2P,GA9BnD,OAqCd,OAAQ82P,EAA8B,SAASI,GAC9C,OAAOj9M,EAAOi9M,GAAmBj9M,EAAK5qE,OAAS,GAAM,IAD9B4nR,GAhFF,GAuFxBhF,EAASwC,QAAU,CAClB0C,OAAQ,SAAS9lR,GAChB,OAAOA,GAER+lR,MAAO,SAAS/lR,GACf,MAAO,GAAMmU,KAAK6xQ,IAAIhmR,EAAImU,KAAK8xQ,IAAM,GAGtCC,OAAQ,SAASlmR,GAChB,OAAO,EAAKmU,KAAK6xQ,IAAQ,IAAJhmR,EAAUmU,KAAK8xQ,IAAM9xQ,KAAK42C,IAAS,GAAJ/qD,KAKtDq/Q,EAAEx6P,KACA,CACC,CAAC,OAAQ,CAAC,IAAM,GAAK,IAAM,IAC3B,CAAC,UAAW,CAAC,IAAM,EAAK,EAAM,IAC9B,CAAC,WAAY,CAAC,EAAM,EAAK,IAAM,IAC/B,CAAC,cAAe,CAAC,IAAM,EAAK,IAAM,IAClC,CAAC,aAAc,CAAC,IAAM,EAAG,KAAO,OAChC,CAAC,cAAe,CAAC,IAAM,KAAO,KAAO,IACrC,CAAC,gBAAiB,CAAC,KAAO,IAAM,IAAM,MACtC,CAAC,aAAc,CAAC,IAAM,KAAO,IAAM,MACnC,CAAC,cAAe,CAAC,IAAM,IAAM,IAAM,MACnC,CAAC,gBAAiB,CAAC,KAAO,IAAM,KAAO,OACvC,CAAC,cAAe,CAAC,IAAM,KAAO,KAAO,MACrC,CAAC,eAAgB,CAAC,KAAO,IAAM,KAAO,IACtC,CAAC,iBAAkB,CAAC,KAAO,KAAO,KAAO,IACzC,CAAC,cAAe,CAAC,KAAO,IAAM,KAAO,MACrC,CAAC,eAAgB,CAAC,KAAO,IAAM,IAAM,IACrC,CAAC,iBAAkB,CAAC,IAAM,EAAG,KAAO,IACpC,CAAC,cAAe,CAAC,KAAO,IAAM,KAAO,MACrC,CAAC,eAAgB,CAAC,IAAM,EAAG,IAAM,IACjC,CAAC,iBAAkB,CAAC,IAAM,EAAG,IAAM,IACnC,CAAC,aAAc,CAAC,IAAM,IAAM,KAAO,OACnC,CAAC,cAAe,CAAC,IAAM,EAAG,IAAM,IAChC,CAAC,gBAAiB,CAAC,EAAG,EAAG,EAAG,IAC5B,CAAC,aAAc,CAAC,GAAK,IAAM,IAAM,OACjC,CAAC,cAAe,CAAC,KAAO,IAAM,KAAO,IACrC,CAAC,gBAAiB,CAAC,KAAO,KAAO,IAAM,QACrC,SAAS/mB,EAAGqoR,GAChBvF,EAASwC,QAAQ+C,EAAY,IAAMC,EAAe57Q,MAAM,KAAM27Q,EAAY,OAgD3E,IAAIjD,EAAMtC,EAASsC,IAAM,CAKxBmD,MAAO,CACNC,MAAO,wBAEPC,YAAa,oBACbC,6BAA8B,qCAE9BC,WAAY,8CAMbC,MAAO,CACN11I,OAAQ,CAAC,OAAQ,SAAU,YAAa,QAAS,kBAAmB,cAAe,iBAAkB,mBAAoB,oBAAqB,kBAAmB,gBACjK21I,eAAgB,CAAC,aAAc,aAAc,QAAS,SAAU,SAAU,QAAS,QAAS,WAC5FC,aAAc,CAAC,uBAAwB,aAAc,SAAU,UAAW,WAC1ErtI,MAAO,CACN,IACA,KAAM,KAAM,KAAM,MAClB,KAAM,KAAM,OAAQ,OACpB,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KACnC,MAAO,OAAQ,MAAO,OACtB,IAAK,MAENstI,WAAY,CACX,UAAa,cACb,aAAgB,cAChB,WAAc,cACd,KAAQ,YACR,MAAS,cACT,MAAS,cACT,OAAU,cACV,MAAS,QACT,eAAkB,cAClB,WAAc,aACd,KAAQ,UACR,MAAS,YACT,UAAa,cACb,UAAa,aACb,WAAc,YACd,UAAa,aACb,MAAS,aACT,eAAkB,cAClB,SAAY,cACZ,QAAW,YACX,KAAQ,YACR,SAAY,UACZ,SAAY,YACZ,cAAiB,aACjB,SAAY,cACZ,SAAY,cACZ,UAAa,UACb,UAAa,cACb,YAAe,YACf,eAAkB,YAClB,WAAc,YACd,WAAc,aACd,QAAW,UACX,WAAc,cACd,aAAgB,cAChB,cAAiB,YACjB,cAAiB,WACjB,cAAiB,YACjB,WAAc,YACd,SAAY,aACZ,YAAe,YACf,QAAW,cACX,QAAW,cACX,WAAc,aACd,UAAa,YACb,YAAe,cACf,YAAe,YACf,QAAW,YACX,UAAa,cACb,WAAc,cACd,KAAQ,YACR,UAAa,aACb,KAAQ,cACR,KAAQ,cACR,YAAe,aACf,MAAS,UACT,SAAY,cACZ,QAAW,cACX,UAAa,YACb,OAAU,WACV,MAAS,cACT,MAAS,cACT,cAAiB,cACjB,SAAY,cACZ,UAAa,YACb,aAAgB,cAChB,UAAa,cACb,WAAc,cACd,UAAa,cACb,qBAAwB,cACxB,UAAa,cACb,UAAa,cACb,WAAc,cACd,UAAa,cACb,YAAe,cACf,cAAiB,aACjB,aAAgB,cAChB,eAAkB,cAClB,eAAkB,cAClB,YAAe,cACf,UAAa,YACb,KAAQ,UACR,MAAS,cACT,QAAW,YACX,OAAU,UACV,iBAAoB,cACpB,WAAc,UACd,aAAgB,aAChB,aAAgB,cAChB,eAAkB,aAClB,gBAAmB,cACnB,kBAAqB,YACrB,gBAAmB,aACnB,gBAAmB,aACnB,aAAgB,YAChB,UAAa,cACb,UAAa,cACb,SAAY,cACZ,YAAe,cACf,KAAQ,UACR,QAAW,cACX,UAAa,aACb,MAAS,YACT,UAAa,WACb,OAAU,YACV,OAAU,cACV,cAAiB,cACjB,UAAa,cACb,cAAiB,cACjB,cAAiB,cACjB,WAAc,cACd,UAAa,cACb,KAAQ,aACR,KAAQ,cACR,KAAQ,cACR,WAAc,cACd,OAAU,YACV,IAAO,UACP,UAAa,cACb,UAAa,aACb,YAAe,YACf,OAAU,cACV,WAAc,aACd,SAAY,YACZ,SAAY,cACZ,OAAU,YACV,OAAU,cACV,QAAW,cACX,UAAa,aACb,UAAa,cACb,KAAQ,cACR,YAAe,YACf,UAAa,aACb,IAAO,cACP,KAAQ,YACR,QAAW,cACX,OAAU,YACV,UAAa,aACb,OAAU,cACV,MAAS,cACT,WAAc,cACd,MAAS,cACT,YAAe,aACf,OAAU,cAWZC,MAAO,CAONC,UAAW,CACV,WAAc,CAAC,iBAAkB,qBACjC,UAAa,CAAC,wBAAyB,yBACvC,KAAQ,CAAC,wBAAyB,mBAClC,mBAAsB,CAAC,MAAO,SAC9B,gBAAmB,CAAC,QAAS,eAC7B,kBAAqB,CAAC,MAAO,YAI9BC,WAAY,GAMZhpJ,SAAU,WAKT,IAAK,IAAIlgI,EAAI,EAAGA,EAAIolR,EAAIwD,MAAM11I,OAAOhzI,OAAQF,IAAK,CACjD,IAAImpR,EAAyC,UAAxB/D,EAAIwD,MAAM11I,OAAOlzI,GAAkB,UAAY,gBACpEolR,EAAI4D,MAAMC,UAAU7D,EAAIwD,MAAM11I,OAAOlzI,IAAM,CAAC,uBAAwBmpR,GAGrE,IAAIC,EACFC,EACAC,EAIF,GAAIrG,EACH,IAAKmG,KAAgBhE,EAAI4D,MAAMC,UAC9B,GAAK7D,EAAI4D,MAAMC,UAAU5oR,eAAe+oR,GAAxC,CAIAE,GADAD,EAAejE,EAAI4D,MAAMC,UAAUG,IACV,GAAG//Q,MAAM,KAElC,IAAI85C,EAAgBkmO,EAAa,GAAGn9Q,MAAMk5Q,EAAImD,MAAMI,YAE/B,UAAjBW,EAAU,KAEbA,EAAU9oR,KAAK8oR,EAAU3oR,SACzBwiD,EAAc3iD,KAAK2iD,EAAcxiD,SAGjCykR,EAAI4D,MAAMC,UAAUG,GAAgB,CAACE,EAAUv8Q,KAAK,KAAMo2C,EAAcp2C,KAAK,OAMhF,IAAKq8Q,KAAgBhE,EAAI4D,MAAMC,UAC9B,GAAK7D,EAAI4D,MAAMC,UAAU5oR,eAAe+oR,GAMxC,IAAK,IAAIrvQ,KAFTuvQ,GADAD,EAAejE,EAAI4D,MAAMC,UAAUG,IACV,GAAG//Q,MAAM,KAGjC,GAAKigR,EAAUjpR,eAAe0Z,GAA9B,CAGA,IAAIwvQ,EAAeH,EAAeE,EAAUvvQ,GAC1CyvQ,EAAezvQ,EAIjBqrQ,EAAI4D,MAAME,WAAWK,GAAgB,CAACH,EAAcI,KAUvDC,QAAS,SAAS7kR,GACjB,IAAI8kR,EAAWtE,EAAI4D,MAAME,WAAWtkR,GAEpC,OAAI8kR,EACIA,EAAS,GAGT9kR,GAGT+kR,QAAS,SAAS7mQ,EAAK4iB,GACtB,IAAIkkP,GAAQ9mQ,EAAI/Y,OAAO27B,GAAS,EAAG,GAAGx5B,MAAM,aAAe,IAAI,IAAM,GAErE,OAAI09Q,GAAQ/F,EAASuB,EAAIwD,MAAMntI,MAAOmuI,GAC9BA,EAED,IAERC,UAAW,SAAS/mQ,GACnB,OAAOA,EAAI7V,QAAQ,8BAA8B,SAAS6xP,EAAI9rH,EAAI82I,GACjE,OAAI1E,EAAIwD,MAAMG,WAAW1oR,eAAeypR,IAC/B92I,GAAU,SAAWoyI,EAAIwD,MAAMG,WAAWe,IAAO92I,EAAK,GAAK,OAE7DA,EAAK82I,MAKdC,uBAAwB,SAASX,EAAcY,GAc9C,OAZI5E,EAAImD,MAAME,YAAYtmQ,KAAK6nQ,KAC9BA,EAAoBA,EAAkB99Q,MAAMk5Q,EAAImD,MAAME,aAAa,IAOhErD,EAAI6E,OAAOC,eAAeF,KAC7BA,EAAoB5E,EAAI4D,MAAMC,UAAUG,GAAc,IAGhDY,GAGRG,aAAc,SAASZ,EAAcS,GACpC,IAAIN,EAAWtE,EAAI4D,MAAME,WAAWK,GAEpC,GAAIG,EAAU,CACb,IAAIU,EAAWV,EAAS,GACtBF,EAAeE,EAAS,GAK1B,OAHAM,EAAoB5E,EAAI4D,MAAMe,uBAAuBK,EAAUJ,IAGtCh0Q,WAAW9J,MAAMk5Q,EAAImD,MAAMI,YAAYa,GAGhE,OAAOQ,GAKTK,YAAa,SAASd,EAAce,EAAWN,GAC9C,IAAIN,EAAWtE,EAAI4D,MAAME,WAAWK,GAEpC,GAAIG,EAAU,CACb,IAEEa,EAFEH,EAAWV,EAAS,GACtBF,EAAeE,EAAS,GAY1B,OAJAa,GAJAP,EAAoB5E,EAAI4D,MAAMe,uBAAuBK,EAAUJ,IAIpBh0Q,WAAW9J,MAAMk5Q,EAAImD,MAAMI,aAC/Ca,GAAgBc,EACZC,EAAuBx9Q,KAAK,KAKvD,OAAOi9Q,IAUVQ,eAAgB,CAGftB,WAAY,CACX7pD,KAAM,SAASz8N,EAAM45D,EAASiuN,GAC7B,OAAQ7nR,GACP,IAAK,OACJ,MAAO,OAER,IAAK,UACJ,IAAI8nR,EAaJ,OATCA,EADGtF,EAAImD,MAAMG,6BAA6BvmQ,KAAKsoQ,GACnCA,GAGZC,EAAYD,EAAcz0Q,WAAW9J,MAAMk5Q,EAAImD,MAAME,cAG7BiC,EAAU,GAAGz9Q,QAAQ,WAAY,KAAOw9Q,EAKlE,IAAK,SACJ,MAAO,QAAUA,EAAgB,MAGpCttM,KAAM,SAASv6E,EAAM45D,EAASiuN,GAC7B,OAAQ7nR,GACP,IAAK,OACJ,OAAOkgR,EAASzQ,MAAMuS,UAAY,SAAW,iBAC9C,IAAK,UACJ,IAAI8F,EAAYj5F,WAAWg5F,GAG3B,IAAMC,GAA2B,IAAdA,EAAkB,CACpC,IAAIC,EAAgBF,EAAcz0Q,WAAW9J,MAAM,2BAIlDw+Q,EADGC,EACSA,EAAc,GAGd,EAId,OAAOD,EAER,IAAK,SAEJ,OAAKj5F,WAAWg5F,GAGR,QAAUA,EAAgB,IAF1B,SAOXG,QAAS,SAAShoR,EAAM45D,EAASiuN,GAChC,GAAIxH,GAAM,EACT,OAAQrgR,GACP,IAAK,OACJ,MAAO,SACR,IAAK,UAGJ,IAAI8nR,EAAYD,EAAcz0Q,WAAW9J,MAAM,0BAU/C,OANCu+Q,EAFGC,EAEaA,EAAU,GAAK,IAGf,EAIlB,IAAK,SAOJ,OALAluN,EAAQo5C,MAAMi1K,KAAO,EAKjBp5F,WAAWg5F,IAAkB,EACzB,GAGA,iBAAmBnnQ,SAAqC,IAA5BmuK,WAAWg5F,GAAsB,IAAM,SAK7E,OAAQ7nR,GACP,IAAK,OACJ,MAAO,UACR,IAAK,UAEL,IAAK,SACJ,OAAO6nR,KAUZvqJ,SAAU,WAgBH+iJ,KAAMA,EAAK,IAAOH,EAASzQ,MAAMqS,gBAGtCU,EAAIwD,MAAMC,eAAiBzD,EAAIwD,MAAMC,eAAe/7Q,OAAOs4Q,EAAIwD,MAAME,eAGtE,IAAK,IAAI9oR,EAAI,EAAGA,EAAIolR,EAAIwD,MAAMC,eAAe3oR,OAAQF,KAGpD,WACC,IAAI8qR,EAAgB1F,EAAIwD,MAAMC,eAAe7oR,GAE7ColR,EAAIoF,eAAetB,WAAW4B,GAAiB,SAASloR,EAAM45D,EAASiuN,GACtE,OAAQ7nR,GAEP,IAAK,OACJ,MAAO,YAER,IAAK,UAEJ,OAAIi8D,EAAKrC,KAAat5D,GAAa27D,EAAKrC,GAASwpN,eAAe8E,KAAmB5nR,EAE3E,UAAUif,KAAK2oQ,GAAiB,EAAI,EAIrCjsN,EAAKrC,GAASwpN,eAAe8E,GAAe79Q,QAAQ,QAAS,IACrE,IAAK,SACJ,IAAIwzD,GAAU,EAKd,OAAQqqN,EAAc/gR,OAAO,EAAG+gR,EAAc5qR,OAAS,IAEtD,IAAK,YACJugE,GAAW,2BAA2Bt+C,KAAKsoQ,GAC3C,MAED,IAAK,OACL,IAAK,QAIA3H,EAASzQ,MAAMoS,WAAa5lN,EAAKrC,GAASwpN,eAAe8E,KAAmB5nR,GAAaunR,EAAgB,IAC5GA,EAAgB,GAGjBhqN,GAAW,SAASt+C,KAAKsoQ,GACzB,MACD,IAAK,OAGL,IAAK,SACJhqN,GAAW,aAAat+C,KAAKsoQ,GAU/B,OANKhqN,IAEJ5B,EAAKrC,GAASwpN,eAAe8E,GAAiB,IAAML,EAAgB,KAI9D5rN,EAAKrC,GAASwpN,eAAe8E,KAvDxC,GAmED,IAAK,IAAI/wQ,EAAI,EAAGA,EAAIqrQ,EAAIwD,MAAM11I,OAAOhzI,OAAQ6Z,KAG5C,WACC,IAAIgxQ,EAAY3F,EAAIwD,MAAM11I,OAAOn5H,GAGjCqrQ,EAAIoF,eAAetB,WAAW6B,GAAa,SAASnoR,EAAM45D,EAASiuN,GAClE,OAAQ7nR,GACP,IAAK,OACJ,OAAOmoR,EAER,IAAK,UACJ,IAAIL,EAGJ,GAAItF,EAAImD,MAAMG,6BAA6BvmQ,KAAKsoQ,GAC/CC,EAAYD,MACN,CACN,IAAIO,EACFjC,EAAa,CACZkC,MAAO,eACPC,KAAM,iBACNC,KAAM,qBACNC,MAAO,iBACPC,IAAK,iBACLC,MAAO,sBAIN,YAAYnpQ,KAAKsoQ,GAEnBO,EADGjC,EAAW0B,KAAmBvnR,EACrB6lR,EAAW0B,GAGX1B,EAAWkC,MAGd7F,EAAImD,MAAMC,MAAMrmQ,KAAKsoQ,GAC/BO,EAAY,OAAS5F,EAAI6E,OAAOsB,SAASd,GAAe19Q,KAAK,KAAO,IAExD,YAAYoV,KAAKsoQ,KAC7BO,EAAYjC,EAAWkC,OAKxBP,GAAaM,GAAaP,GAAez0Q,WAAW9J,MAAMk5Q,EAAImD,MAAME,aAAa,GAAGx7Q,QAAQ,WAAY,KAQzG,QAJMg2Q,GAAMA,EAAK,IAAsC,IAAhCyH,EAAUrhR,MAAM,KAAKnJ,SAC3CwqR,GAAa,MAGPA,EACR,IAAK,SAEJ,MAAI,OAAOvoQ,KAAKsoQ,GACRA,GAIJxH,GAAM,EAC+B,IAApCwH,EAAcphR,MAAM,KAAKnJ,SAC5BuqR,EAAgBA,EAAcphR,MAAM,OAAOlE,MAAM,EAAG,GAAG4H,KAAK,MAGf,IAApC09Q,EAAcphR,MAAM,KAAKnJ,SACnCuqR,GAAiB,OAKVxH,GAAM,EAAI,MAAQ,QAAU,IAAMwH,EAAcx9Q,QAAQ,OAAQ,KAAKA,QAAQ,gBAAiB,IAAM,OAvEhH,GAgFD,SAASu+Q,EAAiBxoR,EAAMw5D,EAASivN,GAGxC,GAF0F,eAAxErG,EAAIz4C,iBAAiBnwK,EAAS,aAAaxmD,WAAWhJ,iBAEnDy+Q,IAAa,GAAQ,CAEzC,IAAIzrR,EACFkE,EACAwnR,EAAU,EACVC,EAAiB,UAAT3oR,EAAmB,CAAC,OAAQ,SAAW,CAAC,MAAO,UACvD4oR,EAAS,CAAC,UAAYD,EAAM,GAAI,UAAYA,EAAM,GAAI,SAAWA,EAAM,GAAK,QAAS,SAAWA,EAAM,GAAK,SAE7G,IAAK3rR,EAAI,EAAGA,EAAI4rR,EAAO1rR,OAAQF,IAC9BkE,EAAQutL,WAAW2zF,EAAIz4C,iBAAiBnwK,EAASovN,EAAO5rR,KACnD26F,MAAMz2F,KACVwnR,GAAWxnR,GAGb,OAAOunR,GAAaC,EAAUA,EAE/B,OAAO,EAER,SAASG,EAAa7oR,EAAMyoR,GAC3B,OAAO,SAAS7oR,EAAM45D,EAASiuN,GAC9B,OAAQ7nR,GACP,IAAK,OACJ,OAAOI,EACR,IAAK,UACJ,OAAOyuL,WAAWg5F,GAAiBe,EAAiBxoR,EAAMw5D,EAASivN,GACpE,IAAK,SACJ,OAAQh6F,WAAWg5F,GAAiBe,EAAiBxoR,EAAMw5D,EAASivN,GAAc,OAItFrG,EAAIoF,eAAetB,WAAWvxI,WAAak0I,EAAa,SAAS,GACjEzG,EAAIoF,eAAetB,WAAWtxI,YAAci0I,EAAa,UAAU,GACnEzG,EAAIoF,eAAetB,WAAW4C,WAAaD,EAAa,SACxDzG,EAAIoF,eAAetB,WAAW6C,YAAcF,EAAa,YAO3DG,MAAO,CAGN54E,UAAW,SAASxuM,GACnB,OAAOA,EAASqI,QAAQ,UAAU,SAASf,EAAO+/Q,GACjD,OAAOA,EAASzvM,kBAIlB0vM,aAAc,SAAStnR,GACtB,IAAIunR,EAAgB,6CAOpB,OAJIlJ,GAAOH,EAASzQ,MAAMoS,YAAc3B,EAASzQ,MAAMsS,YACtDwH,GAAiB,cAGX,IAAIrgR,OAAO,KAAOqgR,EAAgB,KAAM,KAAKhqQ,KAAKvd,IAK1DwnR,YAAa,SAASxnR,GAErB,GAAIk+Q,EAASzQ,MAAMyS,cAAclgR,GAChC,MAAO,CAACk+Q,EAASzQ,MAAMyS,cAAclgR,IAAW,GAIhD,IAFA,IAAIu4Q,EAAU,CAAC,GAAI,SAAU,MAAO,KAAM,KAEjCn9Q,EAAI,EAAGqsR,EAAgBlP,EAAQj9Q,OAAQF,EAAIqsR,EAAersR,IAAK,CACvE,IAAIssR,EAYJ,GATCA,EADS,IAANtsR,EACgB4E,EAGAu4Q,EAAQn9Q,GAAK4E,EAASqI,QAAQ,OAAO,SAASf,GAChE,OAAOA,EAAMswE,iBAKXunM,EAAK5iL,SAAS2hL,EAASzQ,MAAMwS,cAAcjvK,MAAM02K,IAIpD,OAFAxJ,EAASzQ,MAAMyS,cAAclgR,GAAY0nR,EAElC,CAACA,GAAkB,GAK5B,MAAO,CAAC1nR,GAAU,KAQrBqlR,OAAQ,CAEPsB,SAAU,SAASgB,GAClB,IAEEC,EAQF,OANAD,EAAMA,EAAIt/Q,QAJW,oCAIa,SAAS1J,EAAGQ,EAAGg4D,EAAGrnC,GACnD,OAAO3wB,EAAIA,EAAIg4D,EAAIA,EAAIrnC,EAAIA,MAG5B83P,EAPkB,4CAOOrgR,KAAKogR,IAEZ,CAACjpQ,SAASkpQ,EAAS,GAAI,IAAKlpQ,SAASkpQ,EAAS,GAAI,IAAKlpQ,SAASkpQ,EAAS,GAAI,KAAO,CAAC,EAAG,EAAG,IAE9GtC,eAAgB,SAAShmR,GAMxB,OAASA,GAAS,qDAAqDie,KAAKje,IAG7EuoR,YAAa,SAAS7nR,GACrB,MAAI,kBAAkBud,KAAKvd,GACnB,MACG,kHAAkHud,KAAKvd,GAE1H,GAGA,MAKT8nR,eAAgB,SAASlwN,GACxB,IAAIi1C,EAAUj1C,GAAWA,EAAQi1C,QAAQz7F,WAAWhJ,cAEpD,MAAI,2JAA2JmV,KAAKsvF,GAC5J,SACG,UAAUtvF,KAAKsvF,GAClB,YACG,UAAUtvF,KAAKsvF,GAClB,YACG,aAAatvF,KAAKsvF,GACrB,QACG,aAAatvF,KAAKsvF,GACrB,kBAGA,SAITk7K,SAAU,SAASnwN,EAASpxD,GAC3B,GAAIoxD,EACH,GAAIA,EAAQrhC,UACXqhC,EAAQrhC,UAAUmpB,IAAIl5C,QAChB,GAAI24Q,EAAK5iL,SAAS3kC,EAAQpxD,WAEhCoxD,EAAQpxD,YAAcoxD,EAAQpxD,UAAUlL,OAAS,IAAM,IAAMkL,MACvD,CAEN,IAAIwhR,EAAepwN,EAAQsrF,aAAam7H,GAAM,EAAI,YAAc,UAAY,GAE5EzmN,EAAQx6D,aAAa,QAAS4qR,GAAgBA,EAAe,IAAM,IAAMxhR,KAI5EyhR,YAAa,SAASrwN,EAASpxD,GAC9B,GAAIoxD,EACH,GAAIA,EAAQrhC,UACXqhC,EAAQrhC,UAAUyZ,OAAOxpC,QACnB,GAAI24Q,EAAK5iL,SAAS3kC,EAAQpxD,WAGhCoxD,EAAQpxD,UAAYoxD,EAAQpxD,UAAU4K,WAAW/I,QAAQ,IAAInB,OAAO,UAAYV,EAAU/B,MAAM,KAAK0D,KAAK,KAAO,UAAW,MAAO,SAC7H,CAEN,IAAI6/Q,EAAepwN,EAAQsrF,aAAam7H,GAAM,EAAI,YAAc,UAAY,GAE5EzmN,EAAQx6D,aAAa,QAAS4qR,EAAa3/Q,QAAQ,IAAInB,OAAO,QAAWV,EAAU/B,MAAM,KAAK0D,KAAK,KAAO,QAAU,MAAO,SAU/H4/N,iBAAkB,SAASnwK,EAAS53D,EAAUolR,EAAmB8C,GAKhE,SAASC,EAAqBvwN,EAAS53D,GAKtC,IAAIooR,EAAgB,EAMpB,GAAI/J,GAAM,EACT+J,EAAgBzL,EAAEzT,IAAItxM,EAAS53D,OAGzB,CAGN,IAAIqoR,GAAgB,EAEhB,mBAAmB9qQ,KAAKvd,IAA0D,IAA7CwgR,EAAIz4C,iBAAiBnwK,EAAS,aACtEywN,GAAgB,EAChB7H,EAAI8H,iBAAiB1wN,EAAS,UAAW4oN,EAAI6E,OAAOyC,eAAelwN,KAGpE,IAoBIiwK,EApBA0gD,EAAgB,WACfF,GACH7H,EAAI8H,iBAAiB1wN,EAAS,UAAW,SAI3C,IAAKswN,EAAkB,CACtB,GAAiB,WAAbloR,GAAiG,eAAxEwgR,EAAIz4C,iBAAiBnwK,EAAS,aAAaxmD,WAAWhJ,cAAgC,CAClH,IAAIogR,EAAmB5wN,EAAQ6wN,cAAgB57F,WAAW2zF,EAAIz4C,iBAAiBnwK,EAAS,oBAAsB,IAAMi1H,WAAW2zF,EAAIz4C,iBAAiBnwK,EAAS,uBAAyB,IAAMi1H,WAAW2zF,EAAIz4C,iBAAiBnwK,EAAS,gBAAkB,IAAMi1H,WAAW2zF,EAAIz4C,iBAAiBnwK,EAAS,mBAAqB,GAG3T,OAFA2wN,IAEOC,EACD,GAAiB,UAAbxoR,GAAgG,eAAxEwgR,EAAIz4C,iBAAiBnwK,EAAS,aAAaxmD,WAAWhJ,cAAgC,CACxH,IAAIsgR,EAAkB9wN,EAAQk9F,aAAe+3B,WAAW2zF,EAAIz4C,iBAAiBnwK,EAAS,qBAAuB,IAAMi1H,WAAW2zF,EAAIz4C,iBAAiBnwK,EAAS,sBAAwB,IAAMi1H,WAAW2zF,EAAIz4C,iBAAiBnwK,EAAS,iBAAmB,IAAMi1H,WAAW2zF,EAAIz4C,iBAAiBnwK,EAAS,kBAAoB,GAGzT,OAFA2wN,IAEOG,GASR7gD,EADG5tK,EAAKrC,KAAat5D,EACL+B,EAAO8hJ,iBAAiBvqF,EAAS,MAEtCqC,EAAKrC,GAASiwK,cAIT5tK,EAAKrC,GAASiwK,cAHd5tK,EAAKrC,GAASiwK,cAAgBxnO,EAAO8hJ,iBAAiBvqF,EAAS,MAS/D,gBAAb53D,IACHA,EAAW,kBAaU,MAPrBooR,EADU,IAAP/J,GAAyB,WAAbr+Q,EACC6nO,EAAcE,iBAAiB/nO,GAE/B6nO,EAAc7nO,KAKe,OAAlBooR,IAC3BA,EAAgBxwN,EAAQo5C,MAAMhxG,IAG/BuoR,IASD,GAAsB,SAAlBH,GAA4B,6BAA6B7qQ,KAAKvd,GAAW,CAC5E,IAAI2xE,EAAWw2M,EAAqBvwN,EAAS,aAM5B,UAAb+Z,GAAsC,aAAbA,GAA2B,YAAYp0D,KAAKvd,MAExEooR,EAAgBzL,EAAE/kN,GAAS+Z,WAAW3xE,GAAY,MAIpD,OAAOooR,EAGR,IAAIvC,EAIJ,GAAIrF,EAAI4D,MAAME,WAAWtkR,GAAW,CACnC,IAAIqhR,EAAOrhR,EACTwlR,EAAWhF,EAAI4D,MAAMS,QAAQxD,GAI3B+D,IAAsB9mR,IAEzB8mR,EAAoB5E,EAAIz4C,iBAAiBnwK,EAAS4oN,EAAI4G,MAAMI,YAAYhC,GAAU,KAI/EhF,EAAIoF,eAAetB,WAAWkB,KACjCJ,EAAoB5E,EAAIoF,eAAetB,WAAWkB,GAAU,UAAW5tN,EAASwtN,IAIjFS,EAAgBrF,EAAI4D,MAAMmB,aAAalE,EAAM+D,QAMvC,GAAI5E,EAAIoF,eAAetB,WAAWtkR,GAAW,CACnD,IAAI2oR,EACFC,EAQ6B,eAN/BD,EAAyBnI,EAAIoF,eAAetB,WAAWtkR,GAAU,OAAQ43D,MAOxEgxN,EAA0BT,EAAqBvwN,EAAS4oN,EAAI4G,MAAMI,YAAYmB,GAAwB,IAGlGnI,EAAI6E,OAAOC,eAAesD,IAA4BpI,EAAI4D,MAAMC,UAAUrkR,KAC7E4oR,EAA0BpI,EAAI4D,MAAMC,UAAUrkR,GAAU,KAI1D6lR,EAAgBrF,EAAIoF,eAAetB,WAAWtkR,GAAU,UAAW43D,EAASgxN,GAI7E,IAAK,SAASrrQ,KAAKsoQ,GAAgB,CAGlC,IAAI9qR,EAAOk/D,EAAKrC,GAEhB,GAAI78D,GAAQA,EAAKskR,OAASmB,EAAI4G,MAAME,aAAatnR,GAGhD,GAAI,oBAAoBud,KAAKvd,GAE5B,IACC6lR,EAAgBjuN,EAAQixN,UAAU7oR,GACjC,MAAOxC,GACRqoR,EAAgB,OAIjBA,EAAgBjuN,EAAQsrF,aAAaljJ,QAGtC6lR,EAAgBsC,EAAqBvwN,EAAS4oN,EAAI4G,MAAMI,YAAYxnR,GAAU,IAchF,OARIwgR,EAAI6E,OAAOC,eAAeO,KAC7BA,EAAgB,GAGb3H,EAASnvQ,OAAS,GACrB5O,QAAQsD,IAAI,OAASzD,EAAW,KAAO6lR,GAGjCA,GAGRyC,iBAAkB,SAAS1wN,EAAS53D,EAAU6lR,EAAeT,EAAmB0D,GAC/E,IAAIj3Q,EAAe7R,EAGnB,GAAiB,WAAbA,EAEC8oR,EAAWx8N,UACdw8N,EAAWx8N,UAAU,SAAWw8N,EAAWtuJ,WAAaqrJ,EAG3B,SAAzBiD,EAAWtuJ,UACdn6H,EAAO0oR,SAASlD,EAAeiD,EAAWE,gBAE1C3oR,EAAO0oR,SAASD,EAAWE,eAAgBnD,QAM7C,GAAIrF,EAAIoF,eAAetB,WAAWtkR,IAA0E,cAA7DwgR,EAAIoF,eAAetB,WAAWtkR,GAAU,OAAQ43D,GAG9F4oN,EAAIoF,eAAetB,WAAWtkR,GAAU,SAAU43D,EAASiuN,GAE3Dh0Q,EAAe,YACfg0Q,EAAgB5rN,EAAKrC,GAASwpN,eAAephR,OACvC,CAEN,GAAIwgR,EAAI4D,MAAME,WAAWtkR,GAAW,CACnC,IAAIipR,EAAWjpR,EACbwlR,EAAWhF,EAAI4D,MAAMS,QAAQ7kR,GAG/BolR,EAAoBA,GAAqB5E,EAAIz4C,iBAAiBnwK,EAAS4tN,GAEvEK,EAAgBrF,EAAI4D,MAAMqB,YAAYwD,EAAUpD,EAAeT,GAC/DplR,EAAWwlR,EAcZ,GAVIhF,EAAIoF,eAAetB,WAAWtkR,KACjC6lR,EAAgBrF,EAAIoF,eAAetB,WAAWtkR,GAAU,SAAU43D,EAASiuN,GAC3E7lR,EAAWwgR,EAAIoF,eAAetB,WAAWtkR,GAAU,OAAQ43D,IAI5D/lD,EAAe2uQ,EAAI4G,MAAMI,YAAYxnR,GAAU,GAI3Cq+Q,GAAM,EACT,IACCzmN,EAAQo5C,MAAMn/F,GAAgBg0Q,EAC7B,MAAOroR,GACJ0gR,EAASnvQ,OACZ5O,QAAQsD,IAAI,6BAA+BoiR,EAAgB,UAAYh0Q,EAAe,SAKlF,CACN,IAAI9W,EAAOk/D,EAAKrC,GAEZ78D,GAAQA,EAAKskR,OAASmB,EAAI4G,MAAME,aAAatnR,GAGhD43D,EAAQx6D,aAAa4C,EAAU6lR,GAE/BjuN,EAAQo5C,MAAMn/F,GAAgBg0Q,EAI5B3H,EAASnvQ,OAAS,GACrB5O,QAAQsD,IAAI,OAASzD,EAAW,KAAO6R,EAAe,MAAQg0Q,GAMjE,MAAO,CAACh0Q,EAAcg0Q,IAIvBqD,oBAAqB,SAAStxN,GAC7B,IAAIuxN,EAAkB,GACpBpuR,EAAOk/D,EAAKrC,GAId,IAAKymN,GAAOH,EAASzQ,MAAMoS,YAAc3B,EAASzQ,MAAMsS,WAAchlR,GAAQA,EAAKskR,MAAO,CAGzF,IAAI+J,EAAoB,SAASC,GAChC,OAAOx8F,WAAW2zF,EAAIz4C,iBAAiBnwK,EAASyxN,KAK7CC,EAAgB,CACnBljR,UAAW,CAACgjR,EAAkB,cAAeA,EAAkB,eAC/DG,MAAO,CAACH,EAAkB,UAAWI,MAAO,CAACJ,EAAkB,UAG/DK,MAAsC,IAA/BL,EAAkB,SAAiB,CAACA,EAAkB,SAAUA,EAAkB,UAAY,CAACA,EAAkB,UAAWA,EAAkB,WAGrJM,OAAQ,CAACN,EAAkB,WAAY,EAAG,IAK3CzM,EAAEx6P,KAAK83C,EAAKrC,GAASwpN,gBAAgB,SAAS8E,GAGzC,cAAc3oQ,KAAK2oQ,GACtBA,EAAgB,YACN,UAAU3oQ,KAAK2oQ,GACzBA,EAAgB,QACN,WAAW3oQ,KAAK2oQ,KAC1BA,EAAgB,UAIboD,EAAcpD,KAEjBiD,GAAmBjD,EAAgB,IAAMoD,EAAcpD,GAAe/9Q,KAAK,KAAO,YAI3EmhR,EAAcpD,WAGjB,CACN,IAAIyD,EACFC,EAGFjN,EAAEx6P,KAAK83C,EAAKrC,GAASwpN,gBAAgB,SAAS8E,GAI7C,GAHAyD,EAAiB1vN,EAAKrC,GAASwpN,eAAe8E,GAGxB,yBAAlBA,EAEH,OADA0D,EAAcD,GACP,EAIG,IAAPtL,GAA8B,YAAlB6H,IACfA,EAAgB,UAGjBiD,GAAmBjD,EAAgByD,EAAiB,OAIjDC,IACHT,EAAkB,cAAgBS,EAAc,IAAMT,GAIxD3I,EAAI8H,iBAAiB1wN,EAAS,YAAauxN,KAK7C3I,EAAI4D,MAAM9oJ,WACVklJ,EAAIoF,eAAetqJ,WAGnB4iJ,EAASmD,KAAO,SAASpmN,EAAU+lJ,EAAM6oE,GACxC,IAAIvqR,EA6BJ,OA3BA27D,EAAWikN,EAAiBjkN,GAE5B0hN,EAAEx6P,KAAK84C,GAAU,SAAS7/D,EAAGw8D,GAO5B,GALIqC,EAAKrC,KAAat5D,GACrB4/Q,EAASvyQ,KAAKisD,GAIXiyN,IAASvrR,EACRgB,IAAUhB,IACbgB,EAAQkhR,EAAIz4C,iBAAiBnwK,EAASopJ,QAGjC,CAEN,IAAI8oE,EAActJ,EAAI8H,iBAAiB1wN,EAASopJ,EAAM6oE,GAG/B,cAAnBC,EAAY,IACf5L,EAASsC,IAAI0I,oBAAoBtxN,GAGlCt4D,EAAQwqR,MAIHxqR,GAOR,IAAIyqR,EAAU,WACb,IAAI3tQ,EAOJ,SAAS4tQ,IAGR,OAAIC,EACIC,EAAYztR,SAAW,KAGvB0tR,EAWT,IAEEF,EAGAE,EACAC,EAEEnvN,EACFovN,EACAvkR,EAVEwkR,EAAkB/7Q,UAAU,KAAOA,UAAU,GAAGjR,GAAOq/Q,EAAE79E,cAAcvwL,UAAU,GAAGmuD,cAAgBnuD,UAAU,GAAGmuD,WAAW54C,OAAUq7P,EAAK5iL,SAAShuF,UAAU,GAAGmuD,aAajKyiN,EAAKC,UAAUxzQ,OAClBq+Q,GAAY,EAEZG,EAAgB,EAChBnvN,EAAWrvD,KACXu+Q,EAAkBv+Q,OAGlBq+Q,GAAY,EAEZG,EAAgB,EAChBnvN,EAAWqvN,EAAkB/7Q,UAAU,GAAG0sD,UAAY1sD,UAAU,GAAGjS,EAAKiS,UAAU,IAOnF,IAAI27Q,EAAc,CACjBztR,QAAS,KACTmwM,SAAU,KACV29E,SAAU,MA2BX,GAjBIN,GAAa/L,EAASxhR,UACzBwtR,EAAYztR,QAAU,IAAIyhR,EAASxhR,SAAQ,SAASC,EAASC,GAC5DstR,EAAYt9E,SAAWjwM,EACvButR,EAAYK,SAAW3tR,MAIrB0tR,GACHD,EAAgB97Q,UAAU,GAAGmuD,YAAcnuD,UAAU,GAAGjR,EACxDwI,EAAUyI,UAAU,GAAGzI,SAAWyI,UAAU,GAAGxP,IAE/CsrR,EAAgB97Q,UAAU67Q,GAC1BtkR,EAAUyI,UAAU67Q,EAAgB,IAGrCnvN,EAAWikN,EAAiBjkN,GAE5B,CAaA,IAyCIrR,EAzCA4gO,EAAiBvvN,EAAS3/D,OAC5BmvR,EAAgB,EASlB,IAAK,0CAA0CltQ,KAAK8sQ,KAAmB1N,EAAE79E,cAAch5L,GAAU,CAEhG,IAAI4kR,EAA2BN,EAAgB,EAE/CtkR,EAAU,GAGV,IAAK,IAAI1K,EAAIsvR,EAA0BtvR,EAAImT,UAAUjT,OAAQF,IAIvD+jR,EAAK38Q,QAAQ+L,UAAUnT,MAAQ,wBAAwBmiB,KAAKhP,UAAUnT,MAAO,MAAMmiB,KAAKhP,UAAUnT,IAG5F+jR,EAAK5iL,SAAShuF,UAAUnT,KAAO+jR,EAAK38Q,QAAQ+L,UAAUnT,IAChE0K,EAAQ66Q,OAASpyQ,UAAUnT,GAEjB+jR,EAAK1pL,WAAWlnF,UAAUnT,MACpC0K,EAAQ48J,SAAWn0J,UAAUnT,IAN7B0K,EAAQkxH,SAAWzoH,UAAUnT,GAqBhC,OAAQivR,GACP,IAAK,SACJzgO,EAAS,SACT,MAED,IAAK,UACJA,EAAS,UACT,MAED,IAAK,QAMJ,IAAI+3N,GAAc,IAAKnvN,MAAQC,UAmD/B,OAhDAkqN,EAAEx6P,KAAK84C,GAAU,SAAS7/D,EAAGw8D,GAC5BkqN,EAAoBlqN,EAAS+pN,MAQ9BhF,EAAEx6P,KAAK+7P,EAASzQ,MAAM7zI,OAAO,SAASx+H,EAAGwmR,GAExC,IAAIp/N,GAAQ,EAERo/N,GAEHjF,EAAEx6P,KAAKy/P,EAAW,IAAI,SAAS37Q,EAAG0kR,GACjC,IAAIjJ,EAAa57Q,IAAYxH,EAAa,GAAKwH,EAE/C,OAAkB,IAAd47Q,GAAuBE,EAAW,GAAGv0Q,QAAUq0Q,IAAgB57Q,IAAYxH,IAAqC,IAAxBsjR,EAAW,GAAGv0Q,SAK1GsvQ,EAAEx6P,KAAK84C,GAAU,SAAS5+D,EAAGu7D,GAE5B,GAAIA,IAAY+yN,EASf,OANA/I,EAAW,GAAK,CACfC,QAAQ,GAITr/N,GAAQ,GACD,MAKLA,QAAJ,SASIwnO,IAER,IAAK,SA0DJ,OAnDArN,EAAEx6P,KAAK84C,GAAU,SAAS7/D,EAAGw8D,GAC5BoqN,EAAqBpqN,MAQtB+kN,EAAEx6P,KAAK+7P,EAASzQ,MAAM7zI,OAAO,SAASx+H,EAAGwmR,GACxC,IAAIp/N,GAAQ,EAERo/N,GAEHjF,EAAEx6P,KAAKy/P,EAAW,IAAI,SAAS37Q,EAAG0kR,GACjC,IAAIjJ,EAAa57Q,IAAYxH,EAAa,GAAKwH,EAE/C,OAAkB,IAAd47Q,GAAuBE,EAAW,GAAGv0Q,QAAUq0Q,IAAgB57Q,IAAYxH,IAAqC,IAAxBsjR,EAAW,GAAGv0Q,UAKrGu0Q,EAAW,KAKhBjF,EAAEx6P,KAAK84C,GAAU,SAAS5+D,EAAGu7D,GAE5B,GAAIA,IAAY+yN,EAQf,OAJA/I,EAAW,GAAGC,QAAS,EAGvBr/N,GAAQ,GACD,MAKLA,QAAJ,UASIwnO,IAER,IAAK,SACL,IAAK,YACL,IAAK,OAMJrN,EAAEx6P,KAAK84C,GAAU,SAAS7/D,EAAGw8D,GACxBqC,EAAKrC,IAAYqC,EAAKrC,GAASgzN,aAElC/sR,aAAao8D,EAAKrC,GAASgzN,WAAWrsR,YAGlC07D,EAAKrC,GAASgzN,WAAWthR,MAC5B2wD,EAAKrC,GAASgzN,WAAWthR,cAGnB2wD,EAAKrC,GAASgzN,YAMA,cAAlBP,IAA8C,IAAZvkR,IAAoBq5Q,EAAK5iL,SAASz2F,KAEvE62Q,EAAEx6P,KAAKw6P,EAAEtvQ,MAAMuqD,EAASunN,EAAK5iL,SAASz2F,GAAWA,EAAU,KAAK,SAASoJ,EAAG8F,GAEvEmqQ,EAAK1pL,WAAWzgF,IACnBA,OAKF2nQ,EAAEtvQ,MAAMuqD,EAASunN,EAAK5iL,SAASz2F,GAAWA,EAAU,GAAI,QAI1D,IAAI+kR,EAAc,GAwFlB,OA7EAlO,EAAEx6P,KAAK+7P,EAASzQ,MAAM7zI,OAAO,SAASx+H,EAAGwmR,GAEpCA,GAEHjF,EAAEx6P,KAAKy/P,EAAW,IAAI,SAAS37Q,EAAG0kR,GAQjC,IAAIjJ,EAAa57Q,IAAYxH,EAAa,GAAKwH,EAE/C,IAAkB,IAAd47Q,GAAuBE,EAAW,GAAGv0Q,QAAUq0Q,IAAgB57Q,IAAYxH,IAAqC,IAAxBsjR,EAAW,GAAGv0Q,OACzG,OAAO,EAIRsvQ,EAAEx6P,KAAK84C,GAAU,SAAS5+D,EAAGu7D,GAE5B,GAAIA,IAAY+yN,EAkBf,KAfgB,IAAZ7kR,GAAoBq5Q,EAAK5iL,SAASz2F,MAErC62Q,EAAEx6P,KAAKw6P,EAAEtvQ,MAAMuqD,EAASunN,EAAK5iL,SAASz2F,GAAWA,EAAU,KAAK,SAASoJ,EAAG8F,GAEvEmqQ,EAAK1pL,WAAWzgF,IAGnBA,EAAK,MAAM,MAKb2nQ,EAAEtvQ,MAAMuqD,EAASunN,EAAK5iL,SAASz2F,GAAWA,EAAU,GAAI,KAGnC,SAAlBukR,EAA0B,CAK7B,IAAItvR,EAAOk/D,EAAKrC,GACZ78D,GAAQA,EAAKmmR,mBAAkC,IAAdQ,GAAoC,KAAdA,IAC1D/E,EAAEx6P,KAAKpnB,EAAKmmR,iBAAiB,SAASviR,EAAGmsR,GACxCA,EAAYC,SAAWD,EAAYE,gBAIrCH,EAAYjvR,KAAKR,OACW,WAAlBivR,GAAgD,cAAlBA,IAGxCzI,EAAW,GAAG5qJ,SAAW,YAUT,SAAlBqzJ,IACH1N,EAAEx6P,KAAK0oQ,GAAa,SAASzvR,EAAG+Z,GAC/B81Q,EAAa91Q,GAAG,MAGb+0Q,EAAYztR,SAEfytR,EAAYt9E,SAAS3xI,IAKhB+uN,IAER,QAEC,IAAIrN,EAAE79E,cAAcurF,IAAmBlL,EAAKI,cAAc8K,GAQnD,IAAIlL,EAAK5iL,SAAS8tL,IAAkBnM,EAASuC,UAAU4J,GAAgB,CAG7E,IAAIa,GAFJ9uQ,EAAOugQ,EAAE3mL,OAAO,GAAIlwF,IAEQkxH,SAC1Bm0J,EAAgB/uQ,EAAKwc,OAAS,EAoChC,OAjCuB,IAAnBxc,EAAKgvQ,YACRnwN,EAAW0hN,EAAE3mL,QAAO,EAAM,GAAI/6B,GAAUzxB,WAIzCmzO,EAAEx6P,KAAK84C,GAAU,SAASowN,EAAczzN,GAEnCi1H,WAAWzwK,EAAKkvQ,SACnBlvQ,EAAKwc,MAAQuyP,EAAiBt+F,WAAWzwK,EAAKkvQ,SAAWD,EAC/ClM,EAAK1pL,WAAWr5E,EAAKkvQ,WAC/BlvQ,EAAKwc,MAAQuyP,EAAgB/uQ,EAAKkvQ,QAAQ5vR,KAAKk8D,EAASyzN,EAAcb,IAKnEpuQ,EAAKmvQ,OAERnvQ,EAAK46G,SAAW61D,WAAWq+F,KAAsB,wBAAwB3tQ,KAAK8sQ,GAAiB,IAAO3K,GAKtGtjQ,EAAK46G,SAAWvlH,KAAKC,IAAI0K,EAAK46G,UAAY56G,EAAKgvQ,UAAY,EAAIC,EAAeb,GAAkBa,EAAe,GAAKb,GAAiC,IAAhBpuQ,EAAK46G,SAAiB,MAK5JknJ,EAASuC,UAAU4J,GAAe3uR,KAAKk8D,EAASA,EAASx7C,GAAQ,GAAIivQ,EAAcb,EAAgBvvN,EAAUivN,EAAYztR,QAAUytR,EAAc5rR,MAM3I0rR,IAEP,IAAIwB,EAAa,6BAA+BnB,EAAgB,gFAQhE,OANIH,EAAYztR,QACfytR,EAAYK,SAAS,IAAI9sR,MAAM+tR,IACrBnrR,EAAOF,SACjBA,QAAQsD,IAAI+nR,GAGNxB,IAzDPpgO,EAAS,QAqEZ,IAAI6hO,EAAyB,CAC5BC,WAAY,KACZC,aAAc,KACdC,aAAc,KACdC,qBAAsB,KACtBC,sBAAuB,KACvBC,WAAY,KACZC,QAAS,KACTC,OAAQ,KACRC,OAAQ,MAKLxwR,EAAO,GAomCXihR,EAAEx6P,KAAK84C,GAAU,SAAS7/D,EAAGw8D,GAExBunN,EAAKnxQ,OAAO4pD,IACfu0N,EAAev0N,EAASx8D,OAa1BghB,EAAOugQ,EAAE3mL,OAAO,GAAIkoL,EAASjmJ,SAAUnyH,IAClC+6Q,KAAOniQ,SAAStC,EAAKykQ,KAAM,IAChC,IAAIuL,EAAiC,EAAZhwQ,EAAKykQ,KAAY,EAE1C,GAAIzkQ,EAAKykQ,KAGR,IAAK,IAAI3xP,EAAI,EAAGA,EAAIk9P,EAAmBl9P,IAAK,CAI3C,IAAIm9P,EAAiB,CACpBzzP,MAAOxc,EAAKwc,MACZgoP,SAAUxkQ,EAAKwkQ,UAKZ1xP,IAAMk9P,EAAoB,IAC7BC,EAAexlK,QAAUzqG,EAAKyqG,QAC9BwlK,EAAev6D,WAAa11M,EAAK01M,WACjCu6D,EAAe3pH,SAAWtmJ,EAAKsmJ,UAGhCqnH,EAAQ9uN,EAAU,UAAWoxN,GAS/B,OAAOrC,IAxoCP,SAASmC,EAAev0N,EAAS00N,GAUhC,IAKEC,EAsgC8B/kR,EA1gC9B4U,EAAOugQ,EAAE3mL,OAAO,GAAIkoL,EAASjmJ,SAAUnyH,GAGvCo7Q,EAAkB,GA6DpB,OAtDIjnN,EAAKrC,KAAat5D,GACrB4/Q,EAASvyQ,KAAKisD,GAUXi1H,WAAWzwK,EAAKwc,SAAyB,IAAfxc,EAAK/O,OAClCsvQ,EAAEtvQ,MAAMuqD,EAASx7C,EAAK/O,OAAO,SAAS/D,EAAMkjR,GAC3C,IAAmB,IAAfA,EAEH,OAAO,EAIRtO,EAASuO,wBAAyB,EAOlC,IAAIC,EAAYxO,EAASzQ,MAAM8S,gBAAgBx6Q,QAC/Cm4Q,EAASzQ,MAAM8S,gBAAgBmM,GAAa90N,EAE5C,IAA8BpwD,EAA1BmlR,GAA0BnlR,EAQ3BklR,EAPK,WAENxO,EAASzQ,MAAM8S,gBAAgB/4Q,IAAS,EAGxC8B,MAKF2wD,EAAKrC,GAASg1N,YAAa,IAAKp6N,MAAQC,UACxCwH,EAAKrC,GAASh/B,MAAQi0J,WAAWzwK,EAAKwc,OACtCqhC,EAAKrC,GAASgzN,WAAa,CAC1BrsR,WAAYA,WAAW+K,EAAMujL,WAAWzwK,EAAKwc,QAC7CtvB,KAAMqjR,MAUDvwQ,EAAK46G,SAAS5lH,WAAWhJ,eAChC,IAAK,OACJgU,EAAK46G,SAAW,IAChB,MAED,IAAK,SACJ56G,EAAK46G,SAAW0oJ,EAChB,MAED,IAAK,OACJtjQ,EAAK46G,SAAW,IAChB,MAED,QAEC56G,EAAK46G,SAAW61D,WAAWzwK,EAAK46G,WAAa,EA8E/C,SAAS61J,EAAWvjR,GACnB,IAAIvO,EAAM+xR,EAOV,GAAI1wQ,EAAKmqB,OAA2B,IAAlBkkP,EAEjB,IACCruQ,EAAKmqB,MAAM7qC,KAAKu/D,EAAUA,GACzB,MAAOz9D,GACRe,YAAW,WACV,MAAMf,IACJ,GASL,GAAe,WAAXosD,EAAqB,CAExB,IAEEmjO,EACAC,EACAC,EAJEC,EAAmB,OAAO3vQ,KAAKnB,EAAKmgN,MAAQ,OAAS,MACvD4wD,EAAetgG,WAAWzwK,EAAKwpB,SAAW,EAOxCxpB,EAAKkwC,UAEJ6yN,EAAKC,UAAUhjQ,EAAKkwC,YAAc6yN,EAAKnxQ,OAAOoO,EAAKkwC,YAEtDlwC,EAAKkwC,UAAYlwC,EAAKkwC,UAAU,IAAMlwC,EAAKkwC,UAQ3C2gO,GALAF,EAAwB3wQ,EAAKkwC,UAAU,SAAW4gO,IAKLvQ,EAAE/kN,GAAS+Z,WAAWu7M,EAAgB9kR,eAAkB+kR,GAGrG/wQ,EAAKkwC,UAAY,MAKlBygO,EAAwB7O,EAASzQ,MAAM0S,aAAajC,EAASzQ,MAAM,iBAAmByf,IAEtFF,EAAiC9O,EAASzQ,MAAM0S,aAAajC,EAASzQ,MAAM,kBAAwC,SAApByf,EAA6B,MAAQ,UAIrID,EAAoBtQ,EAAE/kN,GAAShyB,SAASsnP,EAAgB9kR,eAAiB+kR,GAI1EjM,EAAkB,CACjBkM,OAAQ,CACPhI,mBAAmB,EACnBiI,WAAYN,EACZ/B,aAAc+B,EACdhC,SAAUkC,EACVK,SAAU,GACV3M,OAAQvkQ,EAAKukQ,OACbmI,WAAY,CACXx8N,UAAWlwC,EAAKkwC,UAChBkuE,UAAW0yJ,EACXlE,eAAgBgE,IAGlBp1N,QAASA,GAGNsmN,EAASnvQ,OACZ5O,QAAQsD,IAAI,6BAA8By9Q,EAAgBkM,OAAQx1N,QAc7D,GAAe,YAAXhO,EAAsB,CAIhC,KAHA7uD,EAAOk/D,EAAKrC,IAIX,OAGD,IAAK78D,EAAKmmR,gBAIT,YAFAvE,EAAEU,QAAQzlN,EAASx7C,EAAK/O,OA8CxB,IAAK,IAAIkgR,IApCiB,SAAtBxyR,EAAKqhB,KAAKyqG,UACb9rH,EAAKqhB,KAAKyqG,QAAU,QAGQ,WAAzB9rH,EAAKqhB,KAAK01M,aACb/2N,EAAKqhB,KAAK01M,WAAa,WAKxB/2N,EAAKqhB,KAAKykQ,MAAO,EACjB9lR,EAAKqhB,KAAKmqB,MAAQ,KAClBxrC,EAAKqhB,KAAKsmJ,SAAW,KAIhB58J,EAAQ66Q,eACLvkQ,EAAKukQ,OAGR76Q,EAAQkxH,iBACL56G,EAAK46G,SAKb56G,EAAOugQ,EAAE3mL,OAAO,GAAIj7F,EAAKqhB,KAAMA,GAO/B0wQ,EAAsBnQ,EAAE3mL,QAAO,EAAM,GAAIj7F,EAAOA,EAAKmmR,gBAAkB,MAKtE,GAAI4L,EAAoBrxR,eAAe8xR,IAA4B,YAAdA,EAAyB,CAC7E,IAAIC,EAAiBV,EAAoBS,GAAWF,WAEpDP,EAAoBS,GAAWF,WAAaP,EAAoBS,GAAWvC,aAAe8B,EAAoBS,GAAWxC,SACzH+B,EAAoBS,GAAWxC,SAAWyC,EAKrCrO,EAAKI,cAAcz5Q,KACvBgnR,EAAoBS,GAAW5M,OAASvkQ,EAAKukQ,QAG1CzC,EAASnvQ,OACZ5O,QAAQsD,IAAI,4BAA8B8pR,EAAY,MAAQ3kR,KAAKuV,UAAU2uQ,EAAoBS,IAAa31N,GAKjHspN,EAAkB4L,OAOb,GAAe,UAAXljO,EAAoB,EAc9B7uD,EAAOk/D,EAAKrC,KAKA78D,EAAKmmR,kBAAwC,IAArBnmR,EAAKkmR,cACxC6L,EAAsB/xR,EAAKmmR,iBAY5B,IAAIuM,EAAqB,SAASC,EAAWC,GAC5C,IAAI5C,EAAUpK,EAAQ0M,EAgDtB,OA7CIlO,EAAK1pL,WAAWi4L,KACnBA,EAAYA,EAAUhyR,KAAKk8D,EAAS00N,EAAmB9B,IAKpDrL,EAAK38Q,QAAQkrR,IAGhB3C,EAAW2C,EAAU,IAIfvO,EAAK38Q,QAAQkrR,EAAU,KAAO,SAASnwQ,KAAKmwQ,EAAU,KAAQvO,EAAK1pL,WAAWi4L,EAAU,KAAOlN,EAAImD,MAAMC,MAAMrmQ,KAAKmwQ,EAAU,IACnIL,EAAaK,EAAU,GAEZvO,EAAK5iL,SAASmxL,EAAU,MAAQlN,EAAImD,MAAMC,MAAMrmQ,KAAKmwQ,EAAU,KAAOxP,EAASwC,QAAQgN,EAAU,KAAQvO,EAAK38Q,QAAQkrR,EAAU,KAC3I/M,EAASgN,EAAsBD,EAAU,GAAKE,EAAUF,EAAU,GAAItxQ,EAAK46G,UAG3Eq2J,EAAaK,EAAU,IAEvBL,EAAaK,EAAU,IAAMA,EAAU,IAIxC3C,EAAW2C,EAIPC,IACJhN,EAASA,GAAUvkQ,EAAKukQ,QAKrBxB,EAAK1pL,WAAWs1L,KACnBA,EAAWA,EAASrvR,KAAKk8D,EAAS00N,EAAmB9B,IAGlDrL,EAAK1pL,WAAW43L,KACnBA,EAAaA,EAAW3xR,KAAKk8D,EAAS00N,EAAmB9B,IAInD,CAACO,GAAY,EAAGpK,EAAQ0M,IAG5BQ,EAAmB,SAAS7tR,EAAU0tR,GAEzC,IAME3mI,EANEy9H,EAAehE,EAAI4D,MAAMS,QAAQ7kR,GACnColR,GAAoB,EAEpB2F,EAAW2C,EAAU,GACrB/M,EAAS+M,EAAU,GACnBL,EAAaK,EAAU,GAYzB,GAAM3yR,GAASA,EAAKskR,OAA2B,UAAjBmF,IAAuE,IAA3ChE,EAAI4G,MAAMI,YAAYhD,GAAc,IAAgBhE,EAAIoF,eAAetB,WAAWE,KAAkBlmR,EAA9J,EAUM8d,EAAKyqG,UAAYvoH,GAA8B,OAAjB8d,EAAKyqG,SAAqC,SAAjBzqG,EAAKyqG,SAAwBzqG,EAAK01M,aAAexzN,GAAiC,WAApB8d,EAAK01M,aAA6B,iBAAiBv0M,KAAKvd,KAAcqtR,GAA2B,IAAbtC,IAC9MsC,EAAa,GAMVjxQ,EAAK2kQ,cAAgB+L,GAAuBA,EAAoB9sR,IAC/DqtR,IAAe/uR,IAClB+uR,EAAaP,EAAoB9sR,GAAU+qR,SAAW+B,EAAoB9sR,GAAUstR,UAMrFlI,EAAoBrqR,EAAKomR,uBAAuBqD,IAI5ChE,EAAI4D,MAAME,WAAWtkR,GACpBqtR,IAAe/uR,GAClB8mR,EAAoB5E,EAAIz4C,iBAAiBnwK,EAAS4sN,GAGlD6I,EAAa7M,EAAIz4C,iBAAiBnwK,EAAS53D,EAAUolR,IAOrDA,EAAoB5E,EAAI4D,MAAMC,UAAUG,GAAc,GAG7C6I,IAAe/uR,IACzB+uR,EAAa7M,EAAIz4C,iBAAiBnwK,EAAS53D,IAQ7C,IAAI8tR,EACFC,EACAC,EACAhnF,GAAW,EAGTinF,EAAgB,SAASjuR,EAAUV,GACtC,IAAIguR,EACFY,EAmBF,OAjBAA,GAAgB5uR,GAAS,KACtB8R,WACAhJ,cAEAC,QAAQ,YAAY,SAASf,GAK7B,OAHAgmR,EAAWhmR,EAGJ,MAILgmR,IACJA,EAAW9M,EAAI6E,OAAOwC,YAAY7nR,IAG5B,CAACkuR,EAAcZ,IAGvB,GAAID,IAAetC,GAAY5L,EAAK5iL,SAAS8wL,IAAelO,EAAK5iL,SAASwuL,GAAW,CACpFhkI,EAAU,GACV,IAAIonI,EAAS,EACXC,EAAO,EACPC,EAAS,GACTC,EAAO,GACPC,EAAS,EACTC,EAAQ,EACRC,EAAS,EAIX,IAFApB,EAAa7M,EAAI4D,MAAMa,UAAUoI,GACjCtC,EAAWvK,EAAI4D,MAAMa,UAAU8F,GACxBoD,EAASd,EAAW/xR,QAAU8yR,EAAOrD,EAASzvR,QAAQ,CAC5D,IAAIozR,EAASrB,EAAWc,GACtBQ,EAAO5D,EAASqD,GAElB,GAAI,UAAU7wQ,KAAKmxQ,IAAW,UAAUnxQ,KAAKoxQ,GAAO,CAMnD,IALA,IAAIC,EAASF,EACXG,EAAOF,EACPG,EAAW,IACXC,EAAS,MAEFZ,EAASd,EAAW/xR,QAAQ,CAEpC,IADAozR,EAASrB,EAAWc,MACLW,EACdA,EAAW,UACL,IAAK,KAAKvxQ,KAAKmxQ,GACrB,MAEDE,GAAUF,EAEX,OAASN,EAAOrD,EAASzvR,QAAQ,CAEhC,IADAqzR,EAAO5D,EAASqD,MACHW,EACZA,EAAS,UACH,IAAK,KAAKxxQ,KAAKoxQ,GACrB,MAEDE,GAAQF,EAET,IAAIK,EAASxO,EAAI4D,MAAMW,QAAQsI,EAAYc,GACzCc,EAAOzO,EAAI4D,MAAMW,QAAQgG,EAAUqD,GAIrC,GAFAD,GAAUa,EAAO1zR,OACjB8yR,GAAQa,EAAK3zR,OACT0zR,IAAWC,EAEVL,IAAWC,EAEd9nI,GAAW6nI,EAASI,GAGpBjoI,GAAW,IAAMsnI,EAAO/yR,QAAUkzR,EAAQ,IAAM,IAAM,IAAMQ,EAC5DX,EAAOzyR,KAAKixL,WAAW+hG,IACvBN,EAAK1yR,KAAKixL,WAAWgiG,SAEhB,CAEN,IAAIK,EAASriG,WAAW+hG,GACtBO,EAAOtiG,WAAWgiG,GAEpB9nI,IAAYwnI,EAAS,EAAI,OAAS,IAAM,KACnCW,EAAS,IAAMb,EAAO/yR,QAAUkzR,EAAQ,IAAM,IAAM,IAAM,KAAOQ,EAClE,OACCG,EAAO,KAAOd,EAAO/yR,QAAU4zR,EAAS,EAAI,KAAOV,EAAQ,IAAM,IAAM,IAAM,KAAOS,EACrF,IACAC,IACHb,EAAOzyR,KAAKszR,GACZZ,EAAK1yR,KAAK,IAEPuzR,IACHd,EAAOzyR,KAAK,GACZ0yR,EAAK1yR,KAAKuzR,SAGN,IAAIT,IAAWC,EAmCf,CACNJ,EAAS,EAET,MArCAxnI,GAAW2nI,EACXP,IACAC,IAEe,IAAXG,GAA2B,MAAXG,GACJ,IAAXH,GAA2B,MAAXG,GACL,IAAXH,GAA2B,MAAXG,GACL,IAAXH,GAA2B,MAAXG,GAChBH,GAAU,GAAgB,MAAXG,EAEnBH,KACWA,GAAUA,EAAS,GAC1BA,GAAU,GAAgB,MAAXG,KAAoBH,EAAS,KAChDA,EAAS,GAGI,IAAVC,GAA0B,MAAXE,GACJ,IAAVF,GAA0B,MAAXE,GACL,IAAVF,GAA0B,MAAXE,GACL,IAAVF,GAA0B,MAAXE,GACfF,GAAS,GAAgB,MAAXE,GAEJ,IAAVF,GAA0B,MAAXE,IAClBD,EAAS,GAEVD,KACUC,GAAqB,MAAXC,IACdD,EAAS,IACdD,EAAQC,EAAS,IAEPA,GAAUD,GAASC,EAAS,EAAI,IACvCD,IAAUC,EAAS,EAAI,IAAiB,MAAXC,KAAoBF,GAASC,EAAS,EAAI,MAC3ED,EAAQC,EAAS,IAQhBN,IAAWd,EAAW/xR,QAAU8yR,IAASrD,EAASzvR,SACjD4iR,EAASnvQ,OACZ5O,QAAQ3C,MAAM,iDAAoDutR,EAAW,OAAWsC,EAAa,MAEtGtmI,EAAUzoJ,GAEPyoJ,IACCsnI,EAAO/yR,QACN4iR,EAASnvQ,OACZ5O,QAAQsD,IAAI,kBAAqBsjJ,EAAU,QAAUsnI,EAAQC,EAAM,IAAMjB,EAAa,IAAMtC,EAAW,KAExGsC,EAAagB,EACbtD,EAAWuD,EACXP,EAAmBC,EAAqB,IAExCjnI,EAAUzoJ,GAKRyoJ,IAGJsmI,GADAS,EAAiBG,EAAcjuR,EAAUqtR,IACb,GAC5BW,EAAqBF,EAAe,GAIpC/C,GADA+C,EAAiBG,EAAcjuR,EAAU+qR,IACf,GAAG1iR,QAAQ,eAAe,SAASf,EAAO+/Q,GAInE,OAHArgF,EAAWqgF,EAGJ,MAER0G,EAAmBD,EAAe,GAGlCT,EAAaxgG,WAAWwgG,IAAe,EACvCtC,EAAWl+F,WAAWk+F,IAAa,EAOV,MAArBgD,IAGC,0BAA0BxwQ,KAAKvd,IAElC+qR,GAAsB,IACtBgD,EAAmB,MAET,SAASxwQ,KAAKvd,IACxB+qR,GAAsB,IACtBgD,EAAmB,IAET,qBAAqBxwQ,KAAKvd,KACpC+qR,EAAYA,EAAW,IAAO,IAC9BgD,EAAmB,MA4HtB,GAAI,QAAQxwQ,KAAKypL,GAChB+mF,EAAmBC,OAMb,GAAKA,IAAuBD,GAAoC,IAAfV,EAKvD,GAAiB,IAAbtC,EACHgD,EAAmBC,MACb,CAGNzB,EAA4BA,GAxHJ,WAUzB,IAAI6C,EAAsB,CACzBC,SAAUz3N,EAAQuvC,YAAcpqG,EAAS2L,KACzCipE,SAAU6uM,EAAIz4C,iBAAiBnwK,EAAS,YACxC03N,SAAU9O,EAAIz4C,iBAAiBnwK,EAAS,aAGvC23N,EAAqBH,EAAoBz9M,WAAa85M,EAAuBE,cAAkByD,EAAoBC,WAAa5D,EAAuBC,WAEvJ8D,EAAeJ,EAAoBE,WAAa7D,EAAuBG,aAGzEH,EAAuBC,WAAa0D,EAAoBC,SACxD5D,EAAuBE,aAAeyD,EAAoBz9M,SAC1D85M,EAAuBG,aAAewD,EAAoBE,SAQ1D,IACEG,EAAa,GAEf,GAAKD,GAAgBD,EA8BpBE,EAAWC,OAASjE,EAAuBM,WAC3C0D,EAAWE,iBAAmBlE,EAAuBI,qBACrD4D,EAAWG,kBAAoBnE,EAAuBK,0BAhChB,CACtC,IAAI+D,EAAQ90R,GAAQA,EAAKskR,MAAQtiR,EAAS+yR,gBAAgB,6BAA8B,QAAU/yR,EAASC,cAAc,OAEzHkhR,EAASvyQ,KAAKkkR,GACdT,EAAoBC,SAAS5wR,YAAYoxR,GAKzClT,EAAEx6P,KAAK,CAAC,WAAY,YAAa,cAAc,SAAS/mB,EAAG4E,GAC1Dk+Q,EAASsC,IAAI8H,iBAAiBuH,EAAO7vR,EAAU,aAEhDk+Q,EAASsC,IAAI8H,iBAAiBuH,EAAO,WAAYT,EAAoBz9M,UACrEusM,EAASsC,IAAI8H,iBAAiBuH,EAAO,WAAYT,EAAoBE,UACrEpR,EAASsC,IAAI8H,iBAAiBuH,EAAO,YAAa,eAGlDlT,EAAEx6P,KAAK,CAAC,WAAY,WAAY,QAAS,YAAa,YAAa,WAAW,SAAS/mB,EAAG4E,GACzFk+Q,EAASsC,IAAI8H,iBAAiBuH,EAAO7vR,EAAU+vR,WAGhD7R,EAASsC,IAAI8H,iBAAiBuH,EAAO,cAAeE,SAGpDN,EAAWE,iBAAmBlE,EAAuBI,sBAAwBh/F,WAAW2zF,EAAIz4C,iBAAiB8nD,EAAO,QAAS,MAAM,KAAU,GA3B5H,IA4BjBJ,EAAWG,kBAAoBnE,EAAuBK,uBAAyBj/F,WAAW2zF,EAAIz4C,iBAAiB8nD,EAAO,SAAU,MAAM,KAAU,GA5B/H,IA6BjBJ,EAAWC,OAASjE,EAAuBM,YAAcl/F,WAAW2zF,EAAIz4C,iBAAiB8nD,EAAO,iBAAmB,GA7BlG,IA+BjBT,EAAoBC,SAASr6H,YAAY66H,GAiC1C,OAlBuC,OAAnCpE,EAAuBO,UAE1BP,EAAuBO,QAAUn/F,WAAW2zF,EAAIz4C,iBAAiBhrO,EAAS2L,KAAM,cAAgB,IAI3D,OAAlC+iR,EAAuBQ,SAC1BR,EAAuBQ,OAASp/F,WAAWxsL,EAAO0yI,YAAc,IAChE04I,EAAuBS,OAASr/F,WAAWxsL,EAAO2yI,aAAe,KAGlEy8I,EAAWzD,QAAUP,EAAuBO,QAC5CyD,EAAWxD,OAASR,EAAuBQ,OAC3CwD,EAAWvD,OAAST,EAAuBS,OAEvChO,EAASnvQ,OAAS,GACrB5O,QAAQsD,IAAI,gBAAkBmF,KAAKuV,UAAUsxQ,GAAa73N,GAEpD63N,EAyBmDO,GAIzD,IAAIzzD,EAAQ,oDAAoDh/M,KAAKvd,IAAa,KAAKud,KAAKvd,IAA0B,MAAbA,EAAoB,IAAM,IAInI,OAAQguR,GACP,IAAK,IAIJX,GAAwB,MAAT9wD,EAAegwD,EAA0BoD,iBAAmBpD,EAA0BqD,kBACrG,MAED,IAAK,KAEJ,MAED,QACCvC,GAAcd,EAA0ByB,EAAqB,QAI/D,OAAQD,GACP,IAAK,IACJV,GAAc,GAAc,MAAT9wD,EAAegwD,EAA0BoD,iBAAmBpD,EAA0BqD,mBACzG,MAED,IAAK,KAEJ,MAED,QACCvC,GAAc,EAAId,EAA0BwB,EAAmB,SAanE,OAAQ/mF,GACP,IAAK,IACJ+jF,EAAWsC,EAAatC,EACxB,MAED,IAAK,IACJA,EAAWsC,EAAatC,EACxB,MAED,IAAK,IACJA,GAAWsC,EACX,MAED,IAAK,IACJtC,EAAWsC,EAAatC,EAS1B7J,EAAgBlhR,GAAY,CAC3BolR,kBAAmBA,EACnBiI,WAAYA,EACZrC,aAAcqC,EACdtC,SAAUA,EACVuC,SAAUS,EACVpN,OAAQA,GAEL55H,IACHm6H,EAAgBlhR,GAAU+mJ,QAAUA,GAGjCm3H,EAASnvQ,OACZ5O,QAAQsD,IAAI,oBAAsBzD,EAAW,MAAQ4I,KAAKuV,UAAU+iQ,EAAgBlhR,IAAY43D,QAle5FsmN,EAASnvQ,OACZ5O,QAAQsD,IAAI,aAAe+gR,EAAe,wCAse7C,IAAK,IAAIxkR,KAAYqqR,EAEpB,GAAKA,EAAc5uR,eAAeuE,GAAlC,CAKA,IAAI6R,EAAe2uQ,EAAI4G,MAAM54E,UAAUxuM,GACrC0tR,EAAYD,EAAmBpD,EAAcrqR,IAI/C,GAAIi/Q,EAASuB,EAAIwD,MAAM11I,OAAQz8H,GAAe,CAE7C,IAAIk5Q,EAAW2C,EAAU,GACvB/M,EAAS+M,EAAU,GACnBL,EAAaK,EAAU,GAEzB,GAAIlN,EAAImD,MAAMC,MAAMrmQ,KAAKwtQ,GAAW,CAOnC,IALA,IAAIkF,EAAkB,CAAC,MAAO,QAAS,QACrCC,EAAc1P,EAAI6E,OAAOsB,SAASoE,GAClCoF,EAAgB9C,EAAa7M,EAAI6E,OAAOsB,SAAS0G,GAAc/uR,EAGxDlD,EAAI,EAAGA,EAAI60R,EAAgB30R,OAAQF,IAAK,CAChD,IAAImuO,EAAY,CAAC2mD,EAAY90R,IAEzBulR,GACHp3C,EAAU3tO,KAAK+kR,GAGZwP,IAAkB7xR,GACrBirO,EAAU3tO,KAAKu0R,EAAc/0R,IAG9ByyR,EAAiBh8Q,EAAeo+Q,EAAgB70R,GAAImuO,GAGrD,UAGFskD,EAAiBh8Q,EAAc67Q,GAIhCxM,EAAgBtpN,QAAUA,EASvBspN,EAAgBtpN,UAEnB4oN,EAAI6E,OAAO0C,SAASnwN,EAAS,sBAG7Bl8D,EAAKE,KAAKslR,IAEVnmR,EAAOk/D,EAAKrC,MAIQ,KAAfx7C,EAAK/O,QAERtS,EAAKmmR,gBAAkBA,EACvBnmR,EAAKqhB,KAAOA,GAIbrhB,EAAKkmR,aAAc,GAKhBwJ,IAAkBD,EAAiB,GAGtCtM,EAASzQ,MAAM7zI,MAAMh+H,KAAK,CAACF,EAAMu/D,EAAU7+C,EAAM,KAAM8tQ,EAAYt9E,SAAU,KAAM,KAGlD,IAA7BsxE,EAASzQ,MAAM6S,YAClBpC,EAASzQ,MAAM6S,WAAY,EAG3B8P,MAGD3F,KAMH,IA36BsB,IAAlBvM,EAASoD,QAGU,IAAlBpD,EAASoD,KACZllQ,EAAK46G,SAAW56G,EAAKwc,MAAQ,GAE7Bxc,EAAK46G,UAAY61D,WAAWqxF,EAASoD,OAAS,EAC9CllQ,EAAKwc,OAASi0J,WAAWqxF,EAASoD,OAAS,IAQ7CllQ,EAAKukQ,OAASiN,EAAUxxQ,EAAKukQ,OAAQvkQ,EAAK46G,UAOtC56G,EAAKmqB,QAAU44O,EAAK1pL,WAAWr5E,EAAKmqB,SACvCnqB,EAAKmqB,MAAQ,MAGVnqB,EAAKwkQ,WAAazB,EAAK1pL,WAAWr5E,EAAKwkQ,YAC1CxkQ,EAAKwkQ,SAAW,MAGbxkQ,EAAKsmJ,WAAay8G,EAAK1pL,WAAWr5E,EAAKsmJ,YAC1CtmJ,EAAKsmJ,SAAW,MASbtmJ,EAAKyqG,UAAYvoH,GAA8B,OAAjB8d,EAAKyqG,UACtCzqG,EAAKyqG,QAAUzqG,EAAKyqG,QAAQz1G,WAAWhJ,cAGlB,SAAjBgU,EAAKyqG,UACRzqG,EAAKyqG,QAAUq3J,EAASsC,IAAI6E,OAAOyC,eAAelwN,KAIhDx7C,EAAK01M,aAAexzN,GAAiC,OAApB8d,EAAK01M,aACzC11M,EAAK01M,WAAa11M,EAAK01M,WAAW1gN,WAAWhJ,eAW9CgU,EAAK0kQ,SAAY1kQ,EAAK0kQ,UAAY5C,EAASzQ,MAAMmS,WAAa1B,EAASzQ,MAAMqS,eA82B1D,IAAf1jQ,EAAK/O,MAGR,GAAI+O,EAAKwc,MAAO,CAGf,IAAI8zP,EAAYxO,EAASzQ,MAAM8S,gBAAgBx6Q,QAC/Cm4Q,EAASzQ,MAAM8S,gBAAgBmM,GAAa90N,EAE5C,IAAI+0N,GAA0BnlR,EAQ3BklR,EAPK,WAENxO,EAASzQ,MAAM8S,gBAAgB/4Q,IAAS,EAGxCqlR,MAIF5yN,EAAKrC,GAASg1N,YAAa,IAAKp6N,MAAQC,UACxCwH,EAAKrC,GAASh/B,MAAQi0J,WAAWzwK,EAAKwc,OACtCqhC,EAAKrC,GAASgzN,WAAa,CAC1BrsR,WAAYA,WAAWsuR,EAAYhgG,WAAWzwK,EAAKwc,QACnDtvB,KAAMqjR,QAGPE,SAKDlQ,EAAEtvQ,MAAMuqD,EAASx7C,EAAK/O,OAAO,SAAS/D,EAAMkjR,GAG3C,IAAmB,IAAfA,EAMH,OALItC,EAAYztR,SACfytR,EAAYt9E,SAAS3xI,IAIf,EAKRijN,EAASuO,wBAAyB,EAElCI,OAiBkB,KAAfzwQ,EAAK/O,OAA+B,OAAf+O,EAAK/O,OAA2C,eAAxBsvQ,EAAEtvQ,MAAMuqD,GAAS,IAClE+kN,EAAEU,QAAQzlN,GAv+CPsyN,EAAYztR,UACV4tR,GAAkBvkR,IAA0C,IAA/BA,EAAQk7Q,mBAGzCkJ,EAAYt9E,WAFZs9E,EAAYK,cAoiDhBrM,EAAWvB,EAAE3mL,OAAO+zL,EAAS7L,IAEpB6L,QAAUA,EAOnB,IAAIsG,EAAShwR,EAAOw4Q,uBAAyB0F,EAM7C,IAAKL,EAASzQ,MAAMmS,UAAY7iR,EAAS8sI,SAAWvrI,EAAW,CAC9D,IAAIgyR,EAAe,WAEdvzR,EAAS8sI,QACZwmJ,EAAS,SAAS7mQ,GAEjB,OAAOjrB,YAAW,WACjBirB,GAAS,KACP,KAIJ4mQ,KAEAC,EAAShwR,EAAOw4Q,uBAAyB0F,GAK3C+R,IAGAvzR,EAAS0oK,iBAAiB,mBAAoB6qH,GA4kB/C,OA9GAx2Q,EAAOokQ,SAAWA,EAEdpkQ,IAAWzZ,IAEdyZ,EAAOjN,GAAG0jR,SAAWxG,EAErBjwQ,EAAOjN,GAAG0jR,SAASt4J,SAAWimJ,EAASjmJ,UAQxC0kJ,EAAEx6P,KAAK,CAAC,OAAQ,OAAO,SAAS/mB,EAAGo/H,GAClC0jJ,EAASuC,UAAU,QAAUjmJ,GAAa,SAAS5iE,EAAS9xD,EAAS2kR,EAAe+F,EAAcv1N,EAAUivN,GAC3G,IAAI9tQ,EAAOugQ,EAAE3mL,OAAO,GAAIlwF,GACtBygC,EAAQnqB,EAAKmqB,MACbm8H,EAAWtmJ,EAAKsmJ,SAChB+tH,EAAe,GACfC,EAAiB,CAAC7iN,OAAQ,GAAIiwM,UAAW,GAAI6S,aAAc,GAAIC,WAAY,GAAIC,cAAe,IAE5Fz0Q,EAAKyqG,UAAYvoH,IAGpB8d,EAAKyqG,QAAyB,SAAd2T,EAAwE,WAAhD0jJ,EAASsC,IAAI6E,OAAOyC,eAAelwN,GAAwB,eAAiB,QAAW,QAGhIx7C,EAAKmqB,MAAQ,WAOZ,IAAK,IAAIvmC,KALa,IAAlByqR,GAAuBlkP,GAC1BA,EAAM7qC,KAAKu/D,EAAUA,GAIDy1N,EACpB,GAAKA,EAAej1R,eAAeuE,GAAnC,CAGAywR,EAAazwR,GAAY43D,EAAQo5C,MAAMhxG,GAIvC,IAAI6lR,EAAgBrF,EAAIz4C,iBAAiBnwK,EAAS53D,GAClD0wR,EAAe1wR,GAA2B,SAAdw6H,EAAwB,CAACqrJ,EAAe,GAAK,CAAC,EAAGA,GAI9E4K,EAAa97H,SAAW/8F,EAAQo5C,MAAM2jD,SACtC/8F,EAAQo5C,MAAM2jD,SAAW,UAG1Bv4I,EAAKsmJ,SAAW,WAEf,IAAK,IAAI1iK,KAAYywR,EAChBA,EAAah1R,eAAeuE,KAC/B43D,EAAQo5C,MAAMhxG,GAAYywR,EAAazwR,IAKrCyqR,IAAkB+F,EAAe,IAChC9tH,GACHA,EAAShnK,KAAKu/D,EAAUA,GAErBivN,GACHA,EAAYt9E,SAAS3xI,KAKxBijN,EAAStmN,EAAS84N,EAAgBt0Q,OAKpCugQ,EAAEx6P,KAAK,CAAC,KAAM,QAAQ,SAAS/mB,EAAGo/H,GACjC0jJ,EAASuC,UAAU,OAASjmJ,GAAa,SAAS5iE,EAAS9xD,EAAS2kR,EAAe+F,EAAcv1N,EAAUivN,GAC1G,IAAI9tQ,EAAOugQ,EAAE3mL,OAAO,GAAIlwF,GACtB48J,EAAWtmJ,EAAKsmJ,SAChB2nH,EAAgB,CAACrE,QAAwB,OAAdxrJ,EAAsB,EAAI,GAIjC,IAAlBiwJ,IACHruQ,EAAKmqB,MAAQ,MAGbnqB,EAAKsmJ,SADF+nH,IAAkB+F,EAAe,EACpB,KAEA,WACX9tH,GACHA,EAAShnK,KAAKu/D,EAAUA,GAErBivN,GACHA,EAAYt9E,SAAS3xI,IAOpB7+C,EAAKyqG,UAAYvoH,IACpB8d,EAAKyqG,QAAyB,OAAd2T,EAAqB,OAAS,QAG/C0jJ,EAAStyQ,KAAMy+Q,EAAejuQ,OAIzB8hQ,EAr0HP,SAASjkN,EAAKrC,GAEb,IAAInvD,EAAWk0Q,EAAE5hR,KAAK68D,EAAS,YAG/B,OAAoB,OAAbnvD,EAAoBnK,EAAYmK,EAOxC,SAASq5Q,EAAoBlqN,EAAS+pN,GAGrC,IAAI5mR,EAAOk/D,EAAKrC,GACZ78D,GAAQA,EAAK6vR,aAAe7vR,EAAK+1R,cACpC/1R,EAAKg2R,eAAiBh2R,EAAK69B,MAAQ+oP,EAAc5mR,EAAK6xR,WACtD7xR,EAAK+1R,aAAc,EACnBjzR,aAAa9C,EAAK6vR,WAAWrsR,aAI/B,SAASyjR,EAAqBpqN,EAAS+pN,GAEtC,IAAI5mR,EAAOk/D,EAAKrC,GACZ78D,GAAQA,EAAK6vR,YAAc7vR,EAAK+1R,cAEnC/1R,EAAK+1R,aAAc,EACnB/1R,EAAK6vR,WAAWrsR,WAAaA,WAAWxD,EAAK6vR,WAAWthR,KAAMvO,EAAKg2R,iBAWrE,SAASC,EAAa/yO,GACrB,OAAO,SAAS3gD,GACf,OAAOmU,KAAKuzH,MAAM1nI,EAAI2gD,IAAU,EAAIA,IAKtC,SAASylO,EAAeuN,EAAKC,EAAKC,EAAKC,GACtC,IAAIC,EAAoB,EACtBC,EAAmB,KACnBC,EAAwB,KACxBC,EAA6B,GAC7BC,EAAmB,GACnBC,EAAkB,GAAOD,EAAmB,GAC5CE,EAAwB,iBAAkBtxR,EAG5C,GAAyB,IAArBkO,UAAUjT,OACb,OAAO,EAIR,IAAK,IAAIF,EAAI,EAAGA,EAAI,IAAKA,EACxB,GAA4B,iBAAjBmT,UAAUnT,IAAmB26F,MAAMxnF,UAAUnT,MAAQ8tB,SAAS3a,UAAUnT,IAClF,OAAO,EAKT61R,EAAMx/Q,KAAKo1B,IAAIoqP,EAAK,GACpBE,EAAM1/Q,KAAKo1B,IAAIsqP,EAAK,GACpBF,EAAMx/Q,KAAKC,IAAIu/Q,EAAK,GACpBE,EAAM1/Q,KAAKC,IAAIy/Q,EAAK,GAEpB,IAAIS,EAAgBD,EAAwB,IAAIE,aAAaJ,GAAoB,IAAIlvR,MAAMkvR,GAE3F,SAASn7L,EAAEw7L,EAAKC,GACf,OAAO,EAAM,EAAMA,EAAM,EAAMD,EAEhC,SAAShpO,EAAEgpO,EAAKC,GACf,OAAO,EAAMA,EAAM,EAAMD,EAE1B,SAAS/9L,EAAE+9L,GACV,OAAO,EAAMA,EAGd,SAASE,EAAWC,EAAIH,EAAKC,GAC5B,QAASz7L,EAAEw7L,EAAKC,GAAOE,EAAKnpO,EAAEgpO,EAAKC,IAAQE,EAAKl+L,EAAE+9L,IAAQG,EAG3D,SAASC,EAASD,EAAIH,EAAKC,GAC1B,OAAO,EAAMz7L,EAAEw7L,EAAKC,GAAOE,EAAKA,EAAK,EAAMnpO,EAAEgpO,EAAKC,GAAOE,EAAKl+L,EAAE+9L,GAwCjE,SAASK,EAASC,GAKjB,IAJA,IAAIC,EAAgB,EAClBC,EAAgB,EAChBC,EAAad,EAAmB,EAE3Ba,IAAkBC,GAAcX,EAAcU,IAAkBF,IAAME,EAC5ED,GAAiBX,EAKlB,IACEc,EAAYH,GADFD,EAAKR,IAFfU,KAEgDV,EAAcU,EAAgB,GAAKV,EAAcU,IAC9DZ,EACnCe,EAAeP,EAASM,EAAWvB,EAAKE,GAE1C,OAAIsB,GAAgBnB,EApDrB,SAA8Bc,EAAIM,GACjC,IAAK,IAAIt3R,EAAI,EAAGA,EAAIi2R,IAAqBj2R,EAAG,CAC3C,IAAIu3R,EAAeT,EAASQ,EAASzB,EAAKE,GAE1C,GAAqB,IAAjBwB,EACH,OAAOD,EAIRA,IADeV,EAAWU,EAASzB,EAAKE,GAAOiB,GACzBO,EAGvB,OAAOD,EAyCCE,CAAqBR,EAAII,GACL,IAAjBC,EACHD,EAlCT,SAAyBJ,EAAIS,EAAIC,GAChC,IAAIC,EAAUC,EAAU53R,EAAI,EAE5B,IAEC23R,EAAWf,EADXgB,EAAWH,GAAMC,EAAKD,GAAM,EACI5B,EAAKE,GAAOiB,GAC7B,EACdU,EAAKE,EAELH,EAAKG,QAEEvhR,KAAKi7B,IAAIqmP,GAAYxB,KAA2Bn2R,EAAIo2R,GAE7D,OAAOwB,EAuBCC,CAAgBb,EAAIC,EAAeA,EAAgBX,GAI5D,IAAIwB,GAAe,EAEnB,SAASC,IACRD,GAAe,EACXjC,IAAQC,GAAOC,IAAQC,GAlD5B,WACC,IAAK,IAAIh2R,EAAI,EAAGA,EAAIq2R,IAAoBr2R,EACvCw2R,EAAcx2R,GAAK42R,EAAW52R,EAAIs2R,EAAiBT,EAAKE,GAiDxDiC,GAIF,IAAIjxR,EAAI,SAASiwR,GAIhB,OAHKc,GACJC,IAEGlC,IAAQC,GAAOC,IAAQC,EACnBgB,EAEG,IAAPA,EACI,EAEG,IAAPA,EACI,EAGDJ,EAAWG,EAASC,GAAKlB,EAAKE,IAGtCjvR,EAAEkxR,iBAAmB,WACpB,MAAO,CAAC,CAACnkQ,EAAG+hQ,EAAKn7L,EAAGo7L,GAAM,CAAChiQ,EAAGiiQ,EAAKr7L,EAAGs7L,KAGvC,IAAIlzQ,EAAM,kBAAoB,CAAC+yQ,EAAKC,EAAKC,EAAKC,GAAO,IAKrD,OAJAjvR,EAAEiP,SAAW,WACZ,OAAO8M,GAGD/b,EA2IR,SAASyrR,EAAUtuR,EAAO03H,GACzB,IAAI2pJ,EAASrhR,EAiCb,OA7BI6/Q,EAAK5iL,SAASj9F,GAEZ4+Q,EAASwC,QAAQphR,KACrBqhR,GAAS,GAGVA,EADUxB,EAAK38Q,QAAQlD,IAA2B,IAAjBA,EAAMhE,OAC9B01R,EAAalpR,MAAM,KAAMxI,GACxB6/Q,EAAK38Q,QAAQlD,IAA2B,IAAjBA,EAAMhE,OAI9B2mR,EAAkBn6Q,MAAM,KAAMxI,EAAM4I,OAAO,CAAC8uH,QAC3CmoJ,EAAK38Q,QAAQlD,IAA2B,IAAjBA,EAAMhE,SAE9BooR,EAAe57Q,MAAM,KAAMxI,IAOtB,IAAXqhR,IAEFA,EADGzC,EAASwC,QAAQxC,EAASjmJ,SAAS0oJ,QAC7BzC,EAASjmJ,SAAS0oJ,OAElBhB,GAIJgB,EAs5FR,SAASyP,EAAKxoC,GAOb,GAAIA,EAAW,CAId,IAAI+2B,EAAcT,EAASt2B,YAA2B,IAAdA,EAAqBA,EAAYywB,EAAY/mJ,MAMjFgiK,EAAcpV,EAASzQ,MAAM7zI,MAAMt+H,OAKnCg4R,EAAc,MACjBpV,EAASzQ,MAAM7zI,MA9mHlB,SAA4BzlG,GAK3B,IAJA,IAAI3sB,GAAS,EACXlM,EAAS64B,EAAQA,EAAM74B,OAAS,EAChCuH,EAAS,KAEF2E,EAAQlM,GAAQ,CACxB,IAAIgE,EAAQ60B,EAAM3sB,GAEdlI,GACHuD,EAAOjH,KAAK0D,GAId,OAAOuD,EAimHkB0wR,CAAmBrV,EAASzQ,MAAM7zI,OACzD05J,EAAcpV,EAASzQ,MAAM7zI,MAAMt+H,QAIpC,IAAK,IAAIF,EAAI,EAAGA,EAAIk4R,EAAal4R,IAEhC,GAAK8iR,EAASzQ,MAAM7zI,MAAMx+H,GAA1B,CAQA,IAAIo4R,EAAgBtV,EAASzQ,MAAM7zI,MAAMx+H,GACvCM,EAAO83R,EAAc,GACrBp3Q,EAAOo3Q,EAAc,GACrBC,EAAYD,EAAc,GAC1BE,GAAaD,EACbE,EAAkB,KAClBC,EAAcJ,EAAc,GAC5BK,EAAuBL,EAAc,GAiBvC,GALKC,IACJA,EAAYvV,EAASzQ,MAAM7zI,MAAMx+H,GAAG,GAAKujR,EAAc,IAIpDiV,EAAa,CAChB,IAA2B,IAAvBA,EAAY/R,OAOf,SALA4R,EAAYD,EAAc,GAAK/hR,KAAKuzH,MAAM25I,EAAckV,EAAuB,IAG/EL,EAAc,GAAK,KAMrBK,EAAuBL,EAAc,GAAK7U,EAAc8U,EAYxD,IAPA,IAAItQ,EAAkB1xQ,KAAKo1B,IAAI,EAAyBzqB,EAAK46G,SAAU,GAO9D7hH,EAAI,EAAG2+Q,EAAap4R,EAAKJ,OAAQ6Z,EAAI2+Q,EAAY3+Q,IAAK,CAC9D,IAAI+rQ,EAAkBxlR,EAAKyZ,GACzByiD,EAAUspN,EAAgBtpN,QAI5B,GAAKqC,EAAKrC,GAAV,CAIA,IAAIm8N,GAA0B,EAQ9B,GAAI33Q,EAAKyqG,UAAYvoH,GAA8B,OAAjB8d,EAAKyqG,SAAqC,SAAjBzqG,EAAKyqG,QAAoB,CACnF,GAAqB,SAAjBzqG,EAAKyqG,QAAoB,CAG5B81J,EAAEx6P,KAFe,CAAC,cAAe,WAAY,cAAe,iBAEzC,SAAS/mB,EAAG44R,GAC9BxT,EAAI8H,iBAAiB1wN,EAAS,UAAWo8N,MAI3CxT,EAAI8H,iBAAiB1wN,EAAS,UAAWx7C,EAAKyqG,SAa/C,IAAK,IAAI7mH,KATLoc,EAAK01M,aAAexzN,GAAiC,WAApB8d,EAAK01M,YACzC0uD,EAAI8H,iBAAiB1wN,EAAS,aAAcx7C,EAAK01M,YAQ7BovD,EAEpB,GAAIA,EAAgBzlR,eAAeuE,IAA0B,YAAbA,EAAwB,CACvE,IACEgrR,EADEiJ,EAAQ/S,EAAgBlhR,GAI1B2gR,EAASxB,EAAK5iL,SAAS03L,EAAMtT,QAAUzC,EAASwC,QAAQuT,EAAMtT,QAAUsT,EAAMtT,OAMhF,GAAIxB,EAAK5iL,SAAS03L,EAAMltI,SAAU,CACjC,IAAImtI,EAAqC,IAApB/Q,EACnB,SAASjpB,EAAI1yP,EAAOw9H,GACnB,IAAIniI,EAASoxR,EAAMlJ,SAASvjR,GAE5B,OAAOw9H,EAAQvzH,KAAKuzH,MAAMniI,GAAUA,GAErC,SAASq3P,EAAI1yP,EAAOw9H,GACnB,IAAIqoJ,EAAa4G,EAAM5G,WAAW7lR,GAChC2sR,EAAaF,EAAMlJ,SAASvjR,GAAS6lR,EACrCxqR,EAASwqR,EAAc8G,EAAaxT,EAAOwC,EAAiB/mQ,EAAM+3Q,GAEpE,OAAOnvJ,EAAQvzH,KAAKuzH,MAAMniI,GAAUA,GAGvCmoR,EAAeiJ,EAAMltI,QAAQ1+I,QAAQ,eAAgB6rR,QAC/C,GAAwB,IAApB/Q,EAGV6H,EAAeiJ,EAAMlJ,aACf,CAEN,IAAIoJ,EAAaF,EAAMlJ,SAAWkJ,EAAM5G,WAExCrC,EAAeiJ,EAAM5G,WAAc8G,EAAaxT,EAAOwC,EAAiB/mQ,EAAM+3Q,GAG/E,IAAKT,GAAc1I,IAAiBiJ,EAAMjJ,aACzC,SAOD,GAJAiJ,EAAMjJ,aAAeA,EAIJ,UAAbhrR,EACH2zR,EAAkB3I,MACZ,CAIN,IAAIxF,EAOJ,GAAIhF,EAAI4D,MAAME,WAAWtkR,GAAW,CACnCwlR,EAAWhF,EAAI4D,MAAMS,QAAQ7kR,GAE7B,IAAImhR,EAAyBlnN,EAAKrC,GAASupN,uBAAuBqE,GAE9DrE,IACH8S,EAAM7O,kBAAoBjE,GAU5B,IAAIiT,EAAkB5T,EAAI8H,iBAAiB1wN,EACzC53D,EACAi0R,EAAMjJ,cAAgB3M,EAAK,GAAkC,IAA7BxxF,WAAWm+F,GAAsB,GAAKiJ,EAAM3G,UAC5E2G,EAAM7O,kBACN6O,EAAMnL,YAOJtI,EAAI4D,MAAME,WAAWtkR,KAEpBwgR,EAAIoF,eAAetB,WAAWkB,GACjCvrN,EAAKrC,GAASupN,uBAAuBqE,GAAYhF,EAAIoF,eAAetB,WAAWkB,GAAU,UAAW,KAAM4O,EAAgB,IAE1Hn6N,EAAKrC,GAASupN,uBAAuBqE,GAAY4O,EAAgB,IASxC,cAAvBA,EAAgB,KACnBL,GAA0B,IAa1B33Q,EAAK0kQ,UAEJ7mN,EAAKrC,GAASwpN,eAAeiT,cAAgB/1R,IAEhD27D,EAAKrC,GAASwpN,eAAeiT,YAAc,kBAE3CN,GAA0B,GAIxBA,GACHvT,EAAI0I,oBAAoBtxN,IAMtBx7C,EAAKyqG,UAAYvoH,GAA8B,SAAjB8d,EAAKyqG,UACtCq3J,EAASzQ,MAAM7zI,MAAMx+H,GAAG,GAAGyrH,SAAU,GAElCzqG,EAAK01M,aAAexzN,GAAiC,WAApB8d,EAAK01M,aACzCosD,EAASzQ,MAAM7zI,MAAMx+H,GAAG,GAAG02N,YAAa,GAIrC11M,EAAKwkQ,UACRxkQ,EAAKwkQ,SAASllR,KAAK83R,EAAc,GAC/BA,EAAc,GACdrQ,EACA1xQ,KAAKC,IAAI,EAAI+hR,EAAYr3Q,EAAK46G,SAAY2nJ,GAC1C8U,EACAE,GAIqB,IAApBxQ,GACH8H,EAAa7vR,IAMZ8iR,EAASzQ,MAAM6S,WAClB+P,EAAOD,GAST,SAASnF,EAAayB,EAAW4H,GAEhC,IAAKpW,EAASzQ,MAAM7zI,MAAM8yJ,GACzB,OAAO,EAeR,IAXA,IAAIhxR,EAAOwiR,EAASzQ,MAAM7zI,MAAM8yJ,GAAW,GACzCzxN,EAAWijN,EAASzQ,MAAM7zI,MAAM8yJ,GAAW,GAC3CtwQ,EAAO8hQ,EAASzQ,MAAM7zI,MAAM8yJ,GAAW,GACvC9/E,EAAWsxE,EAASzQ,MAAM7zI,MAAM8yJ,GAAW,GAEzC6H,GAAsB,EAMjBn5R,EAAI,EAAG04R,EAAap4R,EAAKJ,OAAQF,EAAI04R,EAAY14R,IAAK,CAC9D,IAAIw8D,EAAUl8D,EAAKN,GAAGw8D,QAKjB08N,GAAcl4Q,EAAKykQ,OACF,SAAjBzkQ,EAAKyqG,SACR25J,EAAI8H,iBAAiB1wN,EAAS,UAAWx7C,EAAKyqG,SAGvB,WAApBzqG,EAAK01M,YACR0uD,EAAI8H,iBAAiB1wN,EAAS,aAAcx7C,EAAK01M,aASnD,IAAI/2N,EAAOk/D,EAAKrC,GAEhB,IAAkB,IAAdx7C,EAAKykQ,OAAkBlE,EAAEtvQ,MAAMuqD,GAAS,KAAOt5D,IAAc,4BAA4Bif,KAAKo/P,EAAEtvQ,MAAMuqD,GAAS,MAE9G78D,EAAM,CACTA,EAAKkmR,aAAc,EAEnBlmR,EAAKomR,uBAAyB,GAE9B,IAAIqT,GAA4B,EAEhC7X,EAAEx6P,KAAKq+P,EAAIwD,MAAME,cAAc,SAAS9oR,EAAG8qR,GAC1C,IAAIxqP,EAAe,SAASne,KAAK2oQ,GAAiB,EAAI,EACpD8E,EAAejwR,EAAKqmR,eAAe8E,GAEjCnrR,EAAKqmR,eAAe8E,KAAmB5nR,GAAa,IAAI4I,OAAO,OAASw0B,EAAe,QAAQne,KAAKytQ,KACvGwJ,GAA4B,SAErBz5R,EAAKqmR,eAAe8E,OAKzB9pQ,EAAK0kQ,WACR0T,GAA4B,SACrBz5R,EAAKqmR,eAAeiT,aAIxBG,GACHhU,EAAI0I,oBAAoBtxN,GAIzB4oN,EAAI6E,OAAO4C,YAAYrwN,EAAS,sBAUlC,IAAK08N,GAAal4Q,EAAKsmJ,WAAatmJ,EAAKykQ,MAASzlR,IAAM04R,EAAa,EAEpE,IACC13Q,EAAKsmJ,SAAShnK,KAAKu/D,EAAUA,GAC5B,MAAOz9D,GACRe,YAAW,WACV,MAAMf,IACJ,GASDovM,IAA0B,IAAdxwL,EAAKykQ,MACpBj0E,EAAS3xI,GAONlgE,IAAsB,IAAdqhB,EAAKykQ,OAAkByT,IAGlC3X,EAAEx6P,KAAKpnB,EAAKmmR,iBAAiB,SAASrvQ,EAAc4iR,GACnD,GAAI,UAAUl3Q,KAAK1L,KAAmBg7K,WAAW4nG,EAAepH,YAAcxgG,WAAW4nG,EAAe1J,WAAa,KAAQ,EAAI,CAChI,IAAI2J,EAAgBD,EAAepH,WAEnCoH,EAAepH,WAAaoH,EAAe1J,SAC3C0J,EAAe1J,SAAW2J,EAGvB,sBAAsBn3Q,KAAK1L,IAAyD,MAAxCg7K,WAAW4nG,EAAe1J,WAAiD,MAA5B0J,EAAenH,WAC7GmH,EAAe1J,SAAW,EAC1B0J,EAAepH,WAAa,QAI9BnP,EAAStmN,EAAS,UAAW,CAACipN,MAAM,EAAMjoP,MAAOxc,EAAKwc,UAUpC,IAAfxc,EAAK/O,OACRsvQ,EAAEU,QAAQzlN,EAASx7C,EAAK/O,OAU1B6wQ,EAASzQ,MAAM7zI,MAAM8yJ,IAAa,EAIlC,IAAK,IAAIv3Q,EAAI,EAAGm+Q,EAAcpV,EAASzQ,MAAM7zI,MAAMt+H,OAAQ6Z,EAAIm+Q,EAAan+Q,IAC3E,IAAgC,IAA5B+oQ,EAASzQ,MAAM7zI,MAAMzkH,GAAc,CACtCo/Q,GAAsB,EAEtB,OAI0B,IAAxBA,IAEHrW,EAASzQ,MAAM6S,WAAY,SAGpBpC,EAASzQ,MAAM7zI,MACtBskJ,EAASzQ,MAAM7zI,MAAQ,IAp3HxB8iJ,OAAO7vQ,GAAG0jR,SAAW7T,OAAO7vQ,GAAGk9Q,QAvP1B,CAuuIJ1pR,OAAOq8Q,QAAUr8Q,OAAOs0R,OAASt0R,OAASA,OAASA,OAASA,OAAOtD,cAAWuB,O,6BCzpJlF/C,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEIkG,EAAUhE,EAFD,EAAQ,IAMjB6oD,EAAqB7oD,EAFD,EAAQ,KAM5B4oD,EAAc5oD,EAFD,EAAQ,IAMrBs8B,EAAUt8B,EAFD,EAAQ,IAIjBgpD,EAAmB,EAAQ,GAE/B,SAAShpD,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvF1E,EAAQsE,SAAU,EAAI4pD,EAAmB5pD,SAAS,CAC9CiqD,YAAa,cACbC,UAAW,CACP/sC,MAAOwsC,EAAY3pD,QAAQytC,OAC3Bq6D,YAAan+C,EAAY3pD,QAAQm0R,UAAU,CAACxqO,EAAY3pD,QAAQm3D,QAASxN,EAAY3pD,QAAQytC,SAC7FmsF,OAAQjwE,EAAY3pD,QAAQytC,OAC5Bo8B,MAAOlgB,EAAY3pD,QAAQo4D,KAC3BtN,WAAYnB,EAAY3pD,QAAQm4D,KAAK/N,YAGzC0yG,gBAAiB,WACb,MAAO,CACHjzF,OAAO,EACP1sD,MAAO,KACP2qF,YAAa,KACb8xB,OAAQ,OAIhB7uE,OAAQ,WACJ,IAAIE,EAAa5tB,EAAQr9B,QAAQ2J,aAAa,4BAC9C,OAAO5E,EAAQ/E,QAAQzD,cACnB0uD,EACA,CAAEllD,UAAW,iBAAkB+kD,WAAY3/C,KAAK3K,MAAMsqD,WAClD3tC,MAAOhS,KAAK3K,MAAM2c,QAAS,EAAI4sC,EAAiB1oD,IAAI,SACpD47J,UAAW,qBAEfl4J,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,oBAAqBgmD,GAAI,qBACtC5gD,KAAK3K,MAAMsnG,cAAe,EAAI/9C,EAAiB1oD,IAAI,2BAEvD0D,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,qBACbhB,EAAQ/E,QAAQzD,cACZ,SACA,CAAEwJ,UAAW,oBAAqB6oD,QAASzjD,KAAK3K,MAAMsqD,WAAYspO,UAAWjpR,KAAK3K,MAAMqpE,OACxF1+D,KAAK3K,MAAMo5H,SAAU,EAAI7vE,EAAiB1oD,IAAI,YAgClE1F,EAAOD,QAAUA,EAAiB,S,6BC9FlCZ,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEImC,EAAWD,EAFD,EAAQ,KAMlB2nD,EAAmB3nD,EAFD,EAAQ,IAM1Bg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxB4nD,EAA8B5nD,EAFA,EAAQ,IAMtC8nD,EAAa9nD,EAFA,EAAQ,IAMrBisG,EAAQjsG,EAFD,EAAQ,KAMfszR,EAAgBtzR,EAFD,EAAQ,MAMvBgE,EAAUhE,EAFD,EAAQ,IAMjB4oD,EAAc5oD,EAFD,EAAQ,IAMrBq/F,EAAoBr/F,EAFD,EAAQ,KAM3BuzR,EAAoBvzR,EAFD,EAAQ,OAM3Bs+M,EAAqBt+M,EAFD,EAAQ,KAM5By8B,EAAUz8B,EAFD,EAAQ,KAIjBgpD,EAAmB,EAAQ,GAI3B1sB,EAAUt8B,EAFD,EAAQ,IAMjBwzR,EAAkBxzR,EAFD,EAAQ,MAMzByzR,EAAezzR,EAFD,EAAQ,MAMtB0zR,EAAmB1zR,EAFD,EAAQ,MAM1BmiH,EAAgBniH,EAFD,EAAQ,KAMvB+oD,EAAe/oD,EAFD,EAAQ,KAMtBs+G,EAAsBt+G,EAFD,EAAQ,MAM7BouG,EAAepuG,EAFD,EAAQ,KAItBu+G,EAAuB,EAAQ,KAI/B38G,EAAkB5B,EAFD,EAAQ,KAI7B,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvF,IAAIs0R,EAA0B,CAAC,SAAU,SAoBrCC,EAAU,SAAU7pJ,GAGpB,SAAS6pJ,EAAQn0R,IACb,EAAIu8B,EAAiB/8B,SAASmL,KAAMwpR,GAGpC,IAAInqO,GAAQ,EAAI7B,EAA4B3oD,SAASmL,MAAOwpR,EAAQtqR,YAAa,EAAIq+C,EAAiB1oD,SAAS20R,IAAU15R,KAAKkQ,KAAM3K,IAkBpI,OAhBAgqD,EAAMoqO,YAAc,UAAYpqO,EAAMhqD,MAAMurD,GAE5CvB,EAAMQ,MAAQR,EAAMqqO,aAAar0R,GAEjCgqD,EAAMsqO,UAAYtqO,EAAMsqO,UAAU11R,KAAKorD,GACvCA,EAAMuqO,UAAYvqO,EAAMuqO,UAAU31R,KAAKorD,GACvCA,EAAMwqO,aAAexqO,EAAMwqO,aAAa51R,KAAKorD,GAC7CA,EAAMyqO,eAAiBzqO,EAAMyqO,eAAe71R,KAAKorD,GACjDA,EAAM0qO,eAAiB1qO,EAAM0qO,eAAe91R,KAAKorD,GACjDA,EAAM2qO,iBAAmB3qO,EAAM2qO,iBAAiB/1R,KAAKorD,GACrDA,EAAM4qO,eAAiB5qO,EAAM4qO,eAAeh2R,KAAKorD,GACjDA,EAAM6qO,iBAAmB7qO,EAAM6qO,iBAAiBj2R,KAAKorD,GACrDA,EAAM8qO,uBAAyB9qO,EAAM8qO,uBAAuBl2R,KAAKorD,GACjEA,EAAM+qO,wBAA0B/qO,EAAM+qO,wBAAwBn2R,KAAKorD,GACnEA,EAAMgrO,qBAAuBhrO,EAAMgrO,qBAAqBp2R,KAAKorD,GAC7DA,EAAMirO,qBAAuBjrO,EAAMirO,qBAAqBr2R,KAAKorD,GACtDA,EA8qBX,OAtsBA,EAAI3B,EAAW7oD,SAAS20R,EAAS7pJ,IAmCjC,EAAI9tG,EAAch9B,SAAS20R,EAAS,CAAC,CACjCx1R,IAAK,eACLN,MAAO,SAAsBq6J,GACzB,IAAIw8H,EAAqB,CAACx8H,EAAS/4D,KAAKzuC,OAAQ+iC,mBAAmBykE,EAASpxJ,MAAMJ,KAAK,KACnFiuR,EAAsBl2P,aAAagqG,QAAQisJ,GAE3CE,EAAmBv4P,EAAQr9B,QAAQ2J,aAAa,6BACpD,MAAO,CACHksR,cAAc,EAEdv+J,QAASnsH,KAAK3K,MAAMkiH,oBAAsBkzK,EAAiBE,UAAU3qR,KAAKypR,aAC1E5zK,UAAW71G,KAAK4qR,eAAe78H,EAASpxJ,KACxC4tR,mBAAoBA,EAGpBC,oBAA6C,SAAxBA,GAAkCz8H,EAASx6H,SAAWw6H,EAASv2C,cACpF5lH,MAAO,KACPi5R,UAAU,EACVC,gBAAiB/8H,EAAS+8H,mBAUnC,CACC92R,IAAK,iBACLN,MAAO,SAAwBq3R,GAC3B,OAAO72K,EAAoBr/G,QAAQm2R,oBAAoBhrR,KAAK3K,MAAMurD,GAAImqO,KAc3E,CACC/2R,IAAK,iBACLN,MAAO,SAAwBu3R,GAC3B,IAAI7rR,EAAIyiG,EAAMhtG,QAAQoI,MAAMguR,GAC5B,IAAK7rR,EAED,OADA7K,QAAQ3C,MAAM,iBAAkB,cAAeq5R,GACxCppL,EAAMhtG,QAGjB,IAAIw0F,EAAS6/L,EAAcr0R,QAAQoI,MAAMmC,EAAEgxF,OAS3C,OAPA/G,EAAO8rB,SAAWn1G,KAAK3K,MAAMurD,GAG7ByoC,EAAO6hM,UAAYz2R,OAAOqgC,SAASw7D,KAAKz3F,MAAM,IAAK,GAAG,GACtDuG,EAAE+wF,YAASz9F,EACX0M,EAAEgxF,MAAQ/G,EAEHjqF,EAAEsxF,WAEd,CACC18F,IAAK,iBACLN,MAAO,WACH,IAAIy3R,EAAwB12R,OAAOqgC,SAASg7D,SAExCs7L,EADIvpL,EAAMhtG,QAAQoI,MAAM+C,KAAK3K,MAAMsH,KACVmzF,SAC7B,MAA8B,WAA1Bq7L,GAA+D,WAAzBC,IACtC72R,QAAQ+F,KAAK,sCAAuC6wR,EAAuBC,EAAsB32R,OAAOqgC,SAAU90B,KAAK3K,MAAMsH,MACtH,KAIhB,CACC3I,IAAK,qBACLN,MAAO,WAECsM,KAAK3K,MAAMk4H,MAAQvtH,KAAK6/C,MAAM2qO,qBAC9BxqR,KAAKqrR,mBAGd,CACCr3R,IAAK,oBACLN,MAAO,WAEHsM,KAAKkoJ,cAAgBvpG,EAAa9pD,QAAQ66H,SAAS1vH,KAAK2pR,aAE7D,CACC31R,IAAK,uBACLN,MAAO,YAEHirD,EAAa9pD,QAAQ64G,WAAW1tG,KAAKkoJ,eAGhCh0C,EAAoBr/G,QAAQy2R,qBAAqBtrR,KAAK3K,MAAMurD,OAC7DszD,EAAoBr/G,QAAQszJ,wBAAwBnoJ,KAAK3K,MAAMurD,IACxC1uB,EAAQr9B,QAAQ2J,aAAa,6BACnC+sR,eAAevrR,KAAKypR,gBAS9C,CACCz1R,IAAK,iBACLN,MAAO,WACH,IAAIqqD,EAAS/9C,KAEb,IAAK+3G,EAAcljH,QAAQ22R,YAAYxrR,KAAK3K,MAAMsH,KAO9C,OANApI,QAAQ+F,KAAK,+CAAgDunG,EAAMhtG,cACnEmL,KAAKu/C,SAAS,CACV3tD,MAAO,KACPikH,UAAW71G,KAAK4qR,eAAe5qR,KAAK3K,MAAMsH,KAC1C+tR,cAAc,IAKtB,IAAItxK,EAAWjF,EAAqBW,oBAAoBC,iBACxD,IAAKqE,EAASQ,aAOV,OANArlH,QAAQ+F,KAAK,oDAAqDunG,EAAMhtG,cACxEmL,KAAKu/C,SAAS,CACV3tD,MAAO,KACPikH,UAAW71G,KAAK4qR,eAAe5qR,KAAK3K,MAAMsH,KAC1C+tR,cAAc,IAQjB1qR,KAAKyrR,gBACNzrR,KAAKyrR,cAAgBryK,EAASpE,oBAAoBoY,mBAEtDptH,KAAKyrR,cAAcC,iBAAiB/tR,MAAK,SAAU00I,GAE/Ct0F,EAAO0tO,cAAcE,YAAct5I,EACnC,IAAIjzI,EAAIyiG,EAAMhtG,QAAQoI,MAAM8gD,EAAO6sO,eAAe7sO,EAAO1oD,MAAMsH,MAC3D0sF,EAAS6/L,EAAcr0R,QAAQoI,MAAMmC,EAAEgxF,OACtC/G,EAAOuiM,eACRviM,EAAOuiM,aAAetiM,mBAAmB+oD,GAEzCjzI,EAAE+wF,YAASz9F,EACX0M,EAAEgxF,MAAQ/G,GAGdtrC,EAAOwB,SAAS,CACZ3tD,MAAO,KACPikH,UAAWz2G,EAAEsxF,SACbg6L,cAAc,KAIb3sO,EAAO8B,MAAMirO,iBAAmBzhM,EAAO1sF,KACxCohD,EAAO8tO,kBAAkBxiM,EAAO1sF,QAErC,SAAUrI,GACTC,QAAQ3C,MAAM,6BAA8B0C,GAC5CypD,EAAOwB,SAAS,CACZ3tD,MAAO0C,EAAI/B,QACXm4R,cAAc,SAI3B,CACC12R,IAAK,4BACLN,MAAO,SAAmCw8M,GAClCA,EAAUvzM,MAAQqD,KAAK3K,MAAMsH,KAC7BqD,KAAK0pR,aAAax5E,GAEdlwM,KAAK3K,MAAMk4H,MAAQvtH,KAAK6/C,MAAM2qO,qBAC9BxqR,KAAKqrR,kBAEFn7E,EAAU3iF,OAASvtH,KAAK3K,MAAMk4H,MACjCvtH,KAAK3K,MAAMkiH,mBACXv3G,KAAKu/C,SAAS,CACV4sE,SAAS,IAIbnsH,KAAK6/C,MAAM2qO,qBACXxqR,KAAKqrR,kBAEFn7E,EAAU46E,kBAAoB9qR,KAAK3K,MAAMy1R,iBAChD9qR,KAAKu/C,SAAS,CACVurO,gBAAiB56E,EAAU46E,oBAIxC,CACC92R,IAAK,iBACLN,MAAO,WAEH,SAAIsM,KAAK3K,MAAMwiH,YAAc5iB,EAAkBpgG,QAAQvB,MAAMggC,YAAYC,SAAWvzB,KAAK3K,MAAMmiH,gBAIxFO,EAAcljH,QAAQokO,qBAAqBj5N,KAAK3K,MAAM2/F,KAAKzuC,UAEvE,CACCvyD,IAAK,eACLN,MAAO,SAAsBhD,GACzB6D,QAAQsD,IAAI,kBAAmBmI,KAAK3K,MAAMurD,IACtC5gD,KAAK3K,MAAMy2R,YACX9rR,KAAK3K,MAAMy2R,cAGPt0R,EAAgB3C,QAAQm1N,iBAAiB,qCACzC71G,EAAqBW,oBAAoBC,iBAAiBg3K,QAAQ/rR,KAAK3K,MAAM2/F,KAAM,QAAUh1F,KAAK3K,MAAMjD,KAAM4N,KAAK3K,MAAMurD,IAEzHuzD,EAAqBW,oBAAoBC,iBAAiBC,oBAAoBmG,KAAKn7G,KAAK3K,MAAM2/F,KAAM,QAAUh1F,KAAK3K,MAAMjD,KAAM4N,KAAK3K,MAAMurD,MAIvJ,CACC5sD,IAAK,mBACLN,MAAO,SAA0BhD,GAC7B6D,QAAQ+F,KAAK,8BACb45G,EAAoBr/G,QAAQm3R,mBAAmBhsR,KAAK3K,MAAMurD,IAAIqrO,gBAAgBzsO,OAAM,SAAUlrD,GAC1FC,QAAQ3C,MAAM,2BAA4B0C,MAC3C0C,MAAK,SAAUk1R,GACdvtO,EAAa9pD,QAAQopD,SAAS,CAC1BD,OAAQ,mBACRshG,KAAM4sI,IACP,QAQZ,CACCl4R,IAAK,iBACLN,MAAO,WACH,IAAI0/D,EAASpzD,KAEb,GAAIA,KAAK3K,MAAM82R,cACXnsR,KAAK3K,MAAM82R,qBACR,GAAInsR,KAAKosR,iBAAkB,CAE9B,IAAI59J,EAAiBt8F,EAAQr9B,QAAQ2J,aAAa,0BAClD6zB,EAAQx9B,QAAQ6nG,oBAAoB,gBAAiB,GAAI8xB,EAAgB,CACrEx8G,OAAO,EAAI4sC,EAAiB1oD,IAAI,iBAChCymG,aAAa,EAAI/9C,EAAiB1oD,IAAI,yGACtCu4H,QAAQ,EAAI7vE,EAAiB1oD,IAAI,iBACjCypD,WAAY,SAAoB+uE,GACvBA,IAGLt7D,EAAO7T,SAAS,CAAEsrO,UAAU,IAKxBz3N,EAAOupK,KAAK0vD,WAOZj5N,EAAOupK,KAAK0vD,SAAS56R,IAAM,eAG/BsmH,EAAcljH,QAAQ84H,cAAcv6D,EAAO/9D,MAAM2/F,KAAKzuC,OAAQ6M,EAAO/9D,MAAMurD,IAAIpB,OAAM,SAAU9uD,GAC3F6D,QAAQ3C,MAAM,0BAA2BlB,GACzC,IAAI+rG,EAAcvqE,EAAQr9B,QAAQ2J,aAAa,uBAE/C6zB,EAAQx9B,QAAQ6nG,oBAAoB,0BAA2B,GAAID,EAAa,CAC5EzqF,OAAO,EAAI4sC,EAAiB1oD,IAAI,2BAChCymG,aAAa,EAAI/9C,EAAiB1oD,IAAI,0EAE3Cs3G,SAAQ,WACPp6C,EAAO7T,SAAS,CAAEsrO,UAAU,cAMjD,CACC72R,IAAK,iBACLN,MAAO,WACCsM,KAAK3K,MAAM82R,cACXnsR,KAAK3K,MAAM82R,iBAEX53R,QAAQsD,IAAI,iCAAkCmI,KAAK3K,MAAMurD,IACzD5gD,KAAKoqR,6BAQd,CACCp2R,IAAK,YACLN,MAAO,WAIHwgH,EAAoBr/G,QAAQyzJ,mBAAmBtoJ,KAAK3K,MAAMurD,IAC1D5gD,KAAKssR,wBAELp4K,EAAoBr/G,QAAQ03R,UAAUvsR,KAAK3K,MAAMurD,GAAI5gD,KAAK3K,MAAM2/F,KAAKzuC,QACrEvmD,KAAKu/C,SAAS,CAAE4sE,SAAS,MAE9B,CACCn4H,IAAK,wBACLN,MAAO,WACH,IAAImyF,EAAS7lF,KAITwsR,EAAkB,IAAIrD,EAAkBt0R,QAAQmL,KAAK3K,MAAMurD,GAAI5gD,KAAK3K,MAAMsH,IAAKqD,KAAK3K,MAAMwiH,WAAY73G,KAAK28N,KAAK0vD,SAASnxK,eAC7HhH,EAAoBr/G,QAAQ43R,mBAAmBzsR,KAAK3K,MAAMurD,GAAI4rO,GAC9DA,EAAgBE,kBAAkB11R,MAAK,SAAU21R,GAC7Cp4R,QAAQsD,IAAI,UAAYguF,EAAOxwF,MAAMurD,GAAK,4BAA8B+rO,GACxEA,EAAwBA,GAAyB,GAGjD,IAAIC,EAA+B,GAE/B/mM,EAAOxwF,MAAMw3R,uBAAyBhnM,EAAOxwF,MAAMw3R,sBAAsBn9R,OAAS,IAClFk9R,EAA+BD,EAAsB7zQ,QAAO,SAAUpoB,GAClE,OAAOsP,KAAK5G,QAAQ1I,IAAM,IAC3Bm1F,EAAOxwF,MAAMw3R,wBAEiBn9R,OAAS,GACtC6E,QAAQ+F,KAAK,UAAYurF,EAAOxwF,MAAMurD,GAAK,gDAAkDgsO,GAMrG14K,EAAoBr/G,QAAQi4R,sBAAsBjnM,EAAOxwF,MAAMurD,GAAIgsO,GAE/D/mM,EAAOxwF,MAAM03R,qBACblnM,EAAOxwF,MAAM03R,oBAAoBJ,MAEtCntO,OAAM,SAAUlrD,GACfC,QAAQsD,IAAI,8CAAgDguF,EAAOxwF,MAAMjD,KAAMyzF,EAAOxwF,MAAMurD,GAAItsD,QAGzG,CACCN,IAAK,YACLN,MAAO,SAAmBmqD,GACtB,GAAIA,EAAQs3D,WAAan1G,KAAK3K,MAAMurD,GAChC,OAAQ/C,EAAQG,QACZ,IAAK,YACGh+C,KAAKgtR,eAAe,aACpBruO,EAAa9pD,QAAQopD,SAAS,CAAED,OAAQ,uBAAwB7uD,KAAM0uD,EAAQ1uD,OAE9EoF,QAAQ+F,KAAK,mDAYlC,CACCtG,IAAK,oBACLN,MAAO,SAA2BiJ,GAC9B,IAAIoqF,EAAS/mF,KAEbA,KAAKyrR,cAAcwB,mBAAmBtwR,GAAK3F,MAAK,SAAU8zR,GAClDA,GACA/jM,EAAOxnC,SAAS,CAAEurO,gBAAiBA,OAExC,SAAUx2R,GACTC,QAAQ3C,MAAM,2BAA4B0C,QAMnD,CACCN,IAAK,yBACLN,MAAO,WACHa,QAAQ+F,KAAK,wCAAyC0F,KAAK6/C,MAAMg2D,WACjEvhF,aAAa6pG,QAAQn+H,KAAK6/C,MAAM0qO,oBAAoB,GACpDvqR,KAAKu/C,SAAS,CAAEirO,qBAAqB,IAErCxqR,KAAKqrR,mBAEV,CACCr3R,IAAK,0BACLN,MAAO,WACHa,QAAQ+F,KAAK,wCAAyC0F,KAAK6/C,MAAMg2D,WACjEvhF,aAAa6tG,WAAWniI,KAAK6/C,MAAM0qO,oBACnCvqR,KAAKu/C,SAAS,CAAEirO,qBAAqB,IAGrCt2K,EAAoBr/G,QAAQszJ,wBAAwBnoJ,KAAK3K,MAAMurD,IACxC1uB,EAAQr9B,QAAQ2J,aAAa,6BACnC+sR,eAAevrR,KAAKypR,eAE1C,CACCz1R,IAAK,oBACLN,MAAO,WACH,IAAIw5R,EAAc,UAIlB,OAHIltR,KAAK3K,MAAM7C,MAAQwN,KAAK3K,MAAM7C,KAAKs/F,SACnCo7L,EAAcltR,KAAK3K,MAAM7C,KAAKs/F,QAE3Bo7L,IAEZ,CACCl5R,IAAK,iBACLN,MAAO,SAAwBypG,GAC3BA,EAAGzwC,iBAGCywC,EAAG7qG,SAAW0N,KAAK28N,KAAKwwD,WAKxBntR,KAAK3K,MAAMwiH,WACX73G,KAAKkqR,mBAELvrO,EAAa9pD,QAAQopD,SAAS,CAC1BD,OAAQ,aACRuvE,MAAOvtH,KAAK3K,MAAMk4H,UAI/B,CACCv5H,IAAK,cACLN,MAAO,WACH,IAAI05R,EAAkBvrL,EAAMhtG,QAAQoI,MAAM+C,KAAK6/C,MAAMg2D,WAAW,GAKhE,IAAIw3K,EAAgB,GAIpB,OAHmE,IAA/D9D,EAAwBnwR,QAAQg0R,EAAgBt9L,YAChDu9L,EAAgBxrL,EAAMhtG,QAAQ67F,OAAO08L,IAElCC,IAEZ,CACCr5R,IAAK,gBACLN,MAAO,WACH,IAAIlB,EAAOwN,KAAKstR,oBACZC,EAAc3zR,EAAQ/E,QAAQzD,cAC9B,OACA,KACA,OAEA4gB,EAAQ,GAKZ,OAJIhS,KAAK6/C,MAAMirO,iBAAmB9qR,KAAK6/C,MAAMirO,iBAAmB9qR,KAAKstR,sBACjEt7Q,EAAQhS,KAAK6/C,MAAMirO,iBAGhBlxR,EAAQ/E,QAAQzD,cACnB,OACA,KACAwI,EAAQ/E,QAAQzD,cACZ,IACA,KACAoB,GAEJoH,EAAQ/E,QAAQzD,cACZ,OACA,KACA4gB,EAAQu7Q,EAAc,GACtBv7Q,MAIb,CACChe,IAAK,mBACLN,MAAO,SAA0BhD,GACzBsP,KAAK3K,MAAMm4R,iBACXxtR,KAAK3K,MAAMm4R,oBAGpB,CACCx5R,IAAK,uBACLN,MAAO,SAA8BhD,IAGjC,EAAImF,EAAShB,SAAS1D,SAASC,cAAc,KAAM,CAAEkB,OAAQ,SAAUg+F,KAAMtwF,KAAKytR,cAAex6L,IAAK,aAAcoiI,UAEzH,CACCrhO,IAAK,uBACLN,MAAO,SAA8BhD,GAEjCsP,KAAK28N,KAAK0vD,SAAS56R,IAAMuO,KAAK28N,KAAK0vD,SAAS56R,MAEjD,CACCuC,IAAK,SACLN,MAAO,WACH,IAAIg6R,OAAc,EAGlB,GAAI1tR,KAAK6/C,MAAMgrO,SACX,OAAOjxR,EAAQ/E,QAAQzD,cAAc,MAAO,MAQhD,IAMIu8R,EAAmB,kBAAoB3tR,KAAK3K,MAAMu4R,SAAW,UAAY,KAE7E,GAAI5tR,KAAK3K,MAAMk4H,KAAM,CACjB,IAAIsgK,EAAiBj0R,EAAQ/E,QAAQzD,cACjC,MACA,CAAEwJ,UAAW,gCACbhB,EAAQ/E,QAAQzD,cAAck4R,EAAiBz0R,QAAS,CAAEggB,IAAK,gBAEnE,GAAK7U,KAAK6/C,MAAM2qO,qBAWT,GAAIxqR,KAAK6/C,MAAM6qO,aAClBgD,EAAc9zR,EAAQ/E,QAAQzD,cAC1B,MACA,CAAEwJ,UAAW+yR,GAAoB3tR,KAAK6/C,MAAMssE,QAAU,gBAAkB,KACxE0hK,QAGJ,GAAI7tR,KAAK8tR,iBACLJ,EAAc9zR,EAAQ/E,QAAQzD,cAC1B,MACA,CAAEwJ,UAAW+yR,GACb/zR,EAAQ/E,QAAQzD,cAAci4R,EAAax0R,QAAS,CAAEk5R,SAAU,gCAmBpE,GAhBAL,EAAc9zR,EAAQ/E,QAAQzD,cAC1B,MACA,CAAEwJ,UAAW+yR,GAAoB3tR,KAAK6/C,MAAMssE,QAAU,gBAAkB,KACxEnsH,KAAK6/C,MAAMssE,SAAW0hK,EACtBj0R,EAAQ/E,QAAQzD,cAAc,SAAU,CACpC6vB,IAAI,EACJ83E,MAzCC,iDA0CDp/D,IAAK,WACLloC,IAAKuO,KAAKytR,cACVO,gBAAiB,OACjBC,QAjDD,6GAkDCtzD,OAAQ36N,KAAK4pR,aAKjB5pR,KAAK3K,MAAMw3R,sBAAsBrrP,SAAS,sBAAuB,CACjE,IAAIipP,EAAmBv4P,EAAQr9B,QAAQ2J,aAAa,6BAGpDkvR,EAAc9zR,EAAQ/E,QAAQzD,cAC1B,MACA,CAAEwJ,UAAW,+BACbhB,EAAQ/E,QAAQzD,cACZq5R,EACA,CAAEyD,WAAYluR,KAAKypR,aACnBiE,SAnDiB,CACjC,IAAIjuI,EAAkBxqD,EAAkBpgG,QAAQvB,MAAMmsJ,gBAAgBz/I,KAAK3K,MAAM2/F,KAAKzuC,QACtFmnO,EAAc9zR,EAAQ/E,QAAQzD,cAC1B,MACA,CAAEwJ,UAAW+yR,GACb/zR,EAAQ/E,QAAQzD,cAAcg4R,EAAgBv0R,QAAS,CACnD4qJ,gBAAiBA,EACjB9iJ,IAAKqD,KAAK6/C,MAAMg2D,UAChBs4K,oBAAqBnuR,KAAKmqR,2BAoD1C,IAAIiE,EAAgBpuR,KAAKosR,iBACrBiC,EAAiB13P,QAAQ32B,KAAKyrR,eAAiB2C,GAC/CE,QAA8C57R,IAA1BsN,KAAK3K,MAAMk5R,YAA4BvuR,KAAK3K,MAAMk5R,aAAeH,EACrFI,QAA8C97R,IAA1BsN,KAAK3K,MAAMo5R,YAA4BzuR,KAAK3K,MAAMo5R,cAAgBH,EAEtFI,EAA4B1uR,KAAKgtR,eAAe,4BAA8BhtR,KAAK3K,MAAMk4H,KACzFohK,EAAqB3uR,KAAK3K,MAAMu5R,cAAgB5uR,KAAK3K,MAAMk4H,KAC3DshK,EAAqB7uR,KAAK3K,MAAMu5R,eAAiB5uR,KAAK3K,MAAMk4H,KAE5DuhK,OAAe,EAEfA,EADA9uR,KAAK3K,MAAMu4R,SACI,kBACR5tR,KAAK3K,MAAM05R,UACH,sBAEA,aAGnB,IAAIC,GAAiB,EAAIhrL,EAAanvG,SAAS,CAC3Co6R,mBAAmB,EACnBC,2BAA4BlvR,KAAK3K,MAAMk4H,OAG3C,OAAO3zH,EAAQ/E,QAAQzD,cACnB,MACA,CAAEwJ,UAAWk0R,EAAcluO,GAAI5gD,KAAK3K,MAAMurD,IAC1C5gD,KAAK3K,MAAM85R,aAAev1R,EAAQ/E,QAAQzD,cACtC,MACA,CAAEuoC,IAAK,WAAY/+B,UAAWo0R,EAAgBvrO,QAASzjD,KAAKiqR,gBAC5DrwR,EAAQ/E,QAAQzD,cACZ,OACA,CAAEwJ,UAAW,yBAA0BwqG,MAAO,CAAEgqL,gBAAepvR,KAAK3K,MAAMg6R,6BAA8B,QACxGV,GAAsB/0R,EAAQ/E,QAAQzD,cAAc8iN,EAAmBr/M,QAAS,CAC5E+F,UAAW,qEACXoX,OAAO,EAAI4sC,EAAiB1oD,IAAI,iBAChCutD,QAASzjD,KAAKkqR,mBAElB2E,GAAsBj1R,EAAQ/E,QAAQzD,cAAc8iN,EAAmBr/M,QAAS,CAC5E+F,UAAW,qEACXoX,OAAO,EAAI4sC,EAAiB1oD,IAAI,iBAChCutD,QAASzjD,KAAKkqR,mBAElBlqR,KAAK3K,MAAMi6R,WAAatvR,KAAKuvR,iBAEjC31R,EAAQ/E,QAAQzD,cACZ,OACA,CAAEwJ,UAAW,4BACboF,KAAK3K,MAAMm6R,YAAc51R,EAAQ/E,QAAQzD,cAAc8iN,EAAmBr/M,QAAS,CAC/E+F,UAAW,mEACXoX,OAAO,EAAI4sC,EAAiB1oD,IAAI,iBAChCutD,QAASzjD,KAAKsqR,uBAElBtqR,KAAK3K,MAAMo6R,YAAc71R,EAAQ/E,QAAQzD,cAAc8iN,EAAmBr/M,QAAS,CAC/E+F,UAAW,mEACXoX,OAAO,EAAI4sC,EAAiB1oD,IAAI,iBAChCutD,QAASzjD,KAAKqqR,uBAElBqE,GAA6B90R,EAAQ/E,QAAQzD,cAAc8iN,EAAmBr/M,QAAS,CACnF+F,UAAW,qEACXoX,OAAO,EAAI4sC,EAAiB1oD,IAAI,WAChCutD,QAASzjD,KAAKgqR,mBAElBqE,GAAkBz0R,EAAQ/E,QAAQzD,cAAc8iN,EAAmBr/M,QAAS,CACxE+F,UAAW,iEACXoX,OAAO,EAAI4sC,EAAiB1oD,IAAI,QAChCutD,QAASzjD,KAAK6pR,eAElByE,GAAoB10R,EAAQ/E,QAAQzD,cAAc8iN,EAAmBr/M,QAAS,CAC1E+F,UAAW,mEACXoX,OAAO,EAAI4sC,EAAiB1oD,IAAI,iBAChCutD,QAASzjD,KAAK8pR,iBAElB0E,GAAoB50R,EAAQ/E,QAAQzD,cAAc8iN,EAAmBr/M,QAAS,CAC1E+F,UAAW,mEACXoX,OAAO,EAAI4sC,EAAiB1oD,IAAI,wBAChCutD,QAASzjD,KAAK+pR,mBAI1B2D,OAILlE,EAvsBG,CAwsBZ5vR,EAAQ/E,QAAQwiC,WAElB9mC,EAAQsE,QAAU20R,EAGlBA,EAAQ1qO,YAAc,UAEtB0qO,EAAQzqO,UAAY,CAChB6B,GAAIpC,EAAY3pD,QAAQytC,OAAO2c,WAC/BtiD,IAAK6hD,EAAY3pD,QAAQytC,OAAO2c,WAChCzsD,KAAMgsD,EAAY3pD,QAAQytC,OAAO2c,WACjC+1C,KAAMx2C,EAAY3pD,QAAQV,OAAO8qD,WACjC7sD,KAAMosD,EAAY3pD,QAAQytC,OAAO2c,WAGjC8vO,UAAWvwO,EAAY3pD,QAAQo4D,KAE/B2gO,SAAUpvO,EAAY3pD,QAAQo4D,KAE9B15B,OAAQirB,EAAY3pD,QAAQytC,OAAO2c,WAEnCu4D,cAAeh5D,EAAY3pD,QAAQytC,OACnCi1E,kBAAmB/4D,EAAY3pD,QAAQo4D,KACvCkiO,YAAa3wO,EAAY3pD,QAAQo4D,KAEjCsgE,KAAM/uE,EAAY3pD,QAAQo4D,KAE1B6+N,YAAattO,EAAY3pD,QAAQm4D,KAEjCm/N,cAAe3tO,EAAY3pD,QAAQm4D,KAEnCwgO,gBAAiBhvO,EAAY3pD,QAAQm4D,KAErCsiO,UAAW9wO,EAAY3pD,QAAQo4D,KAE/B2hO,aAAcpwO,EAAY3pD,QAAQo4D,KAElCoiO,4BAA6B7wO,EAAY3pD,QAAQo4D,KAEjDshO,WAAY/vO,EAAY3pD,QAAQo4D,KAEhCwiO,WAAYjxO,EAAY3pD,QAAQo4D,KAKhCuiO,WAAYhxO,EAAY3pD,QAAQo4D,KAIhC4/N,sBAAuBruO,EAAY3pD,QAAQ0zB,MAG3CwkQ,oBAAqBvuO,EAAY3pD,QAAQm4D,KAEzC6qD,WAAYr5D,EAAY3pD,QAAQo4D,MAGpCu8N,EAAQt8N,aAAe,CACnBvwD,IAAK,GACL46G,mBAAmB,EACnB43K,aAAa,EACbG,WAAW,EACXV,cAAc,EACdL,YAAY,EACZkB,YAAY,EACZD,YAAY,EACZH,6BAA6B,EAC7BxC,sBAAuB,GACvBh1K,YAAY,EACZ+1K,UAAU,GAEdp9R,EAAOD,QAAUA,EAAiB,S,6BC14BlCZ,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAEXnD,EAAQm/R,6BAA0Bh9R,EAElC,IAEI6qD,EAAmB3nD,EAFD,EAAQ,IAM1Bg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxB4nD,EAA8B5nD,EAFA,EAAQ,IAMtC6nD,EAAQ7nD,EAFA,EAAQ,MAMhB8nD,EAAa9nD,EAFA,EAAQ,IAMrBgE,EAAUhE,EAFD,EAAQ,IAMjB2oD,EAAa3oD,EAFD,EAAQ,KAMpB4oD,EAAc5oD,EAFD,EAAQ,IAMrBouG,EAAepuG,EAFD,EAAQ,KAMtB+5R,EAAY/5R,EAFD,EAAQ,MAMnB+D,EAAa/D,EAFD,EAAQ,IAIpBk8B,EAAe,EAAQ,IAIvBt6B,EAAkB5B,EAFD,EAAQ,KAMzBg6R,EAAkBh6R,EAFD,EAAQ,MAI7B,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvF,IAAI46R,EAAoB,EAiBpBH,EAA0Bn/R,EAAQm/R,wBAA0B,SAAiCvkG,GAC7F,MAAO,8BAAgCA,GAGvC2kG,EAAe,SAAUnwJ,GAGzB,SAASmwJ,EAAaz6R,IAClB,EAAIu8B,EAAiB/8B,SAASmL,KAAM8vR,GAEpC,IAAIzwO,GAAQ,EAAI7B,EAA4B3oD,SAASmL,MAAO8vR,EAAa5wR,YAAa,EAAIq+C,EAAiB1oD,SAASi7R,IAAehgS,KAAKkQ,KAAM3K,IAwB9I,OAtBAgqD,EAAM0wO,cAAgB,IAAIH,EAAgB/6R,QAAQQ,EAAM2/F,MACxD31C,EAAM2wO,kBAAoB,KAC1B3wO,EAAMlD,KAAOkD,EAAMlD,KAAKloD,KAAKorD,GAC7BA,EAAM4wO,oBAAsB5wO,EAAM4wO,oBAAoBh8R,KAAKorD,GAE3DA,EAAMQ,MAAQ,CAEVyjG,YAAa,GAGb4sI,eAAgB,GAGhBC,gBAAiBN,EAGjBO,uBAAuB,EAEvBj0O,MAAM,EAENk0O,eAAe,GAEZhxO,EAwQX,OArSA,EAAI3B,EAAW7oD,SAASi7R,EAAcnwJ,IAgCtC,EAAI9tG,EAAch9B,SAASi7R,EAAc,CAAC,CACtC97R,IAAK,oBACLN,MAAO,WACHsM,KAAKswR,mBAEV,CACCt8R,IAAK,iBACLN,MAAO,SAAwB68R,EAAU50I,GACjCA,GAAW37I,KAAK3K,MAAM2/F,KAAKzuC,SAAWo1F,EAAQp1F,SAC9CvmD,KAAK+vR,cAAcS,UACnBxwR,KAAK+vR,cAAgB,IAAIH,EAAgB/6R,QAAQmL,KAAK3K,MAAM2/F,OAI5Du7L,IAAavwR,KAAK3K,MAAM+6F,OAI5BpwF,KAAK82J,SAAS92J,KAAK3K,MAAM+6F,MAAOpwF,KAAK3K,MAAMigE,aAEhD,CACCthE,IAAK,uBACLN,MAAO,WACHsM,KAAK+vR,cAAcS,YAExB,CACCx8R,IAAK,WACLN,MAAO,SAAkB08F,EAAO96B,GAC5B,IAAIvX,EAAS/9C,KAMb,GAJAA,KAAKywR,eAAiBrgM,EAClBpwF,KAAK0wR,4BACLz+R,aAAa+N,KAAK0wR,4BAER,KAAVtgM,EAUA,OATApwF,KAAKu/C,SAAS,CAEV+jG,YAAa,GACb4sI,eAAgB,GAEhBC,gBAAiBN,EAEjB1zO,MAAM,IAEHxiD,EAAW9E,QAAQ9D,QAAQ,MAEtC,IAAI4/R,EAAoBn5R,EAAgB3C,QAAQ2/B,SAAS,sBAGrDx0B,KAAK6/C,MAAMyjG,YAAY5zJ,OAAS,GAAKsQ,KAAK6/C,MAAMwwO,iBAChDM,EAAoB,GAGxB,IAAInuO,EAAW7oD,EAAW9E,QAAQivB,QAMlC,OALA9jB,KAAK0wR,2BAA6B/9R,YAAW,WACzCorD,EAAO6yO,aAAaxgM,EAAO96B,GAAWt+D,MAAK,WACvCwrD,EAASzxD,eAEd4/R,GACInuO,EAAS3xD,UAErB,CACCmD,IAAK,eACLN,MAAO,SAAsB08F,EAAO96B,GAChC,IAAIlC,EAASpzD,KAEb,OAAOA,KAAK+vR,cAAcc,eAAezgM,EAAO96B,EAAWt1D,KAAK6/C,MAAMwwO,eAAer5R,MAAK,SAAUssJ,GAE5FlzD,IAAUh9B,EAAOq9N,gBAGrBr9N,EAAO09N,mBAAmBxtI,QAGnC,CACCtvJ,IAAK,qBACLN,MAAO,SAA4B4vJ,GAC/B,IAAI4sI,GAAiB,EAAIP,EAAU96R,SAASyuJ,GAAa,SAAUytI,GAC/D,OAAOA,EAASztI,eAIhB6sI,EAAkBN,EACtB,GAAIK,EAAexgS,OAAS,EAAG,CAI3B,IAAIshS,EAAkD,IAA/BhxR,KAAK6/C,MAAMswO,gBAAwB,KAAOnwR,KAAK6/C,MAAMqwO,eAAelwR,KAAK6/C,MAAMswO,gBAAkB,GAAG/5H,YAIlG,KAHzB+5H,EAAkBD,EAAe70O,WAAU,SAAU+6G,GACjD,OAAOA,EAAWA,aAAe46H,MAGjCb,EAAkBN,EAElBM,IAIR,IAAIh0O,EAAOn8C,KAAK6/C,MAAM1D,KAKtBA,GAHiBmnG,EAAY53H,MAAK,SAAU0qI,GACxC,QAASA,EAAW/S,QAAQA,WAIhCrjJ,KAAKu/C,SAAS,CACV+jG,YAAaA,EACb4sI,eAAgBA,EAChBC,gBAAiBA,EACjBh0O,KAAMA,EAENk0O,eAAe,MAGxB,CACCr8R,IAAK,eACLN,MAAO,WACH,OAAOsM,KAAKixR,mBAAqB,GAAoC,IAA/BjxR,KAAK6/C,MAAMswO,kBAEtD,CACCn8R,IAAK,mBACLN,MAAO,WACH,OAAOsM,KAAK6/C,MAAMqwO,eAAexgS,SAKtC,CACCsE,IAAK,gBACLN,MAAO,SAAuB+/D,GAC1B,IAAIy9N,EAAkBlxR,KAAKixR,mBAC3B,GAAwB,IAApBC,EAAJ,CAGA,IAAIt1R,GAASoE,KAAK6/C,MAAMswO,gBAAkB18N,EAAQy9N,EAAkB,IAAMA,EAAkB,GAC5FlxR,KAAKy/E,aAAa7jF,MAEvB,CACC5H,IAAK,WACLN,MAAO,SAAkBhD,GAEG,IADFsP,KAAKixR,qBAM3BvgS,EAAEg8D,iBAGF1sD,KAAKm8C,UAEV,CACCnoD,IAAK,OACLN,MAAO,WACHsM,KAAKu/C,SAAS,CAAEpD,MAAM,EAAMg0O,gBAAiB,EAAG7sI,YAAa,GAAI4sI,eAAgB,OAEtF,CACCl8R,IAAK,gBACLN,MAAO,WACH,IAAImyF,EAAS7lF,KAETrC,EAAOhE,EAAW9E,QAAQivB,QAS9B,OARA9jB,KAAKu/C,SAAS,CACV8wO,eAAe,EACfl0O,MAAM,IACP,WACC0pC,EAAOixE,SAASjxE,EAAOxwF,MAAM+6F,MAAOvK,EAAOxwF,MAAMigE,WAAWt+D,MAAK,WAC7D2G,EAAK5M,QAAQ80F,EAAOorM,0BAGrBtzR,EAAK9M,UAEjB,CACCmD,IAAK,sBACLN,MAAO,SAA6By8R,GAChC,OAAgC,IAA5BnwR,KAAKixR,oBAA4Bd,IAAoBN,IAIzD7vR,KAAK3K,MAAM87R,UAAUnxR,KAAK6/C,MAAMqwO,eAAeC,EAAkB,IACjEnwR,KAAKm8C,QAEE,KAEZ,CACCnoD,IAAK,eACLN,MAAO,SAAsBy8R,GACzBnwR,KAAKu/C,SAAS,CAAE4wO,gBAAiBA,EAAiBh0O,MAAM,IACpDn8C,KAAK3K,MAAM+7R,mBACXpxR,KAAK3K,MAAM+7R,kBAAkBpxR,KAAK6/C,MAAMqwO,eAAeC,EAAkB,GAAIA,EAAkB,KAGxG,CACCn8R,IAAK,qBACLN,MAAO,SAA4BgpO,GAC/B18N,KAAKswR,eAAe5zD,EAAUtsI,MAAOssI,EAAU1nI,MAE/C,IAAIq8L,EAAqBrxR,KAAK28N,KAAK,aAAe38N,KAAK6/C,MAAMswO,iBAC7D,GAAIkB,GAAsBrxR,KAAK0gD,UAAW,CACtC,IAAI8oN,EAAUjrN,EAAW1pD,QAAQy8R,YAAYD,GACzCE,EAAY/nB,GAAWA,EAAQ+nB,WAC/BA,EAAYvxR,KAAK0gD,UAAUwpG,UAAYlqJ,KAAK0gD,UAAUm8N,cAAgB0U,EAAYvxR,KAAK0gD,UAAUwpG,aACjGlqJ,KAAK0gD,UAAUwpG,UAAYqnI,EAAYvxR,KAAK0gD,UAAU6wO,cAInE,CACCv9R,IAAK,WACLN,MAAO,SAAkBmsD,EAAOmN,IAC5B,EAAIvP,EAAM5oD,SAASi7R,EAAalgS,UAAUsP,YAAa,EAAIq+C,EAAiB1oD,SAASi7R,EAAalgS,WAAY,WAAYoQ,MAAMlQ,KAAKkQ,KAAM6/C,EAAOmN,KAEvJ,CACCh5D,IAAK,SACLN,MAAO,WACH,IAAIqzF,EAAS/mF,KAET+lE,EAAW,EACXyrN,EAAsBxxR,KAAK6/C,MAAMyjG,YAAYpqJ,KAAI,SAAUu4R,EAAkBjiS,GAC7E,IAAI8zJ,EAAcmuI,EAAiBnuI,YAAYpqJ,KAAI,SAAUk9J,EAAY5mK,GACrE,IAAIohR,EAAW7qM,IAAaghB,EAAOlnC,MAAMswO,gBACrCv1R,GAAY,EAAIopG,EAAanvG,SAAS,6BAA8B,CAAE+7Q,SAAUA,IAChF8gB,EAAoB3rN,EACxBA,IAMA,OAAOnsE,EAAQ/E,QAAQ88R,aAAav7H,EAAWj3G,UAAW,CACtD,IAAO3vD,EACP,IAAO,aAAekiS,EACtB,GAAMhC,EAAwBgC,EAAoB,GAClD92R,UAAWA,EACX6oD,QATU,WACVsjC,EAAOkpM,oBAAoByB,IAS3B,gBAAiB9gB,OAIzB,OAAOttH,EAAY5zJ,OAAS,EAAIkK,EAAQ/E,QAAQzD,cAC5C,MACA,CAAE4C,IAAKxE,EAAGoL,UAAW,mCACrBhB,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,iCACb62R,EAAiBV,SAASa,WAE9BH,EAAiBV,SAASc,kBAAkBvuI,IAC5C,QACLxqI,QAAO,SAAUs9I,GAChB,QAASA,KAGb,OAAQp2J,KAAK6/C,MAAM1D,MAAQq1O,EAAoB9hS,OAAS,EAAIkK,EAAQ/E,QAAQzD,cACxE,MACA,CAAEwJ,UAAW,kBAAmB++B,IAAK,SAAajpC,GAC1C,OAAOq2F,EAAOrmC,UAAYhwD,IAElC8gS,GACA,SAGL1B,EAtSQ,CAuSjBl2R,EAAQ/E,QAAQwiC,WAElB9mC,EAAQsE,QAAUi7R,EAGlBA,EAAa/wO,UAAY,CAErBqxC,MAAO5xC,EAAY3pD,QAAQytC,OAAO2c,WAGlCkyO,UAAW3yO,EAAY3pD,QAAQm4D,KAAK/N,WAGpCmyO,kBAAmB5yO,EAAY3pD,QAAQm4D,KAGvCgoC,KAAMx2C,EAAY3pD,QAAQ43J,WAAW36H,EAAas5M,Q,gBC/YtD,IAAIvoD,EAAY,EAAQ,KACpB2L,EAAgB,EAAQ,MAoC5Bh+L,EAAOD,QAvBP,SAAS+9L,EAAY/lK,EAAO+oB,EAAOrB,EAAWs+I,EAAUt3L,GACtD,IAAI2E,GAAS,EACTlM,EAAS64B,EAAM74B,OAKnB,IAHAugD,IAAcA,EAAYu+I,GAC1Bv3L,IAAWA,EAAS,MAEX2E,EAAQlM,GAAQ,CACvB,IAAIgE,EAAQ60B,EAAM3sB,GACd01C,EAAQ,GAAKrB,EAAUv8C,GACrB49C,EAAQ,EAEVg9I,EAAY56L,EAAO49C,EAAQ,EAAGrB,EAAWs+I,EAAUt3L,GAEnD4rL,EAAU5rL,EAAQvD,GAEV66L,IACVt3L,EAAOA,EAAOvH,QAAUgE,GAG5B,OAAOuD,I,cCfTzG,EAAOD,QAXP,SAAmBg4B,EAAO9K,GAKxB,IAJA,IAAI7hB,GAAS,EACTlM,EAAS+tB,EAAO/tB,OAChBsqC,EAASzR,EAAM74B,SAEVkM,EAAQlM,GACf64B,EAAMyR,EAASp+B,GAAS6hB,EAAO7hB,GAEjC,OAAO2sB,I,gBChBT,IAAI0nK,EAAkB,EAAQ,MAC1B/H,EAAe,EAAQ,KAGvB3C,EAAc51L,OAAOC,UAGrBC,EAAiB01L,EAAY11L,eAG7BozC,EAAuBsiJ,EAAYtiJ,qBAoBnC2mJ,EAAcqG,EAAgB,WAAa,OAAOttL,UAApB,IAAsCstL,EAAkB,SAASv8L,GACjG,OAAOw0L,EAAax0L,IAAU7D,EAAeC,KAAK4D,EAAO,YACtDuvC,EAAqBnzC,KAAK4D,EAAO,WAGtClD,EAAOD,QAAUq5L,G,gBCnCjB,IAAIR,EAAY,EAAQ,KACpB0oG,EAAa,EAAQ,MACrBC,EAAc,EAAQ,MACtBC,EAAW,EAAQ,MACnBC,EAAW,EAAQ,MACnBC,EAAW,EAAQ,MASvB,SAAS98O,EAAMnuB,GACb,IAAI93B,EAAO6Q,KAAKupL,SAAW,IAAIH,EAAUniK,GACzCjnB,KAAK8mB,KAAO33B,EAAK23B,KAInBsuB,EAAMxlD,UAAUq1C,MAAQ6sP,EACxB18O,EAAMxlD,UAAkB,OAAImiS,EAC5B38O,EAAMxlD,UAAU0D,IAAM0+R,EACtB58O,EAAMxlD,UAAU4oB,IAAMy5Q,EACtB78O,EAAMxlD,UAAU2oB,IAAM25Q,EAEtB1hS,EAAOD,QAAU6kD,G,gBC1BjB,IAAIw/E,EAAc,EAAQ,MACtBuoE,EAAY,EAAQ,KAMpBl6J,EAHctzC,OAAOC,UAGcqzC,qBAGnC0jJ,EAAmBh3L,OAAOumD,sBAS1Bm2I,EAAc1F,EAA+B,SAASxyL,GACxD,OAAc,MAAVA,EACK,IAETA,EAASxE,OAAOwE,GACTygI,EAAY+xD,EAAiBxyL,IAAS,SAAS04L,GACpD,OAAO5pJ,EAAqBnzC,KAAKqE,EAAQ04L,QANRsQ,EAUrC3sM,EAAOD,QAAU87L,G,iBC7BjB,kBAAW,EAAQ,KACfoR,EAAY,EAAQ,MAGpBtc,EAA4C5wL,IAAYA,EAAQ2yC,UAAY3yC,EAG5E6wL,EAAaD,GAAgC,iBAAV3wL,GAAsBA,IAAWA,EAAO0yC,UAAY1yC,EAMvF63I,EAHgB+4C,GAAcA,EAAW7wL,UAAY4wL,EAG5Bv5I,EAAKygG,YAAS31I,EAsBvCq2I,GAnBiBV,EAASA,EAAOU,cAAWr2I,IAmBf+qM,EAEjCjtM,EAAOD,QAAUw4I,I,oCCpCjB,IAAIx3E,EAAmB,iBAiCvB/gE,EAAOD,QALP,SAAkBmD,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GAAS69D,I,iBC/B7C,kBAAiB,EAAQ,KAGrB4vH,EAA4C5wL,IAAYA,EAAQ2yC,UAAY3yC,EAG5E6wL,EAAaD,GAAgC,iBAAV3wL,GAAsBA,IAAWA,EAAO0yC,UAAY1yC,EAMvF8wL,EAHgBF,GAAcA,EAAW7wL,UAAY4wL,GAGtBt+D,EAAWxgH,QAG1Ck/K,EAAY,WACd,IAEE,IAAIC,EAAQJ,GAAcA,EAAWK,SAAWL,EAAWK,QAAQ,QAAQD,MAE3E,OAAIA,GAKGF,GAAeA,EAAY12E,SAAW02E,EAAY12E,QAAQ,QACjE,MAAOl6G,KAXI,GAcfF,EAAOD,QAAUgxL,I,oCC5BjB,IAAIgE,EAAc51L,OAAOC,UAgBzBY,EAAOD,QAPP,SAAqBmD,GACnB,IAAI64L,EAAO74L,GAASA,EAAMuL,YAG1B,OAAOvL,KAFqB,mBAAR64L,GAAsBA,EAAK38L,WAAc21L,K,gBCZ/D,IAAI3uL,EAAU,EAAQ,KAClBq7J,EAAW,EAAQ,KAGnBurB,EAAe,mDACfC,EAAgB,QAuBpBjtL,EAAOD,QAbP,SAAemD,EAAOS,GACpB,GAAIyC,EAAQlD,GACV,OAAO,EAET,IAAItB,SAAcsB,EAClB,QAAY,UAARtB,GAA4B,UAARA,GAA4B,WAARA,GAC/B,MAATsB,IAAiBu+J,EAASv+J,MAGvB+pL,EAAc9rK,KAAKje,KAAW8pL,EAAa7rK,KAAKje,IAC1C,MAAVS,GAAkBT,KAAS/D,OAAOwE,M,gBCzBvC,IAAIg9C,EAAU,EAAQ,MAClBwjJ,EAAW,EAAQ,KACnBD,EAAc,EAAQ,KAa1BlkM,EAAOD,QAJP,SAAkBy8D,GAChB,OAAO0nI,EAAYC,EAAS3nI,OAAMt6D,EAAWy+C,GAAU6b,EAAO,M,cCZhEx8D,EAAOD,QAAU,yb,6BCEjBZ,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEIg+B,EAAgB97B,EAFD,EAAQ,KAMvBu1G,EAAYv1G,EAFD,EAAQ,KAInB+7B,EAAY,EAAQ,GAIpB4rB,EAAmB3nD,EAFD,EAAQ,IAM1Bg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxB4nD,EAA8B5nD,EAFA,EAAQ,IAMtC8nD,EAAa9nD,EAFA,EAAQ,IAMrBouG,EAAepuG,EAFD,EAAQ,KAMtBgE,EAAUhE,EAFD,EAAQ,IAMjB4oD,EAAc5oD,EAFD,EAAQ,IAMrBu8R,EAAUv8R,EAFD,EAAQ,MAMjB+zE,EAAY/zE,EAFD,EAAQ,OAInBw8R,EAAU,EAAQ,MAElBC,EAAc,EAAQ,MAEtBC,EAAO,EAAQ,KAEfC,EAAgB,EAAQ,KAExBC,EAAiB58R,EAAuB28R,GAExCE,EAAU,EAAQ,KAElBC,EAAe,EAAQ,KAEvBC,EAAU,EAAQ,KAElB7gQ,EAAe,EAAQ,IAIvB8gJ,EAAgBh9K,EAFD,EAAQ,MAMvB2qG,EAAY3qG,EAFD,EAAQ,MAMnB4B,EAAkB5B,EAFD,EAAQ,KAMzBg9R,EAAah9R,EAFD,EAAQ,MAMpBs8B,EAAUt8B,EAFD,EAAQ,IAIrB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAmBvF,IAAI49R,EAA4B,IAAIv3R,OAAO,aAAes3R,EAAW/9R,QAAQynD,OAAS,SAElFoiL,GAAgD,IAAvCtmO,UAAU8iG,SAAS9hG,QAAQ,OAExC,SAAS05R,EAAkB9+R,GACvB,OAAQ0qO,EAAS,IAAM,QAAU,IAAM1qO,EAG3C,SAAS++R,EAAez9N,GACpB,MAAO,CACH09N,WAAY19N,EAAU09N,WACtBC,aAAc39N,EAAU29N,aACxBC,UAAW59N,EAAU49N,UACrBC,YAAa79N,EAAU69N,YACvBp6N,YAAazD,EAAUyD,YACvBq6N,WAAY99N,EAAU89N,WACtBhhS,KAAMkjE,EAAUljE,MAQxB,IAAIihS,EAAqB,SAAU1zJ,GAG/B,SAAS0zJ,EAAmBh+R,EAAOoO,IAC/B,EAAImuB,EAAiB/8B,SAASmL,KAAMqzR,GAEpC,IAAIh0O,GAAQ,EAAI7B,EAA4B3oD,SAASmL,MAAOqzR,EAAmBn0R,YAAa,EAAIq+C,EAAiB1oD,SAASw+R,IAAqBvjS,KAAKkQ,KAAM3K,EAAOoO,IA+RjK,OA7RA47C,EAAMi0O,iBAAmB,SAAUC,EAAeC,EAAWzxJ,GACzD,IAAI0xJ,EAAQp0O,EAAMhqD,MAAMo+R,MAEpBn4N,EAAQm4N,EAAM5uN,WAAW0uN,GAGzBr/R,EAAI,EACRonE,EAAMo4N,sBAAqB,SAAU93R,EAAOo+B,GACxC,IAAIw4D,EAAOihM,EAAM53R,MAAMD,GAEvB,OADA1H,GAAK,IACO,IAAoB,UAAds+F,EAAKpgG,MAAkC,mBAAdogG,EAAKpgG,SAEpD,IAAIuhS,EAAgBd,EAA0Bl3R,KAAK2/D,EAAMxhE,MACzD,GAAI65R,EAAe,CACf,IAAIvjM,EAAQujM,EAAc,GAAGn3R,cAAcC,QAAQ,IAAK,IACpDtN,EAAOoxG,EAAU1rG,QAAQyE,MAAK,SAAU5I,GACxC,QAAOA,EAAEkjS,UAAWljS,EAAEkjS,SAASp3R,gBAAkB4zF,KAErD,GAAIjhG,EAAM,CACN,IAAI0kS,EAAcJ,EAAMI,YAEpBC,EAA4C,MAAxBH,EAAc,GAAG,GAQzC,OAHAr4N,EAAMy4N,UAAUJ,EAAc/3R,OAASk4R,EAAoB,EAAI,IAGxDx4N,EAAM7+D,QAAQ,CAACo3R,EAAY79D,MAAM7mO,EAAKqxG,QAAU,UAKnEnhD,EAAM20O,mBAAqB,SAAU1+N,EAAWk+N,EAAWzxJ,GAEvD,IADA,EAAI4wJ,EAAQsB,aAAa50O,EAAM60O,WAAY70O,EAAMhqD,MAAMo+R,OACnDn+N,EAAW,CAEX,KACI,EAAI88N,EAAQ3yM,cAAcpgC,EAAM60O,WAAY70O,EAAMhqD,MAAMo+R,MAAOn+N,GACjE,MAAOhhE,GACLC,QAAQ3C,MAAM0C,GAGlB,IAAIyxE,EAAWzQ,EAAU16B,KAAO06B,EAChCjW,EAAM80O,0BAA0BpuN,GAEhC1mB,EAAMhqD,MAAM87G,cACE9xD,EAAMhqD,MAAMo+R,MAAM/7O,QAG5B2H,EAAM+0O,mBAEN/0O,EAAMg1O,oBAGdh1O,EAAME,SAAS,CAAE+0O,aAAcj1O,EAAMhqD,MAAMo+R,MAAMa,eACjDj1O,EAAMk1O,eAAeC,QAAQn1O,EAAMhqD,MAAMo+R,MAAOn+N,EAAWk+N,EAAWzxJ,GACtE6wC,EAAc/9K,QAAQkgH,iBAAiBohJ,cAAc92M,EAAMhqD,MAAM2/F,KAAKzuC,QAASlH,EAAMhqD,MAAMo+R,MAAM/7O,SAE7F2H,EAAMhqD,MAAMi0D,UACZjK,EAAMhqD,MAAMi0D,YAIpBjK,EAAMo1O,oBAAsB,SAAU3iS,GAClCutD,EAAMq1O,iBAAkB,EAExBr1O,EAAMg1O,oBAGVh1O,EAAMs1O,kBAAoB,SAAU7iS,GAChCutD,EAAMq1O,iBAAkB,EAUxB,IAAIE,EAAKx8R,UAAUokG,UAAUhgG,cACdo4R,EAAGpzP,SAAS,aAAeozP,EAAGpzP,SAAS,WAGlD6d,EAAMw1O,SAAS,CAAErB,UAAW,0BAE5B7gS,YAAW,WACP0sD,EAAMw1O,SAAS,CAAErB,UAAW,4BAC7B,IAIXn0O,EAAMy1O,SAAW,SAAUhjS,GACvB,IAAI2hS,EAAQp0O,EAAMhqD,MAAMo+R,MACpBI,EAAcJ,EAAMI,YAEpB/5R,EAAOhI,EAAMijS,cAAcn7F,QAAQ,cACvC,GAAI9/L,EAAM,CACNulD,EAAM21O,eAAgB,EACtB,IAAI15N,GAAQ,EAAIg3N,EAAK2C,sBAAsB51O,EAAM60O,WAAYT,EAAOtiS,SAAS+jS,gBACzEr5R,GAAQ,EAAI62R,EAAayC,uBAAuBr7R,EAAM+5R,IAC1D,EAAIxB,EAAY+C,0BAA0B95N,EAAOz/D,GACjD/J,EAAM46D,mBAIdrN,EAAMw1O,SAAW,SAAU/iS,GAEvB,IAAIutD,EAAMq1O,gBAAV,CAGAr1O,EAAM21O,eAAgB,EACtB,IAAIp/N,EAAMzkE,SAAS+jS,eAEfG,GAAwB,EAAI/C,EAAKgD,uBAAuBj2O,EAAM60O,WAAYt+N,GAC1E2/N,EAAQF,EAAsBE,MAC9Bz7R,EAAOu7R,EAAsBv7R,KAEjCulD,EAAMhqD,MAAMo+R,MAAMnvP,OAAOxqC,EAAMhI,EAAM0hS,UAAW+B,KAGpDl2O,EAAMm2O,QAAU,WACZrkS,SAASskS,oBAAoB,kBAAmBp2O,EAAMq2O,qBAG1Dr2O,EAAMs2O,SAAW,WACbxkS,SAAS0oK,iBAAiB,kBAAmBx6G,EAAMq2O,oBAEnDr2O,EAAMu2O,eAAiB,KACvBv2O,EAAMw2O,6BAGVx2O,EAAMq2O,mBAAqB,WACvBr2O,EAAMw2O,4BACN,IAAIvgO,EAAYnkE,SAAS+jS,eACzB,GAAI71O,EAAMy2O,kBAAoBxgO,EAAUyD,YACpC1Z,EAAMy2O,kBAAmB,EACrBz2O,EAAM02O,eACN12O,EAAM02O,cAAc55O,YAErB,IAAKmZ,EAAUyD,cAClB1Z,EAAMy2O,kBAAmB,EACrBz2O,EAAM02O,eAAe,CACrB,IAAIC,EAAgB1gO,EAAU2gO,WAAW,GAAGh2J,wBAC5C5gF,EAAM02O,cAAcG,OAAOF,KAKvC32O,EAAMugF,WAAa,SAAU9tI,GACzB,IAAI2hS,EAAQp0O,EAAMhqD,MAAMo+R,MACpB0C,EAASz3D,EAAS5sO,EAAMsrG,QAAUtrG,EAAMwrG,QACxC84L,GAAU,EAEd,GAAID,GAAwB,MAAdrkS,EAAMkC,IAChBqrD,EAAMg3O,gBAAgB,QACtBD,GAAU,OAEP,GAAID,GAAwB,MAAdrkS,EAAMkC,IACvBqrD,EAAMg3O,gBAAgB,WACtBD,GAAU,OAEP,GAAID,GAAwB,MAAdrkS,EAAMkC,IACvBqrD,EAAMg3O,gBAAgB,SACtBD,GAAU,OAEP,GAAID,GAAwB,MAAdrkS,EAAMkC,IAAa,CACpC,GAAIqrD,EAAMk1O,eAAe+B,UAAW,CAChC,IAAIC,EAAwBl3O,EAAMk1O,eAAeiC,KAAKn3O,EAAMhqD,MAAMo+R,OAC9D53R,EAAQ06R,EAAsB16R,MAC9B05R,EAAQgB,EAAsBhB,MAKlC9B,EAAMl1R,MAAM1C,EAAO05R,EAAO,eAE9Ba,GAAU,OAEP,GAAID,GAAwB,MAAdrkS,EAAMkC,IAAa,CACpC,GAAIqrD,EAAMk1O,eAAekC,UAAW,CAChC,IAAIC,EAAyBr3O,EAAMk1O,eAAeoC,OAC9CC,EAASF,EAAuB76R,MAChCg7R,EAASH,EAAuBnB,MAKpC9B,EAAMl1R,MAAMq4R,EAAQC,EAAQ,eAEhCT,GAAU,OAEP,GAAkB,UAAdtkS,EAAMkC,MAAoBlC,EAAMyrG,UAAYmhI,GAAU5sO,EAAMurG,QACnEh+C,EAAMy3O,YAAY,MAClBV,GAAU,MAEP,CACH,IAAIW,EAAmBjlS,EAAMsrG,SAAWtrG,EAAMurG,OAC1C25L,EAAkBD,GAAoBjlS,EAAMyrG,SAChD,GAAIk2L,EAAMa,cAAgBb,EAAMa,aAAa2C,iBAAkB,CAC3D,IAAI3C,EAAeb,EAAMa,aACzB,OAAQxiS,EAAMkC,KACV,IAAK,UACIgjS,IACD1C,EAAa4C,UAAUplS,GACvBskS,GAAU,GAEd,MACJ,IAAK,YACIY,IACD1C,EAAa6C,YAAYrlS,GACzBskS,GAAU,GAEd,MACJ,IAAK,MACIW,IACDzC,EAAa8C,MAAMtlS,GACnBskS,GAAU,GAEd,MACJ,IAAK,SACIY,IACD1C,EAAa+C,SAASvlS,GACtBskS,GAAU,GAEd,MACJ,QACI,YAEa,QAAdtkS,EAAMkC,MACbqrD,EAAMi4O,mBACNlB,GAAU,GAGdA,IACAtkS,EAAM46D,iBACN56D,EAAM26D,oBAIdpN,EAAMk4O,uBAAyB,SAAUnhI,GACrC/2G,EAAMhqD,MAAMo+R,MAAMa,aAAakD,mBAAmBphI,IAGtD/2G,EAAMo4O,+BAAiC,SAAUrhI,EAAYshI,GACzDr4O,EAAMhqD,MAAMo+R,MAAMa,aAAaqD,2BAA2BvhI,GAC1D/2G,EAAME,SAAS,CAAEm4O,gBAAiBA,KAGtCr4O,EAAMg3O,gBAAkB,SAAUr4O,GAC9B,IAAIsd,GAAQ,EAAIg3N,EAAK2C,sBAAsB51O,EAAM60O,WAAY70O,EAAMhqD,MAAMo+R,MAAOtiS,SAAS+jS,gBACzF,GAAqB,IAAjB55N,EAAM5rE,OAIV,OADA2vD,EAAMk1O,eAAeqD,wBAAwBv4O,EAAMhqD,MAAMo+R,OACjDz1O,GACJ,IAAK,QACD,EAAIq0O,EAAYwF,oBAAoBv8N,EAAO,MAC3C,MACJ,IAAK,WACD,EAAI+2N,EAAYwF,oBAAoBv8N,EAAO,KAC3C,MACJ,IAAK,iBACD,EAAI+2N,EAAYwF,oBAAoBv8N,EAAO,QAAS,UACpD,MACJ,IAAK,QACD,EAAI+2N,EAAYyF,mBAAmBx8N,GACnC,MACJ,IAAK,SACD,EAAI+2N,EAAY0F,oBAAoBz8N,KAKhDjc,EAAMQ,MAAQ,CACVy0O,aAAc,MAElBj1O,EAAM60O,WAAa,KACnB70O,EAAM24O,iBAAmB,KACzB34O,EAAM02O,cAAgB,KACtB12O,EAAM21O,eAAgB,EACtB31O,EAAMq1O,iBAAkB,EACxBr1O,EAAMy2O,kBAAmB,EAClBz2O,EAwGA,IACCnsB,EAsMZ,OAnlBA,EAAIwqB,EAAW7oD,SAASw+R,EAAoB1zJ,IAuS5C,EAAI9tG,EAAch9B,SAASw+R,EAAoB,CAAC,CAC5Cr/R,IAAK,mBACLN,MAAO,WACHsM,KAAKk0R,WAAW9uL,MAAMutJ,YAAY,gBAAiB,IAAO3yP,KAAK3K,MAAM87G,YAAc,KACnFnxG,KAAKk0R,WAAWvpQ,UAAUmpB,IAAI,wCAEnC,CACC9/C,IAAK,mBACLN,MAAO,WACHsM,KAAKk0R,WAAWvpQ,UAAUyZ,OAAO,sCACjCpkC,KAAKk0R,WAAW9uL,MAAM6yL,eAAe,mBAE1C,CACCjkS,IAAK,cACLN,MAAO,SAAqB5B,GAIxB,SAAUkO,KAAK00R,iBAAmB5iS,EAAMomS,aAAepmS,EAAMomS,YAAYC,eAE9E,CACCnkS,IAAK,cACLN,MAAO,SAAqB0kS,GACxB,IAAI5E,EAAY7wR,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,GAAmBA,UAAU,GAAK,aAEhFizD,EAAMzkE,SAAS+jS,eAEfmD,GAAyB,EAAI/F,EAAKgD,uBAAuBt1R,KAAKk0R,WAAYt+N,GAC1E2/N,EAAQ8C,EAAuB9C,MAC/Bz7R,EAAOu+R,EAAuBv+R,KAE9B69D,EAAU79D,EAAKP,OAAO,EAAGg8R,EAAMv7P,QAAUo+P,EAAet+R,EAAKP,OAAOg8R,EAAMv7P,QAC9Eu7P,EAAMv7P,QAAUo+P,EAAa1oS,OAC7BsQ,KAAK3K,MAAMo+R,MAAMnvP,OAAOqzB,EAAS67N,EAAW+B,GAC5Cv1R,KAAKg1R,eAAgB,IAS1B,CACChhS,IAAK,4BACLN,MAAO,SAAmCqyE,GACtC,IAAI0tN,EAAQzzR,KAAK3K,MAAMo+R,MAEvBzzR,KAAKs4R,cAAgBvyN,EAASwyN,QAAQ9E,GACtCzzR,KAAKw4R,WAAazyN,EAAS0yN,SAAShF,GACpCzzR,KAAK41R,eAAiB7C,EAAe5hS,SAAS+jS,kBAEnD,CACClhS,IAAK,4BACLN,MAAO,WAIH,GAAKsM,KAAKk0R,WAAV,CAGA,IAzWa70R,EAAG6kB,EAyWZoxC,EAAYnkE,SAAS+jS,eACzB,IAAKl1R,KAAK41R,iBA1WGv2R,EA0WgCW,KAAK41R,eA1WlC1xQ,EA0WkDoxC,EAzWnEj2D,EAAE2zR,aAAe9uQ,EAAE8uQ,YAAc3zR,EAAE4zR,eAAiB/uQ,EAAE+uQ,cAAgB5zR,EAAE6zR,YAAchvQ,EAAEgvQ,WAAa7zR,EAAE8zR,cAAgBjvQ,EAAEivQ,aAAe9zR,EAAE05D,cAAgB70C,EAAE60C,aAAe15D,EAAE+zR,aAAelvQ,EAAEkvQ,YAAc/zR,EAAEjN,OAAS8xB,EAAE9xB,MAyW1I,CAC1E4N,KAAK41R,eAAiB7C,EAAez9N,GAErC,IAAIojO,GAAyB,EAAIpG,EAAKgD,uBAAuBt1R,KAAKk0R,WAAY5+N,GAC1EigO,EAAQmD,EAAuBnD,MAC/Bz7R,EAAO4+R,EAAuB5+R,KAElCkG,KAAKw4R,WAAajD,EAClBv1R,KAAKs4R,cAAgB/C,EAAMv7P,SAAWlgC,EAAKpK,OAE/C,OAAOsQ,KAAKw4R,cAEjB,CACCxkS,IAAK,mBACLN,MAAO,WACHsM,KAAKu0R,eAAetvP,UAEzB,CACCjxC,IAAK,WACLN,MAAO,WACH,OAAOsM,KAAKw4R,aAEjB,CACCxkS,IAAK,uBACLN,MAAO,WACH,OAAQsM,KAAK41R,gBAAkB51R,KAAK41R,eAAe78N,cAExD,CACC/kE,IAAK,iBACLN,MAAO,WACH,OAAkC,IAA3BsM,KAAK24R,WAAW3+P,SAE5B,CACChmC,IAAK,eACLN,MAAO,WACH,OAAOsM,KAAKs4R,gBAEjB,CACCtkS,IAAK,mBACLN,OACQw/B,GAAO,EAAIvB,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASC,IAClF,IAEI8/P,EAAO8B,EAAOxvN,EAAUzK,EAAOu4N,EAF/B91O,EAAS/9C,KAGb,OAAO0xB,EAAc78B,QAAQm/B,MAAK,SAAkB7F,GAChD,OACI,OAAQA,EAAStsB,KAAOssB,EAASzwB,MAC7B,KAAK,EAGD,OAFAywB,EAAStsB,KAAO,EAChBssB,EAASzwB,KAAO,GACT,EAAIi0B,EAAU5gC,SAAS,IAAIo6G,EAAUt2G,SAAQ,SAAU9D,GAC1D,OAAOgtD,EAAOwB,SAAS,CAAEq5O,gBAAgB,GAAS7nS,OAG1D,KAAK,EAaD,OAZA0iS,EAAQzzR,KAAK3K,MAAMo+R,MACnB8B,EAAQv1R,KAAK24R,WACb5yN,EAAW0tN,EAAMoF,kBAAkBtD,EAAMv7P,OAAQu7P,EAAMuD,YACvDx9N,EAAQm4N,EAAM5uN,WAAWkB,IAEnB2tN,sBAAqB,SAAU93R,EAAOo+B,EAAQw4D,GAChD,MAA6B,MAAtBA,EAAK14F,KAAKkgC,KAAkC,UAAdw4D,EAAKpgG,MAAkC,mBAAdogG,EAAKpgG,MAA2C,YAAdogG,EAAKpgG,SAEzGyhS,EAAcJ,EAAMI,YAGpB1lQ,EAASzwB,KAAO,IACT,EAAIi0B,EAAU5gC,SAAS0iS,EAAM5tN,WAAU,WAC1C,IAAIkzN,EAAWz9N,EAAM7+D,QAAQ,CAACo3R,EAAYmF,cAAc19N,EAAMxhE,QAC9D,OAAO25R,EAAMoF,kBAAkBtD,EAAMv7P,OAAS++P,GAAU,OAGhE,KAAK,GAED,OADA5qQ,EAASzwB,KAAO,IACT,EAAIi0B,EAAU5gC,SAAS0iS,EAAMa,aAAa8C,SAErD,KAAK,GACI3D,EAAMa,aAAa2E,iBACpBj5R,KAAKu/C,SAAS,CAAEq5O,gBAAgB,IAChCnF,EAAMa,aAAatxO,SAEvB70B,EAASzwB,KAAO,GAChB,MAEJ,KAAK,GACDywB,EAAStsB,KAAO,GAChBssB,EAASiG,GAAKjG,EAAgB,MAAE,GAEhC55B,QAAQ3C,MAAMu8B,EAASiG,IAE3B,KAAK,GACL,IAAK,MACD,OAAOjG,EAASiF,UAG7BO,EAAS3zB,KAAM,CAAC,CAAC,EAAG,UAG3B,WACI,OAAOkzB,EAAKh3B,MAAM8D,KAAM2C,cAKjC,CACC3O,IAAK,sBACLN,MAAO,WACH,OAAOsM,KAAKk0R,aAEjB,CACClgS,IAAK,aACLN,MAAO,WACH,OAAOsM,KAAKg1R,gBAEjB,CACChhS,IAAK,uBACLN,MAAO,WACHsM,KAAKk0R,WAAWuB,oBAAoB,QAASz1R,KAAK60R,UAAU,GAC5D70R,KAAKk0R,WAAWuB,oBAAoB,mBAAoBz1R,KAAKy0R,qBAAqB,GAClFz0R,KAAKk0R,WAAWuB,oBAAoB,iBAAkBz1R,KAAK20R,mBAAmB,KAEnF,CACC3gS,IAAK,oBACLN,MAAO,WACH,IAAI0/D,EAASpzD,KAETyzR,EAAQzzR,KAAK3K,MAAMo+R,MACvBA,EAAMyF,kBAAkBl5R,KAAKg0R,oBACzBx8R,EAAgB3C,QAAQ2/B,SAAS,0CACjCi/P,EAAM0F,qBAAqBn5R,KAAKszR,kBAEpC,IAAIO,EAAcJ,EAAMI,YAGxBA,EAAYuF,wBAAuB,EAAI3G,EAAQ4G,sBAAqB,WAChE,OAAOjmO,EAAO4kO,oBACf,SAAU5nM,GACT,OAAO,IAAI+a,EAAUt2G,SAAQ,SAAU9D,GACnC,OAAOqiE,EAAO7T,SAAS,CAAE6wC,MAAOA,GAASr/F,UAGjDiP,KAAKu0R,eAAiB,IAAI5qN,EAAU90E,QAAQg/R,GAE5C7zR,KAAKg0R,mBAAmBh0R,KAAKs5R,4BAG7Bt5R,KAAKk0R,WAAWr6H,iBAAiB,QAAS75J,KAAK60R,UAAU,GACzD70R,KAAKk0R,WAAWr6H,iBAAiB,mBAAoB75J,KAAKy0R,qBAAqB,GAC/Ez0R,KAAKk0R,WAAWr6H,iBAAiB,iBAAkB75J,KAAK20R,mBAAmB,GAC3E30R,KAAKk0R,WAAWx1N,UAErB,CACC1qE,IAAK,2BACLN,MAAO,WACH,IAAI6/R,OAAgB,EACpB,GAAIvzR,KAAK3K,MAAMkkS,aAAc,CAGzB,IAAIhE,EAAQv1R,KAAK3K,MAAMkkS,aACvBhG,EAAgBvzR,KAAK3K,MAAMo+R,MAAMoF,kBAAkBtD,EAAMv7P,OAAQu7P,EAAMuD,gBAGvEvF,EAAgBvzR,KAAK3K,MAAMo+R,MAAM+F,mBAErC,OAAOjG,IAEZ,CACCv/R,IAAK,SACLN,MAAO,WACH,IAAImyF,EAAS7lF,KAETs0R,OAAe,EACnB,GAAIt0R,KAAK6/C,MAAMy0O,aAAc,CACzB,IAAIlkM,EAAQpwF,KAAK6/C,MAAMuwC,MACnBqpM,EAAWrpM,EAAM1gG,OACrB4kS,EAAe16R,EAAQ/E,QAAQzD,cAC3B,MACA,CAAEwJ,UAAW,+CACbhB,EAAQ/E,QAAQzD,cAAcohS,EAAe39R,QAAS,CAClD8kC,IAAK,SAAa1G,GACd,OAAO4yD,EAAOmyM,iBAAmB/kQ,GAErCm9D,MAAOA,EACP+gM,UAAWnxR,KAAKu3R,uBAChBnG,kBAAmBpxR,KAAKy3R,+BACxBniO,UAAW,CAAEokO,WAAW,EAAM9+P,IAAK6+P,EAAUvkQ,MAAOukQ,GACpDzkM,KAAMh1F,KAAK3K,MAAM2/F,QAI7B,IAAIzxC,GAAU,EAAIygD,EAAanvG,SAAS,0BAA2B,CAC/D,oCAAuCmL,KAAK6/C,MAAM+4O,iBAGlDe,EAA2BznQ,EAAQr9B,QAAQ2J,aAAa,kCACxDo7R,EAAY,CACZC,KAAM/G,EAAkB,KACxBgH,QAAShH,EAAkB,KAC3Bz0F,MAAOy0F,EAAkB,MAGzB4E,EAAkB13R,KAAK6/C,MAAM63O,gBAGjC,OAAO99R,EAAQ/E,QAAQzD,cACnB,MACA,CAAEwJ,UAAW2oD,GACb+wO,EACA16R,EAAQ/E,QAAQzD,cAAcuoS,EAA0B,CAAEhgQ,IAAK,SAAa42E,GACpE,OAAO1qB,EAAOkwM,cAAgBxlL,GAC/B48C,SAAUntJ,KAAKq2R,gBAAiBuD,UAAWA,IAClDhgS,EAAQ/E,QAAQzD,cAAc,MAAO,CACjCwJ,UAAW,gCACXm/R,gBAAiB,OACjBjtO,SAAU,IACVqjD,OAAQnwG,KAAKw1R,QACbxlL,QAAShwG,KAAK21R,SACdqE,QAASh6R,KAAK80R,SACdzoO,UAAWrsD,KAAK4/H,WAChBjmG,IAAK,SAAas9E,GACd,OAAOpxB,EAAOquM,WAAaj9K,GAE/B,aAAcj3G,KAAK3K,MAAM6C,MACzB60D,KAAM,UACN,iBAAkB,OAClB,oBAAqB,OACrB,gBAAiB,UACjB,gBAAiBp2B,QAAQ32B,KAAK6/C,MAAMy0O,cACpC,wBAAyBoD,GAAmB,GAAI,EAAInF,EAAc7C,yBAAyBgI,QAAmBhlS,OAI3H,CACCsB,IAAK,QACLN,MAAO,WACHsM,KAAKk0R,WAAWx1N,YAGjB20N,EAplBc,CAqlBvBz5R,EAAQ/E,QAAQwiC,WAElBg8P,EAAmBt0O,UAAY,CAC3BuK,SAAU9K,EAAY3pD,QAAQm4D,KAC9BymO,MAAOj1O,EAAY3pD,QAAQ43J,WAAW0lI,EAAQt9R,SAASoqD,WACvD+1C,KAAMx2C,EAAY3pD,QAAQ43J,WAAW36H,EAAas5M,MAAMnsL,WACxDkyD,YAAa3yD,EAAY3pD,QAAQytC,OACjCpqC,MAAOsmD,EAAY3pD,QAAQytC,OAC3Bi3P,aAAc/6O,EAAY3pD,QAAQV,QAEtC5D,EAAQsE,QAAUw+R,EAClB7iS,EAAOD,QAAUA,EAAiB,S,6BCvuBlCZ,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEIiC,EAAgBC,EAFA,EAAQ,KAMxBu1G,EAAYv1G,EAFD,EAAQ,KAMnB0lH,EAAa1lH,EAFD,EAAQ,MAMpBwoD,EAAsBxoD,EAFA,EAAQ,KAM9Bg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAIxBqkS,EAAS,EAAQ,MAIjBC,EAAatkS,EAFD,EAAQ,OAMpB2pE,EAAU3pE,EAFD,EAAQ,MAIrB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAuBvF,IAAIklS,EAAc,WACd,SAASA,EAAYt+R,EAAOg4R,GACxB,IAAIx0O,EAAQr/C,KAERo6R,EAAiBz3R,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,GAAmBA,UAAU,GAAK,MACzF,EAAIivB,EAAiB/8B,SAASmL,KAAMm6R,GAEpCn6R,KAAKq6R,gBAAkB,SAAUnnQ,GAC7B,IAAIonQ,EAAepnQ,EAAKonQ,aACpBt3O,EAAQ9vB,EAAK8vB,MAEbypF,OAAM,EACV,GAAI6tJ,EAAc,CACd,IAAI1D,GAEHA,EAASv3O,EAAMu3O,QAAQv6R,OAAOH,MAAM06R,EAAQ,CAACv3O,EAAMk7O,qBAAsBl7O,EAAMm7O,wBAAwBl+R,QAAO,EAAI8hD,EAAoBvpD,SAASylS,KAChJj7O,EAAMm7O,uBAAyBF,EAAa5qS,OAC5C,IAAI+qS,EAAWH,EAAaA,EAAa5qS,OAAS,GAC9CgrS,EAAgBr7O,EAAMk7O,qBAAuBD,EAAa5qS,OAAS,EACvE+8I,EAAM,IAAIytJ,EAAWrlS,QAAQ6lS,EAAeD,EAAS3gS,KAAKpK,QAE1DszD,IACA3D,EAAMs7O,cAAgB,KACtBt7O,EAAMk7O,qBAAuB,KAC7Bl7O,EAAMm7O,uBAAyB,GAKnCn7O,EAAMu7O,gBAAgBnuJ,IAG1BzsI,KAAK42R,OAAS/6R,EACdmE,KAAK66R,aAAehH,EACpB7zR,KAAK86R,eAAiB,KACtB96R,KAAK26R,cAAgB,KACrB36R,KAAKu6R,qBAAuB,KAC5Bv6R,KAAKw6R,uBAAyB,EAC9Bx6R,KAAK+6R,mBAAqB,KAC1B/6R,KAAKk5R,kBAAkBkB,GAyc3B,OA7bA,EAAIvoQ,EAAch9B,SAASslS,EAAa,CAAC,CACrCnmS,IAAK,uBACLN,MAAO,SAA8BsnS,GACjCh7R,KAAK+6R,mBAAqBC,IAQ/B,CACChnS,IAAK,oBACLN,MAAO,SAA2B0mS,GAC9Bp6R,KAAK46R,gBAAkBR,IAE5B,CACCpmS,IAAK,QACLN,MAAO,WACH,OAAO,IAAIymS,EAAYn6R,KAAK42R,OAAQ52R,KAAK66R,aAAc76R,KAAK46R,mBAEjE,CACC5mS,IAAK,cACLN,MAAO,SAAqBkI,EAAO42F,GAC/BxyF,KAAK42R,OAAOv6R,OAAOT,EAAO,EAAG42F,GACzBxyF,KAAK86R,gBAAkBl/R,KACrBoE,KAAK86R,eAEP96R,KAAKu6R,sBAAwB3+R,KAC3BoE,KAAKu6R,uBAGhB,CACCvmS,IAAK,cACLN,MAAO,SAAqBkI,GACxBoE,KAAK42R,OAAOv6R,OAAOT,EAAO,GACtBA,IAAUoE,KAAK86R,eACf96R,KAAK86R,eAAiB,KACf96R,KAAK86R,eAAiBl/R,KAC3BoE,KAAK86R,eAEPl/R,IAAUoE,KAAKu6R,qBACfv6R,KAAKu6R,qBAAuB,KACrBv6R,KAAKu6R,qBAAuB3+R,KACjCoE,KAAKu6R,uBAGhB,CACCvmS,IAAK,eACLN,MAAO,SAAsBkI,EAAO42F,GAChCxyF,KAAK42R,OAAOv6R,OAAOT,EAAO,EAAG42F,KAElC,CACCx+F,IAAK,mBACLN,MAAO,WACH,GAAIsM,KAAK42R,OAAOlnS,OAAQ,CACpB,IAAIkM,EAAQoE,KAAK42R,OAAOlnS,OAAS,EAC7B8iG,EAAOxyF,KAAK42R,OAAOh7R,GACvB,OAAO,IAAIs+R,EAAWrlS,QAAQ+G,EAAO42F,EAAK14F,KAAKpK,QAG/C,OAAO,IAAIwqS,EAAWrlS,SAAS,EAAG,KAG3C,CACCb,IAAK,iBACLN,MAAO,WACH,OAAOsM,KAAK42R,OAAO19R,KAAI,SAAUxH,GAC7B,OAAOA,EAAEs3H,iBAGlB,CACCh1H,IAAK,QACLN,MAAO,SAAemxC,EAAU2uP,EAAW+B,GACvC,IAAI0F,EAAgBj7R,KAAKnE,MAAMua,QAAO,SAAUtc,EAAMpI,GAClD,OAAOoI,EAAOpI,EAAEoI,OACjB,IAEH,MAAkB,iBAAd05R,GACO,EAAIyG,EAAOiB,cAAcD,EAAep2P,IAExC,EAAIo1P,EAAOkB,aAAaF,EAAep2P,EAAU0wP,EAAMv7P,UAGvE,CACChmC,IAAK,QACLN,MAAO,SAAe0nS,EAAiB7F,EAAO/B,GAC1C,IAAIz1O,EAAS/9C,KAEbA,KAAK42R,OAASwE,EAAgBliS,KAAI,SAAUxH,GACxC,OAAOqsD,EAAO88O,aAAaQ,gBAAgB3pS,MAE1C6jS,IACDA,EAAQv1R,KAAKw5R,oBAKbx5R,KAAK26R,gBACL36R,KAAK26R,cAAgB,KACrB36R,KAAKu6R,qBAAuB,MAEhCv6R,KAAK46R,gBAAgBrF,EAAO/B,KAWjC,CACCx/R,IAAK,SACLN,MAAO,SAAgBmI,EAAOkqE,GAG1B,IAFA,IAAIgtE,EAAc/yI,KAAKs7R,SAASv1N,GAC5Bw1N,EAAgB,EACX/rS,EAAI,EAAGA,EAAIqM,EAAMnM,SAAUF,EAAG,CACnC,IAAIgjG,EAAO32F,EAAMrM,GACjB+rS,GAAiB/oM,EAAK14F,KAAKpK,OAC3BsQ,KAAKw7R,YAAYzoJ,EAAcvjJ,EAAGgjG,GAEtC,OAAO+oM,IAEZ,CACCvnS,IAAK,SACLN,MAAO,SAAgBmxC,EAAU2uP,EAAW+B,GACxC,IAAIxzJ,EAAO/hI,KAAKy7R,MAAM52P,EAAU2uP,EAAW+B,GACvCxvN,EAAW/lE,KAAK64R,kBAAkB92J,EAAKogE,GAAIozF,EAAMuD,WACjD4C,EAAwB,EACxB35J,EAAK94F,UACLyyP,EAAwB17R,KAAK87E,WAAW/V,EAAUg8D,EAAK94F,QAAQv5C,SAEnE,IAAIqpS,EAAW,EACXh3J,EAAKivH,QACL+nC,EAAW/4R,KAAK27R,SAAS51N,EAAUg8D,EAAKivH,MAAOwiC,IAEnDxzR,KAAK47R,sBACL,IAAIC,EAAc95J,EAAKogE,GAAKu5F,EAAwB3C,EAChD+C,EAAc97R,KAAK64R,kBAAkBgD,GAAa,GAClDE,EAAoC,oBAAdvI,GAAiD,mBAAdA,EACzDwI,EAAYh8R,KAAKi8R,eAAeH,EAAaC,GACjD,GAAI/7R,KAAK+6R,mBAAoB,CACzB,IAAImB,EAAoBl8R,KAAKm8R,WAAWL,EAAatI,EAAWzxJ,GAChE+5J,EAAc97R,KAAK64R,kBAAkBgD,EAAcK,GAAmB,GAG1E,OADAl8R,KAAK46R,gBAAgBkB,EAAatI,EAAWzxJ,GACtCi6J,IAEZ,CACChoS,IAAK,aACLN,MAAO,SAAoBooS,EAAatI,EAAWzxJ,GAC/C,IAAI9qI,EAAS+I,KAAK+6R,mBAAmBe,EAAatI,EAAWzxJ,GAC7D,OAAO,EAAIzmB,EAAWzmH,SAASoC,GAAUA,EAAS,IAEvD,CACCjD,IAAK,iBACLN,MAAO,SAAwB+4I,EAAKsvJ,GAChC,IAAIngS,EAAQ6wI,EAAI7wI,MAEZ42F,EAAOxyF,KAAK42R,OAAOh7R,GACvB,GAAI42F,EAAM,CACN,GAAI52F,IAAUoE,KAAK86R,iBACf96R,KAAK86R,eAAiBl/R,EAClBmgS,GAAuB/7R,KAAK86R,iBAAmB96R,KAAKu6R,sBAAsB,CAE1E,IAAIvwK,EAAKx3B,EAAK4pM,mBAAmBp8R,KAAKq6R,iBAClCrwK,IAEAhqH,KAAK26R,cAAgB3wK,EACrBhqH,KAAKu6R,qBAAuB3+R,EAC5BoE,KAAKw6R,uBAAyB,GAK1C,GAAIx6R,KAAKs0R,aACL,OAAOt0R,KAAKs0R,aAAa+H,aAAa7pM,EAAMi6C,QAGhDzsI,KAAK86R,eAAiB,KACtB96R,KAAK26R,cAAgB,KACrB36R,KAAKu6R,qBAAuB,KAC5Bv6R,KAAKw6R,uBAAyB,EAElC,OAAOrvL,EAAUt2G,QAAQ9D,YAE9B,CACCiD,IAAK,sBACLN,MAAO,WAEH,IADA,IAAI4oS,OAAW,EACN9sS,EAAI,EAAGA,EAAIwQ,KAAK42R,OAAOlnS,SAAUF,EAAG,CACzC,IAAIgjG,EAAOxyF,KAAK42R,OAAOpnS,GACnBkoD,GAAW86C,EAAK14F,KAAKpK,OACrB6sS,GAAY7kP,GAAW4kP,GAAYA,EAASl3P,MAAMotD,IAClD96C,GAAW6kP,KAEX/pM,EAAO8pM,EACPt8R,KAAKw8R,YAAYhtS,KAEfA,GAEN8sS,EAAW9pM,KAYpB,CACCx+F,IAAK,aACLN,MAAO,SAAoB+4I,EAAKvyH,GAK5B,IAJA,IAAIte,EAAQ6wI,EAAI7wI,MACZo+B,EAASyyG,EAAIzyG,OAEb0hQ,EAAwB,EACrBxhR,EAAM,GAAG,CAEZ,IAAIs4E,EAAOxyF,KAAK42R,OAAOh7R,GACnB49C,EAAS3zC,KAAKo1B,IAAI/gB,EAAKs4E,EAAK14F,KAAKpK,OAASsqC,GAE9C,GAAIwf,EACA,GAAIg5C,EAAK1pD,QAAS,CACd,IAAI0yN,EAAchpK,EAAKpuD,OAAOpK,EAAQwf,GACX,iBAAhBgiN,GACPx7P,KAAKy8R,aAAa7gS,EAAOoE,KAAK66R,aAAa6B,kBAAkBlhC,KAEjEhpK,EAAOxyF,KAAK42R,OAAOh7R,IAET9B,KAAKpK,OAGXkM,GAAS,EAFToE,KAAKw8R,YAAY5gS,QAKrB8/R,GAAyB1hQ,EACzBh6B,KAAKw8R,YAAY5gS,QAGrBA,GAAS,EAEbse,GAAOs/B,EACPxf,EAAS,EAEb,OAAO0hQ,IAIZ,CACC1nS,IAAK,WACLN,MAAO,SAAkB+4I,GACrB,IAAmB,IAAfA,EAAI7wI,MACJ,OAAO,EAEX,GAAmB,IAAf6wI,EAAIzyG,OACJ,OAAOyyG,EAAI7wI,MAEf,IAAI42F,EAAOxyF,KAAK42R,OAAOnqJ,EAAI7wI,OAC3B,GAAI6wI,EAAIzyG,QAAUw4D,EAAK14F,KAAKpK,OACxB,OAAO+8I,EAAI7wI,MAAQ,EAGvB,IAAIknJ,EAAatwD,EAAK35F,MAAM4zI,EAAIzyG,QAEhC,OADAh6B,KAAKw7R,YAAY/uJ,EAAI7wI,MAAQ,EAAGknJ,GACzBrW,EAAI7wI,MAAQ,IAcxB,CACC5H,IAAK,WACLN,MAAO,SAAkB+4I,EAAKn6H,EAAKkhR,GAC/B,IAAI53R,EAAQ6wI,EAAI7wI,MACZo+B,EAASyyG,EAAIzyG,OAEb2iQ,EAASrqR,EAAI5iB,OACb8iG,EAAOxyF,KAAK42R,OAAOh7R,GACvB,GAAI42F,EACA,GAAIA,EAAK1pD,QACL,GAAI0pD,EAAKoqM,kBAAkB5iQ,EAAQ1nB,EAAKkhR,GACpClhR,EAAM,SACH,CACH,IAAIuqR,EAAYrqM,EAAK35F,MAAMmhC,GAC3Bp+B,GAAS,EACToE,KAAKw7R,YAAY5/R,EAAOihS,QAEV,IAAX7iQ,IAGP2iQ,GAAUnqM,EAAK14F,KAAKpK,OAASsqC,EAC7Bp+B,GAAS,QAENA,EAAQ,IAGfA,EAAQ,GAEZ,KAAO0W,GAAK,CACR,IAAIwqR,EAAU98R,KAAK66R,aAAakC,mBAAmBzqR,EAAK1W,EAAO43R,GAC/DlhR,EAAMwqR,EAAQE,oBAAoB1qR,EAAKkhR,GACvCxzR,KAAKw7R,YAAY5/R,EAAOkhS,GACxBlhS,GAAS,EAEb,OAAO+gS,IAEZ,CACC3oS,IAAK,oBACLN,MAAO,SAA2BupS,EAAaC,GAC3C,IAAIC,EAAgB,EAChBvhS,EAAQoE,KAAK42R,OAAOv7O,WAAU,SAAUm3C,GACxC,IAAI4qM,EAAU5qM,EAAK14F,KAAKpK,OACxB,SAAIwtS,GAAaC,EAAgBC,GAAWH,IAAgBC,GAAaC,EAAgBC,EAAUH,KAGnGE,GAAiBC,GACV,MAEX,OAAe,IAAXxhS,EACOoE,KAAKw5R,mBAEL,IAAIU,EAAWrlS,QAAQ+G,EAAOqhS,EAAcE,KAW5D,CACCnpS,IAAK,aACLN,MAAO,SAAoB2pS,GACvB,IAAIC,EAAY36R,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,GAAmBA,UAAU,GAAK06R,EAEpF,OAAO,IAAI99N,EAAQ1qE,QAAQmL,KAAMq9R,EAAWC,KAKjD,CACCtpS,IAAK,gBACLN,MAAO,SAAuB6pS,EAAeC,EAAa3hS,GAGtD,IAAIu0D,EAAYotO,EAAY/E,SAASz4R,MACjCy9R,EAAoBz9R,KAAKs7R,SAASiC,GAEtCC,EAAcptO,EAAUstO,WAAW19R,MAEnC,IADA,IACSxQ,EADawQ,KAAKs7R,SAASkC,GACL,EAAGhuS,GAAKiuS,IAAqBjuS,EACxDwQ,KAAKw8R,YAAYhtS,GAErB,IAAImuS,EAAYF,EACZpgS,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiB7K,EAErB,IACI,IAAK,IAAmD8K,EAA/CC,GAAY,EAAI9H,EAAcd,SAASgH,KAAiBwB,GAA6BG,EAAQC,EAAUC,QAAQC,MAAON,GAA4B,EAAM,CAC7J,IAAIm1F,EAAOh1F,EAAM9J,MAEjBsM,KAAKw7R,YAAYmC,EAAWnrM,GAC5BmrM,GAAa,GAEnB,MAAOrpS,GACLgJ,GAAoB,EACpBC,EAAiBjJ,EACnB,QACE,KACS+I,GAA6BI,EAAUI,QACxCJ,EAAUI,SAEhB,QACE,GAAIP,EACA,MAAMC,GAKlByC,KAAK47R,wBAUV,CACC5nS,IAAK,YACLN,MAAO,SAAmBkqB,GACtB,IAAI6uH,EAAM7uH,IACNo+Q,EAAY,KAOhB,OAHIA,EAHEvvJ,aAAeltE,EAAQ1qE,QAGbs2G,EAAUt2G,QAAQ9D,UAFlBiP,KAAKi8R,eAAexvJ,GAAK,GAIzCzsI,KAAK46R,gBAAgBnuJ,GACduvJ,IAEZ,CACChoS,IAAK,cACLV,IAAK,WACD,OAAO0M,KAAK66R,eAEjB,CACC7mS,IAAK,UACLV,IAAK,WACD,OAEU,IAFH0M,KAAK42R,OAAOxgR,QAAO,SAAU8D,EAAKs4E,GACrC,OAAOt4E,EAAMs4E,EAAK14F,KAAKpK,SACxB,KAER,CACCsE,IAAK,QACLV,IAAK,WACD,OAAO0M,KAAK42R,SAEjB,CACC5iS,IAAK,eACLV,IAAK,WACD,OAAI0M,KAAK86R,iBAAmB96R,KAAKu6R,qBACtBv6R,KAAK26R,cAET,SAGRR,EAhfO,GAkgBlB5pS,EAAQsE,QAAUslS,EAClB3pS,EAAOD,QAAUA,EAAiB,S,6BChkBlCZ,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAEXnD,EAAQqtS,qBAAkBlrS,EAE1B,IASgCuC,EAT5B4oS,EAAgB,EAAQ,IAExBloS,GAO4BV,EAPW4oS,IAOU5oS,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAmBvF,SAAS6oS,EAAqBtrM,EAAM8pM,GAChC,IAAIrlP,GAAWqlP,GAA8B,YAAlBA,EAASlqS,KACpC,OAAQogG,EAAK1pD,UAAYmO,IAAYqlP,EAASxzP,SAGlD,SAASi1P,EAAoBvrM,EAAMwrM,GAC/B,OAAQxrM,EAAK1pD,SAAWk1P,EAG5B,SAASziC,EAAYnoP,EAAM6qR,GACvB,IAAIvgS,EAAO0V,EAAK8qR,YACZxgS,EACA0V,EAAKi3P,cAAc7uK,aAAayiM,EAAcvgS,GAE9C0V,EAAKi3P,cAAcx3Q,YAAYorS,GAtCvC1tS,EAAQutS,qBAAuBA,EAC/BvtS,EAAQwtS,oBAAsBA,EAC9BxtS,EAAQ4tS,YAAcA,EACtB5tS,EAAQ0jS,YA6KR,SAAqBmK,EAAQ3K,GACzB,IAAI97Q,EAAQ87Q,EAAM53R,MAAMua,QAAO,SAAUuB,EAAO66E,GAC1B,YAAdA,EAAKpgG,KACLulB,EAAM3nB,KAAK,IAEI2nB,EAAMA,EAAMjoB,OAAS,GAC3BM,KAAKwiG,GAElB,OAAO76E,IACR,CAAC,KACJA,EAAMvd,SAAQ,SAAUyB,EAAOrM,GAI3B,IADA,IAAI6uS,EAAgBD,EAAOE,WAAW9uS,GAC/B6uS,IAA4C,QAA1BA,EAAcp9L,SAAuBo9L,EAAczjS,YACxEwjS,EAAOh1I,YAAYi1I,GACnBA,EAAgBD,EAAOE,WAAW9uS,GAEjC6uS,IACDA,EAAgBltS,SAASC,cAAc,OACvCgtS,EAAOvrS,YAAYwrS,IAGnBxiS,EAAMnM,OA/GlB,SAAuB2uS,EAAexiS,GAClC,IAAI0iS,OAAc,EACdjC,OAAW,EACX7B,EAAW5+R,EAAMA,EAAMnM,OAAS,GAEhC2N,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiB7K,EAErB,IACI,IAAK,IAAmD8K,EAA/CC,GAAY,EAAI9H,EAAcd,SAASgH,KAAiBwB,GAA6BG,EAAQC,EAAUC,QAAQC,MAAON,GAA4B,EAAM,CAC7J,IAAIm1F,EAAOh1F,EAAM9J,MAcjB,IAXA6qS,GADejC,EACS+B,EAAcpnO,WAAasnO,EAAYL,YAE3DJ,EAAqBtrM,EAAM8pM,KACvB6B,EAAYI,IACZC,EAAgBD,GAChBA,EAAcA,EAAYL,aAE1BG,EAAc7iM,aAAaijM,IAAmBF,IAI/CA,IAAgB/rM,EAAKksM,iBAAiBH,IAAc,CACvD,IAAII,EAAWJ,EAAYL,YAC3BG,EAAcj1I,YAAYm1I,GAC1BA,EAAcI,EAWlB,GARIJ,GAAe/rM,EACfA,EAAKosM,cAAcL,GACZ/rM,IACP+rM,EAAc/rM,EAAKqsM,YAEnBR,EAAcxrS,YAAY0rS,IAG1BR,EAAoBvrM,EAAMA,IAASioM,GACnC,GAAI0D,EAAYI,EAAYL,aAExBM,EADAD,EAAcA,EAAYL,iBAEvB,CACH,IAAIY,EAAYL,IAChBljC,EAAYgjC,EAAaO,GACzBP,EAAcO,EAItBxC,EAAW9pM,GAEjB,MAAOl+F,GACLgJ,GAAoB,EACpBC,EAAiBjJ,EACnB,QACE,KACS+I,GAA6BI,EAAUI,QACxCJ,EAAUI,SAEhB,QACE,GAAIP,EACA,MAAMC,GAKlBwhS,EAAmBR,GA6CXS,CAAcX,EAAexiS,GA1CzC,SAA4BwiS,GAExB,IAAIY,GAAU,EACVC,EAAWb,EAAcpnO,WAC7B,KAAOioO,GAAU,CACb,IAAIP,EAAWO,EAAShB,YACnBe,GAAgC,OAArBC,EAASj+L,QAGrBi+L,EAAS96P,SAFT66P,GAAU,EAIdC,EAAWP,EAEVM,GACDZ,EAAcxrS,YAAY1B,SAASC,cAAc,OA8B7C+tS,CAAmBd,MAGvB1mR,EAAMjoB,OACNqvS,EAAmBX,EAAOnyO,SAASt0C,EAAMjoB,OAAS,KA7HlDunE,EA+HemnO,EA/HKnnO,cAEpB8nO,EAAmB9nO,GACnBA,EAAW7yB,UAJnB,IACQ6yB,GAnCR,IAAI2mO,EAAkBrtS,EAAQqtS,gBAAkB,SAIhD,SAASa,IACL,IAAI74L,EAAOz0G,SAASC,cAAc,QAGlC,OAFAw0G,EAAKhrG,UAAY,YACjBgrG,EAAK/yG,YAAY1B,SAAS0qO,eAAe+hE,IAClCh4L,EAGX,SAAS44L,EAAgBprR,GAEjBA,EAAK0oN,cAAgB8hE,IACrBxqR,EAAK0oN,YAAc8hE,GAI3B,SAASO,EAAY/qR,GACjB,OAAOA,GAAyB,SAAjBA,EAAK6tF,SAAyC,cAAnB7tF,EAAKxY,UAGnD,SAASmkS,EAAmB3rR,GACxB,GAAKA,EAIL,IADAA,EAAOA,EAAK8qR,YACL9qR,GAAM,CACT,IAAI2tD,EAAa3tD,EACjBA,EAAOA,EAAK8qR,YACZn9N,EAAW38B,Y,6BCrFnBz0C,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEIk1N,EAAmBhzN,EAFD,EAAQ,MAI9BrF,EAAQ6uS,kBAAoBA,EAC5B7uS,EAAQ+kS,sBAkDR,SAA+B8I,EAAQxoO,GACnC,IAAIypO,EAAwBC,EAA0BlB,EAAQxoO,EAAIs9N,UAAWt9N,EAAIu9N,aAC7En5P,EAASqlQ,EAAsBrlQ,OAC/BlgC,EAAOulS,EAAsBvlS,KAEjC,MAAO,CAAEy7R,MAAOv7P,EAAQlgC,KAAMA,IAtDlCvJ,EAAQ0kS,qBAmMR,SAA8BmJ,EAAQ3K,EAAOn+N,GACzC,IAAI69N,EAAcmM,EAA0BlB,EAAQ9oO,EAAU49N,UAAW59N,EAAU69N,aAAan5P,OAC5Fi5P,EAAeqM,EAA0BlB,EAAQ9oO,EAAU09N,WAAY19N,EAAU29N,cAAcj5P,OAC/FulQ,EAAgBpM,EAAYuK,WAAWjK,GACvC+L,EAAiBvM,EAAayK,WAAWjK,GAC7C,OAAOA,EAAM5uN,WAAW06N,EAAeC,IAtM3C,IAAI7M,EAAU,EAAQ,KAIlBh0M,EAAW/oF,EAFD,EAAQ,MAItB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAmBvF,SAASmqS,EAAkBK,EAAUC,EAAmBC,GAEpD,IADA,IAAIvsR,EAAOqsR,EAASxoO,WACb7jD,GAAQA,IAASqsR,GAAU,CAE9B,GADmBC,EAAkBtsR,IACjBA,EAAK6jD,WACrB7jD,EAAOA,EAAK6jD,gBACT,GAAI7jD,EAAK8qR,YACZ9qR,EAAOA,EAAK8qR,gBACT,CACH,MAAQ9qR,EAAK8qR,aAAe9qR,IAASqsR,IACjCrsR,EAAOA,EAAKi3P,iBACCo1B,GACTE,EAAkBvsR,GAGtBA,IAASqsR,IACTrsR,EAAOA,EAAK8qR,eAmD5B,SAASoB,EAA0BlB,EAAQwB,EAAezP,GACtD,IAAI0P,EAtCR,SAAsCD,EAAezP,GAMjD,KAAOyP,GAAiBA,EAAc18P,WAAa8rB,KAAK8wO,cAAc,CAClE,IAAIC,EAAiBH,EAActB,WAAW5uS,OAC9C,IAAIqwS,EAoBA,MAnBI5P,GAAmB4P,EAGf5P,GAFJyP,EAAgBA,EAAc1oO,WACZh0B,WAAa8rB,KAAKgxO,UACdJ,EAAc9jE,YAAYpsO,OAG1Bk5N,EAAiB/zN,SAGvC+qS,EAAgBA,EAActB,WAAWnO,GAEzCA,EAAkB,GAW9B,MAAO,CACH/8Q,KAAMwsR,EACNK,gBAAiB9P,GAKO+P,CAA6BN,EAAezP,GACpE/8Q,EAAOysR,EAAsBzsR,KAC7B6sR,EAAkBJ,EAAsBI,gBAExCE,EA6BR,SAAgC/B,EAAQwB,GACpC,IAAIQ,EAAe,EACfC,GAAY,EACZvmS,EAAO,GA2CX,OAFAslS,EAAkBhB,GAvClB,SAA2BhrR,GAClBitR,GACGjtR,IAASwsR,IACTS,GAAY,GAOC,OAAjBjtR,EAAK6tF,SAAoB7tF,EAAK8qR,cACzBmC,IACDD,GAAgB,GAEpBtmS,GAAQ,MAEZ,IAAIwmS,EAAWltR,EAAK8vB,WAAa8rB,KAAKgxO,WA6B9C,SAA0B5sR,GACtB,IAAIktR,EAAWltR,EAAKmtR,UAEpB,OAAI,EAAI5N,EAAQwL,aAAa/qR,EAAKi3P,eAGN,IAApBi2B,EAAS5wS,OACF4wS,EAAS7jS,QAAQk2R,EAAQiL,gBAAiB,IAG1C,GAGJ0C,EA1C4CE,CAAiBptR,GAChEktR,IACKD,IACDD,GAAgBE,EAAS5wS,QAE7BoK,GAAQwmS,GAEZ,OAAO,KAGX,SAA2BltR,GAKF,QAAjBA,EAAK6tF,SAAqB7tF,EAAK8qR,aAA4C,QAA7B9qR,EAAK8qR,YAAYj9L,UAC/DnnG,GAAQ,KACHumS,IACDD,GAAgB,OAOrB,CAAEtmS,KAAMA,EAAMsmS,aAAcA,GA3EPK,CAAuBrC,EAAQhrR,GACvDtZ,EAAOqmS,EAAsBrmS,KAIjC,MAAO,CAAEkgC,OAKb,SAAkB5mB,EAAMgtR,EAAcM,GAClC,IAAI5H,EAAY4H,IAAqBttR,EAAK0oN,YAAYpsO,OACtD,GAAI0jB,EAAK8vB,WAAa8rB,KAAKgxO,YAAa,EAAIrN,EAAQwL,aAAa/qR,EAAKi3P,eAAgB,CAClF,IAAIs2B,EAASvtR,EAAKmtR,UAAUnnS,QAAQu5R,EAAQiL,kBAC5B,IAAZ+C,GAAiBA,EAASD,IAC1BA,GAAoB,GAMxB5H,GAAY,EAEhB,OAAO,IAAIn6M,EAAS9pF,QAAQurS,EAAeM,EAAkB5H,GAnBhDH,CAASvlR,EAFH+sR,EAAsBC,aAECH,GACjBnmS,KAAMA,K,6BClHnCnK,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAEXnD,EAAQqwS,mBAAqBrwS,EAAQswS,YAActwS,EAAQuwS,eAAYpuS,EAEvE,IAEI+qD,EAAQ7nD,EAFA,EAAQ,MAMhB2nD,EAAmB3nD,EAFD,EAAQ,IAM1B4nD,EAA8B5nD,EAFA,EAAQ,IAMtC8nD,EAAa9nD,EAFA,EAAQ,IAMrBg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAI5BrF,EAAQ8oS,oBAqeR,SAA6B0H,EAA2BC,GACpD,OAAO,SAAUnN,GACb,OAAO,SAAUuG,GACb,OAAO,IAAI6G,EAAepsS,QAAQulS,EAAgB2G,EAA2BC,EAAanN,MAtetG,IAEIoN,EAAiBrrS,EAFD,EAAQ,OAMxB4lI,EAAW5lI,EAFD,EAAQ,MAItB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAmBvF,IAAIisS,EAAW,WACX,SAASA,IACL,IAAIpnS,EAAO6I,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,GAAmBA,UAAU,GAAK,IAC/E,EAAIivB,EAAiB/8B,SAASmL,KAAMkhS,GAEpClhS,KAAKuqE,MAAQzwE,EA2GjB,OAxGA,EAAI+3B,EAAch9B,SAASqsS,EAAU,CAAC,CAClCltS,IAAK,mBACLN,MAAO,SAA0B6wL,EAAKvqJ,EAAQw5P,GAC1C,OAAO,IAEZ,CACCx/R,IAAK,iBACLN,MAAO,SAAwBqyE,EAAUw+G,GACrC,OAAO,IAEZ,CACCvwL,IAAK,QACLN,MAAO,SAAe8+F,GAClB,OAAO,IAEZ,CACCx+F,IAAK,QACLN,MAAO,SAAesmC,GAClB,IAAIkqC,EAAYlkE,KAAKlG,KAAKP,OAAOygC,GAEjC,OADAh6B,KAAKuqE,MAAQvqE,KAAKlG,KAAKP,OAAO,EAAGygC,GAC1B,IAAI8mQ,EAAU58N,KAM1B,CACClwE,IAAK,SACLN,MAAO,SAAgBsmC,EAAQ9f,GAG3B,IADA,IAAIinR,EAAiBnhS,KAAKlG,KAAKP,OAAO,EAAGygC,GAAUh6B,KAAKlG,KAAKP,OAAOygC,EAAS9f,GACpE1qB,EAAIwqC,EAAQxqC,EAAI0qB,EAAM8f,IAAUxqC,EAAG,CACxC,IAAI+0L,EAAMvkL,KAAKlG,KAAKgY,OAAOtiB,GAC3B,IAAKwQ,KAAKohS,eAAe5xS,EAAG+0L,GACxB,OAAO48G,EAGfnhS,KAAKuqE,MAAQ42N,IAKlB,CACCntS,IAAK,sBACLN,MAAO,SAA6B4e,EAAKkhR,GAErC,IADA,IAAIx5P,EAASh6B,KAAKlG,KAAKpK,OACdF,EAAI,EAAGA,EAAI8iB,EAAI5iB,SAAUF,EAAG,CACjC,IAAI+0L,EAAMjyK,EAAIR,OAAOtiB,GACrB,IAAKwQ,KAAKqhS,iBAAiB98G,EAAKvqJ,EAASxqC,EAAGgkS,GAExC,OADAxzR,KAAKuqE,MAAQvqE,KAAKuqE,MAAQj4D,EAAI/Y,OAAO,EAAG/J,GACjC8iB,EAAI/Y,OAAO/J,GAG1BwQ,KAAKuqE,MAAQvqE,KAAKuqE,MAAQj4D,IAM/B,CACCte,IAAK,oBACLN,MAAO,SAA2BsmC,EAAQ1nB,EAAKkhR,GAC3C,IAAK,IAAIhkS,EAAI,EAAGA,EAAI8iB,EAAI5iB,SAAUF,EAAG,CACjC,IAAI+0L,EAAMjyK,EAAIR,OAAOtiB,GACrB,IAAKwQ,KAAKqhS,iBAAiB98G,EAAKvqJ,EAASxqC,EAAGgkS,GACxC,OAAO,EAGf,IAAI8N,EAAethS,KAAKuqE,MAAMhxE,OAAO,EAAGygC,GACpCunQ,EAAcvhS,KAAKuqE,MAAMhxE,OAAOygC,GAEpC,OADAh6B,KAAKuqE,MAAQ+2N,EAAehvR,EAAMivR,GAC3B,IAEZ,CACCvtS,IAAK,qBACLN,MAAO,cACR,CACCM,IAAK,OACLN,MAAO,SAAcwmB,GACjB,IAAIw/C,EAAY15D,KAAKuqE,MAAMhxE,OAAO2gB,GAElC,OADAla,KAAKuqE,MAAQvqE,KAAKuqE,MAAMhxE,OAAO,EAAG2gB,GAC3Bw/C,IAEZ,CACC1lE,IAAK,WACLN,MAAO,WACH,OAAOsM,KAAK5N,KAAO,IAAM4N,KAAKlG,KAAO,MAE1C,CACC9F,IAAK,YACLN,MAAO,WACH,MAAO,CAAEtB,KAAM4N,KAAK5N,KAAM0H,KAAMkG,KAAKlG,QAE1C,CACC9F,IAAK,OACLV,IAAK,WACD,OAAO0M,KAAKuqE,QAEjB,CACCv2E,IAAK,UACLV,IAAK,WACD,OAAO,MAGR4tS,EAhHI,GAsHXJ,EAAYvwS,EAAQuwS,UAAY,SAAUU,GAG1C,SAASV,IAEL,OADA,EAAIlvQ,EAAiB/8B,SAASmL,KAAM8gS,IAC7B,EAAItjP,EAA4B3oD,SAASmL,MAAO8gS,EAAU5hS,YAAa,EAAIq+C,EAAiB1oD,SAASisS,IAAY5kS,MAAM8D,KAAM2C,YA+CxI,OAnDA,EAAI+6C,EAAW7oD,SAASisS,EAAWU,IAOnC,EAAI3vQ,EAAch9B,SAASisS,EAAW,CAAC,CACnC9sS,IAAK,mBACLN,MAAO,SAA0B6wL,EAAKvqJ,EAAQw5P,GAC1C,MAAY,OAARjvG,IAIc,oBAAdivG,GAAiD,mBAAdA,GACpB,MAARjvG,GAAuB,MAARA,GAAuB,MAARA,KAI9C,CACCvwL,IAAK,YACLN,MAAO,WACH,OAAOvC,SAAS0qO,eAAe77N,KAAKlG,QAEzC,CACC9F,IAAK,QACLN,MAAO,SAAe8+F,GAClB,OAAIA,EAAKpgG,OAAS4N,KAAK5N,OACnB4N,KAAKuqE,MAAQvqE,KAAKlG,KAAO04F,EAAK14F,MACvB,KAIhB,CACC9F,IAAK,gBACLN,MAAO,SAAuB0f,GACtBA,EAAK0oN,cAAgB97N,KAAKlG,OAC1BsZ,EAAK0oN,YAAc97N,KAAKlG,QAGjC,CACC9F,IAAK,mBACLN,MAAO,SAA0B0f,GAC7B,OAAOA,EAAK8vB,WAAa8rB,KAAKgxO,YAEnC,CACChsS,IAAK,OACLV,IAAK,WACD,MAAO,YAGRwtS,EApDyB,CAqDlCI,GAEEO,EAAW,SAAUC,GAGrB,SAASD,EAASE,EAAYzpS,IAC1B,EAAI05B,EAAiB/8B,SAASmL,KAAMyhS,GAEpC,IAAI1jP,GAAS,EAAIP,EAA4B3oD,SAASmL,MAAOyhS,EAASviS,YAAa,EAAIq+C,EAAiB1oD,SAAS4sS,IAAW3xS,KAAKkQ,KAAM9H,IAGvI,OADA6lD,EAAO4jP,WAAaA,EACb5jP,EA+DX,OAvEA,EAAIL,EAAW7oD,SAAS4sS,EAAUC,IAWlC,EAAI7vQ,EAAch9B,SAAS4sS,EAAU,CAAC,CAClCztS,IAAK,mBACLN,MAAO,SAA0B6wL,GAC7B,MAAe,MAARA,IAEZ,CACCvwL,IAAK,iBACLN,MAAO,SAAwBqyE,EAAUw+G,GACrC,OAAoB,IAAbx+G,IAEZ,CACC/xE,IAAK,YACLN,MAAO,WACH,IAAIgtD,EAAYvvD,SAASC,cAAc,QAKvC,OAJAsvD,EAAUlvD,aAAa,aAAc,SACrCkvD,EAAU9lD,UAAYoF,KAAKpF,UAC3B8lD,EAAU7tD,YAAY1B,SAAS0qO,eAAe77N,KAAKlG,OACnDkG,KAAK4hS,UAAUlhP,GACRA,IAEZ,CACC1sD,IAAK,gBACLN,MAAO,SAAuB0f,GAC1B,IAAIyuR,EAAWzuR,EAAKkrR,WAAW,GAC3BuD,EAAS/lE,cAAgB97N,KAAKlG,OAC9B+nS,EAAS/lE,YAAc97N,KAAKlG,MAE5BsZ,EAAKxY,YAAcoF,KAAKpF,YACxBwY,EAAKxY,UAAYoF,KAAKpF,WAE1BoF,KAAK4hS,UAAUxuR,KAEpB,CACCpf,IAAK,mBACLN,MAAO,SAA0B0f,GAC7B,OAAOA,EAAK8vB,WAAa8rB,KAAK8wO,cAAkC,SAAlB1sR,EAAKoxF,UAAkD,IAA3BpxF,EAAKkrR,WAAW5uS,QAAgB0jB,EAAKkrR,WAAW,GAAGp7P,WAAa8rB,KAAKgxO,YAKpJ,CACChsS,IAAK,iBACLN,MAAO,SAAwB0f,EAAMkkG,EAAWwqL,GAC5C,IAAIC,EAAmB,QAAUzqL,EAAY,KACzC0qL,EAAe,IAAMF,EAAgB,IAGrC1uR,EAAKgyF,MAAM+2H,iBAAiB,yBAA2B4lE,GACvD3uR,EAAKgyF,MAAMutJ,YAAY,sBAAuBovC,GAE9C3uR,EAAKgyF,MAAM+2H,iBAAiB,qBAAuB6lE,GACnD5uR,EAAKgyF,MAAMutJ,YAAY,kBAAmBqvC,KAGnD,CACChuS,IAAK,UACLV,IAAK,WACD,OAAO,MAGRmuS,EAxEI,CAyEbP,GAEEe,EAAc,SAAUC,GAGxB,SAASD,IAEL,OADA,EAAIrwQ,EAAiB/8B,SAASmL,KAAMiiS,IAC7B,EAAIzkP,EAA4B3oD,SAASmL,MAAOiiS,EAAY/iS,YAAa,EAAIq+C,EAAiB1oD,SAASotS,IAAc/lS,MAAM8D,KAAM2C,YAgD5I,OApDA,EAAI+6C,EAAW7oD,SAASotS,EAAaC,IAOrC,EAAIrwQ,EAAch9B,SAASotS,EAAa,CAAC,CACrCjuS,IAAK,mBACLN,MAAO,SAA0B6wL,EAAKvqJ,GAClC,OAAkB,IAAXA,GAAwB,OAARuqJ,IAE5B,CACCvwL,IAAK,iBACLN,MAAO,SAAwBqyE,EAAUw+G,GACrC,OAAO,IAEZ,CACCvwL,IAAK,YACLN,MAAO,WACH,OAAOvC,SAASC,cAAc,QAEnC,CACC4C,IAAK,QACLN,MAAO,WACH,OAAO,IAEZ,CACCM,IAAK,gBACLN,MAAO,cACR,CACCM,IAAK,mBACLN,MAAO,SAA0B0f,GAC7B,MAAwB,OAAjBA,EAAK6tF,UAEjB,CACCjtG,IAAK,OACLV,IAAK,WACD,MAAO,YAQZ,CACCU,IAAK,UACLV,IAAK,WACD,OAAO,MAGR2uS,EArDO,CAsDhBf,GAEEiB,EAAe,SAAUC,GAGzB,SAASD,EAAaE,EAAcrtM,IAChC,EAAIpjE,EAAiB/8B,SAASmL,KAAMmiS,GAEpC,IAAIt8M,GAAS,EAAIroC,EAA4B3oD,SAASmL,MAAOmiS,EAAajjS,YAAa,EAAIq+C,EAAiB1oD,SAASstS,IAAeryS,KAAKkQ,KAAMqiS,EAAcA,IAG7J,OADAx8M,EAAO0Q,MAAQvB,EACRnP,EAyBX,OAjCA,EAAInoC,EAAW7oD,SAASstS,EAAcC,IAWtC,EAAIvwQ,EAAch9B,SAASstS,EAAc,CAAC,CACtCnuS,IAAK,YACLN,MAAO,SAAmB0f,GACtB,IAAI0uR,EAAgB,GAChBxqL,EAAYkkB,EAAS3mI,QAAQqgJ,iBAAiBl1I,KAAKu2F,MAAO,GAAK9hG,OAAO8/I,iBAAkB,GAAK9/I,OAAO8/I,kBACnGj9B,IACDwqL,EAAgBtmK,EAAS3mI,QAAQigJ,iBAAiB90I,KAAKu2F,MAAM/jG,MAC7D8kH,EAAY,SAAWkkB,EAAS3mI,QAAQ2/I,0BAA0Bx0I,KAAKu2F,MAAMhwC,SAEjFvmD,KAAKsiS,eAAelvR,EAAMkkG,EAAWwqL,KAE1C,CACC9tS,IAAK,OACLV,IAAK,WACD,MAAO,cAEZ,CACCU,IAAK,YACLV,IAAK,WACD,MAAO,0BAGR6uS,EAlCQ,CAmCjBV,GAEEc,EAAiB,SAAUC,GAG3B,SAASD,IAEL,OADA,EAAI3wQ,EAAiB/8B,SAASmL,KAAMuiS,IAC7B,EAAI/kP,EAA4B3oD,SAASmL,MAAOuiS,EAAerjS,YAAa,EAAIq+C,EAAiB1oD,SAAS0tS,IAAiBrmS,MAAM8D,KAAM2C,YASlJ,OAbA,EAAI+6C,EAAW7oD,SAAS0tS,EAAgBC,IAOxC,EAAI3wQ,EAAch9B,SAAS0tS,EAAgB,CAAC,CACxCvuS,IAAK,OACLV,IAAK,WACD,MAAO,mBAGRivS,EAdU,CAenBJ,GAEEM,EAAe,SAAUC,GAGzB,SAASD,EAAalvQ,EAAQurB,EAAa04C,IACvC,EAAI5lE,EAAiB/8B,SAASmL,KAAMyiS,GAEpC,IAAIz7M,GAAS,EAAIxpC,EAA4B3oD,SAASmL,MAAOyiS,EAAavjS,YAAa,EAAIq+C,EAAiB1oD,SAAS4tS,IAAe3yS,KAAKkQ,KAAMuzB,EAAQurB,IAGvJ,OADAkoC,EAAO27M,QAAUnrM,EACVxQ,EAyCX,OAjDA,EAAItpC,EAAW7oD,SAAS4tS,EAAcC,IAWtC,EAAI7wQ,EAAch9B,SAAS4tS,EAAc,CAAC,CACtCzuS,IAAK,YACLN,MAAO,SAAmB0f,GACtB,GAAKpT,KAAK2iS,QAAV,CAGA,IAAInwS,EAAOwN,KAAK2iS,QAAQnwS,MAAQwN,KAAK2iS,QAAQpvQ,OACzCqvQ,EAAmBpnK,EAAS3mI,QAAQ2/I,0BAA0Bx0I,KAAK2iS,QAAQpvQ,QAC3E+jF,EAAYkkB,EAAS3mI,QAAQsnI,mBAAmBn8H,KAAK2iS,QAAS,GAAKluS,OAAO8/I,iBAAkB,GAAK9/I,OAAO8/I,kBACxGutJ,EAAgB,GAChBxqL,IAAcsrL,IAKdtrL,EAAY,SAAWA,EACvBwqL,EAAgBtmK,EAAS3mI,QAAQigJ,iBAAiBtiJ,IAEtDwN,KAAKsiS,eAAelvR,EAAMkkG,EAAWwqL,MAE1C,CACC9tS,IAAK,YACLN,MAAO,WACH,IAAIuB,GAAM,EAAIwoD,EAAM5oD,SAAS4tS,EAAa7yS,UAAUsP,YAAa,EAAIq+C,EAAiB1oD,SAAS4tS,EAAa7yS,WAAY,YAAaoQ,MAAMlQ,KAAKkQ,MAEhJ,OADA/K,EAAI0sS,WAAa3hS,KAAK2hS,WACf1sS,IAEZ,CACCjB,IAAK,OACLV,IAAK,WACD,MAAO,cAEZ,CACCU,IAAK,YACLV,IAAK,WACD,MAAO,0BAGRmvS,EAlDQ,CAmDjBhB,GAEEoB,EAAoB,SAAUC,GAG9B,SAASD,EAAkB/oS,EAAMu/R,IAC7B,EAAIznQ,EAAiB/8B,SAASmL,KAAM6iS,GAEpC,IAAI9yD,GAAS,EAAIvyL,EAA4B3oD,SAASmL,MAAO6iS,EAAkB3jS,YAAa,EAAIq+C,EAAiB1oD,SAASguS,IAAoB/yS,KAAKkQ,KAAMlG,IAGzJ,OADAi2O,EAAOgzD,qBAAuB1J,EACvBtpD,EAiCX,OAzCA,EAAIryL,EAAW7oD,SAASguS,EAAmBC,IAW3C,EAAIjxQ,EAAch9B,SAASguS,EAAmB,CAAC,CAC3C7uS,IAAK,qBACLN,MAAO,SAA4B0mS,GAC/B,OAAOp6R,KAAK+iS,qBAAqBhvS,OAAOqmS,KAE7C,CACCpmS,IAAK,mBACLN,MAAO,SAA0B6wL,EAAKvqJ,EAAQw5P,GAC1C,OAAe,IAAXx5P,IAGO,EAAIyjB,EAAM5oD,SAASguS,EAAkBjzS,UAAUsP,YAAa,EAAIq+C,EAAiB1oD,SAASguS,EAAkBjzS,WAAY,mBAAoBoQ,MAAMlQ,KAAKkQ,KAAMukL,EAAKvqJ,EAAQw5P,KAG1L,CACCx/R,IAAK,QACLN,MAAO,WACH,OAAO,IAEZ,CACCM,IAAK,iBACLN,MAAO,SAAwBqyE,EAAUw+G,GACrC,OAAO,IAEZ,CACCvwL,IAAK,OACLV,IAAK,WACD,MAAO,qBAGRuvS,EA1Ca,CA2CtB/B,GAUF,IAAID,EAActwS,EAAQswS,YAAc,WACpC,SAASA,EAAY7rM,EAAMqf,GACvB,IAAIglL,EAAsB12R,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,GAAmBA,UAAU,GAAK,MAC9F,EAAIivB,EAAiB/8B,SAASmL,KAAM6gS,GAEpC7gS,KAAKu2F,MAAQvB,EACbh1F,KAAKy4G,QAAUpE,EAGfr0G,KAAK+iS,qBAAuB,CAAEhvS,OAAQslS,GAAuBA,EAAoBr5R,OA4FrF,OAzFA,EAAI6xB,EAAch9B,SAASgsS,EAAa,CAAC,CACrC7sS,IAAK,yBACLN,MAAO,SAAgC2lS,GACnCr5R,KAAK+iS,qBAAqBhvS,OAASslS,EAAoBr5R,QAE5D,CACChM,IAAK,qBACLN,MAAO,SAA4Bk7B,GAC/B,OAAQA,EAAM,IACV,IAAK,IACL,IAAK,IACL,IAAK,IACD,OAAO5uB,KAAKg5R,cAAc,IAC9B,IAAK,KACD,OAAO,IAAIiJ,EACf,QACI,OAAO,IAAInB,KAGxB,CACC9sS,IAAK,oBACLN,MAAO,SAA2BoG,GAC9B,OAAOkG,KAAKg2N,MAAMl8N,KAEvB,CACC9F,IAAK,kBACLN,MAAO,SAAyB8+F,GAC5B,OAAQA,EAAKpgG,MACT,IAAK,QACD,OAAO4N,KAAKg2N,MAAMxjI,EAAK14F,MAC3B,IAAK,UACD,OAAOkG,KAAKgjS,UAChB,IAAK,eACD,OAAOhjS,KAAKijS,WAAWzwM,EAAK14F,MAChC,IAAK,iBACD,OAAOkG,KAAKg5R,cAAcxmM,EAAK14F,MACnC,IAAK,YACD,OAAOkG,KAAKkjS,SAAS1wM,EAAK14F,MAC9B,IAAK,YACD,OAAOkG,KAAKmjS,SAAS3wM,EAAK14F,KAAM04F,EAAKmvM,eAGlD,CACC3tS,IAAK,QACLN,MAAO,SAAeoG,GAClB,OAAO,IAAIgnS,EAAUhnS,KAE1B,CACC9F,IAAK,UACLN,MAAO,WACH,OAAO,IAAIuuS,EAAY,QAE5B,CACCjuS,IAAK,gBACLN,MAAO,SAAuBoG,GAC1B,OAAO,IAAI+oS,EAAkB/oS,EAAMkG,KAAK+iS,wBAE7C,CACC/uS,IAAK,WACLN,MAAO,SAAkB+7P,GACrB,IAAIz6J,OAAO,EAQX,OANIA,EADa,MAAby6J,EAAM,GACCzvP,KAAKy4G,QAAQ2zG,WAAW9yN,MAAK,SAAU/F,GAC1C,OAAOA,EAAE2xI,aAAa1jG,SAASiuN,MAG5BzvP,KAAKy4G,QAAQvjB,QAAQu6J,GAEzB,IAAI0yC,EAAa1yC,EAAOz6J,KAEpC,CACChhG,IAAK,aACLN,MAAO,SAAoBoG,GACvB,OAAO,IAAIyoS,EAAezoS,EAAMkG,KAAKu2F,SAE1C,CACCviG,IAAK,WACLN,MAAO,SAAkBorD,EAAavrB,GAClC,IAAIikE,EAASx3F,KAAKu2F,MAAM6B,UAAU7kE,GAClC,OAAO,IAAIkvQ,EAAalvQ,EAAQurB,EAAa04C,KAElD,CACCxjG,IAAK,qBACLN,MAAO,SAA4B0vS,EAAWtkP,EAAavrB,GAGvD,MAAO,CAFIvzB,KAAKmjS,SAASrkP,EAAavrB,GACxBvzB,KAAKg2N,MAAoB,IAAdotE,EAAkB,KAAO,UAInDvC,EArG6B,GAiJpCwC,GArCqB9yS,EAAQqwS,mBAAqB,SAAU0C,GAG5D,SAAS1C,IAEL,OADA,EAAIhvQ,EAAiB/8B,SAASmL,KAAM4gS,IAC7B,EAAIpjP,EAA4B3oD,SAASmL,MAAO4gS,EAAmB1hS,YAAa,EAAIq+C,EAAiB1oD,SAAS+rS,IAAqB1kS,MAAM8D,KAAM2C,YA6B1J,OAjCA,EAAI+6C,EAAW7oD,SAAS+rS,EAAoB0C,IAO5C,EAAIzxQ,EAAch9B,SAAS+rS,EAAoB,CAAC,CAC5C5sS,IAAK,qBACLN,MAAO,SAA4BoG,EAAMspS,GAErC,OAAkB,IAAdA,GAA+B,MAAZtpS,EAAK,GAEjBkG,KAAKqjJ,QAAQ,KAEb,EAAI5lG,EAAM5oD,SAAS+rS,EAAmBhxS,UAAUsP,YAAa,EAAIq+C,EAAiB1oD,SAAS+rS,EAAmBhxS,WAAY,qBAAsBoQ,MAAMlQ,KAAKkQ,KAAMlG,EAAMspS,KAGvL,CACCpvS,IAAK,UACLN,MAAO,SAAiBoG,GACpB,OAAO,IAAIupS,EAAYvpS,EAAMkG,KAAK+iS,wBAEvC,CACC/uS,IAAK,kBACLN,MAAO,SAAyB8+F,GAC5B,MAAkB,YAAdA,EAAKpgG,KACE4N,KAAKqjJ,QAAQ7wD,EAAK14F,OAElB,EAAI2jD,EAAM5oD,SAAS+rS,EAAmBhxS,UAAUsP,YAAa,EAAIq+C,EAAiB1oD,SAAS+rS,EAAmBhxS,WAAY,kBAAmBoQ,MAAMlQ,KAAKkQ,KAAMwyF,OAI1KouM,EAlC2C,CAmCpDC,GAEgB,SAAU0C,GAGxB,SAASF,IAEL,OADA,EAAIzxQ,EAAiB/8B,SAASmL,KAAMqjS,IAC7B,EAAI7lP,EAA4B3oD,SAASmL,MAAOqjS,EAAYnkS,YAAa,EAAIq+C,EAAiB1oD,SAASwuS,IAAcnnS,MAAM8D,KAAM2C,YAS5I,OAbA,EAAI+6C,EAAW7oD,SAASwuS,EAAaE,IAOrC,EAAI1xQ,EAAch9B,SAASwuS,EAAa,CAAC,CACrCrvS,IAAK,OACLV,IAAK,WACD,MAAO,cAGR+vS,EAdO,CAehBR,K,6BC1qBFlzS,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAagCuB,EAb5BuuS,EAAsB,EAAQ,IAE9BplP,GAW4BnpD,EAXiBuuS,IAWIvuS,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GATvF1E,EAAQ4kS,sBAAwBA,EAChC5kS,EAAQkzS,WAiQR,SAAoB3xS,EAAO+hS,GACvB,IACI6P,GADO/gS,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,GAAmBA,UAAU,GAAK,IAC/CghS,gBAC5BA,OAA2CjxS,IAAzBgxS,GAA6CA,EAE/D1rM,EAAUlmG,EAAMmmG,aAChBp8F,OAAQ,EAERA,EADmB,2BAAnBm8F,EAAQtH,OA9FhB,SAA0BmQ,EAAMgzL,EAAa8P,GAIzC,IAAIlE,GAAW,IAAItkE,WAAYC,gBAAgBv6H,EAAM,aAAa/jG,KAC9DjB,EAAQ,GACR+nS,OAAW,EACXC,EAAUF,EACV9jP,EAAQ,GA4DZ,OAFA,EAAIyyO,EAAK8M,mBAAmBK,GAxD5B,SAAqBvrS,GACjB,GAAI4vS,EAAa5vS,GACb,OAAO,EAEQ,eAAfA,EAAEswG,WACFq/L,GAAU,GAGd,IAAIE,EAAW,GACXH,KAAa,EAAI/uE,EAAWtwH,gBAAgBq/L,KAAa,EAAI/uE,EAAWtwH,gBAAgBrwG,KACxF6vS,EAAS/zS,KAAK6jS,EAAYmP,WAG9B,GAAI9uS,EAAEgvC,WAAa8rB,KAAKgxO,UACpB+D,EAAS/zS,KAAKkM,MAAM6nS,GAAU,EAAI3lP,EAAoBvpD,SAASmvS,EAAoB9vS,EAAEqsS,UAAW1M,UAC7F,GAAI3/R,EAAEgvC,WAAa8rB,KAAK8wO,aAAc,CACzC,IAAImE,EAnHhB,SAAsB/vS,EAAG2/R,EAAa+P,EAAU/jP,GAC5C,OAAQ3rD,EAAEswG,UACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACD,OAbZ,SAAqBsvD,EAAI+/H,GACrB,IAAIviP,EAAQx+B,SAASghJ,EAAGtvD,SAASjrG,OAAO,GAAI,IAC5C,OAAOs6R,EAAY79D,MAAM,IAAInsB,OAAOv4J,GAAS,KAW9B4yP,CAAYhwS,EAAG2/R,GAC1B,IAAK,IACD,OAhDZ,SAAmBx0R,EAAGw0R,GAClB,IAAIvjM,EAAOjxF,EAAEixF,KAETqxM,GAAa,EAAI/8L,EAAY1O,2BAA2B5F,GAE5D,OADaqxM,EAAaA,EAAW,QAAKjvS,GAEtC,IAAK,IACD,OAAOmhS,EAAYsP,SAAS9jS,EAAEy8N,YAAa6lE,GAC/C,IAAK,IACD,OAAO9N,EAAYqP,SAASvB,GAChC,QAEQ,OAAIrxM,IAASjxF,EAAEy8N,YACJ+3D,EAAY79D,MAAM32N,EAAEy8N,aAEpB+3D,EAAY79D,MAAM,IAAM32N,EAAEy8N,YAAc,KAAOxrI,EAAO,MAiC9D6zM,CAAUjwS,EAAG2/R,GACxB,IAAK,KACD,OAAOA,EAAYmP,UACvB,IAAK,KACD,OAAOnP,EAAY79D,MAAM,IAAM9hO,EAAE4nO,YAAc,KACnD,IAAK,SACD,OAAO+3D,EAAY79D,MAAM,KAAO9hO,EAAE4nO,YAAc,MACpD,IAAK,MACD,OAnCZ,SAAwB5nO,EAAG2/R,GACvB,IAAIh4R,EAAQ,GACRuoS,GAAY,QAAUlwS,EAAE4nO,YAAc,OAAOjjO,MAAM,MAOvD,OANAurS,EAAShqS,SAAQ,SAAU3J,EAAGjB,GAC1BqM,EAAM7L,KAAK6jS,EAAY79D,MAAMvlO,IACzBjB,EAAI40S,EAAS10S,OAAS,GACtBmM,EAAM7L,KAAK6jS,EAAYmP,cAGxBnnS,EA0BQwoS,CAAenwS,EAAG2/R,GAC7B,IAAK,OACD,OAAOA,EAAY79D,MAAM,IAAM9hO,EAAE4nO,YAAc,KACnD,IAAK,MACD,OAAO+3D,EAAY79D,MAAM,QAAU9hO,EAAE4nO,YAAc,UACvD,IAAK,KAEG,IAAIpkN,EAAS,KAAKmyL,OAAOhqJ,EAAMykP,UAAY,GAC3C,MAAiC,OAA7BpwS,EAAEm2Q,cAAc7lK,SACTqvL,EAAY79D,MAAMt+M,EAAS,OAE3Bm8Q,EAAY79D,MAAMt+M,EAAS,MAG9C,IAAK,IAEG,GAAIksR,EACA,OAAO/P,EAAYmP,UAEvB,MAER,IAAK,KACL,IAAK,KACDnjP,EAAMykP,WAAazkP,EAAMykP,WAAa,GAAK,EAE/C,QAEI,IAAKC,EAAgBrwS,GACjB,OAAO2/R,EAAY79D,MAAM9hO,EAAE4nO,cAqEb0oE,CAAatwS,EAAG2/R,EAAa+P,EAAU/jP,GACrDokP,IACIttS,MAAMC,QAAQqtS,GACdF,EAAS/zS,KAAKkM,MAAM6nS,GAAU,EAAI3lP,EAAoBvpD,SAASovS,IAE/DF,EAAS/zS,KAAKi0S,IAK1B,GAAIF,EAASr0S,QAAUm0S,EAAS,EAlDxC,SAA0BY,EAAa5oS,EAAOg4R,GAGtC4Q,GACA5oS,EAAMQ,OAAO,EAAG,EAAGw3R,EAAY79D,MAAM0uE,IAEzC,IAAK,IAAIl1S,EAAI,EAAGA,EAAIqM,EAAMnM,OAAQF,GAAK,EACb,YAAlBqM,EAAMrM,GAAG4C,OACTyJ,EAAMQ,OAAO7M,EAAI,EAAG,EAAGqkS,EAAY79D,MAAM0uE,IACzCl1S,GAAK,GA2CLm1S,CADmC,IAAjB9oS,EAAMnM,OACMq0S,EAAUlQ,GAG5Ch4R,EAAM7L,KAAKkM,MAAML,EAAOkoS,GAExB,IAAIa,EAASL,EAAgBrwS,GAI7B,OADA0vS,EAAWgB,EAAS,KAAO1wS,EACpB0wS,KAGX,SAAqB1wS,GACjB,GAAI4vS,EAAa5vS,GACb,OAEJ,OAAQA,EAAEswG,UACN,IAAK,aACDq/L,GAAU,EACV,MACJ,IAAK,KACL,IAAK,KACDhkP,EAAMykP,WAAa,EAG3BV,EAAW1vS,KAKR2H,EA2BKgpS,CAAiB7sM,EAAQkK,gBAAkB,GAAI2xL,EAAa8P,GAE5DxO,EAAsBn9L,EAAQl7F,MAAQ,GAAI+2R,EAAa8P,GAE3C,YAApB3rM,EAAQomB,SACRviH,EAAMmwC,QAAQ6nP,EAAY79D,MAAM,SAEpC,OAAOn6N,GA9QX,IAAIy2R,EAAO,EAAQ,KAEfz9D,EAAa,EAAQ,IAErBjwH,EAAc,EAAQ,IAI1B,SAASo/L,EAAoBlqS,EAAM+5R,GAC/B,IACIh4R,EAAQ,GAaZ,OAZA/B,EAAKjB,MAFQ,SAEMuB,SAAQ,SAAU0qS,EAAUt1S,EAAGuqC,GAC1C+qQ,EAASp1S,QACTmM,EAAM7L,KAAK6jS,EAAY79D,MAAM8uE,IAKpBt1S,IAAMuqC,EAAIrqC,OAAS,GAE5BmM,EAAM7L,KAAK6jS,EAAYoP,WAXlB,aAcNpnS,EA2GX,SAAS0oS,EAAgBnxR,GACrB,OAAQA,EAAKoxF,UACT,IAAK,MAID,OAAO,EACX,QACI,OAAO,EAAIqwH,EAAWtwH,gBAAgBnxF,IAIlD,SAAS0wR,EAAa5vS,GAClB,OAAIA,EAAEgvC,WAAa8rB,KAAKgxO,UAGG,OAAhB9rS,EAAEqsS,UACFrsS,EAAEgvC,WAAa8rB,KAAK8wO,cACL,aAAf5rS,EAAEswG,SAKjB,IAAIkgM,EAAoB,KAsFxB,SAASvP,EAAsBr4R,EAAM+2R,EAAa8P,GAC9C,IAAIhsR,EAAQ7a,EAAKjE,MAAM,MAYvB,OAXY8e,EAAMvB,QAAO,SAAUva,EAAO4V,EAAMjiB,GAS5C,OARIm0S,GACA9nS,EAAM7L,KAAK6jS,EAAY79D,MAAM0uE,IAEjC7oS,EAAM7L,KAAKkM,MAAML,GAAO,EAAIuiD,EAAoBvpD,SAASmvS,EAAoBvyR,EAAMoiR,KACtErkS,IAAMmoB,EAAMjoB,OAAS,GAE9BmM,EAAM7L,KAAK6jS,EAAYmP,WAEpBnnS,IACR,M,6BCtQP,SAASkpS,EAAY3xR,GACjB,OAAQA,EAAKm0B,OACb,IAAK,WACL,IAAK,cACL,IAAK,OACL,IAAK,OACL,IAAK,YACL,IAAK,UACL,IAAK,OACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,gBACL,IAAK,eACD,OAAO,EACX,QACI,OAAO,GAIf,IAAIy9P,EAAW,SAAS5xR,EAAM6xR,GAC1BjlS,KAAKwT,QAAUJ,EACfpT,KAAKilS,UAAyB,IAAbA,GAGjBvnS,EAAO,WACP,IAAIwnS,EAAMllS,KAAKwT,QACXyxR,EAAWjlS,KAAKilS,SAEpB,GAAY,OAARC,EACA,OAAO,KAGX,IAAIxkP,EAAYqkP,EAAYG,GAuB5B,OArBID,GAAYvkP,EACRwkP,EAAIC,aACJnlS,KAAKwT,QAAU0xR,EAAIC,YACnBnlS,KAAKilS,UAAW,GAGhBjlS,KAAKilS,UAAW,EAGbC,IAAQllS,KAAK4nC,KACpB5nC,KAAKwT,QAAU,KAEM,OAAd0xR,EAAIplO,OACX9/D,KAAKwT,QAAU0xR,EAAIj0R,QACnBjR,KAAKilS,UAAW,IAGhBjlS,KAAKwT,QAAU0xR,EAAIplO,MACnB9/D,KAAKilS,UAAW,GAGb,CAACA,SAAUA,EAAU7xR,KAAM8xR,IAGlCE,EAAa,SAASx9P,GACtB,MAAO,CAAEp0B,QAASo0B,EACTA,KAAMA,EACNq9P,UAAU,EACVvnS,KAAMA,EACNsnS,SAAUA,IAGnBh2O,EAAO,SAAS9rB,EAAUmiQ,GAC1BrlS,KAAKunC,MAAQrE,EACbljC,KAAKiR,QAAU,KACfjR,KAAKmlS,YAAc,KACnBnlS,KAAKslS,WAAa,KAClBtlS,KAAKulS,MAAQ,KACbvlS,KAAK8/D,MAAQ,KACb9/D,KAAKwlS,WAAaH,EAClBrlS,KAAKylS,gBAAiB,EACtBzlS,KAAK0lS,OAAQ,EACb1lS,KAAK2lS,gBAAkB,KACvB3lS,KAAK4lS,SAAW,KAChB5lS,KAAK6lS,UAAY,GACjB7lS,KAAK8lS,MAAQ,KACb9lS,KAAK+lS,aAAe,KACpB/lS,KAAKgmS,OAAS,KACdhmS,KAAKimS,WAAY,EACjBjmS,KAAKkmS,WAAa,KAClBlmS,KAAKmmS,aAAe,EACpBnmS,KAAKomS,aAAe,KACpBpmS,KAAK4rC,OAAS,KACd5rC,KAAKqmS,SAAW,KAChBrmS,KAAKsmS,QAAU,MAGf7tR,EAAQu2C,EAAKp/D,UAEjBD,OAAOyD,eAAeqlB,EAAO,cAAe,CACxCnlB,IAAK,WAAc,OAAOyxS,EAAY/kS,SAG1CrQ,OAAOyD,eAAeqlB,EAAO,OAAQ,CACjCnlB,IAAK,WAAa,OAAO0M,KAAKunC,SAGlC53C,OAAOyD,eAAeqlB,EAAO,aAAc,CACvCnlB,IAAK,WAAa,OAAO0M,KAAKmlS,eAGlCx1S,OAAOyD,eAAeqlB,EAAO,YAAa,CACtCnlB,IAAK,WAAa,OAAO0M,KAAKslS,cAGlC31S,OAAOyD,eAAeqlB,EAAO,OAAQ,CACjCnlB,IAAK,WAAa,OAAO0M,KAAK8/D,SAGlCnwE,OAAOyD,eAAeqlB,EAAO,OAAQ,CACjCnlB,IAAK,WAAa,OAAO0M,KAAKulS,SAGlC51S,OAAOyD,eAAeqlB,EAAO,SAAU,CACnCnlB,IAAK,WAAa,OAAO0M,KAAKiR,WAGlCthB,OAAOyD,eAAeqlB,EAAO,YAAa,CACtCnlB,IAAK,WAAa,OAAO0M,KAAKwlS,cAGlC71S,OAAOyD,eAAeqlB,EAAO,UAAW,CACpCnlB,IAAK,WAAa,OAAO0M,KAAK4lS,UAC9BrtR,IAAK,SAAS3jB,GAAKoL,KAAK4lS,SAAWhxS,KAGvCjF,OAAOyD,eAAeqlB,EAAO,cAAe,CACxCnlB,IAAK,WAAa,OAAO0M,KAAK+lS,cAC9BxtR,IAAK,SAAS3jB,GAAKoL,KAAK+lS,aAAenxS,KAG3CjF,OAAOyD,eAAeqlB,EAAO,QAAS,CAClCnlB,IAAK,WAAa,OAAO0M,KAAKgmS,QAC9BztR,IAAK,SAAS3jB,GAAKoL,KAAKgmS,OAASpxS,KAGrCjF,OAAOyD,eAAeqlB,EAAO,OAAQ,CACjCnlB,IAAK,WAAa,OAAO0M,KAAK8lS,OAC9BvtR,IAAK,SAAS3jB,GAAKoL,KAAK8lS,MAAQlxS,KAGpCjF,OAAOyD,eAAeqlB,EAAO,QAAS,CAClCnlB,IAAK,WAAa,OAAO0M,KAAK4rC,QAC9BrzB,IAAK,SAAS3jB,GAAKoL,KAAK4rC,OAASh3C,KAGrCjF,OAAOyD,eAAeqlB,EAAO,WAAY,CACrCnlB,IAAK,WAAa,OAAO0M,KAAK6lS,UAAUzzS,MACxCmmB,IAAK,SAAS5kB,GAAKqM,KAAK6lS,UAAUzzS,KAAOuB,KAG7ChE,OAAOyD,eAAeqlB,EAAO,YAAa,CACtCnlB,IAAK,WAAa,OAAO0M,KAAK6lS,UAAUU,OACxChuR,IAAK,SAAS5kB,GAAKqM,KAAK6lS,UAAUU,MAAQ5yS,KAG9ChE,OAAOyD,eAAeqlB,EAAO,YAAa,CACtCnlB,IAAK,WAAa,OAAO0M,KAAK6lS,UAAU3wQ,OACxC3c,IAAK,SAASrkB,GAAK8L,KAAK6lS,UAAU3wQ,MAAQhhC,KAG9CvE,OAAOyD,eAAeqlB,EAAO,gBAAiB,CAC1CnlB,IAAK,WAAa,OAAO0M,KAAK6lS,UAAU5nE,WACxC1lN,IAAK,SAASiuR,GAASxmS,KAAK6lS,UAAU5nE,UAAYuoE,KAGtD72S,OAAOyD,eAAeqlB,EAAO,UAAW,CACpCnlB,IAAK,WAAa,OAAO0M,KAAKqmS,UAC9B9tR,IAAK,SAAS3jB,GAAKoL,KAAKqmS,SAAWzxS,KAGvCjF,OAAOyD,eAAeqlB,EAAO,SAAU,CACnCnlB,IAAK,WAAa,OAAO0M,KAAKsmS,SAC9B/tR,IAAK,SAAS3jB,GAAKoL,KAAKsmS,QAAU1xS,KAGtCo6D,EAAKp/D,UAAUiD,YAAc,SAASgU,GAClCA,EAAM4/R,SACN5/R,EAAMoK,QAAUjR,KACZA,KAAKslS,YACLtlS,KAAKslS,WAAWxlO,MAAQj5D,EACxBA,EAAM0+R,MAAQvlS,KAAKslS,WACnBtlS,KAAKslS,WAAaz+R,IAElB7G,KAAKmlS,YAAct+R,EACnB7G,KAAKslS,WAAaz+R,IAI1BmoD,EAAKp/D,UAAU82S,aAAe,SAAS7/R,GACnCA,EAAM4/R,SACN5/R,EAAMoK,QAAUjR,KACZA,KAAKmlS,aACLnlS,KAAKmlS,YAAYI,MAAQ1+R,EACzBA,EAAMi5D,MAAQ9/D,KAAKmlS,YACnBnlS,KAAKmlS,YAAct+R,IAEnB7G,KAAKmlS,YAAct+R,EACnB7G,KAAKslS,WAAaz+R,IAI1BmoD,EAAKp/D,UAAU62S,OAAS,WAChBzmS,KAAKulS,MACLvlS,KAAKulS,MAAMzlO,MAAQ9/D,KAAK8/D,MACjB9/D,KAAKiR,UACZjR,KAAKiR,QAAQk0R,YAAcnlS,KAAK8/D,OAEhC9/D,KAAK8/D,MACL9/D,KAAK8/D,MAAMylO,MAAQvlS,KAAKulS,MACjBvlS,KAAKiR,UACZjR,KAAKiR,QAAQq0R,WAAatlS,KAAKulS,OAEnCvlS,KAAKiR,QAAU,KACfjR,KAAK8/D,MAAQ,KACb9/D,KAAKulS,MAAQ,MAGjBv2O,EAAKp/D,UAAU2rQ,YAAc,SAASorC,GAClCA,EAAQF,SACRE,EAAQ7mO,MAAQ9/D,KAAK8/D,MACjB6mO,EAAQ7mO,QACR6mO,EAAQ7mO,MAAMylO,MAAQoB,GAE1BA,EAAQpB,MAAQvlS,KAChBA,KAAK8/D,MAAQ6mO,EACbA,EAAQ11R,QAAUjR,KAAKiR,QAClB01R,EAAQ7mO,QACT6mO,EAAQ11R,QAAQq0R,WAAaqB,IAIrC33O,EAAKp/D,UAAU4rG,aAAe,SAASmrM,GACnCA,EAAQF,SACRE,EAAQpB,MAAQvlS,KAAKulS,MACjBoB,EAAQpB,QACRoB,EAAQpB,MAAMzlO,MAAQ6mO,GAE1BA,EAAQ7mO,MAAQ9/D,KAChBA,KAAKulS,MAAQoB,EACbA,EAAQ11R,QAAUjR,KAAKiR,QAClB01R,EAAQpB,QACToB,EAAQ11R,QAAQk0R,YAAcwB,IAItC33O,EAAKp/D,UAAUg3S,OAAS,WAEpB,OADa,IAAIxB,EAAWplS,OAIhCxP,EAAOD,QAAUy+D,G,6BChQjBr/D,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEIg+B,EAAgB97B,EAFD,EAAQ,KAIvB+7B,EAAY,EAAQ,GAIpBw5E,EAAYv1G,EAFD,EAAQ,KAMnB2nD,EAAmB3nD,EAFD,EAAQ,IAM1Bg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxB4nD,EAA8B5nD,EAFA,EAAQ,IAMtC8nD,EAAa9nD,EAFA,EAAQ,IAMrBgE,EAAUhE,EAFD,EAAQ,IAIjBgpD,EAAmB,EAAQ,GAI3BioP,EAAYjxS,EAFD,EAAQ,MAMnBq/F,EAAoBr/F,EAFD,EAAQ,KAM3Bs8B,EAAUt8B,EAFD,EAAQ,IAMjB+oD,EAAe/oD,EAFD,EAAQ,KAMtBs+M,EAAqBt+M,EAFD,EAAQ,KAM5BmiH,EAAgBniH,EAFD,EAAQ,KAMvBs+G,EAAsBt+G,EAFD,EAAQ,MAM7BkxS,EAAqBlxS,EAFD,EAAQ,MAI5Bu+G,EAAuB,EAAQ,KAI/B38G,EAAkB5B,EAFD,EAAQ,KAI7B,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAiBvF,IASI8xS,EAAgB,SAAUpnK,GAG1B,SAASonK,EAAc1xS,IACnB,EAAIu8B,EAAiB/8B,SAASmL,KAAM+mS,GAEpC,IAAI1nP,GAAQ,EAAI7B,EAA4B3oD,SAASmL,MAAO+mS,EAAc7nS,YAAa,EAAIq+C,EAAiB1oD,SAASkyS,IAAgBj3S,KAAKkQ,KAAM3K,IAyBhJ,OAvBAgqD,EAAM2nP,qBAAuB3nP,EAAM2nP,qBAAqB/yS,KAAKorD,GAC7DA,EAAM4nP,qBAAuB5nP,EAAM4nP,qBAAqBhzS,KAAKorD,GAC7DA,EAAM6nP,0BAA4B7nP,EAAM6nP,0BAA0BjzS,KAAKorD,GACvEA,EAAM8nP,4BAA8B9nP,EAAM8nP,4BAA4BlzS,KAAKorD,GAC3EA,EAAM+nP,cAAgB/nP,EAAM+nP,cAAcnzS,KAAKorD,GAC/CA,EAAMgoP,gBAAkBhoP,EAAMgoP,gBAAgBpzS,KAAKorD,GACnDA,EAAMioP,UAAYjoP,EAAMioP,UAAUrzS,KAAKorD,GACvCA,EAAMkoP,YAAcloP,EAAMkoP,YAAYtzS,KAAKorD,GAE3CA,EAAMmoP,aAAe,IACrBnoP,EAAMooP,cAAgB,IAGtBpoP,EAAMytE,aAAe,KAErBztE,EAAMQ,MAAQ,CACV6nP,cAAc,EACdC,QAAS,KACTC,eAAgB,KAChBC,eAAgB,KAChBC,oBAAqB,KACrB3yL,SAAU,MAEP91D,EAwBA,IACCnsB,EA0YZ,OAjcA,EAAIwqB,EAAW7oD,SAASkyS,EAAepnK,IAiCvC,EAAI9tG,EAAch9B,SAASkyS,EAAe,CAAC,CACvC/yS,IAAK,uBACLN,MAAO,WACH,IAAIqqD,EAAS/9C,KAEb,OAAIA,KAAK8sH,aAAqB3hB,EAAUt2G,QAAQ9D,QAAQiP,KAAK8sH,cAEzD3Y,EAAqBW,oBAAoBC,iBAAiB6E,cAC1D55G,KAAK8sH,aAAe3Y,EAAqBW,oBAAoBC,iBAAiBC,oBAAoBoY,kBAC3FptH,KAAK8sH,aAAaO,UAAUr2H,MAAK,WAEpC,OADA+mD,EAAO0sG,cACA1sG,EAAO+uE,gBACfttE,OAAM,SAAU9uD,GACfqtD,EAAOgqP,UAAS,EAAInpP,EAAiBzoD,KAAK,4CAA6CzF,YAG3FsP,KAAK+nS,UAAS,EAAInpP,EAAiBzoD,KAAK,mEAGjD,CACCnC,IAAK,8BACLN,OACQw/B,GAAO,EAAIvB,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASC,IAClF,IAEIm5F,EAFA15D,EAASpzD,KAGb,OAAO0xB,EAAc78B,QAAQm/B,MAAK,SAAkB7F,GAChD,OACI,OAAQA,EAAStsB,KAAOssB,EAASzwB,MAC7B,KAAK,EAED,OADAywB,EAASzwB,KAAO,GACT,EAAIi0B,EAAU5gC,SAASiP,KAAKgoS,wBAEvC,KAAK,EACDl7K,EAAe3+F,EAASmH,KAExB/gC,QAAQ+F,KAAK,kCACT0F,KAAK6/C,MAAMs1D,SACP2X,EACAA,EAAam7K,oBAlFpC,kBAkFoEjoS,KAAK6/C,MAAMs1D,UAAUn+G,MAAK,WACnEzC,QAAQ+F,KAAK,sBACdklD,OAAM,SAAUlrD,GACfC,QAAQ3C,MAAM,+BAGlB2C,QAAQ3C,MAAM,2CAGlB2C,QAAQ+F,KAAK,gDAGjB0F,KAAKu/C,SAAS,CAAEmoP,cAAc,IAC9B3vL,EAAcljH,QAAQqzS,6BAA6BlxS,MAAK,WACpDo8D,EAAOq3F,iBACRjrG,OAAM,SAAU9uD,GACf6D,QAAQ3C,MAAM,yCAA0ClB,MAGhE,KAAK,EACL,IAAK,MACD,OAAOy9B,EAASiF,UAG7BO,EAAS3zB,UAGhB,WACI,OAAOkzB,EAAKh3B,MAAM8D,KAAM2C,cAKjC,CACC3O,IAAK,oBACLN,MAAO,WAEHe,OAAOolK,iBAAiB,SAAU75J,KAAKsnS,WAEvCtnS,KAAKkoJ,cAAgBvpG,EAAa9pD,QAAQ66H,SAAS1vH,KAAKqnS,iBAGxDpyM,EAAkBpgG,QAAQvB,MAAMo7F,GAAG,cAAe1uF,KAAKonS,eAGvDpnS,KAAKonS,kBAEV,CACCpzS,IAAK,uBACLN,MAAO,WACH,IAAI2gH,EAASpf,EAAkBpgG,QAAQvB,MACnC+gH,GAAQA,EAAO1mB,eAAe,cAAe3tF,KAAKonS,eAEtD3yS,OAAOghS,oBAAoB,SAAUz1R,KAAKsnS,WACtCtnS,KAAKkoJ,eACLvpG,EAAa9pD,QAAQ64G,WAAW1tG,KAAKkoJ,iBAG9C,CACCl0J,IAAK,qBACLN,MAAO,SAA4BgpO,EAAW3S,GAC1C/pN,KAAKmoS,wBAAwBnoS,KAAK6/C,MAAM6nP,gBAE7C,CACC1zS,IAAK,WACLN,MAAO,SAAkBq6R,EAAUr9R,GAC/B6D,QAAQ3C,MAAMm8R,EAAUr9R,GACxBsP,KAAKu/C,SAAS,CACVmoP,cAAc,EACdC,SAAS,EAAI/oP,EAAiB1oD,IAAI63R,OAG3C,CACC/5R,IAAK,gBACLN,MAAO,WACH,IAAIo0S,EAAsB/vL,EAAcljH,QAAQuzS,0BAA0B,GAC1E,IAAKN,EAGD,OAFAf,EAAcsB,cAAgB,UAC9BroS,KAAKu/C,SAAS,CAAEuoP,oBAAqB,KAAM3yL,SAAU,OAIzD,IAAIkzL,EAAgBtB,EAAcsB,cAC9BC,EAAa,KACbD,GAAiBA,EAAcrwM,SAAWqwM,EAAcrwM,QAAQr7F,MAChE2rS,EAAaD,EAAcrwM,QAAQr7F,KAGvC,IAAI4rS,EAAS,KACTT,GAAuBA,EAAoB9vM,SAAW8vM,EAAoB9vM,QAAQr7F,MAClF4rS,EAAST,EAAoB9vM,QAAQr7F,KAGrC4rS,IAAWD,GAEXxB,EAAmBjyS,QAAQ02R,eA1Kf,iBA6KhBwb,EAAcsB,cAAgBP,EAC9B9nS,KAAKu/C,SAAS,CACVuoP,oBAAqBA,EACrB3yL,SAAU2yL,EAAsBA,EAAoBlnP,GAAK,SAGlE,CACC5sD,IAAK,kBACLN,MAAO,SAAyBmqD,GAC5B,OAAQA,EAAQG,QACZ,IAAK,sBACDh+C,KAAKyqJ,cACL,MACJ,IAAK,sBACDzqJ,KAAKu/C,SAAS,CAAEmoP,cAAc,IAC9B,MACJ,IAAK,mBACL,IAAK,mBACL,IAAK,kBACL,IAAK,kBACD1nS,KAAKu/C,SAAS,CAAEmoP,cAAc,OAI3C,CACC1zS,IAAK,+BACLN,MAAO,WACH,OAAOkG,EAAQ/E,QAAQzD,cACnB8iN,EAAmBr/M,QACnB,CAAE4uD,QAASzjD,KAAKknS,0BACZtsS,UAAW,kCACfhB,EAAQ/E,QAAQzD,cACZ,IACA,MACA,EAAIwtD,EAAiB1oD,IAAI,sDAE7B0D,EAAQ/E,QAAQzD,cACZ,IACA,CAAEwJ,UAAW,wBACb,EAAIgkD,EAAiB1oD,IAAI,iBAE7B0D,EAAQ/E,QAAQzD,cAAc,MAAO,CAAEK,IAAK,EAAQ,KAAoDmtO,IAAK,QAGtH,CACC5qO,IAAK,6BACLN,MAAO,WACH,OAAOkG,EAAQ/E,QAAQzD,cACnB,MACA,CAAEg0G,MAAO,CAAE,aAAc,UAAYxqG,UAAW,SAChDhB,EAAQ/E,QAAQzD,cACZ,IACA,KACA,IACA4O,KAAK6/C,MAAM8nP,QACX,QAIb,CACC3zS,IAAK,0BACLN,MAAO,SAAiCq+G,GACpC,GAAK/xG,KAAK6/C,MAAMioP,oBAAhB,CACA,IAAItb,EAAkBt4K,EAAoBr/G,QAAQm3R,mBAAmBhsR,KAAK6/C,MAAMioP,oBAAoBlnP,IAChG4rO,GAAmBz6K,IAAY/xG,KAAKwoS,sBACpChc,EAAgBic,eAAe12L,GAC/B/xG,KAAKwoS,oBAAsBz2L,MAGpC,CACC/9G,IAAK,2BACLN,MAAO,WAEH,GAAIsM,KAAK6/C,MAAMkoP,SACX,OAAO/nS,KAAK0oS,6BAOhB,IAAIZ,EAAsB9nS,KAAK6/C,MAAMioP,oBACjCa,OAAkB,EAKlBle,EAAmBv4P,EAAQr9B,QAAQ2J,aAAa,6BAuDpD,OApDIspS,GAAuBA,EAAoB9vM,SAAW8vM,EAAoB9vM,QAAQr7F,KAElFmrS,EAAoB9vM,QAAQxlG,KAAOs1S,EAAoBt1S,OAAQ,EAAIosD,EAAiB1oD,IAAI,eAExFyyS,EAAkB/uS,EAAQ/E,QAAQzD,cAC9B,MACA,CAAEwJ,UAAW,iCACbhB,EAAQ/E,QAAQzD,cACZ,MACA,CACIwvD,GAAI,kBACJhmD,UAAW,sBACXwqG,MAAO,CACHwjM,OAAQ,OACR3mO,OAAQjiE,KAAKynS,cACbprM,MAAOr8F,KAAKwnS,eAGpB5tS,EAAQ/E,QAAQzD,cACZq5R,EACA,CAAEyD,WA3RF,gBA2RqC9oL,MAAO,CAAEo8B,OA9R9C,OA+RA5nI,EAAQ/E,QAAQzD,cAAcy1S,EAAUhyS,QAAS,CAC7C+rD,GAAIknP,EAAoBlnP,GACxBjkD,IAAKmrS,EAAoB9vM,QAAQr7F,IACjCnK,KAAMs1S,EAAoB9vM,QAAQxlG,KAClCwiG,KAAMh1F,KAAK3K,MAAM2/F,KACjB5iG,KAAM01S,EAAoB9vM,QAAQ5lG,KAClC28R,WAAW,EACXx7P,OAAQ0hE,EAAkBpgG,QAAQvB,MAAMggC,YAAYC,OACpDikF,cAAeswL,EAAoBt+Q,QAAUyrE,EAAkBpgG,QAAQvB,MAAMggC,YAAYC,OACzFgkF,mBAAmB,EACnBgW,MAAM,EACN4hK,aAAa,EACbrD,YAAa9rR,KAAKknS,0BAClB/a,cAAensR,KAAKmnS,4BACpB7X,WAAW,EACXV,cAAc,EACdL,YAAY,EACZE,YAAY,EACZgB,YAAY,EACZjC,gBAAiBxtR,KAAKinS,qBACtB5X,6BAA6B,EAC7BxC,sBAAuB,CAAC,YAAa,cACrCh1K,YAAY,QAO5B8wL,EAAkB3oS,KAAK6oS,+BAEpBF,IASZ,CACC30S,IAAK,uBACLN,MAAO,SAA8BhD,GAGjC,IAAIo4S,EAAap4S,EAAE4B,OAAO2tI,wBAGtB38G,EAAIwlR,EAAW77P,MAAQx4C,OAAOyyI,YAAc,GAQhD5jH,EAAIzd,KAAKo1B,IAAI3X,EAAGnyB,SAAS2L,KAAKqsJ,YAAc,KAK5C,IAAI4/I,EAA6BljS,KAAKC,IAAI,GAAI,EAAIrR,OAAOyyI,YAAc4hK,EAAW97P,KAAO1pB,GAErF4mE,EAAI4+M,EAAWtoK,IAAMsoK,EAAW7mO,OAAS,EAAIxtE,OAAOwyI,YAAc,GAEtEjnI,KAAKu/C,SAAS,CACVmoP,cAAc,EACdsB,eAAgB1lR,EAChB2lR,eAAgB/+M,EAChB6+M,2BAA4BA,MASrC,CACC/0S,IAAK,uBACLN,MAAO,SAA8BypG,GACjCn9F,KAAKu/C,SAAS,CAAEmoP,cAAc,MAOnC,CACC1zS,IAAK,YACLN,MAAO,WACHsM,KAAKu/C,SAAS,CAAEmoP,cAAc,MAOnC,CACC1zS,IAAK,cACLN,MAAO,WACHsM,KAAKu/C,SAAS,CAAEmoP,cAAc,MAOnC,CACC1zS,IAAK,4BACLN,MAAO,WAEC8D,EAAgB3C,QAAQm1N,iBAAiB,qCACzC71G,EAAqBW,oBAAoBC,iBAAiBg3K,QAAQ/rR,KAAK3K,MAAM2/F,KAAM,uBAAsBh1F,KAAK6/C,MAAMs1D,UAEpHhB,EAAqBW,oBAAoBC,iBAAiBC,oBAAoBmG,KAAKn7G,KAAK3K,MAAM2/F,KAAM,uBAAsBh1F,KAAK6/C,MAAMs1D,YAG9I,CACCnhH,IAAK,SACLN,MAAO,WACH,IAAI4rI,EAAiBptG,EAAQr9B,QAAQ2J,aAAa,6BAC9C0qS,EAA4Bh3Q,EAAQr9B,QAAQ2J,aAAa,2CACzD2qS,OAAiB,EAEjBC,EAAgBxvS,EAAQ/E,QAAQzD,cAAckuI,EAAgB,CAC9DC,aAAc2pK,EACdxoK,cAAe1gI,KAAK6/C,MAAMkpP,2BAC1BxoK,YAAa,SACbvzF,KAAMhtC,KAAK6/C,MAAMmpP,eACjBxoK,IAAKxgI,KAAK6/C,MAAMopP,eAChBhoK,UAAWjhI,KAAKwnS,aAChBtmK,WAAYlhI,KAAKynS,cACjBz7O,QAAShsD,KAAKqpS,2BACd1pP,WAAY3/C,KAAKunS,YACjBpmK,eAAgB,EAChBC,gBAAiB,EACjBE,iBAAkB,EAClBE,OAzaY,OA+bhB,OAjBI2nK,EAFAnpS,KAAK6/C,MAAM6nP,aAEM9tS,EAAQ/E,QAAQzD,cAAc8iN,EAAmBr/M,QAAS,CACvE+rD,GAAI,iBACJ5sD,IAAK,yBACL4G,UAAW,iFACX6oD,QAASzjD,KAAKinS,qBACdj1R,OAAO,EAAI4sC,EAAiB1oD,IAAI,mBAInB0D,EAAQ/E,QAAQzD,cAAc8iN,EAAmBr/M,QAAS,CACvE+rD,GAAI,iBACJ5sD,IAAK,yBACL4G,UAAW,wDACX6oD,QAASzjD,KAAKgnS,qBACdh1R,OAAO,EAAI4sC,EAAiB1oD,IAAI,mBAGjC0D,EAAQ/E,QAAQzD,cACnBwI,EAAQ/E,QAAQy0S,SAChB,KACAH,EACAnpS,KAAK6/C,MAAM6nP,cAAgB0B,OAIhCrC,EAlcS,CAmclBntS,EAAQ/E,QAAQwiC,WAElB9mC,EAAQsE,QAAUkyS,EAClBv2S,EAAOD,QAAUA,EAAiB,S,gBChjBlC,IAAIm6L,EAAkB,EAAQ,MAC1BD,EAAK,EAAQ,KAMb56L,EAHcF,OAAOC,UAGQC,eAoBjCW,EAAOD,QARP,SAAqB4D,EAAQH,EAAKN,GAChC,IAAIk3L,EAAWz2L,EAAOH,GAChBnE,EAAeC,KAAKqE,EAAQH,IAAQy2L,EAAGG,EAAUl3L,UACxChB,IAAVgB,GAAyBM,KAAOG,IACnCu2L,EAAgBv2L,EAAQH,EAAKN,K,gBCvBjC,IAGIsyL,EAHU,EAAQ,IAGHtB,CAAQ/0L,OAAOyoB,eAAgBzoB,QAElDa,EAAOD,QAAUy1L,G,gBCLjB,IAAI3xD,EAAa,EAAQ,KAezB7jI,EAAOD,QANP,SAA0BusJ,GACxB,IAAI7lJ,EAAS,IAAI6lJ,EAAY79I,YAAY69I,EAAYtjB,YAErD,OADA,IAAInF,EAAWp9H,GAAQshB,IAAI,IAAI87G,EAAWyoB,IACnC7lJ,I,6BCVTtH,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEI6pD,EAAmB3nD,EAFD,EAAQ,IAM1Bg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxB4nD,EAA8B5nD,EAFA,EAAQ,IAMtC8nD,EAAa9nD,EAFA,EAAQ,IAMrBgE,EAAUhE,EAFD,EAAQ,IAMjB+oD,EAAe/oD,EAFD,EAAQ,KAMtBs8B,EAAUt8B,EAFD,EAAQ,IAIjBgpD,EAAmB,EAAQ,GAI3Bu+F,EAAkBvnJ,EAFD,EAAQ,KAMzB4B,EAAkB5B,EAFD,EAAQ,KAMzB4oD,EAAc5oD,EAFD,EAAQ,IAIrBgvG,EAAc,EAAQ,IAE1B,SAAShvG,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAkBvF,SAASs0S,IACL5qP,EAAa9pD,QAAQopD,SAAS,CAC1BD,OAAQ,iBACRlsD,MAAO,OAIf,IAAI03S,EAAe,SAAU7pK,GAGzB,SAAS6pK,EAAan0S,EAAOoO,IACzB,EAAImuB,EAAiB/8B,SAASmL,KAAMwpS,GAEpC,IAAInqP,GAAQ,EAAI7B,EAA4B3oD,SAASmL,MAAOwpS,EAAatqS,YAAa,EAAIq+C,EAAiB1oD,SAAS20S,IAAe15S,KAAKkQ,KAAM3K,EAAOoO,IAUrJ,OARA47C,EAAMmrG,WAAY,EAElBnrG,EAAMQ,MAAQ,CACV/tD,MAAOqrJ,EAAgBtoJ,QAAQusJ,mBAGnC/hG,EAAMoqP,uBAAyBpqP,EAAMoqP,uBAAuBx1S,KAAKorD,GACjEA,EAAMqqP,gBAAkBvsJ,EAAgBtoJ,QAAQ45F,YAAYpvC,EAAMoqP,wBAC3DpqP,EAyDX,OAxEA,EAAI3B,EAAW7oD,SAAS20S,EAAc7pK,IAkBtC,EAAI9tG,EAAch9B,SAAS20S,EAAc,CAAC,CACtCx1S,IAAK,uBACLN,MAAO,WACHsM,KAAKwqJ,WAAY,EAGbxqJ,KAAK0pS,iBACL1pS,KAAK0pS,gBAAgBtlQ,WAG9B,CACCpwC,IAAK,yBACLN,MAAO,WACH,IAAIsM,KAAKwqJ,UAAT,CAEA,IAAI14J,EAAQqrJ,EAAgBtoJ,QAAQusJ,kBAChCphJ,KAAK6/C,MAAM/tD,QAAUA,GACrBkO,KAAKu/C,SAAS,CAAEztD,MAAOA,OAGhC,CACCkC,IAAK,SACLN,MAAO,WACH,IAAKsM,KAAK6/C,MAAM/tD,MAAO,OAAO,KAE9B,IAAI65J,EAAYz5H,EAAQr9B,QAAQ2J,aAAa,mBAE7C,OAAO5E,EAAQ/E,QAAQzD,cACnB,MACA,CAAEwJ,UAAW,mBACbhB,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,2BACbhB,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,gDACb,OAAQ,EAAIgkD,EAAiB1oD,IAAI,aAErC0D,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,iDACbhB,EAAQ/E,QAAQzD,cAAc,MAAO,CAAEwJ,UAAW,qBAAsBnJ,IAAK,EAAQ,KAAmC4qG,MAAO,KAAMp6B,OAAQ,KACzIxe,QAAS8lP,KAEjB3vS,EAAQ/E,QAAQzD,cAAc,MAAO,CAAEwJ,UAAW,0BAClDhB,EAAQ/E,QAAQzD,cAAcu6J,EAAW,CAAEnvI,MAAM,EAC7CwvI,UAAW,gBACXD,QAAS/rJ,KAAK6/C,MAAM/tD,MACpBqjG,iBAAkBn1F,KAAK3K,MAAM8/F,iBAC7B82D,aAAcz0J,EAAgB3C,QAAQ2/B,SAAS,oCAK5Dg1Q,EAzEQ,CA0EjB5vS,EAAQ/E,QAAQwiC,WAElBmyQ,EAAazqP,UAAY,CACrBo2C,iBAAkB32C,EAAY3pD,QAAQ43J,WAAW7nD,EAAYtQ,sBAAsBr1C,YAEvF1uD,EAAQsE,QAAU20S,EAClBh5S,EAAOD,QAAUA,EAAiB,S,6BC7IlC,IAAIo5S,EAAkB,EAAQ,MAC1BC,EAAoB,EAAQ,KAE5BvmF,EAAS,CAETwmF,IAAK,MAGLC,GAAI,KAIJC,KAAM,QA2DV,IAAK,IAAI1vS,KAxDT7J,EAAOD,QAAU,CAMb8yN,OAAQA,EAOR2mF,WAAY,SAAoBC,GAC5B,OAAIA,IAAwBjqS,KAAK8pS,GACtBH,EAAgBO,cAChBD,IAAwBjqS,KAAK+pS,KAC7BJ,EAAgBQ,oCADpB,GAYXC,2BAA4B,SAAoC7wN,GAC5D,IAAI8wN,EAAUT,EAAkB9rE,cAAcvkJ,EAAKmlD,SAEnD,IAAK2rK,EACD,OAAO,KAIX,IAAIxrK,EAAS,EACTwrK,EAAQ7tK,OACRqC,IAEAwrK,EAAQvnM,WACR+7B,IAEJ,IAAIyrK,EAAY,KAChB,OAAQzrK,GACJ,KAAK,EACDyrK,EAAYtqS,KAAK8pS,GACjB,MACJ,KAAK,EACDQ,EAAYtqS,KAAK+pS,KAGzB,OAAOO,IAIDjnF,EACV7yN,EAAOD,QAAQ8J,GAAKgpN,EAAOhpN,I,6BCvF7B7J,EAAOD,QAAU,EAAQ,O,kDCAvBuyH,EAA0B,iBAARnkH,MAAoBA,MAAQA,KAAKhP,SAAWA,QAAUgP,KCE7D,GDCJ,KAAcmkH,GAAY7mH,SAAS,cAATA,ICHnBzI,OCAd+xL,EAAc51L,OAAOC,UAGrB,EAAiB21L,EAAY11L,eAO7B+1L,EAAuBL,EAAY//K,SAGnCoiJ,EAAiB,EAAS,EAAOn0J,iBAAcf,EA6BpC,MApBf,SAAmBgB,GACjB,IAAI07L,EAAQ,EAAet/L,KAAK4D,EAAOk0J,GACnC5sJ,EAAMtH,EAAMk0J,GAEhB,IACEl0J,EAAMk0J,QAAkBl1J,EACxB,IAAI28L,GAAW,EACf,MAAO3+L,IAET,IAAIuG,EAAS2uL,EAAqB91L,KAAK4D,GAQvC,OAPI27L,IACED,EACF17L,EAAMk0J,GAAkB5sJ,SAEjBtH,EAAMk0J,IAGV3wJ,GClCL,EAPctH,OAAOC,UAOc4V,SAaxB,MAJf,SAAwB9R,GACtB,OAAO,EAAqB5D,KAAK4D,ICb/Bg0J,EAAU,gBACVC,EAAe,qBAGf,EAAiB,EAAS,EAAOl0J,iBAAcf,EAkBpC,MATf,SAAoBgB,GAClB,OAAa,MAATA,OACehB,IAAVgB,EAAsBi0J,EAAeD,EAEtC,GAAkB,KAAkB/3J,OAAO+D,GAC/C,EAAUA,GACV,EAAeA,ICVN,ICTA,EDGf,SAAiBs5D,EAAM6Y,GACrB,OAAO,SAAS1kE,GACd,OAAO6rD,EAAK6Y,EAAU1kE,KCPP,CAAQxR,OAAOyoB,eAAgBzoB,QCyBnC,MAJf,SAAsB+D,GACpB,OAAgB,MAATA,GAAiC,iBAATA,GCpB7BioL,EAAY,kBAGZ2J,EAAYrpL,SAASrM,UACrB,EAAcD,OAAOC,UAGrB61L,EAAeH,EAAU9/K,SAGzB,EAAiB,EAAY3V,eAG7Bg2L,EAAmBJ,EAAa31L,KAAKH,QA2C1B,MAbf,SAAuB+D,GACrB,IAAK,EAAaA,IAAU,EAAWA,IAAUioL,EAC/C,OAAO,EAET,IAAIljK,EAAQ,EAAa/kB,GACzB,GAAc,OAAV+kB,EACF,OAAO,EAET,IAAI8zK,EAAO,EAAez8L,KAAK2oB,EAAO,gBAAkBA,EAAMxZ,YAC9D,MAAsB,mBAARstL,GAAsBA,aAAgBA,GAClD9G,EAAa31L,KAAKy8L,IAAS1G,G,SCjDpB0kH,EAAc,CACvBC,KAAM,gBA2BS,SAAS,EAAYtzP,EAASuzP,EAAgBC,GAC7D,IAAIz3Q,EAOJ,GAL8B,mBAAnBw3Q,QAAqD,IAAbC,IACjDA,EAAWD,EACXA,OAAiB/3S,QAGK,IAAbg4S,EAA0B,CACnC,GAAwB,mBAAbA,EACT,MAAM,IAAI74S,MAAM,2CAGlB,OAAO64S,EAAS,EAATA,CAAsBxzP,EAASuzP,GAGxC,GAAuB,mBAAZvzP,EACT,MAAM,IAAIrlD,MAAM,0CAGlB,IAAI84S,EAAiBzzP,EACjB8/C,EAAeyzM,EACfG,EAAmB,GACnBC,EAAgBD,EAChBE,GAAgB,EAEpB,SAASC,IACHF,IAAkBD,IACpBC,EAAgBD,EAAiBj2S,SASrC,SAASi9I,IACP,OAAO56C,EA0BT,SAASg0M,EAAU99M,GACjB,GAAwB,mBAAbA,EACT,MAAM,IAAIr7F,MAAM,uCAGlB,IAAIo5S,GAAe,EAKnB,OAHAF,IACAF,EAAc76S,KAAKk9F,GAEZ,WACL,GAAK+9M,EAAL,CAIAA,GAAe,EAEfF,IACA,IAAInvS,EAAQivS,EAAczxS,QAAQ8zF,GAClC29M,EAAcxuS,OAAOT,EAAO,KA6BhC,SAASqiD,EAASD,GAChB,IAAK,EAAcA,GACjB,MAAM,IAAInsD,MAAM,2EAGlB,QAA2B,IAAhBmsD,EAAO5rD,KAChB,MAAM,IAAIP,MAAM,sFAGlB,GAAIi5S,EACF,MAAM,IAAIj5S,MAAM,sCAGlB,IACEi5S,GAAgB,EAChB9zM,EAAe2zM,EAAe3zM,EAAch5C,GAC5C,QACA8sP,GAAgB,EAIlB,IADA,IAAIt8M,EAAYo8M,EAAmBC,EAC1Br7S,EAAI,EAAGA,EAAIg/F,EAAU9+F,OAAQF,IAAK,EAEzC09F,EADesB,EAAUh/F,MAI3B,OAAOwuD,EAkET,OAFAC,EAAS,CAAE7rD,KAAMm4S,EAAYC,QAEtBv3Q,EAAQ,CACbgrB,SAAUA,EACV+sP,UAAWA,EACXp5J,SAAUA,EACVs5J,eAzDF,SAAwBC,GACtB,GAA2B,mBAAhBA,EACT,MAAM,IAAIt5S,MAAM,8CAGlB84S,EAAiBQ,EACjBltP,EAAS,CAAE7rD,KAAMm4S,EAAYC,UAoDtB,KA3CT,WACE,IAAIt3Q,EAEAk4Q,EAAiBJ,EACrB,OAAO93Q,EAAO,CASZ83Q,UAAW,SAAmBK,GAC5B,GAAwB,iBAAbA,EACT,MAAM,IAAIr2S,UAAU,0CAGtB,SAASs2S,IACHD,EAAS3tS,MACX2tS,EAAS3tS,KAAKk0I,KAMlB,OAFA05J,IAEO,CAAEC,YADSH,EAAeE,OAG7B,KAAgB,WACtB,OAAOtrS,MACNkzB,GAagCD,EClPvC,SAASu4Q,EAA8Bx3S,EAAKgqD,GAC1C,IAAIytP,EAAaztP,GAAUA,EAAO5rD,KAGlC,MAAO,iBAFUq5S,GAAc,IAAMA,EAAWjmS,WAAa,KAAO,aAE9B,cAAgBxR,EAAM,iLA4D/C,SAAS03S,EAAgBC,GAGtC,IAFA,IAAIC,EAAcj8S,OAAOoZ,KAAK4iS,GAC1BE,EAAgB,GACXr8S,EAAI,EAAGA,EAAIo8S,EAAYl8S,OAAQF,IAAK,CAC3C,IAAIwE,EAAM43S,EAAYp8S,GAElB,EAMyB,mBAAlBm8S,EAAS33S,KAClB63S,EAAc73S,GAAO23S,EAAS33S,IAGlC,IAAI83S,EAAmBn8S,OAAOoZ,KAAK8iS,GAOnC,IAAIE,OAAsB,EAC1B,KAxDF,SAA4BJ,GAC1Bh8S,OAAOoZ,KAAK4iS,GAAUvxS,SAAQ,SAAUpG,GACtC,IAAIkjD,EAAUy0P,EAAS33S,GAGvB,QAA4B,IAFTkjD,OAAQxkD,EAAW,CAAEN,KAAMm4S,EAAYC,OAGxD,MAAM,IAAI34S,MAAM,YAAcmC,EAAM,iRAItC,QAAkD,IAAvCkjD,OAAQxkD,EAAW,CAAEN,KADrB,gCAAkCyT,KAAK8tG,SAASnuG,SAAS,IAAI+jF,UAAU,GAAG1wF,MAAM,IAAI0D,KAAK,OAElG,MAAM,IAAI1K,MAAM,YAAcmC,EAAM,6EAAqFu2S,EAAYC,KAAO,kTA8C9IwB,CAAmBH,GACnB,MAAOn7S,GACPq7S,EAAsBr7S,EAGxB,OAAO,WACL,IAAImvD,EAAQl9C,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,GAAmBA,UAAU,GAAK,GAC5Eq7C,EAASr7C,UAAU,GAEvB,GAAIopS,EACF,MAAMA,EAYR,IAFA,IAAIE,GAAa,EACbC,EAAY,GACPr4Q,EAAK,EAAGA,EAAKi4Q,EAAiBp8S,OAAQmkC,IAAM,CACnD,IAAIotB,EAAO6qP,EAAiBj4Q,GACxBqjB,EAAU20P,EAAc5qP,GACxBkrP,EAAsBtsP,EAAMoB,GAC5BmrP,EAAkBl1P,EAAQi1P,EAAqBnuP,GACnD,QAA+B,IAApBouP,EAAiC,CAC1C,IAAI3oL,EAAe+nL,EAA8BvqP,EAAMjD,GACvD,MAAM,IAAInsD,MAAM4xH,GAElByoL,EAAUjrP,GAAQmrP,EAClBH,EAAaA,GAAcG,IAAoBD,EAEjD,OAAOF,EAAaC,EAAYrsP,GC/HpC,SAASwsP,EAAkBC,EAAeruP,GACxC,OAAO,WACL,OAAOA,EAASquP,EAAcpwS,WAAMxJ,EAAWiQ,aAyBpC,SAAS4pS,EAAmBC,EAAgBvuP,GACzD,GAA8B,mBAAnBuuP,EACT,OAAOH,EAAkBG,EAAgBvuP,GAG3C,GAA8B,iBAAnBuuP,GAAkD,OAAnBA,EACxC,MAAM,IAAI36S,MAAM,0EAA+F,OAAnB26S,EAA0B,cAAgBA,GAAkB,8FAK1J,IAFA,IAAIzjS,EAAOpZ,OAAOoZ,KAAKyjS,GACnBC,EAAsB,GACjBj9S,EAAI,EAAGA,EAAIuZ,EAAKrZ,OAAQF,IAAK,CACpC,IAAIwE,EAAM+U,EAAKvZ,GACX88S,EAAgBE,EAAex4S,GACN,mBAAlBs4S,IACTG,EAAoBz4S,GAAOq4S,EAAkBC,EAAeruP,IAGhE,OAAOwuP,EClCM,SAASC,IACtB,IAAK,IAAI1rP,EAAOr+C,UAAUjT,OAAQ6pM,EAAQ5iM,MAAMqqD,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC5Es4I,EAAMt4I,GAAQt+C,UAAUs+C,GAG1B,OAAqB,IAAjBs4I,EAAM7pM,OACD,SAAUyR,GACf,OAAOA,GAIU,IAAjBo4L,EAAM7pM,OACD6pM,EAAM,GAGRA,EAAMnjL,QAAO,SAAU/W,EAAG6kB,GAC/B,OAAO,WACL,OAAO7kB,EAAE6kB,EAAEhoB,WAAMxJ,EAAWiQ,gBC5BlC,IAAI8qD,EAAW99D,OAAO0lC,QAAU,SAAU/iC,GAAU,IAAK,IAAI9C,EAAI,EAAGA,EAAImT,UAAUjT,OAAQF,IAAK,CAAE,IAAI8sD,EAAS35C,UAAUnT,GAAI,IAAK,IAAIwE,KAAOsoD,EAAc3sD,OAAOC,UAAUC,eAAeC,KAAKwsD,EAAQtoD,KAAQ1B,EAAO0B,GAAOsoD,EAAOtoD,IAAY,OAAO1B,GAoBxO,SAASq6S,IACtB,IAAK,IAAI3rP,EAAOr+C,UAAUjT,OAAQk9S,EAAcj2S,MAAMqqD,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAClF2rP,EAAY3rP,GAAQt+C,UAAUs+C,GAGhC,OAAO,SAAU4rP,GACf,OAAO,SAAU31P,EAASuzP,EAAgBC,GACxC,IAEIhwP,EAFAzmB,EAAQ44Q,EAAY31P,EAASuzP,EAAgBC,GAC7CoC,EAAY74Q,EAAMgqB,SAGlB8uP,EAAgB,CAClBn7J,SAAU39G,EAAM29G,SAChB3zF,SAAU,SAAkBD,GAC1B,OAAO8uP,EAAU9uP,KAQrB,OALAtD,EAAQkyP,EAAY1zS,KAAI,SAAU8zS,GAChC,OAAOA,EAAWD,MAEpBD,EAAYJ,EAAQxwS,WAAMxJ,EAAWgoD,EAAzBgyP,CAAgCz4Q,EAAMgqB,UAE3CwP,EAAS,GAAIx5B,EAAO,CACzBgqB,SAAU6uP,MC3ClB,wO,8BCAA,kBAGIllQ,EAHJ,UAMEA,EADkB,oBAATjpC,KACFA,KACoB,oBAAXlK,OACTA,YACoB,IAAXyZ,EACTA,EAEA1d,EAKT,IAAIyG,EAAS,YAAS2wC,GACP,Q,8CClBf,sEACE,SAASA,GAGV,IAAIu5I,EAA4C5wL,EAQ5CsyH,GAL0CryH,GAC7CA,EAAOD,QAI0B,iBAAV2d,GAAsBA,GAC1C20G,EAAW30G,SAAW20G,GAAcA,EAAWpuH,OAMnD,IAAIw4S,EAAgC,6QAChCC,EAAqB,sCAErBtvQ,EAAU,SAAS0E,GActB,IAFA,IAAIrrC,EAAS,GACT2E,GAXJ0mC,EAASA,EAEP7lC,QAAQwwS,GAA+B,SAAS3+C,EAAI9rH,EAAI82I,GAGxD,OAAO17O,EAAQ07O,GAAM92I,KAGrB/lI,QAAQywS,EAAoB,SAGXx9S,OACZkM,KACN3E,GAAUqrC,EAAOxwB,OAAOlW,GAEzB,OAAO3E,GAKJk2S,EAAU,CACb,QAAW,QACX,QAAWvvQ,QAYV,KAFD,aACC,OAAOuvQ,GACP,8BAzDF,K,4CCDD,IAAIvqH,EAAW,EAAQ,KACnB0I,EAAY,EAAQ,MACpBiJ,EAAY,EAAQ,MACpBzF,EAAW,EAAQ,KACnB7D,EAAa,EAAQ,KACrB+R,EAAkB,EAAQ,MAC1BzpC,EAAW,EAAQ,KACnB05B,EAAe,EAAQ,MA2BvBuV,EAAOjvC,GAAS,SAASp/J,EAAQuyE,GACnC,IAAIzvE,EAAS,GACb,GAAc,MAAV9C,EACF,OAAO8C,EAET,IAAIw0L,GAAS,EACb/kH,EAAQk8G,EAASl8G,GAAO,SAASpM,GAG/B,OAFAA,EAAOw0H,EAASx0H,EAAMnmE,GACtBs3L,IAAWA,EAASnxH,EAAK5qE,OAAS,GAC3B4qE,KAET2wH,EAAW92L,EAAQ84L,EAAa94L,GAAS8C,GACrCw0L,IACFx0L,EAASq0L,EAAUr0L,EAAQoiL,EAAwD2jB,IAGrF,IADA,IAAIttM,EAASg3E,EAAMh3E,OACZA,KACL6kM,EAAUt9L,EAAQyvE,EAAMh3E,IAE1B,OAAOuH,KAGTzG,EAAOD,QAAUiyM,G,6BChDjB,IAAI4qG,EAAY,EAAQ,IAEpBC,EAAY,gBAEZC,EAAqB,CACvBC,OAkIF,SAAiCC,GAC/B,OAAOC,EAA0BD,EAAa,OAAQJ,EAAUziQ,KAAKG,SAlIrE4iQ,MAiJF,SAAgCC,EAAmBC,GACjD,OAAOC,EAA8BF,EAAmBC,EAAiB,MAAOR,EAAU5oR,IAAI0C,QAjJ9F4mR,aAoJF,SAAuCH,EAAmBC,GACxD,OAAOC,EAA8BF,EAAmBC,EAAiB,aAAcR,EAAUnnQ,WAAWsI,eApJ5Gw/P,MAuJF,SAAgCP,GAC9B,OAAOC,EAA0BD,EAAa,MAAOJ,EAAUj0Q,IAAI0a,QAvJnEm6P,aA0JF,SAAuCR,GACrC,OAAOC,EAA0BD,EAAa,aAAcJ,EAAU54P,WAAWO,eA1JjFk5P,QA6JF,SAAkCT,GAChC,OAAOC,EAA0BD,EAAa,QAASJ,EAAUh4P,MAAME,UA7JvE44P,WAgKF,SAAqCV,GACnC,OAAOC,EAA0BD,EAAa,WAAYJ,EAAUz1Q,SAASC,aAhK7Eu2Q,SAmKF,SAAmCC,GAwBjC,OAAOC,GAvBP,SAAkBh5S,EAAOg1F,EAAU5rF,EAAeq2B,EAAUw5Q,GAC1D,IAAK,IAAIttP,EAAOr+C,UAAUjT,OAAQ4pD,EAAO3iD,MAAMqqD,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAC9F3H,EAAK2H,EAAO,GAAKt+C,UAAUs+C,GAG7B,IAAIstP,EAAYl5S,EAAMg1F,GACtB,KAAMkkN,aAAqBnB,EAAU16P,QAAS,CAC5C,IAAI87P,EAAWC,EAAYF,GAE3B,OAAO,IAAI18S,MAAM,WADEijC,EAC0B,KAAOw5Q,EAAe,cAAgBE,EAAW,kBAA0B/vS,EAAgB,uCAE1I,IAAK,IAAIzK,KAAOo6S,EAAY,CAC1B,IAAIM,EAAUN,EAAWp6S,GACzB,GAAK06S,EAAL,CAGA,IAAIC,EAAmBJ,EAAUl4P,WAC7BzkD,EAAQ88S,EAAQxyS,WAAMxJ,EAAW,CAACi8S,EAAkB36S,EAAKyK,EAAeq2B,EAAew5Q,EAAe,IAAMt6S,GAAKsI,OAAOg9C,IAC5H,GAAI1nD,EACF,OAAOA,QAtLbiiJ,MAAO+6J,EACPj0P,SAAUi0P,EACVC,YA8NF,SAAkCC,GAChC,OAAOC,EAAuBD,EAAY,MAAO1B,EAAU5oR,IAAI0C,QA7N/D+jB,KAAM+jQ,EAA2B,OAAQ5B,EAAUziQ,KAAKG,QACxD5xC,IAAK81S,EAA2B,MAAO5B,EAAU5oR,IAAI0C,OACrD+nR,WAAYD,EAA2B,aAAc5B,EAAUnnQ,WAAWsI,cAC1Eh2B,IAAKy2R,EAA2B,MAAO5B,EAAUj0Q,IAAI0a,OACrDq7P,WAAYF,EAA2B,aAAc5B,EAAU54P,WAAWO,cAC1EvyC,MAAOwsS,EAA2B,QAAS5B,EAAUh4P,MAAME,SAC3DhZ,IAAK0yQ,EAA2B,MAAO5B,EAAUv1Q,IAAImG,OACrD2V,OAAQq7P,EAA2B,UAAU,SAAUG,GACrD,OAAOA,aAAoB/B,EAAU16P,UAEvCzW,SAAU+yQ,EAA2B,WAAY5B,EAAUz1Q,SAASC,aAGtE,SAAS62Q,EAAYF,GACnB,IAAIC,SAAkBD,EACtB,OAAI53S,MAAMC,QAAQ23S,GACT,QAELA,aAAqBjzS,OAIhB,SAELizS,aAAqBnB,EAAUz1Q,SAC1B,aAAe42Q,EAAUlxQ,WAAWxkC,MAAM,KAAK,GAEjD21S,EAGT,SAASH,EAA2BnqN,GAClC,SAASkrN,EAAUnwP,EAAY5pD,EAAOg1F,EAAU5rF,EAAeq2B,EAAUw5Q,GACvE,IAAK,IAAIttP,EAAOr+C,UAAUjT,OAAQ4pD,EAAO3iD,MAAMqqD,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAC9F3H,EAAK2H,EAAO,GAAKt+C,UAAUs+C,GAK7B,OAFAqtP,EAAeA,GAAgBjkN,EAC/B5rF,EAAgBA,GAAiB4uS,EACV,MAAnBh4S,EAAMg1F,GAMDnG,EAAShoF,WAAMxJ,EAAW,CAAC2C,EAAOg1F,EAAU5rF,EAAeq2B,EAAUw5Q,GAAchyS,OAAOg9C,IAJ7F2F,EACK,IAAIptD,MAAM,YAFAijC,EAE6B,KAAOw5Q,EAAe,2BAAmC7vS,EAAgB,WADzH,EAQJ,IAAI4wS,EAAmBD,EAAUn7S,KAAK,MAAM,GAG5C,OAFAo7S,EAAiBpwP,WAAamwP,EAAUn7S,KAAK,MAAM,GAE5Co7S,EAGT,SAASL,EAA2BM,EAAoBC,GAStD,OAAOlB,GARP,SAAkBh5S,EAAOg1F,EAAU5rF,EAAeq2B,EAAUw5Q,GAC1D,IAAIC,EAAYl5S,EAAMg1F,GACtB,IAAKklN,EAA4BhB,GAAY,CAC3C,IAAIC,EAAWC,EAAYF,GAC3B,OAAO,IAAI18S,MAAM,WAAaijC,EAAW,KAAOw5Q,EAAe,cAAgBE,EAAW,kBAA0B/vS,EAAgB,gBAAkB6wS,EAAqB,MAE7K,OAAO,QAKX,SAAS7B,EAA0BD,EAAa8B,EAAoBC,GA0BlE,OAAOlB,GAxBP,SAAkBh5S,EAAOg1F,EAAU5rF,EAAeq2B,EAAUw5Q,GAC1D,IAAK,IAAIttP,EAAOr+C,UAAUjT,OAAQ4pD,EAAO3iD,MAAMqqD,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAC9F3H,EAAK2H,EAAO,GAAKt+C,UAAUs+C,GAG7B,IAAIstP,EAAYl5S,EAAMg1F,GACtB,IAAKklN,EAA4BhB,GAAY,CAC3C,IAAIiB,EAAe16Q,EACf05Q,EAAWC,EAAYF,GAC3B,OAAO,IAAI18S,MAAM,WAAa29S,EAAe,KAAOlB,EAAe,cAAsBE,EAAW,kBAAoB/vS,EAAgB,+BAAiC6wS,EAAqB,KAGhM,GAA2B,mBAAhB9B,EACT,OAAO,IAAI37S,MAAM,oCAAsC4M,EAAgB,mBAA2B6vS,EAAe,2BAInH,IADA,IAAImB,EAAalB,EAAU5wQ,UAClBnuC,EAAI,EAAG0qB,EAAMu1R,EAAW//S,OAAQF,EAAI0qB,EAAK1qB,IAAK,CACrD,IAAIoC,EAAQ47S,EAAYtxS,WAAMxJ,EAAW,CAAC+8S,EAAYjgT,EAAGiP,EAAeq2B,EAAew5Q,EAAe,IAAM9+S,EAAI,KAAK8M,OAAOg9C,IAC5H,GAAI1nD,aAAiBC,MACnB,OAAOD,MAkCf,SAASi8S,EAA8BF,EAAmBC,EAAiB0B,EAAoBC,GAS7F,OAAOlB,GARP,WACE,IAAK,IAAIrtP,EAAOr+C,UAAUjT,OAAQsW,EAAOrP,MAAMqqD,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC3Ej7C,EAAKi7C,GAAQt+C,UAAUs+C,GAGzB,OAAOwsP,EAA0BE,EAAmB2B,EAAoBC,GAA6BrzS,WAAMxJ,EAAWsT,IAAS4nS,IAjCpGJ,EAiC6II,EAbnKS,GAlBP,SAAkBh5S,EAAOg1F,EAAU5rF,EAAeq2B,EAAUw5Q,GAC1D,IAAK,IAAIttP,EAAOr+C,UAAUjT,OAAQ4pD,EAAO3iD,MAAMqqD,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAC9F3H,EAAK2H,EAAO,GAAKt+C,UAAUs+C,GAG7B,IAAIstP,EAAYl5S,EAAMg1F,GACtB,GAA2B,mBAAhBmjN,EACT,OAAO,IAAI37S,MAAM,mEAAqE4M,EAAgB,mBAA2B6vS,EAAe,2BAIlJ,IADA,IAAIvlS,EAAOwlS,EAAUr6P,SAASvW,UACrBnuC,EAAI,EAAG0qB,EAAMnR,EAAKrZ,OAAQF,EAAI0qB,EAAK1qB,IAAK,CAC/C,IAAIoC,EAAQ47S,EAAYtxS,WAAMxJ,EAAW,CAACqW,EAAMvZ,EAAGiP,EAAeq2B,EAAew5Q,EAAe,WAAavlS,EAAKvZ,GAAK,KAAK8M,OAAOg9C,IACnI,GAAI1nD,aAAiBC,MACnB,OAAOD,OAiB8KsK,WAAMxJ,EAAWsT,GAjC9M,IAA+BwnS,KA2F/B,SAASuB,EAAuBD,GAC9B,IAAIQ,OAAsC58S,IAAjBiQ,UAAU,GAAmB,WAAaA,UAAU,GACzE4sS,OAA+C78S,IAAjBiQ,UAAU,GAAmByqS,EAAUz1Q,SAASC,WAAaj1B,UAAU,GAyBzG,OAAO0rS,GAvBP,SAAkBh5S,EAAOg1F,EAAU5rF,EAAeq2B,EAAUw5Q,GAC1D,IAAK,IAAIttP,EAAOr+C,UAAUjT,OAAQ4pD,EAAO3iD,MAAMqqD,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAC9F3H,EAAK2H,EAAO,GAAKt+C,UAAUs+C,GAG7B,IAAIstP,EAAYl5S,EAAMg1F,GACtB,IAAKklN,EAA4BhB,GAAY,CAC3C,IAAIC,EAAWC,EAAYF,GAE3B,OAAO,IAAI18S,MAAM,WADEijC,EAC0B,KAAOw5Q,EAAe,cAAgBE,EAAW,kBAA0B/vS,EAAgB,+BAAiC6wS,EAAqB,KAEhM,IAAIX,EAAmBJ,EAAUl4P,WACjC,IAAK,IAAIriD,KAAO86S,EAAY,CAC1B,IAAIJ,EAAUI,EAAW96S,GACzB,GAAK06S,EAAL,CAGA,IAAI98S,EAAQ88S,EAAQxyS,WAAMxJ,EAAW,CAACi8S,EAAkB36S,EAAKyK,EAAeq2B,EAAew5Q,EAAe,IAAMt6S,GAAKsI,OAAOg9C,IAC5H,GAAI1nD,EACF,OAAOA,OAOf,SAASg9S,EAAmBE,GAC1B,OAAOC,EAAuBD,GAOhCt+S,EAAOD,QAAU+8S,G,6BCvPjB/8S,EAAQm/S,KAAO/wS,KAAK+wS,KAAKz7S,KAAK0K,MAC9BpO,EAAQirO,KAAO78N,KAAK68N,KAAKvnO,KAAK0K,O,4BCH9BnO,EAAOD,SAAW,EAAQ,MAAsB,EAAQ,GAAR,EAAoB,WAClE,OAA4G,GAArGZ,OAAOyD,eAAe,EAAQ,IAAR,CAAyB,OAAQ,IAAK,CAAEE,IAAK,WAAc,OAAO,KAAQ+L,M,gBCDzG9O,EAAQgG,EAAI,EAAQ,K,gBCApB,IAAIiiB,EAAM,EAAQ,IACd86F,EAAY,EAAQ,IACpB4hB,EAAe,EAAQ,IAAR,EAA6B,GAC5C1hB,EAAW,EAAQ,IAAR,CAAyB,YAExChjH,EAAOD,QAAU,SAAU4D,EAAQ+jB,GACjC,IAGIlkB,EAHAy2F,EAAI6oB,EAAUn/G,GACd3E,EAAI,EACJyH,EAAS,GAEb,IAAKjD,KAAOy2F,EAAOz2F,GAAOw/G,GAAUh7F,EAAIiyE,EAAGz2F,IAAQiD,EAAOjH,KAAKgE,GAE/D,KAAOkkB,EAAMxoB,OAASF,GAAOgpB,EAAIiyE,EAAGz2F,EAAMkkB,EAAM1oB,SAC7C0lI,EAAaj+H,EAAQjD,IAAQiD,EAAOjH,KAAKgE,IAE5C,OAAOiD,I,gBCfT,IAAIi1F,EAAK,EAAQ,IACbH,EAAW,EAAQ,IACnBjjF,EAAU,EAAQ,KAEtBtY,EAAOD,QAAU,EAAQ,IAAoBZ,OAAOyF,iBAAmB,SAA0Bq1F,EAAGM,GAClGgB,EAAStB,GAKT,IAJA,IAGIh5D,EAHA1oB,EAAOD,EAAQiiF,GACfr7F,EAASqZ,EAAKrZ,OACdF,EAAI,EAEDE,EAASF,GAAG08F,EAAG31F,EAAEk0F,EAAGh5D,EAAI1oB,EAAKvZ,KAAMu7F,EAAWt5D,IACrD,OAAOg5D,I,gBCVT,IAAI6oB,EAAY,EAAQ,IACpBkgB,EAAO,EAAQ,KAAkBj9H,EACjCiP,EAAW,GAAGA,SAEdmxM,EAA+B,iBAAVliN,QAAsBA,QAAU9E,OAAOwoB,oBAC5DxoB,OAAOwoB,oBAAoB1jB,QAAU,GAUzCjE,EAAOD,QAAQgG,EAAI,SAA6B46B,GAC9C,OAAOwlL,GAAoC,mBAArBnxM,EAAS1V,KAAKqhC,GATjB,SAAUA,GAC7B,IACE,OAAOqiG,EAAKriG,GACZ,MAAOzgC,GACP,OAAOimN,EAAYhiN,SAK0CiiN,CAAezlL,GAAMqiG,EAAKlgB,EAAUniF,M,6BCfrG,IAAIw2G,EAAc,EAAQ,IACtB7+H,EAAU,EAAQ,KAClBgiO,EAAO,EAAQ,KACfz3H,EAAM,EAAQ,KACdh9D,EAAW,EAAQ,IACnBg+C,EAAU,EAAQ,KAClBs7M,EAAUhgT,OAAO0lC,OAGrB7kC,EAAOD,SAAWo/S,GAAW,EAAQ,GAAR,EAAoB,WAC/C,IAAIjlN,EAAI,GACJxtC,EAAI,GAEJH,EAAIvpD,SACJ2sG,EAAI,uBAGR,OAFAzV,EAAE3tC,GAAK,EACPojD,EAAEtnG,MAAM,IAAIuB,SAAQ,SAAUC,GAAK6iD,EAAE7iD,GAAKA,KACd,GAArBs1S,EAAQ,GAAIjlN,GAAG3tC,IAAWptD,OAAOoZ,KAAK4mS,EAAQ,GAAIzyP,IAAI3gD,KAAK,KAAO4jG,KACtE,SAAgB7tG,EAAQgqD,GAM3B,IALA,IAAI7sB,EAAI4mB,EAAS/jD,GACb6kI,EAAOx0H,UAAUjT,OACjBkM,EAAQ,EACRywL,EAAay+C,EAAKv0O,EAClB8yO,EAASh2H,EAAI98G,EACV4gI,EAAOv7H,GAMZ,IALA,IAII5H,EAJA+oD,EAAIs3C,EAAQ1xF,UAAU/G,MACtBmN,EAAOsjL,EAAavjL,EAAQi0C,GAAGzgD,OAAO+vL,EAAWtvI,IAAMj0C,EAAQi0C,GAC/DrtD,EAASqZ,EAAKrZ,OACd6Z,EAAI,EAED7Z,EAAS6Z,GACdvV,EAAM+U,EAAKQ,KACNo+H,IAAe0hG,EAAOv5O,KAAKitD,EAAG/oD,KAAMy7B,EAAEz7B,GAAO+oD,EAAE/oD,IAEtD,OAAOy7B,GACPkgR,G,cCpCJn/S,EAAOD,QAAUZ,OAAOsxB,IAAM,SAAYqC,EAAG4mE,GAE3C,OAAO5mE,IAAM4mE,EAAU,IAAN5mE,GAAW,EAAIA,GAAM,EAAI4mE,EAAI5mE,GAAKA,GAAK4mE,GAAKA,I,6BCF/D,IAAIsf,EAAY,EAAQ,IACpBlgG,EAAW,EAAQ,IACnBzG,EAAS,EAAQ,KACjB8yH,EAAa,GAAGhhI,MAChBi7S,EAAY,GAEZC,EAAY,SAAUlzP,EAAGziC,EAAKlU,GAChC,KAAMkU,KAAO01R,GAAY,CACvB,IAAK,IAAI17S,EAAI,GAAI1E,EAAI,EAAGA,EAAI0qB,EAAK1qB,IAAK0E,EAAE1E,GAAK,KAAOA,EAAI,IAExDogT,EAAU11R,GAAOje,SAAS,MAAO,gBAAkB/H,EAAEqI,KAAK,KAAO,KACjE,OAAOqzS,EAAU11R,GAAKyiC,EAAG32C,IAG7BxV,EAAOD,QAAU0L,SAAShI,MAAQ,SAAc+4F,GAC9C,IAAI/rF,EAAKuoG,EAAUxpG,MACf8vS,EAAWn6K,EAAW7lI,KAAK6S,UAAW,GACtCusO,EAAQ,WACV,IAAIlpO,EAAO8pS,EAASxzS,OAAOq5H,EAAW7lI,KAAK6S,YAC3C,OAAO3C,gBAAgBkvO,EAAQ2gE,EAAU5uS,EAAI+E,EAAKtW,OAAQsW,GAAQnD,EAAO5B,EAAI+E,EAAMgnF,IAGrF,OADI1jF,EAASrI,EAAGrR,aAAYs/O,EAAMt/O,UAAYqR,EAAGrR,WAC1Cs/O,I,cCtBT1+O,EAAOD,QAAU,SAAU0Q,EAAI+E,EAAMgnF,GACnC,IAAI+iN,OAAcr9S,IAATs6F,EACT,OAAQhnF,EAAKtW,QACX,KAAK,EAAG,OAAOqgT,EAAK9uS,IACAA,EAAGnR,KAAKk9F,GAC5B,KAAK,EAAG,OAAO+iN,EAAK9uS,EAAG+E,EAAK,IACR/E,EAAGnR,KAAKk9F,EAAMhnF,EAAK,IACvC,KAAK,EAAG,OAAO+pS,EAAK9uS,EAAG+E,EAAK,GAAIA,EAAK,IACjB/E,EAAGnR,KAAKk9F,EAAMhnF,EAAK,GAAIA,EAAK,IAChD,KAAK,EAAG,OAAO+pS,EAAK9uS,EAAG+E,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC1B/E,EAAGnR,KAAKk9F,EAAMhnF,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACzD,KAAK,EAAG,OAAO+pS,EAAK9uS,EAAG+E,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACnC/E,EAAGnR,KAAKk9F,EAAMhnF,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAClE,OAAO/E,EAAG/E,MAAM8wF,EAAMhnF,K,gBCd1B,IAAIgqS,EAAY,EAAQ,IAAal9R,SACjCm9R,EAAQ,EAAQ,KAAkBn+M,KAClCo+M,EAAK,EAAQ,KACbn0B,EAAM,cAEVvrR,EAAOD,QAAmC,IAAzBy/S,EAAUE,EAAK,OAA0C,KAA3BF,EAAUE,EAAK,QAAiB,SAAkB59R,EAAKq3L,GACpG,IAAIrnK,EAAS2tQ,EAAM/9R,OAAOI,GAAM,GAChC,OAAO09R,EAAU1tQ,EAASqnK,IAAU,IAAOoyE,EAAIpqQ,KAAK2wB,GAAU,GAAK,MACjE0tQ,G,gBCRJ,IAAIG,EAAc,EAAQ,IAAalvH,WACnCgvH,EAAQ,EAAQ,KAAkBn+M,KAEtCthG,EAAOD,QAAU,EAAI4/S,EAAY,EAAQ,KAAkB,QAAW1vQ,IAAW,SAAoBnuB,GACnG,IAAIgwB,EAAS2tQ,EAAM/9R,OAAOI,GAAM,GAC5Brb,EAASk5S,EAAY7tQ,GACzB,OAAkB,IAAXrrC,GAAoC,KAApBqrC,EAAOxwB,OAAO,IAAa,EAAI7a,GACpDk5S,G,gBCPJ,IAAIj1K,EAAM,EAAQ,KAClB1qI,EAAOD,QAAU,SAAU4gC,EAAItc,GAC7B,GAAiB,iBAANsc,GAA6B,UAAX+pG,EAAI/pG,GAAiB,MAAMn8B,UAAU6f,GAClE,OAAQsc,I,gBCFV,IAAI7nB,EAAW,EAAQ,IACnBw4B,EAAQj8B,KAAKi8B,MACjBtxC,EAAOD,QAAU,SAAmB4gC,GAClC,OAAQ7nB,EAAS6nB,IAAO7T,SAAS6T,IAAO2Q,EAAM3Q,KAAQA,I,cCHxD3gC,EAAOD,QAAUsV,KAAKuqS,OAAS,SAAe9sR,GAC5C,OAAQA,GAAKA,IAAM,MAAQA,EAAI,KAAOA,EAAIA,EAAIA,EAAI,EAAIzd,KAAKhO,IAAI,EAAIyrB,K,gBCDrE,IAAI2gN,EAAO,EAAQ,KACfv0H,EAAM7pG,KAAK6pG,IACX2gM,EAAU3gM,EAAI,GAAI,IAClB4gM,EAAY5gM,EAAI,GAAI,IACpB6gM,EAAQ7gM,EAAI,EAAG,MAAQ,EAAI4gM,GAC3BE,EAAQ9gM,EAAI,GAAI,KAMpBl/G,EAAOD,QAAUsV,KAAK4qS,QAAU,SAAgBntR,GAC9C,IAEIjkB,EAAGpI,EAFHy5S,EAAO7qS,KAAKi7B,IAAIxd,GAChBqtR,EAAQ1sE,EAAK3gN,GAEjB,OAAIotR,EAAOF,EAAcG,GAAwBD,EAAOF,EAAQF,EAPrD,EAAID,EAAU,EAAIA,GAOgDG,EAAQF,GAErFr5S,GADAoI,GAAK,EAAIixS,EAAYD,GAAWK,IAClBrxS,EAAIqxS,IAELH,GAASt5S,GAAUA,EAAe05S,GAAQlwQ,KAChDkwQ,EAAQ15S,I,gBCpBjB,IAAI80F,EAAW,EAAQ,IACvBv7F,EAAOD,QAAU,SAAUm9B,EAAUzsB,EAAIvN,EAAOuzB,GAC9C,IACE,OAAOA,EAAUhmB,EAAG8qF,EAASr4F,GAAO,GAAIA,EAAM,IAAMuN,EAAGvN,GAEvD,MAAOhD,GACP,IAAIkP,EAAM8tB,EAAiB,OAE3B,WADYh7B,IAARkN,GAAmBmsF,EAASnsF,EAAI9P,KAAK49B,IACnCh9B,K,gBCTV,IAAI84G,EAAY,EAAQ,IACpBnzD,EAAW,EAAQ,IACnBg+C,EAAU,EAAQ,KAClBozB,EAAW,EAAQ,IAEvBj3H,EAAOD,QAAU,SAAUy8F,EAAMm7B,EAAYgP,EAAM9zC,EAAMspH,GACvDnjG,EAAU2e,GACV,IAAI19B,EAAIp0C,EAAS22C,GACbruF,EAAO01F,EAAQ5J,GACf/6F,EAAS+3H,EAASh9B,EAAE/6F,QACpBkM,EAAQ+wM,EAAUj9M,EAAS,EAAI,EAC/BF,EAAIm9M,GAAW,EAAI,EACvB,GAAIx1E,EAAO,EAAG,OAAS,CACrB,GAAIv7H,KAAS+C,EAAM,CACjB0kF,EAAO1kF,EAAK/C,GACZA,GAASpM,EACT,MAGF,GADAoM,GAASpM,EACLm9M,EAAU/wM,EAAQ,EAAIlM,GAAUkM,EAClC,MAAM5G,UAAU,+CAGpB,KAAM23M,EAAU/wM,GAAS,EAAIlM,EAASkM,EAAOA,GAASpM,EAAOoM,KAAS+C,IACpE0kF,EAAO8kC,EAAW9kC,EAAM1kF,EAAK/C,GAAQA,EAAO6uF,IAE9C,OAAOpH,I,6BCxBT,IAAIhtC,EAAW,EAAQ,IACnBg9E,EAAkB,EAAQ,KAC1B5L,EAAW,EAAQ,IAEvBj3H,EAAOD,QAAU,GAAGknI,YAAc,SAAoBnlI,EAAkB4iC,GACtE,IAAIu1D,EAAIp0C,EAASr2C,MACbka,EAAMutG,EAASh9B,EAAE/6F,QACjBshC,EAAKqiG,EAAgB/gI,EAAQ4nB,GAC7B6W,EAAOsiG,EAAgBn+F,EAAOhb,GAC9B0gB,EAAMj4B,UAAUjT,OAAS,EAAIiT,UAAU,QAAKjQ,EAC5CyH,EAAQ0L,KAAKo1B,UAAavoC,IAARkoC,EAAoB1gB,EAAMm5G,EAAgBz4F,EAAK1gB,IAAQ6W,EAAM7W,EAAM8W,GACrFmgI,EAAM,EAMV,IALIpgI,EAAOC,GAAMA,EAAKD,EAAO52B,IAC3Bg3J,GAAO,EACPpgI,GAAQ52B,EAAQ,EAChB62B,GAAM72B,EAAQ,GAETA,KAAU,GACX42B,KAAQ05D,EAAGA,EAAEz5D,GAAMy5D,EAAE15D,UACb05D,EAAEz5D,GACdA,GAAMmgI,EACNpgI,GAAQogI,EACR,OAAO1mE,I,cCxBXj6F,EAAOD,QAAU,SAAUoN,EAAMjK,GAC/B,MAAO,CAAEA,MAAOA,EAAOiK,OAAQA,K,6BCAjC,IAAI62M,EAAa,EAAQ,KACzB,EAAQ,GAAR,CAAqB,CACnBliN,OAAQ,SACRmmB,OAAO,EACPm4R,OAAQp8F,IAAe,IAAI74M,MAC1B,CACDA,KAAM64M,K,gBCNJ,EAAQ,KAAmC,KAAd,KAAKlkM,OAAc,EAAQ,IAAgB/Z,EAAE+E,OAAO1L,UAAW,QAAS,CACvG2F,cAAc,EACdjC,IAAK,EAAQ,Q,cCHf9C,EAAOD,QAAU,SAAUoL,GACzB,IACE,MAAO,CAAEjL,GAAG,EAAO2vB,EAAG1kB,KACtB,MAAOjL,GACP,MAAO,CAAEA,GAAG,EAAM2vB,EAAG3vB,M,gBCJzB,IAAIq7F,EAAW,EAAQ,IACnBziF,EAAW,EAAQ,IACnBunS,EAAuB,EAAQ,KAEnCrgT,EAAOD,QAAU,SAAU43F,EAAG7kE,GAE5B,GADAyoE,EAAS5D,GACL7+E,EAASga,IAAMA,EAAErkB,cAAgBkpF,EAAG,OAAO7kE,EAC/C,IAAIwtR,EAAoBD,EAAqBt6S,EAAE4xF,GAG/C,OADAp3F,EADc+/S,EAAkB//S,SACxBuyB,GACDwtR,EAAkBjgT,U,6BCT3B,IAAIkgT,EAAS,EAAQ,KACjB7sN,EAAW,EAAQ,KAIvB1zF,EAAOD,QAAU,EAAQ,IAAR,CAHP,OAGqC,SAAU+C,GACvD,OAAO,WAAiB,OAAOA,EAAI0M,KAAM2C,UAAUjT,OAAS,EAAIiT,UAAU,QAAKjQ,MAC9E,CAEDY,IAAK,SAAaU,GAChB,IAAIirC,EAAQ8xQ,EAAOC,SAAS9sN,EAASlkF,KAR/B,OAQ2ChM,GACjD,OAAOirC,GAASA,EAAM5e,GAGxB9H,IAAK,SAAavkB,EAAKN,GACrB,OAAOq9S,EAAOlnP,IAAIq6B,EAASlkF,KAbrB,OAayC,IAARhM,EAAY,EAAIA,EAAKN,KAE7Dq9S,GAAQ,I,6BCjBX,IAAI7kN,EAAK,EAAQ,IAAgB31F,EAC7BxC,EAAS,EAAQ,KACjBo/H,EAAc,EAAQ,KACtBvoH,EAAM,EAAQ,KACdqoH,EAAa,EAAQ,KACrBuiF,EAAQ,EAAQ,KAChBy7F,EAAc,EAAQ,KACtBpwQ,EAAO,EAAQ,KACfmzF,EAAa,EAAQ,KACrB2T,EAAc,EAAQ,IACtBxE,EAAU,EAAQ,KAAWA,QAC7Bj/C,EAAW,EAAQ,KACnB7qD,EAAOsuG,EAAc,KAAO,OAE5BqpK,EAAW,SAAUhkN,EAAMh5F,GAE7B,IACIirC,EADArjC,EAAQunI,EAAQnvI,GAEpB,GAAc,MAAV4H,EAAe,OAAOoxF,EAAKn5D,GAAGj4B,GAElC,IAAKqjC,EAAQ+tD,EAAKkkN,GAAIjyQ,EAAOA,EAAQA,EAAM/qC,EACzC,GAAI+qC,EAAM5kC,GAAKrG,EAAK,OAAOirC,GAI/BzuC,EAAOD,QAAU,CACf4lN,eAAgB,SAAU19E,EAAS9lB,EAAMiV,EAAQguF,GAC/C,IAAIztH,EAAIswC,GAAQ,SAAUzrC,EAAM/wD,GAC9Bg3F,EAAWjmC,EAAM7E,EAAGwqB,EAAM,MAC1B3lB,EAAK92F,GAAKy8G,EACV3lB,EAAKn5D,GAAK9/B,EAAO,MACjBi5F,EAAKkkN,QAAKx+S,EACVs6F,EAAKmkN,QAAKz+S,EACVs6F,EAAK3zD,GAAQ,EACG3mC,MAAZupC,GAAuBu5K,EAAMv5K,EAAU2rF,EAAQ56B,EAAK4oH,GAAQ5oH,MAsDlE,OApDAmmC,EAAYhrC,EAAEv4F,UAAW,CAGvBq1C,MAAO,WACL,IAAK,IAAI+nD,EAAO9I,EAASlkF,KAAM2yG,GAAOxjH,EAAO69F,EAAKn5D,GAAIoL,EAAQ+tD,EAAKkkN,GAAIjyQ,EAAOA,EAAQA,EAAM/qC,EAC1F+qC,EAAM1rC,GAAI,EACN0rC,EAAMvtC,IAAGutC,EAAMvtC,EAAIutC,EAAMvtC,EAAEwC,OAAIxB,UAC5BvD,EAAK8vC,EAAMzvC,GAEpBw9F,EAAKkkN,GAAKlkN,EAAKmkN,QAAKz+S,EACpBs6F,EAAK3zD,GAAQ,GAIf,OAAU,SAAUrlC,GAClB,IAAIg5F,EAAO9I,EAASlkF,KAAM2yG,GACtB1zE,EAAQ+xQ,EAAShkN,EAAMh5F,GAC3B,GAAIirC,EAAO,CACT,IAAIvhC,EAAOuhC,EAAM/qC,EACb2N,EAAOo9B,EAAMvtC,SACVs7F,EAAKn5D,GAAGoL,EAAMzvC,GACrByvC,EAAM1rC,GAAI,EACNsO,IAAMA,EAAK3N,EAAIwJ,GACfA,IAAMA,EAAKhM,EAAImQ,GACfmrF,EAAKkkN,IAAMjyQ,IAAO+tD,EAAKkkN,GAAKxzS,GAC5BsvF,EAAKmkN,IAAMlyQ,IAAO+tD,EAAKmkN,GAAKtvS,GAChCmrF,EAAK3zD,KACL,QAAS4F,GAIb7kC,QAAS,SAAiB+tH,GACxBjkC,EAASlkF,KAAM2yG,GAGf,IAFA,IACI1zE,EADA1oC,EAAIqU,EAAIu9G,EAAYxlH,UAAUjT,OAAS,EAAIiT,UAAU,QAAKjQ,EAAW,GAElEusC,EAAQA,EAAQA,EAAM/qC,EAAI8L,KAAKkxS,IAGpC,IAFA36S,EAAE0oC,EAAM5e,EAAG4e,EAAM5kC,EAAG2F,MAEbi/B,GAASA,EAAM1rC,GAAG0rC,EAAQA,EAAMvtC,GAK3C8mB,IAAK,SAAaxkB,GAChB,QAASg9S,EAAS9sN,EAASlkF,KAAM2yG,GAAO3+G,MAGxC2zI,GAAaz7C,EAAG/D,EAAEv4F,UAAW,OAAQ,CACvC0D,IAAK,WACH,OAAO4wF,EAASlkF,KAAM2yG,GAAMt5E,MAGzB8uD,GAETt+B,IAAK,SAAUmjC,EAAMh5F,EAAKN,GACxB,IACImO,EAAMjG,EADNqjC,EAAQ+xQ,EAAShkN,EAAMh5F,GAoBzB,OAjBEirC,EACFA,EAAM5e,EAAI3sB,GAGVs5F,EAAKmkN,GAAKlyQ,EAAQ,CAChBzvC,EAAGoM,EAAQunI,EAAQnvI,GAAK,GACxBqG,EAAGrG,EACHqsB,EAAG3sB,EACHhC,EAAGmQ,EAAOmrF,EAAKmkN,GACfj9S,OAAGxB,EACHa,GAAG,GAEAy5F,EAAKkkN,KAAIlkN,EAAKkkN,GAAKjyQ,GACpBp9B,IAAMA,EAAK3N,EAAI+qC,GACnB+tD,EAAK3zD,KAES,MAAVz9B,IAAeoxF,EAAKn5D,GAAGj4B,GAASqjC,IAC7B+tD,GAEXgkN,SAAUA,EACV56F,UAAW,SAAUjuH,EAAGwqB,EAAMiV,GAG5BqpL,EAAY9oN,EAAGwqB,GAAM,SAAUpJ,EAAUr9C,GACvClsD,KAAK9J,GAAKguF,EAASqlB,EAAUoJ,GAC7B3yG,KAAKi6J,GAAK/tG,EACVlsD,KAAKmxS,QAAKz+S,KACT,WAKD,IAJA,IACIw5D,EADOlsD,KACKi6J,GACZh7H,EAFOj/B,KAEMmxS,GAEVlyQ,GAASA,EAAM1rC,GAAG0rC,EAAQA,EAAMvtC,EAEvC,OANWsO,KAMD9J,KANC8J,KAMYmxS,GAAKlyQ,EAAQA,EAAQA,EAAM/qC,EANvC8L,KAMgD9J,GAAGg7S,IAMnCrwQ,EAAK,EAApB,QAARqrB,EAA+BjtB,EAAM5kC,EAC7B,UAAR6xD,EAAiCjtB,EAAM5e,EAC5B,CAAC4e,EAAM5kC,EAAG4kC,EAAM5e,KAdpBrgB,KAQJ9J,QAAKxD,EACHmuC,EAAK,MAMb+mF,EAAS,UAAY,UAAWA,GAAQ,GAG3CoM,EAAWrhB,M,6BC5If,IAAIo+L,EAAS,EAAQ,KACjB7sN,EAAW,EAAQ,KAIvB1zF,EAAOD,QAAU,EAAQ,IAAR,CAHP,OAGqC,SAAU+C,GACvD,OAAO,WAAiB,OAAOA,EAAI0M,KAAM2C,UAAUjT,OAAS,EAAIiT,UAAU,QAAKjQ,MAC9E,CAEDohD,IAAK,SAAapgD,GAChB,OAAOq9S,EAAOlnP,IAAIq6B,EAASlkF,KARrB,OAQiCtM,EAAkB,IAAVA,EAAc,EAAIA,EAAOA,KAEzEq9S,I,6BCZH,IAcIK,EAdAljS,EAAS,EAAQ,IACjBqI,EAAO,EAAQ,IAAR,CAA4B,GACnC6lC,EAAW,EAAQ,IACnB6mF,EAAO,EAAQ,KACf5tG,EAAS,EAAQ,KACjBg8Q,EAAO,EAAQ,KACf/nS,EAAW,EAAQ,IACnB46E,EAAW,EAAQ,KACnBotN,EAAkB,EAAQ,KAC1BC,GAAWrjS,EAAOsjS,eAAiB,kBAAmBtjS,EAEtDk1H,EAAUH,EAAKG,QACf9/F,EAAe3zC,OAAO2zC,aACtBmuQ,EAAsBJ,EAAKK,QAG3Bj5K,EAAU,SAAUnlI,GACtB,OAAO,WACL,OAAOA,EAAI0M,KAAM2C,UAAUjT,OAAS,EAAIiT,UAAU,QAAKjQ,KAIvD4kB,EAAU,CAEZhkB,IAAK,SAAaU,GAChB,GAAIsV,EAAStV,GAAM,CACjB,IAAI7E,EAAOi0I,EAAQpvI,GACnB,OAAa,IAAT7E,EAAsBsiT,EAAoBvtN,EAASlkF,KAjB9C,YAiB+D1M,IAAIU,GACrE7E,EAAOA,EAAK6Q,KAAK6zB,SAAMnhC,IAIlC6lB,IAAK,SAAavkB,EAAKN,GACrB,OAAO29S,EAAKxnP,IAAIq6B,EAASlkF,KAvBd,WAuB+BhM,EAAKN,KAK/Ci+S,EAAWnhT,EAAOD,QAAU,EAAQ,IAAR,CA5BjB,UA4BoDkoI,EAASnhH,EAAS+5R,GAAM,GAAM,GAG7FC,GAAmBC,IAErBl8Q,GADA+7Q,EAAcC,EAAKl7F,eAAe19E,EAhCrB,YAiCM7oI,UAAW0nB,GAC9B2rH,EAAKC,MAAO,EACZ3sH,EAAK,CAAC,SAAU,MAAO,MAAO,QAAQ,SAAUviB,GAC9C,IAAIykB,EAAQk5R,EAAS/hT,UACjBgN,EAAS6b,EAAMzkB,GACnBooD,EAAS3jC,EAAOzkB,GAAK,SAAUqL,EAAG6kB,GAEhC,GAAI5a,EAASjK,KAAOikC,EAAajkC,GAAI,CAC9BW,KAAKkxS,KAAIlxS,KAAKkxS,GAAK,IAAIE,GAC5B,IAAIn6S,EAAS+I,KAAKkxS,GAAGl9S,GAAKqL,EAAG6kB,GAC7B,MAAc,OAAPlwB,EAAegM,KAAO/I,EAE7B,OAAO2F,EAAO9M,KAAKkQ,KAAMX,EAAG6kB,W,6BCvDpC,IAAIivG,EAAc,EAAQ,KACtBiQ,EAAU,EAAQ,KAAWA,QAC7Br3C,EAAW,EAAQ,IACnBziF,EAAW,EAAQ,IACnB2pH,EAAa,EAAQ,KACrBuiF,EAAQ,EAAQ,KAChB7hF,EAAoB,EAAQ,KAC5Bi+K,EAAO,EAAQ,IACf1tN,EAAW,EAAQ,KACnB6wC,EAAYpB,EAAkB,GAC9BqB,EAAiBrB,EAAkB,GACnC/yE,EAAK,EAGL6wP,EAAsB,SAAUzkN,GAClC,OAAOA,EAAKmkN,KAAOnkN,EAAKmkN,GAAK,IAAIU,IAE/BA,EAAsB,WACxB7xS,KAAKX,EAAI,IAEPyyS,EAAqB,SAAU79Q,EAAOjgC,GACxC,OAAO+gI,EAAU9gG,EAAM50B,GAAG,SAAU8xB,GAClC,OAAOA,EAAG,KAAOn9B,MAGrB69S,EAAoBjiT,UAAY,CAC9B0D,IAAK,SAAUU,GACb,IAAIirC,EAAQ6yQ,EAAmB9xS,KAAMhM,GACrC,GAAIirC,EAAO,OAAOA,EAAM,IAE1BzmB,IAAK,SAAUxkB,GACb,QAAS89S,EAAmB9xS,KAAMhM,IAEpCukB,IAAK,SAAUvkB,EAAKN,GAClB,IAAIurC,EAAQ6yQ,EAAmB9xS,KAAMhM,GACjCirC,EAAOA,EAAM,GAAKvrC,EACjBsM,KAAKX,EAAErP,KAAK,CAACgE,EAAKN,KAEzB,OAAU,SAAUM,GAClB,IAAI4H,EAAQo5H,EAAeh1H,KAAKX,GAAG,SAAU8xB,GAC3C,OAAOA,EAAG,KAAOn9B,KAGnB,OADK4H,GAAOoE,KAAKX,EAAEhD,OAAOT,EAAO,MACvBA,IAIdpL,EAAOD,QAAU,CACf4lN,eAAgB,SAAU19E,EAAS9lB,EAAMiV,EAAQguF,GAC/C,IAAIztH,EAAIswC,GAAQ,SAAUzrC,EAAM/wD,GAC9Bg3F,EAAWjmC,EAAM7E,EAAGwqB,EAAM,MAC1B3lB,EAAK92F,GAAKy8G,EACV3lB,EAAKn5D,GAAK+sB,IACVosC,EAAKmkN,QAAKz+S,EACMA,MAAZupC,GAAuBu5K,EAAMv5K,EAAU2rF,EAAQ56B,EAAK4oH,GAAQ5oH,MAoBlE,OAlBAmmC,EAAYhrC,EAAEv4F,UAAW,CAGvB,OAAU,SAAUoE,GAClB,IAAKsV,EAAStV,GAAM,OAAO,EAC3B,IAAI7E,EAAOi0I,EAAQpvI,GACnB,OAAa,IAAT7E,EAAsBsiT,EAAoBvtN,EAASlkF,KAAM2yG,IAAe,OAAE3+G,GACvE7E,GAAQyiT,EAAKziT,EAAM6Q,KAAK6zB,YAAc1kC,EAAK6Q,KAAK6zB,KAIzDrb,IAAK,SAAaxkB,GAChB,IAAKsV,EAAStV,GAAM,OAAO,EAC3B,IAAI7E,EAAOi0I,EAAQpvI,GACnB,OAAa,IAAT7E,EAAsBsiT,EAAoBvtN,EAASlkF,KAAM2yG,IAAOn6F,IAAIxkB,GACjE7E,GAAQyiT,EAAKziT,EAAM6Q,KAAK6zB,OAG5Bs0D,GAETt+B,IAAK,SAAUmjC,EAAMh5F,EAAKN,GACxB,IAAIvE,EAAOi0I,EAAQr3C,EAAS/3F,IAAM,GAGlC,OAFa,IAAT7E,EAAesiT,EAAoBzkN,GAAMz0E,IAAIvkB,EAAKN,GACjDvE,EAAK69F,EAAKn5D,IAAMngC,EACds5F,GAET0kN,QAASD,I,gBClFX,IAAI3lN,EAAY,EAAQ,KACpB27B,EAAW,EAAQ,IACvBj3H,EAAOD,QAAU,SAAU4gC,GACzB,QAAWz+B,IAAPy+B,EAAkB,OAAO,EAC7B,IAAIg6J,EAASr/F,EAAU36D,GACnBzhC,EAAS+3H,EAAS0jE,GACtB,GAAIA,IAAWz7L,EAAQ,MAAM2nB,WAAW,iBACxC,OAAO3nB,I,gBCPT,IAAI8jI,EAAO,EAAQ,KACfs3G,EAAO,EAAQ,KACf/+I,EAAW,EAAQ,IACnBO,EAAU,EAAQ,IAAaA,QACnC97F,EAAOD,QAAU+7F,GAAWA,EAAQE,SAAW,SAAiBr7D,GAC9D,IAAIpoB,EAAOyqH,EAAKj9H,EAAEw1F,EAAS56D,IACvBk7J,EAAay+C,EAAKv0O,EACtB,OAAO81L,EAAatjL,EAAKzM,OAAO+vL,EAAWl7J,IAAOpoB,I,6BCNpD,IAAInS,EAAU,EAAQ,KAClB0S,EAAW,EAAQ,IACnBm+G,EAAW,EAAQ,IACnB78G,EAAM,EAAQ,KACdmnS,EAAuB,EAAQ,GAAR,CAAkB,sBAgC7CvhT,EAAOD,QA9BP,SAASyhT,EAAiB1/S,EAAQ0+D,EAAU1U,EAAQ21P,EAAW/8Q,EAAOoc,EAAOlL,EAAQtiC,GAMnF,IALA,IAGIkoD,EAASkmP,EAHTC,EAAcj9Q,EACdk9Q,EAAc,EACd37F,IAAQrwK,GAASx7B,EAAIw7B,EAAQtiC,EAAS,GAGnCsuS,EAAcH,GAAW,CAC9B,GAAIG,KAAe91P,EAAQ,CASzB,GARA0P,EAAUyqJ,EAAQA,EAAMn6J,EAAO81P,GAAcA,EAAaphP,GAAY1U,EAAO81P,GAE7EF,GAAa,EACT5oS,EAAS0iD,KAEXkmP,OAA4Bx/S,KAD5Bw/S,EAAalmP,EAAQ+lP,MACqBG,EAAat7S,EAAQo1D,IAG7DkmP,GAAc5gQ,EAAQ,EACxB6gQ,EAAcH,EAAiB1/S,EAAQ0+D,EAAUhF,EAASy7D,EAASz7D,EAAQt8D,QAASyiT,EAAa7gQ,EAAQ,GAAK,MACzG,CACL,GAAI6gQ,GAAe,iBAAkB,MAAMn9S,YAC3C1C,EAAO6/S,GAAenmP,EAGxBmmP,IAEFC,IAEF,OAAOD,I,gBClCT,IAAI1qL,EAAW,EAAQ,IACnBoiF,EAAS,EAAQ,KACjBl6G,EAAU,EAAQ,KAEtBn/F,EAAOD,QAAU,SAAUy8F,EAAM8iG,EAAWuiH,EAAYrlQ,GACtD,IAAI+P,EAAI7qC,OAAOy9E,EAAQ3C,IACnBslN,EAAev1P,EAAErtD,OACjB6iT,OAAyB7/S,IAAf2/S,EAA2B,IAAMngS,OAAOmgS,GAClDG,EAAe/qL,EAASqoE,GAC5B,GAAI0iH,GAAgBF,GAA2B,IAAXC,EAAe,OAAOx1P,EAC1D,IAAI01P,EAAUD,EAAeF,EACzBI,EAAe7oG,EAAO/5M,KAAKyiT,EAAS1sS,KAAKo7B,KAAKwxQ,EAAUF,EAAQ7iT,SAEpE,OADIgjT,EAAahjT,OAAS+iT,IAASC,EAAeA,EAAa/9S,MAAM,EAAG89S,IACjEzlQ,EAAO0lQ,EAAe31P,EAAIA,EAAI21P,I,gBCdvC,IAAI/qK,EAAc,EAAQ,IACtB7+H,EAAU,EAAQ,KAClBwqG,EAAY,EAAQ,IACpB+1H,EAAS,EAAQ,KAAiB9yO,EACtC/F,EAAOD,QAAU,SAAUoiT,GACzB,OAAO,SAAUxhR,GAOf,IANA,IAKIn9B,EALAy2F,EAAI6oB,EAAUniF,GACdpoB,EAAOD,EAAQ2hF,GACf/6F,EAASqZ,EAAKrZ,OACdF,EAAI,EACJyH,EAAS,GAENvH,EAASF,GACdwE,EAAM+U,EAAKvZ,KACNm4I,IAAe0hG,EAAOv5O,KAAK26F,EAAGz2F,IACjCiD,EAAOjH,KAAK2iT,EAAY,CAAC3+S,EAAKy2F,EAAEz2F,IAAQy2F,EAAEz2F,IAG9C,OAAOiD,K,gBCjBX,IAAIq8H,EAAU,EAAQ,KAClBviG,EAAO,EAAQ,KACnBvgC,EAAOD,QAAU,SAAUoiH,GACzB,OAAO,WACL,GAAI2gB,EAAQtzH,OAAS2yG,EAAM,MAAM39G,UAAU29G,EAAO,yBAClD,OAAO5hF,EAAK/wB,S,gBCNhB,IAAIw1M,EAAQ,EAAQ,KAEpBhlN,EAAOD,QAAU,SAAU6pC,EAAM27F,GAC/B,IAAI9+H,EAAS,GAEb,OADAu+M,EAAMp7K,GAAM,EAAOnjC,EAAOjH,KAAMiH,EAAQ8+H,GACjC9+H,I,cCJTzG,EAAOD,QAAUsV,KAAKg4Q,OAAS,SAAev6P,EAAGsvR,EAAOC,EAAQC,EAAQC,GACtE,OACuB,IAArBpwS,UAAUjT,QAEL4zB,GAAKA,GAELsvR,GAASA,GAETC,GAAUA,GAEVC,GAAUA,GAEVC,GAAWA,EACTt4Q,IACLnX,IAAMmd,KAAYnd,KAAOmd,IAAiBnd,GACtCA,EAAIsvR,IAAUG,EAAUD,IAAWD,EAASD,GAASE,I,gBChB/DtiT,EAAOD,QAAU,CAAE,QAAW,EAAQ,MAA0DsD,YAAY,I,8BCA5G,YAEA,IAEI8F,EAAa/D,EAFD,EAAQ,IAIpBk8B,EAAe,EAAQ,IAIvB48N,EAAgB94P,EAFD,EAAQ,MAMvBq/F,EAAoBr/F,EAFD,EAAQ,KAI/B,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GA4BvF,SAAS+9S,EAAengR,EAAcogR,GAClCjzS,KAAKq0G,OAASxhF,EACd7yB,KAAKouJ,YAAc6kJ,EACnBjzS,KAAKkzS,WAAa1iT,EAAOD,QAAQ4iT,2BAA2BnzS,KAAKouJ,aAGrE4kJ,EAAepjT,UAAUwjT,MAAQ,WAC7B,IAAIz0S,EAAOqB,KACX,OAAOA,KAAKqzS,sBAAsBr8S,MAAK,WACnC,OAAO2H,EAAK20S,4BACbt8S,MAAK,SAAUg+F,GAId,IAAIllG,GAAO,EAAIgiC,EAAa2+F,qBAAqB9xH,EAAK01G,OAAQrf,EAAKzuC,QAGnE,OAFAz2D,EAAKojT,WAAav0S,EAAKu0S,WACvBpjT,EAAKs+J,YAAczvJ,EAAKyvJ,YACjBt+J,MAIfkjT,EAAepjT,UAAUyjT,oBAAsB,WAE3C,IAAIE,EAAYvzS,KAAKq0G,OAAOnf,QAAQl1F,KAAKouJ,aACzC,IAAKmlJ,EACD,OAAO55S,EAAW9E,QAAQ7D,OAAO,qBAErC,IAAIwmG,EAAS+7M,EAAUn7M,UAAUp4F,KAAKkzS,YACtC,OAAI17M,GAAgC,SAAtBA,EAAOE,WACV/9F,EAAW9E,QAAQ9D,UAEvBiP,KAAKq0G,OAAO4mG,OAAOj7M,KAAKouJ,YAAapuJ,KAAKkzS,aAGrDF,EAAepjT,UAAU0jT,uBAAyB,WAI9C,IAFA,IAAIp5J,EAAQl6I,KAAKq0G,OAAO+3G,WACpBonF,EAAW,KACNhkT,EAAI,EAAGA,EAAI0qJ,EAAMxqJ,OAAQF,IAAK,CACnC,IAAIikT,EAAWv5J,EAAM1qJ,GAAG4oG,UAAUp4F,KAAKkzS,YACvC,GAAIO,GAAoC,SAAxBA,EAAS/7M,YAA6D,IAApCwiD,EAAM1qJ,GAAGs2I,uBAA8B,CACrF0tK,EAAWt5J,EAAM1qJ,GACjB,OAGR,OAAIgkT,EACO75S,EAAW9E,QAAQ9D,QAAQyiT,GAE/BxzS,KAAKq0G,OAAOoyG,WAAW,CAC1BR,OAAQ,eACRhL,OAAQ,CAACj7M,KAAKkzS,cACfl8S,MAAK,SAAUwzF,GACd,OAAO,IAAI14D,EAAas5M,KAAK5gJ,EAAI6d,QAAS,KAAMpT,EAAkBpgG,QAAQvB,MAAM6iH,iBASxF3lH,EAAOD,QAAQi1I,iBAAmB,SAAUjyG,GACxC,GAA0C,IAAtCA,EAAOn6B,QAAQ,QACf,OAAO,EAEX,IAAIs6S,EAAangR,EAAO16B,MAAM,KAAK,GAAG0wF,UAAU,EApElC,MAoEkD75F,QAChE,GAAIgkT,EAAY,CACZ,IAAIrJ,EAAU,IAAIhiK,EAAOqrK,EAAY,UAAUluS,WAE/C,MAAQ,UAAUmM,KAAK04R,GAG3B,OAAO,GAGX75S,EAAOD,QAAQ4iT,2BAA6B,SAAU5sP,GAGlD,MAAO,OADY,IAAI8hF,EAAO9hF,GAAQ/gD,SAAS,UAAU/I,QAAQ,KAAM,IAC7B,eAG9CjM,EAAOD,QAAQkgI,oBAAsB,SAAUpc,EAAQ9tD,GAEnD,OADe,IAAIysP,EAAe3+L,EAAQ9tD,GAC1B6sP,SAGpB5iT,EAAOD,QAAQwgI,yBAA2B,SAAUxqE,GAEhD,IAAIyvN,EAAatnB,EAAc75P,QAAQ86H,mBACvC,GAAIqmJ,GAAcA,EAAWk9B,YACA1iT,EAAOD,QAAQ4iT,2BAA2B5sP,KACxCyvN,EAAWk9B,WAClC,OAAOl9B,EAGf,OAAO,MAGXxlR,EAAOD,QAAQyiT,eAAiBA,EAEhCxiT,EAAOD,QAAQojT,KAAO,e,uDC7HtBnjT,EAAOD,QAAU,CAObqjT,gBAAiB,SAAyB92S,EAAM+2S,GAC5C,MAAO,CACHz1L,QAAS,SACT1tB,OAAQ,yBACR5zF,KAAMA,EACNolG,eAAgB2xM,IAUxBC,eAAgB,SAAwBh3S,EAAM+2S,GAC1C,MAAO,CACHz1L,QAAS,WACT1tB,OAAQ,yBACR5zF,KAAMA,EACNolG,eAAgB2xM,IAUxBE,cAAe,SAAuBj3S,EAAM+2S,GACxC,MAAO,CACHz1L,QAAS,UACT1tB,OAAQ,yBACR5zF,KAAMA,EACNolG,eAAgB2xM,IASxBG,gBAAiB,SAAyBl3S,GACtC,MAAO,CACHshH,QAAS,SACTthH,KAAMA,IASdm3S,WAAY,SAAoBn3S,GAC5B,MAAO,CACHshH,QAAS,WACTthH,KAAMA,IASdo3S,iBAAkB,SAA0Bp3S,GACxC,MAAO,CACHshH,QAAS,UACTthH,KAAMA,M,6BC1ElB,IAEIjH,EAAWD,EAFD,EAAQ,KAMlB+D,EAAa/D,EAFD,EAAQ,IAIxB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvF,IAAIuqK,EAAQ,EAAQ,IAChB25C,EAAO,EAAQ,KAUnB3oN,EAAOD,QAAQ8jC,YAAc,SAAqB7jB,GAC9CA,EAAOA,GAAQ,GACfxQ,KAAKk6I,MAAQ,GAGbl6I,KAAK63C,OAAS,GAGd73C,KAAKk4F,MAAQ,GAGbl4F,KAAKm0S,UAAY,KACjBn0S,KAAKo0S,QAAU,GAKfp0S,KAAK66M,YAAc,GAGnB76M,KAAKs0B,aAAe9jB,EAAK8jB,aACzBt0B,KAAKq0S,YAAc,GAGnBr0S,KAAKs0S,eAAiB,IAG1B9jT,EAAOD,QAAQ8jC,YAAYzkC,UAAY,CAMnC2kT,aAAc,WACV,OAAOv0S,KAAKm0S,WAIhBxmE,eAAgB,WACZ,OAAOh0O,EAAW9E,QAAQ9D,SAAQ,IAOtCmxP,aAAc,SAAsB7vG,GAChCryI,KAAKm0S,UAAY9hK,GAOrBmiK,WAAY,SAAoBp1G,GAC5Bp/L,KAAK63C,OAAOunJ,EAAM/pG,SAAW+pG,GAQjCq1G,SAAU,SAAkBp/M,GACxB,OAAOr1F,KAAK63C,OAAOw9C,IAAY,MAOnCq/M,UAAW,WACP,OAAOl1I,EAAM/hJ,OAAOzd,KAAK63C,SAO7B88P,UAAW,SAAmB3/M,GAC1Bh1F,KAAKk6I,MAAMllD,EAAKzuC,QAAUyuC,EAG1BA,EAAKgC,aAAatI,GAAG,oBAAqB1uF,KAAK40S,cAAc3gT,KAAK+L,OAElE,IAAIrB,EAAOqB,KACXg1F,EAAKgC,aAAasvC,aAAalsI,SAAQ,SAAUrH,GAC7C4L,EAAKi2S,cAAc,KAAM5/M,EAAKgC,aAAcjkG,OAWpD6hT,cAAe,SAAuB9iT,EAAO+tD,EAAO23C,GAChD,GAA0B,WAAtBA,EAAOE,WAAX,CAMA,IAAIkW,EAAO5tG,KAAKk4F,MAAMV,EAAOjkE,SAAW,IAAI4lL,EAAK3hH,EAAOjkE,QACpDikE,EAAOhlG,OACPo7G,EAAKssG,eAAe1iH,EAAOhlG,MACvBglG,EAAOpK,OAAOoK,QACdoW,EAAKwsG,kBAAkB5iH,EAAOpK,OAAOoK,OAAOgmB,wBAAwBqwD,cAGxEr2E,EAAOpK,OAAOoK,QAAUA,EAAOpK,OAAOoK,OAAOS,aAAaysC,YAC1D92B,EAAKysG,aAAa7iH,EAAOpK,OAAOoK,OAAOS,aAAaysC,YAExD1kI,KAAKk4F,MAAM0V,EAAKr6E,QAAUq6E,IAQ9B1Y,QAAS,SAAiB3uC,GACtB,OAAOvmD,KAAKk6I,MAAM3zF,IAAW,MAOjC6lK,SAAU,WACN,OAAO5sD,EAAM/hJ,OAAOzd,KAAKk6I,QAO7B26J,WAAY,SAAoBtuP,GACxBvmD,KAAKk6I,MAAM3zF,IACXvmD,KAAKk6I,MAAM3zF,GAAQonC,eAAe,oBAAqB3tF,KAAK40S,sBAEzD50S,KAAKk6I,MAAM3zF,IAOtBuuP,iBAAkB,WACd,OAAOt1I,EAAMtmK,IAAIsmK,EAAM/hJ,OAAOzd,KAAKk6I,QAAQ,SAAUllD,GACjD,OAAOA,EAAKsnH,YAQpBy4F,UAAW,SAAmBnnM,GAC1B5tG,KAAKk4F,MAAM0V,EAAKr6E,QAAUq6E,GAQ9ByJ,QAAS,SAAiB9jF,GACtB,OAAOvzB,KAAKk4F,MAAM3kE,IAAW,MAOjCyhR,SAAU,WACN,OAAOx1I,EAAM/hJ,OAAOzd,KAAKk4F,QAU7B+8M,WAAY,SAAoBjgN,EAAMp4E,GAClC,MAAO,IAUXs4R,YAAa,SAAqBlgN,EAAM5H,EAAQilD,EAAO8iK,KAQvDC,YAAa,SAAqBt8R,GACzBA,IAGA9Y,KAAKo0S,QAAQt7R,EAAOya,UACrBvzB,KAAKo0S,QAAQt7R,EAAOya,QAAU,IAElCvzB,KAAKo0S,QAAQt7R,EAAOya,QAAQza,EAAOuwO,UAAYvwO,IASnDk5H,UAAW,SAAmBz+G,EAAQ81N,GAClC,OAAKrpP,KAAKo0S,QAAQ7gR,IAAYvzB,KAAKo0S,QAAQ7gR,GAAQ81N,GAG5CrpP,KAAKo0S,QAAQ7gR,GAAQ81N,GAFjB,MAUfgsD,kBAAmB,SAA2BC,GAC1C,IAAKt1S,KAAKs0B,aACN,OAAO,KAEX,IACI,OAAOt0B,KAAKs0B,aAAagqG,QAAQ,yBAA2Bg3K,GAC9D,MAAO5kT,IACT,OAAO,MAQX6kT,kBAAmB,SAA2BD,EAAYjsD,GACtD,GAAKrpP,KAAKs0B,aAGV,IACIt0B,KAAKs0B,aAAa6pG,QAAQ,yBAA2Bm3K,EAAYjsD,GACnE,MAAO34P,MASb8kT,uBAAwB,SAAgCpoN,GACpD,IAAIzuF,EAAOqB,KACXotF,EAAOhzF,SAAQ,SAAUtI,GACrB6M,EAAKk8M,YAAY/oN,EAAMwlG,WAAaxlG,MAS5CujH,eAAgB,SAAwBi1D,GACpC,OAAOtqK,KAAK66M,YAAYvwC,IAS5BilE,YAAa,SAAqBzB,GAC9B,OAAOn0O,EAAW9E,QAAQ9D,WAQ9B0kT,UAAW,WACP,OAAO,GAQXhzN,KAAM,SAAc0gE,KAMpBjvH,QAAS,WACL,OAAOv6B,EAAW9E,QAAQ9D,WAQ9Bq+O,aAAc,WACV,OAAOz1O,EAAW9E,QAAQ9D,QAAQ,OAOtC2kT,kBAAmB,WACf,OAAO/7S,EAAW9E,QAAQ9D,QAAQ,OAOtCijL,cAAe,WAgBX,OAfAh0K,KAAKk6I,MAAQ,GAGbl6I,KAAKk4F,MAAQ,GAGbl4F,KAAKm0S,UAAY,KACjBn0S,KAAKo0S,QAAU,GAKfp0S,KAAK66M,YAAc,GAGZlhN,EAAW9E,QAAQ9D,WAU9Bi9O,oBAAqB,SAA6BznL,GAC9C,OAAO5sD,EAAW9E,QAAQ9D,QAAQiP,KAAKq0S,YAAY9tP,IAAW,OAWlE8nL,oBAAqB,SAA6B9nL,EAAQ2nL,GAEtD,OADAluO,KAAKq0S,YAAY9tP,GAAU2nL,EACpBv0O,EAAW9E,QAAQ9D,WAG9By9O,sBAAuB,WAEnB,OADAxuO,KAAKq0S,YAAc,GACZ16S,EAAW9E,QAAQ9D,WAG9Bw/O,iBAAkB,WACd,OAAO52O,EAAW9E,QAAQ9D,QAAQiP,KAAKs0S,iBAG3C7jE,mBAAoB,SAA4Bv2O,GAE5C,OADA8F,KAAKs0S,gBAAiB,EAAIz+S,EAAShB,SAAS,GAAIqF,GACzCP,EAAW9E,QAAQ9D,a,8BClblC,YAEA,IAEI2gC,EAAgB97B,EAFD,EAAQ,KAMvBiJ,EAAmBjJ,EAFD,EAAQ,MAI1B+7B,EAAY,EAAQ,GAEpBh4B,EAAa/D,EAAuB+7B,GAIpCh8B,EAAgBC,EAFA,EAAQ,KAMxB0oD,EAAkB1oD,EAFA,EAAQ,KAI1B+/S,EAAU,EAAQ,KAIlB5jR,EAAUn8B,EAFD,EAAQ,KAIjB+2F,EAAU,EAAQ,IAIlBipN,EAA0BhgT,EAFD,EAAQ,MAMjCigT,EAA2BjgT,EAFD,EAAQ,OAMlCkgT,EAASlgT,EAFD,EAAQ,MAIhB+rN,EAAS,EAAQ,KAIjBpmG,EAAW3lH,EAFD,EAAQ,KAItB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAYvF,IAgEIi2O,EAAiB,SAAwB16N,GAGzC,GAFAmlS,EAAQthR,YAAYvkC,KAAKkQ,KAAMwQ,IAE1BA,EAAKszC,UACN,MAAM,IAAIjyD,MAAM,sCAGpB,GAAI2e,EAAKulS,aAAc,CAEnB,IAAIC,EAAYxlS,EAAKwlS,UAChBA,IAEDA,EAAY9nS,EAAO+nS,QAEvBj2S,KAAKq7J,QAAU,IAAIw6I,EAAyBhhT,QAAQ2b,EAAKulS,aAAcvlS,EAAKgqJ,OAAQw7I,QAEpFh2S,KAAKq7J,QAAU,IAAIu6I,EAAwB/gT,QAAQ2b,EAAKszC,UAAWtzC,EAAKgqJ,QAG5Ex6J,KAAKk2S,WAAY,EACjBl2S,KAAKm2S,QAAU,EAKfn2S,KAAKo2S,iBAAmB,IA2M5B,SAASC,EAAWrpP,EAAMspP,GACtB,OACQ/lM,GAAQ,EAAI5+E,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASC,IACnF,IAAK,IAAIqtB,EAAOr+C,UAAUjT,OAAQsW,EAAOrP,MAAMqqD,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IACzEj7C,EAAKi7C,GAAQt+C,UAAUs+C,GAG3B,IAAIs1P,EAEJ,OAAO7kR,EAAc78B,QAAQm/B,MAAK,SAAkB7F,GAChD,OACI,OAAQA,EAAStsB,KAAOssB,EAASzwB,MAC7B,KAAK,EAGD,OAFAywB,EAAStsB,KAAO,EAChBssB,EAASzwB,KAAO,GACT,EAAIi0B,EAAU5gC,SAASi8D,EAAKl9D,KAAKoM,MAAM8wD,EAAM,CAAChtD,MAAM1D,OAAO0J,KAEtE,KAAK,EACD,OAAOmoB,EAASgG,OAAO,SAAUhG,EAASmH,MAE9C,KAAK,EAcD,OAbAnH,EAAStsB,KAAO,EAChBssB,EAASiG,GAAKjG,EAAgB,MAAE,GAEhCotF,EAAS1mH,QAAQjD,MAAM,mDAAoDu8B,EAASiG,IACpFp0B,KAAK4O,KAAK,WAAYuf,EAASiG,IAC/BjG,EAAStsB,KAAO,GAMhB05G,EAAS1mH,QAAQgD,IAAI,iDACrBs2B,EAASzwB,KAAO,IACT,EAAIi0B,EAAU5gC,SAASiP,KAAKq7J,QAAQ8zE,iBAE/C,KAAK,GACD5zH,EAAS1mH,QAAQgD,IAAI,oDACrBs2B,EAASzwB,KAAO,GAChB,MAEJ,KAAK,GACDywB,EAAStsB,KAAO,GAChBssB,EAASwG,GAAKxG,EAAgB,MAAE,IAEhCotF,EAAS1mH,QAAQyF,KAAK,+CAAgD6zB,EAASwG,IAEnF,KAAK,GAUD,IAFA,EAAI91B,EAAiBhK,SAASmL,KAAM21S,EAAQthR,YAAYzkC,YAEnD0mT,EAAU,CACXnoR,EAASzwB,KAAO,GAChB,MAIJ,OADAywB,EAASzwB,KAAO,IACT,EAAIi0B,EAAU5gC,UAAUwlT,EAAwBZ,EAAQthR,YAAYzkC,UAAU0mT,IAAWxmT,KAAKoM,MAAMq6S,EAAuB,CAACv2S,MAAM1D,OAAO0J,KAEpJ,KAAK,GACD,OAAOmoB,EAASgG,OAAO,SAAUhG,EAASmH,MAE9C,KAAK,GACL,IAAK,MACD,OAAOnH,EAASiF,UAG7BO,EAAS3zB,KAAM,CAAC,CAAC,EAAG,GAAI,CAAC,GAAI,UAG7B,SAAU0rG,GACb,OAAO6E,EAAMr0G,MAAM8D,KAAM2C,YA5E1B,IACC4tG,EAzMZx+E,EAAQl9B,QAAQoe,SAASi4N,EAAgByqE,EAAQthR,aACjDtC,EAAQl9B,QAAQu1F,OAAO8gJ,EAAet7O,UAAW+8F,EAAQD,aAAa98F,WAEtEs7O,EAAehiM,OAAS,SAAU4a,EAAW02G,GACzC,OAAOo7I,EAAwB/gT,QAAQq0C,OAAO4a,EAAW02G,IAM7D0wE,EAAet7O,UAAUskC,QAAU,WAC/B,IAAImrB,EAAQr/C,KAEZ,OAAIA,KAAKk2S,WACL36L,EAAS1mH,QAAQgD,IAAI,2CACd8B,EAAW9E,QAAQ9D,YAG9BwqH,EAAS1mH,QAAQgD,IAAI,iDACdmI,KAAKq7J,QAAQhuC,UAAUr2H,MAAK,WAE/B,OADAukH,EAAS1mH,QAAQgD,IAAI,mDACdwnD,EAAMg8G,QAAQ80E,2BACtBn5O,MAAK,SAAUw/S,GACdj7L,EAAS1mH,QAAQgD,IAAI,sDACrB2+S,EAAmBp8S,SAAQ,SAAU84B,GACjC,IAAID,GAAQ,EAAIqrB,EAAgBzpD,SAASq+B,EAAM,GAC3CK,EAASN,EAAM,GACfwjR,EAAWxjR,EAAM,GAEjB7zB,EAAI,IAAI02S,EAAOjhT,QAAQ0+B,GACvBkjR,GACAr3S,EAAEw6M,iBAAiB,IAAI+H,EAAO1lG,YAAYw6L,IAE9Cp3P,EAAM+2P,iBAAiBh3S,EAAEm0B,QAAUn0B,EAAEo7M,sBACrCn7J,EAAM01P,UAAU31S,WAU5B8rO,EAAet7O,UAAUw/O,aAAeinE,GAAW,WAC/C,OAAOr2S,KAAKq7J,QAAQ+zE,iBACrB,gBAGHlE,EAAet7O,UAAU+9O,eAAiB0oE,GAAW,WACjD,OAAOr2S,KAAKq7J,QAAQsyE,mBACrB,kBAMHzC,EAAet7O,UAAU8lT,kBAAoBW,GAAW,WACpD,OAAOr2S,KAAKq7J,QAAQi0E,sBACrB,qBAMHpE,EAAet7O,UAAUokL,cAAgBqiI,GAAW,WAEhD,OADAV,EAAQthR,YAAYzkC,UAAUokL,cAAclkL,KAAKkQ,MAC1CA,KAAKq7J,QAAQ8zE,gBAAgBn4O,MAAK,WACrCukH,EAAS1mH,QAAQgD,IAAI,8BACtB,SAAUvD,GAET,MADAinH,EAAS1mH,QAAQjD,MAAM,oCAAsC0C,GACvDA,QAad42O,EAAet7O,UAAU6lT,UAAY,WAEjC,OADU7uP,KAAK8+D,MACF1lH,KAAKm2S,QAnLD,KA6LrBjrE,EAAet7O,UAAU6yF,KAAO,SAAU0gE,GACtC,OAAIA,GAASnjJ,KAAKy1S,YACPz1S,KAAK02S,cAET/8S,EAAW9E,QAAQ9D,WAG9Bm6O,EAAet7O,UAAU8mT,YAAcL,GAAW,WAC9Cr2S,KAAKm2S,QAAUvvP,KAAK8+D,MAIpB,IAAI+pH,EAAa,GACbpyO,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiB7K,EAErB,IACI,IAAK,IAA6D8K,EAAzDC,GAAY,EAAI9H,EAAcd,SAASmL,KAAKg1S,cAAsB33S,GAA6BG,EAAQC,EAAUC,QAAQC,MAAON,GAA4B,EAAM,CACvK,IAAI+B,EAAI5B,EAAM9J,MAEVsM,KAAKo2S,iBAAiBh3S,EAAEm0B,UAAYn0B,EAAEo7M,wBACrCp7M,EAAEguF,OAAOgsH,WAEdq2B,EAAWz/O,KAAK,CAACoP,EAAEm0B,OAAQn0B,EAAEguF,OAAOgsH,SAAStnN,QAG7CkO,KAAKo2S,iBAAiBh3S,EAAEm0B,QAAUn0B,EAAEo7M,yBAE1C,MAAOlmN,GACLgJ,GAAoB,EACpBC,EAAiBjJ,EACnB,QACE,KACS+I,GAA6BI,EAAUI,QACxCJ,EAAUI,SAEhB,QACE,GAAIP,EACA,MAAMC,GAKlB,OAAOyC,KAAKq7J,QAAQm0E,eAAeC,MAGvCvE,EAAet7O,UAAU2/O,YAAc8mE,GAAW,SAAUvoE,GACxD,OAAO9tO,KAAKq7J,QAAQk0E,YAAYzB,KACjC,eASH5C,EAAet7O,UAAUo+O,oBAAsBqoE,GAAW,SAAU9vP,GAChE,OAAOvmD,KAAKq7J,QAAQ2yE,oBAAoBznL,KACzC,uBAUH2kL,EAAet7O,UAAUy+O,oBAAsBgoE,GAAW,SAAU9vP,EAAQ2nL,GAExE,OADAynE,EAAQthR,YAAYzkC,UAAUy+O,oBAAoBv+O,KAAKkQ,KAAMumD,EAAQ2nL,GAC9DluO,KAAKq7J,QAAQgzE,oBAAoB9nL,EAAQ2nL,KACjD,uBAEHhD,EAAet7O,UAAU4+O,sBAAwB6nE,GAAW,SAAU9vP,GAElE,OADAovP,EAAQthR,YAAYzkC,UAAU4+O,sBAAsB1+O,KAAKkQ,MAClDA,KAAKq7J,QAAQmzE,sBAAsBjoL,KAC3C,yBAEH2kL,EAAet7O,UAAU2gP,iBAAmB8lE,GAAW,WACnD,OAAOr2S,KAAKq7J,QAAQk1E,qBACrB,oBAEHrF,EAAet7O,UAAU6gP,mBAAqB4lE,GAAW,SAAUn8S,GAE/D,OADAy7S,EAAQthR,YAAYzkC,UAAU6gP,mBAAmB3gP,KAAKkQ,KAAM9F,GACrD8F,KAAKq7J,QAAQo1E,mBAAmBv2O,KACxC,sBAEH1J,EAAOD,QAAQ26O,eAAiBA,I,kCChVhC,IAAI5hO,EAAW,EAAQ,IACnByiF,EAAW,EAAQ,IACnBjsE,EAAQ,SAAU2qE,EAAGhyE,GAEvB,GADAszE,EAAStB,IACJnhF,EAASmP,IAAoB,OAAVA,EAAgB,MAAMzjB,UAAUyjB,EAAQ,8BAElEjoB,EAAOD,QAAU,CACfgoB,IAAK5oB,OAAO+9D,iBAAmB,aAAe,GAC5C,SAAU/7C,EAAMqyN,EAAOzrN,GACrB,KACEA,EAAM,EAAQ,GAAR,CAAkBtc,SAASnM,KAAM,EAAQ,KAAkByG,EAAE5G,OAAOC,UAAW,aAAa2oB,IAAK,IACnG5G,EAAM,IACVqyN,IAAUryN,aAAgBhb,OAC1B,MAAOjG,GAAKszO,GAAQ,EACtB,OAAO,SAAwBv5I,EAAGhyE,GAIhC,OAHAqH,EAAM2qE,EAAGhyE,GACLurN,EAAOv5I,EAAEvrF,UAAYuZ,EACpBF,EAAIkyE,EAAGhyE,GACLgyE,GAVX,CAYE,IAAI,QAAS/3F,GACjBotB,MAAOA,I,cCtBTtvB,EAAOD,QAAU,SAAU0Q,EAAI+E,EAAMgnF,GACnC,IAAI+iN,OAAcr9S,IAATs6F,EACT,OAAQhnF,EAAKtW,QACX,KAAK,EAAG,OAAOqgT,EAAK9uS,IACAA,EAAGnR,KAAKk9F,GAC5B,KAAK,EAAG,OAAO+iN,EAAK9uS,EAAG+E,EAAK,IACR/E,EAAGnR,KAAKk9F,EAAMhnF,EAAK,IACvC,KAAK,EAAG,OAAO+pS,EAAK9uS,EAAG+E,EAAK,GAAIA,EAAK,IACjB/E,EAAGnR,KAAKk9F,EAAMhnF,EAAK,GAAIA,EAAK,IAChD,KAAK,EAAG,OAAO+pS,EAAK9uS,EAAG+E,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC1B/E,EAAGnR,KAAKk9F,EAAMhnF,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACzD,KAAK,EAAG,OAAO+pS,EAAK9uS,EAAG+E,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACnC/E,EAAGnR,KAAKk9F,EAAMhnF,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAClE,OAAO/E,EAAG/E,MAAM8wF,EAAMhnF,K,8BCd1B,YAoBA,IAyCQixG,EAvCJ7yD,EAAcxuD,EAFD,EAAQ,KAMrBC,EAAWD,EAFD,EAAQ,KAMlB64K,EAAQ74K,EAFD,EAAQ,KAMfG,EAAWH,EAFA,EAAQ,KAInB+7B,EAAY,EAAQ,GAEpBh4B,EAAa/D,EAAuB+7B,GAIpCD,EAAgB97B,EAFD,EAAQ,KAMvBE,EAASF,EAFD,EAAQ,KAMhB0oD,EAAkB1oD,EAFA,EAAQ,KAM1B2+F,EAAY3+F,EAFD,EAAQ,MAMnBD,EAAgBC,EAFA,EAAQ,KAIxB+gT,GACI1/L,GAAQ,EAAItlF,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASyB,EAASk/E,EAAQ9gF,EAAQqC,EAAUwiN,EAAUgD,EAAS9C,GACzI,IAAI+C,EACJ,OAAO3pN,EAAc78B,QAAQm/B,MAAK,SAAmBoB,GACjD,OACI,OAAQA,EAAUvzB,KAAOuzB,EAAU13B,MAC/B,KAAK,EACD,GAAI22G,EAAO/hF,QAAS,CAChB8C,EAAU13B,KAAO,EACjB,MAGJ,MAAM,IAAI7L,MAAM,kCAEpB,KAAK,EAED,OADAujC,EAAU13B,KAAO,GACV,EAAIi0B,EAAU5gC,SAASsjH,EAAO/hF,QAAQ6oN,sBAAsB5nN,EAAQqC,EAAUwiN,EAAUgD,EAAS9C,IAE5G,KAAK,EACD+C,EAAMjmN,EAAUE,KAEhB++E,EAAOzlG,KAAK,4BAA6B2kB,EAAQqC,EAAUylN,GAE/D,KAAK,EACL,IAAK,MACD,OAAOjmN,EAAUhC,UAG9B+B,EAAUn1B,UAGV,SAAgC06G,EAAK2J,EAAKC,EAAK/6D,EAAKC,EAAKC,GAC5D,OAAOwtD,EAAM/6G,MAAM8D,KAAM2C,aAoB7Bi0S,EAAchhT,EAFD,EAAQ,MAMrBihT,EAAajhT,EAFD,EAAQ,OAMpB2lH,EAAW3lH,EAFD,EAAQ,KAIlB08B,EAAU,EAAQ,KAElBwkR,EAAWlhT,EAAuB08B,GAElCykR,EAAe,EAAQ,MAEvBC,EAAmB,EAAQ,MAE3BrjE,EAAgB,EAAQ,KAE5B,SAAS/9O,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvF,IAAIqvJ,EAAgB,EAAQ,KAMxB53D,EAAe,EAAQ,IAAUA,aAEjC/vF,EAAM,EAAQ,IAEds6S,EAAU,EAAQ,KAClBh7L,EAAc,EAAQ,KAAkBA,YACxCT,EAAc,EAAQ,KAAkBA,YACxCm1B,EAAgB,EAAQ,KACxBumK,EAAe,EAAQ,MACvBC,EAAY,EAAQ,MACpBC,EAAa,EAAQ,KACrB53I,EAAQ,EAAQ,IAChB63I,EAAc,EAAQ,KACtB1rE,EAAS,EAAQ,KACjB2rE,EAAU,EAAQ,MAClBC,EAAiB,EAAQ,MACzBl3F,EAAc42F,EAAQ52F,YACtB2qB,EAAiB,EAAQ,KACzBiJ,EAAS,EAAQ,KAIrBt6O,EAAW9E,QAAQwY,OAAO,CAAEvB,UAAU,IAEtC,IAmpBQmnB,EAqBAs9E,EAuIAooC,EAsBA2+E,EAkPA2V,EAiNA2H,EA0/BA6I,EAyCA+5D,EA2MA3iE,EAs/BAC,EAgnBAC,EAoTAO,GA/4IJ5J,IAAiB,EAAIp5M,EAAQkhN,qBAGjC,SAASikE,GAAwBz5I,EAAU05I,EAAenxP,GACtD,IAAIx9C,EAAO,GACP1L,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiB7K,EAErB,IACI,IAAK,IAA8E8K,EAA1EC,GAAY,EAAI9H,EAAcd,UAAS,EAAI0/F,EAAU1/F,SAASmpK,MAAqB3gK,GAA6BG,EAAQC,EAAUC,QAAQC,MAAON,GAA4B,EAAM,CACxL,IAAIs6S,GAAc,EAAIr5P,EAAgBzpD,SAAS2I,EAAM9J,MAAO,GACxDopK,EAAY66I,EAAY,GACxBt6I,EAAcs6I,EAAY,GAE9B,IACI,IAAIh1L,EAAYi1L,GAAuBv6I,EAAaq6I,GACpD/0L,EAAU9D,WAAai+C,EACvBn6C,EAAUta,QAAU9hD,EACpBx9C,EAAK/Y,KAAK2yH,GACZ,MAAOjyH,GACL6qH,EAAS1mH,QAAQgD,IAAI,2CAG/B,MAAOvD,GACLgJ,GAAoB,EACpBC,EAAiBjJ,EACnB,QACE,KACS+I,GAA6BI,EAAUI,QACxCJ,EAAUI,SAEhB,QACE,GAAIP,EACA,MAAMC,GAKlB,OAAOwL,EAGX,SAAS6uS,GAAuB9lE,EAAS4lE,GACrC,OAAO16S,KAAKC,MAAMy6S,EAAcG,QAAQ/lE,EAAQ2N,aAAajjC,UAAWs1B,EAAQ2N,aAAaq4D,IAAKhmE,EAAQ2N,aAAayE,aA6F3H,SAASv3F,GAAan8I,GAClB,IAAI6uC,EAAQr/C,KAEZwQ,EAAKilB,QAAU+pI,EAAM/zE,sBAAsBj7E,EAAKilB,SAChDjlB,EAAKmlB,UAAY6pI,EAAM/zE,sBAAsBj7E,EAAKmlB,WAElD4hR,EAAeznT,KAAKkQ,KAAMwQ,GAE1BxQ,KAAK+3S,WAAa,KAElB/3S,KAAKg4S,UAAY,IAAIpB,EAAY/hT,QAAQmL,MAEzCA,KAAKi0B,MAAQzjB,EAAKyjB,OAAS,IAAIkjR,EAE/Bn3S,KAAK41B,SAAWplB,EAAKolB,UAAY,KAEjC,IAAIrC,EAAS/iB,EAAK+iB,QAAU,KAM5B,GALAvzB,KAAKszB,YAAc,CACfC,OAAQA,GAGZvzB,KAAKusO,UAAY/7N,EAAK+7N,UAClBvsO,KAAKusO,UAAW,CAChB,IAAI5tO,EAAOqB,KACXA,KAAKusO,UAAU0rE,oBAAmB,SAAUC,GACxC,IAAIljN,EAAOr2F,EAAKu2F,QAAQgjN,EAAY9vM,aAIpC,OAHI8vM,EAAYn7S,SAAWy+G,EAAYG,SACnCw8L,GAA0BnjN,EAAMkjN,EAAa18L,EAAYG,SAEtDy8L,GAAsBz5S,EAAMu5S,MAG3Cl4S,KAAKq4S,eAAgB,EAErBr4S,KAAK+qK,SAAW,GAMhB,IAAIj7K,EAAOsnT,EAAW3mL,oBAAoBzwH,MAC1CA,KAAKs4S,eAAgB,EACjBxoT,KAwxIR,SAA+BukH,GAC3B,IAAIkkM,EAAmB,GAQnBC,EAAkB,GAClBC,GAAmB,EA2CvB,SAASC,EAAiB5mT,GACtB,IAAIkmG,EAAUlmG,EAAMmmG,aAChBnoG,EAAOkoG,EAAQkvE,QAAU7yD,EAAO02D,SAAS/yE,EAAQkvE,cAAWx0K,EAC5DlD,OAAI,EAGR,GAAwB,kBAApBsC,EAAMwlG,UAA+B,CACrC,GAAIxlG,EAAM+qH,cAAgBxI,EAAO/gF,YAAYC,OACzC,OAGJ,GAAIzhC,EAAM2rH,SAAWzlB,EAAQyuE,SACzB,OAGJ,GAAI32K,GAAuB,UAAfA,EAAK+vD,MACb,OASJ,GAPI/vD,GACAyrH,EAAS1mH,QAAQgD,IAAI,4EAAkFmgG,EAAQkvE,WAGnHp3K,EAAOsnT,EAAW3mL,oBAAoBpc,EAAQviH,EAAMs2G,YAAa,CAC7DjyE,UAAWk+E,EAAOo5D,cAOlB,YAJAlyD,EAAS1mH,QAAQgD,IAAI,oBAAsBmgG,EAAQkvE,QAAU,2CAYjE,GALAp3K,EAAKozK,OAASlrE,EAAQkvE,QACtBp3K,EAAK+1K,gBAAgB/zK,GACrBuiH,EAAO02D,SAASj7K,EAAKozK,QAAUpzK,EAG3ByoT,EAAiBzoT,EAAKozK,QACtB,IAAK1zK,EAAI,EAAGA,EAAI+oT,EAAiBzoT,EAAKozK,QAAQxzK,OAAQF,IAClDM,EAAKm5K,uBAAuBsvI,EAAiBzoT,EAAKozK,QAAQ1zK,IAKlE,IAAImpT,OAAe,EACfC,EAAgBp5I,EAAM/hJ,OAAO42F,EAAO02D,UACxC,IAAKv7K,EAAI,EAAGA,EAAIopT,EAAclpT,SAAUF,EAAG,CACvC,IAAIqpT,EAAWD,EAAcppT,GAC7B,GAAIM,EAAKy2D,SAAWsyP,EAAStyP,QAAiC,aAAvBsyP,EAASjqL,YAA6G,IAAjF,CAAC,mBAAoB,eAAgB,eAAex1H,QAAQy/S,EAASh5P,OAAe,CAC5J84P,EAAeE,EACf,OAIJF,EAK2B,qBAAvBA,EAAa94P,OAAuD,iBAAvB84P,EAAa94P,OAA4B84P,EAAaz1I,OAASpzK,EAAKozK,QACjH3nD,EAAS1mH,QAAQgD,IAAI,2CAA6C/H,EAAKozK,OAAS,gCAAkCy1I,EAAaz1I,QAC/Hy1I,EAAa7xI,YAAYh3K,GACzBA,EAAK++H,WAELtT,EAAS1mH,QAAQgD,IAAI,2CAA6C/H,EAAKozK,OAAS,8BAAgCy1I,EAAaz1I,QAC7HpzK,EAAK6gI,UAGTtc,EAAOzlG,KAAK,gBAAiB9e,QAE9B,GAAwB,kBAApBgC,EAAMwlG,UAA+B,CAC5C,IAAKxnG,EACD,OAEAgC,EAAM+qH,cAAgBxI,EAAO/gF,YAAYC,OACtB,YAAfzjC,EAAK+vD,OACL/vD,EAAKs6K,qBAAqBpyE,GAG9BloG,EAAKu5K,gBAAgBrxE,QAEtB,GAAwB,sBAApBlmG,EAAMwlG,UAAmC,CAChD,GAAIxlG,EAAM+qH,cAAgBxI,EAAO/gF,YAAYC,OACzC,OAEJ,GAAKzjC,EAOD,IAAKN,EAAI,EAAGA,EAAIwoG,EAAQkB,WAAWxpG,OAAQF,IACvCM,EAAKm5K,uBAAuBjxE,EAAQkB,WAAW1pG,SAN9C+oT,EAAiBvgN,EAAQkvE,WAC1BqxI,EAAiBvgN,EAAQkvE,SAAW,IAExCqxI,EAAiBvgN,EAAQkvE,SAAWqxI,EAAiBvgN,EAAQkvE,SAAS5qK,OAAO07F,EAAQkB,gBAM9D,kBAApBpnG,EAAMwlG,YAGRxnG,EAWkB,UAAfA,EAAK+vD,QACL/vD,EAAKq6K,kBAAkBnyE,UAChBqc,EAAO02D,SAAS/yE,EAAQkvE,WATnCp3K,EAAOsnT,EAAW3mL,oBAAoBpc,EAAQviH,EAAMs2G,gBAEhDt4G,EAAKozK,OAASlrE,EAAQkvE,QACtBp3K,EAAK42K,gBAAgB50K,GACrBuiH,EAAO02D,SAAS/yE,EAAQkvE,SAAWp3K,IAtJnDukH,EAAO3lB,GAAG,QAAQ,SAAU7uC,GACxB,GAAc,aAAVA,EAAsB,CACtB44P,GAAmB,EAInB,IAHA,IAAIK,EAAgB,GAGXtpT,EAAIgpT,EAAgB9oT,OAAS,EAAGF,GAAK,EAAGA,IAAK,CAClD,IAAI2tG,EAAKq7M,EAAgBhpT,GACJ,kBAAjB2tG,EAAG7F,WAAkD,kBAAjB6F,EAAG7F,YACvCwhN,EAAc37M,EAAGlF,aAAaivE,SAAW,OAIjDsxI,EAAgBp+S,SAAQ,SAAU1J,GAC1BooT,EAAcpoT,EAAEunG,aAAaivE,UAIjCwxI,EAAiBhoT,MAErB8nT,EAAkB,OAI1BnkM,EAAO3lB,GAAG,SAEV,SAASouC,EAAQhrI,GAC8B,IAAvCA,EAAMwlG,UAAUl+F,QAAQ,WAQvBq/S,EAILC,EAAiB5mT,GAHb0mT,EAAgBxoT,KAAK8B,IAPjBA,EAAMosH,oBAAsBpsH,EAAMqsH,wBAElCrsH,EAAM88F,KAAK,kBAAmBkuC,MAj0ItCi8K,CAAsB/4S,MACtBA,KAAKs4S,eAAgB,GAEzBt4S,KAAKg5S,cAAgB,KACrBh5S,KAAKi5S,SAAW,KAChBj5S,KAAKk5S,UAAY,KACjBl5S,KAAKm5S,UAAW,EAChBn5S,KAAKo5S,oBAAsB,GAC3Bp5S,KAAKk2B,gBAAkBS,QAAQnmB,EAAK0lB,iBACpCl2B,KAAKq5S,gBAAkB,GACvBr5S,KAAKs5S,kBAAoB,KACzBt5S,KAAKu2B,oCAAsC/lB,EAAK+lB,kCAEhDv2B,KAAKsyB,QAAU,KACftyB,KAAK81O,aAAetlO,EAAKg8N,YACzBxsO,KAAK41O,cAAgBplO,EAAKklO,aAC1B11O,KAAK+1O,qBAAuBvlO,EAAK6lB,oBAEjCr2B,KAAKytK,WAAaj9J,EAAK2lB,YAAa,EACpCn2B,KAAKu5S,0BAA4B/oS,EAAK4lB,2BAA4B,EAKlEp2B,KAAK4mI,UAAY,IAAIiwK,EAAWhiT,QAAQmL,KAAK81O,cAG7C91O,KAAKw5S,eAAiB,IAAIl1J,EAActkJ,MAIxCA,KAAKy5S,qBAAuB,KAE5Bz5S,KAAK05S,oBAAsB,KAM3B15S,KAAK0uF,GAAG,mBAAmB,SAAU58F,GACjC,IAAI6nT,EAAa7nT,EAAM+uH,iBACnB6d,EAAUr/E,EAAMm6P,eAAe9yJ,gBAAgB50J,GACnDA,EAAMwtH,eAAeof,GAErB,IAAI1pC,EAAO31C,EAAM61C,QAAQpjG,EAAMs2G,aAC/B,GAAKpT,EAAL,CAEA,IAAI6lJ,EAAe7lJ,EAAKwpC,2BAA2B,aAK/Co7K,KAAeD,IAAcA,EAAW96K,WAAW86K,EAAW96K,OAAO/7B,UACrE+2M,KAAen7K,IAAWA,EAAQG,WAAWH,EAAQG,OAAO/7B,UAChE,IAAI82M,IAAiBC,GAAgBh/D,EAAe,KAG3C7lJ,EAAK8kN,iBAAiBz6P,EAAM82D,YAAarkH,EAAM8qH,SAAU,CAC1D,IAAIzyE,EAAW0wM,EACXg/D,IAAiBD,GAAczvQ,KAC9B0vQ,GAAgBD,GAAczvQ,IACnC6qD,EAAK+kN,2BAA2B,YAAa5vQ,GAG5B6qD,EAAKwpC,2BAA2B,SAChCr0F,GACb6qD,EAAK+kN,2BAA2B,QAAS5vQ,QASzDnqC,KAAK0uF,GAAG,gBAAgB,SAAU58F,EAAOkjG,GACrC,GAAIA,GAAQ31C,EAAMogG,gBAAgBzqD,EAAKzuC,QAAS,CAE5C,IAAIyxC,EAAUlmG,EAAMmmG,aAKpB,MAJa,EAAIniG,EAAOjB,SAASmjG,GAASl/E,QAAO,SAAUkhS,GACvD,OAAO,EAAIlkT,EAAOjB,SAASmjG,EAAQgiN,GAAK,WAAWx4Q,SAAS6d,EAAM82D,gBACnEzmH,OAAS,GAEC,OAUb,IALA,IACI09F,EAAS4H,EAAKn+D,kBAAkBs7G,YAEhC8nK,EAAiB,EAEZzqT,EAAI49F,EAAO19F,OAAS,EAAGF,GAAK,EAAGA,IAAK,CACzC,GAAIA,IAAM49F,EAAO19F,OANJ,GAMyB,OAEtC,IAAIiyN,EAASv0H,EAAO59F,GAEpB,GAAIwlG,EAAK8kN,iBAAiBz6P,EAAM82D,YAAawrG,EAAO/kG,SAEhD,MAGJq9L,GAAkB56P,EAAMs/E,uBAAuBgjF,GAAQ9iF,OAAO/7B,UAAY,EAAI,EAKlF9N,EAAK+kN,2BAA2B,YAAaE,OA0mDzD,SAASC,GAAW7lM,EAAQrf,EAAMljG,EAAO8rB,GAIrC,OAAOjkB,EAAW9E,QAAQ9D,UAAUiG,MAAK,WACrC,IAAImjT,EA6EZ,SAA+B9lM,EAAQviH,EAAOkjG,GAC1C,GAAIljG,EAAMysH,cAIN,OAAO,KAGX,IAAKlK,EAAOorC,gBAAgB3tJ,EAAMs2G,aAE9B,OAAO,KAGX,GAAwB,eAApBt2G,EAAMwlG,UAWN,OAAO,KAGX,IAAK+c,EAAO/hF,QACR,MAAM,IAAIzgC,MAAM,2FAGpB,OAAOwiH,EAAO/hF,QAAQkuN,aAAa1uP,EAAOkjG,GA5GdolN,CAAsB/lM,EAAQviH,EAAOkjG,GAE7D,OAAKmlN,GAILhC,GAA0BnjN,EAAMljG,EAAO0pH,EAAYE,YAC5Cy+L,EAAkBnjT,MAAK,WAC1BmhT,GAA0BnjN,EAAMljG,EAAO0pH,EAAYG,aAL5C,QAOZ3kH,MAAK,WACJ,IAAInG,OAAU,EAkBd,OAhBIwjH,EAAOk4H,YAKP17O,EAAUwjH,EAAOk4H,UAAU8tE,WAAWvoT,KACvBuiH,EAAOk4H,UAAU+tE,iBAAiBxoT,GAAOpC,OAAS,GAG7DyoT,GAA0BnjN,EAAMljG,EAAO0pH,EAAYI,QAItD/qH,IACDA,EAAUunT,GAAsB/jM,EAAQviH,IAErCjB,KACRmG,MAAK,SAAUwzF,GAQd,OANIwK,GACAA,EAAKulN,mBAAmBzoT,EAAO0pH,EAAYK,KAAMrxB,EAAIie,UAErD7qF,GACAA,EAAS,KAAM4sE,GAEZA,KACR,SAAUl2F,GAETinH,EAAS1mH,QAAQjD,MAAM,sBAAuB0C,EAAIkO,OAASlO,GAE3D,IAIIxC,EAAMF,MAAQ0C,EACd6jT,GAA0BnjN,EAAMljG,EAAO0pH,EAAYC,UAGnDnnH,EAAIxC,MAAQA,EAER8rB,GACAA,EAAStpB,GAEf,MAAOkmT,GACLj/L,EAAS1mH,QAAQjD,MAAM,8BAA+B4oT,EAAKh4S,OAASlO,GAExE,MAAMA,KA2Dd,SAASmmT,GAA+BpmM,EAAQ9tD,EAAQ+jH,GACpD,MAAkB,eAAdA,EACOA,EAEOj2D,EAAOorC,gBAAgBl5F,GACpB,mBAAqB+jH,EAG9C,SAAS6tI,GAA0BnjN,EAAMljG,EAAO4oT,GACxC1lN,EACAA,EAAKulN,mBAAmBzoT,EAAO4oT,GAE/B5oT,EAAMovH,UAAUw5L,GAIxB,SAAStC,GAAsB/jM,EAAQviH,GACnC,IAAI6oT,EAAQ7oT,EAAM8oT,OAAS9oT,EAAM8oT,OAASvmM,EAAOwmM,YAE7CC,EAAa,CACbC,QAASjpT,EAAMs2G,YACf4yM,WAAYlpT,EAAMirH,cAClBk+L,UAAWnpT,EAAM6rH,cACjBu9L,OAAQP,GAGRrgP,OAAO,EAEX,GAAIxoE,EAAM8rH,UAAW,CACjB,IAAIn0B,EAAe,kCACf33F,EAAM6rH,eAAiB7rH,EAAM6rH,cAAcjuH,OAAS,IACpD+5F,EAAe,6CAEnBnvB,EAAOklG,EAAMh2E,UAAUC,EAAcqxN,QAClC,GAAIhpT,EAAM8uH,cAAe,CAE5BtmD,EAAOklG,EAAMh2E,UADO,gDACkB,EAAI3zF,EAAShB,SAAS,CACxDsmT,gBAAiBrpT,EAAMA,MAAMwwH,SAC9Bw4L,SAEHxgP,EAAOklG,EAAMh2E,UAAU,wCAAyCsxN,GAGpE,OAAOzmM,EAAO+mM,MAAMh8F,mBAAc1sN,EAAW,MAAO4nE,OAAM5nE,EAAWZ,EAAMsrH,kBAAkBpmH,MAAK,SAAUwzF,GAExG,OADA+wB,EAAS1mH,QAAQgD,IAAI,iBAAmB/F,EAAMs2G,YAAc,kBAAoB5d,EAAIie,UAC7Eje,KAytBf,SAAS6wN,GAAkBhnM,EAAQ9tD,EAAQhzB,EAAQmkE,EAAYjrF,EAAQmR,GAC/D4hJ,EAAM31E,WAAWp9E,KACjBmR,EAAWnR,EAAOA,OAAS/Z,GAG/B,IAAI4nE,EAAOklG,EAAMh2E,UAAU,8BAA+B,CACtD8xN,SAAU/0P,EACVg1P,YAAa7jN,IAEjB,OAAO2c,EAAO+mM,MAAMh8F,cAAcxhM,EAAU,OAAQ08C,OAAM5nE,EAAW,CACjEoqH,QAASvpF,EACT9mB,OAAQA,IA6HhB,SAAS+uS,GAAc59R,EAAUy2F,EAAQ7jG,EAAM5T,GAC3C,IAAI09D,EAAOklG,EAAMh2E,UAAU,yBAA0B,CACjDiyN,QAASpnM,EAAO/gF,YAAYC,SAEhC,OAAO8gF,EAAO+mM,MAAMh8F,cAAcxhM,EAAUhhB,EAAQ09D,OAAM5nE,EAAW8d,GAiwDzE,SAASjN,GAAQqa,EAAUkG,EAAOxvB,GAC1BspB,GACAA,EAAStpB,GAEbwvB,EAAM9yB,OAAOsD,GAGjB,SAASwpB,GAASF,EAAUkG,EAAO0mE,GAC3B5sE,GACAA,EAAS,KAAM4sE,GAEnB1mE,EAAM/yB,QAAQy5F,GAGlB,SAASkxN,GAAyBrnM,GAa9B,OAZA,SAAgBsnM,GACZ,IAAI7pT,EAAQ,IAAImqH,EAAY0/L,GACxB7pT,EAAMysH,gBACNlK,EAAO2jM,UAAU4D,OAAO9pT,EAAO,CAAC,oBAChCA,EAAMusH,kBAAkBhK,EAAO/hF,UAEnC,IAAI0iE,EAAOqf,EAAOnf,QAAQpjG,EAAMs2G,aAIhC,OAHIpT,GACAA,EAAKgjN,UAAU4D,OAAO9pT,EAAO,CAAC,mBAE3BA,GA74If0tK,EAAMvsJ,SAAS05I,GAAcjgE,GAC7B8yE,EAAMp1E,OAAOuiE,GAAa/8J,UAAW2nT,EAAe3nT,WAOpD+8J,GAAa/8J,UAAUklL,YAAc,WACjC,GAAI90K,KAAK67S,eACL,MAAM,IAAIhqT,MAAM,+CAGpB,IAAIlB,EAAW,GAMf,OAJAA,EAASX,KAAKgQ,KAAKi0B,MAAM+/I,iBACrBh0K,KAAK81O,cACLnlP,EAASX,KAAKgQ,KAAK81O,aAAa9hE,iBAE7Br6K,EAAW9E,QAAQ/B,IAAInC,IAQlCg8J,GAAa/8J,UAAUumH,UAAY,WAC/B,OAAIn2G,KAAKszB,aAAetzB,KAAKszB,YAAYC,OAC9BvzB,KAAKszB,YAAYC,OAErB,MAOXo5H,GAAa/8J,UAAUqb,UAAY,WAC/B,OAAIjL,KAAKszB,aAAetzB,KAAKszB,YAAYC,OAC9BvzB,KAAKszB,YAAYC,OAAO92B,QAAQ,QAAS,IAE7C,MAOXkwJ,GAAa/8J,UAAUksT,mBAAqB,WACxC,OAAI97S,KAAKszB,aAAetzB,KAAKszB,YAAYC,OAC9BvzB,KAAKszB,YAAYC,OAAO16B,MAAM,KAAK,GAAG0wF,UAAU,GAEpD,MAOXojE,GAAa/8J,UAAUimC,YAAc,WACjC,OAAO71B,KAAK41B,UAOhB+2H,GAAa/8J,UAAUggI,aAAe,WAClC,OAAO5vH,KAAKs4S,eAShB3rJ,GAAa/8J,UAAUmsT,aAAe,SAAU5lR,GAC5Cn2B,KAAKytK,WAAat3I,GAQtBw2H,GAAa/8J,UAAUosT,aAAe,WAClC,OAAKh8S,KAAKi5S,SAGHj5S,KAAKi5S,SAAS+C,eAFV,MAafrvJ,GAAa/8J,UAAUqsT,iBAAmB,WACtC,OAAKj8S,KAAKi5S,SAGHj5S,KAAKi5S,SAASgD,mBAFV,MASftvJ,GAAa/8J,UAAUqmC,QAAU,WAC7B,OAAOj2B,KAAKm5S,UAOhBxsJ,GAAa/8J,UAAUssT,aAAe,WAClC,OAAOl8S,KAAKusO,WAQhB5/E,GAAa/8J,UAAU8mC,SAAW,SAAUT,GAKxCj2B,KAAKm5S,SAAWljR,GAQpB02H,GAAa/8J,UAAUusT,iBAAmB,WACtC,OAAOn8S,KAAKi5S,SAASkD,oBAQzBxvJ,GAAa/8J,UAAUwsT,oBAAsB,WACzC,OAAOp8S,KAAKs5S,mBAQhB3sJ,GAAa/8J,UAAUonC,oBAAsB,SAAUJ,GACnD52B,KAAKs5S,kBAAoB1iR,GAU7B+1H,GAAa/8J,UAAU88R,gBAAkB,WACrC,IAAI3uO,EAAS/9C,KAETq8S,EAAQ15S,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,IAAmBA,UAAU,GAEvE+iH,GAAM,IAAI9+D,MAAOC,UAErB,OAAI7mD,KAAK05S,sBAAwB2C,GACzB32L,EAAM1lH,KAAK05S,oBAAoB4C,YAC/B/gM,EAAS1mH,QAAQgD,IAAI,iCACd8B,EAAW9E,QAAQ9D,QAAQiP,KAAK05S,oBAAoB6C,eAK5Dv8S,KAAKo7S,MAAMh8F,mBAAc1sN,EAAW,MAAO,iBAAiB8sD,OAAM,SAAU9uD,GAE/E,OADA6qH,EAAS1mH,QAAQjD,MAAMlB,GAChB,QACRsG,MAAK,SAAUzD,GACTA,IAAGA,EAAI,IACZ,IAAIgpT,EAAehpT,EAAgB,cAAK,GAIpCipT,GAAU,EAAI1mT,EAAOjB,SAAS0nT,GAAc7sT,OAte5B,MAse6D,IAAwB,IAAhBmW,KAAK8tG,SAQ9F,OANA51D,EAAO27P,oBAAsB,CACzB6C,aAAcA,EACdD,WAAY52L,EAAM82L,GAGtBjhM,EAAS1mH,QAAQgD,IAAI,yBAA0B0kT,GACxCA,MAgBf5vJ,GAAa/8J,UAAU6kC,YAAa,EAAI9C,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASC,IAC3G,IAAIJ,EAAQ+qF,EACZ,OAAO5sF,EAAc78B,QAAQm/B,MAAK,SAAkB7F,GAChD,OACI,OAAQA,EAAStsB,KAAOssB,EAASzwB,MAC7B,KAAK,EACD,IAAI,EAAI40B,EAAQkhN,qBAAsB,CAClCrlN,EAASzwB,KAAO,EAChB,MAGJ,MAAM,IAAI7L,MAAM,uGAEpB,KAAK,EACD,IAAKmO,KAAKsyB,QAAS,CACfnE,EAASzwB,KAAO,EAChB,MAIJ,OADA69G,EAAS1mH,QAAQyF,KAAK,2DACf6zB,EAASgG,OAAO,UAE3B,KAAK,EACD,GAAIn0B,KAAK41O,cAAe,CACpBznN,EAASzwB,KAAO,EAChB,MAGJ,MAAM,IAAI7L,MAAM,sDAEpB,KAAK,EACD,GAAImO,KAAK81O,aAAc,CACnB3nN,EAASzwB,KAAO,EAChB,MAGJ,MAAM,IAAI7L,MAAM,qDAEpB,KAAK,EAKD,OAFA0pH,EAAS1mH,QAAQgD,IAAI,oCACrBs2B,EAASzwB,KAAO,IACT,EAAIi0B,EAAU5gC,SAASiP,KAAK4mI,UAAU7mI,QAEjD,KAAK,GAGD,GAAiB,QAFjBwzB,EAASvzB,KAAKm2G,aAEU,CACpBhoF,EAASzwB,KAAO,GAChB,MAGJ,MAAM,IAAI7L,MAAM,4GAEpB,KAAK,GACD,GAAwB,OAAlBmO,KAAK41B,SAAoB,CAC3BzH,EAASzwB,KAAO,GAChB,MAGJ,MAAM,IAAI7L,MAAM,gHAEpB,KAAK,GAQD,OAPAysH,EAAS,IAAIw4L,EAASjiT,QAAQmL,KAAMA,KAAK41O,cAAeriN,EAAQvzB,KAAK41B,SAAU51B,KAAKi0B,MAAOj0B,KAAK81O,aAAc91O,KAAK4mI,UAAW5mI,KAAK+1O,sBAGnI/1O,KAAKg4S,UAAU4D,OAAOt9L,EAAQ,CAAC,yBAA0B,oCAAqC,wBAAyB,oCAAqC,mBAE5J/C,EAAS1mH,QAAQgD,IAAI,yCACrBs2B,EAASzwB,KAAO,IACT,EAAIi0B,EAAU5gC,SAASutH,EAAOv+G,QAEzC,KAAK,GAEDC,KAAK+3S,WAAajB,EAASjiT,QAAQwlP,gBAInC/7H,EAAO27H,sBAAsBj6O,MAC7BA,KAAKsyB,QAAUgsF,EAEnB,KAAK,GACL,IAAK,MACD,OAAOnwF,EAASiF,UAG7BO,EAAS3zB,UAOhB2sJ,GAAa/8J,UAAU6sT,gBAAkB,WACrC,OAAwB,OAAjBz8S,KAAKsyB,SAShBq6H,GAAa/8J,UAAU0qP,oBAAsB,WACzC,OAAKt6O,KAAKsyB,QAGHtyB,KAAKsyB,QAAQgoN,sBAFT,MASf3tF,GAAa/8J,UAAU8sT,WAAa,WAChC,GAAqB,OAAjB18S,KAAKsyB,QACL,MAAM,IAAIzgC,MAAM,kCAGpB,OAAOmO,KAAKsyB,QAAQmoN,oBAYxB9tF,GAAa/8J,UAAUkrP,aAAe,SAAUC,EAASC,GACrD,OAAqB,OAAjBh7O,KAAKsyB,QACE34B,EAAW9E,QAAQ7D,OAAO,IAAIa,MAAM,mCAExCmO,KAAKsyB,QAAQwoN,aAAaC,EAASC,IAU9CruF,GAAa/8J,UAAUqrP,yBACfhoN,GAAQ,EAAItB,EAAU/0B,SAAQ,SAAU22B,GACxC,GAAqB,OAAjBvzB,KAAKsyB,QACL,MAAM,IAAIzgC,MAAM,kCAEpB,OAAOmO,KAAKsyB,QAAQ2oN,wBAAwB1nN,IAAW,MAGpD,SAAUgsF,GACb,OAAOtsF,EAAM/2B,MAAM8D,KAAM2C,aAYjCgqJ,GAAa/8J,UAAUypO,iBACf9oH,GAAQ,EAAI5+E,EAAU/0B,SAAQ,SAAU22B,EAAQqC,GAChD,GAAqB,OAAjB51B,KAAKsyB,QACL,MAAM,IAAIzgC,MAAM,kCAEpB,OAAOmO,KAAKsyB,QAAQ+mM,gBAAgB9lM,EAAQqC,IAAa,QAGtD,SAAUuuF,EAAK/J,GAClB,OAAO7J,EAAMr0G,MAAM8D,KAAM2C,aAiBjCgqJ,GAAa/8J,UAAU2pO,kBAAoB,SAAUhmM,EAAQqC,EAAUwiN,QAClD1lP,IAAb0lP,IACAA,GAAW,GAEf,IAAIp5L,EAAO23P,EAAuB32S,KAAMuzB,EAAQqC,EAAUwiN,EAAU,MAQpE,OAHI7kN,GAAUvzB,KAAKszB,YAAYC,QAC3BvzB,KAAKsyB,QAAQ6mN,iBAEVn6L,GAgBX2tG,GAAa/8J,UAAU+sT,iBAAmB,SAAUppR,EAAQqC,EAAUwlN,GAIlE,YAHgB1oP,IAAZ0oP,IACAA,GAAU,GAEPu7D,EAAuB32S,KAAMuzB,EAAQqC,EAAU,KAAMwlN,IAgBhEzuF,GAAa/8J,UAAUwjQ,eAAiB,SAAU7/N,EAAQqC,EAAU0iN,GAIhE,YAHc5lP,IAAV4lP,IACAA,GAAQ,GAELq+D,EAAuB32S,KAAMuzB,EAAQqC,EAAU,KAAM,KAAM0iN,IAGtE3rF,GAAa/8J,UAAU+rP,oBAAsB,SAAUpoN,EAAQjc,EAASwpJ,GACpE,GAAqB,OAAjB9gK,KAAKsyB,QACL,MAAM,IAAIzgC,MAAM,kCAEpB,OAAOmO,KAAKsyB,QAAQqpN,oBAAoBpoN,EAAQjc,EAASwpJ,IAY7DnU,GAAa/8J,UAAUusP,qBAAuB,SAAUv/O,EAAQ22B,EAAQqC,GACpE,GAAqB,OAAjB51B,KAAKsyB,QACL,MAAM,IAAIzgC,MAAM,kCAEpB,OAAOmO,KAAKsyB,QAAQ6pN,qBAAqBv/O,EAAQ22B,EAAQqC,IAU7D+2H,GAAa/8J,UAAU2qP,oCAAsC,SAAU7mP,GACnE,GAAqB,OAAjBsM,KAAKsyB,QACL,MAAM,IAAIzgC,MAAM,kCAEpBmO,KAAKsyB,QAAQioN,oCAAoC7mP,IAMrDi5J,GAAa/8J,UAAU4qP,oCAAsC,WACzD,GAAqB,OAAjBx6O,KAAKsyB,QACL,MAAM,IAAIzgC,MAAM,kCAEpB,OAAOmO,KAAKsyB,QAAQkoN,uCAUxB7tF,GAAa/8J,UAAU8sP,0BACf/jG,GAAQ,EAAIhnH,EAAU/0B,SAAQ,SAAU9K,GACxC,OAAKkO,KAAKsyB,QAIHtyB,KAAKsyB,QAAQoqN,yBAAyB5qP,GAHlC,QAMR,SAAU43D,GACb,OAAOivF,EAAMz8I,MAAM8D,KAAM2C,aAYjCgqJ,GAAa/8J,UAAUgtT,uBACftlF,GAAQ,EAAI3lM,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAAS2mF,EAASvoH,GAC5F,IAAI4yJ,EACJ,OAAOhzH,EAAc78B,QAAQm/B,MAAK,SAAmBwmF,GACjD,OACI,OAAQA,EAAU34G,KAAO24G,EAAU98G,MAC/B,KAAK,EAED,OADA88G,EAAU98G,KAAO,GACV,EAAIi0B,EAAU5gC,SAASiP,KAAK08O,yBAAyB5qP,IAEhE,KAAK,EAGD,GAFA4yJ,EAASlqC,EAAUllF,KAEP,CACRklF,EAAU98G,KAAO,EACjB,MAGJ,OAAO88G,EAAUrmF,OAAO,UAAU,GAEtC,KAAK,EACD,OAAOqmF,EAAUrmF,OAAO,SAAUuwH,EAAOgvD,cAE7C,KAAK,EACL,IAAK,MACD,OAAOl5F,EAAUpnF,UAG9BinF,EAAUr6G,UAGV,SAAUm/J,GACb,OAAOm4D,EAAMp7N,MAAM8D,KAAM2C,aAWjCgqJ,GAAa/8J,UAAUitT,mCAAqC,SAAU/qT,GAClE,OAAOA,EAAM2sH,0BAA0Bz+G,KAAKsyB,QAAStyB,KAAKm2G,cAS9Dw2C,GAAa/8J,UAAUktP,kBAAoB,SAAUv2L,EAAQl5C,GACzD,IAAKrN,KAAKsyB,QACN,MAAM,IAAIzgC,MAAM,kCAEpB,OAAOmO,KAAKsyB,QAAQwqN,kBAAkBv2L,EAAQl5C,IAQlDs/I,GAAa/8J,UAAU6vJ,gBAAkB,SAAUl5F,GAC/C,IAAIyuC,EAAOh1F,KAAKk1F,QAAQ3uC,GACxB,QAAKyuC,MAQIA,EAAKgC,aAAae,eAAe,oBAAqB,KAQxD/3F,KAAK4mI,UAAU6Y,gBAAgBl5F,KAW1ComG,GAAa/8J,UAAU6pO,oBAAsB,SAAUlzK,GACnD,IAAKvmD,KAAKsyB,QACN,MAAM,IAAIzgC,MAAM,kCAEpBmO,KAAKsyB,QAAQmnM,oBAAoBlzK,IAWrComG,GAAa/8J,UAAUouP,eAAiB,WACpC,OAAKh+O,KAAKsyB,QAGHtyB,KAAKsyB,QAAQ0rN,iBAFTrkP,EAAW9E,QAAQ7D,OAAO,IAAIa,MAAM,oCAanD86J,GAAa/8J,UAAU2uP,eAAiB,SAAUx1O,GAC9C,IAAK/I,KAAKsyB,QACN,MAAM,IAAIzgC,MAAM,kCAEpB,OAAOmO,KAAKsyB,QAAQisN,eAAex1O,IAYvC4jJ,GAAa/8J,UAAUupP,eAAiB,WACpC,OAAOn5O,KAAKsyB,QAAQ6mN,kBAOxBxsF,GAAa/8J,UAAU+oP,oBAAsB,WACzC,OAAO34O,KAAKo7S,MAAMh8F,mBAAc1sN,EAAW,MAAO,0BAAsBA,OAAWA,EAAW,CAAEk+B,OAAQqmR,EAAQn5F,kBAAmB9mN,MAAK,SAAUwzF,GAC9I,GAAIA,EAAIo0B,YAAcq1H,EAAOt0E,wBAAyB,CAClD,IAAIrrK,EAAM,6BAA+Bk2F,EAAIo0B,UAC7C,OAAOjlH,EAAW9E,QAAQ7D,OAAOsD,GAC9B,GAA+C,YAAzC,EAAIyB,EAASlB,SAAS21F,EAAIqvJ,YAA6BrvJ,EAAIqvJ,UAAUC,WAI9E,OAAOtvJ,EAFP,OAAO7wF,EAAW9E,QAAQ7D,OADf,mCAKhBwuD,OAAM,SAAU9uD,GACf,GAAkB,gBAAdA,EAAEy4G,QACF,OAAO,KAEP,MAAMz4G,MAelBi8J,GAAa/8J,UAAUgpP,mBAAqB,SAAUvjO,GAClD,OAAOrV,KAAKsyB,QAAQsmN,mBAAmBvjO,IAO3Cs3I,GAAa/8J,UAAUktT,oBAAsB,WACzC,GAAqB,OAAjB98S,KAAKsyB,QACL,MAAM,IAAIzgC,MAAM,kCAEpB,OAAO8kC,QAAQ32B,KAAKsyB,QAAQ2jN,YAShCtpF,GAAa/8J,UAAUkpP,gBAAkB,SAAUzjO,GAC/C,GAAqB,OAAjBrV,KAAKsyB,QACL,MAAM,IAAIzgC,MAAM,kCAGpBmO,KAAKsyB,QAAQ0jN,WAAa3gO,EACtBrV,KAAKsyB,QAAQ2jN,WAAWj2O,KAAKsyB,QAAQ2jN,UAAU8mE,OACnD/8S,KAAKsyB,QAAQ2jN,UAAY,IAAI/nO,EAAOulO,IAAIupE,aACxCh9S,KAAKsyB,QAAQ2jN,UAAUgnE,kBAAkB5nS,EAAKwkO,UAAUC,YAExD95O,KAAK4O,KAAK,0BAA0B,GAIpC5O,KAAKsyB,QAAQosN,yBAMjB/xF,GAAa/8J,UAAUmpP,iBAAmB,WACtC,GAAqB,OAAjB/4O,KAAKsyB,QACL,MAAM,IAAIzgC,MAAM,kCAGpBmO,KAAKsyB,QAAQ0jN,WAAa,KACtBh2O,KAAKsyB,QAAQ2jN,WAAWj2O,KAAKsyB,QAAQ2jN,UAAU8mE,OACnD/8S,KAAKsyB,QAAQ2jN,UAAY,KAEzBj2O,KAAK4O,KAAK,0BAA0B,IAcxC+9I,GAAa/8J,UAAUstT,yBACfjwE,GAAQ,EAAIt7M,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAAS8+I,EAASnoD,GAC5F,IAAI8yL,EAAYC,EAAWC,EAAUC,EACrC,OAAO5rR,EAAc78B,QAAQm/B,MAAK,SAAmB8qI,GACjD,OACI,OAAQA,EAAUj9J,KAAOi9J,EAAUphK,MAC/B,KAAK,EACD,GAAuB,OAAjBsC,KAAKsyB,QAAmB,CAC1BwsI,EAAUphK,KAAO,EACjB,MAGJ,MAAM,IAAI7L,MAAM,kCAEpB,KAAK,EAMD,GALAsrT,EAAa,IAAIjvS,EAAOulO,IAAI8pE,aAC5Bz+I,EAAUj9J,KAAO,EACjBu7S,OAAY,EACZC,EAAW,IAENhzL,EAAU,CACXy0C,EAAUphK,KAAO,GACjB,MAIJ,OADAohK,EAAUphK,KAAO,GACV,EAAIi0B,EAAU5gC,UAAS,EAAIimT,EAAiBwG,iBAAiBnzL,IAExE,KAAK,EACDizL,EAAUx+I,EAAUxpI,KAEpB8nR,EAAYD,EAAWM,sBAAsBH,EAAQtpT,KACrDqpT,EAASK,iBAAmBJ,EAAQK,KACpCN,EAASO,uBAAyBN,EAAQ/7Q,WAC1Cu9H,EAAUphK,KAAO,GACjB,MAEJ,KAAK,GACD0/S,EAAYD,EAAWU,eAE3B,KAAK,GAID,OAFAR,EAASvjE,WAAasjE,EAEft+I,EAAU3qI,OAAO,SAAU,CAC9ByqF,UAAWq1H,EAAOt0E,wBAClBk6E,UAAWwjE,EACXS,cAAc,EAAI/G,EAAagH,mBAAmBZ,EAAWa,qBAGrE,KAAK,GAID,OAHAl/I,EAAUj9J,KAAO,GAEjBs7S,EAAWJ,OACJj+I,EAAUrzD,OAAO,IAE5B,KAAK,GACL,IAAK,MACD,OAAOqzD,EAAU1rI,UAG9Bo/I,EAAUxyK,KAAM,CAAC,CAAC,EAAE,CAAE,GAAI,UAG1B,SAAUo/J,GACb,OAAO6tE,EAAM/wO,MAAM8D,KAAM2C,aAWjCgqJ,GAAa/8J,UAAUquT,uBAAyB,SAAU5oS,GACtD,IAAI+9C,EAASpzD,KAEb,GAAqB,OAAjBA,KAAKsyB,QACL,MAAM,IAAIzgC,MAAM,kCAGpB,IAAI1C,EAAO,CACPyvH,UAAWvpG,EAAKupG,UAChBi7H,UAAWxkO,EAAKwkO,WAEpB,OAAO75O,KAAKsyB,QAAQ6gN,YAAYhkP,EAAK0qP,WAAW7iP,MAAK,WACjD,OAAOo8D,EAAOgoP,MAAMh8F,mBAAc1sN,EAAW,OAAQ,0BAAsBA,EAAWvD,EAAM,CAAEyhC,OAAQqmR,EAAQn5F,qBAC/G9mN,MAAK,SAAUwzF,GAMd,OALAp3B,EAAO0lL,gBAAgB,CACnBl6H,UAAWvpG,EAAKupG,UAChBi7H,UAAWxkO,EAAKwkO,UAChB71N,QAASwmE,EAAIxmE,UAEVwmE,MAIfmiE,GAAa/8J,UAAUsuT,uBAAyB,SAAUl6R,GACtD,GAAqB,OAAjBhkB,KAAKsyB,QACL,MAAM,IAAIzgC,MAAM,kCAMhBmO,KAAKsyB,QAAQ0jN,YAAch2O,KAAKsyB,QAAQ0jN,WAAWhyN,UAAYA,GAC/DhkB,KAAK+4O,mBAGT,IAAIz+K,EAAOklG,EAAMh2E,UAAU,8BAA+B,CACtD20N,SAAUn6R,IAGd,OAAOhkB,KAAKo7S,MAAMh8F,mBAAc1sN,EAAW,SAAU4nE,OAAM5nE,OAAWA,EAAW,CAAEk+B,OAAQqmR,EAAQn5F,mBAGvGnxD,GAAa/8J,UAAUwuT,mBAAqB,SAAU73P,EAAQu2G,EAAW94I,GAerE,MAAO,CACHs2C,UAdc5nE,IAAdoqK,EACO0C,EAAMh2E,UAAU,qCAAsC,CACzDuxN,QAASx0P,EACT83P,WAAYvhJ,SAEEpqK,IAAX6zD,EACAi5G,EAAMh2E,UAAU,0BAA2B,CAC9CuxN,QAASx0P,IAGN,kBAKP+3P,eAHwB5rT,IAAZsxB,OAAwBtxB,EAAY,CAAEsxB,QAASA,KAgBnE2oI,GAAa/8J,UAAU8vP,cAAgB,SAAUn5L,EAAQu2G,EAAW94I,EAAS70B,GACzE,GAAqB,OAAjB6Q,KAAKsyB,QACL,MAAM,IAAIzgC,MAAM,kCAGpB,IAAIyoE,EAAOt6D,KAAKo+S,mBAAmB73P,EAAQu2G,EAAW94I,GACtD,OAAOhkB,KAAKo7S,MAAMh8F,mBAAc1sN,EAAW,MAAO4nE,EAAKA,KAAMA,EAAKgkP,UAAWnvT,EAAM,CAAEyhC,OAAQqmR,EAAQn5F,mBAOzGnxD,GAAa/8J,UAAUswP,mCAAoC,EAAIvuN,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAAS2lN,IAClI,OAAO3nN,EAAc78B,QAAQm/B,MAAK,SAAmB0lN,GACjD,OACI,OAAQA,EAAU73O,KAAO63O,EAAUh8O,MAC/B,KAAK,EACD,GAAuB,OAAjBsC,KAAKsyB,QAAmB,CAC1BonN,EAAUh8O,KAAO,EACjB,MAGJ,MAAM,IAAI7L,MAAM,kCAEpB,KAAK,EAED,OADA6nP,EAAUh8O,KAAO,GACV,EAAIi0B,EAAU5gC,SAASiP,KAAKsyB,QAAQ4tN,qCAE/C,KAAK,EACL,IAAK,MACD,OAAOxG,EAAUtmN,UAG9BimN,EAAUr5O,UAQjB2sJ,GAAa/8J,UAAUywP,8BAAgC,WACnD,GAAqB,OAAjBrgP,KAAKsyB,QACL,MAAM,IAAIzgC,MAAM,kCAGpB,OAAOmO,KAAKsyB,QAAQ+tN,iCAGxB1zF,GAAa/8J,UAAU2uT,mBAAqB,SAAUC,GAClD,IAEI,OADA,EAAIzH,EAAa0H,mBAAmBD,IAC7B,EACT,MAAO9tT,GACL,OAAO,IAIfi8J,GAAa+xJ,6BAA+B,+BAE5C/xJ,GAAa/8J,UAAU+uT,8BACf/pE,GAAQ,EAAIjjN,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASk/M,EAASvoH,EAAU0tG,EAAc6mF,EAAiB5oE,GACrI,IAAI6oE,EACJ,OAAOntR,EAAc78B,QAAQm/B,MAAK,SAAmB++M,GACjD,OACI,OAAQA,EAAUlxO,KAAOkxO,EAAUr1O,MAC/B,KAAK,EAED,OADAq1O,EAAUr1O,KAAO,GACV,EAAIi0B,EAAU5gC,UAAS,EAAIimT,EAAiB8H,sBAAsB9oE,EAAY3rH,IAEzF,KAAK,EAED,OADAw0L,EAAU9rE,EAAUz9M,KACby9M,EAAU5+M,OAAO,SAAUn0B,KAAK++S,kBAAkBF,EAAS9mF,EAAc6mF,EAAiB5oE,IAErG,KAAK,EACL,IAAK,MACD,OAAOjD,EAAU3/M,UAG9Bw/M,EAAU5yO,UAGV,SAAUq/J,EAAMC,EAAMgD,EAAMC,GAC/B,OAAOqyE,EAAM14O,MAAM8D,KAAM2C,aAIjCgqJ,GAAa/8J,UAAUovT,gCAAkC,SAAUR,EAAazmF,EAAc6mF,EAAiB5oE,GAC3G,IAAI6oE,GAAU,EAAI9H,EAAa0H,mBAAmBD,GAClD,OAAOx+S,KAAK++S,kBAAkBF,EAAS9mF,EAAc6mF,EAAiB5oE,IAG1ErpF,GAAa/8J,UAAUmvT,kBAAoB,SAAUF,EAAS9mF,EAAc6mF,EAAiB5oE,GACzF,IAAInwJ,EAAS7lF,KAEb,GAAqB,OAAjBA,KAAKsyB,QACL,MAAM,IAAIzgC,MAAM,kCAEpB,IAAIotT,EAAgB,EAChBl2S,EAAO,GAEPuxD,EAAOt6D,KAAKo+S,mBAAmBrmF,EAAc6mF,EAAiB5oE,EAAWhyN,SAEzEm5R,EAAa,IAAIjvS,EAAOulO,IAAI8pE,aAC5B2B,OAAe,EACnB,IACIA,EAAe/B,EAAWM,sBAAsBoB,GAClD,MAAOnuT,GAEL,MADAysT,EAAWJ,OACLrsT,EAMV,OAAIwuT,IAAiBlpE,EAAW6D,UAAUC,WAC/BngP,EAAW9E,QAAQ7D,OAAO,CAAEm4G,QAASwjD,GAAa+xJ,+BAGtD1+S,KAAKo7S,MAAMh8F,mBAAc1sN,EAAW,MAAO4nE,EAAKA,KAAMA,EAAKgkP,eAAW5rT,EAAW,CAAEk+B,OAAQqmR,EAAQn5F,kBAAmB9mN,MAAK,SAAUwzF,GACxI,GAAIA,EAAI0vD,MAAO,CACX,IAAIn0F,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBvzD,EAEtB,IACI,IAAK,IAAgFwzD,EAA5EC,GAAa,EAAIxwD,EAAcd,UAAS,EAAI0/F,EAAU1/F,SAAS21F,EAAI0vD,UAAmBn0F,GAA8BG,EAASC,EAAWzoD,QAAQC,MAAOooD,GAA6B,EAAM,CAC/L,IAAI0sM,GAAe,EAAIn0M,EAAgBzpD,SAASqxD,EAAOxyD,MAAO,GAC1D6yD,EAASksM,EAAa,GACtB51C,EAAW41C,EAAa,GAE5B,GAAK51C,EAAS7+C,SAAd,CAEAihJ,IAAiB,EAAInpT,EAAOjB,SAASgoN,EAAS7+C,UAAUtuK,OACxD,IAAIyvT,EAAW1H,GAAwB56F,EAAS7+C,SAAUm/I,EAAY52P,GAClEmB,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBl1D,EAEtB,IACI,IAAK,IAAuDm1D,EAAnDC,GAAa,EAAInyD,EAAcd,SAASsqT,KAAqBz3P,GAA8BG,EAASC,EAAWpqD,QAAQC,MAAO+pD,GAA6B,EAAM,CACtK,IAAIrtD,EAAIwtD,EAAOn0D,MAEf2G,EAAEguG,QAAU9hD,EACZx9C,EAAK/Y,KAAKqK,IAEhB,MAAO/F,GACLqzD,GAAqB,EACrBC,EAAkBtzD,EACpB,QACE,KACSozD,GAA8BI,EAAWjqD,QAC1CiqD,EAAWjqD,SAEjB,QACE,GAAI8pD,EACA,MAAMC,MAKxB,MAAOtzD,GACL0xD,GAAqB,EACrBC,EAAkB3xD,EACpB,QACE,KACSyxD,GAA8BI,EAAWtoD,QAC1CsoD,EAAWtoD,SAEjB,QACE,GAAImoD,EACA,MAAMC,SAIf,GAAIukC,EAAIwzE,SACXihJ,GAAgB,EAAInpT,EAAOjB,SAAS21F,EAAIwzE,UAAUtuK,OAClDqZ,EAAO0uS,GAAwBjtN,EAAIwzE,SAAUm/I,EAAYplF,OACtD,CACHknF,EAAgB,EAChB,IACI,IAAIjrT,EAAM4jT,GAAuBptN,EAAK2yN,GACtCnpT,EAAIq0G,QAAU0vH,EACd/jO,EAAI6qH,WAAa+/L,EACjB71S,EAAK/Y,KAAKgE,GACZ,MAAOtD,GACL6qH,EAAS1mH,QAAQgD,IAAI,0CAI7B,OAAOguF,EAAO04J,eAAex1O,MAC9B/R,MAAK,WACJ,OAAO6uF,EAAOvzD,QAAQ0mN,uBAAuBkmE,MAC9CloT,MAAK,WACJ,MAAO,CAAE69I,MAAOoqK,EAAeG,SAAUr2S,EAAKrZ,WAC/C89G,SAAQ,WACP2vM,EAAWJ,WAInBpwJ,GAAa/8J,UAAUyvT,qBAAuB,SAAU94P,EAAQu2G,EAAW94I,GACvE,GAAqB,OAAjBhkB,KAAKsyB,QACL,MAAM,IAAIzgC,MAAM,kCAGpB,IAAIyoE,EAAOt6D,KAAKo+S,mBAAmB73P,EAAQu2G,EAAW94I,GACtD,OAAOhkB,KAAKo7S,MAAMh8F,mBAAc1sN,EAAW,SAAU4nE,EAAKA,KAAMA,EAAKgkP,eAAW5rT,EAAW,CAAEk+B,OAAQqmR,EAAQn5F,mBAejHnxD,GAAa/8J,UAAU6kT,SAAW,SAAUp/M,GACxC,OAAOr1F,KAAKi0B,MAAMwgR,SAASp/M,IAO/Bs3D,GAAa/8J,UAAU8kT,UAAY,WAC/B,OAAO10S,KAAKi0B,MAAMygR,aAQtB/nJ,GAAa/8J,UAAU+wJ,eAAiB,SAAU/iI,GAC9C,OAAO5d,KAAKo7S,MAAMh8F,cAAcxhM,EAAU,MAAO,eAAWlrB,OAAWA,EAAW,CAC9Ek+B,OAAQqmR,EAAQh5F,mBAexBtxD,GAAa/8J,UAAUslG,QAAU,SAAU3uC,GACvC,OAAOvmD,KAAKi0B,MAAMihE,QAAQ3uC,IAO9BomG,GAAa/8J,UAAUw8N,SAAW,WAC9B,OAAOpsN,KAAKi0B,MAAMm4L,YAUtBz/D,GAAa/8J,UAAU0vT,gBAAkB,WACrC,IAAIC,EAAWv/S,KAAKi0B,MAAMm4L,WAEtBozF,EAAgB,IAAI/wI,EAAM55K,QAC1Bk1D,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBv3D,EAEtB,IACI,IAAK,IAAuDw3D,EAAnDC,GAAa,EAAIx0D,EAAcd,SAAS0qT,KAAqBx1P,GAA8BG,EAASC,EAAWzsD,QAAQC,MAAOosD,GAA6B,EAAM,CACtK,IAEIt7C,EAFIy7C,EAAOx2D,MAEKsjG,aAAae,eAAe,gBAAiB,IAEjE,GAAItpF,EAAa,CACb,IAAIgxS,EAAchxS,EAAYwpF,aAA0B,YACpDwnN,GAAeA,EAAqB,SACpCD,EAAc1rQ,IAAI2rQ,EAAqB,WAIrD,MAAOnrT,GACL01D,GAAqB,EACrBC,EAAkB31D,EACpB,QACE,KACSy1D,GAA8BI,EAAWtsD,QAC1CssD,EAAWtsD,SAEjB,QACE,GAAImsD,EACA,MAAMC,GAKlB,OAAOs1P,EAASzmS,QAAO,SAAUvlB,GAE7B,OADgBA,EAAEyjG,aAAae,eAAe,mBAAoB,MACjDynN,EAAchnS,IAAIjlB,EAAEgzD,YAa7ComG,GAAa/8J,UAAUynH,QAAU,SAAU9jF,GACvC,OAAOvzB,KAAKi0B,MAAMojF,QAAQ9jF,IAO9Bo5H,GAAa/8J,UAAUolT,SAAW,WAC9B,OAAOh1S,KAAKi0B,MAAM+gR,YActBroJ,GAAa/8J,UAAUymH,eAAiB,SAAUi0D,EAAWo1I,EAAU9hS,GACnE,IAAI08C,EAAOklG,EAAMh2E,UAAU,mCAAoC,CAC3DiyN,QAASz7S,KAAKszB,YAAYC,OAC1BosR,MAAOr1I,IAEX,OAAOtqK,KAAKo7S,MAAMh8F,cAAcxhM,EAAU,MAAO08C,OAAM5nE,EAAWgtT,IAQtE/yJ,GAAa/8J,UAAUylH,eAAiB,SAAUi1D,GAC9C,OAAOtqK,KAAKi0B,MAAMohF,eAAei1D,IAOrC3d,GAAa/8J,UAAU2oO,gBAAkB,WACrC,IAAIzmO,EAAQkO,KAAKq1G,eAAe,uBAChC,OAAKvjH,GAAUA,EAAMmmG,cAAiBnmG,EAAMmmG,aAA4B,eACjE,EAAIniG,EAAOjB,SAAS/C,EAAMmmG,aAA4B,eADqB,IAWtF00D,GAAa/8J,UAAU4oO,gBAAkB,SAAUuiB,EAASn9N,GACxD,IAAIo6E,EAAU,CAAE4nN,cAAe,IAI/B,OAHA7kE,EAAQ7hP,KAAI,SAAUkG,GAClB,OAAO44F,EAAQ4nN,cAAcxgT,GAAK,MAE/BY,KAAKq2G,eAAe,sBAAuBre,EAASp6E,IAQ/D+uI,GAAa/8J,UAAUiwT,cAAgB,SAAUtsR,GAC7C,OAAmD,IAA5CvzB,KAAKu4N,kBAAkBn/N,QAAQm6B,IAqB1Co5H,GAAa/8J,UAAUs5G,SAAW,SAAUnT,EAAevlF,EAAMoN,GAE7D,GAAI4hJ,EAAM31E,WAAWr5E,GACjB,MAAM,IAAI3e,MAAM,8CAGEa,KADtB8d,EAAOA,GAAQ,IACNsvS,WACLtvS,EAAKsvS,UAAW,GAGpB,IAAI9qN,EAAOh1F,KAAKk1F,QAAQa,GACxB,GAAIf,GAAQA,EAAKwlD,mBAAmBx6I,KAAKszB,YAAYC,OAAQ,QACzD,OAAO55B,EAAW9E,QAAQ9D,QAAQikG,GAGtC,IAAI+qN,EAAepmT,EAAW9E,QAAQ9D,UAElCyf,EAAKwvS,gBACLD,EAAe//S,KAAKo7S,MAAMt7F,qBAAgBptN,EAAW,OAAQ8d,EAAKwvS,cAAe,CAAEzzJ,KAAMvsJ,KAAKszB,YAAYC,UAG9G,IAAIswB,EAAc,GACdrzC,EAAKmnN,aACL9zK,EAAyB,YAAIrzC,EAAKmnN,YAGtC,IAAIsoF,EAAU,CAAEh8P,mBAAoB,CAAEi8P,YAAa,WAE/Cp8R,EAAQnqB,EAAW9E,QAAQivB,QAE3BnlB,EAAOqB,KAuBX,OAtBA+/S,EAAa/oT,MAAK,SAAUmpT,GACxB,IAAIhxT,EAAO,GACPgxT,IACAhxT,EAAKixT,mBAAqBD,GAG9B,IAAI7lP,EAAOklG,EAAMh2E,UAAU,gBAAiB,CAAE62N,QAAStqN,IACvD,OAAOp3F,EAAKy8S,MAAMh8F,mBAAc1sN,EAAW,OAAQ4nE,EAAMzW,EAAa10D,EAAM8wT,MAC7EjpT,MAAK,SAAUwzF,GACd,IAAIjkC,EAASikC,EAAI6d,QAEbrT,EADU,IAAIsiN,EAAQ34S,EAAMA,EAAK2hT,aAClB75F,WAAWlgK,GAK9B,OAJI/1C,EAAKsvS,SAIFnmT,EAAW9E,QAAQ9D,QAAQikG,MACnCr3F,MAAK,SAAUq3F,GACdl3E,GAASF,EAAUkG,EAAOkxE,MAC3B,SAAU1gG,GACTiP,GAAQqa,EAAUkG,EAAOxvB,MAEtBwvB,EAAMjzB,SAWjB87J,GAAa/8J,UAAUokQ,YAAc,SAAUliQ,EAAOkjG,GAElD,OADAmjN,GAA0BnjN,EAAMljG,EAAO0pH,EAAYG,SAC5Cu+L,GAAWl6S,KAAMg1F,EAAMljG,IASlC66J,GAAa/8J,UAAU24K,mBAAqB,SAAUz2K,GAClD,GAAI,CAAC0pH,EAAYI,OAAQJ,EAAYC,UAAUriH,QAAQtH,EAAMiL,QAAU,EACnE,MAAM,IAAIlL,MAAM,sCAAwCC,EAAMiL,QAI9DiD,KAAKusO,WACLvsO,KAAKusO,UAAUg0E,qBAAqBzuT,GAMxCqmT,GADWn4S,KAAKk1F,QAAQpjG,EAAMs2G,aACEt2G,EAAO0pH,EAAYM,YAUvD6wC,GAAa/8J,UAAUsnO,YAAc,SAAU3wK,EAAQ/zD,EAAMorB,GACzD,OAAO5d,KAAKw2G,eAAejwD,EAAQ,cAAe,CAAE/zD,KAAMA,QAAQE,EAAWkrB,IAUjF+uI,GAAa/8J,UAAUinO,aAAe,SAAUtwK,EAAQ0nH,EAAOrwJ,GAC3D,OAAO5d,KAAKw2G,eAAejwD,EAAQ,eAAgB,CAAE0nH,MAAOA,QAASv7K,EAAWkrB,IASpF+uI,GAAa/8J,UAAU4wT,YAAc,SAAUj6P,EAAQ3oC,GACnD,IAAI08C,EAAOklG,EAAMh2E,UAAU,oCAAqC,CAC5DiyN,QAASz7S,KAAKszB,YAAYC,OAC1BwnR,QAASx0P,IAEb,OAAOvmD,KAAKo7S,MAAMh8F,cAAcxhM,EAAU,MAAO08C,OAAM5nE,IAW3Di6J,GAAa/8J,UAAU6wT,WAAa,SAAUl6P,EAAQ06C,EAASy/M,EAAU9iS,GACrE,IAAI08C,EAAOklG,EAAMh2E,UAAU,wCAAyC,CAChEiyN,QAASz7S,KAAKszB,YAAYC,OAC1BwnR,QAASx0P,EACTo6P,KAAM1/M,IAEV,OAAOjhG,KAAKo7S,MAAMh8F,cAAcxhM,EAAU,MAAO08C,OAAM5nE,EAAWguT,IAUtE/zJ,GAAa/8J,UAAUgxT,cAAgB,SAAUr6P,EAAQ06C,EAASrjF,GAC9D,IAAI08C,EAAOklG,EAAMh2E,UAAU,wCAAyC,CAChEiyN,QAASz7S,KAAKszB,YAAYC,OAC1BwnR,QAASx0P,EACTo6P,KAAM1/M,IAEV,OAAOjhG,KAAKo7S,MAAMh8F,cAAcxhM,EAAU,SAAU08C,OAAM5nE,OAAWA,IAWzEi6J,GAAa/8J,UAAUixT,mBAAqB,SAAUt6P,EAAQ+jH,EAAWtyE,EAASp6E,GAC9E,IAAI08C,EAAOklG,EAAMh2E,UAAU,iDAAkD,CACzEiyN,QAASz7S,KAAKszB,YAAYC,OAC1BwnR,QAASx0P,EACTo5P,MAAOr1I,IAEX,OAAOtqK,KAAKo7S,MAAMh8F,cAAcxhM,EAAU,MAAO08C,OAAM5nE,EAAWslG,IAatE20D,GAAa/8J,UAAU+oO,cAAgB,SAAUpyK,EAAQhzB,EAAQilE,EAAY1mG,EAAO8rB,GAChF,IAAIo6E,EAAU,CACVE,MAAO,IAEPpmG,GAA6B,wBAApBA,EAAMwlG,YAGfU,EAAUwnE,EAAMzqI,SAASjjC,EAAMmmG,eAEnCD,EAAQE,MAAM3kE,GAAUilE,EACxB,IAAIl+B,EAAOklG,EAAMh2E,UAAU,2CAA4C,CACnEuxN,QAASx0P,IAEb,OAAOvmD,KAAKo7S,MAAMh8F,cAAcxhM,EAAU,MAAO08C,OAAM5nE,EAAWslG,IAYtE20D,GAAa/8J,UAAUu3K,UAAY,SAAU5gH,EAAQ+jH,EAAWtyE,EAAS2iN,EAAO/8R,GAC5E,OAAO5d,KAAK8gT,mBAAmBv6P,EAAQ,CACnCn0D,KAAMk4K,EACNtyE,QAASA,GACV2iN,EAAO/8R,IAUd+uI,GAAa/8J,UAAUkxT,mBAAqB,SAAUv6P,EAAQw6P,EAAapG,EAAO/8R,GAC1E4hJ,EAAM31E,WAAW8wN,KACjB/8R,EAAW+8R,EAAMA,OAAQjoT,GAGxBioT,IACDA,EAAQ36S,KAAK66S,aAMjB,IAAI/tD,EAAa,IAAI7wI,GAAY,EAAIpmH,EAAShB,SAASksT,EAAa,CAChEt4M,SAAU,IAAMliD,EAAS,IAAMo0P,EAC/B79L,QAAS98G,KAAKszB,YAAYC,OAC1B80E,QAAS9hD,EACT02D,kBAAkB,IAAIr2D,MAAOC,aAG7BmuC,EAAOh1F,KAAKk1F,QAAQ3uC,GAMpBg+J,EAAWuoC,EAAWzqI,kBAC1B,GAAIkiG,GAAYA,EAAS9qN,WAAW,KAAM,CACtC,IAAInH,EAAS0iG,EAAKi8D,mBAAmB33J,MAAK,SAAU5I,GAChD,OAAOA,EAAEksH,UAAY2nG,KAEzBjyN,EAAOs8F,KAAK,8BAA8B,WACtCk+J,EAAWtqI,mBAAmBlwH,EAAOsqH,YAI7C,IAAIxqH,EAAO06P,EAAWx1J,UActB,OAbAikB,EAAS1mH,QAAQgD,IAAI,qBAAuBzF,EAAO,OAASm0D,EAAS,eAAiBo0P,GAEtF7tD,EAAW8tD,OAASD,EACpB7tD,EAAW5rI,UAAU1F,EAAYG,SAG7B3mB,GACAA,EAAKgsN,gBAAgBl0D,EAAY6tD,GAMjC7tD,EAAW/vP,SAAWy+G,EAAYC,SAC3B9hH,EAAW9E,QAAQ7D,OAAO,IAAIa,MAAM,+CAGxCqoT,GAAWl6S,KAAMg1F,EAAM83J,EAAYlvO,IA4L9C+uI,GAAa/8J,UAAUqxT,YAAc,SAAU16P,EAAQ0vC,EAAS0kN,EAAO/8R,GACnE,OAAO5d,KAAK8gT,mBAAmBv6P,EAAQ,CACnCn0D,KAAM,mBACN4lG,QAAS,GACTsqB,QAASrsB,GACV0kN,EAAO/8R,IAWd+uI,GAAa/8J,UAAU2yJ,YAAc,SAAUh8F,EAAQyxC,EAAS2iN,EAAO/8R,GAInE,OAHI4hJ,EAAM31E,WAAW8wN,KACjB/8R,EAAW+8R,EAAMA,OAAQjoT,GAEtBsN,KAAKmnK,UAAU5gH,EAAQ,iBAAkByxC,EAAS2iN,EAAO/8R,IAWpE+uI,GAAa/8J,UAAUkmO,gBAAkB,SAAUvvK,EAAQzpD,EAAM69S,EAAO/8R,GACpE,IAAIo6E,EAAUgzI,EAAegpE,gBAAgBl3S,GAC7C,OAAOkD,KAAKuiJ,YAAYh8F,EAAQyxC,EAAS2iN,EAAO/8R,IAWpD+uI,GAAa/8J,UAAUsxT,WAAa,SAAU36P,EAAQzpD,EAAM69S,EAAO/8R,GAC/D,IAAIo6E,EAAUgzI,EAAeipE,WAAWn3S,GACxC,OAAOkD,KAAKuiJ,YAAYh8F,EAAQyxC,EAAS2iN,EAAO/8R,IAWpD+uI,GAAa/8J,UAAUuxT,iBAAmB,SAAU56P,EAAQzpD,EAAM69S,EAAO/8R,GACrE,IAAIo6E,EAAUgzI,EAAekpE,iBAAiBp3S,GAC9C,OAAOkD,KAAKuiJ,YAAYh8F,EAAQyxC,EAAS2iN,EAAO/8R,IAYpD+uI,GAAa/8J,UAAUwxT,iBAAmB,SAAU76P,EAAQ5pD,EAAK0Y,EAAMvb,EAAM8jB,GACrE4hJ,EAAM31E,WAAW/vF,KACjB8jB,EAAW9jB,EAAKA,OAAOpH,GAEtBoH,IACDA,EAAO,SAEX,IAAIk+F,EAAU,CACVomB,QAAS,UACTzhH,IAAKA,EACL0Y,KAAMA,EACNvY,KAAMhD,GAEV,OAAOkG,KAAKuiJ,YAAYh8F,EAAQyxC,EAASp6E,IAY7C+uI,GAAa/8J,UAAUgxJ,mBAAqB,SAAUr6F,EAAQ5pD,EAAK0Y,EAAMvb,EAAM8jB,GACvE4hJ,EAAM31E,WAAW/vF,KACjB8jB,EAAW9jB,EAAKA,OAAOpH,GAEtBoH,IACDA,EAAO,WAEX,IAAIk+F,EAAU,CACVr7F,IAAKA,EACL0Y,KAAMA,EACNvY,KAAMhD,GAEV,OAAOkG,KAAKmnK,UAAU5gH,EAAQ,YAAayxC,EAASp6E,OAAUlrB,IAWlEi6J,GAAa/8J,UAAU+pO,gBAAkB,SAAUpzK,EAAQzpD,EAAM+2S,EAAUj2R,GACvE,IAAIo6E,EAAUgzI,EAAe4oE,gBAAgB92S,EAAM+2S,GACnD,OAAO7zS,KAAKuiJ,YAAYh8F,EAAQyxC,EAASp6E,IAW7C+uI,GAAa/8J,UAAUyxT,eAAiB,SAAU96P,EAAQzpD,EAAM+2S,EAAUj2R,GACtE,IAAIo6E,EAAUgzI,EAAe8oE,eAAeh3S,EAAM+2S,GAClD,OAAO7zS,KAAKuiJ,YAAYh8F,EAAQyxC,EAASp6E,IAW7C+uI,GAAa/8J,UAAUkqO,cAAgB,SAAUvzK,EAAQzpD,EAAM+2S,EAAUj2R,GACrE,IAAIo6E,EAAUgzI,EAAe+oE,cAAcj3S,EAAM+2S,GACjD,OAAO7zS,KAAKuiJ,YAAYh8F,EAAQyxC,EAASp6E,IAY7C+uI,GAAa/8J,UAAU0xT,YAAc,SAAUxvT,EAAOyvT,EAAa/wS,EAAMoN,GAMrE,GALoB,mBAATpN,IACPoN,EAAWpN,EACXA,EAAO,IAGPxQ,KAAKi2B,UACL,OAAOt8B,EAAW9E,QAAQ9D,QAAQ,IAGtC,IAAIupE,EAAOklG,EAAMh2E,UAAU,+CAAgD,CACvEuxN,QAASjpT,EAAMs2G,YACfo5M,aAAcD,EACdE,SAAU3vT,EAAM8qH,UAEhB/rH,EAAUmP,KAAKo7S,MAAMh8F,cAAcxhM,EAAU,OAAQ08C,OAAM5nE,EAAW8d,GAAQ,IAE9EwkF,EAAOh1F,KAAKk1F,QAAQpjG,EAAMs2G,aAI9B,OAHIpT,GACAA,EAAK0sN,qBAAqB1hT,KAAKszB,YAAYC,OAAQzhC,EAAOyvT,GAEvD1wT,GAcX87J,GAAa/8J,UAAU+xT,iBACflkE,GAAS,EAAI9rN,EAAU/0B,SAAQ,SAAU9K,EAAO0e,EAAMoN,GAClC,mBAATpN,IACPoN,EAAWpN,EACXA,EAAO,IAENA,IAAMA,EAAO,IAElB,IAAIylF,EAAUnkG,EAAM8qH,QAChB5nB,EAAOh1F,KAAKk1F,QAAQpjG,EAAMs2G,aAC9B,GAAIpT,GAAQA,EAAK4sN,gBAAgB3rN,GAC7B,MAAM,IAAIpkG,MAAM,+CAAiDokG,EAAU,KAG/E,IAAI4rN,EAAc,CACd,WAAYlrR,QAAQnmB,EAAKytH,SAG7B,OAAOj+H,KAAKshT,YAAYxvT,EAAO,SAAU+vT,EAAajkS,MAGnD,SAAU4kJ,EAAMC,EAAMC,GACzB,OAAO+6E,EAAOvhP,MAAM8D,KAAM2C,aAmBlCgqJ,GAAa/8J,UAAUkyT,oBACftK,GAAS,EAAI7lR,EAAU/0B,SAAQ,SAAU2pD,EAAQw7P,EAAWC,EAASxxS,GACrE,IAAIwkF,EAAOh1F,KAAKk1F,QAAQ3uC,GACxB,GAAIyuC,GAAQA,EAAK4sN,gBAAgBG,GAC7B,MAAM,IAAIlwT,MAAM,8CAAgDkwT,EAAY,KAIhF,IAAIE,OAAY,EAChB,GAAID,EAAS,CAET,GADAC,EAAYD,EAAQplM,QAChB5nB,GAAQA,EAAK4sN,gBAAgBK,GAC7B,MAAM,IAAIpwT,MAAM,+CAAiDowT,EAAY,KAE7EjtN,GACAA,EAAK0sN,qBAAqB1hT,KAAKszB,YAAYC,OAAQyuR,EAAS,UAIpE,OAAOhiT,KAAKkiT,8BAA8B37P,EAAQw7P,EAAWE,EAAWzxS,MAGrE,SAAUwvO,EAAMC,EAAMW,EAAMC,GAC/B,OAAO22D,EAAOt7S,MAAM8D,KAAM2C,aAmBlCgqJ,GAAa/8J,UAAUuyT,cAAgB,SAAUxlT,EAAKwlH,EAAIvkG,GACtD,IAAI5pB,EAAMmuH,EAAK,IAAMxlH,EACjBylT,EAAKpiT,KAAKq5S,gBAAgBrlT,GAC9B,GAAIouT,EACA,OAAOzoT,EAAW9E,QAAQ9D,QAAQqxT,GAGtC,IAAIzjT,EAAOqB,KACX,OAAOA,KAAKo7S,MAAMh8F,cAAcxhM,EAAU,MAAO,eAAgB,CAC7DjhB,IAAKA,EACLwlH,GAAIA,QACLzvH,EAAW,CACVk+B,OAAQqmR,EAAQh5F,kBACjBjnN,MAAK,SAAU6F,GAGd,OADA8B,EAAK06S,gBAAgBrlT,GAAO6I,EACrBA,MAYf8vJ,GAAa/8J,UAAUwmQ,WAAa,SAAU7vM,EAAQuvM,EAAUusD,EAAWzkS,GACvE,GAAI5d,KAAKi2B,UACL,OAAOt8B,EAAW9E,QAAQ9D,QAAQ,IAGtC,IAAIupE,EAAOklG,EAAMh2E,UAAU,gCAAiC,CACxDuxN,QAASx0P,EACTk1P,QAASz7S,KAAKszB,YAAYC,SAE1BpkC,EAAO,CACPi4P,OAAQ0O,GAKZ,OAHIA,IACA3mQ,EAAKmC,QAAU+wT,GAAwB,KAEpCriT,KAAKo7S,MAAMh8F,cAAcxhM,EAAU,MAAO08C,OAAM5nE,EAAWvD,IAiBtEw9J,GAAa/8J,UAAU0yT,sBAAwB,SAAU/7P,GACrD,IAAIg8P,EAAc5/S,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,IAAmBA,UAAU,GAE7E6/S,EAAcxiT,KAAKk1F,QAAQ3uC,GAC/B,IAAKi8P,EAAa,MAAO,GAMzB,IAJA,IAAIC,EAAiB,CAACD,GAGlB/zS,EAAc+zS,EAAYxrN,aAAae,eAAe,gBAAiB,IACpEtpF,GAAa,CAChB8sG,EAAS1mH,QAAQgD,IAAI,cAAgB4W,EAAYmuG,SACjD,IAAI6iM,EAAchxS,EAAYwpF,aAA0B,YACxD,IAAIwnN,IAAeA,EAAqB,QAkBpC,MAjBAlkM,EAAS1mH,QAAQgD,IAAI,0BAA4B4nT,EAAqB,SACtE,IAAIiD,EAAU1iT,KAAKk1F,QAAQuqN,EAAqB,SAChD,IAAKiD,EAAS,MAEd,GAAIH,EAAa,CACb,IAAII,EAAYD,EAAQ1rN,aAAae,eAAe,mBAAoB,IAExE,IAAK4qN,GAAaA,EAAU1qN,aAA+B,mBAAMyqN,EAAQn8P,OACrE,MAKRk8P,EAAepmT,OAAO,EAAG,EAAGqmT,GAC5Bj0S,EAAci0S,EAAQ1rN,aAAae,eAAe,gBAAiB,IAS3E,IADA,IAAI6qN,EAAiBJ,EAAYxrN,aAAae,eAAe,mBAAoB,IAC1E6qN,GAAgB,CACnB,IAAIC,EAAW7iT,KAAKk1F,QAAQ0tN,EAAe3qN,aAA+B,kBAC1E,IAAK4qN,EAAU,MACf,GAAIA,EAASt8P,SAAWi8P,EAAYj8P,OAAQ,MAE5C,GAAIg8P,EAAa,CAEb,KADA9zS,EAAco0S,EAAS7rN,aAAae,eAAe,gBAAiB,OAC/CtpF,EAAYwpF,aAA0B,YAAG,MAE9D,IAAI6qN,EAAer0S,EAAYwpF,aAA0B,YACzD,GAAI6qN,EAAsB,UAAMN,EAAYj8P,OAAQ,MAIxDk8P,EAAezyT,KAAK6yT,GACpB,IAAI9wL,EAAU,IAAI08C,EAAM55K,QAAQ4tT,EAAevpT,KAAI,SAAUygC,GACzD,OAAOA,EAAI4sB,WAEf,GAAIwrE,EAAQjrG,KAAO27R,EAAe/yT,OAG9B,OAAO+yT,EAAe9tT,MAAM,EAAG8tT,EAAe/yT,OAAS,GAK3DkzT,GADAJ,EAAcK,GACe7rN,aAAae,eAAe,mBAAoB,IAGjF,OAAO0qN,GAUX91J,GAAa/8J,UAAUqrN,OAAS,SAAU10J,EAAQhzB,EAAQ3V,GACtD,OAAOy9R,GAAkBr7S,KAAMumD,EAAQhzB,EAAQ,cAAU7gC,EAAWkrB,IAWxE+uI,GAAa/8J,UAAUo1N,cAAgB,SAAUz+J,EAAQqtK,EAAOh2M,GAC5D,OAAO5d,KAAK+iT,iBAAiBx8P,EAAQ,QAASqtK,EAAOh2M,IAYzD+uI,GAAa/8J,UAAUmzT,kBACfluE,GAAS,EAAIljN,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAAS4oN,EAAS/1L,EAAQ6/J,EAAQryE,EAASn2H,GACtH,IAAI08C,EAAM5kC,EAAmB2zD,EAAQuvD,EACrC,OAAOlnH,EAAc78B,QAAQm/B,MAAK,SAAmBuoN,GACjD,OACI,OAAQA,EAAU16O,KAAO06O,EAAU7+O,MAC/B,KAAK,EAID,GAHA48D,EAAOklG,EAAMh2E,UAAU,wBAAyB,CAAEuxN,QAASx0P,IAC3D7wB,EAAoB11B,KAAKy4I,sBAAqB,GAEvB,CACnB8jG,EAAU7+O,KAAO,EACjB,MAGJ,OAAO6+O,EAAUpoN,OAAO,SAAUx6B,EAAW9E,QAAQ7D,OAAO,IAAIqvN,EAAY,CACxEzuN,MAAO,kCACPu3G,QAAS,qCAGjB,KAAK,EAQD,GAPA9f,EAAS,CACLqoH,UAAWh8K,EACX0wL,OAAQA,EACRryE,QAASA,GAEbwoG,EAAUnoN,GAAKp0B,KAAKw2B,gBAAkBx2B,KAAKw2B,eAAeT,gBAErDwmN,EAAUnoN,GAAI,CACfmoN,EAAU7+O,KAAO,GACjB,MAIJ,OADA6+O,EAAU7+O,KAAO,GACV,EAAIi0B,EAAU5gC,SAASiP,KAAKgjT,uCAEvC,KAAK,EACDzmE,EAAUnoN,GAAKmoN,EAAUjnN,KAE7B,KAAK,GACD,IAAKinN,EAAUnoN,GAAI,CACfmoN,EAAU7+O,KAAO,GACjB,MAIJ,OADA6+O,EAAU7+O,KAAO,IACV,EAAIi0B,EAAU5gC,SAASiP,KAAKw2B,eAAeT,kBAEtD,KAAK,IACD6iH,EAAsB2jG,EAAUjnN,QAG5B+zD,EAAOsoH,gBAAkB/4D,GAGjC,KAAK,GACD,OAAO2jG,EAAUpoN,OAAO,SAAUn0B,KAAKo7S,MAAMh8F,cAAcxhM,EAAU,OAAQ08C,OAAM5nE,EAAW22F,IAElG,KAAK,GACL,IAAK,MACD,OAAOkzJ,EAAUnpN,UAG9BkpN,EAAUt8O,UAGV,SAAUqhP,EAAM4hE,EAAMrhE,EAAMG,GAC/B,OAAOlN,EAAO34O,MAAM8D,KAAM2C,aAUlCgqJ,GAAa/8J,UAAUsrN,MAAQ,SAAU30J,EAAQ3oC,GAC7C,OAAOy9R,GAAkBr7S,KAAMumD,OAAQ7zD,EAAW,aAASA,EAAWkrB,IAc1E+uI,GAAa/8J,UAAUsoO,eAAiB,SAAU3xK,GAC9C,IAAIwgC,EAAS/mF,KAETkjT,IAAgBvgT,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,KAAmBA,UAAU,GAE/E8/S,EAAiBziT,KAAKsiT,sBAAsB/7P,GAE5C48P,EAAkBV,EACtB,IAAKS,EAAe,CAChBC,EAAkB,GAClB,IAAI34P,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBh4D,EAEtB,IACI,IAAK,IAA6Di4D,EAAzDC,GAAa,EAAIj1D,EAAcd,SAAS4tT,KAA2Bj4P,GAA8BG,EAASC,EAAWltD,QAAQC,MAAO6sD,GAA6B,EAAM,CAC5K,IAAIwqC,EAAOrqC,EAAOj3D,MAGlB,GADAyvT,EAAgBnzT,KAAKglG,GACjBA,EAAKzuC,SAAWA,EAChB,OAGV,MAAOjyD,GACLm2D,GAAqB,EACrBC,EAAkBp2D,EACpB,QACE,KACSk2D,GAA8BI,EAAW/sD,QAC1C+sD,EAAW/sD,SAEjB,QACE,GAAI4sD,EACA,MAAMC,IAMtB,IAAI04P,EAAoB,GACpBzyT,EAAW,GAEX0yT,EAAU,SAAiB98P,GAC3B,OAAOwgC,EAAOm0H,MAAM30J,GAAQvvD,MAAK,WAC7BosT,EAAkB78P,GAAU,QAC7B/G,OAAM,SAAUlrD,GAEf,OADA8uT,EAAkB78P,GAAUjyD,EACrB,SAIXy2D,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBv4D,EAEtB,IACI,IAAK,IAA8Dw4D,EAA1DC,GAAa,EAAIx1D,EAAcd,SAASsuT,KAA4Bp4P,GAA8BG,EAASC,EAAWztD,QAAQC,MAAOotD,GAA6B,EAAM,CAC7K,IAAIwrC,EAAQrrC,EAAOx3D,MAEnB/C,EAASX,KAAKqzT,EAAQ9sN,EAAMhwC,UAElC,MAAOjyD,GACL02D,GAAqB,EACrBC,EAAkB32D,EACpB,QACE,KACSy2D,GAA8BI,EAAWttD,QAC1CstD,EAAWttD,SAEjB,QACE,GAAImtD,EACA,MAAMC,GAKlB,OAAOtxD,EAAW9E,QAAQ/B,IAAInC,GAAUqG,MAAK,WACzC,OAAOosT,MAYfz2J,GAAa/8J,UAAUwoO,IAAM,SAAU7xK,EAAQhzB,EAAQ9mB,EAAQmR,GAC3D,OAAOy9R,GAAkBr7S,KAAMumD,EAAQhzB,EAAQ,MAAO9mB,EAAQmR,IAWlE+uI,GAAa/8J,UAAU0zT,OAAS,SAAU/8P,EAAQg9P,EAAY3lS,QACvClrB,IAAf6wT,IACAA,GAAa,GAEjB,IAAI1yT,EAAUwqT,GAAkBr7S,KAAMumD,OAAQ7zD,EAAW,cAAUA,EAAWkrB,GAC9E,IAAK2lS,EACD,OAAO1yT,EAEX,IAAI8N,EAAOqB,KACX,OAAOnP,EAAQmG,MAAK,SAAU6F,GAG1B,OAFA8B,EAAKs1B,MAAM4gR,WAAWtuP,GACtB5nD,EAAKiQ,KAAK,aAAc23C,GACjB1pD,MAWf8vJ,GAAa/8J,UAAUyoO,MAAQ,SAAU9xK,EAAQhzB,EAAQ3V,GAMrD,IAAI08C,EAAOklG,EAAMh2E,UAAU,uBAAwB,CAC/CuxN,QAASx0P,IAETp3D,EAAO,CACP2tH,QAASvpF,GAEb,OAAOvzB,KAAKo7S,MAAMh8F,cAAcxhM,EAAU,OAAQ08C,OAAM5nE,EAAWvD,IAWvEw9J,GAAa/8J,UAAUuoO,KAAO,SAAU5xK,EAAQhzB,EAAQ9mB,EAAQmR,GAC5D,OAcJ,SAA6By2F,EAAQ9tD,EAAQhzB,EAAQiwR,EAAiB/2S,EAAQmR,GACtE4hJ,EAAM31E,WAAWp9E,KACjBmR,EAAWnR,EAAOA,OAAS/Z,GAG/B,IAAI4nE,EAAOklG,EAAMh2E,UAAU,6CAA8C,CAAEuxN,QAASx0P,EAAQk1P,QAASloR,IAErG,OAAO8gF,EAAO+mM,MAAMh8F,cAAcxhM,EAAU,MAAO08C,OAAM5nE,EAAW,CAChEglG,WAAY8rN,EACZ/2S,OAAQA,IAvBLg3S,CAAoBzjT,KAAMumD,EAAQhzB,EAAQ,QAAS9mB,EAAQmR,IA2DtE+uI,GAAa/8J,UAAU+uI,uBAAyB,SAAU7sI,GAItD,OAHKA,EAAM+uH,kBACP/uH,EAAMwtH,eAAet/G,KAAKw5S,eAAe9yJ,gBAAgB50J,IAEtDA,EAAM+uH,kBAajB8rC,GAAa/8J,UAAU8zT,eAAiB,SAAUruS,EAAMlmB,EAAMyuB,GAC1D,IAAI08C,EAAOklG,EAAMh2E,UAAU,yBAA0B,CACjDiyN,QAASz7S,KAAKszB,YAAYC,OAC1BowR,MAAOtuS,IAEX,OAAOrV,KAAKo7S,MAAMh8F,cAAcxhM,EAAU,MAAO08C,OAAM5nE,EAAWvD,IAStEw9J,GAAa/8J,UAAUsqN,eAAiB,SAAU1nN,EAAMorB,GACpD,OAAO5d,KAAK0jT,eAAe,cAAe,CAAE71I,YAAar7K,GAAQorB,IASrE+uI,GAAa/8J,UAAUyqN,aAAe,SAAU19M,EAAKihB,GACjD,OAAO5d,KAAK0jT,eAAe,aAAc,CAAEh/K,WAAY/nI,GAAOihB,IAgBlE+uI,GAAa/8J,UAAUq1G,aAAe,SAAU2+M,EAAQvnN,EAAOp6B,EAAQmyE,EAAc0tE,GACjF,OAAOu1F,EAAY1iK,iBAAiB30I,KAAKy1B,QAASmuR,EAAQvnN,EAAOp6B,EAAQmyE,EAAc0tE,IAU3Fn1D,GAAa/8J,UAAUi0T,2BAA6B,SAAUC,GAC1D,IAAI98N,EAAShnF,KAET5N,EAAO,wBACX,OAAOuH,EAAW9E,QAAQ/B,IAAIkN,KAAKosN,WAAWlzN,KAAI,SAAU87F,GACxD,IAAI+uN,EAAsC,SAA3B/uN,EAAKuf,kBAChByvM,EAAwD,IAA1ChvN,EAAKivN,iCACvB,OAAKF,GAAaC,GAIJhvN,EAAKgC,aAAag3H,wBAAwB57N,EAAM40F,GAIvDA,EAAOwvB,eAAexhB,EAAKzuC,OAAQn0D,EAAM,CAC5C2K,OAAQ+mT,GACT98N,EAAOmvB,aATCx8G,EAAW9E,QAAQ9D,eAsBtC47J,GAAa/8J,UAAUs0T,YAAc,SAAU1zS,EAAMoN,GACjD,IAAI08C,EAAOklG,EAAMh2E,UAAU,2BAA4B,CACnDiyN,QAASz7S,KAAKszB,YAAYC,SAGV,iBAAT/iB,IACPA,EAAO,CAAE4oM,SAAU5oM,IAIvB,IAA2C,GADzB,CAAC,UAAW,SAAU,eACxBpX,QAAQoX,EAAK4oM,UACzB,MAAM,IAAIvnN,MAAM,uBAAyB2e,EAAK4oM,UAElD,OAAOp5M,KAAKo7S,MAAMh8F,cAAcxhM,EAAU,MAAO08C,OAAM5nE,EAAW8d,IAgBtEm8I,GAAa/8J,UAAUu0T,gBAAkB,SAAUvmS,GAC/C,OAAO49R,GAAc59R,EAAU5d,UAAMtN,EAAW,QAUpDi6J,GAAa/8J,UAAUw0T,qBAAuB,SAAUxmS,EAAUm9N,GAE9D,OAAOygE,GAAc59R,EAAU5d,KADpB,CAAE,OAAU+6O,GACoB,SAU/CpuF,GAAa/8J,UAAUy0T,qBAAuB,SAAUzmS,EAAUm9N,GAE9D,OAAOygE,GAAc59R,EAAU5d,KADpB,CAAE,KAAQ+6O,GACsB,SAoB/CpuF,GAAa/8J,UAAUqlT,WAAa,SAAUjgN,EAAMp4E,EAAOgB,GACnD4hJ,EAAM31E,WAAWjtE,KACjBgB,EAAWhB,EAAMA,OAAQlqB,GAE7BkqB,EAAQA,GAAS,GACjB,IAAI0nS,EAAe,EAEfjvS,EAAOrV,KAAKo5S,oBAAoBpkN,EAAKzuC,SAAW,GACpD,GAAIlxC,EAAKxkB,QACL,OAAOwkB,EAAKxkB,QACT,GAAIwkB,EAAKkvS,QAAS,CACrB,IAAIC,EAAe59P,KAAK8+D,MAAQrwG,EAAKkvS,QACrCD,EAAez+S,KAAKC,IAz9FF,IAy9F4B0+S,EAAc,GAGhE,GAAsC,OAAlCxvN,EAAKq6B,SAAS2hB,gBACd,OAAOr3I,EAAW9E,QAAQ9D,QAAQikG,GAGtC,IAAIyvN,EAAWzkT,KAAKi0B,MAAMghR,WAAWjgN,EAAMp4E,GAAOltB,OAClD,GAAI+0T,IAAa7nS,EAEb,OAAOjjB,EAAW9E,QAAQ9D,QAAQikG,GAGtCp4E,GAAgB6nS,EAEhB,IAAI3gS,EAAQnqB,EAAW9E,QAAQivB,QAC/BzO,EAAO,CACHxkB,QAASizB,EAAMjzB,QACf0zT,QAAS,MAEb,IAAI5lT,EAAOqB,KA0BX,OAvBArG,EAAW9E,QAAQm4B,MAAMs3R,GAActtT,MAAK,WACxC,OAAO2H,EAAK+lT,uBAAuB1vN,EAAKzuC,OAAQyuC,EAAKq6B,SAAS2hB,gBAAiBp0H,EAAO,QACvFjf,MAAK,SAAU6sF,GACd,IAAIm6N,EAAenlJ,EAAMtmK,IAAIsxF,EAAIt4F,MAAOwpT,GAAyB/8S,IACjE,GAAI6rF,EAAI3qC,MAAO,CACX,IAAI2xF,EAAcguB,EAAMtmK,IAAIsxF,EAAI3qC,MAAO67P,GAAyB/8S,IAChEq2F,EAAKgC,aAAa4tN,sBAAsBpzK,GAE5Cx8C,EAAK82J,oBAAoB64D,GAAc,EAAM3vN,EAAKn+D,mBAClDm+D,EAAKq6B,SAAS2hB,gBAAkBxmD,EAAI5vD,IACX,IAArB4vD,EAAIt4F,MAAMxC,SACVslG,EAAKq6B,SAAS2hB,gBAAkB,MAEpCryI,EAAKs1B,MAAMihR,YAAYlgN,EAAM2vN,EAAcn6N,EAAI5vD,KAAK,GACpDj8B,EAAKy6S,oBAAoBpkN,EAAKzuC,QAAU,KACxCzoC,GAASF,EAAUkG,EAAOkxE,MAC3B,SAAU1gG,GACTqK,EAAKy6S,oBAAoBpkN,EAAKzuC,QAAU,CACpCg+P,QAAS39P,KAAK8+D,OAElBniH,GAAQqa,EAAUkG,EAAOxvB,MAE7B0L,KAAKo5S,oBAAoBpkN,EAAKzuC,QAAUlxC,EACjCyO,EAAMjzB,SAiBjB87J,GAAa/8J,UAAU07J,iBAAmB,SAAU1Y,EAAa38C,GAE7D,IAAKj2F,KAAKk2B,gBACN,MAAM,IAAIrkC,MAAM,sHAGpB,GAAI+gJ,EAAYy3E,oBAAoBp0H,GAChC,OAAOt8F,EAAW9E,QAAQ9D,QAAQ6hJ,EAAYy3E,oBAAoBp0H,IAGtE,IAAI37B,EAAOklG,EAAMh2E,UAAU,kCAAmC,CAC1DuxN,QAASnoK,EAAY59C,KAAKzuC,OAC1Bk7P,SAAUxrN,IAGV5M,OAAS32F,EACTsN,KAAKsgT,YAAYrrR,kBACjBo0D,EAAS,CAAEvwE,QAAQ,EAAIsrC,EAAYvvD,SAAS82O,EAAO2d,gCAKvD,IAAI3qP,EAAOqB,KAsCX,OArCcrB,EAAKy8S,MAAMh8F,mBAAc1sN,EAAW,MAAO4nE,EAAM+uB,GAAQryF,MAAK,SAAUwzF,GAClF,IAAKA,EAAI14F,MACL,MAAM,IAAID,MAAM,0DAKpB,GAAI+gJ,EAAYy3E,oBAAoBp0H,GAChC,OAAO28C,EAAYy3E,oBAAoBp0H,GAM3CzL,EAAIq6N,aAAajnR,UACjB,IAAIwvD,EAAS5C,EAAIq6N,aAAavoT,OAAO,CAACkuF,EAAI14F,QAAQwK,OAAOkuF,EAAIs6N,eACzDH,EAAenlJ,EAAMtmK,IAAIk0F,EAAQzuF,EAAKomT,kBAEtClzK,EAAWe,EAAYy3E,oBAAoBs6F,EAAa,GAAG/nM,SAC/D,GAAKi1B,EAIE,CACH,IAAIL,EAAcguB,EAAMtmK,IAAIsxF,EAAI3qC,MAAOlhD,EAAKomT,kBAC5ClzK,EAASD,SAASjB,EAAc55G,WAAW6tR,sBAAsBpzK,QALjEK,EAAWe,EAAYi5G,eACdt6G,gBAAgBiuB,EAAMtmK,IAAIsxF,EAAI3qC,MAAOlhD,EAAKomT,mBACnDlzK,EAASD,SAASjB,EAAcW,UAAUN,gBAAkBxmD,EAAI5vD,IAapE,OARAg4G,EAAYk5G,oBAAoB64D,GAAc,EAAM9yK,EAAUrnD,EAAIt1D,OAOzD09G,EAAYy3E,oBAAoBp0H,IAAY47C,MAkB7D8a,GAAa/8J,UAAU80T,uBAAyB,SAAUn+P,EAAQy+P,EAAWpoS,EAAO+pE,GAChF,IAAIs+N,EAAiBtiT,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,GAAmBA,UAAU,QAAKjQ,EAErF4nE,EAAOklG,EAAMh2E,UAAU,0BAA2B,CAAEuxN,QAASx0P,SACnD7zD,IAAVkqB,IACAA,EAAQ,IAEZ,IAAIysE,EAAS,CACTt4D,KAAMi0R,EACNpoS,MAAOA,EACP+pE,IAAKA,GAGL7tE,EAAS,KAeb,OAdI9Y,KAAKsgT,YAAYrrR,kBAGjBnc,GAAS,EAAIjjB,EAAShB,SAAS,GAAI82O,EAAO2d,+BAE1C27D,IAGAnsS,EAASA,GAAU,IACnB,EAAIjjB,EAAShB,SAASikB,EAAQmsS,EAAe96D,mCAE7CrxO,IACAuwE,EAAOvwE,QAAS,EAAIsrC,EAAYvvD,SAASikB,IAEtC9Y,KAAKo7S,MAAMh8F,mBAAc1sN,EAAW,MAAO4nE,EAAM+uB,IAgB5DsjE,GAAa/8J,UAAUs1T,sBAAwB,SAAUC,EAAe30S,GACpE,IAAI40S,EAAkBD,EAAclzK,mBAAqBjyI,KAAKs5S,kBAK1D95B,GADJhvQ,EAAOA,GAAQ,IACMgvQ,YAAa,EAElC,GAAI4lC,IACK5lC,EACD,MAAM,IAAI3tR,MAAM,qDAIxB,IAAI80F,EAAM64L,EAAY7uI,EAAc55G,UAAY45G,EAAcW,SAE1De,EAAQ8yK,EAAc/yK,mBAAmBzrD,GAC7C,IAAK0rD,EAED,OAAO14I,EAAW9E,QAAQ9D,SAAQ,GAGtC,IAAIs0T,EAAiBF,EAAc/zK,oBAAoBzqD,GAEvD,GAAI0+N,EAEA,OAAOA,EAGX,IAAI/qP,OAAO,EACP+uB,OAAS,EACTx4F,OAAU,EACV8N,EAAOqB,KAEX,GAAIolT,EACA9qP,EAAO,iBACP+uB,EAAS,CACLzsE,MAAO,UAAWpM,EAAOA,EAAKoM,MAAQ,GACtCsmN,KAAM,aAGN7wF,GAAmB,QAAVA,IACThpD,EAAOt4D,KAAOshH,GAGlBxhJ,EAAUmP,KAAKo7S,MAAMh8F,mBAAc1sN,EAAW,MAAO4nE,EAAM+uB,OAAQ32F,GAAWsE,MAAK,SAAUwzF,GAIzF,IAHA,IAAI6nD,EAAQ7nD,EAAI86N,WACZX,EAAe,GAEVn1T,EAAI,EAAGA,EAAIg7F,EAAI+6N,cAAc71T,OAAQF,IAAK,CAC/C,IAAIg2T,EAAeh7N,EAAI+6N,cAAc/1T,GACjCsC,EAAQ6M,EAAKomT,gBAALpmT,CAAsB6mT,EAAa1zT,OAC/CA,EAAMwtH,eAAeglC,EAAcxI,0BAA0B0pK,EAAa9mL,UAC1E5sI,EAAMA,MAAMu2G,QAAUm9M,EAAan9M,QACnCs8M,EAAan1T,GAAKsC,EAWtB,OARAqzT,EAAclzK,iBAAiB65G,oBAAoB64D,EAAcnlC,EAAW2lC,EAAe9yK,GAKvFmtI,IAAch1L,EAAI86N,YAClBH,EAAcruR,mBAAmB,KAAM6vD,KAEpC6D,EAAI86N,cACZ93M,SAAQ,WACP23M,EAAc/zK,oBAAoBzqD,GAAO,QAE7Cw+N,EAAc/zK,oBAAoBzqD,GAAO91F,MACtC,CAEH,IADWmP,KAAKk1F,QAAQiwN,EAAc/8M,aAElC,MAAM,IAAIv2G,MAAM,gBAAkBszT,EAAc/8M,cAGpDv3G,EAAUmP,KAAK0kT,uBAAuBS,EAAc/8M,YAAaiqC,EAAO7hI,EAAKoM,MAAO+pE,EAAKw+N,EAAcnzK,cAC/Fh7I,MAAK,SAAUwzF,GACnB,GAAIA,EAAI3qC,MAAO,CACX,IAAI6nM,EAAYy9D,EAAcvzK,SAASjrD,GACnC6qD,EAAcguB,EAAMtmK,IAAIsxF,EAAI3qC,MAAOlhD,EAAKomT,kBAC5Cr9D,EAAUk9D,sBAAsBpzK,GAEpC,IAAIa,EAAQ7nD,EAAI5vD,IACZ+pR,EAAenlJ,EAAMtmK,IAAIsxF,EAAIt4F,MAAOyM,EAAKomT,kBAS7C,OARAI,EAAclzK,iBAAiB65G,oBAAoB64D,EAAcnlC,EAAW2lC,EAAe9yK,GAKvFmtI,GAAah1L,EAAI5vD,KAAO4vD,EAAIt1D,OAC5BiwR,EAAcruR,mBAAmB,KAAM6vD,GAEpC6D,EAAI5vD,KAAO4vD,EAAIt1D,SACvBs4E,SAAQ,WACP23M,EAAc/zK,oBAAoBzqD,GAAO,QAE7Cw+N,EAAc/zK,oBAAoBzqD,GAAO91F,EAG7C,OAAOA,GAOX87J,GAAa/8J,UAAU61T,sBAAwB,WACtCzlT,KAAKs5S,mBAcVt5S,KAAKs5S,kBAAkB/tD,kBAAkB,MAAO,OAqBpD5+F,GAAa/8J,UAAU81T,WAAa,SAAUn/P,GAK1C,OAJIvmD,KAAKk5S,WACLl5S,KAAKk5S,UAAUyM,cAEnB3lT,KAAKk5S,UAAY,IAAI5B,EAAQt3S,KAAMA,KAAKsgT,aACjCtgT,KAAKk5S,UAAUvjQ,KAAK4Q,IAM/BomG,GAAa/8J,UAAU+1T,YAAc,WAC7B3lT,KAAKk5S,YACLl5S,KAAKk5S,UAAUyM,cACf3lT,KAAKk5S,UAAY,OAiBzBvsJ,GAAa/8J,UAAUg2T,eAAiB,SAAUr/P,EAAQ/1C,GACtD,IAAIq1S,EAAe7lT,KAAKw2G,eAAejwD,EAAQ,sBAAuB,CAClEigK,aAAch2M,EAAKs1S,UAAY,WAAa,cAG5CC,EAAcpsT,EAAW9E,QAAQ9D,UAOrC,OANIyf,EAAKw1S,YACLD,EAAc/lT,KAAKw2G,eAAejwD,EAAQ,4BAA6B,CACnEypM,mBAAoB,oBAIrBr2P,EAAW9E,QAAQ/B,IAAI,CAACizT,EAAaF,KAoBhDl5J,GAAa/8J,UAAUq2T,0BAA4B,SAAUryF,EAAOpjB,EAAc01G,EAAaC,GAC3F,OAAOnmT,KAAKomT,0BAA0B,+BAAgC,CAClExyF,MAAOA,EACPniB,cAAejB,EACf61G,aAAcH,EACdI,UAAWH,KAkBnBx5J,GAAa/8J,UAAU22T,2BAA6B,SAAUt1G,EAAcC,EAAaV,EAAc01G,EAAaC,GAChH,OAAOnmT,KAAKomT,0BAA0B,gCAAiC,CACnE9wD,QAASrkD,EACTu1G,aAAct1G,EACdO,cAAejB,EACf61G,aAAcH,EACdI,UAAWH,KAqBnBx5J,GAAa/8J,UAAUghN,yBAA2B,SAAUgjB,EAAOpjB,EAAc01G,EAAaC,GAC1F,OAAOnmT,KAAKomT,0BAA0B,mCAAoC,CACtExyF,MAAOA,EACPniB,cAAejB,EACf61G,aAAcH,EACdI,UAAWH,KAkBnBx5J,GAAa/8J,UAAUuhN,0BAA4B,SAAUF,EAAcC,EAAaV,EAAc01G,EAAaC,GAC/G,OAAOnmT,KAAKomT,0BAA0B,oCAAqC,CACvE9wD,QAASrkD,EACTu1G,aAAct1G,EACdO,cAAejB,EACf61G,aAAcH,EACdI,UAAWH,KAuBnBx5J,GAAa/8J,UAAU62T,0BAA4B,SAAU7yF,EAAOpjB,EAAc01G,EAAaC,GAC3F,OAAOnmT,KAAKomT,0BAA0B,uCAAwC,CAC1ExyF,MAAOA,EACPniB,cAAejB,EACf61G,aAAcH,EACdI,UAAWH,KAiBnBx5J,GAAa/8J,UAAU82T,2BAA6B,SAAUz1G,EAAcC,EAAaV,EAAc01G,EAAaC,GAChH,OAAOnmT,KAAKomT,0BAA0B,wCAAyC,CAC3E9wD,QAASrkD,EACTu1G,aAAct1G,EACdO,cAAejB,EACf61G,aAAcH,EACdI,UAAWH,KAYnBx5J,GAAa/8J,UAAUw2T,2BACftxE,GAAS,EAAInjN,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASqpN,EAAS4pE,EAAUt9N,GACvG,IAAIu9N,EAAYC,EAAajuK,EAC7B,OAAOlnH,EAAc78B,QAAQm/B,MAAK,SAAmBopN,GACjD,OACI,OAAQA,EAAUv7O,KAAOu7O,EAAU1/O,MAC/B,KAAK,EAOD,OANAkpT,GAAa,EAAI/wT,EAAShB,SAAS,GAAIw0F,GAKvC+zJ,EAAU1/O,KAAO,GACV,EAAIi0B,EAAU5gC,SAASiP,KAAK8wM,uCAEvC,KAAK,EAGD,GAFAssC,EAAUhpN,IAAMgpN,EAAU9nN,MAErB8nN,EAAUhpN,GAAI,CACfgpN,EAAU1/O,KAAO,EACjB,MAGJ0/O,EAAUhpN,GAAKp0B,KAAK21B,UAExB,KAAK,EACD,IAAKynN,EAAUhpN,GAAI,CACfgpN,EAAU1/O,KAAO,GACjB,MAKJ,IAFAmpT,EAAclqT,EAAIM,MAAM+C,KAAK21B,YAEbd,KAAM,CAClBuoN,EAAU1/O,KAAO,GACjB,MAGJ,MAAM,IAAI7L,MAAM,0BAA4BmO,KAAK21B,WAErD,KAAK,GAKD,GAJAixR,EAAWl1G,UAAYm1G,EAAYhyR,KAEnCuoN,EAAUzoN,GAAK30B,KAAKw2B,gBAAkBx2B,KAAKw2B,eAAeT,gBAErDqnN,EAAUzoN,GAAI,CACfyoN,EAAU1/O,KAAO,GACjB,MAIJ,OADA0/O,EAAU1/O,KAAO,IACV,EAAIi0B,EAAU5gC,SAASiP,KAAKgjT,uCAEvC,KAAK,GACD5lE,EAAUzoN,GAAKyoN,EAAU9nN,KAE7B,KAAK,GACD,IAAK8nN,EAAUzoN,GAAI,CACfyoN,EAAU1/O,KAAO,GACjB,MAIJ,OADA0/O,EAAU1/O,KAAO,IACV,EAAIi0B,EAAU5gC,SAASiP,KAAKw2B,eAAeT,kBAEtD,KAAK,IACD6iH,EAAsBwkG,EAAU9nN,QAG5BsxR,EAAWj1G,gBAAkB/4D,GAGrC,KAAK,GACD,OAAOwkG,EAAUjpN,OAAO,SAAUn0B,KAAKo7S,MAAM3oT,aAAQC,EAAW,OAAQi0T,OAAUj0T,EAAWk0T,IAEjG,KAAK,GACL,IAAK,MACD,OAAOxpE,EAAUhqN,UAG9B2pN,EAAU/8O,UAGV,SAAUokP,EAAMqB,GACnB,OAAO3Q,EAAO54O,MAAM8D,KAAM2C,aAalCgqJ,GAAa/8J,UAAUkrJ,gBAAkB,SAAUkM,EAAOzgG,GAGtD,IAAIvmD,KAAK+7I,UAQL,MAAM,IAAIlqJ,MAAM,+DAPhB,IAAK,IAAIrC,EAAI,EAAGA,EAAIwQ,KAAK+7I,UAAUiL,GAAOhyD,KAAKtlG,OAAQF,IAAK,CACxD,IAAI+pF,EAAOv5E,KAAK+7I,UAAUiL,GAAOhyD,KAAKxlG,GACtC,GAAI+pF,EAAKyhE,UAAYz0F,EACjB,OAAOgzB,IAiBvBozE,GAAa/8J,UAAUk3T,oBAAsB,SAAU9/J,EAAOzgG,EAAQwgQ,GAClE,IAAIpoT,EAAOqB,KACPwiD,OAAW,EACXwkQ,OAAoB,EAGpBC,EAAejnT,KAAK86I,gBAAgBkM,EAAOzgG,GAqC/C,GApCI0gQ,GACI,GAAKA,EAAavoL,QAAQtlI,QAAQ,iBAClC4tT,GAAoB,GAIvBD,EAMIE,EAIOD,IAGRxkQ,EAAW7oD,EAAW9E,QAAQivB,QAC9B9jB,KAAK+6I,eAAeiM,EAAO,OAAQigK,EAAajsK,SAASr9I,MAAK,WAC1DgB,EAAKs8I,YAAY+L,EAAO,OAAQzgG,EAAQ,CACpCm4E,QAAS,CAAC,iBACX/gI,MAAK,WACJ6kD,EAASzxD,aACV,SAAUuD,GACTkuD,EAASxxD,OAAOsD,SAErB,SAAUA,GACTkuD,EAASxxD,OAAOsD,MAGpBkuD,EAAWA,EAAS3xD,SAnBpB2xD,EAAWxiD,KAAKi7I,YAAY+L,EAAO,OAAQzgG,EAAQ,CAC/Cm4E,QAAS,CAAC,iBANdsoL,IACAxkQ,EAAWxiD,KAAK+6I,eAAeiM,EAAO,OAAQigK,EAAajsK,UA2B/Dx4F,EAAU,CAEV,IAAI0kQ,EAAsBvtT,EAAW9E,QAAQivB,QAkB7C,OAjBA0+B,EAAS7kD,MAAK,WACVgB,EAAKwoT,eAAexpT,MAAK,SAAU1G,GAC/B0H,EAAKo9I,UAAY9kJ,EACjBiwT,EAAoBn2T,aACrB,SAAUuD,GACT4yT,EAAoBl2T,OAAOsD,SAEhC,SAAUA,GAGTqK,EAAKwoT,eAAexpT,MAAK,SAAU1G,GAC/B0H,EAAKo9I,UAAY9kJ,EACjBiwT,EAAoBl2T,OAAOsD,MAC5B,SAAUkmT,GACT0M,EAAoBl2T,OAAOsD,SAG5B4yT,EAAoBr2T,UAiBnC87J,GAAa/8J,UAAUw3T,kBAAoB,SAAU52S,EAAMoN,GACvD,IAAIypS,EAAa,CACbC,YAAa92S,EAAK4/E,OAOtB,MAJI,SAAU5/E,IACV62S,EAAWt+S,KAAOyH,EAAKzH,MAGpB/I,KAAKmwF,OAAO,CACfrzF,KAAM,CACFyqT,kBAAmB,CACfC,YAAaH,KAGtBzpS,IAuBP+uI,GAAa/8J,UAAU63T,iBAAmB,SAAUj3S,GAGhD,IAAI1T,EAAO,CACPyqT,kBAAmB,CACfC,YAAa,CACTF,YAAa92S,EAAKk3S,KAClB5uS,OAAQtI,EAAKsI,OACb6uS,SAAU,SACVC,cAAe,CACXC,aAAc,EACdC,YAAa,EACbC,iBAAiB,MAM7BC,EAAgB,CAChBC,OAAQnrT,EACR4sF,QAAS,GACTsY,WAAY,IAGhB,OAAOhiG,KAAKmwF,OAAO,CAAErzF,KAAMA,IAAQ9F,KAAKgJ,KAAKkoT,yBAAyBj0T,KAAK+L,KAAMgoT,KAUrFr7J,GAAa/8J,UAAUu4T,6BAA+B,SAAUH,GAI5D,IAAKA,EAAczsG,WACf,OAAO5hN,EAAW9E,QAAQ7D,OAAO,IAAIa,MAAM,iDAG/C,GAAIm2T,EAAc3C,eAEd,OAAO2C,EAAc3C,eAGzB,IAAI+C,EAAa,CACbtrT,KAAMkrT,EAAcC,OACpB1sG,WAAYysG,EAAczsG,YAG1B1qN,EAAUmP,KAAKmwF,OAAOi4N,GAAYpxT,KAAKgJ,KAAKkoT,yBAAyBj0T,KAAK+L,KAAMgoT,IAAgBx6M,SAAQ,WACxGw6M,EAAc3C,eAAiB,QAInC,OAFA2C,EAAc3C,eAAiBx0T,EAExBA,GAYX87J,GAAa/8J,UAAUs4T,yBAA2B,SAAUF,EAAenrT,GACvE,IAAI2qT,EAAc3qT,EAAS0qT,kBAAkBC,YAE7CQ,EAAc7tT,MAAQqtT,EAAYrtT,MAClC6tT,EAAczsG,WAAaisG,EAAYjsG,WAIvC,IAAIv5G,EAAa,GACjBwlN,EAAYxlN,WAAW5nG,SAAQ,SAAUiuT,GACrCrmN,EAAWqmN,GAAM,KAErBL,EAAchmN,WAAW5nG,SAAQ,SAAUiuT,GACvCrmN,EAAWqmN,GAAM,KAIrBL,EAAchmN,YAAa,EAAIlsG,EAAOjB,SAASmtG,GAG/C,IAAK,IAAIxyG,EAAI,EAAGA,EAAIg4T,EAAY99N,QAAQh6F,OAAQF,IAAK,CACjD,IAAI84T,EAAKpR,EAAa1sD,SAASg9D,EAAY99N,QAAQl6F,GAAIwQ,KAAK+kT,kBAC5DiD,EAAct+N,QAAQ15F,KAAKs4T,GAE/B,OAAON,GASXr7J,GAAa/8J,UAAU24T,cAAgB,WAEnC,GAAIvoT,KAAKwoT,iBACL,OAAO7uT,EAAW9E,QAAQ9D,QAAQ,IAEtC,GAAIiP,KAAKyoT,sBACL,OAAOzoT,KAAKyoT,sBAEhB,IAAI9pT,EAAOqB,KACP0oT,EAAU,IAAIpR,EAAQt3S,KAAMA,KAAKsgT,aAWrC,OAVAtgT,KAAKyoT,sBAAwBC,EAAQH,gBAGrCvoT,KAAKyoT,sBAAsBzxT,MAAK,SAAUwzF,GACtC+wB,EAAS1mH,QAAQgD,IAAI,6CACrB8G,EAAK6pT,kBAAmB,KACzBh7M,SAAQ,WACP7uG,EAAK8pT,sBAAwB,QAG1BzoT,KAAKyoT,uBAYhB97J,GAAa/8J,UAAU+4T,aAAe,SAAU3wN,GAC5C,IAAIr5F,EAAOqB,KACPs6D,EAAOklG,EAAMh2E,UAAU,uBAAwB,CAC/CiyN,QAASz7S,KAAKszB,YAAYC,SAE9B,OAAOvzB,KAAKo7S,MAAMh8F,mBAAc1sN,EAAW,OAAQ4nE,OAAM5nE,EAAWslG,GAAShhG,MAAK,SAAU6F,GAExF,IAAIic,EAAS6yN,EAAO6e,SAAS7rP,EAAK20B,YAAYC,OAAQ12B,EAAS+rT,UAAW5wN,GAE1E,OADAr5F,EAAKs1B,MAAMmhR,YAAYt8R,GAChBA,MAaf6zI,GAAa/8J,UAAUoiJ,UAAY,SAAUz+G,EAAQ81N,EAAUw/D,GAC3D,GAAIA,EAAa,CACb,IAAI/vS,EAAS9Y,KAAKi0B,MAAM+9G,UAAUz+G,EAAQ81N,GAC1C,GAAIvwO,EACA,OAAOnf,EAAW9E,QAAQ9D,QAAQ+nB,GAI1C,IAAIna,EAAOqB,KACPs6D,EAAOklG,EAAMh2E,UAAU,iCAAkC,CACzDiyN,QAASloR,EACTu1R,UAAWz/D,IAGf,OAAOrpP,KAAKo7S,MAAMh8F,mBAAc1sN,EAAW,MAAO4nE,OAAM5nE,OAAWA,GAAWsE,MAAK,SAAU6F,GAEzF,IAAIic,EAAS6yN,EAAO6e,SAASj3N,EAAQ81N,EAAUxsP,GAE/C,OADA8B,EAAKs1B,MAAMmhR,YAAYt8R,GAChBA,MASf6zI,GAAa/8J,UAAUm5T,kBAAoB,SAAUzT,EAAYx8R,GAC7D,IAAIuwO,EAAWrpP,KAAKi0B,MAAMohR,kBAAkBC,GACxCzkT,EAAU8I,EAAW9E,QAAQ9D,UAC7B4N,EAAOqB,KAsCX,OApCIqpP,IAEAx4P,EAAU8N,EAAKqzI,UAAUrzI,EAAK20B,YAAYC,OAAQ81N,GAAU,GAAMryP,MAAK,SAAUgyT,GAC7E,IAAIC,EAASD,EAAet/D,gBACxBw/D,EAASpwS,EAAO4wO,gBAEpB,GAAIlqF,EAAMv1E,YAAYg/N,EAAQC,GAI1B,OAAOvvT,EAAW9E,QAAQ9D,QAAQs4P,GAItC1qP,EAAKs1B,MAAMshR,kBAAkBD,OAAY5iT,MAE1C,SAAUd,GAQT,GAAyB,MAArBA,EAAM27G,YAAyC,cAAlB37G,EAAMu3G,SAA6C,gBAAlBv3G,EAAMu3G,QAOpE,MAAMv3G,EAJN+M,EAAKs1B,MAAMshR,kBAAkBD,OAAY5iT,OAS9C7B,EAAQmG,MAAK,SAAUmyT,GAC1B,OAAIA,GAKGxqT,EAAKgqT,aAAa7vS,EAAO4wO,iBAAiB1yP,MAAK,SAAUoyT,GAI5D,OADAzqT,EAAKs1B,MAAMshR,kBAAkBD,EAAY8T,EAAc//D,UAChD+/D,EAAc//D,gBAYjC18F,GAAa/8J,UAAUipJ,eAAiB,WACpC,IAAIv+E,EAAOklG,EAAMh2E,UAAU,qCAAsC,CAC7DiyN,QAASz7S,KAAKszB,YAAYC,SAG9B,OAAOvzB,KAAKo7S,MAAMh8F,mBAAc1sN,EAAW,OAAQ4nE,OAAM5nE,EAAW,KAWxEi6J,GAAa/8J,UAAUy5T,WAAa,SAAUzrS,GAC1C,OAAO5d,KAAKo7S,MAAMh8F,cAAcxhM,EAAU,MAAO,qBAOrD+uI,GAAa/8J,UAAUm/H,eAAiB,WACpC,OAAO/uH,KAAKspT,cAAgB,IAUhC38J,GAAa/8J,UAAUs/H,4BAA8B,SAAUn2B,GAC3D/4F,KAAKu5S,0BAA4BxgN,GAUrC4zD,GAAa/8J,UAAUkzK,2BAA6B,WAChD,OAAO9iK,KAAKu5S,2BAahB5sJ,GAAa/8J,UAAU25T,uBAAyB,WAC5C,OAAOvpT,KAAKwpT,iBAAiBxpT,KAAKm2G,aAAan/G,MAAK,WAChD,OAAO,KACRwoD,OAAM,WACL,OAAO,MAWfmtG,GAAa/8J,UAAU45T,iBAAmB,SAAUj2R,GAChD,IAAI+mC,EAAOklG,EAAMh2E,UAAU,mCAAoC,CAAEiyN,QAASloR,IAC1E,OAAOvzB,KAAKo7S,MAAMh8F,mBAAc1sN,EAAW,MAAO4nE,OAAM5nE,OAAWA,EAAW,CAAEk+B,OAAQ,MAS5F+7H,GAAa/8J,UAAU65T,sBAAwB,SAAUl2R,GACrD,IAAI+mC,EAAOklG,EAAMh2E,UAAU,wCAAyC,CAAEiyN,QAASloR,IAC/E,OAAOvzB,KAAKo7S,MAAMh8F,mBAAc1sN,EAAW,OAAQ4nE,OAAM5nE,OAAWA,EAAW,CAAEk+B,OAAQ,MAmD7F+7H,GAAa/8J,UAAU2lC,aACfw/M,GAAS,EAAIpjN,EAAU/0B,SAAQ,SAAU4T,GACzC,IAAIu/N,EAAS/vO,KAETA,KAAKq4S,gBAITr4S,KAAKq4S,eAAgB,EAED,iBAAT7nS,IACPA,EAAO,CACHuiB,iBAAkBviB,IAItBxQ,KAAKsyB,UACLtyB,KAAKsyB,QAAQmoN,mBAAmB98O,OAChCqC,KAAKsyB,QAAQ4C,SA2gBzB,SAASw0R,EAAiBr1M,GACjBA,EAAOikM,gBAGRjkM,EAAOp+E,WAIXo+E,EAAOg1M,aAAa1rT,MAAK,SAAU6sF,GAC/B,GAAIA,EAAIm/N,KAAM,CACVpuM,EAAS1mH,QAAQgD,IAAI,kBAAoB2yF,EAAIm/N,KAAO,eAAiBn/N,EAAIo/N,IAAM,SAG/E,IAAIC,EAAU,CACV9mJ,KAAMv4E,EAAIm/N,KACVv/L,SAAU5/B,EAAI4/B,SACd0/L,WAAYt/N,EAAI6/B,UAEpBhW,EAAOi1M,aAAe,CAACO,GAEvBx1M,EAAO01M,2BAA6Bp3T,YAAW,WAC3C+2T,EAAiBr1M,KACK,KAAtB7pB,EAAIo/N,KAAO,MAAkB,QAEtC,SAAUt1T,GACTinH,EAAS1mH,QAAQjD,MAAM,2BACvByiH,EAAO01M,2BAA6Bp3T,YAAW,WAC3C+2T,EAAiBr1M,KAClB,SAniBHq1M,CAAiB1pT,MAEbA,KAAKi5S,WAEL19L,EAAS1mH,QAAQjD,MAAM,+DACvBoO,KAAKi5S,SAAS7lR,SAIlB5iB,GAAO,EAAI3a,EAAShB,SAAS,GAAI2b,IAE5B8tG,OAASt+G,KAAKsyB,QACnB9hB,EAAKw5S,uBAAyB,SAAUzjQ,GACpC,QAAKwpL,EAAOk6E,2BAGLl6E,EAAOk6E,0BAA0B1jQ,IAE5CvmD,KAAKsgT,YAAc9vS,EACnBxQ,KAAKi5S,SAAW,IAAI3B,EAAQt3S,KAAMwQ,GAClCxQ,KAAKi5S,SAASn7P,WAGX,SAAU4nM,GACb,OAAO3Q,EAAO74O,MAAM8D,KAAM2C,aAUlCgqJ,GAAa/8J,UAAUs6T,oBAAsB,WACzC,IAAIC,EAAY,CAAC,UAAW,SAAU,UAClCC,GAAmB,EAAI71N,EAAU1/F,SAASmL,KAAKsgT,aAAaxnS,QAAO,SAAUuxS,GAC7E,IAAIC,GAAS,EAAIhsQ,EAAgBzpD,SAASw1T,EAAQ,GAE9C32T,GADM42T,EAAO,GACLA,EAAO,IAEnB,OAAOH,EAAU3oR,cAA0B,IAAV9tC,EAAwB,aAAc,EAAIqC,EAASlB,SAASnB,OAC9F0iB,QAAO,SAAUnhB,EAAK+/O,GACrB,IAAIC,GAAS,EAAI32L,EAAgBzpD,SAASmgP,EAAQ,GAC9ChhP,EAAMihP,EAAO,GACbvhP,EAAQuhP,EAAO,GAGnB,OADAhgP,EAAIjB,GAAON,EACJuB,IACR,IACH,OAAO+K,KAAKi0B,MAAMw8M,mBAAmB25E,IAOzCz9J,GAAa/8J,UAAUolL,WAAa,WAChCz5D,EAAS1mH,QAAQgD,IAAI,yBAErBmI,KAAKq4S,eAAgB,EAEjBr4S,KAAKi5S,WACLj5S,KAAKi5S,SAAS7lR,OACdpzB,KAAKi5S,SAAW,MAEhBj5S,KAAKsyB,SACLtyB,KAAKsyB,QAAQc,OAEbpzB,KAAKk5S,WACLl5S,KAAKk5S,UAAUyM,cAEnBz3S,EAAOjc,aAAa+N,KAAK+pT,6BAQ7Bp9J,GAAa/8J,UAAU26T,aAAc,EAAI54R,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASiqN,IAC5G,OAAOjsN,EAAc78B,QAAQm/B,MAAK,SAAmB4pN,GACjD,OACI,OAAQA,EAAU/7O,KAAO+7O,EAAUlgP,MAC/B,KAAK,EACD,GAAoC,OAA9BsC,KAAKy5S,qBAAgC,CACvC77D,EAAUlgP,KAAO,EACjB,MAIJ,OADAkgP,EAAUlgP,KAAO,GACV,EAAIi0B,EAAU5gC,SAASiP,KAAKo7S,MAAM3oT,aAAQC,EACjD,MAAO,gCAA4BA,OACnCA,EACA,CACIk+B,OAAQ,MAGhB,KAAK,EACD5wB,KAAKy5S,qBAAuB77D,EAAUtoN,KAE1C,KAAK,EACD,OAAOsoN,EAAUzpN,OAAO,SAAUn0B,KAAKy5S,sBAE3C,KAAK,EACL,IAAK,MACD,OAAO77D,EAAUxqN,UAG9BuqN,EAAU39O,UAOjB2sJ,GAAa/8J,UAAU46T,8BAA+B,EAAI74R,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASuqN,IAC7H,IAAIphP,EAAU00B,EAAUk5R,EACxB,OAAO/4R,EAAc78B,QAAQm/B,MAAK,SAAoBmqN,GAClD,OACI,OAAQA,EAAWt8O,KAAOs8O,EAAWzgP,MACjC,KAAK,EAED,OADAygP,EAAWzgP,KAAO,GACX,EAAIi0B,EAAU5gC,SAASiP,KAAKuqT,eAEvC,KAAK,EAID,OAHA1tT,EAAWshP,EAAW7oN,KACtB/D,EAAW10B,EAAmB,SAC9B4tT,EAAmB5tT,EAA4B,kBACxCshP,EAAWhqN,OAAO,SAAU5C,GAAYA,EAASiQ,SAAS,WAAaipR,GAAoBA,EAAiB,wBAEvH,KAAK,EACL,IAAK,MACD,OAAOtsE,EAAW/qN,UAG/B6qN,EAAWj+O,UAQlB2sJ,GAAa/8J,UAAU86T,gCAAiC,EAAI/4R,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASirN,IAC/H,IAAI9hP,EAAU00B,EAAUk5R,EACxB,OAAO/4R,EAAc78B,QAAQm/B,MAAK,SAAoB8qN,GAClD,OACI,OAAQA,EAAWj9O,KAAOi9O,EAAWphP,MACjC,KAAK,EAED,OADAohP,EAAWphP,KAAO,GACX,EAAIi0B,EAAU5gC,SAASiP,KAAKuqT,eAEvC,KAAK,EAMD,GALA1tT,EAAWiiP,EAAWxpN,OACtB/D,EAAW10B,EAAmB,YAIZ00B,EAASiQ,SAAS,UAAY,CAC5Cs9M,EAAWphP,KAAO,EAClB,MAGJ,OAAOohP,EAAW3qN,OAAO,UAAU,GAEvC,KAAK,EAGD,QAAwDzhC,KAFxD+3T,EAAmB5tT,EAA4B,mBAExB,6BAA6C,CAChEiiP,EAAWphP,KAAO,GAClB,MAGJ,OAAOohP,EAAW3qN,OAAO,UAAU,GAEvC,KAAK,GACD,OAAO2qN,EAAW3qN,OAAO,SAAUs2R,EAAiB,8BAExD,KAAK,GACL,IAAK,MACD,OAAO3rE,EAAW1rN,UAG/BurN,EAAW3+O,UASlB2sJ,GAAa/8J,UAAUozT,qCAAsC,EAAIrxR,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASsrN,IACpI,IAAIniP,EAAU00B,EAAUk5R,EACxB,OAAO/4R,EAAc78B,QAAQm/B,MAAK,SAAoBmrN,GAClD,OACI,OAAQA,EAAWt9O,KAAOs9O,EAAWzhP,MACjC,KAAK,EAED,OADAyhP,EAAWzhP,KAAO,GACX,EAAIi0B,EAAU5gC,SAASiP,KAAKuqT,eAEvC,KAAK,EAID,OAHA1tT,EAAWsiP,EAAW7pN,KACtB/D,EAAW10B,EAAmB,SAC9B4tT,EAAmB5tT,EAA4B,kBACxCsiP,EAAWhrN,OAAO,SAAU5C,GAAYA,EAASiQ,SAAS,WAAaipR,GAAoBA,EAAiB,sBAEvH,KAAK,EACL,IAAK,MACD,OAAOtrE,EAAW/rN,UAG/B4rN,EAAWh/O,UASlB2sJ,GAAa/8J,UAAUkhN,qCAAsC,EAAIn/K,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASksN,IACpI,IAAI/iP,EAAU00B,EAAUk5R,EACxB,OAAO/4R,EAAc78B,QAAQm/B,MAAK,SAAoB+rN,GAClD,OACI,OAAQA,EAAWl+O,KAAOk+O,EAAWriP,MACjC,KAAK,EAED,OADAqiP,EAAWriP,KAAO,GACX,EAAIi0B,EAAU5gC,SAASiP,KAAKuqT,eAEvC,KAAK,EAID,OAHA1tT,EAAWkjP,EAAWzqN,KACtB/D,EAAW10B,EAAmB,SAC9B4tT,EAAmB5tT,EAA4B,kBACxCkjP,EAAW5rN,OAAO,SAAU5C,GAAYA,EAASiQ,SAAS,WAAaipR,GAAoBA,EAAiB,4BAEvH,KAAK,EACL,IAAK,MACD,OAAO1qE,EAAW3sN,UAG/BwsN,EAAW5/O,UAOlB2sJ,GAAa/8J,UAAU+6T,0BAA4B,WAC/C,QAAS3qT,KAAKsgT,YAAYrrR,iBAY9B03H,GAAa/8J,UAAUg7T,4BAA8B,SAAU3hT,GAC3DjJ,KAAKiqT,0BAA4BhhT,GAOrC0jJ,GAAa/8J,UAAUi7T,4BAA8B,WACjD,OAAO7qT,KAAKiqT,2BAehBt9J,GAAa/8J,UAAUkyH,WACfwzH,IAAS,EAAI3jN,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASysN,EAAU55L,EAAQ0vC,EAASq3J,EAAchjF,GAC7H,IACIwgJ,EAAkB7zT,EAAQmvC,EAAQ2kR,EAAe39N,EAAQ49N,EADzDx6S,EAAO7N,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,GAAmBA,UAAU,GAAK,GAE/E,OAAO+uB,EAAc78B,QAAQm/B,MAAK,SAAoBosN,GAClD,OACI,OAAQA,EAAWv+O,KAAOu+O,EAAW1iP,MACjC,KAAK,EAGD,OAFAotT,EAAmBrQ,GAA+Bz6S,KAAMumD,EAAQ+jH,GAChE81E,EAAW1iP,KAAO,GACX,EAAIi0B,EAAU5gC,SAASiP,KAAKirT,eAAe1kQ,EAAQ0vC,EAASq3J,EAAcw9D,EAAkBt6S,IAEvG,KAAK,EAUD,GATAvZ,EAASmpP,EAAW9qN,KACpB8Q,EAASpmC,KAAK+kT,iBACdgG,OAAgB,EAEZ9zT,EAAOi0T,iBACPH,EAAgB3kR,EAAOnvC,EAAOi0T,iBAElC99N,EAASn2F,EAAO/E,MAAMgH,IAAIktC,GAEC,qBAArB0kR,EAA0C,CAC5C1qE,EAAW1iP,KAAO,GAClB,MAKJ,OAFAstT,EAAYD,EAAgB39N,EAAO9wF,OAAOyuT,GAAiB39N,EAC3DgzJ,EAAW1iP,KAAO,IACX,EAAIi0B,EAAU5gC,SAAS4I,EAAW9E,QAAQ/B,IAAIk4T,EAAU9xT,KAAI,SAAUxI,GACzE,OAAO,IAAIiJ,EAAW9E,SAAQ,SAAU9D,GACpC,OAAOL,EAAEk+F,KAAK,kBAAmB79F,WAI7C,KAAK,GACDq8F,EAASA,EAAOt0E,QAAO,SAAUpoB,GAC7B,OAAOA,EAAE4mG,YAAcgzE,KAG/B,KAAK,GACD,OAAO81E,EAAWjsN,OAAO,SAAU,CAC/B42R,cAAeA,EACf39N,OAAQA,EACR4tH,UAAW/jN,EAAOskN,aAG1B,KAAK,GACL,IAAK,MACD,OAAO6kC,EAAWhtN,UAG/B+sN,EAAWngP,UAGX,SAAU+lP,EAAMolE,EAAMC,EAAMC,EAAMC,GACrC,OAAOh2E,GAAOp5O,MAAM8D,KAAM2C,aAkPlCgqJ,GAAa/8J,UAAUm1T,eAAiB,WACpC,OAAOrJ,GAAyB17S,OAWpC2sJ,GAAa/8J,UAAU6gN,qBAAuB,WAC1C,OAAO,EAAIkjC,EAAckI,cAAc,KAI3CrrP,EAAOD,QAAQo8J,aAAeA,GAE9Bn8J,EAAOD,QAAQm7O,eAAiBA,K,+CC/2JhC,IAAIx/I,EAAK,EAAQ,IAAgB31F,EAC7BxC,EAAS,EAAQ,KACjBo/H,EAAc,EAAQ,KACtBvoH,EAAM,EAAQ,IACdqoH,EAAa,EAAQ,KACrBuiF,EAAQ,EAAQ,KAChBy7F,EAAc,EAAQ,KACtBpwQ,EAAO,EAAQ,KACfmzF,EAAa,EAAQ,KACrB2T,EAAc,EAAQ,IACtBxE,EAAU,EAAQ,KAAWA,QAC7Bj/C,EAAW,EAAQ,KACnB7qD,EAAOsuG,EAAc,KAAO,OAE5BqpK,EAAW,SAAUhkN,EAAMh5F,GAE7B,IACIirC,EADArjC,EAAQunI,EAAQnvI,GAEpB,GAAc,MAAV4H,EAAe,OAAOoxF,EAAKn5D,GAAGj4B,GAElC,IAAKqjC,EAAQ+tD,EAAKkkN,GAAIjyQ,EAAOA,EAAQA,EAAM/qC,EACzC,GAAI+qC,EAAM5kC,GAAKrG,EAAK,OAAOirC,GAI/BzuC,EAAOD,QAAU,CACf4lN,eAAgB,SAAU19E,EAAS9lB,EAAMiV,EAAQguF,GAC/C,IAAIztH,EAAIswC,GAAQ,SAAUzrC,EAAM/wD,GAC9Bg3F,EAAWjmC,EAAM7E,EAAGwqB,EAAM,MAC1B3lB,EAAK92F,GAAKy8G,EACV3lB,EAAKn5D,GAAK9/B,EAAO,MACjBi5F,EAAKkkN,QAAKx+S,EACVs6F,EAAKmkN,QAAKz+S,EACVs6F,EAAK3zD,GAAQ,EACG3mC,MAAZupC,GAAuBu5K,EAAMv5K,EAAU2rF,EAAQ56B,EAAK4oH,GAAQ5oH,MAsDlE,OApDAmmC,EAAYhrC,EAAEv4F,UAAW,CAGvBq1C,MAAO,WACL,IAAK,IAAI+nD,EAAO9I,EAASlkF,KAAM2yG,GAAOxjH,EAAO69F,EAAKn5D,GAAIoL,EAAQ+tD,EAAKkkN,GAAIjyQ,EAAOA,EAAQA,EAAM/qC,EAC1F+qC,EAAM1rC,GAAI,EACN0rC,EAAMvtC,IAAGutC,EAAMvtC,EAAIutC,EAAMvtC,EAAEwC,OAAIxB,UAC5BvD,EAAK8vC,EAAMzvC,GAEpBw9F,EAAKkkN,GAAKlkN,EAAKmkN,QAAKz+S,EACpBs6F,EAAK3zD,GAAQ,GAIf,OAAU,SAAUrlC,GAClB,IAAIg5F,EAAO9I,EAASlkF,KAAM2yG,GACtB1zE,EAAQ+xQ,EAAShkN,EAAMh5F,GAC3B,GAAIirC,EAAO,CACT,IAAIvhC,EAAOuhC,EAAM/qC,EACb2N,EAAOo9B,EAAMvtC,SACVs7F,EAAKn5D,GAAGoL,EAAMzvC,GACrByvC,EAAM1rC,GAAI,EACNsO,IAAMA,EAAK3N,EAAIwJ,GACfA,IAAMA,EAAKhM,EAAImQ,GACfmrF,EAAKkkN,IAAMjyQ,IAAO+tD,EAAKkkN,GAAKxzS,GAC5BsvF,EAAKmkN,IAAMlyQ,IAAO+tD,EAAKmkN,GAAKtvS,GAChCmrF,EAAK3zD,KACL,QAAS4F,GAIb7kC,QAAS,SAAiB+tH,GACxBjkC,EAASlkF,KAAM2yG,GAGf,IAFA,IACI1zE,EADA1oC,EAAIqU,EAAIu9G,EAAYxlH,UAAUjT,OAAS,EAAIiT,UAAU,QAAKjQ,EAAW,GAElEusC,EAAQA,EAAQA,EAAM/qC,EAAI8L,KAAKkxS,IAGpC,IAFA36S,EAAE0oC,EAAM5e,EAAG4e,EAAM5kC,EAAG2F,MAEbi/B,GAASA,EAAM1rC,GAAG0rC,EAAQA,EAAMvtC,GAK3C8mB,IAAK,SAAaxkB,GAChB,QAASg9S,EAAS9sN,EAASlkF,KAAM2yG,GAAO3+G,MAGxC2zI,GAAaz7C,EAAG/D,EAAEv4F,UAAW,OAAQ,CACvC0D,IAAK,WACH,OAAO4wF,EAASlkF,KAAM2yG,GAAMt5E,MAGzB8uD,GAETt+B,IAAK,SAAUmjC,EAAMh5F,EAAKN,GACxB,IACImO,EAAMjG,EADNqjC,EAAQ+xQ,EAAShkN,EAAMh5F,GAoBzB,OAjBEirC,EACFA,EAAM5e,EAAI3sB,GAGVs5F,EAAKmkN,GAAKlyQ,EAAQ,CAChBzvC,EAAGoM,EAAQunI,EAAQnvI,GAAK,GACxBqG,EAAGrG,EACHqsB,EAAG3sB,EACHhC,EAAGmQ,EAAOmrF,EAAKmkN,GACfj9S,OAAGxB,EACHa,GAAG,GAEAy5F,EAAKkkN,KAAIlkN,EAAKkkN,GAAKjyQ,GACpBp9B,IAAMA,EAAK3N,EAAI+qC,GACnB+tD,EAAK3zD,KAES,MAAVz9B,IAAeoxF,EAAKn5D,GAAGj4B,GAASqjC,IAC7B+tD,GAEXgkN,SAAUA,EACV56F,UAAW,SAAUjuH,EAAGwqB,EAAMiV,GAG5BqpL,EAAY9oN,EAAGwqB,GAAM,SAAUpJ,EAAUr9C,GACvClsD,KAAK9J,GAAKguF,EAASqlB,EAAUoJ,GAC7B3yG,KAAKi6J,GAAK/tG,EACVlsD,KAAKmxS,QAAKz+S,KACT,WAKD,IAJA,IACIw5D,EADOlsD,KACKi6J,GACZh7H,EAFOj/B,KAEMmxS,GAEVlyQ,GAASA,EAAM1rC,GAAG0rC,EAAQA,EAAMvtC,EAEvC,OANWsO,KAMD9J,KANC8J,KAMYmxS,GAAKlyQ,EAAQA,EAAQA,EAAM/qC,EANvC8L,KAMgD9J,GAAGg7S,IAMnCrwQ,EAAK,EAApB,QAARqrB,EAA+BjtB,EAAM5kC,EAC7B,UAAR6xD,EAAiCjtB,EAAM5e,EAC5B,CAAC4e,EAAM5kC,EAAG4kC,EAAM5e,KAdpBrgB,KAQJ9J,QAAKxD,EACHmuC,EAAK,MAMb+mF,EAAS,UAAY,UAAWA,GAAQ,GAG3CoM,EAAWrhB,M,6BC5If,IAAIzkG,EAAS,EAAQ,IACjBguC,EAAO,EAAQ,IACfgwC,EAAK,EAAQ,IACby7C,EAAc,EAAQ,IACtBC,EAAU,EAAQ,GAAR,CAAkB,WAEhCp3I,EAAOD,QAAU,SAAU06G,GACzB,IAAI9iB,EAAwB,mBAAbjsC,EAAK+uD,GAAqB/uD,EAAK+uD,GAAO/8F,EAAO+8F,GACxD08B,GAAex/C,IAAMA,EAAEy/C,IAAU17C,EAAG31F,EAAE4xF,EAAGy/C,EAAS,CACpDryI,cAAc,EACdjC,IAAK,WAAc,OAAO0M,U,6BCV9B,IAAIkO,EAAS,EAAQ,IACjBmuC,EAAU,EAAQ,IAClB4mF,EAAO,EAAQ,KACfj4B,EAAQ,EAAQ,IAChB7uD,EAAO,EAAQ,IACfg3E,EAAc,EAAQ,KACtBqiF,EAAQ,EAAQ,KAChBviF,EAAa,EAAQ,KACrB3pH,EAAW,EAAQ,IACnBgxH,EAAiB,EAAQ,IACzBpuC,EAAK,EAAQ,IAAgB31F,EAC7BggB,EAAO,EAAQ,KAAR,CAA4B,GACnCoxH,EAAc,EAAQ,IAE1Bn3I,EAAOD,QAAU,SAAUoiH,EAAM8lB,EAASnhH,EAASo+L,EAAQ9tF,EAAQ+tF,GACjE,IAAI78E,EAAO5qH,EAAOykG,GACdxqB,EAAI2wC,EACJ88E,EAAQhuF,EAAS,MAAQ,MACzBnvG,EAAQ0vE,GAAKA,EAAEv4F,UACf66F,EAAI,GAqCR,OApCKk9C,GAA2B,mBAALx/C,IAAqBwtH,GAAWl9L,EAAMre,UAAY4wG,GAAM,YACjF,IAAI7iB,GAAIlhE,UAAUvpB,YAOlByqF,EAAIswC,GAAQ,SAAUnmI,EAAQ2pC,GAC5Bg3F,EAAW3gI,EAAQ61F,EAAGwqB,EAAM,MAC5BrgH,EAAOi5T,GAAK,IAAIzyL,EACApmI,MAAZupC,GAAuBu5K,EAAMv5K,EAAU2rF,EAAQt1H,EAAOsjN,GAAQtjN,MAEpEikB,EAAK,kEAAkE1d,MAAM,MAAM,SAAUoyG,GAC3F,IAAIugN,EAAkB,OAAPvgN,GAAuB,OAAPA,EAC3BA,KAAOxyF,KAAWk9L,GAAkB,SAAP1qG,IAAiB9uD,EAAKgsC,EAAEv4F,UAAWq7G,GAAK,SAAU5rG,EAAG6kB,GAEpF,GADA+uG,EAAWjzH,KAAMmoF,EAAG8iB,IACfugN,GAAY71G,IAAYrsM,EAASjK,GAAI,MAAc,OAAP4rG,QAAev4G,EAChE,IAAIuE,EAAS+I,KAAKurT,GAAGtgN,GAAW,IAAN5rG,EAAU,EAAIA,EAAG6kB,GAC3C,OAAOsnS,EAAWxrT,KAAO/I,QAG7B0+M,GAAWzpH,EAAG/D,EAAEv4F,UAAW,OAAQ,CACjC0D,IAAK,WACH,OAAO0M,KAAKurT,GAAGzkS,UApBnBqhE,EAAIutH,EAAOS,eAAe19E,EAAS9lB,EAAMiV,EAAQguF,GACjDziF,EAAYhrC,EAAEv4F,UAAW0nB,GACzB2rH,EAAKC,MAAO,GAuBd5I,EAAenyC,EAAGwqB,GAElBloB,EAAEkoB,GAAQxqB,EACV9rC,EAAQA,EAAQQ,EAAIR,EAAQgB,EAAIhB,EAAQM,EAAG8tC,GAEtCkrH,GAASD,EAAOU,UAAUjuH,EAAGwqB,EAAMiV,GAEjCz/B,I,gBCxDT,IAAImrC,EAAU,EAAQ,KAClBviG,EAAO,EAAQ,MACnBvgC,EAAOD,QAAU,SAAUoiH,GACzB,OAAO,WACL,GAAI2gB,EAAQtzH,OAAS2yG,EAAM,MAAM39G,UAAU29G,EAAO,yBAClD,OAAO5hF,EAAK/wB,S,6BCJhB,IAAIq8C,EAAU,EAAQ,IAEtB7rD,EAAOD,QAAU,SAAUimN,GACzBn6J,EAAQA,EAAQU,EAAGy5J,EAAY,CAAEl5K,GAAI,WAGnC,IAFA,IAAI5tC,EAASiT,UAAUjT,OACnBg7F,EAAI,IAAI/zF,MAAMjH,GACXA,KAAUg7F,EAAEh7F,GAAUiT,UAAUjT,GACvC,OAAO,IAAIsQ,KAAK0qF,Q,6BCPpB,IAAIruC,EAAU,EAAQ,IAClBmtD,EAAY,EAAQ,KACpB5+F,EAAM,EAAQ,IACd4qM,EAAQ,EAAQ,KAEpBhlN,EAAOD,QAAU,SAAUimN,GACzBn6J,EAAQA,EAAQU,EAAGy5J,EAAY,CAAEzlL,KAAM,SAAcurB,GACnD,IACIrhD,EAASyvF,EAAGx2F,EAAG+U,EADfwtM,EAAQ9zM,UAAU,GAKtB,OAHA6mG,EAAUxpG,OACV/E,OAAoBvI,IAAV+jN,IACGjtG,EAAUitG,GACT/jN,MAAV4pD,EAA4B,IAAIt8C,MACpC0qF,EAAI,GACAzvF,GACF/G,EAAI,EACJ+U,EAAK2B,EAAI6rM,EAAO9zM,UAAU,GAAI,GAC9B6yM,EAAMl5J,GAAQ,GAAO,SAAUo6J,GAC7BhsH,EAAE16F,KAAKiZ,EAAGytM,EAAUxiN,UAGtBshN,EAAMl5J,GAAQ,EAAOouC,EAAE16F,KAAM06F,GAExB,IAAI1qF,KAAK0qF,S,gBCzBpB,IAAIi9C,EAAc,EAAQ,IACtB7+H,EAAU,EAAQ,IAClBwqG,EAAY,EAAQ,IACpB+1H,EAAS,EAAQ,KAAiB9yO,EACtC/F,EAAOD,QAAU,SAAUoiT,GACzB,OAAO,SAAUxhR,GAOf,IANA,IAKIn9B,EALAy2F,EAAI6oB,EAAUniF,GACdpoB,EAAOD,EAAQ2hF,GACf/6F,EAASqZ,EAAKrZ,OACdF,EAAI,EACJyH,EAAS,GAENvH,EAASF,GACdwE,EAAM+U,EAAKvZ,KACNm4I,IAAe0hG,EAAOv5O,KAAK26F,EAAGz2F,IACjCiD,EAAOjH,KAAK2iT,EAAY,CAAC3+S,EAAKy2F,EAAEz2F,IAAQy2F,EAAEz2F,IAG9C,OAAOiD,K,6BChBXtH,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEIiC,EAAgBC,EAFA,EAAQ,KAMxBg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAI5B,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAwBvF,IAAIw2T,EAAY,WACZ,SAASA,EAAUn5T,IACf,EAAIs/B,EAAiB/8B,SAASmL,KAAMyrT,GAEpCzrT,KAAK1N,OAASA,EAId0N,KAAK0rT,cAAgB,GA0DzB,OAvDA,EAAI75R,EAAch9B,SAAS42T,EAAW,CAAC,CACnCz3T,IAAK,eACLN,MAAO,SAAsBi4T,GAGzB,IAFA,IAAIpnT,EAEKy8C,EAAOr+C,UAAUjT,OAAQsW,EAAOrP,MAAMqqD,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAC5Fj7C,EAAKi7C,EAAO,GAAKt+C,UAAUs+C,IAG9B18C,EAAUvE,KAAK1N,QAAQsc,KAAK1S,MAAMqI,EAAS,CAAConT,GAAWrvT,OAAO0J,MAEpE,CACChS,IAAK,SACLN,MAAO,SAAgB4oD,EAAQ6yC,GAI3B,IAAIy8N,EAAY,SAAmB96S,GAC/B,IAAK,IAAIowC,EAAQv+C,UAAUjT,OAAQsW,EAAOrP,MAAMuqD,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IAClGn7C,EAAKm7C,EAAQ,GAAKx+C,UAAUw+C,GAGhCrwC,EAAQ5U,WAAMxJ,EAAWsT,EAAK1J,OAAO,CAACggD,MAEtCj/C,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiB7K,EAErB,IACI,IAAK,IAAwD8K,EAApDC,GAAY,EAAI9H,EAAcd,SAASs6F,KAAsB9xF,GAA6BG,EAAQC,EAAUC,QAAQC,MAAON,GAA4B,EAAM,CAClK,IAAIsuT,EAAYnuT,EAAM9J,WAEgBhB,IAAlCsN,KAAK0rT,cAAcC,KACnB3rT,KAAK0rT,cAAcC,GAAa3rT,KAAK6rT,aAAa53T,KAAK+L,KAAM2rT,IAGjE,IAAIG,EAAeF,EAAU33T,KAAK+L,KAAMA,KAAK0rT,cAAcC,IAC3DrvQ,EAAOoyC,GAAGi9N,EAAWG,IAE3B,MAAOx3T,GACLgJ,GAAoB,EACpBC,EAAiBjJ,EACnB,QACE,KACS+I,GAA6BI,EAAUI,QACxCJ,EAAUI,SAEhB,QACE,GAAIP,EACA,MAAMC,QAMnBkuT,EAlEK,GAqEhBl7T,EAAQsE,QAAU42T,G,6BC7GlB97T,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEI0wD,EAAcxuD,EAFD,EAAQ,KAMrBE,EAASF,EAFD,EAAQ,KAMhBqkG,EAAWrkG,EAFD,EAAQ,KAMlB0oD,EAAkB1oD,EAFA,EAAQ,KAM1B2+F,EAAY3+F,EAFD,EAAQ,MAMnBD,EAAgBC,EAFA,EAAQ,KAMxB2nD,EAAmB3nD,EAFD,EAAQ,IAM1Bg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxB4nD,EAA8B5nD,EAFA,EAAQ,IAMtC8nD,EAAa9nD,EAFA,EAAQ,IAMrB+D,EAAa/D,EAFD,EAAQ,IAMpB2lH,EAAW3lH,EAFD,EAAQ,KAMlBwkK,EAAsBxkK,EAFD,EAAQ,MAIjC,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAYvF,IAAI82T,EAAa,UAgBbC,EAAyBD,EAAa,UACtCE,EAAkBF,EAAa,cAC/BG,EAA6BH,EAAa,wBAC1CI,EAAmBJ,EAAa,SAChCK,EAA8BL,EAAa,wBAE/C,SAASM,EAAoBxvJ,GACzB,OAAOkvJ,EAAa,YAAclvJ,EAGtC,SAASyvJ,EAA+Bz6E,EAAW/0E,GAC/C,OAAOovJ,EAA6Br6E,EAAY,IAAM/0E,EAG1D,SAASyvJ,EAAuBhmQ,GAC5B,OAAO4lQ,EAAmB5lQ,EAO9B,IAAIimQ,EAA0B,SAAUC,GAGpC,SAASD,EAAwBE,IAC7B,EAAI96R,EAAiB/8B,SAASmL,KAAMwsT,GAEpC,IAAIntQ,GAAQ,EAAI7B,EAA4B3oD,SAASmL,MAAOwsT,EAAwBttT,YAAa,EAAIq+C,EAAiB1oD,SAAS23T,IAA0B18T,KAAKkQ,OAG9J,OADAq/C,EAAMprB,MAAQy4R,EACPrtQ,EAqUX,OA7UA,EAAI3B,EAAW7oD,SAAS23T,EAAyBC,IAWjD,EAAI56R,EAAch9B,SAAS23T,EAAyB,CAAC,CACjDx4T,IAAK,wBAKLN,MAAO,SAA+B8nK,EAAKxuG,GAEvC,IADA,IAAI7yD,EAAQ,EACH3K,EAAI,EAAGA,EAAIwQ,KAAKi0B,MAAMvkC,SAAUF,EACjCwQ,KAAKi0B,MAAMjgC,IAAIxE,GAAGiK,WAAW4yT,EAAoB,QAAQlyT,EAEjE6yD,EAAK7yD,KAEV,CACCnG,IAAK,uBACLN,MAAO,SAA8BmpK,EAAWrB,EAAKxuG,GACjD,IAAIgxG,EAAW2uJ,EAAY3sT,KAAKi0B,MAAOo4R,EAAoBxvJ,IACvD+vJ,EAAgB,GAGhBvvT,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiB7K,EAErB,IACI,IAAK,IAAoF8K,EAAhFC,GAAY,EAAI9H,EAAcd,UAAS,EAAI0/F,EAAU1/F,SAASmpK,GAAY,OAAe3gK,GAA6BG,EAAQC,EAAUC,QAAQC,MAAON,GAA4B,EAAM,CAC9L,IAAIs6S,GAAc,EAAIr5P,EAAgBzpD,SAAS2I,EAAM9J,MAAO,GACxDmrK,EAAM84I,EAAY,GAClB94R,EAAM84R,EAAY,GAGlBiV,EAAc/tJ,GADC,iBAARhgJ,EACc,CACjBizN,QAASjzN,GAGQA,GAG/B,MAAOvqB,GACLgJ,GAAoB,EACpBC,EAAiBjJ,EACnB,QACE,KACS+I,GAA6BI,EAAUI,QACxCJ,EAAUI,SAEhB,QACE,GAAIP,EACA,MAAMC,GAKlB,OAAOqvT,IAEZ,CACC54T,IAAK,qBACLN,MAAO,SAA4BmpK,EAAWC,EAAWtB,EAAKxuG,GAE1DA,EADehtD,KAAK6sT,qBAAqBhwJ,GAC3BC,IAAc,MAEjC,CACC9oK,IAAK,sBACLN,MAAO,SAA6BmpK,EAAWrB,EAAKxuG,GAChDA,EAAKhtD,KAAK6sT,qBAAqBhwJ,IAAc,MAElD,CACC7oK,IAAK,yBACLN,MAAO,SAAgC8nK,EAAKxuG,GACxC,IAAK,IAAIx9D,EAAI,EAAGA,EAAIwQ,KAAKi0B,MAAMvkC,SAAUF,EACrC,GAAIwQ,KAAKi0B,MAAMjgC,IAAIxE,GAAGiK,WAAW4yT,EAAoB,KAAM,CACvD,IAAIxvJ,EAAY78J,KAAKi0B,MAAMjgC,IAAIxE,GAAGqJ,MAAM,KAAK,GACzCktD,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBvzD,EAEtB,IACI,IAAK,IAA0GwzD,EAAtGC,GAAa,EAAIxwD,EAAcd,UAAS,EAAIolG,EAASplG,SAASmL,KAAK6sT,qBAAqBhwJ,OAAwB92G,GAA8BG,EAASC,EAAWzoD,QAAQC,MAAOooD,GAA6B,EAAM,CAGzNiH,EAFW9G,EAAOxyD,QAIxB,MAAOY,GACL0xD,GAAqB,EACrBC,EAAkB3xD,EACpB,QACE,KACSyxD,GAA8BI,EAAWtoD,QAC1CsoD,EAAWtoD,SAEjB,QACE,GAAImoD,EACA,MAAMC,OAO/B,CACCjyD,IAAK,uBACLN,MAAO,SAA8BmpK,EAAWC,EAAWI,EAAa1B,GACpE,IAAIwC,EAAWh+J,KAAK6sT,qBAAqBhwJ,IAAc,GACvDmB,EAASlB,GAAaI,EACtB4vJ,EAAY9sT,KAAKi0B,MAAOo4R,EAAoBxvJ,GAAYmB,KAK7D,CACChqK,IAAK,iCACLN,MAAO,SAAwCsqH,EAAqB8+C,EAAWtB,EAAKxuG,GAChFA,EAAK2/P,EAAY3sT,KAAKi0B,MAAOq4R,EAA+BtuM,EAAqB8+C,OAEtF,CACC9oK,IAAK,qCACLN,MAAO,SAA4C8nK,EAAKxuG,GACpD,IAAK,IAAIx9D,EAAI,EAAGA,EAAIwQ,KAAKi0B,MAAMvkC,SAAUF,EAAG,CACxC,IAAIwE,EAAMgM,KAAKi0B,MAAMjgC,IAAIxE,GACrBwE,EAAIyF,WAAWyyT,IAMfl/P,EAAK,CACD6kL,UAAW79O,EAAIuF,OAAO2yT,EAA2Bx8T,OAAQ,IACzDotK,UAAW9oK,EAAIuF,OAAO2yT,EAA2Bx8T,OAAS,IAC1D2tK,YAAasvJ,EAAY3sT,KAAKi0B,MAAOjgC,KAIjDg5D,EAAK,QAEV,CACCh5D,IAAK,iCACLN,MAAO,SAAwCsqH,EAAqB8+C,EAAWO,EAAa7B,GACzEmxJ,EAAY3sT,KAAKi0B,MAAOq4R,EAA+BtuM,EAAqB8+C,KAEvF98J,KAAKu9J,iCAAiCv/C,EAAqB8+C,EAAWO,EAAa7B,KAG5F,CACCxnK,IAAK,mCACLN,MAAO,SAA0CsqH,EAAqB8+C,EAAWO,EAAa7B,GAC1FsxJ,EAAY9sT,KAAKi0B,MAAOq4R,EAA+BtuM,EAAqB8+C,GAAYO,KAE7F,CACCrpK,IAAK,wBACLN,MAAO,SAA+B8nK,EAAKxuG,GACvCA,EAAK2/P,EAAY3sT,KAAKi0B,MAAOg4R,MAElC,CACCj4T,IAAK,0BACLN,MAAO,SAAiC8pK,EAAYhC,GAChDsxJ,EAAY9sT,KAAKi0B,MAAOg4R,EAAiBzuJ,KAE9C,CACCxpK,IAAK,oBACLN,MAAO,SAA2B6yD,EAAQo3G,EAAUnC,GAChDsxJ,EAAY9sT,KAAKi0B,MAAOs4R,EAAuBhmQ,GAASo3G,KAE7D,CACC3pK,IAAK,mBACLN,MAAO,SAA0B8nK,EAAKxuG,GAIlC,IAHA,IAAI/1D,EAAS,GACT25B,EAAS27R,EAAuB,IAE3B/8T,EAAI,EAAGA,EAAIwQ,KAAKi0B,MAAMvkC,SAAUF,EAAG,CACxC,IAAIwE,EAAMgM,KAAKi0B,MAAMjgC,IAAIxE,GACzB,GAAIwE,EAAIyF,WAAWm3B,GAEf35B,EADajD,EAAIuF,OAAOq3B,EAAOlhC,SACdi9T,EAAY3sT,KAAKi0B,MAAOjgC,GAGjDg5D,EAAK/1D,KAEV,CACCjD,IAAK,2BACLN,MAAO,SAAkCkpB,GACrC,IAAImhC,EAAS/9C,KAET+sT,EAAwBJ,EAAY3sT,KAAKi0B,MAAOm4R,IAAgC,GAChFpuJ,EAAW,GAEf,IAAK,IAAI8zE,KAAWi7E,EAAuB,CACvC,GAAIp9T,OAAOC,UAAUC,eAAeC,KAAKi9T,EAAuBj7E,GAiB5D,GAAa,UAhBF,WAEP,IAAID,EAAYC,EAAQv4O,OAAO,EAAG,IAC9BujK,EAAYg1E,EAAQv4O,OAAO,IAQ/B,GAPAwkD,EAAO09G,+BAA+Bo2E,EAAW/0E,EAAW,MAAM,SAAUO,GACxEW,EAAShuK,KAAK,CACV6hP,UAAWA,EACX/0E,UAAWA,EACXO,YAAaA,OAGjBzgJ,GAASk1N,EAAQpiP,QAAUktB,EAC3B,MAAO,QAZJ,GAgBW,MAG9B,OAAOjjB,EAAW9E,QAAQ9D,QAAQitK,KAEvC,CACChqK,IAAK,6BACLN,MAAO,WACH,IAAIq5T,EAAwBJ,EAAY3sT,KAAKi0B,MAAOm4R,IAAgC,GACpF,OAAOzyT,EAAW9E,QAAQ9D,SAAQ,EAAI+E,EAAOjB,SAASk4T,GAAuBr9T,UAElF,CACCsE,IAAK,8BACLN,MAAO,SAAqCsqK,GACxC,IAAI+uJ,EAAwBJ,EAAY3sT,KAAKi0B,MAAOm4R,IAAgC,GAChF1kQ,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBl1D,EAEtB,IACI,IAAK,IAAuDm1D,EAAnDC,GAAa,EAAInyD,EAAcd,SAASmpK,KAAqBt2G,GAA8BG,EAASC,EAAWpqD,QAAQC,MAAO+pD,GAA6B,EAAM,CACtK,IAAIoqL,EAAUjqL,EAAOn0D,aAEdq5T,EAAsBj7E,EAAQD,UAAY,IAAMC,EAAQh1E,YAErE,MAAOxoK,GACLqzD,GAAqB,EACrBC,EAAkBtzD,EACpB,QACE,KACSozD,GAA8BI,EAAWjqD,QAC1CiqD,EAAWjqD,SAEjB,QACE,GAAI8pD,EACA,MAAMC,GAMlB,OADAklQ,EAAY9sT,KAAKi0B,MAAOm4R,EAA6BW,GAC9CpzT,EAAW9E,QAAQ9D,YAE/B,CACCiD,IAAK,4BACLN,MAAO,SAAmCsqK,GACtC,IAAI+uJ,EAAwBJ,EAAY3sT,KAAKi0B,MAAOm4R,IAAgC,GAChFriQ,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBv3D,EAEtB,IACI,IAAK,IAAuDw3D,EAAnDC,GAAa,EAAIx0D,EAAcd,SAASmpK,KAAqBj0G,GAA8BG,EAASC,EAAWzsD,QAAQC,MAAOosD,GAA6B,EAAM,CACtK,IAAI+nL,EAAU5nL,EAAOx2D,MAErBq5T,EAAsBj7E,EAAQD,UAAY,IAAMC,EAAQh1E,YAAa,GAE3E,MAAOxoK,GACL01D,GAAqB,EACrBC,EAAkB31D,EACpB,QACE,KACSy1D,GAA8BI,EAAWtsD,QAC1CssD,EAAWtsD,SAEjB,QACE,GAAImsD,EACA,MAAMC,GAMlB,OADA6iQ,EAAY9sT,KAAKi0B,MAAOm4R,EAA6BW,GAC9CpzT,EAAW9E,QAAQ9D,YAS/B,CACCiD,IAAK,gBACLN,MAAO,WAEH,OADAsM,KAAKi0B,MAAMkuG,WAAW6pL,GACfryT,EAAW9E,QAAQ9D,YAK/B,CACCiD,IAAK,aACLN,MAAO,SAAoB8nK,EAAKxuG,GAE5BA,EADc2/P,EAAY3sT,KAAKi0B,MAAO+3R,MAG3C,CACCh4T,IAAK,eACLN,MAAO,SAAsB8nK,EAAKkB,GAC9BowJ,EAAY9sT,KAAKi0B,MAAO+3R,EAAwBtvJ,KAErD,CACC1oK,IAAK,QACLN,MAAO,SAAeE,EAAMuqK,EAAQnxG,GAChC,OAAOrzD,EAAW9E,QAAQ9D,QAAQi8D,EAAK,UAE3C,CAAC,CACDh5D,IAAK,SACLN,MAAO,SAAgBg5T,GAEnB,IADA,IAAIh9T,EAASg9T,EAASh9T,OACbF,EAAI,EAAGA,EAAIE,EAAQF,IACxB,GAAIk9T,EAAS14T,IAAIxE,GAAGiK,WAAWsyT,GAC3B,OAAO,EAGf,OAAO,MAGRS,EA9UmB,CA+U5BpyJ,EAAoBvlK,SAKtB,SAAS83T,EAAY14R,EAAOjgC,GACxB,IAGI,OAAOgJ,KAAKC,MAAMg3B,EAAMqqG,QAAQtqI,IAClC,MAAOtD,GACL6qH,EAAS1mH,QAAQgD,IAAI,kCAAmC7D,EAAKtD,EAAE8R,OAAS9R,GACxE6qH,EAAS1mH,QAAQgD,IAAInH,EAAE8R,OAE3B,OAAO,KAGX,SAASsqT,EAAY74R,EAAOjgC,EAAK6qB,GAC7BoV,EAAMkqG,QAAQnqI,GAAK,EAAIowD,EAAYvvD,SAASgqB,IAhBhDtuB,EAAQsE,QAAU23T,G,gBChclB,IAAIzgO,EAAW,EAAQ,IACnByd,EAAY,EAAQ,KACpBo+B,EAAU,EAAQ,GAAR,CAAkB,WAChCp3I,EAAOD,QAAU,SAAUk6F,EAAGkpE,GAC5B,IACI52G,EADAorC,EAAI4D,EAAStB,GAAGxrF,YAEpB,YAAavM,IAANy1F,GAAiDz1F,OAA7BqqD,EAAIgvC,EAAS5D,GAAGy/C,IAAyB+rB,EAAInqD,EAAUzsD,K,cCPpFvsD,EAAOD,QAAU,SAAUoL,GACzB,IACE,MAAO,CAAEjL,GAAG,EAAO2vB,EAAG1kB,KACtB,MAAOjL,GACP,MAAO,CAAEA,GAAG,EAAM2vB,EAAG3vB,M,gBCJzB,IAAIq7F,EAAW,EAAQ,IACnBziF,EAAW,EAAQ,IACnBunS,EAAuB,EAAQ,KAEnCrgT,EAAOD,QAAU,SAAU43F,EAAG7kE,GAE5B,GADAyoE,EAAS5D,GACL7+E,EAASga,IAAMA,EAAErkB,cAAgBkpF,EAAG,OAAO7kE,EAC/C,IAAIwtR,EAAoBD,EAAqBt6S,EAAE4xF,GAG/C,OADAp3F,EADc+/S,EAAkB//S,SACxBuyB,GACDwtR,EAAkBjgT,U,6BCR3BlB,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEIg+B,EAAgB97B,EAFD,EAAQ,KAMvB0oD,EAAkB1oD,EAFA,EAAQ,KAM1B2+F,EAAY3+F,EAFD,EAAQ,MAMnBD,EAAgBC,EAFA,EAAQ,KAIxB+7B,EAAY,EAAQ,GAIpBu5E,EAAmBt1G,EAFA,EAAQ,KAM3Bu1G,EAAYv1G,EAFD,EAAQ,KAMnB2nD,EAAmB3nD,EAFD,EAAQ,IAM1Bg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxB4nD,EAA8B5nD,EAFA,EAAQ,IAMtC8nD,EAAa9nD,EAFA,EAAQ,IAIrB+rN,EAAS,EAAQ,KAEjBh1H,EAAU,EAAQ,IAIlB4uB,EAAW3lH,EAFD,EAAQ,KAIlBgjF,EAAS,EAAQ,KAErB,SAAShjF,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAuBvF,IAAI+3T,EAAmB,IAAIn7T,MAAM,0BAE7Bo7T,EAAmB,SAAU5gN,GA+B7B,SAAS4gN,EAAiBvsJ,EAAUntI,EAAQqC,EAAUgmN,EAAesxE,EAAYz6T,EAAS0U,IACtF,EAAIyqB,EAAiB/8B,SAASmL,KAAMitT,GAEpC,IAAI5tQ,GAAQ,EAAI7B,EAA4B3oD,SAASmL,MAAOitT,EAAiB/tT,YAAa,EAAIq+C,EAAiB1oD,SAASo4T,IAAmBn9T,KAAKkQ,OAgBhJ,OAdAq/C,EAAM+zL,UAAY1yE,EAClBrhH,EAAM9rB,OAASA,EACf8rB,EAAMzpB,SAAWA,EACjBypB,EAAMu8L,cAAgBA,EACtBv8L,EAAM6tQ,WAAaA,EACnB7tQ,EAAM5sD,QAAUA,EAChB4sD,EAAMqjE,WAAY,EAClBrjE,EAAMpuC,QAAU9J,EAChBk4C,EAAM8tQ,OAAQ,EACd9tQ,EAAMzkC,SAAW,KACjBykC,EAAM+tQ,yBAA2B,KAGjC/tQ,EAAMguQ,cACChuQ,EAoKA,IACCnsB,EAqKZ,OA3XA,EAAIwqB,EAAW7oD,SAASo4T,EAAkB5gN,IAoD1C,EAAIx6E,EAAch9B,SAASo4T,EAAkB,CAAC,CAC1Cj5T,IAAK,cACLN,MAAO,WACH,IAAIqqD,EAAS/9C,KAEbzL,QAAQsD,IAAI,kEAC0B,OAAlCmI,KAAKotT,0BACLn7T,aAAa+N,KAAKotT,0BAEtBptT,KAAKotT,yBAA2Bz6T,YAAW,WAClCorD,EAAOovQ,OAAUpvQ,EAAO2kE,YACzBnuH,QAAQsD,IAAI,mCACZkmD,EAAOr3C,OAAOsmT,MAEnB,OAER,CACCh5T,IAAK,YACLN,MAAO,WACmC,OAAlCsM,KAAKotT,2BACLn7T,aAAa+N,KAAKotT,0BAClBptT,KAAKotT,yBAA2B,QAGzC,CACCp5T,IAAK,gBACLN,MAAO,SAAuBtB,EAAM4lG,GAChC,OAAIh4F,KAAKmtT,MACEhiN,EAAUt2G,QAAQ7D,OAAO,IAAIa,MAAM,kCAE9CmmG,EAAQ8jJ,eAAiB97O,KAAK47O,cACvB57O,KAAKozO,UAAU8I,aAAa9pP,GAAM,EAAI84G,EAAiBr2G,SAAS,GAAImL,KAAKuzB,QAAQ,EAAI23E,EAAiBr2G,SAAS,GAAImL,KAAK41B,SAAUoiE,QAE9I,CACChkG,IAAK,gBACLN,MAAO,SAAuBtB,GAC1B,IAAIghE,EAASpzD,KAEb,OAAIA,KAAKmtT,MACEhiN,EAAUt2G,QAAQ7D,OAAO,IAAIa,MAAM,kCAE9CmO,KAAKstT,eAAiBl7T,EACf,IAAI+4G,EAAUt2G,SAAQ,SAAU9D,EAASC,GAC5CoiE,EAAOm6P,cAAgBx8T,EACvBqiE,EAAOo6P,aAAex8T,QAG/B,CACCgD,IAAK,cACLN,MAAO,SAAqBhD,GACxB,IAAIsP,KAAKmtT,MAEF,GAAIz8T,EAAE4mG,YAAct3F,KAAKstT,eAC5BttT,KAAKstT,oBAAiB56T,EACtBsN,KAAKwtT,kBAAe96T,EACpBsN,KAAKqtT,cACLrtT,KAAKutT,cAAc78T,OAChB,CACHsP,KAAKstT,oBAAiB56T,EACtB,IAAI6vI,EAAY,IAAI1wI,MAAM,iCAAmCmO,KAAKstT,eAAiB,YAAc58T,EAAE4mG,WACnG,GAAIt3F,KAAKwtT,aAAc,CACnB,IAAIx8T,EAASgP,KAAKwtT,aAClBxtT,KAAKwtT,kBAAe96T,EACpB1B,EAAOuxI,GAEXviI,KAAK0G,OAAO67H,MAGrB,CACCvuI,IAAK,OACLN,MAAO,WACHsM,KAAKytT,YACAztT,KAAKmtT,OACNntT,KAAK8d,aAGd,CACC9pB,IAAK,SACLN,MAAO,SAAgBhD,GAEnB,GADAsP,KAAKytT,aACAztT,KAAKmtT,MAAO,CAEb,GADAntT,KAAK0iH,WAAY,EACb1iH,KAAKuzB,QAAUvzB,KAAK41B,UAAY51B,KAAK47O,cAGrC,GAAIlrP,IAAMs8T,EAAkB,CACxB,IAAIU,GAAe,EAAI90O,EAAO2oI,mBAC9BvhN,KAAK2tT,cAAcD,EAAap2N,UAAWo2N,EAAaz1N,mBACrD,GAAIvnG,aAAaixN,EAAO1lG,YAAa,CAExC,GADavrH,EAAEmsH,cACA78G,KAAKuzB,OAAQ,CACxB,IAAIykE,EAAUtnG,EAAEunG,aACI,8BAAhBvnG,EAAE4mG,WACFU,EAAQz4F,KAAOy4F,EAAQz4F,MAAQ,YAC/By4F,EAAQvrF,OAASurF,EAAQvrF,QAAUurF,EAAQl7F,MAAQ,iBACnDk7F,EAAQ8jJ,eAAiB97O,KAAK47O,cAC9B57O,KAAK2tT,cAAc,4BAA6B31N,IAEhDh4F,KAAK2tT,cAAc,4BAA6B,CAC5CpuT,KAAM,YACNkN,OAAQurF,EAAQl7F,MAAQ,iBACxBg/O,eAAgB97O,KAAK47O,sBAKjC57O,KAAK2tT,cAAc,4BAA6B,CAC5CpuT,KAAM,YACNkN,OAAQ/b,EAAE8U,WACVs2O,eAAgB97O,KAAK47O,gBAIX,OAAlB57O,KAAK4a,SAGD5a,KAAKuD,SAASvD,KAAKuD,QAAQ7S,GAE/BsP,KAAK4a,SAAWuwF,EAAUt2G,QAAQ7D,OAAON,GAI7CsP,KAAK4O,KAAK,SAAUle,MAW7B,CACCsD,IAAK,SACLN,MAAO,WACH,IAAImyF,EAAS7lF,KAEb,OAAIA,KAAK4a,SAAiB5a,KAAK4a,UAE/B5a,KAAK4a,SAAW,IAAIuwF,EAAUt2G,SAAQ,SAAU9D,EAASC,GACrD60F,EAAO/nE,SAAW,WACd+nE,EAAOsnO,OAAQ,EACftnO,EAAO4nO,YACP18T,EAAQmL,WAAMxJ,EAAWiQ,YAE7BkjF,EAAOtiF,QAAU,WACbsiF,EAAOsnO,OAAQ,EACftnO,EAAO4nO,YACPz8T,EAAOkL,WAAMxJ,EAAWiQ,eAG5B3C,KAAK4tT,kBAAoB5tT,KAAK62F,WAC9B72F,KAAK62F,UAAW,EAChB72F,KAAKqtT,cACLliN,EAAUt2G,QAAQ9D,QAAQiP,KAAK4tT,mBAAmB52T,KAAKgJ,KAAKrC,KAAK1J,KAAK+L,MAAOA,KAAK0G,OAAOzS,KAAK+L,QAE3FA,KAAK4a,YAEjB,CACC5mB,IAAK,cACLN,OACQw/B,GAAO,EAAIvB,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASC,EAAQJ,EAAQxqB,EAAMqzO,GACxG,IAAIyxE,EAAiBxwT,EAA2BC,EAAmBC,EAAgBE,EAAWD,EAAOm6S,EAAa/1I,EAAO07I,EAAS1nR,EAAU8uH,EAAQ3+F,EAA4BC,EAAoBC,EAAiBE,EAAYD,EAAQotL,EAEzO,OAAO5hN,EAAc78B,QAAQm/B,MAAK,SAAkB7F,GAChD,OACI,OAAQA,EAAStsB,KAAOssB,EAASzwB,MAC7B,KAAK,EAIDmwT,EAAkB,GAClBxwT,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiB7K,EACjBy7B,EAAStsB,KAAO,EAChBpE,GAAY,EAAI9H,EAAcd,UAAS,EAAI0/F,EAAU1/F,SAASkU,IAElE,KAAK,EACD,GAAI1L,GAA6BG,EAAQC,EAAUC,QAAQC,KAAM,CAC7DwwB,EAASzwB,KAAO,GAChB,MAMJ,OAHAi6S,GAAc,EAAIr5P,EAAgBzpD,SAAS2I,EAAM9J,MAAO,GAAIkuK,EAAQ+1I,EAAY,GAAI2F,EAAU3F,EAAY,GAC1G/hR,EAAWgsI,EAAM/oK,MAAM,IAAK,GAAG,GAC/Bs1B,EAASzwB,KAAO,IACT,EAAIi0B,EAAU5gC,SAASiP,KAAKozO,UAAU/Z,gBAAgB9lM,EAAQqC,IAEzE,KAAK,GAGD,GAFA8uH,EAASv2H,EAASmH,KAEN,CACRnH,EAASzwB,KAAO,GAChB,MAGJ69G,EAAS1mH,QAAQyF,KAAK,uCAAyCs7B,EAAW,cAC1EzH,EAASzwB,KAAO,GAChB,MAEJ,KAAK,GAED,OADAywB,EAASzwB,KAAO,IACT,EAAIi0B,EAAU5gC,SAASqrP,EAASx6E,EAAOld,EAAQ44J,IAE1D,KAAK,GACDuQ,EAAgB79T,KAAK4lC,GAEzB,KAAK,GACDv4B,GAA4B,EAC5B8wB,EAASzwB,KAAO,EAChB,MAEJ,KAAK,GACDywB,EAASzwB,KAAO,GAChB,MAEJ,KAAK,GACDywB,EAAStsB,KAAO,GAChBssB,EAASiG,GAAKjG,EAAgB,MAAE,GAChC7wB,GAAoB,EACpBC,EAAiB4wB,EAASiG,GAE9B,KAAK,GACDjG,EAAStsB,KAAO,GAChBssB,EAAStsB,KAAO,IAEXxE,GAA6BI,EAAUI,QACxCJ,EAAUI,SAGlB,KAAK,GAGD,GAFAswB,EAAStsB,KAAO,IAEXvE,EAAmB,CACpB6wB,EAASzwB,KAAO,GAChB,MAGJ,MAAMH,EAEV,KAAK,GACD,OAAO4wB,EAASs9E,OAAO,IAE3B,KAAK,GACD,OAAOt9E,EAASs9E,OAAO,IAE3B,KAAK,GACD,GAAIoiN,EAAgBn+T,OAAQ,CACxBy+B,EAASzwB,KAAO,GAChB,MAGJ,MAAM,IAAI7L,MAAM,gCAEpB,KAAK,GACDk0D,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBvzD,EAClBy7B,EAAStsB,KAAO,GAChBskD,GAAa,EAAIxwD,EAAcd,SAASg5T,GAE5C,KAAK,GACD,GAAI9nQ,GAA8BG,EAASC,EAAWzoD,QAAQC,KAAM,CAChEwwB,EAASzwB,KAAO,GAChB,MAKJ,OAFA41O,EAAYptL,EAAOxyD,MACnBy6B,EAASzwB,KAAO,IACT,EAAIi0B,EAAU5gC,SAASiP,KAAKozO,UAAU7Z,kBAAkBhmM,EAAQ+/M,IAE3E,KAAK,GACDvtL,GAA6B,EAC7B53B,EAASzwB,KAAO,GAChB,MAEJ,KAAK,GACDywB,EAASzwB,KAAO,GAChB,MAEJ,KAAK,GACDywB,EAAStsB,KAAO,GAChBssB,EAASwG,GAAKxG,EAAgB,MAAE,IAChC63B,GAAqB,EACrBC,EAAkB93B,EAASwG,GAE/B,KAAK,GACDxG,EAAStsB,KAAO,GAChBssB,EAAStsB,KAAO,IAEXkkD,GAA8BI,EAAWtoD,QAC1CsoD,EAAWtoD,SAGnB,KAAK,GAGD,GAFAswB,EAAStsB,KAAO,IAEXmkD,EAAoB,CACrB73B,EAASzwB,KAAO,GAChB,MAGJ,MAAMuoD,EAEV,KAAK,GACD,OAAO93B,EAASs9E,OAAO,IAE3B,KAAK,GACD,OAAOt9E,EAASs9E,OAAO,IAE3B,KAAK,GACL,IAAK,MACD,OAAOt9E,EAASiF,UAG7BO,EAAS3zB,KAAM,CAAC,CAAC,EAAG,GAAI,GAAI,IAAK,CAAC,GAAG,CAAE,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAG,CAAE,GAAI,UAGnF,SAAqB0rG,EAAI6T,EAAK4E,GAC1B,OAAOjxF,EAAKh3B,MAAM8D,KAAM2C,gBAM7BsqT,EA5XY,CA6XrBtgO,EAAQD,cAEVn8F,EAAQsE,QAAUo4T,G,gBCrdlB,IAAIt2L,EAAS,EAAQ,KACjB0R,EAAS1R,EAAO0R,OAGpB,SAASylL,EAAWr8T,EAAKy2B,GACvB,IAAK,IAAIl0B,KAAOvC,EACdy2B,EAAIl0B,GAAOvC,EAAIuC,GAWnB,SAAS+5T,EAAY5sT,EAAKqnI,EAAkB94I,GAC1C,OAAO24I,EAAOlnI,EAAKqnI,EAAkB94I,GATnC24I,EAAOt3G,MAAQs3G,EAAO4D,OAAS5D,EAAOI,aAAeJ,EAAOkE,gBAC9D/7I,EAAOD,QAAUomI,GAGjBm3L,EAAUn3L,EAAQpmI,GAClBA,EAAQ83I,OAAS0lL,GAOnBA,EAAWn+T,UAAYD,OAAOoE,OAAOs0I,EAAOz4I,WAG5Ck+T,EAAUzlL,EAAQ0lL,GAElBA,EAAWh9R,KAAO,SAAU5vB,EAAKqnI,EAAkB94I,GACjD,GAAmB,iBAARyR,EACT,MAAM,IAAInM,UAAU,iCAEtB,OAAOqzI,EAAOlnI,EAAKqnI,EAAkB94I,IAGvCq+T,EAAW9hL,MAAQ,SAAUnlH,EAAM4wG,EAAMxO,GACvC,GAAoB,iBAATpiG,EACT,MAAM,IAAI9xB,UAAU,6BAEtB,IAAIo1I,EAAM/B,EAAOvhH,GAUjB,YATap0B,IAATglI,EACsB,iBAAbxO,EACTkhB,EAAI1S,KAAKA,EAAMxO,GAEfkhB,EAAI1S,KAAKA,GAGX0S,EAAI1S,KAAK,GAEJ0S,GAGT2jL,EAAWtlL,YAAc,SAAU3hH,GACjC,GAAoB,iBAATA,EACT,MAAM,IAAI9xB,UAAU,6BAEtB,OAAOqzI,EAAOvhH,IAGhBinS,EAAWxhL,gBAAkB,SAAUzlH,GACrC,GAAoB,iBAATA,EACT,MAAM,IAAI9xB,UAAU,6BAEtB,OAAO2hI,EAAOqV,WAAWllH,K,6BC1C3B,IAEIw0F,EAAa1lH,EAFD,EAAQ,MAMpBE,EAASF,EAFD,EAAQ,KAMhBqkG,EAAWrkG,EAFD,EAAQ,KAMlB2lH,EAAW3lH,EAFD,EAAQ,KAItB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvF,IAAIy3F,EAAe,EAAQ,IAAUA,aAEjC8yE,EAAQ,EAAQ,IAChB+rE,EAAa,EAAQ,KAIrByiF,EAAwB,EAsC5B,SAASt9K,EAAUnqF,GACf,IAAI0nQ,EAAiBtrT,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,GAAmBA,UAAU,QAAKjQ,EAEzFsN,KAAKumD,OAASA,EACdvmD,KAAK8vH,QAAU,GAGf9vH,KAAKotF,OAAS,GAGdptF,KAAKgxI,gBAAkB,KAEvBhxI,KAAKkuT,WAAa,GAGlBluT,KAAK25M,sBAGL35M,KAAKmuT,sBAAwB,GAC7BnuT,KAAKouT,uBAAyB,GAC9BpuT,KAAKquT,eAAiB,GACtBruT,KAAKsuT,mBAAqB,KAM1BtuT,KAAKuuT,0BAA4B,KAEjCvuT,KAAKwuT,oBAAsB,KAC3BxuT,KAAKyuT,2BAA6B,KAE7BR,IACDA,EAAiB,CACblxT,OAAQixT,IAGhBhuT,KAAK0uT,gBAAkBT,EA0nB3B,SAASU,EAAwBjnE,EAAWn0N,EAAQurB,GAChD,IAAIq7J,EAAUutC,EAAU0mE,uBAAuB76R,GAE/C,UADOm0N,EAAU0mE,uBAAuB76R,GACpC4mL,EAAS,CAKT,IAAIy0G,EAAkBpvJ,EAAMt0E,kBAAkBivH,GAE1C00G,EAAkBnnE,EAAUymE,sBAAsBS,GACtD,GAAIC,EAAiB,CAEjB,IAAIC,EAAkBD,EAAgB/1S,QAAO,SAAU8nC,GACnD,OAAOA,IAAOrtB,KAElBm0N,EAAUymE,sBAAsBS,GAAmBE,GAI3DpnE,EAAU0mE,uBAAuB76R,GAAUurB,EAE3C,IAAIiwQ,EAAsBjwQ,GAAe0gH,EAAMt0E,kBAAkBpsC,GAE7DiwQ,IACKrnE,EAAUymE,sBAAsBY,KACjCrnE,EAAUymE,sBAAsBY,GAAuB,IAE3DrnE,EAAUymE,sBAAsBY,GAAqB/+T,KAAKujC,IAppBlEisI,EAAMvsJ,SAASy9H,EAAWhkD,GAO1BgkD,EAAU9gJ,UAAUk2I,qBAAuB,WACvC,OAAuC,OAAnC9lI,KAAKuuT,0BACEvuT,KAAKuuT,2BAEgB,OAA5BvuT,KAAKsuT,qBACLtuT,KAAKsuT,mBAAqBtuT,KAAKsmI,aAAalwH,QAAO,SAAUjc,EAAOpH,GAChE,MAAwB,SAAjBA,EAAE2kG,WAAwBv9F,EAAQ,EAAIA,IAC9C,IAEA6F,KAAKsuT,qBAOhB59K,EAAU9gJ,UAAUo/T,qBAAuB,SAAU70T,GACjD6F,KAAKuuT,0BAA4Bp0T,GAMrCu2I,EAAU9gJ,UAAUm2I,sBAAwB,WACxC,OAAwC,OAApC/lI,KAAKyuT,2BACEzuT,KAAKyuT,4BAEiB,OAA7BzuT,KAAKwuT,sBACLxuT,KAAKwuT,oBAAsBxuT,KAAKsmI,aAAalwH,QAAO,SAAUjc,EAAOpH,GACjE,MAAwB,WAAjBA,EAAE2kG,WAA0Bv9F,EAAQ,EAAIA,IAChD,IAEA6F,KAAKwuT,sBAOhB99K,EAAU9gJ,UAAUq/T,sBAAwB,SAAU90T,GAClD6F,KAAKyuT,2BAA6Bt0T,GAOtCu2I,EAAU9gJ,UAAU02I,WAAa,WAC7B,OAAOk5B,EAAM/hJ,OAAOzd,KAAK8vH,UAQ7B4gB,EAAU9gJ,UAAUs/T,iBAAmB,SAAUC,GAC7C,OAAO3vJ,EAAM/hJ,OAAOzd,KAAK8vH,SAASh3G,QAAO,SAAU/lB,GAC/C,OAAQo8T,EAAY3tR,SAASzuC,EAAEwgC,YASvCm9G,EAAU9gJ,UAAUwoG,UAAY,SAAU7kE,GACtC,OAAOvzB,KAAK8vH,QAAQv8F,IAAW,MAYnCm9G,EAAU9gJ,UAAUqjJ,kBAAoB,SAAU1/G,GAC9C,IAAKA,EAAQ,OAAO,KACpB,IAAI67R,EAAWpvT,KAAKkuT,WAAW36R,GAE/B,QAAiB7gC,IAAb08T,EAAwB,CACxBA,EAAW,IAAI7jF,EAAWvrO,KAAKumD,OAAQhzB,GACvC,IAAIikE,EAASx3F,KAAK8vH,QAAQv8F,GACtBikE,GACA43N,EAAS3nE,mBAAmBjwJ,EAAOpK,OAAOoK,OAAQx3F,MAEtDA,KAAKkuT,WAAW36R,GAAU67R,EAE9B,OAAOA,GAYX1+K,EAAU9gJ,UAAUmoG,eAAiB,SAAUuyE,EAAWl9D,GACtD,IAAKptG,KAAKotF,OAAOk9E,GAEb,YAAoB53K,IAAb06G,EAAyB,GAAK,KAEzC,QAAiB16G,IAAb06G,EAEA,OAAOoyD,EAAM/hJ,OAAOzd,KAAKotF,OAAOk9E,IAEpC,IAAIx4K,EAAQkO,KAAKotF,OAAOk9E,GAAWl9D,GACnC,OAAOt7G,GAAgB,MAO3B4+I,EAAU9gJ,UAAUkiJ,MAAQ,WACxB,IAAI1jD,EAAO,IAAIsiD,EAAU1wI,KAAKumD,OAAQvmD,KAAK0uT,iBAQvC3xT,EAASiD,KAAK0uT,gBAAgB3xT,OA6BlC,OA5BAiD,KAAK0uT,gBAAgB3xT,OAASixT,GAE9B,EAAI/zN,EAASplG,SAASmL,KAAKotF,QAAQhzF,SAAQ,SAAUi1T,GACjD,IAAIC,GAAgB,EAAIr1N,EAASplG,SAASw6T,GAC1CjhO,EAAKqjD,eAAe69K,MAIxBtvT,KAAK0uT,gBAAgB3xT,OAASA,EAEU,OAApCiD,KAAKyuT,4BACLrgO,EAAK6gO,sBAAsBjvT,KAAK+lI,yBAEG,OAAnC/lI,KAAKuuT,2BACLngO,EAAK4gO,qBAAqBhvT,KAAK8lI,wBAnOb,GAuOlB9lI,KAAK0uT,gBAAgB3xT,QAErBiD,KAAKsmI,aAAalsI,SAAQ,SAAUo9F,GAC5BA,EAAOgwJ,eACUp5J,EAAKgK,UAAUZ,EAAOjkE,QAC5Bg0N,mBAKhBn5J,GAUXsiD,EAAU9gJ,UAAUg1T,sBAAwB,SAAUx3N,GAClD,IAAI/tC,EAAQr/C,KAERuvT,EAAqBniO,EAAOt0E,QAAO,SAAUhnB,GAC7C,YAAyCY,IAAlC2sD,EAAM+tC,OAAOt7F,EAAMwlG,iBAAmF5kG,IAAvD2sD,EAAM+tC,OAAOt7F,EAAMwlG,WAAWxlG,EAAM6rH,kBAG9F39G,KAAKyxI,eAAe89K,IAaxB7+K,EAAU9gJ,UAAU6hJ,eAAiB,SAAUD,GAC3C,IAAI7yI,EAAOqB,KACXA,KAAK25M,sBAGLn6C,EAAMplK,QAAQo3I,GAAa,SAAU1/I,GAC7BA,EAAMs2G,cAAgBzpG,EAAK4nD,QAG1Bz0D,EAAM8rH,YAIXj/G,EAAK6wT,eAAe19T,GACI,kBAApBA,EAAMwlG,YACNq3N,EAAwBhwT,EAAM7M,EAAM6rH,cAAe7rH,EAAMmmG,aAAa41E,aAsZlF,SAAqC65E,EAAWgB,GAC5C,IAAKA,EAAYzwJ,aAAa23J,mBAC1B,OAEJ,IAAIv9G,GAASq2G,EAAYzwJ,aAAa23J,mBAAmB3hD,QAAU,IAAI57D,MACvE,IAAKA,EACD,OAGJ,IADqBq1G,EAAU3vJ,eAAe,4BAA6Bs6C,GAEvE,OAEJq1G,EAAU2mE,eAAeh8K,GAASq2G,EAja1B+mE,CAA4B9wT,EAAM7M,IAEtC6M,EAAKiQ,KAAK,mBAAoB9c,EAAO6M,OAOzC6gK,EAAMplK,QAAQo3I,GAAa,SAAU1/I,GACjC,GAAIA,EAAMs2G,cAAgBzpG,EAAK4nD,QAG1Bz0D,EAAM8rH,UAIX,GAAwB,kBAApB9rH,EAAMwlG,UAA+B,CACrC,IAAI/jE,EAASzhC,EAAM6rH,cAKmB,UAAlC7rH,EAAMmmG,aAAaP,YAA4D,QAAlC5lG,EAAMmmG,aAAaP,aAChE5lG,EAAMmmG,aAAaysC,WAAa5yI,EAAMmmG,aAAaysC,YAAc5yI,EAAMurH,iBAAiBqnB,WACxF5yI,EAAMmmG,aAAa41E,YAAc/7K,EAAMmmG,aAAa41E,aAAe/7K,EAAMurH,iBAAiBwwD,aAG9F,IAAIr2E,EAAS74F,EAAK+wT,mBAAmBn8R,EAAQzhC,GAC7C0lG,EAAOiwJ,mBAAmB31P,EAAO6M,GAEjCA,EAAKgxT,cAAcn4N,GACnB74F,EAAKiQ,KAAK,oBAAqB9c,EAAO6M,EAAM64F,QACzC,GAAwB,wBAApB1lG,EAAMwlG,UAAqC,CAClD,IAAIw4B,EAAU0vC,EAAM/hJ,OAAO9e,EAAKmxH,SAChC0vC,EAAMplK,QAAQ01H,GAAS,SAAUt4B,GAC7BA,EAAOuwJ,mBAAmBj2P,GAC1B6M,EAAKiQ,KAAK,oBAAqB9c,EAAO6M,EAAM64F,MAIhD74F,EAAKuvT,WAAa,QAe9Bx9K,EAAU9gJ,UAAU8/T,mBAAqB,SAAUn8R,EAAQzhC,GACvD,IAAI0lG,EAASx3F,KAAK8vH,QAAQv8F,GAQ1B,OAPKikE,IACDA,EAAS,IAAI+zI,EAAWvrO,KAAKumD,OAAQhzB,GAGrCvzB,KAAK8vH,QAAQv8F,GAAUikE,EACvBx3F,KAAK4O,KAAK,sBAAuB9c,EAAOkO,KAAMw3F,IAE3CA,GAGXk5C,EAAU9gJ,UAAU4/T,eAAiB,SAAU19T,QACNY,IAAjCsN,KAAKotF,OAAOt7F,EAAMwlG,aAClBt3F,KAAKotF,OAAOt7F,EAAMwlG,WAAa,IAEnCt3F,KAAKotF,OAAOt7F,EAAMwlG,WAAWxlG,EAAM6rH,eAAiB7rH,GAGxD4+I,EAAU9gJ,UAAU+/T,cAAgB,SAAUn4N,GAE1C,IAAIo4N,EAAc5vT,KAAK+3F,eAAe,sBAAuB,IACzD63N,GACAp4N,EAAOuwJ,mBAAmB6nE,UAIvB5vT,KAAKkuT,WAAW12N,EAAOjkE,QAE9BvzB,KAAK8vH,QAAQt4B,EAAOjkE,QAAUikE,EAC9Bx3F,KAAKsuT,mBAAqB,KAC1BtuT,KAAKwuT,oBAAsB,MAQ/B99K,EAAU9gJ,UAAUigU,sBAAwB,WACxC,OAAO7vT,KAAK0uT,gBAAgB3xT,SAAWixT,GAQ3Ct9K,EAAU9gJ,UAAUkgU,4BAA8B,WAC1C9vT,KAAK0uT,gBAAgB3xT,SAAWixT,IAGpChuT,KAAK0uT,gBAAgB3xT,OA5YG,IAkZ5B2zI,EAAU9gJ,UAAUmgU,2BAA6B,WAlZrB,IAmZpB/vT,KAAK0uT,gBAAgB3xT,SAGzBiD,KAAK0uT,gBAAgB3xT,OAASixT,IAMlCt9K,EAAU9gJ,UAAU4+O,sBAAwB,WACxC,IAAIzwL,EAAS/9C,KAET7F,EAAQ,GACZ,EAAIrE,EAAOjB,SAASmL,KAAK8vH,SAAS11H,SAAQ,SAAUm5B,GACnCwqB,EAAO+xE,QAAQv8F,GACjBi0N,kBACLrtP,SACK4jD,EAAO+xE,QAAQv8F,OAG9BgoF,EAAS1mH,QAAQgD,IAAI,yBAA2BsC,EAAQ,eACxD6F,KAAK0uT,gBAAgB3xT,OAASixT,GAOlCt9K,EAAU9gJ,UAAUy+O,oBAAsB,SAAU78F,GAChD,IAAIp+E,EAASpzD,KAEbu7G,EAAS1mH,QAAQgD,IAAI,8BAAgC25I,EAAY9hJ,OAAS,oBAlblD,IAmbpBsQ,KAAK0uT,gBAAgB3xT,SAGzBw+G,EAAS1mH,QAAQgD,IAAI,sDACrBmI,KAAK0uT,gBAAgB3xT,OAtbC,EAubtBy0I,EAAYp3I,SAAQ,SAAU1J,GAC1B,OAAO0iE,EAAO48P,oBAAoBt/T,QAQ1CggJ,EAAU9gJ,UAAUogU,oBAAsB,SAAUC,GAChD,GAA6B,kBAAzBA,EAAW34N,UAAf,CAGA,IAAI/jE,EAAS08R,EAAWtyM,cACpBuyM,EAAiBlwT,KAAKo4F,UAAU7kE,GAEpC,IAAI28R,GAAmBA,EAAe1oE,cAAtC,CAIA,IAAIhwJ,EAASx3F,KAAK0vT,mBAAmBn8R,EAAQ08R,GAC7Cz4N,EAAOiwJ,mBAAmBwoE,EAAYjwT,MAItCw3F,EAAO+vJ,gBAEPonE,EAAwB3uT,KAAMw3F,EAAOjkE,OAAQikE,EAAOhlG,MAEpDwN,KAAKwvT,eAAeS,GACpBjwT,KAAK2vT,cAAcn4N,GACnBx3F,KAAK4O,KAAK,oBAAqBqhT,EAAYjwT,KAAMw3F,MAOrDk5C,EAAU9gJ,UAAU04P,eAAiB,SAAUx2P,GAC3C0tK,EAAMplK,QAAQolK,EAAM/hJ,OAAOzd,KAAK8vH,UAAU,SAAUt4B,GAChDA,EAAO8wJ,eAAex2P,OAU9B4+I,EAAU9gJ,UAAUugU,0BAA4B,SAAU99K,GACtD,OAAOryI,KAAKquT,eAAeh8K,IAAU,MAMzC3B,EAAU9gJ,UAAU+pN,oBAAsB,WACtC35M,KAAKu6M,UAAY3zJ,KAAK8+D,OAQ1BgrB,EAAU9gJ,UAAU4qN,oBAAsB,WACtC,OAAOx6M,KAAKu6M,WAQhB7pE,EAAU9gJ,UAAUi4P,0BAA4B,SAAU/oM,GACtD,OAAO9+C,KAAKmuT,sBAAsB3uJ,EAAMt0E,kBAAkBpsC,KAAiB,IAU/E4xF,EAAU9gJ,UAAUwgU,yBAA2B,SAAUrkK,EAASx4H,GAC9D,IAAIikE,EAASx3F,KAAKo4F,UAAU7kE,GAC5B,IAAKikE,GAAgC,UAAtBA,EAAOE,WAAwB,OAAO,EAErD,GAAIq0D,EAAQhvJ,QAAUgvJ,EAAQprC,aAAc,OAAO,EAInD,IAAI0vM,EAAYrwT,KAAKswT,aAAa,mBAAoB/8R,GACtD,OAAIw4H,EAAQlvC,cAAgBtpF,EAAe88R,EAEpCrwT,KAAKuwT,4BAA4B,SAAU/4N,EAAOgB,aAS7Dk4C,EAAU9gJ,UAAU2gU,4BAA8B,SAAUvyQ,EAAQw6C,GAChE,IAAIg4N,EAAmBxwT,KAAK+3F,eAAe,sBAAuB,IAE9D04N,EAAc,GACdD,IACAC,EAAcD,EAAiBv4N,cAGnC,IAAIy4N,EAAgB,GAKpB,OAJIlxJ,EAAMv0E,SAASwlO,EAAYzyQ,MAC3B0yQ,EAAgBD,EAAYzyQ,IAGzBw6C,GAAck4N,GASzBhgL,EAAU9gJ,UAAU+gU,eAAiB,SAAUp9R,GAC3C,OAAOvzB,KAAK4wT,oBAAoB,iBAAkBr9R,GAAQ,IAY9Dm9G,EAAU9gJ,UAAU0gU,aAAe,SAAUhmJ,EAAW/2I,GACpD,OAAOvzB,KAAK4wT,oBAAoBtmJ,EAAW/2I,GAAQ,IAYvDm9G,EAAU9gJ,UAAUo+N,wBAA0B,SAAU6iG,EAAgB7hM,GACpE,OAAIA,EAAI/4F,WAGDj2B,KAAKw0G,kBAAkBq8M,EAAgB7hM,EAAI17F,YAAYC,SAYlEm9G,EAAU9gJ,UAAU4kH,kBAAoB,SAAUq8M,EAAgBt9R,GAC9D,OAAOvzB,KAAK4wT,oBAAoBC,EAAgBt9R,GAAQ,IAe5Dm9G,EAAU9gJ,UAAUghU,oBAAsB,SAAUtmJ,EAAW/2I,EAAQssB,GACnE,IAAIixQ,EAAqB9wT,KAAK+3F,eAAe,sBAAuB,IAEhEg5N,OAAe,EACfC,EAAgB,GAEhBC,EAAgB,EAChBC,EAAiB,EACjB14N,EAAa,EACjB,GAAIs4N,EAAoB,CAEpBE,GADAD,EAAeD,EAAmB74N,cACL7K,QAAU,GAGnC6jO,GADA,EAAI31M,EAAWzmH,SAASk8T,EAAaE,eACrBF,EAAaE,cAEb,GAGpB,IAAIE,EAAiBJ,EAAa74N,OAAS64N,EAAa74N,MAAM3kE,IAC1D,EAAI+nF,EAAWzmH,SAASs8T,GACxB34N,EAAa24N,GACN,EAAI71M,EAAWzmH,SAASk8T,EAAa7oE,iBAC5C1vJ,EAAau4N,EAAa7oE,gBAG1B,EAAI5sI,EAAWzmH,SAASk8T,EAAaG,kBACrCA,EAAiBH,EAAaG,gBAItC,IAAIE,EAAiBvxQ,EAAQoxQ,EAAgBC,EAI7C,OAHI,EAAI51M,EAAWzmH,SAASm8T,EAAc1mJ,MACtC8mJ,EAAiBJ,EAAc1mJ,IAE5B9xE,GAAc44N,GAWzB1gL,EAAU9gJ,UAAU81J,sBAAwB,SAAUD,EAAelyH,GACjE,IAAIikE,EAASx3F,KAAKo4F,UAAU7kE,GAC5B,IAAKikE,EACD,OAAO,EAGX,IAAIg5N,EAAmBxwT,KAAK+3F,eAAe,sBAAuB,IAE9Ds5N,EAAa,GAKjB,OAJIb,GAAoBA,EAAiBv4N,cAAgBu4N,EAAiBv4N,aAAastN,eAAiB/lJ,EAAMv0E,SAASulO,EAAiBv4N,aAAastN,cAAc9/J,MAC/J4rK,EAAab,EAAiBv4N,aAAastN,cAAc9/J,IAGtDjuD,EAAOgB,YAAc64N,GAMhC7gU,EAAOD,QAAUmgJ,G,6BC3sBjB,IAEIpyF,EAAkB1oD,EAFA,EAAQ,KAM1BC,EAAWD,EAFD,EAAQ,KAMlB07T,EAAc17T,EAFD,EAAQ,MAMrBE,EAASF,EAFD,EAAQ,KAMhB87B,EAAgB97B,EAFD,EAAQ,KAMvBD,EAAgBC,EAFA,EAAQ,KAIxB+7B,EAAY,EAAQ,GAIpBw5E,EAAYv1G,EAFD,EAAQ,KAMnB2lH,EAAW3lH,EAFD,EAAQ,KAMlBghT,EAAchhT,EAFD,EAAQ,MAIzB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvF,IAAIy3F,EAAe,EAAQ,IAAUA,aAEjC8uB,EAAc,EAAQ,KAAWA,YACjC+1M,EAAc,EAAQ,MACtBhmF,EAAa,EAAQ,KACrBtvH,EAAc,EAAQ,KAAWA,YACjCujD,EAAQ,EAAQ,IAChB9qB,EAAc,EAAQ,KACtB/D,EAAgB,EAAQ,KACxB26F,EAAmB,EAAQ,KAS3BkmF,EAAqB,CAAC,IAAK,IAAK,IAAK,KAEzC,SAASC,EAAkBl+R,EAAQzhC,EAAOyvT,GAItC,IAAImQ,EAAc,CACd15N,QAAS,GACT5lG,KAAM,YACNi2G,QAASv2G,EAAMs2G,aAOnB,OALAspN,EAAY15N,QAAQlmG,EAAM8qH,SAAW,GACrC80M,EAAY15N,QAAQlmG,EAAM8qH,SAAS2kM,GAAe,GAClDmQ,EAAY15N,QAAQlmG,EAAM8qH,SAAS2kM,GAAahuR,GAAU,CACtD4uF,GAAIrwH,EAAMkrH,SAEP,IAAIf,EAAYy1M,GA+D3B,SAAStmF,EAAK7kL,EAAQ8tD,EAAQ+C,EAAU5mG,GAMpC,IALAA,EAAOA,GAAQ,IACVwkB,qBAAuBxkB,EAAKwkB,sBAAwB,gBAEzDh1B,KAAKg4S,UAAY,IAAIpB,EAAY/hT,QAAQmL,OAEiC,IAAtE,CAAC,gBAAiB,YAAY5G,QAAQoX,EAAKwkB,sBAC3C,MAAM,IAAInjC,MAAM,iFAAwF2e,EAAKwkB,qBAAuB,KAGxIh1B,KAAKo3G,SAAWA,EAChBp3G,KAAKumD,OAASA,EACdvmD,KAAKxN,KAAO+zD,EACZvmD,KAAKhG,KAAO,GAIZgG,KAAK66M,YAAc,GAGnB76M,KAAKs8M,QAAU,KACft8M,KAAK2xT,aAAenhT,EAAKmhT,aACzB3xT,KAAK4xT,MAAQphT,EACbxQ,KAAK6xT,YAAc,GAKnB7xT,KAAK8xT,UAAY,GAQjB9xT,KAAK+xT,uBAAyB,GAQ9B/xT,KAAKgyT,cAAgB,GAErBhyT,KAAKiyT,oBAAsB,GAI3BjyT,KAAKkyT,cAAgB,CAAC,IAAI5mF,EAAiBtrO,KAAMwQ,IACjDxQ,KAAKg4S,UAAU4D,OAAO57S,KAAK6yI,2BAA4B,CAAC,gBAAiB,uBAEzE7yI,KAAKmyT,6BAGLnyT,KAAKoyT,sBAAwB,GAIU,YAAnCpyT,KAAK4xT,MAAM58R,uBACXh1B,KAAKqyT,kBAAoB,IAI7BryT,KAAKsyT,4BAA8B,KACnCtyT,KAAKuyT,gBAAkB,KACvBvyT,KAAKwyT,eAAiB,KAGtBxyT,KAAKy4G,QAAUpE,EACVr0G,KAAK4xT,MAAM38R,gBAGZj1B,KAAKyyT,gBAAkB,KAFvBzyT,KAAKyyT,gBAAkBtnN,EAAUt2G,QAAQ9D,UAMjDyuK,EAAMvsJ,SAASm4N,EAAM1+I,GAMrB0+I,EAAKx7O,UAAUumO,WAAa,WACxB,IAAI1nN,EAAczO,KAAKg3F,aAAae,eAAe,gBAAiB,IACpE,IAAKtpF,EAED,OADA8sG,EAAS1mH,QAAQyF,KAAK,QAAU0F,KAAKqoG,QAAU,yCACxC,IAEX,IAAIqqN,EAAMjkT,EAAYwpF,aAA2B,aACjD,YAAYvlG,IAARggU,EAA0B,IACvBA,GASXtnF,EAAKx7O,UAAU+iU,uBAAyB,WAQpC,OAAKnB,EAAmBhwR,SAASxhC,KAAKm2N,cAI/B,KAjMmB,KA+M9BiV,EAAKx7O,UAAUgjU,uBAAwB,EAAIjhS,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASC,IAC9G,IAAI4oR,EAAcsW,EAAYx1T,EAA2BC,EAAmBC,EAAgBE,EAAWD,EAAOs1T,EAAS77T,EAAQwxJ,EAE/H,OAAO/2H,EAAc78B,QAAQm/B,MAAK,SAAkB7F,GAChD,OACI,OAAQA,EAAStsB,KAAOssB,EAASzwB,MAC7B,KAAK,EAED,OADAywB,EAASzwB,KAAO,GACT,EAAIi0B,EAAU5gC,SAASiP,KAAKy4G,QAAQi0K,mBAE/C,KAAK,EAID,GAHA6vB,EAAepuR,EAASmH,KACxBu9R,EAAatW,EAAa,mBAEV,CACZpuR,EAASzwB,KAAO,GAChB,MAWJ,IARAm1T,EAAa,CACTh+T,QAnOM,IAoONk+T,UAAW,IAEf11T,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiB7K,EACjBy7B,EAAStsB,KAAO,EACXpE,GAAY,EAAI9H,EAAcd,SAAS28T,KAAuBn0T,GAA6BG,EAAQC,EAAUC,QAAQC,MAAON,GAA4B,EACzJy1T,EAAUt1T,EAAM9J,MAEhBm/T,EAAWE,UAAUD,GAAW,SAEpC3kS,EAASzwB,KAAO,GAChB,MAEJ,KAAK,GACDywB,EAAStsB,KAAO,GAChBssB,EAASiG,GAAKjG,EAAgB,MAAE,GAChC7wB,GAAoB,EACpBC,EAAiB4wB,EAASiG,GAE9B,KAAK,GACDjG,EAAStsB,KAAO,GAChBssB,EAAStsB,KAAO,IAEXxE,GAA6BI,EAAUI,QACxCJ,EAAUI,SAGlB,KAAK,GAGD,GAFAswB,EAAStsB,KAAO,IAEXvE,EAAmB,CACpB6wB,EAASzwB,KAAO,GAChB,MAGJ,MAAMH,EAEV,KAAK,GACD,OAAO4wB,EAASs9E,OAAO,IAE3B,KAAK,GACD,OAAOt9E,EAASs9E,OAAO,IAE3B,KAAK,GAGD,KAFAx0G,EAAS+I,KAAKgzT,+BAA+BH,IAEhCI,SAAUh8T,EAAOi8T,aAAe,CACzC/kS,EAASzwB,KAAO,GAChB,MAYJ,OAHA69G,EAAS1mH,QAAQyF,KAAK,0HAEtB6zB,EAASzwB,KAAO,IACT,EAAIi0B,EAAU5gC,SAASiP,KAAKy4G,QAAQi0K,iBAAgB,IAE/D,KAAK,GAKD,GAJAjkI,EAAOt6H,EAASmH,KAEhBu9R,EAAapqK,EAAK,mBAEF,CACZt6H,EAASzwB,KAAO,GAChB,MAIJ,OADA69G,EAAS1mH,QAAQyF,KAAK,2DACf6zB,EAASgG,OAAO,SAAUl9B,GAErC,KAAK,GACDA,EAAS+I,KAAKgzT,+BAA+BH,GAEjD,KAAK,GACD,OAAO1kS,EAASgG,OAAO,SAAUl9B,GAErC,KAAK,GACL,IAAK,MACD,OAAOk3B,EAASiF,UAG7BO,EAAS3zB,KAAM,CAAC,CAAC,EAAG,GAAI,GAAI,IAAK,CAAC,GAAG,CAAE,GAAI,UAGlDorO,EAAKx7O,UAAUojU,+BAAiC,SAAUH,GACtD,IAAIM,EAAiBnzT,KAAKm2N,aAC1B56G,EAAS1mH,QAAQgD,IAAI,IAAMmI,KAAKumD,OAAS,sBAAwB4sQ,GACjE53M,EAAS1mH,QAAQgD,IAAI,IAAMmI,KAAKumD,OAAS,yBAA0BssQ,GAEnE,IAAI57T,EAAS,CACT+sB,QAASmvS,EACTD,cAAc,EACdD,QAAQ,GAIZ,OAAIE,IAAmBN,EAAWh+T,QAAgBoC,GAE7B,EAAInB,EAAOjB,SAASg+T,EAAWE,WAAWj6S,QAAO,SAAUuH,GAC5E,MAAmC,WAA5BwyS,EAAWE,UAAU1yS,MAMZmhB,SAAS2xR,GActBl8T,GAbHA,EAAO+sB,QAAU6uS,EAAWh+T,QAC5BoC,EAAOi8T,cAAe,EACtBj8T,EAAOg8T,SAAWjzT,KAAKm2N,aAAaz6N,MAAM,oBACtCzE,EAAOg8T,OACP13M,EAAS1mH,QAAQyF,KAAK,8BAAgC0F,KAAKumD,QAE3Dg1D,EAAS1mH,QAAQyF,KAAK,kCAAoC0F,KAAKumD,QAE5DtvD,IAafm0O,EAAKx7O,UAAUwjU,mBAAqB,SAAU7/R,GAC1C,OAAOvzB,KAAKg3F,aAAawd,kBAAkB,mBAAoBjhF,IAWnE63M,EAAKx7O,UAAUqhK,iBAAmB,WAC9B,GAAwC,aAApCjxJ,KAAK4xT,MAAM58R,qBACX,MAAM,IAAInjC,MAAM,6DAA+DmO,KAAK4xT,MAAM58R,sBAG9F,OAAOh1B,KAAKqyT,mBAUhBjnF,EAAKx7O,UAAUgyT,gBAAkB,SAAU3rN,GACvC,GAAwC,aAApCj2F,KAAK4xT,MAAM58R,qBACX,MAAM,IAAInjC,MAAM,4DAA8DmO,KAAK4xT,MAAM58R,sBAG7F,OAAOh1B,KAAKqyT,kBAAkB3mS,MAAK,SAAU55B,GACzC,OAAOA,EAAM8qH,UAAY3mB,MASjCm1I,EAAKx7O,UAAUinC,gBAAkB,WAC7B,OAAO72B,KAAK6yI,2BAA2Bh8G,mBAO3Cu0M,EAAKx7O,UAAU2kH,gBAAkB,WAC7B,OAAOv0G,KAAKuyT,iBAQhBnnF,EAAKx7O,UAAUqiI,aAAe,WAC1B,GAAIjyH,KAAKo3G,SAAU,CACf,IAAI9C,EAAKt0G,KAAKo4F,UAAUp4F,KAAKo3G,UAC7B,GAAI9C,EACA,OAAOA,EAAG2d,eAGlB,GAA6B,WAAzBjyH,KAAKuyT,kBAGc,GADDvyT,KAAKikT,kCACCjkT,KAAKwyT,eAAe9iU,QACxC,OAAOsQ,KAAKwyT,eAAe,IASvCpnF,EAAKx7O,UAAUiiI,cAAgB,WAC3B,IAAIxyE,EAAQr/C,KAERs0G,EAAKt0G,KAAKo4F,UAAUp4F,KAAKo3G,UAC7B,GAAI9C,EAAI,CACJ,IAAI++M,EAAY/+M,EAAG2d,eACnB,GAAIohM,EACA,OAAOA,EAMf,GADgB18T,MAAMC,QAAQoJ,KAAKwyT,iBAAmBxyT,KAAKwyT,eAAe9iU,OAEtE,OAAOsQ,KAAKwyT,eAAe,GAE/B,IACIc,EADUtzT,KAAKg3F,aAAasvC,aACRhtI,MAAK,SAAUvG,GACnC,OAAOA,EAAEwgC,SAAW8rB,EAAM+3D,YAE9B,OAAIk8M,EACOA,EAAU//R,OAKdvzB,KAAKo3G,UAGhBg0H,EAAKx7O,UAAU0lJ,wBAA0B,WACrC,IAAIv3F,EAAS/9C,KAGb,KADkBA,KAAKikT,iCACL,GAAlB,CAGA,IAAIsP,EAAY58T,MAAMC,QAAQoJ,KAAKwyT,iBAAmBxyT,KAAKwyT,eAAe9iU,OAC1E,GAAI6jU,EAAW,CACX,IAAIC,EAAkBxzT,KAAKwyT,eAAet5T,KAAI,SAAUq6B,GACpD,OAAOwqB,EAAOq6C,UAAU7kE,MACzBj6B,MAAK,SAAUk+F,GACd,QAASA,KAEb,GAAIg8N,EACA,OAAOA,EAGf,IAAI1jM,EAAU9vH,KAAKg3F,aAAasvC,aAGhC,GAAIxW,EAAQpgI,QAAU,EAAG,CACrB,IAAI+jU,EAAmB3jM,EAAQx2H,MAAK,SAAUvG,GAC1C,OAAOA,EAAEwgC,SAAWwqB,EAAOq5D,YAE/B,GAAIq8M,EACA,OAAOA,EAKf,GAAIF,EAAW,CACX,IAAIG,EAAgB1zT,KAAKwyT,eAAet5T,KAAI,SAAUq6B,GAClD,OAAOwqB,EAAO06D,QAAQpB,QAAQ9jF,MAC/Bj6B,MAAK,SAAUs0G,GACd,QAASA,KAEb,GAAI8lN,EAAe,CACf,IAAIl8N,EAAS,IAAI+zI,EAAWvrO,KAAKumD,OAAQmtQ,EAAcngS,QAEvD,OADAikE,EAAOoW,KAAO8lN,EACPl8N,MASnB4zI,EAAKx7O,UAAU+jU,mBAAqB,SAAUj8N,GAC1C,IAAIk8N,EAAiB5zT,KAAKuyT,gBAC1BvyT,KAAKuyT,gBAAkB76N,EACnBk8N,IAAmBl8N,IACA,UAAfA,GACA13F,KAAK6zT,uBAET7zT,KAAK4O,KAAK,oBAAqB5O,KAAM03F,EAAYk8N,KAIzDxoF,EAAKx7O,UAAUkkU,wBAAyB,EAAIniS,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASyB,IAC/G,IAAI4+R,EAAelwQ,EAAayW,EAAM05P,EAAMn3T,EAC5C,OAAO60B,EAAc78B,QAAQm/B,MAAK,SAAmBoB,GACjD,OACI,OAAQA,EAAUvzB,KAAOuzB,EAAU13B,MAC/B,KAAK,EASD,OARAq2T,EAAgB/zT,KAAKy4G,QAAQxkF,MAAMsgR,eACnC1wP,EAAc27G,EAAMp2E,aAAa,CAC7B6qO,eAAgB,QAChB9xH,GAAI4xH,IAERz5P,EAAOklG,EAAMh2E,UAAU,0BAA4B3lC,EAAa,CAAEk3P,QAAS/6S,KAAKumD,SAChFytQ,EAAOh0T,KAAKy4G,QAAQ2iM,MACpBhmR,EAAU13B,KAAO,GACV,EAAIi0B,EAAU5gC,SAASijU,EAAK50G,mBAAc1sN,EAAW,MAAO4nE,IAEvE,KAAK,EAED,OADAz9D,EAAWu4B,EAAUE,KACdF,EAAUjB,OAAO,SAAUt3B,EAAS3K,OAE/C,KAAK,EACL,IAAK,MACD,OAAOkjC,EAAUhC,UAG9B+B,EAAUn1B,UAGjBorO,EAAKx7O,UAAUskU,cAAe,EAAIviS,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAAS2mF,IACrG,IAAI85M,EAAYC,EAAkBC,EAClC,OAAO3iS,EAAc78B,QAAQm/B,MAAK,SAAmBwmF,GACjD,OACI,OAAQA,EAAU34G,KAAO24G,EAAU98G,MAC/B,KAAK,EAID,OAFAy2T,GAAa,EACb35M,EAAU98G,KAAO,GACV,EAAIi0B,EAAU5gC,SAASiP,KAAKy4G,QAAQxkF,MAAM+5M,oBAAoBhuO,KAAKumD,SAE9E,KAAK,EAGD,GAA2B,QAF3B6tQ,EAAmB55M,EAAUllF,MAEK,CAC9BklF,EAAU98G,KAAO,GACjB,MAKJ,OAFAy2T,GAAa,EACb35M,EAAU98G,KAAO,GACV,EAAIi0B,EAAU5gC,SAASiP,KAAK8zT,0BAEvC,KAAK,EACDM,EAAmB55M,EAAUllF,KAE7BimF,EAAS1mH,QAAQgD,IAAI,WAAau8T,EAAiB1kU,OAAS,iCAAyCsQ,KAAKumD,QAE9G,KAAK,GAED,OADA8tQ,EAAeD,EAAiBl7T,IAAI8G,KAAKy4G,QAAQssM,kBAC1CvqM,EAAUrmF,OAAO,SAAU,CAAEkgS,aAAcA,EAAcF,WAAYA,IAEhF,KAAK,GACL,IAAK,MACD,OAAO35M,EAAUpnF,UAG9BinF,EAAUr6G,UAWjBorO,EAAKx7O,UAAU0kU,oBAAsB,WACjC,IAAIlhQ,EAASpzD,KAEb,GAAIA,KAAKyyT,gBACL,OAAOzyT,KAAKyyT,gBAMhBzyT,KAAKg3F,aAAa84N,8BAElB,IAAIyE,EAAiBv0T,KAAKk0T,eAAel9T,MAAK,SAAUC,GAMpD,OALAm8D,EAAO4jC,aAAaq3I,oBAAoBp3O,EAAOo9T,cAE3CjhQ,EAAOqlD,QAAQgkM,mBAAqBrpP,EAAOqlD,QAAQgnC,gBAAgBrsF,EAAO7M,SAC1E6M,EAAOqlD,QAAQnmF,QAAQirN,iBAAiBnqL,EAAO7M,QAE5CtvD,EAAOk9T,cACf30Q,OAAM,SAAUlrD,GAIf,MAFA8+D,EAAOq/P,gBAAkB,KACzBr/P,EAAO4jC,aAAa+4N,6BACdz7T,KA2BV,OAxBAigU,EAAev9T,MAAK,SAAUm9T,GAC1B,GAAIA,EAAY,CACZ,IAAIK,EAAaphQ,EAAO4jC,aAAasvC,aAAaxtH,QAAO,SAAU/lB,GAC/D,OAAOA,EAAEy0P,iBACVtuP,KAAI,SAAUnG,GACb,OAAOA,EAAEq6F,OAAOoK,OAAO1lG,SAI3B,OAFAypH,EAAS1mH,QAAQgD,IAAI,8BAAgC28T,EAAW9kU,OAAU,qBAAuB0jE,EAAO7M,QAC5F6M,EAAOqlD,QAAQxkF,MACdo6M,oBAAoBj7K,EAAO7M,OAAQiuQ,GAG/Ch1Q,OAAM,SAAUlrD,GACbinH,EAAS1mH,QAAQgD,IAAI,+CAAgDvD,UAG9EkrD,OAAM,SAAUlrD,GAGfinH,EAAS1mH,QAAQjD,MAAM0C,MAG3B0L,KAAKyyT,gBAAkB8B,EAEhBv0T,KAAKyyT,iBAMhBrnF,EAAKx7O,UAAU6kU,4BAA6B,EAAI9iS,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAAS8+I,IACnH,OAAO9gJ,EAAc78B,QAAQm/B,MAAK,SAAmB8qI,GACjD,OACI,OAAQA,EAAUj9J,KAAOi9J,EAAUphK,MAC/B,KAAK,EACD,IAAMsC,KAAK4xT,MAAM38R,kBAAmBj1B,KAAKyyT,gBAAkB,CACvD3zJ,EAAUphK,KAAO,EACjB,MAIJ,OADAohK,EAAUphK,KAAO,GACV,EAAIi0B,EAAU5gC,SAASiP,KAAKs0T,uBAEvC,KAAK,EAED,OADAx1J,EAAUphK,KAAO,GACV,EAAIi0B,EAAU5gC,SAASiP,KAAKy4G,QAAQxkF,MAAMu6M,sBAAsBxuO,KAAKumD,SAEhF,KAAK,EACDvmD,KAAKg3F,aAAaw3I,wBAClBxuO,KAAKyyT,gBAAkB,KAE3B,KAAK,EACL,IAAK,MACD,OAAO3zJ,EAAU1rI,UAG9Bo/I,EAAUxyK,UAOjBorO,EAAKx7O,UAAUikU,qBAAuB,WAClC,IAAIhuO,EAAS7lF,KAEbA,KAAKy0T,6BAA6Bj1Q,OAAM,SAAUlrD,GAC9CinH,EAAS1mH,QAAQjD,MAAM,iDAAyDi0F,EAAOt/B,OAAS,kBAChGg1D,EAAS1mH,QAAQgD,IAAIvD,OAe7B82O,EAAKx7O,UAAU27P,kBAAoB,SAAUC,EAAqBC,GAC9D,IAAK,IAAIj8P,EAAI,EAAGA,EAAIwQ,KAAKkyT,cAAcxiU,OAAQF,IAC3CwQ,KAAKkyT,cAAc1iU,GAAG+7P,kBAAkBC,EAAqBC,GAGjEzrP,KAAKmyT,8BAQT/mF,EAAKx7O,UAAUuiU,2BAA6B,WAKxCnyT,KAAK6xI,SAAW7xI,KAAK62B,kBAAkBs7G,YACvCnyI,KAAKqvH,SAAWrvH,KAAK62B,kBAAkB+6G,SAASjB,EAAc55G,WAC9D/2B,KAAKg3F,aAAeh3F,KAAK62B,kBAAkB+6G,SAASjB,EAAcW,WAYtE85F,EAAKx7O,UAAU8kU,sBAAuB,EAAI/iS,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAAS2lN,IAC7G,IAAIs7E,EAAY5uQ,EAA4BC,EAAoBC,EAAiBE,EAAYD,EAAQsxC,EAErG,OAAO9lE,EAAc78B,QAAQm/B,MAAK,SAAmB0lN,GACjD,OACI,OAAQA,EAAU73O,KAAO63O,EAAUh8O,MAC/B,KAAK,EACD,GAAIsC,KAAKy4G,QAAQgnC,gBAAgBz/I,KAAKumD,QAAS,CAC3CmzL,EAAUh8O,KAAO,EACjB,MAGJ,OAAOg8O,EAAUvlN,OAAO,UAAU,GAEtC,KAAK,EAED,OADAulN,EAAUh8O,KAAO,GACV,EAAIi0B,EAAU5gC,SAASiP,KAAK69O,8BAEvC,KAAK,EACD82E,EAAaj7E,EAAUpkN,KACvBywB,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBvzD,EAClBgnP,EAAU73O,KAAO,EACjBskD,GAAa,EAAIxwD,EAAcd,SAAS8/T,GAE5C,KAAK,GACD,GAAI5uQ,GAA8BG,EAASC,EAAWzoD,QAAQC,KAAM,CAChE+7O,EAAUh8O,KAAO,GACjB,MAKJ,OAFA85F,EAAStxC,EAAOxyD,MAChBgmP,EAAUh8O,KAAO,IACV,EAAIi0B,EAAU5gC,SAASiP,KAAKy4G,QAAQwiI,wBAAwBzjJ,EAAOjkE,SAE9E,KAAK,GAGD,IAFUmmN,EAAUpkN,KAEP5J,MAAK,SAAUg5H,GACxB,OAAOA,EAAOyiG,kBACd,CACAzN,EAAUh8O,KAAO,GACjB,MAGJ,OAAOg8O,EAAUvlN,OAAO,UAAU,GAEtC,KAAK,GACD4xB,GAA6B,EAC7B2zL,EAAUh8O,KAAO,GACjB,MAEJ,KAAK,GACDg8O,EAAUh8O,KAAO,GACjB,MAEJ,KAAK,GACDg8O,EAAU73O,KAAO,GACjB63O,EAAUtlN,GAAKslN,EAAiB,MAAE,GAClC1zL,GAAqB,EACrBC,EAAkByzL,EAAUtlN,GAEhC,KAAK,GACDslN,EAAU73O,KAAO,GACjB63O,EAAU73O,KAAO,IAEZkkD,GAA8BI,EAAWtoD,QAC1CsoD,EAAWtoD,SAGnB,KAAK,GAGD,GAFA67O,EAAU73O,KAAO,IAEZmkD,EAAoB,CACrB0zL,EAAUh8O,KAAO,GACjB,MAGJ,MAAMuoD,EAEV,KAAK,GACD,OAAOyzL,EAAUjuI,OAAO,IAE5B,KAAK,GACD,OAAOiuI,EAAUjuI,OAAO,IAE5B,KAAK,GACD,OAAOiuI,EAAUvlN,OAAO,UAAU,GAEtC,KAAK,GACL,IAAK,MACD,OAAOulN,EAAUtmN,UAG9BimN,EAAUr5O,KAAM,CAAC,CAAC,EAAG,GAAI,GAAI,IAAK,CAAC,GAAG,CAAE,GAAI,UAOnDorO,EAAKx7O,UAAUglU,gBAAkB,WAC7B,OAAO50T,KAAKkyT,eAOhB9mF,EAAKx7O,UAAUijJ,yBAA2B,WACtC,OAAO7yI,KAAKkyT,cAAc,IAU9B9mF,EAAKx7O,UAAUy6N,oBAAsB,SAAUp0H,GAC3C,OAAOj2F,KAAK6yI,2BAA2Bw3E,oBAAoBp0H,IAQ/Dm1I,EAAKx7O,UAAUi8P,YAAc,WACzB,OAAO7rP,KAAK6yI,2BAA2Bg5G,eAS3CzgB,EAAKx7O,UAAUy7J,cAAgB,SAAUp1D,GACrC,OAAOj2F,KAAK6yI,2BAA2BwY,cAAcp1D,IASzDm1I,EAAKx7O,UAAU4uI,2BAA6B,SAAUpsI,GAElD,OADAA,EAAOA,GAAQ,QACR4N,KAAKiyT,oBAAoB7/T,IAQpCg5O,EAAKx7O,UAAUmqT,2BAA6B,SAAU3nT,EAAM+H,GACxD6F,KAAKiyT,oBAAoB7/T,GAAQ+H,GAGrCixO,EAAKx7O,UAAUilU,WAAa,SAAUv4G,GAClC,IAAIv1H,EAAS/mF,KAET80T,EAASx4G,EAAQ,YACjBy4G,EAAcz4G,EAAQ,yBACtB04G,EAAe14G,EAAQ,2BACvB,EAAIg1G,EAAYz8T,SAASkgU,IACzB/0T,KAAKg3F,aAAag4N,qBAAqB+F,IAEvC,EAAIzD,EAAYz8T,SAASmgU,IACzBh1T,KAAKg3F,aAAai4N,sBAAsB+F,GAExCr+T,MAAMC,QAAQk+T,KAId90T,KAAKwyT,eAAiBsC,EAAOh8S,QAAO,SAAUya,GAC1C,OAAOA,IAAWwzD,EAAOqwB,cAUrCg0H,EAAKx7O,UAAUqlU,8BAAgC,SAAUvhU,GACrDsM,KAAKsyT,4BAA8B5+T,GAQvC03O,EAAKx7O,UAAUslU,8BAAgC,WAC3C,OAAOl1T,KAAKsyT,6BAehBlnF,EAAKx7O,UAAUykJ,aAAe,SAAU5+G,EAAS4mE,EAAOp6B,EAAQmyE,EAAcy0G,GAC1E,IAAIssE,EAAkBn1T,KAAKg3F,aAAae,eAAe,gBAAiB,IAIxE,QAHqBrlG,IAAjBm2P,IACAA,GAAe,IAEdssE,IAAoBtsE,EACrB,OAAO,KAGX,IAAIusE,EAAUD,EAAkBA,EAAgBl9N,aAAat7F,IAAM,KACnE,OAAIy4T,EACO1gL,EAAYC,iBAAiBl/G,EAAS2/R,EAAS/4N,EAAOp6B,EAAQmyE,GAC9Dy0G,EACAn0G,EAAYutE,gBAAgBxsL,EAASz1B,KAAKumD,OAAQ81C,EAAOp6B,GAG7D,MASXmpK,EAAKx7O,UAAUs1I,WAAa,WACxB,IAAImwL,EAAe,GAEfr9F,EAAch4N,KAAKg3F,aAAae,eAAe,kBACnD,GAAIigI,EACA,IAAK,IAAIxoO,EAAI,EAAGA,EAAIwoO,EAAYtoO,SAAUF,EAAG,CACzC,IAAI8lU,EAAat9F,EAAYxoO,GACzBgwK,EAAM5oK,QAAQ0+T,EAAWr9N,aAAa08H,UACtCh+N,MAAM/G,UAAUI,KAAKkM,MAAMm5T,EAAcC,EAAWr9N,aAAa08H,SAI7E,OAAO0gG,GASXjqF,EAAKx7O,UAAUq1I,kBAAoB,WAC/B,IAAI+oC,EAAiBhuK,KAAKg3F,aAAae,eAAe,yBAA0B,IAChF,OAAIi2E,EACOA,EAAe/1E,aAAaw3J,MAEhC,MAsBXrkB,EAAKx7O,UAAUk8P,oBAAsB,SAAU1+J,EAAQ4lD,EAAmBnB,EAAUb,GAChFa,EAASI,iBAAiB65G,oBAAoB1+J,EAAQ4lD,EAAmBnB,EAAUb,IAQvFo6F,EAAKx7O,UAAUwoG,UAAY,SAAU7kE,GACjC,OAAOvzB,KAAKg3F,aAAaoB,UAAU7kE,IAOvC63M,EAAKx7O,UAAUqpG,iBAAmB,WAC9B,OAAOj5F,KAAKu1T,yBAAyB,SAUzCnqF,EAAKx7O,UAAUk2I,qBAAuB,WAClC,OAAO9lI,KAAKg3F,aAAa8uC,wBAO7BslG,EAAKx7O,UAAUm2I,sBAAwB,WACnC,OAAO/lI,KAAKg3F,aAAa+uC,yBAO7BqlG,EAAKx7O,UAAUq0T,+BAAiC,WAC5C,OAAOjkT,KAAK+lI,wBAA0B/lI,KAAK8lI,wBAQ/CslG,EAAKx7O,UAAU2lU,yBAA2B,SAAU79N,GAChD,OAAO8nE,EAAM1mJ,OAAO9Y,KAAKg3F,aAAasvC,cAAc,SAAUvzI,GAC1D,OAAOA,EAAE2kG,aAAeA,MAShC0zI,EAAKx7O,UAAUiuP,4BAA6B,EAAIlsN,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASk/M,IACnH,IAAI9iH,EACJ,OAAOp+F,EAAc78B,QAAQm/B,MAAK,SAAmB++M,GACjD,OACI,OAAQA,EAAUlxO,KAAOkxO,EAAUr1O,MAC/B,KAAK,EAED,OADAq1O,EAAUr1O,KAAO,GACV,EAAIi0B,EAAU5gC,SAASiP,KAAKs0T,uBAEvC,KAAK,EAMD,OALAxkM,EAAU9vH,KAAKu1T,yBAAyB,QAEpCv1T,KAAKqkP,mCACLv0H,EAAUA,EAAQxzH,OAAO0D,KAAKu1T,yBAAyB,YAEpDxiF,EAAU5+M,OAAO,SAAU27F,GAEtC,KAAK,EACL,IAAK,MACD,OAAOijH,EAAU3/M,UAG9Bw/M,EAAU5yO,UAOjBorO,EAAKx7O,UAAUy0P,+BAAiC,WAC5C,IAAIlnJ,EAAKn9F,KAAKg3F,aAAae,eAAe,4BAA6B,IACvE,OAAOoF,GAAMA,EAAGlF,cAAuD,WAAvCkF,EAAGlF,aAAa+3J,oBAUpD5kB,EAAKx7O,UAAU4lU,mBAAqB,SAAUjiS,GAC1C,OAAOkiS,EAAkBz1T,KAAMuzB,GAAQ,IAS3C63M,EAAKx7O,UAAU4qJ,mBAAqB,SAAUjnH,EAAQmkE,GAClD,IAAIF,EAASx3F,KAAKo4F,UAAU7kE,GAC5B,QAAKikE,GAGEA,EAAOE,aAAeA,GAQjC0zI,EAAKx7O,UAAU8lU,+BAAiC,SAAU58S,GACtD,GAAI9Y,KAAKoyT,sBAAsBt5S,EAAOuwO,UAClC,OAAOrpP,KAAKoyT,sBAAsBt5S,EAAOuwO,UAE7C,IAAI74O,GAAO,EAAI3a,EAAShB,SAAS,CAAEikB,OAAQA,GAAU9Y,KAAK4xT,OACtDh/K,EAAc,IAAI04F,EAAiBtrO,KAAMwQ,GAC7CxQ,KAAKg4S,UAAU4D,OAAOhpK,EAAa,CAAC,gBAAiB,uBACrD5yI,KAAKoyT,sBAAsBt5S,EAAOuwO,UAAYz2G,EAC9C5yI,KAAKkyT,cAAcliU,KAAK4iJ,GASxB,IAAI+iL,EAAyB31T,KAAK62B,kBAElC8+R,EAAuBxjL,YAAY/3I,SAAQ,SAAUtI,GACjD8gJ,EAAY25G,aAAaz6P,MAK7B,IADA,IAAI+/I,EAAW8jL,EACR9jL,EAASS,wBAAwB3B,EAAc55G,YAClD86G,EAAWA,EAASS,wBAAwB3B,EAAc55G,WAa9D,OAVA67G,EAAY/7G,kBAAkBC,mBAAmB+6G,EAASO,mBAAmBzB,EAAc55G,WAAY45G,EAAc55G,WAU9G67G,GAQXw4F,EAAKx7O,UAAUgmU,0BAA4B,SAAU98S,GACjD,IAAI85H,EAAc5yI,KAAKoyT,sBAAsBt5S,EAAOuwO,iBAC7CrpP,KAAKoyT,sBAAsBt5S,EAAOuwO,UACzC,IAAI75P,EAAIwQ,KAAKkyT,cAAc94T,QAAQw5I,GAC/BpjJ,GAAK,GACLwQ,KAAKkyT,cAAc71T,OAAO7M,EAAG,IAarC47O,EAAKx7O,UAAUimU,cAAgB,SAAU/jU,EAAO06P,GAC5C,GAAI16P,EAAM8uH,cAAe,CACrB,IAAIk1M,EAAWhkU,EAAMA,MAAMwwH,QAGvByzM,EAAgB/1T,KAAK6yI,2BAA2BwY,cAAcyqK,GAClE,GAAIC,EAAe,CAIf,GAHAA,EAAcz1M,aAAaxuH,GAGvBikU,EAAcp4M,cACU39G,KAAKg3F,aAAae,eAAeg+N,EAAcz+N,UAAWy+N,EAAcp4M,eAC1Ef,UAAYm5M,EAAcn5M,SAC5C58G,KAAKg3F,aAAay6C,eAAe,CAACskL,IAI1C/1T,KAAK4O,KAAK,iBAAkB9c,EAAOkO,OAgB3C,GAAIlO,EAAMwrH,cAAcw+H,eAAgB,CACpC,IAAIk6E,EAAgBh2T,KAAK6xT,YAAY//T,EAAMwrH,cAAcw+H,gBACzD,GAAIk6E,EAGA,YADAh2T,KAAKi2T,kBAAkBnkU,EAAOkkU,GAMtC,IAAK,IAAIxmU,EAAI,EAAGA,EAAIwQ,KAAKkyT,cAAcxiU,OAAQF,IAC3CwQ,KAAKkyT,cAAc1iU,GAAG+8P,aAAaz6P,EAAO06P,GAO1C16P,EAAM03B,QAA8B,qBAApB13B,EAAMwlG,WACtBt3F,KAAKk2T,WAAWzE,EAAkB3/T,EAAM03B,OAAO+J,OAAQzhC,EAAO,WAAW,IA4BjFs5O,EAAKx7O,UAAUoxT,gBAAkB,SAAUlvT,EAAO6oT,GAC9C,GAAI7oT,EAAMiL,SAAWy+G,EAAYG,QAC7B,MAAM,IAAI9pH,MAAM,kDAAoDC,EAAMiL,QAG9E,GAAIiD,KAAK6xT,YAAYlX,GACjB,MAAM,IAAI9oT,MAAM,uDAAyD8oT,GAU7E,GAJAhqK,EAAcmC,iBAAiBhhJ,EAAOkO,KAAK62B,kBAAkB+6G,SAASjB,EAAcW,WAAW,GAE/FtxI,KAAK6xT,YAAYlX,GAAS7oT,EAEa,YAAnCkO,KAAK4xT,MAAM58R,sBAgBX,GAfIh1B,KAAKqyT,kBAAkB3mS,MAAK,SAAUh7B,GACtC,OAAOA,EAAEqM,SAAWy+G,EAAYC,cAEhCF,EAAS1mH,QAAQyF,KAAK,+DACtBxI,EAAMovH,UAAU1F,EAAYC,WAEhCz7G,KAAKqyT,kBAAkBriU,KAAK8B,GAExBA,EAAMuvH,cAINrhH,KAAKm2T,0BAA0BrkU,GAG/BA,EAAM8uH,cAAe,CACrB,IAAIk1M,EAAWhkU,EAAMA,MAAMwwH,QACvByzM,EAAgB/1T,KAAKqyT,mBAAqBryT,KAAKqyT,kBAAkB/4T,MAAK,SAAU5I,GAChF,OAAOA,EAAEksH,UAAYk5M,KAEpBC,IACDA,EAAgB/1T,KAAK6yI,2BAA2BwY,cAAcyqK,IAE9DC,IACAA,EAAc31M,oBAAoBtuH,GAClCkO,KAAK4O,KAAK,iBAAkB9c,EAAOkO,aAI3C,IAAK,IAAIxQ,EAAI,EAAGA,EAAIwQ,KAAKkyT,cAAcxiU,OAAQF,IAAK,CAChD,IAAIojJ,EAAc5yI,KAAKkyT,cAAc1iU,GACjCojJ,EAAYZ,YACRY,EAAYZ,YAAYo4G,mBAAmB,CAACt4P,IAAQpC,QACpDkjJ,EAAY05G,mBAAmBx6P,EAAO8gJ,EAAY/7G,mBAAmB,GAGzE+7G,EAAY05G,mBAAmBx6P,EAAO8gJ,EAAY/7G,mBAAmB,GAKjF72B,KAAK4O,KAAK,wBAAyB9c,EAAOkO,KAAM,KAAM,OAY1DorO,EAAKx7O,UAAUumU,0BAA4B,SAAUrkU,GAGjD,IAAK,IAAItC,EAAI,EAAGA,EAAIwQ,KAAKkyT,cAAcxiU,OAAQF,IAAK,CAChD,IAAIojJ,EAAc5yI,KAAKkyT,cAAc1iU,GACjCojJ,EAAYZ,YACRY,EAAYZ,YAAYo4G,mBAAmB,CAACt4P,IAAQpC,QACpDkjJ,EAAYg6G,mBAAmB96P,GAGnC8gJ,EAAYg6G,mBAAmB96P,KAmB3Cs5O,EAAKx7O,UAAUqmU,kBAAoB,SAAUG,EAAatpE,GACtD,IAAI1B,EAAa0B,EAAWlwI,QACxByuI,EAAa+qE,EAAYx5M,QACzBy5M,EAAYvpE,EAAW/vP,cAGpBiD,KAAK6xT,YAAYuE,EAAY94M,cAAcw+H,gBAG9C97O,KAAKqyT,mBACL7yJ,EAAM51E,cAAc5pF,KAAKqyT,mBAAmB,SAAUl1N,GAClD,OAAOA,EAAGyf,SAAWwuI,KACtB,GAKP0B,EAAW/rI,iBAAiBq1M,EAAYtkU,OAExC,IAAK,IAAItC,EAAI,EAAGA,EAAIwQ,KAAKkyT,cAAcxiU,OAAQF,IAAK,CAC9BwQ,KAAKkyT,cAAc1iU,GAGzBuxH,iBAAiB+rI,EAAY1B,EAAYC,GAGzDrrP,KAAK4O,KAAK,wBAAyBk+O,EAAY9sP,KAAMorP,EAAYirE,IAKrE,IAAIC,EAAsB,GAof1B,SAASb,EAAkBzgO,EAAMzhE,EAAQgjS,GACrC,IAAKA,EAAqB,CAGtB,IAAIC,EAAYxhO,EAAKgC,aAAae,eAAe,cAAe,IAChE,GAAIy+N,GAAaA,EAAUv+N,cAAgBu+N,EAAUv+N,aAAazlG,KAC9D,OAAOgkU,EAAUv+N,aAAazlG,KAItC,IAAIi9P,EAAQz6J,EAAKiwC,oBAEjB,IAAKwqH,EAAO,CACR,IAAI96B,EAAU3/H,EAAKkwC,aAEfyvF,EAAQjlO,SACR+/P,EAAQ96B,EAAQ,IAGxB,GAAI86B,EACA,OAAOA,EAGX,IAGIgnE,EAHoBzhO,EAAKgC,aAAa8uC,uBACjB9wC,EAAKgC,aAAa+uC,wBAEoB,EAG3D2wL,EAAa,KACjB,GAAI1hO,EAAKw9N,eAGLkE,EAAa1hO,EAAKw9N,eAAet5T,KAAI,SAAUq6B,GAC3C,IAAIikE,EAASxC,EAAKoD,UAAU7kE,GAC5B,OAAOikE,EAASA,EAAOhlG,KAAO+gC,SAE/B,CACH,IAAIojS,EAAe3hO,EAAKgC,aAAasvC,aAAaxtH,QAAO,SAAU/lB,GAC/D,OAAOA,EAAEwgC,SAAWA,IAA4B,WAAjBxgC,EAAE2kG,YAA4C,SAAjB3kG,EAAE2kG,eAGlEi/N,EAAa5wR,MAAK,SAAU1mC,EAAG6kB,GAC3B,OAAO7kB,EAAEk0B,OAAOomF,cAAcz1F,EAAEqP,WAIpCmjS,GADAC,EAAeA,EAAahiU,MAAM,EAAG,IACXuE,KAAI,SAAUnG,GACpC,OAAOA,EAAEP,QAIjB,GAAIikU,EACA,OAAOG,EAAsBF,EAAYD,GAM7C,GAAoB,QAHDzhO,EAAKuf,kBAGI,CACxB,IAAIsiN,EAAoB7hO,EAAKgC,aAAae,eAAe,6BAEzD,GAAI8+N,GAAqBA,EAAkBnnU,OAKvC,MAAO,YAAcknU,EAJCC,EAAkB39T,KAAI,SAAU1J,GAClD,OAAOA,EAAEyoG,aAAa43J,iBAOlC,IAAIinE,EAAYJ,EAShB,OAPKI,EAAUpnU,SACXonU,EAAY9hO,EAAKgC,aAAasvC,aAAaxtH,QAAO,SAAU/lB,GACxD,OAAOA,EAAEwgC,SAAWA,GAA2B,WAAjBxgC,EAAE2kG,YAA4C,SAAjB3kG,EAAE2kG,cAC9Dx+F,KAAI,SAAUnG,GACb,OAAOA,EAAEP,SAGbskU,EAAUpnU,OACH,mBAAqBknU,EAAsBE,GAAa,IAExD,aAIf,SAASF,EAAsB1+S,GAC3B,IAEI6+S,GAFQp0T,UAAUjT,OAAS,QAAsBgD,IAAjBiQ,UAAU,GAAmBA,UAAU,GAAKuV,EAAMxoB,OAAS,GAElE,EAC7B,OAAKwoB,EAAMxoB,OAEiB,IAAjBwoB,EAAMxoB,QAAgBqnU,GAAkB,EACxC7+S,EAAM,GACW,IAAjBA,EAAMxoB,QAAgBqnU,GAAkB,EACxC7+S,EAAM,GAAK,QAAUA,EAAM,GAErB6+S,EAAiB,EAEnB7+S,EAAM,GAAK,QAAU6+S,EAAiB,UAEtC7+S,EAAM,GAAK,eAVf,aA9kBfo+S,EAAoB96M,EAAYE,YAAc,CAACF,EAAYG,QAASH,EAAYC,UAEhF66M,EAAoB96M,EAAYG,SAAW,CAACH,EAAYE,WAAYF,EAAYI,OAAQJ,EAAYC,SAAUD,EAAYK,MAE1Hy6M,EAAoB96M,EAAYI,QAAU,CAACJ,EAAYG,QAASH,EAAYM,WAE5Ew6M,EAAoB96M,EAAYK,MAAQ,GAExCy6M,EAAoB96M,EAAYC,UAAY,CAACD,EAAYG,QAASH,EAAYI,OAAQJ,EAAYM,WAElGw6M,EAAoB96M,EAAYM,WAAa,GAc7CsvH,EAAKx7O,UAAU2qT,mBAAqB,SAAUzoT,EAAO4oT,EAAWrvD,GAI5D,GAHA9vI,EAAS1mH,QAAQgD,IAAI,kCAAoC6iT,EAAY,OAAS5oT,EAAMs2G,aAGhFsyM,GAAal/L,EAAYK,OAASwvI,EAClC,MAAM,IAAIx5P,MAAM,mEAIpB,GAAI6oT,GAAal/L,EAAYK,MACV77G,KAAK6yI,2BAA2Bq4G,kBAAkBG,GAI7D,OAIR,IAAIgrE,EAAYvkU,EAAMiL,OAClBquP,EAAat5P,EAAM8qH,QAEvB,IAAKy5M,EACD,MAAM,IAAIxkU,MAAM,0EAGpB,IAAIinG,EAAUw9N,EAAoBD,GAClC,IAAKv9N,GAAWA,EAAQ1/F,QAAQshT,GAAa,EACzC,MAAM,IAAI7oT,MAAM,kCAAoCwkU,EAAY,KAAO3b,GAK3E,GAFA5oT,EAAMovH,UAAUw5L,GAEZA,GAAal/L,EAAYK,KAAM,CAE/B/pH,EAAMsvH,oBAAoBiqI,GAK1B,IAAK,IAAI77P,EAAI,EAAGA,EAAIwQ,KAAKkyT,cAAcxiU,OAAQF,IAC3CwQ,KAAKkyT,cAAc1iU,GAAG27P,eAAeC,EAAYC,QAElD,GAAIqvD,GAAal/L,EAAYM,UAAW,CAE3C,GAAI97G,KAAKqyT,kBAAmB,CACxB,IAAIxpR,EAAM7oC,KAAKqyT,kBAAkBh3Q,WAAU,SAAU8hD,GACjD,OAAOA,EAAGyf,UAAYwuI,KAE1B,IAAa,IAATviN,EAAY,CACZ,IAAImuR,EAAwBh3T,KAAKqyT,kBAAkBh2T,OAAOwsC,EAAK,GAE3DouR,GADyB,EAAI34Q,EAAgBzpD,SAASmiU,EAAuB,GACvC,GAEtCC,EAAar2M,eACb5gH,KAAKk3T,0BAA0BD,IAI3Cj3T,KAAKkzI,YAAYk4G,GAGrBprP,KAAK4O,KAAK,wBAAyB9c,EAAOkO,KAAMorP,EAAYirE,IAGhEjrF,EAAKx7O,UAAUsnU,0BAA4B,SAAU72M,GACjD,IAAIy1M,EAAWz1M,EAAevuH,MAAMwwH,QACpC,GAAKwzM,EAAL,CAGA,IAAIC,EAAgB/1T,KAAK6yI,2BAA2BwY,cAAcyqK,GAC9DC,IACAA,EAAc71M,wBAEdlgH,KAAK4O,KAAK,0BAA2ByxG,EAAgBrgH,MAEjD+1T,EAAc10M,cACdrhH,KAAKm2T,0BAA0BJ,MAqB3C3qF,EAAKx7O,UAAUunU,cAAgB,SAAU/pO,EAAQo/J,GAC7C,IAAIh9P,OAAI,EACR,GAAIg9P,IAA2E,IAAtD,CAAC,UAAW,UAAUpzP,QAAQozP,GACnD,MAAM,IAAI36P,MAAM,0DAIpB,IAAKrC,EAAI,EAAGA,EAAIwQ,KAAKkyT,cAAcxiU,OAAQF,IAAK,CAC5C,IAAI4nU,EAAep3T,KAAKkyT,cAAc1iU,GAAGqnC,kBACzC,GAAIugS,EAAahlL,mBAAmBzB,EAAcW,UAC9C,MAAM,IAAIz/I,MAAM,iBAAmBrC,EAAI,mDAA0D4nU,EAAahlL,mBAAmBzB,EAAcW,UAAY,KAE/J,GAAI8lL,EAAa9kL,wBAAwB3B,EAAcW,UACnD,MAAM,IAAIz/I,MAAM,iBAAmBrC,EAAI,uDAI/C,IAAKA,EAAI,EAAGA,EAAI49F,EAAO19F,OAAQF,IAG3BwQ,KAAK61T,cAAczoO,EAAO59F,GAAIg9P,IAQtCphB,EAAKx7O,UAAUynU,mBAAqB,SAAUjqO,GAC1C,IAAI1lC,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBl1D,EAEtB,IACI,IAAK,IAAqDm1D,EAAjDC,GAAa,EAAInyD,EAAcd,SAASu4F,KAAmB1lC,GAA8BG,EAASC,EAAWpqD,QAAQC,MAAO+pD,GAA6B,EAAM,CACpK,IAAI51D,EAAQ+1D,EAAOn0D,MAEK,aAApB5B,EAAMwlG,UACNt3F,KAAKg3F,aAAasxJ,eAAex2P,GACN,cAApBA,EAAMwlG,WACbt3F,KAAKk2T,WAAWpkU,IAG1B,MAAOwC,GACLqzD,GAAqB,EACrBC,EAAkBtzD,EACpB,QACE,KACSozD,GAA8BI,EAAWjqD,QAC1CiqD,EAAWjqD,SAEjB,QACE,GAAI8pD,EACA,MAAMC,KAUtBwjL,EAAKx7O,UAAU0nU,aAAe,SAAUC,GACpC,IAAK,IAAI/nU,EAAI,EAAGA,EAAI+nU,EAAS7nU,SAAUF,EACnCwQ,KAAKkzI,YAAYqkL,EAAS/nU,KAWlC47O,EAAKx7O,UAAUsjJ,YAAc,SAAUj9C,GAEnC,IADA,IAAIuhO,GAAa,EACRhoU,EAAI,EAAGA,EAAIwQ,KAAKkyT,cAAcxiU,OAAQF,IAAK,CAChD,IAAIy5C,EAAUjpC,KAAKkyT,cAAc1iU,GAAG0jJ,YAAYj9C,GAC5ChtD,IACIA,EAAQ23E,eACR5gH,KAAKk3T,0BAA0BjuR,GAEnCuuR,GAAa,GAGrB,OAAOA,GASXpsF,EAAKx7O,UAAU6nU,YAAc,WAGzB,IAAI94T,EAAOqB,KACP03T,EAAkB13T,KAAKg3F,aAAae,eAAe,gBAAiB/3F,KAAKo3G,UAC7E,GAAIsgN,GAA+D,WAA5CA,EAAgBz/N,aAAaP,WAAyB,CACzE,IAAIigO,EAAsBD,EAAgB5lU,MAAM8lU,mBAAqB,GACrEp4J,EAAMplK,QAAQu9T,GAAqB,SAAUE,GACrBl5T,EAAKq4F,aAAae,eAAe8/N,EAAczlU,KAAMylU,EAAczhN,YAGnFz3G,EAAKq4F,aAAay6C,eAAe,CAAC,IAAIx1B,EAAY,CAC9C7pH,KAAMylU,EAAczlU,KACpBgkH,UAAWyhN,EAAczhN,UACzBpe,QAAS6/N,EAAc7/N,QACvByQ,SAAU,QAAU7hD,KAAK8+D,MACzBrd,QAAS1pG,EAAK4nD,OACdu2D,QAASn+G,EAAKy4G,gBAM9B,IAAI+iG,EAAUn6M,KAAKxN,KACnBwN,KAAKxN,KAAOijU,EAAkBz1T,KAAMA,KAAKo3G,UACzCp3G,KAAKs8M,QAAU,IAAIi1G,EAAYvxT,KAAKumD,OAAQ,CACxCv0C,MAAOhS,KAAKxN,OAGZ2nN,IAAYn6M,KAAKxN,MACjBwN,KAAK4O,KAAK,YAAa5O,OAS/BorO,EAAKx7O,UAAUkoU,iBAAmB,SAAUhmU,GACxC,OAAOkO,KAAK+3T,oBAAoBjmU,GAAOgnB,QAAO,SAAUk/S,GACpD,MAAwB,WAAjBA,EAAQ5lU,QAChB8G,KAAI,SAAU8+T,GACb,OAAOA,EAAQzkS,WAavB63M,EAAKx7O,UAAU0wQ,iBAAmB,SAAU/sO,EAAQ0kS,GAChD,IAAIC,EAAWl4T,KAAK8xT,UAKpB,OAJImG,IACAC,EAAWl4T,KAAKgyT,oBAGOt/T,IAAvBwlU,EAAS,gBAA0DxlU,IAA/BwlU,EAAS,UAAU3kS,GAChD,KAGJ2kS,EAAS,UAAU3kS,GAAQ0iE,SAWtCm1I,EAAKx7O,UAAUkqT,iBAAmB,SAAUvmR,EAAQ0iE,GAChD,IAAIoqK,EAAargQ,KAAKsgQ,iBAAiB/sO,GAAQ,GAC/C,GAAI8sO,IAAepqK,EAAS,OAAO,EAEnC,GAAIj2F,KAAK6xI,SAASniJ,QAAUsQ,KAAK6xI,SAAS7xI,KAAK6xI,SAASniJ,OAAS,GAAGmtH,aAAe78G,KAAK6xI,SAAS7xI,KAAK6xI,SAASniJ,OAAS,GAAGmtH,cAAgBtpF,EAGvI,OAAO,EAGX,IAAK,IAAI/jC,EAAIwQ,KAAK6xI,SAASniJ,OAAS,EAAGF,GAAK,IAAKA,EAAG,CAChD,IAAI2tG,EAAKn9F,KAAK6xI,SAASriJ,GAKvB,GAAI2tG,EAAGyf,UAAY3mB,EAAS,OAAO,EACnC,GAAIkH,EAAGyf,UAAYyjJ,EAAY,OAAO,EAI1C,OAAO,GASXj1B,EAAKx7O,UAAUmoU,oBAAsB,SAAUjmU,GAC3C,OAAOkO,KAAK+xT,uBAAuBjgU,EAAM8qH,UAAY,IAQzDwuH,EAAKx7O,UAAUsmU,WAAa,SAAUpkU,EAAOqmU,QAW5BzlU,IAATylU,IACAA,GAAO,GAENA,GACDn4T,KAAKo4T,wBAAwBtmU,EAAOkO,KAAKgyT,eAI7ChyT,KAAKo4T,wBAAwBtmU,EAAOkO,KAAK8xT,WACzC9xT,KAAK+xT,uBAAyB/xT,KAAKq4T,mBAAmBr4T,KAAK8xT,WAI3D9xT,KAAK4O,KAAK,eAAgB9c,EAAOkO,OAQrCorO,EAAKx7O,UAAUwoU,wBAA0B,SAAUtmU,EAAOomU,GACtD,IAAIv5T,EAAOqB,KACXw/J,EAAMz2J,KAAKjX,EAAMmmG,cAAc79F,SAAQ,SAAU67F,GAC7CupE,EAAMz2J,KAAKjX,EAAMmmG,aAAahC,IAAU77F,SAAQ,SAAUmnT,GACtD/hJ,EAAMz2J,KAAKjX,EAAMmmG,aAAahC,GAASsrN,IAAcnnT,SAAQ,SAAUm5B,GACnE,IAAIykS,EAAUlmU,EAAMmmG,aAAahC,GAASsrN,GAAahuR,GAElD2kS,EAAS3W,KACV2W,EAAS3W,GAAe,IAG5B,IAAI+W,EAAkBJ,EAAS3W,GAAahuR,GAE5C,GAAK+kS,EAEE,CAKH,IAAIC,EAAW55T,EAAKk0I,2BAA2Bk6G,qBAAqBurE,EAAgBriO,QAASA,GAC7F,GAAiB,OAAbsiO,GAAqBA,GAAY,EACjC,YARJL,EAAS3W,GAAahuR,GAAU,GAYpC2kS,EAAS3W,GAAahuR,GAAU,CAC5B0iE,QAASA,EACT9mG,KAAM6oU,aAY1B5sF,EAAKx7O,UAAUyoU,mBAAqB,SAAUH,GAC1C,IAAIM,EAAwB,GAc5B,OAbAh5J,EAAMz2J,KAAKmvT,GAAU99T,SAAQ,SAAUmnT,GACnC/hJ,EAAMz2J,KAAKmvT,EAAS3W,IAAcnnT,SAAQ,SAAUm5B,GAChD,IAAIykS,EAAUE,EAAS3W,GAAahuR,GAC/BilS,EAAsBR,EAAQ/hO,WAC/BuiO,EAAsBR,EAAQ/hO,SAAW,IAE7CuiO,EAAsBR,EAAQ/hO,SAASjmG,KAAK,CACxCujC,OAAQA,EACRnhC,KAAMmvT,EACNpyT,KAAM6oU,EAAQ7oU,aAInBqpU,GAUXptF,EAAKx7O,UAAU8xT,qBAAuB,SAAUnuR,EAAQ7iC,EAAG6wT,GACvDvhT,KAAKk2T,WAAWzE,EAAkBl+R,EAAQ7iC,EAAG6wT,IAAc,IAO/Dn2E,EAAKx7O,UAAU6oU,QAAU,SAAU3mU,GAU/BkO,KAAKhG,KAAOlI,EAAMmmG,aAAaj+F,MAAQ,GAIvCgG,KAAK4O,KAAK,YAAa9c,EAAOkO,OAOlCorO,EAAKx7O,UAAU8oU,eAAiB,SAAUtrO,GACtC,IAAK,IAAI59F,EAAI,EAAGA,EAAI49F,EAAO19F,OAAQF,IAAK,CACpC,IAAIsC,EAAQs7F,EAAO59F,GACK,UAApBsC,EAAMwlG,WACNt3F,KAAKy4T,QAAQ3mU,GAEjBkO,KAAK66M,YAAY/oN,EAAMwlG,WAAaxlG,EACpCkO,KAAK4O,KAAK,mBAAoB9c,EAAOkO,QAS7CorO,EAAKx7O,UAAUylH,eAAiB,SAAUjjH,GACtC,OAAO4N,KAAK66M,YAAYzoN,IAQ5Bg5O,EAAKx7O,UAAU+gU,eAAiB,WAC5B,MAAkC,SAA3B3wT,KAAKu0G,mBAAgCv0G,KAAKg3F,aAAas5N,aAAa,iBAAkBtwT,KAAKo3G,WA2HtG5mH,EAAOD,QAAU66O,G,gBC/kEjB56O,EAAOD,QAAU,CAAE,QAAW,EAAQ,MAAyCsD,YAAY,I,6BCqB3F,IAAI64F,EAAe,EAAQ,IAAUA,aAiBrC,SAAS2+I,EAAMh2I,GACXr1F,KAAKq1F,QAAUA,EACfr1F,KAAKxN,KAAO,KACZwN,KAAKs3G,UAAY,KACjBt3G,KAAK2lI,aAAe,KACpB3lI,KAAKsjN,QAAU,KApBP,EAAQ,IAsBdrwM,SAASo4N,EAAO3+I,GAEtB2+I,EAAMz7O,UAAU+oU,WAAa,SAAUnmU,EAAM8kH,GACrCt3G,KAAKxN,OAASA,GAAQwN,KAAKs3G,YAAcA,IAE7Ct3G,KAAKxN,KAAOA,GAAQwN,KAAKq1F,QACzBr1F,KAAKs3G,UAAYA,EAEjBt3G,KAAK4O,KAAK,gBAAiB5O,QAG/BqrO,EAAMz7O,UAAUgpU,gBAAkB,SAAUlhO,GACpC13F,KAAK2lI,eAAiBjuC,IAE1B13F,KAAK2lI,aAAejuC,EAEpB13F,KAAK4O,KAAK,qBAAsB5O,QASpCqrO,EAAMz7O,UAAUipU,WAAa,SAAUv1G,GACnCtjN,KAAKsjN,QAAUA,GAGnB9yN,EAAOD,QAAU86O,G,6BCxEjB17O,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAEXnD,EAAQgoJ,mBAAgB7lJ,EAExB,IAIgCuC,EAJ5B6jU,EAAU,EAAQ,KAElBroL,GAE4Bx7I,EAFM6jU,IAEe7jU,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAkBnE1E,EAAQgoJ,eAAgB,EAAI9H,EAAS57I,SAAS,CAC9D2jJ,GAAI,kBACJugL,GAAI,qB,6BC7BRppU,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAEXnD,EAAQgpH,mBAAgB7mH,EAExB,IAAIi/B,EAAY,EAAQ,GAEpBh4B,EAAa/D,EAAuB+7B,GAIpCD,EAAgB97B,EAFD,EAAQ,KAMvBD,EAAgBC,EAFA,EAAQ,KAMxBE,EAASF,EAFD,EAAQ,KAMhBi8B,EAAgBj8B,EAFA,EAAQ,IAMxBg8B,EAAmBh8B,EAFA,EAAQ,IAM3B2lH,EAAW3lH,EAFD,EAAQ,KAIlBu+N,EAAO,EAAQ,IAEnB,SAASv+N,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAiGnE1E,EAAQgpH,cAAgB,WACxC,SAASA,KACL,EAAI3nF,EAAiB/8B,SAASmL,KAAMu5G,GAyd7B,IACCtC,EA3GA1G,EAvGAt9E,EApPAC,EA8lBZ,OA/mBA,EAAIrB,EAAch9B,SAAS0kH,EAAe,KAAM,CAAC,CAC7CvlH,IAAK,sBAeLN,OACQw/B,GAAO,EAAIvB,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASC,EAAQwgO,GAC1F,IAAI6kE,EAAc9zM,EAAO+zM,EAAY5zM,EAAO6zM,EAAqBC,EACjE,OAAOznS,EAAc78B,QAAQm/B,MAAK,SAAkB7F,GAChD,OACI,OAAQA,EAAStsB,KAAOssB,EAASzwB,MAC7B,KAAK,EAqBD,GAfAs7T,EAAe,CACX,eAAgB,CACZn5Q,MAAO05D,EAAc6/M,WACrBxnU,MAAO2nH,EAAc8/M,cACrBr1M,SAAU,MAEd,oBAAqB,CAGjBnkE,MAAO05D,EAAcsL,OACrBjzH,MAAO,KACPoyH,SAAU,OAIXmwI,GAAcA,EAAU,gBAAkB,CAC7ChmO,EAASzwB,KAAO,EAChB,MAQJ,OALA69G,EAAS1mH,QAAQjD,MAAM,iCAEvBonU,EAAa,gBAAgBn5Q,MAAQ05D,EAAc+/M,YACnDN,EAAa,gBAAgBpnU,MAAQ2nH,EAAc8/M,cAE5ClrS,EAASgG,OAAO,SAAUx6B,EAAW9E,QAAQ9D,QAAQioU,IAEhE,KAAK,EACD,GAAI7kE,EAAU,gBAA0B,SAAG,CACvChmO,EAASzwB,KAAO,GAChB,MAQJ,OALA69G,EAAS1mH,QAAQjD,MAAM,sCAEvBonU,EAAa,gBAAgBn5Q,MAAQ05D,EAAc+/M,YACnDN,EAAa,gBAAgBpnU,MAAQ2nH,EAAcggN,0BAE5CprS,EAASgG,OAAO,SAAUx6B,EAAW9E,QAAQ9D,QAAQioU,IAEhE,KAAK,GAMD,GAFA9zM,EAAQllH,KAAKw5T,sBAAsBrlE,EAAU,gBAA0B,UAE5D,CACPhmO,EAASzwB,KAAO,GAChB,MAKJ,OAFA69G,EAAS1mH,QAAQjD,MAAM,qCACvBonU,EAAa,gBAAgBpnU,MAAQ2nH,EAAcggN,0BAC5CprS,EAASgG,OAAO,SAAUx6B,EAAW9E,QAAQ9D,QAAQioU,IAEhE,KAAK,GAED,OADA7qS,EAASzwB,KAAO,IACT,EAAIi0B,EAAU5gC,SAASiP,KAAKy5T,sBAAsBv0M,EAAQ,6BAErE,KAAK,GAGD,IAFA+zM,EAAa9qS,EAASmH,OAEA2jS,EAAWt9D,IAAc,SAAI,CAC/CxtO,EAASzwB,KAAO,GAChB,MAUJ,OAPA69G,EAAS1mH,QAAQjD,MAAM,8BACvBonU,EAAa,gBAAgBpnU,MAAQ2nH,EAAc2J,yBAInD81M,EAAa,gBAAgBh1M,SAAWkB,EAEjC/2F,EAASgG,OAAO,SAAUx6B,EAAW9E,QAAQ9D,QAAQioU,IAEhE,KAAK,GAYD,GATAA,EAAa,gBAAkB,CAC3Bn5Q,MAAO05D,EAAcqL,QACrBhzH,MAAO,KACPoyH,SAAUkB,GAIdG,EAAQ,IAEH8uI,EAAU,qBAAsB,CACjChmO,EAASzwB,KAAO,GAChB,MA6BJ,GArBAw7T,EAAsB,CAClB,eAAgB,CACZr5Q,MAAO05D,EAAc6/M,WACrBxnU,MAAO2nH,EAAcmgN,iBAIrB11M,SAAUg1M,EAAa,gBAAgBh1M,UAE3C,oBAAqB,CACjBnkE,MAAO05D,EAAc6/M,WACrBxnU,MAAO2nH,EAAcmgN,iBACrB11M,SAAU,OAOlBqB,EAAQrlH,KAAKw5T,sBAAsBrlE,EAAU,qBAA+B,UAEjE,CACPhmO,EAASzwB,KAAO,GAChB,MAKJ,OAFA69G,EAAS1mH,QAAQjD,MAAM,0CACvBsnU,EAAoB,qBAAqBtnU,MAAQ2nH,EAAcogN,0BACxDxrS,EAASgG,OAAO,SAAUx6B,EAAW9E,QAAQ9D,QAAQmoU,IAEhE,KAAK,GAED,OADA/qS,EAASzwB,KAAO,IACT,EAAIi0B,EAAU5gC,SAASiP,KAAKy5T,sBAAsBp0M,EAAQ,6BAErE,KAAK,GAGD,IAFA8zM,EAAahrS,EAASmH,OAEA6jS,EAAWx9D,KAA6B,YAAtBw9D,EAAWn7Q,OAAuB,CACtE7vB,EAASzwB,KAAO,GAChB,MAUJ,OAPA69G,EAAS1mH,QAAQjD,MAAM,4BACvBsnU,EAAoB,qBAAqBtnU,MAAQ2nH,EAAc4J,8BAI/D+1M,EAAoB,qBAAqBl1M,SAAWqB,EAE7Cl3F,EAASgG,OAAO,SAAUx6B,EAAW9E,QAAQ9D,QAAQmoU,IAEhE,KAAK,GAmDD,OA/CI7zM,GAASA,EAAM31H,OAAS,IACxBspU,EAAa,qBAAuB,CAChCn5Q,MAAO05D,EAAcqL,QACrBhzH,MAAO,KACPoyH,SAAUqB,KAMlB,EAAIvvH,EAAOjB,SAASs/P,GAAWj7P,KAAI,SAAUmB,GACzC,GAAU,iBAANA,GAA8B,sBAANA,EAA2B,CAGnD,IAAIu/T,EAAW,CAAC,QAAS,QAAS,YAC9Bv8T,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiB7K,EAErB,IACI,IAAK,IAA+E8K,EAA3EC,GAAY,EAAI9H,EAAcd,UAAS,EAAIiB,EAAOjB,SAASs/P,EAAU95P,OAAegD,GAA6BG,EAAQC,EAAUC,QAAQC,MAAON,GAA4B,EAAM,CACzL,IAAIib,EAAO9a,EAAM9J,MAEbkmU,EAASp4R,SAASlpB,KACtB0gT,EAAa3+T,GAAGie,GAAQ67O,EAAU95P,GAAGie,KAE3C,MAAOhkB,GACLgJ,GAAoB,EACpBC,EAAiBjJ,EACnB,QACE,KACS+I,GAA6BI,EAAUI,QACxCJ,EAAUI,SAEhB,QACE,GAAIP,EACA,MAAMC,SAMlBy7T,EAAa3+T,GAAK85P,EAAU95P,MAK7B8zB,EAASgG,OAAO,SAAUx6B,EAAW9E,QAAQ9D,QAAQioU,IAEhE,KAAK,GACL,IAAK,MACD,OAAO7qS,EAASiF,UAG7BO,EAAS3zB,UAGhB,SAA6B0rG,GACzB,OAAOx4E,EAAKh3B,MAAM8D,KAAM2C,cAmBjC,CACC3O,IAAK,mBACLN,OACQu/B,GAAQ,EAAItB,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASyB,EAASloB,GAC5F,IAAI+rT,EAAc7kE,EAClB,OAAOziO,EAAc78B,QAAQm/B,MAAK,SAAmBoB,GACjD,OACI,OAAQA,EAAUvzB,KAAOuzB,EAAU13B,MAC/B,KAAK,EACD,GAAOuP,GAA4B,iBAAXA,GAAyC,IAAlBA,EAAOvd,OAAe,CACjE0lC,EAAU13B,KAAO,EACjB,MAGJ,MAAM,IAAI7L,MAAM,gDAEpB,KAAK,EAmCD,OAnBAmnU,EAAe,CACX,eAAgB,CACZn5Q,MAAO05D,EAAc6/M,WACrBxnU,MAAO2nH,EAAc8/M,cACrBr1M,SAAU,MAEd,oBAAqB,CAGjBnkE,MAAO05D,EAAcsL,OACrBjzH,MAAO,KACPoyH,SAAU,OAOlB5uF,EAAU13B,KAAO,GACV,EAAIi0B,EAAU5gC,SAASiP,KAAKy5T,sBAAsB,WAAaxsT,EAAS,+BAEnF,KAAK,EAGD,IAFAknP,EAAY/+N,EAAUE,OAEmB,YAArB6+N,EAAUn2M,OAAuB,CACjD5oB,EAAU13B,KAAO,GACjB,MAgBJ,OAbA69G,EAAS1mH,QAAQjD,MAAM,iDACnBuiQ,EAAU1nP,QAAQ8uG,EAAS1mH,QAAQjD,MAAMuiQ,EAAU1nP,QAC9B,WAArB0nP,EAAUn2M,OACVg7Q,EAAa,gBAAkB,CAC3Bn5Q,MAAO05D,EAAcsL,OACrBjzH,MAAO,KACPoyH,SAAU,OAIdg1M,EAAa,gBAAgBn5Q,MAAQ05D,EAAc+/M,YACnDN,EAAa,gBAAgBpnU,MAAQ2nH,EAAc8/M,eAEhDjkS,EAAUjB,OAAO,SAAUx6B,EAAW9E,QAAQ9D,QAAQioU,IAEjE,KAAK,GACD,OAAO5jS,EAAUjB,OAAO,SAAUolF,EAAc0K,oBAAoBkwI,EAAUwH,MAElF,KAAK,GACL,IAAK,MACD,OAAOvmO,EAAUhC,UAG9B+B,EAAUn1B,UAGjB,SAA0Bu/G,GACtB,OAAOtsF,EAAM/2B,MAAM8D,KAAM2C,cAelC,CACC3O,IAAK,qBACLN,OACQ68G,GAAQ,EAAI5+E,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAAS2mF,EAASptG,GAC5F,IAAIpQ,EACJ,OAAO60B,EAAc78B,QAAQm/B,MAAK,SAAmBwmF,GACjD,OACI,OAAQA,EAAU34G,KAAO24G,EAAU98G,MAC/B,KAAK,EACD,GAAOuP,GAA4B,iBAAXA,GAAyC,IAAlBA,EAAOvd,OAAe,CACjE8qH,EAAU98G,KAAO,EACjB,MAGJ,MAAM,IAAI7L,MAAM,gDAEpB,KAAK,EAED,OADA2oH,EAAU98G,KAAO,GACV,EAAIi0B,EAAU5gC,SAASiP,KAAKy5T,sBAAsB,WAAaxsT,EAAS,+BAEnF,KAAK,EAGD,GAFApQ,EAAW29G,EAAUllF,KAEP,CACVklF,EAAU98G,KAAO,EACjB,MAGJ,OAAO88G,EAAUrmF,OAAO,SAAU,IAEtC,KAAK,EACD,OAAOqmF,EAAUrmF,OAAO,SAAUt3B,EAAS8+P,KAAO,IAEtD,KAAK,EACL,IAAK,MACD,OAAOnhJ,EAAUpnF,UAG9BinF,EAAUr6G,UAGjB,SAA4BmkH,GACxB,OAAO5T,EAAMr0G,MAAM8D,KAAM2C,cAelC,CACC3O,IAAK,wBACLN,MAAO,SAA+BiJ,GAClC,IAAKA,EAAK,OAAO,EAEjB,IAKI,IAAIyU,EAAS,KACb,IACkBA,EAAV+iN,EAAK56H,IAAc,IAAI46H,EAAK56H,IAAI58F,GAAmB,IAAI48F,IAAI58F,GACjE,MAAOjM,GACL0gB,EAAS,IAAImoF,IAAI58F,GAGrB,IAAKyU,IAAWA,EAAO8+E,SAAU,OAAO,EACxC,GAAwB,UAApB9+E,EAAO0+E,UAA4C,WAApB1+E,EAAO0+E,SAAuB,OAAO,EAExE,IAAIG,EAAO7+E,EAAO6+E,KAAO,IAAM7+E,EAAO6+E,KAAO,GACzC31B,EAAOlpD,EAAOi/E,SAAWj/E,EAAOi/E,SAAW,GAC3CwpO,EAAWzoT,EAAO0+E,SAAW,KAAO1+E,EAAO8+E,SAAWD,EAAO31B,EAIjE,OAHIu/P,EAASnuO,SAAS,OAClBmuO,EAAWA,EAAStwO,UAAU,EAAGswO,EAASnqU,OAAS,IAEhDmqU,EACT,MAAOnpU,GAEL,OADA6qH,EAAS1mH,QAAQjD,MAAMlB,IAChB,KAqBhB,CACCsD,IAAK,wBACLN,OACQujH,GAAQ,EAAItlF,EAAU/0B,SAAQ,SAAUD,GACxC,OAAO,IAAIhD,EAAW9E,SAAQ,SAAU9D,EAASC,GAC7C,IAAIyB,EAAU,EAAQ,KAAYy5O,aAClC,IAAKz5O,EAAS,MAAM,IAAIZ,MAAM,gCAC9BY,EAAQ,CAAEmK,OAAQ,MAAO+rH,IAAKhsH,EAAKrL,QAAS,MAAQ,SAAUgD,EAAKuI,EAAUC,GACzE,GAAIxI,GAAOuI,EAASqvH,WAAa,KAAOrvH,EAASqvH,YAAc,IAAK,CAChE,IAAIluE,EAAS,cACTvxC,GAAUnY,EAAMA,EAAI/B,QAAU,OAAS,kBAM3C,OAL4B,MAAxBsK,EAASqvH,aACTluE,EAAS,SACTvxC,EAAS8sG,EAAcugN,8BAE3B/oU,EAAQ,CAAE4qQ,IAAK,GAAI39M,OAAQA,EAAQvxC,OAAQA,EAAQ7a,MAAO0C,IAI9D,IACIvD,EAAQ,CAAE4qQ,IAAK3+P,KAAKC,MAAMH,GAAOkhD,OAAQ,YAC3C,MAAOttD,GACL,IAAIolB,EAAUyjG,EAAc8/M,cACb,gBAAX3oU,EAAE8B,OACFsjB,EAAUyjG,EAAcwgN,oBAE5BhpU,EAAQ,CACJ4qQ,IAAK,GACL39M,OAAQ,cACRvxC,OAAQqJ,EACRlkB,MAAOlB,cAO3B,SAA+B0pH,GAC3B,OAAOnD,EAAM/6G,MAAM8D,KAAM2C,cAKlC,CACC3O,IAAK,gBAOLV,IAAK,WACD,MAAO,0CAEZ,CACCU,IAAK,wBACLV,IAAK,WACD,MAAO,0DAEZ,CACCU,IAAK,4BACLV,IAAK,WACD,MAAO,sCAEZ,CACCU,IAAK,2BACLV,IAAK,WACD,MAAO,mEAEZ,CACCU,IAAK,4BACLV,IAAK,WACD,MAAO,2CAEZ,CACCU,IAAK,gCACLV,IAAK,WACD,MAAO,sEAEZ,CACCU,IAAK,mBACLV,IAAK,WACD,MAAO,+CAEZ,CACCU,IAAK,0BACLV,IAAK,WACD,MAAO,mCAEZ,CACCU,IAAK,qBACLV,IAAK,WACD,MAAO,iBAEZ,CACCU,IAAK,aACLV,IAAK,WACD,MAAO,CAACimH,EAAc8/M,cAAe9/M,EAAcygN,sBAAuBzgN,EAAcggN,0BAA2BhgN,EAAc2J,yBAA0B3J,EAAcogN,0BAA2BpgN,EAAc4J,8BAA+B5J,EAAcmgN,iBAAkBngN,EAAcugN,wBAAyBvgN,EAAcwgN,sBAU3U,CACC/lU,IAAK,aACLV,IAAK,WACD,MAAO,eAaZ,CACCU,IAAK,cACLV,IAAK,WACD,MAAO,gBAWZ,CACCU,IAAK,SACLV,IAAK,WACD,MAAO,WASZ,CACCU,IAAK,UACLV,IAAK,WACD,MAAO,cAGRimH,EApnBiC,I,6BCpI5C,IAAI98G,EAAUyV,OAAOtiB,UAAU6M,QAC3Bw9T,EAAkB,OAElB55T,EAAO,EAAQ,KAEf65T,EAAS,CACTC,QAAS,UACTC,QAAS,WAGb5pU,EAAOD,QAAU8P,EAAKg1B,OAClB,CACI,QAAW6kS,EAAOE,QAClBz3L,WAAY,CACRw3L,QAAS,SAAUzmU,GACf,OAAO+I,EAAQ3M,KAAK4D,EAAOumU,EAAiB,MAEhDG,QAAS,SAAU1mU,GACf,OAAOwe,OAAOxe,MAI1BwmU,I,6BCtBJvqU,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEImC,EAAWD,EAFD,EAAQ,KAItBrF,EAAQsE,QAAUwlU,EAElB,IAEIxsM,EAAgBj4H,EAFD,EAAQ,KAI3B,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvF,IAAIq/B,EAAe7/B,OAAO6/B,aAoBtBwvB,OAAY,EAChB,IACIA,EAAYrvD,OAAOqvD,UACrB,MAAOpzD,IAeT,SAAS2pU,EAAmB7pT,GACxB,IAAI8pT,EAAY,CACZj8G,wBAAwB,GAsB5B,OAnBIv6J,GAAaxvB,IACbgmS,EAAUrmS,MAAQ,IAAI45F,EAAch5H,QAAQq2O,eAAe,CACvDpnL,UAAWA,EACX02G,OAAQ,gBACRlmI,aAAcA,EACdyhR,aAAcskB,EAAmBlnS,yBAIrCmB,IACAgmS,EAAU5kF,aAAe,IAAI7nH,EAAch5H,QAAQ42O,uBAAuBn3M,IAG1EwvB,IACAw2Q,EAAU9tF,YAAc,IAAI3+G,EAAch5H,QAAQsvD,qBAAqBL,EAAW,yBAGtFtzC,GAAO,EAAI3a,EAAShB,SAASylU,EAAW9pT,GAEjCq9G,EAAch5H,QAAQgjJ,aAAarnI,GAG9C6pT,EAAmBlnS,sBAAwB,KAC3C3iC,EAAOD,QAAUA,EAAiB,S,iBCpFlC,YAqBA,IAAIgqU,EAA4B5qU,OAAO4qU,2BACrC,SAAmCtlU,GAGjC,IAFA,IAAI8T,EAAOpZ,OAAOoZ,KAAK9T,GACnBulU,EAAc,GACThrU,EAAI,EAAGA,EAAIuZ,EAAKrZ,OAAQF,IAC/BgrU,EAAYzxT,EAAKvZ,IAAMG,OAAOsoB,yBAAyBhjB,EAAK8T,EAAKvZ,IAEnE,OAAOgrU,GAGPC,EAAe,WACnBlqU,EAAQmgG,OAAS,SAASn6F,GACxB,IAAKo6F,EAASp6F,GAAI,CAEhB,IADA,IAAIw8M,EAAU,GACLvjN,EAAI,EAAGA,EAAImT,UAAUjT,OAAQF,IACpCujN,EAAQ/iN,KAAKotC,EAAQz6B,UAAUnT,KAEjC,OAAOujN,EAAQx2M,KAAK,KAGlB/M,EAAI,EAmBR,IAnBA,IACIwW,EAAOrD,UACPuX,EAAMlU,EAAKtW,OACX4iB,EAAMJ,OAAO3b,GAAGkG,QAAQg+T,GAAc,SAASn3S,GACjD,GAAU,OAANA,EAAY,MAAO,IACvB,GAAI9zB,GAAK0qB,EAAK,OAAOoJ,EACrB,OAAQA,GACN,IAAK,KAAM,OAAOpR,OAAOlM,EAAKxW,MAC9B,IAAK,KAAM,OAAOgiC,OAAOxrB,EAAKxW,MAC9B,IAAK,KACH,IACE,OAAOwN,KAAKuV,UAAUvM,EAAKxW,MAC3B,MAAO8T,GACP,MAAO,aAEX,QACE,OAAOggB,MAGJA,EAAItd,EAAKxW,GAAIA,EAAI0qB,EAAKoJ,EAAItd,IAAOxW,GACpCykG,EAAO3wE,KAAOha,EAASga,GACzBhR,GAAO,IAAMgR,EAEbhR,GAAO,IAAM8qB,EAAQ9Z,GAGzB,OAAOhR,GAOT/hB,EAAQkzI,UAAY,SAASxiI,EAAI4T,GAC/B,QAAuB,IAAZxS,IAAqD,IAA1BA,EAAQq4T,cAC5C,OAAOz5T,EAIT,QAAuB,IAAZoB,EACT,OAAO,WACL,OAAO9R,EAAQkzI,UAAUxiI,EAAI4T,GAAK3Y,MAAM8D,KAAM2C,YAIlD,IAAI2qF,GAAS,EAeb,OAdA,WACE,IAAKA,EAAQ,CACX,GAAIjrF,EAAQs4T,iBACV,MAAM,IAAI9oU,MAAMgjB,GACPxS,EAAQu4T,iBACjBrmU,QAAQ6V,MAAMyK,GAEdtgB,QAAQ3C,MAAMijB,GAEhBy4E,GAAS,EAEX,OAAOrsF,EAAG/E,MAAM8D,KAAM2C,aAO1B,IACIk4T,EADAC,EAAS,GA6Bb,SAAS19R,EAAQnoC,EAAKub,GAEpB,IAAI5F,EAAM,CACRmlL,KAAM,GACNgrI,QAASC,GAkBX,OAfIr4T,UAAUjT,QAAU,IAAGkb,EAAI0mC,MAAQ3uC,UAAU,IAC7CA,UAAUjT,QAAU,IAAGkb,EAAI83H,OAAS//H,UAAU,IAC9C2lM,EAAU93L,GAEZ5F,EAAIqwT,WAAazqT,EACRA,GAETjgB,EAAQ2qU,QAAQtwT,EAAK4F,GAGnBs4L,EAAYl+L,EAAIqwT,cAAarwT,EAAIqwT,YAAa,GAC9CnyH,EAAYl+L,EAAI0mC,SAAQ1mC,EAAI0mC,MAAQ,GACpCw3J,EAAYl+L,EAAI83H,UAAS93H,EAAI83H,QAAS,GACtComE,EAAYl+L,EAAIuwT,iBAAgBvwT,EAAIuwT,eAAgB,GACpDvwT,EAAI83H,SAAQ93H,EAAImwT,QAAUK,GACvBC,EAAYzwT,EAAK3V,EAAK2V,EAAI0mC,OAoCnC,SAAS8pR,EAAiB9oT,EAAKgpT,GAC7B,IAAIl2N,EAAQhoE,EAAQm+R,OAAOD,GAE3B,OAAIl2N,EACK,KAAYhoE,EAAQslG,OAAOt9B,GAAO,GAAK,IAAM9yF,EAC7C,KAAY8qB,EAAQslG,OAAOt9B,GAAO,GAAK,IAEvC9yF,EAKX,SAAS0oT,EAAe1oT,EAAKgpT,GAC3B,OAAOhpT,EAeT,SAAS+oT,EAAYzwT,EAAKlX,EAAO8nU,GAG/B,GAAI5wT,EAAIuwT,eACJznU,GACAm2F,EAAWn2F,EAAM0pC,UAEjB1pC,EAAM0pC,UAAY7sC,EAAQ6sC,WAExB1pC,EAAMuL,aAAevL,EAAMuL,YAAYrP,YAAc8D,GAAQ,CACjE,IAAIkM,EAAMlM,EAAM0pC,QAAQo+R,EAAc5wT,GAItC,OAHK+lF,EAAS/wF,KACZA,EAAMy7T,EAAYzwT,EAAKhL,EAAK47T,IAEvB57T,EAIT,IAAI67T,EA+FN,SAAyB7wT,EAAKlX,GAC5B,GAAIo1M,EAAYp1M,GACd,OAAOkX,EAAImwT,QAAQ,YAAa,aAClC,GAAIpqO,EAASj9F,GAAQ,CACnB,IAAIgoU,EAAS,IAAO1+T,KAAKuV,UAAU7e,GAAO+I,QAAQ,SAAU,IAClBA,QAAQ,KAAM,OACdA,QAAQ,OAAQ,KAAO,IACjE,OAAOmO,EAAImwT,QAAQW,EAAQ,UAE7B,GAAIzwO,EAASv3F,GACX,OAAOkX,EAAImwT,QAAQ,GAAKrnU,EAAO,UACjC,GAAI40M,EAAU50M,GACZ,OAAOkX,EAAImwT,QAAQ,GAAKrnU,EAAO,WAEjC,GAAIugG,EAAOvgG,GACT,OAAOkX,EAAImwT,QAAQ,OAAQ,QA9GbY,CAAgB/wT,EAAKlX,GACrC,GAAI+nU,EACF,OAAOA,EAIT,IAAI1yT,EAAOpZ,OAAOoZ,KAAKrV,GACnBkoU,EApCN,SAAqBrzS,GACnB,IAAI4Z,EAAO,GAMX,OAJA5Z,EAAMnuB,SAAQ,SAASykB,EAAKgqB,GAC1B1G,EAAKtjB,IAAO,KAGPsjB,EA6BW05R,CAAY9yT,GAQ9B,GANI6B,EAAIqwT,aACNlyT,EAAOpZ,OAAOwoB,oBAAoBzkB,IAKhCm9B,EAAQn9B,KACJqV,EAAK3P,QAAQ,YAAc,GAAK2P,EAAK3P,QAAQ,gBAAkB,GACrE,OAAO0iU,EAAYpoU,GAIrB,GAAoB,IAAhBqV,EAAKrZ,OAAc,CACrB,GAAIm6F,EAAWn2F,GAAQ,CACrB,IAAIlB,EAAOkB,EAAMlB,KAAO,KAAOkB,EAAMlB,KAAO,GAC5C,OAAOoY,EAAImwT,QAAQ,YAAcvoU,EAAO,IAAK,WAE/C,GAAIwvL,EAAStuL,GACX,OAAOkX,EAAImwT,QAAQz/T,OAAO1L,UAAU4V,SAAS1V,KAAK4D,GAAQ,UAE5D,GAAImuL,EAAOnuL,GACT,OAAOkX,EAAImwT,QAAQn0Q,KAAKh3D,UAAU4V,SAAS1V,KAAK4D,GAAQ,QAE1D,GAAIm9B,EAAQn9B,GACV,OAAOooU,EAAYpoU,GAIvB,IA2CIwH,EA3CA2nB,EAAO,GAAI0F,GAAQ,EAAOwzS,EAAS,CAAC,IAAK,MAGzCnlU,EAAQlD,KACV60B,GAAQ,EACRwzS,EAAS,CAAC,IAAK,MAIblyO,EAAWn2F,MAEbmvB,EAAO,cADCnvB,EAAMlB,KAAO,KAAOkB,EAAMlB,KAAO,IACf,KAkB5B,OAdIwvL,EAAStuL,KACXmvB,EAAO,IAAMvnB,OAAO1L,UAAU4V,SAAS1V,KAAK4D,IAI1CmuL,EAAOnuL,KACTmvB,EAAO,IAAM+jC,KAAKh3D,UAAUosU,YAAYlsU,KAAK4D,IAI3Cm9B,EAAQn9B,KACVmvB,EAAO,IAAMi5S,EAAYpoU,IAGP,IAAhBqV,EAAKrZ,QAAkB64B,GAAyB,GAAhB70B,EAAMhE,OAItC8rU,EAAe,EACbx5I,EAAStuL,GACJkX,EAAImwT,QAAQz/T,OAAO1L,UAAU4V,SAAS1V,KAAK4D,GAAQ,UAEnDkX,EAAImwT,QAAQ,WAAY,YAInCnwT,EAAImlL,KAAK//L,KAAK0D,GAIZwH,EADEqtB,EAsCN,SAAqB3d,EAAKlX,EAAO8nU,EAAcI,EAAa7yT,GAE1D,IADA,IAAI7N,EAAS,GACJ1L,EAAI,EAAGiB,EAAIiD,EAAMhE,OAAQF,EAAIiB,IAAKjB,EACrCK,EAAe6D,EAAOwe,OAAO1iB,IAC/B0L,EAAOlL,KAAKisU,EAAerxT,EAAKlX,EAAO8nU,EAAcI,EACjD1pT,OAAO1iB,IAAI,IAEf0L,EAAOlL,KAAK,IAShB,OANA+Y,EAAK3O,SAAQ,SAASpG,GACfA,EAAI0H,MAAM,UACbR,EAAOlL,KAAKisU,EAAerxT,EAAKlX,EAAO8nU,EAAcI,EACjD5nU,GAAK,OAGNkH,EArDIghU,CAAYtxT,EAAKlX,EAAO8nU,EAAcI,EAAa7yT,GAEnDA,EAAK7P,KAAI,SAASlF,GACzB,OAAOioU,EAAerxT,EAAKlX,EAAO8nU,EAAcI,EAAa5nU,EAAKu0B,MAItE3d,EAAImlL,KAAKrqL,MA6GX,SAA8BxK,EAAQ2nB,EAAMk5S,GAQ1C,GANa7gU,EAAOkb,QAAO,SAASvU,EAAMqjS,GAGxC,OAFAi3B,EACIj3B,EAAI9rS,QAAQ,OAAS,GAAG+iU,EACrBt6T,EAAOqjS,EAAIzoS,QAAQ,kBAAmB,IAAI/M,OAAS,IACzD,GAEU,GACX,OAAOqsU,EAAO,IACG,KAATl5S,EAAc,GAAKA,EAAO,OAC3B,IACA3nB,EAAOqB,KAAK,SACZ,IACAw/T,EAAO,GAGhB,OAAOA,EAAO,GAAKl5S,EAAO,IAAM3nB,EAAOqB,KAAK,MAAQ,IAAMw/T,EAAO,GA5H1DK,CAAqBlhU,EAAQ2nB,EAAMk5S,IAxBjCA,EAAO,GAAKl5S,EAAOk5S,EAAO,GA+CrC,SAASD,EAAYpoU,GACnB,MAAO,IAAM7B,MAAMjC,UAAU4V,SAAS1V,KAAK4D,GAAS,IAwBtD,SAASuoU,EAAerxT,EAAKlX,EAAO8nU,EAAcI,EAAa5nU,EAAKu0B,GAClE,IAAI/1B,EAAM8f,EAAKqG,EAsCf,IArCAA,EAAOhpB,OAAOsoB,yBAAyBvkB,EAAOM,IAAQ,CAAEN,MAAOA,EAAMM,KAC5DV,IAELgf,EADEqG,EAAKJ,IACD3N,EAAImwT,QAAQ,kBAAmB,WAE/BnwT,EAAImwT,QAAQ,WAAY,WAG5BpiT,EAAKJ,MACPjG,EAAM1H,EAAImwT,QAAQ,WAAY,YAG7BlrU,EAAe+rU,EAAa5nU,KAC/BxB,EAAO,IAAMwB,EAAM,KAEhBse,IACC1H,EAAImlL,KAAK32L,QAAQuf,EAAKjlB,OAAS,GAE/B4e,EADE2hF,EAAOunO,GACHH,EAAYzwT,EAAK+N,EAAKjlB,MAAO,MAE7B2nU,EAAYzwT,EAAK+N,EAAKjlB,MAAO8nU,EAAe,IAE5CpiU,QAAQ,OAAS,IAErBkZ,EADEiW,EACIjW,EAAIzZ,MAAM,MAAMK,KAAI,SAASuY,GACjC,MAAO,KAAOA,KACblV,KAAK,MAAMhD,OAAO,GAEf,KAAO+Y,EAAIzZ,MAAM,MAAMK,KAAI,SAASuY,GACxC,MAAO,MAAQA,KACdlV,KAAK,OAIZ+V,EAAM1H,EAAImwT,QAAQ,aAAc,YAGhCjyH,EAAYt2M,GAAO,CACrB,GAAI+1B,GAASv0B,EAAI0H,MAAM,SACrB,OAAO4W,GAET9f,EAAOwK,KAAKuV,UAAU,GAAKve,IAClB0H,MAAM,iCACblJ,EAAOA,EAAK+G,OAAO,EAAG/G,EAAK9C,OAAS,GACpC8C,EAAOoY,EAAImwT,QAAQvoU,EAAM,UAEzBA,EAAOA,EAAKiK,QAAQ,KAAM,OACdA,QAAQ,OAAQ,KAChBA,QAAQ,WAAY,KAChCjK,EAAOoY,EAAImwT,QAAQvoU,EAAM,WAI7B,OAAOA,EAAO,KAAO8f,EA2BvB,SAAS1b,EAAQylU,GACf,OAAO1lU,MAAMC,QAAQylU,GAIvB,SAAS/zH,EAAUnnM,GACjB,MAAsB,kBAARA,EAIhB,SAAS8yF,EAAO9yF,GACd,OAAe,OAARA,EAST,SAAS8pF,EAAS9pF,GAChB,MAAsB,iBAARA,EAIhB,SAASwvF,EAASxvF,GAChB,MAAsB,iBAARA,EAShB,SAAS2nM,EAAY3nM,GACnB,YAAe,IAARA,EAIT,SAAS6gL,EAAS0yB,GAChB,OAAOprM,EAASorM,IAA8B,oBAAvBjtD,EAAeitD,GAIxC,SAASprM,EAASnI,GAChB,MAAsB,iBAARA,GAA4B,OAARA,EAIpC,SAAS0gL,EAAO5uL,GACd,OAAOqW,EAASrW,IAA4B,kBAAtBw0J,EAAex0J,GAIvC,SAAS49B,EAAQngC,GACf,OAAO4Y,EAAS5Y,KACW,mBAAtB+2J,EAAe/2J,IAA2BA,aAAamB,OAI9D,SAASg4F,EAAW1oF,GAClB,MAAsB,mBAARA,EAgBhB,SAASsmJ,EAAet0J,GACtB,OAAOxD,OAAOC,UAAU4V,SAAS1V,KAAKqD,GAIxC,SAAS6zH,EAAI9yH,GACX,OAAOA,EAAI,GAAK,IAAMA,EAAEsR,SAAS,IAAMtR,EAAEsR,SAAS,IApbpDjV,EAAQwzK,SAAW,SAASxrJ,GAI1B,GAHIuwL,EAAY+xH,KACdA,EAAe,gCAAYyB,YAAc,IAC3C/jT,EAAMA,EAAIyzD,eACL8uP,EAAOviT,GACV,GAAI,IAAIjd,OAAO,MAAQid,EAAM,MAAO,KAAK5G,KAAKkpT,GAAe,CAC3D,IAAI0B,EAAMl6T,EAAQk6T,IAClBzB,EAAOviT,GAAO,WACZ,IAAI1D,EAAMtkB,EAAQmgG,OAAOx0F,MAAM3L,EAASoS,WACxCpO,QAAQ3C,MAAM,YAAa2mB,EAAKgkT,EAAK1nT,SAGvCimT,EAAOviT,GAAO,aAGlB,OAAOuiT,EAAOviT,IAoChBhoB,EAAQ6sC,QAAUA,EAIlBA,EAAQslG,OAAS,CACf,KAAS,CAAC,EAAG,IACb,OAAW,CAAC,EAAG,IACf,UAAc,CAAC,EAAG,IAClB,QAAY,CAAC,EAAG,IAChB,MAAU,CAAC,GAAI,IACf,KAAS,CAAC,GAAI,IACd,MAAU,CAAC,GAAI,IACf,KAAS,CAAC,GAAI,IACd,KAAS,CAAC,GAAI,IACd,MAAU,CAAC,GAAI,IACf,QAAY,CAAC,GAAI,IACjB,IAAQ,CAAC,GAAI,IACb,OAAW,CAAC,GAAI,KAIlBtlG,EAAQm+R,OAAS,CACf,QAAW,OACX,OAAU,SACV,QAAW,SACX,UAAa,OACb,KAAQ,OACR,OAAU,QACV,KAAQ,UAER,OAAU,OAkRZhrU,EAAQqG,QAAUA,EAKlBrG,EAAQ+3M,UAAYA,EAKpB/3M,EAAQ0jG,OAASA,EAKjB1jG,EAAQwjG,kBAHR,SAA2B5yF,GACzB,OAAc,MAAPA,GAOT5Q,EAAQ06F,SAAWA,EAKnB16F,EAAQogG,SAAWA,EAKnBpgG,EAAQ0hK,SAHR,SAAkB9wJ,GAChB,MAAsB,iBAARA,GAOhB5Q,EAAQu4M,YAAcA,EAKtBv4M,EAAQyxL,SAAWA,EAKnBzxL,EAAQ+Y,SAAWA,EAKnB/Y,EAAQsxL,OAASA,EAMjBtxL,EAAQsgC,QAAUA,EAKlBtgC,EAAQs5F,WAAaA,EAUrBt5F,EAAQm/B,YARR,SAAqBvuB,GACnB,OAAe,OAARA,GACe,kBAARA,GACQ,iBAARA,GACQ,iBAARA,GACQ,iBAARA,QACQ,IAARA,GAIhB5Q,EAAQw4I,SAAW,EAAQ,MAY3B,IAAIljB,EAAS,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACxD,MAAO,MAAO,OAG5B,SAASm2H,IACP,IAAI/oP,EAAI,IAAI2zD,KACRu/D,EAAO,CAACa,EAAI/zH,EAAEm0H,YACNJ,EAAI/zH,EAAEq0H,cACNN,EAAI/zH,EAAEu0H,eAAejrH,KAAK,KACtC,MAAO,CAACtJ,EAAEiqH,UAAW2I,EAAO5yH,EAAEqzH,YAAaH,GAAM5pH,KAAK,KAqCxD,SAAS1M,EAAeoF,EAAKqjB,GAC3B,OAAO3oB,OAAOC,UAAUC,eAAeC,KAAKmF,EAAKqjB,GAjCnD/nB,EAAQsH,IAAM,WACZtD,QAAQsD,IAAI,UAAWmkP,IAAazrP,EAAQmgG,OAAOx0F,MAAM3L,EAASoS,aAiBpEpS,EAAQ0iB,SAAW,EAAQ,MAE3B1iB,EAAQ2qU,QAAU,SAAS5tR,EAAQwG,GAEjC,IAAKA,IAAQxqC,EAASwqC,GAAM,OAAOxG,EAInC,IAFA,IAAIvkC,EAAOpZ,OAAOoZ,KAAK+qC,GACnBtkD,EAAIuZ,EAAKrZ,OACNF,KACL89C,EAAOvkC,EAAKvZ,IAAMskD,EAAI/qC,EAAKvZ,IAE7B,OAAO89C,GAOT,IAAIkvR,EAA6C,oBAAXhpU,OAAyBA,OAAO,8BAA2Bd,EA0DjG,SAAS+pU,EAAsBhwT,EAAQxD,GAKrC,IAAKwD,EAAQ,CACX,IAAIwS,EAAY,IAAIptB,MAAM,2CAC1BotB,EAAUxS,OAASA,EACnBA,EAASwS,EAEX,OAAOhW,EAAGwD,GAlEZlc,EAAQi2B,UAAY,SAAmBwqC,GACrC,GAAwB,mBAAbA,EACT,MAAM,IAAIh8D,UAAU,oDAEtB,GAAIwnU,GAA4BxrQ,EAASwrQ,GAA2B,CAClE,IAAIv7T,EACJ,GAAkB,mBADdA,EAAK+vD,EAASwrQ,IAEhB,MAAM,IAAIxnU,UAAU,iEAKtB,OAHArF,OAAOyD,eAAe6N,EAAIu7T,EAA0B,CAClD9oU,MAAOuN,EAAI5N,YAAY,EAAOmC,UAAU,EAAOD,cAAc,IAExD0L,EAGT,SAASA,IAQP,IAPA,IAAIy7T,EAAgBC,EAChB9rU,EAAU,IAAIC,SAAQ,SAAUC,EAASC,GAC3C0rU,EAAiB3rU,EACjB4rU,EAAgB3rU,KAGdgV,EAAO,GACFxW,EAAI,EAAGA,EAAImT,UAAUjT,OAAQF,IACpCwW,EAAKhW,KAAK2S,UAAUnT,IAEtBwW,EAAKhW,MAAK,SAAUsE,EAAKZ,GACnBY,EACFqoU,EAAcroU,GAEdooU,EAAehpU,MAInB,IACEs9D,EAAS90D,MAAM8D,KAAMgG,GACrB,MAAO1R,GACPqoU,EAAcroU,GAGhB,OAAOzD,EAQT,OALAlB,OAAO+9D,eAAezsD,EAAItR,OAAOyoB,eAAe44C,IAE5CwrQ,GAA0B7sU,OAAOyD,eAAe6N,EAAIu7T,EAA0B,CAChF9oU,MAAOuN,EAAI5N,YAAY,EAAOmC,UAAU,EAAOD,cAAc,IAExD5F,OAAOyF,iBACZ6L,EACAs5T,EAA0BvpQ,KAI9BzgE,EAAQi2B,UAAUo2S,OAASJ,EAiD3BjsU,EAAQssU,YAlCR,SAAqB7rQ,GACnB,GAAwB,mBAAbA,EACT,MAAM,IAAIh8D,UAAU,oDAMtB,SAAS8nU,IAEP,IADA,IAAI92T,EAAO,GACFxW,EAAI,EAAGA,EAAImT,UAAUjT,OAAQF,IACpCwW,EAAKhW,KAAK2S,UAAUnT,IAGtB,IAAIutU,EAAU/2T,EAAKN,MACnB,GAAuB,mBAAZq3T,EACT,MAAM,IAAI/nU,UAAU,8CAEtB,IAAI2J,EAAOqB,KACPiJ,EAAK,WACP,OAAO8zT,EAAQ7gU,MAAMyC,EAAMgE,YAI7BquD,EAAS90D,MAAM8D,KAAMgG,GAClBhP,MAAK,SAAS4I,GAAOyC,EAAQ+nB,SAASnhB,EAAI,KAAMrJ,MAC3C,SAASo9T,GAAO36T,EAAQ+nB,SAASqyS,EAAuBO,EAAK/zT,MAMvE,OAHAtZ,OAAO+9D,eAAeovQ,EAAentU,OAAOyoB,eAAe44C,IAC3DrhE,OAAOyF,iBAAiB0nU,EACAvC,EAA0BvpQ,IAC3C8rQ,K,+CC1rBTtsU,EAAOD,QAAU,CACf0sU,SAAU,KACVt3M,KAAM,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YACzEu3M,iBAAkB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC7Dr3M,OAAQ,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACvHs3M,mBAAoB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAClGC,GAAI,KACJC,GAAI,O,6BCPN1tU,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IASgCuB,EAT5BE,EAAmB,EAAQ,IAE3B+1G,GAO4Bj2G,EAPcE,IAOOF,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GALvF1E,EAAQ+sU,aAAeA,EACvB/sU,EAAQ4/P,kBA4BR,SAA2B54O,EAAOgmT,GAC9B,IAAIC,EAAiBF,EAAaC,GAClC,OAAIC,EAAejmT,GACRimT,EAAejmT,SAAoB7kB,IAAV6kB,EAAsB,KAAOA,EAAQ,IAAM,KAAOgmT,EAAe,KAE1FhmT,GA/Bf,IAAIqnC,EAAmB,EAAQ,GAI/B,SAAS0+Q,EAAaC,GAClB,IAAIrqS,EAEJ,OAAOA,EAAO,CACVxgC,WAAW,EAAIksD,EAAiB1oD,IAAI,WACpCunU,GAAG,EAAI7+Q,EAAiB1oD,IAAI,gBAC7B,EAAIg1G,EAAiBr2G,SAASq+B,EAAMqqS,GAAc,EAAI3+Q,EAAiB1oD,IAAI,aAAa,EAAIg1G,EAAiBr2G,SAASq+B,EAAM,IAAI,EAAI0rB,EAAiB1oD,IAAI,eAAe,EAAIg1G,EAAiBr2G,SAASq+B,EAAM,KAAK,EAAI0rB,EAAiB1oD,IAAI,UAAWg9B,I,gBCvB5P,IAAIm2J,EAAW,EAAQ,KACnBq0I,EAAc,EAAQ,MACtBC,EAAc,EAAQ,MAU1B,SAASr0I,EAAS7rK,GAChB,IAAI7hB,GAAS,EACTlM,EAAmB,MAAV+tB,EAAiB,EAAIA,EAAO/tB,OAGzC,IADAsQ,KAAKupL,SAAW,IAAIF,IACXztL,EAAQlM,GACfsQ,KAAK8zC,IAAIr2B,EAAO7hB,IAKpB0tL,EAAS15L,UAAUkkD,IAAMw1I,EAAS15L,UAAUI,KAAO0tU,EACnDp0I,EAAS15L,UAAU4oB,IAAMmlT,EAEzBntU,EAAOD,QAAU+4L,G,gBC1BjB,IAAI6F,EAAa,EAAQ,KACrB7lL,EAAW,EAAQ,KAGnB4xK,EAAW,yBACXK,EAAU,oBACVC,EAAS,6BACTI,EAAW,iBA6BfprL,EAAOD,QAVP,SAAoBmD,GAClB,IAAK4V,EAAS5V,GACZ,OAAO,EAIT,IAAIsH,EAAMm0L,EAAWz7L,GACrB,OAAOsH,GAAOugL,GAAWvgL,GAAOwgL,GAAUxgL,GAAOkgL,GAAYlgL,GAAO4gL,I,iBCjCtE,YACA,IAAI/4D,EAA8B,iBAAV30G,GAAsBA,GAAUA,EAAOve,SAAWA,QAAUue,EAEpF1d,EAAOD,QAAUsyH,I,gCCFjB,IAGI4iE,EAHYxpL,SAASrM,UAGI4V,SAqB7BhV,EAAOD,QAZP,SAAkBy8D,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAOy4H,EAAa31L,KAAKk9D,GACzB,MAAOt8D,IACT,IACE,OAAQs8D,EAAO,GACf,MAAOt8D,KAEX,MAAO,K,cCVTF,EAAOD,QAJP,SAAkBwuC,EAAO/qC,GACvB,OAAO+qC,EAAMvmB,IAAIxkB,K,gBCTnB,IAIImlC,EAJY,EAAQ,IAIdktJ,CAHC,EAAQ,KAGO,OAE1B71L,EAAOD,QAAU4oC,G,cCNjB3oC,EAAOD,QAAU,gC,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,yB,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,kC,cCAjBC,EAAOD,QAAU,mC,cCAjBC,EAAOD,QAAU,mC,cCAjBC,EAAOD,QAAU,iC,cCAjBC,EAAOD,QAAU,oC,cCAjBC,EAAOD,QAAU,2C,6BCEjBZ,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,O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ClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,iBAAkB,IAClB,aAAc,KACd,aAAc,KACd,mBAAoB,KACpB,kBAAmB,KACnB,uBAAwB,KACxB,aAAc,KACd,oBAAqB,KACrB,oBAAqB,KACrB,eAAgB,KAChB,iBAAkB,KAClB,qBAAsB,KACtB,iBAAkB,KAClB,uBAAwB,IACxB,wBAAyB,IACzB,wBAAyB,IACzB,sBAAuB,IACvB,yBAA0B,IAC1B,gCAAiC,IACjC,cAAe,KACf,eAAgB,KAChB,mBAAoB,KACpB,eAAgB,KAChB,cAAe,KACf,cAAe,KACf,kBAAmB,KACnB,aAAc,KACd,gBAAiB,KACjB,iBAAkB,KAClB,aAAc,MAIf,SAAS8sc,EAAeprS,GACvB,IAAIh6G,EAAKqlZ,EAAsBrrS,GAC/B,OAAOtqK,EAAoBswD,GAE5B,SAASqlZ,EAAsBrrS,GAC9B,IAAItqK,EAAoB6C,EAAE+F,EAAK0hK,GAAM,CACpC,IAAIlqK,EAAI,IAAImB,MAAM,uBAAyB+oK,EAAM,KAEjD,MADAlqK,EAAE6O,KAAO,mBACH7O,EAEP,OAAOwI,EAAI0hK,GAEZorS,EAAej9b,KAAO,WACrB,OAAOpZ,OAAOoZ,KAAK7P,IAEpB8sc,EAAej1c,QAAUk1c,EACzBz1c,EAAOD,QAAUy1c,EACjBA,EAAeplZ,GAAK,M,cCjUpBpwD,EAAOD,QAAU,0B,cCAjBC,EAAOD,QAAU,0B,cCAjBC,EAAOD,QAAU,0B,cCAjBC,EAAOD,QAAU,0B,cCAjBC,EAAOD,QAAU,wB,cCAjBC,EAAOD,QAAU,gC,cCAjBC,EAAOD,QAAU,iC,cCAjBC,EAAOD,QAAU,0B,cCAjBC,EAAOD,QAAU,iC,cCAjBC,EAAOD,QAAU,2B,cCAjBC,EAAOD,QAAU,+B,cCAjBC,EAAOD,QAAU,8B,cCAjBC,EAAOD,QAAU,0B,cCAjBC,EAAOD,QAAU,0B,cCAjBC,EAAOD,QAAU,iC,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,wB,cCAjBC,EAAOD,QAAU,wB,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,wB,cCAjBC,EAAOD,QAAU,wB,cCAjBC,EAAOD,QAAU,8B,cCAjBC,EAAOD,QAAU,6B,cCAjBC,EAAOD,QAAU,kC,cCAjBC,EAAOD,QAAU,wB,cCAjBC,EAAOD,QAAU,+B,cCAjBC,EAAOD,QAAU,+B,cCAjBC,EAAOD,QAAU,0B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,gC,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,yB,cCAjBC,EAAOD,QAAU,0B,cCAjBC,EAAOD,QAAU,8B,cCAjBC,EAAOD,QAAU,0B,cCAjBC,EAAOD,QAAU,yB,cCAjBC,EAAOD,QAAU,yB,cCAjBC,EAAOD,QAAU,6B,cCAjBC,EAAOD,QAAU,wB,cCAjBC,EAAOD,QAAU,2B,cCAjBC,EAAOD,QAAU,4B,cCAjBC,EAAOD,QAAU,wB,6BCEjBZ,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEI6pD,EAAmB3nD,EAFD,EAAQ,IAM1Bg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxB4nD,EAA8B5nD,EAFA,EAAQ,IAMtC8nD,EAAa9nD,EAFA,EAAQ,IAMrBmtc,EAAsBntc,EAFA,EAAQ,MAM9B+oD,EAAe/oD,EAFD,EAAQ,KAI1B,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAkBvF,IAAIixc,EAAyB,SAAUrD,GAGnC,SAASqD,IAEL,OADA,EAAIt0a,EAAiB/8B,SAASmL,KAAMkmc,IAC7B,EAAI1oZ,EAA4B3oD,SAASmL,MAAOkmc,EAAuBhnc,YAAa,EAAIq+C,EAAiB1oD,SAASqxc,IAAyBhqc,MAAM8D,KAAM2C,YAalK,OAjBA,EAAI+6C,EAAW7oD,SAASqxc,EAAwBrD,IAOhD,EAAIhxa,EAAch9B,SAASqxc,EAAwB,CAAC,CAChDlyc,IAAK,WACLN,MAAO,SAAkB6jB,EAAOgvC,EAAQ1hB,GAGpC8Z,EAAa9pD,QAAQopD,SAAS,CAC1BD,OAAQ,sCAIbkoZ,EAlBkB,CAmB3BnD,EAAoBluc,SAEtBtE,EAAQsE,QAAUqxc,EAClB11c,EAAOD,QAAUA,EAAiB,S,6BCxElCZ,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEI6pD,EAAmB3nD,EAFD,EAAQ,IAM1Bg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxB4nD,EAA8B5nD,EAFA,EAAQ,IAMtC8nD,EAAa9nD,EAFA,EAAQ,IAMrBmtc,EAAsBntc,EAFA,EAAQ,MAI9BihX,EAAS,EAAQ,KAErB,SAASjhX,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAmBvF,IAAIkxc,EAAkB,SAAUtD,GAG5B,SAASsD,IAEL,OADA,EAAIv0a,EAAiB/8B,SAASmL,KAAMmmc,IAC7B,EAAI3oZ,EAA4B3oD,SAASmL,MAAOmmc,EAAgBjnc,YAAa,EAAIq+C,EAAiB1oD,SAASsxc,IAAkBjqc,MAAM8D,KAAM2C,YAepJ,OAnBA,EAAI+6C,EAAW7oD,SAASsxc,EAAiBtD,IAOzC,EAAIhxa,EAAch9B,SAASsxc,EAAiB,CAAC,CACzCnyc,IAAK,mBACLN,MAAO,SAA0B6jB,EAAOgvC,EAAQuC,EAAiBC,GAG7D,OAFa,EAAI8tT,EAAO/kH,mBAEZhpM,GAIL,KAHI+tT,EAAOhlH,kBAMnBs0M,EApBW,CAqBpBpD,EAAoBluc,SAEtBtE,EAAQsE,QAAUsxc,EAClB31c,EAAOD,QAAUA,EAAiB,S,6BCzElCZ,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEI6pD,EAAmB3nD,EAFD,EAAQ,IAM1Bg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxB4nD,EAA8B5nD,EAFA,EAAQ,IAMtC8nD,EAAa9nD,EAFA,EAAQ,IAMrBmtc,EAAsBntc,EAFA,EAAQ,MAM9BskG,EAAgBtkG,EAFD,EAAQ,KAI3B,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAkBvF,IAAImxc,EAAyB,SAAUvD,GAGnC,SAASuD,IAEL,OADA,EAAIx0a,EAAiB/8B,SAASmL,KAAMomc,IAC7B,EAAI5oZ,EAA4B3oD,SAASmL,MAAOomc,EAAuBlnc,YAAa,EAAIq+C,EAAiB1oD,SAASuxc,IAAyBlqc,MAAM8D,KAAM2C,YASlK,OAbA,EAAI+6C,EAAW7oD,SAASuxc,EAAwBvD,IAOhD,EAAIhxa,EAAch9B,SAASuxc,EAAwB,CAAC,CAChDpyc,IAAK,WACLN,MAAO,SAAkB6jB,EAAOgvC,EAAQ1hB,GACpCq1D,EAAcrlG,QAAQvB,MAAM2gL,aAG7BmyR,EAdkB,CAe3BrD,EAAoBluc,SAEtBtE,EAAQsE,QAAUuxc,EAClB51c,EAAOD,QAAUA,EAAiB,S,6BCpElCZ,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEI6pD,EAAmB3nD,EAFD,EAAQ,IAM1Bg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxB4nD,EAA8B5nD,EAFA,EAAQ,IAMtC8nD,EAAa9nD,EAFA,EAAQ,IAMrB+D,EAAa/D,EAFD,EAAQ,IAQxB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAwBvF,IAAIoxc,EAAmB,SAAUhkP,GAO7B,SAASgkP,EAAiBv1b,IACtB,EAAI8gB,EAAiB/8B,SAASmL,KAAMqmc,GAEpC,IAAIhnZ,GAAQ,EAAI7B,EAA4B3oD,SAASmL,MAAOqmc,EAAiBnnc,YAAa,EAAIq+C,EAAiB1oD,SAASwxc,IAAmBv2c,KAAKkQ,OAMhJ,OAJAq/C,EAAMwJ,SAAW/3C,EACjBuuC,EAAM5hB,OAAS,GAGR4hB,EAuCX,OAtDA,EAAI3B,EAAW7oD,SAASwxc,EAAkBhkP,IAkB1C,EAAIxwL,EAAch9B,SAASwxc,EAAkB,CAAC,CAC1Cryc,IAAK,WACLN,MAAO,SAAkB4yD,EAAaC,GAClC,IAAI+/Y,EAAc//Y,GAAkB,YAChCggZ,EAAYvmc,KAAKy9B,OAAO6oB,GAC5B,OAAIigZ,GAAaA,EAAU12c,eAAey2c,GAC/BC,EAAUhgZ,GAGdvmD,KAAK6oD,SAASr0B,SAAS8xB,EAAaC,KAEhD,CACCvyD,IAAK,WACLN,MAAO,SAAkB4yD,EAAaC,EAAQ1hB,GACrC7kC,KAAKy9B,OAAO6oB,KAActmD,KAAKy9B,OAAO6oB,GAAe,IAC1D,IAAIigZ,EAAYvmc,KAAKy9B,OAAO6oB,GAExBggZ,EAAc//Y,GAAkB,YACpCggZ,EAAUD,GAAezha,EAEzB,IAAI2ha,EAAiBxmc,KAAK6oD,SAASpxD,SAAS6uD,EAAaC,EAAQ1hB,GACjE,OAAOlrC,EAAW9E,QAAQ9D,QAAQy1c,GAAgBh5V,SAAQ,kBAC/C+4V,EAAUD,QAG1B,CACCtyc,IAAK,cACLN,MAAO,SAAqB4yD,EAAaC,GACrC,OAAOvmD,KAAK6oD,SAASQ,YAAY/C,EAAaC,KAEnD,CACCvyD,IAAK,cACLN,MAAO,WACH,OAAOsM,KAAK6oD,SAASc,kBAGtB08Y,EAvDY,CA1BCzwc,EAFA,EAAQ,MAoFZf,SAEpBtE,EAAQsE,QAAUwxc,EAClB71c,EAAOD,QAAUA,EAAiB,S,6BCnHlCZ,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAEXnD,EAAQg1D,kBAAe7yD,EAEvB,IAEI0rD,EAAsBxoD,EAFA,EAAQ,KAM9BE,EAASF,EAFD,EAAQ,KAMhBD,EAAgBC,EAFA,EAAQ,KAMxBg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAI5B,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAuBpE1E,EAAQg1D,aAAe,WACtC,SAASA,KACL,EAAI3zB,EAAiB/8B,SAASmL,KAAMulD,GACpCvlD,KAAKknD,UAAY,GA8GrB,OA3GA,EAAIr1B,EAAch9B,SAAS0wD,EAAc,CAAC,CACtCvxD,IAAK,eAILN,MAAO,SAAsB4yD,EAAaC,EAAQt9C,GACzCjJ,KAAKknD,UAAUZ,KAActmD,KAAKknD,UAAUZ,GAAe,IAC3DtmD,KAAKknD,UAAUZ,GAAaC,KAASvmD,KAAKknD,UAAUZ,GAAaC,GAAU,IAChFvmD,KAAKknD,UAAUZ,GAAaC,GAAQv2D,KAAKiZ,KAK9C,CACCjV,IAAK,iBACLN,MAAO,SAAwBuV,GAC3B,IAAI5L,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiB7K,EAErB,IACI,IAAK,IAAiF8K,EAA7EC,GAAY,EAAI9H,EAAcd,UAAS,EAAIiB,EAAOjB,SAASmL,KAAKknD,cAAsB7pD,GAA6BG,EAAQC,EAAUC,QAAQC,MAAON,GAA4B,EAAM,CAC3L,IAAIipD,EAAc9oD,EAAM9J,MACpBqyD,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBvzD,EAEtB,IACI,IAAK,IAA+FwzD,EAA3FC,GAAa,EAAIxwD,EAAcd,UAAS,EAAIiB,EAAOjB,SAASmL,KAAKknD,UAAUZ,OAA0BP,GAA8BG,EAASC,EAAWzoD,QAAQC,MAAOooD,GAA6B,EAIxM,IAHA,IAAIQ,EAASL,EAAOxyD,MAEhBm1C,OAAM,GAC0D,KAA5DA,EAAM7oC,KAAKknD,UAAUZ,GAAaC,GAAQntD,QAAQ6P,KACtDjJ,KAAKknD,UAAUZ,GAAaC,GAAQlqD,OAAOwsC,EAAK,GAG1D,MAAOv0C,GACL0xD,GAAqB,EACrBC,EAAkB3xD,EACpB,QACE,KACSyxD,GAA8BI,EAAWtoD,QAC1CsoD,EAAWtoD,SAEjB,QACE,GAAImoD,EACA,MAAMC,KAKxB,MAAO3xD,GACLgJ,GAAoB,EACpBC,EAAiBjJ,EACnB,QACE,KACS+I,GAA6BI,EAAUI,QACxCJ,EAAUI,SAEhB,QACE,GAAIP,EACA,MAAMC,MAKvB,CACCvJ,IAAK,eACLN,MAAO,SAAsB4yD,EAAakB,EAAUR,EAASS,GAKzD,GAAKznD,KAAKknD,UAAUZ,GAApB,CAEA,IAAImgZ,EAAezmc,KAAKknD,UAAUZ,GAC9Bs3J,EAAY,GAEC,OAAbp2J,GAAqBi/Y,EAAaj/Y,IAAWo2J,EAAU5tN,KAAKkM,MAAM0hN,GAAW,EAAIx/J,EAAoBvpD,SAAS4xc,EAAaj/Y,KAC3Hi/Y,EAAiB,MAAG7oP,EAAU5tN,KAAKkM,MAAM0hN,GAAW,EAAIx/J,EAAoBvpD,SAAS4xc,EAAiB,OAE1G,IAAI/+Y,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBl1D,EAEtB,IACI,IAAK,IAAwDm1D,EAApDC,GAAa,EAAInyD,EAAcd,SAAS+oN,KAAsBl2J,GAA8BG,EAASC,EAAWpqD,QAAQC,MAAO+pD,GAA6B,EAAM,EAGvK9pC,EAFeiqC,EAAOn0D,OAEb8zD,EAAUR,EAASS,IAElC,MAAOnzD,GACLqzD,GAAqB,EACrBC,EAAkBtzD,EACpB,QACE,KACSozD,GAA8BI,EAAWjqD,QAC1CiqD,EAAWjqD,SAEjB,QACE,GAAI8pD,EACA,MAAMC,SAMnBrC,EAjH+B,I,6BChD1C51D,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAIgCuB,EAJ5BwnV,EAAc,EAAQ,IAEtB99R,GAE4B1pD,EAFUwnV,IAEWxnV,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAavF,SAASyxc,EAAiB7za,EAAcgtB,EAAOkqK,GAC3C,MAAO,CACH/rK,OAAQ,qBACR6B,MAAOA,EACPkqK,UAAWA,EACXl3L,aAAcA,GAqCtB,SAAS8za,EAAwB9za,EAAck+T,GAC3C,MAAO,CACH/yS,OAAQ,4BACRlsD,MAAOi/V,EACPzmI,WAAYymI,EAAiBz5P,UAC7Bw6H,cAAei/H,EAAiB94P,cAuBxC,SAAS2uW,EAA4B/za,EAAck+T,EAAkB/7P,GACjE,MAAO,CACHh3C,OAAQ,iCACRlsD,MAAOi/V,EACPzmI,WAAYymI,EAAiBz5P,UAC7Bw6H,cAAei/H,EAAiB94P,aAChCjD,KAAMA,GAmBd,SAAS6xW,EAAiBh0a,EAAcmiE,GACpC,MAAO,CAAEh3C,OAAQ,qBAAsBg3C,KAAMA,GAoBjD,SAAS8xW,EAAqBj0a,EAAck0a,EAAe/xW,GACvD,MAAO,CAAEh3C,OAAQ,0BAA2Bg3C,KAAMA,GAYtD,SAASgyW,EAAwBn0a,EAAc/gC,EAAOkjG,GAClD,MAAO,CACHh3C,OAAQ,6BACRlsD,MAAOA,EACPkjG,KAAMA,EACNniE,aAAcA,GAiCtB,SAASo0a,EAAyBp0a,EAAcuqL,EAAepoH,EAAMg+C,EAAmB/pG,EAAS95C,GAC7F,MAAO,CACH6uD,OAAQ,8BACRlsD,MAAOsrN,EACP8M,YAAa/6N,EAAK09P,UAClB1iC,kCAAmCn1H,GAAQ7lG,EAAK0iJ,SAASI,mBAAqBj9C,EAAK69C,4BAwB3F,SAASq0T,EAA2Br0a,EAAcmiE,EAAM0C,EAAYD,GAChE,MAAO,CAAEz5C,OAAQ,kCAAmCg3C,KAAMA,EAAM0C,WAAYA,EAAYD,cAAeA,GAmB3G,SAAS0vW,EAA2Bt0a,EAAc/gC,GAC9C,MAAO,CAAEksD,OAAQ,gCAAiClsD,MAAOA,GAO7DvB,EAAQsE,QAAU,CAEduyc,2BAA4B,GAO5Blya,MAAO,SAAerC,GAClB7yB,KAAKqnc,yBAAyBx0a,EAAc,OAAQ6za,GACpD1mc,KAAKqnc,yBAAyBx0a,EAAc,cAAe8za,GAC3D3mc,KAAKqnc,yBAAyBx0a,EAAc,mBAAoB+za,GAChE5mc,KAAKqnc,yBAAyBx0a,EAAc,OAAQg0a,GACpD7mc,KAAKqnc,yBAAyBx0a,EAAc,YAAai0a,GACzD9mc,KAAKqnc,yBAAyBx0a,EAAc,eAAgBm0a,GAC5Dhnc,KAAKqnc,yBAAyBx0a,EAAc,gBAAiBo0a,GAC7Djnc,KAAKqnc,yBAAyBx0a,EAAc,oBAAqBq0a,GACjElnc,KAAKqnc,yBAAyBx0a,EAAc,kBAAmBs0a,IAanEE,yBAA0B,SAAkCx0a,EAAc84R,EAAWrf,GACjF,IAAIp/M,EAAW,WACX,IAAK,IAAIlsC,EAAOr+C,UAAUjT,OAAQsW,EAAOrP,MAAMqqD,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IACzEj7C,EAAKi7C,GAAQt+C,UAAUs+C,GAG3B,IAAIpD,EAAUyuP,EAAcpwS,WAAMxJ,EAAW,CAACmgC,GAAcv2B,OAAO0J,IAC/D63C,GACAc,EAAa9pD,QAAQopD,SAASJ,GAAS,IAG/ChrB,EAAa67D,GAAGi9N,EAAWz+N,GAC3BltF,KAAKonc,2BAA2Bp3c,MAAK,WACjC6iC,EAAa86D,eAAeg+N,EAAWz+N,OAQ/C95D,KAAM,WACFpzB,KAAKonc,2BAA2Bhtc,SAAQ,SAAUktc,GAC9C,OAAOA,SAInB92c,EAAOD,QAAUA,EAAiB,S,6BC/SlCZ,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEIk+B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxBisG,EAAQjsG,EAFD,EAAQ,KAMf+D,EAAa/D,EAFD,EAAQ,IAMpB4B,EAAkB5B,EAFD,EAAQ,KAIzB6hJ,EAAS,EAAQ,KAIjBuyM,EAEJ,SAAiC/0V,GAAO,GAAIA,GAAOA,EAAIpB,WAAc,OAAOoB,EAAc,IAAIw9B,EAAS,GAAI,GAAW,MAAPx9B,EAAe,IAAK,IAAIjB,KAAOiB,EAAWtF,OAAOC,UAAUC,eAAeC,KAAKmF,EAAKjB,KAAMy+B,EAAOz+B,GAAOiB,EAAIjB,IAAgC,OAAtBy+B,EAAO59B,QAAUI,EAAYw9B,EAFrPC,CAFM,EAAQ,KAM3B,SAAS98B,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAmBvF,IAAIxC,EAAU,EAAQ,KAElB+1F,EAAY,EAAQ,IACpB51D,EAAkB,EAAQ,IAK1B20a,EAAmB,WACnB,SAASA,EAAiBtyV,EAAQ8B,IAC9B,EAAInlF,EAAiB/8B,SAASmL,KAAMunc,GAEpCvnc,KAAKi1G,OAASA,EACdj1G,KAAK+2G,MAAQA,EACb/2G,KAAK2rR,YAAc,KAGnB3rR,KAAKwnc,8BAA2B90c,EAIhC,IAAI+0c,EAAej/W,EAAUl1F,MAA6B,sBACtDo0c,EAAcl/W,EAAUl1F,MAA2B,oBACvD0M,KAAK2nc,iBAAmB1yV,IAAWwyV,GAAgBC,IAAgB3wV,EA6QvE,OA1QA,EAAIllF,EAAch9B,SAAS0yc,EAAkB,CAAC,CAC1Cvzc,IAAK,qBACLN,MAAO,WACHe,OAAO6/B,aAAa6pG,QAAQ,sBAAwBn+H,KAAKi1G,OAAQj1G,KAAK2rR,aAClE3rR,KAAK2nc,kBAILlzc,OAAO6/B,aAAa6tG,WAAW,qBAGxC,CACCnuI,IAAK,sBACLN,MAAO,WACH,IAAI2+I,EAAQ59I,OAAO6/B,aAAagqG,QAAQ,sBAAwBt+H,KAAKi1G,QAIrE,OAHKo9B,GAASryI,KAAK2nc,mBACft1T,EAAQ59I,OAAO6/B,aAAagqG,QAAQ,oBAEjC+T,IAEZ,CACCr+I,IAAK,aACLN,MAAO,WACH,OAAIsM,KAAK2rR,YAAoB3rR,KAAK2rR,YAC3B3rR,KAAK4nc,wBAEjB,CACC5zc,IAAK,8BACLN,MAAO,SAAqCkqB,GACxC5d,KAAKwnc,yBAA2B5pb,IAErC,CACC5pB,IAAK,UACLN,MAAO,WACH,IAAI2rD,EAAQr/C,KAEZ,OAAOA,KAAK0rR,iBAAiB10R,MAAK,SAAU2wb,GACxCtoY,EAAMssO,YAAcg8J,OAG7B,CACC3zb,IAAK,iBACLN,MAAO,WACH,OAA2B,MAApBsM,KAAK2rR,cAKjB,CACC33R,IAAK,iBACLN,MAAO,WACH,IAAIqqD,EAAS/9C,KAETqyI,EAAQryI,KAAK+3I,aAEjB,OAAK1F,EAGMryI,KAAKk4I,YAAY7F,GAAO7yF,OAAM,SAAU9uD,GAC3C,GAAIA,aAAa+mJ,EAAOU,oBAEpB,MAAMznJ,EAEV,OAAOqtD,EAAOi6F,sBAPXh4I,KAAKg4I,qBAWrB,CACChkJ,IAAK,kBACLN,MAAO,SAAyB2+I,GAC5B,IAAI11I,EAAMqD,KAAKi1G,OAAS,WAExB,OAAO,IAAIt7G,EAAW9E,SAAQ,SAAU9D,EAASC,GAC7CyB,EAAQ,CACJmK,OAAQ,MACR+rH,IAAKhsH,EACLqnD,GAAI,CAAE4nO,aAAcv5I,EAAOhyH,EAhG5B,OAiGC+e,MAAM,IACP,SAAU9qC,EAAKuI,EAAUC,GACpBxI,EACAtD,EAAOsD,GACAwI,GAAyB,uBAAjBA,EAAKqsG,QACpBn4G,EAAO,IAAIymJ,EAAOU,qBACXt7I,EAASqvH,WAAa,KAAQ,EACrCl7H,EAAO8L,GACCA,GAASA,EAAKggH,QAGtB/rH,EAAQ+L,EAAKggH,SAFb9rH,EAAO,IAAIa,MAAM,wCAOlC,CACCmC,IAAK,cACLN,MAAO,SAAqB2+I,GACxB,IAAIj/E,EAASpzD,KAEb,OAAOA,KAAK6nc,gBAAgBx1T,GAAOr7I,MAAK,SAAUu8B,GAC9C,IAAI+gF,EAAK1hF,EAAgBt/B,MAAM6iH,YAC/B,GAAI5iF,IAAW+gF,EACX,MAAM,IAAIziH,MAAM,0CAA4CyiH,GAEhE,OAAO+9B,KACR7yF,OAAM,SAAU9uD,GACf,GAAIA,aAAa+mJ,EAAOU,oBAAqB,CACzC5jJ,QAAQsD,IAAI,0DAeZ,IAAIiwc,EAAkBjmW,EAAMhtG,QAAQoI,MAAMm2D,EAAO6hD,QAGjD,OAFA6yV,EAAgBxtY,KAAO,GACvBwtY,EAAgBz3W,SAAW,IACpB,EAAIonD,EAAOY,gBAAgB,CAAC,IAAIZ,EAAOa,QAAQ0xM,EAAOzxM,cAAcwgL,GAAI+uI,EAAgBp3W,SAAU2hD,IAASj/E,EAAOo0Y,0BAA0Bxwc,MAAK,WACpJ,OAAOq7I,KAGX,MAAM3hJ,OAInB,CACCsD,IAAK,mBACLN,MAAO,WACH,IAAImyF,EAAS7lF,KAGb,OAAO4yB,EAAgBt/B,MAAMulJ,iBAAiB7hJ,MAAK,SAAU+wc,GAEzD,OAAOliX,EAAOmiX,uBAAuBD,MACtC/wc,MAAK,SAAUq7I,GAEd,OAAOxsD,EAAOqyD,YAAY7F,MAC3Br7I,MAAK,SAAUq7I,GAGd,OAFAxsD,EAAO8lM,YAAct5I,EACrBxsD,EAAOoiX,qBACA51T,OAGhB,CACCr+I,IAAK,yBACLN,MAAO,SAAgCw0c,GACnC,IAAIC,EAAgBnoc,KAAKi1G,OAEzB,OAAO,IAAIt7G,EAAW9E,SAAQ,SAAU9D,EAASC,GAC7CyB,EAAQ,CACJmK,OAAQ,OACR+rH,IAAKw/U,EAAgB,YACrBnkZ,GAAI,CAAE3jC,EAnLP,OAoLCvjB,KAAMorc,EACN9oa,MAAM,IACP,SAAU9qC,EAAKuI,EAAUC,GACpBxI,EACAtD,EAAOsD,GACAuI,EAASqvH,WAAa,KAAQ,EACrCl7H,EAAO,CAAEk7H,WAAYrvH,EAASqvH,aACtBpvH,GAASA,EAAK8uR,aAGtB76R,EAAQ+L,EAAK8uR,cAFb56R,EAAO,IAAIa,MAAM,6CAOlC,CACCmC,IAAK,qBACLN,MAAO,SAA4BiJ,GAC/B,IAAIyrc,EAAsBpoc,KAAKi1G,OAAS,wBAIxC,OAHAmzV,EAAsBpoc,KAAKqoc,eAAeD,GAC1CA,GAAuB,SAAW9+W,mBAAmB3sF,GAE9C,IAAIhD,EAAW9E,SAAQ,SAAU9D,EAASC,GAC7CyB,EAAQ,CACJmK,OAAQ,MACR+rH,IAAKy/U,EACLhpa,MAAM,IACP,SAAU9qC,EAAKuI,EAAUC,GACxB,GAAIxI,EACAtD,EAAOsD,QACJ,GAAIuI,EAASqvH,WAAa,KAAQ,EACrCl7H,EAAO,CAAEk7H,WAAYrvH,EAASqvH,kBAC3B,GAAKpvH,EAEL,CACH,IAAIkV,EAAQ,GACRlV,EAAKwrc,uBAAyBxrc,EAAKwrc,sBAAsBC,eACzDv2b,EAAQlV,EAAKwrc,sBAAsBC,cAEvCx3c,EAAQihB,QANRhhB,EAAO,IAAIa,MAAM,2CAqBlC,CACCmC,IAAK,sBACLN,MAAO,SAA6BkiH,EAAYT,GAC5C,IAAIx4G,EAAMqD,KAAKi1G,OAAS,4BAExB,OADAt4G,EAAMqD,KAAKqoc,eAAe1rc,GACnB,IAAIhD,EAAW9E,SAAQ,SAAU9D,EAASC,GAC7CyB,EAAQ,CACJmK,OAAQ,MACR+rH,IAAKhsH,EACLyiC,MAAM,EACN4kB,GAAI,CACA,YAAe4xD,EACf,UAAaT,EACb,MAAS,aAEd,SAAU7gH,EAAKuI,EAAUC,GACpBxI,EACAtD,EAAOsD,GACAuI,EAASqvH,WAAa,KAAQ,EACrCl7H,EAAO,CAAEk7H,WAAYrvH,EAASqvH,aACtBpvH,EAGR/L,IAFAC,EAAO,IAAIa,MAAM,8CAOlC,CACCmC,IAAK,+BACLN,MAAO,SAAsCshG,EAAMoH,EAAQx7C,GACvD,IAAI2F,EAASyuC,EAAKzuC,OACd49J,EAAWnvH,EAAKxiG,KAChBmK,EAAMqD,KAAK+2G,MAWf,OAVAp6G,GAAO,iBAAmB2sF,mBAAmBtpF,KAAK2rR,aAClDhvR,GAAO,YAAc2sF,mBAAmB/iC,GACxC5pD,GAAO,cAAgB2sF,mBAAmB66H,GAC1CxnN,GAAO,UAAY2sF,mBAAmB9xF,EAAgB3C,QAAQ2/B,SAAS,UACnEosB,IACAjkD,GAAO,aAAe2sF,mBAAmB1oC,IAEzCw7C,IACAz/F,GAAO,WAAa2sF,mBAAmB8S,IAEpCz/F,IAEZ,CACC3I,IAAK,iBACLN,MAAO,SAAwB80c,GAC3B,OAAOA,EAAiB,iBAAmBl/W,mBAAmBtpF,KAAK2rR,iBAGpE47K,EA5RY,GA+RvBh3c,EAAQsE,QAAU0yc,EAClB/2c,EAAOD,QAAUA,EAAiB,S,6BC3VlC,IAEImhC,EAAgB97B,EAFD,EAAQ,KAIvB+7B,EAAY,EAAQ,GAIpBC,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxBq/F,EAAoBr/F,EAFD,EAAQ,KAM3B+oD,EAAe/oD,EAFD,EAAQ,KAMtB+/P,EAAU//P,EAFD,EAAQ,MAIrB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAGvF,IAkBIwzc,EAAkB,CAAC,SAAU,UAAW,eAExCC,EAAW,WACX,SAASA,KACL,EAAI92a,EAAiB/8B,SAASmL,KAAM0oc,GAEpC1oc,KAAK2oc,gBAAkB,KACvB3oc,KAAK4oc,kBAAoB,KACzB5oc,KAAK2pR,UAAY3pR,KAAK2pR,UAAU11R,KAAK+L,MACrCA,KAAKyhU,eAAiB,KAsGf,IACCxuS,EA5FAC,EA6JZ,OAhKA,EAAIrB,EAAch9B,SAAS6zc,EAAU,CAAC,CAClC10c,IAAK,QACLN,OACQw/B,GAAO,EAAIvB,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASC,IAClF,OAAOjC,EAAc78B,QAAQm/B,MAAK,SAAkB7F,GAChD,OACI,OAAQA,EAAStsB,KAAOssB,EAASzwB,MAC7B,KAAK,EACDsC,KAAK4oc,kBAAoB,IAAIjzM,EAAQ9gQ,QA3C3C,MA6CMmL,KAAKyhU,eAAiB9iR,EAAa9pD,QAAQ66H,SAAS1vH,KAAK2pR,WAE7D,KAAK,EACD,IAAK3pR,KAAK4oc,kBAAmB,CACzBz6a,EAASzwB,KAAO,GAChB,MAKJ,OAFAywB,EAAStsB,KAAO,EAChBssB,EAASzwB,KAAO,GACT,EAAIi0B,EAAU5gC,SAASiP,KAAK4oc,kBAAkB3lZ,YAEzD,KAAK,EACDjjD,KAAKu/C,SAAS,eACdpxB,EAASzwB,KAAO,GAChB,MAEJ,KAAK,EACDywB,EAAStsB,KAAO,EAChBssB,EAASiG,GAAKjG,EAAgB,MAAE,GAEpC,KAAK,GACDA,EAASzwB,KAAO,EAChB,MAEJ,KAAK,GACL,IAAK,MACD,OAAOywB,EAASiF,UAG7BO,EAAS3zB,KAAM,CAAC,CAAC,EAAG,SAG3B,WACI,OAAOkzB,EAAKh3B,MAAM8D,KAAM2C,cAUjC,CACC3O,IAAK,OACLN,MAAO,WACCsM,KAAKyhU,iBACL9iR,EAAa9pD,QAAQ64G,WAAW1tG,KAAKyhU,gBACrCzhU,KAAKyhU,eAAiB,MAEtBzhU,KAAK4oc,oBACL5oc,KAAK4oc,kBAAkBzoT,QACvBngJ,KAAK4oc,kBAAoB,QASlC,CACC50c,IAAK,WACLN,MAAO,WACH,OAAOsM,KAAK6/C,QAEjB,CACC7rD,IAAK,YACLN,MAAO,SAAmBmqD,GACC,kBAAnBA,EAAQG,SACRh+C,KAAKu/C,SAAS,UACdv/C,KAAK4oc,kBAAkB1yM,aAUhC,CACCliQ,IAAK,WACLN,OACQu/B,GAAQ,EAAItB,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASyB,EAAS0yE,GAC5F,IAAIwnB,EACJ,OAAO39F,EAAc78B,QAAQm/B,MAAK,SAAmBoB,GACjD,OACI,OAAQA,EAAUvzB,KAAOuzB,EAAU13B,MAC/B,KAAK,EACD,GAAMmqG,IAAa7nG,KAAK6/C,MAAQ,CAC5BzqB,EAAU13B,KAAO,EACjB,MAGJ,OAAO03B,EAAUjB,OAAO,UAE5B,KAAK,EACD,IAA6C,IAAvCs0a,EAAgBrvc,QAAQyuG,GAAmB,CAC7CzyE,EAAU13B,KAAO,EACjB,MAGJ,MAAM,IAAI7L,MAAM,uBAAyBg2G,GAE7C,KAAK,EAKD,GAJAwnB,EAAWrvH,KAAK6/C,MAEhB7/C,KAAK6/C,MAAQgoD,GAER5S,EAAkBpgG,QAAQvB,MAAM2iC,UAAW,CAC5Cb,EAAU13B,KAAO,EACjB,MAGJ,OAAO03B,EAAUjB,OAAO,UAE5B,KAAK,EAGD,OAFAiB,EAAUvzB,KAAO,EACjBuzB,EAAU13B,KAAO,IACV,EAAIi0B,EAAU5gC,SAASkkG,EAAkBpgG,QAAQvB,MAAM4wT,YAAYlkT,KAAK6/C,QAEnF,KAAK,GACDtrD,QAAQsD,IAAI,eAAgBgwG,GAC5BzyE,EAAU13B,KAAO,GACjB,MAEJ,KAAK,GACD03B,EAAUvzB,KAAO,GACjBuzB,EAAUhB,GAAKgB,EAAiB,MAAE,GAElC7gC,QAAQ3C,MAAM,6BAA8BwjC,EAAUhB,IACtDp0B,KAAK6/C,MAAQwvE,EAEjB,KAAK,GACL,IAAK,MACD,OAAOj6F,EAAUhC,UAG9B+B,EAAUn1B,KAAM,CAAC,CAAC,EAAG,UAG5B,SAAkB0rG,GACd,OAAOz4E,EAAM/2B,MAAM8D,KAAM2C,gBAM9B+lc,EA/KI,GAkLfl4c,EAAOD,QAAU,IAAIm4c,G,gFC/ML37D,oBAAT,SAA6Bj4W,GAGhC,IAKM+za,EALW/za,EAASqN,KAAKonD,UAAU,GAKd1wF,MAAM,KAE3B5B,EAAS,CACX69B,SAAUs9D,mBAAmBy2W,EAAU,IACvCx/W,OAAQ,IAGRw/W,EAAUn5c,OAAS,IACnBuH,EAAOoyF,OAASrlC,UAAG/mD,MAAM4rc,EAAU,KAEvC,OAAO5xc,G,EAGK+1Y,QAAT,SAAiBl4W,GACpB,OAAOkvB,UAAG/mD,MAAM63B,EAASq7D,OAAO5G,UAAU,KA5B9C,I,EAAA,S,2NCKA,S,WACA,OACA,O,IAEA,Q,mDAEA,IAAM+iT,EAAc73Y,OAAO63Y,YAqB3B,SAAS3iH,EAAU9rO,GAEX,CAAC,cAAcrc,SAASqc,EAAQG,SAChCsuV,EAAYrgR,KAAK,eAAgBpuE,GAIzC,SAASirZ,EAAqB/rc,GAC1B,OAAe,IAAXA,EACO,CAAEA,OAAQojU,wBAAsBI,cACrB,IAAXxjU,EACA,CAAEA,OAAQojU,wBAAsBG,cAEhC,CACHvjU,OAAQojU,wBAAsBE,MAC9BhyT,OAAQtR,G,IAKCwvY,E,YACjB,cAAc,iGAGV,EAAKw8D,iBAAmB,GACxB,EAAKC,eAAiB,EAEtB9nI,UAAIxxM,SAASi6J,GAOb2iH,EAAY59S,GAAG,iBAAiB,SAAC58F,EAAOiL,GAC/B,EAAK2jU,kBACVQ,UAAIjjR,SAAS,CACTD,OAAQ,gBACRtqD,MAAOo1c,EAAqB/rc,KAEhC,EAAK2jU,iBAAkB,MAI3B4rE,EAAY59S,GAAG,eAAe,WAC1Bn6F,QAAQsD,IAAI,wBACZq3Y,UAAUnuM,WAGdurM,EAAY59S,GAAG,WAAY,EAAKu6W,YAAYh1c,KAAjB,IAC3Bq4Y,EAAY59S,GAAG,oBAAqB,EAAKw6W,mBAAmBj1c,KAAxB,IAEpC,EAAK0sU,iBAAmB,EAAKA,iBAAiB1sU,KAAtB,GACxB,EAAK2sU,gBAAkB,EAAKA,gBAAgB3sU,KAArB,GAhCb,E,yHAoCV,OAAO+L,KAAKmpc,SAAS,gB,2HAGAhsW,EAAIisW,G,mFACzBloI,U,uBAE0BlhU,KAAKq7F,iB,wBACf+tW,E,KACEA,EAAWC,a,MAHzBrrZ,OAAQ,cACRm1Q,e,KACA/8F,W,KACAizO,a,WAJAprZ,S,6JASJ,MAAO,sB,2CAGU9jD,GACb6F,KAAK06I,oBAAsBvgJ,KAC/B,sGAA2BA,GAE3BmyY,EAAYrgR,KAAK,gBAAiB9xH,M,8CAIlC,OAAO,I,6CAIP,OAAO,I,0CAGS6X,EAAe6C,EAAayiG,EAAmBtiB,GAA4B,WAOvF58F,UAAUokG,UAAUh7D,SAAS,WAC7B3sB,EAAMA,EAAIpY,QAAQ,KAAM,QAAQA,QAAQ,KAAM,SAIlD,IAAM6sc,EAAY,CACdxsc,KAAM+X,EACN00b,QAAQ,GAERjyV,IAAWgyV,EAAA,KAAoBhyV,GACnC,IAAMkuM,EAAe,IAAIt3S,EAAOs7b,aAAax3b,EAAOs3b,GAWpD,OATA9jJ,EAAau4G,QAAU,WACnB78F,UAAIjjR,SAAS,CACTD,OAAQ,YACRqqD,QAASrT,EAAKzuC,SAElBr4C,EAAOwwD,QACP,EAAKyqY,SAAS,gBAGX3jJ,I,uCAGMroN,EAAWnI,GACxBs3S,EAAYrgR,KAAK,sB,wCAGHmQ,GACdA,EAAMp5E,U,uDAIN,OAAOhjD,KAAKmpc,SAAS,oB,wFAIrB,OAAO,I,8DAIP,OAAOnpc,KAAKmpc,SAAS,2B,yGAGE13Y,GACvB,OAAOzxD,KAAKmpc,SAAS,uBAAwB13Y,M,8FAI7C,OAAO,I,mEAIP,OAAOzxD,KAAKmpc,SAAS,gC,8GAGO13Y,GAC5B,OAAOzxD,KAAKmpc,SAAS,4BAA6B13Y,M,6FAIlD,OAAO,I,kEAIP,OAAOzxD,KAAKmpc,SAAS,+B,6GAGM13Y,GAC3B,OAAOzxD,KAAKmpc,SAAS,2BAA4B13Y,M,oOAI3BzxD,KAAKmpc,SAAS,qB,cAA9BM,E,yBACC9ya,QAAQ8ya,I,sIAIXzpc,KAAK0gU,mBACT,mGAEA4rE,EAAYrgR,KAAK,oB,sCAOjBqgR,EAAYrgR,KAAK,oB,oDAIjB,OAAO,IAAA/1H,IAAG,mCAAoC,CAAEwzc,aA5MhDtxc,UAAUokG,UAAUh7D,SAAS,aACtB,QACAppC,UAAUokG,UAAUh7D,SAAS,WAC7B,UACAppC,UAAUokG,UAAUh7D,SAAS,WAC7B,UACAppC,UAAUokG,UAAUh7D,SAAS,SAC7B,QACAppC,UAAUokG,UAAUh7D,SAAS,WAC7B,UACAppC,UAAUokG,UAAUh7D,SAAS,SAC7B,QAEA,c,iDAmMP,OAAO,O,sDAIP,OAAO1wC,UAAQC,QAAQ,a,+BAOvB0D,OAAOqgC,SAASm/I,QAAO,K,8DAIvB,OAAOj0K,KAAKmpc,SAAS,qB,6FAGV32c,GAAe,kCAANwT,EAAM,6BAANA,EAAM,kBAC1B,IAAM2jc,IAAc3pc,KAAKgpc,eACzB,OAAO,IAAIl4c,WAAQ,SAACC,EAASC,GACzB,EAAK+3c,iBAAiBY,GAAa,CAAC54c,UAASC,UAC7CyD,OAAO63Y,YAAYrgR,KAAK,UAAW,CAACrrE,GAAI+oZ,EAAWn3c,OAAMwT,e,kFAKrDm3F,EAAIt/C,GACZ,QAAmBnrD,IAAfmrD,EAAQ+C,GAKZ,QAA0CluD,IAAtCsN,KAAK+oc,iBAAiBlrZ,EAAQ+C,IAAlC,CAKA,IAAMg9J,EAAY59M,KAAK+oc,iBAAiBlrZ,EAAQ+C,WACzC5gD,KAAK+oc,iBAAiBlrZ,EAAQ+C,IACjC/C,EAAQjsD,MACRgsN,EAAU5sN,OAAO6sD,EAAQjsD,OAEzBgsN,EAAU7sN,QAAQ8sD,EAAQ+rZ,YAT1Br1c,QAAQ+F,KAAK,2BAA6BujD,EAAQ+C,SALlDrsD,QAAQ+F,KAAK,qC,GAxMqBmmU,W,UAAzB8rE,E,qEClErB58Y,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAAIi+B,EAAY,EAAQ,GAIpBC,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxB+oD,EAAe/oD,EAFD,EAAQ,KAI1B,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAQvF,IAAIqsU,EAAe,WACf,SAASA,KACL,EAAI1vS,EAAiB/8B,SAASmL,KAAMshU,GAEpCthU,KAAK06I,kBAAoB,EACzB16I,KAAK+gU,eAAgB,EAErBpiR,EAAa9pD,QAAQ66H,SAAS1vH,KAAK2pR,UAAU11R,KAAK+L,OAgM3C,IACCs3N,EAbA3+E,EAlBA1hC,EAbA1G,EAlBAt9E,EAbAC,EAsFZ,OAzMA,EAAIrB,EAAch9B,SAASysU,EAAc,CAAC,CACtCttU,IAAK,YACLN,MAAO,SAAmBmqD,GACtB,OAAQA,EAAQG,QACZ,IAAK,uBACL,IAAK,gBACDh+C,KAAK6pc,qBAAqB,MAOvC,CACC71c,IAAK,uBACLN,MAAO,WACH,MAAO,kBAEZ,CACCM,IAAK,uBACLN,MAAO,SAA8ByG,GACjC6F,KAAK06I,kBAAoBvgJ,IAE9B,CACCnG,IAAK,iBACLN,MAAO,SAAwBqtU,GAC3B/gU,KAAK+gU,cAAgBA,IAS1B,CACC/sU,IAAK,wBACLN,MAAO,WACH,OAAO,IASZ,CACCM,IAAK,uBACLN,MAAO,WACH,OAAO,IAWZ,CACCM,IAAK,gCACLN,MAAO,cACR,CACCM,IAAK,sBACLN,MAAO,SAA6Bse,EAAO6C,EAAKyiG,EAAWtiB,MAC5D,CACChhG,IAAK,mBACLN,MAAO,SAA0BypG,EAAInI,MAOtC,CACChhG,IAAK,gBACLN,MAAO,WACH,MAAM,IAAI7B,MAAM,oCASrB,CACCmC,IAAK,2BACLN,MAAO,WACH,MAAO,oBAQZ,CACCM,IAAK,SACLN,MAAO,WACH,MAAM,IAAI7B,MAAM,6BAErB,CACCmC,IAAK,qBACLN,MAAO,WACH,OAAO,IAKZ,CACCM,IAAK,uBACLN,OACQw/B,GAAO,EAAIvB,EAAU/0B,SAAQ,WAC7B,OAAO,KAGX,WACI,OAAOs2B,EAAKh3B,MAAM8D,KAAM2C,cAKjC,CACC3O,IAAK,uBACLN,OACQu/B,GAAQ,EAAItB,EAAU/0B,SAAQ,SAAU60D,GACxC,MAAM,IAAI5/D,MAAM,oBAGpB,SAA8B65G,GAC1B,OAAOz4E,EAAM/2B,MAAM8D,KAAM2C,cAKlC,CACC3O,IAAK,0BACLN,MAAO,WACH,OAAO,IAEZ,CACCM,IAAK,4BACLN,OACQ68G,GAAQ,EAAI5+E,EAAU/0B,SAAQ,WAC9B,OAAO,KAGX,WACI,OAAO2zG,EAAMr0G,MAAM8D,KAAM2C,cAKlC,CACC3O,IAAK,4BACLN,OACQujH,GAAQ,EAAItlF,EAAU/0B,SAAQ,SAAU60D,GACxC,MAAM,IAAI5/D,MAAM,oBAGpB,SAAmC0tH,GAC/B,OAAOtI,EAAM/6G,MAAM8D,KAAM2C,cAKlC,CACC3O,IAAK,yBACLN,MAAO,WACH,OAAO,IAEZ,CACCM,IAAK,2BACLN,OACQilJ,GAAQ,EAAIhnH,EAAU/0B,SAAQ,WAC9B,OAAO,KAGX,WACI,OAAO+7I,EAAMz8I,MAAM8D,KAAM2C,cAKlC,CACC3O,IAAK,2BACLN,OACQ4jO,GAAQ,EAAI3lM,EAAU/0B,SAAQ,SAAU60D,GACxC,MAAM,IAAI5/D,MAAM,oBAGpB,SAAkCsyH,GAC9B,OAAOmzG,EAAMp7N,MAAM8D,KAAM2C,gBAM9B2+T,EAnNQ,GAwOnB/wU,EAAQsE,QAAUysU,EAClB9wU,EAAOD,QAAUA,EAAiB,S,gBCrQlC,MA0BK6wU;;;;;;GAAAA,EAAS,SAAW1xH,GACvB,aACAA,EAAM,GAAc,GACpB,IAYIo6P,EAAMC,EAAO3mE,EAAIS,EAAImmE,EAAS77a,EAAU87a,EAAMp9V,EAAQq9V,EAAYr/H,EAAUs/H,EAAUC,EAAOC,EAAUC,EAAcC,EAAcC,EAZnIC,EAAO,CACV3pI,QAAS,OACT4pI,UAAW,OACX9uO,WAAY,aACZ+uO,UAAW,OACXv4c,KAAM,SACN2zE,SAAU,OACVs7P,UAAW,QACXupI,WAAW,EACXC,SAAS,EACT/wW,IAAKrlG,SAIN41c,EAAW,IACFz4C,GAA8B,oBAAlBzkB,eACrBk9D,EAASh5a,SAAW58B,OAAO48B,OAC3Bg5a,EAASS,QAAUr2c,OAAOq2c,OAAS1yc,UAAUokG,UAAUpjG,QAAQ,UAAY,EAC3Eixc,EAASp/C,gBAAiB,EAC1Bo/C,EAASU,OAASp7c,OAAOC,UAAU4V,SAAS1V,KAAK2E,OAAOu2c,aAAa5xc,QAAQ,eAAiB,EAC9Fixc,EAASt7M,UAAas7M,EAASh5a,QAAUg5a,EAASz4C,IAAMy4C,EAASS,MAEjE,IAAI3tb,EAAS,GACbgtb,EAAW,aAEXt9V,EAASu9V,GAAQ,EAIjB,IA0EIn2P,EAAO,CAIX,MAAa,WACZpnG,GAAS,EACTonG,EAAK11M,QACL4rc,KAKD,MAAa,WAEPt9V,IAGL1vF,EAAS,GACT+sb,GAAa,EACbr/H,GAAW,EACX18S,EAAS88a,UAAU,EAAG,EAAGpnE,EAAIT,GAC7Bj1W,EAASgwH,UAAU8rT,EAAM,EAAG,EAAGpmE,EAAIT,GAEnC5gE,EAAK0oI,QAAQlB,GAGbv1c,OAAOxC,aAAaq4c,GACpB71c,OAAOxC,aAAas4c,KAKrB,MAAa,WACZ,GAAK19V,IAAUg+N,GAaX1tT,EAAOztB,OAAS,EAAG,CACtBm7U,GAAW,EACX,IAAIxgO,EAAM,WAET,CAAC,OAAQ,YAAa,UAAW,YAAa,aAAc,aAAajwG,SAAQ,SAAUiF,GACtFA,KAAK8d,EAAO,GAAGjjB,UAClB4vc,EAAKzqc,GAAK8d,EAAO,GAAGjjB,QAAQmF,OAG9BgiU,EAAUh3N,IAAIltF,EAAO,GAAGjjB,SAAS,WAlBlCgwc,EAAa/sb,EAAO,GACpB0tT,GAAW,EACP1tT,EAAOztB,OAAS,IACnBytB,EAAOhtB,QACP8jN,EAAK/+K,YAgBF,IAEAg1a,EACH7oI,EAAUh3N,IAAI6/V,EAAWhwc,SAAS,WACjCmwG,OACE,GAEHA,OAQCj4G,EAAO,GACP8H,EAAU,SAAUw1M,GAOvB,OANAA,EAAIx7M,EAAwB,iBAAXw7M,EAAIx7M,EAAmB2R,KAAKi7B,IAAY,EAAR4uK,EAAIx7M,GAASw7M,EAAIx7M,EAClEw7M,EAAIpsL,EAAIugX,EAAKn0L,EAAIpsL,EACjBosL,EAAIxlH,EAAIk5S,EAAK1zL,EAAIxlH,EACjBwlH,EAAIniH,EAAIs2S,EAAKn0L,EAAIniH,EACjBmiH,EAAIttK,EAAIghW,EAAK1zL,EAAIttK,EACjBstK,EAAIx1L,KAAO,GAAKw1L,EAAIx7M,GAAGxE,OAChBggN,GA0OR,SAASy7P,EAAUxsT,GAClB,GAAIA,EAAMysT,QAAUzsT,EAAM0sT,OAASjB,EAClC,OAAO,EAGR,IACCj8a,EAAS88a,UAAU,EAAG,EAAGpnE,EAAIT,GAC7Bj1W,EAASgwH,UAAUQ,EAAO,EAAG,EAAGklP,EAAIT,GACnC,MAAO1yY,IAGT65c,EAAe53c,YAAW,WACzBw4c,EAAUxsT,KACR0iL,EAAUj2M,UACbo3M,EAAK0oI,QAAQlB,GAlPd53c,EAAKk5c,OAAS,SAAU57P,GAEvB,IAAI67P,GAAO,EACK,KAFhB77P,EAAMx1M,EAAQw1M,IAENx1L,KACPw1L,EAAIpsL,EAAIosL,EAAIpsL,EAAY,GAARosL,EAAIniH,EACpBmiH,EAAIniH,EAAY,IAARmiH,EAAIniH,EACZg+W,GAAO,GACG77P,EAAIx1L,KAAO,IACrBw1L,EAAIpsL,EAAIosL,EAAIpsL,EAAY,IAARosL,EAAIniH,EACpBmiH,EAAIniH,EAAY,KAARmiH,EAAIniH,EACZg+W,GAAO,GAERp9a,EAAS88a,UAAU,EAAG,EAAGpnE,EAAIT,GAC7Bj1W,EAASgwH,UAAU8rT,EAAM,EAAG,EAAGpmE,EAAIT,GACnCj1W,EAASq9a,YACTr9a,EAASw3E,KAAOmkW,EAAKa,UAAY,IAAM9kc,KAAKi8B,MAAM4tK,EAAIttK,GAAKstK,EAAIx7M,EAAI,GAAK,IAAO,IAAM,MAAQ41c,EAAKluO,WAClGztM,EAASs9a,UAAY,SACjBF,GACHp9a,EAASkyC,OAAOqvI,EAAIpsL,EAAIosL,EAAIniH,EAAI,EAAGmiH,EAAIxlH,GACvC/7D,EAASu9a,OAAOh8P,EAAIpsL,EAAIosL,EAAIniH,EAAImiH,EAAIttK,EAAI,EAAGstK,EAAIxlH,GAC/C/7D,EAASw9a,iBAAiBj8P,EAAIpsL,EAAIosL,EAAIniH,EAAGmiH,EAAIxlH,EAAGwlH,EAAIpsL,EAAIosL,EAAIniH,EAAGmiH,EAAIxlH,EAAIwlH,EAAIttK,EAAI,GAC/EjU,EAASu9a,OAAOh8P,EAAIpsL,EAAIosL,EAAIniH,EAAGmiH,EAAIxlH,EAAIwlH,EAAIttK,EAAIstK,EAAIttK,EAAI,GACvDjU,EAASw9a,iBAAiBj8P,EAAIpsL,EAAIosL,EAAIniH,EAAGmiH,EAAIxlH,EAAIwlH,EAAIttK,EAAGstK,EAAIpsL,EAAIosL,EAAIniH,EAAImiH,EAAIttK,EAAI,EAAGstK,EAAIxlH,EAAIwlH,EAAIttK,GAC/FjU,EAASu9a,OAAOh8P,EAAIpsL,EAAIosL,EAAIttK,EAAI,EAAGstK,EAAIxlH,EAAIwlH,EAAIttK,GAC/CjU,EAASw9a,iBAAiBj8P,EAAIpsL,EAAGosL,EAAIxlH,EAAIwlH,EAAIttK,EAAGstK,EAAIpsL,EAAGosL,EAAIxlH,EAAIwlH,EAAIttK,EAAIstK,EAAIttK,EAAI,GAC/EjU,EAASu9a,OAAOh8P,EAAIpsL,EAAGosL,EAAIxlH,EAAIwlH,EAAIttK,EAAI,GACvCjU,EAASw9a,iBAAiBj8P,EAAIpsL,EAAGosL,EAAIxlH,EAAGwlH,EAAIpsL,EAAIosL,EAAIttK,EAAI,EAAGstK,EAAIxlH,IAE/D/7D,EAASy9a,IAAIl8P,EAAIpsL,EAAIosL,EAAIniH,EAAI,EAAGmiH,EAAIxlH,EAAIwlH,EAAIttK,EAAI,EAAGstK,EAAIttK,EAAI,EAAG,EAAG,EAAIv8B,KAAK8xQ,IAE3ExpP,EAAS09a,UAAY,QAAU/B,EAAKhpI,QAAQvtU,EAAI,IAAMu2c,EAAKhpI,QAAQv1Q,EAAI,IAAMu+Y,EAAKhpI,QAAQ58S,EAAI,IAAMwrL,EAAIv8M,EAAI,IAC5Gg7B,EAASupG,OACTvpG,EAAS29a,YACT39a,EAASq9a,YACTr9a,EAAS49a,SACT59a,EAAS09a,UAAY,QAAU/B,EAAKY,UAAUn3c,EAAI,IAAMu2c,EAAKY,UAAUn/Y,EAAI,IAAMu+Y,EAAKY,UAAUxmb,EAAI,IAAMwrL,EAAIv8M,EAAI,IAE3F,iBAAXu8M,EAAIx7M,GAAmBw7M,EAAIx7M,EAAI,IAC1Ci6B,EAAS69a,UAAWt8P,EAAIx7M,EAAI,KAAQ,EAAI2R,KAAKi8B,MAAM4tK,EAAIx7M,EAAI,MAAS,KAAM2R,KAAKi8B,MAAM4tK,EAAIpsL,EAAIosL,EAAIniH,EAAI,GAAI1nF,KAAKi8B,MAAM4tK,EAAIxlH,EAAIwlH,EAAIttK,EAAY,GAARstK,EAAIttK,IAExIjU,EAAS69a,SAASt8P,EAAIx7M,EAAG2R,KAAKi8B,MAAM4tK,EAAIpsL,EAAIosL,EAAIniH,EAAI,GAAI1nF,KAAKi8B,MAAM4tK,EAAIxlH,EAAIwlH,EAAIttK,EAAY,IAARstK,EAAIttK,IAExFjU,EAAS29a,aAMV15c,EAAK65c,UAAY,SAAUv8P,GAGV,KAFhBA,EAAMx1M,EAAQw1M,IAENx1L,KACPw1L,EAAIpsL,EAAIosL,EAAIpsL,EAAY,GAARosL,EAAIniH,EACpBmiH,EAAIniH,EAAY,IAARmiH,EAAIniH,GAEFmiH,EAAIx1L,KAAO,IACrBw1L,EAAIpsL,EAAIosL,EAAIpsL,EAAY,IAARosL,EAAIniH,EACpBmiH,EAAIniH,EAAY,KAARmiH,EAAIniH,GAGbp/D,EAAS88a,UAAU,EAAG,EAAGpnE,EAAIT,GAC7Bj1W,EAASgwH,UAAU8rT,EAAM,EAAG,EAAGpmE,EAAIT,GACnCj1W,EAASq9a,YACTr9a,EAASw3E,KAAOmkW,EAAKa,UAAY,IAAM9kc,KAAKi8B,MAAM4tK,EAAIttK,GAAKstK,EAAIx7M,EAAI,GAAK,GAAM,IAAM,MAAQ41c,EAAKluO,WACjGztM,EAASs9a,UAAY,SACrBt9a,EAAS09a,UAAY,QAAU/B,EAAKhpI,QAAQvtU,EAAI,IAAMu2c,EAAKhpI,QAAQv1Q,EAAI,IAAMu+Y,EAAKhpI,QAAQ58S,EAAI,IAAMwrL,EAAIv8M,EAAI,IAC5Gg7B,EAAS+9a,SAASx8P,EAAIpsL,EAAGosL,EAAIxlH,EAAGwlH,EAAIniH,EAAGmiH,EAAIttK,GAC3CjU,EAAS09a,UAAY,QAAU/B,EAAKY,UAAUn3c,EAAI,IAAMu2c,EAAKY,UAAUn/Y,EAAI,IAAMu+Y,EAAKY,UAAUxmb,EAAI,IAAMwrL,EAAIv8M,EAAI,IAE3F,iBAAXu8M,EAAIx7M,GAAmBw7M,EAAIx7M,EAAI,IAC1Ci6B,EAAS69a,UAAWt8P,EAAIx7M,EAAI,KAAQ,EAAI2R,KAAKi8B,MAAM4tK,EAAIx7M,EAAI,MAAS,KAAM2R,KAAKi8B,MAAM4tK,EAAIpsL,EAAIosL,EAAIniH,EAAI,GAAI1nF,KAAKi8B,MAAM4tK,EAAIxlH,EAAIwlH,EAAIttK,EAAY,GAARstK,EAAIttK,IAExIjU,EAAS69a,SAASt8P,EAAIx7M,EAAG2R,KAAKi8B,MAAM4tK,EAAIpsL,EAAIosL,EAAIniH,EAAI,GAAI1nF,KAAKi8B,MAAM4tK,EAAIxlH,EAAIwlH,EAAIttK,EAAY,IAARstK,EAAIttK,IAExFjU,EAAS29a,aA2KV,IAAItpI,EAAO,GA0EX,SAASznD,EAASgB,GAEjBA,EAAMA,EAAIt/Q,QADW,oCACa,SAAU1J,EAAGQ,EAAGg4D,EAAGrnC,GACpD,OAAO3wB,EAAIA,EAAIg4D,EAAIA,EAAIrnC,EAAIA,KAE5B,IAAIjtB,EAAS,4CAA4C0E,KAAKogR,GAC9D,QAAO9kR,GAAS,CACf1D,EAAGuf,SAAS7b,EAAO,GAAI,IACvBs0D,EAAGz4C,SAAS7b,EAAO,GAAI,IACvBitB,EAAGpR,SAAS7b,EAAO,GAAI,KAOzB,SAASmuC,EAAMykB,EAAK6lJ,GACnB,IACIy8P,EADAC,EAAY,GAEhB,IAAKD,KAAYtiZ,EAChBuiZ,EAAUD,GAAYtiZ,EAAIsiZ,GAE3B,IAAKA,KAAYz8P,EAChB08P,EAAUD,GAAYz8P,EAAIy8P,GAE3B,OAAOC,EA/FR5pI,EAAK6pI,QAAU,WACd,IAAIC,GAAM,EA2BV,OAhBIxC,EAAK99Y,QACRsgZ,EAAMxC,EAAK99Y,QACD89Y,EAAKc,WAEf0B,EAAM9B,EAAK7pZ,eAAempZ,EAAKc,YAC3Bp5c,aAAa,OAAQ86c,EAAIh1T,aAAa,SAI9B,KADZg1T,EAjBa,WAEb,IADA,IAAI9pI,EAAOgoI,EAAKlvW,qBAAqB,QAAQ,GAAGA,qBAAqB,QAC3C9rG,EAAbgzU,EAAK9yU,OAAiB,EAAIF,GAAK,EAAGA,IAC9C,GAAI,oBAAsBmiB,KAAK6wT,EAAKhzU,GAAG8nJ,aAAa,QACnD,OAAOkrL,EAAKhzU,GAGd,OAAO,EAUD+8c,OAELD,EAAM9B,EAAKp5c,cAAc,SACrBI,aAAa,MAAO,QACxBg5c,EAAKlvW,qBAAqB,QAAQ,GAAGzoG,YAAYy5c,IAGnDA,EAAI96c,aAAa,OAAQ,aAClB86c,GAER9pI,EAAK0oI,QAAU,SAAUjtT,GACxB,IAAIthJ,EAAMshJ,EAAOuuT,UAAU,aAK3B,GAJI1C,EAAKe,SAERf,EAAKe,QAAQluc,GAEVmtc,EAAK99Y,QACR89Y,EAAK99Y,QAAQx6D,aAAa,OAAQmL,GAClCmtc,EAAK99Y,QAAQx6D,aAAa,MAAOmL,QAC3B,GAAImtc,EAAKc,UAAW,CAE1B,IAAI0B,EAAM9B,EAAK7pZ,eAAempZ,EAAKc,WACnC0B,EAAI96c,aAAa,OAAQmL,GACzB2vc,EAAI96c,aAAa,MAAOmL,QAGxB,GAAI0tc,EAASz4C,IAAMy4C,EAASS,MAAO,CAGlC,IAAIjmc,EAAMklc,EACVA,EAAQS,EAAKp5c,cAAc,QAEvBi5c,EAASS,OACZf,EAAMv4c,aAAa,MAAO,QAE3Bu4c,EAAMv4c,aAAa,MAAO,QAC1Bu4c,EAAMv4c,aAAa,OAAQ,aAC3Bg5c,EAAKlvW,qBAAqB,QAAQ,GAAGzoG,YAAYk3c,GACjDA,EAAMv4c,aAAa,OAAQmL,GACvBkI,EAAI02F,YACP12F,EAAI02F,WAAW6tD,YAAYvkJ,QAG5Bklc,EAAMv4c,aAAa,OAAQmL,IA8C9B,IAAI0kU,EAAY,CAIhB,SAAqB,GAIrB,MAAkB,IAqPlB,OApPAA,EAAU7/I,MAAMirR,KAAO,CAAC,CACvBnpb,EAAG,GACH4mE,EAAG,GACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,GACD,CACDmwB,EAAG,GACH4mE,EAAG,GACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,IACD,CACFmwB,EAAG,GACH4mE,EAAG,GACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,IACD,CACFmwB,EAAG,GACH4mE,EAAG,GACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,IACD,CACFmwB,EAAG,GACH4mE,EAAG,GACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,IACD,CACFmwB,EAAG,GACH4mE,EAAG,GACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,IACD,CACFmwB,EAAG,GACH4mE,EAAG,GACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,IACD,CACFmwB,EAAG,GACH4mE,EAAG,GACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,IACD,CACFmwB,EAAG,GACH4mE,EAAG,GACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,IACD,CACFmwB,EAAG,GACH4mE,EAAG,GACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,IACD,CACFmwB,EAAG,GACH4mE,EAAG,GACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,IAELkuU,EAAU7/I,MAAMkrR,KAAO,CAAC,CACvBppb,EAAG,GACH4mE,EAAG,GACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,IAEJkuU,EAAU7/I,MAAM97K,IAAM,CAAC,CACtB4d,EAAG,EACH4mE,EAAG,EACHqD,EAAG,EACHnrD,EAAG,EACHjvC,EAAG,GACD,CACDmwB,EAAG,GACH4mE,EAAG,GACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,GACD,CACFmwB,EAAG,GACH4mE,EAAG,GACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,GACD,CACFmwB,EAAG,GACH4mE,EAAG,GACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,GACD,CACFmwB,EAAG,GACH4mE,EAAG,GACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,GACD,CACFmwB,EAAG,GACH4mE,EAAG,GACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,GACD,CACFmwB,EAAG,GACH4mE,EAAG,GACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,IAELkuU,EAAU7/I,MAAMmrR,QAAU,CAAC,CAC1Brpb,EAAG,IACH4mE,EAAG,IACHqD,EAAG,EACHnrD,EAAG,EACHjvC,EAAG,GACD,CACDmwB,EAAG,IACH4mE,EAAG,IACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,IACD,CACFmwB,EAAG,GACH4mE,EAAG,GACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,IACD,CACFmwB,EAAG,IACH4mE,EAAG,IACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,IACD,CACFmwB,EAAG,GACH4mE,EAAG,GACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,IACD,CACFmwB,EAAG,IACH4mE,EAAG,IACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,IACD,CACFmwB,EAAG,GACH4mE,EAAG,GACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,IAELkuU,EAAU7/I,MAAMorR,MAAQ,CAAC,CACxBtpb,EAAG,GACH4mE,EAAG,EACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,GACD,CACDmwB,EAAG,GACH4mE,EAAG,GACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,GACD,CACFmwB,EAAG,GACH4mE,EAAG,GACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,GACD,CACFmwB,EAAG,GACH4mE,EAAG,GACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,GACD,CACFmwB,EAAG,GACH4mE,EAAG,GACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,GACD,CACFmwB,EAAG,GACH4mE,EAAG,GACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,GACD,CACFmwB,EAAG,GACH4mE,EAAG,GACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,GACD,CACFmwB,EAAG,GACH4mE,EAAG,GACHqD,EAAG,GACHnrD,EAAG,GACHjvC,EAAG,IASLkuU,EAAUh3N,IAAM,SAAUqlG,EAAKzmM,EAAI4jc,EAAQhsa,GAC1C,IAAIisa,EAAgBzrI,EAAU7/I,MAxOvBgpR,EAAKvsU,QAAUusU,EAAKuC,UAAYvC,EAAKwC,cAAgBxC,EAAKyC,UAwOZ,OAASnD,EAAKzoI,WAElExgS,GADc,IAAXgsa,OACqB,IAAThsa,EAAwBA,EAAOisa,EAAcp9c,OAAS,OAE7C,IAATmxC,EAAwBA,EAAO,EAE/C53B,EAAK,GAAY,aAEZ43B,EAAOisa,EAAcp9c,QAAYmxC,GAAQ,GAC7CzuC,EAAK03c,EAAK13c,MAAMgzC,EAAMsqK,EAAKo9P,EAAcjsa,KACzCypa,EAAe33c,YAAW,WACrBk6c,EACHhsa,GAAc,EAEdA,GAAc,EAEfwgS,EAAUh3N,IAAIqlG,EAAKzmM,EAAI4jc,EAAQhsa,KAC7BwgS,EAAUj2M,UAEbo3M,EAAK0oI,QAAQlB,IAEb/gc,KA7vBS,YAEV6gc,EAAO1ka,EAAMqla,EAAM/6P,IACdoxH,QAAU/lD,EAAS+uL,EAAKhpI,SAC7BgpI,EAAKY,UAAY3vL,EAAS+uL,EAAKY,WAC/BZ,EAAK/jY,SAAW+jY,EAAK/jY,SAASvpE,cAC9Bstc,EAAKzoI,UAAaA,EAAU7/I,MAAM,GAAKsoR,EAAKzoI,WAAcyoI,EAAKzoI,UAAYopI,EAAKppI,UAEhFmpI,EAAOV,EAAKhwW,IAAI3oG,SAEhB,IAAI+7c,EAAOpD,EAAK/jY,SAAS3sE,QAAQ,OAAS,EACtC+zc,EAASrD,EAAK/jY,SAAS3sE,QAAQ,SAAW,EAG9C,GAAI8zc,GAAQC,EACX,IAAK,IAAI39c,EAAI,EAAGA,EAAI6xU,EAAU7/I,MAAM,GAAKsoR,EAAKzoI,WAAW3xU,OAAQF,IAAK,CACrE,IAAIqxC,EAAOwgS,EAAU7/I,MAAM,GAAKsoR,EAAKzoI,WAAW7xU,GAE5C09c,IACCrsa,EAAKqpD,EAAI,GACZrpD,EAAKqpD,EAAIrpD,EAAKqpD,EAAI,GAElBrpD,EAAKqpD,EAAIrpD,EAAKqpD,EAAI,EAAIrpD,EAAKqpD,GAAK,EAAIrpD,EAAK0sD,IAIvC4/W,IACCtsa,EAAKvd,EAAI,GACZud,EAAKvd,EAAIud,EAAKvd,EAAI,GAElBud,EAAKvd,EAAIud,EAAKvd,EAAI,EAAIud,EAAKvd,GAAK,EAAIud,EAAKuB,IAI3Ci/R,EAAU7/I,MAAM,GAAKsoR,EAAKzoI,WAAW7xU,GAAKqxC,EAG5Cipa,EAAK13c,KAAQA,EAAK,GAAK03c,EAAK13c,MAAS03c,EAAK13c,KAAOq4c,EAAKr4c,KAEtD23c,EAAQvnI,EAAK6pI,UAEbrC,EAAU74c,SAASC,cAAc,UAEjC64c,EAAO94c,SAASC,cAAc,OAC1B24c,EAAMrkC,aAAa,SACtBukC,EAAKz4c,aAAa,cAAe,aAEjCy4c,EAAKj4c,OAAS,WACboxY,EAAM6mE,EAAKhoY,OAAS,EAAKgoY,EAAKhoY,OAAS,GACvC4hU,EAAMomE,EAAK5tW,MAAQ,EAAK4tW,EAAK5tW,MAAQ,GACrC2tW,EAAQ/nY,OAASmhU,EACjB4mE,EAAQ3tW,MAAQwnS,EAChB11W,EAAW67a,EAAQ9rT,WAAW,MAC9B+1D,EAAKwV,SAENwgP,EAAKz4c,aAAa,MAAOu4c,EAAMzyT,aAAa,WAE5C2yT,EAAKj4c,OAAS,WACboxY,EAAK,GACLS,EAAK,GACLomE,EAAKhoY,OAASmhU,EACd6mE,EAAK5tW,MAAQwnS,EACbmmE,EAAQ/nY,OAASmhU,EACjB4mE,EAAQ3tW,MAAQwnS,EAChB11W,EAAW67a,EAAQ9rT,WAAW,MAC9B+1D,EAAKwV,SAENwgP,EAAKz4c,aAAa,MAAO,KA+rB3BuO,GACO,CACNuyN,MAphBW,SAAUnnC,EAAQ36K,GAC7BA,GAA0B,iBAAVA,EAAqB,CACpC6wT,UAAW7wT,GACRA,IAAS,GACb25b,EAAW,WACV,IACC,GAAwB,iBAAb,EAAyBh/Q,EAAS,EAAiB,KAAXA,EAAgB,CAClE,IAAIqmF,EAAI,CACPp/Q,KAAM,QACN8H,QAAS,CACRhG,EAAGi3L,IAoBL,GAjBI,cAAe36K,GAAQ6wT,EAAU7/I,MAAM,GAAKhxK,EAAK6wT,aACpD7vD,EAAEt3Q,QAAQmnU,UAAY,GAAK7wT,EAAK6wT,WAE7B,SAAU7wT,GAAQpe,EAAK,GAAKoe,EAAKpe,QACpCo/Q,EAAEt3Q,QAAQ9H,KAAO,GAAKoe,EAAKpe,MAE5B,CAAC,UAAW,aAAagI,SAAQ,SAAUjH,GACtCA,KAAKqd,IACRghQ,EAAEt3Q,QAAQ/G,GAAK4nR,EAASvqQ,EAAKrd,QAG/B,CAAC,YAAa,cAAciH,SAAQ,SAAUjH,GACzCA,KAAKqd,IACRghQ,EAAEt3Q,QAAQ/G,GAAKqd,EAAKrd,OAGtBgqB,EAAOntB,KAAKwhR,GACRr0P,EAAOztB,OAAS,IACnB,MAAM,IAAImC,MAAM,sCAEjBoiN,EAAK/+K,aAEL++K,EAAK11M,QAEL,MAAO7N,GACR,MAAM,IAAImB,MAAM,iCAAmCnB,EAAE6B,WAGnDs6G,GACHs9V,KA2eDxrT,MAzcW,SAAUyuT,GACrBjD,EAAW,WACV,IACC,GAAqB,SAAjBiD,EAIH,OAHAhD,GAAQ,EACRn2P,EAAK11M,aACL6rc,GAAQ,GAMTgD,EAAavzS,iBAAiB,QAAQ,WACrCsxS,EAAUnrc,SACR,GAEF,MAAOtP,GACR,MAAM,IAAImB,MAAM,iCAAmCnB,EAAE6B,WAGnDs6G,GACHs9V,KAqbDthF,MAreW,SAAUe,GACrBugF,EAAW,WACV,IACC,IAAI58W,EAAIq8R,EAAavtR,MACjBj6D,EAAIwnV,EAAa3nT,OACjBorY,EAASl8c,SAASC,cAAc,OAChCojX,EAASjnR,EAAIs2S,EAAKzhW,EAAIghW,EAAO71S,EAAIs2S,EAAOzhW,EAAIghW,EAChDiqE,EAAO77c,aAAa,cAAe,aACnC67c,EAAOr7c,OAAO,WACbm8B,EAAS88a,UAAU,EAAG,EAAGpnE,EAAIT,GAC7Bj1W,EAASgwH,UAAUkvT,EAAQ,EAAG,EAAGxpE,EAAIT,GACrC5gE,EAAK0oI,QAAQlB,IAEdqD,EAAO77c,aAAa,MAAOo4X,EAAatyO,aAAa,QACrD+1T,EAAOprY,OAAU7/B,EAAIoyU,EACrB64F,EAAOhxW,MAAS9O,EAAIinR,EACnB,MAAO9jX,GACR,MAAM,IAAImB,MAAM,iCAAmCnB,EAAE6B,WAGnDs6G,GACHs9V,KAidDmD,OAhbY,SAAUtvZ,GAQtB,GANKvpD,OAAO8kG,KAAQ9kG,OAAO8kG,IAAIojD,kBAC9BloJ,OAAO8kG,IAAM9kG,OAAO8kG,KAAO,GAC3B9kG,OAAO8kG,IAAIojD,gBAAkB,SAAU1nJ,GACtC,OAAOA,IAGLo1c,EAASt7M,UAAW,CACvB,IAAIw+M,GAAW,EACfn1c,UAAUosK,aAAepsK,UAAUosK,cAAgBpsK,UAAUo1c,eAAiBp1c,UAAUq1c,gBAAkBr1c,UAAUy0K,iBAAmBz0K,UAAU8zK,mBACjJi+R,EAAW,WACV,IACC,GAAe,SAAXnsZ,EAIH,OAHAosZ,GAAQ,EACRn2P,EAAK11M,aACL6rc,GAAQ,IAGTmD,EAAWp8c,SAASC,cAAc,UACzBirG,MAAQwnS,EACjB0pE,EAAStrY,OAASmhU,EAClBhrY,UAAUosK,aAAa,CACtB7lB,OAAO,EACPtwB,OAAO,IACL,SAAUo2C,GACZ8oS,EAAS97c,IAAM8nG,IAAIojD,gBAAgB8nB,GACnC8oS,EAASp/U,OACTg9U,EAAUoC,MACR,eAEF,MAAO78c,GACR,MAAM,IAAImB,MAAM,kCAAoCnB,EAAE6B,WAGpDs6G,GACHs9V,MA6YF5rc,MAAO01M,EAAK11M,MACZmsG,QAAS,CACRqkJ,UAAWs7M,EAASt7M,kBASrB,KAFU,EAAF,WACR,OAAOqyE,GACP,QAFM,OAEN,c,2KC1zBH,S,WACA,Q,IACA,OACA,O,IAGA,O,IACA,S,mDAEA,IAEqBqrE,E,YACjB,cAAc,iGAEV,EAAKihE,eAAiB,KAEtB,EAAK/sI,iBAAmB,EAAKA,iBAAiB1sU,KAAtB,GACxB,EAAK2sU,gBAAkB,EAAKA,gBAAgB3sU,KAArB,GALb,E,6FASV,MAAO,iB,8CAQP,OAAO0iC,QAAQzoB,EAAOs7b,gB,6CAQtB,MAA0C,YAAnCt7b,EAAOs7b,aAAamE,a,sDAc3B,OAAO,IAAI78c,WAAQ,SAASC,EAASC,GACjCkd,EAAOs7b,aAAaoE,mBAAkB,SAAC32c,GACnClG,EAAQkG,W,0CAKA+a,EAAe6C,EAAayiG,EAAmBtiB,GAC/D,IAAMs0W,EAAY,CACdxsc,KAAM+X,EACN7Z,IAAK,SACLuuc,QAAQ,GAERjyV,IAAWgyV,EAAA,KAAoBhyV,GACnC,IAAMkuM,EAAe,IAAIt3S,EAAOs7b,aAAax3b,EAAOs3b,GAEpD9jJ,EAAau4G,QAAU,WACnB78F,UAAIjjR,SAAS,CACTD,OAAQ,YACRqqD,QAASrT,EAAKzuC,SAElBr4C,EAAOwwD,QACP8mP,EAAaxiQ,SAKjB90C,EAAOvb,YAAW,WACd6yT,EAAaxiQ,UACd,O,oCAUH,OAAO,IAAIlyD,WAAQ,SAASC,EAASC,IACjC,aACI,CACI4L,OAAQ,MACRD,IAAK,UACLqnD,GAAI,CAAE0yM,YAAa9vM,KAAK8+D,SAE5B,SAACpxH,EAAKuI,EAAUC,GACZ,GAAIxI,GAAOuI,EAASE,OAAS,KAAOF,EAASE,QAAU,IAGnD,OAFY,OAARzI,IAAcA,EAAM,CAAEyI,OAAQF,EAASE,cAC3C/L,EAAOsD,GAIX,IAAMo+T,EAAM51T,EAAKg1F,OACjB/gG,EAAQ2hU,W,sCAOpB,OAA4B,OAAxB1yT,KAAK0tc,eACE58c,UAAQC,QAAQiP,KAAK0tc,gBAEzB1tc,KAAK6tc,gB,qCAIZ7tc,KAAK8tc,gBACLn1V,YAAY34G,KAAK8tc,cAAc75c,KAAK+L,MA/GvB,O,uDAmHb,OAAO,K,mFAGK,WACZ,OAAOA,KAAK6tc,cAAc72c,MAAK,SAAC07T,GAC5B,GAA4B,OAAxB,EAAKg7I,eACL,EAAKA,eAAiBh7I,OACnB,GAAI,EAAKg7I,iBAAmBh7I,EAO/B,YANAwO,UAAIjjR,SAAS,CACTD,OAAQ,cACRm1Q,eAAgB,EAAKu6I,eACrBt3O,WAAYs8F,IAKpB,MAAO,CAAE31T,OAAQojU,wBAAsBG,iBACxC,SAAChsU,GAEA,OADAC,QAAQ3C,MAAM,4BAA6B0C,GACpC,CACHyI,OAAQojU,wBAAsBE,MAC9BhyT,OAAQ/Z,EAAI/B,SAAW+B,EAAIyI,OAASzI,EAAIyI,OAAOyI,WAAa,sB,yCAKrD,WACXxF,KAAK0gU,mBACT,mGACA1gU,KAAK8tc,gBAAgB92c,MAAK,SAAC+2c,GAClB,EAAKrtI,iBACLqtI,GACL7sI,UAAIjjR,SAAS,CACTD,OAAQ,gBACRtqD,MAAOq6c,U,sCAMft5c,OAAOqgC,SAASm/I,QAAO,K,oDAKvB,IAAM70K,EAAIzC,UAAIM,MAAMxI,OAAOqgC,SAASw7D,MACpClxF,EAAE+wF,OAAS,GACX/wF,EAAE+iC,KAAO,GACT,IAAM6ra,EAAU5uc,EAAEsxF,SAEZkkM,EAAK,IAAIq5K,UACTC,EAAct5K,EAAGu5K,aAAa37c,MAAQ,kBACtC47c,EAASx5K,EAAGy5K,QAAQ77c,MAAQ,aAClC,OAAO,IAAA0D,IAAG,gDAAiD,CAAC83c,QAASA,EAASE,YAAaA,EAAaE,OAAQA,M,iDAKhH,OAAKlgc,EAAOzZ,QAA8C,WAApCyZ,EAAOzZ,OAAOqgC,SAASg7D,SAGtC,MAFI,IAAA55F,IAAG,gE,+BAQdzB,OAAOqgC,SAASm/I,QAAO,O,GApLUwsJ,W,UAApBgsE,E,wDC9BrB;;;;;;;;IASA,SAAWh4Y,EAAQ/B,GAEf,aAOA,IAQI47c,EAAc,QACd37V,EAAc,OACd9uB,EAAc,OACd0qX,EAAc,SACd1zS,EAAc,UAGd2zS,EAAc,SACdC,EAAc,SAWdpuc,EAAO,CACP+pF,OAAS,SAAUskX,EAASC,GACxB,IAAIC,EAAgB,GACpB,IAAK,IAAIp/c,KAAKk/c,EACNC,EAAWn/c,IAAMm/c,EAAWn/c,GAAGE,OAAS,GAAM,EAC9Ck/c,EAAcp/c,GAAKm/c,EAAWn/c,GAAG8M,OAAOoyc,EAAQl/c,IAEhDo/c,EAAcp/c,GAAKk/c,EAAQl/c,GAGnC,OAAOo/c,GAEXp2b,IAAM,SAAUq2b,EAAMC,GACpB,MAAoB,iBAATD,IACkD,IAApDC,EAAKtyc,cAAcpD,QAAQy1c,EAAKryc,gBAK3Cuyc,SAAW,SAAUz8b,GACjB,OAAOA,EAAI9V,eAEfm5Q,MAAQ,SAAU3xP,GACd,MA5CU,iBA4CG,EAAyBA,EAAQvnB,QAAQ,WAAW,IAAI5D,MAAM,KAAK,QA3D5F,GA6DQi5F,KAAO,SAAUx/E,GACf,OAAOA,EAAI7V,QAAQ,qCAAsC,MAU3D2pC,EAAS,CAET4oa,IAAM,SAAUp6K,EAAIllG,GAKhB,IAHA,IAAWnmL,EAAGlP,EAAG3I,EAAG8/Q,EAAG3+P,EAASnX,EAA5BlM,EAAI,EAGDA,EAAIkgM,EAAOhgM,SAAWmjB,GAAS,CAElC,IAAIkzI,EAAQ2pC,EAAOlgM,GACf6F,EAAQq6L,EAAOlgM,EAAI,GAIvB,IAHA+Z,EAAIlP,EAAI,EAGDkP,EAAIw8I,EAAMr2J,SAAWmjB,GAIxB,GAFAA,EAAUkzI,EAAMx8I,KAAK5N,KAAKi5R,GAGtB,IAAKljS,EAAI,EAAGA,EAAI2D,EAAM3F,OAAQgC,IAC1BgK,EAAQmX,IAAUxY,GA9ExB,iBA+EMm3Q,EAAIn8Q,EAAM3D,KAEmB8/Q,EAAE9hR,OAAS,EACpB,GAAZ8hR,EAAE9hR,OApFhB,mBAqFyB8hR,EAAE,GAETxxQ,KAAKwxQ,EAAE,IAAMA,EAAE,GAAG1hR,KAAKkQ,KAAMtE,GAG7BsE,KAAKwxQ,EAAE,IAAMA,EAAE,GAEA,GAAZA,EAAE9hR,OA5FvB,mBA8FyB8hR,EAAE,IAAsBA,EAAE,GAAG71Q,MAAQ61Q,EAAE,GAAG7/P,KAKjD3R,KAAKwxQ,EAAE,IAAM91Q,EAAQA,EAAMe,QAAQ+0Q,EAAE,GAAIA,EAAE,SA/GnF,EA4GwCxxQ,KAAKwxQ,EAAE,IAAM91Q,EAAQ81Q,EAAE,GAAG1hR,KAAKkQ,KAAMtE,EAAO81Q,EAAE,SA5GtF,EAiHuD,GAAZA,EAAE9hR,SACLsQ,KAAKwxQ,EAAE,IAAM91Q,EAAQ81Q,EAAE,GAAG1hR,KAAKkQ,KAAMtE,EAAMe,QAAQ+0Q,EAAE,GAAIA,EAAE,UAlHnG,GAqHgCxxQ,KAAKwxQ,GAAK91Q,QArH1C,EA0HgBlM,GAAK,IAIb8iB,IAAM,SAAUA,EAAKpZ,GAEjB,IAAK,IAAI1J,KAAK0J,EAEV,GApHM,iBAoHKA,EAAI1J,IAAmB0J,EAAI1J,GAAGE,OAAS,GAC9C,IAAK,IAAI6Z,EAAI,EAAGA,EAAIrQ,EAAI1J,GAAGE,OAAQ6Z,IAC/B,GAAIlJ,EAAKmY,IAAItf,EAAI1J,GAAG+Z,GAAI+I,GACpB,MA1HN,MA0Hc9iB,OArIpC,EAqIiEA,OAG1C,GAAI6Q,EAAKmY,IAAItf,EAAI1J,GAAI8iB,GACxB,MA9HE,MA8HM9iB,OAzI5B,EAyIyDA,EAG7C,OAAO8iB,IAUX28b,EAAO,CAEPvkW,QAAU,CACNwkW,UAAY,CACRlrb,QAAU,CACN,MAAU,KACV,IAAU,KACV,IAAU,KACV,MAAU,OACV,QAAU,OACV,QAAU,OACV,QAAU,OACV,IAAU,OAKtB0gI,OAAS,CACLyqT,OAAS,CACL17K,MAAQ,CACJ,aAAe,CAAC,KAAM,QAG9B27K,OAAS,CACL37K,MAAQ,CACJ,eAAiB,UAErBlmH,OAAS,CACL,IAAc,MACd,OAAc,YAK1B8hS,GAAK,CACD7vO,QAAU,CACNx7M,QAAU,CACN,GAAc,OACd,UAAc,SACd,SAAc,QACd,IAAc,SACd,GAAc,CAAC,SAAU,UACzB,MAAc,SACd,EAAc,SACd,EAAc,SACd,IAAc,SACd,GAAc,CAAC,SAAU,WACzB,GAAc,UAY1B0qb,EAAU,CAEVhkW,QAAU,CAAC,CAGP,6BACA,8CACA,+BACA,4BACG,CAACiI,EAAMkoD,GAAU,CAEpB,4BACG,CAAC,CAACloD,EAAM,cAAekoD,GAAU,CAEpC,uBACG,CAAC,CAACloD,EAAM,SAAUkoD,GAAU,CAG/B,uBACA,+DAIA,6DAEA,4BAGA,uBACA,mJAEG,CAACloD,EAAMkoD,GAAU,CAEpB,2BACG,CAAC,CAACloD,EAAM,aAAckoD,GAAU,CAEnC,6CACG,CAAC,CAACloD,EAAM,MAAOkoD,GAAU,CAE5B,4CACG,CAAC,CAACloD,EAAM,QAASkoD,GAAU,CAE9B,2BACG,CAAC,CAACloD,EAAM,UAAWkoD,GAAU,CAEhC,wBACG,CAAC,CAACloD,EAAM,UAAWkoD,GAAU,CAEhC,uBACG,CAAC,CAACloD,EAAM,iBAAkBkoD,GAAU,CAEvC,qBACG,CAAC,CAACloD,EAAM,eAAgBkoD,GAAU,CAErC,6DACG,CAAC,CAACloD,EAAM,aAAckoD,GAAU,CAEnC,+BACG,CAAC,CAACloD,EAAM,KAAM,KAAMkoD,GAAU,CAEjC,sCACG,CAAC,CAACloD,EAAM,uBAAwBkoD,GAAU,CAE7C,gCACG,CAAC,CAACloD,EAAM,UAAWkoD,GAAU,CAEhC,uBACG,CAAC,CAACloD,EAAM,SAAUkoD,GAAU,CAE/B,+BACG,CAACloD,EAAMkoD,GAAU,CAEpB,oBACG,CAACloD,EAAMkoD,GAAU,CAEpB,kCACG,CAACloD,EAAMkoD,GAAU,CAEpB,kCACG,CAACloD,EAAMkoD,GAAU,CAEpB,mCACG,CAACloD,EAAMkoD,GAAU,CAEpB,6BACG,CAACloD,GAAO,CAEX,gBACG,CAACA,GAAO,CAEX,mCACG,CAACkoD,EAAS,CAACloD,EAAM,iBAAkB,CAEtC,sBACG,CAACkoD,EAAS,CAACloD,EAAM,aAAc,CAElC,6BACA,oCACG,CAACA,EAAMkoD,GAAU,CAEpB,qCACG,CAACA,EAAS,CAACloD,EAAM,oBAAqB,CAEzC,gCACG,CAAC,CAACA,EAAM,OAAQ,cAAekoD,GAAU,CAE5C,2CACG,CAAC,CAACloD,EAAM,mBAAoB,SAAUkoD,GAAU,CAEnD,8DACG,CAACA,EAAS,CAACloD,EAAM,oBAAqB,CAEzC,iCACG,CAAC,CAACA,EAAM,oBAAqBkoD,GAAU,CAE1C,gEAEG,CAACloD,EAAMkoD,GAAU,CAEpB,wBACG,CAAC,CAACloD,EAAM,WAAYkoD,GAAU,CAEjC,yCACG,CAAC,CAACloD,EAAM,UAAWkoD,GAAU,CAEhC,uBACG,CAAC,CAACloD,EAAM,eAAgBkoD,GAAU,CAErC,sBACG,CAACA,EAAS,CAACloD,EAAM,YAAa,CAEjC,+CACG,CAACkoD,EAAS,CAACloD,EAAM,kBAAmB,CAEvC,kDACG,CAACkoD,EAASloD,GAAO,CAEpB,oEACG,CAAC,CAACA,EAAM,OAAQkoD,GAAU,CAE7B,iDACG,CAACloD,EAAM,CAACkoD,EAASz0H,EAAO9zB,IAAK28b,EAAKvkW,QAAQwkW,UAAUlrb,UAAW,CAElE,8BACG,CAAC2uF,EAAMkoD,GAAU,CAGpB,qCACG,CAAC,CAACloD,EAAM,YAAakoD,GAAU,CAClC,cACA,gGAEA,uGAGA,0CAGA,8EAEA,wBACA,2BACA,iCACA,4BACG,CAACloD,EAAMkoD,IAGdy0S,IAAM,CAAC,CAEH,iDACG,CAAC,CArWM,eAqWS,UAAW,CAE9B,gBACG,CAAC,CAxWM,eAwWSjvc,EAAK0uc,WAAY,CAEpC,0BACG,CAAC,CA3WM,eA2WS,SAAU,CAG7B,gCACG,CAAC,CA/WM,eA+WS,QAAS,CAE5B,2CACG,CAAC,CAlXM,eAkXS,OAAQ,GAAI1uc,EAAK0uc,WAAY,CAEhD,kBACG,CAAC,CArXM,eAqXS,UAAW,CAE9B,kHAEG,CAAC,CAzXM,eAyXS1uc,EAAK0uc,YAG5BrqT,OAAS,CAAC,CAEN,8CACG,CAAC4pT,EAAOC,EAAQ,CAAC1qX,EAAM4qX,IAAU,CAEpC,oCACG,CAACH,EAAO,CAACC,EAAQ,SAAU,CAAC1qX,EAAM4qX,IAAU,CAE/C,qBACG,CAAC,CAACH,EAAO,YAAa,CAACC,EAAQ,UAAW,CAE7C,yBACA,oBACA,kBACA,uBACA,+BACA,oCACG,CAACA,EAAQD,EAAO,CAACzqX,EAAM4qX,IAAU,CAEpC,gCACG,CAACH,EAAO,CAACC,EAAQ,UAAW,CAAC1qX,EAAM4qX,IAAU,CAChD,6CACG,CAAC,CAACH,EAAOloa,EAAO9zB,IAAK28b,EAAKvqT,OAAOyqT,OAAO17K,OAAQ,CAAC86K,EAAQ,UAAW,CAAC1qX,EAAM2qX,IAAU,CACxF,+BACG,CAACF,EAAO,CAACC,EAAQ,UAAW,CAAC1qX,EAhZtB,YAgZuC,CAEjD,mCACG,CAACyqX,EAAOC,EAAQ,CAAC1qX,EAAM2qX,IAAU,CACpC,0BACG,CAACF,EAAO,CAACC,EAAQ,SAAU,CAAC1qX,EAAM2qX,IAAU,CAE/C,2BACA,mGAEA,qBACA,kBACG,CAACD,EAAQD,EAAO,CAACzqX,EAAM2qX,IAAU,CACpC,mBACG,CAACF,EAAO,CAACC,EAAQ,cAAe,CAAC1qX,EAAM2qX,IAAU,CAEpD,kFACG,CAACF,EAAO,CAACC,EAAQ,QAAS,CAAC1qX,EAAM4qX,IAAU,CAE9C,mCACA,8BACG,CAAC,CAACF,EAAQ,QAAS,CAACD,EAAO,iBAAkB,CAACzqX,EAAM4qX,IAAU,CACjE,kFACG,CAACH,EAAO,CAACC,EAAQ,QAAS,CAAC1qX,EAAM2qX,IAAU,CAE9C,cACA,4BACG,CAACD,EAAQD,EAAO,CAACzqX,EA9aV,YA8a2B,CAErC,gCACG,CAACyqX,EAAO,CAACC,EAAQ,UAAW,CAAC1qX,EAjbtB,YAibuC,CAEjD,mCACG,CAACyqX,EAAO,CAACC,EAAQ,QAAS,CAAC1qX,EApbpB,YAobqC,CAE/C,oBACG,CAAC,CAAC0qX,EAAQnoa,EAAO9zB,IAAK28b,EAAKvqT,OAAO0qT,OAAO7hS,QAAS,CAAC+gS,EAAOloa,EAAO9zB,IAAK28b,EAAKvqT,OAAO0qT,OAAO37K,OAAQ,CAAC5vM,EAAM2qX,IAAU,CAErH,4CACA,eACA,qEAEG,CAACD,EAAQ,CAACD,EAAO,KAAM,KAAM,CAACzqX,EAAM2qX,IAAU,CAEjD,eACG,CAACF,EAAO,CAACC,EAAQ,OAAQ,CAAC1qX,EAAM4qX,IAAU,CAE7C,4BACA,gBACG,CAACH,EAAO,CAACC,EAAQ,UAAW,CAAC1qX,EAAM2qX,IAAU,CAEhD,iCACG,CAACD,EAAQD,EAAO,CAACzqX,EAAM2qX,IAAU,CAEpC,mCACG,CAACF,EAAO,CAACC,EAAQ,aAAc,CAAC1qX,EA1czB,YA0c0C,CACpD,sBACG,CAAC,CAACyqX,EAAO,MAAO,KAAM,CAACC,EAAQ,aAAc,CAAC1qX,EAAM2qX,IAAU,CAGjE,kFACA,kBACA,uBACA,eACG,CAACF,EAAO,CAACC,EAAQ,YAAa,CAAC1qX,EAAM2qX,IAAU,CAClD,gDACG,CAACF,EAAO,CAACC,EAAQ,YAAa,CAAC1qX,EAAM4qX,IAAU,CAElD,0DACG,CAAC,CAACF,EAAQluc,EAAKyxF,MAAO,CAACw8W,EAAOjuc,EAAKyxF,MAAO,CAACjO,EArdpC,YAqdqD,CAE/D,uBACG,CAAC,CAACyqX,EAAO,IAAK,WAAY,CAACC,EAAQ,WAAY,CAAC1qX,EAxdzC,YAwd0D,CAEpE,wBACG,CAACyqX,EAAO,CAACC,EAAQ,SAAU,CAAC1qX,EA3drB,YA2dsC,CAEhD,8EACA,gBACG,CAAC,CAAC0qX,EAAQ,WAAYD,EAAO,CAACzqX,EAAM4qX,IAAU,CACjD,wBACG,CAACF,EAAQ,CAAC1qX,EAjeH,WAiemByqX,GAAQ,CACrC,qDACA,mCACA,mBACG,CAAC,CAACC,EAAQ,WAAYD,EAAO,CAACzqX,EAAM2qX,IAAU,CAEjD,cACG,CAACF,EAAO,CAACC,EAAQ,WAAY,CAAC1qX,EAAM2qX,IAAU,CAEjD,oCACA,2BACG,CAAC,CAACD,EAAQ,SAAUD,EAAO,CAACzqX,EAAM2qX,IAAU,CAE/C,mDACG,CAACF,EAAO,CAACC,EAAQ,QAAS,CAAC1qX,EAAM4qX,IAAU,CAE9C,qCACG,CAACH,EAAO,CAACC,EAAQ,MAAO,CAAC1qX,EAAM4qX,IAAU,CAC5C,iDACG,CAAC,CAACF,EAAQ,MAAOD,EAAO,CAACzqX,EAAM4qX,IAAU,CAC5C,qBACG,CAACF,EAAQD,EAAO,CAACzqX,EAtfV,YAsf2B,CACrC,iBACA,qBACA,oCACG,CAACyqX,EAAO,CAACC,EAAQ,MAAO,CAAC1qX,EAAM2qX,IAAU,CAE5C,yDACG,CAACD,EAAQD,EAAO,CAACzqX,EAAM4qX,IAAU,CACpC,oCACG,CAACH,EAAO,CAACC,EAAQ,UAAW,CAAC1qX,EAAM4qX,IAAU,CAChD,4BACG,CAACF,EAAQD,EAAO,CAACzqX,EAAM2qX,IAAU,CAEpC,uBACG,CAACD,EAAQD,EAAO,CAACzqX,EAAM2qX,IAAU,CAEpC,6BACG,CAACD,EAAQD,EAAO,CAACzqX,EAtgBV,aAsgB4B,CAEtC,0CACG,CAAC0qX,EAAQD,EAAO,CAACzqX,EAAM2qX,IAAU,CAEpC,UACG,CAAC,CAACF,EAAO,cAAe,CAACC,EAAQ,WAAY,CAEhD,4BACG,CAACD,EAAO,CAACC,EAAQ,UAAW,CAAC1qX,EA/gBtB,aA+gBwC,CAElD,+BACG,CAACyqX,EAAO,CAACC,EAAQ,UAAW,CAAC1qX,EAAM4qX,IAAU,CAEhD,2CACG,CAACH,EAAO,CAACC,EAAQ,UAAW,CAAC1qX,EAAM2qX,IAAU,CAEhD,mCACA,qDACA,kGAEA,+DACG,CAAC,CAACF,EAAO,KAAM,KAAM,CAACC,EAAQ,UAAW,CAAC1qX,EAAM2qX,IAAU,CAC7D,0DACE,CAAC,CAACF,EAAO,KAAM,KAAM,CAACC,EAAQ,UAAW,CAAC1qX,EAAM4qX,IAAU,CAC5D,sCACG,CAACH,EAAO,CAACC,EAAQ,SAAU,CAAC1qX,EAAM2qX,IAAU,CAC/C,qBACG,CAAC,CAACD,EAAQ,SAAUD,EAAO,CAACzqX,EAAM2qX,IAAU,CAE/C,4BACA,uCACG,CAACF,EAAO,CAACC,EAAQ,WAAY,CAAC1qX,EAAM2qX,IAAU,CAEjD,0CACG,CAACF,EAAO,CAACC,EAAQ,OAAQ,CAAC1qX,EAAM4qX,IAAU,CAE7C,gDACG,CAACH,EAAO,CAACC,EAAQ,QAAS,CAAC1qX,EAAM4qX,IAAU,CAE9C,6CACG,CAACH,EAAO,CAACC,EAAQ,WAAY,CAAC1qX,EAAM4qX,IAAU,CAEjD,iEACG,CAAC,CAACF,EAAQ,kBAAmBD,EAAO,CAACzqX,EAAM4qX,IAAU,CAExD,2CACG,CAACH,EAAO,CAACC,EAAQ,YAAa,CAAC1qX,EAAM4qX,IAAU,CAElD,6BACG,CAACH,EAAO,CAACC,EAAQ,OAAQ,CAAC1qX,EAAM4qX,IAAU,CAE7C,6CACG,CAACH,EAAO,CAACC,EAAQ,SAAU,CAAC1qX,EAAM2qX,IAAU,CAE/C,wCACG,CAACF,EAAO,CAACC,EAAQ,SAAU,CAAC1qX,EAAM4qX,IAAU,CAE/C,6CACG,CAACH,EAAO,CAACC,EAAQ,QAAS,CAAC1qX,EAAM4qX,IAAU,CAE9C,0CACA,8DACG,CAAC,CAACF,EAAQ,gBAAiBD,EAAO,CAACzqX,EAAM4qX,IAAU,CAEtD,0CACG,CAACH,EAAO,CAACC,EAAQ,YAAa,CAAC1qX,EAAM4qX,IAAU,CAElD,kDACG,CAACH,EAAO,CAACC,EAAQ,YAAa,CAAC1qX,EAAM4qX,IAAU,CAElD,6EACG,CAAC,CAACF,EAAQ,SAAUD,EAAO,CAACzqX,EAAM2qX,IAAU,CAE/C,gDACG,CAAC,CAACD,EAAQ,SAAUD,EAAO,CAACzqX,EAAM2qX,IAAU,CAE/C,yBACG,CAACF,EAAO,CAACC,EAAQ,aAAc,CAAC1qX,EAAM2qX,IAAU,CAEnD,4DACG,CAACF,EAAO,CAACC,EAAQ,WAAY,CAAC1qX,EAAM4qX,IAAU,CAEjD,4DACG,CAACF,EAAQD,EAAO,CAACzqX,EAAM4qX,IAAU,CAEpC,6CACG,CAACH,EAAO,CAACC,EAAQ,aAAc,CAAC1qX,EAAM4qX,IAAU,CAEnD,sDACG,CAACF,EAAQD,EAAO,CAACzqX,EAAM4qX,IAAU,CAEpC,uCACG,CAACH,EAAO,CAACC,EAAQ,SAAU,CAAC1qX,EAAM4qX,IAAU,CAE/C,8BACG,CAACH,EAAO,CAACC,EAAQ,UAAW,CAAC1qX,EAAM4qX,IAAU,CAEhD,gDACG,CAACF,EAAQD,EAAO,CAACzqX,EAAM4qX,IAAU,CAEpC,uBACA,iCACG,CAAC,CAAC5qX,EAAMxjF,EAAK0uc,UAAWR,EAAQD,GAAQ,CAE3C,6BACG,CAAC,CAACzqX,EAjnBK,YAinBY,CAEtB,qCACG,CAACyqX,EAAO,CAACC,EAAQ,aAGxBgB,OAAS,CAAC,CAEN,+BACG,CAAC10S,EAAS,CAACloD,EAAM,aAAc,CAElC,oCACG,CAAC,CAACA,EAAM,UAAW,CAEtB,uBACA,sEAEA,0CACA,gCACG,CAACA,EAAMkoD,GAAU,CAEpB,+BACG,CAACA,EAASloD,IAGjB08V,GAAK,CAAC,CAGF,qCACG,CAAC18V,EAAMkoD,GAAU,CACpB,+BACA,iDACA,sDACG,CAACloD,EAAM,CAACkoD,EAASz0H,EAAO9zB,IAAK28b,EAAKI,GAAG7vO,QAAQx7M,UAAW,CAC3D,wCACG,CAAC,CAAC2uF,EAAM,WAAY,CAACkoD,EAASz0H,EAAO9zB,IAAK28b,EAAKI,GAAG7vO,QAAQx7M,UAAW,CAGxE,gBACG,CAAC,CAAC2uF,EAAM,cAAekoD,GAAU,CACpC,+BACA,0BACA,8FAEG,CAACloD,EAAMkoD,GAAU,CACpB,oDACG,CAAC,CAACloD,EAAM,WAAYkoD,GAAU,CACjC,kBACG,CAACloD,GAAO,CACX,uCACG,CAAC,CAACA,EAAM,cAAekoD,GAAU,CAGpC,iDAGA,wBACA,6BACA,2JAGA,4BACA,sBACG,CAACloD,EAAMkoD,GAAU,CAEpB,+BACG,CAAC,CAACloD,EAAM,eAAgBkoD,GAAS,CAGpC,0BACG,CAAC,CAACloD,EAAM,WAAYkoD,GAAU,CAGjC,kDACG,CAACloD,EAAMkoD,GAAS,CAEnB,mBACG,CAACloD,EAAMkoD,GAAS,CAEnB,uBACA,yDACG,CAAC,CAACA,EAAS,KAAM,KAAM,CAACloD,EAAM,QAAS,CAE1C,8BACA,kCACG,CAAC,CAACA,EAAM,UAAW,CAACkoD,EAAS,KAAM,MAAO,CAG7C,uCACA,oCACA,uEAEA,uBACG,CAACloD,EAAMkoD,KAQdozS,EAAW,SAAUuB,EAAUb,GAO/B,GALwB,iBAAba,IACPb,EAAaa,EACbA,OApvBZ,KAuvBcxvc,gBAAgBiuc,GAClB,OAAO,IAAIA,EAASuB,EAAUb,GAAYc,YAG9C,IAAI76K,EAAK46K,IAAc/6c,GAAUA,EAAO2D,WAAa3D,EAAO2D,UAAUokG,UAAa/nG,EAAO2D,UAAUokG,UAjvBtF,IAkvBVkzW,EAASf,EAAatuc,EAAK+pF,OAAOskX,EAASC,GAAcD,EA6C7D,OA3CA1uc,KAAKmuc,WAAa,WACd,IAAIzjW,EAAU,CAAEl4G,UA/vB5B,EA+vB6CwxB,aA/vB7C,GAkwBY,OAFAoiB,EAAO4oa,IAAIl/c,KAAK46G,EAASkqL,EAAI86K,EAAOhlW,SACpCA,EAAQirK,MAAQt1Q,EAAKs1Q,MAAMjrK,EAAQ1mF,SAC5B0mF,GAEX1qG,KAAK2vc,OAAS,WACV,IAAIL,EAAM,CAAEM,kBArwBxB,GAuwBY,OADAxpa,EAAO4oa,IAAIl/c,KAAKw/c,EAAK16K,EAAI86K,EAAOJ,KACzBA,GAEXtvc,KAAK6vc,UAAY,WACb,IAAInrT,EAAS,CAAE6oB,YA1wB3B,EA0wB8CkmH,WA1wB9C,EA0wBgErhS,UA1wBhE,GA4wBY,OADAg0C,EAAO4oa,IAAIl/c,KAAK40J,EAAQkwI,EAAI86K,EAAOhrT,QAC5BA,GAEX1kJ,KAAK8vc,UAAY,WACb,IAAIP,EAAS,CAAE/8c,UA/wB3B,EA+wB4CwxB,aA/wB5C,GAixBY,OADAoiB,EAAO4oa,IAAIl/c,KAAKy/c,EAAQ36K,EAAI86K,EAAOH,QAC5BA,GAEXvvc,KAAKquc,MAAQ,WACT,IAAIgB,EAAK,CAAE78c,UApxBvB,EAoxBwCwxB,aApxBxC,GAsxBY,OADAoiB,EAAO4oa,IAAIl/c,KAAKu/c,EAAIz6K,EAAI86K,EAAOL,IACxBA,GAEXrvc,KAAKyvc,UAAY,WACb,MAAO,CACH76K,GAAU50R,KAAK+vc,QACfrlW,QAAU1qG,KAAKmuc,aACfoB,OAAUvvc,KAAK8vc,YACfT,GAAUrvc,KAAKquc,QACf3pT,OAAU1kJ,KAAK6vc,YACfP,IAAUtvc,KAAK2vc,WAGvB3vc,KAAK+vc,MAAQ,WACT,OAAOn7K,GAEX50R,KAAKgwc,MAAQ,SAAUR,GAEnB,OADA56K,EAAK46K,EACExvc,MAEJA,MAGXiuc,EAASpzS,QAnyBS,SAoyBlBozS,EAASgC,QAAU,CACft9V,KAAUA,EACVu9V,MA/xBc,QAgyBdr1S,QAAUA,GAEdozS,EAASkC,IAAM,CACXC,aA7xBc,gBA+xBlBnC,EAASr2c,OAAS,CACd02c,MAAUA,EACVC,OAAUA,EACV1qX,KAAUA,EACVwsX,QAlyBc,UAmyBd7B,OAAUA,EACV8B,QAjyBc,UAkyBd7B,OAAUA,EACV8B,SAlyBc,WAmyBdC,SAlyBc,YAoyBlBvC,EAASwC,OAAS,CACd99V,KAAUA,EACVkoD,QAAUA,GAEdozS,EAASyC,GAAK,CACV/9V,KAAUA,EACVkoD,QAAUA,QAzzBI,IAk0BR,QAl0BQ,IAo0BHrqK,GAAyBA,EAAOD,UACvCA,EAAUC,EAAOD,QAAU09c,GAE/B19c,EAAQ09c,SAAWA,QAp1B3B,KAw1BY,aACI,OAAOA,GACV,8BAYT,IAAIl9L,EAAIt8Q,IAAWA,EAAOq8Q,QAAUr8Q,EAAOs0R,OAC3C,QA11BkB,IA01BPhY,IAAqBA,EAAE6jB,GAAI,CAClC,IAAIv9B,EAAS,IAAI42M,EACjBl9L,EAAE6jB,GAAKv9B,EAAOo4M,YACd1+L,EAAE6jB,GAAGthS,IAAM,WACP,OAAO+jQ,EAAO04M,SAElBh/L,EAAE6jB,GAAGr8Q,IAAM,SAAUi3b,GACjBn4M,EAAO24M,MAAMR,GACb,IAAIv4c,EAASogQ,EAAOo4M,YACpB,IAAK,IAAIn3b,KAAQrhB,EACb85Q,EAAE6jB,GAAGt8Q,GAAQrhB,EAAOqhB,KAj3BpC,CAs3BqB,iBAAX7jB,OAAsBA,OAASuL,O,cC/3BzC,IACI2wc,EACAC,EAGEC,EA6GAC,EAlHFC,EAAc,GAIdC,GACEH,EAAiC,oBAAb1/c,UAA4BA,SAAS8/c,cAAgB9/c,SAAS8/c,cAAcx/c,SAAMiB,EACnG,SACAs+c,GAGT,IAAI3xc,EAAyDowY,EAAG,GAF9DuhE,EAASA,GAAU,GAEf3xc,IAAIA,OAAoB,IAAX2xc,EAAyBA,EAAS,IAAc,oBAAqBv8c,OAAOg7Y,EAAG,SAASvrX,GAAGzvB,OAAO6pH,OAAOykP,gBAAgB7+U,QAAS,KAAG1zB,EAAOD,QAAsH,MAAMsB,MAAM,2CAAzH,IAAI69Y,EAAGjuN,QAAQ,UAAUguN,EAAG,SAASvrX,GAAG,IAAIlxB,EAAE08Y,EAAGwhE,YAAYhtb,EAAEx0B,QAAQw0B,EAAE3L,IAAIvlB,IAAIqP,QAAQ6L,OAAO7L,QAAoE,GAAG,oBAAqB8uc,YAAY,IAAI,IAAIxhE,KAAMwhE,YAAYA,YAAYthd,eAAe8/Y,KAAMtwY,EAAEswY,GAAIwhE,YAAYxhE,IAC7btwY,EAAE+xc,qBAAqB,WAAW7lZ,GAAElsD,EAAEgyc,aAAaN,EAAY9xB,mBAAmB5/a,EAAEiyc,6BAA6BX,GAAeA,KAAiBtxc,EAAEkyc,QAAQ,SAASrtb,GAAG0sb,GAAYA,EAAW1sb,IAAI,IAAUke,EAANwuW,EAAG,GAAK,IAAIxuW,KAAK/iC,EAAEA,EAAExP,eAAeuyC,KAAKwuW,EAAGxuW,GAAG/iC,EAAE+iC,IAAI/iC,EAAEsD,UAAU,GAAGtD,EAAEmyc,YAAY,iBAAiBnyc,EAAEoyc,KAAK,SAASvtb,EAAElxB,GAAG,MAAMA,GAAIqM,EAAEqyc,OAAO,GAAGryc,EAAEsyc,QAAQ,GAAG,IAAI5+c,GAAE,EAAGmB,GAAE,EAAGw8Y,GAAG,EAAGC,GAAG,EAAG59Y,EAAE,iBAAkB0B,OAAOP,EAAE,mBAAoBmlK,cAC5aq3O,EAAG,iBAAkBruY,SAAS,mBAAoBo/K,UAAU1uL,IAAImB,EAAEy8Y,GAAI59Y,IAAI29Y,IAAKx8Y,EAAE,IACtDwiZ,EAAGC,EADuDjlZ,EAAE,GAAG,SAAS8kZ,EAAGtyX,GAAG,OAAO7kB,EAAE+sY,WAAW/sY,EAAE+sY,WAAWloX,EAAExyB,GAAGA,EAAEwyB,EAC9IwsX,GAAIh/Y,EAAEkgd,UAAU,IAAcvyc,EAAE8qI,KAAK,SAASjmH,EAAElxB,GAA0F,OAAvF0jZ,IAAKA,EAAGj1N,QAAQ,OAAOk1N,IAAKA,EAAGl1N,QAAQ,SAASv9J,EAAEyyX,EAAGr2U,UAAUp8C,GAAGA,EAAEwyX,EAAGm7D,aAAa3tb,GAAUlxB,EAAEkxB,EAAEA,EAAE1e,YAAYnG,EAAEyyc,WAAW,SAAS5tb,GAAmE,OAAhEA,EAAE7kB,EAAE8qI,KAAKjmH,GAAE,IAAMyyG,SAASzyG,EAAE,IAAImwG,WAAWnwG,IAAI6tb,EAAO7tb,EAAEyyG,QAAezyG,GAAG,EAAE7hB,QAAQsoG,KAAKj7G,SAAS2P,EAAEmyc,YAAYnvc,QAAQsoG,KAAK,GAAGluG,QAAQ,MAAM,MAAM4C,EAAEsD,UAAUN,QAAQsoG,KAAKh2G,MAAM,GAAG0N,QAAQqsF,GAAG,qBAAoB,SAASxqE,GAAG,MAAMA,KAAK7hB,QAAQqsF,GAAG,sBAAqB,WAAWrsF,QAAQI,KAAK,MAAKpD,EAAEoyc,KAAK,SAASvtb,GAAG7hB,QAAQI,KAAKyhB,IACxgB7kB,EAAE+9B,QAAQ,WAAW,MAAM,+BAAsCuzW,GAAG,oBAAoBxmQ,OAAO9qI,EAAE8qI,KAAK,SAASjmH,GAAG,OAAOimH,KAAKjmH,KAAK7kB,EAAEyyc,WAAW,SAAS5tb,GAAG,MAAG,mBAAoB8tb,WAAkB,IAAI39U,WAAW29U,WAAW9tb,KAAuB6tb,EAAO,iBAA1B7tb,EAAEimH,KAAKjmH,EAAE,YAA6CA,IAAG,oBAAoB+tb,WAAW5yc,EAAEsD,UAAUsvc,gBAAW,IAAoBtvc,YAAYtD,EAAEsD,UAAUA,WAAW,mBAAoB8uc,OAAOpyc,EAAEoyc,KAAK,SAASvtb,GAAGutb,KAAKvtb,OAAanxB,GAAGmB,KAAEnB,EAAE5B,SAAS8/c,gBAAgBv/c,EAAEP,SAAS8/c,cAAcx/c,KAClgBC,EAAEiN,KAAKm2B,SAASw7D,KAAKugX,IAAan/c,EAAEm/c,GAAmCn/c,EAAvB,IAAIA,EAAE0H,QAAQ,SAAW1H,EAAE6H,OAAO,EAAE7H,EAAEgwC,YAAY,KAAK,GAAK,GAAGriC,EAAE8qI,KAAK,SAASjmH,GAAG,IAAIlxB,EAAE,IAAIs1H,eAA+C,OAAhCt1H,EAAEmoH,KAAK,MAAMj3F,GAAE,GAAIlxB,EAAEi5H,KAAK,MAAaj5H,EAAE84H,cAAc53H,IAAImL,EAAEyyc,WAAW,SAAS5tb,GAAG,IAAIlxB,EAAE,IAAIs1H,eAA4E,OAA7Dt1H,EAAEmoH,KAAK,MAAMj3F,GAAE,GAAIlxB,EAAEk/c,aAAa,cAAcl/c,EAAEi5H,KAAK,MAAa,IAAIoI,WAAWrhI,EAAE6J,YAAYwC,EAAE8yc,UAAU,SAASjub,EAAElxB,EAAEC,GAAG,IAAIvC,EAAE,IAAI43H,eAAe53H,EAAEyqH,KAAK,MAAMj3F,GAAE,GAAIxzB,EAAEwhd,aAAa,cAAcxhd,EAAEsB,OAAO,WAAW,KAAKtB,EAAEqM,QAAQ,GAAGrM,EAAEqM,QACtfrM,EAAEmM,SAAS7J,EAAEtC,EAAEmM,UAAU5J,KAAKvC,EAAEqB,QAAQkB,EAAEvC,EAAEu7H,KAAK,OAAO5sH,EAAE+yc,eAAe,SAASlub,GAAG/yB,SAAS6gB,MAAMkS,IAAG,IAAI0yX,EAAGv3Y,EAAEgzc,QAAQ,oBAAqB99c,QAAQA,QAAQsD,IAAI5D,KAAKM,SAAS,oBAAqB89c,MAAMA,MAAM,MAAM9+c,EAAE8L,EAAEizc,WAAW,oBAAqBA,SAASA,SAAS,oBAAqB/9c,SAASA,QAAQ+F,KAAKrG,KAAKM,UAAUqiZ,GAAI,IAAIx0W,KAAKwuW,EAAGA,EAAG/gZ,eAAeuyC,KAAK/iC,EAAE+iC,GAAGwuW,EAAGxuW,IAAc,SAASy0W,EAAG3yX,GAAG,IAAIlxB,EAAEW,EAAe,OAAbA,EAAEA,EAAEuwB,EAAE,IAAI,GAAUlxB,EAC9a,SAAS8jZ,EAAG5yX,GAAG,IAAIlxB,EAAEoM,EAAEihB,GAAG,GAA8C,OAA3C6D,EAAElxB,EAAEkxB,EAAE,IAAI,GAAG9kB,EAAEihB,GAAG,GAAG6D,GAAKA,EAAEA,GAAGqpE,KAAEwpT,IAAK7yX,GAAE,GAAUA,GAAG9kB,EAAEihB,GAAG,GAAGrtB,EAAE,GAAGA,EAAE,SAASgkZ,EAAG9yX,GAAG,IAAIlxB,EAAY,OAAVA,IAAIA,EAAE,IAAW6S,KAAKo7B,KAAK/c,EAAElxB,GAAGA,EADmO49Y,OAAG,EACpO,IAAIqG,EAAG,CAAC,UAAU,SAAS/yX,EAAElxB,GAAG,OAAOkxB,EAAElxB,GAAG,SAAW,cAAsBkkZ,GAAG,EAAG,SAAS66D,EAAO7tb,EAAElxB,GAAGkxB,GAAGZ,GAAE,qBAAqBtwB,GAC1R,SAASk3F,EAAEhmE,GAAG,IAAIlxB,EAAE,KAA2C,OAAtC,MAAMA,EAAE8e,OAAO9e,EAAEtD,OAAO,KAAKsD,EAAE,OAAcA,GAAG,IAAK,KAAqB,IAAK,KAAK03F,EAAExmE,GAAG,GAAG,EAAE,MAAM,IAAK,MAAMqzX,EAAGrzX,GAAG,GAAG,EAAE,MAAM,IAAK,MAAM9kB,EAAE8kB,GAAG,GAAG,EAAE,MAAM,IAAK,MAAMqub,QAAQ,CAAC,GAAGC,WAAW,EAAE,IAAIr7D,GAAGq7D,YAAY,EAAEA,YAAsD,EAA1Cp7D,IAAIxiH,GAAG49K,WAAW,YAAY,eAAiB,KAAKn7D,IAAIm7D,eAAeA,aAAa,IAAI,cAAc,EAAE,IAAIpzc,EAAE8kB,GAAG,GAAGqub,QAAQ,GAAGnzc,EAAE8kB,EAAE,GAAG,GAAGqub,QAAQ,GAAG,MAAM,IAAK,QAAQj7D,EAAGpzX,GAAG,GAAG,EAAE,MAAM,IAAK,SAASszX,EAAGtzX,GAAG,GAAG,EAAE,MAAM,QAAQZ,GAAE,8BAC1dtwB,IAAI,SAASykZ,EAAGvzX,EAAElxB,GAAmD,OAAtC,OAAVA,EAAEA,GAAG,MAAa8e,OAAO9e,EAAEtD,OAAO,KAAKsD,EAAE,OAAcA,GAAG,IAAK,KAAoB,IAAK,KAAK,OAAO03F,EAAExmE,GAAG,GAAG,IAAK,MAAM,OAAOqzX,EAAGrzX,GAAG,GAAG,IAAK,MAAqB,IAAK,MAAM,OAAO9kB,EAAE8kB,GAAG,GAAG,IAAK,QAAQ,OAAOozX,EAAGpzX,GAAG,GAAG,IAAK,SAAS,OAAOszX,EAAGtzX,GAAG,GAAG,QAAQZ,GAAE,8BAA8BtwB,GAAG,OAAO,KAC7T,SAASkqD,EAAEh5B,GAAG,IAAIlxB,EAAEqM,EAAEozc,YAAY,GAAG,iBAAkBvub,EAAG,IAAIjxB,GAAE,EAAOvC,EAAEwzB,OAAOjxB,GAAE,EAAGvC,EAAEwzB,EAAEx0B,OAAuF,GAAhFsD,EAAE,GAAGA,EAAEuD,EAAE,CAAC,mBAAoBmhZ,GAAGA,GAAGb,EAAGc,GAAGd,EAAGC,QAAI,IAAS9jZ,EAAE,EAAEA,GAAG6S,KAAKC,IAAIpV,EAAE,IAAOuC,EAAE,CAAC,IAAIsD,EAAEvD,EAAmB,IAAjB++c,EAAO,IAAM,EAAF/+c,IAAUkxB,EAAElxB,IAAM,EAAHtC,GAAM6F,EAAE2tB,EAAE3tB,GAAG,EAAE6I,EAAE7I,GAAG,GAAG,EAAE,IAAI2tB,EAAElxB,EAAEtC,EAAE6F,EAAE2tB,GAAGwmE,EAAEn0F,KAAK,GAAG,EAAE,OAAOvD,EAA4D,OAA1DkxB,EAAE2zG,UAAU3zG,EAAEvvB,MAAMwzF,EAAE5vE,IAAI2L,EAAElxB,GAAGm1F,EAAE5vE,IAAI,IAAI87G,WAAWnwG,GAAGlxB,GAAUA,EAAE,IAIQ2jI,EAAOjsC,EAAEvC,EAAEovT,EAAGn4Y,EAAEk4Y,EAAGE,EAC1Ee,EAAG5kZ,EAAE6kZ,EAAGC,EAAME,EAAGt4X,EALkC23X,EAAG,oBAAqB06D,YAAY,IAAIA,YAAY,aAAQ,EACxZ,SAAS/+S,EAAEzvI,GAAG,IAAI,IAAIlxB,EAAEm1F,EAAEl1F,EAAEixB,EAAElxB,EAAEC,MAAMA,EAAE,GAAG,GAAGA,EAAEixB,GAAGlxB,EAAE6kI,UAAUmgR,EAAG,OAAOA,EAAG5lP,OAAOp/J,EAAE6kI,SAAS3zG,EAAEjxB,IAAI,IAAIA,EAAE,KAAK,CAAC,IAAIvC,EAAEsC,EAAEkxB,KAAK,IAAIxzB,EAAE,OAAOuC,EAAE,GAAK,IAAFvC,EAAM,CAAC,IAAI6F,EAAS,GAAPvD,EAAEkxB,KAAQ,GAAG,MAAQ,IAAFxzB,GAAOuC,GAAGif,OAAO4yF,cAAgB,GAAFp0G,IAAO,EAAE6F,OAAO,CAAC,IAAI9F,EAAS,GAAPuC,EAAEkxB,KAAQ,GAAG,MAAQ,IAAFxzB,GAAOA,GAAK,GAAFA,IAAO,GAAG6F,GAAG,EAAE9F,MAAM,CAAC,IAAI4J,EAAS,GAAPrH,EAAEkxB,KAAQ,GAAG,MAAQ,IAAFxzB,GAAOA,GAAK,EAAFA,IAAM,GAAG6F,GAAG,GAAG9F,GAAG,EAAE4J,MAAM,CAAC,IAAIm3Q,EAAS,GAAPx+Q,EAAEkxB,KAAwBxzB,EAAb,MAAQ,IAAFA,IAAY,EAAFA,IAAM,GAAG6F,GAAG,GAAG9F,GAAG,GAAG4J,GAAG,EAAEm3Q,GAA4B,EAAF9gR,IAAM,GAAG6F,GAAG,GAAG9F,GAAG,GAAG4J,GAAG,GAAGm3Q,GAAG,EAApC,GAAPx+Q,EAAEkxB,MAA+C,MAAMxzB,EAAEuC,GAAGif,OAAO4yF,aAAap0G,IAAIA,GACpf,MAAMuC,GAAGif,OAAO4yF,aAAa,MAAMp0G,GAAG,GAAG,MAAQ,KAAFA,UAAeuC,GAAGif,OAAO4yF,aAAap0G,IACrF,SAASunZ,EAAG/zX,EAAElxB,EAAEC,EAAEvC,GAAG,KAAK,EAAEA,GAAG,OAAO,EAAE,IAAI6F,EAAEtD,EAAEvC,EAAEuC,EAAEvC,EAAE,EAAE,IAAI,IAAID,EAAE,EAAEA,EAAEyzB,EAAEx0B,SAASe,EAAE,CAAC,IAAI4J,EAAE6pB,EAAEsf,WAAW/yC,GAAgF,GAA1E,OAAO4J,GAAG,OAAOA,IAA2BA,EAAE,QAAU,KAAFA,IAAS,IAAM,KAA3C6pB,EAAEsf,aAAa/yC,IAAoC,KAAK4J,EAAE,CAAC,GAAGpH,GAAGvC,EAAE,MAAMsC,EAAEC,KAAKoH,MAAM,CAAC,GAAG,MAAMA,EAAE,CAAC,GAAGpH,EAAE,GAAGvC,EAAE,MAAMsC,EAAEC,KAAK,IAAIoH,GAAG,MAAM,CAAC,GAAG,OAAOA,EAAE,CAAC,GAAGpH,EAAE,GAAGvC,EAAE,MAAMsC,EAAEC,KAAK,IAAIoH,GAAG,OAAO,CAAC,GAAG,SAASA,EAAE,CAAC,GAAGpH,EAAE,GAAGvC,EAAE,MAAMsC,EAAEC,KAAK,IAAIoH,GAAG,OAAO,CAAC,GAAG,UAAUA,EAAE,CAAC,GAAGpH,EAAE,GAAGvC,EAAE,MAAMsC,EAAEC,KAAK,IAAIoH,GAAG,OAAO,CAAC,GAAGpH,EAAE,GAAGvC,EAAE,MAAMsC,EAAEC,KAAK,IAAIoH,GAAG,GAAGrH,EAAEC,KAAK,IAAIoH,GAAG,GAAG,GAAGrH,EAAEC,KAAK,IAAIoH,GAAG,GAAG,GAAGrH,EAAEC,KACxf,IAAIoH,GAAG,GAAG,GAAGrH,EAAEC,KAAK,IAAIoH,GAAG,EAAE,GAAGrH,EAAEC,KAAK,IAAM,GAAFoH,GAAa,OAAPrH,EAAEC,GAAG,EAASA,EAAEsD,EAAE,SAAS6hZ,EAAGl0X,GAAG,IAAI,IAAIlxB,EAAE,EAAEC,EAAE,EAAEA,EAAEixB,EAAEx0B,SAASuD,EAAE,CAAC,IAAIvC,EAAEwzB,EAAEsf,WAAWvwC,GAAG,OAAOvC,GAAG,OAAOA,IAAIA,EAAE,QAAU,KAAFA,IAAS,IAAsB,KAAlBwzB,EAAEsf,aAAavwC,IAAS,KAAKvC,IAAIsC,EAAEA,EAAE,MAAMtC,EAAEsC,EAAE,EAAE,OAAOtC,EAAEsC,EAAE,EAAE,SAAStC,EAAEsC,EAAE,EAAE,UAAUtC,EAAEsC,EAAE,EAAEA,EAAE,EAAE,OAAOA,EAC5R,SAASslZ,IAAKj5Y,EAAEszc,MAAMjoX,EAAE,IAAIkoX,UAAUj8U,GAAQt3H,EAAEwzc,OAAOt7D,EAAG,IAAIu7D,WAAWn8U,GAAQt3H,EAAE0zc,OAAO3zc,EAAE,IAAI4zc,WAAWr8U,GAAQt3H,EAAE4zc,OAAO9qX,EAAE,IAAIksC,WAAWsC,GAAQt3H,EAAE6zc,QAAQ,IAAIx8U,YAAYC,GAAQt3H,EAAE8zc,QAAQ,IAAIC,YAAYz8U,GAAQt3H,EAAEg0c,QAAQ/7D,EAAG,IAAIrxH,aAAatvJ,GAAQt3H,EAAEi0c,QAAQ97D,EAAG,IAAI+7D,aAAa58U,GAC7R,SAASogR,IAAKzzX,GAAE,kHAAkHiqE,EAAE,sMAF0J,oBAAqBmlX,aAAa,IAAIA,YAAY,YACpBn6D,EAAG5kZ,EAAE6kZ,EAAGC,EAAME,EAAGt4X,EAAE,EACL,IAAIu4X,EAAGv5Y,EAAEm0c,aAAa,MAAMjmX,EAAEluF,EAAEo0c,cAAc,OACpI,SAAS56D,EAAG30X,GAAG,KAAK,EAAEA,EAAEx0B,QAAQ,CAAC,IAAIsD,EAAEkxB,EAAE/zB,QAAQ,GAAG,mBAAmB6C,EAAEA,QAAQ,CAAC,IAAIC,EAAED,EAAEovC,EAAE,iBAAkBnvC,OAAE,IAASD,EAAEA,EAAEqM,EAAEq0c,UAAUzgd,GAAGoM,EAAEs0c,WAAW1gd,EAAED,EAAEA,GAAGC,OAAE,IAASD,EAAEA,EAAE,KAAKA,EAAEA,KAD3Cu6F,EAAEqrT,GAAIrlZ,EAAE,uDAAuDg6F,EAAE,kBAAkBqrT,EAAG,KACrdv5Y,EAAEs3H,OAAOA,EAAOt3H,EAAEs3H,QAAQ,iBAAkBi9U,aAAa,mBAAoBA,YAAYC,QAAQx0c,EAAEy0c,WAAW,IAAIF,YAAYC,OAAO,CAAC9+T,QAAQxnD,EAAE,MAAMwmX,QAAQxmX,EAAE,QAAQopC,EAAOt3H,EAAEy0c,WAAWn9U,QAAQA,EAAO,IAAInC,YAAYjnC,GAAGluF,EAAEs3H,OAAOA,GAAQ2hR,IAAgM,IAAIQ,EAAG,GAAGE,GAAG,GAAGE,GAAG,GAAGC,GAAG,GAAGC,IAAG,EAC9c,SAASC,KAAK,IAAIn1X,EAAE7kB,EAAEqyc,OAAOvhd,QAAQ2oZ,EAAG9sW,QAAQ9nB,GAAG,SAASq1X,GAAGr1X,EAAElxB,GAAG,IAAI,IAAIC,EAAE,EAAEA,EAAEixB,EAAEx0B,SAASuD,EAAEy3F,EAAE13F,KAAK,GAAGkxB,EAAEsf,WAAWvwC,GAAG,IAAIkkZ,GAAGtxY,KAAKi7B,IAAIu2W,GAAGxxY,KAAKo7B,KAAK2zP,GAAG/uR,KAAKi8B,MAAMs1W,GAAGvxY,KAAKo1B,IAAIgvM,GAAE,EAAE2vK,GAAG,KAAKC,GAAG,KAA+C,SAASC,GAAG51X,GAAG,OAAOhS,OAAOtiB,UAAU6J,WAAWyqB,EAAEzqB,WAAW,yCAAyC,IAAIyqB,EAAE9qB,QAAQ,yCAMtE,SAASujD,GAAEz4B,GAAG,IAAIlxB,EAAE2D,MAAMyhZ,EAAGl0X,GAAG,GAAmC,OAAhCA,EAAE+zX,EAAG/zX,EAAElxB,EAAE,EAAEA,EAAEtD,QAAQsD,EAAEtD,OAAOw0B,EAASlxB,EANpKqM,EAAE20c,gBAAgB,GAAG30c,EAAE40c,gBAAgB,GAC3O,WAAY,SAAS/vb,IAAI,IAAI,GAAG7kB,EAAE60c,WAAW,OAAO,IAAI7/U,WAAWh1H,EAAE60c,YAAY,GAAG70c,EAAEyyc,WAAW,OAAOzyc,EAAEyyc,WAAWv7c,GAAG,KAAK,kDAAmD,MAAMslY,GAAGv4W,GAAEu4W,IAAI,SAAS7oY,IAAI,OAAOqM,EAAE60c,aAAanhd,IAAImB,GAAG,mBAAoBumH,MAAM,IAAI3pH,SAAQ,SAASkC,GAAGA,EAAEkxB,QAAOu2F,MAAMlkH,EAAE,CAAC+8B,YAAY,gBAAgBt8B,MAAK,SAASktB,GAAG,IAAIA,EAAE++W,GAAG,KAAK,uCAAuC1sY,EAAE,IAAI,OAAO2tB,EAAE44H,iBAAgBt9F,OAAM,WAAW,OAAOt7B,OAAM,SAASjxB,EAAEixB,GAAG,SAASjxB,EAAEixB,GAAe,IAAZstP,EAAEttP,EAAE3zB,SAAa4jd,OAAO,CAACjwb,EACjgBstP,EAAE2iM,OAAO,IAAInhd,EAAEqM,EAAEs3H,OAAOzyG,EAAEs1G,WAAWxmI,EAAEwmI,YAAYjmI,EAAE,8GAA8GP,EAAE,IAAI4/c,UAAU5/c,GAAG,IAAK4/c,UAAU1ub,GAAI3L,IAAIvlB,GAAGqM,EAAEs3H,OAAOA,EAAOzyG,EAAEo0X,IAAKj5Y,EAAE+0c,IAAI5iM,EAAEnyQ,EAAEg1c,WAAU,EAAGpqO,KAAI5qO,EAAEi1c,wBAAwBj1c,EAAEi1c,uBAAuBrqO,IAAG,GAAGA,KAAI,OAAO2vK,KAAK/gS,cAAc+gS,IAAIA,GAAG,MAAMC,KAAK31X,EAAE21X,GAAGA,GAAG,KAAK31X,MAAM,SAASxzB,EAAEwzB,GAAGjxB,EAAEixB,EAAEpvB,UAAU,SAASrE,EAAEyzB,GAAGlxB,IAAIgE,MAAK,SAASktB,GAAG,OAAO0vb,YAAYW,YAAYrwb,EAAE7pB,MAAKrD,KAAKktB,GAAGs7B,OAAM,SAASt7B,GAAG3wB,EAAE,0CAC/f2wB,GAAGZ,GAAEY,MAAK,GAAG,iBAAkB0vb,YAAY,OAAOrgd,EAAE,oCAAmC,EAAG,KAAK8L,EAAEy0c,sBAAsBF,YAAYC,QAAQ,OAAOtgd,EAAE,iCAAgC,EAAsJ,GAAnJ2wB,EAAEiwb,OAAO90c,EAAEy0c,WAAWz5c,EAAE6T,OAAO,CAACusB,IAAIA,IAAIgG,SAASA,KAAUpmC,EAAE,eAAewL,KAAKxL,EAAEwR,IAAIqY,EAAE+lN,KAAI5qO,EAAEi1c,wBAAwBj1c,EAAEi1c,uBAAuBrqO,IAAM5qO,EAAEm1c,gBAAgB,IAAI,OAAOn1c,EAAEm1c,gBAAgBn6c,EAAEpH,GAAG,MAAM8nK,GAAI,OAAOxnK,EAAE,sDAAsDwnK,IAAI,EACxO,OAD2O17J,EAAE60c,YAAY,mBAAoBN,YAAYa,sBAC/f36D,GAAGvjZ,IAAI,mBAAoBkkH,MAAMhqH,EAAEC,GAAGkjd,YAAYa,qBAAqBh6V,MAAMlkH,EAAE,CAAC+8B,YAAY,gBAAgBj5B,GAAGrD,KAAKtG,GAAG8uD,OAAM,SAASt7B,GAAG3wB,EAAE,kCAAkC2wB,GAAG3wB,EAAE,6CAA6C9C,EAAEC,MAAW,GAAG,IAAIA,EAAE,WAAW6F,EAAE,WAAW9F,EAAE,kBAAkBqpZ,GAAGppZ,KAAKA,EAAE8lZ,EAAG9lZ,IAAIopZ,GAAGvjZ,KAAKA,EAAEigZ,EAAGjgZ,IAAIujZ,GAAGrpZ,KAAKA,EAAE+lZ,EAAG/lZ,IAAI,IAAI4J,EAAE,CAAC6T,OAAO,KAAKrC,IAAI,KAAK6oc,SAASz9D,EAAG9vY,OAAO9H,GAAGmyQ,EAAE,KAAKnyQ,EAAEs1c,WAAWt1c,EAAE+0c,IAAI,IAAInkE,EAAE5wY,EAAEu1c,cAAcv1c,EAAEu1c,cAAc,SAAS1wb,GAAG,GAAG,UAAUuN,EAAE,IAAIz+B,EAAEi9Y,EAAE/rX,QAAQ7kB,EAAE,CAAC,IAAIpM,EACxfoM,EAAEg1c,UAAU,MAAM,SAAiD,GAAxC,EAAEnwb,EAAEjxB,IAAIixB,GAAGjxB,EAAEixB,EAAEjxB,GAAGA,EAAEoM,EAAEs3H,OAAO6C,WAAcn6H,EAAEg1c,UAAU,IAAIrhd,GAAG,IAAIqM,EAAEy0c,WAAWe,MAAM3wb,EAAEjxB,GAAG,OAAOoM,EAAEs3H,OAAOt3H,EAAEy0c,WAAWn9U,OAAO,KAAK,MAAMt3H,EAAE,MAAMm7Y,GAAIxnZ,EAAE,KAAK,MAAMqM,EAAErM,OAAE,EAAO,OAAOA,GAAG,IAAIy+B,EAAE,GAAGpyB,EAAE+0c,IAAI,SAASlwb,EAAElxB,GAAG,IAAIA,EAAE4vF,MAAM,MAAmB,KAAlB1+D,EAAE7kB,EAAEy1c,iBAA2B5wb,EAAE,MAAM,IAAIxzB,EAAE2O,EAAE01c,iBAAiB/hd,EAAE4vF,MAAM,iBAAkBgxX,aAAa,mBAAoBA,YAAYoB,WAAM,IAAStkd,EAAE,IAAIkjd,YAAYoB,MAAM,CAACjgU,QAAQ7wH,EAAE6vb,QAAQrjd,EAAEs7D,QAAQ,YAAY,IAAI4nZ,YAAYoB,MAAM,CAACjgU,QAAQ7wH,EAAE8nC,QAAQ,YAC5fr1D,MAAMutB,GAAG7kB,EAAE41c,UAAUjid,EAAE4vF,MAA+H,OAAzH5vF,EAAEkid,aAAalid,EAAEkid,WAAW71c,EAAE81c,aAAanid,EAAEoid,YAAYpid,EAAEoid,UAAU,GAAUrD,EAAP/+c,EAAEC,EAAED,GAAY,iCAAwCA,GAL7J,GAK4KW,EAAK,OAAb4kZ,EAAG,MAAgBS,GAAGhpZ,OAAOqP,EAAE81c,YAAY58D,EAAGl5Y,EAAEg2c,YAAY,MAAM1hd,GAAG,GAAG0sB,EAAEw2X,EAAG,GAAG2B,EAAGC,EAAGzB,EAAGrjZ,GAAYglZ,EAAG3B,EAATwB,EAAGI,GAAax5Y,EAAEihB,GAAG,GAAGs4X,EAA+Et5Y,EAAEy1c,cAAc,GAAGz1c,EAAE01c,iBAAiB,GAAG11c,EAAE9I,EAAE,GACvZ8I,EAAEksD,EAAE,CAAC40F,MAAM78H,GAAEgyb,cAAc,WAAWv+D,KAAMw+D,eAAe,WAAW,OAAOhoX,GAAGioX,wBAAwBz+D,EAAG0+D,YAAY,SAASvxb,GAAwD,OAArD7kB,EAAEq2c,oBAAoBt2c,EAAEC,EAAEq2c,qBAAqB,GAAGxxb,GAAUA,GAAGyxb,uBAAuB,SAASzxb,EAAElxB,EAAEC,GAA8B,OAA3Bk1F,EAAE5vE,IAAI4vE,EAAE0vC,SAAS7kI,EAAEA,EAAEC,GAAGixB,GAAUA,GAAG0xb,eAAev1b,EAAEw1b,SAASp9D,GAAI,IAAIuB,GAAG36Y,EAAE+0c,IAAI/0c,EAAE9I,EAAE8I,EAAEksD,EAAEorE,GAAQt3H,EAAE+0c,IAAIp6D,GAAG36Y,EAAEy2c,MAAM,WAAW,OAAOz2c,EAAE+0c,IAAI0B,MAAM55c,MAAM,KAAKyG,YAAY,IAAI+0Y,GAAGr4Y,EAAE02c,QAAQ,WAAW,OAAO12c,EAAE+0c,IAAI2B,QAAQ75c,MAAM,KAAKyG,YAC3ctD,EAAE22c,aAAa,WAAW,OAAO32c,EAAE+0c,IAAI4B,aAAa95c,MAAM,KAAKyG,YAAYtD,EAAE42c,oCAAoC,WAAW,OAAO52c,EAAE+0c,IAAI6B,oCAAoC/5c,MAAM,KAAKyG,YAAYtD,EAAE62c,kDAAkD,WAAW,OAAO72c,EAAE+0c,IAAI8B,kDAAkDh6c,MAAM,KAAKyG,YAAYtD,EAAE82c,2BAA2B,WAAW,OAAO92c,EAAE+0c,IAAI+B,2BAA2Bj6c,MAAM,KAAKyG,YACpbtD,EAAE+2c,kCAAkC,WAAW,OAAO/2c,EAAE+0c,IAAIgC,kCAAkCl6c,MAAM,KAAKyG,YAAYtD,EAAEg3c,wBAAwB,WAAW,OAAOh3c,EAAE+0c,IAAIiC,wBAAwBn6c,MAAM,KAAKyG,YAAYtD,EAAEi3c,oCAAoC,WAAW,OAAOj3c,EAAE+0c,IAAIkC,oCAAoCp6c,MAAM,KAAKyG,YAAYtD,EAAEk3c,yCAAyC,WAAW,OAAOl3c,EAAE+0c,IAAImC,yCAAyCr6c,MAAM,KAAKyG,YACtctD,EAAEm3c,2BAA2B,WAAW,OAAOn3c,EAAE+0c,IAAIoC,2BAA2Bt6c,MAAM,KAAKyG,YAAYtD,EAAEo3c,kCAAkC,WAAW,OAAOp3c,EAAE+0c,IAAIqC,kCAAkCv6c,MAAM,KAAKyG,YAAYtD,EAAEq3c,kBAAkB,WAAW,OAAOr3c,EAAE+0c,IAAIsC,kBAAkBx6c,MAAM,KAAKyG,YAAYtD,EAAEs3c,8BAA8B,WAAW,OAAOt3c,EAAE+0c,IAAIuC,8BAA8Bz6c,MAAM,KAAKyG,YAAYtD,EAAEu3c,kBAAkB,WAAW,OAAOv3c,EAAE+0c,IAAIwC,kBAAkB16c,MAAM,KAAKyG,YACvetD,EAAEw3c,mBAAmB,WAAW,OAAOx3c,EAAE+0c,IAAIyC,mBAAmB36c,MAAM,KAAKyG,YAAYtD,EAAEy3c,iCAAiC,WAAW,OAAOz3c,EAAE+0c,IAAI0C,iCAAiC56c,MAAM,KAAKyG,YAAYtD,EAAE03c,kCAAkC,WAAW,OAAO13c,EAAE+0c,IAAI2C,kCAAkC76c,MAAM,KAAKyG,YAAYtD,EAAE23c,yBAAyB,WAAW,OAAO33c,EAAE+0c,IAAI4C,yBAAyB96c,MAAM,KAAKyG,YACtZtD,EAAE43c,yBAAyB,WAAW,OAAO53c,EAAE+0c,IAAI6C,yBAAyB/6c,MAAM,KAAKyG,YAAYtD,EAAE63c,sBAAsB,WAAW,OAAO73c,EAAE+0c,IAAI8C,sBAAsBh7c,MAAM,KAAKyG,YAAYtD,EAAE83c,eAAe,WAAW,OAAO93c,EAAE+0c,IAAI+C,eAAej7c,MAAM,KAAKyG,YAAYtD,EAAE+3c,mBAAmB,WAAW,OAAO/3c,EAAE+0c,IAAIgD,mBAAmBl7c,MAAM,KAAKyG,YAAYtD,EAAEg4c,mBAAmB,WAAW,OAAOh4c,EAAE+0c,IAAIiD,mBAAmBn7c,MAAM,KAAKyG,YACjbtD,EAAEi4c,oBAAoB,WAAW,OAAOj4c,EAAE+0c,IAAIkD,oBAAoBp7c,MAAM,KAAKyG,YAAYtD,EAAEk4c,kCAAkC,WAAW,OAAOl4c,EAAE+0c,IAAImD,kCAAkCr7c,MAAM,KAAKyG,YAAYtD,EAAEm4c,4BAA4B,WAAW,OAAOn4c,EAAE+0c,IAAIoD,4BAA4Bt7c,MAAM,KAAKyG,YAAYtD,EAAEo4c,iCAAiC,WAAW,OAAOp4c,EAAE+0c,IAAIqD,iCAAiCv7c,MAAM,KAAKyG,YAC9ZtD,EAAEq4c,6BAA6B,WAAW,OAAOr4c,EAAE+0c,IAAIsD,6BAA6Bx7c,MAAM,KAAKyG,YAAYtD,EAAEs4c,2CAA2C,WAAW,OAAOt4c,EAAE+0c,IAAIuD,2CAA2Cz7c,MAAM,KAAKyG,YAAYtD,EAAEu4c,gBAAgB,WAAW,OAAOv4c,EAAE+0c,IAAIwD,gBAAgB17c,MAAM,KAAKyG,YAAYtD,EAAEw4c,8BAA8B,WAAW,OAAOx4c,EAAE+0c,IAAIyD,8BAA8B37c,MAAM,KAAKyG,YAAYtD,EAAEy4c,aAAa,WAAW,OAAOz4c,EAAE+0c,IAAI0D,aAAa57c,MAAM,KAAKyG,YAC/etD,EAAE04c,kCAAkC,WAAW,OAAO14c,EAAE+0c,IAAI2D,kCAAkC77c,MAAM,KAAKyG,YAAYtD,EAAE24c,oBAAoB,WAAW,OAAO34c,EAAE+0c,IAAI4D,oBAAoB97c,MAAM,KAAKyG,YAAYtD,EAAE44c,aAAa,WAAW,OAAO54c,EAAE+0c,IAAI6D,aAAa/7c,MAAM,KAAKyG,YAAYtD,EAAE64c,4BAA4B,WAAW,OAAO74c,EAAE+0c,IAAI8D,4BAA4Bh8c,MAAM,KAAKyG,YAAYtD,EAAE84c,0BAA0B,WAAW,OAAO94c,EAAE+0c,IAAI+D,0BAA0Bj8c,MAAM,KAAKyG,YAC3dtD,EAAE+4c,2BAA2B,WAAW,OAAO/4c,EAAE+0c,IAAIgE,2BAA2Bl8c,MAAM,KAAKyG,YAAYtD,EAAEgyc,WAAW,WAAW,OAAOhyc,EAAE+0c,IAAI/C,WAAWn1c,MAAM,KAAKyG,YAAYtD,EAAEg5c,kCAAkC,WAAW,OAAOh5c,EAAE+0c,IAAIiE,kCAAkCn8c,MAAM,KAAKyG,YAAYtD,EAAEi5c,yCAAyC,WAAW,OAAOj5c,EAAE+0c,IAAIkE,yCAAyCp8c,MAAM,KAAKyG,YAC1ZtD,EAAEk5c,yBAAyB,WAAW,OAAOl5c,EAAE+0c,IAAImE,yBAAyBr8c,MAAM,KAAKyG,YAAYtD,EAAEm5c,mBAAmB,WAAW,OAAOn5c,EAAE+0c,IAAIoE,mBAAmBt8c,MAAM,KAAKyG,YAAYtD,EAAEo5c,wCAAwC,WAAW,OAAOp5c,EAAE+0c,IAAIqE,wCAAwCv8c,MAAM,KAAKyG,YAAYtD,EAAEq5c,mBAAmB,WAAW,OAAOr5c,EAAE+0c,IAAIsE,mBAAmBx8c,MAAM,KAAKyG,YACtYtD,EAAEs5c,kCAAkC,WAAW,OAAOt5c,EAAE+0c,IAAIuE,kCAAkCz8c,MAAM,KAAKyG,YAAYtD,EAAEu5c,kCAAkC,WAAW,OAAOv5c,EAAE+0c,IAAIwE,kCAAkC18c,MAAM,KAAKyG,YAAYtD,EAAEw5c,2BAA2B,WAAW,OAAOx5c,EAAE+0c,IAAIyE,2BAA2B38c,MAAM,KAAKyG,YAAYtD,EAAEy5c,6CAA6C,WAAW,OAAOz5c,EAAE+0c,IAAI0E,6CAA6C58c,MAAM,KAAKyG,YAChdtD,EAAE05c,8BAA8B,WAAW,OAAO15c,EAAE+0c,IAAI2E,8BAA8B78c,MAAM,KAAKyG,YAAYtD,EAAE25c,qCAAqC,WAAW,OAAO35c,EAAE+0c,IAAI4E,qCAAqC98c,MAAM,KAAKyG,YAAYtD,EAAE45c,uCAAuC,WAAW,OAAO55c,EAAE+0c,IAAI6E,uCAAuC/8c,MAAM,KAAKyG,YAAYtD,EAAE65c,sCAAsC,WAAW,OAAO75c,EAAE+0c,IAAI8E,sCAAsCh9c,MAAM,KAAKyG,YACxdtD,EAAE85c,gCAAgC,WAAW,OAAO95c,EAAE+0c,IAAI+E,gCAAgCj9c,MAAM,KAAKyG,YAAYtD,EAAE+5c,gCAAgC,WAAW,OAAO/5c,EAAE+0c,IAAIgF,gCAAgCl9c,MAAM,KAAKyG,YAAYtD,EAAEg6c,iCAAiC,WAAW,OAAOh6c,EAAE+0c,IAAIiF,iCAAiCn9c,MAAM,KAAKyG,YAAYtD,EAAEi6c,+CAA+C,WAAW,OAAOj6c,EAAE+0c,IAAIkF,+CAA+Cp9c,MAAM,KAAKyG,YACxdtD,EAAEk6c,6BAA6B,WAAW,OAAOl6c,EAAE+0c,IAAImF,6BAA6Br9c,MAAM,KAAKyG,YAAYtD,EAAEm6c,kCAAkC,WAAW,OAAOn6c,EAAE+0c,IAAIoF,kCAAkCt9c,MAAM,KAAKyG,YAAYtD,EAAEo6c,4BAA4B,WAAW,OAAOp6c,EAAE+0c,IAAIqF,4BAA4Bv9c,MAAM,KAAKyG,YAAYtD,EAAEq6c,+BAA+B,WAAW,OAAOr6c,EAAE+0c,IAAIsF,+BAA+Bx9c,MAAM,KAAKyG,YAC5atD,EAAEs6c,sCAAsC,WAAW,OAAOt6c,EAAE+0c,IAAIuF,sCAAsCz9c,MAAM,KAAKyG,YAAYtD,EAAEu6c,gCAAgC,WAAW,OAAOv6c,EAAE+0c,IAAIwF,gCAAgC19c,MAAM,KAAKyG,YAAYtD,EAAEw6c,uCAAuC,WAAW,OAAOx6c,EAAE+0c,IAAIyF,uCAAuC39c,MAAM,KAAKyG,YAAYtD,EAAEy6c,uCAAuC,WAAW,OAAOz6c,EAAE+0c,IAAI0F,uCAAuC59c,MAAM,KAAKyG,YAChetD,EAAE06c,0CAA0C,WAAW,OAAO16c,EAAE+0c,IAAI2F,0CAA0C79c,MAAM,KAAKyG,YAAYtD,EAAE26c,iCAAiC,WAAW,OAAO36c,EAAE+0c,IAAI4F,iCAAiC99c,MAAM,KAAKyG,YAAYtD,EAAE46c,oBAAoB,WAAW,OAAO56c,EAAE+0c,IAAI6F,oBAAoB/9c,MAAM,KAAKyG,YAAYtD,EAAE66c,2BAA2B,WAAW,OAAO76c,EAAE+0c,IAAI8F,2BAA2Bh+c,MAAM,KAAKyG,YAC5atD,EAAE86c,kCAAkC,WAAW,OAAO96c,EAAE+0c,IAAI+F,kCAAkCj+c,MAAM,KAAKyG,YAAYtD,EAAE+6c,yCAAyC,WAAW,OAAO/6c,EAAE+0c,IAAIgG,yCAAyCl+c,MAAM,KAAKyG,YAAYtD,EAAEg7c,mCAAmC,WAAW,OAAOh7c,EAAE+0c,IAAIiG,mCAAmCn+c,MAAM,KAAKyG,YAAYtD,EAAEi7c,0CAA0C,WAAW,OAAOj7c,EAAE+0c,IAAIkG,0CAA0Cp+c,MAAM,KAAKyG,YACxetD,EAAEk7c,0BAA0B,WAAW,OAAOl7c,EAAE+0c,IAAImG,0BAA0Br+c,MAAM,KAAKyG,YAAYtD,EAAEm7c,iCAAiC,WAAW,OAAOn7c,EAAE+0c,IAAIoG,iCAAiCt+c,MAAM,KAAKyG,YAAYtD,EAAEo7c,oBAAoB,WAAW,OAAOp7c,EAAE+0c,IAAIqG,oBAAoBv+c,MAAM,KAAKyG,YAAYtD,EAAEq7c,2BAA2B,WAAW,OAAOr7c,EAAE+0c,IAAIsG,2BAA2Bx+c,MAAM,KAAKyG,YAAYtD,EAAEs7c,0BAA0B,WAAW,OAAOt7c,EAAE+0c,IAAIuG,0BAA0Bz+c,MAAM,KAAKyG,YACjftD,EAAEu7c,gBAAgB,WAAW,OAAOv7c,EAAE+0c,IAAIwG,gBAAgB1+c,MAAM,KAAKyG,YAAYtD,EAAEw7c,mBAAmB,WAAW,OAAOx7c,EAAE+0c,IAAIyG,mBAAmB3+c,MAAM,KAAKyG,YAAYtD,EAAEy7c,8BAA8B,WAAW,OAAOz7c,EAAE+0c,IAAI0G,8BAA8B5+c,MAAM,KAAKyG,YAAYtD,EAAE07c,wBAAwB,WAAW,OAAO17c,EAAE+0c,IAAI2G,wBAAwB7+c,MAAM,KAAKyG,YAAYtD,EAAE27c,gBAAgB,WAAW,OAAO37c,EAAE+0c,IAAI4G,gBAAgB9+c,MAAM,KAAKyG,YAC3btD,EAAE47c,8BAA8B,WAAW,OAAO57c,EAAE+0c,IAAI6G,8BAA8B/+c,MAAM,KAAKyG,YAAYtD,EAAE67c,mBAAmB,WAAW,OAAO77c,EAAE+0c,IAAI8G,mBAAmBh/c,MAAM,KAAKyG,YAAYtD,EAAE87c,8BAA8B,WAAW,OAAO97c,EAAE+0c,IAAI+G,8BAA8Bj/c,MAAM,KAAKyG,YAAYtD,EAAE+7c,qCAAqC,WAAW,OAAO/7c,EAAE+0c,IAAIgH,qCAAqCl/c,MAAM,KAAKyG,YAChatD,EAAEg8c,wBAAwB,WAAW,OAAOh8c,EAAE+0c,IAAIiH,wBAAwBn/c,MAAM,KAAKyG,YAAYtD,EAAEi8c,qBAAqB,WAAW,OAAOj8c,EAAE+0c,IAAIkH,qBAAqBp/c,MAAM,KAAKyG,YAAYtD,EAAEk8c,mCAAmC,WAAW,OAAOl8c,EAAE+0c,IAAImH,mCAAmCr/c,MAAM,KAAKyG,YAAYtD,EAAEm8c,wBAAwB,WAAW,OAAOn8c,EAAE+0c,IAAIoH,wBAAwBt/c,MAAM,KAAKyG,YAAYtD,EAAEo8c,yBAAyB,WAAW,OAAOp8c,EAAE+0c,IAAIqH,yBAAyBv/c,MAAM,KAAKyG,YAC3etD,EAAEq8c,mBAAmB,WAAW,OAAOr8c,EAAE+0c,IAAIsH,mBAAmBx/c,MAAM,KAAKyG,YAAYtD,EAAEs8c,mBAAmB,WAAW,OAAOt8c,EAAE+0c,IAAIuH,mBAAmBz/c,MAAM,KAAKyG,YAAYtD,EAAEu8c,6BAA6B,WAAW,OAAOv8c,EAAE+0c,IAAIwH,6BAA6B1/c,MAAM,KAAKyG,YAAYtD,EAAEiyc,2BAA2B,WAAW,OAAOjyc,EAAE+0c,IAAI9C,2BAA2Bp1c,MAAM,KAAKyG,YAAYtD,EAAEw8c,aAAa,WAAW,OAAOx8c,EAAE+0c,IAAIyH,aAAa3/c,MAAM,KAAKyG,YAC/btD,EAAEy8c,yBAAyB,WAAW,OAAOz8c,EAAE+0c,IAAI0H,yBAAyB5/c,MAAM,KAAKyG,YAAYtD,EAAE08c,gBAAgB,WAAW,OAAO18c,EAAE+0c,IAAI2H,gBAAgB7/c,MAAM,KAAKyG,YAAYtD,EAAE28c,8BAA8B,WAAW,OAAO38c,EAAE+0c,IAAI4H,8BAA8B9/c,MAAM,KAAKyG,YAAYtD,EAAE48c,2BAA2B,WAAW,OAAO58c,EAAE+0c,IAAI6H,2BAA2B//c,MAAM,KAAKyG,YAAYtD,EAAE68c,kCAAkC,WAAW,OAAO78c,EAAE+0c,IAAI8H,kCAAkChgd,MAAM,KAAKyG,YACjftD,EAAE88c,4BAA4B,WAAW,OAAO98c,EAAE+0c,IAAI+H,4BAA4Bjgd,MAAM,KAAKyG,YAAYtD,EAAE+8c,qBAAqB,WAAW,OAAO/8c,EAAE+0c,IAAIgI,qBAAqBlgd,MAAM,KAAKyG,YAAYtD,EAAEg9c,0BAA0B,WAAW,OAAOh9c,EAAE+0c,IAAIiI,0BAA0Bngd,MAAM,KAAKyG,YAAYtD,EAAEi9c,SAAS,WAAW,OAAOj9c,EAAE+0c,IAAIkI,SAASpgd,MAAM,KAAKyG,YAAYtD,EAAEk9c,uBAAuB,WAAW,OAAOl9c,EAAE+0c,IAAImI,uBAAuBrgd,MAAM,KAAKyG,YAC/btD,EAAEm9c,gCAAgC,WAAW,OAAOn9c,EAAE+0c,IAAIoI,gCAAgCtgd,MAAM,KAAKyG,YAAYtD,EAAEo9c,wBAAwB,WAAW,OAAOp9c,EAAE+0c,IAAIqI,wBAAwBvgd,MAAM,KAAKyG,YAAYtD,EAAEq9c,oBAAoB,WAAW,OAAOr9c,EAAE+0c,IAAIsI,oBAAoBxgd,MAAM,KAAKyG,YAAYtD,EAAEs9c,oBAAoB,WAAW,OAAOt9c,EAAE+0c,IAAIuI,oBAAoBzgd,MAAM,KAAKyG,YAAYtD,EAAEu9c,oBAAoB,WAAW,OAAOv9c,EAAE+0c,IAAIwI,oBAAoB1gd,MAAM,KAAKyG,YACjdtD,EAAEw9c,uBAAuB,WAAW,OAAOx9c,EAAE+0c,IAAIyI,uBAAuB3gd,MAAM,KAAKyG,YAAYtD,EAAEy9c,uBAAuB,WAAW,OAAOz9c,EAAE+0c,IAAI0I,uBAAuB5gd,MAAM,KAAKyG,YAAYtD,EAAE09c,cAAc,WAAW,OAAO19c,EAAE+0c,IAAI2I,cAAc7gd,MAAM,KAAKyG,YAAYtD,EAAE29c,aAAa,WAAW,OAAO39c,EAAE+0c,IAAI4I,aAAa9gd,MAAM,KAAKyG,YAAYtD,EAAE49c,kCAAkC,WAAW,OAAO59c,EAAE+0c,IAAI6I,kCAAkC/gd,MAAM,KAAKyG,YAC/btD,EAAE69c,gBAAgB,WAAW,OAAO79c,EAAE+0c,IAAI8I,gBAAgBhhd,MAAM,KAAKyG,YAAYtD,EAAE89c,uBAAuB,WAAW,OAAO99c,EAAE+0c,IAAI+I,uBAAuBjhd,MAAM,KAAKyG,YAAYtD,EAAE+9c,wBAAwB,WAAW,OAAO/9c,EAAE+0c,IAAIgJ,wBAAwBlhd,MAAM,KAAKyG,YAAYtD,EAAEg+c,kBAAkB,WAAW,OAAOh+c,EAAE+0c,IAAIiJ,kBAAkBnhd,MAAM,KAAKyG,YAAYtD,EAAEi+c,YAAY,WAAW,OAAOj+c,EAAE+0c,IAAIkJ,YAAYphd,MAAM,KAAKyG,YACnatD,EAAEk+c,mBAAmB,WAAW,OAAOl+c,EAAE+0c,IAAImJ,mBAAmBrhd,MAAM,KAAKyG,YAAYtD,EAAEm+c,sBAAsB,WAAW,OAAOn+c,EAAE+0c,IAAIoJ,sBAAsBthd,MAAM,KAAKyG,YAAYtD,EAAEo+c,oCAAoC,WAAW,OAAOp+c,EAAE+0c,IAAIqJ,oCAAoCvhd,MAAM,KAAKyG,YAAYtD,EAAEq+c,qCAAqC,WAAW,OAAOr+c,EAAE+0c,IAAIsJ,qCAAqCxhd,MAAM,KAAKyG,YAC5ZtD,EAAEs+c,4BAA4B,WAAW,OAAOt+c,EAAE+0c,IAAIuJ,4BAA4Bzhd,MAAM,KAAKyG,YAAYtD,EAAEu+c,sBAAsB,WAAW,OAAOv+c,EAAE+0c,IAAIwJ,sBAAsB1hd,MAAM,KAAKyG,YAAYtD,EAAEw+c,aAAa,WAAW,OAAOx+c,EAAE+0c,IAAIyJ,aAAa3hd,MAAM,KAAKyG,YAAYtD,EAAEy+c,wBAAwB,WAAW,OAAOz+c,EAAE+0c,IAAI0J,wBAAwB5hd,MAAM,KAAKyG,YAAYtD,EAAE0+c,kBAAkB,WAAW,OAAO1+c,EAAE+0c,IAAI2J,kBAAkB7hd,MAAM,KAAKyG,YAC3b,IAAIg1Y,GAAGt4Y,EAAE2+c,WAAW,WAAW,OAAO3+c,EAAE+0c,IAAI4J,WAAW9hd,MAAM,KAAKyG,YAAYs3Y,GAAG56Y,EAAE4+c,aAAa,WAAW,OAAO5+c,EAAE+0c,IAAI6J,aAAa/hd,MAAM,KAAKyG,YAAYu3Y,GAAG76Y,EAAE6+c,UAAU,WAAW,OAAO7+c,EAAE+0c,IAAI8J,UAAUhid,MAAM,KAAKyG,YACxN,SAASw3Y,KAAK,SAASj2X,IAAI,IAAI7kB,EAAE8+c,YAAY9+c,EAAE8+c,WAAU,GAAIjnE,GAAI,CAA8E,GAA7EkC,KAAKA,IAAG,EAAGP,EAAGG,KAAKH,EAAGK,IAAO75Y,EAAE+xc,sBAAqB/xc,EAAE+xc,uBAA0B/xc,EAAEsyc,QAAQ,IAAI,mBAAmBtyc,EAAEsyc,UAAUtyc,EAAEsyc,QAAQ,CAACtyc,EAAEsyc,UAAUtyc,EAAEsyc,QAAQjid,QAAQ,CAAC,IAAIw0B,EAAE7kB,EAAEsyc,QAAQxhd,QAAQgpZ,GAAGntW,QAAQ9nB,GAAG20X,EAAGM,KAAK,KAAK,EAAElvK,IAAG,CAAC,GAAG5qO,EAAEqyc,OAAO,IAAI,mBAAmBryc,EAAEqyc,SAASryc,EAAEqyc,OAAO,CAACryc,EAAEqyc,SAASryc,EAAEqyc,OAAOhid,QAAQ2pZ,KAAKR,EAAGC,GAAI,EAAE7uK,IAAG5qO,EAAE8+c,YAAY9+c,EAAE6hH,WAAW7hH,EAAE6hH,UAAU,cAAcvuH,YAAW,WAAWA,YAAW,WAAW0M,EAAE6hH,UAAU,MACpf,GAAGh9F,MAAK,IAAIA,MAAe,SAASZ,GAAEY,GAAoF,MAA9E7kB,EAAEkyc,SAAQlyc,EAAEkyc,QAAQrtb,QAAG,IAASA,GAAG0yX,EAAG1yX,GAAG3wB,EAAE2wB,GAAGA,EAAElnB,KAAKuV,UAAU2R,IAAIA,EAAE,GAAGgzX,GAAG,EAAQ,SAAShzX,EAAE,+CAA0D,GAFgC7kB,EAAE+0c,IAAIp6D,GAAG36Y,EAAEozc,YAAY,EAAEpzc,EAAErI,KAAK,SAASktB,GAAG,GAAG7kB,EAAE8+c,UAAUj6b,EAAE7kB,OAAO,CAAC,IAAIrM,EAAEqM,EAAE+xc,qBAAqB/xc,EAAE+xc,qBAAqB,WAAWp+c,GAAGA,IAAIkxB,EAAE7kB,IAAI,OAAOA,GAAGw6Y,GAAG,SAAS2pB,IAAKnka,EAAE8+c,WAAWhkE,KAAK96Y,EAAE8+c,YAAYtkE,GAAG2pB,IAEjanka,EAAEgrG,IAAI8vS,GAAkK96Y,EAAE8gJ,MAAM78H,GAAKjkB,EAAE++c,QAAQ,IAAI,mBAAmB/+c,EAAE++c,UAAU/+c,EAAE++c,QAAQ,CAAC/+c,EAAE++c,UAAU,EAAE/+c,EAAE++c,QAAQ1ud,QAAQ2P,EAAE++c,QAAQ14c,KAAVrG,GAA0C,SAASw9C,KAAI,IAAI34B,EAAE7kB,EAAE26c,mCAAmCh6c,KAAKkkB,EAAEiwV,GAAEjwV,GAAGlkB,KAAKX,EAAEA,EAAEo6c,4BAA4Bz5c,KAAKkkB,GACvb,SAASisX,GAAEjsX,GAAG,OAAO,WAAW,IAAIlxB,EAAEkxB,EAAEhoB,MAAM8D,KAAK2C,WAAW,GAAG3P,IAAIu4D,GAAE,MAAMv4D,EAAE2gK,EAAEt0J,EAAEy6c,uCAAuCn3c,UAAU,KAAK9Q,MAAM,OAAOmB,GAAG,OAAOA,GAG6J,SAASy3F,KAAI,IAAIvmE,EAAE7kB,EAAE85c,kCAAkCn5c,KAAKkkB,EAAEiwV,GAAEjwV,GAAGlkB,KAAKX,EAAEA,EAAEw5c,2BAA2B74c,KAAKkkB,GACza,SAASgwV,GAAEhwV,GAAG,OAAO,WAAW,IAAIlxB,EAAEkxB,EAAEhoB,MAAM8D,KAAK2C,WAAW,GAAG3P,IAAIu4D,GAAE,MAAMv4D,EAAE2gK,EAAEt0J,EAAE65c,sCAAsCv2c,UAAU,KAAK9Q,MAAM,OAAOmB,GAAG,OAAOA,GAI/J,SAASonZ,KAAK,IAAIl2X,EAAE7kB,EAAEg8c,0BAA0Br7c,KAAKkkB,EAAEiwV,GAAEjwV,GAAGlkB,KAAKX,EAAEA,EAAE67c,mBAAmBl7c,KAAKkkB,GAAG,SAASo5B,GAAEp5B,GAAG,OAAO,WAAW,IAAIlxB,EAAEkxB,EAAEhoB,MAAM8D,KAAK2C,WAAW,GAAG3P,IAAIu4D,GAAE,MAAMv4D,EAAE2gK,EAAEt0J,EAAE87c,8BAA8Bx4c,UAAU,KAAK9Q,MAAM,OAAOmB,GAAG,OAAOA,GAEvP,SAAS+pD,KAAI,IAAI74B,EAAE7kB,EAAE07c,0BAA0B/6c,KAAKkkB,EAAEiwV,GAAEjwV,GAAGlkB,KAAKX,EAAEA,EAAEw7c,mBAAmB76c,KAAKkkB,GAAG,SAASuL,GAAEvL,GAAG,OAAO,WAAW,IAAIlxB,EAAEkxB,EAAEhoB,MAAM8D,KAAK2C,WAAW,GAAG3P,IAAIu4D,GAAE,MAAMv4D,EAAE2gK,EAAEt0J,EAAEy7c,8BAA8Bn4c,UAAU,KAAK9Q,MAAM,OAAOmB,GAAG,OAAOA,GAIyE,SAASiW,KAAK,IAAIib,EAAE7kB,EAAE+8c,uBAAuBp8c,KAAKkkB,EAAEiwV,GAAEjwV,GAAGlkB,KAAKX,EAAEA,EAAE08c,gBAAgB/7c,KAAKkkB,GACtZ,SAASm2X,GAAGn2X,GAAG,OAAO,WAAW,IAAIlxB,EAAEkxB,EAAEhoB,MAAM8D,KAAK2C,WAAW,GAAG3P,IAAIu4D,GAAE,MAAMv4D,EAAE2gK,EAAEt0J,EAAE48c,2BAA2Bt5c,UAAU,KAAK9Q,MAAM,OAAOmB,GAAG,OAAOA,GAErJ,SAASoqD,KAAI,IAAIl5B,EAAE7kB,EAAE09c,gBAAgB/pd,EAAEqM,EAAEw4c,gCAAgC5kd,EAAEu9Y,GAAEx9Y,GAAGgN,KAAKkkB,EAAEiwV,GAAEjwV,GAAGlkB,KAAKX,EAAEA,EAAEi9c,SAASt8c,KAAKkkB,GAAG7kB,EAAEu4c,gBAAgB53c,KAAKX,EAAEpM,EAAED,GAAGihX,GAAEhhX,EAAED,GAAG,SAASkyY,GAAEhhX,GAAG,OAAO,WAAW,IAAIlxB,EAAEkxB,EAAEhoB,MAAM8D,KAAK2C,WAAW,GAAG3P,IAAIu4D,GAAE,MAAMv4D,EAAE2gK,EAAEt0J,EAAEs9c,oBAAoBh6c,UAAU,KAAK9Q,MAAM,OAAOmB,GAAG,OAAOA,GAlBSqM,EAAEg/c,eAAc,EAAGlkE,KACjKt9V,GAAEjtD,UAAUmtT,KAAK,WAAW19S,EAAE03c,kCAAkC/2c,KAAKX,GAAG8gG,GAAEngG,KAAKX,IAAIw9C,GAAEjtD,UAAUmib,OAAO/9D,IAAE,SAAS9vV,GAAGA,EAAEy4B,GAAEz4B,GAAG,IAAIlxB,EAAEm9Y,GAAE9wY,EAAEi7c,0CAAJnqE,CAA+CnwY,KAAKX,GAAGpM,EAAEiqD,EAAEh5B,GAAGxzB,EAAEwsD,EAAElqD,EAAE,GAAG,IAAIm9Y,GAAE9wY,EAAEg7c,mCAAJlqE,CAAwCnwY,KAAKX,EAAEpM,EAAEixB,EAAEx0B,OAAOgB,EAAEsC,GAAG,QAAQ,IAAIihX,GAAEhhX,EAAEixB,EAAEx0B,QAAQsD,EAAE,EAAEA,EAAEkxB,EAAEx0B,OAAOsD,IAAIkxB,EAAElxB,GAAG,EAAE,OAAO2gK,EAAEjjK,MAC3emsD,GAAEjtD,UAAUkib,SAAS99D,IAAE,SAAS9vV,EAAElxB,GAAU,IAAIC,EAAEiqD,EAAbh5B,EAAEy4B,GAAEz4B,IAAyBxzB,EAAEwsD,EAAblqD,EAAE2pD,GAAE3pD,IAAc,IAAIm9Y,GAAE9wY,EAAEq+c,qCAAJvtE,CAA0CnwY,KAAKX,EAAEpM,EAAEixB,EAAEx0B,OAAOgB,EAAEsC,EAAEtD,QAAQ,QAAQ,IAAIukX,GAAEhhX,EAAEixB,EAAEx0B,QAAQuD,EAAE,EAAEA,EAAEixB,EAAEx0B,OAAOuD,IAAIixB,EAAEjxB,GAAG,MAAK4pD,GAAEjtD,UAAUmE,OAAOigX,IAAE,WAAW,IAAI9vV,EAAEisX,GAAE9wY,EAAEi6c,+CAAJnpE,CAAoDnwY,KAAKX,GAAGrM,EAAEw9Y,GAAEtsX,GAAGisX,GAAE9wY,EAAEg6c,iCAAJlpE,CAAsCnwY,KAAKX,EAAErM,EAAEkxB,MACpW24B,GAAEjtD,UAAUwvP,QAAQ,SAASl7N,GAAG,IAAI,IAAIlxB,EAAEolZ,EAAGl0X,GAAOjxB,EAAEk9Y,GAAE9wY,EAAEs5c,kCAAJxoE,CAAuCnwY,KAAKX,EAAErM,GAAOtC,EAAEyjX,GAAEnhX,EAAE,GAAGilZ,EAAG/zX,EAAEikE,EAAEz3F,EAAEsC,EAAE,GAAG,IAAIuD,EAAE49W,GAAElhX,EAAE,GAAkD,OAA/Ck9Y,GAAE9wY,EAAEq5c,mBAAJvoE,CAAwBnwY,KAAKX,EAAE3O,EAAEsC,EAAEuD,EAAEtD,GAAGi3F,EAAE3zF,EAAEtD,GAAU0gK,EAAEp9J,GAAG,aAAQ,IAAS7F,IAAIujX,GAAEvjX,EAAEsC,EAAE,GAAGmtG,GAAEzvG,SAAI,IAAS6F,GAAG4pG,GAAE5pG,KAAKsmD,GAAEjtD,UAAUivH,WAAWm1P,IAAE,WAAW,IAAI9vV,EAAEisX,GAAE9wY,EAAEs6c,sCAAJxpE,CAA2CnwY,KAAKX,GAAGrM,EAAEkqD,EAAEh5B,EAAE,GAAmD,OAAhDisX,GAAE9wY,EAAEq6c,+BAAJvpE,CAAoCnwY,KAAKX,EAAErM,EAAEkxB,GAAUyvI,EAAE3gK,MACha6pD,GAAEjtD,UAAUgmb,YAAY5hE,IAAE,WAAW,IAAI9vV,EAAEisX,GAAE9wY,EAAEw6c,uCAAJ1pE,CAA4CnwY,KAAKX,GAAGrM,EAAEkqD,EAAEh5B,EAAE,GAAGisX,GAAE9wY,EAAEu6c,gCAAJzpE,CAAqCnwY,KAAKX,EAAErM,EAAEkxB,GAAG,IAAIjxB,EAAE0gK,EAAE3gK,GAAU,OAAPihX,GAAEjhX,EAAEkxB,GAAUjxB,KAAI4pD,GAAEjtD,UAAU+lb,cAAc,WAAW,OAAOxlC,GAAE9wY,EAAE06c,0CAAJ5pE,CAA+CnwY,KAAKX,IAAI0xc,EAAYz7B,qBAAqBz4X,GACzJ4tC,GAAE76F,UAAUmtT,KAAK,WAAW19S,EAAEy3c,iCAAiC92c,KAAKX,GAAG8gG,GAAEngG,KAAKX,IAAIorF,GAAE76F,UAAUmib,OAAO/9D,IAAE,SAAS9vV,GAAGA,EAAEy4B,GAAEz4B,GAAG,IAAIlxB,EAAEkhX,GAAE70W,EAAE+6c,yCAAJlmG,CAA8Cl0W,KAAKX,GAAGpM,EAAEiqD,EAAEh5B,GAAGxzB,EAAEwsD,EAAElqD,EAAE,GAAG,IAAIkhX,GAAE70W,EAAE86c,kCAAJjmG,CAAuCl0W,KAAKX,EAAEpM,EAAEixB,EAAEx0B,OAAOgB,EAAEsC,GAAG,QAAQ,IAAIihX,GAAEhhX,EAAEixB,EAAEx0B,QAAQsD,EAAE,EAAEA,EAAEkxB,EAAEx0B,OAAOsD,IAAIkxB,EAAElxB,GAAG,EAAE,OAAO2gK,EAAEjjK,MACve+5F,GAAE76F,UAAUkib,SAAS99D,IAAE,SAAS9vV,EAAElxB,GAAU,IAAIC,EAAEiqD,EAAbh5B,EAAEy4B,GAAEz4B,IAAyBxzB,EAAEwsD,EAAblqD,EAAE2pD,GAAE3pD,IAAc,IAAIkhX,GAAE70W,EAAEo+c,oCAAJvpG,CAAyCl0W,KAAKX,EAAEpM,EAAEixB,EAAEx0B,OAAOgB,EAAEsC,EAAEtD,QAAQ,QAAQ,IAAIukX,GAAEhhX,EAAEixB,EAAEx0B,QAAQuD,EAAE,EAAEA,EAAEixB,EAAEx0B,OAAOuD,IAAIixB,EAAEjxB,GAAG,MAAKw3F,GAAE76F,UAAUmE,OAAOigX,IAAE,SAAS9vV,GAAU,IAAIlxB,EAAEkqD,EAAbh5B,EAAEy4B,GAAEz4B,IAAc,IAAIgwV,GAAE70W,EAAE+5c,gCAAJllG,CAAqCl0W,KAAKX,EAAErM,EAAEkxB,EAAEx0B,QAAQ,QAAQ,IAAIukX,GAAEjhX,EAAEkxB,EAAEx0B,QAAQsD,EAAE,EAAEA,EAAEkxB,EAAEx0B,OAAOsD,IAAIkxB,EAAElxB,GAAG,MAC5Wy3F,GAAE76F,UAAUymb,eAAeriE,IAAE,SAAS9vV,GAAU,IAAIlxB,EAAEkqD,EAAbh5B,EAAEy4B,GAAEz4B,IAAc,IAAIgwV,GAAE70W,EAAEu5c,kCAAJ1kG,CAAuCl0W,KAAKX,EAAErM,EAAEkxB,EAAEx0B,QAAQ,QAAQ,IAAIukX,GAAEjhX,EAAEkxB,EAAEx0B,QAAQsD,EAAE,EAAEA,EAAEkxB,EAAEx0B,OAAOsD,IAAIkxB,EAAElxB,GAAG,MAAKy3F,GAAE76F,UAAUioT,QAAQm8D,IAAE,SAAS9vV,GAAG,IAAI,IAAIlxB,EAAEmhX,GAAEjwV,EAAEx0B,QAAQ6pZ,GAAGr1X,EAAElxB,GAAG,IAAIC,EAAEihX,GAAE70W,EAAEo5c,wCAAJvkG,CAA6Cl0W,KAAKX,EAAErM,EAAEkxB,EAAEx0B,QAAQ6pZ,GAAGr1X,EAAElxB,GAAG,IAAItC,EAAEyjX,GAAElhX,EAAE,GAAOsD,EAAE2mD,EAAE,GAAOzsD,EAAEyjX,GAAE70W,EAAEm5c,mBAAJtkG,CAAwBl0W,KAAKX,EAAErM,EAAEkxB,EAAEx0B,OAAOgB,EAAEuC,EAAEsD,GAAU,OAAP2zF,EAAEx5F,EAAED,GAAS,CAAC+lb,UAAU7iR,EAAEjjK,GAAGilb,cAAcl+B,EAAGlhZ,EAAE,QAAQ,aAAQ,IAASvD,GAAGmtG,GAAEntG,QAAG,IAAStC,IAAIujX,GAAEvjX,EAAED,GAAG0vG,GAAEzvG,QACpf+5F,GAAE76F,UAAUivH,WAAWm1P,IAAE,WAAW,IAAI9vV,EAAEgwV,GAAE70W,EAAE25c,qCAAJ9kG,CAA0Cl0W,KAAKX,GAAGrM,EAAEkqD,EAAEh5B,EAAE,GAAkD,OAA/CgwV,GAAE70W,EAAE05c,8BAAJ7kG,CAAmCl0W,KAAKX,EAAErM,EAAEkxB,GAAUyvI,EAAE3gK,MAAKy3F,GAAE76F,UAAU0uP,kBAAkB01H,IAAE,WAAW,OAAOE,GAAE70W,EAAEy5c,6CAAJ5kG,CAAkDl0W,KAAKX,MAAKorF,GAAE76F,UAAUunb,eAAenjE,IAAE,SAAS9vV,GAAG,IAAIlxB,EAAEkhX,GAAE70W,EAAEi5c,yCAAJpkG,CAA8Cl0W,KAAKX,GAAGpM,EAAEiqD,EAAElqD,EAAE,GAAsE,OAAnEm9Y,GAAE9wY,EAAEg5c,kCAAJloE,CAAuCnwY,KAAKX,EAAEpM,EAAED,EAAEkxB,GAAGA,EAAEyvI,EAAE1gK,GAAGghX,GAAEhhX,EAAED,GAAUkxB,KAAI6sb,EAAYj7B,oBAAoBrrV,GAClP2vT,GAAGxqZ,UAAUmtT,KAAK,WAAW19S,EAAE43c,yBAAyBj3c,KAAKX,GAAG8gG,GAAEngG,KAAKX,IAAI+6Y,GAAGxqZ,UAAUqtT,kBAAkB+2D,IAAE,SAAS9vV,GAAU,IAAIlxB,EAAEkqD,EAAbh5B,EAAEy4B,GAAEz4B,IAAco5B,GAAEj+C,EAAE+7c,qCAAJ99Z,CAA0Ct9C,KAAKX,EAAErM,EAAEkxB,EAAEx0B,WACzb0qZ,GAAGxqZ,UAAUwvP,QAAQ40H,IAAE,SAAS9vV,GAAG,IAAI,IAAIlxB,EAAEolZ,EAAGl0X,GAAOjxB,EAAEkhX,GAAEnhX,EAAE,GAAGilZ,EAAG/zX,EAAEikE,EAAEl1F,EAAED,EAAE,GAAG,IAAItC,EAAE4sD,GAAEj+C,EAAE47c,8BAAJ39Z,GAAyC/mD,EAAEi6Y,GAAE9/Y,GAAOD,EAAE6sD,GAAEj+C,EAAEs7c,0BAAJr9Z,CAA+Bt9C,KAAKX,EAAErM,GAAOqH,EAAE85W,GAAE1jX,EAAE,GAAO+gR,EAAEl0N,GAAEj+C,EAAEs8c,mBAAJr+Z,CAAwBt9C,KAAKX,GAAG4wY,EAAE/yV,EAAEs0N,EAAE,GAAGtnL,EAAE+lT,EAAEz+H,GAAG,IAAI//O,EAAE6rB,GAAEj+C,EAAEq8c,mBAAJp+Z,GAA0Bu+U,EAAE3+U,EAAEzrB,EAAE,GAAkE,OAA/Dy4D,EAAE2xS,EAAEpqW,GAAG6rB,GAAEj+C,EAAE27c,gBAAJ19Z,CAAqBt9C,KAAKX,EAAEpM,EAAED,EAAEqH,EAAE5J,EAAEw/Y,EAAEz+H,EAAEqqH,EAAEpqW,EAAEl7B,EAAE7F,GAAGw5F,EAAE7vF,EAAE5J,GAAS,CAACyzP,WAAWvwF,EAAEt5J,GAAGy9S,IAAInkJ,EAAEs8O,GAAGzzL,UAAU7oD,EAAEkoO,IAAI,aAAQ,IAAStlY,GAAG09W,GAAE19W,EAAE7F,QAAG,IAASuC,IAAIghX,GAAEhhX,EAAED,EAAE,GAAGmtG,GAAEltG,SAAI,IAASoH,GAAG8lG,GAAE9lG,OAC1N0iD,GAAEntD,UAAUmtT,KAAK,WAAW19S,EAAE23c,yBAAyBh3c,KAAKX,GAAG8gG,GAAEngG,KAAKX,IAC/T09C,GAAEntD,UAAU6tT,sBAAsBu2D,IAAE,SAAS9vV,GAAG,IAAIlxB,EAAEkqD,EAAEh5B,EAAEx0B,QAAQ2P,EAAE4zc,OAAO16b,IAAI2L,EAAElxB,GAAG,IAAIC,EAAEw8B,GAAEpwB,EAAEq8c,mBAAJjsb,GAA0B/+B,EAAEwsD,EAAEjqD,EAAE,GAAG,IAAIw8B,GAAEpwB,EAAEo8c,yBAAJhsb,CAA8BzvB,KAAKX,EAAE3O,EAAEuC,EAAED,EAAEkxB,EAAEx0B,QAAQ,QAAQukX,GAAEjhX,EAAEkxB,EAAEx0B,QAAQ,OAAOikK,EAAEjjK,MAAKqsD,GAAEntD,UAAUiuT,aAAam2D,IAAE,WAAW,IAAI9vV,EAAEuL,GAAEpwB,EAAEiyc,2BAAJ7hb,GAAkCz8B,EAAEw9Y,GAAEtsX,GAAGjxB,EAAEw8B,GAAEpwB,EAAEq8c,mBAAJjsb,GAA0B/+B,EAAEwsD,EAAEjqD,EAAE,GAAG,IAAIw8B,GAAEpwB,EAAEo8c,yBAAJhsb,CAA8BzvB,KAAKX,EAAE3O,EAAEuC,EAAED,EAAEkxB,GAAG,QAAQ+vV,GAAEjhX,EAAEkxB,GAAG,OAAOyvI,EAAEjjK,MAC9ZqsD,GAAEntD,UAAUouT,gBAAgBg2D,IAAE,WAAW,IAAI9vV,EAAEo5B,GAAEj+C,EAAEiyc,2BAAJh0Z,GAAkCtqD,EAAEkqD,EAAEh5B,GAAGuL,GAAEpwB,EAAEm8c,wBAAJ/rb,CAA6BzvB,KAAKX,EAAErM,EAAEkxB,GAAG,IAAIjxB,EAAE,IAAIohI,WAAW,IAAIA,WAAWh1H,EAAE4zc,OAAOt8U,OAAO3jI,EAAEkxB,IAAW,OAAP+vV,GAAEjhX,EAAEkxB,GAAUjxB,KAAI8pD,GAAEntD,UAAUmib,OAAO/9D,IAAE,SAAS9vV,GAAGA,EAAEy4B,GAAEz4B,GAAG,IAAIlxB,EAAEy8B,GAAEpwB,EAAEm7c,iCAAJ/qb,CAAsCzvB,KAAKX,GAAGpM,EAAEiqD,EAAEh5B,GAAGxzB,EAAEwsD,EAAElqD,EAAE,GAAG,IAAIy8B,GAAEpwB,EAAEk7c,0BAAJ9qb,CAA+BzvB,KAAKX,EAAEpM,EAAEixB,EAAEx0B,OAAOgB,EAAEsC,GAAG,QAAQ,IAAIihX,GAAEhhX,EAAEixB,EAAEx0B,QAAQsD,EAAE,EAAEA,EAAEkxB,EAAEx0B,OAAOsD,IAAIkxB,EAAElxB,GAAG,EAAE,OAAO2gK,EAAEjjK,MAChbqsD,GAAEntD,UAAUkib,SAAS99D,IAAE,SAAS9vV,EAAElxB,GAAU,IAAIC,EAAEiqD,EAAbh5B,EAAEy4B,GAAEz4B,IAAcxzB,EAAEisD,GAAE3pD,GAAGuD,EAAE2mD,EAAExsD,GAAGD,EAAEg/B,GAAEpwB,EAAEq8c,mBAAJjsb,GAA0Bz8B,EAAEkqD,EAAEzsD,EAAE,GAAG,IAAIg/B,GAAEpwB,EAAEs+c,4BAAJlub,CAAiCzvB,KAAKX,EAAEpM,EAAEixB,EAAEx0B,OAAO6G,EAAE7F,EAAEhB,OAAOsD,EAAEvC,GAAG,QAAQ,IAAIwjX,GAAEhhX,EAAEixB,EAAEx0B,QAAQuD,EAAE,EAAEA,EAAEixB,EAAEx0B,OAAOuD,IAAIixB,EAAEjxB,GAAG,EAAE,OAAO0gK,EAAE3gK,MAC9O+pD,GAAEntD,UAAUioT,QAAQm8D,IAAE,SAAS9vV,EAAElxB,EAAEC,GAAG,IAAI,IAAIvC,EAAE0nZ,EAAGnlZ,GAAOsD,EAAE49W,GAAEzjX,EAAE,GAAGunZ,EAAGhlZ,EAAEk1F,EAAE5xF,EAAE7F,EAAE,GAAG,IAAID,EAAEksD,GAAEz4B,GAAG7pB,EAAE6iD,EAAEzsD,GAAG+gR,EAAE70N,GAAE3pD,GAAGi9Y,EAAE/yV,EAAEs0N,GAAO//O,EAAEhC,GAAEpwB,EAAEu8c,6BAAJnsb,CAAkCzvB,KAAKX,EAAE3O,GAAOmrY,EAAE1nB,GAAE1iV,EAAE,GAAO6nX,EAAG7pX,GAAEpwB,EAAEu7c,gBAAJnrb,CAAqBzvB,KAAKX,EAAEhF,EAAE5J,EAAEf,OAAOugZ,EAAEz+H,EAAE9hR,OAAO6G,EAAE7F,EAAEmrY,EAAEpqW,GAAW,OAARy4D,EAAE2xS,EAAEyd,GAAW3lP,EAAEkoO,GAAG,aAAQ,IAASA,IAAI5nB,GAAE4nB,EAAEyd,EAAG,GAAGn5S,GAAE07R,SAAI,IAAStlY,GAAG4pG,GAAE5pG,OACjK0S,GAAGrZ,UAAUmtT,KAAK,WAAW19S,EAAE63c,sBAAsBl3c,KAAKX,GAAG8gG,GAAEngG,KAAKX,IAAI4J,GAAGrZ,UAAU0ud,eAAetqG,IAAE,SAAS9vV,GAAG,IAAIlxB,EAAEkqD,EAAEh5B,EAAEx0B,QAAQ2P,EAAE4zc,OAAO16b,IAAI2L,EAAElxB,GAAG,IAAIC,EAAEonZ,GAAGh7Y,EAAE68c,kCAAL7hE,GAA0C3pZ,EAAEwsD,EAAEjqD,EAAE,GAAG,IAAIonZ,GAAGh7Y,EAAE28c,8BAAL3hE,CAAoCr6Y,KAAKX,EAAE3O,EAAEuC,EAAED,EAAEkxB,EAAEx0B,QAAQ,QAAQukX,GAAEjhX,EAAEkxB,EAAEx0B,QAAQ,OAAOikK,EAAEjjK,MACrcuY,GAAGrZ,UAAU2ud,cAAcvqG,IAAE,WAAW,IAAI9vV,EAAEm2X,GAAGh7Y,EAAE88c,4BAAL9hE,GAAoCrnZ,EAAEw9Y,GAAEtsX,GAAGjxB,EAAE,IAAIohI,WAAW,IAAIA,WAAWh1H,EAAE4zc,OAAOt8U,OAAO3jI,EAAEkxB,IAAW,OAAP+vV,GAAEjhX,EAAEkxB,GAAUjxB,KAAIgW,GAAGrZ,UAAUq0O,KAAK+vI,IAAE,SAAS9vV,GAAG,IAAI,IAAIlxB,EAAEolZ,EAAGl0X,GAAOjxB,EAAEkhX,GAAEnhX,EAAE,GAAGilZ,EAAG/zX,EAAEikE,EAAEl1F,EAAED,EAAE,GAAG,IAAItC,EAAE2pZ,GAAGh7Y,EAAEy8c,yBAALzhE,GAAiC9jZ,EAAE2mD,EAAExsD,EAAE,GAAsC,OAAnC2pZ,GAAGh7Y,EAAEw8c,aAALxhE,CAAmBr6Y,KAAKX,EAAEpM,EAAED,EAAEuD,EAAE7F,GAAUijK,EAAEp9J,GAAG,aAAQ,IAAStD,IAAIghX,GAAEhhX,EAAED,EAAE,GAAGmtG,GAAEltG,QAChEmqD,GAAExtD,UAAUmtT,KAAK,WAAW19S,EAAE83c,eAAen3c,KAAKX,GAAG8gG,GAAEngG,KAAKX,IAAI+9C,GAAExtD,UAAUqhb,WAAWj9D,IAAE,WAAW,IAAI9vV,EAAEghX,GAAE7lY,EAAEw9c,uBAAJ33E,CAA4BllY,KAAKX,GAAGrM,EAAEkqD,EAAEh5B,EAAE,GAAwC,OAArCghX,GAAE7lY,EAAEq9c,oBAAJx3E,CAAyBllY,KAAKX,EAAErM,EAAEkxB,GAAUyvI,EAAE3gK,MAChfoqD,GAAExtD,UAAUshb,cAAcl9D,IAAE,SAAS9vV,GAAU,IAAIlxB,EAAEkqD,EAAbh5B,EAAEy4B,GAAEz4B,IAAcghX,GAAE7lY,EAAEy9c,uBAAJ53E,CAA4BllY,KAAKX,EAAErM,EAAEkxB,EAAEx0B,WAAU0tD,GAAExtD,UAAUuhb,eAAen9D,IAAE,SAAS9vV,EAAElxB,GAAU,IAAIC,EAAEiqD,EAAbh5B,EAAEy4B,GAAEz4B,IAAcxzB,EAAEwsD,EAAElqD,GAAuD,OAApDkyY,GAAE7lY,EAAEo9c,wBAAJv3E,CAA6BllY,KAAKX,EAAEpM,EAAEixB,EAAEx0B,OAAOgB,EAAEsC,GAAU,IAAIqhI,WAAW,IAAIA,WAAWh1H,EAAE4zc,OAAOt8U,OAAOjmI,EAAEsC,OAAMoqD,GAAExtD,UAAU4ud,cAAcxqG,IAAE,SAAS9vV,EAAElxB,GAAU,IAAIC,EAAEiqD,EAAbh5B,EAAEy4B,GAAEz4B,IAAyBxzB,EAAEwsD,EAAblqD,EAAE2pD,GAAE3pD,IAAcuD,EAAE2uY,GAAE7lY,EAAEu9c,oBAAJ13E,CAAyBllY,KAAKX,GAAG5O,EAAEysD,EAAE3mD,EAAE,GAAiE,OAA9D2uY,GAAE7lY,EAAEk9c,uBAAJr3E,CAA4BllY,KAAKX,EAAEpM,EAAEixB,EAAEx0B,OAAOgB,EAAEsC,EAAEtD,OAAOe,EAAE8F,GAAUo9J,EAAEljK,MACje2sD,GAAExtD,UAAU6ud,uBAAuBzqG,IAAE,SAAS9vV,EAAElxB,GAAU,IAAIC,EAAEiqD,EAAbh5B,EAAEy4B,GAAEz4B,IAAyBxzB,EAAEwsD,EAAblqD,EAAE2pD,GAAE3pD,IAAcuD,EAAE2uY,GAAE7lY,EAAEu9c,oBAAJ13E,CAAyBllY,KAAKX,GAAG5O,EAAEysD,EAAE3mD,EAAE,GAA0E,OAAvE2uY,GAAE7lY,EAAEm9c,gCAAJt3E,CAAqCllY,KAAKX,EAAEpM,EAAEixB,EAAEx0B,OAAOgB,EAAEsC,EAAEtD,OAAOe,EAAE8F,GAAUo9J,EAAEljK,MAAK,IAA0B86D,GAAtB4oT,GAAE90W,EAAE02c,QAAQ51W,GAAE9gG,EAAEy2c,MAAQ,SAAStlE,GAAEtsX,GAAG,IAAIlxB,EAAEkqD,EAAEh5B,GAA+C,OAA5CA,EAAE,IAAImwG,WAAWh1H,EAAE4zc,OAAOt8U,OAAO3jI,EAAEkxB,GAAGurX,EAAGvrX,GAAUlxB,EAAE,SAASghX,GAAE9vV,GAAG,OAAO,WAAW,IAAIlxB,EAAEknZ,KAAK,IAAI,OAAOh2X,EAAEhoB,MAAM8D,KAAK2C,WAAW,QAAQs3Y,GAAGjnZ,KAAK,SAASihX,GAAE/vV,EAAElxB,GAAG,KAAK,EAAEA,KAAKqM,EAAEszc,MAAMzub,KAAK,EACzc,SAASm5B,KAAI,IAAIn5B,EAAE7kB,EAAEu3c,oBAAoB52c,KAAKkkB,EAAEiwV,GAAEjwV,GAAGlkB,KAAKX,EAAEA,EAAE22c,aAAah2c,KAAKkkB,GAAG,SAAS2sX,GAAE3sX,GAAG,OAAO,WAAW,IAAIlxB,EAAEkxB,EAAEhoB,MAAM8D,KAAK2C,WAAW,GAAG3P,IAAIu4D,GAAE,MAAMv4D,EAAE2gK,EAAEt0J,EAAEg3c,wBAAwB1zc,UAAU,KAAK9Q,MAAM,OAAOmB,GAAG,OAAOA,GAIvC,SAAS6/Y,KAAI,IAAI3uX,EAAE7kB,EAAEg+c,oBAAoBr9c,KAAKkkB,EAAEiwV,GAAEjwV,GAAGlkB,KAAKX,EAAEA,EAAE29c,aAAah9c,KAAKkkB,GAAG,SAAS4uX,GAAE5uX,GAAG,OAAO,WAAW,IAAIlxB,EAAEkxB,EAAEhoB,MAAM8D,KAAK2C,WAAW,GAAG3P,IAAIu4D,GAAE,MAAMv4D,EAAE2gK,EAAEt0J,EAAE+9c,wBAAwBz6c,UAAU,KAAK9Q,MAAM,OAAOmB,GAAG,OAAOA,GAM9I,SAASsnZ,KAAK,IAAIp2X,EAAE7kB,EAAE0+c,oBAAoB/9c,KAAKkkB,EAAEiwV,GAAEjwV,GAAGlkB,KAAKX,EAAEA,EAAEw+c,aAAa79c,KAAKkkB,GACpW,SAASq2X,GAAGr2X,GAAG,OAAO,WAAW,IAAIlxB,EAAEkxB,EAAEhoB,MAAM8D,KAAK2C,WAAW,GAAG3P,IAAIu4D,GAAE,MAAMv4D,EAAE2gK,EAAEt0J,EAAEy+c,wBAAwBn7c,UAAU,KAAK9Q,MAAM,OAAOmB,GAAG,OAAOA,GAKhJ,OAhBqOqqD,GAAEztD,UAAUmtT,KAAK,WAAW19S,EAAEw3c,mBAAmB72c,KAAKX,GAAG8gG,GAAEngG,KAAKX,IAAIg+C,GAAEztD,UAAUmE,OAAOigX,IAAE,WAAW,IAAI9vV,EAAE2sX,GAAExxY,EAAEk4c,kCAAJ1mE,CAAuC7wY,KAAKX,GAAGrM,EAAEw9Y,GAAEtsX,GAAG2sX,GAAExxY,EAAEi4c,oBAAJzmE,CAAyB7wY,KAAKX,EAAErM,EAAEkxB,MACzam5B,GAAEztD,UAAU6ib,cAAcz+D,IAAE,WAAW,IAAI9vV,EAAE2sX,GAAExxY,EAAE+2c,kCAAJvlE,CAAuC7wY,KAAKX,GAAGrM,EAAEkqD,EAAEh5B,EAAE,GAA+C,OAA5C2sX,GAAExxY,EAAE82c,2BAAJtlE,CAAgC7wY,KAAKX,EAAErM,EAAEkxB,GAAUyvI,EAAE3gK,MAAKqqD,GAAEztD,UAAUq0O,KAAK+vI,IAAE,SAAS9vV,GAAG,IAAIlxB,EAAE69Y,GAAExxY,EAAEs3c,8BAAJ9lE,CAAmC7wY,KAAKX,GAAcpM,EAAEiqD,EAAbh5B,EAAEy4B,GAAEz4B,IAAcxzB,EAAEwsD,EAAElqD,EAAE,GAAG,IAAI69Y,GAAExxY,EAAEq3c,kBAAJ7lE,CAAuB7wY,KAAKX,EAAEpM,EAAEixB,EAAEx0B,OAAOgB,EAAEsC,GAAG,QAAQ,IAAIihX,GAAEhhX,EAAEixB,EAAEx0B,QAAQsD,EAAE,EAAEA,EAAEkxB,EAAEx0B,OAAOsD,IAAIkxB,EAAElxB,GAAG,EAAE,OAAO2gK,EAAEjjK,MACzX2sD,GAAEztD,UAAU4xK,cAAcwyM,IAAE,WAAW,IAAI9vV,EAAE2sX,GAAExxY,EAAEo3c,kCAAJ5lE,CAAuC7wY,KAAKX,GAAGrM,EAAEkqD,EAAEh5B,EAAE,GAA+C,OAA5C2sX,GAAExxY,EAAEm3c,2BAAJ3lE,CAAgC7wY,KAAKX,EAAErM,EAAEkxB,GAAUyvI,EAAE3gK,MAAKqqD,GAAEztD,UAAUyjb,uBAAuBr/D,IAAE,WAAW68B,GAAExxY,EAAEi3c,oCAAJzlE,CAAyC7wY,KAAKX,MAAKg+C,GAAEztD,UAAU8ib,4BAA4B1+D,IAAE,WAAW,OAAO68B,GAAExxY,EAAEk3c,yCAAJ1lE,CAA8C7wY,KAAKX,MACjXg+C,GAAEztD,UAAU2jb,uBAAuBv/D,IAAE,SAAS9vV,GAAG,IAAIlxB,EAAE69Y,GAAExxY,EAAE62c,kDAAJrlE,CAAuD7wY,KAAKX,EAAE6kB,GAAGjxB,EAAEu9Y,GAAEx9Y,GAAG69Y,GAAExxY,EAAE42c,oCAAJplE,CAAyC7wY,KAAKX,EAAE6kB,EAAEjxB,EAAED,MAAKqqD,GAAEztD,UAAUokb,qBAAqBhgE,IAAE,SAAS9vV,GAAG2sX,GAAExxY,EAAEg9c,0BAAJxrE,CAA+B7wY,KAAKX,EAAE6kB,EAAE7kB,MAAKg+C,GAAEztD,UAAUmib,OAAO/9D,IAAE,SAAS9vV,GAAGA,EAAEy4B,GAAEz4B,GAAG,IAAIlxB,EAAE69Y,GAAExxY,EAAE66c,2BAAJrpE,CAAgC7wY,KAAKX,GAAGpM,EAAEiqD,EAAEh5B,GAAGxzB,EAAEwsD,EAAElqD,EAAE,GAAG,IAAI69Y,GAAExxY,EAAE46c,oBAAJppE,CAAyB7wY,KAAKX,EAAEpM,EAAEixB,EAAEx0B,OAAOgB,EAAEsC,GAAG,QAAQ,IAAIihX,GAAEhhX,EAAEixB,EAAEx0B,QAAQsD,EAAE,EAAEA,EAAEkxB,EAAEx0B,OAAOsD,IAAIkxB,EAAElxB,GAAG,EAAE,OAAO2gK,EAAEjjK,MAC3e2sD,GAAEztD,UAAUkib,SAAS99D,IAAE,SAAS9vV,EAAElxB,GAAU,IAAIC,EAAEiqD,EAAbh5B,EAAEy4B,GAAEz4B,IAAyBxzB,EAAEwsD,EAAblqD,EAAE2pD,GAAE3pD,IAAc,IAAI69Y,GAAExxY,EAAEm+c,sBAAJ3sE,CAA2B7wY,KAAKX,EAAEpM,EAAEixB,EAAEx0B,OAAOgB,EAAEsC,EAAEtD,QAAQ,QAAQ,IAAIukX,GAAEhhX,EAAEixB,EAAEx0B,QAAQuD,EAAE,EAAEA,EAAEixB,EAAEx0B,OAAOuD,IAAIixB,EAAEjxB,GAAG,MAA4O4/Y,GAAEjjZ,UAAUmtT,KAAK,WAAW19S,EAAE+3c,mBAAmBp3c,KAAKX,GAAG8gG,GAAEngG,KAAKX,IACpewzY,GAAEjjZ,UAAUmib,OAAO/9D,IAAE,SAAS9vV,GAAGA,EAAEy4B,GAAEz4B,GAAG,IAAIlxB,EAAE8/Y,GAAEzzY,EAAEq7c,2BAAJ5nE,CAAgC9yY,KAAKX,GAAGpM,EAAEiqD,EAAEh5B,GAAGxzB,EAAEwsD,EAAElqD,EAAE,GAAG,IAAI8/Y,GAAEzzY,EAAEo7c,oBAAJ3nE,CAAyB9yY,KAAKX,EAAEpM,EAAEixB,EAAEx0B,OAAOgB,EAAEsC,GAAG,QAAQ,IAAIihX,GAAEhhX,EAAEixB,EAAEx0B,QAAQsD,EAAE,EAAEA,EAAEkxB,EAAEx0B,OAAOsD,IAAIkxB,EAAElxB,GAAG,EAAE,OAAO2gK,EAAEjjK,MAAKmiZ,GAAEjjZ,UAAUkib,SAAS99D,IAAE,SAAS9vV,EAAElxB,GAAU,IAAIC,EAAEiqD,EAAbh5B,EAAEy4B,GAAEz4B,IAAyBxzB,EAAEwsD,EAAblqD,EAAE2pD,GAAE3pD,IAAc,IAAI8/Y,GAAEzzY,EAAEu+c,sBAAJ9qE,CAA2B9yY,KAAKX,EAAEpM,EAAEixB,EAAEx0B,OAAOgB,EAAEsC,EAAEtD,QAAQ,QAAQ,IAAIukX,GAAEhhX,EAAEixB,EAAEx0B,QAAQuD,EAAE,EAAEA,EAAEixB,EAAEx0B,OAAOuD,IAAIixB,EAAEjxB,GAAG,MACpZ4/Y,GAAEjjZ,UAAU+jb,gBAAgB3/D,IAAE,SAAS9vV,EAAElxB,EAAEC,GAAG,IAAIvC,EAAEoiZ,GAAEzzY,EAAEs4c,2CAAJ7kE,CAAgD9yY,KAAKX,GAAG9I,EAAEi6Y,GAAE9/Y,GAAGsC,EAAE2pD,GAAE3pD,GAAGC,EAAE0pD,GAAE1pD,GAAG,IAAIxC,EAAEysD,EAAElqD,GAAGqH,EAAE6iD,EAAEjqD,GAAG,IAAI6/Y,GAAEzzY,EAAEq4c,6BAAJ5kE,CAAkC9yY,KAAKX,EAAE6kB,EAAE7kB,EAAE5O,EAAEuC,EAAEtD,OAAO2K,EAAEpH,EAAEvD,OAAO6G,EAAE7F,GAAG,QAAQujX,GAAE19W,EAAE7F,OAAMmiZ,GAAEjjZ,UAAU8ud,eAAe1qG,IAAE,SAAS9vV,EAAElxB,GAAU,IAAIC,EAAEiqD,EAAblqD,EAAE2pD,GAAE3pD,IAAc,IAAI8/Y,GAAEzzY,EAAEm4c,4BAAJ1kE,CAAiC9yY,KAAKX,EAAE6kB,EAAE7kB,EAAEpM,EAAED,EAAEtD,QAAQ,QAAQ,IAAIukX,GAAEhhX,EAAED,EAAEtD,QAAQw0B,EAAE,EAAEA,EAAElxB,EAAEtD,OAAOw0B,IAAIlxB,EAAEkxB,GAAG,MAC5Z2uX,GAAEjjZ,UAAUmkb,oBAAoB//D,IAAE,SAAS9vV,EAAElxB,EAAEC,GAAU,IAAIvC,EAAEwsD,EAAblqD,EAAE2pD,GAAE3pD,IAAyBuD,EAAE2mD,EAAbjqD,EAAE0pD,GAAE1pD,IAAc,IAAI6/Y,GAAEzzY,EAAEo4c,iCAAJ3kE,CAAsC9yY,KAAKX,EAAE6kB,EAAE7kB,EAAE3O,EAAEsC,EAAEtD,OAAO6G,EAAEtD,EAAEvD,QAAQ,QAAQ,IAAIukX,GAAE19W,EAAEtD,EAAEvD,QAAQw0B,EAAE,EAAEA,EAAEjxB,EAAEvD,OAAOw0B,IAAIjxB,EAAEixB,GAAG,MAAK2uX,GAAEjjZ,UAAUivH,WAAWm1P,IAAE,WAAW,IAAI9vV,EAAE4uX,GAAEzzY,EAAE89c,uBAAJrqE,CAA4B9yY,KAAKX,GAAGrM,EAAEkqD,EAAEh5B,EAAE,GAAoC,OAAjC4uX,GAAEzzY,EAAE69c,gBAAJpqE,CAAqB9yY,KAAKX,EAAErM,EAAEkxB,GAAUyvI,EAAE3gK,MAAK6/Y,GAAEjjZ,UAAUilb,qBAAqB,WAAW,QAAO/hC,GAAEzzY,EAAE49c,kCAAJnqE,CAAuC9yY,KAAKX,IAC9bwzY,GAAEjjZ,UAAUqlb,gBAAgBjhE,IAAE,SAAS9vV,GAAU,IAAIlxB,EAAEkqD,EAAbh5B,EAAEy4B,GAAEz4B,IAAc,QAAO4uX,GAAEzzY,EAAEk6c,6BAAJzmE,CAAkC9yY,KAAKX,EAAErM,EAAEkxB,EAAEx0B,WAAgBmjZ,GAAEjjZ,UAAU+ud,qBAAqB3qG,IAAE,SAAS9vV,EAAElxB,GAAU,IAAIC,EAAEiqD,EAAbh5B,EAAEy4B,GAAEz4B,IAAyBxzB,EAAEwsD,EAAblqD,EAAE2pD,GAAE3pD,IAAc,QAAO8/Y,GAAEzzY,EAAEm6c,kCAAJ1mE,CAAuC9yY,KAAKX,EAAEpM,EAAEixB,EAAEx0B,OAAOgB,EAAEsC,EAAEtD,WACzRmjZ,GAAEjjZ,UAAUwvP,QAAQ40H,IAAE,SAAS9vV,GAAG,IAAI,IAAIlxB,EAAE8/Y,GAAEzzY,EAAE+4c,2BAAJtlE,CAAgC9yY,KAAKX,GAAOpM,EAAE6/Y,GAAEzzY,EAAE84c,0BAAJrlE,CAA+B9yY,KAAKX,GAAO3O,EAAE0nZ,EAAGl0X,GAAO3tB,EAAEu8Y,GAAEzzY,EAAE64c,4BAAJplE,CAAiC9yY,KAAKX,EAAE3O,GAAOD,EAAE+/Y,GAAEx9Y,GAAOqH,EAAE85W,GAAEzjX,EAAE,GAAGunZ,EAAG/zX,EAAEikE,EAAE9tF,EAAE3J,EAAE,GAAG,IAAI8gR,EAAE2iG,GAAE59W,EAAE,GAAgD,OAA7Cu8Y,GAAEzzY,EAAE44c,aAAJnlE,CAAkB9yY,KAAKX,EAAEhF,EAAE3J,EAAED,EAAEuC,EAAEw+Q,EAAEj7Q,GAAG2zF,EAAEsnL,EAAEj7Q,GAAS,CAACnE,KAAKa,EAAE6J,KAAK62J,EAAE69G,IAAI,aAAQ,IAAS/gR,GAAGwjX,GAAExjX,EAAEuC,QAAG,IAASqH,IAAI45W,GAAE55W,EAAE3J,EAAE,GAAGyvG,GAAE9lG,SAAI,IAASm3Q,GAAGrxK,GAAEqxK,OAC5XqhI,GAAEjjZ,UAAUioT,QAAQm8D,IAAE,SAAS9vV,EAAElxB,GAAG,IAAI,IAAIC,EAAEkhX,GAAEnhX,EAAEtD,QAAQ6pZ,GAAGvmZ,EAAEC,GAAG,IAAIvC,EAAEoiZ,GAAEzzY,EAAE04c,kCAAJjlE,CAAuC9yY,KAAKX,EAAE6kB,EAAEjxB,EAAED,EAAEtD,QAAQ6pZ,GAAGvmZ,EAAEC,GAAG,IAAIsD,EAAE49W,GAAEzjX,EAAE,GAA2D,OAAPw5F,EAAE3zF,EAA7Cu8Y,GAAEzzY,EAAEy4c,aAAJhlE,CAAkB9yY,KAAKX,EAAE6kB,EAAEjxB,EAAED,EAAEtD,OAAO6G,EAAE7F,IAAiBijK,EAAEp9J,GAAG,aAAQ,IAAStD,GAAGktG,GAAEltG,QAAG,IAASsD,IAAI09W,GAAE19W,EAAE7F,GAAGyvG,GAAE5pG,QACvH+jZ,GAAG1qZ,UAAUmtT,KAAK,WAAW19S,EAAEg4c,mBAAmBr3c,KAAKX,GAAG8gG,GAAEngG,KAAKX,IAAIi7Y,GAAG1qZ,UAAU6zW,OAAOuQ,IAAE,SAAS9vV,GAAG,IAAIlxB,EAAEunZ,GAAGl7Y,EAAEk+c,mBAALhjE,CAAyBv6Y,KAAKX,GAAcpM,EAAEiqD,EAAbh5B,EAAEy4B,GAAEz4B,IAAcxzB,EAAEwsD,EAAElqD,EAAE,GAAG,IAAIunZ,GAAGl7Y,EAAEi+c,YAAL/iE,CAAkBv6Y,KAAKX,EAAEpM,EAAEixB,EAAEx0B,OAAOgB,EAAEsC,GAAG,QAAQ,IAAIihX,GAAEhhX,EAAEixB,EAAEx0B,QAAQsD,EAAE,EAAEA,EAAEkxB,EAAEx0B,OAAOsD,IAAIkxB,EAAElxB,GAAG,EAAE,OAAO2gK,EAAEjjK,MACxa4pZ,GAAG1qZ,UAAU8nb,eAAe1jE,IAAE,SAAS9vV,EAAElxB,EAAEC,GAAU,IAAIvC,EAAEwsD,EAAbh5B,EAAEy4B,GAAEz4B,IAAyB3tB,EAAE2mD,EAAblqD,EAAE2pD,GAAE3pD,IAAyBvC,EAAEysD,EAAbjqD,EAAE0pD,GAAE1pD,IAAc,IAAIsnZ,GAAGl7Y,EAAE24c,oBAALz9D,CAA0Bv6Y,KAAKX,EAAE3O,EAAEwzB,EAAEx0B,OAAO6G,EAAEvD,EAAEtD,OAAOe,EAAEwC,EAAEvD,QAAQ,QAAQ,IAAIukX,GAAE19W,EAAEvD,EAAEtD,QAAQw0B,EAAE,EAAEA,EAAElxB,EAAEtD,OAAOw0B,IAAIlxB,EAAEkxB,GAAG,MAAK6sb,EAAYv+B,QAAQn1X,GAAE0zZ,EAAY/9B,QAAQngC,GAAEk+D,EAAYhhC,QAAQz1B,GAAGy2D,EAAY/zJ,aAAao9F,GAAG22D,EAAYxzJ,aAAaxgQ,GAAEg0Z,EAAY6N,UAAU31c,GAAG8nc,EAAYz6a,IAAI8mB,GACrY2zZ,EAAYp+B,oBAAoB3+D,IAAE,WAAW,IAAI9vV,EAAEg5B,EAAE,GAAyC,OAAtC79C,EAAEk5c,yBAAyBr0b,EAAEA,EAAE,EAAEA,EAAE,GAAS,CAACuzX,EAAGvzX,EAAE,MAAMuzX,EAAGvzX,EAAE,EAAE,MAAMuzX,EAAGvzX,EAAE,EAAE,UAG3H8sb,IAIc,iBAAZzgd,GAA0C,iBAAXC,EACtCA,EAAOD,QAAUygd,EACQ,mBAAX7xc,QAAyBA,OAAY,IACnDA,OAAO,IAAI,WAAa,OAAO6xc,KACL,iBAAZzgd,IACdA,EAAgB,OAAIygd,GAGxBD,EAAkB,KAAI,SAASvgc,GAC3B,OAAIsgc,IAEAtgc,IAAM2gc,YAAc3gc,GAExBsgc,EAAiB,IAAIhgd,SAAQ,SAASC,EAASC,GAC3C2/c,EAAgB,WACZ5/c,KAEJ6/c,EAAa,SAASt8c,GAClBtD,EAAOsD,IAEX08c,SAKe,oBAAb,SAINv8c,OAAY,IAAIs8c,GAGE,iBAAXvgd,IAIPA,EAAOD,QAAUwgd,I,kGCrHrB,I,IAAA,S,IAEA,S,IAEA,S,IAEA,S,IAEA,S,mDAZA,IAAIloC,EAAapnP,EAAQ,MAAwConP,WACjE,IAAKA,EACD,MAAM,IAAIh3a,MAAM,mEAGpBgtd,YAAkCh2C,EAAW,iCAAmCg2C,WAEhFC,YAAgCj2C,EAAW,+BAAiCi2C,WAE5EC,YAAoCl2C,EAAW,mCAAqCk2C,WAEpFC,YAA8Bn2C,EAAW,6BAA+Bm2C,WAExEC,YAAwCp2C,EAAW,uCAAyCo2C,W,EACpFp2C,c,wICjBR,Q,IACA,QACA,O,uDAEqBq2C,E,yMAIPtqd,GAIN,OADAA,GAFAA,GAAI,cAAa,IAAAsB,IAAGtB,KAEd6H,QAAQ,aAAc,qM,GAPY+kU,WAA3B09I,EACVl2C,SAAW,e,UADDk2C,E,qXCvBrB,IAAI9vI,EAAgB,EAAQ,KACxBC,EAAmB7+U,EAAOD,QAAUZ,OAAOoE,OAAOq7U,GAElDiB,EAAU,CACbpvO,QAAS,QAGVtxG,OAAOoZ,KAAKsnU,GAASj2U,SAAQ,SAASpG,GACrC,IAAIu8U,EAAYF,EAAQr8U,GACxBrE,OAAOyD,eAAei8U,EAAkBr7U,EAAK,CAC5CV,IAAK,WACJ,OAAO0M,KAAKuwU,IAAc,MAE3Bh4T,IAAK,SAASsG,GAEb,OADA7e,KAAKuwU,GAAa1xT,EACXA,S,gBChBV,IAAIyoM,EAAa,EAAQ,KACrBkpH,EAAW,EAAQ,KAGvB,SAAS7oH,EAAY/pM,EAAU1jB,GAC3B8F,KAAKD,KAAK6d,EAAU1jB,GAOxB,SAASild,EAAYC,EAAMC,GACvB,OAAO7uI,EAASl1O,qBAAqB8jX,EAAMC,GAAO,GAEtD,SAASC,EAAcF,EAAMC,GACzB,OAAO7uI,EAASl1O,qBAAqB8jX,EAAMC,GAAO,EAAM,GAAG,GAE/D,SAAS5kW,EAAM2kW,EAAMC,EAAOE,GACxB,OAAO/uI,EAASlsP,QACZksP,EAASl1O,qBAAqB8jX,EAAMC,EAAOE,EAAS,IACtDztX,OAGN,SAAS0tX,EAAiBvqd,EAAKqjB,EAAM8mc,EAAMC,EAAOE,GAC9C,IAAIh9X,EAAMk4B,EAAM2kW,EAAMC,EAAOE,GACzBh9X,IAAKttF,EAAIqjB,GAAQiqE,GAlBzB,EAAQ,IAAR,CAAoBolI,EAAaL,GAEjCK,EAAY/3N,UAAUmQ,KAAOunN,EAmB7B,IAAIm4P,EAAc,SAAS/rd,GACvB,MAAiB,QAAVA,GAA6B,SAAVA,GAA8B,YAAVA,GAGlDi0N,EAAY/3N,UAAUs2U,MAAQ,WAC1B,IAEI3jP,EACAm9X,EAHA33P,EAAO,GACP43P,EAAWL,EAAcG,EAAaz/c,KAAK6nN,KAI3C83P,IACsB,SAAlBA,EAASntd,MACTktd,EAASC,EAAS1zZ,SAElB87J,EAAK31N,KAAO,OACZotd,EAAiBz3P,EAAM,KAAM,KAAM23P,GACnCF,EAAiBz3P,EAAM,QAAS,QAAS23P,IAEpCn9X,EAAM+8X,EAAc,OAAQI,MAC5Bn9X,EAAMA,EAAIyiB,WACVziB,EAAMA,EAAI+N,QAEXy3H,EAAKy6G,KAAOjgP,GAChBi9X,EAAiBz3P,EAAM,cAAe,WAAY23P,IAC7Cn9X,EAAMk4B,EAAM,UAAWilW,MAAU33P,EAAK+zN,QAAU,IAAIl1X,KAAK27B,IAC9Di9X,EAAiBz3P,EAAM,SAAU,QAAS23P,GAAQ,GAElD33P,EAAKp1F,MAAQwsV,EAAY,QAASO,GAAQxmd,KAAI,SAASkQ,GACnD,IACIm5E,EADAtjD,EAAQ,GAiBZ,OAZAugb,EAAiBvgb,EAAO,KAAM,KAF9B71B,EAAOA,EAAK6iD,UAGZuzZ,EAAiBvgb,EAAO,QAAS,QAAS71B,IAErCm5E,EAAM+8X,EAAc,OAAQl2c,MAC5Bm5E,EAAMA,EAAIyiB,WACVziB,EAAMA,EAAI+N,QAEXrxD,EAAMujS,KAAOjgP,IACZA,EAAMk4B,EAAM,UAAWrxG,IAASqxG,EAAM,UAAWrxG,MAClD61B,EAAM09D,YAAcpa,IACnBA,EAAMk4B,EAAM,UAAWrxG,MACxB61B,EAAM2gb,QAAU,IAAIh5Z,KAAK27B,IACtBtjD,OAGXygb,EAASJ,EAAc,UAAWK,EAAS1zZ,UAAUA,SAErD87J,EAAK31N,KAAOutd,EAASntd,KAAK+G,OAAO,EAAG,GACpCwuN,EAAKnnK,GAAK,GACV4+Z,EAAiBz3P,EAAM,QAAS,QAAS23P,GACzCF,EAAiBz3P,EAAM,OAAQ,OAAQ23P,GACvCF,EAAiBz3P,EAAM,cAAe,cAAe23P,IAChDn9X,EAAMk4B,EAAM,gBAAiBilW,MAC9B33P,EAAK+zN,QAAU,IAAIl1X,KAAK27B,IAC5Bi9X,EAAiBz3P,EAAM,SAAU,iBAAkB23P,GAAQ,GAE3D33P,EAAKp1F,MAAQwsV,EAAY,OAAQQ,EAAS1zZ,UAAU/yD,KAAI,SACpDkQ,GAEA,IACIm5E,EADAtjD,EAAQ,GAWZ,OANAugb,EAAiBvgb,EAAO,KAAM,OAF9B71B,EAAOA,EAAK6iD,UAGZuzZ,EAAiBvgb,EAAO,QAAS,QAAS71B,GAC1Co2c,EAAiBvgb,EAAO,OAAQ,OAAQ71B,GACxCo2c,EAAiBvgb,EAAO,cAAe,cAAe71B,IACjDm5E,EAAMk4B,EAAM,UAAWrxG,MACxB61B,EAAM2gb,QAAU,IAAIh5Z,KAAK27B,IACtBtjD,OAInBj/B,KAAK6nN,IAAME,EACXT,EAAW13N,UAAUigV,gBAAgB//U,KACjCkQ,KACA2/c,EAAW,KAAO9td,MAAM,gCAIhCrB,EAAOD,QAAUo3N,G,gBCjHjB,IAAIF,EAAc,EAAQ,KACtBo4P,EAAe,EAAQ,MACvBrqS,EAAQiyC,EAAYjyC,MAExBhlL,EAAOD,QAAU,CAChBuvd,aAKD,SAAsBv9Z,EAAM/xC,GAC3B,OAAO+xC,EAAK0J,SAAW1J,EAAK0J,SAAS/yD,KAAI,SAASqpD,GACjD,OAAOs9Z,EAAat9Z,EAAM/xC,MACxBjU,KAAK,IAAM,IAPdsjd,aAAcA,EACdv7X,QASD,SAASA,EAAQ/hC,GAChB,GAAG5rD,MAAMC,QAAQ2rD,GAAO,OAAOA,EAAKrpD,IAAIorF,GAAS/nF,KAAK,IACtD,GAAGi5K,EAAMjzH,GAAO,MAAqB,OAAdA,EAAK/vD,KAAgB,KAAO8xF,EAAQ/hC,EAAK0J,UAChE,GAAG1J,EAAKnwD,OAASq1N,EAAYnyC,MAAO,OAAOhxF,EAAQ/hC,EAAK0J,UACxD,GAAG1J,EAAKnwD,OAASq1N,EAAY91J,KAAM,OAAOpP,EAAKpzD,KAC/C,MAAO,M,gBClBR,IAAIs4N,EAAc,EAAQ,MACtBs4P,EAAW,EAAQ,MAMnBC,EAAe,EAAQ,MAC3BA,EAAaC,aAAa/gd,UAAY,KACtC8gd,EAAaE,eAAehhd,UAAY,KAExC,IAAIihd,EAAoB,CACtBjhd,UAAW,KACXkmG,OAAO,EACPl0G,QAAQ,EACRkvd,KAAK,EACLplW,QAAQ,EACRqlW,SAAS,EACTC,UAAU,EACV9pC,WAAW,EACX+pC,UAAU,GAwCZ,IAAIC,EAAY,CACdthd,UAAW,KACX2uM,MAAM,EACNhrL,MAAM,EACNggT,UAAU,EACVC,IAAI,EACJC,KAAK,EACL1/K,SAAS,EACT2/K,OAAO,EACPvzG,OAAO,EACPi9C,IAAI,EACJ7mK,KAAK,EACLj3E,OAAO,EACPq0S,SAAS,EACTC,QAAQ,EACRV,MAAM,EACNv/L,MAAM,EACNkgM,OAAO,EACP7mR,QAAQ,EACRyhR,OAAO,EACPqF,KAAK,GAGHxjR,EAAUpvD,EAAOD,QAAU,SAASs3N,EAAKr3M,GACtC7Z,MAAMC,QAAQixN,IAASA,EAAI44P,UAAS54P,EAAM,CAACA,IAChDr3M,EAAOA,GAAQ,GAIf,IAFA,IAAItV,EAAS,GAEJ1L,EAAI,EAAGA,EAAIq4N,EAAIn4N,OAAQF,IAAK,CACnC,IAAI+yD,EAAOslK,EAAIr4N,GAEG,SAAd+yD,EAAKnwD,KAAiB8I,GAAU0kD,EAAO2C,EAAK0J,SAAUz7C,GACjDi3M,EAAYjyC,MAAMjzH,GAAOrnD,GAAUwld,EAAUn+Z,EAAM/xC,GACnD+xC,EAAKnwD,OAASq1N,EAAYxyC,UACjC/5K,GAAUyld,EAAgBp+Z,GACnBA,EAAKnwD,OAASq1N,EAAYvyC,QAASh6K,GAAU0ld,EAAcr+Z,GAC3DA,EAAKnwD,OAASq1N,EAAYnyC,MAAOp6K,GAAU2ld,EAAYt+Z,GAC3DrnD,GAAU4ld,EAAWv+Z,EAAM/xC,GAGlC,OAAOtV,GAGT,MAAM6ld,EAA+B,CACnC,KACA,KACA,KACA,KACA,QACA,iBACA,gBACA,OACA,SAGF,SAASL,EAAUn+Z,EAAM/xC,GAEF,YAAjBA,EAAK+zT,UAEPhiR,EAAK/vD,KAAOwtd,EAAaC,aAAa19Z,EAAK/vD,OAAS+vD,EAAK/vD,KAGvD+vD,EAAKp7C,QACL45c,EAA6B3nd,QAAQmpD,EAAKp7C,OAAO3U,OAAS,IAE1Dge,EAAO7gB,OAAO0lC,OAAO,GAAI7kB,EAAM,CAAE+zT,SAAS,OAEzC/zT,EAAK+zT,SAAW,CAAC,MAAO,QAAQnrU,QAAQmpD,EAAK/vD,OAAS,IACzDge,EAAO7gB,OAAO0lC,OAAO,GAAI7kB,EAAM,CAAE+zT,QAAS,aAG5C,IAAIvpU,EAAM,IAAMunD,EAAK/vD,KACjBwyG,EA3GN,SAAqBt6E,EAAYla,GAC/B,GAAKka,EAAL,CAEA,IACIh3B,EADAwH,EAAS,GAIb,IAAK,IAAIlH,KAAO02B,EACdh3B,EAAQg3B,EAAW12B,GACfkH,IACFA,GAAU,KAGS,YAAjBsV,EAAK+zT,UAEPvwU,EAAMgsd,EAAaE,eAAelsd,IAAQA,GAE5CkH,GAAUlH,GACK,OAAVN,GAA4B,KAAVA,GAAiB8c,EAAK+zT,WAC3CrpU,GACE,MACCsV,EAAK4pP,eACF2lN,EAASvuI,UAAU99U,GACnBA,EAAM+I,QAAQ,MAAO,WACzB,KAIN,OAAOvB,GA+EO8ld,CAAYz+Z,EAAKyiD,QAASx0F,GAmBxC,OAjBIw0F,IACFhqG,GAAO,IAAMgqG,IAGXx0F,EAAK+zT,SAAahiR,EAAK0J,UAAqC,IAAzB1J,EAAK0J,SAASv8D,QAGnDsL,GAAO,IACHunD,EAAK0J,WACPjxD,GAAO4kD,EAAO2C,EAAK0J,SAAUz7C,IAG1Bgwc,EAAUj+Z,EAAK/vD,QAASge,EAAK+zT,UAChCvpU,GAAO,KAAOunD,EAAK/vD,KAAO,MAR5BwI,GAAO,KAYFA,EAGT,SAAS2ld,EAAgBp+Z,GACvB,MAAO,IAAMA,EAAKpzD,KAAO,IAG3B,SAAS2xd,EAAWv+Z,EAAM/xC,GACxB,IAAIrhB,EAAOozD,EAAKpzD,MAAQ,GAUxB,OANEqhB,EAAK4pP,gBACH73M,EAAKp7C,QAAUo7C,EAAKp7C,OAAO3U,QAAQ2td,IAErChxd,EAAO4wd,EAASvuI,UAAUriV,IAGrBA,EAGT,SAAS0xd,EAAYt+Z,GACnB,MAAO,YAAcA,EAAK0J,SAAS,GAAG98D,KAAO,MAG/C,SAASyxd,EAAcr+Z,GACrB,MAAO,UAASA,EAAKpzD,KAAO,W,6BCpL9BQ,OAAOyD,eAAe7C,EAAS,aAAc,CAAEmD,OAAO,IAWtDnD,EAAQilL,MALR,SAAejzH,GACX,MAAsB,QAAdA,EAAKnwD,MACK,WAAdmwD,EAAKnwD,MACS,UAAdmwD,EAAKnwD,MAIb7B,EAAQohE,KAAO,OACfphE,EAAQ0kL,UAAY,YACpB1kL,EAAQ2kL,QAAU,UAClB3kL,EAAQ4kL,OAAS,SACjB5kL,EAAQ6kL,MAAQ,QAChB7kL,EAAQ8kL,IAAM,MACd9kL,EAAQ+kL,MAAQ,QAChB/kL,EAAQglL,QAAU,W,6BCpBlB5lL,OAAOyD,eAAe7C,EAAS,aAAc,CAAEmD,OAAO,IACtD,IAAIutd,EAAW,EAAQ,KACnBC,EAAW,EAAQ,KAIvB3wd,EAAQ6hK,OAHR,SAAgBjjK,EAAMooB,GAClB,QAASA,GAASA,GAAS,EAAI0pc,EAASjwI,UAAYiwI,EAAS5uT,YAAYljK,IAM7EoB,EAAQ6+X,aAHR,SAAsBjgY,EAAMooB,GACxB,QAASA,GAASA,GAAS,EAAI0pc,EAASjwI,UAAYiwI,EAAShwI,kBAAkB9hV,IAMnFoB,EAAQ4hK,OAHR,SAAgBhjK,EAAMooB,GAClB,QAASA,GAASA,GAAS,EAAI2pc,EAAS1vI,UAAY0vI,EAASrvI,YAAY1iV,IAG7E,IAAIgyd,EAAW,EAAQ,KACvB5wd,EAAQihV,UAAY2vI,EAAS3vI,UAC7BjhV,EAAQshV,WAAasvI,EAAStvI,WAC9BthV,EAAQwiG,OAASouX,EAASpuX,OAE1BxiG,EAAQ++X,YAAc6xF,EAAStvI,WAC/BthV,EAAQg/X,YAAc4xF,EAAStvI,WAC/B,IAAIuvI,EAAW,EAAQ,KACvB7wd,EAAQygV,UAAYowI,EAASpwI,UAC7BzgV,EAAQ8hK,WAAa+uT,EAAS/uT,WAC9B9hK,EAAQ0gV,iBAAmBmwI,EAASnwI,iBAEpC1gV,EAAQk/X,YAAc2xF,EAAS/uT,WAC/B9hK,EAAQm/X,YAAc0xF,EAAS/uT,WAC/B9hK,EAAQo/X,kBAAoByxF,EAASnwI,iBACrC1gV,EAAQq/X,kBAAoBwxF,EAASnwI,iBACrC1gV,EAAQi/X,gBAAkB4xF,EAASpwI,W,8yCC/BnC,IAAIP,EAAmBzwU,MAAQA,KAAKywU,iBAAoB,SAAUpxG,GAC9D,OAAQA,GAAOA,EAAIxrO,WAAcwrO,EAAM,CAAE,QAAWA,IAExD1vO,OAAOyD,eAAe7C,EAAS,aAAc,CAAEmD,OAAO,IACtD,IAAI2td,EAAgB5wI,EAAgB,EAAQ,OAmB5ClgV,EAAQsE,QAjBR,SAAyB82I,GACrB,GAAKA,GAAa,OAAUA,GAAa,OAAWA,EAAY,QAC5D,MAAO,IAEPA,KAAa01U,EAAcxsd,UAE3B82I,EAAY01U,EAAcxsd,QAAQ82I,IAEtC,IAAIzwI,EAAS,GAOb,OANIywI,EAAY,QACZA,GAAa,MACbzwI,GAAUgX,OAAO4yF,aAAe6mC,IAAc,GAAM,KAAS,OAC7DA,EAAY,MAAsB,KAAZA,GAE1BzwI,GAAUgX,OAAO4yF,aAAa6mC,K,+pGCrBlC,IAAI21U,EAAc/wd,EAAQ+wd,YAAc,SAAS/+Z,GAChD,OAAOA,EAAK0J,UAGTwR,EAAYltE,EAAQktE,UAAY,SAASlb,GAC5C,OAAOA,EAAKp7C,QAGb5W,EAAQgxd,YAAc,SAASh/Z,GAC9B,IAAIp7C,EAASs2D,EAAUlb,GACvB,OAAOp7C,EAASm6c,EAAYn6c,GAAU,CAACo7C,IAGxChyD,EAAQixd,kBAAoB,SAASj/Z,EAAM/vD,GAC1C,OAAO+vD,EAAKyiD,SAAWziD,EAAKyiD,QAAQxyG,IAGrCjC,EAAQkxd,UAAY,SAASl/Z,EAAM/vD,GAClC,QAAS+vD,EAAKyiD,SAAWn1G,eAAeC,KAAKyyD,EAAKyiD,QAASxyG,IAG5DjC,EAAQqhS,QAAU,SAASrvO,GAC1B,OAAOA,EAAK/vD,O,cCtBbjC,EAAQq5F,cAAgB,SAASrnC,GAIhC,GAHGA,EAAK1gD,OAAM0gD,EAAK1gD,KAAKnE,KAAO6kD,EAAK7kD,MACjC6kD,EAAK7kD,OAAM6kD,EAAK7kD,KAAKmE,KAAO0gD,EAAK1gD,MAEjC0gD,EAAKp7C,OAAO,CACd,IAAIu4c,EAASn9Z,EAAKp7C,OAAO8kD,SACzByzZ,EAAOrjd,OAAOqjd,EAAOh+a,YAAY6gB,GAAO,KAI1ChyD,EAAQmxd,eAAiB,SAASn/Z,EAAMhtC,GACvC,IAAI1T,EAAO0T,EAAY1T,KAAO0gD,EAAK1gD,KAChCA,IACFA,EAAKnE,KAAO6X,GAGb,IAAI7X,EAAO6X,EAAY7X,KAAO6kD,EAAK7kD,KAChCA,IACFA,EAAKmE,KAAO0T,GAGb,IAAIpO,EAASoO,EAAYpO,OAASo7C,EAAKp7C,OACvC,GAAGA,EAAO,CACT,IAAIu4c,EAASv4c,EAAO8kD,SACpByzZ,EAAOA,EAAOh+a,YAAY6gB,IAAShtC,IAIrChlB,EAAQsC,YAAc,SAAS0vD,EAAM17C,GAGpC,GAFAA,EAAMM,OAASo7C,EAEkB,IAA9BA,EAAK0J,SAASj8D,KAAK6W,GAAa,CAClC,IAAI8/R,EAAUpkP,EAAK0J,SAAS1J,EAAK0J,SAASv8D,OAAS,GACnDi3S,EAAQjpS,KAAOmJ,EACfA,EAAMhF,KAAO8kS,EACb9/R,EAAMnJ,KAAO,OAIfnN,EAAQktQ,OAAS,SAASl7M,EAAM7kD,GAC/B,IAAIyJ,EAASo7C,EAAKp7C,OACjBw6c,EAAWp/Z,EAAK7kD,KAOjB,GALAA,EAAKA,KAAOikd,EACZjkd,EAAKmE,KAAO0gD,EACZA,EAAK7kD,KAAOA,EACZA,EAAKyJ,OAASA,EAEXw6c,GAEF,GADAA,EAAS9/c,KAAOnE,EACbyJ,EAAO,CACT,IAAIu4c,EAASv4c,EAAO8kD,SACpByzZ,EAAOrjd,OAAOqjd,EAAOh+a,YAAYigb,GAAW,EAAGjkd,SAEvCyJ,GACTA,EAAO8kD,SAASj8D,KAAK0N,IAIvBnN,EAAQ48F,QAAU,SAAS5qC,EAAM1gD,GAChC,IAAIsF,EAASo7C,EAAKp7C,OAClB,GAAGA,EAAO,CACT,IAAIu4c,EAASv4c,EAAO8kD,SACpByzZ,EAAOrjd,OAAOqjd,EAAOh+a,YAAY6gB,GAAO,EAAG1gD,GAGzC0gD,EAAK1gD,OACP0gD,EAAK1gD,KAAKnE,KAAOmE,GAGlBA,EAAKsF,OAASA,EACdtF,EAAKA,KAAO0gD,EAAK1gD,KACjBA,EAAKnE,KAAO6kD,EACZA,EAAK1gD,KAAOA,I,gBCzEb,IAAI2zK,EAAQ,EAAQ,KAAkBA,MAoBtC,SAASl8K,EAAKqY,EAAM+/P,EAAO6tM,EAAS3ic,GAGnC,IAFA,IAAiB8ic,EAAbzod,EAAS,GAELzH,EAAI,EAAG+Z,EAAImoQ,EAAMhiR,OAAQF,EAAI+Z,KACjCoI,EAAK+/P,EAAMliR,MACbyH,EAAOjH,KAAK0hR,EAAMliR,MACbotB,GAAS,MAGf8ic,EAAShuM,EAAMliR,GAAGy8D,WACfszZ,GAAWG,GAAUA,EAAOhwd,OAAS,IACvCgwd,EAASpmd,EAAKqY,EAAM+tc,EAAQH,EAAS3ic,GACrC3lB,EAASA,EAAOqF,OAAOojd,IACvB9ic,GAAS8ic,EAAOhwd,SACJ,KAX0BF,KAexC,OAAOyH,EApCRzG,EAAOD,QAAU,CAChBuoB,OAQD,SAAgBnH,EAAMq6C,EAASuzZ,EAAS3ic,GACnCjmB,MAAMC,QAAQo1D,KAAUA,EAAU,CAACA,IAEnB,iBAAVpvC,GAAuBU,SAASV,KACzCA,EAAQ6jB,KAET,OAAOnnC,EAAKqY,EAAMq6C,GAAqB,IAAZuzZ,EAAmB3ic,IAb9CtjB,KAAMA,EACNsod,aAoCD,SAAsBjwc,EAAM+/P,GAC3B,IAAI,IAAIliR,EAAI,EAAGiB,EAAIihR,EAAMhiR,OAAQF,EAAIiB,EAAGjB,IACvC,GAAGmiB,EAAK+/P,EAAMliR,IAAK,OAAOkiR,EAAMliR,GAGjC,OAAO,MAxCPqyd,QA2CD,SAASA,EAAQlwc,EAAM+/P,GACtB,IAAInvN,EAAO,KAEX,IAAI,IAAI/yD,EAAI,EAAGiB,EAAIihR,EAAMhiR,OAAQF,EAAIiB,IAAM8xD,EAAM/yD,IAC5CgmL,EAAMk8F,EAAMliR,MAENmiB,EAAK+/P,EAAMliR,IACpB+yD,EAAOmvN,EAAMliR,GACJkiR,EAAMliR,GAAGy8D,SAASv8D,OAAS,IACpC6yD,EAAOs/Z,EAAQlwc,EAAM+/P,EAAMliR,GAAGy8D,YAIhC,OAAO1J,GAvDPu/Z,UA0DD,SAASA,EAAUnwc,EAAM+/P,GACxB,IAAI,IAAIliR,EAAI,EAAGiB,EAAIihR,EAAMhiR,OAAQF,EAAIiB,EAAGjB,IACvC,GACCgmL,EAAMk8F,EAAMliR,MACXmiB,EAAK+/P,EAAMliR,KACVkiR,EAAMliR,GAAGy8D,SAASv8D,OAAS,GAC3Boyd,EAAUnwc,EAAM+/P,EAAMliR,GAAGy8D,WAI3B,OAAO,EAIT,OAAO,GAvEP81Z,QA0ED,SAAiBpwc,EAAMqwc,GACtB,IAAI/qd,EAAS,GACTuL,EAAQw/c,EAAUrtd,QACtB,KAAM6N,EAAM9S,QAAO,CAClB,IAAI6yD,EAAO//C,EAAMrS,QACbqlL,EAAMjzH,KACNA,EAAK0J,UAAY1J,EAAK0J,SAASv8D,OAAS,GAC3C8S,EAAMwpC,QAAQ9vC,MAAMsG,EAAO+/C,EAAK0J,UAE9Bt6C,EAAK4wC,IAAOtrD,EAAOjH,KAAKuyD,IAE5B,OAAOtrD,K,gBC7FR,IAAIwwN,EAAc,EAAQ,KACtBjyC,EAAQjlL,EAAQilL,MAAQiyC,EAAYjyC,MAExCjlL,EAAQ0xd,YAAc,SAAS/nd,EAAS8xD,GACvC,IAAI,IAAIh4D,KAAOkG,EACd,GAAIA,EAAQrK,eAAemE,IACtB,GAAW,aAARA,GACP,IAAIwhL,EAAMxpH,KAAa9xD,EAAQgod,SAASl2Z,EAAQx5D,MAC/C,OAAO,OAEF,GAAW,aAARwB,GACT,IAAIkG,EAAQiod,SAASn2Z,EAAQ55D,MAAO,OAAO,OACrC,GAAW,iBAAR4B,GACT,GAAGwhL,EAAMxpH,KAAa9xD,EAAQkod,aAAap2Z,EAAQ78D,MAClD,OAAO,OAEF,IAAI68D,EAAQg5C,UAAY9qG,EAAQlG,GAAKg4D,EAAQg5C,QAAQhxG,IAC3D,OAAO,OAGT,OAAO,GAGR,IAAIqud,EAAS,CACZH,SAAU,SAAS1vd,GAClB,MAAmB,mBAATA,EACF,SAAS+vD,GAAO,OAAOizH,EAAMjzH,IAAS/vD,EAAK+vD,EAAK/vD,OACrC,MAATA,EACFgjL,EAEA,SAASjzH,GAAO,OAAOizH,EAAMjzH,IAASA,EAAK/vD,OAASA,IAG7D2vd,SAAU,SAAS/vd,GAClB,MAAmB,mBAATA,EACF,SAASmwD,GAAO,OAAOnwD,EAAKmwD,EAAKnwD,OAEjC,SAASmwD,GAAO,OAAOA,EAAKnwD,OAASA,IAG9Cgwd,aAAc,SAASjzd,GACtB,MAAmB,mBAATA,EACF,SAASozD,GAAO,OAAQizH,EAAMjzH,IAASpzD,EAAKozD,EAAKpzD,OAEjD,SAASozD,GAAO,OAAQizH,EAAMjzH,IAASA,EAAKpzD,OAASA,KAK/D,SAASmzd,EAAe9nN,EAAQ9mQ,GAC/B,MAAoB,mBAAVA,EACF,SAAS6uD,GAAO,OAAOA,EAAKyiD,SAAWtxG,EAAM6uD,EAAKyiD,QAAQw1J,KAE1D,SAASj4M,GAAO,OAAOA,EAAKyiD,SAAWziD,EAAKyiD,QAAQw1J,KAAY9mQ,GAIzE,SAAS6ud,EAAaljd,EAAG6kB,GACxB,OAAO,SAASq+B,GACf,OAAOljD,EAAEkjD,IAASr+B,EAAEq+B,IAItBhyD,EAAQ4ud,YAAc,SAASjld,EAAS8xD,EAASuzZ,EAAS3ic,GACzD,IAAI28K,EAAQ5pM,OAAOoZ,KAAK7O,GAAShB,KAAI,SAASlF,GAC7C,IAAIN,EAAQwG,EAAQlG,GACpB,OAAOA,KAAOqud,EAASA,EAAOrud,GAAKN,GAAS4ud,EAAetud,EAAKN,MAGjE,OAAwB,IAAjB6lM,EAAM7pM,OAAe,GAAKsQ,KAAK8Y,OACrCygL,EAAMnjL,OAAOmsc,GACbv2Z,EAASuzZ,EAAS3ic,IAIpBrsB,EAAQowD,eAAiB,SAASC,EAAIoL,EAASuzZ,GAE9C,OADI5od,MAAMC,QAAQo1D,KAAUA,EAAU,CAACA,IAChChsD,KAAK6hd,QAAQS,EAAe,KAAM1ha,GAAKoL,GAAqB,IAAZuzZ,IAGxDhvd,EAAQ+qG,qBAAuB,SAAS9oG,EAAMw5D,EAASuzZ,EAAS3ic,GAC/D,OAAO5c,KAAK8Y,OAAOupc,EAAOH,SAAS1vd,GAAOw5D,EAASuzZ,EAAS3ic,IAG7DrsB,EAAQiyd,qBAAuB,SAASpwd,EAAM45D,EAASuzZ,EAAS3ic,GAC/D,OAAO5c,KAAK8Y,OAAOupc,EAAOF,SAAS/vd,GAAO45D,EAASuzZ,EAAS3ic,K,cCnF7DrsB,EAAQkyd,cAAgB,SAASvvc,GAKhC,IAJA,IAAwBE,EAAM+pD,EAAU1gE,EAApCosC,EAAM31B,EAAMxjB,SAIPm5C,GAAO,GAAG,CAOlB,IANAz1B,EAAO+pD,EAAWjqD,EAAM21B,GAGxB31B,EAAM21B,GAAO,KACbpsC,GAAU,EAEH0gE,GAAU,CAChB,GAAIjqD,EAAM9Z,QAAQ+jE,IAAa,EAAG,CACjC1gE,GAAU,EACVyW,EAAM7W,OAAOwsC,EAAK,GAClB,MAEDs0B,EAAWA,EAASh2D,OAIjB1K,IACHyW,EAAM21B,GAAOz1B,GAIf,OAAOF,GAIR,IAAIwvc,EACW,EADXA,EAEQ,EAFRA,EAGQ,EAHRA,EAIO,EAJPA,EAKW,GAyBXC,EAAapyd,EAAQ4pY,wBAA0B,SAASyoF,EAAOC,GAClE,IAEIrvc,EAASsvc,EAAct/Y,EAAUu/Y,EAAUC,EAAUn6a,EAFrDo6a,EAAW,GACXC,EAAW,GAGf,GAAIN,IAAUC,EACb,OAAO,EAIR,IADArvc,EAAUovc,EACHpvc,GACNyvc,EAASj3a,QAAQx4B,GACjBA,EAAUA,EAAQrM,OAGnB,IADAqM,EAAUqvc,EACHrvc,GACN0vc,EAASl3a,QAAQx4B,GACjBA,EAAUA,EAAQrM,OAInB,IADA0hC,EAAM,EACCo6a,EAASp6a,KAASq6a,EAASr6a,IACjCA,IAGD,OAAY,IAARA,EACI65a,GAIRl/Y,GADAs/Y,EAAeG,EAASp6a,EAAM,IACNojB,SACxB82Z,EAAWE,EAASp6a,GACpBm6a,EAAWE,EAASr6a,GAEhB26B,EAASpqE,QAAQ2pd,GAAYv/Y,EAASpqE,QAAQ4pd,GAC7CF,IAAiBD,EACbH,EAAqBA,EAEtBA,EAEHI,IAAiBF,EACbF,EAAqBA,EAEtBA,IAWTnyd,EAAQ4yd,WAAa,SAASjwc,GAC7B,IAAwBE,EAAM2yD,EAA1Bl9B,EAAM31B,EAAMxjB,OAIhB,IAFAwjB,EAAQA,EAAMve,UAELk0C,GAAO,GACfz1B,EAAOF,EAAM21B,IACbk9B,EAAW7yD,EAAM9Z,QAAQga,KACT,GAAK2yD,EAAWl9B,GAC/B31B,EAAM7W,OAAOwsC,EAAK,GAapB,OAVA31B,EAAM6yB,MAAK,SAAS1mC,EAAG6kB,GACtB,IAAIssE,EAAWmyX,EAAWtjd,EAAG6kB,GAC7B,OAAIssE,EAAWkyX,GACN,EACElyX,EAAWkyX,EACd,EAED,KAGDxvc,I,gBC3IR1iB,EAAOD,QAAU4hV,EAEjB,IAAI9qH,EAAS,EAAQ,KAErB,SAAS8qH,EAAOj4U,GACZmtN,EAAOv3N,KAAKkQ,KAAM,IAAIojd,EAAIpjd,MAAO9F,GAOrC,SAASkpd,EAAIp8T,GACThnJ,KAAKgnJ,MAAQA,EALjB,EAAQ,IAAR,CAAoBmrL,EAAQ9qH,GAE5B8qH,EAAOviV,UAAUyzd,UAAW,EAM5B,IAAIn7P,EAAS,EAAQ,KAAOA,OAE5Bv4N,OAAOoZ,KAAKm/M,GAAQ9tN,SAAQ,SAAS5H,GACjC,GAAqB,IAAjB01N,EAAO11N,GACP4wd,EAAIxzd,UAAU,KAAO4C,GAAQ,WACzBwN,KAAKgnJ,MAAMp4I,KAAKpc,SAEjB,GAAqB,IAAjB01N,EAAO11N,GACd4wd,EAAIxzd,UAAU,KAAO4C,GAAQ,SAAS6M,GAClCW,KAAKgnJ,MAAMp4I,KAAKpc,EAAM6M,QAEvB,IAAqB,IAAjB6oN,EAAO11N,GAKd,MAAMX,MAAM,8BAJZuxd,EAAIxzd,UAAU,KAAO4C,GAAQ,SAAS6M,EAAG6kB,GACrClkB,KAAKgnJ,MAAMp4I,KAAKpc,EAAM6M,EAAG6kB,S,6CCJrC,IAAImkH,EAAS,EAAQ,KAAeA,OAGhCO,EAAaP,EAAOO,YAAc,SAAU1f,GAE9C,QADAA,EAAW,GAAKA,IACIA,EAAS1sH,eAC3B,IAAK,MAAM,IAAK,OAAO,IAAK,QAAQ,IAAK,QAAQ,IAAK,SAAS,IAAK,SAAS,IAAK,OAAO,IAAK,QAAQ,IAAK,UAAU,IAAK,WAAW,IAAK,MACxI,OAAO,EACT,QACE,OAAO,IA4Cb,SAAS81U,EAAcppN,GAErB,IAAIsyR,EACJ,OAFAx7Y,KAAKkpH,SAXP,SAA2Be,GACzB,IAAIq5V,EA/BN,SAA4Br5V,GAC1B,IAAKA,EAAK,MAAO,OAEjB,IADA,IAAIs5V,IAEF,OAAQt5V,GACN,IAAK,OACL,IAAK,QACH,MAAO,OACT,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,MAAO,UACT,IAAK,SACL,IAAK,SACH,MAAO,SACT,IAAK,SACL,IAAK,QACL,IAAK,MACH,OAAOA,EACT,QACE,GAAIs5V,EAAS,OACbt5V,GAAO,GAAKA,GAAKztH,cACjB+md,GAAU,GAQLC,CAAmBv5V,GAC9B,GAAoB,iBAATq5V,IAAsBj7U,EAAOO,aAAeA,IAAeA,EAAW3e,IAAO,MAAM,IAAIp4H,MAAM,qBAAuBo4H,GAC/H,OAAOq5V,GAAQr5V,EAQCw5V,CAAkBv6V,GAE1BlpH,KAAKkpH,UACX,IAAK,UACHlpH,KAAKlG,KAAO4pd,EACZ1jd,KAAK46B,IAAM+ob,EACXnoE,EAAK,EACL,MACF,IAAK,OACHx7Y,KAAK4jd,SAAWC,EAChBroE,EAAK,EACL,MACF,IAAK,SACHx7Y,KAAKlG,KAAOgqd,EACZ9jd,KAAK46B,IAAMmpb,EACXvoE,EAAK,EACL,MACF,QAGE,OAFAx7Y,KAAKuC,MAAQyhd,OACbhkd,KAAK46B,IAAMqpb,GAGfjkd,KAAKkkd,SAAW,EAChBlkd,KAAKmkd,UAAY,EACjBnkd,KAAKokd,SAAW/7U,EAAOI,YAAY+yQ,GAoCrC,SAAS6oE,EAAcC,GACrB,OAAIA,GAAQ,IAAa,EAAWA,GAAQ,GAAM,EAAa,EAAWA,GAAQ,GAAM,GAAa,EAAWA,GAAQ,GAAM,GAAa,EACpIA,GAAQ,GAAM,GAAQ,GAAK,EA2DpC,SAAST,EAAaz5U,GACpB,IAAI14I,EAAIsO,KAAKmkd,UAAYnkd,KAAKkkd,SAC1B3wd,EAtBN,SAA6BoL,EAAMyrI,EAAK14I,GACtC,GAAwB,MAAV,IAAT04I,EAAI,IAEP,OADAzrI,EAAKuld,SAAW,EACT,IAET,GAAIvld,EAAKuld,SAAW,GAAK95U,EAAI16I,OAAS,EAAG,CACvC,GAAwB,MAAV,IAAT06I,EAAI,IAEP,OADAzrI,EAAKuld,SAAW,EACT,IAET,GAAIvld,EAAKuld,SAAW,GAAK95U,EAAI16I,OAAS,GACZ,MAAV,IAAT06I,EAAI,IAEP,OADAzrI,EAAKuld,SAAW,EACT,KASLK,CAAoBvkd,KAAMoqI,GAClC,YAAU13I,IAANa,EAAwBA,EACxByM,KAAKkkd,UAAY95U,EAAI16I,QACvB06I,EAAIh8C,KAAKpuF,KAAKokd,SAAU1yd,EAAG,EAAGsO,KAAKkkd,UAC5Blkd,KAAKokd,SAAS5+c,SAASxF,KAAKkpH,SAAU,EAAGlpH,KAAKmkd,aAEvD/5U,EAAIh8C,KAAKpuF,KAAKokd,SAAU1yd,EAAG,EAAG04I,EAAI16I,aAClCsQ,KAAKkkd,UAAY95U,EAAI16I,SA2BvB,SAASg0d,EAAUt5U,EAAK56I,GACtB,IAAK46I,EAAI16I,OAASF,GAAK,GAAM,EAAG,CAC9B,IAAI+D,EAAI62I,EAAI5kI,SAAS,UAAWhW,GAChC,GAAI+D,EAAG,CACL,IAAIP,EAAIO,EAAEiwC,WAAWjwC,EAAE7D,OAAS,GAChC,GAAIsD,GAAK,OAAUA,GAAK,MAKtB,OAJAgN,KAAKkkd,SAAW,EAChBlkd,KAAKmkd,UAAY,EACjBnkd,KAAKokd,SAAS,GAAKh6U,EAAIA,EAAI16I,OAAS,GACpCsQ,KAAKokd,SAAS,GAAKh6U,EAAIA,EAAI16I,OAAS,GAC7B6D,EAAEoB,MAAM,GAAI,GAGvB,OAAOpB,EAKT,OAHAyM,KAAKkkd,SAAW,EAChBlkd,KAAKmkd,UAAY,EACjBnkd,KAAKokd,SAAS,GAAKh6U,EAAIA,EAAI16I,OAAS,GAC7B06I,EAAI5kI,SAAS,UAAWhW,EAAG46I,EAAI16I,OAAS,GAKjD,SAASi0d,EAASv5U,GAChB,IAAI72I,EAAI62I,GAAOA,EAAI16I,OAASsQ,KAAKuC,MAAM6nI,GAAO,GAC9C,GAAIpqI,KAAKkkd,SAAU,CACjB,IAAItpb,EAAM56B,KAAKmkd,UAAYnkd,KAAKkkd,SAChC,OAAO3wd,EAAIyM,KAAKokd,SAAS5+c,SAAS,UAAW,EAAGo1B,GAElD,OAAOrnC,EAGT,SAASuwd,EAAW15U,EAAK56I,GACvB,IAAI0E,GAAKk2I,EAAI16I,OAASF,GAAK,EAC3B,OAAU,IAAN0E,EAAgBk2I,EAAI5kI,SAAS,SAAUhW,IAC3CwQ,KAAKkkd,SAAW,EAAIhwd,EACpB8L,KAAKmkd,UAAY,EACP,IAANjwd,EACF8L,KAAKokd,SAAS,GAAKh6U,EAAIA,EAAI16I,OAAS,IAEpCsQ,KAAKokd,SAAS,GAAKh6U,EAAIA,EAAI16I,OAAS,GACpCsQ,KAAKokd,SAAS,GAAKh6U,EAAIA,EAAI16I,OAAS,IAE/B06I,EAAI5kI,SAAS,SAAUhW,EAAG46I,EAAI16I,OAASwE,IAGhD,SAAS6vd,EAAU35U,GACjB,IAAI72I,EAAI62I,GAAOA,EAAI16I,OAASsQ,KAAKuC,MAAM6nI,GAAO,GAC9C,OAAIpqI,KAAKkkd,SAAiB3wd,EAAIyM,KAAKokd,SAAS5+c,SAAS,SAAU,EAAG,EAAIxF,KAAKkkd,UACpE3wd,EAIT,SAASywd,EAAY55U,GACnB,OAAOA,EAAI5kI,SAASxF,KAAKkpH,UAG3B,SAAS+6V,EAAU75U,GACjB,OAAOA,GAAOA,EAAI16I,OAASsQ,KAAKuC,MAAM6nI,GAAO,GAzN/C75I,EAAQ+hV,cAAgBA,EA6BxBA,EAAc1iV,UAAU2S,MAAQ,SAAU6nI,GACxC,GAAmB,IAAfA,EAAI16I,OAAc,MAAO,GAC7B,IAAI6D,EACA/D,EACJ,GAAIwQ,KAAKkkd,SAAU,CAEjB,QAAUxxd,KADVa,EAAIyM,KAAK4jd,SAASx5U,IACG,MAAO,GAC5B56I,EAAIwQ,KAAKkkd,SACTlkd,KAAKkkd,SAAW,OAEhB10d,EAAI,EAEN,OAAIA,EAAI46I,EAAI16I,OAAe6D,EAAIA,EAAIyM,KAAKlG,KAAKswI,EAAK56I,GAAKwQ,KAAKlG,KAAKswI,EAAK56I,GAC/D+D,GAAK,IAGd++U,EAAc1iV,UAAUgrC,IAwGxB,SAAiBwvG,GACf,IAAI72I,EAAI62I,GAAOA,EAAI16I,OAASsQ,KAAKuC,MAAM6nI,GAAO,GAC9C,OAAIpqI,KAAKkkd,SAAiB3wd,EAAI,IACvBA,GAxGT++U,EAAc1iV,UAAUkK,KA0FxB,SAAkBswI,EAAK56I,GACrB,IAAIqlJ,EArEN,SAA6Bl2I,EAAMyrI,EAAK56I,GACtC,IAAI+Z,EAAI6gI,EAAI16I,OAAS,EACrB,GAAI6Z,EAAI/Z,EAAG,OAAO,EAClB,IAAIgsZ,EAAK6oE,EAAcj6U,EAAI7gI,IAC3B,GAAIiyY,GAAM,EAER,OADIA,EAAK,IAAG78Y,EAAKuld,SAAW1oE,EAAK,GAC1BA,EAET,KAAMjyY,EAAI/Z,IAAa,IAARgsZ,EAAW,OAAO,EAEjC,IADAA,EAAK6oE,EAAcj6U,EAAI7gI,MACb,EAER,OADIiyY,EAAK,IAAG78Y,EAAKuld,SAAW1oE,EAAK,GAC1BA,EAET,KAAMjyY,EAAI/Z,IAAa,IAARgsZ,EAAW,OAAO,EAEjC,IADAA,EAAK6oE,EAAcj6U,EAAI7gI,MACb,EAIR,OAHIiyY,EAAK,IACI,IAAPA,EAAUA,EAAK,EAAO78Y,EAAKuld,SAAW1oE,EAAK,GAE1CA,EAET,OAAO,EA+CKgpE,CAAoBxkd,KAAMoqI,EAAK56I,GAC3C,IAAKwQ,KAAKkkd,SAAU,OAAO95U,EAAI5kI,SAAS,OAAQhW,GAChDwQ,KAAKmkd,UAAYtvU,EACjB,IAAIj6G,EAAMwvG,EAAI16I,QAAUmlJ,EAAQ70I,KAAKkkd,UAErC,OADA95U,EAAIh8C,KAAKpuF,KAAKokd,SAAU,EAAGxpb,GACpBwvG,EAAI5kI,SAAS,OAAQhW,EAAGorC,IA7FjC03S,EAAc1iV,UAAUg0d,SAAW,SAAUx5U,GAC3C,GAAIpqI,KAAKkkd,UAAY95U,EAAI16I,OAEvB,OADA06I,EAAIh8C,KAAKpuF,KAAKokd,SAAUpkd,KAAKmkd,UAAYnkd,KAAKkkd,SAAU,EAAGlkd,KAAKkkd,UACzDlkd,KAAKokd,SAAS5+c,SAASxF,KAAKkpH,SAAU,EAAGlpH,KAAKmkd,WAEvD/5U,EAAIh8C,KAAKpuF,KAAKokd,SAAUpkd,KAAKmkd,UAAYnkd,KAAKkkd,SAAU,EAAG95U,EAAI16I,QAC/DsQ,KAAKkkd,UAAY95U,EAAI16I,S,gBCpIvB,SAAS+0d,EAAa3gJ,GAClB9jU,KAAK+jU,KAAOD,GAAO,GAHvBtzU,EAAOD,QAAUk0d,EAMjB,IAAIv8P,EAAS,EAAQ,KAAMA,OAC3Bv4N,OAAOoZ,KAAKm/M,GAAQ9tN,SAAQ,SAAS5H,GACjC,GAAqB,IAAjB01N,EAAO11N,GACPA,EAAO,KAAOA,EACdiyd,EAAa70d,UAAU4C,GAAQ,WACvBwN,KAAK+jU,KAAKvxU,IAAOwN,KAAK+jU,KAAKvxU,WAEhC,GAAqB,IAAjB01N,EAAO11N,GACdA,EAAO,KAAOA,EACdiyd,EAAa70d,UAAU4C,GAAQ,SAAS6M,GAChCW,KAAK+jU,KAAKvxU,IAAOwN,KAAK+jU,KAAKvxU,GAAM6M,QAEtC,IAAqB,IAAjB6oN,EAAO11N,GAMd,MAAMX,MAAM,6BALZW,EAAO,KAAOA,EACdiyd,EAAa70d,UAAU4C,GAAQ,SAAS6M,EAAG6kB,GACnClkB,KAAK+jU,KAAKvxU,IAAOwN,KAAK+jU,KAAKvxU,GAAM6M,EAAG6kB,S,gBCnBpD,SAASwgc,EAAkB5gJ,GACvB9jU,KAAK+jU,KAAOD,GAAO,GACnB9jU,KAAKotF,OAAS,GAJlB58F,EAAOD,QAAUm0d,EAOjB,IAAIx8P,EAAS,EAAQ,KAAMA,OAC3Bv4N,OAAOoZ,KAAKm/M,GAAQ9tN,SAAQ,SAAS5H,GACjC,GAAqB,IAAjB01N,EAAO11N,GACPA,EAAO,KAAOA,EACdkyd,EAAkB90d,UAAU4C,GAAQ,WAChCwN,KAAKotF,OAAOp9F,KAAK,CAACwC,IACdwN,KAAK+jU,KAAKvxU,IAAOwN,KAAK+jU,KAAKvxU,WAEhC,GAAqB,IAAjB01N,EAAO11N,GACdA,EAAO,KAAOA,EACdkyd,EAAkB90d,UAAU4C,GAAQ,SAAS6M,GACzCW,KAAKotF,OAAOp9F,KAAK,CAACwC,EAAM6M,IACpBW,KAAK+jU,KAAKvxU,IAAOwN,KAAK+jU,KAAKvxU,GAAM6M,QAEtC,IAAqB,IAAjB6oN,EAAO11N,GAOd,MAAMX,MAAM,6BANZW,EAAO,KAAOA,EACdkyd,EAAkB90d,UAAU4C,GAAQ,SAAS6M,EAAG6kB,GAC5ClkB,KAAKotF,OAAOp9F,KAAK,CAACwC,EAAM6M,EAAG6kB,IACvBlkB,KAAK+jU,KAAKvxU,IAAOwN,KAAK+jU,KAAKvxU,GAAM6M,EAAG6kB,QAOpDwgc,EAAkB90d,UAAUu2U,QAAU,WAClCnmU,KAAKotF,OAAS,GACVptF,KAAK+jU,KAAKoC,SAASnmU,KAAK+jU,KAAKoC,WAGrCu+I,EAAkB90d,UAAUsmQ,QAAU,WAC9Bl2P,KAAK+jU,KAAKoC,SAASnmU,KAAK+jU,KAAKoC,UAEjC,IAAK,IAAI32U,EAAI,EAAG0qB,EAAMla,KAAKotF,OAAO19F,OAAQF,EAAI0qB,EAAK1qB,IAC/C,GAAIwQ,KAAK+jU,KAAK/jU,KAAKotF,OAAO59F,GAAG,IAAK,CAC9B,IAAI+/M,EAAMvvM,KAAKotF,OAAO59F,GAAGE,OAEb,IAAR6/M,EACAvvM,KAAK+jU,KAAK/jU,KAAKotF,OAAO59F,GAAG,MACV,IAAR+/M,EACPvvM,KAAK+jU,KAAK/jU,KAAKotF,OAAO59F,GAAG,IAAIwQ,KAAKotF,OAAO59F,GAAG,IAE5CwQ,KAAK+jU,KAAK/jU,KAAKotF,OAAO59F,GAAG,IACrBwQ,KAAKotF,OAAO59F,GAAG,GACfwQ,KAAKotF,OAAO59F,GAAG,O,cCnDnCgB,EAAOD,QAIP,WAGI,IAFA,IAAI+B,EAAS,GAEJ9C,EAAI,EAAGA,EAAImT,UAAUjT,OAAQF,IAAK,CACvC,IAAI8sD,EAAS35C,UAAUnT,GAEvB,IAAK,IAAIwE,KAAOsoD,EACRzsD,EAAeC,KAAKwsD,EAAQtoD,KAC5B1B,EAAO0B,GAAOsoD,EAAOtoD,IAKjC,OAAO1B,GAfX,IAAIzC,EAAiBF,OAAOC,UAAUC,gB,iBCFtC,YAUA,IAAIqiK,EAAW,IAGX8pB,EAAY,kBAMZ2B,EAAe,sBACfC,EAAkBtiL,OAAOqiL,EAAarhI,QAGtCumE,EAA8B,iBAAV30G,GAAsBA,GAAUA,EAAOve,SAAWA,QAAUue,EAGhF40G,EAA0B,iBAARnkH,MAAoBA,MAAQA,KAAKhP,SAAWA,QAAUgP,KAGxEipC,EAAOi7E,GAAcC,GAAY7mH,SAAS,cAATA,GAUjCwrJ,EAPc93J,OAAOC,UAOQ4V,SAG7BhS,EAASo0C,EAAKp0C,OAGds0L,EAAct0L,EAASA,EAAO5D,eAAY8C,EAC1Cs1L,EAAiBF,EAAcA,EAAYtiL,cAAW9S,EAU1D,SAAS2jM,EAAa3iM,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAoDF,SAAkBA,GAChB,MAAuB,iBAATA,GAtBhB,SAAsBA,GACpB,QAASA,GAAyB,iBAATA,EAsBtBw0L,CAAax0L,IAAU+zJ,EAAe33J,KAAK4D,IAAUsoL,EAtDpD/pB,CAASv+J,GACX,OAAOs0L,EAAiBA,EAAel4L,KAAK4D,GAAS,GAEvD,IAAIuD,EAAUvD,EAAQ,GACtB,MAAkB,KAAVuD,GAAkB,EAAIvD,IAAWw+J,EAAY,KAAOj7J,EAoG9DzG,EAAOD,QAPP,SAAsB+xC,GAnBtB,IAAkB5uC,EAqBhB,OADA4uC,EAnBgB,OADA5uC,EAoBE4uC,GAnBK,GAAK+zJ,EAAa3iM,KAoBvBkqL,EAAgBjsK,KAAK2wB,GACnCA,EAAO7lC,QAAQkhL,EAAc,QAC7Br7I,K,mCClKN,cAUA,IAAIy2I,EAAmB,IAGnBG,EAAiB,4BAGjB3nH,EAAmB,iBAGnBypH,EAAU,qBAEVG,EAAU,mBACVC,EAAU,gBAEVG,EAAU,oBACVC,EAAS,6BACTC,EAAS,eACTC,EAAY,kBACZC,EAAY,kBAEZE,EAAY,kBACZC,EAAS,eACTC,EAAY,kBACZC,EAAY,kBAGZG,EAAiB,uBACjBC,EAAc,oBACdC,EAAa,wBACbC,EAAa,wBACbC,EAAU,qBACVC,EAAW,sBACXC,EAAW,sBACXC,EAAW,sBACXC,EAAkB,6BAClBC,EAAY,uBACZC,EAAY,uBASZyB,EAAU,OAGVG,EAAe,8BAGfE,EAAW,mBAGXmC,EAAgB,GACpBA,EAAc9F,GAAW8F,EA7CV,kBA8CfA,EAAc3E,GAAkB2E,EAAc1E,GAC9C0E,EAAc3F,GAAW2F,EAAc1F,GACvC0F,EAAczE,GAAcyE,EAAcxE,GAC1CwE,EAAcvE,GAAWuE,EAActE,GACvCsE,EAAcrE,GAAYqE,EAAcrF,GACxCqF,EAAcpF,GAAaoF,EAAcnF,GACzCmF,EAAcjF,GAAaiF,EAAchF,GACzCgF,EAAc/E,GAAa+E,EAAc9E,GACzC8E,EAAcpE,GAAYoE,EAAcnE,GACxCmE,EAAclE,GAAakE,EAAcjE,IAAa,EACtDiE,EArDe,kBAqDWA,EAAcvF,GACxCuF,EA3CiB,qBA2CW,EAG5B,IAAIj+D,EAA8B,iBAAV30G,GAAsBA,GAAUA,EAAOve,SAAWA,QAAUue,EAGhF40G,EAA0B,iBAARnkH,MAAoBA,MAAQA,KAAKhP,SAAWA,QAAUgP,KAGxEipC,EAAOi7E,GAAcC,GAAY7mH,SAAS,cAATA,GAGjCklL,EAA4C5wL,IAAYA,EAAQ2yC,UAAY3yC,EAG5E6wL,EAAaD,GAAgC,iBAAV3wL,GAAsBA,IAAWA,EAAO0yC,UAAY1yC,EAGvF6wL,EAAgBD,GAAcA,EAAW7wL,UAAY4wL,EAUzD,SAASwjS,EAAYzrd,EAAKijM,GAGxB,OADAjjM,EAAIqf,IAAI4jL,EAAK,GAAIA,EAAK,IACfjjM,EAWT,SAAS0rd,EAAYrsc,EAAK7kB,GAGxB,OADA6kB,EAAIu7B,IAAIpgD,GACD6kB,EAuDT,SAASg9G,EAAYhtG,EAAO85J,EAAUC,EAAaQ,GACjD,IAAIlnL,GAAS,EACTlM,EAAS64B,EAAQA,EAAM74B,OAAS,EAKpC,IAHIozL,GAAapzL,IACf4yL,EAAc/5J,IAAQ3sB,MAEfA,EAAQlM,GACf4yL,EAAcD,EAASC,EAAa/5J,EAAM3sB,GAAQA,EAAO2sB,GAE3D,OAAO+5J,EAyCT,SAASuiS,EAAanxd,GAGpB,IAAIuD,GAAS,EACb,GAAa,MAATvD,GAA0C,mBAAlBA,EAAM8R,SAChC,IACEvO,KAAYvD,EAAQ,IACpB,MAAOhD,IAEX,OAAOuG,EAUT,SAASwtL,EAAWvrL,GAClB,IAAI0C,GAAS,EACT3E,EAASN,MAAMuC,EAAI4tB,MAKvB,OAHA5tB,EAAIkB,SAAQ,SAAS1G,EAAOM,GAC1BiD,IAAS2E,GAAS,CAAC5H,EAAKN,MAEnBuD,EAWT,SAASytL,EAAQ13H,EAAM6Y,GACrB,OAAO,SAAS1kE,GACd,OAAO6rD,EAAK6Y,EAAU1kE,KAW1B,SAASyjL,EAAWrsK,GAClB,IAAI3c,GAAS,EACT3E,EAASN,MAAM4hB,EAAIuO,MAKvB,OAHAvO,EAAIne,SAAQ,SAAS1G,GACnBuD,IAAS2E,GAASlI,KAEbuD,EAIT,IASMo8B,EATFgyJ,EAAa1uL,MAAM/G,UACnB01L,EAAYrpL,SAASrM,UACrB21L,EAAc51L,OAAOC,UAGrB41L,EAAa59I,EAAK,sBAGlB+9I,GACEtyJ,EAAM,SAAS13B,KAAK6pL,GAAcA,EAAWz8K,MAAQy8K,EAAWz8K,KAAKyqG,UAAY,KACvE,iBAAmBngF,EAAO,GAItCoyJ,EAAeH,EAAU9/K,SAGzB3V,EAAiB01L,EAAY11L,eAO7B43J,GAAiB89B,EAAY//K,SAG7BugL,GAAazqL,OAAO,IACtBmqL,EAAa31L,KAAKD,GAAgB4M,QAzQjB,sBAyQuC,QACvDA,QAAQ,yDAA0D,SAAW,KAI5E4rI,GAASg5C,EAAgBz5I,EAAKygG,YAAS31I,EACvCc,GAASo0C,EAAKp0C,OACd6gI,GAAazsF,EAAKysF,WAClB2xD,GAAetB,EAAQ/0L,OAAOyoB,eAAgBzoB,QAC9Cs2L,GAAet2L,OAAOoE,OACtBkvC,GAAuBsiJ,EAAYtiJ,qBACnC5mC,GAASgpL,EAAWhpL,OAGpBsqL,GAAmBh3L,OAAOumD,sBAC1B0wI,GAAiBv+C,GAASA,GAAOU,cAAWr2I,EAC5Cq0L,GAAarC,EAAQ/0L,OAAOoZ,KAAMpZ,QAGlC+kI,GAAW2xD,GAAUz+I,EAAM,YAC3BpjB,GAAM6hK,GAAUz+I,EAAM,OACtB92C,GAAUu1L,GAAUz+I,EAAM,WAC1BzO,GAAMktJ,GAAUz+I,EAAM,OACtBnE,GAAU4iJ,GAAUz+I,EAAM,WAC1B0/I,GAAejB,GAAU12L,OAAQ,UAGjC83L,GAAqBpqJ,GAASq3F,IAC9BgzD,GAAgBrqJ,GAAS7Y,IACzBmjK,GAAoBtqJ,GAASvsC,IAC7B82L,GAAgBvqJ,GAASlE,IACzB0uJ,GAAoBxqJ,GAASoG,IAG7BqkJ,GAAct0L,GAASA,GAAO5D,eAAY8C,EAC1Cq1L,GAAgBD,GAAcA,GAAYhoJ,aAAUptC,EASxD,SAASy2L,GAAKliK,GACZ,IAAIrrB,GAAS,EACTlM,EAASu3B,EAAUA,EAAQv3B,OAAS,EAGxC,IADAsQ,KAAKilC,UACIrpC,EAAQlM,GAAQ,CACvB,IAAIuvC,EAAQhY,EAAQrrB,GACpBoE,KAAKuY,IAAI0mB,EAAM,GAAIA,EAAM,KA2F7B,SAASmqJ,GAAUniK,GACjB,IAAIrrB,GAAS,EACTlM,EAASu3B,EAAUA,EAAQv3B,OAAS,EAGxC,IADAsQ,KAAKilC,UACIrpC,EAAQlM,GAAQ,CACvB,IAAIuvC,EAAQhY,EAAQrrB,GACpBoE,KAAKuY,IAAI0mB,EAAM,GAAIA,EAAM,KAyG7B,SAASoqJ,GAASpiK,GAChB,IAAIrrB,GAAS,EACTlM,EAASu3B,EAAUA,EAAQv3B,OAAS,EAGxC,IADAsQ,KAAKilC,UACIrpC,EAAQlM,GAAQ,CACvB,IAAIuvC,EAAQhY,EAAQrrB,GACpBoE,KAAKuY,IAAI0mB,EAAM,GAAIA,EAAM,KAuF7B,SAASmW,GAAMnuB,GACbjnB,KAAKupL,SAAW,IAAIH,GAAUniK,GA4FhC,SAASuiK,GAAc91L,EAAO+1L,GAG5B,IAAIxyL,EAAUL,GAAQlD,IAsrBxB,SAAqBA,GAEnB,OAmFF,SAA2BA,GACzB,OAmIF,SAAsBA,GACpB,QAASA,GAAyB,iBAATA,EApIlBw0L,CAAax0L,IAAUyoC,GAAYzoC,GApFnCu/L,CAAkBv/L,IAAU7D,EAAeC,KAAK4D,EAAO,aAC1DuvC,GAAqBnzC,KAAK4D,EAAO,WAAa+zJ,GAAe33J,KAAK4D,IAAUsnL,GAzrBhD4O,CAAYl2L,GAljB9C,SAAmBQ,EAAGmuL,GAIpB,IAHA,IAAIzmL,GAAS,EACT3E,EAASN,MAAMzC,KAEV0H,EAAQ1H,GACf+C,EAAO2E,GAASymL,EAASzmL,GAE3B,OAAO3E,EA4iBH2sL,CAAUlwL,EAAMhE,OAAQwiB,QACxB,GAEAxiB,EAASuH,EAAOvH,OAChBq6L,IAAgBr6L,EAEpB,IAAK,IAAIsE,KAAON,GACT+1L,IAAa55L,EAAeC,KAAK4D,EAAOM,IACvC+1L,IAAuB,UAAP/1L,GAAmBg2L,GAAQh2L,EAAKtE,KACpDuH,EAAOjH,KAAKgE,GAGhB,OAAOiD,EAaT,SAAS0zL,GAAYx2L,EAAQH,EAAKN,GAChC,IAAIk3L,EAAWz2L,EAAOH,GAChBnE,EAAeC,KAAKqE,EAAQH,IAAQy2L,GAAGG,EAAUl3L,UACxChB,IAAVgB,GAAyBM,KAAOG,KACnCA,EAAOH,GAAON,GAYlB,SAASm3L,GAAatiK,EAAOv0B,GAE3B,IADA,IAAItE,EAAS64B,EAAM74B,OACZA,KACL,GAAI+6L,GAAGliK,EAAM74B,GAAQ,GAAIsE,GACvB,OAAOtE,EAGX,OAAQ,EA8BV,SAAS47L,GAAU53L,EAAO+3L,EAAQE,EAAQH,EAAYx3L,EAAKG,EAAQqO,GACjE,IAAIvL,EAIJ,GAHIu0L,IACFv0L,EAAS9C,EAASq3L,EAAW93L,EAAOM,EAAKG,EAAQqO,GAASgpL,EAAW93L,SAExDhB,IAAXuE,EACF,OAAOA,EAET,IAAKqS,GAAS5V,GACZ,OAAOA,EAET,IAAIg2L,EAAQ9yL,GAAQlD,GACpB,GAAIg2L,GAEF,GADAzyL,EA2XJ,SAAwBsxB,GACtB,IAAI74B,EAAS64B,EAAM74B,OACfuH,EAASsxB,EAAMtpB,YAAYvP,GAG3BA,GAA6B,iBAAZ64B,EAAM,IAAkB14B,EAAeC,KAAKy4B,EAAO,WACtEtxB,EAAO2E,MAAQ2sB,EAAM3sB,MACrB3E,EAAO23B,MAAQrG,EAAMqG,OAEvB,OAAO33B,EApYI20L,CAAel4L,IACnB+3L,EACH,OA6ON,SAAmBnvI,EAAQ/zB,GACzB,IAAI3sB,GAAS,EACTlM,EAAS4sD,EAAO5sD,OAEpB64B,IAAUA,EAAQ5xB,MAAMjH,IACxB,OAASkM,EAAQlM,GACf64B,EAAM3sB,GAAS0gD,EAAO1gD,GAExB,OAAO2sB,EArPI8hK,CAAU32L,EAAOuD,OAErB,CACL,IAAI+D,EAAM6wL,GAAOn4L,GACbo4L,EAAS9wL,GAAOugL,GAAWvgL,GAAOwgL,EAEtC,GAAIzyC,GAASr1I,GACX,OA0HN,SAAqBijI,EAAQ80D,GAC3B,GAAIA,EACF,OAAO90D,EAAOhiI,QAEhB,IAAIsC,EAAS,IAAI0/H,EAAO13H,YAAY03H,EAAOjnI,QAE3C,OADAinI,EAAOvoC,KAAKn3F,GACLA,EAhII80L,CAAYr4L,EAAO+3L,GAE5B,GAAIzwL,GAAO2gL,GAAa3gL,GAAOggL,GAAY8Q,IAAW33L,EAAS,CAC7D,GAAI0wd,EAAanxd,GACf,OAAOS,EAAST,EAAQ,GAG1B,GADAuD,EA+XN,SAAyB9C,GACvB,MAAqC,mBAAtBA,EAAO8K,aAA8BmzL,GAAYj+L,GAE5D,IAzVcskB,EAwVHutK,GAAa7xL,GAvVrBmV,GAASmP,GAASwtK,GAAaxtK,GAAS,IADjD,IAAoBA,EAzCLuzK,CAAgBF,EAAS,GAAKp4L,IAClC+3L,EACH,OA6QR,SAAqBnvI,EAAQnoD,GAC3B,OAAO82L,GAAW3uI,EAAQ+vI,GAAW/vI,GAASnoD,GA9QjCm4L,CAAY54L,EAhD3B,SAAoBS,EAAQmoD,GAC1B,OAAOnoD,GAAU82L,GAAW3uI,EAAQvzC,GAAKuzC,GAASnoD,GA+ClB62L,CAAW/zL,EAAQvD,QAE1C,CACL,IAAKotL,EAAc9lL,GACjB,OAAO7G,EAAST,EAAQ,GAE1BuD,EA0YN,SAAwB9C,EAAQ6G,EAAK8pd,EAAWr5R,GAC9C,IAAIc,EAAOp4L,EAAO8K,YAClB,OAAQjE,GACN,KAAKmhL,EACH,OAAOqQ,GAAiBr4L,GAE1B,KAAKgnL,EACL,KAAKC,EACH,OAAO,IAAImR,GAAMp4L,GAEnB,KAAKioL,EACH,OA3QN,SAAuBqQ,EAAUhB,GAC/B,IAAI90D,EAAS80D,EAASe,GAAiBC,EAAS91D,QAAU81D,EAAS91D,OACnE,OAAO,IAAI81D,EAASxtL,YAAY03H,EAAQ81D,EAAS10D,WAAY00D,EAASjzD,YAyQ3DkzD,CAAcv4L,EAAQs3L,GAE/B,KAAKpP,EAAY,KAAKC,EACtB,KAAKC,EAAS,KAAKC,EAAU,KAAKC,EAClC,KAAKC,EAAU,KAAKC,EAAiB,KAAKC,EAAW,KAAKC,EACxD,OA/MN,SAAyBua,EAAY3L,GACnC,IAAI90D,EAAS80D,EAASe,GAAiB4K,EAAWzgE,QAAUygE,EAAWzgE,OACvE,OAAO,IAAIygE,EAAWn4L,YAAY03H,EAAQygE,EAAWr/D,WAAYq/D,EAAW1nM,QA6MjEi9L,CAAgBx4L,EAAQs3L,GAEjC,KAAKhQ,EACH,OArQN,SAAkBviL,EAAKuyL,EAAQq5R,GAE7B,OAAOvvV,EADKk2D,EAASq5R,EAAUrgS,EAAWvrL,IAAM,GAAQurL,EAAWvrL,GACzCyrd,EAAa,IAAIzrd,EAAI+F,aAmQpC8ld,CAAS5wd,EAAQs3L,EAAQq5R,GAElC,KAAKppS,EACL,KAAKK,EACH,OAAO,IAAIwQ,EAAKp4L,GAElB,KAAK0nL,EACH,OA/PA5kL,EAAS,IADMoE,EAgQIlH,GA/PC8K,YAAY5D,EAAOihD,OAAQgiI,EAAQ3iL,KAAKN,KACzD0O,UAAY1O,EAAO0O,UACnB9S,EA+PL,KAAK6kL,EACH,OApPN,SAAkBvjK,EAAKkzK,EAAQq5R,GAE7B,OAAOvvV,EADKk2D,EAASq5R,EAAUlgS,EAAWrsK,IAAM,GAAQqsK,EAAWrsK,GACzCqsc,EAAa,IAAIrsc,EAAItZ,aAkPpC+ld,CAAS7wd,EAAQs3L,EAAQq5R,GAElC,KAAK9oS,EACH,OA3Oe6Q,EA2OI14L,EA1OhB4zL,GAAgBp4L,OAAOo4L,GAAcj4L,KAAK+8L,IAAW,GAD9D,IAAqBA,EA3BrB,IAAqBxxL,EACfpE,EArKS61L,CAAep5L,EAAOsH,EAAKswL,GAAWG,IAInDjpL,IAAUA,EAAQ,IAAI4yC,IACtB,IAAI23I,EAAUvqL,EAAMlP,IAAII,GACxB,GAAIq5L,EACF,OAAOA,EAIT,GAFAvqL,EAAM+V,IAAI7kB,EAAOuD,IAEZyyL,EACH,IAAIr0L,EAAQs2L,EAsQhB,SAAoBx3L,GAClB,OAnOF,SAAwBA,EAAQ86L,EAAUC,GACxC,IAAIj4L,EAASg4L,EAAS96L,GACtB,OAAOyC,GAAQzC,GAAU8C,EApwB3B,SAAmBsxB,EAAO9K,GAKxB,IAJA,IAAI7hB,GAAS,EACTlM,EAAS+tB,EAAO/tB,OAChBsqC,EAASzR,EAAM74B,SAEVkM,EAAQlM,GACf64B,EAAMyR,EAASp+B,GAAS6hB,EAAO7hB,GAEjC,OAAO2sB,EA4vB2Bs6J,CAAU5rL,EAAQi4L,EAAY/6L,IAiOzD66L,CAAe76L,EAAQ4U,GAAMsjL,IAvQba,CAAWx5L,GAASqV,GAAKrV,GAUhD,OA5vBF,SAAmB60B,EAAO85J,GAIxB,IAHA,IAAIzmL,GAAS,EACTlM,EAAS64B,EAAQA,EAAM74B,OAAS,IAE3BkM,EAAQlM,IAC8B,IAAzC2yL,EAAS95J,EAAM3sB,GAAQA,EAAO2sB,MA+uBpCg6J,CAAUltL,GAAS3B,GAAO,SAASs5L,EAAUh5L,GACvCqB,IAEF23L,EAAWt5L,EADXM,EAAMg5L,IAIRrC,GAAY1zL,EAAQjD,EAAKs3L,GAAU0B,EAAUvB,EAAQE,EAAQH,EAAYx3L,EAAKN,EAAO8O,OAEhFvL,EAkDT,SAASi9I,GAAaxgJ,GACpB,SAAK4V,GAAS5V,KAyYEs5D,EAzYiBt5D,EA0YxBiyL,GAAeA,KAAc34H,MAvYvB68B,GAAWn2F,IAAUmxd,EAAanxd,GAAUqyL,GAAatH,GACzD9sK,KAAK0rB,GAAS3pC,IAqY/B,IAAkBs5D,EAtVlB,SAASw/H,GAAiB1vC,GACxB,IAAI7lJ,EAAS,IAAI6lJ,EAAY79I,YAAY69I,EAAYtjB,YAErD,OADA,IAAInF,GAAWp9H,GAAQshB,IAAI,IAAI87G,GAAWyoB,IACnC7lJ,EA8GT,SAASg0L,GAAW3uI,EAAQjnD,EAAOlB,EAAQq3L,GACzCr3L,IAAWA,EAAS,IAKpB,IAHA,IAAIyH,GAAS,EACTlM,EAAS2F,EAAM3F,SAEVkM,EAAQlM,GAAQ,CACvB,IAAIsE,EAAMqB,EAAMuG,GAEZipC,EAAW2mJ,EACXA,EAAWr3L,EAAOH,GAAMsoD,EAAOtoD,GAAMA,EAAKG,EAAQmoD,QAClD5pD,EAEJi4L,GAAYx2L,EAAQH,OAAkBtB,IAAbmyC,EAAyByX,EAAOtoD,GAAO6wC,GAElE,OAAO1wC,EAkCT,SAAS05L,GAAW30L,EAAKlF,GACvB,IAqKiBN,EACbtB,EAtKAjD,EAAO+J,EAAIqwL,SACf,OAsKgB,WADZn3L,SADasB,EApKAM,KAsKmB,UAAR5B,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAVsB,EACU,OAAVA,GAvKDvE,EAAmB,iBAAP6E,EAAkB,SAAW,QACzC7E,EAAK+J,IAWX,SAASmtL,GAAUlyL,EAAQH,GACzB,IAAIN,EAj8BN,SAAkBS,EAAQH,GACxB,OAAiB,MAAVG,OAAiBzB,EAAYyB,EAAOH,GAg8B/BwgC,CAASrgC,EAAQH,GAC7B,OAAOkgJ,GAAaxgJ,GAASA,OAAQhB,EA7tBvCy2L,GAAKv5L,UAAUq1C,MAnEf,WACEjlC,KAAKupL,SAAWjC,GAAeA,GAAa,MAAQ,IAmEtD6B,GAAKv5L,UAAkB,OAtDvB,SAAoBoE,GAClB,OAAOgM,KAAKwY,IAAIxkB,WAAegM,KAAKupL,SAASv1L,IAsD/Cm1L,GAAKv5L,UAAU0D,IA1Cf,SAAiBU,GACf,IAAI7E,EAAO6Q,KAAKupL,SAChB,GAAIjC,GAAc,CAChB,IAAIrwL,EAAS9H,EAAK6E,GAClB,OAAOiD,IAAWiiL,OAAiBxmL,EAAYuE,EAEjD,OAAOpH,EAAeC,KAAKX,EAAM6E,GAAO7E,EAAK6E,QAAOtB,GAqCtDy2L,GAAKv5L,UAAU4oB,IAzBf,SAAiBxkB,GACf,IAAI7E,EAAO6Q,KAAKupL,SAChB,OAAOjC,QAA6B50L,IAAdvD,EAAK6E,GAAqBnE,EAAeC,KAAKX,EAAM6E,IAwB5Em1L,GAAKv5L,UAAU2oB,IAXf,SAAiBvkB,EAAKN,GAGpB,OAFWsM,KAAKupL,SACXv1L,GAAQszL,SAA0B50L,IAAVgB,EAAuBwlL,EAAiBxlL,EAC9DsM,MAoHTopL,GAAUx5L,UAAUq1C,MAjFpB,WACEjlC,KAAKupL,SAAW,IAiFlBH,GAAUx5L,UAAkB,OArE5B,SAAyBoE,GACvB,IAAI7E,EAAO6Q,KAAKupL,SACZ3tL,EAAQivL,GAAa17L,EAAM6E,GAE/B,QAAI4H,EAAQ,KAIRA,GADYzM,EAAKO,OAAS,EAE5BP,EAAKuW,MAELrJ,GAAOvM,KAAKX,EAAMyM,EAAO,IAEpB,IAyDTwtL,GAAUx5L,UAAU0D,IA7CpB,SAAsBU,GACpB,IAAI7E,EAAO6Q,KAAKupL,SACZ3tL,EAAQivL,GAAa17L,EAAM6E,GAE/B,OAAO4H,EAAQ,OAAIlJ,EAAYvD,EAAKyM,GAAO,IA0C7CwtL,GAAUx5L,UAAU4oB,IA9BpB,SAAsBxkB,GACpB,OAAO62L,GAAa7qL,KAAKupL,SAAUv1L,IAAQ,GA8B7Co1L,GAAUx5L,UAAU2oB,IAjBpB,SAAsBvkB,EAAKN,GACzB,IAAIvE,EAAO6Q,KAAKupL,SACZ3tL,EAAQivL,GAAa17L,EAAM6E,GAO/B,OALI4H,EAAQ,EACVzM,EAAKa,KAAK,CAACgE,EAAKN,IAEhBvE,EAAKyM,GAAO,GAAKlI,EAEZsM,MAkGTqpL,GAASz5L,UAAUq1C,MA/DnB,WACEjlC,KAAKupL,SAAW,CACd,KAAQ,IAAIJ,GACZ,IAAO,IAAK3kK,IAAO4kK,IACnB,OAAU,IAAID,KA4DlBE,GAASz5L,UAAkB,OA/C3B,SAAwBoE,GACtB,OAAO65L,GAAW7tL,KAAMhM,GAAa,OAAEA,IA+CzCq1L,GAASz5L,UAAU0D,IAnCnB,SAAqBU,GACnB,OAAO65L,GAAW7tL,KAAMhM,GAAKV,IAAIU,IAmCnCq1L,GAASz5L,UAAU4oB,IAvBnB,SAAqBxkB,GACnB,OAAO65L,GAAW7tL,KAAMhM,GAAKwkB,IAAIxkB,IAuBnCq1L,GAASz5L,UAAU2oB,IAVnB,SAAqBvkB,EAAKN,GAExB,OADAm6L,GAAW7tL,KAAMhM,GAAKukB,IAAIvkB,EAAKN,GACxBsM,MAgGTo1C,GAAMxlD,UAAUq1C,MApEhB,WACEjlC,KAAKupL,SAAW,IAAIH,IAoEtBh0I,GAAMxlD,UAAkB,OAxDxB,SAAqBoE,GACnB,OAAOgM,KAAKupL,SAAiB,OAAEv1L,IAwDjCohD,GAAMxlD,UAAU0D,IA5ChB,SAAkBU,GAChB,OAAOgM,KAAKupL,SAASj2L,IAAIU,IA4C3BohD,GAAMxlD,UAAU4oB,IAhChB,SAAkBxkB,GAChB,OAAOgM,KAAKupL,SAAS/wK,IAAIxkB,IAgC3BohD,GAAMxlD,UAAU2oB,IAnBhB,SAAkBvkB,EAAKN,GACrB,IAAIqrC,EAAQ/+B,KAAKupL,SACjB,GAAIxqJ,aAAiBqqJ,GAAW,CAC9B,IAAI0E,EAAQ/uJ,EAAMwqJ,SAClB,IAAK/kK,IAAQspK,EAAMp+L,OAASqpL,EAAmB,EAE7C,OADA+U,EAAM99L,KAAK,CAACgE,EAAKN,IACVsM,KAET++B,EAAQ/+B,KAAKupL,SAAW,IAAIF,GAASyE,GAGvC,OADA/uJ,EAAMxmB,IAAIvkB,EAAKN,GACRsM,MAicT,IAAIqsL,GAAa1F,GAAmBjC,EAAQiC,GAAkBh3L,QAyhB9D,WACE,MAAO,IAjhBLk8L,GAtQJ,SAAoBn4L,GAClB,OAAO+zJ,GAAe33J,KAAK4D,IAyX7B,SAASs2L,GAAQt2L,EAAOhE,GAEtB,SADAA,EAAmB,MAAVA,EAAiB6hE,EAAmB7hE,KAE1B,iBAATgE,GAAqBirL,EAAShtK,KAAKje,KAC1CA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQhE,EAmC7C,SAAS0iM,GAAY1+L,GACnB,IAAI64L,EAAO74L,GAASA,EAAMuL,YAG1B,OAAOvL,KAFqB,mBAAR64L,GAAsBA,EAAK38L,WAAc21L,GAY/D,SAASloJ,GAAS2vB,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAOy4H,EAAa31L,KAAKk9D,GACzB,MAAOt8D,IACT,IACE,OAAQs8D,EAAO,GACf,MAAOt8D,KAEX,MAAO,GAyDT,SAAS+5L,GAAG/2L,EAAOkuC,GACjB,OAAOluC,IAAUkuC,GAAUluC,GAAUA,GAASkuC,GAAUA,GAxOrD8yF,IAAYm3D,GAAO,IAAIn3D,GAAS,IAAIF,YAAY,MAAQ4nD,GACxD53J,IAAOqnK,GAAO,IAAIrnK,KAAQi3J,GAC1B3qL,IAvpCY,oBAupCD+6L,GAAO/6L,GAAQC,YAC1BooC,IAAO0yJ,GAAO,IAAI1yJ,KAAQ2iJ,GAC1Br4I,IAppCY,oBAopCDooJ,GAAO,IAAIpoJ,OACzBooJ,GAAS,SAASn4L,GAChB,IAAIuD,EAASwwJ,GAAe33J,KAAK4D,GAC7B64L,EAAOt1L,GAAU0kL,EAAYjoL,EAAMuL,iBAAcvM,EACjD6qM,EAAahR,EAAOlvJ,GAASkvJ,QAAQ75L,EAEzC,GAAI6qM,EACF,OAAQA,GACN,KAAK9V,GAAoB,OAAOrL,EAChC,KAAKsL,GAAe,OAAOjM,EAC3B,KAAKkM,GAAmB,MAnqCf,mBAoqCT,KAAKC,GAAe,OAAO9L,EAC3B,KAAK+L,GAAmB,MAhqCf,mBAmqCb,OAAO5wL,IAuQX,IAAIL,GAAUD,MAAMC,QA2BpB,SAASulC,GAAYzoC,GACnB,OAAgB,MAATA,GAqGT,SAAkBA,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GAAS69D,EAvGnB+rI,CAAS5pM,EAAMhE,UAAYm6F,GAAWn2F,GAiDhE,IAAIq1I,GAAW69C,IAsLf,WACE,OAAO,GApKT,SAAS/8F,GAAWn2F,GAGlB,IAAIsH,EAAMsO,GAAS5V,GAAS+zJ,GAAe33J,KAAK4D,GAAS,GACzD,OAAOsH,GAAOugL,GAAWvgL,GAAOwgL,EA2DlC,SAASlyK,GAAS5V,GAChB,IAAItB,SAAcsB,EAClB,QAASA,IAAkB,UAARtB,GAA4B,YAARA,GA2DzC,SAAS2W,GAAK5U,GACZ,OAAOgoC,GAAYhoC,GAAUq1L,GAAcr1L,GAtuB7C,SAAkBA,GAChB,IAAKi+L,GAAYj+L,GACf,OAAO4yL,GAAW5yL,GAEpB,IAAI8C,EAAS,GACb,IAAK,IAAIjD,KAAOrE,OAAOwE,GACjBtE,EAAeC,KAAKqE,EAAQH,IAAe,eAAPA,GACtCiD,EAAOjH,KAAKgE,GAGhB,OAAOiD,EA4tB8Ck7L,CAASh+L,GA0ChE3D,EAAOD,QA9VP,SAAmBmD,GACjB,OAAO43L,GAAU53L,GAAO,GAAM,M,6CCt3ChC,cAUA,IAAIqlL,EAAmB,IAGnBG,EAAiB,4BAGjBoB,EAAY,IACZC,EAAW,GAGXhpH,EAAmB,iBAGnBypH,EAAU,qBAEVE,EAAW,yBAIXK,EAAU,oBACVC,EAAS,6BAGT9zB,EAAU,gBACVi0B,EAAY,kBACZC,EAAW,iBAIXj0B,EAAe,qBAsBf82B,EAAe,8BAGfE,EAAW,mBAGXkC,EAAiB,GACrBA,EAxBiB,yBAwBYA,EAvBZ,yBAwBjBA,EAvBc,sBAuBYA,EAtBX,uBAuBfA,EAtBe,uBAsBYA,EArBZ,uBAsBfA,EArBsB,8BAqBYA,EApBlB,wBAqBhBA,EApBgB,yBAoBY,EAC5BA,EAAe7F,GAAW6F,EAjDX,kBAkDfA,EAhCqB,wBAgCYA,EAhDnB,oBAiDdA,EAhCkB,qBAgCYA,EAhDhB,iBAiDdA,EAhDe,kBAgDYA,EAAetF,GAC1CsF,EA9Ca,gBA8CYA,EA7CT,mBA8ChBA,EAAelF,GAAakF,EA1CZ,mBA2ChBA,EA1Ca,gBA0CYA,EAzCT,mBA0ChBA,EAxCiB,qBAwCY,EAG7B,IAAIh+D,EAA8B,iBAAV30G,GAAsBA,GAAUA,EAAOve,SAAWA,QAAUue,EAGhF40G,EAA0B,iBAARnkH,MAAoBA,MAAQA,KAAKhP,SAAWA,QAAUgP,KAGxEipC,EAAOi7E,GAAcC,GAAY7mH,SAAS,cAATA,GAGjCklL,EAA4C5wL,IAAYA,EAAQ2yC,UAAY3yC,EAG5E6wL,EAAaD,GAAgC,iBAAV3wL,GAAsBA,IAAWA,EAAO0yC,UAAY1yC,EAGvF6wL,EAAgBD,GAAcA,EAAW7wL,UAAY4wL,EAGrDG,EAAcD,GAAiBx+D,EAAWxgH,QAG1Ck/K,EAAY,WACd,IAEE,IAAIC,EAAQJ,GAAcA,EAAWK,SAAWL,EAAWK,QAAQ,QAAQD,MAE3E,OAAIA,GAKGF,GAAeA,EAAY12E,SAAW02E,EAAY12E,QAAQ,QACjE,MAAOl6G,KAXI,GAeXwxL,EAAmBX,GAAYA,EAASY,aAY5C,SAASjmL,EAAM8wD,EAAMlpD,EAASkC,GAC5B,OAAQA,EAAKtW,QACX,KAAK,EAAG,OAAOs9D,EAAKl9D,KAAKgU,GACzB,KAAK,EAAG,OAAOkpD,EAAKl9D,KAAKgU,EAASkC,EAAK,IACvC,KAAK,EAAG,OAAOgnD,EAAKl9D,KAAKgU,EAASkC,EAAK,GAAIA,EAAK,IAChD,KAAK,EAAG,OAAOgnD,EAAKl9D,KAAKgU,EAASkC,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE3D,OAAOgnD,EAAK9wD,MAAM4H,EAASkC,GA8D7B,IAeMqtB,EAtBW25B,EAAM6Y,EAOnBw/G,EAAa1uL,MAAM/G,UACnB01L,EAAYrpL,SAASrM,UACrB21L,EAAc51L,OAAOC,UAGrB41L,EAAa59I,EAAK,sBAGlB69I,EAAeH,EAAU9/K,SAGzB3V,EAAiB01L,EAAY11L,eAG7B81L,GACEtyJ,EAAM,SAAS13B,KAAK6pL,GAAcA,EAAWz8K,MAAQy8K,EAAWz8K,KAAKyqG,UAAY,KACvE,iBAAmBngF,EAAO,GAQtCuyJ,EAAuBL,EAAY//K,SAGnCqgL,EAAmBJ,EAAa31L,KAAKH,QAGrCo2L,EAAazqL,OAAO,IACtBmqL,EAAa31L,KAAKD,GAAgB4M,QA7KjB,sBA6KuC,QACvDA,QAAQ,yDAA0D,SAAW,KAI5E4rI,EAASg5C,EAAgBz5I,EAAKygG,YAAS31I,EACvCc,EAASo0C,EAAKp0C,OACd6gI,EAAazsF,EAAKysF,WAClBoU,EAAcJ,EAASA,EAAOI,iBAAc/1I,EAC5CszL,GA/Cah5H,EA+CUr9D,OAAOyoB,eA/CXytD,EA+C2Bl2E,OA9CzC,SAASwR,GACd,OAAO6rD,EAAK6Y,EAAU1kE,MA8CtB8kL,EAAet2L,OAAOoE,OACtBkvC,EAAuBsiJ,EAAYtiJ,qBACnC5mC,EAASgpL,EAAWhpL,OACpBurJ,EAAiBp0J,EAASA,EAAOC,iBAAcf,EAE/CU,EAAkB,WACpB,IACE,IAAI45D,EAAOq5H,GAAU12L,OAAQ,kBAE7B,OADAq9D,EAAK,GAAI,GAAI,IACNA,EACP,MAAOt8D,KALU,GASjBk2L,EAAiBv+C,EAASA,EAAOU,cAAWr2I,EAC5Cs0L,EAAYnhL,KAAKC,IACjBohL,GAAYtgI,KAAK8+D,IAGjBlhG,GAAM6hK,GAAUz+I,EAAM,OACtB0/I,GAAejB,GAAU12L,OAAQ,UAUjC24L,GAAc,WAChB,SAASn0L,KACT,OAAO,SAASskB,GACd,IAAKnP,GAASmP,GACZ,MAAO,GAET,GAAIwtK,EACF,OAAOA,EAAaxtK,GAEtBtkB,EAAOvE,UAAY6oB,EACnB,IAAIxhB,EAAS,IAAI9C,EAEjB,OADAA,EAAOvE,eAAY8C,EACZuE,GAZM,GAuBjB,SAASkyL,GAAKliK,GACZ,IAAIrrB,GAAS,EACTlM,EAAoB,MAAXu3B,EAAkB,EAAIA,EAAQv3B,OAG3C,IADAsQ,KAAKilC,UACIrpC,EAAQlM,GAAQ,CACvB,IAAIuvC,EAAQhY,EAAQrrB,GACpBoE,KAAKuY,IAAI0mB,EAAM,GAAIA,EAAM,KA+F7B,SAASmqJ,GAAUniK,GACjB,IAAIrrB,GAAS,EACTlM,EAAoB,MAAXu3B,EAAkB,EAAIA,EAAQv3B,OAG3C,IADAsQ,KAAKilC,UACIrpC,EAAQlM,GAAQ,CACvB,IAAIuvC,EAAQhY,EAAQrrB,GACpBoE,KAAKuY,IAAI0mB,EAAM,GAAIA,EAAM,KA4G7B,SAASoqJ,GAASpiK,GAChB,IAAIrrB,GAAS,EACTlM,EAAoB,MAAXu3B,EAAkB,EAAIA,EAAQv3B,OAG3C,IADAsQ,KAAKilC,UACIrpC,EAAQlM,GAAQ,CACvB,IAAIuvC,EAAQhY,EAAQrrB,GACpBoE,KAAKuY,IAAI0mB,EAAM,GAAIA,EAAM,KA8F7B,SAASmW,GAAMnuB,GACb,IAAI93B,EAAO6Q,KAAKupL,SAAW,IAAIH,GAAUniK,GACzCjnB,KAAK8mB,KAAO33B,EAAK23B,KAmGnB,SAAS0iK,GAAc91L,EAAO+1L,GAC5B,IAAIC,EAAQ9yL,GAAQlD,GAChBi2L,GAASD,GAASE,GAAYl2L,GAC9Bm2L,GAAUH,IAAUC,GAAS5gD,GAASr1I,GACtCo2L,GAAUJ,IAAUC,IAAUE,GAAU1H,GAAazuL,GACrDq2L,EAAcL,GAASC,GAASE,GAAUC,EAC1C7yL,EAAS8yL,EAzjBf,SAAmB71L,EAAGmuL,GAIpB,IAHA,IAAIzmL,GAAS,EACT3E,EAASN,MAAMzC,KAEV0H,EAAQ1H,GACf+C,EAAO2E,GAASymL,EAASzmL,GAE3B,OAAO3E,EAkjBoB2sL,CAAUlwL,EAAMhE,OAAQwiB,QAAU,GACzDxiB,EAASuH,EAAOvH,OAEpB,IAAK,IAAIsE,KAAON,GACT+1L,IAAa55L,EAAeC,KAAK4D,EAAOM,IACvC+1L,IAEQ,UAAP/1L,GAEC61L,IAAkB,UAAP71L,GAA0B,UAAPA,IAE9B81L,IAAkB,UAAP91L,GAA0B,cAAPA,GAA8B,cAAPA,IAEtDg2L,GAAQh2L,EAAKtE,KAElBuH,EAAOjH,KAAKgE,GAGhB,OAAOiD,EAYT,SAASuzL,GAAiBr2L,EAAQH,EAAKN,SACtBhB,IAAVgB,GAAwB+2L,GAAGt2L,EAAOH,GAAMN,WAC9BhB,IAAVgB,GAAyBM,KAAOG,IACnCu2L,GAAgBv2L,EAAQH,EAAKN,GAcjC,SAASi3L,GAAYx2L,EAAQH,EAAKN,GAChC,IAAIk3L,EAAWz2L,EAAOH,GAChBnE,EAAeC,KAAKqE,EAAQH,IAAQy2L,GAAGG,EAAUl3L,UACxChB,IAAVgB,GAAyBM,KAAOG,IACnCu2L,GAAgBv2L,EAAQH,EAAKN,GAYjC,SAASm3L,GAAatiK,EAAOv0B,GAE3B,IADA,IAAItE,EAAS64B,EAAM74B,OACZA,KACL,GAAI+6L,GAAGliK,EAAM74B,GAAQ,GAAIsE,GACvB,OAAOtE,EAGX,OAAQ,EAYV,SAASg7L,GAAgBv2L,EAAQH,EAAKN,GACzB,aAAPM,GAAsBZ,EACxBA,EAAee,EAAQH,EAAK,CAC1B,cAAgB,EAChB,YAAc,EACd,MAASN,EACT,UAAY,IAGdS,EAAOH,GAAON,EA3alBy1L,GAAKv5L,UAAUq1C,MAvEf,WACEjlC,KAAKupL,SAAWjC,GAAeA,GAAa,MAAQ,GACpDtnL,KAAK8mB,KAAO,GAsEdqiK,GAAKv5L,UAAkB,OAzDvB,SAAoBoE,GAClB,IAAIiD,EAAS+I,KAAKwY,IAAIxkB,WAAegM,KAAKupL,SAASv1L,GAEnD,OADAgM,KAAK8mB,MAAQ7vB,EAAS,EAAI,EACnBA,GAuDTkyL,GAAKv5L,UAAU0D,IA3Cf,SAAiBU,GACf,IAAI7E,EAAO6Q,KAAKupL,SAChB,GAAIjC,GAAc,CAChB,IAAIrwL,EAAS9H,EAAK6E,GAClB,OAAOiD,IAAWiiL,OAAiBxmL,EAAYuE,EAEjD,OAAOpH,EAAeC,KAAKX,EAAM6E,GAAO7E,EAAK6E,QAAOtB,GAsCtDy2L,GAAKv5L,UAAU4oB,IA1Bf,SAAiBxkB,GACf,IAAI7E,EAAO6Q,KAAKupL,SAChB,OAAOjC,QAA8B50L,IAAdvD,EAAK6E,GAAsBnE,EAAeC,KAAKX,EAAM6E,IAyB9Em1L,GAAKv5L,UAAU2oB,IAZf,SAAiBvkB,EAAKN,GACpB,IAAIvE,EAAO6Q,KAAKupL,SAGhB,OAFAvpL,KAAK8mB,MAAQ9mB,KAAKwY,IAAIxkB,GAAO,EAAI,EACjC7E,EAAK6E,GAAQszL,SAA0B50L,IAAVgB,EAAuBwlL,EAAiBxlL,EAC9DsM,MAuHTopL,GAAUx5L,UAAUq1C,MApFpB,WACEjlC,KAAKupL,SAAW,GAChBvpL,KAAK8mB,KAAO,GAmFdsiK,GAAUx5L,UAAkB,OAvE5B,SAAyBoE,GACvB,IAAI7E,EAAO6Q,KAAKupL,SACZ3tL,EAAQivL,GAAa17L,EAAM6E,GAE/B,QAAI4H,EAAQ,KAIRA,GADYzM,EAAKO,OAAS,EAE5BP,EAAKuW,MAELrJ,EAAOvM,KAAKX,EAAMyM,EAAO,KAEzBoE,KAAK8mB,MACA,IA0DTsiK,GAAUx5L,UAAU0D,IA9CpB,SAAsBU,GACpB,IAAI7E,EAAO6Q,KAAKupL,SACZ3tL,EAAQivL,GAAa17L,EAAM6E,GAE/B,OAAO4H,EAAQ,OAAIlJ,EAAYvD,EAAKyM,GAAO,IA2C7CwtL,GAAUx5L,UAAU4oB,IA/BpB,SAAsBxkB,GACpB,OAAO62L,GAAa7qL,KAAKupL,SAAUv1L,IAAQ,GA+B7Co1L,GAAUx5L,UAAU2oB,IAlBpB,SAAsBvkB,EAAKN,GACzB,IAAIvE,EAAO6Q,KAAKupL,SACZ3tL,EAAQivL,GAAa17L,EAAM6E,GAQ/B,OANI4H,EAAQ,KACRoE,KAAK8mB,KACP33B,EAAKa,KAAK,CAACgE,EAAKN,KAEhBvE,EAAKyM,GAAO,GAAKlI,EAEZsM,MAyGTqpL,GAASz5L,UAAUq1C,MAtEnB,WACEjlC,KAAK8mB,KAAO,EACZ9mB,KAAKupL,SAAW,CACd,KAAQ,IAAIJ,GACZ,IAAO,IAAK3kK,IAAO4kK,IACnB,OAAU,IAAID,KAkElBE,GAASz5L,UAAkB,OArD3B,SAAwBoE,GACtB,IAAIiD,EAAS42L,GAAW7tL,KAAMhM,GAAa,OAAEA,GAE7C,OADAgM,KAAK8mB,MAAQ7vB,EAAS,EAAI,EACnBA,GAmDToyL,GAASz5L,UAAU0D,IAvCnB,SAAqBU,GACnB,OAAO65L,GAAW7tL,KAAMhM,GAAKV,IAAIU,IAuCnCq1L,GAASz5L,UAAU4oB,IA3BnB,SAAqBxkB,GACnB,OAAO65L,GAAW7tL,KAAMhM,GAAKwkB,IAAIxkB,IA2BnCq1L,GAASz5L,UAAU2oB,IAdnB,SAAqBvkB,EAAKN,GACxB,IAAIvE,EAAO0+L,GAAW7tL,KAAMhM,GACxB8yB,EAAO33B,EAAK23B,KAIhB,OAFA33B,EAAKopB,IAAIvkB,EAAKN,GACdsM,KAAK8mB,MAAQ33B,EAAK23B,MAAQA,EAAO,EAAI,EAC9B9mB,MAwGTo1C,GAAMxlD,UAAUq1C,MA3EhB,WACEjlC,KAAKupL,SAAW,IAAIH,GACpBppL,KAAK8mB,KAAO,GA0EdsuB,GAAMxlD,UAAkB,OA9DxB,SAAqBoE,GACnB,IAAI7E,EAAO6Q,KAAKupL,SACZtyL,EAAS9H,EAAa,OAAE6E,GAG5B,OADAgM,KAAK8mB,KAAO33B,EAAK23B,KACV7vB,GA0DTm+C,GAAMxlD,UAAU0D,IA9ChB,SAAkBU,GAChB,OAAOgM,KAAKupL,SAASj2L,IAAIU,IA8C3BohD,GAAMxlD,UAAU4oB,IAlChB,SAAkBxkB,GAChB,OAAOgM,KAAKupL,SAAS/wK,IAAIxkB,IAkC3BohD,GAAMxlD,UAAU2oB,IArBhB,SAAkBvkB,EAAKN,GACrB,IAAIvE,EAAO6Q,KAAKupL,SAChB,GAAIp6L,aAAgBi6L,GAAW,CAC7B,IAAI0E,EAAQ3+L,EAAKo6L,SACjB,IAAK/kK,IAAQspK,EAAMp+L,OAASqpL,EAAmB,EAG7C,OAFA+U,EAAM99L,KAAK,CAACgE,EAAKN,IACjBsM,KAAK8mB,OAAS33B,EAAK23B,KACZ9mB,KAET7Q,EAAO6Q,KAAKupL,SAAW,IAAIF,GAASyE,GAItC,OAFA3+L,EAAKopB,IAAIvkB,EAAKN,GACdsM,KAAK8mB,KAAO33B,EAAK23B,KACV9mB,MAkIT,IAsWuBojL,GAtWnBqL,GAuWK,SAASt6L,EAAQkuL,EAAU4M,GAMhC,IALA,IAAIrzL,GAAS,EACTqgC,EAAWtsC,OAAOwE,GAClBkB,EAAQ45L,EAAS96L,GACjBzE,EAAS2F,EAAM3F,OAEZA,KAAU,CACf,IAAIsE,EAAMqB,EAAM+tL,GAAY1zL,IAAWkM,GACvC,IAA+C,IAA3CymL,EAASpmJ,EAASjoC,GAAMA,EAAKioC,GAC/B,MAGJ,OAAO9nC,GA1WX,SAASg7L,GAAWz7L,GAClB,OAAa,MAATA,OACehB,IAAVgB,EAAsBi0J,EAAeD,EAEtCE,GAAkBA,KAAkBj4J,OAAO+D,GA6YrD,SAAmBA,GACjB,IAAI07L,EAAQv/L,EAAeC,KAAK4D,EAAOk0J,GACnC5sJ,EAAMtH,EAAMk0J,GAEhB,IACEl0J,EAAMk0J,QAAkBl1J,EACxB,IAAI28L,GAAW,EACf,MAAO3+L,IAET,IAAIuG,EAAS2uL,EAAqB91L,KAAK4D,GACnC27L,IACED,EACF17L,EAAMk0J,GAAkB5sJ,SAEjBtH,EAAMk0J,IAGjB,OAAO3wJ,EA7ZHuwJ,CAAU9zJ,GAwhBhB,SAAwBA,GACtB,OAAOkyL,EAAqB91L,KAAK4D,GAxhB7B+zJ,CAAe/zJ,GAUrB,SAASu8L,GAAgBv8L,GACvB,OAAOw0L,GAAax0L,IAAUy7L,GAAWz7L,IAAUsnL,EAWrD,SAAS9mC,GAAaxgJ,GACpB,SAAK4V,GAAS5V,IAodhB,SAAkBs5D,GAChB,QAAS24H,GAAeA,KAAc34H,EArdd+4Y,CAASryc,MAGnBm2F,GAAWn2F,GAASqyL,EAAatH,GAChC9sK,KAgmBjB,SAAkBq7C,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAOy4H,EAAa31L,KAAKk9D,GACzB,MAAOt8D,IACT,IACE,OAAQs8D,EAAO,GACf,MAAOt8D,KAEX,MAAO,GAzmBa2sC,CAAS3pC,IAsB/B,SAAS2+L,GAAWl+L,GAClB,IAAKmV,GAASnV,GACZ,OAmdJ,SAAsBA,GACpB,IAAI8C,EAAS,GACb,GAAc,MAAV9C,EACF,IAAK,IAAIH,KAAOrE,OAAOwE,GACrB8C,EAAOjH,KAAKgE,GAGhB,OAAOiD,EA1dEq7L,CAAan+L,GAEtB,IAAIo+L,EAAUH,GAAYj+L,GACtB8C,EAAS,GAEb,IAAK,IAAIjD,KAAOG,GACD,eAAPH,IAAyBu+L,GAAY1iM,EAAeC,KAAKqE,EAAQH,KACrEiD,EAAOjH,KAAKgE,GAGhB,OAAOiD,EAcT,SAAS47L,GAAU1+L,EAAQmoD,EAAQr0B,EAAUujK,EAAYhpL,GACnDrO,IAAWmoD,GAGfmyI,GAAQnyI,GAAQ,SAASy1I,EAAU/9L,GAEjC,GADAwO,IAAUA,EAAQ,IAAI4yC,IAClB9rC,GAASyoL,IA+BjB,SAAuB59L,EAAQmoD,EAAQtoD,EAAKi0B,EAAU6qK,EAAWtH,EAAYhpL,GAC3E,IAAIooL,EAAWmI,GAAQ5+L,EAAQH,GAC3B+9L,EAAWgB,GAAQz2I,EAAQtoD,GAC3B+4L,EAAUvqL,EAAMlP,IAAIy+L,GAExB,GAAIhF,EAEF,YADAvC,GAAiBr2L,EAAQH,EAAK+4L,GAGhC,IAAIloJ,EAAW2mJ,EACXA,EAAWZ,EAAUmH,EAAW/9L,EAAM,GAAKG,EAAQmoD,EAAQ95C,QAC3D9P,EAEA66L,OAAwB76L,IAAbmyC,EAEf,GAAI0oJ,EAAU,CACZ,IAAI7D,EAAQ9yL,GAAQm7L,GAChBlI,GAAUH,GAAS3gD,GAASgpD,GAC5BiB,GAAWtJ,IAAUG,GAAU1H,GAAa4P,GAEhDltJ,EAAWktJ,EACPrI,GAASG,GAAUmJ,EACjBp8L,GAAQg0L,GACV/lJ,EAAW+lJ,EA2oBV1C,GADkBx0L,EAxoBMk3L,IAyoBDzuJ,GAAYzoC,GAxoBpCmxC,EAsHR,SAAmByX,EAAQ/zB,GACzB,IAAI3sB,GAAS,EACTlM,EAAS4sD,EAAO5sD,OAEpB64B,IAAUA,EAAQ5xB,MAAMjH,IACxB,OAASkM,EAAQlM,GACf64B,EAAM3sB,GAAS0gD,EAAO1gD,GAExB,OAAO2sB,EA9HU8hK,CAAUO,GAEdf,GACP0D,GAAW,EACX1oJ,EAqER,SAAqB8xF,EAAQ80D,GAC3B,GAAIA,EACF,OAAO90D,EAAOhiI,QAEhB,IAAIjF,EAASinI,EAAOjnI,OAChBuH,EAASwxI,EAAcA,EAAY/4I,GAAU,IAAIinI,EAAO13H,YAAYvP,GAGxE,OADAinI,EAAOvoC,KAAKn3F,GACLA,EA7EU80L,CAAYgG,GAAU,IAE1BiB,GACPzF,GAAW,EAkGM6J,EAjGUrF,EAkG7Bp7D,GAlGuC,GAmFnBmmB,EAees6C,EAAWzgE,OAd9C1/H,EAAS,IAAI6lJ,EAAY79I,YAAY69I,EAAYtjB,YACrD,IAAInF,EAAWp9H,GAAQshB,IAAI,IAAI87G,EAAWyoB,IACnC7lJ,GAYqDmgM,EAAWzgE,OAlGjE9xF,EAmGC,IAAIuyJ,EAAWn4L,YAAY03H,EAAQygE,EAAWr/D,WAAYq/D,EAAW1nM,SAhGtEm1C,EAAW,GAmyBnB,SAAuBnxC,GACrB,IAAKw0L,GAAax0L,IAAUy7L,GAAWz7L,IAAUioL,EAC/C,OAAO,EAET,IAAIljK,EAAQutK,EAAatyL,GACzB,GAAc,OAAV+kB,EACF,OAAO,EAET,IAAI8zK,EAAO18L,EAAeC,KAAK2oB,EAAO,gBAAkBA,EAAMxZ,YAC9D,MAAsB,mBAARstL,GAAsBA,aAAgBA,GAClD9G,EAAa31L,KAAKy8L,IAAS1G,EA1yBlBqN,CAAcnB,IAAanI,GAAYmI,IAC9CltJ,EAAW+lJ,EACPhB,GAAYgB,GACd/lJ,EAq1BR,SAAuBnxC,GACrB,OA5tBF,SAAoB4oD,EAAQjnD,EAAOlB,EAAQq3L,GACzC,IAAI8M,GAASnkM,EACbA,IAAWA,EAAS,IAEpB,IAAIyH,GAAS,EACTlM,EAAS2F,EAAM3F,OAEnB,OAASkM,EAAQlM,GAAQ,CACvB,IAAIsE,EAAMqB,EAAMuG,GAEZipC,EAAW2mJ,EACXA,EAAWr3L,EAAOH,GAAMsoD,EAAOtoD,GAAMA,EAAKG,EAAQmoD,QAClD5pD,OAEaA,IAAbmyC,IACFA,EAAWyX,EAAOtoD,IAEhBskM,EACF5N,GAAgBv2L,EAAQH,EAAK6wC,GAE7B8lJ,GAAYx2L,EAAQH,EAAK6wC,GAG7B,OAAO1wC,EAqsBA82L,CAAWv3L,EAAOy4L,GAAOz4L,IAt1Bfy/L,CAAcvI,GAEjBthL,GAASshL,KAAa/gG,GAAW+gG,KACzC/lJ,EAwQR,SAAyB1wC,GACvB,MAAqC,mBAAtBA,EAAO8K,aAA8BmzL,GAAYj+L,GAE5D,GADAm0L,GAAWtC,EAAa7xL,IA1QX63L,CAAgB+F,KAI7BxE,GAAW,EAiFjB,IAAyB6J,EACnBzgE,EAfoBmmB,EACpB7lJ,EA2iBN,IAA2BvD,EA5mBrB65L,IAEF/qL,EAAM+V,IAAIw5K,EAAUltJ,GACpBiuJ,EAAUjuJ,EAAUktJ,EAAU9pK,EAAUujK,EAAYhpL,GACpDA,EAAc,OAAEuvL,IAElBvH,GAAiBr2L,EAAQH,EAAK6wC,GAzF1BuuJ,CAAcj/L,EAAQmoD,EAAQtoD,EAAKi0B,EAAU4qK,GAAWrH,EAAYhpL,OAEjE,CACH,IAAIqiC,EAAW2mJ,EACXA,EAAWuH,GAAQ5+L,EAAQH,GAAM+9L,EAAW/9L,EAAM,GAAKG,EAAQmoD,EAAQ95C,QACvE9P,OAEaA,IAAbmyC,IACFA,EAAWktJ,GAEbvH,GAAiBr2L,EAAQH,EAAK6wC,MAE/BsnJ,IAwFL,SAASsI,GAASznI,EAAM93B,GACtB,OAAOw/J,GA6WT,SAAkB1nI,EAAM93B,EAAO2wC,GAE7B,OADA3wC,EAAQ8xJ,OAAoBt0L,IAAVwiC,EAAuB83B,EAAKt9D,OAAS,EAAKwlC,EAAO,GAC5D,WAML,IALA,IAAIlvB,EAAOrD,UACP/G,GAAS,EACTlM,EAASs3L,EAAUhhL,EAAKtW,OAASwlC,EAAO,GACxC3M,EAAQ5xB,MAAMjH,KAETkM,EAAQlM,GACf64B,EAAM3sB,GAASoK,EAAKkvB,EAAQt5B,GAE9BA,GAAS,EAET,IADA,IAAI8hM,EAAY/mM,MAAMu+B,EAAQ,KACrBt5B,EAAQs5B,GACfwoK,EAAU9hM,GAASoK,EAAKpK,GAG1B,OADA8hM,EAAUxoK,GAAS2wC,EAAUt9C,GACtBrsB,EAAM8wD,EAAMhtD,KAAM09L,IA9XR/I,CAAS3nI,EAAM93B,EAAOshJ,IAAWxpH,EAAO,IAyL7D,SAAS6gI,GAAW30L,EAAKlF,GACvB,IA4GiBN,EACbtB,EA7GAjD,EAAO+J,EAAIqwL,SACf,OA6GgB,WADZn3L,SADasB,EA3GAM,KA6GmB,UAAR5B,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAVsB,EACU,OAAVA,GA9GDvE,EAAmB,iBAAP6E,EAAkB,SAAW,QACzC7E,EAAK+J,IAWX,SAASmtL,GAAUlyL,EAAQH,GACzB,IAAIN,EAnhCN,SAAkBS,EAAQH,GACxB,OAAiB,MAAVG,OAAiBzB,EAAYyB,EAAOH,GAkhC/BwgC,CAASrgC,EAAQH,GAC7B,OAAOkgJ,GAAaxgJ,GAASA,OAAQhB,EAmDvC,SAASs3L,GAAQt2L,EAAOhE,GACtB,IAAI0C,SAAcsB,EAGlB,SAFAhE,EAAmB,MAAVA,EAAiB6hE,EAAmB7hE,KAGlC,UAAR0C,GACU,UAARA,GAAoBusL,EAAShtK,KAAKje,KAChCA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQhE,EA2DjD,SAAS0iM,GAAY1+L,GACnB,IAAI64L,EAAO74L,GAASA,EAAMuL,YAG1B,OAAOvL,KAFqB,mBAAR64L,GAAsBA,EAAK38L,WAAc21L,GAyE/D,SAASwN,GAAQ5+L,EAAQH,GACvB,IAAY,gBAARA,GAAgD,mBAAhBG,EAAOH,KAIhC,aAAPA,EAIJ,OAAOG,EAAOH,GAWhB,IAAI0gM,GAWJ,SAAkB1nI,GAChB,IAAI7yD,EAAQ,EACR8jM,EAAa,EAEjB,OAAO,WACL,IAAIC,EAAQhX,KACRxtH,EAAY6gH,GAAY2jB,EAAQD,GAGpC,GADAA,EAAaC,EACTxkI,EAAY,GACd,KAAMv/D,GAASmgL,EACb,OAAO33K,UAAU,QAGnBxI,EAAQ,EAEV,OAAO6yD,EAAK9wD,WAAMxJ,EAAWiQ,YA3Bfg7L,CAnZKvqM,EAA4B,SAAS45D,EAAM1qB,GAChE,OAAOlvC,EAAe45D,EAAM,WAAY,CACtC,cAAgB,EAChB,YAAc,EACd,OA+3Bct5D,EA/3BI4uC,EAg4Bb,WACL,OAAO5uC,IAh4BP,UAAY,IA83BhB,IAAkBA,GAn4BsB8iL,IAqexC,SAASiU,GAAG/2L,EAAOkuC,GACjB,OAAOluC,IAAUkuC,GAAUluC,GAAUA,GAASkuC,GAAUA,EAqB1D,IAAIgoJ,GAAcqG,GAAgB,WAAa,OAAOttL,UAApB,IAAsCstL,GAAkB,SAASv8L,GACjG,OAAOw0L,GAAax0L,IAAU7D,EAAeC,KAAK4D,EAAO,YACtDuvC,EAAqBnzC,KAAK4D,EAAO,WA0BlCkD,GAAUD,MAAMC,QA2BpB,SAASulC,GAAYzoC,GACnB,OAAgB,MAATA,GAAiB4pM,GAAS5pM,EAAMhE,UAAYm6F,GAAWn2F,GAiDhE,IAAIq1I,GAAW69C,GAsUf,WACE,OAAO,GApTT,SAAS/8F,GAAWn2F,GAClB,IAAK4V,GAAS5V,GACZ,OAAO,EAIT,IAAIsH,EAAMm0L,GAAWz7L,GACrB,OAAOsH,GAAOugL,GAAWvgL,GAAOwgL,GAAUxgL,GAAOkgL,GAAYlgL,GAAO4gL,EA6BtE,SAAS0hB,GAAS5pM,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GAAS69D,EA4B7C,SAASjoD,GAAS5V,GAChB,IAAItB,SAAcsB,EAClB,OAAgB,MAATA,IAA0B,UAARtB,GAA4B,YAARA,GA2B/C,SAAS81L,GAAax0L,GACpB,OAAgB,MAATA,GAAiC,iBAATA,EA6DjC,IAAIyuL,GAAeD,EAvnDnB,SAAmBl1H,GACjB,OAAO,SAASt5D,GACd,OAAOs5D,EAAKt5D,IAqnDsBmwL,CAAU3B,GAj7BhD,SAA0BxuL,GACxB,OAAOw0L,GAAax0L,IAClB4pM,GAAS5pM,EAAMhE,WAAamxL,EAAesO,GAAWz7L,KAo+B1D,SAASy4L,GAAOh4L,GACd,OAAOgoC,GAAYhoC,GAAUq1L,GAAcr1L,GAAQ,GAAQk+L,GAAWl+L,GAkCxE,IAxvBwBukM,GAwvBpBpzJ,IAxvBoBozJ,GAwvBO,SAASvkM,EAAQmoD,EAAQr0B,EAAUujK,GAChEqH,GAAU1+L,EAAQmoD,EAAQr0B,EAAUujK,IAxvB7BiJ,IAAS,SAAStgM,EAAQwkM,GAC/B,IAAI/8L,GAAS,EACTlM,EAASipM,EAAQjpM,OACjB87L,EAAa97L,EAAS,EAAIipM,EAAQjpM,EAAS,QAAKgD,EAChDkmM,EAAQlpM,EAAS,EAAIipM,EAAQ,QAAKjmM,EAWtC,IATA84L,EAAckN,GAAShpM,OAAS,GAA0B,mBAAd87L,GACvC97L,IAAU87L,QACX94L,EAEAkmM,GAuIR,SAAwBllM,EAAOkI,EAAOzH,GACpC,IAAKmV,GAASnV,GACZ,OAAO,EAET,IAAI/B,SAAcwJ,EAClB,SAAY,UAARxJ,EACK+pC,GAAYhoC,IAAW61L,GAAQpuL,EAAOzH,EAAOzE,QACrC,UAAR0C,GAAoBwJ,KAASzH,IAE7Bs2L,GAAGt2L,EAAOyH,GAAQlI,GAhJZmlM,CAAeF,EAAQ,GAAIA,EAAQ,GAAIC,KAClDpN,EAAa97L,EAAS,OAAIgD,EAAY84L,EACtC97L,EAAS,GAEXyE,EAASxE,OAAOwE,KACPyH,EAAQlM,GAAQ,CACvB,IAAI4sD,EAASq8I,EAAQ/8L,GACjB0gD,GACFo8I,GAASvkM,EAAQmoD,EAAQ1gD,EAAO4vL,GAGpC,OAAOr3L,MA+wBX,SAASqiL,GAAS9iL,GAChB,OAAOA,EAoBTlD,EAAOD,QAAU+0C,K,0CC96DjB,IAAIy2I,EAAY,kBASZt0B,EANc93J,OAAOC,UAMQ4V,SAyB7B5O,EAAUD,MAAMC,QAkDpBpG,EAAOD,QALP,SAAkBmD,GAChB,MAAuB,iBAATA,IACVkD,EAAQlD,IAtBd,SAAsBA,GACpB,QAASA,GAAyB,iBAATA,EAqBHw0L,CAAax0L,IAAU+zJ,EAAe33J,KAAK4D,IAAUqoL,I,cCjF7E,IAAIJ,EAAY,kBAoChB,IAPiB3uH,EAAM6Y,EAOnBy/G,EAAYrpL,SAASrM,UACrB21L,EAAc51L,OAAOC,UAGrB61L,EAAeH,EAAU9/K,SAGzB3V,EAAiB01L,EAAY11L,eAG7Bg2L,EAAmBJ,EAAa31L,KAAKH,QAOrC83J,EAAiB89B,EAAY//K,SAG7BwgL,GA3Bah5H,EA2BUr9D,OAAOyoB,eA3BXytD,EA2B2Bl2E,OA1BzC,SAASwR,GACd,OAAO6rD,EAAK6Y,EAAU1kE,MAiG1B3Q,EAAOD,QAdP,SAAuBmD,GACrB,IAjCF,SAAsBA,GACpB,QAASA,GAAyB,iBAATA,EAgCpBw0L,CAAax0L,IACd+zJ,EAAe33J,KAAK4D,IAAUioL,GA3GpC,SAAsBjoL,GAGpB,IAAIuD,GAAS,EACb,GAAa,MAATvD,GAA0C,mBAAlBA,EAAM8R,SAChC,IACEvO,KAAYvD,EAAQ,IACpB,MAAOhD,IAEX,OAAOuG,EAkGwC4td,CAAanxd,GAC1D,OAAO,EAET,IAAI+kB,EAAQutK,EAAatyL,GACzB,GAAc,OAAV+kB,EACF,OAAO,EAET,IAAI8zK,EAAO18L,EAAeC,KAAK2oB,EAAO,gBAAkBA,EAAMxZ,YAC9D,MAAuB,mBAARstL,GACbA,aAAgBA,GAAQ9G,EAAa31L,KAAKy8L,IAAS1G,I,6BCtIvD,IAAIo/R,EAAc,EAAQ,MACtBC,EAAY,EAAQ,MACpBC,EAAQ,QAQZ50d,EAAQ0M,MAAQ,SAAUqV,GACzB,OAPmBynB,EAODznB,EAAIzZ,MAAM,KAAKK,KAAI,SAAU46J,GAC9C,IAAIl0J,EAAM,GAuBV,OArBAk0J,EAAGhiE,OAAOj5F,MAAM,OAAOuB,SAAQ,SAAU05J,EAAItkK,GAC5C,GAAU,IAANA,EACH,OAAOoQ,EAAIjD,IAAMm3J,EAGlB,IAAIpgK,EAAQogK,EAAGvqE,UAAU,EAAGuqE,EAAGpkK,OAAS,GACpCmhH,EAAUijD,EAAGA,EAAGpkK,OAAS,GACzB01d,EAAStyc,SAASpf,EAAO,IACzB2xd,EAAWpkS,WAAWvtL,GAE1B,GAAgB,MAAZm9G,GAAmBs0W,EAAMxzc,KAAKje,GACjCkM,EAAIy8F,MAAQ+oX,OACN,GAAgB,MAAZv0W,GAAmBs0W,EAAMxzc,KAAKje,GACxCkM,EAAIqiE,OAASmjZ,MACP,IAAgB,MAAZv0W,GAAoBo0W,EAAYI,GAG1C,MAAM,IAAIxzd,MAAM,8BAAgCiiK,EAAK,KAFrDl0J,EAAI0ld,QAAUD,MAMTzld,MA9BGmmC,OAAOjtB,QAAO,SAAUg7I,EAAItkK,GACtC,OAAOwN,KAAKuV,UAAUuhJ,KAAQ92J,KAAKuV,UAAUwnB,EAAIvqC,EAAI,OAFvD,IAAoBuqC,GAmCpBxpC,EAAQgiB,UAAY,SAAUwnB,GAC7B,OAAOmrb,EAAUnrb,EAAI7gC,KAAI,SAAU46J,GAClC,IAAKA,EAAGn3J,IACP,MAAM,IAAI9K,MAAM,oBAGjB,IAAI+N,EAAM,CAACk0J,EAAGn3J,KAcd,OAZIm3J,EAAGz3D,OACNz8F,EAAI5P,KAAK8jK,EAAGz3D,MAAQ,KAGjBy3D,EAAG7xF,QACNriE,EAAI5P,KAAK8jK,EAAG7xF,OAAS,KAGlB6xF,EAAGwxT,SACN1ld,EAAI5P,KAAK8jK,EAAGwxT,QAAU,KAGhB1ld,EAAIrD,KAAK,SACbA,KAAK,Q,6BC5DV/L,EAAOD,QAAUihC,OAAO24D,OAAS,SAAU7mE,GAC1C,OAAOA,GAAMA,I,8BCFd,YA2CA,IACK1jB,EASD,QAASsO,EACyB,mBAA1BirB,IAAIvpC,UAAUwK,UAVrBwF,GAAM,EAEV,IAAKu5B,IAAI,EAAC,IAAQ/+B,SAAQ,SAAU05J,GACnCl0J,EAAMk0J,MAGQ,IAARl0J,GAKNpP,EAAOD,QAxBT,SAA4BwpC,GAC3B,IAAIn6B,EAAM,GAMV,OAJA,IAAKu5B,IAAIY,GAAM3/B,SAAQ,SAAU05J,GAChCl0J,EAAI5P,KAAK8jK,MAGHl0J,GAmBNpP,EAAOD,QAvCT,SAAiBwpC,GAChB,IAAIg2J,EAAO,IAAI52J,IACf,OAAOY,EAAIjhB,QAAO,SAAUg7I,GAC3B,OAAKi8B,EAAKv3K,IAAIs7I,KACbi8B,EAAKj8I,IAAIggH,IACF,OAqCTtjK,EAAOD,QAvDR,SAAmBwpC,GAGlB,IAFA,IAAIn6B,EAAM,GAEDpQ,EAAI,EAAGA,EAAIuqC,EAAIrqC,OAAQF,KACF,IAAzBoQ,EAAIxG,QAAQ2gC,EAAIvqC,KACnBoQ,EAAI5P,KAAK+pC,EAAIvqC,IAIf,OAAOoQ,K,+CCZRrP,EAAQsD,YAAa,EACrBtD,EAAQsE,aAAU,EAElB,IAAI+oQ,EAAehoQ,EAAuB,EAAQ,MAE9C2vd,EAAa3vd,EAAuB,EAAQ,MAE5CszO,EAAatzO,EAAuB,EAAQ,MAE5CioQ,EAAWjoQ,EAAuB,EAAQ,MAE1C4vd,EAAU5vd,EAAuB,EAAQ,MAEzC6vd,EAAU7vd,EAAuB,EAAQ,OAEzCm5U,EAASn5U,EAAuB,EAAQ,MAExCg5C,EAAQh5C,EAAuB,EAAQ,MAEvC8vd,EAAQ9vd,EAAuB,EAAQ,MAEvCmuC,EAAQnuC,EAAuB,EAAQ,MAE3C,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAoBvF,SAAS6hQ,IACP,IAAK,IAAI91M,EAAOr+C,UAAUjT,OAAQ2oF,EAAU,IAAI1hF,MAAMqqD,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAClFo3B,EAAQp3B,GAAQt+C,UAAUs+C,GAO5B,OAJuB,IAAnBo3B,EAAQ3oF,QAAgBiH,MAAMC,QAAQyhF,EAAQ,MAChDA,EAAUA,EAAQ,IAGb,IAAIktY,EAAW1wd,QAAQwjF,GA4EhCy+K,EAAQt+K,OAAS,SAAgBhmF,EAAMgmM,GACrC,SAASmtR,IACP,IAAIC,EAAcptR,EAAYt8L,WAAM,EAAQyG,WAG5C,OAFAijd,EAAYlvI,cAAgBlkV,EAC5Bozd,EAAYnvI,gBAAiB,IAAI8uI,EAAW1wd,SAAUmvB,QAC/C4hc,EAGT,IAAI7mb,EAYJ,OAXApvC,OAAOyD,eAAeuyd,EAAS,UAAW,CACxCryd,IAAK,WAEH,OADKyrC,IAAOA,EAAQ4mb,KACb5mb,KAIX4mb,EAAQtjd,QAAU,SAAUi7P,EAAKuoN,EAAaC,GAC5C,OAAOhvN,EAAQ,CAAC6uN,EAAQG,KAAczjd,QAAQi7P,EAAKuoN,IAG9CF,GAeT7uN,EAAQvkP,UAAY22N,EAAWr0O,QAoB/BiiQ,EAAQ75P,MAAQ8xU,EAAOl6U,QAUvBiiQ,EAAQvpF,OAASk4S,EAAQ5wd,QAUzBiiQ,EAAQ7rN,KAAO2D,EAAM/5C,QAYrBiiQ,EAAQxuC,QAAU,SAAUj8F,GAC1B,OAAO,IAAIwxI,EAAShpQ,QAAQw3H,IAc9ByqI,EAAQg/I,OAAS,SAAUzpR,GACzB,OAAO,IAAIm5V,EAAQ3wd,QAAQw3H,IAc7ByqI,EAAQ0I,KAAO,SAAUnzI,GACvB,OAAO,IAAIuxI,EAAa/oQ,QAAQw3H,IAclCyqI,EAAQv9K,KAAO,SAAU8yC,GACvB,OAAO,IAAIq5V,EAAM7wd,QAAQw3H,IAc3ByqI,EAAQlvN,KAAO,SAAUykF,GACvB,OAAO,IAAItoF,EAAMlvC,QAAQw3H,IAG3B,IAAIouI,EAAW3D,EACfvmQ,EAAQsE,QAAU4lQ,EAClBjqQ,EAAOD,QAAUA,EAAQsE,S,8EC3RzB,YAEAtE,EAAQsD,YAAa,EACrBtD,EAAQsE,aAAU,EAElB,IAAIkxd,EAAanwd,EAAuB,EAAQ,MAE5CsoF,EAAQtoF,EAAuB,EAAQ,MAE3C,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvF,IAmVIwlQ,EAjVJ,WACE,SAASurN,EAAazzc,EAAWq1B,EAAMp3B,GACrCxQ,KAAKuS,UAAYA,EACjBvS,KAAKimd,QAAUz1c,EAAKtX,KAAO,GAC3B8G,KAAK4nC,KAAOA,EACZ5nC,KAAKwQ,KAAOA,EAGd,IAAIuqP,EAASirN,EAAap2d,UAsU1B,OApUAmrQ,EAAO7zO,MAAQ,WACb,YAA6B,IAAlBlnB,KAAKwQ,KAAKtX,MACV8G,KAAKwQ,KAAKtX,IAGd8G,KAAKsnE,WAAW53E,OAAS,GAGlCqrQ,EAAOzzL,SAAW,WAChB,IAAIjoB,EAAQr/C,KAeZ,OAbKA,KAAKkmd,eACRlmd,KAAKkmd,aAAe,GACpBlmd,KAAK4nC,KAAKo2N,MAAK,SAAU5qP,GACvB,GAAIA,EAAKkpC,QAAUlpC,EAAKkpC,OAAO1tB,MAAM11B,IAAK,CACxC,IAAIA,EAAMka,EAAKkpC,OAAO1tB,MAAM11B,KAEa,IAArCmmD,EAAM6ma,aAAa9sd,QAAQF,IAC7BmmD,EAAM6ma,aAAal2d,KAAKkJ,QAMzB8G,KAAKkmd,cAGdnrN,EAAO3rM,SAAW,WAChB,QAAmC,IAAxBpvD,KAAKimd,QAAQluZ,OACtB,OAAO/3D,KAAKimd,QAAQluZ,OAGtB,IAAIouZ,EAAanmd,KAAKimd,QAAQE,WAE9B,YAA0B,IAAfA,IAA6C,IAAfA,MAIrCnmd,KAAKsnE,WAAW53E,QACXsQ,KAAKsnE,WAAW57C,MAAK,SAAUl8B,GACpC,OAAOA,EAAEuoE,YAOfgjM,EAAOqrN,iBAAmB,WACxB,YAA2C,IAAhCpmd,KAAKimd,QAAQlsI,eACf/5U,KAAKimd,QAAQlsI,gBAGlB/5U,KAAKsnE,WAAW53E,QACXsQ,KAAKsnE,WAAW57C,MAAK,SAAUl8B,GACpC,OAAOA,EAAE62d,kBAOftrN,EAAOurN,gBAAkB,WACvB,IAAgC,IAA5Btmd,KAAKimd,QAAQE,WAGjB,IAFA,IAAI/yc,EAEK5jB,EAAIwQ,KAAK4nC,KAAK10B,MAAMxjB,OAAS,EAAGF,GAAK,EAAGA,IAE7B,aADlB4jB,EAAOpT,KAAK4nC,KAAK10B,MAAM1jB,IACd4C,MAEwC,IAA7CghB,EAAKtZ,KAAKV,QAAQ,wBACpB4G,KAAK4nC,KAAKwhH,YAAY55J,IAK5BurQ,EAAOwrN,kBAAoB,WACzB,IAAIxoa,EAAS/9C,KAETwmd,EAAU,GACdxmd,KAAK4nC,KAAKo2N,MAAK,SAAU5qP,GACvB,GAAIA,EAAKkpC,OAAQ,CACf,IAAIvrB,EAAO3d,EAAKkpC,OAAO1tB,MAAMmC,KAE7B,GAAIA,IAASy1b,EAAQz1b,GAAO,CAC1By1b,EAAQz1b,IAAQ,EAEhB,IAAIy/D,EAAWzyC,EAAOyyC,SAASz/D,GAE/BgtB,EAAO7kD,IAAIm/U,iBAAiB7nP,EAAUp9E,EAAKkpC,OAAO1tB,MAAM0uO,WAMhEvC,EAAO0rN,cAAgB,WAChB,IAAIhpd,EAAYuC,KAAKsnE,WAAYi3L,EAAW5nQ,MAAMC,QAAQ6G,GAAYo2B,EAAK,EAAhF,IAAmFp2B,EAAY8gQ,EAAW9gQ,EAAYA,EAAUjK,OAAOk6B,cAAe,CACpJ,IAAIwF,EAEJ,GAAIqrO,EAAU,CACZ,GAAI1qO,GAAMp2B,EAAU/N,OAAQ,MAC5BwjC,EAAOz1B,EAAUo2B,SACZ,CAEL,IADAA,EAAKp2B,EAAUC,QACRC,KAAM,MACbu1B,EAAOW,EAAGngC,MAGZ,IAAImO,EAAOqxB,EACPnC,EAAO/wB,KAAKwwF,SAAS3uF,EAAKy9I,MAE1B13G,EAAO/lC,EAAK+lC,MAAQs2C,EAAMrpF,QAAQ+nQ,QAAQ/6P,EAAKy9I,MAE/CpmJ,OAAM,GAE0B,IAAhC8G,KAAKimd,QAAQlsI,gBACf7gV,EAAM,IAAI6sd,EAAWlxd,QAAQkiV,kBAAkBl1U,EAAK/H,OAE5CigV,iBACN7gV,EAAI6gV,eAAiB7gV,EAAI6gV,eAAe7gV,KAAI,WAC1C,OAAO,SAIXA,EAAM2I,EAAK6kd,WAGb1md,KAAK9G,IAAIu/U,eAAev/U,EAAK63B,EAAM/wB,KAAKwwF,SAAS5oD,MAIrDmzN,EAAO4rN,aAAe,WACpB,QAAI3md,KAAKovD,kBAI8B,IAA5BpvD,KAAKimd,QAAQE,WACfnmd,KAAKimd,QAAQE,YAGlBnmd,KAAKsnE,WAAW53E,QACXsQ,KAAKsnE,WAAW57C,MAAK,SAAUl8B,GACpC,OAAOA,EAAE22d,gBAOfprN,EAAO6rN,SAAW,SAAkBt0c,GAClC,OAAI+1H,EACKA,EAAOt3G,KAAKze,GAAK9M,SAAS,UAG5B/Q,OAAO+mO,KAAK7vB,SAASriH,mBAAmBh3E,MAGjDyoP,EAAO8rN,cAAgB,WACrB,IAAI7uX,EAGFA,EADEh4F,KAAKovD,WACG,gCAAkCpvD,KAAK4md,SAAS5md,KAAK9G,IAAIsM,YACvB,iBAA5BxF,KAAKimd,QAAQE,WACnBnmd,KAAKimd,QAAQE,WAEbnmd,KAAK8md,aAAe,OAGhC,IAAIC,EAAM,MACwB,IAA9B/md,KAAKs9P,IAAIlkQ,QAAQ,UAAgB2td,EAAM,QAC3C/md,KAAKs9P,KAAOypN,EAAM,wBAA0B/uX,EAAU,OAGxD+iK,EAAO+rN,WAAa,WAClB,OAAI9md,KAAKwQ,KAAKwgB,GACLhxB,KAAKwwF,SAASxwF,KAAKwQ,KAAKwgB,IAG7BhxB,KAAKwQ,KAAKugB,KACL/wB,KAAKwwF,SAASxwF,KAAKwQ,KAAKugB,MAG1B,UAGTgqO,EAAOisN,YAAc,WAMnB,OALAhnd,KAAKind,iBACDjnd,KAAKomd,oBAAoBpmd,KAAKumd,oBAC9Bvmd,KAAKsnE,WAAW53E,OAAS,GAAGsQ,KAAKymd,gBACjCzmd,KAAK2md,gBAAgB3md,KAAK6md,gBAE1B7md,KAAKovD,WACA,CAACpvD,KAAKs9P,KAGR,CAACt9P,KAAKs9P,IAAKt9P,KAAK9G,MAGzB6hQ,EAAOvqK,SAAW,SAAkB8uD,GAClC,GAA0B,IAAtBA,EAAKlmJ,QAAQ,KAAY,OAAOkmJ,EACpC,GAAI,YAAY3tI,KAAK2tI,GAAO,OAAOA,EACnC,IAAIvuH,EAAO/wB,KAAKwQ,KAAKwgB,GAAKktD,EAAMrpF,QAAQ+nQ,QAAQ58P,KAAKwQ,KAAKwgB,IAAM,IAQhE,MANuC,iBAA5BhxB,KAAKimd,QAAQE,aACtBp1b,EAAOmtD,EAAMrpF,QAAQ+nQ,QAAQ1+K,EAAMrpF,QAAQ9D,QAAQggC,EAAM/wB,KAAKimd,QAAQE,cAGxE7mU,EAAOphE,EAAMrpF,QAAQ27F,SAASz/D,EAAMuuH,GAEV,OAAtBphE,EAAMrpF,QAAQwxP,IACT/mG,EAAK7iJ,QAAQ,MAAO,KAGtB6iJ,GAGTy7G,EAAOmsN,WAAa,SAAoB9zc,GACtC,OAAIpT,KAAKimd,QAAQl1b,KACR/wB,KAAKimd,QAAQl1b,KAGf/wB,KAAKwwF,SAASp9E,EAAKkpC,OAAO1tB,MAAMmC,OAGzCgqO,EAAOksN,eAAiB,WACtB,IAAI7zZ,EAASpzD,KAEbA,KAAKs9P,IAAM,GACXt9P,KAAK9G,IAAM,IAAI6sd,EAAWlxd,QAAQiiV,mBAAmB,CACnDx3L,KAAMt/I,KAAK8md,eAEb,IAEInvc,EAAO6E,EAFP/K,EAAO,EACPwpP,EAAS,EAEbj7P,KAAKuS,UAAUvS,KAAK4nC,MAAM,SAAUt1B,EAAKc,EAAMhhB,GAyC7C,GAxCAghE,EAAOkqM,KAAOhrP,EAEVc,GAAiB,QAAThhB,IACNghB,EAAKkpC,QAAUlpC,EAAKkpC,OAAOpnB,MAC7Bk+B,EAAOl6D,IAAI++U,WAAW,CACpB37R,OAAQ8W,EAAO8zZ,WAAW9zc,GAC1B4kU,UAAW,CACTvmU,KAAMA,EACNwpP,OAAQA,EAAS,GAEnBjqM,SAAU,CACRv/C,KAAM2B,EAAKkpC,OAAOpnB,MAAMzjB,KACxBwpP,OAAQ7nP,EAAKkpC,OAAOpnB,MAAM+lO,OAAS,KAIvC7nM,EAAOl6D,IAAI++U,WAAW,CACpB37R,OAAQ,cACR0U,SAAU,CACRv/C,KAAM,EACNwpP,OAAQ,GAEV+8E,UAAW,CACTvmU,KAAMA,EACNwpP,OAAQA,EAAS,OAMzBtjP,EAAQrF,EAAI5W,MAAM,SAGhB+V,GAAQkG,EAAMjoB,OACd8sB,EAAOlK,EAAIovB,YAAY,MACvBu5N,EAAS3oP,EAAI5iB,OAAS8sB,GAEtBy+O,GAAU3oP,EAAI5iB,OAGZ0jB,GAAiB,UAAThhB,EAAkB,CAC5B,IAAIV,EAAI0hB,EAAKjM,QAAU,CACrB2zP,KAAM,KAGU,SAAd1nP,EAAKhhB,MAAmBghB,IAAS1hB,EAAE8qB,MAAQ9qB,EAAEopQ,KAAKw5E,aAChDlhU,EAAKkpC,QAAUlpC,EAAKkpC,OAAO1hB,IAC7Bw4B,EAAOl6D,IAAI++U,WAAW,CACpB37R,OAAQ8W,EAAO8zZ,WAAW9zc,GAC1B4kU,UAAW,CACTvmU,KAAMA,EACNwpP,OAAQA,EAAS,GAEnBjqM,SAAU,CACRv/C,KAAM2B,EAAKkpC,OAAO1hB,IAAInpB,KACtBwpP,OAAQ7nP,EAAKkpC,OAAO1hB,IAAIqgO,OAAS,KAIrC7nM,EAAOl6D,IAAI++U,WAAW,CACpB37R,OAAQ,cACR0U,SAAU,CACRv/C,KAAM,EACNwpP,OAAQ,GAEV+8E,UAAW,CACTvmU,KAAMA,EACNwpP,OAAQA,EAAS,WAS/BF,EAAO5tM,SAAW,WAGhB,GAFAntD,KAAKsmd,kBAEDtmd,KAAKknB,QACP,OAAOlnB,KAAKgnd,cAGd,IAAI/vd,EAAS,GAIb,OAHA+I,KAAKuS,UAAUvS,KAAK4nC,MAAM,SAAUp4C,GAClCyH,GAAUzH,KAEL,CAACyH,IAGH+ud,EA9UT,GAkVAz1d,EAAQsE,QAAU4lQ,EAClBjqQ,EAAOD,QAAUA,EAAQsE,U,wCCzVzB,IAAIsyd,EAAe,mEAAmEtud,MAAM,IAK5FtI,EAAQ4hK,OAAS,SAAUg5B,GACzB,GAAI,GAAKA,GAAUA,EAASg8R,EAAaz3d,OACvC,OAAOy3d,EAAah8R,GAEtB,MAAM,IAAIn2L,UAAU,6BAA+Bm2L,IAOrD56L,EAAQ6hK,OAAS,SAAUwzP,GAiBzB,OAhBW,IAgBCA,GAAYA,GAfb,GAgBDA,EAjBC,GAGG,IAkBCA,GAAYA,GAjBb,IAkBJA,EAnBI,GASK,GANR,IAoBCA,GAAYA,GAnBb,GAoBDA,EArBC,GAOQ,GAJR,IAsBPA,EACK,GAtBG,IA0BRA,EACK,IAID,I,gBC1DV,IAAIvlZ,EAAO,EAAQ,KAqBnB,SAAS82U,IACPn3U,KAAKs+B,OAAS,GACdt+B,KAAKond,SAAU,EAEfpnd,KAAKqnd,MAAQ,CAAC7vS,eAAgB,EAAGD,gBAAiB,GASpD4/J,EAAYvnV,UAAUipV,gBACpB,SAA6ByuI,EAAWC,GACtCvnd,KAAKs+B,OAAOlkC,QAAQktd,EAAWC,IAQnCpwI,EAAYvnV,UAAUkkD,IAAM,SAAyB0za,GAtCrD,IAAgCvwS,EAAUC,EAEpCuwS,EACAC,EACAC,EACAC,EAL0B3wS,EAuCHj3K,KAAKqnd,MAvCQnwS,EAuCDswS,EArCnCC,EAAQxwS,EAASO,cACjBkwS,EAAQxwS,EAASM,cACjBmwS,EAAU1wS,EAASM,gBACnBqwS,EAAU1wS,EAASK,gBAChBmwS,EAAQD,GAASC,GAASD,GAASG,GAAWD,GAC9Ctnd,EAAKs3K,oCAAoCV,EAAUC,IAAa,GAiCrEl3K,KAAKqnd,MAAQG,EACbxnd,KAAKs+B,OAAOtuC,KAAKw3d,KAEjBxnd,KAAKond,SAAU,EACfpnd,KAAKs+B,OAAOtuC,KAAKw3d,KAarBrwI,EAAYvnV,UAAU+tC,QAAU,WAK9B,OAJK39B,KAAKond,UACRpnd,KAAKs+B,OAAOyH,KAAK1lC,EAAKs3K,qCACtB33K,KAAKond,SAAU,GAEVpnd,KAAKs+B,QAGd/tC,EAAQ4mV,YAAcA,G,gBCvEtB,IAAI92U,EAAO,EAAQ,KACfyra,EAAe,EAAQ,MACvB50F,EAAW,EAAQ,KAAeA,SAClCD,EAAY,EAAQ,KACpB4wI,EAAY,EAAQ,MAAgBA,UAExC,SAAS9wI,EAAkB+wI,EAAYC,GACrC,IAAIC,EAAYF,EAKhB,MAJ0B,iBAAfA,IACTE,EAAY3nd,EAAKu3K,oBAAoBkwS,IAGV,MAAtBE,EAAUC,SACb,IAAIC,EAAyBF,EAAWD,GACxC,IAAII,EAAuBH,EAAWD,GA0Q5C,SAASI,EAAuBL,EAAYC,GAC1C,IAAIC,EAAYF,EACU,iBAAfA,IACTE,EAAY3nd,EAAKu3K,oBAAoBkwS,IAGvC,IAAI9jc,EAAU3jB,EAAKo1K,OAAOuyS,EAAW,WACjCrvR,EAAUt4L,EAAKo1K,OAAOuyS,EAAW,WAGjC9vc,EAAQ7X,EAAKo1K,OAAOuyS,EAAW,QAAS,IACxClwS,EAAaz3K,EAAKo1K,OAAOuyS,EAAW,aAAc,MAClDjuI,EAAiB15U,EAAKo1K,OAAOuyS,EAAW,iBAAkB,MAC1DruI,EAAWt5U,EAAKo1K,OAAOuyS,EAAW,YAClC1oU,EAAOj/I,EAAKo1K,OAAOuyS,EAAW,OAAQ,MAI1C,GAAIhkc,GAAWhkB,KAAK23U,SAClB,MAAM,IAAI9lV,MAAM,wBAA0BmyB,GAGxC8zJ,IACFA,EAAaz3K,EAAKigE,UAAUw3G,IAG9B6gB,EAAUA,EACPz/L,IAAIgZ,QAIJhZ,IAAImH,EAAKigE,WAKTpnE,KAAI,SAAUojD,GACb,OAAOw7H,GAAcz3K,EAAK+zF,WAAW0jF,IAAez3K,EAAK+zF,WAAW93C,GAChEj8C,EAAKmwF,SAASsnF,EAAYx7H,GAC1BA,KAORt8C,KAAKw3U,OAASN,EAAS0D,UAAU1iU,EAAMhf,IAAIgZ,SAAS,GACpDlS,KAAKu3U,SAAWL,EAAS0D,UAAUjiJ,GAAS,GAE5C34L,KAAKood,iBAAmBpod,KAAKu3U,SAAS55S,UAAUzkC,KAAI,SAAUtE,GAC5D,OAAOyL,EAAKw3K,iBAAiBC,EAAYljL,EAAGmzd,MAG9C/nd,KAAK83K,WAAaA,EAClB93K,KAAK+5U,eAAiBA,EACtB/5U,KAAKy3U,UAAYkC,EACjB35U,KAAKqod,cAAgBN,EACrB/nd,KAAKs/I,KAAOA,EA4Gd,SAASgpU,IACPtod,KAAKw3K,cAAgB,EACrBx3K,KAAKu3K,gBAAkB,EACvBv3K,KAAKs8C,OAAS,KACdt8C,KAAKq3K,aAAe,KACpBr3K,KAAKs3K,eAAiB,KACtBt3K,KAAKxN,KAAO,KAkad,SAAS01d,EAAyBJ,EAAYC,GAC5C,IAAIC,EAAYF,EACU,iBAAfA,IACTE,EAAY3nd,EAAKu3K,oBAAoBkwS,IAGvC,IAAI9jc,EAAU3jB,EAAKo1K,OAAOuyS,EAAW,WACjCC,EAAW5nd,EAAKo1K,OAAOuyS,EAAW,YAEtC,GAAIhkc,GAAWhkB,KAAK23U,SAClB,MAAM,IAAI9lV,MAAM,wBAA0BmyB,GAG5ChkB,KAAKu3U,SAAW,IAAIL,EACpBl3U,KAAKw3U,OAAS,IAAIN,EAElB,IAAI7wO,EAAa,CACf50F,MAAO,EACPwpP,OAAQ,GAEVj7P,KAAKuod,UAAYN,EAAS/ud,KAAI,SAAUtE,GACtC,GAAIA,EAAE+H,IAGJ,MAAM,IAAI9K,MAAM,sDAElB,IAAImoC,EAAS35B,EAAKo1K,OAAO7gL,EAAG,UACxB4zd,EAAanod,EAAKo1K,OAAOz7I,EAAQ,QACjCyub,EAAepod,EAAKo1K,OAAOz7I,EAAQ,UAEvC,GAAIwub,EAAaniX,EAAW50F,MACvB+2c,IAAeniX,EAAW50F,MAAQg3c,EAAepiX,EAAW40J,OAC/D,MAAM,IAAIppQ,MAAM,wDAIlB,OAFAw0G,EAAarsE,EAEN,CACL0ub,gBAAiB,CAGflxS,cAAegxS,EAAa,EAC5BjxS,gBAAiBkxS,EAAe,GAElC/B,SAAU,IAAI3vI,EAAkB12U,EAAKo1K,OAAO7gL,EAAG,OAAQmzd,OA/3B7DhxI,EAAkBa,cAAgB,SAASkwI,EAAYC,GACrD,OAAOI,EAAuBvwI,cAAckwI,EAAYC,IAM1DhxI,EAAkBnnV,UAAU+nV,SAAW,EAgCvCZ,EAAkBnnV,UAAU+4d,oBAAsB,KAClDh5d,OAAOyD,eAAe2jV,EAAkBnnV,UAAW,qBAAsB,CACvE2F,cAAc,EACdlC,YAAY,EACZC,IAAK,WAKH,OAJK0M,KAAK2od,qBACR3od,KAAK4od,eAAe5od,KAAKy3U,UAAWz3U,KAAK83K,YAGpC93K,KAAK2od,uBAIhB5xI,EAAkBnnV,UAAUi5d,mBAAqB,KACjDl5d,OAAOyD,eAAe2jV,EAAkBnnV,UAAW,oBAAqB,CACtE2F,cAAc,EACdlC,YAAY,EACZC,IAAK,WAKH,OAJK0M,KAAK6od,oBACR7od,KAAK4od,eAAe5od,KAAKy3U,UAAWz3U,KAAK83K,YAGpC93K,KAAK6od,sBAIhB9xI,EAAkBnnV,UAAUk5d,wBAC1B,SAAkDhyS,EAAMl7K,GACtD,IAAI5I,EAAI8jL,EAAKhlK,OAAOlW,GACpB,MAAa,MAAN5I,GAAmB,MAANA,GAQxB+jV,EAAkBnnV,UAAUg5d,eAC1B,SAAyC9xS,EAAMgjK,GAC7C,MAAM,IAAIjoV,MAAM,6CAGpBklV,EAAkBgyI,gBAAkB,EACpChyI,EAAkBiyI,eAAiB,EAEnCjyI,EAAkBkyI,qBAAuB,EACzClyI,EAAkBmyI,kBAAoB,EAkBtCnyI,EAAkBnnV,UAAUkoV,YAC1B,SAAuCwvI,EAAW6B,EAAUC,GAC1D,IAGIzvI,EAHAl2U,EAAU0ld,GAAY,KAI1B,OAHYC,GAAUryI,EAAkBgyI,iBAIxC,KAAKhyI,EAAkBgyI,gBACrBpvI,EAAW35U,KAAKqpd,mBAChB,MACF,KAAKtyI,EAAkBiyI,eACrBrvI,EAAW35U,KAAKspd,kBAChB,MACF,QACE,MAAM,IAAIz3d,MAAM,+BAGlB,IAAIimL,EAAa93K,KAAK83K,WACtB6hK,EAASzgV,KAAI,SAAU+B,GACrB,IAAIqhD,EAA4B,OAAnBrhD,EAAQqhD,OAAkB,KAAOt8C,KAAKu3U,SAASp1I,GAAGlnM,EAAQqhD,QAEvE,MAAO,CACLA,OAFFA,EAASj8C,EAAKw3K,iBAAiBC,EAAYx7H,EAAQt8C,KAAKqod,eAGtD7wS,cAAev8K,EAAQu8K,cACvBD,gBAAiBt8K,EAAQs8K,gBACzBF,aAAcp8K,EAAQo8K,aACtBC,eAAgBr8K,EAAQq8K,eACxB9kL,KAAuB,OAAjByI,EAAQzI,KAAgB,KAAOwN,KAAKw3U,OAAOr1I,GAAGlnM,EAAQzI,SAE7DwN,MAAM5F,QAAQktd,EAAW7jd,IAyBhCszU,EAAkBnnV,UAAU25d,yBAC1B,SAAoD7zS,GAClD,IAAIjkK,EAAOpR,EAAKo1K,OAAOC,EAAO,QAM1B8zS,EAAS,CACXlta,OAAQj8C,EAAKo1K,OAAOC,EAAO,UAC3B2B,aAAc5lK,EACd6lK,eAAgBj3K,EAAKo1K,OAAOC,EAAO,SAAU,IAI/C,GADA8zS,EAAOlta,OAASt8C,KAAKypd,iBAAiBD,EAAOlta,QACzCkta,EAAOlta,OAAS,EAClB,MAAO,GAGT,IAAIq9R,EAAW,GAEX/9U,EAAQoE,KAAK0pd,aAAaF,EACAxpd,KAAKspd,kBACL,eACA,iBACAjpd,EAAK22K,2BACL80P,EAAao9C,mBAC3C,GAAIttd,GAAS,EAAG,CACd,IAAIX,EAAU+E,KAAKspd,kBAAkB1td,GAErC,QAAqBlJ,IAAjBgjL,EAAMulF,OAOR,IANA,IAAI5jF,EAAep8K,EAAQo8K,aAMpBp8K,GAAWA,EAAQo8K,eAAiBA,GACzCsiK,EAAS3pV,KAAK,CACZyhB,KAAMpR,EAAKo1K,OAAOx6K,EAAS,gBAAiB,MAC5CggQ,OAAQ56P,EAAKo1K,OAAOx6K,EAAS,kBAAmB,MAChD0ud,WAAYtpd,EAAKo1K,OAAOx6K,EAAS,sBAAuB,QAG1DA,EAAU+E,KAAKspd,oBAAoB1td,QASrC,IANA,IAAI07K,EAAiBr8K,EAAQq8K,eAMtBr8K,GACAA,EAAQo8K,eAAiB5lK,GACzBxW,EAAQq8K,gBAAkBA,GAC/BqiK,EAAS3pV,KAAK,CACZyhB,KAAMpR,EAAKo1K,OAAOx6K,EAAS,gBAAiB,MAC5CggQ,OAAQ56P,EAAKo1K,OAAOx6K,EAAS,kBAAmB,MAChD0ud,WAAYtpd,EAAKo1K,OAAOx6K,EAAS,sBAAuB,QAG1DA,EAAU+E,KAAKspd,oBAAoB1td,GAKzC,OAAO+9U,GAGXppV,EAAQwmV,kBAAoBA,EAgG5BoxI,EAAuBv4d,UAAYD,OAAOoE,OAAOgjV,EAAkBnnV,WACnEu4d,EAAuBv4d,UAAU82d,SAAW3vI,EAM5CoxI,EAAuBv4d,UAAU65d,iBAAmB,SAASxwI,GAC3D,IAWIzpV,EAXAo6d,EAAiB3wI,EAKrB,GAJuB,MAAnBj5U,KAAK83K,aACP8xS,EAAiBvpd,EAAKmwF,SAASxwF,KAAK83K,WAAY8xS,IAG9C5pd,KAAKu3U,SAAS/+T,IAAIoxc,GACpB,OAAO5pd,KAAKu3U,SAASn+U,QAAQwwd,GAM/B,IAAKp6d,EAAI,EAAGA,EAAIwQ,KAAKood,iBAAiB14d,SAAUF,EAC9C,GAAIwQ,KAAKood,iBAAiB54d,IAAMypV,EAC9B,OAAOzpV,EAIX,OAAQ,GAYV24d,EAAuBvwI,cACrB,SAAyCkwI,EAAYC,GACnD,IAAI8B,EAAMl6d,OAAOoE,OAAOo0d,EAAuBv4d,WAE3CsoB,EAAQ2xc,EAAIryI,OAASN,EAAS0D,UAAUktI,EAAWtwI,OAAO75S,WAAW,GACrEg7J,EAAUkxR,EAAItyI,SAAWL,EAAS0D,UAAUktI,EAAWvwI,SAAS55S,WAAW,GAC/Eksb,EAAI/xS,WAAagwS,EAAWzwI,YAC5BwyI,EAAI9vI,eAAiB+tI,EAAWluI,wBAAwBiwI,EAAItyI,SAAS55S,UACbksb,EAAI/xS,YAC5D+xS,EAAIvqU,KAAOwoU,EAAW1wI,MACtByyI,EAAIxB,cAAgBN,EACpB8B,EAAIzB,iBAAmByB,EAAItyI,SAAS55S,UAAUzkC,KAAI,SAAUtE,GAC1D,OAAOyL,EAAKw3K,iBAAiBgyS,EAAI/xS,WAAYljL,EAAGmzd,MAYlD,IAJA,IAAI+B,EAAoBhC,EAAWrwI,UAAU95S,UAAUhpC,QACnDo1d,EAAwBF,EAAIlB,oBAAsB,GAClDqB,EAAuBH,EAAIhB,mBAAqB,GAE3Cr5d,EAAI,EAAGE,EAASo6d,EAAkBp6d,OAAQF,EAAIE,EAAQF,IAAK,CAClE,IAAIy6d,EAAaH,EAAkBt6d,GAC/B06d,EAAc,IAAI5B,EACtB4B,EAAY1yS,cAAgByyS,EAAWzyS,cACvC0yS,EAAY3yS,gBAAkB0yS,EAAW1yS,gBAErC0yS,EAAW3ta,SACb4ta,EAAY5ta,OAASq8I,EAAQv/L,QAAQ6wd,EAAW3ta,QAChD4ta,EAAY7yS,aAAe4yS,EAAW5yS,aACtC6yS,EAAY5yS,eAAiB2yS,EAAW3yS,eAEpC2yS,EAAWz3d,OACb03d,EAAY13d,KAAO0lB,EAAM9e,QAAQ6wd,EAAWz3d,OAG9Cw3d,EAAqBh6d,KAAKk6d,IAG5BH,EAAsB/5d,KAAKk6d,GAK7B,OAFArC,EAAUgC,EAAIhB,mBAAoBxod,EAAK22K,4BAEhC6yS,GAMX1B,EAAuBv4d,UAAU+nV,SAAW,EAK5ChoV,OAAOyD,eAAe+0d,EAAuBv4d,UAAW,UAAW,CACjE0D,IAAK,WACH,OAAO0M,KAAKood,iBAAiBzzd,WAqBjCwzd,EAAuBv4d,UAAUg5d,eAC/B,SAAyC9xS,EAAMgjK,GAe7C,IAdA,IAYI7+U,EAASqX,EAAKsmb,EAASh+Z,EAAKlnC,EAZ5B8jL,EAAgB,EAChB6hK,EAA0B,EAC1BG,EAAuB,EACvBD,EAAyB,EACzBG,EAAiB,EACjBD,EAAe,EACf/pV,EAASonL,EAAKpnL,OACdkM,EAAQ,EACRuud,EAAiB,GACjBjpX,EAAO,GACPkpX,EAAmB,GACnBN,EAAoB,GAGjBlud,EAAQlM,GACb,GAA2B,MAAvBonL,EAAKhlK,OAAOlW,GACd47K,IACA57K,IACAy9U,EAA0B,OAEvB,GAA2B,MAAvBviK,EAAKhlK,OAAOlW,GACnBA,QAEG,CASH,KARAX,EAAU,IAAIqtd,GACN9wS,cAAgBA,EAOnB58I,EAAMh/B,EAAOg/B,EAAMlrC,IAClBsQ,KAAK8od,wBAAwBhyS,EAAMl8I,GADTA,KAQhC,GADAg+Z,EAAUuxB,EAFV73c,EAAMwkK,EAAKniL,MAAMiH,EAAOg/B,IAItBh/B,GAAS0W,EAAI5iB,WACR,CAEL,IADAkpc,EAAU,GACHh9b,EAAQg/B,GACbq8S,EAAU7kL,OAAO0kB,EAAMl7K,EAAOslG,GAC9BxtG,EAAQwtG,EAAKxtG,MACbkI,EAAQslG,EAAK5nD,KACbs/Y,EAAQ5oc,KAAK0D,GAGf,GAAuB,IAAnBklc,EAAQlpc,OACV,MAAM,IAAImC,MAAM,0CAGlB,GAAuB,IAAnB+mc,EAAQlpc,OACV,MAAM,IAAImC,MAAM,0CAGlBs4d,EAAe73c,GAAOsmb,EAIxB39b,EAAQs8K,gBAAkB8hK,EAA0Bu/G,EAAQ,GAC5Dv/G,EAA0Bp+U,EAAQs8K,gBAE9BqhR,EAAQlpc,OAAS,IAEnBuL,EAAQqhD,OAASo9R,EAAiBk/G,EAAQ,GAC1Cl/G,GAAkBk/G,EAAQ,GAG1B39b,EAAQo8K,aAAemiK,EAAuBo/G,EAAQ,GACtDp/G,EAAuBv+U,EAAQo8K,aAE/Bp8K,EAAQo8K,cAAgB,EAGxBp8K,EAAQq8K,eAAiBiiK,EAAyBq/G,EAAQ,GAC1Dr/G,EAAyBt+U,EAAQq8K,eAE7BshR,EAAQlpc,OAAS,IAEnBuL,EAAQzI,KAAOinV,EAAem/G,EAAQ,GACtCn/G,GAAgBm/G,EAAQ,KAI5BkxB,EAAkB95d,KAAKiL,GACa,iBAAzBA,EAAQo8K,cACjB+yS,EAAiBp6d,KAAKiL,GAK5B4sd,EAAUiC,EAAmBzpd,EAAKo3K,qCAClCz3K,KAAK2od,oBAAsBmB,EAE3BjC,EAAUuC,EAAkB/pd,EAAK22K,4BACjCh3K,KAAK6od,mBAAqBuB,GAO9BjC,EAAuBv4d,UAAU85d,aAC/B,SAAuCW,EAASC,EAAWC,EACpBC,EAAaC,EAAaC,GAM/D,GAAIL,EAAQE,IAAc,EACxB,MAAM,IAAIv1d,UAAU,gDACEq1d,EAAQE,IAEhC,GAAIF,EAAQG,GAAe,EACzB,MAAM,IAAIx1d,UAAU,kDACEq1d,EAAQG,IAGhC,OAAO1+C,EAAa37U,OAAOk6X,EAASC,EAAWG,EAAaC,IAOhEvC,EAAuBv4d,UAAU+6d,mBAC/B,WACE,IAAK,IAAI/ud,EAAQ,EAAGA,EAAQoE,KAAKqpd,mBAAmB35d,SAAUkM,EAAO,CACnE,IAAIX,EAAU+E,KAAKqpd,mBAAmBztd,GAMtC,GAAIA,EAAQ,EAAIoE,KAAKqpd,mBAAmB35d,OAAQ,CAC9C,IAAIk7d,EAAc5qd,KAAKqpd,mBAAmBztd,EAAQ,GAElD,GAAIX,EAAQu8K,gBAAkBozS,EAAYpzS,cAAe,CACvDv8K,EAAQ4vd,oBAAsBD,EAAYrzS,gBAAkB,EAC5D,UAKJt8K,EAAQ4vd,oBAAsBpqb,MA4BpC0nb,EAAuBv4d,UAAUkpV,oBAC/B,SAA+CpjK,GAC7C,IAAI8zS,EAAS,CACXhyS,cAAen3K,EAAKo1K,OAAOC,EAAO,QAClC6B,gBAAiBl3K,EAAKo1K,OAAOC,EAAO,WAGlC95K,EAAQoE,KAAK0pd,aACfF,EACAxpd,KAAKqpd,mBACL,gBACA,kBACAhpd,EAAKo3K,oCACLp3K,EAAKo1K,OAAOC,EAAO,OAAQqhK,EAAkBkyI,uBAG/C,GAAIrtd,GAAS,EAAG,CACd,IAAIX,EAAU+E,KAAKqpd,mBAAmBztd,GAEtC,GAAIX,EAAQu8K,gBAAkBgyS,EAAOhyS,cAAe,CAClD,IAAIl7H,EAASj8C,EAAKo1K,OAAOx6K,EAAS,SAAU,MAC7B,OAAXqhD,IACFA,EAASt8C,KAAKu3U,SAASp1I,GAAG7lJ,GAC1BA,EAASj8C,EAAKw3K,iBAAiB73K,KAAK83K,WAAYx7H,EAAQt8C,KAAKqod,gBAE/D,IAAI71d,EAAO6N,EAAKo1K,OAAOx6K,EAAS,OAAQ,MAIxC,OAHa,OAATzI,IACFA,EAAOwN,KAAKw3U,OAAOr1I,GAAG3vM,IAEjB,CACL8pD,OAAQA,EACR7qC,KAAMpR,EAAKo1K,OAAOx6K,EAAS,eAAgB,MAC3CggQ,OAAQ56P,EAAKo1K,OAAOx6K,EAAS,iBAAkB,MAC/CzI,KAAMA,IAKZ,MAAO,CACL8pD,OAAQ,KACR7qC,KAAM,KACNwpP,OAAQ,KACRzoQ,KAAM,OAQZ21d,EAAuBv4d,UAAUk7d,wBAC/B,WACE,QAAK9qd,KAAK+5U,iBAGH/5U,KAAK+5U,eAAerqV,QAAUsQ,KAAKu3U,SAASzwT,SAChD9mB,KAAK+5U,eAAeruT,MAAK,SAAUm0X,GAAM,OAAa,MAANA,OAQvDsoE,EAAuBv4d,UAAUwoV,iBAC/B,SAA4Ca,EAAS8xI,GACnD,IAAK/qd,KAAK+5U,eACR,OAAO,KAGT,IAAIn+U,EAAQoE,KAAKypd,iBAAiBxwI,GAClC,GAAIr9U,GAAS,EACX,OAAOoE,KAAK+5U,eAAen+U,GAG7B,IAKIe,EALAitd,EAAiB3wI,EAMrB,GALuB,MAAnBj5U,KAAK83K,aACP8xS,EAAiBvpd,EAAKmwF,SAASxwF,KAAK83K,WAAY8xS,IAI3B,MAAnB5pd,KAAK83K,aACDn7K,EAAM0D,EAAKkwF,SAASvwF,KAAK83K,aAAc,CAK7C,IAAIkzS,EAAiBpB,EAAentd,QAAQ,aAAc,IAC1D,GAAkB,QAAdE,EAAIq5K,QACDh2K,KAAKu3U,SAAS/+T,IAAIwyc,GACvB,OAAOhrd,KAAK+5U,eAAe/5U,KAAKu3U,SAASn+U,QAAQ4xd,IAGnD,KAAMrud,EAAI29D,MAAoB,KAAZ39D,EAAI29D,OACft6D,KAAKu3U,SAAS/+T,IAAI,IAAMoxc,GAC7B,OAAO5pd,KAAK+5U,eAAe/5U,KAAKu3U,SAASn+U,QAAQ,IAAMwwd,IAQ3D,GAAImB,EACF,OAAO,KAGP,MAAM,IAAIl5d,MAAM,IAAM+3d,EAAiB,+BA2B7CzB,EAAuBv4d,UAAUq7d,qBAC/B,SAAgDv1S,GAC9C,IAAIp5H,EAASj8C,EAAKo1K,OAAOC,EAAO,UAEhC,IADAp5H,EAASt8C,KAAKypd,iBAAiBnta,IAClB,EACX,MAAO,CACL7qC,KAAM,KACNwpP,OAAQ,KACR0uN,WAAY,MAIhB,IAAIH,EAAS,CACXlta,OAAQA,EACR+6H,aAAch3K,EAAKo1K,OAAOC,EAAO,QACjC4B,eAAgBj3K,EAAKo1K,OAAOC,EAAO,WAGjC95K,EAAQoE,KAAK0pd,aACfF,EACAxpd,KAAKspd,kBACL,eACA,iBACAjpd,EAAK22K,2BACL32K,EAAKo1K,OAAOC,EAAO,OAAQqhK,EAAkBkyI,uBAG/C,GAAIrtd,GAAS,EAAG,CACd,IAAIX,EAAU+E,KAAKspd,kBAAkB1td,GAErC,GAAIX,EAAQqhD,SAAWkta,EAAOlta,OAC5B,MAAO,CACL7qC,KAAMpR,EAAKo1K,OAAOx6K,EAAS,gBAAiB,MAC5CggQ,OAAQ56P,EAAKo1K,OAAOx6K,EAAS,kBAAmB,MAChD0ud,WAAYtpd,EAAKo1K,OAAOx6K,EAAS,sBAAuB,OAK9D,MAAO,CACLwW,KAAM,KACNwpP,OAAQ,KACR0uN,WAAY,OAIlBp5d,EAAQ43d,uBAAyBA,EAmGjCD,EAAyBt4d,UAAYD,OAAOoE,OAAOgjV,EAAkBnnV,WACrEs4d,EAAyBt4d,UAAUqP,YAAc83U,EAKjDmxI,EAAyBt4d,UAAU+nV,SAAW,EAK9ChoV,OAAOyD,eAAe80d,EAAyBt4d,UAAW,UAAW,CACnE0D,IAAK,WAEH,IADA,IAAIqlM,EAAU,GACLnpM,EAAI,EAAGA,EAAIwQ,KAAKuod,UAAU74d,OAAQF,IACzC,IAAK,IAAI+Z,EAAI,EAAGA,EAAIvJ,KAAKuod,UAAU/4d,GAAGk3d,SAAS/tR,QAAQjpM,OAAQ6Z,IAC7DovL,EAAQ3oM,KAAKgQ,KAAKuod,UAAU/4d,GAAGk3d,SAAS/tR,QAAQpvL,IAGpD,OAAOovL,KAuBXuvR,EAAyBt4d,UAAUkpV,oBACjC,SAAsDpjK,GACpD,IAAI8zS,EAAS,CACXhyS,cAAen3K,EAAKo1K,OAAOC,EAAO,QAClC6B,gBAAiBl3K,EAAKo1K,OAAOC,EAAO,WAKlCw1S,EAAep/C,EAAa37U,OAAOq5X,EAAQxpd,KAAKuod,WAClD,SAASiB,EAAQ2B,GACf,IAAI/zS,EAAMoyS,EAAOhyS,cAAgB2zS,EAAQzC,gBAAgBlxS,cACzD,OAAIJ,GAIIoyS,EAAOjyS,gBACP4zS,EAAQzC,gBAAgBnxS,mBAEhC4zS,EAAUnrd,KAAKuod,UAAU2C,GAE7B,OAAKC,EASEA,EAAQzE,SAAS5tI,oBAAoB,CAC1CrnU,KAAM+3c,EAAOhyS,eACV2zS,EAAQzC,gBAAgBlxS,cAAgB,GAC3CyjF,OAAQuuN,EAAOjyS,iBACZ4zS,EAAQzC,gBAAgBlxS,gBAAkBgyS,EAAOhyS,cAC/C2zS,EAAQzC,gBAAgBnxS,gBAAkB,EAC1C,GACL+qQ,KAAM5sQ,EAAM4sQ,OAfL,CACLhmY,OAAQ,KACR7qC,KAAM,KACNwpP,OAAQ,KACRzoQ,KAAM,OAmBd01d,EAAyBt4d,UAAUk7d,wBACjC,WACE,OAAO9qd,KAAKuod,UAAUpob,OAAM,SAAUvrC,GACpC,OAAOA,EAAE8xd,SAASoE,8BASxB5C,EAAyBt4d,UAAUwoV,iBACjC,SAAmDa,EAAS8xI,GAC1D,IAAK,IAAIv7d,EAAI,EAAGA,EAAIwQ,KAAKuod,UAAU74d,OAAQF,IAAK,CAC9C,IAEIwoG,EAFUh4F,KAAKuod,UAAU/4d,GAEPk3d,SAAStuI,iBAAiBa,GAAS,GACzD,GAAIjhP,EACF,OAAOA,EAGX,GAAI+yX,EACF,OAAO,KAGP,MAAM,IAAIl5d,MAAM,IAAMonV,EAAU,+BAsBtCivI,EAAyBt4d,UAAUq7d,qBACjC,SAAuDv1S,GACrD,IAAK,IAAIlmL,EAAI,EAAGA,EAAIwQ,KAAKuod,UAAU74d,OAAQF,IAAK,CAC9C,IAAI27d,EAAUnrd,KAAKuod,UAAU/4d,GAI7B,IAAyE,IAArE27d,EAAQzE,SAAS+C,iBAAiBppd,EAAKo1K,OAAOC,EAAO,WAAzD,CAGA,IAAI01S,EAAoBD,EAAQzE,SAASuE,qBAAqBv1S,GAC9D,GAAI01S,EASF,MARU,CACR35c,KAAM25c,EAAkB35c,MACrB05c,EAAQzC,gBAAgBlxS,cAAgB,GAC3CyjF,OAAQmwN,EAAkBnwN,QACvBkwN,EAAQzC,gBAAgBlxS,gBAAkB4zS,EAAkB35c,KAC1D05c,EAAQzC,gBAAgBnxS,gBAAkB,EAC1C,KAMX,MAAO,CACL9lK,KAAM,KACNwpP,OAAQ,OASditN,EAAyBt4d,UAAUg5d,eACjC,SAAgD9xS,EAAMgjK,GACpD95U,KAAK2od,oBAAsB,GAC3B3od,KAAK6od,mBAAqB,GAC1B,IAAK,IAAIr5d,EAAI,EAAGA,EAAIwQ,KAAKuod,UAAU74d,OAAQF,IAGzC,IAFA,IAAI27d,EAAUnrd,KAAKuod,UAAU/4d,GACzB67d,EAAkBF,EAAQzE,SAAS2C,mBAC9B9/c,EAAI,EAAGA,EAAI8hd,EAAgB37d,OAAQ6Z,IAAK,CAC/C,IAAItO,EAAUowd,EAAgB9hd,GAE1B+yC,EAAS6ua,EAAQzE,SAASnvI,SAASp1I,GAAGlnM,EAAQqhD,QAClDA,EAASj8C,EAAKw3K,iBAAiBszS,EAAQzE,SAAS5uS,WAAYx7H,EAAQt8C,KAAKqod,eACzErod,KAAKu3U,SAASzjS,IAAIwI,GAClBA,EAASt8C,KAAKu3U,SAASn+U,QAAQkjD,GAE/B,IAAI9pD,EAAO,KACPyI,EAAQzI,OACVA,EAAO24d,EAAQzE,SAASlvI,OAAOr1I,GAAGlnM,EAAQzI,MAC1CwN,KAAKw3U,OAAO1jS,IAAIthD,GAChBA,EAAOwN,KAAKw3U,OAAOp+U,QAAQ5G,IAO7B,IAAI84d,EAAkB,CACpBhva,OAAQA,EACRk7H,cAAev8K,EAAQu8K,eACpB2zS,EAAQzC,gBAAgBlxS,cAAgB,GAC3CD,gBAAiBt8K,EAAQs8K,iBACtB4zS,EAAQzC,gBAAgBlxS,gBAAkBv8K,EAAQu8K,cACjD2zS,EAAQzC,gBAAgBnxS,gBAAkB,EAC1C,GACJF,aAAcp8K,EAAQo8K,aACtBC,eAAgBr8K,EAAQq8K,eACxB9kL,KAAMA,GAGRwN,KAAK2od,oBAAoB34d,KAAKs7d,GACc,iBAAjCA,EAAgBj0S,cACzBr3K,KAAK6od,mBAAmB74d,KAAKs7d,GAKnCzD,EAAU7nd,KAAK2od,oBAAqBtod,EAAKo3K,qCACzCowS,EAAU7nd,KAAK6od,mBAAoBxod,EAAK22K,6BAG5CzmL,EAAQ23d,yBAA2BA,G,cCjnCnC33d,EAAQ04d,qBAAuB,EAC/B14d,EAAQ24d,kBAAoB,EAgF5B34d,EAAQ4/F,OAAS,SAAgBk6X,EAASkB,EAAWC,EAAUd,GAC7D,GAAyB,IAArBa,EAAU77d,OACZ,OAAQ,EAGV,IAAIkM,EAtEN,SAAS6vd,EAAgBC,EAAMC,EAAOtB,EAASkB,EAAWC,EAAUd,GAUlE,IAAIl1R,EAAM3vL,KAAKi8B,OAAO6pb,EAAQD,GAAQ,GAAKA,EACvCt0S,EAAMo0S,EAASnB,EAASkB,EAAU/1R,IAAM,GAC5C,OAAY,IAARpe,EAEKoe,EAEApe,EAAM,EAETu0S,EAAQn2R,EAAM,EAETi2R,EAAgBj2R,EAAKm2R,EAAOtB,EAASkB,EAAWC,EAAUd,GAK/DA,GAASn6d,EAAQ24d,kBACZyC,EAAQJ,EAAU77d,OAASi8d,GAAS,EAEpCn2R,EAKLA,EAAMk2R,EAAO,EAERD,EAAgBC,EAAMl2R,EAAK60R,EAASkB,EAAWC,EAAUd,GAI9DA,GAASn6d,EAAQ24d,kBACZ1zR,EAEAk2R,EAAO,GAAK,EAAIA,EA4BfD,EAAiB,EAAGF,EAAU77d,OAAQ26d,EAASkB,EAC/BC,EAAUd,GAASn6d,EAAQ04d,sBACvD,GAAIrtd,EAAQ,EACV,OAAQ,EAMV,KAAOA,EAAQ,GAAK,GAC6C,IAA3D4vd,EAASD,EAAU3vd,GAAQ2vd,EAAU3vd,EAAQ,IAAI,MAGnDA,EAGJ,OAAOA,I,cClFT,SAASkuI,EAAKqwD,EAAK72K,EAAG4mE,GACpB,IAAIgX,EAAOi5F,EAAI72K,GACf62K,EAAI72K,GAAK62K,EAAIjwG,GACbiwG,EAAIjwG,GAAKgX,EA2BX,SAAS0qX,EAAYzxR,EAAKn0J,EAAYt0C,EAAG6B,GAKvC,GAAI7B,EAAI6B,EAAG,CAYT,IACI/D,EAAIkC,EAAI,EAEZo4I,EAAKqwD,GApCiB7E,EAiCY5jM,EAjCP6jM,EAiCUhiM,EAhChCsS,KAAKuzH,MAAMk8D,EAAOzvL,KAAK8tG,UAAY4hF,EAAOD,KAmCzB/hM,GAStB,IARA,IAAIs4d,EAAQ1xR,EAAI5mM,GAQPgW,EAAI7X,EAAG6X,EAAIhW,EAAGgW,IACjBy8B,EAAWm0J,EAAI5wL,GAAIsid,IAAU,GAE/B/hV,EAAKqwD,EADL3qM,GAAK,EACQ+Z,GAIjBugI,EAAKqwD,EAAK3qM,EAAI,EAAG+Z,GACjB,IAAIioQ,EAAIhiR,EAAI,EAIZo8d,EAAYzxR,EAAKn0J,EAAYt0C,EAAG8/Q,EAAI,GACpCo6M,EAAYzxR,EAAKn0J,EAAYwrO,EAAI,EAAGj+Q,GA1DxC,IAA0B+hM,EAAKC,EAsE/BhlM,EAAQs3d,UAAY,SAAU1tR,EAAKn0J,GACjC4lb,EAAYzxR,EAAKn0J,EAAY,EAAGm0J,EAAIzqM,OAAS,K,gBCzG/C,IAAIonV,EAAqB,EAAQ,KAA0BA,mBACvDz2U,EAAO,EAAQ,KAIfyrd,EAAgB,UAQhBC,EAAe,qBAcnB,SAAS/0I,EAAWg1I,EAAOC,EAAShzI,EAASizI,EAASv2S,GACpD31K,KAAKisD,SAAW,GAChBjsD,KAAKmsd,eAAiB,GACtBnsd,KAAKyR,KAAgB,MAATu6c,EAAgB,KAAOA,EACnChsd,KAAKi7P,OAAoB,MAAXgxN,EAAkB,KAAOA,EACvCjsd,KAAKs8C,OAAoB,MAAX28R,EAAkB,KAAOA,EACvCj5U,KAAKxN,KAAgB,MAATmjL,EAAgB,KAAOA,EACnC31K,KAAK+rd,IAAgB,EACN,MAAXG,GAAiBlsd,KAAK8zC,IAAIo4a,GAWhCl1I,EAAWo1I,wBACT,SAA4CC,EAAgBx0I,EAAoBy0I,GAG9E,IAAIl5c,EAAO,IAAI4jU,EAMXu1I,EAAiBF,EAAexzd,MAAMizd,GACtCU,EAAsB,EACtBC,EAAgB,WAIlB,OAHmBC,KAELA,KAAiB,IAG/B,SAASA,IACP,OAAOF,EAAsBD,EAAe78d,OACxC68d,EAAeC,UAAyB95d,IAK5Ci6d,EAAoB,EAAG9B,EAAsB,EAK7C+B,EAAc,KAgElB,OA9DA/0I,EAAmBC,aAAY,SAAU78U,GACvC,GAAoB,OAAhB2xd,EAAsB,CAGxB,KAAID,EAAoB1xd,EAAQu8K,eAMzB,CAIL,IACIj4K,GADAstd,EAAWN,EAAeC,IAAwB,IAClCjzd,OAAO,EAAG0B,EAAQs8K,gBACRszS,GAO9B,OANA0B,EAAeC,GAAuBK,EAAStzd,OAAO0B,EAAQs8K,gBAC1BszS,GACpCA,EAAsB5vd,EAAQs8K,gBAC9Bu1S,EAAmBF,EAAartd,QAEhCqtd,EAAc3xd,GAhBd6xd,EAAmBF,EAAaH,KAChCE,IACA9B,EAAsB,EAqB1B,KAAO8B,EAAoB1xd,EAAQu8K,eACjCpkK,EAAK0gC,IAAI24a,KACTE,IAEF,GAAI9B,EAAsB5vd,EAAQs8K,gBAAiB,CACjD,IAAIs1S,EAAWN,EAAeC,IAAwB,GACtDp5c,EAAK0gC,IAAI+4a,EAAStzd,OAAO,EAAG0B,EAAQs8K,kBACpCg1S,EAAeC,GAAuBK,EAAStzd,OAAO0B,EAAQs8K,iBAC9DszS,EAAsB5vd,EAAQs8K,gBAEhCq1S,EAAc3xd,IACb+E,MAECwsd,EAAsBD,EAAe78d,SACnCk9d,GAEFE,EAAmBF,EAAaH,KAGlCr5c,EAAK0gC,IAAIy4a,EAAelwd,OAAOmwd,GAAqBjwd,KAAK,MAI3Ds7U,EAAmBl/I,QAAQv+L,SAAQ,SAAU89U,GAC3C,IAAIlgP,EAAU6/O,EAAmBO,iBAAiBF,GACnC,MAAXlgP,IACmB,MAAjBs0X,IACFp0I,EAAa73U,EAAK9D,KAAK+vd,EAAep0I,IAExC9kU,EAAKilU,iBAAiBH,EAAYlgP,OAI/B5kF,EAEP,SAAS05c,EAAmB7xd,EAASsE,GACnC,GAAgB,OAAZtE,QAAuCvI,IAAnBuI,EAAQqhD,OAC9BlpC,EAAK0gC,IAAIv0C,OACJ,CACL,IAAI+8C,EAASgwa,EACTjsd,EAAK9D,KAAK+vd,EAAerxd,EAAQqhD,QACjCrhD,EAAQqhD,OACZlpC,EAAK0gC,IAAI,IAAIkjS,EAAW/7U,EAAQo8K,aACRp8K,EAAQq8K,eACRh7H,EACA/8C,EACAtE,EAAQzI,UAWxCwkV,EAAWpnV,UAAUkkD,IAAM,SAAwBi5a,GACjD,GAAIp2d,MAAMC,QAAQm2d,GAChBA,EAAO3yd,SAAQ,SAAUlI,GACvB8N,KAAK8zC,IAAI5hD,KACR8N,UAEA,KAAI+sd,EAAOhB,IAAmC,iBAAXgB,EAMtC,MAAM,IAAI/3d,UACR,8EAAgF+3d,GAN9EA,GACF/sd,KAAKisD,SAASj8D,KAAK+8d,GAQvB,OAAO/sd,MASTg3U,EAAWpnV,UAAUu9F,QAAU,SAA4B4/X,GACzD,GAAIp2d,MAAMC,QAAQm2d,GAChB,IAAK,IAAIv9d,EAAIu9d,EAAOr9d,OAAO,EAAGF,GAAK,EAAGA,IACpCwQ,KAAKmtF,QAAQ4/X,EAAOv9d,QAGnB,KAAIu9d,EAAOhB,IAAmC,iBAAXgB,EAItC,MAAM,IAAI/3d,UACR,8EAAgF+3d,GAJlF/sd,KAAKisD,SAASjgB,QAAQ+gb,GAOxB,OAAO/sd,MAUTg3U,EAAWpnV,UAAUouQ,KAAO,SAAyBgvN,GAEnD,IADA,IAAI96d,EACK1C,EAAI,EAAG0qB,EAAMla,KAAKisD,SAASv8D,OAAQF,EAAI0qB,EAAK1qB,KACnD0C,EAAQ8N,KAAKisD,SAASz8D,IACZu8d,GACR75d,EAAM8rQ,KAAKgvN,GAGG,KAAV96d,GACF86d,EAAI96d,EAAO,CAAEoqD,OAAQt8C,KAAKs8C,OACb7qC,KAAMzR,KAAKyR,KACXwpP,OAAQj7P,KAAKi7P,OACbzoQ,KAAMwN,KAAKxN,QAYhCwkV,EAAWpnV,UAAU2M,KAAO,SAAyB0wd,GACnD,IAAIC,EACA19d,EACA0qB,EAAMla,KAAKisD,SAASv8D,OACxB,GAAIwqB,EAAM,EAAG,CAEX,IADAgzc,EAAc,GACT19d,EAAI,EAAGA,EAAI0qB,EAAI,EAAG1qB,IACrB09d,EAAYl9d,KAAKgQ,KAAKisD,SAASz8D,IAC/B09d,EAAYl9d,KAAKi9d,GAEnBC,EAAYl9d,KAAKgQ,KAAKisD,SAASz8D,IAC/BwQ,KAAKisD,SAAWiha,EAElB,OAAOltd,MAUTg3U,EAAWpnV,UAAUu9d,aAAe,SAAiCC,EAAUC,GAC7E,IAAIn2Z,EAAYl3D,KAAKisD,SAASjsD,KAAKisD,SAASv8D,OAAS,GAUrD,OATIwnE,EAAU60Z,GACZ70Z,EAAUi2Z,aAAaC,EAAUC,GAEL,iBAAdn2Z,EACdl3D,KAAKisD,SAASjsD,KAAKisD,SAASv8D,OAAS,GAAKwnE,EAAUz6D,QAAQ2wd,EAAUC,GAGtErtd,KAAKisD,SAASj8D,KAAK,GAAGyM,QAAQ2wd,EAAUC,IAEnCrtd,MAUTg3U,EAAWpnV,UAAUyoV,iBACnB,SAAqCE,EAAaC,GAChDx4U,KAAKmsd,eAAe9rd,EAAKw2K,YAAY0hK,IAAgBC,GASzDxB,EAAWpnV,UAAU09d,mBACnB,SAAuCN,GACrC,IAAK,IAAIx9d,EAAI,EAAG0qB,EAAMla,KAAKisD,SAASv8D,OAAQF,EAAI0qB,EAAK1qB,IAC/CwQ,KAAKisD,SAASz8D,GAAGu8d,IACnB/rd,KAAKisD,SAASz8D,GAAG89d,mBAAmBN,GAIxC,IAAIr0R,EAAUhpM,OAAOoZ,KAAK/I,KAAKmsd,gBAC/B,IAAS38d,EAAI,EAAG0qB,EAAMy+K,EAAQjpM,OAAQF,EAAI0qB,EAAK1qB,IAC7Cw9d,EAAI3sd,EAAK02K,cAAc4hB,EAAQnpM,IAAKwQ,KAAKmsd,eAAexzR,EAAQnpM,MAQtEwnV,EAAWpnV,UAAU4V,SAAW,WAC9B,IAAI8M,EAAM,GAIV,OAHAtS,KAAKg+P,MAAK,SAAU9rQ,GAClBogB,GAAOpgB,KAEFogB,GAOT0kU,EAAWpnV,UAAU29d,sBAAwB,SAA0C73S,GACrF,IAAIsiK,EAAY,CACdz4U,KAAM,GACNkS,KAAM,EACNwpP,OAAQ,GAEN/hQ,EAAM,IAAI49U,EAAmBphK,GAC7B83S,GAAsB,EACtBC,EAAqB,KACrBC,EAAmB,KACnBC,EAAqB,KACrBC,EAAmB,KAqEvB,OApEA5td,KAAKg+P,MAAK,SAAU9rQ,EAAO8+D,GACzBgnR,EAAUz4U,MAAQrN,EACM,OAApB8+D,EAAS1U,QACY,OAAlB0U,EAASv/C,MACW,OAApBu/C,EAASiqM,QACXwyN,IAAuBz8Z,EAAS1U,QAC7Boxa,IAAqB18Z,EAASv/C,MAC9Bk8c,IAAuB38Z,EAASiqM,QAChC2yN,IAAqB58Z,EAASx+D,MAClC0G,EAAI++U,WAAW,CACb37R,OAAQ0U,EAAS1U,OACjB0U,SAAU,CACRv/C,KAAMu/C,EAASv/C,KACfwpP,OAAQjqM,EAASiqM,QAEnB+8E,UAAW,CACTvmU,KAAMumU,EAAUvmU,KAChBwpP,OAAQ+8E,EAAU/8E,QAEpBzoQ,KAAMw+D,EAASx+D,OAGnBi7d,EAAqBz8Z,EAAS1U,OAC9Boxa,EAAmB18Z,EAASv/C,KAC5Bk8c,EAAqB38Z,EAASiqM,OAC9B2yN,EAAmB58Z,EAASx+D,KAC5Bg7d,GAAsB,GACbA,IACTt0d,EAAI++U,WAAW,CACbD,UAAW,CACTvmU,KAAMumU,EAAUvmU,KAChBwpP,OAAQ+8E,EAAU/8E,UAGtBwyN,EAAqB,KACrBD,GAAsB,GAExB,IAAK,IAAI3kb,EAAM,EAAGn5C,EAASwC,EAAMxC,OAAQm5C,EAAMn5C,EAAQm5C,IA3WxC,KA4WT32C,EAAMsxC,WAAWqF,IACnBmvS,EAAUvmU,OACVumU,EAAU/8E,OAAS,EAEfpyN,EAAM,IAAMn5C,GACd+9d,EAAqB,KACrBD,GAAsB,GACbA,GACTt0d,EAAI++U,WAAW,CACb37R,OAAQ0U,EAAS1U,OACjB0U,SAAU,CACRv/C,KAAMu/C,EAASv/C,KACfwpP,OAAQjqM,EAASiqM,QAEnB+8E,UAAW,CACTvmU,KAAMumU,EAAUvmU,KAChBwpP,OAAQ+8E,EAAU/8E,QAEpBzoQ,KAAMw+D,EAASx+D,QAInBwlV,EAAU/8E,YAIhBj7P,KAAKstd,oBAAmB,SAAUp1I,EAAY21I,GAC5C30d,EAAIm/U,iBAAiBH,EAAY21I,MAG5B,CAAEtud,KAAMy4U,EAAUz4U,KAAMrG,IAAKA,IAGtC3I,EAAQymV,WAAaA,G,6BC1ZrBzmV,EAAQsD,YAAa,EACrBtD,EAAQsE,QAGR,SAAkBtC,GAChB,GAAIu7d,EAAQv7d,GAAU,OACtBu7d,EAAQv7d,IAAW,EAEI,oBAAZgC,SAA2BA,QAAQ+F,MAC5C/F,QAAQ+F,KAAK/H,IAPjB,IAAIu7d,EAAU,GAWdt9d,EAAOD,QAAUA,EAAQsE,S,6BCbzBtE,EAAQsD,YAAa,EACrBtD,EAAQsE,aAAU,EAElB,IAEgCI,EAF5B84d,GAE4B94d,EAFM,EAAQ,QAEOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvF,SAAS6oQ,EAAkBxrQ,EAAQ+C,GAAS,IAAK,IAAI7F,EAAI,EAAGA,EAAI6F,EAAM3F,OAAQF,IAAK,CAAE,IAAI8F,EAAaD,EAAM7F,GAAI8F,EAAWjC,WAAaiC,EAAWjC,aAAc,EAAOiC,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAM7F,OAAOyD,eAAed,EAAQgD,EAAWtB,IAAKsB,IAkB7S,IAkLImlQ,EAhLJ,WAOE,SAASuzN,EAAO/3I,EAAWruS,EAAMp3B,GAa/BxQ,KAAKi2U,UAAYA,EAoBjBj2U,KAAK+1N,SAAW,GAUhB/1N,KAAK4nC,KAAOA,EAWZ5nC,KAAKwQ,KAAOA,EAUZxQ,KAAKs9P,SAAM5qQ,EAgBXsN,KAAK9G,SAAMxG,EAYb,IArHoBqC,EAAaU,EAAYC,EAqHzCqlQ,EAASizN,EAAOp+d,UA0EpB,OAxEAmrQ,EAAOv1P,SAAW,WAChB,OAAOxF,KAAKs9P,KAoBdvC,EAAOzgQ,KAAO,SAAcR,EAAM0W,QACnB,IAATA,IACFA,EAAO,IAGJA,EAAKgoE,QACJx4E,KAAK62U,YAAc72U,KAAK62U,WAAWH,gBACrClmU,EAAKgoE,OAASx4E,KAAK62U,WAAWH,eAIlC,IAAIrnU,EAAU,IAAI0+c,EAASl5d,QAAQiF,EAAM0W,GAEzC,OADAxQ,KAAK+1N,SAAS/lO,KAAKqf,GACZA,GAeT0rP,EAAOjvP,SAAW,WAChB,OAAO9L,KAAK+1N,SAASj9M,QAAO,SAAUtpB,GACpC,MAAkB,YAAXA,EAAE4C,SA1KO2C,EAwLPi5d,GAxLoBv4d,EAwLZ,CAAC,CACpBzB,IAAK,UACLV,IAAK,WACH,OAAO0M,KAAKs9P,SA3L4DQ,EAAkB/oQ,EAAYnF,UAAW6F,GAAiBC,GAAaooQ,EAAkB/oQ,EAAaW,GA+L3Ks4d,EA7KT,GAuLAz9d,EAAQsE,QAAU4lQ,EAClBjqQ,EAAOD,QAAUA,EAAQsE,S,6BCnNzBtE,EAAQsD,YAAa,EACrBtD,EAAQsE,aAAU,EAUlB,IAoHI4lQ,EAlHJ,WAYE,SAAStvP,EAAQrR,EAAM0W,GA0BrB,QAzBa,IAATA,IACFA,EAAO,IAYTxQ,KAAK5N,KAAO,UAUZ4N,KAAKlG,KAAOA,EAER0W,EAAK4C,MAAQ5C,EAAK4C,KAAKkpC,OAAQ,CACjC,IAAImwF,EAAMj8H,EAAK4C,KAAK4nP,WAAWxqP,GAS/BxQ,KAAKyR,KAAOg7H,EAAIh7H,KAUhBzR,KAAKi7P,OAASxuH,EAAIwuH,OAGpB,IAAK,IAAIvrD,KAAOl/L,EACdxQ,KAAK0vM,GAAOl/L,EAAKk/L,GAiDrB,OApCavkM,EAAQvb,UAEd4V,SAAW,WAChB,OAAIxF,KAAKoT,KACApT,KAAKoT,KAAKxhB,MAAMoO,KAAKlG,KAAM,CAChC0+E,OAAQx4E,KAAKw4E,OACb58E,MAAOoE,KAAKpE,MACZinM,KAAM7iM,KAAK6iM,OACVtwM,QAGDyN,KAAKw4E,OACAx4E,KAAKw4E,OAAS,KAAOx4E,KAAKlG,KAG5BkG,KAAKlG,MAqBPqR,EA/GT,GAmHA5a,EAAQsE,QAAU4lQ,EAClBjqQ,EAAOD,QAAUA,EAAQsE,S,6BCjIzBtE,EAAQsD,YAAa,EACrBtD,EAAQsE,aAAU,EAElB,IAAI+oQ,EAAehoQ,EAAuB,EAAQ,MAE9Cq4d,EAAYr4d,EAAuB,EAAQ,OAE3CioQ,EAAWjoQ,EAAuB,EAAQ,MAE1C4vd,EAAU5vd,EAAuB,EAAQ,MAEzCmuC,EAAQnuC,EAAuB,EAAQ,MAEvC8vd,EAAQ9vd,EAAuB,EAAQ,MAE3C,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvF,IAAIoyN,EAEJ,WACE,SAASA,EAAOz4L,GACd5uB,KAAK4uB,MAAQA,EACb5uB,KAAK4nC,KAAO,IAAI7D,EAAMlvC,QACtBmL,KAAKwT,QAAUxT,KAAK4nC,KACpB5nC,KAAK6jJ,OAAS,GACd7jJ,KAAKs0U,WAAY,EACjBt0U,KAAKkud,kBACLlud,KAAK4nC,KAAK0U,OAAS,CACjB1tB,MAAOA,EACPsG,MAAO,CACLzjB,KAAM,EACNwpP,OAAQ,IAKd,IAAIF,EAAS1zC,EAAOz3N,UAujBpB,OArjBAmrQ,EAAOmzN,gBAAkB,WACvBlud,KAAKmud,WAAY,EAAIF,EAAUp5d,SAASmL,KAAK4uB,QAG/CmsO,EAAO99P,MAAQ,WAGb,IAFA,IAAIo1I,GAEIryI,KAAKmud,UAAUC,aAGrB,QAFA/7U,EAAQryI,KAAKmud,UAAUE,aAET,IACZ,IAAK,QACHrud,KAAK6jJ,QAAUxR,EAAM,GACrB,MAEF,IAAK,IACHryI,KAAKsud,cAAcj8U,GACnB,MAEF,IAAK,IACHryI,KAAK46B,IAAIy3G,GACT,MAEF,IAAK,UACHryI,KAAKsoN,QAAQj2E,GACb,MAEF,IAAK,UACHryI,KAAK20U,OAAOtiM,GACZ,MAEF,IAAK,IACHryI,KAAKuud,UAAUl8U,GACf,MAEF,QACEryI,KAAK4hC,MAAMywG,GAKjBryI,KAAKwud,WAGPzzN,EAAOzyC,QAAU,SAAiBj2E,GAChC,IAAIj/H,EAAO,IAAIyqP,EAAShpQ,QACxBmL,KAAKD,KAAKqT,EAAMi/H,EAAM,GAAIA,EAAM,IAChCj/H,EAAKkpC,OAAO1hB,IAAM,CAChBnpB,KAAM4gI,EAAM,GACZ4oH,OAAQ5oH,EAAM,IAEhB,IAAIv4I,EAAOu4I,EAAM,GAAG19I,MAAM,GAAI,GAE9B,GAAI,QAAQgd,KAAK7X,GACfsZ,EAAKtZ,KAAO,GACZsZ,EAAK0nP,KAAK9tN,KAAOlzC,EACjBsZ,EAAK0nP,KAAK7tN,MAAQ,OACb,CACL,IAAIvxC,EAAQ5B,EAAK4B,MAAM,2BACvB0X,EAAKtZ,KAAO4B,EAAM,GAClB0X,EAAK0nP,KAAK9tN,KAAOtxC,EAAM,GACvB0X,EAAK0nP,KAAK7tN,MAAQvxC,EAAM,KAI5Bq/P,EAAOwzN,UAAY,SAAmBl8U,GACpC,IAAIj/H,EAAO,IAAIsyc,EAAM7wd,QACrBmL,KAAKD,KAAKqT,EAAMi/H,EAAM,GAAIA,EAAM,IAChCj/H,EAAKqpH,SAAW,GAChBrpH,EAAK0nP,KAAKiB,QAAU,GACpB/7P,KAAKwT,QAAUJ,GAGjB2nP,EAAOn5N,MAAQ,SAAe1M,GAS5B,IARA,IAAI0F,GAAM,EACNxoC,EAAO,KACPyhV,GAAQ,EACR46I,EAAU,KACVv3B,EAAW,GACXryL,EAAS,GACTxyH,EAAQn9G,EAELm9G,GAAO,CAIZ,GAHAjgJ,EAAOigJ,EAAM,GACbwyH,EAAO70Q,KAAKqiJ,GAEC,MAATjgJ,GAAyB,MAATA,EACbq8d,IAASA,EAAUp8U,GACxB6kT,EAASlnc,KAAc,MAAToC,EAAe,IAAM,UAC9B,GAAwB,IAApB8kc,EAASxnc,OAAc,CAChC,GAAa,MAAT0C,EAAc,CAChB,GAAIyhV,EAEF,YADA7zU,KAAKw/P,KAAKqF,GAGV,MAEG,GAAa,MAATzyQ,EAET,YADA4N,KAAKu5E,KAAKsrL,GAEL,GAAa,MAATzyQ,EAAc,CACvB4N,KAAKmud,UAAUO,KAAK7pN,EAAOn/P,OAC3Bk1B,GAAM,EACN,MACkB,MAATxoC,IACTyhV,GAAQ,QAEDzhV,IAAS8kc,EAASA,EAASxnc,OAAS,KAC7Cwnc,EAASxxb,MACe,IAApBwxb,EAASxnc,SAAc++d,EAAU,OAGvCp8U,EAAQryI,KAAKmud,UAAUE,YAMzB,GAHIrud,KAAKmud,UAAUC,cAAaxzb,GAAM,GAClCs8Z,EAASxnc,OAAS,GAAGsQ,KAAK2ud,gBAAgBF,GAE1C7zb,GAAOi5S,EAAO,CAChB,KAAOhvE,EAAOn1Q,SAEE,WADd2iJ,EAAQwyH,EAAOA,EAAOn1Q,OAAS,GAAG,KACC,YAAV2iJ,IACzBryI,KAAKmud,UAAUO,KAAK7pN,EAAOn/P,OAG7B1F,KAAKw/P,KAAKqF,QAEV7kQ,KAAK4ud,YAAY/pN,IAIrB9J,EAAOxhL,KAAO,SAAcsrL,GAC1BA,EAAOn/P,MACP,IAAI0N,EAAO,IAAIsyc,EAAM7wd,QACrBmL,KAAKD,KAAKqT,EAAMyxP,EAAO,GAAG,GAAIA,EAAO,GAAG,IACxCzxP,EAAK0nP,KAAKiB,QAAU/7P,KAAK6ud,yBAAyBhqN,GAClD7kQ,KAAK27P,IAAIvoP,EAAM,WAAYyxP,GAC3B7kQ,KAAKwT,QAAUJ,GAGjB2nP,EAAOyE,KAAO,SAAcqF,GAC1B,IAAIzxP,EAAO,IAAIwqP,EAAa/oQ,QAC5BmL,KAAKD,KAAKqT,GACV,IAyCIi/H,EAzCA71H,EAAOqoP,EAAOA,EAAOn1Q,OAAS,GAmBlC,IAjBgB,MAAZ8sB,EAAK,KACPxc,KAAKs0U,WAAY,EACjBzvE,EAAOn/P,OAGL8W,EAAK,GACPpJ,EAAKkpC,OAAO1hB,IAAM,CAChBnpB,KAAM+K,EAAK,GACXy+O,OAAQz+O,EAAK,IAGfpJ,EAAKkpC,OAAO1hB,IAAM,CAChBnpB,KAAM+K,EAAK,GACXy+O,OAAQz+O,EAAK,IAIO,SAAjBqoP,EAAO,GAAG,IACO,IAAlBA,EAAOn1Q,QAAcsQ,KAAK4ud,YAAY/pN,GAC1CzxP,EAAK0nP,KAAK7oM,QAAU4yM,EAAO10Q,QAAQ,GASrC,IANAijB,EAAKkpC,OAAOpnB,MAAQ,CAClBzjB,KAAMozP,EAAO,GAAG,GAChB5J,OAAQ4J,EAAO,GAAG,IAEpBzxP,EAAKkF,KAAO,GAELusP,EAAOn1Q,QAAQ,CACpB,IAAI0C,EAAOyyQ,EAAO,GAAG,GAErB,GAAa,MAATzyQ,GAAyB,UAATA,GAA6B,YAATA,EACtC,MAGFghB,EAAKkF,MAAQusP,EAAO10Q,QAAQ,GAM9B,IAHAijB,EAAK0nP,KAAKiB,QAAU,GAGb8I,EAAOn1Q,QAAQ,CAGpB,GAAiB,OAFjB2iJ,EAAQwyH,EAAO10Q,SAEL,GAAY,CACpBijB,EAAK0nP,KAAKiB,SAAW1pH,EAAM,GAC3B,MAEiB,SAAbA,EAAM,IAAiB,KAAK1gI,KAAK0gI,EAAM,KACzCryI,KAAK4ud,YAAY,CAACv8U,IAGpBj/H,EAAK0nP,KAAKiB,SAAW1pH,EAAM,GAIV,MAAjBj/H,EAAKkF,KAAK,IAA+B,MAAjBlF,EAAKkF,KAAK,KACpClF,EAAK0nP,KAAK7oM,QAAU7+C,EAAKkF,KAAK,GAC9BlF,EAAKkF,KAAOlF,EAAKkF,KAAK3jB,MAAM,IAG9Bye,EAAK0nP,KAAKiB,SAAW/7P,KAAK8ud,2BAA2BjqN,GACrD7kQ,KAAK+ud,wBAAwBlqN,GAE7B,IAAK,IAAIr1Q,EAAIq1Q,EAAOn1Q,OAAS,EAAGF,EAAI,EAAGA,IAAK,CAG1C,GAA+B,gBAF/B6iJ,EAAQwyH,EAAOr1Q,IAEL,GAAGgN,cAAgC,CAC3C4W,EAAKqhU,WAAY,EACjB,IAAInyS,EAAStiC,KAAKgvd,WAAWnqN,EAAQr1Q,GAEtB,iBADf8yC,EAAStiC,KAAKivd,cAAcpqN,GAAUviO,KACRlvB,EAAK0nP,KAAK25E,UAAYnyS,GACpD,MACK,GAA+B,cAA3B+vG,EAAM,GAAG71I,cAA+B,CAIjD,IAHA,IAAIuiC,EAAQ8lO,EAAOlwQ,MAAM,GACrB2d,EAAM,GAED/I,EAAI/Z,EAAG+Z,EAAI,EAAGA,IAAK,CAC1B,IAAIg+B,EAAQxI,EAAMx1B,GAAG,GAErB,GAAgC,IAA5B+I,EAAIw/E,OAAO14F,QAAQ,MAAwB,UAAVmuC,EACnC,MAGFj1B,EAAMysB,EAAMr5B,MAAM,GAAK4M,EAGO,IAA5BA,EAAIw/E,OAAO14F,QAAQ,OACrBga,EAAKqhU,WAAY,EACjBrhU,EAAK0nP,KAAK25E,UAAYniU,EACtBuyP,EAAS9lO,GAIb,GAAiB,UAAbszG,EAAM,IAA+B,YAAbA,EAAM,GAChC,MAIJryI,KAAK27P,IAAIvoP,EAAM,QAASyxP,IACS,IAA7BzxP,EAAK1f,MAAM0F,QAAQ,MAAa4G,KAAKkvd,qBAAqBrqN,IAGhE9J,EAAO45E,OAAS,SAAgBtiM,GAC9B,IAQIxwI,EACA1R,EATAijB,EAAO,IAAIoyc,EAAQ3wd,QACvBue,EAAK5gB,KAAO6/I,EAAM,GAAG19I,MAAM,GAET,KAAdye,EAAK5gB,MACPwN,KAAKmvd,cAAc/7c,EAAMi/H,GAG3BryI,KAAKD,KAAKqT,EAAMi/H,EAAM,GAAIA,EAAM,IAOhC,IAJA,IAAI71H,GAAO,EACP2+F,GAAO,EACP9xB,EAAS,IAELrpF,KAAKmud,UAAUC,aAAa,CAGlC,GAAiB,OAFjB/7U,EAAQryI,KAAKmud,UAAUE,aAEb,GAAY,CACpBj7c,EAAKkpC,OAAO1hB,IAAM,CAChBnpB,KAAM4gI,EAAM,GACZ4oH,OAAQ5oH,EAAM,IAEhBryI,KAAKs0U,WAAY,EACjB,MACK,GAAiB,MAAbjiM,EAAM,GAAY,CAC3Bl3B,GAAO,EACP,MACK,GAAiB,MAAbk3B,EAAM,GAAY,CAC3B,GAAIhpD,EAAO35F,OAAS,EAAG,CAIrB,IAFAmS,EAAOwnF,EADPl5F,EAAQk5F,EAAO35F,OAAS,GAGjBmS,GAAoB,UAAZA,EAAK,IAClBA,EAAOwnF,IAASl5F,GAGd0R,IACFuR,EAAKkpC,OAAO1hB,IAAM,CAChBnpB,KAAM5P,EAAK,GACXo5P,OAAQp5P,EAAK,KAKnB7B,KAAK46B,IAAIy3G,GACT,MAKF,GAHEhpD,EAAOr5F,KAAKqiJ,GAGVryI,KAAKmud,UAAUC,YAAa,CAC9B5xc,GAAO,EACP,OAIJpJ,EAAK0nP,KAAKiB,QAAU/7P,KAAK6ud,yBAAyBxlY,GAE9CA,EAAO35F,QACT0jB,EAAK0nP,KAAK85E,UAAY50U,KAAK8ud,2BAA2BzlY,GACtDrpF,KAAK27P,IAAIvoP,EAAM,SAAUi2E,GAErB7sE,IACF61H,EAAQhpD,EAAOA,EAAO35F,OAAS,GAC/B0jB,EAAKkpC,OAAO1hB,IAAM,CAChBnpB,KAAM4gI,EAAM,GACZ4oH,OAAQ5oH,EAAM,IAEhBryI,KAAK6jJ,OAASzwI,EAAK0nP,KAAKiB,QACxB3oP,EAAK0nP,KAAKiB,QAAU,MAGtB3oP,EAAK0nP,KAAK85E,UAAY,GACtBxhU,EAAKi2E,OAAS,IAGZ8xB,IACF/nG,EAAKF,MAAQ,GACblT,KAAKwT,QAAUJ,IAInB2nP,EAAOngO,IAAM,SAAay3G,GACpBryI,KAAKwT,QAAQN,OAASlT,KAAKwT,QAAQN,MAAMxjB,SAC3CsQ,KAAKwT,QAAQsnP,KAAKw5E,UAAYt0U,KAAKs0U,WAGrCt0U,KAAKs0U,WAAY,EACjBt0U,KAAKwT,QAAQsnP,KAAK9wN,OAAShqC,KAAKwT,QAAQsnP,KAAK9wN,OAAS,IAAMhqC,KAAK6jJ,OACjE7jJ,KAAK6jJ,OAAS,GAEV7jJ,KAAKwT,QAAQrM,QACfnH,KAAKwT,QAAQ8oC,OAAO1hB,IAAM,CACxBnpB,KAAM4gI,EAAM,GACZ4oH,OAAQ5oH,EAAM,IAEhBryI,KAAKwT,QAAUxT,KAAKwT,QAAQrM,QAE5BnH,KAAKovd,gBAAgB/8U,IAIzB0oH,EAAOyzN,QAAU,WACXxud,KAAKwT,QAAQrM,QAAQnH,KAAKqvd,gBAE1Brvd,KAAKwT,QAAQN,OAASlT,KAAKwT,QAAQN,MAAMxjB,SAC3CsQ,KAAKwT,QAAQsnP,KAAKw5E,UAAYt0U,KAAKs0U,WAGrCt0U,KAAKwT,QAAQsnP,KAAK9wN,OAAShqC,KAAKwT,QAAQsnP,KAAK9wN,OAAS,IAAMhqC,KAAK6jJ,QAGnEk3G,EAAOuzN,cAAgB,SAAuBj8U,GAG5C,GAFAryI,KAAK6jJ,QAAUxR,EAAM,GAEjBryI,KAAKwT,QAAQN,MAAO,CACtB,IAAIrR,EAAO7B,KAAKwT,QAAQN,MAAMlT,KAAKwT,QAAQN,MAAMxjB,OAAS,GAEtDmS,GAAsB,SAAdA,EAAKzP,OAAoByP,EAAKi5P,KAAK45E,eAC7C7yU,EAAKi5P,KAAK45E,aAAe10U,KAAK6jJ,OAC9B7jJ,KAAK6jJ,OAAS,MAMpBk3G,EAAOh7P,KAAO,SAAcqT,EAAM3B,EAAMwpP,GACtCj7P,KAAKwT,QAAQxjB,KAAKojB,GAClBA,EAAKkpC,OAAS,CACZpnB,MAAO,CACLzjB,KAAMA,EACNwpP,OAAQA,GAEVrsO,MAAO5uB,KAAK4uB,OAEdxb,EAAK0nP,KAAK7oM,OAASjyD,KAAK6jJ,OACxB7jJ,KAAK6jJ,OAAS,GACI,YAAdzwI,EAAKhhB,OAAoB4N,KAAKs0U,WAAY,IAGhDv5E,EAAOY,IAAM,SAAavoP,EAAMkF,EAAMusP,GAQpC,IAPA,IAAIxyH,EAAOjgJ,EAIPsL,EAAMmE,EAHNnS,EAASm1Q,EAAOn1Q,OAChBgE,EAAQ,GACR+zV,GAAQ,EAERtsM,EAAU,oBAEL3rJ,EAAI,EAAGA,EAAIE,EAAQF,GAAK,EAIlB,aAFb4C,GADAigJ,EAAQwyH,EAAOr1Q,IACF,KAE2B,SAAd4jB,EAAKhhB,KAalB,YAATA,GAA+B,UAATA,GAAoB5C,IAAME,EAAS,EAC3D+3V,GAAQ,EAER/zV,GAAS2+I,EAAM,IAffxwI,EAAOgjQ,EAAOr1Q,EAAI,GAClBkO,EAAOmnQ,EAAOr1Q,EAAI,GAEF,UAAZqS,EAAK,IAA8B,UAAZnE,EAAK,IAAkBy9I,EAAQxpI,KAAK9P,EAAK,KAAOs5I,EAAQxpI,KAAKjU,EAAK,IAC3FhK,GAAS2+I,EAAM,GAEfo1M,GAAQ,GAad,IAAKA,EAAO,CACV,IAAI9rF,EAAMkJ,EAAOzuP,QAAO,SAAUtjB,EAAKtD,GACrC,OAAOsD,EAAMtD,EAAE,KACd,IACH4jB,EAAK0nP,KAAKxiP,GAAQ,CAChB5kB,MAAOA,EACPioQ,IAAKA,GAITvoP,EAAKkF,GAAQ5kB,GAGfqnQ,EAAO8zN,yBAA2B,SAAkChqN,GAIlE,IAHA,IAAIyqN,EACAzrU,EAAS,GAENghH,EAAOn1Q,SAEU,WADtB4/d,EAAgBzqN,EAAOA,EAAOn1Q,OAAS,GAAG,KACS,YAAlB4/d,IACjCzrU,EAASghH,EAAOn/P,MAAM,GAAKm+I,EAG7B,OAAOA,GAGTk3G,EAAO+zN,2BAA6B,SAAoCjqN,GAItE,IAHA,IAAInnQ,EACAmmJ,EAAS,GAENghH,EAAOn1Q,SAEC,WADbgO,EAAOmnQ,EAAO,GAAG,KACgB,YAATnnQ,IACxBmmJ,GAAUghH,EAAO10Q,QAAQ,GAG3B,OAAO0zJ,GAGTk3G,EAAOk0N,cAAgB,SAAuBpqN,GAI5C,IAHA,IACIhhH,EAAS,GAENghH,EAAOn1Q,QAEU,UADNm1Q,EAAOA,EAAOn1Q,OAAS,GAAG,IAE1Cm0J,EAASghH,EAAOn/P,MAAM,GAAKm+I,EAG7B,OAAOA,GAGTk3G,EAAOi0N,WAAa,SAAoBnqN,EAAQ9zO,GAG9C,IAFA,IAAI95B,EAAS,GAEJzH,EAAIuhC,EAAMvhC,EAAIq1Q,EAAOn1Q,OAAQF,IACpCyH,GAAU4tQ,EAAOr1Q,GAAG,GAItB,OADAq1Q,EAAOxoQ,OAAO00B,EAAM8zO,EAAOn1Q,OAASqhC,GAC7B95B,GAGT8jQ,EAAO84E,MAAQ,SAAehvE,GAI5B,IAHA,IACIxyH,EAAOjgJ,EAAMyP,EADbq1b,EAAW,EAGN1nc,EAAI,EAAGA,EAAIq1Q,EAAOn1Q,OAAQF,IAAK,CAYtC,GARa,OAFb4C,GADAigJ,EAAQwyH,EAAOr1Q,IACF,MAGX0nc,GAAY,GAGD,MAAT9kc,IACF8kc,GAAY,GAGG,IAAbA,GAA2B,MAAT9kc,EAAc,CAClC,GAAKyP,EAEE,IAAgB,SAAZA,EAAK,IAA6B,WAAZA,EAAK,GACpC,SAEA,OAAOrS,EAJPwQ,KAAKuvd,YAAYl9U,GAQrBxwI,EAAOwwI,EAGT,OAAO,GAIT0oH,EAAO4zN,gBAAkB,SAAyBF,GAChD,MAAMzud,KAAK4uB,MAAMh9B,MAAM,mBAAoB68d,EAAQ,GAAIA,EAAQ,KAGjE1zN,EAAO6zN,YAAc,SAAqB/pN,GACxC,MAAM7kQ,KAAK4uB,MAAMh9B,MAAM,eAAgBizQ,EAAO,GAAG,GAAIA,EAAO,GAAG,KAGjE9J,EAAOq0N,gBAAkB,SAAyB/8U,GAChD,MAAMryI,KAAK4uB,MAAMh9B,MAAM,eAAgBygJ,EAAM,GAAIA,EAAM,KAGzD0oH,EAAOs0N,cAAgB,WACrB,IAAI5iV,EAAMzsI,KAAKwT,QAAQ8oC,OAAOpnB,MAC9B,MAAMl1B,KAAK4uB,MAAMh9B,MAAM,iBAAkB66I,EAAIh7H,KAAMg7H,EAAIwuH,SAGzDF,EAAOw0N,YAAc,SAAqBl9U,GACxC,MAAMryI,KAAK4uB,MAAMh9B,MAAM,eAAgBygJ,EAAM,GAAIA,EAAM,KAGzD0oH,EAAOo0N,cAAgB,SAAuB/7c,EAAMi/H,GAClD,MAAMryI,KAAK4uB,MAAMh9B,MAAM,uBAAwBygJ,EAAM,GAAIA,EAAM,KAGjE0oH,EAAOg0N,wBAA0B,aAKjCh0N,EAAOm0N,qBAAuB,SAA8BrqN,GAC1D,IAAIgvE,EAAQ7zU,KAAK6zU,MAAMhvE,GACvB,IAAc,IAAVgvE,EAAJ,CAIA,IAHA,IACIxhM,EADAm9U,EAAU,EAGLjmd,EAAIsqU,EAAQ,EAAGtqU,GAAK,IAGV,WAFjB8oI,EAAQwyH,EAAOt7P,IAEL,IAEQ,KADhBimd,GAAW,IAJiBjmd,KAShC,MAAMvJ,KAAK4uB,MAAMh9B,MAAM,mBAAoBygJ,EAAM,GAAIA,EAAM,MAGtDg1E,EAxkBT,GA2kBA92N,EAAQsE,QAAUwyN,EAClB72N,EAAOD,QAAUA,EAAQsE,S,6BC/lBzBtE,EAAQsD,YAAa,EACrBtD,EAAQsE,QAyBR,SAAmB+5B,EAAO10B,QACR,IAAZA,IACFA,EAAU,IAGZ,IAEIqF,EAAM7B,EAAM2gM,EAAO1mL,EAAO6E,EAAMw7E,EAASjF,EACzC85X,EAAU4C,EAAYvpO,EAASwpO,EAAW7td,EAAM3N,EAAGy7d,EAHnDryN,EAAM1uO,EAAM0uO,IAAIx9N,UAChBhP,EAAS52B,EAAQ01d,aAGjBlge,EAAS4tQ,EAAI5tQ,OACbsqC,GAAU,EACVvoB,EAAO,EACPg7H,EAAM,EACN9V,EAAS,GACTk5V,EAAW,GAMf,SAASC,EAAS1Q,GAChB,MAAMxwb,EAAMh9B,MAAM,YAAcwtd,EAAM3tc,EAAMg7H,EAAMzyG,GA4OpD,MAAO,CACL00b,KALF,SAAcr8U,GACZw9U,EAAS7/d,KAAKqiJ,IAKdg8U,UAvOF,SAAmB79c,GACjB,GAAIq/c,EAASnge,OAAQ,OAAOmge,EAASnqd,MACrC,KAAI+mI,GAAO/8I,GAAX,CACA,IAAIqge,IAAiBv/c,GAAOA,EAAKu/c,eAQjC,SAPAxwd,EAAO+9P,EAAI95N,WAAWipG,MAETujV,GAAWzwd,IAAS0wd,GAAQ1wd,IAAS2wd,GAAM5yN,EAAI95N,WAAWipG,EAAM,KAAOujV,KAClFh2b,EAASyyG,EACTh7H,GAAQ,GAGFlS,GACN,KAAKywd,EACL,KAAKrja,EACL,KAAK+wC,EACL,KAAKwyX,EACL,KAAKD,EACHvyd,EAAO+uI,EAEP,GACE/uI,GAAQ,GACR6B,EAAO+9P,EAAI95N,WAAW9lC,MAETsyd,IACXh2b,EAASt8B,EACT+T,GAAQ,SAEHlS,IAASotD,GAASptD,IAASywd,GAAWzwd,IAASm+F,GAAOn+F,IAAS2wd,GAAM3wd,IAAS0wd,GAEvFN,EAAe,CAAC,QAASryN,EAAI3oQ,MAAM83I,EAAK/uI,IACxC+uI,EAAM/uI,EAAO,EACb,MAEF,KAAKyyd,EACL,KAAKC,EACL,KAAKC,EACL,KAAKC,EACL,KAAK3tN,EACL,KAAK4tN,EACL,KAAKC,EACH,IAAIC,EAAcv+c,OAAO4yF,aAAavlG,GACtCowd,EAAe,CAACc,EAAaA,EAAah/c,EAAMg7H,EAAMzyG,GACtD,MAEF,KAAK02b,EAIH,GAHA7ud,EAAO80H,EAAOjnI,OAASinI,EAAOjxH,MAAM,GAAK,GACzCxR,EAAIopQ,EAAI95N,WAAWipG,EAAM,GAEZ,QAAT5qI,GAAkB3N,IAAMy8d,GAAgBz8d,IAAM08d,GAAgB18d,IAAMy4D,GAASz4D,IAAM87d,GAAW97d,IAAMwpG,GAAOxpG,IAAM+7d,GAAQ/7d,IAAMg8d,EAAI,CACrIxyd,EAAO+uI,EAEP,EAAG,CAID,GAHAy5G,GAAU,GAGI,KAFdxoP,EAAO4/P,EAAIlkQ,QAAQ,IAAKsE,EAAO,IAEd,CACf,GAAIozB,GAAUi/b,EAAgB,CAC5Bryd,EAAO+uI,EACP,MAEAqjV,EAAS,WAMb,IAFAJ,EAAYhyd,EAEL4/P,EAAI95N,WAAWksb,EAAY,KAAOmB,GACvCnB,GAAa,EACbxpO,GAAWA,QAENA,GAETypO,EAAe,CAAC,WAAYryN,EAAI3oQ,MAAM83I,EAAK/uI,EAAO,GAAI+T,EAAMg7H,EAAMzyG,EAAQvoB,EAAM/T,EAAOs8B,GACvFyyG,EAAM/uI,OAENA,EAAO4/P,EAAIlkQ,QAAQ,IAAKqzI,EAAM,GAC9Bz0C,EAAUslK,EAAI3oQ,MAAM83I,EAAK/uI,EAAO,IAElB,IAAVA,GAAeozd,EAAen/c,KAAKqmF,GACrC23X,EAAe,CAAC,IAAK,IAAKl+c,EAAMg7H,EAAMzyG,IAEtC21b,EAAe,CAAC,WAAY33X,EAASvmF,EAAMg7H,EAAMzyG,EAAQvoB,EAAM/T,EAAOs8B,GACtEyyG,EAAM/uI,GAIV,MAEF,KAAKizd,EACL,KAAKC,EACHvyR,EAAQ9+L,IAASoxd,EAAe,IAAO,IACvCjzd,EAAO+uI,EAEP,EAAG,CAID,GAHAy5G,GAAU,GAGI,KAFdxoP,EAAO4/P,EAAIlkQ,QAAQilM,EAAO3gM,EAAO,IAEhB,CACf,GAAIozB,GAAUi/b,EAAgB,CAC5Bryd,EAAO+uI,EAAM,EACb,MAEAqjV,EAAS,UAMb,IAFAJ,EAAYhyd,EAEL4/P,EAAI95N,WAAWksb,EAAY,KAAOmB,GACvCnB,GAAa,EACbxpO,GAAWA,QAENA,GAETluJ,EAAUslK,EAAI3oQ,MAAM83I,EAAK/uI,EAAO,GAChCia,EAAQqgF,EAAQn/F,MAAM,OACtB2jB,EAAO7E,EAAMjoB,OAAS,GAEX,GACTm9d,EAAWp7c,EAAO+K,EAClBizc,EAAa/xd,EAAOia,EAAM6E,GAAM9sB,SAEhCm9d,EAAWp7c,EACXg+c,EAAaz1b,GAGf21b,EAAe,CAAC,SAAUryN,EAAI3oQ,MAAM83I,EAAK/uI,EAAO,GAAI+T,EAAMg7H,EAAMzyG,EAAQ6yb,EAAUnvd,EAAO+xd,GACzFz1b,EAASy1b,EACTh+c,EAAOo7c,EACPpgV,EAAM/uI,EACN,MAEF,KAAKolQ,EACHiuN,EAAUhnd,UAAY0iI,EAAM,EAC5BskV,EAAUp/c,KAAK2rP,GAGb5/P,EAD0B,IAAxBqzd,EAAUhnd,UACLuzP,EAAI5tQ,OAAS,EAEbqhe,EAAUhnd,UAAY,EAG/B4ld,EAAe,CAAC,UAAWryN,EAAI3oQ,MAAM83I,EAAK/uI,EAAO,GAAI+T,EAAMg7H,EAAMzyG,EAAQvoB,EAAM/T,EAAOs8B,GACtFyyG,EAAM/uI,EACN,MAEF,KAAKmzd,EAIH,IAHAnzd,EAAO+uI,EACP15C,GAAS,EAEFuqK,EAAI95N,WAAW9lC,EAAO,KAAOmzd,GAClCnzd,GAAQ,EACRq1F,GAAUA,EAKZ,GAFAxzF,EAAO+9P,EAAI95N,WAAW9lC,EAAO,GAEzBq1F,GAAUxzF,IAASmmQ,GAASnmQ,IAASotD,GAASptD,IAASywd,GAAWzwd,IAASm+F,GAAOn+F,IAAS2wd,GAAM3wd,IAAS0wd,IAC5Gvyd,GAAQ,EAEJszd,EAAcr/c,KAAK2rP,EAAIxrP,OAAOpU,KAAQ,CACxC,KAAOszd,EAAcr/c,KAAK2rP,EAAIxrP,OAAOpU,EAAO,KAC1CA,GAAQ,EAGN4/P,EAAI95N,WAAW9lC,EAAO,KAAOivD,IAC/BjvD,GAAQ,GAKdiyd,EAAe,CAAC,OAAQryN,EAAI3oQ,MAAM83I,EAAK/uI,EAAO,GAAI+T,EAAMg7H,EAAMzyG,EAAQvoB,EAAM/T,EAAOs8B,GACnFyyG,EAAM/uI,EACN,MAEF,QACM6B,IAASmmQ,GAASpI,EAAI95N,WAAWipG,EAAM,KAAOwkV,GAGnC,KAFbvzd,EAAO4/P,EAAIlkQ,QAAQ,KAAMqzI,EAAM,GAAK,KAG9B37G,GAAUi/b,EACZryd,EAAO4/P,EAAI5tQ,OAEXoge,EAAS,YAIb93X,EAAUslK,EAAI3oQ,MAAM83I,EAAK/uI,EAAO,GAChCia,EAAQqgF,EAAQn/F,MAAM,OACtB2jB,EAAO7E,EAAMjoB,OAAS,GAEX,GACTm9d,EAAWp7c,EAAO+K,EAClBizc,EAAa/xd,EAAOia,EAAM6E,GAAM9sB,SAEhCm9d,EAAWp7c,EACXg+c,EAAaz1b,GAGf21b,EAAe,CAAC,UAAW33X,EAASvmF,EAAMg7H,EAAMzyG,EAAQ6yb,EAAUnvd,EAAO+xd,GACzEz1b,EAASy1b,EACTh+c,EAAOo7c,EACPpgV,EAAM/uI,IAENwzd,EAAYnnd,UAAY0iI,EAAM,EAC9BykV,EAAYv/c,KAAK2rP,GAGf5/P,EAD4B,IAA1Bwzd,EAAYnnd,UACPuzP,EAAI5tQ,OAAS,EAEbwhe,EAAYnnd,UAAY,EAGjC4ld,EAAe,CAAC,OAAQryN,EAAI3oQ,MAAM83I,EAAK/uI,EAAO,GAAI+T,EAAMg7H,EAAMzyG,EAAQvoB,EAAM/T,EAAOs8B,GACnF28F,EAAO3mI,KAAK2/d,GACZljV,EAAM/uI,GAOZ,OADA+uI,IACOkjV,IAUPvB,UA5OF,WACE,OAA2B,IAApByB,EAASnge,QAAgB+8I,GAAO/8I,GA4OvCq2E,SArPF,WACE,OAAO0mE,KAzCX,IAAIkkV,EAAe,IAAKntb,WAAW,GAC/Botb,EAAe,IAAIptb,WAAW,GAC9Bqtb,EAAY,KAAKrtb,WAAW,GAC5BkiO,EAAQ,IAAIliO,WAAW,GACvBwsb,EAAU,KAAKxsb,WAAW,GAC1BmpB,EAAQ,IAAInpB,WAAW,GACvBysb,EAAO,KAAKzsb,WAAW,GACvBk6D,EAAM,KAAKl6D,WAAW,GACtB0sb,EAAK,KAAK1sb,WAAW,GACrB2sb,EAAc,IAAI3sb,WAAW,GAC7B4sb,EAAe,IAAI5sb,WAAW,GAC9Bktb,EAAmB,IAAIltb,WAAW,GAClCgtb,EAAoB,IAAIhtb,WAAW,GACnC6sb,EAAa,IAAI7sb,WAAW,GAC5B8sb,EAAc,IAAI9sb,WAAW,GAC7B+sb,EAAY,IAAI/sb,WAAW,GAC3Bytb,EAAW,IAAIztb,WAAW,GAC1Bm/N,EAAQ,IAAIn/N,WAAW,GACvBs/N,EAAK,IAAIt/N,WAAW,GACpButb,EAAY,6BACZG,EAAc,wCACdJ,EAAiB,cACjBE,EAAgB,YA2QpBxge,EAAOD,QAAUA,EAAQsE,S,6BCnSzBtE,EAAQsD,YAAa,EACrBtD,EAAQsE,aAAU,EAElB,IAAIqpF,EAAQtoF,EAAuB,EAAQ,MAEvCglQ,EAAkBhlQ,EAAuB,EAAQ,MAEjDu7d,EAAev7d,EAAuB,EAAQ,OAElD,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvF,SAAS6oQ,EAAkBxrQ,EAAQ+C,GAAS,IAAK,IAAI7F,EAAI,EAAGA,EAAI6F,EAAM3F,OAAQF,IAAK,CAAE,IAAI8F,EAAaD,EAAM7F,GAAI8F,EAAWjC,WAAaiC,EAAWjC,aAAc,EAAOiC,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAM7F,OAAOyD,eAAed,EAAQgD,EAAWtB,IAAKsB,IAI7S,IAAI87d,EAAW,EA4LX32N,EAjLJ,WAKE,SAAS42N,EAAM/zN,EAAK9sP,GAKlB,QAJa,IAATA,IACFA,EAAO,IAGG,OAAR8sP,GAA+B,iBAARA,IAAqBA,EAAI93P,SAClD,MAAM,IAAI3T,MAAM,oBAAsByrQ,EAAM,0BAa9Ct9P,KAAKs9P,IAAMA,EAAI93P,WAEK,WAAhBxF,KAAKs9P,IAAI,IAAmC,MAAhBt9P,KAAKs9P,IAAI,IACvCt9P,KAAKsxd,QAAS,EACdtxd,KAAKs9P,IAAMt9P,KAAKs9P,IAAI3oQ,MAAM,IAE1BqL,KAAKsxd,QAAS,EAGZ9gd,EAAKugB,OACH,YAAYpf,KAAKnB,EAAKugB,MAWxB/wB,KAAKs/I,KAAO9uI,EAAKugB,KAEjB/wB,KAAKs/I,KAAOphE,EAAMrpF,QAAQ9D,QAAQyf,EAAKugB,OAI3C,IAAI73B,EAAM,IAAIi4d,EAAat8d,QAAQmL,KAAKs9P,IAAK9sP,GAE7C,GAAItX,EAAIY,KAAM,CAUZkG,KAAK9G,IAAMA,EACX,IAAIomJ,EAAOpmJ,EAAIwtd,WAAWpnU,MACrBt/I,KAAKs/I,MAAQA,IAAMt/I,KAAKs/I,KAAOt/I,KAAKuxd,WAAWjyU,IAGjDt/I,KAAKs/I,OACR8xU,GAAY,EAaZpxd,KAAK4gD,GAAK,cAAgBwwa,EAAW,KAGnCpxd,KAAK9G,MAAK8G,KAAK9G,IAAIomJ,KAAOt/I,KAAK+wB,MAGrC,IArGoBh8B,EAAaU,EAAYC,EAqGzCqlQ,EAASs2N,EAAMzhe,UAsFnB,OApFAmrQ,EAAOnpQ,MAAQ,SAAeW,EAASkf,EAAMwpP,EAAQzqP,GAKnD,IAAIvZ,OAJS,IAATuZ,IACFA,EAAO,IAIT,IAAI88B,EAASttC,KAAKstC,OAAO77B,EAAMwpP,GAc/B,OAXEhkQ,EADEq2C,EACO,IAAIstN,EAAgB/lQ,QAAQtC,EAAS+6C,EAAO77B,KAAM67B,EAAO2tN,OAAQ3tN,EAAOgP,OAAQhP,EAAOgyG,KAAM9uI,EAAKgoE,QAElG,IAAIoiL,EAAgB/lQ,QAAQtC,EAASkf,EAAMwpP,EAAQj7P,KAAKs9P,IAAKt9P,KAAKs/I,KAAM9uI,EAAKgoE,SAGjF5pD,MAAQ,CACbnd,KAAMA,EACNwpP,OAAQA,EACR3+M,OAAQt8C,KAAKs9P,KAEXt9P,KAAKs/I,OAAMroJ,EAAO23B,MAAM0wH,KAAOt/I,KAAKs/I,MACjCroJ,GAiBT8jQ,EAAOztN,OAAS,SAAgB77B,EAAMwpP,GACpC,IAAKj7P,KAAK9G,IAAK,OAAO,EACtB,IAAIwtd,EAAW1md,KAAK9G,IAAIwtd,WACpB31b,EAAO21b,EAAS5tI,oBAAoB,CACtCrnU,KAAMA,EACNwpP,OAAQA,IAEV,IAAKlqO,EAAKurB,OAAQ,OAAO,EACzB,IAAIrlD,EAAS,CACXqoJ,KAAMt/I,KAAKuxd,WAAWxgc,EAAKurB,QAC3B7qC,KAAMsf,EAAKtf,KACXwpP,OAAQlqO,EAAKkqO,QAEX3+M,EAASoqa,EAAStuI,iBAAiBrnT,EAAKurB,QAE5C,OADIA,IAAQrlD,EAAOqlD,OAASA,GACrBrlD,GAGT8jQ,EAAOw2N,WAAa,SAAoBjyU,GACtC,MAAI,YAAY3tI,KAAK2tI,GACZA,EAGFphE,EAAMrpF,QAAQ9D,QAAQiP,KAAK9G,IAAIwtd,WAAW5uS,YAAc,IAAKx4B,IAnKlDvqJ,EAoLPs8d,GApLoB57d,EAoLb,CAAC,CACnBzB,IAAK,OACLV,IAAK,WACH,OAAO0M,KAAKs/I,MAAQt/I,KAAK4gD,QAvL+Ck9M,EAAkB/oQ,EAAYnF,UAAW6F,GAAiBC,GAAaooQ,EAAkB/oQ,EAAaW,GA2L3K27d,EA9KT,GAyLA9ge,EAAQsE,QAAU4lQ,EAClBjqQ,EAAOD,QAAUA,EAAQsE,S,8BCtNzB,YAEAtE,EAAQsD,YAAa,EACrBtD,EAAQsE,aAAU,EAElB,IAAIkxd,EAAanwd,EAAuB,EAAQ,MAE5CsoF,EAAQtoF,EAAuB,EAAQ,MAEvC47d,EAAM57d,EAAuB,EAAQ,OAEzC,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAsBvF,IA4HIwlQ,EA1HJ,WAKE,SAASg3N,EAAYn0N,EAAK9sP,GACxBxQ,KAAK0xd,eAAep0N,GAOpBt9P,KAAK+3D,OAAS/3D,KAAK2xd,UAAU3xd,KAAKmmd,WAAY,SAC9C,IAAItkd,EAAO2O,EAAKtX,IAAMsX,EAAKtX,IAAI2I,UAAOnP,EAClCoH,EAAOkG,KAAK4xd,QAAQphd,EAAKugB,KAAMlvB,GAC/B/H,IAAMkG,KAAKlG,KAAOA,GAaxB,IAAIihQ,EAAS02N,EAAY7he,UA0FzB,OAxFAmrQ,EAAO2rN,SAAW,WAKhB,OAJK1md,KAAK6xd,gBACR7xd,KAAK6xd,cAAgB,IAAI9L,EAAWlxd,QAAQkiV,kBAAkB/2U,KAAKlG,OAG9DkG,KAAK6xd,eASd92N,EAAOsrN,YAAc,WACnB,SAAUrmd,KAAK0md,WAAW3sI,gBAAkB/5U,KAAK0md,WAAW3sI,eAAerqV,OAAS,IAGtFqrQ,EAAO42N,UAAY,SAAmBrvb,EAAQpN,GAC5C,QAAKoN,GACEA,EAAO/oC,OAAO,EAAG27B,EAAMxlC,UAAYwlC,GAG5C6lO,EAAO22N,eAAiB,SAAwBp0N,GAC9C,IAAI5hQ,EAAQ4hQ,EAAI5hQ,MAAM,yCAClBA,IAAOsE,KAAKmmd,WAAazqd,EAAM,GAAGo2F,SAGxCipK,EAAO+2N,aAAe,SAAsBh4d,GAC1C,IAlFgBwY,EAoFZq2G,EAAM,yBAEV,GAAI3oH,KAAK2xd,UAAU73d,EAAM6uH,GACvB,OAAOv2B,mBAAmBt4F,EAAKP,OAAOovH,EAAIj5H,SAG5C,GARqB,iDAQFiiB,KAAK7X,IAPV,kCAO2B6X,KAAK7X,GAC5C,OA3FcwY,EA2FIxY,EAAKP,OAAO+B,OAAO4nE,UAAUxzE,QA1F/C24I,EACKA,EAAOt3G,KAAKze,EAAK,UAAU9M,WAE3B/Q,OAAOi7S,KAAKp9R,GA0FnB,IAAI42G,EAAWpvH,EAAK4B,MAAM,mCAAmC,GAC7D,MAAM,IAAI7J,MAAM,mCAAqCq3H,IAGvD6xI,EAAO62N,QAAU,SAAiBtyU,EAAMz9I,GACtC,IAAa,IAATA,EAAgB,OAAO,EAE3B,GAAIA,EAAM,CACR,GAAoB,iBAATA,EACT,OAAOA,EACF,GAAoB,mBAATA,EAAqB,CACrC,IAAIkwd,EAAWlwd,EAAKy9I,GAEpB,GAAIyyU,GAAYP,EAAI38d,QAAQm9d,YAAcR,EAAI38d,QAAQm9d,WAAWD,GAC/D,OAAOP,EAAI38d,QAAQg9c,aAAakgB,EAAU,SAASvsd,WAAWssF,OAE9D,MAAM,IAAIjgG,MAAM,uCAAyCkge,EAASvsd,YAE/D,GAAI3D,aAAgBkkd,EAAWlxd,QAAQkiV,kBAC5C,OAAOgvI,EAAWlxd,QAAQiiV,mBAAmBc,cAAc/1U,GAAM2D,WAC5D,GAAI3D,aAAgBkkd,EAAWlxd,QAAQiiV,mBAC5C,OAAOj1U,EAAK2D,WACP,GAAIxF,KAAKknB,MAAMrlB,GACpB,OAAO7E,KAAKuV,UAAU1Q,GAEtB,MAAM,IAAIhQ,MAAM,2CAA6CgQ,EAAK2D,YAE/D,GAAIxF,KAAK+3D,OACd,OAAO/3D,KAAK8xd,aAAa9xd,KAAKmmd,YACzB,GAAInmd,KAAKmmd,WAAY,CAC1B,IAAIjtd,EAAM8G,KAAKmmd,WAIf,OAHI7mU,IAAMpmJ,EAAMglF,EAAMrpF,QAAQ0H,KAAK2hF,EAAMrpF,QAAQ+nQ,QAAQt9G,GAAOpmJ,IAChE8G,KAAK4nC,KAAOs2C,EAAMrpF,QAAQ+nQ,QAAQ1jQ,MAE9Bs4d,EAAI38d,QAAQm9d,aAAcR,EAAI38d,QAAQm9d,WAAW94d,KAC5Cs4d,EAAI38d,QAAQg9c,aAAa34c,EAAK,SAASsM,WAAWssF,SAO/DipK,EAAO7zO,MAAQ,SAAehuB,GAC5B,MAAmB,iBAARA,IACoB,iBAAjBA,EAAIygV,UAAkD,iBAAlBzgV,EAAIu+U,YAGjDg6I,EAvHT,GA2HAlhe,EAAQsE,QAAU4lQ,EAClBjqQ,EAAOD,QAAUA,EAAQsE,U,uEC7JzBtE,EAAQsD,YAAa,EACrBtD,EAAQsE,aAAU,EAUlB,IAoCI4lQ,EApCS,CAYX7pO,OAAQ,SAAgBtY,GACtB,IAAI5c,EAAQ4c,EAAK5c,MAAM,YAEvB,OAAIA,EACKA,EAAM,GAGR,IAaTu2d,WAAY,SAAoB35c,GAC9B,OAAOA,EAAK7b,QAAQ,SAAU,MAIlClM,EAAQsE,QAAU4lQ,EAClBjqQ,EAAOD,QAAUA,EAAQsE,S,gDClCzB,M,IACA,OAEA,O,mDAEArE,EAAOD,QAAU,WACb,IAAM2he,EAAiB1pY,UAAUl1F,MAAM6+d,SACnCC,EAAQ,CACR,CAAC,KAAQ,OAAQ,IAAO,gCACxB,CAAC,KAAQ,UAAW,IAAO,iCAC3B,CAAC,KAAQ,SAAU,IAAO,0CAG1BF,GAAkBA,EAAeG,kBACjCD,EAAQF,EAAeG,iBAG3B,IAAMA,EAAkB,GAZL,uBAanB,0BAAwBD,KAAxB,0BAA+B,KAApBE,EAAoB,QAC3BD,EAAgBrie,KACZ,6BAAGsgG,KAAMgiY,EAAU31d,IAAK3I,IAAKs+d,EAAUx4d,KAAMxH,OAAO,SAAS2gG,IAAI,YAC5Dq/X,EAAUx4d,QAhBJ,6EAqBnB,OACI,+BAAKc,UAAU,iBACVy3d,EACD,6BAAG/hY,KAAK,qBAAqBh+F,OAAO,SAAS2gG,IAAI,aAAa,IAAA/8F,IAAG,wBAI7E1F,EAAOD,QAAQ+pO,QAAU,CACrB0uM,SAAU,e,wIChCd,M,IACA,M,IACA,O,uDAEqBupD,E,wMAQb,IAAML,EAAiB1pY,UAAUl1F,MAAM6+d,SACnCK,EAAU,oDAKd,OAJIN,GAAkBA,EAAeO,oBACjCD,EAAUN,EAAeO,mBAIzB,+BAAK73d,UAAU,qBACX,+BAAKnJ,IAAK+ge,EAAS5zP,IAAI,c,GAhBW1nM,UAAM+6E,eAAnCsgX,EACVvpD,SAAW,iBADDupD,EAGVxza,UAAY,CACfk1J,KAAMyvP,UAAUpha,Q,UAJHiwb,E,6JCLrB,M,IACA,M,IACA,O,uDAEqBG,E,wMAIb,IAAMC,EAAa/iR,UAAIpxM,aAAa,mBAE9B0zd,EAAiB1pY,UAAUl1F,MAAM6+d,SACnCS,EAAgB,yCAChBV,GAAkBA,EAAeW,uBACjCD,EAAgBV,EAAeW,sBAGnC,IAAMC,EAAY,CACdn/E,qCAAsCi/E,EAAtC,KAQEG,EAAY,CACdhtZ,SAAU,WACVy6D,IAAK,EACLvzF,MAAO,EACPwzF,OAAQ,EACRzzF,KAAM,EACNl0B,OAAQ,aACR66X,WAAYm/E,EAAUn/E,YAU1B,OACI,+BAAK/4Y,UAAU,cAAcwqG,MAAO0tX,GAChC,+BAAKl4d,UAAU,oBAAoBwqG,MAxBxB,CACfr/B,SAAU,WACV4tU,WAAY,YAuBJ,+BAAK/4Y,UAAU,wBAAwBwqG,MAAO2tX,IAC9C,+BAAKn4d,UAAU,2BAA2BwqG,MAX5B,CACtB6V,QAAS,OACTumB,OAAQ,EACRmyQ,WAAY,4BACZq/E,aAAc,QAQAhzd,KAAK3K,MAAM42D,WAGrB,wBAAC0ma,EAAD,W,GA9C4Bz7b,UAAM+6E,eAA7BygX,EACV1pD,SAAW,W,UADD0pD,E,kDCLrB,I,EAAA,O,oCACA,OAMAlie,EAAOD,QAAU,YAAkB,IAAhBovD,EAAgB,EAAhBA,WACf,OACI,+BAAK/kD,UAAU,kBACX,+BAAKA,UAAU,oBACT,IAAA1E,IAAG,0BAET,+BAAK0E,UAAU,qBACX,kCAAI,IAAA1E,IACA,6MAKJ,kCAAI,IAAAA,IACA,iJAKR,+BAAK0E,UAAU,qBACX,kCAAQ6oD,QAAS9D,EAAYspO,WAAW,IAClC,IAAA/yR,IAAG,eAMzB1F,EAAOD,QAAQ+pO,QAAU,CACrB0uM,SAAU,uB,6BClDdr5a,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQs4a,gBAAan2a,EAErB,IAAIuge,EAAqB,EAAQ,KAE7BxyI,EAAsB7qV,GAAuBq9d,GAE7CC,EAAqB,EAAQ,MAE7BC,EAAsBv9d,GAAuBs9d,GAE7CpjI,EAAkB,EAAQ,KAE1BsjI,EAAmBx9d,GAAuBk6V,GAE1CujI,EAAsB,EAAQ,MAE9BC,EAAuB19d,GAAuBy9d,GAE9CE,EAAgB,EAAQ,KAExBC,EAAiB59d,GAAuB29d,GAExCE,EAAa,EAAQ,MAErBC,EAAc99d,GAAuB69d,GAErCE,EAAoB,EAAQ,MAE5BC,EAAqBh+d,GAAuB+9d,GAE5CE,EAAa,EAAQ,MAErBC,EAAcl+d,GAAuBi+d,GAErCE,EAAsB,EAAQ,KAE9BhnI,EAAuBn3V,GAAuBm+d,GAE9CC,EAAmB,EAAQ,MAE3BC,EAAoBr+d,GAAuBo+d,GAE3CE,EAAa,EAAQ,MAErBC,EAAcv+d,GAAuBs+d,GAErCE,EAAgB,EAAQ,MAExBC,EAAiBz+d,GAAuBw+d,GAExCE,EAAa,EAAQ,KAErBhhI,EAAc19V,GAAuB0+d,GAErCC,EAAc,EAAQ,MAEtBC,EAAe5+d,GAAuB2+d,GAEtCE,EAAgB,EAAQ,MAExBC,EAAiB9+d,GAAuB6+d,GAExCE,EAAY,EAAQ,MAEpBC,EAAah/d,GAAuB++d,GAEpCE,EAAqB,EAAQ,MAE7BC,EAAsBl/d,GAAuBi/d,GAE7CE,EAAc,EAAQ,KAEtBr1I,EAAe9pV,GAAuBm/d,GAEtCC,EAAiB,EAAQ,MAEzBC,EAAkBr/d,GAAuBo/d,GAEzCE,EAAiB,EAAQ,MAEzBC,EAAkBv/d,GAAuBs/d,GAEzCE,EAAe,EAAQ,KAEvBC,EAAgBz/d,GAAuBw/d,GAEvCE,EAAY,EAAQ,KAEpBC,EAAa3/d,GAAuB0/d,GAEpCE,EAAe,EAAQ,MAEvBC,EAAgB7/d,GAAuB4/d,GAEvCE,EAAa,EAAQ,MAErBC,EAAc//d,GAAuB8/d,GAErCE,EAAc,EAAQ,KAEtBC,EAAejge,GAAuBgge,GAEtCE,EAAY,EAAQ,MAEpBC,GAAange,GAAuBkge,GAEpCE,GAAmB,EAAQ,KAE3BC,GAAoBrge,GAAuBoge,IAE3CE,GAAiB,EAAQ,MAEzBC,GAAkBvge,GAAuBsge,IAEzCE,GAAqB,EAAQ,MAE7BC,GAAsBzge,GAAuBwge,IAE7CE,GAAa,EAAQ,MAErBC,GAAc3ge,GAAuB0ge,IAErCE,GAAY,EAAQ,MAEpBC,GAAa7ge,GAAuB4ge,IAEpCE,GAAc,EAAQ,MAEtBC,GAAe/ge,GAAuB8ge,IAEtCE,GAAkB,EAAQ,MAE1BC,GAAmBjhe,GAAuBghe,IAE1CpjT,GAAS,EAAQ,MAEjBsjT,GAAUlhe,GAAuB49K,IAEjCujT,GAAoB,EAAQ,MAE5BC,GAAqBphe,GAAuBmhe,IAE5CE,GAAgB,EAAQ,MAExBC,GAAiBthe,GAAuBqhe,IAExCE,GAAc,EAAQ,MAEtBC,GAAexhe,GAAuBuhe,IAEtCE,GAAY,EAAQ,MAEpBC,GAAa1he,GAAuByhe,IAEpCE,GAAc,EAAQ,MAEtBC,GAAe5he,GAAuB2he,IAEtCE,GAAc,EAAQ,MAEtBC,GAAe9he,GAAuB6he,IAEtCE,GAAkB,EAAQ,MAE1BC,GAAmBhie,GAAuB+he,IAE1CE,GAAY,EAAQ,MAEpBC,GAAalie,GAAuBiie,IAEpCE,GAAe,EAAQ,MAEvBC,GAAgBpie,GAAuBmie,IAEvCE,GAAmB,EAAQ,KAE3BC,GAAoBtie,GAAuBqie,IAE3CE,GAAsB,EAAQ,MAE9BC,GAAuBxie,GAAuBuie,IAE9CE,GAAkC,EAAQ,KAE1CC,GAAmC1ie,GAAuByie,IAE1DE,GAAoB,EAAQ,MAE5BC,GAAqB5ie,GAAuB2ie,IAE5CE,GAAuB,EAAQ,MAE/BC,GAAwB9ie,GAAuB6ie,IAE/CE,GAAiB,EAAQ,MAEzBC,GAAkBhje,GAAuB+ie,IAEzCE,GAAoB,EAAQ,MAE5BC,GAAqBlje,GAAuBije,IAE5CE,GAAgB,EAAQ,KAExBC,GAAiBpje,GAAuBmje,IAExCE,GAAsB,EAAQ,KAE9BC,GAAuBtje,GAAuBqje,IAE9CE,GAAgB,EAAQ,MAExBC,GAAiBxje,GAAuBuje,IAExCE,GAAW,EAAQ,MAEnBC,GAAY1je,GAAuByje,IAEnCE,GAAc,EAAQ,KAEtBC,GAAe5je,GAAuB2je,IAEtCE,GAAe,EAAQ,MAEvBC,GAAgB9je,GAAuB6je,IAEvCE,GAAgB,EAAQ,KAExB/oG,GAAiBh7X,GAAuB+je,IAExCC,GAA6B,EAAQ,MAErCC,GAA8Bjke,GAAuBgke,IAErDE,GAAc,EAAQ,KAEtBC,GAAenke,GAAuBkke,IAEtCE,GAA6B,EAAQ,MAErCC,GAA8Brke,GAAuBoke,IAErDE,GAA0B,EAAQ,MAElCC,GAA2Bvke,GAAuBske,IAElDE,GAA8B,EAAQ,MAEtCC,GAA+Bzke,GAAuBwke,IAEtDE,GAAsB,EAAQ,MAE9BC,GAAuB3ke,GAAuB0ke,IAE9CE,GAAuB,EAAQ,MAE/BC,GAAwB7ke,GAAuB4ke,IAE/CE,GAA4B,EAAQ,KAEpCC,GAA6B/ke,GAAuB8ke,IAEpDE,GAAsB,EAAQ,MAE9BC,GAAuBjle,GAAuBgle,IAE9CE,GAAe,EAAQ,KAEvBC,GAAgBnle,GAAuBkle,IAEvCE,GAAoB,EAAQ,MAE5BC,GAAqBrle,GAAuBole,IAE5CE,GAAW,EAAQ,MAEnBC,GAAYvle,GAAuBsle,IAEnCE,GAAa,EAAQ,MAErBC,GAAczle,GAAuBwle,IAErCE,GAAuB,EAAQ,MAE/BC,GAAwB3le,GAAuB0le,IAE/CE,GAAyB,EAAQ,MAEjCC,GAA0B7le,GAAuB4le,IAEjDE,GAAc,EAAQ,MAEtBC,GAAe/le,GAAuB8le,IAEtCE,GAAmB,EAAQ,MAE3BC,GAAoBjme,GAAuBgme,IAE3CE,GAAmB,EAAQ,MAE3BC,GAAoBnme,GAAuBkme,IAE3CE,GAA8B,EAAQ,MAEtCC,GAA+Brme,GAAuBome,IAEtDE,GAAuB,EAAQ,MAE/BC,GAAwBvme,GAAuBsme,IAE/CE,GAA2B,EAAQ,MAEnCC,GAA4Bzme,GAAuBwme,IAEnDE,GAA2B,EAAQ,MAEnCC,GAA4B3me,GAAuB0me,IAEnDE,GAAqB,EAAQ,MAE7BC,GAAsB7me,GAAuB4me,IAE7CE,GAAoB,EAAQ,MAE5BC,GAAqB/me,GAAuB8me,IAE5CE,GAA2B,EAAQ,MAEnCC,GAA4Bjne,GAAuBgne,IAEnDE,GAA2B,EAAQ,KAEnClmH,GAA4BhhX,GAAuBkne,IAEnDC,GAAsB,EAAQ,MAE9BC,GAAuBpne,GAAuBmne,IAE9CE,GAAkB,EAAQ,MAE1BC,GAAmBtne,GAAuBqne,IAE1CptW,GAAe,EAAQ,KAEvBE,GAAgBn6H,GAAuBi6H,IAEvCstW,GAAqB,EAAQ,MAE7BC,GAAsBxne,GAAuBune,IAE7CE,GAAc,EAAQ,MAEtBC,GAAe1ne,GAAuByne,IAEtCE,GAAyB,EAAQ,MAEjCC,GAA0B5ne,GAAuB2ne,IAEjDE,GAAkB,EAAQ,MAE1BC,GAAmB9ne,GAAuB6ne,IAE1CE,GAA6B,EAAQ,MAErCC,GAA8Bhoe,GAAuB+ne,IAErDE,GAA2B,EAAQ,MAEnCC,GAA4Bloe,GAAuBioe,IAEnDE,GAAgB,EAAQ,KAExB75H,GAAiBtuW,GAAuBmoe,IAExCC,GAA4B,EAAQ,MAEpCC,GAA6Broe,GAAuBooe,IAEpDE,GAAkB,EAAQ,KAE1BppQ,GAAmBl/N,GAAuBsoe,IAE1CC,GAA0B,EAAQ,MAElCC,GAA2Bxoe,GAAuBuoe,IAElDE,GAAqB,EAAQ,MAE7BC,GAAsB1oe,GAAuByoe,IAE7CE,GAAsB,EAAQ,MAE9BC,GAAuB5oe,GAAuB2oe,IAE9CE,GAAqB,EAAQ,MAE7BC,GAAsB9oe,GAAuB6oe,IAE7CE,GAA6B,EAAQ,MAErCC,GAA8Bhpe,GAAuB+oe,IAErDE,GAAkB,EAAQ,MAE1BC,GAAmBlpe,GAAuBipe,IAE1CE,GAAiB,EAAQ,MAEzBC,GAAkBppe,GAAuBmpe,IAEzCE,GAAqB,EAAQ,MAE7BC,GAAsBtpe,GAAuBqpe,IAE7CE,GAAe,EAAQ,MAEvBC,GAAgBxpe,GAAuBupe,IAEvCE,GAA0B,EAAQ,MAElCC,GAA2B1pe,GAAuBype,IAElDE,GAAwB,EAAQ,MAEhCC,GAAyB5pe,GAAuB2pe,IAEhDE,GAAkC,EAAQ,MAE1CC,GAAmC9pe,GAAuB6pe,IAE1DE,GAAe,EAAQ,MAEvBC,GAAgBhqe,GAAuB+pe,IAEvCE,GAAmB,EAAQ,MAE3BC,GAAoBlqe,GAAuBiqe,IAE3CE,GAAuB,EAAQ,MAE/BC,GAAwBpqe,GAAuBmqe,IAE/CE,GAAuB,EAAQ,MAE/BC,GAAwBtqe,GAAuBqqe,IAE/CE,GAAuB,EAAQ,MAE/BC,GAAwBxqe,GAAuBuqe,IAE/CE,GAAsB,EAAQ,MAE9BC,GAAuB1qe,GAAuByqe,IAE9CE,GAAiC,EAAQ,KAEzCC,GAAkC5qe,GAAuB2qe,IAEzDE,GAA0B,EAAQ,MAElCC,GAA2B9qe,GAAuB6qe,IAElDE,GAAmB,EAAQ,MAE3BC,GAAoBhre,GAAuB+qe,IAE3CE,GAAoB,EAAQ,IAE5B3sR,GAAqBt+M,GAAuBire,IAE5CC,GAA2B,EAAQ,MAEnCC,GAA4Bnre,GAAuBkre,IAEnDE,GAAgB,EAAQ,MAExBC,GAAiBrre,GAAuBore,IAExCE,GAAmB,EAAQ,MAE3BC,GAAoBvre,GAAuBsre,IAE3CE,GAAe,EAAQ,MAEvBC,GAAgBzre,GAAuBwre,IAEvCE,GAAiB,EAAQ,KAEzBl4M,GAAkBxzR,GAAuB0re,IAEzCC,GAAW,EAAQ,KAEnB16L,GAAYjxS,GAAuB2re,IAEnCC,GAAc,EAAQ,KAEtBn4M,GAAezzR,GAAuB4re,IAEtCC,GAAqB,EAAQ,MAE7BC,GAAqB9re,GAAuB6re,IAE5CE,GAAc,EAAQ,MAEtBC,GAAehse,GAAuB+re,IAEtCE,GAAuB,EAAQ,MAE/BC,GAAwBlse,GAAuBise,IAE/CE,GAAiB,EAAQ,MAEzBC,GAAkBpse,GAAuBmse,IAEzCE,GAAsB,EAAQ,MAE9BC,GAAuBtse,GAAuBqse,IAE9CE,GAAY,EAAQ,MAEpBC,GAAaxse,GAAuBuse,IAEpCE,GAAoB,EAAQ,MAE5BC,GAAqB1se,GAAuByse,IAE5CE,GAAgB,EAAQ,MAExBC,GAAiB5se,GAAuB2se,IAExCE,GAAyB,EAAQ,MAEjCC,GAA0B9se,GAAuB6se,IAEjDE,GAAiB,EAAQ,MAEzBC,GAAkBhte,GAAuB+se,IAEzCE,GAAS,EAAQ,IAEjBhzH,GAAUj6W,GAAuBite,IAEjCC,GAAS,EAAQ,KAEjBC,GAAUnte,GAAuBkte,IAEjCE,GAA0B,EAAQ,MAElCC,GAA2Brte,GAAuBote,IAElDE,GAAgB,EAAQ,MAExBC,GAAiBvte,GAAuBste,IAExCE,GAAa,EAAQ,MAErBC,GAAczte,GAAuBwte,IAErCE,GAAiB,EAAQ,MAEzBC,GAAkB3te,GAAuB0te,IAEzCE,GAAsB,EAAQ,MAE9BC,GAAuB7te,GAAuB4te,IAE9CE,GAAwB,EAAQ,KAEhCj1H,GAAyB74W,GAAuB8te,IAEhDC,GAAoB,EAAQ,KAE5BhtH,GAAqB/gX,GAAuB+te,IAE5CC,GAAkB,EAAQ,KAE1B32I,GAAmBr3V,GAAuBgue,IAE1CC,GAAsB,EAAQ,KAE9BC,GAAuBlue,GAAuBiue,IAE9CE,GAA0B,EAAQ,MAElCC,GAA2Bpue,GAAuBmue,IAElDE,GAAkB,EAAQ,KAE1B36M,GAAmB1zR,GAAuBque,IAE1CC,GAAoB,EAAQ,KAE5Bp9L,GAAqBlxS,GAAuBsue,IAE5CC,GAAiB,EAAQ,MAEzBC,GAAkBxue,GAAuBuue,IAEzCl9G,GAAQ,EAAQ,KAEhBo9G,GAASzue,GAAuBqxX,IAEhCq9G,GAAiB,EAAQ,MAEzBC,GAAkB3ue,GAAuB0ue,IAEzCE,GAAe,EAAQ,MAEvBC,GAAgB7ue,GAAuB4ue,IAEvCE,GAAe,EAAQ,KAEvBthY,GAAgBxtG,GAAuB8ue,IAEvCC,GAAgB,EAAQ,KAExB19N,GAAiBrxQ,GAAuB+ue,IAExCC,GAAkB,EAAQ,MAE1BC,GAAmBjve,GAAuBgve,IAE1CE,GAAuB,EAAQ,MAE/BC,GAAwBnve,GAAuBkve,IAE/CE,GAAgB,EAAQ,MAExBC,GAAiBrve,GAAuBove,IAExCE,GAAW,EAAQ,MAEnBC,GAAYvve,GAAuBsve,IAEnCE,GAAW,EAAQ,MAEnBC,GAAYzve,GAAuBwve,IAEnCE,GAAmB,EAAQ,MAE3BC,GAAoB3ve,GAAuB0ve,IAE3CE,GAAmB,EAAQ,KAE3BC,GAAoB7ve,GAAuB4ve,IAE3CE,GAAW,EAAQ,KAEnBC,GAAY/ve,GAAuB8ve,IAEnCE,GAAmB,EAAQ,MAE3BC,GAAoBjwe,GAAuBgwe,IAE3CE,GAAe,EAAQ,KAEvBC,GAAgBnwe,GAAuBkwe,IAEvCE,GAAqB,EAAQ,MAE7BC,GAAsBrwe,GAAuBowe,IAE7CE,GAAgB,EAAQ,KAExBvjV,GAAiB/sJ,GAAuBswe,IAExCC,GAAW,EAAQ,MAEnBC,GAAYxwe,GAAuBuwe,IAEnCE,GAAiB,EAAQ,MAEzBC,GAAkB1we,GAAuBywe,IAEzCE,GAAiB,EAAQ,MAEzBC,GAAkB5we,GAAuB2we,IAEzCE,GAAgB,EAAQ,MAExBC,GAAiB9we,GAAuB6we,IAExCE,GAAc,EAAQ,KAEtBC,GAAehxe,GAAuB+we,IAEtCE,GAAa,EAAQ,MAErBC,GAAclxe,GAAuBixe,IAErCE,GAAiB,EAAQ,MAEzBC,GAAkBpxe,GAAuBmxe,IAEzCE,GAAiB,EAAQ,MAEzBC,GAAkBtxe,GAAuBqxe,IAEzCE,GAAkB,EAAQ,MAE1BC,GAAmBxxe,GAAuBuxe,IAE1CE,GAAkB,EAAQ,MAE1BC,GAAmB1xe,GAAuByxe,IAE1CE,GAAkB,EAAQ,MAE1BC,GAAmB5xe,GAAuB2xe,IAE1CE,GAAmB,EAAQ,MAE3BC,GAAoB9xe,GAAuB6xe,IAE3CE,GAAmB,EAAQ,MAE3BC,GAAoBhye,GAAuB+xe,IAE3CE,GAAmB,EAAQ,MAE3BC,GAAoBlye,GAAuBiye,IAE3CE,GAAmB,EAAQ,MAE3BC,GAAoBpye,GAAuBmye,IAE3CE,GAAwB,EAAQ,MAEhCC,GAAyBtye,GAAuBqye,IAEhDE,GAAiB,EAAQ,MAEzBC,GAAkBxye,GAAuBuye,IAEzCE,GAAiB,EAAQ,MAEzBC,GAAkB1ye,GAAuByye,IAEzCE,GAAiB,EAAQ,MAEzBC,GAAkB5ye,GAAuB2ye,IAEzCE,GAAa,EAAQ,MAErBC,GAAc9ye,GAAuB6ye,IAErCE,GAAqB,EAAQ,KAE7BpmH,GAAsB3sX,GAAuB+ye,IAE7CC,GAAiB,EAAQ,MAEzBC,GAAkBjze,GAAuBgze,IAEzCE,GAAsB,EAAQ,MAE9BC,GAAuBnze,GAAuBkze,IAE9CE,GAAc,EAAQ,MAEtBC,GAAerze,GAAuBoze,IAEtCE,GAAa,EAAQ,KAErBnhH,GAAcnyX,GAAuBsze,IAErCC,GAAc,EAAQ,KAEtBC,GAAexze,GAAuBuze,IAEtCE,GAAgB,EAAQ,MAExBC,GAAiB1ze,GAAuByze,IAExCE,GAAc,EAAQ,MAEtBC,GAAe5ze,GAAuB2ze,IAEtCE,GAAoB,EAAQ,MAE5BC,GAAqB9ze,GAAuB6ze,IAE5CE,GAAgB,EAAQ,KAExBh5G,GAAiB/6X,GAAuB+ze,IAExCC,GAAoB,EAAQ,MAE5BC,GAAqBj0e,GAAuBg0e,IAE5CE,GAAsB,EAAQ,MAE9BC,GAAuBn0e,GAAuBk0e,IAE9CE,GAAyB,EAAQ,MAEjCC,GAA0Br0e,GAAuBo0e,IAEjDE,GAAyB,EAAQ,MAEjCC,GAA0Bv0e,GAAuBs0e,IAEjDE,GAAgB,EAAQ,MAExBC,GAAiBz0e,GAAuBw0e,IAExCE,GAAsB,EAAQ,MAE9BC,GAAuB30e,GAAuB00e,IAE9CE,GAA6B,EAAQ,MAErCC,GAA8B70e,GAAuB40e,IAIrDE,GAAoB90e,GAFD,EAAQ,OAM3B+0e,GAAe/0e,GAFD,EAAQ,OAMtBg1e,GAAkBh1e,GAFD,EAAQ,OAMzBi1e,GAAgBj1e,GAFD,EAAQ,OAMvBk1e,GAAiBl1e,GAFD,EAAQ,OAMxBm1e,GAAgBn1e,GAFD,EAAQ,OAMvBo1e,GAAoBp1e,GAFD,EAAQ,OAM3Bq1e,GAAuBr1e,GAFD,EAAQ,MAM9B4pV,GAAiB5pV,GAFD,EAAQ,MAMxBs1e,GAAkBt1e,GAFD,EAAQ,MAMzBu1e,GAAsBv1e,GAFD,EAAQ,MAM7Bw1e,GAAkBx1e,GAFD,EAAQ,OAMzBy1e,GAAkBz1e,GAFD,EAAQ,OAMzB01e,GAAyB11e,GAFD,EAAQ,OAMhC44W,GAAwB54W,GAFD,EAAQ,MAM/B21e,GAAuB31e,GAFD,EAAQ,OAM9B41e,GAAe51e,GAFD,EAAQ,MAMtB48R,GAAiB58R,GAFD,EAAQ,MAMxB61e,GAAa71e,GAFD,EAAQ,OAMpB81e,GAAyB91e,GAFD,EAAQ,MAMhC+1e,GAAY/1e,GAFD,EAAQ,MAMnBg2e,GAAwBh2e,GAFD,EAAQ,OAM/Bi2e,GAAej2e,GAFD,EAAQ,OAMtBk2e,GAAcl2e,GAFD,EAAQ,OAMrBm2e,GAAmBn2e,GAFD,EAAQ,OAM1Bo2e,GAAuBp2e,GAFD,EAAQ,OAM9Bq2e,GAAsBr2e,GAFD,EAAQ,OAM7Bs2e,GAAqBt2e,GAFD,EAAQ,OAM5Bu2e,GAAev2e,GAFD,EAAQ,OAMtBw2e,GAAex2e,GAFD,EAAQ,OAMtBy2e,GAAez2e,GAFD,EAAQ,OAMtB02e,GAAoB12e,GAFD,EAAQ,OAM3B22e,GAA6B32e,GAFD,EAAQ,OAMpC42e,GAAyB52e,GAFD,EAAQ,OAMhC62e,GAAoB72e,GAFD,EAAQ,OAM3B82e,GAAsB92e,GAFD,EAAQ,OAM7B+2e,GAAkB/2e,GAFD,EAAQ,OAMzBg3e,GAAsBh3e,GAFD,EAAQ,OAM7Bi3e,GAAiBj3e,GAFD,EAAQ,MAMxBk3e,GAAoBl3e,GAFD,EAAQ,OAM3Bm3e,GAAmBn3e,GAFD,EAAQ,OAM1Bo3e,GAAkBp3e,GAFD,EAAQ,OAMzBq3e,GAAmBr3e,GAFD,EAAQ,OAM1Bs3e,GAAet3e,GAFD,EAAQ,OAMtBihT,GAAajhT,GAFD,EAAQ,OAMpBu3e,GAAmBv3e,GAFD,EAAQ,OAM1Bw3e,GAAmBx3e,GAFD,EAAQ,OAM1By3e,GAAyBz3e,GAFD,EAAQ,OAMhCo3V,GAAap3V,GAFD,EAAQ,MAMpB03e,GAAoB13e,GAFD,EAAQ,OAM3B23e,GAA0B33e,GAFD,EAAQ,OAMjC43e,GAAc53e,GAFD,EAAQ,OAMrB63e,GAAqB73e,GAFD,EAAQ,OAM5B83e,GAAyB93e,GAFD,EAAQ,OAMhC+3e,GAAwB/3e,GAFD,EAAQ,OAM/Bg4e,GAAqBh4e,GAFD,EAAQ,OAM5Bi4e,GAAyBj4e,GAFD,EAAQ,OAMhCk4e,GAAkBl4e,GAFD,EAAQ,MAMzBm4e,GAAyBn4e,GAFD,EAAQ,OAMhCo4e,GAAyBp4e,GAFD,EAAQ,OAMhCq4e,GAAar4e,GAFD,EAAQ,OAMpBs4e,GAAoBt4e,GAFD,EAAQ,OAM3Bu4e,GAAiBv4e,GAFD,EAAQ,OAMxBw4e,GAAsBx4e,GAFD,EAAQ,OAM7By4e,GAAmBz4e,GAFD,EAAQ,OAM1B04e,GAAiB14e,GAFD,EAAQ,OAMxB24e,GAAsB34e,GAFD,EAAQ,OAM7B44e,GAA8B54e,GAFD,EAAQ,OAMrC64e,GAAwB74e,GAFD,EAAQ,OAM/B84e,GAAmB94e,GAFD,EAAQ,OAM1B+4e,GAAkB/4e,GAFD,EAAQ,OAMzB8gX,GAAoB9gX,GAFD,EAAQ,MAM3Bg5e,GAAgBh5e,GAFD,EAAQ,OAMvBi5e,GAA0Bj5e,GAFD,EAAQ,OAMjCk5e,GAAmBl5e,GAFD,EAAQ,OAM1Bm5e,GAAiBn5e,GAFD,EAAQ,OAMxBo5e,GAAmBp5e,GAFA,EAAQ,OAM3Bq5e,GAAiBr5e,GAFA,EAAQ,OAMzBs5e,GAA4Bt5e,GAFD,EAAQ,MAMnCu5e,GAA2Bv5e,GAFD,EAAQ,MAMlCw5e,GAA4Bx5e,GAFD,EAAQ,MAMnCy5e,GAAyBz5e,GAFD,EAAQ,MAMhC05e,GAA4B15e,GAFD,EAAQ,MAMnC25e,GAAyB35e,GAFD,EAAQ,MAMhC45e,GAA2B55e,GAFD,EAAQ,MAMlC65e,GAAwB75e,GAFD,EAAQ,MAM/B85e,GAAwB95e,GAFD,EAAQ,MAM/B+5e,GAAgC/5e,GAFD,EAAQ,MAMvCg6e,GAA+Bh6e,GAFD,EAAQ,MAMtCi6e,GAA4Bj6e,GAFD,EAAQ,MAMnCk6e,GAAyBl6e,GAFD,EAAQ,MAMhCm6e,GAAyBn6e,GAFD,EAAQ,OAMhCo6e,GAA0Bp6e,GAFD,EAAQ,OAMjCq6e,GAAyBr6e,GAFD,EAAQ,OAMhCs6e,GAAwBt6e,GAFD,EAAQ,OAM/Bu6e,GAAgBv6e,GAFD,EAAQ,OAMvBw6e,GAAax6e,GAFD,EAAQ,OAMpBy6e,GAAoBz6e,GAFD,EAAQ,OAM3B06e,GAAc16e,GAFD,EAAQ,OAMrB26e,GAAc36e,GAFD,EAAQ,OAIzB,SAASA,GAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GA2BvF,IAAI4za,GAAa,GAEjBpoF,EAAoB5rV,UAAYg0a,GAAW,gCAAkCpoF,EAAoB5rV,SAEjGs+d,EAAoBt+d,UAAYg0a,GAAW,gCAAkCsqD,EAAoBt+d,SAEjGu+d,EAAiBv+d,UAAYg0a,GAAW,6BAA+BuqD,EAAiBv+d,SAExFy+d,EAAqBz+d,UAAYg0a,GAAW,iCAAmCyqD,EAAqBz+d,SAEpG2+d,EAAe3+d,UAAYg0a,GAAW,2BAA6B2qD,EAAe3+d,SAElF6+d,EAAY7+d,UAAYg0a,GAAW,wBAA0B6qD,EAAY7+d,SAEzE++d,EAAmB/+d,UAAYg0a,GAAW,+BAAiC+qD,EAAmB/+d,SAE9Fi/d,EAAYj/d,UAAYg0a,GAAW,wBAA0BirD,EAAYj/d,SAEzEk4V,EAAqBl4V,UAAYg0a,GAAW,iCAAmC97E,EAAqBl4V,SAEpGo/d,EAAkBp/d,UAAYg0a,GAAW,8BAAgCorD,EAAkBp/d,SAE3Fs/d,EAAYt/d,UAAYg0a,GAAW,wBAA0BsrD,EAAYt/d,SAEzEw/d,EAAex/d,UAAYg0a,GAAW,2BAA6BwrD,EAAex/d,SAElFy+V,EAAYz+V,UAAYg0a,GAAW,wBAA0Bv1E,EAAYz+V,SAEzE2/d,EAAa3/d,UAAYg0a,GAAW,yBAA2B2rD,EAAa3/d,SAE5E6/d,EAAe7/d,UAAYg0a,GAAW,2BAA6B6rD,EAAe7/d,SAElF+/d,EAAW//d,UAAYg0a,GAAW,uBAAyB+rD,EAAW//d,SAEtEige,EAAoBjge,UAAYg0a,GAAW,gCAAkCisD,EAAoBjge,SAEjG6qV,EAAa7qV,UAAYg0a,GAAW,yBAA2BnpF,EAAa7qV,SAE5Eoge,EAAgBpge,UAAYg0a,GAAW,4BAA8BosD,EAAgBpge,SAErFsge,EAAgBtge,UAAYg0a,GAAW,4BAA8BssD,EAAgBtge,SAErFwge,EAAcxge,UAAYg0a,GAAW,0BAA4BwsD,EAAcxge,SAE/E0ge,EAAW1ge,UAAYg0a,GAAW,uBAAyB0sD,EAAW1ge,SAEtE4ge,EAAc5ge,UAAYg0a,GAAW,0BAA4B4sD,EAAc5ge,SAE/E8ge,EAAY9ge,UAAYg0a,GAAW,wBAA0B8sD,EAAY9ge,SAEzEghe,EAAahhe,UAAYg0a,GAAW,yBAA2BgtD,EAAahhe,SAE5Ekhe,GAAWlhe,UAAYg0a,GAAW,uBAAyBktD,GAAWlhe,SAEtEohe,GAAkBphe,UAAYg0a,GAAW,8BAAgCotD,GAAkBphe,SAE3Fshe,GAAgBthe,UAAYg0a,GAAW,4BAA8BstD,GAAgBthe,SAErFwhe,GAAoBxhe,UAAYg0a,GAAW,gCAAkCwtD,GAAoBxhe,SAEjG0he,GAAY1he,UAAYg0a,GAAW,wBAA0B0tD,GAAY1he,SAEzE4he,GAAW5he,UAAYg0a,GAAW,uBAAyB4tD,GAAW5he,SAEtE8he,GAAa9he,UAAYg0a,GAAW,yBAA2B8tD,GAAa9he,SAE5Egie,GAAiBhie,UAAYg0a,GAAW,kCAAoCguD,GAAiBhie,SAE7Fiie,GAAQjie,UAAYg0a,GAAW,yBAA2BiuD,GAAQjie,SAElEmie,GAAmBnie,UAAYg0a,GAAW,oCAAsCmuD,GAAmBnie,SAEnGqie,GAAerie,UAAYg0a,GAAW,gCAAkCquD,GAAerie,SAEvFuie,GAAavie,UAAYg0a,GAAW,8BAAgCuuD,GAAavie,SAEjFyie,GAAWzie,UAAYg0a,GAAW,uBAAyByuD,GAAWzie,SAEtE2ie,GAAa3ie,UAAYg0a,GAAW,yBAA2B2uD,GAAa3ie,SAE5E6ie,GAAa7ie,UAAYg0a,GAAW,yBAA2B6uD,GAAa7ie,SAE5E+ie,GAAiB/ie,UAAYg0a,GAAW,6BAA+B+uD,GAAiB/ie,SAExFije,GAAWjje,UAAYg0a,GAAW,uBAAyBivD,GAAWjje,SAEtEmje,GAAcnje,UAAYg0a,GAAW,0BAA4BmvD,GAAcnje,SAE/Eqje,GAAkBrje,UAAYg0a,GAAW,8BAAgCqvD,GAAkBrje,SAE3Fuje,GAAqBvje,UAAYg0a,GAAW,iCAAmCuvD,GAAqBvje,SAEpGyje,GAAiCzje,UAAYg0a,GAAW,6CAA+CyvD,GAAiCzje,SAExI2je,GAAmB3je,UAAYg0a,GAAW,+BAAiC2vD,GAAmB3je,SAE9F6je,GAAsB7je,UAAYg0a,GAAW,kCAAoC6vD,GAAsB7je,SAEvG+je,GAAgB/je,UAAYg0a,GAAW,4BAA8B+vD,GAAgB/je,SAErFike,GAAmBjke,UAAYg0a,GAAW,+BAAiCiwD,GAAmBjke,SAE9Fmke,GAAenke,UAAYg0a,GAAW,2BAA6BmwD,GAAenke,SAElFqke,GAAqBrke,UAAYg0a,GAAW,iCAAmCqwD,GAAqBrke,SAEpGuke,GAAevke,UAAYg0a,GAAW,2BAA6BuwD,GAAevke,SAElFyke,GAAUzke,UAAYg0a,GAAW,sBAAwBywD,GAAUzke,SAEnE2ke,GAAa3ke,UAAYg0a,GAAW,4BAA8B2wD,GAAa3ke,SAE/E6ke,GAAc7ke,UAAYg0a,GAAW,6BAA+B6wD,GAAc7ke,SAElF+7X,GAAe/7X,UAAYg0a,GAAW,8BAAgCj4C,GAAe/7X,SAErFgle,GAA4Bhle,UAAYg0a,GAAW,2CAA6CgxD,GAA4Bhle,SAE5Hkle,GAAalle,UAAYg0a,GAAW,4BAA8BkxD,GAAalle,SAE/Eole,GAA4Bple,UAAYg0a,GAAW,iDAAmDoxD,GAA4Bple,SAElIsle,GAAyBtle,UAAYg0a,GAAW,8CAAgDsxD,GAAyBtle,SAEzHwle,GAA6Bxle,UAAYg0a,GAAW,kDAAoDwxD,GAA6Bxle,SAErI0le,GAAqB1le,UAAYg0a,GAAW,0CAA4C0xD,GAAqB1le,SAE7G4le,GAAsB5le,UAAYg0a,GAAW,2CAA6C4xD,GAAsB5le,SAEhH8le,GAA2B9le,UAAYg0a,GAAW,gDAAkD8xD,GAA2B9le,SAE/Hgme,GAAqBhme,UAAYg0a,GAAW,0CAA4CgyD,GAAqBhme,SAE7Gkme,GAAclme,UAAYg0a,GAAW,mCAAqCkyD,GAAclme,SAExFome,GAAmBpme,UAAYg0a,GAAW,sCAAwCoyD,GAAmBpme,SAErGsme,GAAUtme,UAAYg0a,GAAW,6BAA+BsyD,GAAUtme,SAE1Ewme,GAAYxme,UAAYg0a,GAAW,+BAAiCwyD,GAAYxme,SAEhF0me,GAAsB1me,UAAYg0a,GAAW,qCAAuC0yD,GAAsB1me,SAE1G4me,GAAwB5me,UAAYg0a,GAAW,uCAAyC4yD,GAAwB5me,SAEhH8me,GAAa9me,UAAYg0a,GAAW,4BAA8B8yD,GAAa9me,SAE/Egne,GAAkBhne,UAAYg0a,GAAW,iCAAmCgzD,GAAkBhne,SAE9Fkne,GAAkBlne,UAAYg0a,GAAW,iCAAmCkzD,GAAkBlne,SAE9Fone,GAA6Bpne,UAAYg0a,GAAW,4CAA8CozD,GAA6Bpne,SAE/Hsne,GAAsBtne,UAAYg0a,GAAW,qCAAuCszD,GAAsBtne,SAE1Gwne,GAA0Bxne,UAAYg0a,GAAW,yCAA2CwzD,GAA0Bxne,SAEtH0ne,GAA0B1ne,UAAYg0a,GAAW,yCAA2C0zD,GAA0B1ne,SAEtH4ne,GAAoB5ne,UAAYg0a,GAAW,mCAAqC4zD,GAAoB5ne,SAEpG8ne,GAAmB9ne,UAAYg0a,GAAW,kCAAoC8zD,GAAmB9ne,SAEjGgoe,GAA0Bhoe,UAAYg0a,GAAW,yCAA2Cg0D,GAA0Bhoe,SAEtH+hX,GAA0B/hX,UAAYg0a,GAAW,yCAA2CjyD,GAA0B/hX,SAEtHmoe,GAAqBnoe,UAAYg0a,GAAW,oCAAsCm0D,GAAqBnoe,SAEvGqoe,GAAiBroe,UAAYg0a,GAAW,gCAAkCq0D,GAAiBroe,SAE3Fk7H,GAAcl7H,UAAYg0a,GAAW,6BAA+B94S,GAAcl7H,SAElFuoe,GAAoBvoe,UAAYg0a,GAAW,mCAAqCu0D,GAAoBvoe,SAEpGyoe,GAAazoe,UAAYg0a,GAAW,4BAA8By0D,GAAazoe,SAE/E2oe,GAAwB3oe,UAAYg0a,GAAW,uCAAyC20D,GAAwB3oe,SAEhH6oe,GAAiB7oe,UAAYg0a,GAAW,gCAAkC60D,GAAiB7oe,SAE3F+oe,GAA4B/oe,UAAYg0a,GAAW,2CAA6C+0D,GAA4B/oe,SAE5Hipe,GAA0Bjpe,UAAYg0a,GAAW,yCAA2Ci1D,GAA0Bjpe,SAEtHqvW,GAAervW,UAAYg0a,GAAW,8BAAgC3kE,GAAervW,SAErFope,GAA2Bppe,UAAYg0a,GAAW,0CAA4Co1D,GAA2Bppe,SAEzHigO,GAAiBjgO,UAAYg0a,GAAW,gCAAkC/zM,GAAiBjgO,SAE3Fupe,GAAyBvpe,UAAYg0a,GAAW,wCAA0Cu1D,GAAyBvpe,SAEnHype,GAAoBzpe,UAAYg0a,GAAW,mCAAqCy1D,GAAoBzpe,SAEpG2pe,GAAqB3pe,UAAYg0a,GAAW,oCAAsC21D,GAAqB3pe,SAEvG6pe,GAAoB7pe,UAAYg0a,GAAW,mCAAqC61D,GAAoB7pe,SAEpG+pe,GAA4B/pe,UAAYg0a,GAAW,2CAA6C+1D,GAA4B/pe,SAE5Hiqe,GAAiBjqe,UAAYg0a,GAAW,gCAAkCi2D,GAAiBjqe,SAE3Fmqe,GAAgBnqe,UAAYg0a,GAAW,+BAAiCm2D,GAAgBnqe,SAExFqqe,GAAoBrqe,UAAYg0a,GAAW,mCAAqCq2D,GAAoBrqe,SAEpGuqe,GAAcvqe,UAAYg0a,GAAW,6BAA+Bu2D,GAAcvqe,SAElFyqe,GAAyBzqe,UAAYg0a,GAAW,wCAA0Cy2D,GAAyBzqe,SAEnH2qe,GAAuB3qe,UAAYg0a,GAAW,sCAAwC22D,GAAuB3qe,SAE7G6qe,GAAiC7qe,UAAYg0a,GAAW,gDAAkD62D,GAAiC7qe,SAE3I+qe,GAAc/qe,UAAYg0a,GAAW,6BAA+B+2D,GAAc/qe,SAElFire,GAAkBjre,UAAYg0a,GAAW,iCAAmCi3D,GAAkBjre,SAE9Fmre,GAAsBnre,UAAYg0a,GAAW,qCAAuCm3D,GAAsBnre,SAE1Gqre,GAAsBrre,UAAYg0a,GAAW,qCAAuCq3D,GAAsBrre,SAE1Gure,GAAsBvre,UAAYg0a,GAAW,qCAAuCu3D,GAAsBvre,SAE1Gyre,GAAqBzre,UAAYg0a,GAAW,oCAAsCy3D,GAAqBzre,SAEvG2re,GAAgC3re,UAAYg0a,GAAW,+CAAiD23D,GAAgC3re,SAExI6re,GAAyB7re,UAAYg0a,GAAW,kDAAoD63D,GAAyB7re,SAE7H+re,GAAkB/re,UAAYg0a,GAAW,mCAAqC+3D,GAAkB/re,SAEhGq/M,GAAmBr/M,UAAYg0a,GAAW,mCAAqC30N,GAAmBr/M,SAElGkse,GAA0Blse,UAAYg0a,GAAW,0CAA4Ck4D,GAA0Blse,SAEvHose,GAAepse,UAAYg0a,GAAW,+BAAiCo4D,GAAepse,SAEtFsse,GAAkBtse,UAAYg0a,GAAW,kCAAoCs4D,GAAkBtse,SAE/Fwse,GAAcxse,UAAYg0a,GAAW,8BAAgCw4D,GAAcxse,SAEnFu0R,GAAgBv0R,UAAYg0a,GAAW,gCAAkCz/I,GAAgBv0R,SAEzFgyS,GAAUhyS,UAAYg0a,GAAW,0BAA4BhiI,GAAUhyS,SAEvEw0R,GAAax0R,UAAYg0a,GAAW,6BAA+Bx/I,GAAax0R,SAEhF6se,GAAmB7se,UAAYg0a,GAAW,mCAAqC64D,GAAmB7se,SAElG+se,GAAa/se,UAAYg0a,GAAW,6BAA+B+4D,GAAa/se,SAEhFite,GAAsBjte,UAAYg0a,GAAW,sCAAwCi5D,GAAsBjte,SAE3Gmte,GAAgBnte,UAAYg0a,GAAW,gCAAkCm5D,GAAgBnte,SAEzFqte,GAAqBrte,UAAYg0a,GAAW,qCAAuCq5D,GAAqBrte,SAExGute,GAAWvte,UAAYg0a,GAAW,2BAA6Bu5D,GAAWvte,SAE1Eyte,GAAmBzte,UAAYg0a,GAAW,mCAAqCy5D,GAAmBzte,SAElG2te,GAAe3te,UAAYg0a,GAAW,+BAAiC25D,GAAe3te,SAEtF6te,GAAwB7te,UAAYg0a,GAAW,wCAA0C65D,GAAwB7te,SAEjH+te,GAAgB/te,UAAYg0a,GAAW,gCAAkC+5D,GAAgB/te,SAEzFg7W,GAAQh7W,UAAYg0a,GAAW,wBAA0Bh5D,GAAQh7W,SAEjEkue,GAAQlue,UAAYg0a,GAAW,wBAA0Bk6D,GAAQlue,SAEjEoue,GAAyBpue,UAAYg0a,GAAW,yCAA2Co6D,GAAyBpue,SAEpHsue,GAAetue,UAAYg0a,GAAW,+BAAiCs6D,GAAetue,SAEtFwue,GAAYxue,UAAYg0a,GAAW,4BAA8Bw6D,GAAYxue,SAE7E0ue,GAAgB1ue,UAAYg0a,GAAW,gCAAkC06D,GAAgB1ue,SAEzF4ue,GAAqB5ue,UAAYg0a,GAAW,qCAAuC46D,GAAqB5ue,SAExG45W,GAAuB55W,UAAYg0a,GAAW,uCAAyCp6D,GAAuB55W,SAE9G8hX,GAAmB9hX,UAAYg0a,GAAW,mCAAqClyD,GAAmB9hX,SAElGo4V,GAAiBp4V,UAAYg0a,GAAW,iCAAmC57E,GAAiBp4V,SAE5Five,GAAqBjve,UAAYg0a,GAAW,qCAAuCi7D,GAAqBjve,SAExGmve,GAAyBnve,UAAYg0a,GAAW,yCAA2Cm7D,GAAyBnve,SAEpHy0R,GAAiBz0R,UAAYg0a,GAAW,iCAAmCv/I,GAAiBz0R,SAE5FiyS,GAAmBjyS,UAAYg0a,GAAW,mCAAqC/hI,GAAmBjyS,SAElGuve,GAAgBvve,UAAYg0a,GAAW,gCAAkCu7D,GAAgBvve,SAEzFwve,GAAOxve,UAAYg0a,GAAW,uBAAyBw7D,GAAOxve,SAE9D0ve,GAAgB1ve,UAAYg0a,GAAW,gCAAkC07D,GAAgB1ve,SAEzF4ve,GAAc5ve,UAAYg0a,GAAW,8BAAgC47D,GAAc5ve,SAEnFuuG,GAAcvuG,UAAYg0a,GAAW,8BAAgCzlU,GAAcvuG,SAEnFoyQ,GAAepyQ,UAAYg0a,GAAW,+BAAiC5hK,GAAepyQ,SAEtFgwe,GAAiBhwe,UAAYg0a,GAAW,iCAAmCg8D,GAAiBhwe,SAE5Fkwe,GAAsBlwe,UAAYg0a,GAAW,sCAAwCk8D,GAAsBlwe,SAE3Gowe,GAAepwe,UAAYg0a,GAAW,+BAAiCo8D,GAAepwe,SAEtFswe,GAAUtwe,UAAYg0a,GAAW,0BAA4Bs8D,GAAUtwe,SAEvEwwe,GAAUxwe,UAAYg0a,GAAW,0BAA4Bw8D,GAAUxwe,SAEvE0we,GAAkB1we,UAAYg0a,GAAW,kCAAoC08D,GAAkB1we,SAE/F4we,GAAkB5we,UAAYg0a,GAAW,kCAAoC48D,GAAkB5we,SAE/F8we,GAAU9we,UAAYg0a,GAAW,0BAA4B88D,GAAU9we,SAEvEgxe,GAAkBhxe,UAAYg0a,GAAW,kCAAoCg9D,GAAkBhxe,SAE/Fkxe,GAAclxe,UAAYg0a,GAAW,8BAAgCk9D,GAAclxe,SAEnFoxe,GAAoBpxe,UAAYg0a,GAAW,oCAAsCo9D,GAAoBpxe,SAErG8tJ,GAAe9tJ,UAAYg0a,GAAW,+BAAiClmR,GAAe9tJ,SAEtFuxe,GAAUvxe,UAAYg0a,GAAW,0BAA4Bu9D,GAAUvxe,SAEvEyxe,GAAgBzxe,UAAYg0a,GAAW,gCAAkCy9D,GAAgBzxe,SAEzF2xe,GAAgB3xe,UAAYg0a,GAAW,gCAAkC29D,GAAgB3xe,SAEzF6xe,GAAe7xe,UAAYg0a,GAAW,+BAAiC69D,GAAe7xe,SAEtF+xe,GAAa/xe,UAAYg0a,GAAW,6BAA+B+9D,GAAa/xe,SAEhFiye,GAAYjye,UAAYg0a,GAAW,2BAA6Bi+D,GAAYjye,SAE5Emye,GAAgBnye,UAAYg0a,GAAW,+BAAiCm+D,GAAgBnye,SAExFqye,GAAgBrye,UAAYg0a,GAAW,+BAAiCq+D,GAAgBrye,SAExFuye,GAAiBvye,UAAYg0a,GAAW,gCAAkCu+D,GAAiBvye,SAE3Fyye,GAAiBzye,UAAYg0a,GAAW,gCAAkCy+D,GAAiBzye,SAE3F2ye,GAAiB3ye,UAAYg0a,GAAW,gCAAkC2+D,GAAiB3ye,SAE3F6ye,GAAkB7ye,UAAYg0a,GAAW,gCAAkC6+D,GAAkB7ye,SAE7F+ye,GAAkB/ye,UAAYg0a,GAAW,gCAAkC++D,GAAkB/ye,SAE7Fize,GAAkBjze,UAAYg0a,GAAW,gCAAkCi/D,GAAkBjze,SAE7Fmze,GAAkBnze,UAAYg0a,GAAW,gCAAkCm/D,GAAkBnze,SAE7Fqze,GAAuBrze,UAAYg0a,GAAW,qCAAuCq/D,GAAuBrze,SAE5Guze,GAAgBvze,UAAYg0a,GAAW,8BAAgCu/D,GAAgBvze,SAEvFyze,GAAgBzze,UAAYg0a,GAAW,8BAAgCy/D,GAAgBzze,SAEvF2ze,GAAgB3ze,UAAYg0a,GAAW,8BAAgC2/D,GAAgB3ze,SAEvF6ze,GAAY7ze,UAAYg0a,GAAW,0BAA4B6/D,GAAY7ze,SAE3E0tX,GAAoB1tX,UAAYg0a,GAAW,kCAAoCtmD,GAAoB1tX,SAEnGg0e,GAAgBh0e,UAAYg0a,GAAW,gCAAkCggE,GAAgBh0e,SAEzFk0e,GAAqBl0e,UAAYg0a,GAAW,qCAAuCkgE,GAAqBl0e,SAExGo0e,GAAap0e,UAAYg0a,GAAW,6BAA+BogE,GAAap0e,SAEhFkzX,GAAYlzX,UAAYg0a,GAAW,4BAA8B9gD,GAAYlzX,SAE7Eu0e,GAAav0e,UAAYg0a,GAAW,6BAA+BugE,GAAav0e,SAEhFy0e,GAAez0e,UAAYg0a,GAAW,+BAAiCygE,GAAez0e,SAEtF20e,GAAa30e,UAAYg0a,GAAW,6BAA+B2gE,GAAa30e,SAEhF60e,GAAmB70e,UAAYg0a,GAAW,mCAAqC6gE,GAAmB70e,SAElG87X,GAAe97X,UAAYg0a,GAAW,+BAAiCl4C,GAAe97X,SAEtFg1e,GAAmBh1e,UAAYg0a,GAAW,mCAAqCghE,GAAmBh1e,SAElGk1e,GAAqBl1e,UAAYg0a,GAAW,qCAAuCkhE,GAAqBl1e,SAExGo1e,GAAwBp1e,UAAYg0a,GAAW,wCAA0CohE,GAAwBp1e,SAEjHs1e,GAAwBt1e,UAAYg0a,GAAW,wCAA0CshE,GAAwBt1e,SAEjHw1e,GAAex1e,UAAYg0a,GAAW,+BAAiCwhE,GAAex1e,SAEtF01e,GAAqB11e,UAAYg0a,GAAW,qCAAuC0hE,GAAqB11e,SAExG41e,GAA4B51e,UAAYg0a,GAAW,4CAA8C4hE,GAA4B51e,SAE7H61e,GAAkB71e,UAAYg0a,GAAW,kCAAoC6hE,GAAkB71e,SAE/F81e,GAAa91e,UAAYg0a,GAAW,6BAA+B8hE,GAAa91e,SAEhF+1e,GAAgB/1e,UAAYg0a,GAAW,gCAAkC+hE,GAAgB/1e,SAEzFg2e,GAAch2e,UAAYg0a,GAAW,8BAAgCgiE,GAAch2e,SAEnFi2e,GAAej2e,UAAYg0a,GAAW,+BAAiCiiE,GAAej2e,SAEtFk2e,GAAcl2e,UAAYg0a,GAAW,8BAAgCkiE,GAAcl2e,SAEnFm2e,GAAkBn2e,UAAYg0a,GAAW,kCAAoCmiE,GAAkBn2e,SAE/Fo2e,GAAqBp2e,UAAYg0a,GAAW,wCAA0CoiE,GAAqBp2e,SAE3G2qV,GAAe3qV,UAAYg0a,GAAW,kCAAoCrpF,GAAe3qV,SAEzFq2e,GAAgBr2e,UAAYg0a,GAAW,mCAAqCqiE,GAAgBr2e,SAE5Fs2e,GAAoBt2e,UAAYg0a,GAAW,uCAAyCsiE,GAAoBt2e,SAExGu2e,GAAgBv2e,UAAYg0a,GAAW,qCAAuCuiE,GAAgBv2e,SAE9Fw2e,GAAgBx2e,UAAYg0a,GAAW,qCAAuCwiE,GAAgBx2e,SAE9Fy2e,GAAuBz2e,UAAYg0a,GAAW,4CAA8CyiE,GAAuBz2e,SAEnH25W,GAAsB35W,UAAYg0a,GAAW,2CAA6Cr6D,GAAsB35W,SAEhH02e,GAAqB12e,UAAYg0a,GAAW,0CAA4C0iE,GAAqB12e,SAE7G22e,GAAa32e,UAAYg0a,GAAW,0BAA4B2iE,GAAa32e,SAE7E29R,GAAe39R,UAAYg0a,GAAW,4BAA8Br2I,GAAe39R,SAEnF42e,GAAW52e,UAAYg0a,GAAW,wBAA0B4iE,GAAW52e,SAEvE62e,GAAuB72e,UAAYg0a,GAAW,oCAAsC6iE,GAAuB72e,SAE3G82e,GAAU92e,UAAYg0a,GAAW,uBAAyB8iE,GAAU92e,SAEpE+2e,GAAsB/2e,UAAYg0a,GAAW,mCAAqC+iE,GAAsB/2e,SAExGg3e,GAAah3e,UAAYg0a,GAAW,0BAA4BgjE,GAAah3e,SAE7Ei3e,GAAYj3e,UAAYg0a,GAAW,yBAA2BijE,GAAYj3e,SAE1Ek3e,GAAiBl3e,UAAYg0a,GAAW,8BAAgCkjE,GAAiBl3e,SAEzFm3e,GAAqBn3e,UAAYg0a,GAAW,kCAAoCmjE,GAAqBn3e,SAErGo3e,GAAoBp3e,UAAYg0a,GAAW,iCAAmCojE,GAAoBp3e,SAElGq3e,GAAmBr3e,UAAYg0a,GAAW,gCAAkCqjE,GAAmBr3e,SAE/Fs3e,GAAat3e,UAAYg0a,GAAW,0BAA4BsjE,GAAat3e,SAE7Eu3e,GAAav3e,UAAYg0a,GAAW,0BAA4BujE,GAAav3e,SAE7Ew3e,GAAax3e,UAAYg0a,GAAW,0BAA4BwjE,GAAax3e,SAE7Ey3e,GAAkBz3e,UAAYg0a,GAAW,+BAAiCyjE,GAAkBz3e,SAE5F03e,GAA2B13e,UAAYg0a,GAAW,wCAA0C0jE,GAA2B13e,SAEvH23e,GAAuB33e,UAAYg0a,GAAW,oCAAsC2jE,GAAuB33e,SAE3G43e,GAAkB53e,UAAYg0a,GAAW,+BAAiC4jE,GAAkB53e,SAE5F63e,GAAoB73e,UAAYg0a,GAAW,iCAAmC6jE,GAAoB73e,SAElG83e,GAAgB93e,UAAYg0a,GAAW,6BAA+B8jE,GAAgB93e,SAEtF+3e,GAAoB/3e,UAAYg0a,GAAW,iCAAmC+jE,GAAoB/3e,SAElGg4e,GAAeh4e,UAAYg0a,GAAW,4BAA8BgkE,GAAeh4e,SAEnFi4e,GAAkBj4e,UAAYg0a,GAAW,+BAAiCikE,GAAkBj4e,SAE5Fk4e,GAAiBl4e,UAAYg0a,GAAW,8BAAgCkkE,GAAiBl4e,SAEzFm4e,GAAgBn4e,UAAYg0a,GAAW,6BAA+BmkE,GAAgBn4e,SAEtFo4e,GAAiBp4e,UAAYg0a,GAAW,8BAAgCokE,GAAiBp4e,SAEzFq4e,GAAar4e,UAAYg0a,GAAW,0BAA4BqkE,GAAar4e,SAE7EgiT,GAAWhiT,UAAYg0a,GAAW,wBAA0BhyH,GAAWhiT,SAEvEs4e,GAAiBt4e,UAAYg0a,GAAW,8BAAgCskE,GAAiBt4e,SAEzFu4e,GAAiBv4e,UAAYg0a,GAAW,8BAAgCukE,GAAiBv4e,SAEzFw4e,GAAuBx4e,UAAYg0a,GAAW,oCAAsCwkE,GAAuBx4e,SAE3Gm4V,GAAWn4V,UAAYg0a,GAAW,wBAA0B77E,GAAWn4V,SAEvEy4e,GAAkBz4e,UAAYg0a,GAAW,+BAAiCykE,GAAkBz4e,SAE5F04e,GAAwB14e,UAAYg0a,GAAW,qCAAuC0kE,GAAwB14e,SAE9G24e,GAAY34e,UAAYg0a,GAAW,yBAA2B2kE,GAAY34e,SAE1E44e,GAAmB54e,UAAYg0a,GAAW,gCAAkC4kE,GAAmB54e,SAE/F64e,GAAuB74e,UAAYg0a,GAAW,oCAAsC6kE,GAAuB74e,SAE3G84e,GAAsB94e,UAAYg0a,GAAW,mCAAqC8kE,GAAsB94e,SAExG+4e,GAAmB/4e,UAAYg0a,GAAW,gCAAkC+kE,GAAmB/4e,SAE/Fg5e,GAAuBh5e,UAAYg0a,GAAW,oCAAsCglE,GAAuBh5e,SAE3Gi5e,GAAgBj5e,UAAYg0a,GAAW,6BAA+BilE,GAAgBj5e,SAEtFk5e,GAAuBl5e,UAAYg0a,GAAW,oCAAsCklE,GAAuBl5e,SAE3Gm5e,GAAuBn5e,UAAYg0a,GAAW,oCAAsCmlE,GAAuBn5e,SAE3Go5e,GAAWp5e,UAAYg0a,GAAW,wBAA0BolE,GAAWp5e,SAEvEq5e,GAAkBr5e,UAAYg0a,GAAW,+BAAiCqlE,GAAkBr5e,SAE5Fs5e,GAAet5e,UAAYg0a,GAAW,+BAAiCslE,GAAet5e,SAEtFu5e,GAAoBv5e,UAAYg0a,GAAW,oCAAsCulE,GAAoBv5e,SAErGw5e,GAAiBx5e,UAAYg0a,GAAW,iCAAmCwlE,GAAiBx5e,SAE5Fy5e,GAAez5e,UAAYg0a,GAAW,+BAAiCylE,GAAez5e,SAEtF05e,GAAoB15e,UAAYg0a,GAAW,oCAAsC0lE,GAAoB15e,SAErG25e,GAA4B35e,UAAYg0a,GAAW,4CAA8C2lE,GAA4B35e,SAE7H45e,GAAsB55e,UAAYg0a,GAAW,sCAAwC4lE,GAAsB55e,SAE3G65e,GAAiB75e,UAAYg0a,GAAW,iCAAmC6lE,GAAiB75e,SAE5F85e,GAAgB95e,UAAYg0a,GAAW,gCAAkC8lE,GAAgB95e,SAEzF6hX,GAAkB7hX,UAAYg0a,GAAW,kCAAoCnyD,GAAkB7hX,SAE/F+5e,GAAc/5e,UAAYg0a,GAAW,8BAAgC+lE,GAAc/5e,SAEnFg6e,GAAwBh6e,UAAYg0a,GAAW,wCAA0CgmE,GAAwBh6e,SAEjHi6e,GAAiBj6e,UAAYg0a,GAAW,yCAA2CimE,GAAiBj6e,SAEpGk6e,GAAel6e,UAAYg0a,GAAW,uCAAyCkmE,GAAel6e,SAE9Fm6e,GAAiBn6e,UAAYg0a,GAAW,2CAA6CmmE,GAAiBn6e,SAEtGo6e,GAAep6e,UAAYg0a,GAAW,yCAA2ComE,GAAep6e,SAEhGq6e,GAA0Br6e,UAAYg0a,GAAW,oDAAsDqmE,GAA0Br6e,SAEjIs6e,GAAyBt6e,UAAYg0a,GAAW,mDAAqDsmE,GAAyBt6e,SAE9Hu6e,GAA0Bv6e,UAAYg0a,GAAW,oDAAsDumE,GAA0Bv6e,SAEjIw6e,GAAuBx6e,UAAYg0a,GAAW,iDAAmDwmE,GAAuBx6e,SAExHy6e,GAA0Bz6e,UAAYg0a,GAAW,oDAAsDymE,GAA0Bz6e,SAEjI06e,GAAuB16e,UAAYg0a,GAAW,iDAAmD0mE,GAAuB16e,SAExH26e,GAAyB36e,UAAYg0a,GAAW,mDAAqD2mE,GAAyB36e,SAE9H46e,GAAsB56e,UAAYg0a,GAAW,gDAAkD4mE,GAAsB56e,SAErH66e,GAAsB76e,UAAYg0a,GAAW,gDAAkD6mE,GAAsB76e,SAErH86e,GAA8B96e,UAAYg0a,GAAW,wDAA0D8mE,GAA8B96e,SAE7I+6e,GAA6B/6e,UAAYg0a,GAAW,uDAAyD+mE,GAA6B/6e,SAE1Ig7e,GAA0Bh7e,UAAYg0a,GAAW,oDAAsDgnE,GAA0Bh7e,SAEjIi7e,GAAuBj7e,UAAYg0a,GAAW,iDAAmDinE,GAAuBj7e,SAExHk7e,GAAuBl7e,UAAYg0a,GAAW,oCAAsCknE,GAAuBl7e,SAE3Gm7e,GAAwBn7e,UAAYg0a,GAAW,4CAA8CmnE,GAAwBn7e,SAErHo7e,GAAuBp7e,UAAYg0a,GAAW,2CAA6ConE,GAAuBp7e,SAElHq7e,GAAsBr7e,UAAYg0a,GAAW,0CAA4CqnE,GAAsBr7e,SAE/Gs7e,GAAct7e,UAAYg0a,GAAW,0BAA4BsnE,GAAct7e,SAE/Eu7e,GAAWv7e,UAAYg0a,GAAW,uBAAyBunE,GAAWv7e,SAEtEw7e,GAAkBx7e,UAAYg0a,GAAW,8BAAgCwnE,GAAkBx7e,SAE3Fy7e,GAAYz7e,UAAYg0a,GAAW,wBAA0BynE,GAAYz7e,SAEzE07e,GAAY17e,UAAYg0a,GAAW,wBAA0B0nE,GAAY17e,SACzEtE,EAAQs4a,WAAaA,I,6BC3zDrB,IAEIjva,EAAUhE,EAFD,EAAQ,IAMjB6oD,EAAqB7oD,EAFD,EAAQ,KAM5B4oD,EAAc5oD,EAFD,EAAQ,IAIrBgpD,EAAmB,EAAQ,GAE/B,SAAShpD,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAmBvFzE,EAAOD,SAAU,EAAIkuD,EAAmB5pD,SAAS,CAC7CiqD,YAAa,oBACbC,UAAW,CACPyvV,SAAUhwV,EAAY3pD,QAAQm4D,MAGlC2kG,gBAAiB,WACb,MAAO,CACH68O,SAAU,eAIlBA,SAAU,WACNxuY,KAAK3K,MAAMm5Y,YAGf5uV,OAAQ,WACJ,OAAOhmD,EAAQ/E,QAAQzD,cACnB,MACA,CAAEwJ,UAAW,wBACbhB,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,4BACbhB,EAAQ/E,QAAQzD,cACZ,IACA,MACA,EAAIwtD,EAAiB1oD,IAAI,sDAAuD,GAAI,CAAE,EAAK,SAAWqtH,GAC9F,OAAO3pH,EAAQ/E,QAAQzD,cACnB,IACA,KACAmyH,MAGZ,KAEJ3pH,EAAQ/E,QAAQzD,cACZ,IACA,MACA,EAAIwtD,EAAiB1oD,IAAI,uHAE7B0D,EAAQ/E,QAAQzD,cACZ,IACA,MACA,EAAIwtD,EAAiB1oD,IAAI,kJAAwJ,GAAI,CACjL,WAAc,SAAoBqtH,GAC9B,OAAO3pH,EAAQ/E,QAAQzD,cACnB,IACA,CAAEk/F,KAAM,iCACRizB,IAGR,YAAe,SAAqBA,GAChC,OAAO3pH,EAAQ/E,QAAQzD,cACnB,IACA,CAAEk/F,KAAM,uBACRizB,IAGR,WAAc,SAAoBA,GAC9B,OAAO3pH,EAAQ/E,QAAQzD,cACnB,IACA,CAAEk/F,KAAM,4BACRizB,OAKhB3pH,EAAQ/E,QAAQzD,cACZ,IACA,MACA,EAAIwtD,EAAiB1oD,IAAI,6PAE7B0D,EAAQ/E,QAAQzD,cACZ,SACA,CAAEqyD,QAASzjD,KAAKwuY,WAChB,EAAI5vV,EAAiB1oD,IAAI,sD,gBC9G7C,EAAQ,MACR1F,EAAOD,QAAU,EAAQ,IAAoB25B,c,gBCD7C,IAAImyB,EAAU,EAAQ,IAClBstV,EAAQ,EAAQ,KACpBttV,EAAQA,EAAQQ,EAAIR,EAAQa,EAAG,CAC7BhzB,aAAcy/W,EAAMpxX,IACpBmgJ,eAAgBixO,EAAM1kW,S,6BCFxBt1C,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEI6pD,EAAmB3nD,EAFD,EAAQ,IAM1Bg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxB4nD,EAA8B5nD,EAFA,EAAQ,IAMtC8nD,EAAa9nD,EAFA,EAAQ,IAMrBgE,EAAUhE,EAFD,EAAQ,IAMjB46e,EAAuB56e,EAFD,EAAQ,MAM9B6qV,EAAsB7qV,EAFD,EAAQ,MAM7Bs8B,EAAUt8B,EAFD,EAAQ,IAMjB+oD,EAAe/oD,EAFD,EAAQ,KAMtBouG,EAAepuG,EAFD,EAAQ,KAMtBk3V,EAEJ,SAAiC73V,GAAO,GAAIA,GAAOA,EAAIpB,WAAc,OAAOoB,EAAc,IAAIw9B,EAAS,GAAI,GAAW,MAAPx9B,EAAe,IAAK,IAAIjB,KAAOiB,EAAWtF,OAAOC,UAAUC,eAAeC,KAAKmF,EAAKjB,KAAMy+B,EAAOz+B,GAAOiB,EAAIjB,IAAgC,OAAtBy+B,EAAO59B,QAAUI,EAAYw9B,EAF5OC,CAFC,EAAQ,MAM/B,SAAS98B,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvF,IAAIw7e,EAAqB,SAAU9wW,GAG/B,SAAS8wW,EAAmBp7e,IACxB,EAAIu8B,EAAiB/8B,SAASmL,KAAMywe,GAEpC,IAAIpxb,GAAQ,EAAI7B,EAA4B3oD,SAASmL,MAAOywe,EAAmBvxe,YAAa,EAAIq+C,EAAiB1oD,SAAS47e,IAAqB3gf,KAAKkQ,KAAM3K,IAK1J,OAHAgqD,EAAMQ,MAAQ,CACV7lD,KAAMw2e,EAAqB37e,QAAQ67e,iBAEhCrxb,EA0CX,OApDA,EAAI3B,EAAW7oD,SAAS47e,EAAoB9wW,IAa5C,EAAI9tG,EAAch9B,SAAS47e,EAAoB,CAAC,CAC5Cz8e,IAAK,qBACLN,MAAO,WACH,IAAIqqD,EAAS/9C,KAEbA,KAAK2we,eAAiBH,EAAqB37e,QAAQ45F,aAAY,WAC3D1wC,EAAOwB,SAAS,CAAEvlD,KAAMw2e,EAAqB37e,QAAQ67e,uBAG9D,CACC18e,IAAK,uBACLN,MAAO,WACCsM,KAAK2we,gBACL3we,KAAK2we,eAAevsc,WAG7B,CACCpwC,IAAK,SACLN,MAAO,WACH,IAAIsG,EAAOgG,KAAK6/C,MAAM7lD,KAAKd,KAAI,SAAU8B,GACrC,OAAOpB,EAAQ/E,QAAQzD,cAAcw/e,EAAmB,CAAE51e,IAAKA,EAAKhH,IAAKgH,EAAIxI,UAG7E+wD,GAAU,EAAIygD,EAAanvG,SAAS,wBAAyB,CAC7Dg8e,4BAAwD,IAA3B7we,KAAK6/C,MAAM7lD,KAAKtK,SAGjD,OAAOkK,EAAQ/E,QAAQzD,cACnB,MACA,CAAEwJ,UAAW2oD,GACb3pD,EAAQ/E,QAAQzD,cAAc,MAAO,CAAEwJ,UAAW,kCAClDhB,EAAQ/E,QAAQzD,cACZqvV,EAAoB5rV,QACpB,CAAE+F,UAAW,kCACbZ,QAKTy2e,EArDc,CAsDvB72e,EAAQ/E,QAAQwiC,WAgBdu5c,EAAoB,SAAUltV,GAG9B,SAASktV,EAAkBv7e,IACvB,EAAIu8B,EAAiB/8B,SAASmL,KAAM4we,GAEpC,IAAIx9a,GAAS,EAAI5V,EAA4B3oD,SAASmL,MAAO4we,EAAkB1xe,YAAa,EAAIq+C,EAAiB1oD,SAAS+7e,IAAoB9gf,KAAKkQ,KAAM3K,IAMzJ,OAJA+9D,EAAOvT,MAAQ,CAAEqwS,OAAO,GACxB98R,EAAO3P,QAAU2P,EAAO3P,QAAQxvD,KAAKm/D,GACrCA,EAAOuxT,WAAavxT,EAAOuxT,WAAW1wX,KAAKm/D,GAC3CA,EAAOsxT,YAActxT,EAAOsxT,YAAYzwX,KAAKm/D,GACtCA,EAgEX,OA3EA,EAAI1V,EAAW7oD,SAAS+7e,EAAmBltV,IAc3C,EAAI7xH,EAAch9B,SAAS+7e,EAAmB,CAAC,CAC3C58e,IAAK,cACLN,MAAO,WACHsM,KAAKu/C,SAAS,CAAE2wS,OAAO,MAE5B,CACCl8V,IAAK,aACLN,MAAO,WACHsM,KAAKu/C,SAAS,CAAE2wS,OAAO,MAE5B,CACCl8V,IAAK,UACLN,MAAO,WACHirD,EAAa9pD,QAAQopD,SAAS,CAAED,OAAQ,yBAA0BhjD,IAAKgF,KAAK3K,MAAM2F,IAAIxI,SAE3F,CACCwB,IAAK,SACLN,MAAO,WACH,IAAI08M,EAAal+K,EAAQr9B,QAAQ2J,aAAa,sBAC1CstD,EAAmB55B,EAAQr9B,QAAQ2J,aAAa,6BAChDozG,EAAU1/E,EAAQr9B,QAAQ2J,aAAa,oBAEvCxD,EAAMgF,KAAK3K,MAAM2F,IAEjBJ,GAAY,EAAIopG,EAAanvG,SAAS,CACtCi8e,gCAAiC91e,EAAI41Q,WAErCp+Q,EAAOwI,EAAIxI,KACX8/N,EAAQt3N,EAAIs3N,MACZyyJ,OAAe,EACnB,GAAIzyJ,EAAO,CACP,IAAIy8H,GAAe,EAAI/qP,EAAanvG,SAAS,CACzC,kBAAoB,EACpB,0BAA6By9N,EAAMxvH,YAEvCiiR,EAAenrX,EAAQ/E,QAAQzD,cAC3B,MACA,CAAEwJ,UAAWm0V,GACbjC,EAAgBx6N,YAAYggG,EAAMn4N,QAI1C,IAAI6qX,EAAMhlX,KAAK6/C,MAAMqwS,MAAQt2V,EAAQ/E,QAAQzD,cAAcwgH,EAAS,CAAEh3G,UAAW,qBAAsB1C,MAAO1F,IAAUoH,EAAQ/E,QAAQzD,cAAc,MAAO,MAC7J,OAAOwI,EAAQ/E,QAAQzD,cACnB06D,EACA,CAAElxD,UAAWA,EAAW6oD,QAASzjD,KAAKyjD,SACtC7pD,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,oBAAqB8pX,YAAa1kX,KAAK0kX,YAAaC,WAAY3kX,KAAK2kX,YAClF/qX,EAAQ/E,QAAQzD,cAAcg/M,EAAY,CACtC59M,KAAMwI,EAAIgnS,aACV1xF,OAAQ99M,EACR6pG,MA7BO,GA8BPp6B,OA9BO,KAgCX8iT,EACAC,QAKT4rH,EA5Ea,CA6EtBh3e,EAAQ/E,QAAQwiC,WAElB9mC,EAAQsE,QAAU47e,EAClBjgf,EAAOD,QAAUA,EAAiB,S,gBChNlC,EAAQ,MACRC,EAAOD,QAAU,kB,gBCAjB,IAAI8rD,EAAU,EAAQ,IAEtBA,EAAQA,EAAQU,EAAG,SAAU,CAAEwU,iBAAkB,oB,6BCUjD,IAAI9D,EAAW99D,OAAO0lC,QAAU,SAAU/iC,GAAU,IAAK,IAAI9C,EAAI,EAAGA,EAAImT,UAAUjT,OAAQF,IAAK,CAAE,IAAI8sD,EAAS35C,UAAUnT,GAAI,IAAK,IAAIwE,KAAOsoD,EAAc3sD,OAAOC,UAAUC,eAAeC,KAAKwsD,EAAQtoD,KAAQ1B,EAAO0B,GAAOsoD,EAAOtoD,IAAY,OAAO1B,GAEvP,SAASkqV,EAAgB1nV,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,qCAEhH,SAASqoV,EAAUt+U,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhK,UAAU,kEAAoEgK,GAAeD,EAASnP,UAAYD,OAAOoE,OAAOiL,GAAcA,EAAWpP,UAAW,CAAEqP,YAAa,CAAEvL,MAAOqL,EAAU1L,YAAY,EAAOmC,UAAU,EAAMD,cAAc,KAAeyJ,IAAYrP,OAAO+9D,eAAiB/9D,OAAO+9D,eAAe3uD,EAAUC,GAAcD,EAASG,UAAYF,GAEje,IAAIu9U,EAAiB,EAAQ,KAEzB77S,EAAY,EAAQ,KACpB2yL,EAAe,EAAQ,MAEvB09Q,EAAkB,CACpBz6G,MAAM,EACN06G,WAAW,GAsJbxgf,EAAOD,QAAU,CAAEwD,OA3InB,SAAgB+kI,EAAM5+H,GAsItB,IAA0B/G,KArIP2lI,GAsIdm4W,WAAgJvwc,GAAU,GAC5JvtC,EAAE+9e,gBAA0Jxwc,GAAU,GApIvK,IAAIywc,EAAc1jb,EAAS,GAAIsjb,EAAiB72e,GAAW,IAEvDk3e,EAAqB,SAAW/iE,GAGlC,SAAS+iE,EAAmB/7e,GAC1BmnV,EAAgBx8U,KAAMoxe,GAEtB/iE,EAAMv+a,KAAKkQ,KAAM3K,GACjB2K,KAAK6/C,MAAQsxb,EAAYH,UAAYl4W,EAAKo4W,eAAe,KAAM77e,GAASyjI,EAAKo4W,eAAe,UAAMx+e,GAwFpG,OA9FA2qV,EAAU+zJ,EAAoB/iE,GAc9B+iE,EAAmBxhf,UAAU6qO,kBAAoB,WAC/C,IAAIp7K,EAAQr/C,KAERqua,EAAMz+a,UAAU6qO,mBAClB4zM,EAAMz+a,UAAU6qO,kBAAkB3qO,KAAKkQ,MAGzC,IAAIm+J,EAASrlC,EAAKm4W,YAGdtuP,GAAU,EACV0uP,EAAa,WACf1uP,GAAU,GAKZ3iP,KAAKsxe,4BAA8BnzU,EAAOjlK,KAAI,SAAU+6B,GACtD,OAAOA,EAAMw6D,YAAY4iZ,MAa3Brxe,KAAKuxe,yBAA2B,IAAIh1J,EAAep+K,GARpC,WACTwkF,GACFtjM,EAAME,UAAS,SAAUwqK,GACvB,OAAOonR,EAAYH,UAAYl4W,EAAKo4W,eAAennR,EAAW1qK,EAAMhqD,OAASyjI,EAAKo4W,eAAennR,OAAWr3N,MAGhHiwP,GAAU,MAKdyuP,EAAmBxhf,UAAUqgN,0BAA4B,SAAmCC,EAAWshS,GACjGnjE,EAAMz+a,UAAUqgN,2BAClBo+N,EAAMz+a,UAAUqgN,0BAA0BngN,KAAKkQ,KAAMkwM,EAAWshS,GAI7DL,EAAYH,YAKbG,EAAY76G,MAAQjjK,EAAarzN,KAAK3K,MAAO66M,IAKjDlwM,KAAKu/C,UAAS,SAAUwqK,GACtB,OAAOjxF,EAAKo4W,eAAennR,EAAW7Z,QAI1CkhS,EAAmBxhf,UAAU6vD,qBAAuB,WAC9C4uX,EAAMz+a,UAAU6vD,sBAClB4uX,EAAMz+a,UAAU6vD,qBAAqB3vD,KAAKkQ,MAG5CA,KAAKuxe,yBAAyBv0J,UACzB,IAAIv/U,EAAYuC,KAAKsxe,4BAA6B/yO,EAAW5nQ,MAAMC,QAAQ6G,GAAYo2B,EAAK,EAAjG,IAAoGp2B,EAAY8gQ,EAAW9gQ,EAAYA,EAAUjK,OAAOk6B,cAAe,CACrK,IAAIwF,EAEJ,GAAIqrO,EAAU,CACZ,GAAI1qO,GAAMp2B,EAAU/N,OAAQ,MAC5BwjC,EAAOz1B,EAAUo2B,SACZ,CAEL,IADAA,EAAKp2B,EAAUC,QACRC,KAAM,MACbu1B,EAAOW,EAAGngC,MAGOw/B,EAENkR,SAEfpkC,KAAKsxe,4BAA8B,IAG9BF,EA/FgB,CAgGtBt4W,GAECp4E,EAAYywb,EAAY76G,KAWC,SAAWm7G,GAGtC,SAASC,IACPl1J,EAAgBx8U,KAAM0xe,GAEtBD,EAAmBv1e,MAAM8D,KAAM2C,WAOjC,OAZA06U,EAAUq0J,EAAwBD,GAQlCC,EAAuB9hf,UAAUshW,sBAAwB,SAA+BhhJ,EAAWg8F,GACjG,OAAQ74E,EAAarzN,KAAK3K,MAAO66M,KAAemjB,EAAarzN,KAAK6/C,MAAOqsP,IAGpEwlM,EAboB,CAX0BN,GAAsBA,EAGzE3ye,EAAgBq6H,EAAKh6E,aAAeg6E,EAAKtmI,KAG7C,OAFAkuD,EAAU5B,YAAc,iBAAmBrgD,EAAgB,IAEpDiiD,K,6BCpIT,IAAI7wD,EAAiBF,OAAOC,UAAUC,eAkCtCW,EAAOD,QA3BP,SAAsB+iO,EAAMC,GAC1B,GAAID,IAASC,EACX,OAAO,EAGT,GAAoB,iBAATD,GAA8B,OAATA,GAAiC,iBAATC,GAA8B,OAATA,EAC3E,OAAO,EAGT,IAAIC,EAAQ7jO,OAAOoZ,KAAKuqN,GACpBG,EAAQ9jO,OAAOoZ,KAAKwqN,GAExB,GAAIC,EAAM9jO,SAAW+jO,EAAM/jO,OACzB,OAAO,EAKT,IADA,IAAIiif,EAAkB9hf,EAAeoE,KAAKs/N,GACjC/jO,EAAI,EAAGA,EAAIgkO,EAAM9jO,OAAQF,IAChC,IAAKmif,EAAgBn+Q,EAAMhkO,KAAO8jO,EAAKE,EAAMhkO,MAAQ+jO,EAAKC,EAAMhkO,IAC9D,OAAO,EAIX,OAAO,I,6BC5BT,IAAI2tV,EAAkB,EAAQ,KAC1B/vC,EAAY,EAAQ,MAEpB1sQ,EAAY,EAAQ,KAqBpBkxc,EAAe,SAAWC,GAG5B,SAASD,KA/BX,SAAyB98e,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,qCAgC5GwnV,CAAgBx8U,KAAM4xe,GAEtBC,EAAiB31e,MAAM8D,KAAM2C,WA4F/B,OA5HF,SAAmB5D,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhK,UAAU,kEAAoEgK,GAAeD,EAASnP,UAAYD,OAAOoE,OAAOiL,GAAcA,EAAWpP,UAAW,CAAEqP,YAAa,CAAEvL,MAAOqL,EAAU1L,YAAY,EAAOmC,UAAU,EAAMD,cAAc,KAAeyJ,IAAYrP,OAAO+9D,eAAiB/9D,OAAO+9D,eAAe3uD,EAAUC,GAAcD,EAASG,UAAYF,GA2B/dq+U,CAAUu0J,EAAcC,GAQxBD,EAAahif,UAAUsvD,gBAAkB,WACvC,OAAOkuP,EAAU5oR,OAQnBotd,EAAahif,UAAUuyM,GAAK,SAAYnuM,GAEtC,OADCgM,KAAKwY,IAAIxkB,IAAwG0sC,GAAU,GACrH1gC,KAAK1M,IAAIU,IAOlB49e,EAAahif,UAAU4oB,IAAM,SAAaxkB,GACxC,OAAOgM,KAAK4xI,WAAWp5H,IAAIxkB,IAQ7B49e,EAAahif,UAAU0D,IAAM,SAAaU,GACxC,OAAOgM,KAAK4xI,WAAWt+I,IAAIU,IAW7B49e,EAAahif,UAAUkif,OAAS,SAAgB/oe,EAAMlH,GACpD,IAAIw9C,EAAQr/C,KAER+xe,EAAU3kM,EAAUj0Q,IAAIpwB,GACxBmsB,EAAQrzB,GAAQurS,EAAU5oR,MAC9B,OAAO0Q,EAAM0O,eAAc,SAAU1qC,GAG9B,IAAIuE,EAAYy3B,EAAOqpO,EAAW5nQ,MAAMC,QAAQ6G,GAAYo2B,EAAK,EAAtE,IAAyEp2B,EAAY8gQ,EAAW9gQ,EAAYA,EAAUjK,OAAOk6B,cAAe,CAC1I,IAAIwF,EAEJ,GAAIqrO,EAAU,CACZ,GAAI1qO,GAAMp2B,EAAU/N,OAAQ,MAC5BwjC,EAAOz1B,EAAUo2B,SACZ,CAEL,IADAA,EAAKp2B,EAAUC,QACRC,KAAM,MACbu1B,EAAOW,EAAGngC,MAGZ,IACIs+e,EADQ9+c,EACO,GAEd6+c,EAAQv5d,IAAIw5d,IAAY3yb,EAAM7mC,IAAIw5d,IACrC94e,EAAY,OAAE84e,GAKb,IAAI7rb,EAAa4rb,EAAStzO,EAAY9nQ,MAAMC,QAAQuvD,GAAaq4M,EAAM,EAA5E,IAA+Er4M,EAAas4M,EAAYt4M,EAAaA,EAAW3yD,OAAOk6B,cAAe,CACpJ,IAAIuF,EAEJ,GAAIwrO,EAAW,CACb,GAAID,GAAOr4M,EAAWz2D,OAAQ,MAC9BujC,EAAQkzB,EAAWq4M,SACd,CAEL,IADAA,EAAMr4M,EAAWzoD,QACTC,KAAM,MACds1B,EAAQurO,EAAI9qQ,MAGd,IAAIM,EAAMi/B,EAENosB,EAAM7mC,IAAIxkB,IACZkF,EAAIqf,IAAIvkB,EAAKqrD,EAAM8iJ,GAAGnuM,SAMvB49e,EAlGU,CAmGhBz0J,GAEH3sV,EAAOD,QAAUqhf,G,gBCtIjB,IAAIK,EAAY,CACdvlZ,aAAc,EAAQ,MACtBsxP,oBAAsB,EAAQ,MAGhCxtV,EAAOD,QAAU0hf,G,6BCEjB,IAAIj0J,EAAsB,EAAQ,KAC9Bk0J,EAA0B,EAAQ,MAElCjvC,EAAgB,EAAQ,MACxBvia,EAAY,EAAQ,KAgBpByxc,EAAmB,WAKrB,SAASA,KA3BX,SAAyBr9e,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,qCA4B5GwnV,CAAgBx8U,KAAMmye,GAEtBnye,KAAKoye,YAAc,IAAIF,EACvBlye,KAAKqye,qBAAuB,KA8I9B,OA5HAF,EAAiBvif,UAAU6+F,YAAc,SAAqB67E,EAAWp9E,EAAUzpF,GACjF,OAAOzD,KAAKoye,YAAYE,gBAAgBhoU,EAAW,IAAI0zK,EAAoBh+U,KAAKoye,YAAallZ,EAAUzpF,KAczG0ue,EAAiBvif,UAAUg/F,KAAO,SAAc07E,EAAWp9E,EAAUzpF,GACnE,IAAI+pF,EAAUxtF,KACd,OAAOA,KAAKyuF,YAAY67E,GAAW,WACjC98E,EAAQ+kZ,wBACRrlZ,EAAShxF,MAAMuH,EAASd,eAY5Bwve,EAAiBvif,UAAUq/F,mBAAqB,SAA4Bq7E,GAC1EtqK,KAAKoye,YAAYI,uBAAuBloU,IAyB1C6nU,EAAiBvif,UAAU2if,sBAAwB,WAC9Cvye,KAAKqye,sBAAgJ3xc,GAAU,GAClK1gC,KAAKoye,YAAYK,mBAAmBzye,KAAKqye,uBAW3CF,EAAiBvif,UAAU4+F,UAAY,SAAmB87E,GACxD,IAAIooU,EAAgB1ye,KAAKoye,YAAYO,wBAAwBroU,GAC7D,OAAOooU,EAAgBA,EAAc55d,OAAOmqb,EAAc2vC,iBAAiB15e,KAAI,SAAU47X,GACvF,OAAOA,EAAa5nS,YACjB,IAkBPilZ,EAAiBvif,UAAUgf,KAAO,SAAc07J,GAC9C,IAAIooU,EAAgB1ye,KAAKoye,YAAYO,wBAAwBroU,GAC7D,GAAIooU,EAAe,CAEjB,IADA,IAAI3pe,EAAOpZ,OAAOoZ,KAAK2pe,GACdx4c,EAAK,EAAGA,EAAKnxB,EAAKrZ,OAAQwqC,IAAM,CACvC,IAAIlmC,EAAM+U,EAAKmxB,GACX46V,EAAe49G,EAAc1+e,GAE7B8gY,IACF90X,KAAKqye,qBAAuBv9G,EAC5B90X,KAAK6ye,qBAAqB32e,MAAM8D,KAAM,CAAC80X,GAAcx4X,OAAO3F,MAAM/G,UAAU+E,MAAM7E,KAAK6S,cAG3F3C,KAAKqye,qBAAuB,OAchCF,EAAiBvif,UAAUijf,qBAAuB,SAA8B/9G,EAAcxqN,GAC5F,IAAItkK,EAAOrP,MAAM/G,UAAU+E,MAAM7E,KAAK6S,UAAW,GACjDmyX,EAAa5nS,SAAShxF,MAAM44X,EAAarxX,QAASuC,IAG7Cmse,EAvJc,GA0JvB3hf,EAAOD,QAAU4hf,G,6BCzKjB,IAAIW,EAAoB,WAOtB,SAASA,EAAkB50J,IAT7B,SAAyBppV,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,qCAU5GwnV,CAAgBx8U,KAAM8ye,GAEtB9ye,KAAKk+U,WAAaA,EAcpB,OAPA40J,EAAkBljf,UAAUw0C,OAAS,WAC/BpkC,KAAKk+U,aACPl+U,KAAKk+U,WAAWu0J,mBAAmBzye,MACnCA,KAAKk+U,WAAa,OAIf40J,EAxBe,GA2BxBtif,EAAOD,QAAUuif,G,6BChCjB,IAAIpyc,EAAY,EAAQ,KAOpBwxc,EAA0B,WAC5B,SAASA,KAVX,SAAyBp9e,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,qCAW5GwnV,CAAgBx8U,KAAMkye,GAEtBlye,KAAK+ye,sBAAwB,GAC7B/ye,KAAKqye,qBAAuB,KAuE9B,OA7DAH,EAAwBtif,UAAU0if,gBAAkB,SAAyBhoU,EAAWwqN,GACpFA,EAAa52C,aAAel+U,MAA6H0gC,GAAU,GAChK1gC,KAAK+ye,sBAAsBzoU,KAC9BtqK,KAAK+ye,sBAAsBzoU,GAAa,IAE1C,IAAIt2K,EAAMgM,KAAK+ye,sBAAsBzoU,GAAW56K,OAIhD,OAHAsQ,KAAK+ye,sBAAsBzoU,GAAWt6K,KAAK8kY,GAC3CA,EAAaxqN,UAAYA,EACzBwqN,EAAa9gY,IAAMA,EACZ8gY,GAUTo9G,EAAwBtif,UAAU4if,uBAAyB,SAAgCloU,QACvE53K,IAAd43K,EACFtqK,KAAK+ye,sBAAwB,UAEtB/ye,KAAK+ye,sBAAsBzoU,IAWtC4nU,EAAwBtif,UAAU6if,mBAAqB,SAA4B39G,GACjF,IAAIxqN,EAAYwqN,EAAaxqN,UACzBt2K,EAAM8gY,EAAa9gY,IAEnBg/e,EAAuBhze,KAAK+ye,sBAAsBzoU,GAClD0oU,UACKA,EAAqBh/e,IAiBhCk+e,EAAwBtif,UAAU+if,wBAA0B,SAAiCroU,GAC3F,OAAOtqK,KAAK+ye,sBAAsBzoU,IAG7B4nU,EA5EqB,GA+E9B1hf,EAAOD,QAAU2hf,G,6BC3FjB,SAASe,EAAkB9xe,GACzB,OAAO,WACL,OAAOA,GASX,IAAI8hc,EAAgB,aAEpBA,EAAciwC,YAAcD,EAC5BhwC,EAAckwC,iBAAmBF,GAAkB,GACnDhwC,EAAc2vC,gBAAkBK,GAAkB,GAClDhwC,EAAcmwC,gBAAkBH,EAAkB,MAClDhwC,EAAcowC,gBAAkB,WAC9B,OAAOrze,MAETijc,EAAcqwC,oBAAsB,SAAUnye,GAC5C,OAAOA,GAGT3Q,EAAOD,QAAU0yc,G,6BCrBjB,IAAIvia,EAAY,EAAQ,KAMxBlwC,EAAOD,QAJP,SAAwBqK,EAAW0K,GACgIo7B,GAAU,K,gBCT5GlwC,EAAOD,QAGhE,WAAc,aAAa,IAAIinC,EAAU7gC,MAAM/G,UAAU+E,MAE/D,SAAS8iC,EAAYC,EAAM14B,GACrBA,IACF04B,EAAK9nC,UAAYD,OAAOoE,OAAOiL,EAAWpP,YAE5C8nC,EAAK9nC,UAAUqP,YAAcy4B,EAG/B,SAASC,EAASjkC,GACd,OAAOkkC,EAAWlkC,GAASA,EAAQmkC,EAAInkC,GAKzC,SAASokC,EAAcpkC,GACrB,OAAOqkC,EAAQrkC,GAASA,EAAQskC,EAAStkC,GAK3C,SAASukC,EAAgBvkC,GACvB,OAAOwkC,EAAUxkC,GAASA,EAAQykC,EAAWzkC,GAK/C,SAAS0kC,EAAY1kC,GACnB,OAAOkkC,EAAWlkC,KAAW2kC,EAAc3kC,GAASA,EAAQ4kC,EAAO5kC,GAKvE,SAASkkC,EAAWW,GAClB,SAAUA,IAAiBA,EAAcC,IAG3C,SAAST,EAAQU,GACf,SAAUA,IAAcA,EAAWC,IAGrC,SAASR,EAAUS,GACjB,SAAUA,IAAgBA,EAAaC,IAGzC,SAASP,EAAcQ,GACrB,OAAOd,EAAQc,IAAqBX,EAAUW,GAGhD,SAASC,EAAUC,GACjB,SAAUA,IAAgBA,EAAaC,IApCzCvB,EAAYK,EAAeH,GAM3BF,EAAYQ,EAAiBN,GAM7BF,EAAYW,EAAaT,GA2BzBA,EAASC,WAAaA,EACtBD,EAASI,QAAUA,EACnBJ,EAASO,UAAYA,EACrBP,EAASU,cAAgBA,EACzBV,EAASmB,UAAYA,EAErBnB,EAASsB,MAAQnB,EACjBH,EAASuB,QAAUjB,EACnBN,EAASwB,IAAMf,EAGf,IAAII,EAAuB,6BACvBE,EAAoB,0BACpBE,EAAsB,4BACtBI,EAAsB,4BAMtBI,EAAQ,EACRC,EAAO,GAAKD,EACZE,EAAOD,EAAO,EAIdE,EAAU,GAGVC,EAAgB,CAAE9lC,OAAO,GACzB+lC,EAAY,CAAE/lC,OAAO,GAEzB,SAASgmC,EAAQC,GAEf,OADAA,EAAIjmC,OAAQ,EACLimC,EAGT,SAASC,EAAOD,GACdA,IAAQA,EAAIjmC,OAAQ,GAMtB,SAASmmC,KAGT,SAASC,EAAQC,EAAKC,GACpBA,EAASA,GAAU,EAGnB,IAFA,IAAI9f,EAAMrU,KAAKC,IAAI,EAAGi0B,EAAIrqC,OAASsqC,GAC/BC,EAAS,IAAItjC,MAAMujB,GACdggB,EAAK,EAAGA,EAAKhgB,EAAKggB,IACzBD,EAAOC,GAAMH,EAAIG,EAAKF,GAExB,OAAOC,EAGT,SAASE,EAAWC,GAIlB,YAHkB1nC,IAAd0nC,EAAKtT,OACPsT,EAAKtT,KAAOsT,EAAKC,UAAUC,IAEtBF,EAAKtT,KAGd,SAASyT,EAAUH,EAAMx+B,GAQvB,GAAqB,iBAAVA,EAAoB,CAC7B,IAAI4+B,EAAc5+B,IAAU,EAC5B,GAAI,GAAK4+B,IAAgB5+B,GAAyB,aAAhB4+B,EAChC,OAAOC,IAET7+B,EAAQ4+B,EAEV,OAAO5+B,EAAQ,EAAIu+B,EAAWC,GAAQx+B,EAAQA,EAGhD,SAAS0+B,IACP,OAAO,EAGT,SAASI,EAAWC,EAAOC,EAAK9T,GAC9B,OAAkB,IAAV6T,QAAyBjoC,IAATo0B,GAAsB6T,IAAU7T,UAC7Cp0B,IAARkoC,QAA+BloC,IAATo0B,GAAsB8T,GAAO9T,GAGxD,SAAS+T,EAAaF,EAAO7T,GAC3B,OAAOgU,EAAaH,EAAO7T,EAAM,GAGnC,SAASiU,EAAWH,EAAK9T,GACvB,OAAOgU,EAAaF,EAAK9T,EAAMA,GAGjC,SAASgU,EAAal/B,EAAOkrB,EAAMkU,GACjC,YAAiBtoC,IAAVkJ,EACLo/B,EACAp/B,EAAQ,EACNiK,KAAKC,IAAI,EAAGghB,EAAOlrB,QACVlJ,IAATo0B,EACElrB,EACAiK,KAAKo1B,IAAInU,EAAMlrB,GAKvB,IAAIs/B,EAAe,EACfC,EAAiB,EACjBC,EAAkB,EAElBC,EAAyC,mBAAX7nC,QAAyBA,OAAOk6B,SAC9D4N,EAAuB,aAEvBC,EAAkBF,GAAwBC,EAG9C,SAASE,EAAS99B,GACdsC,KAAKtC,KAAOA,EAmBhB,SAAS+9B,EAAcrpC,EAAMiI,EAAGgmB,EAAGqb,GACjC,IAAIhoC,EAAiB,IAATtB,EAAaiI,EAAa,IAATjI,EAAaiuB,EAAI,CAAChmB,EAAGgmB,GAIlD,OAHAqb,EAAkBA,EAAehoC,MAAQA,EAAUgoC,EAAiB,CAClEhoC,MAAOA,EAAOiK,MAAM,GAEf+9B,EAGT,SAASC,IACP,MAAO,CAAEjoC,WAAOhB,EAAWiL,MAAM,GAGnC,SAASi+B,EAAYrD,GACnB,QAASsD,EAActD,GAGzB,SAASuD,EAAWC,GAClB,OAAOA,GAA+C,mBAAvBA,EAAcr+B,KAG/C,SAASs+B,EAAYC,GACnB,IAAIC,EAAaL,EAAcI,GAC/B,OAAOC,GAAcA,EAAWpsC,KAAKmsC,GAGvC,SAASJ,EAAcI,GACrB,IAAIC,EAAaD,IACdZ,GAAwBY,EAASZ,IAClCY,EAASX,IAEX,GAA0B,mBAAfY,EACT,OAAOA,EAIX,SAASC,EAAYzoC,GACnB,OAAOA,GAAiC,iBAAjBA,EAAMhE,OAI7B,SAASmoC,EAAInkC,GACX,OAAOA,QAAwC0oC,KAC7CxE,EAAWlkC,GAASA,EAAM2oC,QAoUhC,SAAsB3oC,GACpB,IAAI4oC,EAAMC,GAAyB7oC,IACf,iBAAVA,GAAsB,IAAI8oC,GAAU9oC,GAC9C,IAAK4oC,EACH,MAAM,IAAItnC,UACR,iEAAmEtB,GAGvE,OAAO4oC,EA5UiCG,CAAa/oC,GAsCrD,SAASskC,EAAStkC,GAChB,OAAOA,QACL0oC,KAAgBM,aAChB9E,EAAWlkC,GACRqkC,EAAQrkC,GAASA,EAAM2oC,QAAU3oC,EAAMipC,eACxCC,GAAkBlpC,GAUxB,SAASykC,EAAWzkC,GAClB,OAAOA,QAAwC0oC,KAC5CxE,EAAWlkC,GACZqkC,EAAQrkC,GAASA,EAAMmpC,WAAanpC,EAAMopC,eADrBC,GAAoBrpC,GA2B7C,SAAS4kC,EAAO5kC,GACd,OACEA,QAAwC0oC,KACvCxE,EAAWlkC,GACZqkC,EAAQrkC,GAASA,EAAMmpC,WAAanpC,EADfqpC,GAAoBrpC,IAEzCspC,WAjJJxB,EAAS5rC,UAAU4V,SAAW,WAC5B,MAAO,cAIXg2B,EAASyB,KAAO/B,EAChBM,EAAS0B,OAAS/B,EAClBK,EAAS2B,QAAU/B,EAEnBI,EAAS5rC,UAAUwtC,QACnB5B,EAAS5rC,UAAUytC,SAAW,WAAc,OAAOr9B,KAAKwF,YACxDg2B,EAAS5rC,UAAU2rC,GAAmB,WACpC,OAAOv7B,MA2CTy3B,EAAYI,EAAKF,GAMfE,EAAIyF,GAAK,WACP,OAAOzF,EAAIl1B,YAGbk1B,EAAIjoC,UAAUysC,MAAQ,WACpB,OAAOr8B,MAGT63B,EAAIjoC,UAAU4V,SAAW,WACvB,OAAOxF,KAAKu9B,WAAW,QAAS,MAGlC1F,EAAIjoC,UAAU4tC,YAAc,WAK1B,OAJKx9B,KAAKy9B,QAAUz9B,KAAK09B,oBACvB19B,KAAKy9B,OAASz9B,KAAK68B,WAAWc,UAC9B39B,KAAK8mB,KAAO9mB,KAAKy9B,OAAO/tC,QAEnBsQ,MAKT63B,EAAIjoC,UAAUyqC,UAAY,SAASp5B,EAAI28B,GACrC,OAAOC,GAAW79B,KAAMiB,EAAI28B,GAAS,IAKvC/F,EAAIjoC,UAAUkuC,WAAa,SAAS1rC,EAAMwrC,GACxC,OAAOG,GAAY/9B,KAAM5N,EAAMwrC,GAAS,IAK5CnG,EAAYO,EAAUH,GASpBG,EAASpoC,UAAU8sC,WAAa,WAC9B,OAAO18B,MAKXy3B,EAAYU,EAAYN,GAOtBM,EAAWmF,GAAK,WACd,OAAOnF,EAAWx1B,YAGpBw1B,EAAWvoC,UAAUktC,aAAe,WAClC,OAAO98B,MAGTm4B,EAAWvoC,UAAU4V,SAAW,WAC9B,OAAOxF,KAAKu9B,WAAW,QAAS,MAGlCpF,EAAWvoC,UAAUyqC,UAAY,SAASp5B,EAAI28B,GAC5C,OAAOC,GAAW79B,KAAMiB,EAAI28B,GAAS,IAGvCzF,EAAWvoC,UAAUkuC,WAAa,SAAS1rC,EAAMwrC,GAC/C,OAAOG,GAAY/9B,KAAM5N,EAAMwrC,GAAS,IAK5CnG,EAAYa,EAAQT,GASlBS,EAAOgF,GAAK,WACV,OAAOhF,EAAO31B,YAGhB21B,EAAO1oC,UAAUotC,SAAW,WAC1B,OAAOh9B,MAKX63B,EAAImG,MAAQA,GACZnG,EAAIoB,MAAQjB,EACZH,EAAIsB,IAAMb,EACVT,EAAIqB,QAAUf,EAEd,IA2LI8F,EAuUAC,EAqHAC,EAvnBAC,EAAkB,wBAOpB,SAASC,GAAS9V,GAChBvoB,KAAKs+B,OAAS/V,EACdvoB,KAAK8mB,KAAOyB,EAAM74B,OAgCpB,SAAS8sC,GAAUroC,GACjB,IAAI4U,EAAOpZ,OAAOoZ,KAAK5U,GACvB6L,KAAKu+B,QAAUpqC,EACf6L,KAAKw+B,MAAQz1B,EACb/I,KAAK8mB,KAAO/d,EAAKrZ,OA4CnB,SAAS+uC,GAAYxC,GACnBj8B,KAAK0+B,UAAYzC,EACjBj8B,KAAK8mB,KAAOmV,EAASvsC,QAAUusC,EAASnV,KAwC1C,SAAS6X,GAAYjR,GACnB1tB,KAAKvC,UAAYiwB,EACjB1tB,KAAK4+B,eAAiB,GAkD1B,SAASZ,GAAMa,GACb,SAAUA,IAAYA,EAAST,IAKjC,SAAShC,KACP,OAAO6B,IAAcA,EAAY,IAAII,GAAS,KAGhD,SAASzB,GAAkBlpC,GACzB,IAAI4oC,EACF3lC,MAAMC,QAAQlD,GAAS,IAAI2qC,GAAS3qC,GAAOipC,eAC3Cb,EAAWpoC,GAAS,IAAIirC,GAAYjrC,GAAOipC,eAC3Cf,EAAYloC,GAAS,IAAI+qC,GAAY/qC,GAAOipC,eAC3B,iBAAVjpC,EAAqB,IAAI8oC,GAAU9oC,QAC1ChB,EACF,IAAK4pC,EACH,MAAM,IAAItnC,UACR,yEACsBtB,GAG1B,OAAO4oC,EAGT,SAASS,GAAoBrpC,GAC3B,IAAI4oC,EAAMC,GAAyB7oC,GACnC,IAAK4oC,EACH,MAAM,IAAItnC,UACR,gDAAkDtB,GAGtD,OAAO4oC,EAcT,SAASC,GAAyB7oC,GAChC,OACEyoC,EAAYzoC,GAAS,IAAI2qC,GAAS3qC,GAClCooC,EAAWpoC,GAAS,IAAIirC,GAAYjrC,GACpCkoC,EAAYloC,GAAS,IAAI+qC,GAAY/qC,QACrChB,EAIJ,SAASmrC,GAAWvB,EAAKr7B,EAAI28B,EAASkB,GACpC,IAAIC,EAAQzC,EAAImB,OAChB,GAAIsB,EAAO,CAET,IADA,IAAIC,EAAWD,EAAMrvC,OAAS,EACrBwqC,EAAK,EAAGA,GAAM8E,EAAU9E,IAAM,CACrC,IAAI+E,EAAQF,EAAMnB,EAAUoB,EAAW9E,EAAKA,GAC5C,IAAmD,IAA/Cj5B,EAAGg+B,EAAM,GAAIH,EAAUG,EAAM,GAAK/E,EAAIoC,GACxC,OAAOpC,EAAK,EAGhB,OAAOA,EAET,OAAOoC,EAAIoB,kBAAkBz8B,EAAI28B,GAGnC,SAASG,GAAYzB,EAAKlqC,EAAMwrC,EAASkB,GACvC,IAAIC,EAAQzC,EAAImB,OAChB,GAAIsB,EAAO,CACT,IAAIC,EAAWD,EAAMrvC,OAAS,EAC1BwqC,EAAK,EACT,OAAO,IAAIsB,GAAS,WAClB,IAAIyD,EAAQF,EAAMnB,EAAUoB,EAAW9E,EAAKA,GAC5C,OAAOA,IAAO8E,EA/YX,CAAEtrC,WAAOhB,EAAWiL,MAAM,GAiZ3B89B,EAAcrpC,EAAM0sC,EAAUG,EAAM,GAAK/E,EAAK,EAAG+E,EAAM,OAG7D,OAAO3C,EAAI4C,mBAAmB9sC,EAAMwrC,GAGtC,SAASuB,GAAOC,EAAMC,GACpB,OAAOA,EAKT,SAASC,EAAWD,EAAWD,EAAMprC,EAAKurC,GACxC,OAAI5oC,MAAMC,QAAQwoC,GACTC,EAAUvvC,KAAKyvC,EAAYvrC,EAAKmkC,EAAWiH,GAAMlmC,KAAI,SAASmnB,EAAGhmB,GAAK,OAAOilC,EAAWD,EAAWhf,EAAGhmB,EAAG+kC,OAE9GI,GAAWJ,GACNC,EAAUvvC,KAAKyvC,EAAYvrC,EAAKgkC,EAASoH,GAAMlmC,KAAI,SAASmnB,EAAGhmB,GAAK,OAAOilC,EAAWD,EAAWhf,EAAGhmB,EAAG+kC,OAEzGA,EAXLE,CAAWD,EAAWD,EAAM,GAAI,CAAC,GAAIA,IACrCK,GAAcL,GAalB,SAASK,GAAcL,GACrB,OAAIzoC,MAAMC,QAAQwoC,GACTjH,EAAWiH,GAAMlmC,IAAIumC,IAAeC,SAEzCF,GAAWJ,GACNpH,EAASoH,GAAMlmC,IAAIumC,IAAeE,QAEpCP,EAGT,SAASI,GAAW9rC,GAClB,OAAOA,IAAUA,EAAMuL,cAAgBtP,aAAgC+C,IAAtBgB,EAAMuL,aAyDzD,SAASgiB,GAAG2e,EAAQC,GAClB,GAAID,IAAWC,GAAWD,GAAWA,GAAUC,GAAWA,EACxD,OAAO,EAET,IAAKD,IAAWC,EACd,OAAO,EAET,GAA8B,mBAAnBD,EAAOE,SACY,mBAAnBD,EAAOC,QAAwB,CAGxC,IAFAF,EAASA,EAAOE,cAChBD,EAASA,EAAOC,YACUF,GAAWA,GAAUC,GAAWA,EACxD,OAAO,EAET,IAAKD,IAAWC,EACd,OAAO,EAGX,QAA6B,mBAAlBD,EAAOG,QACW,mBAAlBF,EAAOE,SACdH,EAAOG,OAAOF,IAMpB,SAASG,GAAU3gC,EAAG6kB,GACpB,GAAI7kB,IAAM6kB,EACR,OAAO,EAGT,IACG0T,EAAW1T,SACDxxB,IAAX2M,EAAEynB,WAAiCp0B,IAAXwxB,EAAE4C,MAAsBznB,EAAEynB,OAAS5C,EAAE4C,WAChDp0B,IAAb2M,EAAE4gC,aAAqCvtC,IAAbwxB,EAAE+b,QAAwB5gC,EAAE4gC,SAAW/b,EAAE+b,QACnElI,EAAQ14B,KAAO04B,EAAQ7T,IACvBgU,EAAU74B,KAAO64B,EAAUhU,IAC3B4U,EAAUz5B,KAAOy5B,EAAU5U,GAE3B,OAAO,EAGT,GAAe,IAAX7kB,EAAEynB,MAAyB,IAAX5C,EAAE4C,KACpB,OAAO,EAGT,IAAIoZ,GAAkB7H,EAAch5B,GAEpC,GAAIy5B,EAAUz5B,GAAI,CAChB,IAAI4nB,EAAU5nB,EAAE4nB,UAChB,OAAO/C,EAAEic,OAAM,SAAS9f,EAAGhmB,GACzB,IAAI4kC,EAAQhY,EAAQvpB,OAAOhK,MAC3B,OAAOurC,GAAShe,GAAGge,EAAM,GAAI5e,KAAO6f,GAAkBjf,GAAGge,EAAM,GAAI5kC,QAC/D4sB,EAAQvpB,OAAOC,KAGvB,IAAIyiC,GAAU,EAEd,QAAe1tC,IAAX2M,EAAEynB,KACJ,QAAep0B,IAAXwxB,EAAE4C,KACyB,mBAAlBznB,EAAEm+B,aACXn+B,EAAEm+B,kBAEC,CACL4C,GAAU,EACV,IAAI98B,EAAIjE,EACRA,EAAI6kB,EACJA,EAAI5gB,EAIR,IAAI+8B,GAAW,EACXC,EAAQpc,EAAEmW,WAAU,SAASha,EAAGhmB,GAClC,GAAI6lC,GAAkB7gC,EAAEmZ,IAAI6H,GACxB+f,GAAWnf,GAAGZ,EAAGhhB,EAAE/L,IAAI+G,EAAGk/B,KAAatY,GAAG5hB,EAAE/L,IAAI+G,EAAGk/B,GAAUlZ,GAE/D,OADAggB,GAAW,GACJ,KAIX,OAAOA,GAAYhhC,EAAEynB,OAASwZ,EAK9B,SAASC,GAAO7sC,EAAO8sC,GACrB,KAAMxgC,gBAAgBugC,IACpB,OAAO,IAAIA,GAAO7sC,EAAO8sC,GAI3B,GAFAxgC,KAAKiW,OAASviB,EACdsM,KAAK8mB,UAAiBp0B,IAAV8tC,EAAsBC,IAAW56B,KAAKC,IAAI,EAAG06B,GACvC,IAAdxgC,KAAK8mB,KAAY,CACnB,GAAIoX,EACF,OAAOA,EAETA,EAAel+B,MAoErB,SAAS0gC,GAAUC,EAAW/uC,GAC5B,IAAK+uC,EAAW,MAAM,IAAI9uC,MAAMD,GAKhC,SAASgvC,GAAM1L,EAAO0F,EAAKiG,GACzB,KAAM7gC,gBAAgB4gC,IACpB,OAAO,IAAIA,GAAM1L,EAAO0F,EAAKiG,GAe/B,GAbAH,GAAmB,IAATG,EAAY,4BACtB3L,EAAQA,GAAS,OACLxiC,IAARkoC,IACFA,EAAM6F,KAERI,OAAgBnuC,IAATmuC,EAAqB,EAAIh7B,KAAKi7B,IAAID,GACrCjG,EAAM1F,IACR2L,GAAQA,GAEV7gC,KAAK+gC,OAAS7L,EACdl1B,KAAKghC,KAAOpG,EACZ56B,KAAKxC,MAAQqjC,EACb7gC,KAAK8mB,KAAOjhB,KAAKC,IAAI,EAAGD,KAAKo7B,MAAMrG,EAAM1F,GAAS2L,EAAO,GAAK,GAC5C,IAAd7gC,KAAK8mB,KAAY,CACnB,GAAIqX,EACF,OAAOA,EAETA,EAAcn+B,MA2FlB,SAASkhC,KACP,MAAMlsC,UAAU,YAIqB,SAASmsC,MAEP,SAASC,MAEb,SAASC,MAjoBhDxJ,EAAIjoC,UAAUwuC,IAAmB,EAIjC3G,EAAY4G,GAAUlG,GAMpBkG,GAASzuC,UAAU0D,IAAM,SAASsI,EAAO0lC,GACvC,OAAOthC,KAAKwY,IAAI5c,GAASoE,KAAKs+B,OAAO/D,EAAUv6B,KAAMpE,IAAU0lC,GAGjEjD,GAASzuC,UAAUyqC,UAAY,SAASp5B,EAAI28B,GAG1C,IAFA,IAAIrV,EAAQvoB,KAAKs+B,OACbU,EAAWzW,EAAM74B,OAAS,EACrBwqC,EAAK,EAAGA,GAAM8E,EAAU9E,IAC/B,IAA0D,IAAtDj5B,EAAGsnB,EAAMqV,EAAUoB,EAAW9E,EAAKA,GAAKA,EAAIl6B,MAC9C,OAAOk6B,EAAK,EAGhB,OAAOA,GAGTmE,GAASzuC,UAAUkuC,WAAa,SAAS1rC,EAAMwrC,GAC7C,IAAIrV,EAAQvoB,KAAKs+B,OACbU,EAAWzW,EAAM74B,OAAS,EAC1BwqC,EAAK,EACT,OAAO,IAAIsB,GAAS,WACjB,OAAOtB,EAAK8E,EA1KV,CAAEtrC,WAAOhB,EAAWiL,MAAM,GA4K3B89B,EAAcrpC,EAAM8nC,EAAI3R,EAAMqV,EAAUoB,EAAW9E,IAAOA,UAMlEzC,EAAY+E,GAAWxE,GAQrBwE,GAAU5sC,UAAU0D,IAAM,SAASU,EAAKstC,GACtC,YAAoB5uC,IAAhB4uC,GAA8BthC,KAAKwY,IAAIxkB,GAGpCgM,KAAKu+B,QAAQvqC,GAFXstC,GAKX9E,GAAU5sC,UAAU4oB,IAAM,SAASxkB,GACjC,OAAOgM,KAAKu+B,QAAQ1uC,eAAemE,IAGrCwoC,GAAU5sC,UAAUyqC,UAAY,SAASp5B,EAAI28B,GAI3C,IAHA,IAAIzpC,EAAS6L,KAAKu+B,QACdx1B,EAAO/I,KAAKw+B,MACZQ,EAAWj2B,EAAKrZ,OAAS,EACpBwqC,EAAK,EAAGA,GAAM8E,EAAU9E,IAAM,CACrC,IAAIlmC,EAAM+U,EAAK60B,EAAUoB,EAAW9E,EAAKA,GACzC,IAAmC,IAA/Bj5B,EAAG9M,EAAOH,GAAMA,EAAKgM,MACvB,OAAOk6B,EAAK,EAGhB,OAAOA,GAGTsC,GAAU5sC,UAAUkuC,WAAa,SAAS1rC,EAAMwrC,GAC9C,IAAIzpC,EAAS6L,KAAKu+B,QACdx1B,EAAO/I,KAAKw+B,MACZQ,EAAWj2B,EAAKrZ,OAAS,EACzBwqC,EAAK,EACT,OAAO,IAAIsB,GAAS,WAClB,IAAIxnC,EAAM+U,EAAK60B,EAAUoB,EAAW9E,EAAKA,GACzC,OAAOA,IAAO8E,EAzNX,CAAEtrC,WAAOhB,EAAWiL,MAAM,GA2N3B89B,EAAcrpC,EAAM4B,EAAKG,EAAOH,QAIxCwoC,GAAU5sC,UAAUopC,IAAuB,EAG3CvB,EAAYgH,GAAatG,GAMvBsG,GAAY7uC,UAAU8tC,kBAAoB,SAASz8B,EAAI28B,GACrD,GAAIA,EACF,OAAO59B,KAAKw9B,cAAcnD,UAAUp5B,EAAI28B,GAE1C,IACIlQ,EAAWsO,EADAh8B,KAAK0+B,WAEhB6C,EAAa,EACjB,GAAIzF,EAAWpO,GAEb,IADA,IAAImT,IACKA,EAAOnT,EAAShwB,QAAQC,OACY,IAAvCsD,EAAG4/B,EAAKntC,MAAO6tC,IAAcvhC,QAKrC,OAAOuhC,GAGT9C,GAAY7uC,UAAUsvC,mBAAqB,SAAS9sC,EAAMwrC,GACxD,GAAIA,EACF,OAAO59B,KAAKw9B,cAAcM,WAAW1rC,EAAMwrC,GAE7C,IACIlQ,EAAWsO,EADAh8B,KAAK0+B,WAEpB,IAAK5C,EAAWpO,GACd,OAAO,IAAI8N,EAASG,GAEtB,IAAI4F,EAAa,EACjB,OAAO,IAAI/F,GAAS,WAClB,IAAIqF,EAAOnT,EAAShwB,OACpB,OAAOmjC,EAAKljC,KAAOkjC,EAAOpF,EAAcrpC,EAAMmvC,IAAcV,EAAKntC,WAMvE+jC,EAAYkH,GAAaxG,GAMvBwG,GAAY/uC,UAAU8tC,kBAAoB,SAASz8B,EAAI28B,GACrD,GAAIA,EACF,OAAO59B,KAAKw9B,cAAcnD,UAAUp5B,EAAI28B,GAK1C,IAHA,IAQIiD,EARAnT,EAAW1tB,KAAKvC,UAChBshC,EAAQ/+B,KAAK4+B,eACb2C,EAAa,EACVA,EAAaxC,EAAMrvC,QACxB,IAAkD,IAA9CuR,EAAG89B,EAAMwC,GAAaA,IAAcvhC,MACtC,OAAOuhC,EAIX,OAASV,EAAOnT,EAAShwB,QAAQC,MAAM,CACrC,IAAIkhB,EAAMgiB,EAAKntC,MAEf,GADAqrC,EAAMwC,GAAc1iB,GACgB,IAAhC5d,EAAG4d,EAAK0iB,IAAcvhC,MACxB,MAGJ,OAAOuhC,GAGT5C,GAAY/uC,UAAUsvC,mBAAqB,SAAS9sC,EAAMwrC,GACxD,GAAIA,EACF,OAAO59B,KAAKw9B,cAAcM,WAAW1rC,EAAMwrC,GAE7C,IAAIlQ,EAAW1tB,KAAKvC,UAChBshC,EAAQ/+B,KAAK4+B,eACb2C,EAAa,EACjB,OAAO,IAAI/F,GAAS,WAClB,GAAI+F,GAAcxC,EAAMrvC,OAAQ,CAC9B,IAAImxC,EAAOnT,EAAShwB,OACpB,GAAImjC,EAAKljC,KACP,OAAOkjC,EAET9B,EAAMwC,GAAcV,EAAKntC,MAE3B,OAAO+nC,EAAcrpC,EAAMmvC,EAAYxC,EAAMwC,UAsQnD9J,EAAY8I,GAAQpI,GAgBlBoI,GAAO3wC,UAAU4V,SAAW,WAC1B,OAAkB,IAAdxF,KAAK8mB,KACA,YAEF,YAAc9mB,KAAKiW,OAAS,IAAMjW,KAAK8mB,KAAO,YAGvDyZ,GAAO3wC,UAAU0D,IAAM,SAASsI,EAAO0lC,GACrC,OAAOthC,KAAKwY,IAAI5c,GAASoE,KAAKiW,OAASqrB,GAGzCf,GAAO3wC,UAAU4xC,SAAW,SAASC,GACnC,OAAOxgB,GAAGjhB,KAAKiW,OAAQwrB,IAGzBlB,GAAO3wC,UAAU+E,MAAQ,SAASgmC,EAAOC,GACvC,IAAI9T,EAAO9mB,KAAK8mB,KAChB,OAAO4T,EAAWC,EAAOC,EAAK9T,GAAQ9mB,KACpC,IAAIugC,GAAOvgC,KAAKiW,OAAQ8kB,EAAWH,EAAK9T,GAAQ+T,EAAaF,EAAO7T,KAGxEyZ,GAAO3wC,UAAUguC,QAAU,WACzB,OAAO59B,MAGTugC,GAAO3wC,UAAUwJ,QAAU,SAASqoC,GAClC,OAAIxgB,GAAGjhB,KAAKiW,OAAQwrB,GACX,GAED,GAGVlB,GAAO3wC,UAAU8xC,YAAc,SAASD,GACtC,OAAIxgB,GAAGjhB,KAAKiW,OAAQwrB,GACXzhC,KAAK8mB,MAEN,GAGVyZ,GAAO3wC,UAAUyqC,UAAY,SAASp5B,EAAI28B,GACxC,IAAK,IAAI1D,EAAK,EAAGA,EAAKl6B,KAAK8mB,KAAMoT,IAC/B,IAAkC,IAA9Bj5B,EAAGjB,KAAKiW,OAAQikB,EAAIl6B,MACtB,OAAOk6B,EAAK,EAGhB,OAAOA,GAGTqG,GAAO3wC,UAAUkuC,WAAa,SAAS1rC,EAAMwrC,GAAU,IAAI+D,EAAS3hC,KAC9Dk6B,EAAK,EACT,OAAO,IAAIsB,GAAS,WACjB,OAAOtB,EAAKyH,EAAO7a,KAAO2U,EAAcrpC,EAAM8nC,IAAMyH,EAAO1rB,QAjoBzD,CAAEviB,WAAOhB,EAAWiL,MAAM,OAqoBjC4iC,GAAO3wC,UAAUmwC,OAAS,SAAS6B,GACjC,OAAOA,aAAiBrB,GACtBtf,GAAGjhB,KAAKiW,OAAQ2rB,EAAM3rB,QACtB+pB,GAAU4B,IAUhBnK,EAAYmJ,GAAOzI,GA2BjByI,GAAMhxC,UAAU4V,SAAW,WACzB,OAAkB,IAAdxF,KAAK8mB,KACA,WAEF,WACL9mB,KAAK+gC,OAAS,MAAQ/gC,KAAKghC,MACX,IAAfhhC,KAAKxC,MAAc,OAASwC,KAAKxC,MAAQ,IAC5C,MAGFojC,GAAMhxC,UAAU0D,IAAM,SAASsI,EAAO0lC,GACpC,OAAOthC,KAAKwY,IAAI5c,GACdoE,KAAK+gC,OAASxG,EAAUv6B,KAAMpE,GAASoE,KAAKxC,MAC5C8jC,GAGJV,GAAMhxC,UAAU4xC,SAAW,SAASC,GAClC,IAAII,GAAiBJ,EAAczhC,KAAK+gC,QAAU/gC,KAAKxC,MACvD,OAAOqkC,GAAiB,GACtBA,EAAgB7hC,KAAK8mB,MACrB+a,IAAkBh8B,KAAKi8B,MAAMD,IAGjCjB,GAAMhxC,UAAU+E,MAAQ,SAASgmC,EAAOC,GACtC,OAAIF,EAAWC,EAAOC,EAAK56B,KAAK8mB,MACvB9mB,MAET26B,EAAQE,EAAaF,EAAO36B,KAAK8mB,OACjC8T,EAAMG,EAAWH,EAAK56B,KAAK8mB,QAChB6T,EACF,IAAIiG,GAAM,EAAG,GAEf,IAAIA,GAAM5gC,KAAK1M,IAAIqnC,EAAO36B,KAAKghC,MAAOhhC,KAAK1M,IAAIsnC,EAAK56B,KAAKghC,MAAOhhC,KAAKxC,SAG9EojC,GAAMhxC,UAAUwJ,QAAU,SAASqoC,GACjC,IAAIM,EAAcN,EAAczhC,KAAK+gC,OACrC,GAAIgB,EAAc/hC,KAAKxC,OAAU,EAAG,CAClC,IAAI5B,EAAQmmC,EAAc/hC,KAAKxC,MAC/B,GAAI5B,GAAS,GAAKA,EAAQoE,KAAK8mB,KAC7B,OAAOlrB,EAGX,OAAQ,GAGVglC,GAAMhxC,UAAU8xC,YAAc,SAASD,GACrC,OAAOzhC,KAAK5G,QAAQqoC,IAGtBb,GAAMhxC,UAAUyqC,UAAY,SAASp5B,EAAI28B,GAIvC,IAHA,IAAIoB,EAAWh/B,KAAK8mB,KAAO,EACvB+Z,EAAO7gC,KAAKxC,MACZ9J,EAAQkqC,EAAU59B,KAAK+gC,OAAS/B,EAAW6B,EAAO7gC,KAAK+gC,OAClD7G,EAAK,EAAGA,GAAM8E,EAAU9E,IAAM,CACrC,IAA4B,IAAxBj5B,EAAGvN,EAAOwmC,EAAIl6B,MAChB,OAAOk6B,EAAK,EAEdxmC,GAASkqC,GAAWiD,EAAOA,EAE7B,OAAO3G,GAGT0G,GAAMhxC,UAAUkuC,WAAa,SAAS1rC,EAAMwrC,GAC1C,IAAIoB,EAAWh/B,KAAK8mB,KAAO,EACvB+Z,EAAO7gC,KAAKxC,MACZ9J,EAAQkqC,EAAU59B,KAAK+gC,OAAS/B,EAAW6B,EAAO7gC,KAAK+gC,OACvD7G,EAAK,EACT,OAAO,IAAIsB,GAAS,WAClB,IAAInb,EAAI3sB,EAER,OADAA,GAASkqC,GAAWiD,EAAOA,EACpB3G,EAAK8E,EApvBT,CAAEtrC,WAAOhB,EAAWiL,MAAM,GAovBW89B,EAAcrpC,EAAM8nC,IAAM7Z,OAItEugB,GAAMhxC,UAAUmwC,OAAS,SAAS6B,GAChC,OAAOA,aAAiBhB,GACtB5gC,KAAK+gC,SAAWa,EAAMb,QACtB/gC,KAAKghC,OAASY,EAAMZ,MACpBhhC,KAAKxC,QAAUokC,EAAMpkC,MACrBwiC,GAAUhgC,KAAM4hC,IAMtBnK,EAAYyJ,GAAYvJ,GAMxBF,EAAY0J,GAAiBD,IAE7BzJ,EAAY2J,GAAmBF,IAE/BzJ,EAAY4J,GAAeH,IAG3BA,GAAWjI,MAAQkI,GACnBD,GAAWhI,QAAUkI,GACrBF,GAAW/H,IAAMkI,GAEjB,IAAIW,GACmB,mBAAdn8B,KAAKm8B,OAAqD,IAA9Bn8B,KAAKm8B,KAAK,WAAY,GACzDn8B,KAAKm8B,KACL,SAAc3iC,EAAG6kB,GAGf,IAAIlxB,EAAQ,OAFZqM,GAAQ,GAGJpM,EAAQ,OAFZixB,GAAQ,GAIR,OAAQlxB,EAAIC,IAASoM,IAAM,IAAMpM,EAAID,GAAKkxB,IAAM,KAAQ,KAAQ,GAAK,GAOzE,SAAS+d,GAAIC,GACX,OAASA,IAAQ,EAAK,WAAqB,WAANA,EAGvC,SAASC,GAAKhvC,GACZ,IAAU,IAANA,SAAeA,EACjB,OAAO,EAET,GAAyB,mBAAdA,EAAE2sC,WAED,KADV3sC,EAAIA,EAAE2sC,YACF3sC,MAAeA,GACjB,OAAO,EAGX,IAAU,IAANA,EACF,OAAO,EAET,IAAIf,SAAce,EAClB,GAAa,WAATf,EAAmB,CACrB,GAAIe,GAAMA,GAAKA,IAAMstC,IACnB,OAAO,EAET,IAAI2B,EAAQ,EAAJjvC,EAIR,IAHIivC,IAAMjvC,IACRivC,GAAS,WAAJjvC,GAEAA,EAAI,YAETivC,GADAjvC,GAAK,WAGP,OAAO8uC,GAAIG,GAEb,GAAa,WAAThwC,EACF,OAAOe,EAAEzD,OAAS2yC,GActB,SAA0BC,GACxB,IAAIH,EAAOI,GAAgBD,GAU3B,YATa5vC,IAATyvC,IACFA,EAAOK,GAAWF,GACdG,KAA2BC,KAC7BD,GAAyB,EACzBF,GAAkB,IAEpBE,KACAF,GAAgBD,GAAUH,GAErBA,EAzB4CQ,CAAiBxvC,GAAKqvC,GAAWrvC,GAEpF,GAA0B,mBAAfA,EAAEyvC,SACX,OAAOzvC,EAAEyvC,WAEX,GAAa,WAATxwC,EACF,OAqCJ,SAAmB6C,GACjB,IAAIktC,EACJ,GAAIU,SAEWnwC,KADbyvC,EAAOW,GAAQxvC,IAAI2B,IAEjB,OAAOktC,EAKX,QAAazvC,KADbyvC,EAAOltC,EAAI8tC,KAET,OAAOZ,EAGT,IAAKa,GAAmB,CAEtB,QAAatwC,KADbyvC,EAAOltC,EAAIguC,sBAAwBhuC,EAAIguC,qBAAqBF,KAE1D,OAAOZ,EAIT,QAAazvC,KADbyvC,EA4DJ,SAAuB/uB,GACrB,GAAIA,GAAQA,EAAK8vB,SAAW,EAC1B,OAAQ9vB,EAAK8vB,UACX,KAAK,EACH,OAAO9vB,EAAK+vB,SACd,KAAK,EACH,OAAO/vB,EAAKqX,iBAAmBrX,EAAKqX,gBAAgB0Y,UAlEjDC,CAAcnuC,IAEnB,OAAOktC,EASX,GALAA,IAASkB,GACQ,WAAbA,KACFA,GAAa,GAGXR,GACFC,GAAQvqB,IAAItjB,EAAKktC,OACZ,SAAqBzvC,IAAjB4wC,KAAoD,IAAtBA,GAAaruC,GACpD,MAAM,IAAIpD,MAAM,mDACX,GAAImxC,GACTrzC,OAAOyD,eAAe6B,EAAK8tC,GAAc,CACvC,YAAc,EACd,cAAgB,EAChB,UAAY,EACZ,MAASZ,SAEN,QAAiCzvC,IAA7BuC,EAAIguC,sBACJhuC,EAAIguC,uBAAyBhuC,EAAIgK,YAAYrP,UAAUqzC,qBAKhEhuC,EAAIguC,qBAAuB,WACzB,OAAOjjC,KAAKf,YAAYrP,UAAUqzC,qBAAqB/mC,MAAM8D,KAAM2C,YAErE1N,EAAIguC,qBAAqBF,IAAgBZ,MACpC,SAAqBzvC,IAAjBuC,EAAIiuC,SAOb,MAAM,IAAIrxC,MAAM,sDAFhBoD,EAAI8tC,IAAgBZ,GAKtB,OAAOA,EAnGEoB,CAAUpwC,GAEnB,GAA0B,mBAAfA,EAAEqS,SACX,OAAOg9B,GAAWrvC,EAAEqS,YAEtB,MAAM,IAAI3T,MAAM,cAAgBO,EAAO,sBAkBzC,SAASowC,GAAWF,GAQlB,IADA,IAAIH,EAAO,EACFjI,EAAK,EAAGA,EAAKoI,EAAO5yC,OAAQwqC,IACnCiI,EAAO,GAAKA,EAAOG,EAAOkB,WAAWtJ,GAAM,EAE7C,OAAO+H,GAAIE,GAqEb,IA2BIW,GA3BAQ,GAAe3zC,OAAO2zC,aAGtBN,GAAqB,WACvB,IAEE,OADArzC,OAAOyD,eAAe,GAAI,IAAK,KACxB,EACP,MAAO1C,GACP,OAAO,GALa,GAuBpBmyC,GAAkC,mBAAZY,QAEtBZ,KACFC,GAAU,IAAIW,SAGhB,IAAIJ,GAAa,EAEbN,GAAe,oBACG,mBAAXvvC,SACTuvC,GAAevvC,OAAOuvC,KAGxB,IAAIV,GAA+B,GAC/BK,GAA6B,IAC7BD,GAAyB,EACzBF,GAAkB,GAEtB,SAASmB,GAAkB5c,GACzB4Z,GACE5Z,IAAS2Z,IACT,qDAQF,SAASjc,GAAI9wB,GACX,OAAOA,QAAwCiwC,KAC7Czc,GAAMxzB,KAAWolC,EAAUplC,GAASA,EACpCiwC,KAAWC,eAAc,SAAS1qC,GAChC,IAAIkhC,EAAOtC,EAAcpkC,GACzBgwC,GAAkBtJ,EAAKtT,MACvBsT,EAAKhgC,SAAQ,SAASimB,EAAGhmB,GAAK,OAAOnB,EAAIqf,IAAIle,EAAGgmB,SA6KxD,SAAS6G,GAAM2c,GACb,SAAUA,IAAYA,EAASC,KAxLjCrM,EAAYjT,GAAK2c,IAcf3c,GAAI8Y,GAAK,WAAY,IAAIg2K,EAAY97K,EAAQ1nC,KAAK6S,UAAW,GAC3D,OAAOghC,KAAWC,eAAc,SAAS1qC,GACvC,IAAK,IAAI1J,EAAI,EAAGA,EAAI8jN,EAAU5jN,OAAQF,GAAK,EAAG,CAC5C,GAAIA,EAAI,GAAK8jN,EAAU5jN,OACrB,MAAM,IAAImC,MAAM,0BAA4ByhN,EAAU9jN,IAExD0J,EAAIqf,IAAI+6L,EAAU9jN,GAAI8jN,EAAU9jN,EAAI,SAK1Cg1B,GAAI50B,UAAU4V,SAAW,WACvB,OAAOxF,KAAKu9B,WAAW,QAAS,MAKlC/Y,GAAI50B,UAAU0D,IAAM,SAAS+G,EAAGinC,GAC9B,OAAOthC,KAAK+jC,MACV/jC,KAAK+jC,MAAMzwC,IAAI,OAAGZ,EAAW2H,EAAGinC,GAChCA,GAKJ9c,GAAI50B,UAAU2oB,IAAM,SAASle,EAAGgmB,GAC9B,OAAO2jB,GAAUhkC,KAAM3F,EAAGgmB,IAG5BmE,GAAI50B,UAAUq0C,MAAQ,SAASC,EAAS7jB,GACtC,OAAOrgB,KAAKmkC,SAASD,EAAS3K,GAAS,WAAa,OAAOlZ,MAG7DmE,GAAI50B,UAAUw0C,OAAS,SAAS/pC,GAC9B,OAAO2pC,GAAUhkC,KAAM3F,EAAGk/B,IAG5B/U,GAAI50B,UAAUy0C,SAAW,SAASH,GAChC,OAAOlkC,KAAKmkC,SAASD,GAAS,WAAa,OAAO3K,MAGpD/U,GAAI50B,UAAU00C,OAAS,SAASjqC,EAAGinC,EAAahK,GAC9C,OAA4B,IAArB30B,UAAUjT,OACf2K,EAAE2F,MACFA,KAAKmkC,SAAS,CAAC9pC,GAAIinC,EAAahK,IAGpC9S,GAAI50B,UAAUu0C,SAAW,SAASD,EAAS5C,EAAahK,GACjDA,IACHA,EAAUgK,EACVA,OAAc5uC,GAEhB,IAAI6xC,EAgrBR,SAASC,EAAgBC,EAAUC,EAAapD,EAAahK,GAC3D,IAAIqN,EAAWF,IAAalL,EACxBsH,EAAO6D,EAAYhnC,OACvB,GAAImjC,EAAKljC,KAAM,CACb,IAAIinC,EAAgBD,EAAWrD,EAAcmD,EACzCI,EAAWvN,EAAQsN,GACvB,OAAOC,IAAaD,EAAgBH,EAAWI,EAEjDnE,GACEiE,GAAaF,GAAYA,EAASlsB,IAClC,mBAEF,IAAIvkB,EAAM6sC,EAAKntC,MACXoxC,EAAeH,EAAWpL,EAAUkL,EAASnxC,IAAIU,EAAKulC,GACtDwL,EAAcP,EAChBM,EACAJ,EACApD,EACAhK,GAEF,OAAOyN,IAAgBD,EAAeL,EACpCM,IAAgBxL,EAAUkL,EAASL,OAAOpwC,IACzC2wC,EAAWhB,KAAac,GAAUlsB,IAAIvkB,EAAK+wC,GAtsBzBP,CACjBxkC,KACAglC,GAAcd,GACd5C,EACAhK,GAEF,OAAOiN,IAAiBhL,OAAU7mC,EAAY6xC,GAGhD/f,GAAI50B,UAAUq1C,MAAQ,WACpB,OAAkB,IAAdjlC,KAAK8mB,KACA9mB,KAELA,KAAKklC,WACPllC,KAAK8mB,KAAO,EACZ9mB,KAAK+jC,MAAQ,KACb/jC,KAAKigC,YAASvtC,EACdsN,KAAKmlC,WAAY,EACVnlC,MAEF2jC,MAKTnf,GAAI50B,UAAUw1C,MAAQ,WACpB,OAAOC,GAAiBrlC,UAAMtN,EAAWiQ,YAG3C6hB,GAAI50B,UAAU01C,UAAY,SAASC,GAAS,IAAIC,EAAQhO,EAAQ1nC,KAAK6S,UAAW,GAC9E,OAAO0iC,GAAiBrlC,KAAMulC,EAAQC,IAGxChhB,GAAI50B,UAAU61C,QAAU,SAASvB,GAAU,IAAIsB,EAAQhO,EAAQ1nC,KAAK6S,UAAW,GAC7E,OAAO3C,KAAKmkC,SACVD,EACAP,MACA,SAAS5wC,GAAK,MAA0B,mBAAZA,EAAEqyC,MAC5BryC,EAAEqyC,MAAMlpC,MAAMnJ,EAAGyyC,GACjBA,EAAMA,EAAM91C,OAAS,OAI3B80B,GAAI50B,UAAU81C,UAAY,WACxB,OAAOL,GAAiBrlC,KAAM2lC,GAAYhjC,YAG5C6hB,GAAI50B,UAAUg2C,cAAgB,SAASL,GAAS,IAAIC,EAAQhO,EAAQ1nC,KAAK6S,UAAW,GAClF,OAAO0iC,GAAiBrlC,KAAM6lC,GAAeN,GAASC,IAGxDhhB,GAAI50B,UAAUk2C,YAAc,SAAS5B,GAAU,IAAIsB,EAAQhO,EAAQ1nC,KAAK6S,UAAW,GACjF,OAAO3C,KAAKmkC,SACVD,EACAP,MACA,SAAS5wC,GAAK,MAA8B,mBAAhBA,EAAE2yC,UAC5B3yC,EAAE2yC,UAAUxpC,MAAMnJ,EAAGyyC,GACrBA,EAAMA,EAAM91C,OAAS,OAI3B80B,GAAI50B,UAAUm2C,KAAO,SAASC,GAE5B,OAAOC,GAAWC,GAAYlmC,KAAMgmC,KAGtCxhB,GAAI50B,UAAUu2C,OAAS,SAASC,EAAQJ,GAEtC,OAAOC,GAAWC,GAAYlmC,KAAMgmC,EAAYI,KAKlD5hB,GAAI50B,UAAUg0C,cAAgB,SAAS3iC,GACrC,IAAIolC,EAAUrmC,KAAKsmC,YAEnB,OADArlC,EAAGolC,GACIA,EAAQE,aAAeF,EAAQG,cAAcxmC,KAAKklC,WAAallC,MAGxEwkB,GAAI50B,UAAU02C,UAAY,WACxB,OAAOtmC,KAAKklC,UAAYllC,KAAOA,KAAKwmC,cAAc,IAAI3M,IAGxDrV,GAAI50B,UAAU62C,YAAc,WAC1B,OAAOzmC,KAAKwmC,iBAGdhiB,GAAI50B,UAAU22C,WAAa,WACzB,OAAOvmC,KAAKmlC,WAGd3gB,GAAI50B,UAAUkuC,WAAa,SAAS1rC,EAAMwrC,GACxC,OAAO,IAAI8I,GAAY1mC,KAAM5N,EAAMwrC,IAGrCpZ,GAAI50B,UAAUyqC,UAAY,SAASp5B,EAAI28B,GAAU,IAAI+D,EAAS3hC,KACxDuhC,EAAa,EAKjB,OAJAvhC,KAAK+jC,OAAS/jC,KAAK+jC,MAAM4C,SAAQ,SAAS1H,GAExC,OADAsC,IACOtgC,EAAGg+B,EAAM,GAAIA,EAAM,GAAI0C,KAC7B/D,GACI2D,GAGT/c,GAAI50B,UAAU42C,cAAgB,SAASI,GACrC,OAAIA,IAAY5mC,KAAKklC,UACZllC,KAEJ4mC,EAKEC,GAAQ7mC,KAAK8mB,KAAM9mB,KAAK+jC,MAAO6C,EAAS5mC,KAAKigC,SAJlDjgC,KAAKklC,UAAY0B,EACjB5mC,KAAKmlC,WAAY,EACVnlC,OAUbwkB,GAAI0C,MAAQA,GAEZ,IA2ZI4f,GA3ZAhD,GAAkB,wBAElBiD,GAAeviB,GAAI50B,UAUrB,SAASo3C,GAAaJ,EAAS3f,GAC7BjnB,KAAK4mC,QAAUA,EACf5mC,KAAKinB,QAAUA,EAgEjB,SAASggB,GAAkBL,EAASM,EAAQh0B,GAC1ClT,KAAK4mC,QAAUA,EACf5mC,KAAKknC,OAASA,EACdlnC,KAAKkT,MAAQA,EAkEf,SAASi0B,GAAiBP,EAASzsC,EAAO+Y,GACxClT,KAAK4mC,QAAUA,EACf5mC,KAAK7F,MAAQA,EACb6F,KAAKkT,MAAQA,EAuDf,SAASk0B,GAAkBR,EAASS,EAASpgB,GAC3CjnB,KAAK4mC,QAAUA,EACf5mC,KAAKqnC,QAAUA,EACfrnC,KAAKinB,QAAUA,EAyEjB,SAASqgB,GAAUV,EAASS,EAASpI,GACnCj/B,KAAK4mC,QAAUA,EACf5mC,KAAKqnC,QAAUA,EACfrnC,KAAKi/B,MAAQA,EAgEf,SAASyH,GAAYxtC,EAAK9G,EAAMwrC,GAC9B59B,KAAKunC,MAAQn1C,EACb4N,KAAKwnC,SAAW5J,EAChB59B,KAAK6a,OAAS3hB,EAAI6qC,OAAS0D,GAAiBvuC,EAAI6qC,OAsCpD,SAAS2D,GAAiBt1C,EAAM6sC,GAC9B,OAAOxD,EAAcrpC,EAAM6sC,EAAM,GAAIA,EAAM,IAG7C,SAASwI,GAAiBr0B,EAAMvR,GAC9B,MAAO,CACLuR,KAAMA,EACNxX,MAAO,EACP+rC,OAAQ9lC,GAIZ,SAASglC,GAAQ/f,EAAM8gB,EAAMhB,EAASzE,GACpC,IAAIjpC,EAAMvJ,OAAOoE,OAAOgzC,IAMxB,OALA7tC,EAAI4tB,KAAOA,EACX5tB,EAAI6qC,MAAQ6D,EACZ1uC,EAAIgsC,UAAY0B,EAChB1tC,EAAI+mC,OAASkC,EACbjpC,EAAIisC,WAAY,EACTjsC,EAIT,SAASyqC,KACP,OAAOmD,KAAcA,GAAYD,GAAQ,IAG3C,SAAS7C,GAAU9qC,EAAKmB,EAAGgmB,GACzB,IAAIwnB,EACAC,EACJ,GAAK5uC,EAAI6qC,MAMF,CACL,IAAIgE,EAAgBrO,EAAQF,GACxBwO,EAAWtO,EAAQD,GAEvB,GADAoO,EAAUI,GAAW/uC,EAAI6qC,MAAO7qC,EAAIgsC,UAAW,OAAGxyC,EAAW2H,EAAGgmB,EAAG0nB,EAAeC,IAC7EA,EAASt0C,MACZ,OAAOwF,EAET4uC,EAAU5uC,EAAI4tB,MAAQihB,EAAcr0C,MAAQ2sB,IAAMkZ,GAAW,EAAI,EAAI,OAbvD,CACd,GAAIlZ,IAAMkZ,EACR,OAAOrgC,EAET4uC,EAAU,EACVD,EAAU,IAAIb,GAAa9tC,EAAIgsC,UAAW,CAAC,CAAC7qC,EAAGgmB,KAUjD,OAAInnB,EAAIgsC,WACNhsC,EAAI4tB,KAAOghB,EACX5uC,EAAI6qC,MAAQ8D,EACZ3uC,EAAI+mC,YAASvtC,EACbwG,EAAIisC,WAAY,EACTjsC,GAEF2uC,EAAUhB,GAAQiB,EAASD,GAAWlE,KAG/C,SAASsE,GAAW70B,EAAMwzB,EAASz2C,EAAOk3C,EAASrzC,EAAKN,EAAOq0C,EAAeC,GAC5E,OAAK50B,EAQEA,EAAKkxB,OAAOsC,EAASz2C,EAAOk3C,EAASrzC,EAAKN,EAAOq0C,EAAeC,GAPjEt0C,IAAU6lC,EACLnmB,GAETwmB,EAAOoO,GACPpO,EAAOmO,GACA,IAAIT,GAAUV,EAASS,EAAS,CAACrzC,EAAKN,KAKjD,SAASw0C,GAAW90B,GAClB,OAAOA,EAAKnU,cAAgBqoC,IAAal0B,EAAKnU,cAAgBmoC,GAGhE,SAASe,GAAc/0B,EAAMwzB,EAASz2C,EAAOk3C,EAASpI,GACpD,GAAI7rB,EAAKi0B,UAAYA,EACnB,OAAO,IAAID,GAAkBR,EAASS,EAAS,CAACj0B,EAAK6rB,MAAOA,IAG9D,IAGImJ,EAHAC,GAAkB,IAAVl4C,EAAcijB,EAAKi0B,QAAUj0B,EAAKi0B,UAAYl3C,GAASmpC,EAC/DgP,GAAkB,IAAVn4C,EAAck3C,EAAUA,IAAYl3C,GAASmpC,EAOzD,OAAO,IAAI2N,GAAkBL,EAAU,GAAKyB,EAAS,GAAKC,EAJ9CD,IAASC,EACnB,CAACH,GAAc/0B,EAAMwzB,EAASz2C,EAAQipC,EAAOiO,EAASpI,KACpDmJ,EAAU,IAAId,GAAUV,EAASS,EAASpI,GAASoJ,EAAOC,EAAO,CAACl1B,EAAMg1B,GAAW,CAACA,EAASh1B,KAyCnG,SAASiyB,GAAiBnsC,EAAKqsC,EAAQgD,GAErC,IADA,IAAI/C,EAAQ,GACHtL,EAAK,EAAGA,EAAKqO,EAAU74C,OAAQwqC,IAAM,CAC5C,IAAIxmC,EAAQ60C,EAAUrO,GAClBE,EAAOtC,EAAcpkC,GACpBkkC,EAAWlkC,KACd0mC,EAAOA,EAAKlhC,KAAI,SAASmnB,GAAK,OAAO8e,GAAO9e,OAE9CmlB,EAAMx1C,KAAKoqC,GAEb,OAAOoO,GAAwBtvC,EAAKqsC,EAAQC,GAG9C,SAASG,GAAWlB,EAAU/wC,EAAOM,GACnC,OAAOywC,GAAYA,EAASiB,WAAa9N,EAAWlkC,GAClD+wC,EAASiB,UAAUhyC,GACnButB,GAAGwjB,EAAU/wC,GAAS+wC,EAAW/wC,EAGrC,SAASmyC,GAAeN,GACtB,OAAO,SAASd,EAAU/wC,EAAOM,GAC/B,GAAIywC,GAAYA,EAASmB,eAAiBhO,EAAWlkC,GACnD,OAAO+wC,EAASmB,cAAcL,EAAQ7xC,GAExC,IAAI+0C,EAAYlD,EAAOd,EAAU/wC,EAAOM,GACxC,OAAOitB,GAAGwjB,EAAUgE,GAAahE,EAAWgE,GAIhD,SAASD,GAAwBE,EAAYnD,EAAQC,GAEnD,OAAqB,KADrBA,EAAQA,EAAM1sB,QAAO,SAASwK,GAAK,OAAkB,IAAXA,EAAEwD,SAClCp3B,OACDg5C,EAEe,IAApBA,EAAW5hB,MAAe4hB,EAAWxD,WAA8B,IAAjBM,EAAM91C,OAGrDg5C,EAAW9E,eAAc,SAAS8E,GAUvC,IATA,IAAIC,EAAepD,EACjB,SAAS7xC,EAAOM,GACd00C,EAAWpE,OAAOtwC,EAAKulC,GAAS,SAASkL,GACtC,OAAOA,IAAalL,EAAU7lC,EAAQ6xC,EAAOd,EAAU/wC,EAAOM,OAGnE,SAASN,EAAOM,GACd00C,EAAWnwB,IAAIvkB,EAAKN,IAEfwmC,EAAK,EAAGA,EAAKsL,EAAM91C,OAAQwqC,IAClCsL,EAAMtL,GAAI9/B,QAAQuuC,MAbbD,EAAWzpC,YAAYumC,EAAM,IA2CxC,SAASoD,GAAStlB,GAMhB,OAHAA,GADAA,GAAS,WADTA,GAAUA,GAAK,EAAK,cACKA,GAAK,EAAK,aACzBA,GAAK,GAAM,UACrBA,GAASA,GAAK,EAEH,KADXA,GAASA,GAAK,IAIhB,SAAS2gB,GAAM1b,EAAOsgB,EAAKhqB,EAAKiqB,GAC9B,IAAIC,EAAWD,EAAUvgB,EAAQuR,EAAQvR,GAEzC,OADAwgB,EAASF,GAAOhqB,EACTkqB,EAvlBThC,GAAajD,KAAmB,EAChCiD,GAAmB,OAAIA,GAAa3C,OACpC2C,GAAaiC,SAAWjC,GAAa1C,SAYnC2C,GAAap3C,UAAU0D,IAAM,SAASnD,EAAOk3C,EAASrzC,EAAKstC,GAEzD,IADA,IAAIra,EAAUjnB,KAAKinB,QACViT,EAAK,EAAGhgB,EAAM+M,EAAQv3B,OAAQwqC,EAAKhgB,EAAKggB,IAC/C,GAAIjZ,GAAGjtB,EAAKizB,EAAQiT,GAAI,IACtB,OAAOjT,EAAQiT,GAAI,GAGvB,OAAOoH,GAGT0F,GAAap3C,UAAU00C,OAAS,SAASsC,EAASz2C,EAAOk3C,EAASrzC,EAAKN,EAAOq0C,EAAeC,GAK3F,IAJA,IAAIiB,EAAUv1C,IAAU6lC,EAEpBtS,EAAUjnB,KAAKinB,QACf4hB,EAAM,EACD3uB,EAAM+M,EAAQv3B,OAAQm5C,EAAM3uB,IAC/B+G,GAAGjtB,EAAKizB,EAAQ4hB,GAAK,IADeA,KAK1C,IAAIK,EAASL,EAAM3uB,EAEnB,GAAIgvB,EAASjiB,EAAQ4hB,GAAK,KAAOn1C,EAAQu1C,EACvC,OAAOjpC,KAMT,GAHA45B,EAAOoO,IACNiB,IAAYC,IAAWtP,EAAOmO,IAE3BkB,GAA8B,IAAnBhiB,EAAQv3B,OAAvB,CAIA,IAAKw5C,IAAWD,GAAWhiB,EAAQv3B,QAAUy5C,GAC3C,OAyaN,SAAqBvC,EAAS3f,EAASjzB,EAAKN,GACrCkzC,IACHA,EAAU,IAAI/M,GAGhB,IADA,IAAIzmB,EAAO,IAAIk0B,GAAUV,EAASzE,GAAKnuC,GAAM,CAACA,EAAKN,IAC1CwmC,EAAK,EAAGA,EAAKjT,EAAQv3B,OAAQwqC,IAAM,CAC1C,IAAI+E,EAAQhY,EAAQiT,GACpB9mB,EAAOA,EAAKkxB,OAAOsC,EAAS,OAAGl0C,EAAWusC,EAAM,GAAIA,EAAM,IAE5D,OAAO7rB,EAlbIg2B,CAAYxC,EAAS3f,EAASjzB,EAAKN,GAG5C,IAAI21C,EAAazC,GAAWA,IAAY5mC,KAAK4mC,QACzC0C,EAAaD,EAAapiB,EAAU6S,EAAQ7S,GAYhD,OAVIiiB,EACED,EACFJ,IAAQ3uB,EAAM,EAAIovB,EAAW5jC,MAAS4jC,EAAWT,GAAOS,EAAW5jC,MAEnE4jC,EAAWT,GAAO,CAAC70C,EAAKN,GAG1B41C,EAAWt5C,KAAK,CAACgE,EAAKN,IAGpB21C,GACFrpC,KAAKinB,QAAUqiB,EACRtpC,MAGF,IAAIgnC,GAAaJ,EAAS0C,KAYnCrC,GAAkBr3C,UAAU0D,IAAM,SAASnD,EAAOk3C,EAASrzC,EAAKstC,QAC9C5uC,IAAZ20C,IACFA,EAAUlF,GAAKnuC,IAEjB,IAAIu1C,EAAO,KAAiB,IAAVp5C,EAAck3C,EAAUA,IAAYl3C,GAASmpC,GAC3D4N,EAASlnC,KAAKknC,OAClB,OAA0B,IAAlBA,EAASqC,GAAajI,EAC5BthC,KAAKkT,MAAM01B,GAAS1B,EAAUqC,EAAM,IAAKj2C,IAAInD,EAAQipC,EAAOiO,EAASrzC,EAAKstC,IAG9E2F,GAAkBr3C,UAAU00C,OAAS,SAASsC,EAASz2C,EAAOk3C,EAASrzC,EAAKN,EAAOq0C,EAAeC,QAChFt1C,IAAZ20C,IACFA,EAAUlF,GAAKnuC,IAEjB,IAAIw1C,GAAyB,IAAVr5C,EAAck3C,EAAUA,IAAYl3C,GAASmpC,EAC5DiQ,EAAM,GAAKC,EACXtC,EAASlnC,KAAKknC,OACdgC,EAA4B,IAAlBhC,EAASqC,GAEvB,IAAKL,GAAUx1C,IAAU6lC,EACvB,OAAOv5B,KAGT,IAAI6oC,EAAMD,GAAS1B,EAAUqC,EAAM,GAC/Br2B,EAAQlT,KAAKkT,MACbE,EAAO81B,EAASh2B,EAAM21B,QAAOn2C,EAC7B01C,EAAUH,GAAW70B,EAAMwzB,EAASz2C,EAAQipC,EAAOiO,EAASrzC,EAAKN,EAAOq0C,EAAeC,GAE3F,GAAII,IAAYh1B,EACd,OAAOpT,KAGT,IAAKkpC,GAAUd,GAAWl1B,EAAMxjB,QAAU+5C,GACxC,OAiYN,SAAqB7C,EAAS1zB,EAAOg0B,EAAQwC,EAAWt2B,GAGtD,IAFA,IAAIjZ,EAAQ,EACRwvC,EAAgB,IAAIhzC,MAAM0iC,GACrBa,EAAK,EAAc,IAAXgN,EAAchN,IAAMgN,KAAY,EAC/CyC,EAAczP,GAAe,EAATgN,EAAah0B,EAAM/Y,UAAWzH,EAGpD,OADAi3C,EAAcD,GAAat2B,EACpB,IAAI+zB,GAAiBP,EAASzsC,EAAQ,EAAGwvC,GAxYrCC,CAAYhD,EAAS1zB,EAAOg0B,EAAQsC,EAAapB,GAG1D,GAAIc,IAAWd,GAA4B,IAAjBl1B,EAAMxjB,QAAgBw4C,GAAWh1B,EAAY,EAAN21B,IAC/D,OAAO31B,EAAY,EAAN21B,GAGf,GAAIK,GAAUd,GAA4B,IAAjBl1B,EAAMxjB,QAAgBw4C,GAAWE,GACxD,OAAOA,EAGT,IAAIiB,EAAazC,GAAWA,IAAY5mC,KAAK4mC,QACzCiD,EAAYX,EAASd,EAAUlB,EAASA,EAASqC,EAAMrC,EAASqC,EAChEO,EAAWZ,EAASd,EACtBnE,GAAM/wB,EAAO21B,EAAKT,EAASiB,GA6ejC,SAAmB9gB,EAAOsgB,EAAKC,GAC7B,IAAIiB,EAASxhB,EAAM74B,OAAS,EAC5B,GAAIo5C,GAAWD,IAAQkB,EAErB,OADAxhB,EAAM7iB,MACC6iB,EAIT,IAFA,IAAIwgB,EAAW,IAAIpyC,MAAMozC,GACrBC,EAAQ,EACH9P,EAAK,EAAGA,EAAK6P,EAAQ7P,IACxBA,IAAO2O,IACTmB,EAAQ,GAEVjB,EAAS7O,GAAM3R,EAAM2R,EAAK8P,GAE5B,OAAOjB,EA1fHkB,CAAU/2B,EAAO21B,EAAKQ,GAyd5B,SAAkB9gB,EAAOsgB,EAAKhqB,EAAKiqB,GACjC,IAAIiB,EAASxhB,EAAM74B,OAAS,EAC5B,GAAIo5C,GAAWD,EAAM,IAAMkB,EAEzB,OADAxhB,EAAMsgB,GAAOhqB,EACN0J,EAIT,IAFA,IAAIwgB,EAAW,IAAIpyC,MAAMozC,GACrBC,EAAQ,EACH9P,EAAK,EAAGA,EAAK6P,EAAQ7P,IACxBA,IAAO2O,GACTE,EAAS7O,GAAMrb,EACfmrB,GAAS,GAETjB,EAAS7O,GAAM3R,EAAM2R,EAAK8P,GAG9B,OAAOjB,EAxeHmB,CAASh3B,EAAO21B,EAAKT,EAASiB,GAEhC,OAAIA,GACFrpC,KAAKknC,OAAS2C,EACd7pC,KAAKkT,MAAQ42B,EACN9pC,MAGF,IAAIinC,GAAkBL,EAASiD,EAAWC,IAYnD3C,GAAiBv3C,UAAU0D,IAAM,SAASnD,EAAOk3C,EAASrzC,EAAKstC,QAC7C5uC,IAAZ20C,IACFA,EAAUlF,GAAKnuC,IAEjB,IAAI60C,GAAiB,IAAV14C,EAAck3C,EAAUA,IAAYl3C,GAASmpC,EACpDlmB,EAAOpT,KAAKkT,MAAM21B,GACtB,OAAOz1B,EAAOA,EAAK9f,IAAInD,EAAQipC,EAAOiO,EAASrzC,EAAKstC,GAAeA,GAGrE6F,GAAiBv3C,UAAU00C,OAAS,SAASsC,EAASz2C,EAAOk3C,EAASrzC,EAAKN,EAAOq0C,EAAeC,QAC/Et1C,IAAZ20C,IACFA,EAAUlF,GAAKnuC,IAEjB,IAAI60C,GAAiB,IAAV14C,EAAck3C,EAAUA,IAAYl3C,GAASmpC,EACpD2P,EAAUv1C,IAAU6lC,EACpBrmB,EAAQlT,KAAKkT,MACbE,EAAOF,EAAM21B,GAEjB,GAAII,IAAY71B,EACd,OAAOpT,KAGT,IAAIooC,EAAUH,GAAW70B,EAAMwzB,EAASz2C,EAAQipC,EAAOiO,EAASrzC,EAAKN,EAAOq0C,EAAeC,GAC3F,GAAII,IAAYh1B,EACd,OAAOpT,KAGT,IAAImqC,EAAWnqC,KAAK7F,MACpB,GAAKiZ,GAEE,IAAKg1B,KACV+B,EACeC,GACb,OA8SR,SAAmBxD,EAAS1zB,EAAO/Y,EAAOkwC,GAIxC,IAHA,IAAInD,EAAS,EACToD,EAAW,EACXC,EAAc,IAAI5zC,MAAMwD,GACnB+/B,EAAK,EAAGqP,EAAM,EAAGrvB,EAAMhH,EAAMxjB,OAAQwqC,EAAKhgB,EAAKggB,IAAMqP,IAAQ,EAAG,CACvE,IAAIn2B,EAAOF,EAAMgnB,QACJxnC,IAAT0gB,GAAsB8mB,IAAOmQ,IAC/BnD,GAAUqC,EACVgB,EAAYD,KAAcl3B,GAG9B,OAAO,IAAI6zB,GAAkBL,EAASM,EAAQqD,GAzTjCC,CAAU5D,EAAS1zB,EAAOi3B,EAAUtB,QAJ7CsB,IAQF,IAAId,EAAazC,GAAWA,IAAY5mC,KAAK4mC,QACzCkD,EAAW7F,GAAM/wB,EAAO21B,EAAKT,EAASiB,GAE1C,OAAIA,GACFrpC,KAAK7F,MAAQgwC,EACbnqC,KAAKkT,MAAQ42B,EACN9pC,MAGF,IAAImnC,GAAiBP,EAASuD,EAAUL,IAYjD1C,GAAkBx3C,UAAU0D,IAAM,SAASnD,EAAOk3C,EAASrzC,EAAKstC,GAE9D,IADA,IAAIra,EAAUjnB,KAAKinB,QACViT,EAAK,EAAGhgB,EAAM+M,EAAQv3B,OAAQwqC,EAAKhgB,EAAKggB,IAC/C,GAAIjZ,GAAGjtB,EAAKizB,EAAQiT,GAAI,IACtB,OAAOjT,EAAQiT,GAAI,GAGvB,OAAOoH,GAGT8F,GAAkBx3C,UAAU00C,OAAS,SAASsC,EAASz2C,EAAOk3C,EAASrzC,EAAKN,EAAOq0C,EAAeC,QAChFt1C,IAAZ20C,IACFA,EAAUlF,GAAKnuC,IAGjB,IAAIi1C,EAAUv1C,IAAU6lC,EAExB,GAAI8N,IAAYrnC,KAAKqnC,QACnB,OAAI4B,EACKjpC,MAET45B,EAAOoO,GACPpO,EAAOmO,GACAI,GAAcnoC,KAAM4mC,EAASz2C,EAAOk3C,EAAS,CAACrzC,EAAKN,KAK5D,IAFA,IAAIuzB,EAAUjnB,KAAKinB,QACf4hB,EAAM,EACD3uB,EAAM+M,EAAQv3B,OAAQm5C,EAAM3uB,IAC/B+G,GAAGjtB,EAAKizB,EAAQ4hB,GAAK,IADeA,KAK1C,IAAIK,EAASL,EAAM3uB,EAEnB,GAAIgvB,EAASjiB,EAAQ4hB,GAAK,KAAOn1C,EAAQu1C,EACvC,OAAOjpC,KAMT,GAHA45B,EAAOoO,IACNiB,IAAYC,IAAWtP,EAAOmO,GAE3BkB,GAAmB,IAAR/uB,EACb,OAAO,IAAIotB,GAAUV,EAAS5mC,KAAKqnC,QAASpgB,EAAc,EAAN4hB,IAGtD,IAAIQ,EAAazC,GAAWA,IAAY5mC,KAAK4mC,QACzC0C,EAAaD,EAAapiB,EAAU6S,EAAQ7S,GAYhD,OAVIiiB,EACED,EACFJ,IAAQ3uB,EAAM,EAAIovB,EAAW5jC,MAAS4jC,EAAWT,GAAOS,EAAW5jC,MAEnE4jC,EAAWT,GAAO,CAAC70C,EAAKN,GAG1B41C,EAAWt5C,KAAK,CAACgE,EAAKN,IAGpB21C,GACFrpC,KAAKinB,QAAUqiB,EACRtpC,MAGF,IAAIonC,GAAkBR,EAAS5mC,KAAKqnC,QAASiC,IAYtDhC,GAAU13C,UAAU0D,IAAM,SAASnD,EAAOk3C,EAASrzC,EAAKstC,GACtD,OAAOrgB,GAAGjtB,EAAKgM,KAAKi/B,MAAM,IAAMj/B,KAAKi/B,MAAM,GAAKqC,GAGlDgG,GAAU13C,UAAU00C,OAAS,SAASsC,EAASz2C,EAAOk3C,EAASrzC,EAAKN,EAAOq0C,EAAeC,GACxF,IAAIiB,EAAUv1C,IAAU6lC,EACpBkR,EAAWxpB,GAAGjtB,EAAKgM,KAAKi/B,MAAM,IAClC,OAAIwL,EAAW/2C,IAAUsM,KAAKi/B,MAAM,GAAKgK,GAChCjpC,MAGT45B,EAAOoO,GAEHiB,OACFrP,EAAOmO,GAIL0C,EACE7D,GAAWA,IAAY5mC,KAAK4mC,SAC9B5mC,KAAKi/B,MAAM,GAAKvrC,EACTsM,MAEF,IAAIsnC,GAAUV,EAAS5mC,KAAKqnC,QAAS,CAACrzC,EAAKN,KAGpDkmC,EAAOmO,GACAI,GAAcnoC,KAAM4mC,EAASz2C,EAAOgyC,GAAKnuC,GAAM,CAACA,EAAKN,OAOhEszC,GAAap3C,UAAU+2C,QACvBS,GAAkBx3C,UAAU+2C,QAAU,SAAU1lC,EAAI28B,GAElD,IADA,IAAI3W,EAAUjnB,KAAKinB,QACViT,EAAK,EAAG8E,EAAW/X,EAAQv3B,OAAS,EAAGwqC,GAAM8E,EAAU9E,IAC9D,IAAkD,IAA9Cj5B,EAAGgmB,EAAQ2W,EAAUoB,EAAW9E,EAAKA,IACvC,OAAO,GAKb+M,GAAkBr3C,UAAU+2C,QAC5BQ,GAAiBv3C,UAAU+2C,QAAU,SAAU1lC,EAAI28B,GAEjD,IADA,IAAI1qB,EAAQlT,KAAKkT,MACRgnB,EAAK,EAAG8E,EAAW9rB,EAAMxjB,OAAS,EAAGwqC,GAAM8E,EAAU9E,IAAM,CAClE,IAAI9mB,EAAOF,EAAM0qB,EAAUoB,EAAW9E,EAAKA,GAC3C,GAAI9mB,IAAsC,IAA9BA,EAAKuzB,QAAQ1lC,EAAI28B,GAC3B,OAAO,IAKb0J,GAAU13C,UAAU+2C,QAAU,SAAU1lC,EAAI28B,GAC1C,OAAO38B,EAAGjB,KAAKi/B,QAGjBxH,EAAYiP,GAAalL,GAQvBkL,GAAY92C,UAAU8N,KAAO,WAG3B,IAFA,IAAItL,EAAO4N,KAAKunC,MACZ/kC,EAAQxC,KAAK6a,OACVrY,GAAO,CACZ,IAEIw8B,EAFA5rB,EAAO5Q,EAAM4Q,KACbxX,EAAQ4G,EAAM5G,QAElB,GAAIwX,EAAK6rB,OACP,GAAc,IAAVrjC,EACF,OAAO8rC,GAAiBt1C,EAAMghB,EAAK6rB,YAEhC,GAAI7rB,EAAK6T,SAEd,GAAIrrB,IADJojC,EAAW5rB,EAAK6T,QAAQv3B,OAAS,GAE/B,OAAOg4C,GAAiBt1C,EAAMghB,EAAK6T,QAAQjnB,KAAKwnC,SAAWxI,EAAWpjC,EAAQA,SAIhF,GAAIA,IADJojC,EAAW5rB,EAAKF,MAAMxjB,OAAS,GACR,CACrB,IAAIg7C,EAAUt3B,EAAKF,MAAMlT,KAAKwnC,SAAWxI,EAAWpjC,EAAQA,GAC5D,GAAI8uC,EAAS,CACX,GAAIA,EAAQzL,MACV,OAAOyI,GAAiBt1C,EAAMs4C,EAAQzL,OAExCz8B,EAAQxC,KAAK6a,OAAS4sB,GAAiBiD,EAASloC,GAElD,SAGJA,EAAQxC,KAAK6a,OAAS7a,KAAK6a,OAAO8sB,OAEpC,MAniDK,CAAEj0C,WAAOhB,EAAWiL,MAAM,IAmyDnC,IAAIwrC,GAAqB9P,EAAO,EAC5BoQ,GAA0BpQ,EAAO,EACjC+Q,GAA0B/Q,EAAO,EAMnC,SAASsR,GAAKj3C,GACZ,IAAIk3C,EAAQC,KACZ,GAAIn3C,QACF,OAAOk3C,EAET,GAAIE,GAAOp3C,GACT,OAAOA,EAET,IAAI0mC,EAAOnC,EAAgBvkC,GACvBozB,EAAOsT,EAAKtT,KAChB,OAAa,IAATA,EACK8jB,GAETlH,GAAkB5c,GACdA,EAAO,GAAKA,EAAOuS,EACd0R,GAAS,EAAGjkB,EAAMsS,EAAO,KAAM,IAAI4R,GAAM5Q,EAAKuD,YAEhDiN,EAAMhH,eAAc,SAASqH,GAClCA,EAAKC,QAAQpkB,GACbsT,EAAKhgC,SAAQ,SAASimB,EAAG7wB,GAAK,OAAOy7C,EAAK1yB,IAAI/oB,EAAG6wB,UA4JvD,SAASyqB,GAAOK,GACd,SAAUA,IAAaA,EAAUC,KApLnC3T,EAAYkT,GAAMvJ,IA2BhBuJ,GAAKrN,GAAK,WACR,OAAOt9B,KAAK2C,YAGdgoC,GAAK/6C,UAAU4V,SAAW,WACxB,OAAOxF,KAAKu9B,WAAW,SAAU,MAKnCoN,GAAK/6C,UAAU0D,IAAM,SAASsI,EAAO0lC,GAEnC,IADA1lC,EAAQ2+B,EAAUv6B,KAAMpE,KACX,GAAKA,EAAQoE,KAAK8mB,KAAM,CAEnC,IAAI1T,EAAOi4B,GAAYrrC,KADvBpE,GAASoE,KAAKsrC,SAEd,OAAOl4B,GAAQA,EAAKmV,MAAM3sB,EAAQ09B,GAEpC,OAAOgI,GAKTqJ,GAAK/6C,UAAU2oB,IAAM,SAAS3c,EAAOlI,GACnC,OA6SJ,SAAoBu3C,EAAMrvC,EAAOlI,GAG/B,IAFAkI,EAAQ2+B,EAAU0Q,EAAMrvC,KAEVA,EACZ,OAAOqvC,EAGT,GAAIrvC,GAASqvC,EAAKnkB,MAAQlrB,EAAQ,EAChC,OAAOqvC,EAAKrH,eAAc,SAASqH,GACjCrvC,EAAQ,EACN2vC,GAAcN,EAAMrvC,GAAO2c,IAAI,EAAG7kB,GAClC63C,GAAcN,EAAM,EAAGrvC,EAAQ,GAAG2c,IAAI3c,EAAOlI,MAInDkI,GAASqvC,EAAKK,QAEd,IAAIE,EAAUP,EAAKQ,MACf5D,EAAUoD,EAAKlH,MACfiE,EAAWtO,EAAQD,GAOvB,OANI79B,GAAS8vC,GAAcT,EAAKxjB,WAC9B+jB,EAAUG,GAAYH,EAASP,EAAK/F,UAAW,EAAGtpC,EAAOlI,EAAOs0C,GAEhEH,EAAU8D,GAAY9D,EAASoD,EAAK/F,UAAW+F,EAAKW,OAAQhwC,EAAOlI,EAAOs0C,GAGvEA,EAASt0C,MAIVu3C,EAAK/F,WACP+F,EAAKlH,MAAQ8D,EACboD,EAAKQ,MAAQD,EACbP,EAAKhL,YAASvtC,EACdu4C,EAAK9F,WAAY,EACV8F,GAEFF,GAASE,EAAKK,QAASL,EAAKxjB,UAAWwjB,EAAKW,OAAQ/D,EAAS2D,GAV3DP,EAxUAY,CAAW7rC,KAAMpE,EAAOlI,IAGjCi3C,GAAK/6C,UAAUw0C,OAAS,SAASxoC,GAC/B,OAAQoE,KAAKwY,IAAI5c,GACL,IAAVA,EAAcoE,KAAK7P,QACnByL,IAAUoE,KAAK8mB,KAAO,EAAI9mB,KAAK0F,MAC/B1F,KAAK3D,OAAOT,EAAO,GAHKoE,MAM5B2qC,GAAK/6C,UAAUk8C,OAAS,SAASlwC,EAAOlI,GACtC,OAAOsM,KAAK3D,OAAOT,EAAO,EAAGlI,IAG/Bi3C,GAAK/6C,UAAUq1C,MAAQ,WACrB,OAAkB,IAAdjlC,KAAK8mB,KACA9mB,KAELA,KAAKklC,WACPllC,KAAK8mB,KAAO9mB,KAAKsrC,QAAUtrC,KAAKynB,UAAY,EAC5CznB,KAAK4rC,OAASxS,EACdp5B,KAAK+jC,MAAQ/jC,KAAKyrC,MAAQ,KAC1BzrC,KAAKigC,YAASvtC,EACdsN,KAAKmlC,WAAY,EACVnlC,MAEF6qC,MAGTF,GAAK/6C,UAAUI,KAAO,WACpB,IAAIytB,EAAS9a,UACTopC,EAAU/rC,KAAK8mB,KACnB,OAAO9mB,KAAK4jC,eAAc,SAASqH,GACjCM,GAAcN,EAAM,EAAGc,EAAUtuB,EAAO/tB,QACxC,IAAK,IAAIwqC,EAAK,EAAGA,EAAKzc,EAAO/tB,OAAQwqC,IACnC+Q,EAAK1yB,IAAIwzB,EAAU7R,EAAIzc,EAAOyc,QAKpCyQ,GAAK/6C,UAAU8V,IAAM,WACnB,OAAO6lC,GAAcvrC,KAAM,GAAI,IAGjC2qC,GAAK/6C,UAAUo8C,QAAU,WACvB,IAAIvuB,EAAS9a,UACb,OAAO3C,KAAK4jC,eAAc,SAASqH,GACjCM,GAAcN,GAAOxtB,EAAO/tB,QAC5B,IAAK,IAAIwqC,EAAK,EAAGA,EAAKzc,EAAO/tB,OAAQwqC,IACnC+Q,EAAK1yB,IAAI2hB,EAAIzc,EAAOyc,QAK1ByQ,GAAK/6C,UAAUO,MAAQ,WACrB,OAAOo7C,GAAcvrC,KAAM,IAK7B2qC,GAAK/6C,UAAUw1C,MAAQ,WACrB,OAAO6G,GAAkBjsC,UAAMtN,EAAWiQ,YAG5CgoC,GAAK/6C,UAAU01C,UAAY,SAASC,GAAS,IAAIC,EAAQhO,EAAQ1nC,KAAK6S,UAAW,GAC/E,OAAOspC,GAAkBjsC,KAAMulC,EAAQC,IAGzCmF,GAAK/6C,UAAU81C,UAAY,WACzB,OAAOuG,GAAkBjsC,KAAM2lC,GAAYhjC,YAG7CgoC,GAAK/6C,UAAUg2C,cAAgB,SAASL,GAAS,IAAIC,EAAQhO,EAAQ1nC,KAAK6S,UAAW,GACnF,OAAOspC,GAAkBjsC,KAAM6lC,GAAeN,GAASC,IAGzDmF,GAAK/6C,UAAUs7C,QAAU,SAASpkB,GAChC,OAAOykB,GAAcvrC,KAAM,EAAG8mB,IAKhC6jB,GAAK/6C,UAAU+E,MAAQ,SAASgmC,EAAOC,GACrC,IAAI9T,EAAO9mB,KAAK8mB,KAChB,OAAI4T,EAAWC,EAAOC,EAAK9T,GAClB9mB,KAEFurC,GACLvrC,KACA66B,EAAaF,EAAO7T,GACpBiU,EAAWH,EAAK9T,KAIpB6jB,GAAK/6C,UAAUkuC,WAAa,SAAS1rC,EAAMwrC,GACzC,IAAIhiC,EAAQ,EACR6hB,EAASyuB,GAAYlsC,KAAM49B,GAC/B,OAAO,IAAIpC,GAAS,WAClB,IAAI9nC,EAAQ+pB,IACZ,OAAO/pB,IAAUy4C,GA57Dd,CAAEz4C,WAAOhB,EAAWiL,MAAM,GA87D3B89B,EAAcrpC,EAAMwJ,IAASlI,OAInCi3C,GAAK/6C,UAAUyqC,UAAY,SAASp5B,EAAI28B,GAItC,IAHA,IAEIlqC,EAFAkI,EAAQ,EACR6hB,EAASyuB,GAAYlsC,KAAM49B,IAEvBlqC,EAAQ+pB,OAAc0uB,KACK,IAA7BlrC,EAAGvN,EAAOkI,IAASoE,QAIzB,OAAOpE,GAGT+uC,GAAK/6C,UAAU42C,cAAgB,SAASI,GACtC,OAAIA,IAAY5mC,KAAKklC,UACZllC,KAEJ4mC,EAIEmE,GAAS/qC,KAAKsrC,QAAStrC,KAAKynB,UAAWznB,KAAK4rC,OAAQ5rC,KAAK+jC,MAAO/jC,KAAKyrC,MAAO7E,EAAS5mC,KAAKigC,SAH/FjgC,KAAKklC,UAAY0B,EACV5mC,OAUb2qC,GAAKG,OAASA,GAEd,IAAIM,GAAmB,yBAEnBgB,GAAgBzB,GAAK/6C,UAiBvB,SAASo7C,GAAMziB,EAAOqe,GACpB5mC,KAAKuoB,MAAQA,EACbvoB,KAAK4mC,QAAUA,EAlBnBwF,GAAchB,KAAoB,EAClCgB,GAAoB,OAAIA,GAAchI,OACtCgI,GAAcnI,MAAQ8C,GAAa9C,MACnCmI,GAAc/H,SACd+H,GAAcpD,SAAWjC,GAAaiC,SACtCoD,GAAc9H,OAASyC,GAAazC,OACpC8H,GAAcjI,SAAW4C,GAAa5C,SACtCiI,GAAc3G,QAAUsB,GAAatB,QACrC2G,GAActG,YAAciB,GAAajB,YACzCsG,GAAcxI,cAAgBmD,GAAanD,cAC3CwI,GAAc9F,UAAYS,GAAaT,UACvC8F,GAAc3F,YAAcM,GAAaN,YACzC2F,GAAc7F,WAAaQ,GAAaR,WAWtCyE,GAAMp7C,UAAUy8C,aAAe,SAASzF,EAASrvB,EAAO3b,GACtD,GAAIA,IAAU2b,EAAQ,GAAKA,EAAmC,IAAtBvX,KAAKuoB,MAAM74B,OACjD,OAAOsQ,KAET,IAAIssC,EAAe1wC,IAAU2b,EAAS+hB,EACtC,GAAIgT,GAAetsC,KAAKuoB,MAAM74B,OAC5B,OAAO,IAAIs7C,GAAM,GAAIpE,GAEvB,IACI2F,EADAC,EAAgC,IAAhBF,EAEpB,GAAI/0B,EAAQ,EAAG,CACb,IAAIk1B,EAAWzsC,KAAKuoB,MAAM+jB,GAE1B,IADAC,EAAWE,GAAYA,EAASJ,aAAazF,EAASrvB,EAAQ6hB,EAAOx9B,MACpD6wC,GAAYD,EAC3B,OAAOxsC,KAGX,GAAIwsC,IAAkBD,EACpB,OAAOvsC,KAET,IAAI0sC,EAAWC,GAAc3sC,KAAM4mC,GACnC,IAAK4F,EACH,IAAK,IAAItS,EAAK,EAAGA,EAAKoS,EAAapS,IACjCwS,EAASnkB,MAAM2R,QAAMxnC,EAMzB,OAHI65C,IACFG,EAASnkB,MAAM+jB,GAAeC,GAEzBG,GAGT1B,GAAMp7C,UAAUg9C,YAAc,SAAShG,EAASrvB,EAAO3b,GACrD,GAAIA,KAAW2b,EAAQ,GAAKA,EAAQ,IAA4B,IAAtBvX,KAAKuoB,MAAM74B,OACnD,OAAOsQ,KAET,IAKIusC,EALAM,EAAcjxC,EAAQ,IAAO2b,EAAS+hB,EAC1C,GAAIuT,GAAa7sC,KAAKuoB,MAAM74B,OAC1B,OAAOsQ,KAIT,GAAIuX,EAAQ,EAAG,CACb,IAAIk1B,EAAWzsC,KAAKuoB,MAAMskB,GAE1B,IADAN,EAAWE,GAAYA,EAASG,YAAYhG,EAASrvB,EAAQ6hB,EAAOx9B,MACnD6wC,GAAYI,IAAc7sC,KAAKuoB,MAAM74B,OAAS,EAC7D,OAAOsQ,KAIX,IAAI0sC,EAAWC,GAAc3sC,KAAM4mC,GAKnC,OAJA8F,EAASnkB,MAAMlsB,OAAOwwC,EAAY,GAC9BN,IACFG,EAASnkB,MAAMskB,GAAaN,GAEvBG,GAKX,IA2EII,GAiWAC,GA5aAZ,GAAO,GAEX,SAASD,GAAYjB,EAAMrN,GACzB,IAAIoP,EAAO/B,EAAKK,QACZ2B,EAAQhC,EAAKxjB,UACbylB,EAAUxB,GAAcuB,GACxB9wC,EAAO8uC,EAAKQ,MAEhB,OAAO0B,EAAkBlC,EAAKlH,MAAOkH,EAAKW,OAAQ,GAElD,SAASuB,EAAkB/5B,EAAMmE,EAAOyiB,GACtC,OAAiB,IAAVziB,EAKT,SAAqBnE,EAAM4mB,GACzB,IAAIzR,EAAQyR,IAAWkT,EAAU/wC,GAAQA,EAAKosB,MAAQnV,GAAQA,EAAKmV,MAC/DwI,EAAOiJ,EAASgT,EAAO,EAAIA,EAAOhT,EAClChJ,EAAKic,EAAQjT,EAIjB,OAHIhJ,EAAKqI,IACPrI,EAAKqI,GAEA,WACL,GAAItI,IAASC,EACX,OAAOmb,GAET,IAAItD,EAAMjL,IAAY5M,EAAKD,IAC3B,OAAOxI,GAASA,EAAMsgB,IAhBtBuE,CAAYh6B,EAAM4mB,GAoBtB,SAAqB5mB,EAAMmE,EAAOyiB,GAChC,IAAIvc,EACA8K,EAAQnV,GAAQA,EAAKmV,MACrBwI,EAAOiJ,EAASgT,EAAO,EAAKA,EAAOhT,GAAWziB,EAC9CyZ,EAAmC,GAA5Bic,EAAQjT,GAAWziB,GAI9B,OAHIyZ,EAAKqI,IACPrI,EAAKqI,GAEA,WACL,OAAG,CACD,GAAI5b,EAAQ,CACV,IAAI/pB,EAAQ+pB,IACZ,GAAI/pB,IAAUy4C,GACZ,OAAOz4C,EAET+pB,EAAS,KAEX,GAAIsT,IAASC,EACX,OAAOmb,GAET,IAAItD,EAAMjL,IAAY5M,EAAKD,IAC3BtT,EAAS0vB,EACP5kB,GAASA,EAAMsgB,GAAMtxB,EAAQ6hB,EAAOY,GAAU6O,GAAOtxB,MAzCzD81B,CAAYj6B,EAAMmE,EAAOyiB,IAgD/B,SAAS+Q,GAASuC,EAAQ9lB,EAAUjQ,EAAOqwB,EAAMzrC,EAAMyqC,EAASzE,GAC9D,IAAI8I,EAAOt7C,OAAOoE,OAAOq4C,IAUzB,OATAnB,EAAKnkB,KAAOU,EAAW8lB,EACvBrC,EAAKK,QAAUgC,EACfrC,EAAKxjB,UAAYD,EACjByjB,EAAKW,OAASr0B,EACd0zB,EAAKlH,MAAQ6D,EACbqD,EAAKQ,MAAQtvC,EACb8uC,EAAK/F,UAAY0B,EACjBqE,EAAKhL,OAASkC,EACd8I,EAAK9F,WAAY,EACV8F,EAIT,SAASJ,KACP,OAAOiC,KAAeA,GAAa/B,GAAS,EAAG,EAAG3R,IA2CpD,SAASuS,GAAYv4B,EAAMwzB,EAASrvB,EAAO3b,EAAOlI,EAAOs0C,GACvD,IAMII,EANAS,EAAOjtC,IAAU2b,EAAS+hB,EAC1BiU,EAAUn6B,GAAQy1B,EAAMz1B,EAAKmV,MAAM74B,OACvC,IAAK69C,QAAqB76C,IAAVgB,EACd,OAAO0f,EAKT,GAAImE,EAAQ,EAAG,CACb,IAAIi2B,EAAYp6B,GAAQA,EAAKmV,MAAMsgB,GAC/B4E,EAAe9B,GAAY6B,EAAW5G,EAASrvB,EAAQ6hB,EAAOx9B,EAAOlI,EAAOs0C,GAChF,OAAIyF,IAAiBD,EACZp6B,IAETg1B,EAAUuE,GAAcv5B,EAAMwzB,IACtBre,MAAMsgB,GAAO4E,EACdrF,GAGT,OAAImF,GAAWn6B,EAAKmV,MAAMsgB,KAASn1C,EAC1B0f,GAGTwmB,EAAOoO,GAEPI,EAAUuE,GAAcv5B,EAAMwzB,QAChBl0C,IAAVgB,GAAuBm1C,IAAQT,EAAQ7f,MAAM74B,OAAS,EACxD04C,EAAQ7f,MAAM7iB,MAEd0iC,EAAQ7f,MAAMsgB,GAAOn1C,EAEhB00C,GAGT,SAASuE,GAAcv5B,EAAMwzB,GAC3B,OAAIA,GAAWxzB,GAAQwzB,IAAYxzB,EAAKwzB,QAC/BxzB,EAEF,IAAI43B,GAAM53B,EAAOA,EAAKmV,MAAM5zB,QAAU,GAAIiyC,GAGnD,SAASyE,GAAYJ,EAAMyC,GACzB,GAAIA,GAAYhC,GAAcT,EAAKxjB,WACjC,OAAOwjB,EAAKQ,MAEd,GAAIiC,EAAW,GAAMzC,EAAKW,OAASxS,EAAQ,CAGzC,IAFA,IAAIhmB,EAAO63B,EAAKlH,MACZxsB,EAAQ0zB,EAAKW,OACVx4B,GAAQmE,EAAQ,GACrBnE,EAAOA,EAAKmV,MAAOmlB,IAAan2B,EAAS+hB,GACzC/hB,GAAS6hB,EAEX,OAAOhmB,GAIX,SAASm4B,GAAcN,EAAMtQ,EAAOC,QAGpBloC,IAAVioC,IACFA,GAAgB,QAENjoC,IAARkoC,IACFA,GAAY,GAEd,IAAI+S,EAAQ1C,EAAK/F,WAAa,IAAIrL,EAC9B+T,EAAY3C,EAAKK,QACjBtjB,EAAcijB,EAAKxjB,UACnBomB,EAAYD,EAAYjT,EACxBmT,OAAsBp7C,IAARkoC,EAAoB5S,EAAc4S,EAAM,EAAI5S,EAAc4S,EAAMgT,EAAYhT,EAC9F,GAAIiT,IAAcD,GAAaE,IAAgB9lB,EAC7C,OAAOijB,EAIT,GAAI4C,GAAaC,EACf,OAAO7C,EAAKhG,QAQd,IALA,IAAI8I,EAAW9C,EAAKW,OAChB/D,EAAUoD,EAAKlH,MAGfiK,EAAc,EACXH,EAAYG,EAAc,GAC/BnG,EAAU,IAAImD,GAAMnD,GAAWA,EAAQtf,MAAM74B,OAAS,MAACgD,EAAWm1C,GAAW,GAAI8F,GAEjFK,GAAe,IADfD,GAAY3U,GAGV4U,IACFH,GAAaG,EACbJ,GAAaI,EACbF,GAAeE,EACfhmB,GAAegmB,GAOjB,IAJA,IAAIC,EAAgBvC,GAAc1jB,GAC9BkmB,EAAgBxC,GAAcoC,GAG3BI,GAAiB,GAAMH,EAAW3U,GACvCyO,EAAU,IAAImD,GAAMnD,GAAWA,EAAQtf,MAAM74B,OAAS,CAACm4C,GAAW,GAAI8F,GACtEI,GAAY3U,EAId,IAAI+U,EAAUlD,EAAKQ,MACfD,EAAU0C,EAAgBD,EAC5B5C,GAAYJ,EAAM6C,EAAc,GAChCI,EAAgBD,EAAgB,IAAIjD,GAAM,GAAI2C,GAASQ,EAGzD,GAAIA,GAAWD,EAAgBD,GAAiBJ,EAAY7lB,GAAemmB,EAAQ5lB,MAAM74B,OAAQ,CAG/F,IADA,IAAI0jB,EADJy0B,EAAU8E,GAAc9E,EAAS8F,GAExBp2B,EAAQw2B,EAAUx2B,EAAQ6hB,EAAO7hB,GAAS6hB,EAAO,CACxD,IAAIyP,EAAOoF,IAAkB12B,EAAS+hB,EACtClmB,EAAOA,EAAKmV,MAAMsgB,GAAO8D,GAAcv5B,EAAKmV,MAAMsgB,GAAM8E,GAE1Dv6B,EAAKmV,MAAO0lB,IAAkB7U,EAASE,GAAQ6U,EASjD,GALIL,EAAc9lB,IAChBwjB,EAAUA,GAAWA,EAAQoB,YAAYe,EAAO,EAAGG,IAIjDD,GAAaK,EACfL,GAAaK,EACbJ,GAAeI,EACfH,EAAW3U,EACXyO,EAAU,KACV2D,EAAUA,GAAWA,EAAQa,aAAasB,EAAO,EAAGE,QAG/C,GAAIA,EAAYD,GAAaM,EAAgBD,EAAe,CAIjE,IAHAD,EAAc,EAGPnG,GAAS,CACd,IAAIuG,EAAcP,IAAcE,EAAYzU,EAC5C,GAAI8U,IAAgBF,IAAkBH,EAAYzU,EAChD,MAEE8U,IACFJ,IAAgB,GAAKD,GAAYK,GAEnCL,GAAY3U,EACZyO,EAAUA,EAAQtf,MAAM6lB,GAItBvG,GAAWgG,EAAYD,IACzB/F,EAAUA,EAAQwE,aAAasB,EAAOI,EAAUF,EAAYG,IAE1DnG,GAAWqG,EAAgBD,IAC7BpG,EAAUA,EAAQ+E,YAAYe,EAAOI,EAAUG,EAAgBF,IAE7DA,IACFH,GAAaG,EACbF,GAAeE,GAInB,OAAI/C,EAAK/F,WACP+F,EAAKnkB,KAAOgnB,EAAcD,EAC1B5C,EAAKK,QAAUuC,EACf5C,EAAKxjB,UAAYqmB,EACjB7C,EAAKW,OAASmC,EACd9C,EAAKlH,MAAQ8D,EACboD,EAAKQ,MAAQD,EACbP,EAAKhL,YAASvtC,EACdu4C,EAAK9F,WAAY,EACV8F,GAEFF,GAAS8C,EAAWC,EAAaC,EAAUlG,EAAS2D,GAG7D,SAASS,GAAkBhB,EAAM1F,EAAQgD,GAGvC,IAFA,IAAI/C,EAAQ,GACR6I,EAAU,EACLnU,EAAK,EAAGA,EAAKqO,EAAU74C,OAAQwqC,IAAM,CAC5C,IAAIxmC,EAAQ60C,EAAUrO,GAClBE,EAAOnC,EAAgBvkC,GACvB0mC,EAAKtT,KAAOunB,IACdA,EAAUjU,EAAKtT,MAEZ8Q,EAAWlkC,KACd0mC,EAAOA,EAAKlhC,KAAI,SAASmnB,GAAK,OAAO8e,GAAO9e,OAE9CmlB,EAAMx1C,KAAKoqC,GAKb,OAHIiU,EAAUpD,EAAKnkB,OACjBmkB,EAAOA,EAAKC,QAAQmD,IAEf7F,GAAwByC,EAAM1F,EAAQC,GAG/C,SAASkG,GAAc5kB,GACrB,OAAOA,EAAOuS,EAAO,EAAOvS,EAAO,IAAOsS,GAAUA,EAOpD,SAAS6M,GAAWvyC,GAClB,OAAOA,QAAwC46C,KAC7CC,GAAa76C,GAASA,EACtB46C,KAAkB1K,eAAc,SAAS1qC,GACvC,IAAIkhC,EAAOtC,EAAcpkC,GACzBgwC,GAAkBtJ,EAAKtT,MACvBsT,EAAKhgC,SAAQ,SAASimB,EAAGhmB,GAAK,OAAOnB,EAAIqf,IAAIle,EAAGgmB,SAyExD,SAASkuB,GAAaC,GACpB,OAAOtnB,GAAMsnB,IAAoB1V,EAAU0V,GAU7C,SAASC,GAAev1C,EAAK+xC,EAAMrE,EAASzE,GAC1C,IAAIuM,EAAO/+C,OAAOoE,OAAOkyC,GAAWr2C,WAMpC,OALA8+C,EAAK5nB,KAAO5tB,EAAMA,EAAI4tB,KAAO,EAC7B4nB,EAAKC,KAAOz1C,EACZw1C,EAAKE,MAAQ3D,EACbyD,EAAKxJ,UAAY0B,EACjB8H,EAAKzO,OAASkC,EACPuM,EAIT,SAASJ,KACP,OAAOvB,KAAsBA,GAAoB0B,GAAe9K,KAAYkH,OAG9E,SAASgE,GAAiBH,EAAMr0C,EAAGgmB,GACjC,IAIIyuB,EACAC,EALA71C,EAAMw1C,EAAKC,KACX1D,EAAOyD,EAAKE,MACZp/C,EAAI0J,EAAI5F,IAAI+G,GACZme,OAAY9lB,IAANlD,EAGV,GAAI6wB,IAAMkZ,EAAS,CACjB,IAAK/gB,EACH,OAAOk2B,EAELzD,EAAKnkB,MAAQuS,GAAQ4R,EAAKnkB,MAAmB,EAAX5tB,EAAI4tB,MAExCgoB,GADAC,EAAU9D,EAAKnyB,QAAO,SAASmmB,EAAO4J,GAAO,YAAiBn2C,IAAVusC,GAAuBzvC,IAAMq5C,MAChEnM,aAAaxjC,KAAI,SAAS+lC,GAAS,OAAOA,EAAM,MAAK+P,OAAOrP,QACzE+O,EAAKxJ,YACP4J,EAAO5J,UAAY6J,EAAQ7J,UAAYwJ,EAAKxJ,aAG9C4J,EAAS51C,EAAIkrC,OAAO/pC,GACpB00C,EAAUv/C,IAAMy7C,EAAKnkB,KAAO,EAAImkB,EAAKvlC,MAAQulC,EAAK1yB,IAAI/oB,OAAGkD,SAG3D,GAAI8lB,EAAK,CACP,GAAI6H,IAAM4qB,EAAK33C,IAAI9D,GAAG,GACpB,OAAOk/C,EAETI,EAAS51C,EACT61C,EAAU9D,EAAK1yB,IAAI/oB,EAAG,CAAC6K,EAAGgmB,SAE1ByuB,EAAS51C,EAAIqf,IAAIle,EAAG4wC,EAAKnkB,MACzBioB,EAAU9D,EAAK1yB,IAAI0yB,EAAKnkB,KAAM,CAACzsB,EAAGgmB,IAGtC,OAAIquB,EAAKxJ,WACPwJ,EAAK5nB,KAAOgoB,EAAOhoB,KACnB4nB,EAAKC,KAAOG,EACZJ,EAAKE,MAAQG,EACbL,EAAKzO,YAASvtC,EACPg8C,GAEFD,GAAeK,EAAQC,GAI9B,SAASE,GAAgBC,EAASpQ,GAChC9+B,KAAKmvC,MAAQD,EACblvC,KAAKovC,SAAWtQ,EAChB9+B,KAAK8mB,KAAOooB,EAAQpoB,KA2DtB,SAASuoB,GAAkBjV,GACzBp6B,KAAKmvC,MAAQ/U,EACbp6B,KAAK8mB,KAAOsT,EAAKtT,KAyBnB,SAASwoB,GAAclV,GACrBp6B,KAAKmvC,MAAQ/U,EACbp6B,KAAK8mB,KAAOsT,EAAKtT,KAuBnB,SAASyoB,GAAoBtoB,GAC3BjnB,KAAKmvC,MAAQloB,EACbjnB,KAAK8mB,KAAOG,EAAQH,KAwDxB,SAAS0oB,GAAYvT,GACnB,IAAIwT,EAAeC,GAAazT,GAiChC,OAhCAwT,EAAaN,MAAQlT,EACrBwT,EAAa3oB,KAAOmV,EAASnV,KAC7B2oB,EAAaT,KAAO,WAAa,OAAO/S,GACxCwT,EAAa7R,QAAU,WACrB,IAAI+R,EAAmB1T,EAAS2B,QAAQ1hC,MAAM8D,MAE9C,OADA2vC,EAAiBX,KAAO,WAAa,OAAO/S,EAAS2B,WAC9C+R,GAETF,EAAaj3B,IAAM,SAASxkB,GAAO,OAAOioC,EAASuF,SAASxtC,IAC5Dy7C,EAAajO,SAAW,SAASxtC,GAAO,OAAOioC,EAASzjB,IAAIxkB,IAC5Dy7C,EAAajS,YAAcoS,GAC3BH,EAAa/R,kBAAoB,SAAUz8B,EAAI28B,GAAU,IAAI+D,EAAS3hC,KACpE,OAAOi8B,EAAS5B,WAAU,SAASha,EAAGhmB,GAAK,OAA4B,IAArB4G,EAAG5G,EAAGgmB,EAAGshB,KAAoB/D,IAEjF6R,EAAavQ,mBAAqB,SAAS9sC,EAAMwrC,GAC/C,GAAIxrC,IAASgpC,EAAiB,CAC5B,IAAI1N,EAAWuO,EAAS6B,WAAW1rC,EAAMwrC,GACzC,OAAO,IAAIpC,GAAS,WAClB,IAAIqF,EAAOnT,EAAShwB,OACpB,IAAKmjC,EAAKljC,KAAM,CACd,IAAItD,EAAIwmC,EAAKntC,MAAM,GACnBmtC,EAAKntC,MAAM,GAAKmtC,EAAKntC,MAAM,GAC3BmtC,EAAKntC,MAAM,GAAK2G,EAElB,OAAOwmC,KAGX,OAAO5E,EAAS6B,WACd1rC,IAAS+oC,EAAiBD,EAAeC,EACzCyC,IAGG6R,EAIT,SAASI,GAAW5T,EAAUmK,EAAQ3iC,GACpC,IAAIqsC,EAAiBJ,GAAazT,GAgClC,OA/BA6T,EAAehpB,KAAOmV,EAASnV,KAC/BgpB,EAAet3B,IAAM,SAASxkB,GAAO,OAAOioC,EAASzjB,IAAIxkB,IACzD87C,EAAex8C,IAAM,SAASU,EAAKstC,GACjC,IAAIjhB,EAAI4b,EAAS3oC,IAAIU,EAAKulC,GAC1B,OAAOlZ,IAAMkZ,EACX+H,EACA8E,EAAOt2C,KAAK2T,EAAS4c,EAAGrsB,EAAKioC,IAEjC6T,EAAepS,kBAAoB,SAAUz8B,EAAI28B,GAAU,IAAI+D,EAAS3hC,KACtE,OAAOi8B,EAAS5B,WACd,SAASha,EAAGhmB,EAAGrH,GAAK,OAAwD,IAAjDiO,EAAGmlC,EAAOt2C,KAAK2T,EAAS4c,EAAGhmB,EAAGrH,GAAIqH,EAAGsnC,KAChE/D,IAGJkS,EAAe5Q,mBAAqB,SAAU9sC,EAAMwrC,GAClD,IAAIlQ,EAAWuO,EAAS6B,WAAW1C,EAAiBwC,GACpD,OAAO,IAAIpC,GAAS,WAClB,IAAIqF,EAAOnT,EAAShwB,OACpB,GAAImjC,EAAKljC,KACP,OAAOkjC,EAET,IAAI5B,EAAQ4B,EAAKntC,MACbM,EAAMirC,EAAM,GAChB,OAAOxD,EACLrpC,EACA4B,EACAoyC,EAAOt2C,KAAK2T,EAASw7B,EAAM,GAAIjrC,EAAKioC,GACpC4E,OAICiP,EAIT,SAASC,GAAe9T,EAAU6C,GAChC,IAAI6Q,EAAmBD,GAAazT,GAsBpC,OArBA0T,EAAiBR,MAAQlT,EACzB0T,EAAiB7oB,KAAOmV,EAASnV,KACjC6oB,EAAiB/R,QAAU,WAAa,OAAO3B,GAC3CA,EAAS+S,OACXW,EAAiBX,KAAO,WACtB,IAAIS,EAAeD,GAAYvT,GAE/B,OADAwT,EAAa7R,QAAU,WAAa,OAAO3B,EAAS+S,QAC7CS,IAGXE,EAAiBr8C,IAAM,SAASU,EAAKstC,GAClC,OAAOrF,EAAS3oC,IAAIwrC,EAAU9qC,GAAO,EAAIA,EAAKstC,IACjDqO,EAAiBn3B,IAAM,SAASxkB,GAC7B,OAAOioC,EAASzjB,IAAIsmB,EAAU9qC,GAAO,EAAIA,IAC5C27C,EAAiBnO,SAAW,SAAS9tC,GAAS,OAAOuoC,EAASuF,SAAS9tC,IACvEi8C,EAAiBnS,YAAcoS,GAC/BD,EAAiBtV,UAAY,SAAUp5B,EAAI28B,GAAU,IAAI+D,EAAS3hC,KAChE,OAAOi8B,EAAS5B,WAAU,SAASha,EAAGhmB,GAAK,OAAO4G,EAAGof,EAAGhmB,EAAGsnC,MAAW/D,IAExE+R,EAAiB7R,WACf,SAAS1rC,EAAMwrC,GAAW,OAAO3B,EAAS6B,WAAW1rC,GAAOwrC,IACvD+R,EAIT,SAASK,GAAc/T,EAAUgU,EAAWxsC,EAASq7B,GACnD,IAAIoR,EAAiBR,GAAazT,GAwClC,OAvCI6C,IACFoR,EAAe13B,IAAM,SAASxkB,GAC5B,IAAIqsB,EAAI4b,EAAS3oC,IAAIU,EAAKulC,GAC1B,OAAOlZ,IAAMkZ,KAAa0W,EAAUngD,KAAK2T,EAAS4c,EAAGrsB,EAAKioC,IAE5DiU,EAAe58C,IAAM,SAASU,EAAKstC,GACjC,IAAIjhB,EAAI4b,EAAS3oC,IAAIU,EAAKulC,GAC1B,OAAOlZ,IAAMkZ,GAAW0W,EAAUngD,KAAK2T,EAAS4c,EAAGrsB,EAAKioC,GACtD5b,EAAIihB,IAGV4O,EAAexS,kBAAoB,SAAUz8B,EAAI28B,GAAU,IAAI+D,EAAS3hC,KAClEuhC,EAAa,EAOjB,OANAtF,EAAS5B,WAAU,SAASha,EAAGhmB,EAAGrH,GAChC,GAAIi9C,EAAUngD,KAAK2T,EAAS4c,EAAGhmB,EAAGrH,GAEhC,OADAuuC,IACOtgC,EAAGof,EAAGye,EAAUzkC,EAAIknC,EAAa,EAAGI,KAE5C/D,GACI2D,GAET2O,EAAehR,mBAAqB,SAAU9sC,EAAMwrC,GAClD,IAAIlQ,EAAWuO,EAAS6B,WAAW1C,EAAiBwC,GAChD2D,EAAa,EACjB,OAAO,IAAI/F,GAAS,WAClB,OAAa,CACX,IAAIqF,EAAOnT,EAAShwB,OACpB,GAAImjC,EAAKljC,KACP,OAAOkjC,EAET,IAAI5B,EAAQ4B,EAAKntC,MACbM,EAAMirC,EAAM,GACZvrC,EAAQurC,EAAM,GAClB,GAAIgR,EAAUngD,KAAK2T,EAAS/P,EAAOM,EAAKioC,GACtC,OAAOR,EAAcrpC,EAAM0sC,EAAU9qC,EAAMutC,IAAc7tC,EAAOmtC,QAKjEqP,EA+BT,SAASC,GAAalU,EAAUtB,EAAOC,EAAKkE,GAC1C,IAAIsR,EAAenU,EAASnV,KAe5B,QAXcp0B,IAAVioC,IACFA,GAAgB,QAENjoC,IAARkoC,IACEA,IAAQ6F,IACV7F,EAAMwV,EAENxV,GAAY,GAIZF,EAAWC,EAAOC,EAAKwV,GACzB,OAAOnU,EAGT,IAAIoU,EAAgBxV,EAAaF,EAAOyV,GACpCE,EAAcvV,EAAWH,EAAKwV,GAKlC,GAAIC,GAAkBA,GAAiBC,GAAgBA,EACrD,OAAOH,GAAalU,EAASI,QAAQmB,cAAe7C,EAAOC,EAAKkE,GAOlE,IACIyR,EADAC,EAAeF,EAAcD,EAE7BG,GAAiBA,IACnBD,EAAYC,EAAe,EAAI,EAAIA,GAGrC,IAAIC,EAAWf,GAAazT,GA6D5B,OAzDAwU,EAAS3pB,KAAqB,IAAdypB,EAAkBA,EAAYtU,EAASnV,MAAQypB,QAAa79C,GAEvEosC,GAAWd,GAAM/B,IAAasU,GAAa,IAC9CE,EAASn9C,IAAM,SAAUsI,EAAO0lC,GAE9B,OADA1lC,EAAQ2+B,EAAUv6B,KAAMpE,KACR,GAAKA,EAAQ20C,EAC3BtU,EAAS3oC,IAAIsI,EAAQy0C,EAAe/O,GACpCA,IAINmP,EAAS/S,kBAAoB,SAASz8B,EAAI28B,GAAU,IAAI+D,EAAS3hC,KAC/D,GAAkB,IAAduwC,EACF,OAAO,EAET,GAAI3S,EACF,OAAO59B,KAAKw9B,cAAcnD,UAAUp5B,EAAI28B,GAE1C,IAAI8S,EAAU,EACVC,GAAa,EACbpP,EAAa,EAQjB,OAPAtF,EAAS5B,WAAU,SAASha,EAAGhmB,GAC7B,IAAMs2C,KAAeA,EAAaD,IAAYL,GAE5C,OADA9O,KACuD,IAAhDtgC,EAAGof,EAAGye,EAAUzkC,EAAIknC,EAAa,EAAGI,IACpCJ,IAAegP,KAGnBhP,GAGTkP,EAASvR,mBAAqB,SAAS9sC,EAAMwrC,GAC3C,GAAkB,IAAd2S,GAAmB3S,EACrB,OAAO59B,KAAKw9B,cAAcM,WAAW1rC,EAAMwrC,GAG7C,IAAIlQ,EAAyB,IAAd6iB,GAAmBtU,EAAS6B,WAAW1rC,EAAMwrC,GACxD8S,EAAU,EACVnP,EAAa,EACjB,OAAO,IAAI/F,GAAS,WAClB,KAAOkV,IAAYL,GACjB3iB,EAAShwB,OAEX,KAAM6jC,EAAagP,EACjB,MAr8FC,CAAE78C,WAAOhB,EAAWiL,MAAM,GAu8F7B,IAAIkjC,EAAOnT,EAAShwB,OACpB,OAAIohC,GAAW1sC,IAAS+oC,EACf0F,EAEApF,EAAcrpC,EAAMmvC,EAAa,EAD/BnvC,IAAS8oC,OACyBxoC,EAEAmuC,EAAKntC,MAAM,GAFAmtC,OAOrD4P,EA6CT,SAASG,GAAiB3U,EAAUgU,EAAWxsC,EAASq7B,GACtD,IAAI+R,EAAenB,GAAazT,GA4ChC,OA3CA4U,EAAanT,kBAAoB,SAAUz8B,EAAI28B,GAAU,IAAI+D,EAAS3hC,KACpE,GAAI49B,EACF,OAAO59B,KAAKw9B,cAAcnD,UAAUp5B,EAAI28B,GAE1C,IAAI+S,GAAa,EACbpP,EAAa,EAOjB,OANAtF,EAAS5B,WAAU,SAASha,EAAGhmB,EAAGrH,GAChC,IAAM29C,KAAeA,EAAaV,EAAUngD,KAAK2T,EAAS4c,EAAGhmB,EAAGrH,IAE9D,OADAuuC,IACOtgC,EAAGof,EAAGye,EAAUzkC,EAAIknC,EAAa,EAAGI,MAGxCJ,GAETsP,EAAa3R,mBAAqB,SAAS9sC,EAAMwrC,GAAU,IAAI+D,EAAS3hC,KACtE,GAAI49B,EACF,OAAO59B,KAAKw9B,cAAcM,WAAW1rC,EAAMwrC,GAE7C,IAAIlQ,EAAWuO,EAAS6B,WAAW1C,EAAiBwC,GAChDkT,GAAW,EACXvP,EAAa,EACjB,OAAO,IAAI/F,GAAS,WAClB,IAAIqF,EAAMxmC,EAAGgmB,EACb,EAAG,CAED,IADAwgB,EAAOnT,EAAShwB,QACPC,KACP,OAAImhC,GAAW1sC,IAAS+oC,EACf0F,EAEApF,EAAcrpC,EAAMmvC,IADlBnvC,IAAS8oC,OACuBxoC,EAEAmuC,EAAKntC,MAAM,GAFAmtC,GAKxD,IAAI5B,EAAQ4B,EAAKntC,MACjB2G,EAAI4kC,EAAM,GACV5e,EAAI4e,EAAM,GACV6R,IAAaA,EAAWb,EAAUngD,KAAK2T,EAAS4c,EAAGhmB,EAAGsnC,UAC/CmP,GACT,OAAO1+C,IAASgpC,EAAkByF,EAChCpF,EAAcrpC,EAAMiI,EAAGgmB,EAAGwgB,OAGzBgQ,EAIT,SAASE,GAAc9U,EAAUxe,GAC/B,IAAIuzB,EAAkBjZ,EAAQkE,GAC1BuJ,EAAQ,CAACvJ,GAAU3/B,OAAOmhB,GAAQvkB,KAAI,SAASmnB,GAQjD,OAPKuX,EAAWvX,GAIL2wB,IACT3wB,EAAIyX,EAAczX,IAJlBA,EAAI2wB,EACFpU,GAAkBvc,GAClB0c,GAAoBpmC,MAAMC,QAAQypB,GAAKA,EAAI,CAACA,IAIzCA,KACNvH,QAAO,SAASuH,GAAK,OAAkB,IAAXA,EAAEyG,QAEjC,GAAqB,IAAjB0e,EAAM91C,OACR,OAAOusC,EAGT,GAAqB,IAAjBuJ,EAAM91C,OAAc,CACtB,IAAIuhD,EAAYzL,EAAM,GACtB,GAAIyL,IAAchV,GACd+U,GAAmBjZ,EAAQkZ,IAC3B/Y,EAAU+D,IAAa/D,EAAU+Y,GACnC,OAAOA,EAIX,IAAIC,EAAY,IAAI7S,GAASmH,GAkB7B,OAjBIwL,EACFE,EAAYA,EAAUxU,aACZxE,EAAU+D,KACpBiV,EAAYA,EAAUlU,aAExBkU,EAAYA,EAAUC,SAAQ,IACpBrqB,KAAO0e,EAAMpvB,QACrB,SAASg7B,EAAK9U,GACZ,QAAY5pC,IAAR0+C,EAAmB,CACrB,IAAItqB,EAAOwV,EAAIxV,KACf,QAAap0B,IAATo0B,EACF,OAAOsqB,EAAMtqB,KAInB,GAEKoqB,EAIT,SAASG,GAAepV,EAAUqV,EAAOxS,GACvC,IAAIyS,EAAe7B,GAAazT,GA0ChC,OAzCAsV,EAAa7T,kBAAoB,SAASz8B,EAAI28B,GAC5C,IAAI2D,EAAa,EACbiQ,GAAU,EAYd,OAXA,SAASC,EAASrX,EAAMsX,GAAe,IAAI/P,EAAS3hC,KAClDo6B,EAAKC,WAAU,SAASha,EAAGhmB,GAMzB,QALMi3C,GAASI,EAAeJ,IAAU1Z,EAAWvX,GACjDoxB,EAASpxB,EAAGqxB,EAAe,IAC4B,IAA9CzwC,EAAGof,EAAGye,EAAUzkC,EAAIknC,IAAcI,KAC3C6P,GAAU,IAEJA,IACP5T,GAEL6T,CAASxV,EAAU,GACZsF,GAETgQ,EAAarS,mBAAqB,SAAS9sC,EAAMwrC,GAC/C,IAAIlQ,EAAWuO,EAAS6B,WAAW1rC,EAAMwrC,GACrCp7B,EAAQ,GACR++B,EAAa,EACjB,OAAO,IAAI/F,GAAS,WAClB,KAAO9N,GAAU,CACf,IAAImT,EAAOnT,EAAShwB,OACpB,IAAkB,IAAdmjC,EAAKljC,KAAT,CAIA,IAAI0iB,EAAIwgB,EAAKntC,MAIb,GAHItB,IAASgpC,IACX/a,EAAIA,EAAE,IAEFixB,KAAS9uC,EAAM9S,OAAS4hD,KAAU1Z,EAAWvX,GAIjD,OAAOye,EAAU+B,EAAOpF,EAAcrpC,EAAMmvC,IAAclhB,EAAGwgB,GAH7Dr+B,EAAMxS,KAAK09B,GACXA,EAAWrN,EAAEyd,WAAW1rC,EAAMwrC,QAT9BlQ,EAAWlrB,EAAMkD,MAcrB,MAxoGG,CAAEhS,WAAOhB,EAAWiL,MAAM,OA2oG1B4zC,EA4CT,SAASrL,GAAYjK,EAAU+J,EAAYI,GACpCJ,IACHA,EAAa2L,IAEf,IAAIX,EAAkBjZ,EAAQkE,GAC1BrgC,EAAQ,EACRqrB,EAAUgV,EAASI,QAAQnjC,KAC7B,SAASmnB,EAAGhmB,GAAK,MAAO,CAACA,EAAGgmB,EAAGzkB,IAASwqC,EAASA,EAAO/lB,EAAGhmB,EAAG4hC,GAAY5b,MAC1Esd,UAMF,OALA1W,EAAQ8e,MAAK,SAAS1mC,EAAG6kB,GAAK,OAAO8hB,EAAW3mC,EAAE,GAAI6kB,EAAE,KAAO7kB,EAAE,GAAK6kB,EAAE,MAAK9pB,QAC3E42C,EACA,SAAS3wB,EAAG7wB,GAAMy3B,EAAQz3B,GAAGE,OAAS,GACtC,SAAS2wB,EAAG7wB,GAAMy3B,EAAQz3B,GAAK6wB,EAAE,KAE5B2wB,EAAkBhZ,EAAS/Q,GAChCiR,EAAU+D,GAAY9D,EAAWlR,GACjCqR,EAAOrR,GAIX,SAAS2qB,GAAW3V,EAAU+J,EAAYI,GAIxC,GAHKJ,IACHA,EAAa2L,IAEXvL,EAAQ,CACV,IAAInH,EAAQhD,EAASI,QAClBnjC,KAAI,SAASmnB,EAAGhmB,GAAK,MAAO,CAACgmB,EAAG+lB,EAAO/lB,EAAGhmB,EAAG4hC,OAC7C7lB,QAAO,SAAS/W,EAAG6kB,GAAK,OAAO2tB,GAAW7L,EAAY3mC,EAAE,GAAI6kB,EAAE,IAAMA,EAAI7kB,KAC3E,OAAO4/B,GAASA,EAAM,GAEtB,OAAOhD,EAAS7lB,QAAO,SAAS/W,EAAG6kB,GAAK,OAAO2tB,GAAW7L,EAAY3mC,EAAG6kB,GAAKA,EAAI7kB,KAItF,SAASwyC,GAAW7L,EAAY3mC,EAAG6kB,GACjC,IAAI4tB,EAAO9L,EAAW9hB,EAAG7kB,GAGzB,OAAiB,IAATyyC,GAAc5tB,IAAM7kB,IAAM6kB,SAAiCA,GAAMA,IAAO4tB,EAAO,EAIzF,SAASC,GAAeC,EAASC,EAAQzM,GACvC,IAAI0M,EAAcxC,GAAasC,GAkD/B,OAjDAE,EAAYprB,KAAO,IAAIuX,GAASmH,GAAOtsC,KAAI,SAAS1J,GAAK,OAAOA,EAAEs3B,QAAOmU,MAGzEiX,EAAY7X,UAAY,SAASp5B,EAAI28B,GAiBnC,IAHA,IACIiD,EADAnT,EAAW1tB,KAAK89B,WAAW3C,EAAgByC,GAE3C2D,EAAa,IACRV,EAAOnT,EAAShwB,QAAQC,OACY,IAAvCsD,EAAG4/B,EAAKntC,MAAO6tC,IAAcvhC,QAInC,OAAOuhC,GAET2Q,EAAYhT,mBAAqB,SAAS9sC,EAAMwrC,GAC9C,IAAIuU,EAAY3M,EAAMtsC,KAAI,SAAS1J,GAChC,OAAQA,EAAImoC,EAASnoC,GAAIwsC,EAAY4B,EAAUpuC,EAAEouC,UAAYpuC,MAE5D+xC,EAAa,EACb6Q,GAAS,EACb,OAAO,IAAI5W,GAAS,WAClB,IAAI6W,EAKJ,OAJKD,IACHC,EAAQF,EAAUj5C,KAAI,SAAS1J,GAAK,OAAOA,EAAEkO,UAC7C00C,EAASC,EAAM3mB,MAAK,SAAS92B,GAAK,OAAOA,EAAE+I,SAEzCy0C,EA1wGD,CAAE1+C,WAAOhB,EAAWiL,MAAM,GA6wGtB89B,EACLrpC,EACAmvC,IACA0Q,EAAO/1C,MAAM,KAAMm2C,EAAMn5C,KAAI,SAAStE,GAAK,OAAOA,EAAElB,eAInDw+C,EAMT,SAASI,GAAMlY,EAAMkC,GACnB,OAAO0B,GAAM5D,GAAQkC,EAAMlC,EAAKn7B,YAAYq9B,GAG9C,SAASiW,GAActT,GACrB,GAAIA,IAAUtvC,OAAOsvC,GACnB,MAAM,IAAIjqC,UAAU,0BAA4BiqC,GAIpD,SAASuT,GAAYpY,GAEnB,OADAsJ,GAAkBtJ,EAAKtT,MAChBqT,EAAWC,GAGpB,SAASqY,GAAcxW,GACrB,OAAOlE,EAAQkE,GAAYnE,EACzBI,EAAU+D,GAAYhE,EACtBG,EAGJ,SAASsX,GAAazT,GACpB,OAAOtsC,OAAOoE,QAEVgkC,EAAQkE,GAAYjE,EACpBE,EAAU+D,GAAY9D,EACtBG,GACA1oC,WAIN,SAASggD,KACP,OAAI5vC,KAAKmvC,MAAM3R,aACbx9B,KAAKmvC,MAAM3R,cACXx9B,KAAK8mB,KAAO9mB,KAAKmvC,MAAMroB,KAChB9mB,MAEA63B,EAAIjoC,UAAU4tC,YAAY1tC,KAAKkQ,MAI1C,SAAS2xC,GAAkBtyC,EAAG6kB,GAC5B,OAAO7kB,EAAI6kB,EAAI,EAAI7kB,EAAI6kB,GAAK,EAAI,EAGlC,SAAS8gB,GAAcd,GACrB,IAAI9J,EAAO4B,EAAYkI,GACvB,IAAK9J,EAAM,CAGT,IAAK+B,EAAY+H,GACf,MAAM,IAAIlvC,UAAU,oCAAsCkvC,GAE5D9J,EAAO4B,EAAYrE,EAASuM,IAE9B,OAAO9J,EAKP,SAASsY,GAAOC,EAAengD,GAC7B,IAAIogD,EAEAC,EAAa,SAAgBp1B,GAC/B,GAAIA,aAAkBo1B,EACpB,OAAOp1B,EAET,KAAMzd,gBAAgB6yC,GACpB,OAAO,IAAIA,EAAWp1B,GAExB,IAAKm1B,EAAgB,CACnBA,GAAiB,EACjB,IAAI7pC,EAAOpZ,OAAOoZ,KAAK4pC,IAgI/B,SAAkB/iD,EAAWsoB,GAC3B,IACEA,EAAM9d,QAAQ04C,GAAQ7+C,UAAKvB,EAAW9C,IACtC,MAAOgC,KAlIHmhD,CAASC,EAAqBjqC,GAC9BiqC,EAAoBlsB,KAAO/d,EAAKrZ,OAChCsjD,EAAoBC,MAAQzgD,EAC5BwgD,EAAoBxU,MAAQz1B,EAC5BiqC,EAAoBE,eAAiBP,EAEvC3yC,KAAK2uC,KAAOnqB,GAAI/G,IAGdu1B,EAAsBH,EAAWjjD,UAAYD,OAAOoE,OAAOo/C,IAG/D,OAFAH,EAAoB/zC,YAAc4zC,EAE3BA,EAr/BXpb,EAAYwO,GAAYzhB,IActByhB,GAAW3I,GAAK,WACd,OAAOt9B,KAAK2C,YAGdsjC,GAAWr2C,UAAU4V,SAAW,WAC9B,OAAOxF,KAAKu9B,WAAW,eAAgB,MAKzC0I,GAAWr2C,UAAU0D,IAAM,SAAS+G,EAAGinC,GACrC,IAAI1lC,EAAQoE,KAAK2uC,KAAKr7C,IAAI+G,GAC1B,YAAiB3H,IAAVkJ,EAAsBoE,KAAK4uC,MAAMt7C,IAAIsI,GAAO,GAAK0lC,GAK1D2E,GAAWr2C,UAAUq1C,MAAQ,WAC3B,OAAkB,IAAdjlC,KAAK8mB,KACA9mB,KAELA,KAAKklC,WACPllC,KAAK8mB,KAAO,EACZ9mB,KAAK2uC,KAAK1J,QACVjlC,KAAK4uC,MAAM3J,QACJjlC,MAEFsuC,MAGTrI,GAAWr2C,UAAU2oB,IAAM,SAASle,EAAGgmB,GACrC,OAAOwuB,GAAiB7uC,KAAM3F,EAAGgmB,IAGnC4lB,GAAWr2C,UAAUw0C,OAAS,SAAS/pC,GACrC,OAAOw0C,GAAiB7uC,KAAM3F,EAAGk/B,IAGnC0M,GAAWr2C,UAAU22C,WAAa,WAChC,OAAOvmC,KAAK2uC,KAAKpI,cAAgBvmC,KAAK4uC,MAAMrI,cAG9CN,GAAWr2C,UAAUyqC,UAAY,SAASp5B,EAAI28B,GAAU,IAAI+D,EAAS3hC,KACnE,OAAOA,KAAK4uC,MAAMvU,WAChB,SAAS4E,GAAS,OAAOA,GAASh+B,EAAGg+B,EAAM,GAAIA,EAAM,GAAI0C,KACzD/D,IAIJqI,GAAWr2C,UAAUkuC,WAAa,SAAS1rC,EAAMwrC,GAC/C,OAAO59B,KAAK4uC,MAAMjS,eAAemB,WAAW1rC,EAAMwrC,IAGpDqI,GAAWr2C,UAAU42C,cAAgB,SAASI,GAC5C,GAAIA,IAAY5mC,KAAKklC,UACnB,OAAOllC,KAET,IAAI8uC,EAAS9uC,KAAK2uC,KAAKnI,cAAcI,GACjCmI,EAAU/uC,KAAK4uC,MAAMpI,cAAcI,GACvC,OAAKA,EAME6H,GAAeK,EAAQC,EAASnI,EAAS5mC,KAAKigC,SALnDjgC,KAAKklC,UAAY0B,EACjB5mC,KAAK2uC,KAAOG,EACZ9uC,KAAK4uC,MAAQG,EACN/uC,OAUbimC,GAAWsI,aAAeA,GAE1BtI,GAAWr2C,UAAUopC,IAAuB,EAC5CiN,GAAWr2C,UAAgB,OAAIq2C,GAAWr2C,UAAUw0C,OA8DpD3M,EAAYwX,GAAiBjX,GAO3BiX,GAAgBr/C,UAAU0D,IAAM,SAASU,EAAKstC,GAC5C,OAAOthC,KAAKmvC,MAAM77C,IAAIU,EAAKstC,IAG7B2N,GAAgBr/C,UAAU4oB,IAAM,SAASxkB,GACvC,OAAOgM,KAAKmvC,MAAM32B,IAAIxkB,IAGxBi7C,GAAgBr/C,UAAUwjD,SAAW,WACnC,OAAOpzC,KAAKmvC,MAAMiE,YAGpBnE,GAAgBr/C,UAAUguC,QAAU,WAAY,IAAI+D,EAAS3hC,KACvD2vC,EAAmBI,GAAe/vC,MAAM,GAI5C,OAHKA,KAAKovC,WACRO,EAAiByD,SAAW,WAAa,OAAOzR,EAAOwN,MAAM9S,QAAQuB,YAEhE+R,GAGTV,GAAgBr/C,UAAUsJ,IAAM,SAASktC,EAAQ3iC,GAAU,IAAIk+B,EAAS3hC,KAClE8vC,EAAiBD,GAAW7vC,KAAMomC,EAAQ3iC,GAI9C,OAHKzD,KAAKovC,WACRU,EAAesD,SAAW,WAAa,OAAOzR,EAAOwN,MAAM9S,QAAQnjC,IAAIktC,EAAQ3iC,KAE1EqsC,GAGTb,GAAgBr/C,UAAUyqC,UAAY,SAASp5B,EAAI28B,GAAU,IACvD1D,EAD2DyH,EAAS3hC,KAExE,OAAOA,KAAKmvC,MAAM9U,UAChBr6B,KAAKovC,SACH,SAAS/uB,EAAGhmB,GAAK,OAAO4G,EAAGof,EAAGhmB,EAAGsnC,KAC/BzH,EAAK0D,EAAU4U,GAAYxyC,MAAQ,EACnC,SAASqgB,GAAK,OAAOpf,EAAGof,EAAGud,IAAY1D,EAAKA,IAAMyH,KACtD/D,IAIJqR,GAAgBr/C,UAAUkuC,WAAa,SAAS1rC,EAAMwrC,GACpD,GAAI59B,KAAKovC,SACP,OAAOpvC,KAAKmvC,MAAMrR,WAAW1rC,EAAMwrC,GAErC,IAAIlQ,EAAW1tB,KAAKmvC,MAAMrR,WAAW3C,EAAgByC,GACjD1D,EAAK0D,EAAU4U,GAAYxyC,MAAQ,EACvC,OAAO,IAAIw7B,GAAS,WAClB,IAAIqF,EAAOnT,EAAShwB,OACpB,OAAOmjC,EAAKljC,KAAOkjC,EACjBpF,EAAcrpC,EAAMwrC,IAAY1D,EAAKA,IAAM2G,EAAKntC,MAAOmtC,OAI/DoO,GAAgBr/C,UAAUopC,IAAuB,EAGjDvB,EAAY4X,GAAmBlX,GAM7BkX,GAAkBz/C,UAAU4xC,SAAW,SAAS9tC,GAC9C,OAAOsM,KAAKmvC,MAAM3N,SAAS9tC,IAG7B27C,GAAkBz/C,UAAUyqC,UAAY,SAASp5B,EAAI28B,GAAU,IAAI+D,EAAS3hC,KACtEuhC,EAAa,EACjB,OAAOvhC,KAAKmvC,MAAM9U,WAAU,SAASha,GAAK,OAAOpf,EAAGof,EAAGkhB,IAAcI,KAAU/D,IAGjFyR,GAAkBz/C,UAAUkuC,WAAa,SAAS1rC,EAAMwrC,GACtD,IAAIlQ,EAAW1tB,KAAKmvC,MAAMrR,WAAW3C,EAAgByC,GACjD2D,EAAa,EACjB,OAAO,IAAI/F,GAAS,WAClB,IAAIqF,EAAOnT,EAAShwB,OACpB,OAAOmjC,EAAKljC,KAAOkjC,EACjBpF,EAAcrpC,EAAMmvC,IAAcV,EAAKntC,MAAOmtC,OAMtDpJ,EAAY6X,GAAehX,GAMzBgX,GAAc1/C,UAAU4oB,IAAM,SAASxkB,GACrC,OAAOgM,KAAKmvC,MAAM3N,SAASxtC,IAG7Bs7C,GAAc1/C,UAAUyqC,UAAY,SAASp5B,EAAI28B,GAAU,IAAI+D,EAAS3hC,KACtE,OAAOA,KAAKmvC,MAAM9U,WAAU,SAASha,GAAK,OAAOpf,EAAGof,EAAGA,EAAGshB,KAAU/D,IAGtE0R,GAAc1/C,UAAUkuC,WAAa,SAAS1rC,EAAMwrC,GAClD,IAAIlQ,EAAW1tB,KAAKmvC,MAAMrR,WAAW3C,EAAgByC,GACrD,OAAO,IAAIpC,GAAS,WAClB,IAAIqF,EAAOnT,EAAShwB,OACpB,OAAOmjC,EAAKljC,KAAOkjC,EACjBpF,EAAcrpC,EAAMyuC,EAAKntC,MAAOmtC,EAAKntC,MAAOmtC,OAMpDpJ,EAAY8X,GAAqBvX,GAM/BuX,GAAoB3/C,UAAUitC,SAAW,WACvC,OAAO78B,KAAKmvC,MAAM9S,SAGpBkT,GAAoB3/C,UAAUyqC,UAAY,SAASp5B,EAAI28B,GAAU,IAAI+D,EAAS3hC,KAC5E,OAAOA,KAAKmvC,MAAM9U,WAAU,SAAS4E,GAGnC,GAAIA,EAAO,CACTsT,GAActT,GACd,IAAIoU,EAAkBzb,EAAWqH,GACjC,OAAOh+B,EACLoyC,EAAkBpU,EAAM3rC,IAAI,GAAK2rC,EAAM,GACvCoU,EAAkBpU,EAAM3rC,IAAI,GAAK2rC,EAAM,GACvC0C,MAGH/D,IAGL2R,GAAoB3/C,UAAUkuC,WAAa,SAAS1rC,EAAMwrC,GACxD,IAAIlQ,EAAW1tB,KAAKmvC,MAAMrR,WAAW3C,EAAgByC,GACrD,OAAO,IAAIpC,GAAS,WAClB,OAAa,CACX,IAAIqF,EAAOnT,EAAShwB,OACpB,GAAImjC,EAAKljC,KACP,OAAOkjC,EAET,IAAI5B,EAAQ4B,EAAKntC,MAGjB,GAAIurC,EAAO,CACTsT,GAActT,GACd,IAAIoU,EAAkBzb,EAAWqH,GACjC,OAAOxD,EACLrpC,EACAihD,EAAkBpU,EAAM3rC,IAAI,GAAK2rC,EAAM,GACvCoU,EAAkBpU,EAAM3rC,IAAI,GAAK2rC,EAAM,GACvC4B,SAQZwO,GAAkBz/C,UAAU4tC,YAC5ByR,GAAgBr/C,UAAU4tC,YAC1B8R,GAAc1/C,UAAU4tC,YACxB+R,GAAoB3/C,UAAU4tC,YAC5BoS,GAwpBFnY,EAAYib,GAAQvR,IA8BlBuR,GAAO9iD,UAAU4V,SAAW,WAC1B,OAAOxF,KAAKu9B,WAAW+V,GAAWtzC,MAAQ,KAAM,MAKlD0yC,GAAO9iD,UAAU4oB,IAAM,SAASne,GAC9B,OAAO2F,KAAKkzC,eAAerjD,eAAewK,IAG5Cq4C,GAAO9iD,UAAU0D,IAAM,SAAS+G,EAAGinC,GACjC,IAAKthC,KAAKwY,IAAIne,GACZ,OAAOinC,EAET,IAAIiS,EAAavzC,KAAKkzC,eAAe74C,GACrC,OAAO2F,KAAK2uC,KAAO3uC,KAAK2uC,KAAKr7C,IAAI+G,EAAGk5C,GAAcA,GAKpDb,GAAO9iD,UAAUq1C,MAAQ,WACvB,GAAIjlC,KAAKklC,UAEP,OADAllC,KAAK2uC,MAAQ3uC,KAAK2uC,KAAK1J,QAChBjlC,KAET,IAAI6yC,EAAa7yC,KAAKf,YACtB,OAAO4zC,EAAWW,SAAWX,EAAWW,OAASC,GAAWzzC,KAAM2jC,QAGpE+O,GAAO9iD,UAAU2oB,IAAM,SAASle,EAAGgmB,GACjC,IAAKrgB,KAAKwY,IAAIne,GACZ,MAAM,IAAIxI,MAAM,2BAA6BwI,EAAI,QAAUi5C,GAAWtzC,OAExE,GAAIA,KAAK2uC,OAAS3uC,KAAK2uC,KAAKn2B,IAAIne,IAE1BgmB,IADargB,KAAKkzC,eAAe74C,GAEnC,OAAO2F,KAGX,IAAI8uC,EAAS9uC,KAAK2uC,MAAQ3uC,KAAK2uC,KAAKp2B,IAAIle,EAAGgmB,GAC3C,OAAIrgB,KAAKklC,WAAa4J,IAAW9uC,KAAK2uC,KAC7B3uC,KAEFyzC,GAAWzzC,KAAM8uC,IAG1B4D,GAAO9iD,UAAUw0C,OAAS,SAAS/pC,GACjC,IAAK2F,KAAKwY,IAAIne,GACZ,OAAO2F,KAET,IAAI8uC,EAAS9uC,KAAK2uC,MAAQ3uC,KAAK2uC,KAAKvK,OAAO/pC,GAC3C,OAAI2F,KAAKklC,WAAa4J,IAAW9uC,KAAK2uC,KAC7B3uC,KAEFyzC,GAAWzzC,KAAM8uC,IAG1B4D,GAAO9iD,UAAU22C,WAAa,WAC5B,OAAOvmC,KAAK2uC,KAAKpI,cAGnBmM,GAAO9iD,UAAUkuC,WAAa,SAAS1rC,EAAMwrC,GAAU,IAAI+D,EAAS3hC,KAClE,OAAO83B,EAAc93B,KAAKkzC,gBAAgBh6C,KAAI,SAASoK,EAAGjJ,GAAK,OAAOsnC,EAAOruC,IAAI+G,MAAKyjC,WAAW1rC,EAAMwrC,IAGzG8U,GAAO9iD,UAAUyqC,UAAY,SAASp5B,EAAI28B,GAAU,IAAI+D,EAAS3hC,KAC/D,OAAO83B,EAAc93B,KAAKkzC,gBAAgBh6C,KAAI,SAASoK,EAAGjJ,GAAK,OAAOsnC,EAAOruC,IAAI+G,MAAKggC,UAAUp5B,EAAI28B,IAGtG8U,GAAO9iD,UAAU42C,cAAgB,SAASI,GACxC,GAAIA,IAAY5mC,KAAKklC,UACnB,OAAOllC,KAET,IAAI8uC,EAAS9uC,KAAK2uC,MAAQ3uC,KAAK2uC,KAAKnI,cAAcI,GAClD,OAAKA,EAKE6M,GAAWzzC,KAAM8uC,EAAQlI,IAJ9B5mC,KAAKklC,UAAY0B,EACjB5mC,KAAK2uC,KAAOG,EACL9uC,OAMb,IAAImzC,GAAkBT,GAAO9iD,UAkB7B,SAAS6jD,GAAWC,EAAYx6C,EAAK0tC,GACnC,IAAI+M,EAAShkD,OAAOoE,OAAOpE,OAAOyoB,eAAes7B,IAGjD,OAFAC,EAAOhF,KAAOz1C,EACdy6C,EAAOzO,UAAY0B,EACZ+M,EAGT,SAASL,GAAWK,GAClB,OAAOA,EAAOV,OAASU,EAAO10C,YAAYzM,MAAQ,SAWpD,SAASsgD,GAAQljD,EAAW4C,GAC1B7C,OAAOyD,eAAexD,EAAW4C,EAAM,CACrCc,IAAK,WACH,OAAO0M,KAAK1M,IAAId,IAElB+lB,IAAK,SAAS7kB,GACZgtC,GAAU1gC,KAAKklC,UAAW,sCAC1BllC,KAAKuY,IAAI/lB,EAAMkB,MASnB,SAASylC,GAAIzlC,GACX,OAAOA,QAAwCkgD,KAC7CC,GAAMngD,KAAWolC,EAAUplC,GAASA,EACpCkgD,KAAWhQ,eAAc,SAASrrB,GAChC,IAAI6hB,EAAOhC,EAAY1kC,GACvBgwC,GAAkBtJ,EAAKtT,MACvBsT,EAAKhgC,SAAQ,SAASimB,GAAK,OAAO9H,EAAIu7B,IAAIzzB,SA+HlD,SAASwzB,GAAME,GACb,SAAUA,IAAYA,EAASC,KA1LjCb,GAAsB,OAAIA,GAAgB/O,OAC1C+O,GAAgB9O,SAChB8O,GAAgBnK,SAAWjC,GAAaiC,SACxCmK,GAAgB/N,MAAQ2B,GAAa3B,MACrC+N,GAAgB7N,UAAYyB,GAAazB,UACzC6N,GAAgB1N,QAAUsB,GAAatB,QACvC0N,GAAgBzN,UAAYqB,GAAarB,UACzCyN,GAAgBvN,cAAgBmB,GAAanB,cAC7CuN,GAAgBrN,YAAciB,GAAajB,YAC3CqN,GAAgBlP,MAAQ8C,GAAa9C,MACrCkP,GAAgB7O,OAASyC,GAAazC,OACtC6O,GAAgBhP,SAAW4C,GAAa5C,SACxCgP,GAAgBvP,cAAgBmD,GAAanD,cAC7CuP,GAAgB7M,UAAYS,GAAaT,UACzC6M,GAAgB1M,YAAcM,GAAaN,YAkC3ChP,EAAY0B,GAAKkI,IAcflI,GAAImE,GAAK,WACP,OAAOt9B,KAAK2C,YAGdw2B,GAAI8a,SAAW,SAASvgD,GACtB,OAAOsM,KAAK83B,EAAcpkC,GAAOwgD,WAGnC/a,GAAIvpC,UAAU4V,SAAW,WACvB,OAAOxF,KAAKu9B,WAAW,QAAS,MAKlCpE,GAAIvpC,UAAU4oB,IAAM,SAAS9kB,GAC3B,OAAOsM,KAAK2uC,KAAKn2B,IAAI9kB,IAKvBylC,GAAIvpC,UAAUkkD,IAAM,SAASpgD,GAC3B,OAAOygD,GAAUn0C,KAAMA,KAAK2uC,KAAKp2B,IAAI7kB,GAAO,KAG9CylC,GAAIvpC,UAAUw0C,OAAS,SAAS1wC,GAC9B,OAAOygD,GAAUn0C,KAAMA,KAAK2uC,KAAKvK,OAAO1wC,KAG1CylC,GAAIvpC,UAAUq1C,MAAQ,WACpB,OAAOkP,GAAUn0C,KAAMA,KAAK2uC,KAAK1J,UAKnC9L,GAAIvpC,UAAUwkD,MAAQ,WAAY,IAAI5O,EAAQhO,EAAQ1nC,KAAK6S,UAAW,GAEpE,OAAqB,KADrB6iC,EAAQA,EAAM1sB,QAAO,SAASwK,GAAK,OAAkB,IAAXA,EAAEwD,SAClCp3B,OACDsQ,KAES,IAAdA,KAAK8mB,MAAe9mB,KAAKklC,WAA8B,IAAjBM,EAAM91C,OAGzCsQ,KAAK4jC,eAAc,SAASrrB,GACjC,IAAK,IAAI2hB,EAAK,EAAGA,EAAKsL,EAAM91C,OAAQwqC,IAClC9B,EAAYoN,EAAMtL,IAAK9/B,SAAQ,SAAS1G,GAAS,OAAO6kB,EAAIu7B,IAAIpgD,SAJ3DsM,KAAKf,YAAYumC,EAAM,KASlCrM,GAAIvpC,UAAUykD,UAAY,WAAY,IAAI7O,EAAQhO,EAAQ1nC,KAAK6S,UAAW,GACxE,GAAqB,IAAjB6iC,EAAM91C,OACR,OAAOsQ,KAETwlC,EAAQA,EAAMtsC,KAAI,SAASkhC,GAAQ,OAAOhC,EAAYgC,MACtD,IAAIka,EAAct0C,KAClB,OAAOA,KAAK4jC,eAAc,SAASrrB,GACjC+7B,EAAYl6C,SAAQ,SAAS1G,GACtB8xC,EAAMrF,OAAM,SAAS/F,GAAQ,OAAOA,EAAKoH,SAAS9tC,OACrD6kB,EAAI6rB,OAAO1wC,UAMnBylC,GAAIvpC,UAAU2kD,SAAW,WAAY,IAAI/O,EAAQhO,EAAQ1nC,KAAK6S,UAAW,GACvE,GAAqB,IAAjB6iC,EAAM91C,OACR,OAAOsQ,KAETwlC,EAAQA,EAAMtsC,KAAI,SAASkhC,GAAQ,OAAOhC,EAAYgC,MACtD,IAAIka,EAAct0C,KAClB,OAAOA,KAAK4jC,eAAc,SAASrrB,GACjC+7B,EAAYl6C,SAAQ,SAAS1G,GACvB8xC,EAAM9Z,MAAK,SAAS0O,GAAQ,OAAOA,EAAKoH,SAAS9tC,OACnD6kB,EAAI6rB,OAAO1wC,UAMnBylC,GAAIvpC,UAAUw1C,MAAQ,WACpB,OAAOplC,KAAKo0C,MAAMl4C,MAAM8D,KAAM2C,YAGhCw2B,GAAIvpC,UAAU01C,UAAY,SAASC,GAAS,IAAIC,EAAQhO,EAAQ1nC,KAAK6S,UAAW,GAC9E,OAAO3C,KAAKo0C,MAAMl4C,MAAM8D,KAAMwlC,IAGhCrM,GAAIvpC,UAAUm2C,KAAO,SAASC,GAE5B,OAAOwO,GAAWtO,GAAYlmC,KAAMgmC,KAGtC7M,GAAIvpC,UAAUu2C,OAAS,SAASC,EAAQJ,GAEtC,OAAOwO,GAAWtO,GAAYlmC,KAAMgmC,EAAYI,KAGlDjN,GAAIvpC,UAAU22C,WAAa,WACzB,OAAOvmC,KAAK2uC,KAAKpI,cAGnBpN,GAAIvpC,UAAUyqC,UAAY,SAASp5B,EAAI28B,GAAU,IAAI+D,EAAS3hC,KAC5D,OAAOA,KAAK2uC,KAAKtU,WAAU,SAAS/2B,EAAGjJ,GAAK,OAAO4G,EAAG5G,EAAGA,EAAGsnC,KAAU/D,IAGxEzE,GAAIvpC,UAAUkuC,WAAa,SAAS1rC,EAAMwrC,GACxC,OAAO59B,KAAK2uC,KAAKz1C,KAAI,SAASoK,EAAGjJ,GAAK,OAAOA,KAAIyjC,WAAW1rC,EAAMwrC,IAGpEzE,GAAIvpC,UAAU42C,cAAgB,SAASI,GACrC,GAAIA,IAAY5mC,KAAKklC,UACnB,OAAOllC,KAET,IAAI8uC,EAAS9uC,KAAK2uC,KAAKnI,cAAcI,GACrC,OAAKA,EAKE5mC,KAAKy0C,OAAO3F,EAAQlI,IAJzB5mC,KAAKklC,UAAY0B,EACjB5mC,KAAK2uC,KAAOG,EACL9uC,OAUbm5B,GAAI0a,MAAQA,GAEZ,IAiCIa,GAjCAV,GAAkB,wBAElBW,GAAexb,GAAIvpC,UAYvB,SAASukD,GAAU57B,EAAKu2B,GACtB,OAAIv2B,EAAI2sB,WACN3sB,EAAIuO,KAAOgoB,EAAOhoB,KAClBvO,EAAIo2B,KAAOG,EACJv2B,GAEFu2B,IAAWv2B,EAAIo2B,KAAOp2B,EACX,IAAhBu2B,EAAOhoB,KAAavO,EAAIq8B,UACxBr8B,EAAIk8B,OAAO3F,GAGf,SAAS+F,GAAQ37C,EAAK0tC,GACpB,IAAIruB,EAAM5oB,OAAOoE,OAAO4gD,IAIxB,OAHAp8B,EAAIuO,KAAO5tB,EAAMA,EAAI4tB,KAAO,EAC5BvO,EAAIo2B,KAAOz1C,EACXqf,EAAI2sB,UAAY0B,EACTruB,EAIT,SAASq7B,KACP,OAAOc,KAAcA,GAAYG,GAAQlR,OAOzC,SAAS6Q,GAAW9gD,GAClB,OAAOA,QAAwCohD,KAC7CC,GAAarhD,GAASA,EACtBohD,KAAkBlR,eAAc,SAASrrB,GACvC,IAAI6hB,EAAOhC,EAAY1kC,GACvBgwC,GAAkBtJ,EAAKtT,MACvBsT,EAAKhgC,SAAQ,SAASimB,GAAK,OAAO9H,EAAIu7B,IAAIzzB,SAiBlD,SAAS00B,GAAaC,GACpB,OAAOnB,GAAMmB,IAAoBlc,EAAUkc,GA/D7CL,GAAaX,KAAmB,EAChCW,GAAmB,OAAIA,GAAavQ,OACpCuQ,GAAajP,UAAYiP,GAAavP,MACtCuP,GAAa/O,cAAgB+O,GAAarP,UAC1CqP,GAAa/Q,cAAgBmD,GAAanD,cAC1C+Q,GAAarO,UAAYS,GAAaT,UACtCqO,GAAalO,YAAcM,GAAaN,YAExCkO,GAAaC,QAAUhB,GACvBe,GAAaF,OAASI,GA0BtBpd,EAAY+c,GAAYrb,IActBqb,GAAWlX,GAAK,WACd,OAAOt9B,KAAK2C,YAGd6xC,GAAWP,SAAW,SAASvgD,GAC7B,OAAOsM,KAAK83B,EAAcpkC,GAAOwgD,WAGnCM,GAAW5kD,UAAU4V,SAAW,WAC9B,OAAOxF,KAAKu9B,WAAW,eAAgB,MAQ3CiX,GAAWO,aAAeA,GAE1B,IAcIE,GAdAC,GAAsBV,GAAW5kD,UAMrC,SAASulD,GAAej8C,EAAK0tC,GAC3B,IAAIruB,EAAM5oB,OAAOoE,OAAOmhD,IAIxB,OAHA38B,EAAIuO,KAAO5tB,EAAMA,EAAI4tB,KAAO,EAC5BvO,EAAIo2B,KAAOz1C,EACXqf,EAAI2sB,UAAY0B,EACTruB,EAIT,SAASu8B,KACP,OAAOG,KAAsBA,GAAoBE,GAAe7G,OAOhE,SAAS8G,GAAM1hD,GACb,OAAOA,QAAwC2hD,KAC7CC,GAAQ5hD,GAASA,EACjB2hD,KAAaE,WAAW7hD,GAkL9B,SAAS4hD,GAAQE,GACf,SAAUA,IAAcA,EAAWC,KA5MrCP,GAAoBlc,IAAuB,EAE3Ckc,GAAoBN,QAAUE,GAC9BI,GAAoBT,OAASU,GAe7B1d,EAAY2d,GAAOhU,IAUjBgU,GAAM9X,GAAK,WACT,OAAOt9B,KAAK2C,YAGdyyC,GAAMxlD,UAAU4V,SAAW,WACzB,OAAOxF,KAAKu9B,WAAW,UAAW,MAKpC6X,GAAMxlD,UAAU0D,IAAM,SAASsI,EAAO0lC,GACpC,IAAI1uC,EAAOoN,KAAK01C,MAEhB,IADA95C,EAAQ2+B,EAAUv6B,KAAMpE,GACjBhJ,GAAQgJ,KACbhJ,EAAOA,EAAK8K,KAEd,OAAO9K,EAAOA,EAAKc,MAAQ4tC,GAG7B8T,GAAMxlD,UAAU+lD,KAAO,WACrB,OAAO31C,KAAK01C,OAAS11C,KAAK01C,MAAMhiD,OAKlC0hD,GAAMxlD,UAAUI,KAAO,WACrB,GAAyB,IAArB2S,UAAUjT,OACZ,OAAOsQ,KAIT,IAFA,IAAI8nC,EAAU9nC,KAAK8mB,KAAOnkB,UAAUjT,OAChCkD,EAAOoN,KAAK01C,MACPxb,EAAKv3B,UAAUjT,OAAS,EAAGwqC,GAAM,EAAGA,IAC3CtnC,EAAO,CACLc,MAAOiP,UAAUu3B,GACjBx8B,KAAM9K,GAGV,OAAIoN,KAAKklC,WACPllC,KAAK8mB,KAAOghB,EACZ9nC,KAAK01C,MAAQ9iD,EACboN,KAAKigC,YAASvtC,EACdsN,KAAKmlC,WAAY,EACVnlC,MAEF41C,GAAU9N,EAASl1C,IAG5BwiD,GAAMxlD,UAAUimD,QAAU,SAASzb,GAEjC,GAAkB,KADlBA,EAAOnC,EAAgBmC,IACdtT,KACP,OAAO9mB,KAET0jC,GAAkBtJ,EAAKtT,MACvB,IAAIghB,EAAU9nC,KAAK8mB,KACfl0B,EAAOoN,KAAK01C,MAQhB,OAPAtb,EAAKwD,UAAUxjC,SAAQ,SAAS1G,GAC9Bo0C,IACAl1C,EAAO,CACLc,MAAOA,EACPgK,KAAM9K,MAGNoN,KAAKklC,WACPllC,KAAK8mB,KAAOghB,EACZ9nC,KAAK01C,MAAQ9iD,EACboN,KAAKigC,YAASvtC,EACdsN,KAAKmlC,WAAY,EACVnlC,MAEF41C,GAAU9N,EAASl1C,IAG5BwiD,GAAMxlD,UAAU8V,IAAM,WACpB,OAAO1F,KAAKrL,MAAM,IAGpBygD,GAAMxlD,UAAUo8C,QAAU,WACxB,OAAOhsC,KAAKhQ,KAAKkM,MAAM8D,KAAM2C,YAG/ByyC,GAAMxlD,UAAU2lD,WAAa,SAASnb,GACpC,OAAOp6B,KAAK61C,QAAQzb,IAGtBgb,GAAMxlD,UAAUO,MAAQ,WACtB,OAAO6P,KAAK0F,IAAIxJ,MAAM8D,KAAM2C,YAG9ByyC,GAAMxlD,UAAUq1C,MAAQ,WACtB,OAAkB,IAAdjlC,KAAK8mB,KACA9mB,KAELA,KAAKklC,WACPllC,KAAK8mB,KAAO,EACZ9mB,KAAK01C,WAAQhjD,EACbsN,KAAKigC,YAASvtC,EACdsN,KAAKmlC,WAAY,EACVnlC,MAEFq1C,MAGTD,GAAMxlD,UAAU+E,MAAQ,SAASgmC,EAAOC,GACtC,GAAIF,EAAWC,EAAOC,EAAK56B,KAAK8mB,MAC9B,OAAO9mB,KAET,IAAIqwC,EAAgBxV,EAAaF,EAAO36B,KAAK8mB,MAE7C,GADkBiU,EAAWH,EAAK56B,KAAK8mB,QACnB9mB,KAAK8mB,KAEvB,OAAOsa,GAAkBxxC,UAAU+E,MAAM7E,KAAKkQ,KAAM26B,EAAOC,GAI7D,IAFA,IAAIkN,EAAU9nC,KAAK8mB,KAAOupB,EACtBz9C,EAAOoN,KAAK01C,MACTrF,KACLz9C,EAAOA,EAAK8K,KAEd,OAAIsC,KAAKklC,WACPllC,KAAK8mB,KAAOghB,EACZ9nC,KAAK01C,MAAQ9iD,EACboN,KAAKigC,YAASvtC,EACdsN,KAAKmlC,WAAY,EACVnlC,MAEF41C,GAAU9N,EAASl1C,IAK5BwiD,GAAMxlD,UAAU42C,cAAgB,SAASI,GACvC,OAAIA,IAAY5mC,KAAKklC,UACZllC,KAEJ4mC,EAKEgP,GAAU51C,KAAK8mB,KAAM9mB,KAAK01C,MAAO9O,EAAS5mC,KAAKigC,SAJpDjgC,KAAKklC,UAAY0B,EACjB5mC,KAAKmlC,WAAY,EACVnlC,OAOXo1C,GAAMxlD,UAAUyqC,UAAY,SAASp5B,EAAI28B,GACvC,GAAIA,EACF,OAAO59B,KAAK49B,UAAUvD,UAAUp5B,GAIlC,IAFA,IAAIsgC,EAAa,EACbnuB,EAAOpT,KAAK01C,MACTtiC,IACsC,IAAvCnS,EAAGmS,EAAK1f,MAAO6tC,IAAcvhC,OAGjCoT,EAAOA,EAAK1V,KAEd,OAAO6jC,GAGT6T,GAAMxlD,UAAUkuC,WAAa,SAAS1rC,EAAMwrC,GAC1C,GAAIA,EACF,OAAO59B,KAAK49B,UAAUE,WAAW1rC,GAEnC,IAAImvC,EAAa,EACbnuB,EAAOpT,KAAK01C,MAChB,OAAO,IAAIla,GAAS,WAClB,GAAIpoB,EAAM,CACR,IAAI1f,EAAQ0f,EAAK1f,MAEjB,OADA0f,EAAOA,EAAK1V,KACL+9B,EAAcrpC,EAAMmvC,IAAc7tC,GAE3C,MAn5HG,CAAEA,WAAOhB,EAAWiL,MAAM,OA45HnCy3C,GAAME,QAAUA,GAEhB,IAoBIQ,GApBAL,GAAoB,0BAEpBM,GAAiBX,GAAMxlD,UAQ3B,SAASgmD,GAAU9uB,EAAMl0B,EAAMg0C,EAASzE,GACtC,IAAIjpC,EAAMvJ,OAAOoE,OAAOgiD,IAMxB,OALA78C,EAAI4tB,KAAOA,EACX5tB,EAAIw8C,MAAQ9iD,EACZsG,EAAIgsC,UAAY0B,EAChB1tC,EAAI+mC,OAASkC,EACbjpC,EAAIisC,WAAY,EACTjsC,EAIT,SAASm8C,KACP,OAAOS,KAAgBA,GAAcF,GAAU,IAMjD,SAASI,GAAMte,EAAMpgB,GACnB,IAAI2+B,EAAY,SAASjiD,GAAQ0jC,EAAK9nC,UAAUoE,GAAOsjB,EAAQtjB,IAI/D,OAHArE,OAAOoZ,KAAKuO,GAASld,QAAQ67C,GAC7BtmD,OAAOumD,uBACLvmD,OAAOumD,sBAAsB5+B,GAASld,QAAQ67C,GACzCve,EA9BTqe,GAAeN,KAAqB,EACpCM,GAAenS,cAAgBmD,GAAanD,cAC5CmS,GAAezP,UAAYS,GAAaT,UACxCyP,GAAetP,YAAcM,GAAaN,YAC1CsP,GAAexP,WAAaQ,GAAaR,WA6BzC5O,EAAS6D,SAAWA,EAEpBwa,GAAMre,EAAU,CAIdgG,QAAS,WACP+F,GAAkB1jC,KAAK8mB,MACvB,IAAIyB,EAAQ,IAAI5xB,MAAMqJ,KAAK8mB,MAAQ,GAEnC,OADA9mB,KAAKozC,WAAW/Y,WAAU,SAASha,EAAG7wB,GAAM+4B,EAAM/4B,GAAK6wB,KAChDkI,GAGTuU,aAAc,WACZ,OAAO,IAAIuS,GAAkBrvC,OAG/Bm2C,KAAM,WACJ,OAAOn2C,KAAKq8B,QAAQnjC,KAClB,SAASxF,GAAS,OAAOA,GAA+B,mBAAfA,EAAMyiD,KAAsBziD,EAAMyiD,OAASziD,KACpF0iD,UAGJx1B,OAAQ,WACN,OAAO5gB,KAAKq8B,QAAQnjC,KAClB,SAASxF,GAAS,OAAOA,GAAiC,mBAAjBA,EAAMktB,OAAwBltB,EAAMktB,SAAWltB,KACxF0iD,UAGJ1Z,WAAY,WACV,OAAO,IAAIuS,GAAgBjvC,MAAM,IAGnC2/B,MAAO,WAEL,OAAOnb,GAAIxkB,KAAK08B,eAGlB2Z,SAAU,WACR3S,GAAkB1jC,KAAK8mB,MACvB,IAAI3yB,EAAS,GAEb,OADA6L,KAAKq6B,WAAU,SAASha,EAAGhmB,GAAMlG,EAAOkG,GAAKgmB,KACtClsB,GAGTmiD,aAAc,WAEZ,OAAOrQ,GAAWjmC,KAAK08B,eAGzB6Z,aAAc,WAEZ,OAAO/B,GAAWzc,EAAQ/3B,MAAQA,KAAKozC,WAAapzC,OAGtDw2C,MAAO,WAEL,OAAOrd,GAAIpB,EAAQ/3B,MAAQA,KAAKozC,WAAapzC,OAG/Cg9B,SAAU,WACR,OAAO,IAAIsS,GAActvC,OAG3Bq8B,MAAO,WACL,OAAOnE,EAAUl4B,MAAQA,KAAK88B,eAC5B/E,EAAQ/3B,MAAQA,KAAK08B,aACrB18B,KAAKg9B,YAGTyZ,QAAS,WAEP,OAAOrB,GAAMrd,EAAQ/3B,MAAQA,KAAKozC,WAAapzC,OAGjD0/B,OAAQ,WAEN,OAAOiL,GAAK5S,EAAQ/3B,MAAQA,KAAKozC,WAAapzC,OAMhDwF,SAAU,WACR,MAAO,cAGT+3B,WAAY,SAAS3qC,EAAMuJ,GACzB,OAAkB,IAAd6D,KAAK8mB,KACAl0B,EAAOuJ,EAETvJ,EAAO,IAAMoN,KAAKq8B,QAAQnjC,IAAI8G,KAAK02C,kBAAkBn6C,KAAK,MAAQ,IAAMJ,GAMjFG,OAAQ,WAAY,IAAImhB,EAAS+Z,EAAQ1nC,KAAK6S,UAAW,GACvD,OAAO2vC,GAAMtyC,KAAM+wC,GAAc/wC,KAAMyd,KAGzC+jB,SAAU,SAASC,GACjB,OAAOzhC,KAAK0rB,MAAK,SAASh4B,GAAS,OAAOutB,GAAGvtB,EAAO+tC,OAGtDxa,QAAS,WACP,OAAOjnB,KAAK89B,WAAW1C,IAGzB+E,MAAO,SAAS8P,EAAWxsC,GACzBigC,GAAkB1jC,KAAK8mB,MACvB,IAAIvS,GAAc,EAOlB,OANAvU,KAAKq6B,WAAU,SAASha,EAAGhmB,EAAGrH,GAC5B,IAAKi9C,EAAUngD,KAAK2T,EAAS4c,EAAGhmB,EAAGrH,GAEjC,OADAuhB,GAAc,GACP,KAGJA,GAGTuE,OAAQ,SAASm3B,EAAWxsC,GAC1B,OAAO6uC,GAAMtyC,KAAMgwC,GAAchwC,KAAMiwC,EAAWxsC,GAAS,KAG7DnK,KAAM,SAAS22C,EAAWxsC,EAAS69B,GACjC,IAAIrC,EAAQj/B,KAAK22C,UAAU1G,EAAWxsC,GACtC,OAAOw7B,EAAQA,EAAM,GAAKqC,GAG5BlnC,QAAS,SAAS08C,EAAYrzC,GAE5B,OADAigC,GAAkB1jC,KAAK8mB,MAChB9mB,KAAKq6B,UAAU52B,EAAUqzC,EAAW7iD,KAAKwP,GAAWqzC,IAG7Dv6C,KAAM,SAASw6C,GACbrT,GAAkB1jC,KAAK8mB,MACvBiwB,OAA0BrkD,IAAdqkD,EAA0B,GAAKA,EAAY,IACvD,IAAIC,EAAS,GACTC,GAAU,EAKd,OAJAj3C,KAAKq6B,WAAU,SAASha,GACtB42B,EAAWA,GAAU,EAAUD,GAAUD,EACzCC,GAAU32B,QAAgCA,EAAE7a,WAAa,MAEpDwxC,GAGTjuC,KAAM,WACJ,OAAO/I,KAAK89B,WAAW5C,IAGzBhiC,IAAK,SAASktC,EAAQ3iC,GACpB,OAAO6uC,GAAMtyC,KAAM6vC,GAAW7vC,KAAMomC,EAAQ3iC,KAG9C2S,OAAQ,SAAS8gC,EAASC,EAAkB1zC,GAE1C,IAAI2zC,EACAC,EAcJ,OAhBA3T,GAAkB1jC,KAAK8mB,MAGnBnkB,UAAUjT,OAAS,EACrB2nD,GAAW,EAEXD,EAAYD,EAEdn3C,KAAKq6B,WAAU,SAASha,EAAGhmB,EAAGrH,GACxBqkD,GACFA,GAAW,EACXD,EAAY/2B,GAEZ+2B,EAAYF,EAAQpnD,KAAK2T,EAAS2zC,EAAW/2B,EAAGhmB,EAAGrH,MAGhDokD,GAGTE,YAAa,SAASJ,EAASC,EAAkB1zC,GAC/C,IAAI8zC,EAAWv3C,KAAK08B,aAAakB,UACjC,OAAO2Z,EAASnhC,OAAOla,MAAMq7C,EAAU50C,YAGzCi7B,QAAS,WACP,OAAO0U,GAAMtyC,KAAM+vC,GAAe/vC,MAAM,KAG1CrL,MAAO,SAASgmC,EAAOC,GACrB,OAAO0X,GAAMtyC,KAAMmwC,GAAanwC,KAAM26B,EAAOC,GAAK,KAGpDlP,KAAM,SAASukB,EAAWxsC,GACxB,OAAQzD,KAAKmgC,MAAMqX,GAAIvH,GAAYxsC,IAGrCsiC,KAAM,SAASC,GACb,OAAOsM,GAAMtyC,KAAMkmC,GAAYlmC,KAAMgmC,KAGvCvoB,OAAQ,WACN,OAAOzd,KAAK89B,WAAW3C,IAMzBsc,QAAS,WACP,OAAOz3C,KAAKrL,MAAM,GAAI,IAGxB+iD,QAAS,WACP,YAAqBhlD,IAAdsN,KAAK8mB,KAAmC,IAAd9mB,KAAK8mB,MAAc9mB,KAAK0rB,MAAK,WAAa,OAAO,MAGpFvxB,MAAO,SAAS81C,EAAWxsC,GACzB,OAAO02B,EACL8V,EAAYjwC,KAAKq8B,QAAQvjB,OAAOm3B,EAAWxsC,GAAWzD,OAI1D23C,QAAS,SAASC,EAASn0C,GACzB,OA10CJ,SAAwBw4B,EAAU2b,EAASn0C,GACzC,IAAIo0C,EAASrzB,KAAM8hB,YAQnB,OAPArK,EAAS5B,WAAU,SAASha,EAAGhmB,GAC7Bw9C,EAAOvT,OACLsT,EAAQ9nD,KAAK2T,EAAS4c,EAAGhmB,EAAG4hC,GAC5B,GACA,SAAS58B,GAAK,OAAOA,EAAI,QAGtBw4C,EAAOpR,cAi0CLqR,CAAe93C,KAAM43C,EAASn0C,IAGvCs8B,OAAQ,SAAS6B,GACf,OAAO5B,GAAUhgC,KAAM4hC,IAGzB/E,SAAU,WACR,IAAIZ,EAAWj8B,KACf,GAAIi8B,EAASwB,OAEX,OAAO,IAAIY,GAASpC,EAASwB,QAE/B,IAAIsa,EAAkB9b,EAASI,QAAQnjC,IAAI8+C,IAAalb,eAExD,OADAib,EAAgBpb,aAAe,WAAa,OAAOV,EAASI,SACrD0b,GAGTE,UAAW,SAAShI,EAAWxsC,GAC7B,OAAOzD,KAAK8Y,OAAO0+B,GAAIvH,GAAYxsC,IAGrCkzC,UAAW,SAAS1G,EAAWxsC,EAAS69B,GACtC,IAAIsV,EAAQtV,EAOZ,OANAthC,KAAKq6B,WAAU,SAASha,EAAGhmB,EAAGrH,GAC5B,GAAIi9C,EAAUngD,KAAK2T,EAAS4c,EAAGhmB,EAAGrH,GAEhC,OADA4jD,EAAQ,CAACv8C,EAAGgmB,IACL,KAGJu2B,GAGTiE,QAAS,SAAS5K,EAAWxsC,GAC3B,IAAIw7B,EAAQj/B,KAAK22C,UAAU1G,EAAWxsC,GACtC,OAAOw7B,GAASA,EAAM,IAGxBiZ,SAAU,SAASjI,EAAWxsC,EAAS69B,GACrC,OAAOthC,KAAK08B,aAAakB,UAAUtkC,KAAK22C,EAAWxsC,EAAS69B,IAG9DuV,cAAe,SAAS5G,EAAWxsC,EAAS69B,GAC1C,OAAOthC,KAAK08B,aAAakB,UAAU+Y,UAAU1G,EAAWxsC,EAAS69B,IAGnEwZ,YAAa,SAAS7K,EAAWxsC,GAC/B,OAAOzD,KAAK08B,aAAakB,UAAUid,QAAQ5K,EAAWxsC,IAGxD00C,MAAO,WACL,OAAOn4C,KAAK1G,KAAKghC,IAGnB8d,QAAS,SAAShS,EAAQ3iC,GACxB,OAAO6uC,GAAMtyC,KApkCjB,SAAwBi8B,EAAUmK,EAAQ3iC,GACxC,IAAI40C,EAAS5F,GAAcxW,GAC3B,OAAOA,EAASI,QAAQnjC,KACtB,SAASmnB,EAAGhmB,GAAK,OAAOg+C,EAAOjS,EAAOt2C,KAAK2T,EAAS4c,EAAGhmB,EAAG4hC,OAC1DkV,SAAQ,GAgkCWmH,CAAet4C,KAAMomC,EAAQ3iC,KAGlD0tC,QAAS,SAASG,GAChB,OAAOgB,GAAMtyC,KAAMqxC,GAAerxC,KAAMsxC,GAAO,KAGjD3U,aAAc,WACZ,OAAO,IAAI4S,GAAoBvvC,OAGjC1M,IAAK,SAASilD,EAAWjX,GACvB,OAAOthC,KAAK1G,MAAK,SAASgK,EAAGtP,GAAO,OAAOitB,GAAGjtB,EAAKukD,UAAa7lD,EAAW4uC,IAG7EkX,MAAO,SAASC,EAAenX,GAM7B,IALA,IAIIT,EAJA6X,EAAS14C,KAGTo6B,EAAO4K,GAAcyT,KAEhB5X,EAAOzG,EAAK18B,QAAQC,MAAM,CACjC,IAAI3J,EAAM6sC,EAAKntC,MAEf,IADAglD,EAASA,GAAUA,EAAOplD,IAAMolD,EAAOplD,IAAIU,EAAKulC,GAAWA,KAC5CA,EACb,OAAO+H,EAGX,OAAOoX,GAGTC,QAAS,SAASf,EAASn0C,GACzB,OAp5CJ,SAAwBw4B,EAAU2b,EAASn0C,GACzC,IAAIm1C,EAAc7gB,EAAQkE,GACtB4b,GAAU/e,EAAUmD,GAAYgK,KAAezhB,MAAO8hB,YAC1DrK,EAAS5B,WAAU,SAASha,EAAGhmB,GAC7Bw9C,EAAOvT,OACLsT,EAAQ9nD,KAAK2T,EAAS4c,EAAGhmB,EAAG4hC,IAC5B,SAAS58B,GAAK,OAAQA,EAAIA,GAAK,IAAMrP,KAAK4oD,EAAc,CAACv+C,EAAGgmB,GAAKA,GAAIhhB,QAGzE,IAAIg5C,EAAS5F,GAAcxW,GAC3B,OAAO4b,EAAO3+C,KAAI,SAAS6gC,GAAO,OAAOuY,GAAMrW,EAAUoc,EAAOte,OA04CvD8e,CAAe74C,KAAM43C,EAASn0C,IAGvC+U,IAAK,SAAS+/B,GACZ,OAAOv4C,KAAK1M,IAAIilD,EAAWhf,KAAaA,GAG1Cuf,MAAO,SAASL,GACd,OAAOz4C,KAAKw4C,MAAMC,EAAelf,KAAaA,GAGhDwf,SAAU,SAAS3e,GAEjB,OADAA,EAAgC,mBAAlBA,EAAKoH,SAA0BpH,EAAOzC,EAASyC,GACtDp6B,KAAKmgC,OAAM,SAASzsC,GAAS,OAAO0mC,EAAKoH,SAAS9tC,OAG3DslD,WAAY,SAAS5e,GAEnB,OADAA,EAAgC,mBAAlBA,EAAK2e,SAA0B3e,EAAOzC,EAASyC,IACjD2e,SAAS/4C,OAGvB+6C,MAAO,SAAStZ,GACd,OAAOzhC,KAAK66C,SAAQ,SAASnnD,GAAS,OAAOutB,GAAGvtB,EAAO+tC,OAGzDyS,OAAQ,WACN,OAAOl0C,KAAKq8B,QAAQnjC,IAAI+/C,IAAWnc,gBAGrCtgB,KAAM,WACJ,OAAOxc,KAAKq8B,QAAQuB,UAAUua,SAGhC6C,UAAW,SAASvZ,GAClB,OAAOzhC,KAAK08B,aAAakB,UAAUmd,MAAMtZ,IAG3C37B,IAAK,SAASkgC,GACZ,OAAO4L,GAAW5xC,KAAMgmC,IAG1BkT,MAAO,SAAS9S,EAAQJ,GACtB,OAAO4L,GAAW5xC,KAAMgmC,EAAYI,IAGtCnL,IAAK,SAAS+K,GACZ,OAAO4L,GAAW5xC,KAAMgmC,EAAamT,GAAInT,GAAcoT,KAGzDC,MAAO,SAASjT,EAAQJ,GACtB,OAAO4L,GAAW5xC,KAAMgmC,EAAamT,GAAInT,GAAcoT,GAAsBhT,IAG/EkT,KAAM,WACJ,OAAOt5C,KAAKrL,MAAM,IAGpB4kD,KAAM,SAASC,GACb,OAAOx5C,KAAKrL,MAAMkR,KAAKC,IAAI,EAAG0zC,KAGhCC,SAAU,SAASD,GACjB,OAAOlH,GAAMtyC,KAAMA,KAAKq8B,QAAQuB,UAAU2b,KAAKC,GAAQ5b,YAGzD8b,UAAW,SAASzJ,EAAWxsC,GAC7B,OAAO6uC,GAAMtyC,KAAM4wC,GAAiB5wC,KAAMiwC,EAAWxsC,GAAS,KAGhEk2C,UAAW,SAAS1J,EAAWxsC,GAC7B,OAAOzD,KAAK05C,UAAUlC,GAAIvH,GAAYxsC,IAGxC0iC,OAAQ,SAASC,EAAQJ,GACvB,OAAOsM,GAAMtyC,KAAMkmC,GAAYlmC,KAAMgmC,EAAYI,KAGnDwT,KAAM,SAASJ,GACb,OAAOx5C,KAAKrL,MAAM,EAAGkR,KAAKC,IAAI,EAAG0zC,KAGnCK,SAAU,SAASL,GACjB,OAAOlH,GAAMtyC,KAAMA,KAAKq8B,QAAQuB,UAAUgc,KAAKJ,GAAQ5b,YAGzDkc,UAAW,SAAS7J,EAAWxsC,GAC7B,OAAO6uC,GAAMtyC,KAn3CjB,SAA0Bi8B,EAAUgU,EAAWxsC,GAC7C,IAAIs2C,EAAerK,GAAazT,GAoChC,OAnCA8d,EAAarc,kBAAoB,SAASz8B,EAAI28B,GAAU,IAAI+D,EAAS3hC,KACnE,GAAI49B,EACF,OAAO59B,KAAKw9B,cAAcnD,UAAUp5B,EAAI28B,GAE1C,IAAI2D,EAAa,EAIjB,OAHAtF,EAAS5B,WAAU,SAASha,EAAGhmB,EAAGrH,GAC/B,OAAOi9C,EAAUngD,KAAK2T,EAAS4c,EAAGhmB,EAAGrH,MAAQuuC,GAActgC,EAAGof,EAAGhmB,EAAGsnC,MAEhEJ,GAETwY,EAAa7a,mBAAqB,SAAS9sC,EAAMwrC,GAAU,IAAI+D,EAAS3hC,KACtE,GAAI49B,EACF,OAAO59B,KAAKw9B,cAAcM,WAAW1rC,EAAMwrC,GAE7C,IAAIlQ,EAAWuO,EAAS6B,WAAW1C,EAAiBwC,GAChDoc,GAAY,EAChB,OAAO,IAAIxe,GAAS,WAClB,IAAKwe,EACH,MA1+FC,CAAEtmD,WAAOhB,EAAWiL,MAAM,GA4+F7B,IAAIkjC,EAAOnT,EAAShwB,OACpB,GAAImjC,EAAKljC,KACP,OAAOkjC,EAET,IAAI5B,EAAQ4B,EAAKntC,MACb2G,EAAI4kC,EAAM,GACV5e,EAAI4e,EAAM,GACd,OAAKgR,EAAUngD,KAAK2T,EAAS4c,EAAGhmB,EAAGsnC,GAI5BvvC,IAASgpC,EAAkByF,EAChCpF,EAAcrpC,EAAMiI,EAAGgmB,EAAGwgB,IAJ1BmZ,GAAY,EAp/FX,CAAEtmD,WAAOhB,EAAWiL,MAAM,QA2/F1Bo8C,EA80CcE,CAAiBj6C,KAAMiwC,EAAWxsC,KAGvDy2C,UAAW,SAASjK,EAAWxsC,GAC7B,OAAOzD,KAAK85C,UAAUtC,GAAIvH,GAAYxsC,IAGxC2vC,SAAU,WACR,OAAOpzC,KAAK88B,gBAMd8F,SAAU,WACR,OAAO5iC,KAAKigC,SAAWjgC,KAAKigC,OAwQhC,SAAsBhE,GACpB,GAAIA,EAASnV,OAAS2Z,IACpB,OAAO,EAET,IAAI0Z,EAAUrhB,EAAUmD,GACpBme,EAAQriB,EAAQkE,GAChBmG,EAAI+X,EAAU,EAAI,EAUtB,OAGF,SAA0BrzB,EAAMsb,GAQ9B,OAPAA,EAAIJ,GAAKI,EAAG,YACZA,EAAIJ,GAAKI,GAAK,GAAKA,KAAO,GAAI,WAC9BA,EAAIJ,GAAKI,GAAK,GAAKA,KAAO,GAAI,GAE9BA,EAAIJ,IADJI,GAAKA,EAAI,WAAa,GAAKtb,GACdsb,IAAM,GAAI,YAEvBA,EAAIH,IADJG,EAAIJ,GAAKI,EAAIA,IAAM,GAAI,aACXA,IAAM,IAVXiY,CATIpe,EAAS5B,UAClB+f,EACED,EACE,SAAS95B,EAAGhmB,GAAM+nC,EAAI,GAAKA,EAAIkY,GAAUnY,GAAK9hB,GAAI8hB,GAAK9nC,IAAM,GAC7D,SAASgmB,EAAGhmB,GAAM+nC,EAAIA,EAAIkY,GAAUnY,GAAK9hB,GAAI8hB,GAAK9nC,IAAM,GAC1D8/C,EACE,SAAS95B,GAAM+hB,EAAI,GAAKA,EAAID,GAAK9hB,GAAK,GACtC,SAASA,GAAM+hB,EAAIA,EAAID,GAAK9hB,GAAK,IAET+hB,GAxRSmY,CAAav6C,UAgBtD,IAAIw6C,GAAoB7iB,EAAS/nC,UACjC4qD,GAAkBhiB,IAAwB,EAC1CgiB,GAAkBjf,GAAmBif,GAAkB/8B,OACvD+8B,GAAkBpE,OAASoE,GAAkB7c,QAC7C6c,GAAkB9D,iBAAmB+D,GACrCD,GAAkBpd,QAClBod,GAAkBnd,SAAW,WAAa,OAAOr9B,KAAKwF,YACtDg1C,GAAkBE,MAAQF,GAAkBpC,QAC5CoC,GAAkBG,SAAWH,GAAkBhZ,SAE/CwU,GAAMle,EAAe,CAInBkX,KAAM,WACJ,OAAOsD,GAAMtyC,KAAMwvC,GAAYxvC,QAGjCi7C,WAAY,SAAS7U,EAAQ3iC,GAAU,IAAIk+B,EAAS3hC,KAC9CuhC,EAAa,EACjB,OAAO+Q,GAAMtyC,KACXA,KAAKq8B,QAAQnjC,KACX,SAASmnB,EAAGhmB,GAAK,OAAO+rC,EAAOt2C,KAAK2T,EAAS,CAACpJ,EAAGgmB,GAAIkhB,IAAcI,MACnEhF,iBAINue,QAAS,SAAS9U,EAAQ3iC,GAAU,IAAIk+B,EAAS3hC,KAC/C,OAAOsyC,GAAMtyC,KACXA,KAAKq8B,QAAQ2S,OAAO91C,KAClB,SAASmB,EAAGgmB,GAAK,OAAO+lB,EAAOt2C,KAAK2T,EAASpJ,EAAGgmB,EAAGshB,MACnDqN,WAMR,IAAImM,GAAyBrjB,EAAcloC,UAmL3C,SAASqpD,GAAU54B,EAAGhmB,GACpB,OAAOA,EAGT,SAAS29C,GAAY33B,EAAGhmB,GACtB,MAAO,CAACA,EAAGgmB,GAGb,SAASm3B,GAAIvH,GACX,OAAO,WACL,OAAQA,EAAU/zC,MAAM8D,KAAM2C,YAIlC,SAASw2C,GAAIlJ,GACX,OAAO,WACL,OAAQA,EAAU/zC,MAAM8D,KAAM2C,YAIlC,SAAS83C,GAAY/mD,GACnB,MAAwB,iBAAVA,EAAqBsJ,KAAKuV,UAAU7e,GAASwe,OAAOxe,GAGpE,SAAS0nD,KACP,OAAOthB,EAAQn3B,WAGjB,SAASy2C,GAAqB/5C,EAAG6kB,GAC/B,OAAO7kB,EAAI6kB,EAAI,EAAI7kB,EAAI6kB,GAAK,EAAI,EAiClC,SAASo2B,GAAUj7C,EAAG6kB,GACpB,OAAO7kB,EAAI6kB,EAAI,YAAc7kB,GAAK,IAAMA,GAAK,GAAK,EAyBpD,OA1QA87C,GAAuBziB,IAAqB,EAC5CyiB,GAAuB5f,GAAmBif,GAAkBvzB,QAC5Dk0B,GAAuB/E,OAASoE,GAAkBnE,SAClD8E,GAAuBzE,iBAAmB,SAASr2B,EAAGhmB,GAAK,OAAO2C,KAAKuV,UAAUlY,GAAK,KAAOogD,GAAYp6B,IAIzG21B,GAAM/d,EAAiB,CAIrByE,WAAY,WACV,OAAO,IAAIuS,GAAgBjvC,MAAM,IAMnC8Y,OAAQ,SAASm3B,EAAWxsC,GAC1B,OAAO6uC,GAAMtyC,KAAMgwC,GAAchwC,KAAMiwC,EAAWxsC,GAAS,KAG7D43C,UAAW,SAASpL,EAAWxsC,GAC7B,IAAIw7B,EAAQj/B,KAAK22C,UAAU1G,EAAWxsC,GACtC,OAAOw7B,EAAQA,EAAM,IAAM,GAG7B7lC,QAAS,SAASqoC,GAChB,IAAIztC,EAAMgM,KAAK+6C,MAAMtZ,GACrB,YAAe/uC,IAARsB,GAAqB,EAAIA,GAGlC0tC,YAAa,SAASD,GACpB,IAAIztC,EAAMgM,KAAKg7C,UAAUvZ,GACzB,YAAe/uC,IAARsB,GAAqB,EAAIA,GAGlC4pC,QAAS,WACP,OAAO0U,GAAMtyC,KAAM+vC,GAAe/vC,MAAM,KAG1CrL,MAAO,SAASgmC,EAAOC,GACrB,OAAO0X,GAAMtyC,KAAMmwC,GAAanwC,KAAM26B,EAAOC,GAAK,KAGpDv+B,OAAQ,SAAST,EAAO0/C,GACtB,IAAIC,EAAU54C,UAAUjT,OAExB,GADA4rD,EAAYz1C,KAAKC,IAAgB,EAAZw1C,EAAe,GACpB,IAAZC,GAA8B,IAAZA,IAAkBD,EACtC,OAAOt7C,KAKTpE,EAAQi/B,EAAaj/B,EAAOA,EAAQ,EAAIoE,KAAK7F,QAAU6F,KAAK8mB,MAC5D,IAAI00B,EAAUx7C,KAAKrL,MAAM,EAAGiH,GAC5B,OAAO02C,GACLtyC,KACY,IAAZu7C,EACEC,EACAA,EAAQl/C,OAAOw9B,EAAQn3B,UAAW,GAAI3C,KAAKrL,MAAMiH,EAAQ0/C,MAO/DG,cAAe,SAASxL,EAAWxsC,GACjC,IAAIw7B,EAAQj/B,KAAK62C,cAAc5G,EAAWxsC,GAC1C,OAAOw7B,EAAQA,EAAM,IAAM,GAG7BkZ,MAAO,WACL,OAAOn4C,KAAK1M,IAAI,IAGlB69C,QAAS,SAASG,GAChB,OAAOgB,GAAMtyC,KAAMqxC,GAAerxC,KAAMsxC,GAAO,KAGjDh+C,IAAK,SAASsI,EAAO0lC,GAEnB,OADA1lC,EAAQ2+B,EAAUv6B,KAAMpE,IACR,GAAMoE,KAAK8mB,OAAS2Z,UACjB/tC,IAAdsN,KAAK8mB,MAAsBlrB,EAAQoE,KAAK8mB,KAC3Cwa,EACAthC,KAAK1G,MAAK,SAASgK,EAAGtP,GAAO,OAAOA,IAAQ4H,SAAQlJ,EAAW4uC,IAGnE9oB,IAAK,SAAS5c,GAEZ,OADAA,EAAQ2+B,EAAUv6B,KAAMpE,KACR,SAAoBlJ,IAAdsN,KAAK8mB,KACzB9mB,KAAK8mB,OAAS2Z,KAAY7kC,EAAQoE,KAAK8mB,MACd,IAAzB9mB,KAAK5G,QAAQwC,KAIjB8/C,UAAW,SAAS3E,GAClB,OAAOzE,GAAMtyC,KAx1CjB,SAA0Bi8B,EAAU8a,GAClC,IAAI4E,EAAqBjM,GAAazT,GA2BtC,OA1BA0f,EAAmB70B,KAAOmV,EAASnV,MAAwB,EAAhBmV,EAASnV,KAAU,EAC9D60B,EAAmBje,kBAAoB,SAASz8B,EAAI28B,GAAU,IAAI+D,EAAS3hC,KACrEuhC,EAAa,EAMjB,OALAtF,EAAS5B,WAAU,SAASha,EAAGhmB,GAC5B,QAASknC,IAAsD,IAAxCtgC,EAAG81C,EAAWxV,IAAcI,MACpB,IAAhC1gC,EAAGof,EAAGkhB,IAAcI,KACpB/D,GAEK2D,GAEToa,EAAmBzc,mBAAqB,SAAS9sC,EAAMwrC,GACrD,IAEIiD,EAFAnT,EAAWuO,EAAS6B,WAAW3C,EAAgByC,GAC/C2D,EAAa,EAEjB,OAAO,IAAI/F,GAAS,WAClB,QAAKqF,GAAQU,EAAa,KACxBV,EAAOnT,EAAShwB,QACPC,KACAkjC,EAGJU,EAAa,EAClB9F,EAAcrpC,EAAMmvC,IAAcwV,GAClCtb,EAAcrpC,EAAMmvC,IAAcV,EAAKntC,MAAOmtC,OAG7C8a,EA4zCcC,CAAiB57C,KAAM+2C,KAG5C8E,WAAY,WACV,IAAItT,EAAY,CAACvoC,MAAM1D,OAAOw9B,EAAQn3B,YAClCm5C,EAAS/J,GAAe/xC,KAAKq8B,QAASlE,EAAWmF,GAAIiL,GACrDwT,EAAcD,EAAO3K,SAAQ,GAIjC,OAHI2K,EAAOh1B,OACTi1B,EAAYj1B,KAAOg1B,EAAOh1B,KAAOyhB,EAAU74C,QAEtC4iD,GAAMtyC,KAAM+7C,IAGrB7H,OAAQ,WACN,OAAOtT,GAAM,EAAG5gC,KAAK8mB,OAGvBtK,KAAM,WACJ,OAAOxc,KAAK1M,KAAK,IAGnBomD,UAAW,SAASzJ,EAAWxsC,GAC7B,OAAO6uC,GAAMtyC,KAAM4wC,GAAiB5wC,KAAMiwC,EAAWxsC,GAAS,KAGhEu4C,IAAK,WACH,IAAIzT,EAAY,CAACvoC,MAAM1D,OAAOw9B,EAAQn3B,YACtC,OAAO2vC,GAAMtyC,KAAM+xC,GAAe/xC,KAAMo7C,GAAe7S,KAGzD0T,QAAS,SAAShK,GAChB,IAAI1J,EAAYzO,EAAQn3B,WAExB,OADA4lC,EAAU,GAAKvoC,KACRsyC,GAAMtyC,KAAM+xC,GAAe/xC,KAAMiyC,EAAQ1J,OAKpDtQ,EAAgBroC,UAAUgpC,IAAuB,EACjDX,EAAgBroC,UAAUopC,IAAuB,EAIjDgd,GAAM5d,EAAa,CAIjB9kC,IAAK,SAASI,EAAO4tC,GACnB,OAAOthC,KAAKwY,IAAI9kB,GAASA,EAAQ4tC,GAGnCE,SAAU,SAAS9tC,GACjB,OAAOsM,KAAKwY,IAAI9kB,IAMlBwgD,OAAQ,WACN,OAAOl0C,KAAKozC,cAKhBhb,EAAYxoC,UAAU4oB,IAAMgiC,GAAkBhZ,SAC9CpJ,EAAYxoC,UAAU+qD,SAAWviB,EAAYxoC,UAAU4xC,SAKvDwU,GAAMhe,EAAUF,EAAcloC,WAC9BomD,GAAM7d,EAAYF,EAAgBroC,WAClComD,GAAM1d,EAAQF,EAAYxoC,WAE1BomD,GAAM7U,GAAiBrJ,EAAcloC,WACrComD,GAAM5U,GAAmBnJ,EAAgBroC,WACzComD,GAAM3U,GAAejJ,EAAYxoC,WAuEjB,CAEd+nC,SAAUA,EAEVE,IAAKA,EACLqJ,WAAYA,GACZ1c,IAAKA,GACLyhB,WAAYA,GACZ0E,KAAMA,GACNyK,MAAOA,GACPjc,IAAKA,GACLqb,WAAYA,GAEZ9B,OAAQA,GACR9R,MAAOA,GACPL,OAAQA,GAERtf,GAAIA,GACJke,OAAQA,IAl2JsEhI,I,6BCMlF,IAAIolT,EAAiB,EAAQ,KAEzB77S,EAAY,EAAQ,KAoGxBlwC,EAAOD,QA9DP,SAAyB4tK,GACvB,MAAO,CACLj/G,gBAAiB,WAEf,OADiBl/C,KAwDlBf,YAAYiye,gBAAgLxwc,GAAU,GAvD9L1gC,KAAKf,YAAYiye,eAAe,OAGzCz2Q,kBAAmB,WACjB,IAAIp7K,EAAQr/C,KAGR2iP,GAAU,EACV0uP,EAAa,WACf1uP,GAAU,GAKZ3iP,KAAKuze,wBAA0Bp1U,EAAOjlK,KAAI,SAAU+6B,GAClD,OAAOA,EAAMw6D,YAAY4iZ,MAa3Brxe,KAAKwze,qBAAuB,IAAIj3J,EAAep+K,GARhC,WACTwkF,GACFtjM,EAAME,UAAS,SAAUwqK,GACvB,OAAO1qK,EAAMpgD,YAAYiye,eAAe7xb,EAAMQ,UAGlD8iM,GAAU,MAKdljM,qBAAsB,WACpBz/C,KAAKwze,qBAAqBx2J,UACrB,IAAIv/U,EAAYuC,KAAKuze,wBAAyBh1O,EAAW5nQ,MAAMC,QAAQ6G,GAAYo2B,EAAK,EAA7F,IAAgGp2B,EAAY8gQ,EAAW9gQ,EAAYA,EAAUjK,OAAOk6B,cAAe,CACjK,IAAIwF,EAEJ,GAAIqrO,EAAU,CACZ,GAAI1qO,GAAMp2B,EAAU/N,OAAQ,MAC5BwjC,EAAOz1B,EAAUo2B,SACZ,CAEL,IADAA,EAAKp2B,EAAUC,QACRC,KAAM,MACbu1B,EAAOW,EAAGngC,MAGOw/B,EAENkR,SAEfpkC,KAAKuze,wBAA0B,O,6BCzGrC,IAEI35e,EAAUhE,EAFD,EAAQ,IAMjB6oD,EAAqB7oD,EAFD,EAAQ,KAM5B4oD,EAAc5oD,EAFD,EAAQ,IAMrBi4H,EAAgBj4H,EAFD,EAAQ,KAMvBs8B,EAAUt8B,EAFD,EAAQ,IAMjBq/F,EAAoBr/F,EAFD,EAAQ,KAI3BgpD,EAAmB,EAAQ,GAE/B,SAAShpD,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAKvF,IAAIw5J,GAAY,EAAIhwG,EAAmB5pD,SAAS,CAC5CiqD,YAAa,YAEbC,UAAW,CACPwH,OAAQ/H,EAAY3pD,QAAQytC,OAAO2c,YAGvCC,gBAAiB,WACb,MAAO,CACH0zF,YAAa,OAIrBxzF,mBAAoB,WAChBp/C,KAAKyze,kBAAkBzze,KAAK3K,MAAMkxD,SAGtC0pJ,0BAA2B,SAAmCC,GACtDA,EAAU3pJ,SAAWvmD,KAAK3K,MAAMkxD,SAOhCvmD,KAAKu/C,SAAS,CAAEqzF,YAAa,OAC7B5yI,KAAKyze,kBAAkBvjS,EAAU3pJ,UAIzCktb,kBAAmB,SAA2Bltb,GAC1C,IAAIlH,EAAQr/C,KAERq0G,EAASpf,EAAkBpgG,QAAQvB,MACnC0hG,EAAOqf,EAAOnf,QAAQ3uC,GAI1B,GAFAvmD,KAAK0ze,QAAU1+Y,EAEXA,EAAM,CACN,IAAIl8E,EAAS,IAAI+0G,EAAch5H,QAAQ82O,OAAOt3H,EAAO/gF,YAAYC,QACjEza,EAAO6wO,cAAc,CACjB,KAAQ,CACJ,SAAY,CACR,cAAgB,EAChB,MAAS,CAAC,sBAMtBt1I,EAAO00M,kBAAkB,gBAAkB10M,EAAO/gF,YAAYC,OAAQza,GAAQ9hB,MAAK,SAAUqyP,GACzFvwO,EAAOuwO,SAAWA,EAClB,IAAIz2G,EAAc59C,EAAK0gO,+BAA+B58S,GACtDumC,EAAME,SAAS,CAAEqzF,YAAaA,OAC/B,SAAUhhJ,GACT2C,QAAQ3C,MAAM,4CAA6CA,WAG/D2C,QAAQ3C,MAAM,iEAItBguD,OAAQ,WACJ,GAAIq1C,EAAkBpgG,QAAQvB,MAAM2iC,UAChC,OAAOr8B,EAAQ/E,QAAQzD,cACnB,MACA,CAAEwJ,UAAW,+CACbhB,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,sBACb,EAAIgkD,EAAiB1oD,IAAI,qDAAsD,GAAI,CAAE,EAAK,SAAWqtH,GAC7F,OAAO3pH,EAAQ/E,QAAQzD,cACnB,IACA,CAAEk/F,KAAM,aAAct8F,IAAK,OAC3BuvH,QAKjB,GAAIvjH,KAAK0ze,OACZ,OAAO95e,EAAQ/E,QAAQzD,cACnB,MACA,CAAEwJ,UAAW,+CACbhB,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,sBACb,EAAIgkD,EAAiB1oD,IAAI,6CAMrC,IAAI8nW,EAAgB9rU,EAAQr9B,QAAQ2J,aAAa,4BAC7CsnN,EAAS5zL,EAAQr9B,QAAQ2J,aAAa,oBAE1C,OAAIwB,KAAK6/C,MAAM+yF,YAGJh5I,EAAQ/E,QAAQzD,cAAc4sW,EAAe,CAAEhqW,IAAK,aAAegM,KAAK3K,MAAMkxD,OACjF3rD,UAAW,eACXumW,oBAAoB,EACpBC,mBAAmB,EACnBxuN,YAAa5yI,KAAK6/C,MAAM+yF,YACxBmmN,gBAAgB,EAChB/sM,UAAW,YACXgD,eAAgBhvJ,KAAK3K,MAAM25J,eAC3BpkH,OAAO,EAAIgU,EAAiB1oD,IAAI,2CAChC62D,KAAM,aAGHnzD,EAAQ/E,QAAQzD,cACnB,MACA,CAAEwJ,UAAW,eAAgBmyD,KAAM,YACnCnzD,EAAQ/E,QAAQzD,cAAc00N,EAAQ,UAoBtDt1N,EAAOD,QAAUk+J,G,6BCpKjB9+J,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEI6pD,EAAmB3nD,EAFD,EAAQ,IAM1Bg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxB4nD,EAA8B5nD,EAFA,EAAQ,IAMtC8nD,EAAa9nD,EAFA,EAAQ,IAMrBgE,EAAUhE,EAFD,EAAQ,IAMjB4oD,EAAc5oD,EAFD,EAAQ,IAIzB,SAASA,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAkBvF,IAAIm4Y,EAAmB,SAAUr9R,GAG7B,SAASq9R,IAEL,OADA,EAAIx7W,EAAiB/8B,SAASmL,KAAMotY,IAC7B,EAAI5vV,EAA4B3oD,SAASmL,MAAOotY,EAAiBluY,YAAa,EAAIq+C,EAAiB1oD,SAASu4Y,IAAmBlxY,MAAM8D,KAAM2C,YA0BtJ,OA9BA,EAAI+6C,EAAW7oD,SAASu4Y,EAAkBr9R,IAO1C,EAAIl+E,EAAch9B,SAASu4Y,EAAkB,CAAC,CAC1Cp5Y,IAAK,SACLN,MAAO,WACH,OAAOkG,EAAQ/E,QAAQzD,cACnB,MACA,CAAEwJ,UAAW,uBACbhB,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,2BACbhB,EAAQ/E,QAAQzD,cACZ,KACA,KACA4O,KAAK3K,MAAM2c,OAEfpY,EAAQ/E,QAAQzD,cACZ,IACA,KACA4O,KAAK3K,MAAM9C,eAMxB66Y,EA/BY,CAgCrBxzY,EAAQ/E,QAAQo9G,eAElBm7R,EAAiBruV,UAAY,CACzB/sC,MAAOwsC,EAAY3pD,QAAQV,OAAO8qD,WAClC1sD,QAASisD,EAAY3pD,QAAQV,OAAO8qD,YAExC1uD,EAAQsE,QAAUu4Y,EAClB58Y,EAAOD,QAAUA,EAAiB,S,6BCzFlCZ,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEIoC,EAASF,EAFD,EAAQ,KAMhB87B,EAAgB97B,EAFD,EAAQ,KAIvB+7B,EAAY,EAAQ,GAEpBh4B,EAAa/D,EAAuB+7B,GAIpC97B,EAAWD,EAFD,EAAQ,KAMlBgE,EAAUhE,EAFD,EAAQ,IAMjB6oD,EAAqB7oD,EAFD,EAAQ,KAM5B4oD,EAAc5oD,EAFD,EAAQ,IAMrBq/F,EAAoBr/F,EAFD,EAAQ,KAM3Bs8B,EAAUt8B,EAFD,EAAQ,IAMjB+oD,EAAe/oD,EAFD,EAAQ,KAItBuuW,EAAe,EAAQ,KAEvBtvI,EAAa,EAAQ,IAErBj2K,EAAmB,EAAQ,GAI3Bs1J,EAAqBt+M,EAFD,EAAQ,KAM5Bq1e,EAAuBr1e,EAFD,EAAQ,MAM9B09V,EAAc19V,EAFD,EAAQ,MAMrB8pV,EAAe9pV,EAFD,EAAQ,MAMtBy8B,EAAUz8B,EAFD,EAAQ,KAMjBouG,EAAepuG,EAFD,EAAQ,KAMtBk3J,EAAel3J,EAFD,EAAQ,KAMtBi2G,EAAej2G,EAFD,EAAQ,MAItBi3J,EAAsB,EAAQ,KAE9BjoD,EAAc,EAAQ,IAEtB9yE,EAAe,EAAQ,IAE3B,SAASl8B,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAEvF,IAqxBYgiH,EA3CA1G,EA3CAt9E,EA9BAC,EAjqBRygd,GAAwB,EAAI/0b,EAAiBzoD,KAAK,yOAkBlDy9e,EAAkBp1b,EAAY3pD,QAAQg/I,MAAM,CAC5CxrC,QAAS7pD,EAAY3pD,QAAQytC,OAAO2c,WACpCulF,QAAShmF,EAAY3pD,QAAQg/I,MAAM,CAC/BrhJ,KAAMgsD,EAAY3pD,QAAQytC,OAC1BoiG,WAAYlmF,EAAY3pD,QAAQytC,OAChCyrI,gBAAiBvvH,EAAY3pD,QAAQytC,SACtC2c,aAGH40b,EAAkBr1b,EAAY3pD,QAAQg/I,MAAM,CAC5CigW,YAAat1b,EAAY3pD,QAAQg/I,MAAM,CACnC/2B,QAASt+D,EAAY3pD,QAAQytC,OAAO2c,WACpC80b,QAASv1b,EAAY3pD,QAAQytC,OAC7BoiG,WAAYlmF,EAAY3pD,QAAQytC,OAChCurI,YAAarvH,EAAY3pD,QAAQytC,SAClC2c,aAGH+0b,GAAmB,EAAIv1b,EAAmB5pD,SAAS,CACnDiqD,YAAa,mBAEbzpD,MAAO,CACH6kJ,MAAO17F,EAAY3pD,QAAQ2xQ,QAAQotO,GAAiB30b,WACpDy8C,SAAUl9C,EAAY3pD,QAAQg/I,MAAM,CAChCrP,QAAShmF,EAAY3pD,QAAQg/I,MAAM,CAC/BrhJ,KAAMgsD,EAAY3pD,QAAQytC,SAC3B2c,aAEPo2C,QAAS72C,EAAY3pD,QAAQytC,OAAO2c,WAGpCg1b,QAASz1b,EAAY3pD,QAAQo4D,KAAKhO,YAGtCi1b,2BAA4B,SAAoC/2Y,GAC5D,IAAI99C,EAAQr/C,KAEZm9F,EAAGzwC,iBACH,IAAIi2J,EAAsBzwL,EAAQr9B,QAAQ2J,aAAa,+BACvD6zB,EAAQx9B,QAAQ6nG,oBAAoB,6BAA8B,GAAIimH,EAAqB,CACvF3wM,OAAO,EAAI4sC,EAAiB1oD,IAAI,sCAChCymG,aAAa,EAAI/9C,EAAiB1oD,IAAI,sDACtCi7G,aAAa,EAAIvyD,EAAiB1oD,IAAI,sBACtCu4H,QAAQ,EAAI7vE,EAAiB1oD,IAAI,kBACjC63N,WAAY,OACZnL,kBAAmB,CAAC,cACpBvtH,QAASr1F,KAAK3K,MAAMggG,QACpB11C,WAAY,SAAoB9lC,EAASmpM,GACrC,GAAKnpM,EAAL,CACA,IAAIwqM,EAAY,GAChB1qN,EAAW9E,QAAQ/B,IAAIkwN,EAAM9pN,KAAI,SAAUgqN,GACvC,OAAOp2D,EAAaj4J,QAAQ25G,sBAAsBnvD,EAAMhqD,MAAMggG,QAAS6tH,EAAKnvE,SAASv0F,OAAM,WACvF6kK,EAAUr0N,KAAKkzN,EAAKnvE,YACrBvzH,cACHxpB,MAAK,WACL,GAAyB,IAArBqtN,EAAU30N,OAAd,CAGA,IAAI+sG,EAAcvqE,EAAQr9B,QAAQ2J,aAAa,uBAC/C6zB,EAAQx9B,QAAQ6nG,oBAAoB,wDAAyD,GAAID,EAAa,CAC1GzqF,OAAO,EAAI4sC,EAAiB1oD,IAAI,mEAAoE,CAAEm/F,QAASh2C,EAAMhqD,MAAMggG,UAC3HsH,YAAa0nH,EAAU9nN,KAAK,eAI3B,MAAqB,GAAoB,IAG9DqjD,OAAQ,WACJ,IAAI7B,EAAS/9C,KAETq6N,EAAcnoM,EAAQr9B,QAAQ2J,aAAa,wBAC3C21e,EAAYn0e,KAAK3K,MAAM4+e,QAAUr6e,EAAQ/E,QAAQzD,cACjD8iN,EAAmBr/M,QACnB,CAAE+F,UAAW,wCACT6oD,QAASzjD,KAAKk0e,4BAElBt6e,EAAQ/E,QAAQzD,cAAcipO,EAAa,CAAE5oO,IAAK,EAAQ,KAA2C4qG,MAAO,KAAMp6B,OAAQ,OAC1HroE,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,gDACb,EAAIgkD,EAAiB1oD,IAAI,gBAE7B0D,EAAQ/E,QAAQzD,cAAc,MAAO,MAErCgjf,EAAYp0e,KAAK3K,MAAM6kJ,MAAMhhJ,KAAI,SAAU3F,GAC3C,OAAOqG,EAAQ/E,QAAQzD,cAAcijf,EAAc,CAC/Crgf,IAAKT,EAAE80G,QACPhT,QAASt3C,EAAO1oD,MAAMggG,QACtB4+Y,QAASl2b,EAAO1oD,MAAM4+e,QACtBH,YAAavgf,OAGjB+gf,EAAY16e,EAAQ/E,QAAQzD,cAAc,MAAO,MAQrD,OAPI4O,KAAK3K,MAAMqmG,UAAY17F,KAAK3K,MAAMqmG,SAAS8oC,UAC3C8vW,EAAY16e,EAAQ/E,QAAQzD,cACxB,MACA,CAAEwJ,UAAW,wCACboF,KAAK3K,MAAMqmG,SAAS8oC,QAAQhyI,OAG7BoH,EAAQ/E,QAAQzD,cACnB,MACA,CAAEwJ,UAAW,yCACb05e,EACAF,EACAD,MAKRE,GAAe,EAAI51b,EAAmB5pD,SAAS,CAC/CiqD,YAAa,eAEbzpD,MAAO,CACHy+e,YAAaF,EAAgB30b,WAC7Bg1b,QAASz1b,EAAY3pD,QAAQo4D,KAAKhO,WAClCo2C,QAAS72C,EAAY3pD,QAAQytC,OAAO2c,YAGxCwE,QAAS,SAAiB/yD,GACtBA,EAAEg8D,iBACFh8D,EAAE+7D,kBAEF9N,EAAa9pD,QAAQopD,SAAS,CAC1BD,OAAQ,YACRwqD,WAAYxoG,KAAK3K,MAAMy+e,YAAYtvW,QAAQupC,gBAC3C1lE,QAASroG,KAAK3K,MAAMy+e,YAAYzrY,WAIxCksY,gBAAiB,SAAyB7jf,GACtC,IAAI0iE,EAASpzD,KAEbtP,EAAEg8D,iBACFh8D,EAAE+7D,kBACFqgG,EAAaj4J,QAAQ85G,2BAA2B3uG,KAAK3K,MAAMggG,QAASr1F,KAAK3K,MAAMy+e,YAAYzrY,SAAS7oD,OAAM,SAAUlrD,GAChHC,QAAQ3C,MAAM,gDAAiD0C,GAC/D,IAAI6vN,EAAW/wJ,EAAO/9D,MAAMy+e,YAAYthf,MAAQ4gE,EAAO/9D,MAAMy+e,YAAY/lU,iBAAmB36G,EAAO/9D,MAAMy+e,YAAYzrY,QACjH5L,EAAcvqE,EAAQr9B,QAAQ2J,aAAa,uBAC/C6zB,EAAQx9B,QAAQ6nG,oBAAoB,2CAA4C,GAAID,EAAa,CAC7FzqF,OAAO,EAAI4sC,EAAiB1oD,IAAI,4DAA6D,CAAEm/F,QAASjiC,EAAO/9D,MAAMggG,UACrHsH,aAAa,EAAI/9C,EAAiB1oD,IAAI,iEAAkE,CAAEiuN,SAAUA,UAKhIvkK,OAAQ,WACJ,IAAIsyS,EAAahgU,EAAQr9B,QAAQ2J,aAAa,sBAE1C2lN,EAAWnkN,KAAK3K,MAAMy+e,YAAYtvW,QAAQhyI,MAAQwN,KAAK3K,MAAMy+e,YAAYtvW,QAAQupC,kBAAmB,EAAInvH,EAAiB1oD,IAAI,gBAE7H49V,EAAU,CACVvtS,OAAQvmD,KAAK3K,MAAMy+e,YAAYzrY,QAC/BiP,UAAWt3G,KAAK3K,MAAMy+e,YAAYtvW,QAAQE,WAC1ClyI,KAAM2xN,GAGNzuH,EAAY,KACZ11F,KAAK3K,MAAMy+e,YAAYtvW,SAAWxkI,KAAK3K,MAAMy+e,YAAYtvW,QAAQupC,kBACjEr4E,GAAY,EAAIkP,EAAYxP,oBAAoBp1F,KAAK3K,MAAMy+e,YAAYtvW,QAAQupC,kBAGnF,IAAIymU,EAAe,KAEfA,EADA9+Y,EACe97F,EAAQ/E,QAAQzD,cAC3B,IACA,CAAEk/F,KAAMoF,EAAWjyC,QAASzjD,KAAKyjD,SACjC0gK,GAGWvqN,EAAQ/E,QAAQzD,cAC3B,OACA,KACA+yN,GAIR,IAAIswR,EAAez0e,KAAK3K,MAAM4+e,QAAUr6e,EAAQ/E,QAAQzD,cAAc,MAAO,CACzEwJ,UAAW,0CACXnJ,IAAK,EAAQ,KACb4qG,MAAO,KACPp6B,OAAQ,KACR28J,IAAK,SACLn7K,QAASzjD,KAAKu0e,kBAAqB36e,EAAQ/E,QAAQzD,cAAc,MAAO,MAE5E,OAAOwI,EAAQ/E,QAAQzD,cACnB8iN,EAAmBr/M,QACnB,CAAE+F,UAAW,6BAA8B6oD,QAASzjD,KAAKyjD,SACzD7pD,EAAQ/E,QAAQzD,cAAc8gW,EAAY,CAAE4B,QAASA,EAASz3P,MAAO,GAAIp6B,OAAQ,KACjFroE,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,mCACb45e,GAEJC,MAKRC,GAAe,EAAIj2b,EAAmB5pD,SAAS,CAC/CiqD,YAAa,eAEbzpD,MAAO,CACH6iG,MAAO15C,EAAY3pD,QAAQ2xQ,QAAQqtO,GAAiB50b,WACpD8N,KAAMvO,EAAY3pD,QAAQg/I,MAAM,CAC5BrP,QAAShmF,EAAY3pD,QAAQg/I,MAAM,CAC/BrhJ,KAAMgsD,EAAY3pD,QAAQytC,SAC3B2c,aAEPo2C,QAAS72C,EAAY3pD,QAAQytC,OAAO2c,WAGpCg1b,QAASz1b,EAAY3pD,QAAQo4D,KAAKhO,YAGtC01b,kBAAmB,SAA2Bx3Y,GAC1C,IAAItX,EAAS7lF,KAEbm9F,EAAGzwC,iBACH,IAAIi2J,EAAsBzwL,EAAQr9B,QAAQ2J,aAAa,+BACvD6zB,EAAQx9B,QAAQ6nG,oBAAoB,6BAA8B,GAAIimH,EAAqB,CACvF3wM,OAAO,EAAI4sC,EAAiB1oD,IAAI,sCAChCymG,aAAa,EAAI/9C,EAAiB1oD,IAAI,8CACtCi7G,aAAa,EAAIvyD,EAAiB1oD,IAAI,qBACtCu4H,QAAQ,EAAI7vE,EAAiB1oD,IAAI,kBACjC0sN,kBAAmB,CAAC,cACpBvtH,QAASr1F,KAAK3K,MAAMggG,QACpBu/Y,gBAAgB,EAChBj1b,WAAY,SAAoB9lC,EAASmpM,GACrC,GAAKnpM,EAAL,CACA,IAAIwqM,EAAY,GAChB1qN,EAAW9E,QAAQ/B,IAAIkwN,EAAM9pN,KAAI,SAAUgqN,GACvC,OAAOp2D,EAAaj4J,QAAQ65G,sBAAsBw0G,EAAKnvE,SAASv0F,OAAM,WAClE6kK,EAAUr0N,KAAKkzN,EAAKnvE,YACrBvzH,cACHxpB,MAAK,WACL,GAAyB,IAArBqtN,EAAU30N,OAAd,CAGA,IAAI+sG,EAAcvqE,EAAQr9B,QAAQ2J,aAAa,uBAC/C6zB,EAAQx9B,QAAQ6nG,oBAAoB,6DAA8D,GAAID,EAAa,CAC/GzqF,OAAO,EAAI4sC,EAAiB1oD,IAAI,mEAAoE,CAAEm/F,QAASxP,EAAOxwF,MAAMggG,UAC5HsH,YAAa0nH,EAAU9nN,KAAK,eAI3B,MAAqB,GAAoB,IAG9DqjD,OAAQ,WACJ,IAAImnC,EAAS/mF,KAETq6N,EAAcnoM,EAAQr9B,QAAQ2J,aAAa,wBAC3C21e,EAAYn0e,KAAK3K,MAAM4+e,QAAUr6e,EAAQ/E,QAAQzD,cACjD8iN,EAAmBr/M,QACnB,CAAE+F,UAAW,wCAAyC6oD,QAASzjD,KAAK20e,mBACpE/6e,EAAQ/E,QAAQzD,cAAcipO,EAAa,CAAE5oO,IAAK,EAAQ,KAA2C4qG,MAAO,KAAMp6B,OAAQ,OAC1HroE,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,gDACb,EAAIgkD,EAAiB1oD,IAAI,gBAE7B0D,EAAQ/E,QAAQzD,cAAc,MAAO,MACrCyjf,EAAY70e,KAAK3K,MAAM6iG,MAAMh/F,KAAI,SAAUkG,GAC3C,OAAOxF,EAAQ/E,QAAQzD,cAAc0jf,EAAc,CAC/C9gf,IAAKoL,EAAE09G,QACPg3X,YAAa10e,EACb60e,QAASltZ,EAAO1xF,MAAM4+e,QACtB5+Y,QAAStO,EAAO1xF,MAAMggG,aAE1B0/Y,EAAan7e,EAAQ/E,QAAQzD,cAAc,MAAO,MAQtD,OAPI4O,KAAK3K,MAAM03D,MAAQ/sD,KAAK3K,MAAM03D,KAAKy3E,UACnCuwW,EAAan7e,EAAQ/E,QAAQzD,cACzB,MACA,CAAEwJ,UAAW,wCACboF,KAAK3K,MAAM03D,KAAKy3E,QAAQhyI,OAGzBoH,EAAQ/E,QAAQzD,cACnB,MACA,CAAEwJ,UAAW,yCACbm6e,EACAF,EACAV,MAKRW,GAAe,EAAIr2b,EAAmB5pD,SAAS,CAC/CiqD,YAAa,eAEbzpD,MAAO,CACHy+e,YAAaD,EAAgB50b,WAC7Bg1b,QAASz1b,EAAY3pD,QAAQo4D,KAAKhO,WAClCo2C,QAAS72C,EAAY3pD,QAAQytC,OAAO2c,YAGxCwE,QAAS,SAAiB/yD,GACtBA,EAAEg8D,iBACFh8D,EAAE+7D,kBAEF9N,EAAa9pD,QAAQopD,SAAS,CAC1BD,OAAQ,2BACR8+D,QAAS98G,KAAK3K,MAAMy+e,YAAYh3X,WAIxCy3X,gBAAiB,SAAyB7jf,GACtC,IAAIs2F,EAAShnF,KAEbtP,EAAEg8D,iBACFh8D,EAAE+7D,kBACFqgG,EAAaj4J,QAAQ+5G,2BAA2B5uG,KAAK3K,MAAMggG,QAASr1F,KAAK3K,MAAMy+e,YAAYh3X,SAASt9D,OAAM,SAAUlrD,GAChHC,QAAQ3C,MAAM,gDAAiD0C,GAC/D,IAAIwqD,EAAckoC,EAAO3xF,MAAMy+e,YAAYjmU,aAAe7mF,EAAO3xF,MAAMy+e,YAAYh3X,QAC/ErgB,EAAcvqE,EAAQr9B,QAAQ2J,aAAa,uBAC/C6zB,EAAQx9B,QAAQ6nG,oBAAoB,+CAAgD,GAAID,EAAa,CACjGzqF,OAAO,EAAI4sC,EAAiB1oD,IAAI,0DAA2D,CAAEm/F,QAASrO,EAAO3xF,MAAMggG,UACnHsH,aAAa,EAAI/9C,EAAiB1oD,IAAI,oEAAqE,CAAE4oD,YAAaA,UAKtIc,OAAQ,WACJ,IAAIwwJ,EAAal+K,EAAQr9B,QAAQ2J,aAAa,sBAC1ChM,EAAOwN,KAAK3K,MAAMy+e,YAAYjmU,aAAe7tK,KAAK3K,MAAMy+e,YAAYh3X,QAEpEpnB,GAAY,EAAIkP,EAAYhQ,mBAAmB50F,KAAK3K,MAAMy+e,YAAYh3X,SACtEk4X,EAAep7e,EAAQ/E,QAAQzD,cAC/B,IACA,CAAEk/F,KAAMoF,EAAWjyC,QAASzjD,KAAKyjD,SACjCjxD,GAEAw2P,EAAU/zJ,EAAkBpgG,QAAQvB,MAAM2xG,aAAajlG,KAAK3K,MAAMy+e,YAAYpvW,WAAY,GAAI,IAE9F+vW,EAAez0e,KAAK3K,MAAM4+e,QAAUr6e,EAAQ/E,QAAQzD,cAAc,MAAO,CACzEwJ,UAAW,0CACXnJ,IAAK,EAAQ,KACb4qG,MAAO,KACPp6B,OAAQ,KACR28J,IAAK,SACLn7K,QAASzjD,KAAKu0e,kBAAqB36e,EAAQ/E,QAAQzD,cAAc,MAAO,MAE5E,OAAOwI,EAAQ/E,QAAQzD,cACnB8iN,EAAmBr/M,QACnB,CAAE+F,UAAW,6BAA8B6oD,QAASzjD,KAAKyjD,SACzD7pD,EAAQ/E,QAAQzD,cAAcg/M,EAAY,CAAE59M,KAAMA,EAAMmK,IAAKqsP,EAAS3sJ,MAAO,GAAIp6B,OAAQ,KACzFroE,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,mCACbo6e,GAEJP,MAQZlkf,EAAQsE,SAAU,EAAI4pD,EAAmB5pD,SAAS,CAC9CiqD,YAAa,YAEbC,UAAW,CACPs2C,QAAS72C,EAAY3pD,QAAQytC,OAAO2c,WAEpCg2b,WAAYz2b,EAAY3pD,QAAQo4D,MAGpCioS,kBAAmB,CACfggJ,WAAY12b,EAAY3pD,QAAQ43J,WAAWK,EAAaj4J,UAG5DqqD,gBAAiB,WACb,MAAO,CACHo9J,QAAS,KACT64R,kBAAmB,KACnBlnV,iBAAkB,KAClBmnV,WAAY,KACZC,kBAAmB,KACnBzjf,MAAO,KACPqif,SAAS,EACTqB,QAAQ,EACRC,iBAAiB,EACjBC,eAAe,EACfC,gBAAgB,EAChBC,eAAe,EACfC,eAAgB,OAIxBv2b,mBAAoB,WAChBp/C,KAAKs/C,YAAa,EAClBt/C,KAAK8jI,cAAgB7uC,EAAkBpgG,QAAQvB,MAC/C0M,KAAK8jI,cAAcp1C,GAAG,qBAAsB1uF,KAAK41e,sBAEjD51e,KAAK61e,uBAAyB,KAC9B71e,KAAK6tJ,gBAAgB7tJ,KAAK3K,MAAMggG,SAAS,GAEzCr1F,KAAKyhU,eAAiB9iR,EAAa9pD,QAAQ66H,SAAS1vH,KAAK2pR,YAG7DlqO,qBAAsB,WAClBz/C,KAAKs/C,YAAa,EAClBt/C,KAAK8jI,cAAcn2C,eAAe,qBAAsB3tF,KAAK41e,sBAC7Dj3b,EAAa9pD,QAAQ64G,WAAW1tG,KAAKyhU,iBAGzCxxH,0BAA2B,SAAmCliD,GAC1D,IAAIgiF,EAAS/vO,KAETA,KAAK3K,MAAMggG,SAAW04D,EAAS14D,SAC/Br1F,KAAKu/C,SAAS,CACV+8J,QAAS,KACT1qN,MAAO,OACR,WACCm+O,EAAOliF,gBAAgBE,EAAS14D,aAK5CugZ,qBAAsB,SAA8Bx2S,GAC5Cp/L,KAAKs/C,YAAc8/I,EAAM/pG,UAAYr1F,KAAK3K,MAAMggG,UACzB,UAAvB+pG,EAAMz5D,cAEN3lI,KAAK81e,iBAET91e,KAAKu/C,SAAS,CAAEk2b,gBAAgB,MAGpC5nV,gBAAiB,SAAyBx4D,EAAS0gZ,GAC/C,IAAI9lQ,EAASjwO,KAETo/L,EAAQp/L,KAAK8jI,cAAc2wK,SAASp/M,GACpC+pG,GAASA,EAAMkkB,SAAWlkB,EAAMkkB,QAAQ/vL,QACxCvzB,KAAKg2e,qBAAqB52S,EAAMkkB,QAAQ/vL,QAE5Cu5H,EAAaj4J,QAAQm5J,iBAAiB34D,EAASr1F,KAAKqtJ,oBAAoBp5J,KAAK+L,KAAM+1e,IACnF,IAAIE,GAAmB,EAEvBnpV,EAAaj4J,QAAQ65F,GAAG,SAAS,SAAUp6F,EAAK4hf,EAAc9oY,GACtD6iI,EAAO3wL,YAAc+1C,IAAY6gZ,IACjB,6BAAhB5hf,EAAI60G,SAA2C8sY,IAC/Ct3b,EAAa9pD,QAAQopD,SAAS,CAC1BD,OAAQ,yBACRo8S,gBAAiB,CACbp8S,OAAQ,aACRywS,SAAUp5P,KAGlB12C,EAAa9pD,QAAQopD,SAAS,CAAED,OAAQ,yBACxCi4b,GAAmB,GAEnB7oY,IAAa0/C,EAAaj4J,QAAQ23G,UAAUG,SAC5CsjI,EAAO1wL,SAAS,CACZ+8J,QAAS,KACT1qN,MAAO0C,EACP2/e,SAAS,SAMzB5mV,oBAAqB,SAA6B0oV,GAC9C,IAAI3lQ,EAASpwO,KAEb,IAAIA,KAAKs/C,WAAT,CACA,IAAIg9J,EAAUxvD,EAAaj4J,QAAQshf,WAAWn2e,KAAK3K,MAAMggG,SACrDinH,EAAQ93E,SAGR,CAAC,aAAc,mBAAoB,OAAQ,qBAAqBpqI,SAAQ,SAAUC,GAC9EiiN,EAAQ93E,QAAQnqI,GAAKiiN,EAAQ93E,QAAQnqI,IAAM,MAGnD2F,KAAKu/C,SAAS,CACV+8J,QAASA,EACT85R,gBAAiBtpV,EAAaj4J,QAAQwhf,aAAar2e,KAAK3K,MAAMggG,QAASy3D,EAAaj4J,QAAQ23G,UAAUG,SACtGwoY,kBAAmBroV,EAAaj4J,QAAQyhf,kBAAkBt2e,KAAK3K,MAAMggG,SACrE44D,iBAAkBnB,EAAaj4J,QAAQo5J,iBAAiBjuJ,KAAK3K,MAAMggG,SACnE+/Y,WAAYtoV,EAAaj4J,QAAQo4G,cAAcjtG,KAAK3K,MAAMggG,SAC1DggZ,mBAAoBvoV,EAAaj4J,QAAQwhf,aAAar2e,KAAK3K,MAAMggG,QAASy3D,EAAaj4J,QAAQ23G,UAAUI,YACzG2pY,aAAczpV,EAAaj4J,QAAQ2hf,gBAAgBx2e,KAAK3K,MAAMggG,SAAS3pE,MAAK,SAAU34B,GAClF,OAAOA,EAAEwgC,SAAW68M,EAAOtsG,cAAcxwG,YAAYC,YAIzDvzB,KAAK3K,MAAM4/e,YAAcc,GACzB/1e,KAAK6pR,iBAGbmsN,qBAAsB,SAA8Bzid,GAChD,IAAI88M,EAAUrwO,KAEdA,KAAKu/C,SAAS,CACVk3b,oBAAoB,IAExBz2e,KAAK8jI,cAAcmhF,eAAe1xL,GAAQv8B,MAAK,SAAU21H,GACjD0jH,EAAQ/wL,YACZ+wL,EAAQ9wL,SAAS,CACbo2b,eAAgB,CACZr+X,UAAWqV,EAAK+X,WAChB5lF,YAAa6tE,EAAKkhD,kBAG3BruH,OAAM,SAAU9uD,GACf6D,QAAQ3C,MAAM,sCAAuClB,MACtD88G,SAAQ,WACH6iI,EAAQ/wL,YACZ+wL,EAAQ9wL,SAAS,CACbk3b,oBAAoB,QAMhCC,gBAAiB,SAAyBv5Y,GACtCx+C,EAAa9pD,QAAQopD,SAAS,CAAED,OAAQ,sBAG5C6rO,aAAc,WACV7pR,KAAKu/C,SAAS,CACV00b,SAAS,EACT0C,aAAa,EAAI9gf,EAAShB,SAAS,GAAImL,KAAK6/C,MAAMy8J,QAAQ93E,SAC1DoyW,aAAc,CACVC,WAAY72e,KAAK6/C,MAAMy8J,QAAQ93E,QAAQsyW,mBAxK3B,OACE,YA0KtBn4b,EAAa9pD,QAAQopD,SAAS,CAC1BD,OAAQ,gBACR+4b,cAAc,KAItBC,cAAe,WACX,IAAIC,EAAc/kd,EAAQr9B,QAAQ2J,aAAa,uBAC/C6zB,EAAQx9B,QAAQ6nG,oBAAoB,yBAA0B,GAAIu6Y,EAAa,CAC3E3kf,OAAQ0N,KAAK8jI,cAAc2wK,SAASz0S,KAAK3K,MAAMggG,UAAY,IAAIvjE,EAAau5M,MAAMrrO,KAAK3K,MAAMggG,YAIrG00L,eAAgB,WACZ/pR,KAAK81e,kBAGTnsN,UAAW,SAAmB9rO,GAC1B,OAAQA,EAAQG,QAEZ,IAAK,iBACDh+C,KAAKu/C,SAAS,CACV00b,SAAS,EACT0C,YAAa,SAO7Bb,eAAgB,WACZn3b,EAAa9pD,QAAQopD,SAAS,CAAED,OAAQ,oBAI5Ck5b,cAAe,SAAuBxjf,GAClC,IAAIyjf,GAAiB,EAAIthf,EAAShB,SAASmL,KAAK6/C,MAAM82b,YAAa,CAAEnkf,KAAMkB,IAC3EsM,KAAKu/C,SAAS,CACVo3b,YAAaQ,KAIrBC,mBAAoB,SAA4B1jf,GAC5C,IAAIyjf,GAAiB,EAAIthf,EAAShB,SAASmL,KAAK6/C,MAAM82b,YAAa,CAAE/xW,kBAAmBlxI,IACxFsM,KAAKu/C,SAAS,CACVo3b,YAAaQ,KAIrBE,kBAAmB,SAA2B3mf,GAC1C,IAAIymf,GAAiB,EAAIthf,EAAShB,SAASmL,KAAK6/C,MAAM82b,YAAa,CAAEW,iBAAkB5mf,EAAE4B,OAAOoB,QAChGsM,KAAKu/C,SAAS,CACVo3b,YAAaQ,KAIrBI,kBAAmB,SAA2Bp6Y,GAC1C,IAAImzI,EAAUtwO,KAEVs/I,EAAOniD,EAAG7qG,OAAOuuJ,MAAM,GACtBvB,IAELt/I,KAAKu/C,SAAS,CAAEg2b,iBAAiB,IACjCv1e,KAAK8jI,cAAcmc,cAAcX,GAAMtoJ,MAAK,SAAU2F,GAClD,IAAIw6e,GAAiB,EAAIthf,EAAShB,SAASy7O,EAAQzwL,MAAM82b,YAAa,CAAEjyW,WAAY/nI,IACpF2zO,EAAQ/wL,SAAS,CACbg2b,iBAAiB,EACjBoB,YAAaQ,EAIb3B,eAAe,OAEpBh2b,OAAM,SAAU9uD,GACf4/O,EAAQ/wL,SAAS,CAAEg2b,iBAAiB,IACpC,IAAI94Y,EAAcvqE,EAAQr9B,QAAQ2J,aAAa,uBAC/CjK,QAAQ3C,MAAM,gCAAiClB,GAC/C2hC,EAAQx9B,QAAQ6nG,oBAAoB,yBAA0B,GAAID,EAAa,CAC3EzqF,OAAO,EAAI4sC,EAAiB1oD,IAAI,SAChCymG,aAAa,EAAI/9C,EAAiB1oD,IAAI,+BAE3CyH,SAGP65e,kBAAmB,SAA2Br6Y,GAC1Cn9F,KAAKu/C,SAAS,CACVq3b,aAAc,CAAEC,WAAY15Y,EAAG7qG,OAAOoB,UAI9C+jf,aAAc,WACV,IAAIjnQ,EAAUxwO,KAEdA,KAAKu/C,SAAS,CAAE+1b,QAAQ,KACNt1e,KAAK6/C,MAAMouG,iBAAmBjuJ,KAAK03e,aAAe/9e,EAAW9E,QAAQ9D,WAC3EiG,MAAK,SAAUC,GACvBu5O,EAAQjxL,SAAS,CACb+1b,QAAQ,EACRrB,SAAS,EACT33R,QAAS,OAEb39J,EAAa9pD,QAAQopD,SAAS,CAAED,OAAQ,kBACxCwyL,EAAQ3iF,gBAAgB2iF,EAAQn7O,MAAMggG,SAElCm7I,EAAQ3wL,MAAM21b,eAEd3pY,EAAah3G,QAAQgwI,oBAAoB2rG,EAAQ1sG,cAAe0sG,EAAQn7O,MAAMggG,YAEnF71C,OAAM,SAAU9uD,GACf8/O,EAAQjxL,SAAS,CACb+1b,QAAQ,IAEZ,IAAI74Y,EAAcvqE,EAAQr9B,QAAQ2J,aAAa,uBAC/CjK,QAAQ3C,MAAM,mCAAoClB,GAClD2hC,EAAQx9B,QAAQ6nG,oBAAoB,yBAA0B,GAAID,EAAa,CAC3EzqF,OAAO,EAAI4sC,EAAiB1oD,IAAI,SAChCymG,aAAa,EAAI/9C,EAAiB1oD,IAAI,mCAE3Cs3G,SAAQ,WACPgjI,EAAQjxL,SAAS,CACbi2b,eAAe,OAEpB73e,QAGP+5e,YACQxkd,GAAO,EAAIvB,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASC,IAClF,OAAOjC,EAAc78B,QAAQm/B,MAAK,SAAkB7F,GAChD,OACI,OAAQA,EAAStsB,KAAOssB,EAASzwB,MAC7B,KAAK,EAED,OADAywB,EAASzwB,KAAO,GACT,EAAIi0B,EAAU5gC,SAASiP,KAAK8jI,cAAcqpT,gBAAgBntb,KAAK3K,MAAMggG,QAASr1F,KAAK6/C,MAAM82b,cAEpG,KAAK,EAED,OADAxod,EAASzwB,KAAO,GACT,EAAIi0B,EAAU5gC,SAASiP,KAAK8jI,cAAcspT,mBAAmBptb,KAAK3K,MAAMggG,QAAS,CACpFjjG,KAAM4N,KAAK6/C,MAAM+2b,aAAaC,cAGtC,KAAK,EACL,IAAK,MACD,OAAO1od,EAASiF,UAG7BO,EAAS3zB,UAGhB,WACI,OAAOkzB,EAAKh3B,MAAM8D,KAAM2C,aAMhCg1e,sBACQ1kd,GAAQ,EAAItB,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAASyB,IACnF,IAAI6/Y,EAAUh1a,KAEd,OAAO0xB,EAAc78B,QAAQm/B,MAAK,SAAmBoB,GACjD,OACI,OAAQA,EAAUvzB,KAAOuzB,EAAU13B,MAC/B,KAAK,EAMD,OALAsC,KAAKu/C,SAAS,CAAEk2b,gBAAgB,IAIhCrgd,EAAU13B,KAAO,GACV,EAAIi0B,EAAU5gC,SAAS4I,EAAW9E,QAAQm4B,MAAM,MAE3D,KAAK,EAED8/H,EAAaj4J,QAAQu5G,kBAAkBpuG,KAAK3K,MAAMggG,SAASr+F,MAAK,eAE7DwoD,OAAM,SAAU9uD,GACfskb,EAAQz1X,SAAS,CAAEk2b,gBAAgB,IACnC,IAAIh5Y,EAAcvqE,EAAQr9B,QAAQ2J,aAAa,uBAC/C6zB,EAAQx9B,QAAQ6nG,oBAAoB,yBAA0B,GAAID,EAAa,CAC3EzqF,OAAO,EAAI4sC,EAAiB1oD,IAAI,SAChCymG,aAAa,EAAI/9C,EAAiB1oD,IAAI,gCAIlD,KAAK,EACL,IAAK,MACD,OAAOk/B,EAAUhC,UAG9B+B,EAAUn1B,UAGjB,WACI,OAAOizB,EAAM/2B,MAAM8D,KAAM2C,aAMjCi1e,sBACQrnY,GAAQ,EAAI5+E,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAAS2mF,IACnF,IAAI27T,EAAUh2a,KAEd,OAAO0xB,EAAc78B,QAAQm/B,MAAK,SAAmBwmF,GACjD,OACI,OAAQA,EAAU34G,KAAO24G,EAAU98G,MAC/B,KAAK,EAMD,OALAsC,KAAKu/C,SAAS,CAAEk2b,gBAAgB,IAIhCj7X,EAAU98G,KAAO,GACV,EAAIi0B,EAAU5gC,SAAS4I,EAAW9E,QAAQm4B,MAAM,MAE3D,KAAK,EAED8/H,EAAaj4J,QAAQy5G,WAAWtuG,KAAK3K,MAAMggG,SAASr+F,MAAK,eAEtDwoD,OAAM,SAAU9uD,GACfslb,EAAQz2X,SAAS,CAAEk2b,gBAAgB,IACnC,IAAIh5Y,EAAcvqE,EAAQr9B,QAAQ2J,aAAa,uBAC/C6zB,EAAQx9B,QAAQ6nG,oBAAoB,yBAA0B,GAAID,EAAa,CAC3EzqF,OAAO,EAAI4sC,EAAiB1oD,IAAI,SAChCymG,aAAa,EAAI/9C,EAAiB1oD,IAAI,gCAIlD,KAAK,EACL,IAAK,MACD,OAAOskH,EAAUpnF,UAG9BinF,EAAUr6G,UAGjB,WACI,OAAOuwG,EAAMr0G,MAAM8D,KAAM2C,aAMjCk1e,cACQ5gY,GAAQ,EAAItlF,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAAS8+I,IACnF,IAAI0jQ,EAAUl2a,KAEd,OAAO0xB,EAAc78B,QAAQm/B,MAAK,SAAmB8qI,GACjD,OACI,OAAQA,EAAUj9J,KAAOi9J,EAAUphK,MAC/B,KAAK,EACD,IAAKsC,KAAK8jI,cAAc7tG,UAAW,CAC/B6oI,EAAUphK,KAAO,EACjB,MAIJ,OADAihD,EAAa9pD,QAAQopD,SAAS,CAAED,OAAQ,yBACjC8gH,EAAU3qI,OAAO,UAE5B,KAAK,EAOD,OALAn0B,KAAKu/C,SAAS,CAAEk2b,gBAAgB,IAIhC32U,EAAUphK,KAAO,GACV,EAAIi0B,EAAU5gC,SAAS4I,EAAW9E,QAAQm4B,MAAM,MAE3D,KAAK,EAED8/H,EAAaj4J,QAAQw5G,UAAUruG,KAAK3K,MAAMggG,SAASr+F,MAAK,eAErDwoD,OAAM,SAAU9uD,GACfwlb,EAAQ32X,SAAS,CAAEk2b,gBAAgB,IACnC,IAAIh5Y,EAAcvqE,EAAQr9B,QAAQ2J,aAAa,uBAC/C6zB,EAAQx9B,QAAQ6nG,oBAAoB,qBAAsB,GAAID,EAAa,CACvEzqF,OAAO,EAAI4sC,EAAiB1oD,IAAI,SAChCymG,aAAa,EAAI/9C,EAAiB1oD,IAAI,iCAIlD,KAAK,EACL,IAAK,MACD,OAAO4oK,EAAU1rI,UAG9Bo/I,EAAUxyK,UAGjB,WACI,OAAOi3G,EAAM/6G,MAAM8D,KAAM2C,aAMjCm1e,oBAAqB,WACjB,IAAIhse,EAAW,GAWf,OATI9L,KAAK6/C,MAAMouG,kBACXniJ,EAAS9b,KAAK4J,EAAQ/E,QAAQzD,cAC1B,OACA,CAAEwJ,UAAW,WACb,KACA,EAAIgkD,EAAiB1oD,IAAI,8HAI1B4V,GAGXijW,cAAe,WACX,IAgBYp2N,EAhBR49R,EAAUv2a,KAEVwuH,EAAiBt8F,EAAQr9B,QAAQ2J,aAAa,0BAC9CsN,EAAW9L,KAAK83e,sBAEpBzld,EAAQx9B,QAAQ6nG,oBAAoB,cAAe,GAAI8xB,EAAgB,CACnEx8G,OAAO,EAAI4sC,EAAiB1oD,IAAI,mBAChCymG,YAAa/iG,EAAQ/E,QAAQzD,cACzB,OACA,MACA,EAAIwtD,EAAiB1oD,IAAI,uBAAwB,CAAE6hf,UAAW/3e,KAAK3K,MAAMggG,UACzEvpF,GAEJ2iH,QAAQ,EAAI7vE,EAAiB1oD,IAAI,SACjCw7J,OAAQ1xJ,KAAK6/C,MAAMouG,iBACnBtuG,YACQg5F,GAAQ,EAAIhnH,EAAUnW,WAAyBkW,EAAc78B,QAAQ6+B,MAAK,SAAS2lN,EAAS3qH,GAC5F,OAAOh9F,EAAc78B,QAAQm/B,MAAK,SAAmB0lN,GACjD,OACI,OAAQA,EAAU73O,KAAO63O,EAAUh8O,MAC/B,KAAK,EACD,GAAIgxH,EAAW,CACXgrH,EAAUh8O,KAAO,EACjB,MAGJ,OAAOg8O,EAAUvlN,OAAO,UAE5B,KAAK,EAOD,OALAoiZ,EAAQh3X,SAAS,CAAEk2b,gBAAgB,IAInC/7P,EAAUh8O,KAAO,GACV,EAAIi0B,EAAU5gC,SAAS4I,EAAW9E,QAAQm4B,MAAM,MAE3D,KAAK,EAED8/H,EAAaj4J,QAAQy5G,WAAWioU,EAAQlhb,MAAMggG,SAASr+F,MAAK,eAEzDwoD,OAAM,SAAU9uD,GACf6lb,EAAQh3X,SAAS,CAAEk2b,gBAAgB,IACnC,IAAIh5Y,EAAcvqE,EAAQr9B,QAAQ2J,aAAa,uBAC/C6zB,EAAQx9B,QAAQ6nG,oBAAoB,0BAA2B,GAAID,EAAa,CAC5EzqF,OAAO,EAAI4sC,EAAiB1oD,IAAI,SAChCymG,aAAa,EAAI/9C,EAAiB1oD,IAAI,kCAIlD,KAAK,EACL,IAAK,MACD,OAAOwjP,EAAUtmN,UAG9BimN,EAAUk9L,OAGV,SAAoB7qU,GACvB,OAAOitC,EAAMz8I,MAAM8D,KAAM2C,gBAMzCq1e,iBAAkB,YACd,EAAInrV,EAAoBsB,wBAAwBnuJ,KAAK3K,MAAMggG,UAG/D4iZ,iBAAkB,WACd,IAAIC,GAA8B,EAAIl0Y,EAAanvG,SAAS,CACxD,mBAAsBmL,KAAK6/C,MAAMo0b,QACjC,4BAA+Bj0e,KAAK6/C,MAAMo0b,UAAYj0e,KAAK6/C,MAAMouG,mBAGjE1C,EAASvrJ,KAAK6/C,MAAMo0b,QAAUr6e,EAAQ/E,QAAQzD,cAC9C,KACA,KACA,KACA,EAAIwtD,EAAiB1oD,IAAI,sBACzB,KACA0D,EAAQ/E,QAAQzD,cAAc,MAAO,MAErCozW,GAAoB,EAAIL,EAAa5jG,gBAAgB,sBACrDkkG,EAAgB,KAChBD,GAAqBxkW,KAAK6/C,MAAMouG,mBAChCw2M,EAAgB7qW,EAAQ/E,QAAQzD,cAC5B,MACA,CAAEwJ,UAAW,+BACb,EAAIgkD,EAAiB1oD,IAAI,yDAA0D,GAAI,CACnFmJ,EAAG,SAAWkkH,GACV,OAAO3pH,EAAQ/E,QAAQzD,cACnB,IACA,CAAEk/F,KAAMk0Q,EAAmBlyW,OAAQ,SAAU2gG,IAAK,YAClDswB,MAIZ3pH,EAAQ/E,QAAQzD,cACZ,IACA,CAAEk/F,KAAMk0Q,EAAmBlyW,OAAQ,SAAU2gG,IAAK,YAClDr5F,EAAQ/E,QAAQzD,cAAc,MAAO,CAAEK,IAAK,EAAQ,KAAuC4qG,MAAO,KAAMp6B,OAAQ,KAAM28J,IAAK,QAKvI,IAAIu5Q,EAAqBn4e,KAAK6/C,MAAMo0b,SAAWj0e,KAAK6/C,MAAMouG,iBAAmBr0J,EAAQ/E,QAAQzD,cACzF,MACA,CAAEwJ,UAAW,oCACb,EAAIgkD,EAAiB1oD,IAAI,sIAA4I,GAAI,CACrK,MAAS,SAAeqtH,GACpB,OAAO3pH,EAAQ/E,QAAQzD,cACnB,IACA,KACA,IACAmyH,EACA,MAGR,MAAS,SAAeA,GACpB,OAAO3pH,EAAQ/E,QAAQzD,cACnB,IACA,KACA,IACAmyH,EACA,SAIZ3pH,EAAQ/E,QAAQzD,cAAc,MAAO,MACzC,OAAOwI,EAAQ/E,QAAQzD,cACnB,MACA,CAAEwJ,UAAWs9e,GACb3sV,EACAk5M,EACA0zI,EACAn4e,KAAKo4e,mBACLp4e,KAAKq4e,0BACLr4e,KAAKs4e,kBAIbA,cAAe,WACX,IAAIC,EAAiBrmd,EAAQr9B,QAAQ2J,aAAa,wBAC9CstD,EAAmB55B,EAAQr9B,QAAQ2J,aAAa,6BAChD67N,EAAcnoM,EAAQr9B,QAAQ2J,aAAa,wBAC3C2hD,EAAUjuB,EAAQr9B,QAAQ2J,aAAa,oBACvCg6e,EAAgBtmd,EAAQr9B,QAAQ2J,aAAa,0BAE7Ci6e,EAAgBz4e,KAAK6/C,MAAMo0b,QAAUr6e,EAAQ/E,QAAQzD,cAAconf,EAAe,CAAEE,UAAU,EAAI95b,EAAiB1oD,IAAI,qIAA6I0D,EAAQ/E,QAAQzD,cAAc,MAAO,MAEzSunf,EAAa34e,KAAK6/C,MAAMo0b,QAAUr6e,EAAQ/E,QAAQzD,cAClD06D,EACA,CAAElxD,UAAW,mCACT6oD,QAASzjD,KAAKg4e,kBAElBp+e,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,2CACbhB,EAAQ/E,QAAQzD,cAAcipO,EAAa,CAAE5oO,IAAK,EAAQ,KAAwC4qG,MAAO,KAAMp6B,OAAQ,QAE3HroE,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,2CACb,EAAIgkD,EAAiB1oD,IAAI,iCAE7B0D,EAAQ/E,QAAQzD,cAAc,MAAO,MACrCwnf,GAA0B,EAAI50Y,EAAanvG,SAAS,CACpD,YAAc,EACd,iBAAoBmL,KAAK6/C,MAAMo0b,UAEnC,OAAOr6e,EAAQ/E,QAAQzD,cACnB,MACA,CAAEwJ,UAAW,sBACbhB,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,6BACbhB,EAAQ/E,QAAQzD,cACZ,KACA,MACA,EAAIwtD,EAAiB1oD,IAAI,SACzBuif,GAEJE,GAEJ34e,KAAK6/C,MAAMw1b,kBAAoBz7e,EAAQ/E,QAAQzD,cAAc+uD,EAAS,MAAQvmD,EAAQ/E,QAAQzD,cAAcmnf,EAAgB,CACxHr+V,MAAOl6I,KAAK6/C,MAAMu1b,WAClBx6e,UAAWg+e,MAIvBC,sBAAuB,WACnB,IAAIjiE,EAAU52a,KAEVs8M,EAAUt8M,KAAK6/C,MAAMy8J,QAErBw8R,EAAuB,GACvBC,EAAgB,GACpBz8R,EAAQ08R,cAAc9+V,MAAM9/I,SAAQ,SAAU7G,GAC1C,GAAsB,OAAlBA,EAAE0lf,YACFH,EAAqB9of,KAAKuD,OACvB,CACH,IAAI03C,EAAO8tc,EAAcxlf,EAAE0lf,kBACdvmf,IAATu4C,IACAA,EAAO,GACP8tc,EAAcxlf,EAAE0lf,aAAehuc,GAEnCA,EAAKj7C,KAAKuD,OAIlB,IAAI2lf,EAAsBt/e,EAAQ/E,QAAQzD,cAAc4if,EAAkB,CACtE95V,MAAO4+V,EACPzjZ,QAASr1F,KAAK3K,MAAMggG,QACpB4+Y,QAASj0e,KAAK6/C,MAAMo0b,UACpBkF,GAAoB,EAAIrjf,EAAOjB,SAASkkf,GAAe7/e,KAAI,SAAUkgf,GACrE,IAAIx8R,EAAMN,EAAQ08R,cAAcK,WAAWD,GAC3C,OAAOx/e,EAAQ/E,QAAQzD,cAAc4if,EAAkB,CACnDhgf,IAAKolf,EACLl/V,MAAO6+V,EAAcK,GACrB19Y,SAAUkhH,EACVvnH,QAASuhV,EAAQvhb,MAAMggG,QACvB4+Y,QAASr9D,EAAQ/2X,MAAMo0b,aAG/B,OAAOr6e,EAAQ/E,QAAQzD,cACnB,MACA,CAAEwJ,UAAW,+BACbhB,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,uCACb,EAAIgkD,EAAiB1oD,IAAI,oBAE7Bgjf,EACAC,IAIRG,sBAAuB,WACnB,IAAIriE,EAAUj3a,KAEVs8M,EAAUt8M,KAAK6/C,MAAMy8J,QAErBi9R,EAAc,GACdC,EAAY,GAChBl9R,EAAQm9R,cAAcvhZ,MAAM99F,SAAQ,SAAUgF,GAC1C,GAAkB,OAAdA,EAAE20e,QACFwF,EAAYvpf,KAAKoP,OACd,CACH,IAAI6rC,EAAOuuc,EAAUp6e,EAAE20e,cACVrhf,IAATu4C,IACAA,EAAO,GACPuuc,EAAUp6e,EAAE20e,SAAW9oc,GAE3BA,EAAKj7C,KAAKoP,OAIlB,IAAIs6e,EAAa9/e,EAAQ/E,QAAQzD,cAAcsjf,EAAc,CACzDx8Y,MAAOqhZ,EACPlkZ,QAASr1F,KAAK3K,MAAMggG,QACpB4+Y,QAASj0e,KAAK6/C,MAAMo0b,UACpB0F,GAAgB,EAAI7jf,EAAOjB,SAAS2kf,GAAWtgf,KAAI,SAAUu1G,GAC7D,IAAI1hD,EAAOuvJ,EAAQm9R,cAAcG,MAAMnrY,GACvC,OAAO70G,EAAQ/E,QAAQzD,cAAcsjf,EAAc,CAC/C1gf,IAAKy6G,EACLvW,MAAOshZ,EAAU/qY,GACjB1hD,KAAMA,EACNsoC,QAAS4hV,EAAQ5hb,MAAMggG,QACvB4+Y,QAASh9D,EAAQp3X,MAAMo0b,aAG/B,OAAOr6e,EAAQ/E,QAAQzD,cACnB,MACA,CAAEwJ,UAAW,+BACbhB,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,uCACb,EAAIgkD,EAAiB1oD,IAAI,oBAE7Bwjf,EACAC,IAIRE,sBAAuB,WACnB,IAAI15b,EAAUjuB,EAAQr9B,QAAQ2J,aAAa,oBACvC4xM,EAAal+K,EAAQr9B,QAAQ2J,aAAa,sBAE1C4gM,EAAQp/L,KAAK8jI,cAAc2wK,SAASz0S,KAAK3K,MAAMggG,SAEnD,GAAI+pG,GAAgC,WAAvBA,EAAMz5D,aAA2B,CAC1C,GAAI3lI,KAAK6/C,MAAM41b,gBAAkBz1e,KAAK6/C,MAAM42b,mBACxC,OAAO78e,EAAQ/E,QAAQzD,cACnB,MACA,CAAEwJ,UAAW,kCACbhB,EAAQ/E,QAAQzD,cAAc+uD,EAAS,OAG/C,IAAI25b,EAAoB95e,KAAK6/C,MAAM81b,eAAiB31e,KAAK8jI,cAAc7+B,aAAajlG,KAAK6/C,MAAM81b,eAAer+X,UAAW,GAAI,IAAM,KAE/HgnP,EAAcl/J,EAAMkkB,QAAQ/vL,OAIhC,OAHIvzB,KAAK6/C,MAAM81b,iBACXr3I,EAAct+V,KAAK6/C,MAAM81b,eAAe72b,aAAesgJ,EAAMkkB,QAAQ/vL,QAElE35B,EAAQ/E,QAAQzD,cACnB,MACA,CAAEwJ,UAAW,yEACbhB,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,qCACbhB,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,8CACbhB,EAAQ/E,QAAQzD,cAAcg/M,EAAY,CAAEzzM,IAAKm9e,EAC7Ctnf,KAAM8rW,EACNjiQ,MAAO,GACPp6B,OAAQ,MAEZ,EAAIrjB,EAAiB1oD,IAAI,qDAAsD,CAC3EotN,QAASg7I,KAGjB1kW,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,2CACbhB,EAAQ/E,QAAQzD,cACZ8iN,EAAmBr/M,QACnB,CAAE+F,UAAW,mDACT6oD,QAASzjD,KAAK23e,uBAElB,EAAI/4b,EAAiB1oD,IAAI,WAE7B0D,EAAQ/E,QAAQzD,cACZ8iN,EAAmBr/M,QACnB,CAAE+F,UAAW,mDACT6oD,QAASzjD,KAAK43e,uBAElB,EAAIh5b,EAAiB1oD,IAAI,eAO7C,IAAI6jf,OAAkC,EAClCC,OAA+B,EAC/BC,OAA0B,EAC1BC,OAAuB,EACvBC,OAA0B,EAG9B,KAAM/6S,GAAgC,UAAvBA,EAAMz5D,eAA6B3lI,KAAK6/C,MAAMy8J,SAAWt8M,KAAK6/C,MAAMy8J,QAAQ93E,SAAW7tG,QAAQ32B,KAAK6/C,MAAMy8J,QAAQ93E,QAAQsyW,oBACrIoD,GAAuB,EAAIt7b,EAAiB1oD,IAAI,uBAChDikf,EAA0Bn6e,KAAK63e,aAE/BmC,EAA+B,0BAC/BD,EAAkC,2CAC/B,KAAI36S,GAAgC,SAAvBA,EAAMz5D,eAA2B3lI,KAAK6/C,MAAMo0b,QAW5D,OAAO,KAVPiG,GAAuB,EAAIt7b,EAAiB1oD,IAAI,wBAChDikf,EAA0Bn6e,KAAK+uW,cAC/BkrI,EAA0Bj6e,KAAK6/C,MAAMouG,kBAAmB,EAAIrvG,EAAiB1oD,IAAI,+CAAgD,EAAI0oD,EAAiB1oD,IAAI,sCAE1J8jf,EAA+B,CAC3B,0BAA4B,EAC5B,gCAAmCh6e,KAAK6/C,MAAMouG,kBAElD8rV,EAAkC,wCAKtC,IAAIK,GAA0B,EAAIp2Y,EAAanvG,SAAS,CAAC,2BAA4B,2BAA4Bmlf,GAE7GK,GAA6B,EAAIr2Y,EAAanvG,SAAS,iCAAkCklf,GAE7F,OAAOngf,EAAQ/E,QAAQzD,cACnB,MACA,CAAEwJ,UAAWy/e,GACbzgf,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,qCACboF,KAAK6/C,MAAM41b,eAAiB77e,EAAQ/E,QAAQzD,cAAc+uD,EAAS,MAAQvmD,EAAQ/E,QAAQzD,cAAc,MAAO,MAChHwI,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,2CACbhB,EAAQ/E,QAAQzD,cACZ8iN,EAAmBr/M,QACnB,CACI+F,UAAWw/e,EACX32b,QAAS02b,EACTnoe,MAAOioe,GAEXC,OAOpB9B,iBAAkB,WACd,IAAIj8H,EAAgBjqV,EAAQr9B,QAAQ2J,aAAa,0BACjD,OAAOwB,KAAK6/C,MAAMo0b,QAAUr6e,EAAQ/E,QAAQzD,cACxC,MACA,KACAwI,EAAQ/E,QAAQzD,cACZ,KACA,MACA,EAAIwtD,EAAiB1oD,IAAI,gCACzB8J,KAAK6/C,MAAMy6b,qBAAuB1gf,EAAQ/E,QAAQzD,cAAc+qX,EAAe,MAAQviX,EAAQ/E,QAAQzD,cAAc,MAAO,OAEhIwI,EAAQ/E,QAAQzD,cACZ,MACA,KACAwI,EAAQ/E,QAAQzD,cACZ,QACA,KACAwI,EAAQ/E,QAAQzD,cAAc,QAAS,CAAEgB,KAAM,QAC3CsB,MAl4BM,SAm4BNs1I,QAn4BM,WAm4BGhpI,KAAK6/C,MAAM+2b,aAAaC,WACjCvtb,SAAUtpD,KAAKw3e,oBAEnB59e,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,4BACb,EAAIgkD,EAAiB1oD,IAAI,wCAIrC0D,EAAQ/E,QAAQzD,cACZ,MACA,KACAwI,EAAQ/E,QAAQzD,cACZ,QACA,KACAwI,EAAQ/E,QAAQzD,cAAc,QAAS,CAAEgB,KAAM,QAC3CsB,MAr5BI,OAs5BJs1I,QAt5BI,SAs5BKhpI,KAAK6/C,MAAM+2b,aAAaC,WACjCvtb,SAAUtpD,KAAKw3e,oBAEnB59e,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,4BACb,EAAIgkD,EAAiB1oD,IAAI,gBAIrC,MAGRmif,wBAAyB,WACrB,IAAI/7R,EAAUt8M,KAAK6/C,MAAMy8J,QACrB3/G,EAAc,KACd2/G,EAAQ93E,SAAW83E,EAAQ93E,QAAQ8yW,iBACnC36Y,GAAc,EAAIk4H,EAAWzzH,mBAAmBk7G,EAAQ93E,QAAQ8yW,kBACzDt3e,KAAK6/C,MAAMouG,mBAClBtxD,EAAc/iG,EAAQ/E,QAAQzD,cAC1B,MACA,CACIwJ,UAAW,qCACX6oD,QAASzjD,KAAK6pR,eAElB,EAAIjrO,EAAiB1oD,IAAI,4IAAmJ,GAAI,CAAE,GAAM0D,EAAQ/E,QAAQzD,cAAc,KAAM,UAGpO,IAAImpf,GAA0B,EAAIv2Y,EAAanvG,SAAS,CACpD,wBAA0B,EAC1B,iCAAoCmL,KAAK6/C,MAAMouG,mBAGnD,OAAOjuJ,KAAK6/C,MAAMo0b,QAAUr6e,EAAQ/E,QAAQzD,cACxC,MACA,CAAEwJ,UAAW2/e,GACb3gf,EAAQ/E,QAAQzD,cACZ,KACA,KACA,KACA,EAAIwtD,EAAiB1oD,IAAI,2BACzB,KAEJ0D,EAAQ/E,QAAQzD,cAAc,WAAY,CACtCsC,MAAOsM,KAAK6/C,MAAM82b,YAAYW,iBAC9BnmY,aAAa,EAAIvyD,EAAiB1oD,IAAIy9e,GACtCrqb,SAAUtpD,KAAKq3e,kBACfvqb,SAAU,IACV94D,IAAK,kBAET4F,EAAQ/E,QAAQzD,cAChB,MACA,CAAEwJ,UAAW,0BACb+hG,IAIR/8C,OAAQ,WACJ,IAAI46b,EAActod,EAAQr9B,QAAQ2J,aAAa,uBAC3C2hD,EAAUjuB,EAAQr9B,QAAQ2J,aAAa,oBACvCqjU,EAAyB3vS,EAAQr9B,QAAQ2J,aAAa,mCAE1D,GAAIwB,KAAK6/C,MAAMu2b,gBAAuC,OAArBp2e,KAAK6/C,MAAMjuD,OAAkBoO,KAAK6/C,MAAMy1b,OACrE,OAAO17e,EAAQ/E,QAAQzD,cAAc+uD,EAAS,MAC3C,GAAIngD,KAAK6/C,MAAMy8J,UAAYt8M,KAAK6/C,MAAMjuD,MAAO,CAChD,IAAI0qN,EAAUt8M,KAAK6/C,MAAMy8J,QAErBm+R,OAAa,EACbC,OAAW,EACXC,OAAgB,EAChBC,EAAe,GACnB,GAAI56e,KAAK6/C,MAAMo0b,SAAWj0e,KAAK6/C,MAAMouG,iBAAkB,CACnD,IAAI4sV,OAAc,EAClB,GAAI76e,KAAK6/C,MAAM01b,gBACXsF,EAAcjhf,EAAQ/E,QAAQzD,cAAc+uD,EAAS,UAClD,CACH,IAAIs5a,EAAevnc,EAAQr9B,QAAQ2J,aAAa,uBAChDq8e,EAAcjhf,EAAQ/E,QAAQzD,cAAcqoe,EAAc,CAAEpkY,QAASr1F,KAAK3K,MAAMggG,QAC5E0iZ,UAAW/3e,KAAK6/C,MAAM82b,YAAYnkf,KAClCsof,eAAgB96e,KAAK6/C,MAAM82b,YAAYjyW,WACvCroC,MAAO,GAAIp6B,OAAQ,GAAImyE,aAAc,SAI7CqmW,EAAa7gf,EAAQ/E,QAAQzD,cACzB,MACA,CAAEwJ,UAAW,6BACbhB,EAAQ/E,QAAQzD,cACZ,QACA,CAAE4gH,QAAS,cAAep3G,UAAW,mCACrCigf,GAEJjhf,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,kCACbhB,EAAQ/E,QAAQzD,cACZ,QACA,CAAE4gH,QAAS,cAAep3G,UAAW,mCACrChB,EAAQ/E,QAAQzD,cAAc,MAAO,CAAEK,IAAK,EAAQ,MAChDmtO,KAAK,EAAIhgL,EAAiB1oD,IAAI,iBAAkB8b,OAAO,EAAI4sC,EAAiB1oD,IAAI,iBAChFmmG,MAAO,KAAMp6B,OAAQ,QAE7BroE,EAAQ/E,QAAQzD,cAAc,QAAS,CAAEwvD,GAAI,cAAehmD,UAAW,2BAA4BxI,KAAM,OAAQk3D,SAAUtpD,KAAKu3e,sBAIxI,IAAIwD,EAAe7od,EAAQr9B,QAAQ2J,aAAa,yBAEhDk8e,EAAW9gf,EAAQ/E,QAAQzD,cAAc2pf,EAAc,CAAEphd,IAAK,aAC1D/+B,UAAW,wBACXogf,qBAAsB,2BACtB7pY,aAAa,EAAIvyD,EAAiB1oD,IAAI,kBACtC+kf,cAAc,EACdtyd,aAAc3oB,KAAK6/C,MAAM82b,YAAYnkf,KACrC0of,eAAgBl7e,KAAKk3e,cACrBpqb,SAAU,IACV65B,IAAK,SAETg0Z,EAAgB/gf,EAAQ/E,QAAQzD,cAAc2pf,EAAc,CAAEphd,IAAK,oBAC/D/+B,UAAW,wBACXogf,qBAAsB,2BACtB7pY,aAAa,EAAIvyD,EAAiB1oD,IAAI,eACtC+kf,cAAc,EACdtyd,aAAc3oB,KAAK6/C,MAAM82b,YAAY/xW,kBACrCs2W,eAAgBl7e,KAAKo3e,mBACrBtqb,SAAU,IACV65B,IAAK,aACN,CACH,IAAIw0Z,EAAyBn7e,KAAK6/C,MAAM02b,aAAev2e,KAAK6pR,aAAe,KACvEixN,EAAiBx+R,EAAQ93E,QAAU83E,EAAQ93E,QAAQE,WAAa,KAChEqzW,EAAYz7R,EAAQ93E,QAAU83E,EAAQ93E,QAAQhyI,KAAO,KACzDiof,EAAa7gf,EAAQ/E,QAAQzD,cAAcopf,EAAa,CACpDnlZ,QAASr1F,KAAK3K,MAAMggG,QACpBylZ,eAAgBA,EAChB/C,UAAWA,EACXt0b,QAAS03b,EACT9+Y,MAAO,GAAIp6B,OAAQ,KAGnBy4a,EADAp+R,EAAQ93E,SAAW83E,EAAQ93E,QAAQhyI,KACxBoH,EAAQ/E,QAAQzD,cACvB,MACA,CAAEqyD,QAAS03b,GACXvhf,EAAQ/E,QAAQzD,cACZ,OACA,KACAkrN,EAAQ93E,QAAQhyI,MAEpBoH,EAAQ/E,QAAQzD,cACZ,OACA,CAAEwJ,UAAW,+BACb,IACAoF,KAAK3K,MAAMggG,QACX,MAIGz7F,EAAQ/E,QAAQzD,cACvB,OACA,CAAEqyD,QAAS03b,GACXn7e,KAAK3K,MAAMggG,SAGfinH,EAAQ93E,SAAW83E,EAAQ93E,QAAQI,oBACnC+1W,EAAgB/gf,EAAQ/E,QAAQzD,cAC5B,OACA,CAAEqyD,QAAS03b,GACX7+R,EAAQ93E,QAAQI,oBAKxB5kI,KAAK6/C,MAAMo0b,SACX2G,EAAa5qf,KAAK4J,EAAQ/E,QAAQzD,cAC9B8iN,EAAmBr/M,QACnB,CAAE+F,UAAW,mDACT5G,IAAK,cACLyvD,QAASzjD,KAAKy3e,eAElB,EAAI74b,EAAiB1oD,IAAI,UAE7B0kf,EAAa5qf,KAAK4J,EAAQ/E,QAAQzD,cAC9B8iN,EAAmBr/M,QACnB,CAAE+F,UAAW,6BACT5G,IAAK,gBACLyvD,QAASzjD,KAAK+pR,gBAElBnwR,EAAQ/E,QAAQzD,cAAc,MAAO,CAAEK,IAAK,EAAQ,KAAgCmJ,UAAW,qBAC3FyhG,MAAO,KAAMp6B,OAAQ,KAAM28J,KAAK,EAAIhgL,EAAiB1oD,IAAI,gBAG7DomN,EAAQ1uG,MAAoC,SAA5B0uG,EAAQ1uG,KAAKlW,YAC7BkjZ,EAAa5qf,KAAK4J,EAAQ/E,QAAQzD,cAAc8iN,EAAmBr/M,QAAS,CAAE+F,UAAW,kDACrF5G,IAAK,cACLyvD,QAASzjD,KAAK6pR,aACd73Q,OAAO,EAAI4sC,EAAiB1oD,IAAI,yBAGxC0kf,EAAa5qf,KAAK4J,EAAQ/E,QAAQzD,cAAc8iN,EAAmBr/M,QAAS,CAAE+F,UAAW,mDACrF5G,IAAK,eACLyvD,QAASzjD,KAAKg3e,cACdhle,OAAO,EAAI4sC,EAAiB1oD,IAAI,uBAIxC,IAAI+rW,EAAcjiW,KAAK3K,MAAMsxQ,kBAAsGj0Q,EAAvFkH,EAAQ/E,QAAQzD,cAAcsuV,EAAa7qV,QAAS,CAAEwgG,QAASr1F,KAAK3K,MAAMggG,UAElH+lZ,EAAgB,CAChB,qBAAuB,EACvB,eAAe,EACf,0BAA6Bp7e,KAAK6/C,MAAMo0b,QACxC,iCAAoCj0e,KAAK6/C,MAAM02b,cAGnD,OAAO38e,EAAQ/E,QAAQzD,cACnB,OACA,CAAEwJ,UAAW,gBACbhB,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,WAAW,EAAIopG,EAAanvG,SAASumf,IACvCxhf,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,+BACbhB,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,8BACb6/e,GAEJ7gf,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,4BACbhB,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,4BACb8/e,GAEJ9gf,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,iCACb+/e,KAIZ/gf,EAAQ/E,QAAQzD,cACZ,MACA,CAAEwJ,UAAW,gCACbggf,GAEJhhf,EAAQ/E,QAAQzD,cAAc65e,EAAqBp2e,QAAS,CAAE8xQ,aAAc3mQ,KAAK3K,MAAMsxQ,gBAE3F/sQ,EAAQ/E,QAAQzD,cACZkiW,EAAYz+V,QACZ,CAAE8xQ,aAAc3mQ,KAAK3K,MAAMsxQ,aAAc93G,MAAOozM,GAChDroW,EAAQ/E,QAAQzD,cACZywU,EACA,CAAEjnU,UAAW,qBACboF,KAAK65e,wBACL75e,KAAKi4e,sBAId,GAAIj4e,KAAK6/C,MAAMjuD,MAAO,CACzB,GAAoC,MAAhCoO,KAAK6/C,MAAMjuD,MAAM27G,WACjB,OAAO3zG,EAAQ/E,QAAQzD,cACnB,MACA,CAAEwJ,UAAW,uBACb,EAAIgkD,EAAiB1oD,IAAI,kCAAmC,CAAEm/F,QAASr1F,KAAK3K,MAAMggG,WAGtF,IAAIgmZ,OAAY,EAQhB,MAPiC,mBAA7Br7e,KAAK6/C,MAAMjuD,MAAMu3G,UACjBkyY,EAAYzhf,EAAQ/E,QAAQzD,cACxB,MACA,MACA,EAAIwtD,EAAiB1oD,IAAI,kDAG1B0D,EAAQ/E,QAAQzD,cACnB,MACA,CAAEwJ,UAAW,uBACb,EAAIgkD,EAAiB1oD,IAAI,6BAA8B,CAAEm/F,QAASr1F,KAAK3K,MAAMggG,UAC7EgmZ,GAKR,OADA9mf,QAAQ3C,MAAM,+BACPgI,EAAQ/E,QAAQzD,cAAc,MAAO,SAIxDZ,EAAOD,QAAUA,EAAiB,S,6BCzoDlC,IAAIgiB,EAAY,EAAQ,MACpBtV,EAAQ,EAAQ,MAChB+5b,EAAU,EAAQ,KAEtBxmc,EAAOD,QAAU,CACbymc,QAASA,EACT/5b,MAAOA,EACPsV,UAAWA,I,6BCPf,IAAIitJ,EAAQ,EAAQ,KAChBw3R,EAAU,EAAQ,KAClBx+a,EAAM7oB,OAAOC,UAAUC,eAEvBonc,EAAwB,CACxBC,SAAU,SAAkBtma,GACxB,OAAOA,EAAS,MAEpBsvO,MAAO,QACPi3L,QAAS,SAAiBvma,EAAQ58B,GAC9B,OAAO48B,EAAS,IAAM58B,EAAM,KAEhC61M,OAAQ,SAAgBj5K,GACpB,OAAOA,IAIXh6B,EAAUD,MAAMC,QAChB5G,EAAO2G,MAAM/G,UAAUI,KACvBonc,EAAc,SAAUr9Z,EAAKs9Z,GAC7Brnc,EAAKkM,MAAM69B,EAAKnjC,EAAQygc,GAAgBA,EAAe,CAACA,KAGxDC,EAAQ1wY,KAAKh3D,UAAUyhJ,YAEvBkmT,EAAgBP,EAAiB,QACjC3qU,EAAW,CACXmrU,gBAAgB,EAChBC,WAAW,EACXpmc,QAAS,QACTqmc,iBAAiB,EACjBz5N,UAAW,IACX9rE,QAAQ,EACRwlS,QAASn4R,EAAMrN,OACfylS,kBAAkB,EAClBlnW,OAAQ6mW,EACRM,UAAWb,EAAQr0T,WAAW40T,GAE9BJ,SAAS,EACTW,cAAe,SAAuBtyU,GAClC,OAAO8xU,EAAMxnc,KAAK01H,IAEtBuyU,WAAW,EACXC,oBAAoB,GAWpBzlb,EAAY,SAASA,EACrBpe,EACAy8B,EACAqna,EACAD,EACAD,EACAJ,EACA7+a,EACAitB,EACA0xZ,EACAK,EACAD,EACAD,EACAvmc,GAEA,IAvBuDgvB,EAuBnDprB,EAAMd,EASV,GARsB,mBAAX2kB,EACP7jB,EAAM6jB,EAAO8X,EAAQ37B,GACdA,aAAe2xD,KACtB3xD,EAAM6ic,EAAc7ic,GACW,UAAxBgjc,GAAmCrhc,EAAQ3B,KAClDA,EAAMA,EAAIsH,KAAK,MAGP,OAARtH,EAAc,CACd,GAAI+ic,EACA,OAAOL,IAAYC,EAAmBD,EAAQ/ma,EAAQy7F,EAASsrU,QAAStmc,EAAS,OAASu/B,EAG9F37B,EAAM,GAGV,GAvCoB,iBADmCorB,EAwC7BprB,IAtCN,iBAANorB,GACM,kBAANA,GACM,iBAANA,GACM,iBAANA,GAmCoBm/I,EAAMz2B,SAAS9zI,GAC7C,OAAI0ic,EAEO,CAACE,EADOD,EAAmBhna,EAAS+ma,EAAQ/ma,EAAQy7F,EAASsrU,QAAStmc,EAAS,QACxD,IAAMwmc,EAAUF,EAAQ1ic,EAAKo3H,EAASsrU,QAAStmc,EAAS,WAEnF,CAACwmc,EAAUjna,GAAU,IAAMina,EAAU3lb,OAAOjd,KAGvD,IAMIijc,EANAz6a,EAAS,GAEb,QAAmB,IAARxoB,EACP,OAAOwoB,EAIX,GAAI7mB,EAAQkiB,GACRo/a,EAAUp/a,MACP,CACH,IAAI/P,EAAOpZ,OAAOoZ,KAAK9T,GACvBijc,EAAUnyZ,EAAOh9B,EAAKg9B,KAAKA,GAAQh9B,EAGvC,IAAK,IAAIvZ,EAAI,EAAGA,EAAI0oc,EAAQxoc,SAAUF,EAAG,CACrC,IAAIwE,EAAMkkc,EAAQ1oc,GAEduoc,GAA0B,OAAb9ic,EAAIjB,KAIjB4C,EAAQ3B,GACRmic,EAAY35a,EAAQlL,EAChBtd,EAAIjB,GAC2B,mBAAxBikc,EAAqCA,EAAoBrna,EAAQ58B,GAAO48B,EAC/Eqna,EACAD,EACAD,EACAJ,EACA7+a,EACAitB,EACA0xZ,EACAK,EACAD,EACAD,EACAvmc,IAGJ+lc,EAAY35a,EAAQlL,EAChBtd,EAAIjB,GACJ48B,GAAU6ma,EAAY,IAAMzjc,EAAM,IAAMA,EAAM,KAC9Cikc,EACAD,EACAD,EACAJ,EACA7+a,EACAitB,EACA0xZ,EACAK,EACAD,EACAD,EACAvmc,KAKZ,OAAOosB,GAiDXjtB,EAAOD,QAAU,SAAU4D,EAAQqc,GAC/B,IAGI0nb,EAHAjjc,EAAMd,EACN+F,EAhDwB,SAAmCsW,GAC/D,IAAKA,EACD,OAAO67G,EAGX,GAAqB,OAAjB77G,EAAKmnb,cAAqCjlc,IAAjB8d,EAAKmnb,SAAiD,mBAAjBnnb,EAAKmnb,QACnE,MAAM,IAAI3ic,UAAU,iCAGxB,IAAI3D,EAAUmf,EAAKnf,SAAWg7H,EAASh7H,QACvC,QAA4B,IAAjBmf,EAAKnf,SAA4C,UAAjBmf,EAAKnf,SAAwC,eAAjBmf,EAAKnf,QACxE,MAAM,IAAI2D,UAAU,qEAGxB,IAAI07F,EAASsmW,EAAiB,QAC9B,QAA2B,IAAhBxmb,EAAKkgF,OAAwB,CACpC,IAAKl4E,EAAI1oB,KAAKknc,EAAQr0T,WAAYnyH,EAAKkgF,QACnC,MAAM,IAAI17F,UAAU,mCAExB07F,EAASlgF,EAAKkgF,OAElB,IAAImnW,EAAYb,EAAQr0T,WAAWjyC,GAE/B53E,EAASuzG,EAASvzG,OAKtB,OAJ2B,mBAAhBtI,EAAKsI,QAAyBliB,EAAQ4Z,EAAKsI,WAClDA,EAAStI,EAAKsI,QAGX,CACH0+a,eAA+C,kBAAxBhnb,EAAKgnb,eAA+Bhnb,EAAKgnb,eAAiBnrU,EAASmrU,eAC1FC,eAAqC,IAAnBjnb,EAAKinb,UAA4BprU,EAASorU,YAAcjnb,EAAKinb,UAC/Epmc,QAASA,EACTqmc,gBAAiD,kBAAzBlnb,EAAKknb,gBAAgClnb,EAAKknb,gBAAkBrrU,EAASqrU,gBAC7Fz5N,eAAqC,IAAnBztN,EAAKytN,UAA4B5xG,EAAS4xG,UAAYztN,EAAKytN,UAC7E9rE,OAA+B,kBAAhB3hJ,EAAK2hJ,OAAuB3hJ,EAAK2hJ,OAAS9lC,EAAS8lC,OAClEwlS,QAAiC,mBAAjBnnb,EAAKmnb,QAAyBnnb,EAAKmnb,QAAUtrU,EAASsrU,QACtEC,iBAAmD,kBAA1Bpnb,EAAKonb,iBAAiCpnb,EAAKonb,iBAAmBvrU,EAASurU,iBAChG9+a,OAAQA,EACR++a,UAAWA,EACXC,cAA6C,mBAAvBtnb,EAAKsnb,cAA+Btnb,EAAKsnb,cAAgBzrU,EAASyrU,cACxFC,UAAqC,kBAAnBvnb,EAAKunb,UAA0Bvnb,EAAKunb,UAAY1rU,EAAS0rU,UAC3EhyZ,KAA2B,mBAAdv1B,EAAKu1B,KAAsBv1B,EAAKu1B,KAAO,KACpDiyZ,mBAAuD,kBAA5Bxnb,EAAKwnb,mBAAmCxnb,EAAKwnb,mBAAqB3rU,EAAS2rU,oBAM5FG,CAA0B3nb,GAKV,mBAAnBtW,EAAQ4e,OAEf7jB,GADA6jB,EAAS5e,EAAQ4e,QACJ,GAAI7jB,GACV2B,EAAQsD,EAAQ4e,UAEvBo/a,EADSh+b,EAAQ4e,QAIrB,IAMIonS,EANAn3S,EAAO,GAEX,GAAmB,iBAAR9T,GAA4B,OAARA,EAC3B,MAAO,GAKPirT,EADA1vS,GAAQA,EAAK0vS,eAAe+2I,EACdzmb,EAAK0vS,YACZ1vS,GAAQ,YAAaA,EACdA,EAAK2mb,QAAU,UAAY,SAE3B,UAGlB,IAAIc,EAAsBhB,EAAsB/2I,GAE3Cg4I,IACDA,EAAUvoc,OAAOoZ,KAAK9T,IAGtBiF,EAAQ6rC,MACRmyZ,EAAQnyZ,KAAK7rC,EAAQ6rC,MAGzB,IAAK,IAAIv2C,EAAI,EAAGA,EAAI0oc,EAAQxoc,SAAUF,EAAG,CACrC,IAAIwE,EAAMkkc,EAAQ1oc,GAEd0K,EAAQ69b,WAA0B,OAAb9ic,EAAIjB,IAG7Bojc,EAAYrub,EAAMwJ,EACdtd,EAAIjB,GACJA,EACAikc,EACA/9b,EAAQ89b,mBACR99b,EAAQ69b,UACR79b,EAAQi4J,OAASj4J,EAAQy9b,QAAU,KACnCz9b,EAAQ4e,OACR5e,EAAQ6rC,KACR7rC,EAAQu9b,UACRv9b,EAAQ49b,cACR59b,EAAQ29b,UACR39b,EAAQ09b,iBACR19b,EAAQ7I,UAIhB,IAAI2lD,EAASjuC,EAAKxM,KAAKrC,EAAQ+jO,WAC3BrtM,GAAoC,IAA3B12B,EAAQs9b,eAA0B,IAAM,GAYrD,OAVIt9b,EAAQw9b,kBACgB,eAApBx9b,EAAQ7I,QAERu/B,GAAU,uBAGVA,GAAU,mBAIXomB,EAAOtnD,OAAS,EAAIkhC,EAASomB,EAAS,K,6BCnRjD,IAAIwoH,EAAQ,EAAQ,KAEhBhnJ,EAAM7oB,OAAOC,UAAUC,eAEvBw8H,EAAW,CACXorU,WAAW,EACXlpM,iBAAiB,EACjB6pM,WAAY,GACZ/mc,QAAS,QACTqmc,iBAAiB,EACjBx3L,OAAO,EACP/R,QAAS3uF,EAAMpN,OACf6rE,UAAW,IACX3sL,MAAO,EACP+mZ,mBAAmB,EACnBC,0BAA0B,EAC1BC,eAAgB,IAChBC,aAAa,EACbzqM,cAAc,EACdiqM,oBAAoB,GAGpBM,EAA2B,SAAUhmb,GACrC,OAAOA,EAAI7V,QAAQ,aAAa,SAAU6xP,EAAImqM,GAC1C,OAAOvmb,OAAO4yF,aAAahyF,SAAS2lb,EAAW,SA4GnDC,EAAY,SAA8BC,EAAU95a,EAAK3kB,GACzD,GAAKy+b,EAAL,CAKA,IAAI3kc,EAAMkG,EAAQu9b,UAAYkB,EAASl8b,QAAQ,cAAe,QAAUk8b,EAKpE9xb,EAAQ,gBAIR+xb,EAAU1+b,EAAQo3C,MAAQ,GALf,eAK6B31C,KAAK3H,GAC7CmT,EAASyxb,EAAU5kc,EAAIW,MAAM,EAAGikc,EAAQh9b,OAAS5H,EAIjD+U,EAAO,GACX,GAAI5B,EAAQ,CAER,IAAKjN,EAAQ6zP,cAAgBv1O,EAAI1oB,KAAKH,OAAOC,UAAWuX,KAC/CjN,EAAQq0P,gBACT,OAIRxlP,EAAK/Y,KAAKmX,GAMd,IADA,IAAI3X,EAAI,EACD0K,EAAQo3C,MAAQ,GAAqC,QAA/BsnZ,EAAU/xb,EAAMlL,KAAK3H,KAAkBxE,EAAI0K,EAAQo3C,OAAO,CAEnF,GADA9hD,GAAK,GACA0K,EAAQ6zP,cAAgBv1O,EAAI1oB,KAAKH,OAAOC,UAAWgpc,EAAQ,GAAGjkc,MAAM,GAAI,MACpEuF,EAAQq0P,gBACT,OAGRxlP,EAAK/Y,KAAK4oc,EAAQ,IAStB,OAJIA,GACA7vb,EAAK/Y,KAAK,IAAMgE,EAAIW,MAAMikc,EAAQh9b,OAAS,KAnFjC,SAAU8+C,EAAO77B,EAAK3kB,GAGpC,IAFA,IAAIg2D,EAAOrxC,EAEFrvB,EAAIkrD,EAAMhrD,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACxC,IAAIyF,EACA2yC,EAAO8S,EAAMlrD,GAEjB,GAAa,OAATo4C,GAAiB1tC,EAAQs+b,YACzBvjc,EAAM,GAAGqH,OAAO4zD,OACb,CACHj7D,EAAMiF,EAAQ6zP,aAAep+P,OAAOoE,OAAO,MAAQ,GACnD,IAAI8kc,EAA+B,MAAnBjxZ,EAAK91B,OAAO,IAA+C,MAAjC81B,EAAK91B,OAAO81B,EAAKl4C,OAAS,GAAak4C,EAAKjzC,MAAM,GAAI,GAAKizC,EACjGhsC,EAAQkX,SAAS+lb,EAAW,IAC3B3+b,EAAQs+b,aAA6B,KAAdK,GAGvB1uW,MAAMvuF,IACJgsC,IAASixZ,GACT3mb,OAAOtW,KAAWi9b,GAClBj9b,GAAS,GACR1B,EAAQs+b,aAAe58b,GAAS1B,EAAQk+b,YAE5Cnjc,EAAM,IACF2G,GAASs0D,EAEbj7D,EAAI4jc,GAAa3oY,EAXjBj7D,EAAM,CAAEwoU,EAAGvtQ,GAenBA,EAAOj7D,EAGX,OAAOi7D,EAsDA4oY,CAAY/vb,EAAM8V,EAAK3kB,KAqClC1J,EAAOD,QAAU,SAAU+hB,EAAK9B,GAC5B,IAAItW,EAnCoB,SAA+BsW,GACvD,IAAKA,EACD,OAAO67G,EAGX,GAAqB,OAAjB77G,EAAK29O,cAAqCz7P,IAAjB8d,EAAK29O,SAAiD,mBAAjB39O,EAAK29O,QACnE,MAAM,IAAIn5P,UAAU,iCAGxB,QAA4B,IAAjBwb,EAAKnf,SAA4C,UAAjBmf,EAAKnf,SAAwC,eAAjBmf,EAAKnf,QACxE,MAAM,IAAIQ,MAAM,qEAEpB,IAAIR,OAAkC,IAAjBmf,EAAKnf,QAA0Bg7H,EAASh7H,QAAUmf,EAAKnf,QAE5E,MAAO,CACHomc,eAAqC,IAAnBjnb,EAAKinb,UAA4BprU,EAASorU,YAAcjnb,EAAKinb,UAC/ElpM,gBAAiD,kBAAzB/9O,EAAK+9O,gBAAgC/9O,EAAK+9O,gBAAkBliI,EAASkiI,gBAC7F6pM,WAAuC,iBAApB5nb,EAAK4nb,WAA0B5nb,EAAK4nb,WAAa/rU,EAAS+rU,WAC7E/mc,QAASA,EACTqmc,gBAAiD,kBAAzBlnb,EAAKknb,gBAAgClnb,EAAKknb,gBAAkBrrU,EAASqrU,gBAC7Fx3L,MAA6B,kBAAf1vP,EAAK0vP,MAAsB1vP,EAAK0vP,MAAQ7zI,EAAS6zI,MAC/D/R,QAAiC,mBAAjB39O,EAAK29O,QAAyB39O,EAAK29O,QAAU9hI,EAAS8hI,QACtElwB,UAAqC,iBAAnBztN,EAAKytN,WAA0Bz+D,EAAMwiB,SAASxxK,EAAKytN,WAAaztN,EAAKytN,UAAY5xG,EAAS4xG,UAE5G3sL,MAA8B,iBAAf9gC,EAAK8gC,QAAqC,IAAf9gC,EAAK8gC,OAAoB9gC,EAAK8gC,MAAQ+6E,EAAS/6E,MACzF+mZ,mBAA8C,IAA3B7nb,EAAK6nb,kBACxBC,yBAAmE,kBAAlC9nb,EAAK8nb,yBAAyC9nb,EAAK8nb,yBAA2BjsU,EAASisU,yBACxHC,eAA+C,iBAAxB/nb,EAAK+nb,eAA8B/nb,EAAK+nb,eAAiBlsU,EAASksU,eACzFC,aAAkC,IAArBhob,EAAKgob,YAClBzqM,aAA2C,kBAAtBv9O,EAAKu9O,aAA6Bv9O,EAAKu9O,aAAe1hI,EAAS0hI,aACpFiqM,mBAAuD,kBAA5Bxnb,EAAKwnb,mBAAmCxnb,EAAKwnb,mBAAqB3rU,EAAS2rU,oBAK5Fe,CAAsBvob,GAEpC,GAAY,KAAR8B,SAAcA,EACd,OAAOpY,EAAQ6zP,aAAep+P,OAAOoE,OAAO,MAAQ,GASxD,IANA,IAAIilc,EAAyB,iBAAR1mb,EA7LP,SAAgCA,EAAKpY,GACnD,IAKI1K,EALAyF,EAAM,GACNgkc,EAAW/+b,EAAQm+b,kBAAoB/lb,EAAI7V,QAAQ,MAAO,IAAM6V,EAChEsK,EAAQ1iB,EAAQq+b,iBAAmB93Z,SAAW/tC,EAAYwH,EAAQq+b,eAClE18b,EAAQo9b,EAASpgc,MAAMqB,EAAQ+jO,UAAWrhN,GAC1Cs8a,GAAa,EAGb7nc,EAAU6I,EAAQ7I,QACtB,GAAI6I,EAAQw9b,gBACR,IAAKloc,EAAI,EAAGA,EAAIqM,EAAMnM,SAAUF,EACM,IAA9BqM,EAAMrM,GAAG4J,QAAQ,WAbX,mBAcFyC,EAAMrM,GACN6B,EAAU,QAlBZ,wBAmBSwK,EAAMrM,KACb6B,EAAU,cAEd6nc,EAAY1pc,EACZA,EAAIqM,EAAMnM,QAKtB,IAAKF,EAAI,EAAGA,EAAIqM,EAAMnM,SAAUF,EAC5B,GAAIA,IAAM0pc,EAAV,CAGA,IAKIllc,EAAK6qB,EALL2zE,EAAO32F,EAAMrM,GAEb2pc,EAAmB3mW,EAAKp5F,QAAQ,MAChCqzI,GAA4B,IAAtB0sT,EAA0B3mW,EAAKp5F,QAAQ,KAAO+/b,EAAmB,GAG9D,IAAT1sT,GACAz4I,EAAMkG,EAAQi0P,QAAQ37J,EAAM65B,EAAS8hI,QAAS98P,EAAS,OACvDwtB,EAAM3kB,EAAQ89b,mBAAqB,KAAO,KAE1Chkc,EAAMkG,EAAQi0P,QAAQ37J,EAAK79F,MAAM,EAAG83I,GAAMpgB,EAAS8hI,QAAS98P,EAAS,OACrEwtB,EAAM3kB,EAAQi0P,QAAQ37J,EAAK79F,MAAM83I,EAAM,GAAIpgB,EAAS8hI,QAAS98P,EAAS,UAGtEwtB,GAAO3kB,EAAQo+b,0BAAwC,eAAZjnc,IAC3CwtB,EAAMy5a,EAAyBz5a,IAG/BA,GAAO3kB,EAAQgmQ,OAASrhP,EAAIzlB,QAAQ,MAAQ,IAC5CylB,EAAMA,EAAIhmB,MAAM,MAGhB2f,EAAI1oB,KAAKmF,EAAKjB,GACdiB,EAAIjB,GAAOwrK,EAAMwuF,QAAQ/4P,EAAIjB,GAAM6qB,GAEnC5pB,EAAIjB,GAAO6qB,EAInB,OAAO5pB,EAqIiCmkc,CAAY9mb,EAAKpY,GAAWoY,EAChErd,EAAMiF,EAAQ6zP,aAAep+P,OAAOoE,OAAO,MAAQ,GAInDgV,EAAOpZ,OAAOoZ,KAAKiwb,GACdxpc,EAAI,EAAGA,EAAIuZ,EAAKrZ,SAAUF,EAAG,CAClC,IAAIwE,EAAM+U,EAAKvZ,GACXijC,EAASima,EAAU1kc,EAAKglc,EAAQhlc,GAAMkG,GAC1CjF,EAAMuqK,EAAMp6H,MAAMnwC,EAAKw9B,EAAQv4B,GAGnC,OAAOslK,EAAMslC,QAAQ7vM,K,6BChPzB,MAAMqmf,EAAU,EAAQ,MAElBC,EAAO/qf,EAAOD,QAAU+yB,GAAKg4d,EAAQ,CAAChvU,OAAO,IAAO36J,KAAK2R,GAC/Di4d,EAAKC,GAAKl4d,GAAKg4d,EAAQE,GAAG,CAAClvU,OAAO,IAAO36J,KAAK2R,GAC9Ci4d,EAAKE,GAAKn4d,GAAKg4d,EAAQG,GAAG,CAACnvU,OAAO,IAAO36J,KAAK2R,I,6BCH9C,MAAMk4d,EAAK,qHAELE,EAAQ,mBACRD,aAEDC,YAAgBA,gFAChBA,YAAgBF,MAAOE,+GACvBA,aAAiBF,OAAQE,6GACzBA,cAAkBA,WAAeF,OAAQE,6FACzCA,cAAkBA,WAAeF,OAAQE,6FACzCA,cAAkBA,WAAeF,OAAQE,6FACzCA,cAAkBA,WAAeF,OAAQE,mGACnCA,WAAeF,SAAUE,gLAElCj/e,QAAQ,eAAgB,IAAIA,QAAQ,MAAO,IAAIq1F,OAE3C6pZ,EAAKnrf,EAAOD,QAAUigB,GAAQA,GAAQA,EAAK87J,MAChD,IAAIhxK,cAAckgf,WAAYC,OAC9B,IAAIngf,aAAakgf,SAAUC,KAAO,KAEnCE,EAAGH,GAAKhre,GAAQA,GAAQA,EAAK87J,MAAQ,IAAIhxK,WAAWkgf,MAAS,IAAIlgf,OAAOkgf,EAAI,KAC5EG,EAAGF,GAAKjre,GAAQA,GAAQA,EAAK87J,MAAQ,IAAIhxK,WAAWmgf,MAAS,IAAIngf,OAAOmgf,EAAI,M,6BCrB5E9rf,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAGX,IAEI6pD,EAAmB3nD,EAFD,EAAQ,IAM1Bg8B,EAAmBh8B,EAFA,EAAQ,IAM3Bi8B,EAAgBj8B,EAFA,EAAQ,IAMxB4nD,EAA8B5nD,EAFA,EAAQ,IAMtC8nD,EAAa9nD,EAFA,EAAQ,IAIrBuoV,EAAyB,EAAQ,KAIrC,SAASvoV,EAAuBX,GAAO,OAAOA,GAAOA,EAAIpB,WAAaoB,EAAM,CAAEJ,QAASI,GAKvF,IAAI2mf,EAA2B,SAAUt9J,GAGrC,SAASs9J,EAAyBC,IAC9B,EAAIjqd,EAAiB/8B,SAASmL,KAAM47e,GAEpC,IAAIv8b,GAAQ,EAAI7B,EAA4B3oD,SAASmL,MAAO47e,EAAyB18e,YAAa,EAAIq+C,EAAiB1oD,SAAS+mf,IAA2B9rf,KAAKkQ,OAIhK,GAFAq/C,EAAMy8b,SAAWD,GAEZx8b,EAAMy8b,SAASrif,WAAW,WAAa4lD,EAAMy8b,SAASrif,WAAW,UAClE,MAAM,IAAI5H,MAAM,wDAEpB,OAAOwtD,EAiGX,OA7GA,EAAI3B,EAAW7oD,SAAS+mf,EAA0Bt9J,IAelD,EAAIzsT,EAAch9B,SAAS+mf,EAA0B,CAAC,CAClD5nf,IAAK,WACLN,MAAO,SAAkB6yD,EAAQ0vC,EAAS+qK,GACtC,OAAOhhQ,KAAK87e,SAAW,WAAav1b,EAAS,IAAM0vC,EAAUj2F,KAAKu+U,uBAAuBv9E,KAE9F,CACChtQ,IAAK,UACLN,MAAO,SAAiBqiG,EAAeirK,GACnC,OAAOhhQ,KAAK87e,SAAW,WAAa/lZ,EAAgB/1F,KAAKu+U,uBAAuBv9E,KAErF,CACChtQ,IAAK,UACLN,MAAO,SAAiB6/B,GACpB,OAAOvzB,KAAK87e,SAAW,WAAavod,IAEzC,CACCv/B,IAAK,WACLN,MAAO,SAAkB2hG,GACrB,OAAOr1F,KAAK87e,SAAW,YAAczmZ,IAE1C,CACCrhG,IAAK,YACLN,MAAO,SAAmB+gG,GACtB,GAAoB,MAAhBA,EAAS,IAA8B,MAAhBA,EAAS,GAChC,OAAOz0F,KAAK+0F,QAAQN,GACjB,GAAoB,MAAhBA,EAAS,GAChB,OAAOz0F,KAAK60F,QAAQJ,GACjB,GAAoB,MAAhBA,EAAS,GAChB,OAAOz0F,KAAKs1F,SAASb,GAClB,MAAM,IAAI5iG,MAAM,yBAE5B,CACCmC,IAAK,kBACLN,MAAO,SAAyB8qV,GAC5B,IAAIxqH,EAAY,IAAIz6H,IAAIv5F,KAAK87e,UAC7B,OAAOt9J,KAAcxqH,EAAUn/L,MAAQm/L,EAAU9jI,YAEtD,CACCl8F,IAAK,yBACLN,MAAO,SAAgCwlG,GACnC,OAAKA,GAAoC,IAAtBA,EAAWxpG,OACvB,QAAUwpG,EAAWhgG,KAAI,SAAUlG,GACtC,OAAOs2F,mBAAmBt2F,MAC3BuJ,KAAK,SAH2C,KAUxD,CACCvI,IAAK,iBACLN,MAAO,SAAwB2lG,GAC3B,IAAKA,IAAYA,EAAQ5/F,WAAWuG,KAAK87e,UACrC,MAAM,IAAIjqf,MAAM,qCAGpB,IAAIgK,EAAQw9F,EAAQ9P,WAAWvpF,KAAK87e,SAAW,OAAOpsf,QAAQmJ,MAAM,KACpE,GAAIgD,EAAMnM,OAAS,EAEf,MAAM,IAAImC,MAAM,wBAGpB,IAAIkqf,EAAalgf,EAAM,GACnBg8N,EAASh8N,EAAM,GACnB,GAAmB,SAAfkgf,EAEA,OAAO59J,EAAuBr9E,eAAejsK,QAAQgjI,GAClD,GAAmB,UAAfkkR,EAEP,OAAO59J,EAAuBr9E,eAAexrK,SAASuiI,GACnD,GAAmB,SAAfkkR,EAAuB,CAC9B,GAAqB,IAAjBlgf,EAAMnM,OACN,OAAOyuV,EAAuBr9E,eAAe/rK,QAAQ8iI,EAAQ,IAIjE,IACI4mH,GADkB5iV,EAAMnM,OAAS,EAAImM,EAAMlH,MAAM,GAAG4H,KAAK,KAAO,IAC/B1D,MAAM,KAEvCo9F,EAAUwoP,EAAe,GAIzBC,GAHQD,EAAe/uV,OAAS,EAAI+uV,EAAe,GAAK,IAG5C5lV,MAAM,QAAQigB,QAAO,SAAUpnB,GAC3C,QAASA,KAGb,OAAOysV,EAAuBr9E,eAAezpK,SAASwgI,EAAQ5hI,EAASyoP,GAEvE,MAAM,IAAI7sV,MAAM,wCAIrB+pf,EA9GoB,CAPFhmf,EAAuBuoV,GAsH3BtpV,SAgBzBtE,EAAQsE,QAAU+mf,EAClBprf,EAAOD,QAAUA,EAAiB,S,gBCnKlC,MAKU4mC,EAGJ9H,EAHI8H,EAwBR,SAASstO,GAET,IAcIu3O,EAdA1nX,EAAa,GACby3I,EAAap8Q,OAAOoZ,KAGpB1Q,EAAY,GACZs8N,EAAY,GAGZsnR,EAAmB,gCACnBC,EAAmB,8BACnBC,EAAmB,+BAMnBC,EAAa,UAIblif,EAAU,CACZk5Y,YAAa,QACbipG,WAAY,KACZC,OAAO,EACPjkf,eAAW3F,GAMb,SAASqgG,EAAOr/F,GACd,OAAOA,EAAM+I,QAAQ,KAAM,SAASA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,QAG1E,SAASzB,EAAIoY,GACX,OAAOA,EAAKoxF,SAAShoG,cAGvB,SAAS+/e,EAAO7nS,EAAI8nS,GAClB,IAAI9gf,EAAQg5M,GAAMA,EAAG/4M,KAAK6gf,GAC1B,OAAO9gf,GAAyB,IAAhBA,EAAME,MAGxB,SAAS6gf,EAAiBnkf,GACxB,OAAO2jf,EAActqe,KAAKrZ,GA0B5B,SAASokf,EAAQv1e,GACf,IAAInT,EACAiD,EAAS,GACT87M,EAAUp8M,MAAM/G,UAAU+E,MAAM7E,KAAK6S,UAAW,GAEpD,IAAK3O,KAAOmT,EACVlQ,EAAOjD,GAAOmT,EAAOnT,GAKvB,OAJA++M,EAAQ34M,SAAQ,SAASnF,GACvB,IAAKjB,KAAOiB,EACVgC,EAAOjD,GAAOiB,EAAIjB,MAEfiD,EAKT,SAAS0lf,EAAWvpe,GAClB,IAAInc,EAAS,GA0Bb,OAzBA,SAAU2lf,EAAYxpe,EAAM4mB,GAC1B,IAAK,IAAInzB,EAAQuM,EAAK6jD,WAAYpwD,EAAOA,EAAQA,EAAMq3R,YAC9B,IAAnBr3R,EAAMq8B,SACRlJ,GAAUnzB,EAAM05R,UAAU7wS,OACA,IAAnBmX,EAAMq8B,WACbjsC,EAAOjH,KAAK,CACV8B,MAAO,QACPkoC,OAAQA,EACR5mB,KAAMvM,IAERmzB,EAAS4id,EAAY/1e,EAAOmzB,GAIvBh/B,EAAI6L,GAAOnL,MAAM,oBACpBzE,EAAOjH,KAAK,CACV8B,MAAO,OACPkoC,OAAQA,EACR5mB,KAAMvM,KAKd,OAAOmzB,EAvBT,CAwBG5mB,EAAM,GACFnc,EAuFT,SAAS4lf,EAAmB5nf,GAC1B,GAAG+mf,IAAiB/mf,EAAI6nf,gBAAiB,CAEvC,IAAI,IAAI9of,KADRiB,EAAI6nf,iBAAkB,EACPd,EACb/mf,EAAIjB,KAASiB,EAAI+mf,EAAahof,IAAQiB,EAAIjB,KAC3CiB,EAAI0lD,UAAY,IAAIr+C,OAAOrH,EAAI8nf,UAAY,IAAI3if,QAAQyif,IAI5D,SAASG,EAAgB1kf,GAEvB,SAAS2kf,EAAMvoS,GACX,OAAQA,GAAMA,EAAGp4J,QAAWo4J,EAGhC,SAASwoS,EAAOxpf,EAAOwa,GACrB,OAAO,IAAI5S,OACT2hf,EAAMvpf,GACN,KAAO4E,EAAS6kf,iBAAmB,IAAM,KAAOjve,EAAS,IAAM,MA6CnE,SAASkve,EAAYxpf,EAAMuT,GACzB,IAAIvT,EAAKypf,SAAT,CAKA,GAHAzpf,EAAKypf,UAAW,EAEhBzpf,EAAK0pf,SAAW1pf,EAAK0pf,UAAY1pf,EAAK2pf,cAClC3pf,EAAK0pf,SAAU,CACjB,IAAIE,EAAoB,GAEpBrsc,EAAU,SAASv2C,EAAW0X,GAC5Bha,EAAS6kf,mBACX7qe,EAAMA,EAAI9V,eAEZ8V,EAAIzZ,MAAM,KAAKuB,SAAQ,SAASqjf,GAC9B,IAAIthT,EAAOshT,EAAG5kf,MAAM,KACpB2kf,EAAkBrhT,EAAK,IAAM,CAACvhM,EAAWuhM,EAAK,GAAK3qK,OAAO2qK,EAAK,IAAM,OAI5C,iBAAlBvoM,EAAK0pf,SACdnsc,EAAQ,UAAWv9C,EAAK0pf,UAExBvxO,EAAWn4Q,EAAK0pf,UAAUljf,SAAQ,SAAUQ,GAC1Cu2C,EAAQv2C,EAAWhH,EAAK0pf,SAAS1if,OAGrChH,EAAK0pf,SAAWE,EAElB5pf,EAAK8pf,UAAYR,EAAOtpf,EAAK+pf,SAAW,OAAO,GAE3Cx2e,IACEvT,EAAK2pf,gBACP3pf,EAAK+mC,MAAQ,OAAS/mC,EAAK2pf,cAAc1kf,MAAM,KAAK0D,KAAK,KAAO,QAE7D3I,EAAK+mC,QACR/mC,EAAK+mC,MAAQ,SACf/mC,EAAKgqf,QAAUV,EAAOtpf,EAAK+mC,OACvB/mC,EAAKiqf,iBACPjqf,EAAKgnC,IAAMhnC,EAAK+mC,OACb/mC,EAAKgnC,KAAQhnC,EAAKkqf,iBACrBlqf,EAAKgnC,IAAM,SACThnC,EAAKgnC,MACPhnC,EAAKmqf,MAAQb,EAAOtpf,EAAKgnC,MAC3BhnC,EAAKoqf,eAAiBf,EAAMrpf,EAAKgnC,MAAQ,GACrChnC,EAAKkqf,gBAAkB32e,EAAO62e,iBAChCpqf,EAAKoqf,iBAAmBpqf,EAAKgnC,IAAM,IAAM,IAAMzzB,EAAO62e,iBAEtDpqf,EAAKqqf,UACPrqf,EAAKsqf,UAAYhB,EAAOtpf,EAAKqqf,UACT,MAAlBrqf,EAAKuqf,YACPvqf,EAAKuqf,UAAY,GACdvqf,EAAK+mD,WACR/mD,EAAK+mD,SAAW,IAElB/mD,EAAK+mD,SAAWhkD,MAAM/G,UAAU0M,OAAOJ,MAAM,GAAItI,EAAK+mD,SAASzhD,KAAI,SAASlG,GAC1E,OA/HN,SAAqBY,GAMnB,OALIA,EAAKmpf,WAAanpf,EAAKwqf,kBACzBxqf,EAAKwqf,gBAAkBxqf,EAAKmpf,SAAS7jf,KAAI,SAASmlf,GAChD,OAAO3B,EAAQ9of,EAAM,CAACmpf,SAAU,MAAOsB,OAGpCzqf,EAAKwqf,iBAAoBxqf,EAAKkqf,gBAAkB,CAACpB,EAAQ9of,KAAW,CAACA,GAyHjE0qf,CAAkB,SAANtrf,EAAeY,EAAOZ,OAE3CY,EAAK+mD,SAASvgD,SAAQ,SAASpH,GAAIoqf,EAAYpqf,EAAGY,MAE9CA,EAAK2qf,QACPnB,EAAYxpf,EAAK2qf,OAAQp3e,GAG3B,IAAIq3e,EACF5qf,EAAK+mD,SAASzhD,KAAI,SAASlG,GACzB,OAAOA,EAAEuqf,cAAgB,UAAYvqf,EAAE2nC,MAAQ,QAAU3nC,EAAE2nC,SAE5Dr+B,OAAO,CAAC1I,EAAKoqf,eAAgBpqf,EAAKqqf,UAClC/kf,IAAI+jf,GACJnke,OAAO6d,SACV/iC,EAAK4qf,YAAcA,EAAY9uf,OAASwtf,EA7G1C,SAAgB1jZ,EAASziD,GAWvB,IAHA,IAAI0nc,EAAkB,iDAClBC,EAAc,EACd9+e,EAAM,GACDpQ,EAAI,EAAGA,EAAIgqG,EAAQ9pG,OAAQF,IAAK,CACvC,IAAIwqC,EAAS0kd,EACThqS,EAAKuoS,EAAMzjZ,EAAQhqG,IAIvB,IAHIA,EAAI,IACNoQ,GAAOm3C,GAEF29J,EAAGhlN,OAAS,GAAG,CACpB,IAAIgM,EAAQ+if,EAAgB9if,KAAK+4M,GACjC,GAAa,MAATh5M,EAAe,CACjBkE,GAAO80M,EACP,MAEF90M,GAAO80M,EAAGnrH,UAAU,EAAG7tF,EAAME,OAC7B84M,EAAKA,EAAGnrH,UAAU7tF,EAAME,MAAQF,EAAM,GAAGhM,QACtB,MAAfgM,EAAM,GAAG,IAAcA,EAAM,GAE/BkE,GAAO,KAAOsS,OAAOsf,OAAO91B,EAAM,IAAMs+B,IAExCp6B,GAAOlE,EAAM,GACG,KAAZA,EAAM,IACRgjf,MAKR,OAAO9+e,EAyEwC++e,CAAOH,EAAa,MAAM,GAAQ,CAAC7if,KAAM,WAAiB,OAAO,QAGlHyhf,CAAY9kf,GAYd,SAASwqG,EAAUtwG,EAAMkB,EAAOkrf,EAAiBpkK,GAE/C,SAASqkK,EAASnrf,GAChB,OAAO,IAAI4H,OAAO5H,EAAM+I,QAAQ,yBAA0B,QAAS,KAgCrE,SAASqif,EAAalrf,EAAM8H,GAC1B,IAAIqjf,EAAYzmf,EAAS6kf,iBAAmBzhf,EAAM,GAAGc,cAAgBd,EAAM,GAC3E,OAAO9H,EAAK0pf,SAASztf,eAAekvf,IAAcnrf,EAAK0pf,SAASyB,GAGlE,SAASC,EAAUC,EAAWC,EAAYC,EAAWC,GACnD,IACIC,EAAc,iBADAD,EAAW,GAAKllf,EAAQk5Y,aAM1C,OAAK6rG,GAFLI,GAAYJ,EAAY,MAGNC,GALAC,EAAY,GAAK/C,GAIZ8C,EAqDzB,SAASI,IACProf,GAA8B,MAAnBupI,EAAI++W,YAxBjB,WACE,IAAIh3b,EAAsC,iBAApBi4E,EAAI++W,YAC1B,GAAIh3b,IAAalwD,EAAUmoI,EAAI++W,aAC7B,OAAOxsZ,EAAOysZ,GAGhB,IAAIvof,EAASsxD,EACAu6C,EAAU09B,EAAI++W,YAAaC,GAAa,EAAMC,EAAcj/W,EAAI++W,cAChEG,EAAcF,EAAah/W,EAAI++W,YAAY7vf,OAAS8wI,EAAI++W,iBAAc7sf,GAYnF,OANI8tI,EAAI29W,UAAY,IAClBA,GAAalnf,EAAOknf,WAElB51b,IACFk3b,EAAcj/W,EAAI++W,aAAetof,EAAOupI,KAEnCw+W,EAAU/nf,EAAOqB,SAAUrB,EAAOvD,OAAO,GAAO,GAIlBisf,GAlDvC,WACE,IAAIC,EAAeC,EAAYnkf,EAAOzE,EAEtC,IAAKupI,EAAI88W,SACP,OAAOvqZ,EAAOysZ,GAOhB,IALAvof,EAAS,GACT4of,EAAa,EACbr/W,EAAIk9W,UAAU3ze,UAAY,EAC1BrO,EAAQ8kI,EAAIk9W,UAAU/hf,KAAK6jf,GAEpB9jf,GACLzE,GAAU87F,EAAOysZ,EAAYj2Z,UAAUs2Z,EAAYnkf,EAAME,SACzDgkf,EAAgBd,EAAat+W,EAAK9kI,KAEhCyif,GAAayB,EAAc,GAC3B3of,GAAU+nf,EAAUY,EAAc,GAAI7sZ,EAAOr3F,EAAM,MAEnDzE,GAAU87F,EAAOr3F,EAAM,IAEzBmkf,EAAar/W,EAAIk9W,UAAU3ze,UAC3BrO,EAAQ8kI,EAAIk9W,UAAU/hf,KAAK6jf,GAE7B,OAAOvof,EAAS87F,EAAOysZ,EAAYjmf,OAAOsmf,IA2BkBC,GAC5DN,EAAc,GAGhB,SAASO,EAAansf,GACpBqD,GAAUrD,EAAKgH,UAAWokf,EAAUprf,EAAKgH,UAAW,IAAI,GAAO,GAC/D4lI,EAAM7wI,OAAOoE,OAAOH,EAAM,CAACuT,OAAQ,CAACzT,MAAO8sI,KAG7C,SAASw/W,EAAcrpX,EAAQ6lX,GAI7B,GAFAgD,GAAe7oX,EAED,MAAV6lX,EAEF,OADA8C,IACO,EAGT,IAAIW,EAjHN,SAAiBzD,EAAQ5of,GACvB,IAAIpE,EAAGE,EAEP,IAAKF,EAAI,EAAGE,EAASkE,EAAK+mD,SAASjrD,OAAQF,EAAIE,EAAQF,IACrD,GAAI+sf,EAAO3of,EAAK+mD,SAASnrD,GAAGouf,QAASpB,GAInC,OAHI5of,EAAK+mD,SAASnrD,GAAGquf,iBACnBjqf,EAAK+mD,SAASnrD,GAAGuuf,MAAQc,EAAUjrf,EAAK+mD,SAASnrD,GAAGouf,QAAQjif,KAAK6gf,GAAQ,KAEpE5of,EAAK+mD,SAASnrD,GAyGV0wf,CAAQ1D,EAAQh8W,GAC/B,GAAIy/W,EAaF,OAZIA,EAAS1mc,KACXimc,GAAehD,GAEXyD,EAASE,eACXX,GAAehD,GAEjB8C,IACKW,EAASG,aAAgBH,EAASE,eACrCX,EAAchD,IAGlBuD,EAAaE,GACNA,EAASG,YAAc,EAAI5D,EAAO9sf,OAG3C,IAAI2wf,EArHN,SAASC,EAAU1sf,EAAM4of,GACvB,GAAID,EAAO3of,EAAKmqf,MAAOvB,GAAS,CAC9B,KAAO5of,EAAK2sf,YAAc3sf,EAAKuT,QAC7BvT,EAAOA,EAAKuT,OAEd,OAAOvT,EAET,GAAIA,EAAKkqf,eACP,OAAOwC,EAAU1sf,EAAKuT,OAAQq1e,GA6GjB8D,CAAU9/W,EAAKg8W,GAC9B,GAAI6D,EAAU,CACZ,IAAI/yc,EAASkzF,EACTlzF,EAAOiM,KACTimc,GAAehD,GAETlvc,EAAOkzc,WAAalzc,EAAOmzc,aAC/BjB,GAAehD,GAEjB8C,IACIhyc,EAAOmzc,aACTjB,EAAchD,IAGlB,GACMh8W,EAAI5lI,YACN3D,GAAUmlf,GAEP57W,EAAIjnF,MAASinF,EAAI++W,cACpBpB,GAAa39W,EAAI29W,WAEnB39W,EAAMA,EAAIr5H,aACHq5H,IAAQ6/W,EAASl5e,QAO1B,OANIk5e,EAAS9B,SACP8B,EAASxC,iBACXwC,EAAS9B,OAAOR,MAAQsC,EAAStC,OAEnCgC,EAAaM,EAAS9B,SAEjBjxc,EAAOkzc,UAAY,EAAIhE,EAAO9sf,OAGvC,GAzIF,SAAmB8sf,EAAQ5of,GACzB,OAAQgrf,GAAmBrC,EAAO3of,EAAKsqf,UAAW1B,GAwI9CkE,CAAUlE,EAAQh8W,GACpB,MAAM,IAAI3uI,MAAM,mBAAqB2qf,EAAS,gBAAkBh8W,EAAI5lI,WAAa,aAAe,KAQlG,OADA4kf,GAAehD,EACRA,EAAO9sf,QAAU,EAG1B,IAAI4I,EAAWpB,EAAY1E,GAC3B,IAAK8F,EACH,MAAM,IAAIzG,MAAM,sBAAwBW,EAAO,KAGjDwqf,EAAgB1kf,GAChB,IAEiBkb,EAFbgtH,EAAMg6M,GAAgBliV,EACtBmnf,EAAgB,GAChBxof,EAAS,GACb,IAAIuc,EAAUgtH,EAAKhtH,IAAYlb,EAAUkb,EAAUA,EAAQrM,OACrDqM,EAAQ5Y,YACV3D,EAAS+nf,EAAUxre,EAAQ5Y,UAAW,IAAI,GAAQ3D,GAGtD,IAAIuof,EAAc,GACdrB,EAAY,EAChB,IAEE,IADA,IAAIzif,EAAOvB,EAAOyB,EAAQ,EAExB4kI,EAAIg+W,YAAYz0e,UAAYnO,EAC5BF,EAAQ8kI,EAAIg+W,YAAY7if,KAAKjI,IAG7ByG,EAAQ6lf,EAActsf,EAAM61F,UAAU3tF,EAAOF,EAAME,OAAQF,EAAM,IACjEE,EAAQF,EAAME,MAAQzB,EAGxB,IADA6lf,EAActsf,EAAM6F,OAAOqC,IACvB4X,EAAUgtH,EAAKhtH,EAAQrM,OAAQqM,EAAUA,EAAQrM,OAC/CqM,EAAQ5Y,YACV3D,GAAUmlf,GAGd,MAAO,CACL+B,UAAWA,EACXzqf,MAAOuD,EACPqB,SAAU9F,EACVguI,IAAKA,GAEP,MAAO9vI,GACP,GAAIA,EAAE6B,UAA6C,IAAlC7B,EAAE6B,QAAQ6G,QAAQ,WACjC,MAAO,CACL+kf,UAAW,EACXzqf,MAAOq/F,EAAOr/F,IAGhB,MAAMhD,GAgBZ,SAASgvf,EAAc5lf,EAAM6mf,GAC3BA,EAAiBA,GAAkBzmf,EAAQ7B,WAAa0zQ,EAAW1zQ,GACnE,IAAIpB,EAAS,CACXknf,UAAW,EACXzqf,MAAOq/F,EAAOj5F,IAEZ8mf,EAAc3pf,EAelB,OAdA0pf,EAAe7ne,OAAO5hB,GAAa4hB,OAAO+ne,GAAezmf,SAAQ,SAAS5H,GACxE,IAAIghB,EAAUsvF,EAAUtwG,EAAMsH,GAAM,GACpC0Z,EAAQlb,SAAW9F,EACfghB,EAAQ2qe,UAAYyC,EAAYzC,YAClCyC,EAAcpte,GAEZA,EAAQ2qe,UAAYlnf,EAAOknf,YAC7ByC,EAAc3pf,EACdA,EAASuc,MAGTote,EAAYtof,WACdrB,EAAO2pf,YAAcA,GAEhB3pf,EAUT,SAAS6pf,EAAUptf,GACjB,OAASwG,EAAQmif,YAAcnif,EAAQoif,MAEnC5of,EAAM+I,QAAQ0/e,GAAa,SAASzgf,EAAO+nE,GACzC,OAAIvpE,EAAQoif,OAAmB,OAAV5gf,EACZ,OACExB,EAAQmif,WACV54a,EAAGhnE,QAAQ,MAAOvC,EAAQmif,YAE5B,MAPT3of,EA8BN,SAASs8Q,EAAe55M,GACtB,IAAIhjD,EAAM2te,EAAgB9pf,EAAQ+pf,EAAYlnf,EAC1CxB,EA/lBN,SAAuB89D,GACrB,IAAI5mE,EAAGkM,EAAOhM,EAAQk1Q,EAClBrhN,EAAU6S,EAAMx7D,UAAY,IAMhC,GAJA2oD,GAAW6S,EAAMmlC,WAAanlC,EAAMmlC,WAAW3gG,UAAY,GAG3Dc,EAAQwgf,EAAiBvgf,KAAK4nD,GAE5B,OAAOrsD,EAAYwE,EAAM,IAAMA,EAAM,GAAK,eAK5C,IAAKlM,EAAI,EAAGE,GAFZ6zD,EAAUA,EAAQ1qD,MAAM,QAEKnJ,OAAQF,EAAIE,EAAQF,IAG/C,GAAIitf,EAFJ73O,EAASrhN,EAAQ/zD,KAEe0H,EAAY0tQ,GAC1C,OAAOA,EA6kBIq8O,CAAc7qb,GAEzBqmb,EAAiBnkf,KAGjB4B,EAAQoif,OACVlpe,EAAOjiB,SAAS+yR,gBAAgB,+BAAgC,QAC3DnjL,UAAY3qC,EAAM2qC,UAAUtkG,QAAQ,MAAO,IAAIA,QAAQ,cAAe,MAE3E2W,EAAOgjD,EAETt8D,EAAOsZ,EAAK0oN,YACZ7kO,EAASqB,EAAWwqG,EAAUxqG,EAAUwB,GAAM,GAAQ4lf,EAAc5lf,IAEpEinf,EAAiBpE,EAAWvpe,IACT1jB,UACjBsxf,EAAa7vf,SAAS+yR,gBAAgB,+BAAgC,QAC3DnjL,UAAY9pG,EAAOvD,MAC9BuD,EAAOvD,MA5iBX,SAAsBs9D,EAAU03C,EAAah1G,GAC3C,IAAIyiV,EAAY,EACZl/U,EAAS,GACTiqf,EAAY,GAEhB,SAASC,IACP,OAAKnwb,EAASthE,QAAWg5G,EAAYh5G,OAGjCshE,EAAS,GAAGh3B,SAAW0uE,EAAY,GAAG1uE,OAChCg3B,EAAS,GAAGh3B,OAAS0uE,EAAY,GAAG1uE,OAAUg3B,EAAW03C,EAkBnC,UAAzBA,EAAY,GAAG52G,MAAoBk/D,EAAW03C,EArB5C13C,EAASthE,OAASshE,EAAW03C,EAwBxC,SAASyS,EAAK/nG,GAEZnc,GAAU,IAAM+D,EAAIoY,GAAQkhH,EAAWp7H,IAAIpJ,KAAKsjB,EAAKsX,YADrD,SAAkBrrB,GAAI,MAAO,IAAMA,EAAEmlG,SAAW,KAAOzR,EAAO1zF,EAAE3L,OAAO+I,QAAQ,IAAK,UAAY,OACrBF,KAAK,IAAM,IAGxF,SAASymD,EAAM5vC,GACbnc,GAAU,KAAO+D,EAAIoY,GAAQ,IAG/B,SAASwsC,EAAO9tD,IACG,UAAhBA,EAAMA,MAAoBqpH,EAAOn4D,GAAOlxD,EAAMshB,MAGjD,KAAO49C,EAASthE,QAAUg5G,EAAYh5G,QAAQ,CAC5C,IAAI+0K,EAAS08U,IAGb,GAFAlqf,GAAU87F,EAAOr/F,EAAM61F,UAAU4sP,EAAW1xK,EAAO,GAAGzqI,SACtDm8S,EAAY1xK,EAAO,GAAGzqI,OAClByqI,IAAWzzG,EAAU,CAOvBkwb,EAAUtjd,UAAUxjC,QAAQ4oD,GAC5B,GACEpD,EAAO6kH,EAAOpoK,OAAO,EAAG,GAAG,IAC3BooK,EAAS08U,UACF18U,IAAWzzG,GAAYyzG,EAAO/0K,QAAU+0K,EAAO,GAAGzqI,SAAWm8S,GACtE+qK,EAAUtjd,UAAUxjC,QAAQ+gH,OAEJ,UAApBspD,EAAO,GAAG3yK,MACZovf,EAAUlxf,KAAKy0K,EAAO,GAAGrxJ,MAEzB8te,EAAUx7e,MAEZk6C,EAAO6kH,EAAOpoK,OAAO,EAAG,GAAG,IAG/B,OAAOpF,EAAS87F,EAAOr/F,EAAM6F,OAAO48U,IAsenBirK,CAAaL,EAAgBpE,EAAWqE,GAAalnf,IAEtE7C,EAAOvD,MAAQotf,EAAU7pf,EAAOvD,OAEhC0iE,EAAM2qC,UAAY9pG,EAAOvD,MACzB0iE,EAAMx7D,UA5CR,SAAwBymf,EAAerof,EAAasof,GAClD,IAAIhpf,EAAWU,EAAc27N,EAAQ37N,GAAesof,EAChDrqf,EAAW,CAACoqf,EAAcvvZ,QAU9B,OARKuvZ,EAAc3lf,MAAM,aACvBzE,EAAOjH,KAAK,SAG2B,IAArCqxf,EAAcjof,QAAQd,IACxBrB,EAAOjH,KAAKsI,GAGPrB,EAAOsF,KAAK,KAAKu1F,OAgCNyvZ,CAAenrb,EAAMx7D,UAAWtC,EAAUrB,EAAOqB,UACnE89D,EAAMn/D,OAAS,CACbqB,SAAUrB,EAAOqB,SACjBo8M,GAAIz9M,EAAOknf,WAETlnf,EAAO2pf,cACTxqb,EAAMwqb,YAAc,CAClBtof,SAAUrB,EAAO2pf,YAAYtof,SAC7Bo8M,GAAIz9M,EAAO2pf,YAAYzC,aAe7B,SAASqD,IACP,IAAIA,EAAiBtoe,OAArB,CAEAsoe,EAAiBtoe,QAAS,EAE1B,IAAIunD,EAAStvE,SAAS20a,iBAAiB,YACvCxxS,EAAWl6H,QAAQtK,KAAK2wE,EAAQuvM,IAuBlC,SAAS94Q,EAAY1E,GAEnB,OADAA,GAAQA,GAAQ,IAAIgK,cACbnE,EAAU7F,IAAS6F,EAAUs8N,EAAQniO,IAG9C,SAASquf,EAAcruf,GACrB,IAAIg9K,EAAOt4K,EAAY1E,GACvB,OAAOg9K,IAASA,EAAKiyU,kBA0HvB,OArHAh9O,EAAK3hK,UAAYA,EACjB2hK,EAAKi7O,cAAgBA,EACrBj7O,EAAKq8O,UAAYA,EACjBr8O,EAAKuL,eAAiBA,EACtBvL,EAAKi9O,UApDL,SAAmBC,GACjBznf,EAAUwif,EAAQxif,EAASynf,IAoD7Bl9O,EAAK+8O,iBAAmBA,EACxB/8O,EAAKm9O,uBAnCL,WACE/nV,iBAAiB,mBAAoB2nV,GAAkB,GACvD3nV,iBAAiB,OAAQ2nV,GAAkB,IAkC7C/8O,EAAKC,iBA/BL,SAA0BlyQ,EAAM8F,GAC9B,IAAIk3K,EAAOn3K,EAAU7F,GAAQ8F,EAASmsQ,GACtCo4O,EAAmBrtU,GACfA,EAAKmlD,SACPnlD,EAAKmlD,QAAQv6N,SAAQ,SAASq1P,GAAQ96B,EAAQ86B,GAASj9P,MA4B3DiyQ,EAAKo9O,cAxBL,WACE,OAAO91O,EAAW1zQ,IAwBpBosQ,EAAKvtQ,YAAcA,EACnButQ,EAAKo8O,cAAgBA,EACrBp8O,EAAKi4O,QAAUA,EAGfj4O,EAAKq9O,SAAW,eAChBr9O,EAAKs9O,oBAAsB,gBAC3Bt9O,EAAKu9O,UAAY,oBACjBv9O,EAAKw9O,YAAc,yEACnBx9O,EAAKy9O,iBAAmB,eACxBz9O,EAAK09O,eAAiB,+IAGtB19O,EAAK29O,iBAAmB,CACtBznd,MAAO,eAAgBwjd,UAAW,GAEpC15O,EAAK49O,iBAAmB,CACtBznf,UAAW,SACX+/B,MAAO,IAAMC,IAAK,IAClBqjd,QAAS,MACTtjc,SAAU,CAAC8pN,EAAK29O,mBAElB39O,EAAK69O,kBAAoB,CACvB1nf,UAAW,SACX+/B,MAAO,IAAKC,IAAK,IACjBqjd,QAAS,MACTtjc,SAAU,CAAC8pN,EAAK29O,mBAElB39O,EAAK89O,mBAAqB,CACxB5nd,MAAO,8IAET8pO,EAAK+9O,QAAU,SAAU7nd,EAAOC,EAAK3nB,GACnC,IAAIrf,EAAO6wQ,EAAKi4O,QACd,CACE9hf,UAAW,UACX+/B,MAAOA,EAAOC,IAAKA,EACnB+f,SAAU,IAEZ1nC,GAAY,IAQd,OANArf,EAAK+mD,SAAS3qD,KAAKy0Q,EAAK89O,oBACxB3uf,EAAK+mD,SAAS3qD,KAAK,CACjB4K,UAAW,SACX+/B,MAAO,+BACPwjd,UAAW,IAENvqf,GAET6wQ,EAAKg+O,oBAAsBh+O,EAAK+9O,QAAQ,KAAM,KAC9C/9O,EAAKi+O,qBAAuBj+O,EAAK+9O,QAAQ,OAAQ,QACjD/9O,EAAKk+O,kBAAoBl+O,EAAK+9O,QAAQ,IAAK,KAC3C/9O,EAAKm+O,YAAc,CACjBhof,UAAW,SACX+/B,MAAO8pO,EAAKu9O,UACZ7D,UAAW,GAEb15O,EAAKo+O,cAAgB,CACnBjof,UAAW,SACX+/B,MAAO8pO,EAAKw9O,YACZ9D,UAAW,GAEb15O,EAAKq+O,mBAAqB,CACxBlof,UAAW,SACX+/B,MAAO8pO,EAAKy9O,iBACZ/D,UAAW,GAEb15O,EAAKs+O,gBAAkB,CACrBnof,UAAW,SACX+/B,MAAO8pO,EAAKu9O,UAAY,kGASxB7D,UAAW,GAEb15O,EAAKu+O,YAAc,CACjBpof,UAAW,SACX+/B,MAAO,KAAMC,IAAK,aAClBqjd,QAAS,KACTtjc,SAAU,CACR8pN,EAAK29O,iBACL,CACEznd,MAAO,KAAMC,IAAK,KAClBujd,UAAW,EACXxjc,SAAU,CAAC8pN,EAAK29O,qBAItB39O,EAAKw+O,WAAa,CAChBrof,UAAW,QACX+/B,MAAO8pO,EAAKq9O,SACZ3D,UAAW,GAEb15O,EAAKy+O,sBAAwB,CAC3Btof,UAAW,QACX+/B,MAAO8pO,EAAKs9O,oBACZ5D,UAAW,GAEb15O,EAAK0+O,aAAe,CAElBxod,MAAO,UAAY8pO,EAAKs9O,oBACxB5D,UAAW,GAGN15O,GAj3BHp1O,EAAiC,iBAAX56B,QAAuBA,QACd,iBAATkK,MAAqBA,KAKTpO,EAAQ2yC,SAEpC7T,IAGRA,EAAao1O,KAAOttO,EAAQ,SAMzB,KAFU,EAAF,WACP,OAAO9H,EAAao1O,MACrB,QAFM,OAEN,cAVHttO,EAAQ5mC,I,cCfZC,EAAOD,QAAU,SAASk0Q,GAGxB,IAAIs9O,EAAsB,yCAYtBqB,EAAUC,kNA6YVC,EAAU,gCAGVC,EAAU9+O,EAAKi4O,QAAQj4O,EAAKm+O,aAG5BY,EAAU,CACZ5of,UAAW,SACX+/B,MAAO,QAASC,IAAK,MACrB+f,SAAU,CAAC,CAAChgB,MAAO,QAIjB8od,EAAO,CACT9od,MAAO,IAAKC,IAAK,IAAKuld,cAAc,EAAMM,YAAY,EACtD9lc,SAAU,CACR,CACE//C,UAAW,SACX+/B,MAAO,sCAMT+od,EAAWj/O,EAAKi4O,QAAQj4O,EAAKg+O,qBAoDjC,MAAO,CACLtF,kBAAkB,EAClBQ,QAASoE,EACTzE,SAAU,CACRqG,QAASP,EACTQ,SAlWJC,ikUAmWI3+Y,MA1JJ4+Y,ypZA2JI1xf,KAvFJ2xf,+5HAwFI11H,QAASi1H,GAEX3oc,SAAU,CA3DD,CACT//C,UAAW,OACX+if,QAASoE,EACTpnd,MAAO,MAAOC,IAAK,IACnB0id,SAAU,CAAC,eAAgB8F,EA/ZXY,sUAgahBrpc,SAAU,CACR+oc,IAWW,CACb9of,UAAW,WACX+if,QAASoE,EACThF,SAAU,CACR,CAACpid,MAAO,oBAAqBC,IAAK,MAAO0id,SAAU,qBACnD,CAAC3id,MAAO,8BAA+B2id,SAAU,gCAEnD3ic,SAAU,CACR,CACEhgB,MAAO,MAAOC,IAAK,MAAO2ld,YAAa,EACvC5lc,SAAU,CACR,CACE//C,UAAW,SACX+if,QAASoE,EACTpnd,MAAOond,EAAqBnnd,IAAK,IAAK6ld,YAAY,EAAM3C,gBAAgB,EACxER,SAAU,CACRqG,QAAS,OACTt1H,QAASi1H,GAEX3oc,SAAU,CACR4oc,EACAC,EACAC,IAGJC,IAGJj/O,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAACtod,MAAOond,MAiBtC2B,EAnDS,CACX9of,UAAW,SACX+/B,MAAO,IAAKC,IAAK,MAAO6ld,YAAY,GAmDlC8C,EACAC,EACAC,M,cCzfNjzf,EAAOD,QAAU,SAASk0Q,GACtB,IAAIiqM,EACiB,yBADjBA,EAEiB,mBAsBjBu1C,EAAcx/O,EAAK+9O,QAAQ,IAAK,KAsBhC0B,EAAsB,CACtBvpd,MAAO+za,EAA0B,QACjC0xC,aAAa,EACbxld,IAAK,IACLujd,UAAW,EACXxjc,SAAU,CAAC,CAAC//C,UAAW,YAAa+/B,MAAO+za,KAG/C,MAAO,CACLuvC,QAASvvC,EACT4uC,SAnDa,CACX,QACA,MACA,OACA,KACA,OACA,MACA,QACA,SACA,SACA,OACA,KACA,OACA,QACA,KACA,QACA,OAmCiB/gf,KAAK,KACxBo+C,SAAU,CACNupc,EACAD,EAjCmB,CACrBrpf,UAAW,SACX+/B,MAAO,sCAGe,CACtB//B,UAAW,SACX+/B,MAAO,sCAGmB,CAC1B//B,UAAW,SACX+/B,MAAO,+CAGwB,CAC/B//B,UAAW,SACX+/B,MAAO,SAqBL8pO,EAAK69O,kBACL79O,EAAKm+O,gB,cClEfpyf,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL9pN,SAAU,CAER,CACE//C,UAAW,SACX+/B,MAAO,+DAGT,CACE//B,UAAW,SACX+/B,MAAO,aACPwjd,UAAW,GAGb,CACEvjf,UAAW,SACX+/B,MAAO,0DAA2DC,IAAK,IACvE0id,SAAU,uDACVW,QAAS,MACTE,UAAW,IAGb,CACEvjf,UAAW,SACX+/B,MAAO,KAAMC,IAAK,KAClBqjd,QAAS,OAGX,CACErjf,UAAW,SACX+/B,MAAO,IAAKC,IAAK,IACjBqjd,QAAS,W,cChCjBztf,EAAOD,QAAU,SAASk0Q,GACxB,IAGI0/O,EAAoB,CACtBvpf,UAAW,WACX+/B,MAAO,SAAUC,IALJ,2BAMbujd,UAAW,IAGb,MAAO,CACLxpR,QAAS,CAAC,MACV2oR,SAAU,CACRqG,QAAS,mUAKTt1H,QAAS,6BAEX1zU,SAAU,CACR8pN,EAAK49O,iBACL59O,EAAK69O,kBACL79O,EAAKg+O,oBACLh+O,EAAKi+O,qBACLj+O,EAAKo+O,cACL,CACEjof,UAAW,QACX2if,cAAe,UAAW3id,IAAK,IAC/B+f,SAAU,CAAC8pN,EAAKw+O,aAElB,CACErof,UAAW,QACX2if,cAAe,kBAAmB3id,IAAK,IAAK6ld,YAAY,EACxD9lc,SAAU,CACR,CACE4ic,cAAe,sBAEjB94O,EAAKw+O,aAGT,CACErof,UAAW,OACX2if,cAAe,iBAAkB3id,IAAK,IACtC0id,SAAU,CAAC,eAAgB,mBAE7B,CACE1if,UAAW,WACX2if,cAAe,WAAY3id,IAAK,OAAQ6ld,YAAY,EACpDxC,QAAS,MACTtjc,SAAU,CACR8pN,EAAKw+O,WACL,CACErof,UAAW,SACX+/B,MAAO,MAAOC,IAAK,MACnB+f,SAAU,CACR8pN,EAAK49O,iBACL59O,EAAK69O,kBACL79O,EAAKg+O,oBACLh+O,EAAKi+O,qBACLyB,IAGJ,CACExpd,MAAO,yCAIb8pO,EAAK0+O,cAEPlF,QAAS,O,cCtEbztf,EAAOD,QAUP,SAASk0Q,GAKL,IAWI2/O,EAAW,4BAMXV,EAAWj/O,EAAK+9O,QAAQ,KAAM,KAK9B6B,EAAY,CAIZ1pd,MAAO,YAAaC,IAAK,sBAGzBqjd,QAfY,YAgBZtjc,SAAU,CACN,CAGI4ic,cAAe,0BACfgD,YAAY,GAEhB,CAEI3lf,UAAW,UACX2if,cAAe,wEAEnB,CACI3if,UAAW,OACX+/B,MAAOypd,EACP7D,YAAY,EACZpC,UAAW,KAKvB,MAAO,CACHhB,kBAAkB,EAClBG,SAAU,CACNqG,QACI,4bAOJt1H,QACI,cAER1zU,SAAU,CACN+oc,EAEA,CACI9of,UAAW,SACX+/B,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CAAC,CAAChgB,MAAO,KAAMwjd,UAAW,KAGxC,CAEIvjf,UAAW,SACX+/B,MAAO,OAEX,CAEI//B,UAAW,SACX+/B,MA1EI,8GA2EJwjd,UAAW,GAEf,CAEIvjf,UAAW,SACX+/B,MAAO,IAAMypd,GAEjB,CAEIxpf,UAAW,QACX+/B,MAAO,8DAA+DC,IAAK,SAC3E0id,SAAU,eACV6C,cAAc,EACdM,YAAY,EACZxC,QAnFI,aAqFR,CAGItjd,MAAO,yDAA0DC,IAAK,sCACtE0id,SAAU,uDAGV8C,aAAa,EACbzlc,SACA,CACI+oc,EACA,CAEI9of,UAAW,QACX+/B,MAAO,4CACPC,IAAK,eACLuld,cAAc,EACdM,YAAY,EACZxC,QAvGJ,aA2GAoG,EACA,CAEIzpf,UAAW,OACX+/B,MAAO,gBAAiBC,IAAK,aAC7B0id,SAAU,SACV6C,cAAc,EACdM,YAAY,EAEZF,YAAY,EACZtC,QArHJ,eA0HR,CAGIrjf,UAAW,OACX+/B,MAAO,oBAAqBC,IAAK,OACjC0id,SAAU,OACV6C,cAAc,EACdlC,QAjII,aAqIRoG,M,cClKZ7zf,EAAOD,QAAU,SAASk0Q,GACxB,IAAI6/O,EAAkB,CACpB1pf,UAAW,WACX+/B,MAAO,2HAGL4pd,EAAmB,CACrB3pf,UAAW,SACX+/B,MAAO,kBAGL6pd,EAAc,CAChB5pf,UAAW,UACX+/B,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CAAE2pc,EAAiBC,IAM/B,OAHAD,EAAgB3pc,SAAW,CAAE6pc,GAC7BD,EAAiB5pc,SAAW,CAAE6pc,GAEvB,CACL7vR,QAAS,CAAE,OAEX2oR,SACE,kSAMFW,QAAS,qDAETtjc,SAAU,CACR,CACE//C,UAAW,SACX+/B,MAAO,IAAMC,IAAK,IAClBqjd,QAAS,MACTtjc,SAAU,CAAE8pN,EAAK29O,kBACjBjE,UAAW,GAGb,CACEvjf,UAAW,SACX+/B,MAAO,IAAKC,IAAK,IACjBqjd,QAAS,MACTtjc,SAAU,CAAE8pN,EAAK29O,kBACjBjE,UAAW,GAIb,CACEvjf,UAAW,SACX+/B,MAAO,MAAOC,IAAK,OAGrB6pO,EAAKg+O,oBACLh+O,EAAKi+O,qBAEL,CACEnF,cAAe,sBAAuB3id,IAAK,IAC3Cqjd,QAAS,UACTtjc,SAAU,CACR,CACE//C,UAAW,SACX+/B,MAAO,mBAKb,CACE4id,cAAe,QAAS3id,IAAK,IAC7Bqjd,QAAS,UACTtjc,SAAU,CACR,CACE//C,UAAW,SACX+/B,MAAO,gBACPggB,SAAU,CACR,CACEhgB,MAAO,WACPggB,SAAU,CACR,CACE//C,UAAW,SACX+/B,MAAO,uBASrB2pd,EACAC,EAEA,CACE3pf,UAAW,UACX+/B,MAAO,wBAGT,CACE//B,UAAW,SACX+/B,MAAO,oF,cCrGfnqC,EAAOD,QAAU,SAASk0Q,GACxB,IAAIggP,EAAS,CAAC7pf,UAAW,SAAU+/B,MAAO,cAC1C,MAAO,CACLg6L,QAAS,CAAC,cACVwoR,kBAAkB,EAClBxic,SAAU,CACR8pN,EAAKk+O,kBACL,CAAC/nf,UAAW,UAAW+/B,MAAO,MAAOC,IAAK,KAC1C,CACEhgC,UAAW,YACX+/B,MAAO,MACPwjd,UAAW,EAGXb,SAAU,CACRoH,SACE,8JAIJnG,OAAQ,CACN3jd,IAAK,IACLujd,UAAW,EACXb,SAAU,CACRjvH,QAAS,cAEX1zU,SAAU,CACR,CACE//C,UAAW,OACX+/B,MAAO,SAAUC,IAAK,QAExB,CACEhgC,UAAW,WACX+/B,MAAO,YAAaC,IAAK,MACzB+f,SAAU,CAAC,OAAQ8pc,IAErBA,EACAhgP,EAAK69O,sBAKbrE,QAAS,Q,cC1Cbztf,EAAOD,QAAU,SAASk0Q,GACxB,IAAIkgP,EAASlgP,EAAKi4O,QAAQj4O,EAAK69O,kBAAmB,CAACrE,QAAS,KACxD2G,EAAS,CACXhqf,UAAW,SACX+/B,MAAO,MAAOC,IAAK,MACnB+f,SAAU,CAAC,OAAQ8pN,EAAKo+O,cAAe8B,IAErCE,EAAiBpgP,EAAK+9O,QAAQ,KAAM,KAQpCkB,EAAW,CACbmB,EARmBpgP,EAAK+9O,QACxB,SACA,SACA,CACE7nc,SAAU,CAAC,OAAQkqc,KAMrBpgP,EAAKk+O,mBAGP,MAAO,CACLhuR,QAAS,CAAC,aACV2oR,SAAU,CACRqG,QACE,0iBAUFt1H,QACE,mEACFu1H,SACE,sUAQJjpc,SAAU,CACRgqc,EACAlgP,EAAKo+O,cACL,CACEjof,UAAW,WACX+/B,MACE,kcAUJ,CACE//B,UAAW,UACX+/B,MACE,kEAEJ,CACE//B,UAAW,UACX+/B,MACE,qSAMJ,CACE4id,cAAe,KACfU,QAAS,YACTtjc,SAAU,CAAC8pN,EAAKy+O,sBAAuB0B,KAEzCtof,OAAOonf,GACTzF,QAAS,qB,cClFbztf,EAAOD,QAAU,SAASk0Q,GACxB,IAAIq9O,EAAW,yBACXgD,EAAW,CACbnB,QACE,0DACFt1H,QACE,uGACFu1H,SACE,oyBAgBAa,EAAS,CACX7pf,UAAW,SACXmif,SAAU,CACR,CAAEpid,MAAO,mBACT,CAAEA,MAAO,oBACT,CAAEA,MAAO8pO,EAAKw9O,cAEhB9D,UAAW,GAET4G,EAAQ,CACVnqf,UAAW,QACX+/B,MAAO,SAAUC,IAAK,MACtB0id,SAAUwH,EACVnqc,SAAU,IAERqqc,EAAkB,CACpBpqf,UAAW,SACX+/B,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CACR8pN,EAAK29O,iBACL2C,IAGJA,EAAMpqc,SAAW,CACf8pN,EAAK49O,iBACL59O,EAAK69O,kBACL0C,EACAP,EACAhgP,EAAKu+O,aAEP,IAAIiC,EAAkBF,EAAMpqc,SAASr+C,OAAO,CAC1CmoQ,EAAKi+O,qBACLj+O,EAAKg+O,sBAGP,MAAO,CACL9tR,QAAS,CAAC,UACV2oR,SAAUwH,EACVnqc,SAAU,CACR8pN,EAAK49O,iBACL59O,EAAK69O,kBACL0C,EACAvgP,EAAKg+O,oBACLh+O,EAAKi+O,qBA/CI,CACX9nf,UAAW,SACX+/B,MAAO,sCA+CL8pd,EACA,CACE9pd,MAAO,UAAWwjd,UAAW,EAC7Bxjc,SAAU,CACR,CACEhgB,MAAOmnd,EAAW,QAAS1B,aAAa,EACxCjC,UAAW,EACXxjc,SAAU,CAAC,CAAC//C,UAAW,OAAQ+/B,MAAOmnd,EAAU3D,UAAW,OAIjE,CACExjd,MAAO,IAAM8pO,EAAK09O,eAAiB,uBACnC7E,SAAU,SACV3ic,SAAU,CACR8pN,EAAKg+O,oBACLh+O,EAAKi+O,qBACLj+O,EAAKu+O,YACL,CACEpof,UAAW,WACX+/B,MAAO,cAAgBmnd,EAAW,UAAW1B,aAAa,EAC1Dxld,IAAK,SACL+f,SAAU,CACR,CACE//C,UAAW,SACXmif,SAAU,CACR,CACEpid,MAAOmnd,GAET,CACEnnd,MAAO,WAET,CACEA,MAAO,KAAMC,IAAK,KAClBuld,cAAc,EAAMM,YAAY,EAChCnD,SAAUwH,EACVnqc,SAAUsqc,QAOtB9G,UAAW,GAEb,CACEvjf,UAAW,WACX2if,cAAe,WAAY3id,IAAK,KAAM6ld,YAAY,EAClD9lc,SAAU,CACR8pN,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAACtod,MAAOmnd,IACtC,CACElnf,UAAW,SACX+/B,MAAO,KAAMC,IAAK,KAClBuld,cAAc,EACdM,YAAY,EACZ9lc,SAAUsqc,IAGdhH,QAAS,QAEX,CACEtjd,MAAO,WAGXsjd,QAAS,Y,cCrIbztf,EAAOD,QAAU,SAASk0Q,GACxB,IAAIygP,EAAsB,CACxBtqf,UAAW,UACX+/B,MAAO,sBAGL6od,EAAU,CACZ5of,UAAW,SACXmif,SAAU,CACR,CACEpid,MAAO,cAAeC,IAAK,IAC3Bqjd,QAAS,MACTtjc,SAAU,CAAC8pN,EAAK29O,mBAElB,CAAEznd,MAAO,mDACT,CACEA,MAAO,UAAYC,IAAK,IACxBqjd,QAAS,OAKXsF,EAAU,CACZ3of,UAAW,SACXmif,SAAU,CACR,CAAEpid,MAAO,iBACT,CAAEA,MAAO,mEACT,CAAEA,MAAO,wFAEXwjd,UAAW,GAGTgH,EAAqB,CACvBvqf,UAAW,OACX+/B,MAAO,eAAgBC,IAAK,IAC5B0id,SAAU,CACR,eACE,kFAGJ3ic,SAAU,CACR,CACEhgB,MAAO,OAAQwjd,UAAW,GAE5B15O,EAAKi4O,QAAQ8G,EAAS,CAAC5of,UAAW,gBAClC,CACEA,UAAW,cACX+/B,MAAO,YAAaC,IAAK,IACzBqjd,QAAS,OAEXx5O,EAAKg+O,oBACLh+O,EAAKi+O,uBAIL0C,EAAiB3gP,EAAKq9O,SAAW,UAEjCuD,EAAe,CACjB1B,QAAS,+rBAWTC,SAAU,4vBASVv1H,QAAS,2BAGPi3H,EAAsB,CACxBJ,EACAzgP,EAAKg+O,oBACLh+O,EAAKi+O,qBACLa,EACAC,GAGF,MAAO,CACL7uR,QAAS,CAAC,IAAK,KAAM,IAAK,MAAO,MAAO,MAAO,KAAM,MAAO,OAC5D2oR,SAAU+H,EACVpH,QAAS,KACTtjc,SAAU2qc,EAAoBhpf,OAAO,CACnC6of,EACA,CACExqd,MAAO,mJAAoJC,IAAK,IAChK0id,SAAU+H,EACV1qc,SAAU,CAAC,OAAQuqc,IAErB,CACEvqd,MAAO8pO,EAAKq9O,SAAW,KACvBxE,SAAU+H,GAEZ,CAIEtI,SAAU,CACR,CAACpid,MAAO,IAAKC,IAAK,KAClB,CAACD,MAAO,KAAMC,IAAK,MACnB,CAAC2id,cAAe,wBAAyB3id,IAAK,MAEhD0id,SAAU+H,EACV1qc,SAAU2qc,EAAoBhpf,OAAO,CACnC,CACEq+B,MAAO,KAAMC,IAAK,KAClB0id,SAAU+H,EACV1qc,SAAU2qc,EAAoBhpf,OAAO,CAAC,SACtC6hf,UAAW,KAGfA,UAAW,GAEb,CACEvjf,UAAW,WACX+/B,MAAO,IAAM8pO,EAAKq9O,SAAW,eAAiBsD,EAC9ChF,aAAa,EAAMxld,IAAK,QACxB6ld,YAAY,EACZnD,SAAU+H,EACVpH,QAAS,aACTtjc,SAAU,CACR,CACEhgB,MAAOyqd,EAAgBhF,aAAa,EACpCzlc,SAAU,CAAC8pN,EAAKw+O,YAChB9E,UAAW,GAEb,CACEvjf,UAAW,SACX+/B,MAAO,KAAMC,IAAK,KAClB0id,SAAU+H,EACVlH,UAAW,EACXxjc,SAAU,CACR8pN,EAAKg+O,oBACLh+O,EAAKi+O,qBACLc,EACAD,EACA2B,EAEA,CACEvqd,MAAO,KAAMC,IAAK,KAClB0id,SAAU+H,EACVlH,UAAW,EACXxjc,SAAU,CACR,OACA8pN,EAAKg+O,oBACLh+O,EAAKi+O,qBACLc,EACAD,EACA2B,MAKRzgP,EAAKg+O,oBACLh+O,EAAKi+O,qBACLyC,IAGJ,CACEvqf,UAAW,QACX2if,cAAe,eAAgB3id,IAAK,QACpC+f,SAAU,CACR,CAAChgB,MAAO,IAAKC,IAAK,IAAK+f,SAAU,CAAC,SAClC8pN,EAAKw+O,eAIX1yf,QAAS,CACPg1f,aAAcJ,EACdz2S,QAAS80S,EACTlG,SAAU+H,M,cCrLhB70f,EAAOD,QAAU,SAASk0Q,GACxB,IAAI+gP,EAAM/gP,EAAKvtQ,YAAY,OAAO3G,QACnC,MAAO,CACJ+sf,SAAU,CACRqG,QACE,yCAA2C6B,EAAIlI,SAASqG,QAC1DC,SACE,02GA2EFv1H,QACE,sNAMJ1zU,SAAU,CACR6qc,EAAID,aACJ9gP,EAAKg+O,oBACLh+O,EAAKi+O,qBACLj+O,EAAK49O,iBACL59O,EAAK69O,kBACL79O,EAAKo+O,kB,cC/FXryf,EAAOD,QAAU,SAASk0Q,GAExB,MAAO,CACL04O,kBAAkB,EAClBxoR,QAAS,CAAC,OACVgpR,QAAS,OAASl5O,EAAKq9O,SACvBxE,SAAU,CACRr6W,KAEE,6tBAGF2gX,SACE,21BAmBJjpc,SAAU,CACR,CACE//C,UAAW,UACX+/B,MAAO,stBAiBPC,IAAK,OAEP6pO,EAAK+9O,QAAQ,OAAQ,IAAK,CAACrE,UAAW,IACtC15O,EAAKi+O,qBACLj+O,EAAK69O,kBACL,CACE1nf,UAAW,SACX+/B,MAAO,IACPC,IAAK,WACLujd,UAAW,GAEb,CACEvjf,UAAW,QACX+/B,MAAO,MAAOC,IAAK,MACnBqjd,QAAS,MACTE,UAAW,GAEb,CACEvjf,UAAW,SACXmif,SAAU,CACN,CAACpid,MAAO,qBACR,CAACA,MAAO,iBACR,CAACA,MAAO,aACR,CAACA,MAAO,YAEZwjd,UAAW,GAEb,CACEvjf,UAAW,SACXmif,SAAU,CACN,CAACpid,MAAO,iCACR,CAACA,MAAO,sCACR,CAACA,MAAO,aAEZwjd,UAAW,O,cCtFnB3tf,EAAOD,QAAU,SAASk0Q,GACxB,IACIghP,EAAgB,CAClB3H,gBAAgB,EAChBG,QAAS,IACTE,UAAW,EACXxjc,SAAU,CACR,CACE//C,UAAW,OACX+/B,MARa,qBASbwjd,UAAW,GAEb,CACExjd,MAAO,OACPwjd,UAAW,EACXxjc,SAAU,CACR,CACE//C,UAAW,SACX2lf,YAAY,EACZxD,SAAU,CACR,CAACpid,MAAO,IAAKC,IAAK,KAClB,CAACD,MAAO,IAAKC,IAAK,KAClB,CAACD,MAAO,sBAOpB,MAAO,CACLg6L,QAAS,CAAC,OAAQ,QAAS,MAAO,OAAQ,MAAO,MAAO,MAAO,QAAS,OACxEwoR,kBAAkB,EAClBxic,SAAU,CACR,CACE//C,UAAW,OACX+/B,MAAO,YAAaC,IAAK,IACzBujd,UAAW,GACXxjc,SAAU,CAAC,CAAChgB,MAAO,MAAOC,IAAK,SAEjC6pO,EAAK+9O,QACH,UACA,SACA,CACErE,UAAW,KAGf,CACExjd,MAAO,kBAAmBC,IAAK,UAC/Bujd,UAAW,IAEb,CACEvjf,UAAW,OACX+/B,MAAO,SAAUC,IAAK,MAAOujd,UAAW,IAE1C,CACExjd,MAAO,YAAaC,IAAK,MACzB2kd,YAAa,MACb5kc,SAAU,CAGR,CAAChgB,MAAO,OAAQC,IAAK,OAAQ2e,MAAM,GACnC,CAAC5e,MAAO,KAAMC,IAAK,IAAK2e,MAAM,GAC9B,CAAC5e,MAAO,KAAOC,IAAK,IAAM2e,MAAM,GAChCkrN,EAAKi4O,QAAQj4O,EAAK49O,iBAAkB,CAACpE,QAAS,KAAMrjf,UAAW,KAAM+/C,SAAU,KAAMpB,MAAM,IAC3FkrN,EAAKi4O,QAAQj4O,EAAK69O,kBAAmB,CAACrE,QAAS,KAAMrjf,UAAW,KAAM+/C,SAAU,KAAMpB,MAAM,MAGhG,CACE3+C,UAAW,MAOX+/B,MAAO,oBAAqBC,IAAK,IACjC0id,SAAU,CAAC9qf,KAAM,SACjBmoD,SAAU,CAAC8qc,GACXlH,OAAQ,CACN3jd,IAAK,WAAY4ld,WAAW,EAC5BjB,YAAa,CAAC,MAAO,SAGzB,CACE3kf,UAAW,MAEX+/B,MAAO,qBAAsBC,IAAK,IAClC0id,SAAU,CAAC9qf,KAAM,UACjBmoD,SAAU,CAAC8qc,GACXlH,OAAQ,CACN3jd,IAAK,aAAgB4ld,WAAW,EAChCjB,YAAa,CAAC,eAAgB,aAAc,aAAc,MAAO,cAGrE,CACE3kf,UAAW,MACX+/B,MAAO,MAAOC,IAAK,MACnB+f,SAAU,CACR,CACE//C,UAAW,OAAQ+/B,MAAO,aAAcwjd,UAAW,GAErDsH,Q,cCrGVj1f,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL9vC,QAAS,CAAC,QACVh6K,SAAU,CAER8pN,EAAK+9O,QACH,YACA,YAIA,CACErE,UAAW,KAIf15O,EAAK+9O,QACH,MACA,IACA,CACErE,UAAW,IAIf,CACEvjf,UAAW,QACX+/B,MAAO,cAGT,CACEA,MAAO,iBACPC,IAAK,kBACLujd,UAAW,IAGb,CACEvjf,UAAW,UACXujf,UAAW,GACXpB,SAAU,CACR,CAACpid,MAAO,yBACR,CAACA,MAAO,0CAIZ,CACE//B,UAAW,OACX+/B,MAAO,SACPC,IAAK,MACL6ld,YAAY,EACZtC,UAAW,IAGb,CACEvjf,UAAW,OACX+/B,MAAO,cACPwjd,UAAW,GAGb,CACEvjf,UAAW,QACX+/B,MAAO,YACPC,IAAK,YACLujd,UAAW,IAGb,CACEvjf,UAAW,OACX+/B,MAAO,mBACPC,IAAK,mBACLujd,UAAW,IAGb,CACExjd,MAAO,cACPC,IAAK,cACL+f,SAAU,CACR,CACEhgB,MAAO,IAAKC,IAAK,IACjB2kd,YAAa,MACbpB,UAAW,IAGfA,UAAW,IAGb,CACEvjf,UAAW,SACX+/B,MAAO,oCAGT,CACE//B,UAAW,SACX+/B,MAAO,6CACPwjd,UAAW,IAGb,CACEvjf,UAAW,SAEX+/B,MAAO,qBACPC,IAAK,eAEL+f,SAAU,CACR,CACEhgB,MAAO,WACPwjd,UAAW,KAKjB,CACEvjf,UAAW,WAEX+/B,MAAO,iBACPC,IAAK,aAEL+f,SAAU,CACR,CACEhgB,MAAO,WACPwjd,UAAW,IAGfA,UAAW,GAGb,CACEvjf,UAAW,WAEX+/B,MAAO,cACPC,IAAK,aACLujd,UAAW,GAGb,CACEvjf,UAAW,SACXmif,SAAU,CACR,CAACpid,MAAO,WACR,CAACA,MAAO,WAIZ,CACE//B,UAAW,OACX+/B,MAAO,oBACPwjd,UAAW,GAGb,CACEvjf,UAAW,OACX+/B,MAAO,UACPC,IAAK,IACLujd,UAAW,GAGb,CACExjd,MAAO,iBACPwjd,UAAW,IAGb,CACExjd,MAAO,0DACPyld,aAAa,EACbzlc,SAAU,CACR,CACEhgB,MAAO,kBACPwjd,UAAW,GAEb,CACEvjf,UAAW,OACX+/B,MAAO,MACPC,IAAK,UACLujd,UAAW,GAEb,CACEvjf,UAAW,SACX+/B,MAAO,MACPC,IAAK,MACLuld,cAAc,EACdM,YAAY,EACZtC,UAAW,IAGfA,UAAW,Q,cCtLnB3tf,EAAOD,QAAU,SAAUk0Q,GACzB,IAAIqgP,EACF,qoBASF,MAAO,CACLxH,SAAWwH,EACX7G,QAAU,QACVtjc,SAAW,CACT8pN,EAAK+9O,QACH,UACA,OACA,CACErE,UAAY,EACZxjc,SAAW,CACT,CAEEhgB,MAAO,OAAQwjd,UAAW,GAE5B,CACEvjf,UAAY,SACZ+/B,MAAQ,iBAKhB8pO,EAAKg+O,oBACLh+O,EAAKi+O,qBACLj+O,EAAK49O,iBACL59O,EAAK69O,kBACL,CACE1nf,UAAY,QACZ2if,cAAgB,SAChB3id,IAAM,QACN6ld,YAAa,EACbxC,QAAU,YACVtjc,SAAW,CACT,CACE4ic,cAAgB,yFAElB94O,EAAKy+O,sBACL,CACEvod,MAAQ,WACRC,IAAM,OACN0id,SAAWwH,EAAW,qBACtBrE,YAAa,KAInB,CACE7lf,UAAY,QACZ2if,cAAgB,kBAChB3id,IAAM,QACN6ld,YAAa,EACbtC,UAAW,EACXb,SAAW,kBACXW,QAAU,WACVtjc,SAAW,CACT,CAAC4ic,cAAgB,sBACjB94O,EAAKy+O,wBAGT,CAEE3F,cAAgB,kDAChB3id,IAAM,MACN6ld,YAAa,EACbxC,QAAU,UACVtjc,SAAW,CACT,CACEhgB,MAAQ8pO,EAAKs9O,oBAAsB,UACnC3B,aAAc,EACdzlc,SAAW,CAAC8pN,EAAKy+O,0BAIvB,CACEvod,MAAQ,MACRyld,aAAc,EACdxld,IAAM,OACNujd,UAAW,EACXsC,YAAa,EACbnD,SAAWwH,EACX7G,QAAU,UACVtjc,SAAW,CACT,CACEhgB,MAAQ8pO,EAAKs9O,oBAAsB,UACnCzE,SAAWwH,EAAW,qBACtB3G,UAAW,GAEb15O,EAAK69O,oBAGT,CAEE/E,cAAgB,YAChBY,UAAY,GAEd,CAEEvjf,UAAY,WACZ+/B,MAAQ,2DACRyld,aAAc,EACdxld,IAAM,QACN0id,SAAWwH,EACXrE,YAAa,EACb9lc,SAAW,CACT,CACEhgB,MAAQ8pO,EAAKs9O,oBAAsB,UACnC3B,aAAc,EACdjC,UAAW,EACXxjc,SAAW,CAAC8pN,EAAKy+O,wBAEnB,CACEtof,UAAY,SACZ+/B,MAAQ,KAAMC,IAAM,KACpBujd,UAAW,EACXb,SAAWwH,EACXnqc,SAAW,CACT8pN,EAAK49O,iBACL59O,EAAK69O,kBACL79O,EAAKo+O,cACLp+O,EAAKi+O,uBAGTj+O,EAAKg+O,oBACLh+O,EAAKi+O,uBAGTj+O,EAAKo+O,cACL,CAEEjof,UAAY,OACZ+/B,MAAQ,kB,cC3IhBnqC,EAAOD,QAAU,SAASk0Q,GACxB,IAAIihP,EAAkB,CACpB/qd,MAAO,aAGT,MAAO,CACLwid,kBAAkB,EAClBxoR,QAAS,CAAE,OACX2oR,SAAU,CACRqG,QAAS,uKACTt1H,QAAS,wBACTu1H,SAAU,6CAEZjpc,SAAU,CACR+qc,EACAjhP,EAAKi4O,QAAQj4O,EAAK69O,kBAAmB,CAAC3nc,SAAU,CAAC+qc,KACjDjhP,EAAK+9O,QAAQ,IAAK,IAAK,CAACrE,UAAW,IACnC15O,EAAKi+O,qBACL,CACE9nf,UAAW,SACX+/B,MAAO8pO,EAAKu9O,UACZ7D,UAAW,GAEb,CACEvjf,UAAW,WACX+/B,MAAO,sBAET,CACE//B,UAAW,WACX+/B,MAAO,sBAGT,CACE//B,UAAW,QAEXmif,SAAU,CACR,CAACpid,MAAO,qBACR,CAACA,MAAO,mBAAoBwjd,UAAW,KAI3C,CACEvjf,UAAW,OACX+/B,MAAO,aAAcC,IAAI,IACzBujd,UAAW,GAEd,CACGvjf,UAAW,WACX+/B,MAAO,kBAET,CAEEA,MAAO,c,cCpDfnqC,EAAOD,QAAU,SAASk0Q,GACtB,IAWI+9O,EAAU,CACNzF,SAAU,CACRt4O,EAAK+9O,QAAQ,IAAK,IAAK,CAACrE,UAAW,IACnC15O,EAAK+9O,QAAQ,MAAO,OACpB/9O,EAAK+9O,QAAQ,kBAAmB,mBAItCmD,EAAW,CACPhrd,MAAO,iBAGXgqd,EAAS,CACL/pf,UAAW,SACXmif,SAAU,CAAC,CACPpid,MAAO,IACPC,IAAK,IACL+f,SAAU,CAAC,CACPhgB,MAAO,KACPwjd,UAAW,KAEhB,CACCxjd,MAAO,IACPC,IAAK,IACL+f,SAAU,CAAC,CACPhgB,MAAO,KACPwjd,UAAW,OAKvBsG,EAAS,CACL1H,SAAU,CAACt4O,EAAKq+O,mBAAoBr+O,EAAKo+O,gBAwEjD,MAAO,CACH1F,kBAAkB,EAClBc,QAAS,OACTX,SAAU,CACNqG,QAvHO,oPAwHPC,SA/GF,k4JAgHEv1H,QAnHM,8BAqHV1zU,SAAU,CACN6nc,EACAmD,EACAhB,EACAF,EAjFW,CACX7pf,UAAW,OACX+/B,MAAO,IACPC,IAAK,IACL0id,SAAU,CAAC,eAAgB,8FAC3B3ic,SAAU,CAAC,CACHhgB,MAAO,OACPwjd,UAAW,GACZ,CACCZ,cAAe,UACfD,SAAU,CAAC,eAAgB,WAC3B1id,IAAK,IACL+f,SAAU,CACNgqc,EAAQ,CACJ/pf,UAAW,cACXmif,SAAU,CAAC,CACPpid,MAAO,IACPC,IAAK,KACN,CACCD,MAAO,IACPC,IAAK,IACL+f,SAAU,CAAC,CACPhgB,MAAO,KACPwjd,UAAW,KAEhB,CACCxjd,MAAO,IACPC,IAAK,IACL+f,SAAU,CAAC,CACPhgB,MAAO,KACPwjd,UAAW,SAM/BwG,EACAnC,IAIG,CACP5nf,UAAW,SAKX+/B,MAAO,eAGA,CACP//B,UAAW,WACX2if,cAAe,OACf3id,IAAK,IACLqjd,QAAS,YACTtjc,SAAU,CACN8pN,EAAKy+O,sBAAuB,CACxBtof,UAAW,SACX+/B,MAAO,MACPC,IAAK,MACL+f,SAAU,CACNgrc,EACAhB,EACAF,U,cC9GxBj0f,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL04O,kBAAkB,EAClBQ,QAAS,OAASl5O,EAAKq9O,SACvBxE,SAAU,CACRqG,QAEE,mgBAOFC,SAEE,6xBAWF3gX,KACE,sHAGJtoF,SAAU,CACR8pN,EAAKi+O,qBACLj+O,EAAK+9O,QACH,IACA,IACA,CACErE,UAAW,IAGf15O,EAAKo+O,cACLp+O,EAAKq+O,mBACL,CACElof,UAAW,SACX+/B,MAAO,iCAET8pO,EAAK69O,kBACL,CACE1nf,UAAW,SACX+/B,MAAO,IAAMC,IAAK,WAClBqjd,QAAS,eAEX,CAACrjf,UAAW,SAAW+/B,MAAO,qBAC9B,CAAC//B,UAAW,OAAQ+/B,MAAO,IAAKC,IAAK,KACrC,CACEhgC,UAAW,QACX+/B,MAAO,e,cCxDfnqC,EAAOD,QAAU,SAASk0Q,GAuCxB,MAAO,CACP64O,SAAU,CACRqG,QAjCa,+FAmCbhpc,SAAU,CA1CG,CACb//C,UAAW,WACXmif,SAAU,CACR,CAACpid,MAAO,sBACR,CAACA,MAAO,gBAIC,CACX//B,UAAW,SACX+/C,SAAU,CAAC8pN,EAAK29O,kBAChBrF,SAAU,CACR,CACEpid,MAAO,cAAeC,IAAK,MAC3Bujd,UAAW,IAEb,CACExjd,MAAO,cAAeC,IAAK,MAC3Bujd,UAAW,IAEb,CACExjd,MAAO,YAAaC,IAAK,IACzBujd,UAAW,IAEb,CACExjd,MAAO,YAAaC,IAAK,IACzBujd,UAAW,IAEb,CACExjd,MAAO,UAAWC,IAAK,KAEzB,CACED,MAAO,UAAWC,IAAK,KAEzB6pO,EAAK49O,iBACL59O,EAAK69O,oBAUL79O,EAAKu+O,YACLv+O,EAAKk+O,kBACLl+O,EAAKm+O,gB,cChDXpyf,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL64O,SAAU,maAMV3ic,SAAU,CACR8pN,EAAKg+O,oBACLh+O,EAAKi+O,qBACLj+O,EAAK49O,iBACL59O,EAAK69O,kBACL79O,EAAKo+O,cACL,CACEjof,UAAW,OACX+/B,MAAO,IAAKC,IAAK,KAEnB,CACEhgC,UAAW,QACX2if,cAAe,kBAAmB3id,IAAK,IAAK6ld,YAAY,EACxDxC,QAAS,IACTtjc,SAAU,CACR,CAAC4ic,cAAe,sBAChB94O,EAAKy+O,4B,cCxBf1yf,EAAOD,QAAU,SAASk0Q,GACxB,IAAImhP,EAAM,CACRhrf,UAAW,WACXmif,SAAU,CACR,CAACpid,MAAO,sBACR,CAACA,MAAO,gBAGRkrd,EAAe,CACjBjrf,UAAW,SACX+/B,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CACR8pN,EAAK29O,iBACLwD,EACA,CACEhrf,UAAW,WACX+/B,MAAO,OAAQC,IAAK,KACpB+f,SAAU,CAAC8pN,EAAK29O,qBActB,MAAO,CACLztR,QAAS,CAAC,KAAM,OAChBgpR,QAAS,kBACTL,SAAU,CACRqG,QACE,+DACFt1H,QACE,aACFu1H,SAGE,4uBAcFtgf,EACE,qCAEJq3C,SAAU,CACR,CACE//C,UAAW,OACX+/B,MAAO,kBACPwjd,UAAW,IAEb,CACEvjf,UAAW,WACX+/B,MAAO,4BACPyld,aAAa,EACbzlc,SAAU,CAAC8pN,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAACtod,MAAO,gBACjDwjd,UAAW,GAEb15O,EAAKk+O,kBACLkD,EApDgB,CAClBjrf,UAAW,GACX+/B,MAAO,OAGS,CAChB//B,UAAW,SACX+/B,MAAO,IAAKC,IAAK,KAgDfgrd,M,cC5ENp1f,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL04O,kBAAkB,EAClBc,QAAS,KAETN,QAAS,4BACTL,SAAU,CACNqG,QACE,w8BAaNhpc,SAAU,CACR8pN,EAAK69O,kBACL79O,EAAK+9O,QAAQ,MAAO,IAAK,CAACrE,UAAW,KACrC15O,EAAK+9O,QAAQ,IAAM,IAAK,CAACrE,UAAW,IACpC,CAEEvjf,UAAW,SACX+/B,MAAO,WACPwjd,UAAW,IAEb,CAEEvjf,UAAW,SACX+/B,MAAO,8BACPwjd,UAAW,GAEb,CAEEvjf,UAAW,SACX+/B,MAAO,2BAET,CAEE//B,UAAW,SACX+/B,MAAO,yB,cC7CfnqC,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL9pN,SAAU,CAER,CACE//C,UAAW,YACX+/B,MAAO,IAAKC,IAAK,KAGnB,CACED,MAAO,MACP4jd,OAAQ,CACN3jd,IAAK,IACL+f,SAAU,CACR,CACEhgB,MAAO,IAAKC,IAAK,KAGnB6pO,EAAKg+O,oBACLh+O,EAAKi+O,qBACLj+O,EAAK49O,iBACL59O,EAAK69O,yB,cCrBjB9xf,EAAOD,QAAU,SAASk0Q,GACxB,IAAI6+O,EAAU,CACZ1of,UAAW,UACX+/B,MAAO,WACPwjd,UAAW,GAEb,MAAO,CACLxpR,QAAS,CAAC,MACVh6K,SAAU,CACR8pN,EAAK+9O,QACH,6BACA,4BACA,CACEhC,WAAW,EACXrC,UAAW,IAGf,CACEvjf,UAAW,QACX+/B,MAAO,WACPwjd,UAAW,GAEb,CACEvjf,UAAW,SACX+/B,MAAO,SACPwjd,UAAW,GAEb,CAEExjd,MAAO,YAAayld,aAAa,EACjCzlc,SAAU,CAAC2oc,IAEbA,M,cChCN9yf,EAAOD,QAAU,SAASk0Q,GACxB,IAAIqgP,EACF,yHAGEgB,EAAgB,CAClBrhP,EAAKg+O,oBACLh+O,EAAK+9O,QACH,KACA,KACA,CACErE,UAAW,IAGf15O,EAAK+9O,QACH,OACA,OACA,CACErE,UAAW,MAIbwG,EAAS,CACX/pf,UAAW,SACX+/B,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CAAC,CAAChgB,MAAO,QAEjBord,EAAc,CAChBnrf,UAAW,SAAU+/B,MAAO,WAa1Bqrd,EAAY,CACdprf,UAAW,WACX2if,cAAe,YAAa3id,IAAK,OACjC0id,SAAU,eACV3ic,SAAU,CACR8pN,EAAKw+O,WACL,CACErof,UAAW,SACX+/B,MAAO,KAAMC,IAAK,KAClB0id,SAAUwH,EACVnqc,SAAU,CAACgqc,EAAQoB,KAErBzpf,OAAOwpf,IAGPG,EAAS,CACXrrf,UAAW,QACX+/B,MAAO,gGACPyld,aAAa,EACbzlc,SAAU,CACR8pN,EAAKw+O,WACH+C,IAIN,MAAO,CACL7I,kBAAkB,EAClBG,SAAU,CAAEqG,QAASmB,EAAUz2H,QAhElB,cAiEb4vH,QAAS,OACTtjc,SAAU,CACRgqc,EAAQoB,EAzCD,CACPnrf,UAAW,SACX+/B,MAAO,4BACPwjd,UAAW,GAEW,CACtBvjf,UAAW,SACX+/B,MAAO,IACPC,IAAK,KAmCL6pO,EAAKm+O,YACLqD,EACAD,M,cC3ENx1f,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL9vC,QAAS,CAAC,SACV2oR,SAAU,CACRqG,QACE,sGACFC,SACE,6HAEFv1H,QACE,cAEJ1zU,SAAU,CACR8pN,EAAK69O,kBACL79O,EAAKm+O,YACLn+O,EAAKk+O,kBACL,CACE/nf,UAAW,OACX+/B,MAAO,iBACPsjd,QAAS,MAEX,CACErjf,UAAW,SACX+/B,MAAO,UAET,CACE//B,UAAW,QACX2if,cAAe,cAAe3id,IAAK,KACnCqjd,QAAS,KACTtjc,SAAU,CACR8pN,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAC5B1E,OAAQ,CAACT,gBAAgB,EAAM2C,YAAY,OAIjD,CACE7lf,UAAW,QACX2if,cAAe,YAAa3id,IAAK,KACjCqjd,QAAS,KACTtjc,SAAU,CACR8pN,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAC5B1E,OAAQ,CAACT,gBAAgB,EAAM2C,YAAY,W,cCzCvDjwf,EAAOD,QAAU,SAASk0Q,GAExB,IAAIqgP,EACF,iRAWEC,EAAQ,CACVnqf,UAAW,QAASulf,cAAc,EAAMM,YAAY,EACpD9ld,MAAO,KAAMC,IAAK,KAClB0id,SAAUwH,EACV3G,UAAW,IAET+H,EAAc,CAChB,CAEEtrf,UAAW,SACX+/B,MAAO,MACPC,IAAK,MACLujd,UAAW,IAEb,CAEEvjf,UAAW,SACX+/B,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CAACoqc,IAEb,CAEEnqf,UAAW,SACX+/B,MAAO,IACPC,IAAK,KAEP,CAEEhgC,UAAW,SACX+/B,MAAO,gFACPwjd,UAAW,IAKf,OAFA4G,EAAMpqc,SAAWurc,EAEV,CACL5I,SAAU,CACRqG,QAASmB,EAAW,uHACpB7hX,KAvCF,oCAyCAg7W,QAAS,yBACTtjc,SAAU,CACR8pN,EAAKg+O,oBACLh+O,EAAK+9O,QAAQ,OAAQ,OAAQ,CAAC7nc,SAAU,CAAC,UACzC,CAEE//C,UAAW,OACX+/B,MAAO,8BAETr+B,OAAO4pf,M,cC/Db11f,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL9vC,QAAS,CAAC,QAAQ,MAAM,OACxB2oR,SAAU,CACRqG,QACE,6MAIFC,SACE,qBACFv1H,QACE,cAEJ1zU,SAAU,CAER8pN,EAAKg+O,oBACLh+O,EAAKi+O,qBACLj+O,EAAK49O,iBACL59O,EAAK69O,kBACL79O,EAAKo+O,cAEL,CAAClod,MAAO,kD,cCtBdnqC,EAAOD,QAAU,SAASk0Q,GACxB,IAiCI0hP,EAAY,wDAGZtxS,EAAS,CACXl6K,MAAOwrd,EACPhI,UAAW,GAETsG,EAAS,CACX7pf,UAAW,SAAU+/B,MAPA,sBAQrBwjd,UAAW,GAETwG,EAASlgP,EAAKi4O,QAAQj4O,EAAK69O,kBAAmB,CAACrE,QAAS,OACxDuE,EAAU/9O,EAAK+9O,QACjB,IACA,IACA,CACErE,UAAW,IAGXmF,EAAU,CACZ1of,UAAW,UACX+/B,MAAO,wBAEL67K,EAAa,CACf77K,MAAO,WAAYC,IAAK,YAEtBwrd,EAAO,CACTxrf,UAAW,UACX+/B,MAAO,MAAQwrd,GAEbE,EAAW5hP,EAAK+9O,QAAQ,SAAU,OAClCv3Y,EAAM,CACRrwG,UAAW,SACX+/B,MAAO,WAAawrd,GAElBG,EAAO,CACT3rd,MAAO,MAAOC,IAAK,OAEjB2rd,EAAO,CACTzI,gBAAgB,EAChBK,UAAW,GAETxrY,EAAO,CACT2qY,SA5Ea,CACb,eAEE,mjFA0EFK,QAASwI,EACTvrf,UAAW,OAAQ+/B,MAAOwrd,EAC1B5H,OAAQgI,GAENC,EAAmB,CAACF,EAAM3B,EAAQyB,EAAMC,EAAU7D,EAASv3Y,EAAKurG,EAAYiuS,EAAQnB,EAASzuS,GAOjG,OALAyxS,EAAK3rc,SAAW,CAAC8pN,EAAK+9O,QAAQ,UAAW,IAAK7vY,EAAM4zY,GACpDA,EAAK5rc,SAAW6rc,EAChBhwS,EAAW77J,SAAW6rc,EACtBH,EAAS1rc,SAAW,CAAC67J,GAEd,CACLme,QAAS,CAAC,OACVspR,QAAS,KACTtjc,SAAU,CAAC2rc,EAAM3B,EAAQyB,EAAMC,EAAU7D,EAASv3Y,EAAKurG,EAAYiuS,EAAQnB,M,cC5F/E9yf,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL9pN,SAAU,CACR,CACE//C,UAAW,OACX+/B,MAAO,sBACP4jd,OAAQ,CACN3jd,IAAK,IACL2kd,YAAa,gB,cCRvB/uf,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL9vC,QAAS,CAAC,YACVwoR,kBAAkB,EAClBG,SAAU,CACRqG,QAEE,woEAkCJhpc,SAAU,CACR,CACE//C,UAAW,WACX+/B,MAAO,OAAQC,IAAK,KAEtB6pO,EAAKk+O,kBACLl+O,EAAK69O,kBACL79O,EAAKm+O,gB,cChDXpyf,EAAOD,QAAU,SAASk0Q,GACxB,IAAIqgP,EAAW,CACbnB,QAEE,+NAIFt1H,QAEE,0CAGFu1H,SACE,2DAEA6C,EAAc,2BACd1B,EAAQ,CACVnqf,UAAW,QACX+/B,MAAO,MAAOC,IAAK,IACnB0id,SAAUwH,GAERoB,EAAc,CAChBzhP,EAAKq+O,mBACLr+O,EAAKi4O,QAAQj4O,EAAKo+O,cAAe,CAACtE,OAAQ,CAAC3jd,IAAK,WAAYujd,UAAW,KACvE,CACEvjf,UAAW,SACXmif,SAAU,CACR,CACEpid,MAAO,MAAOC,IAAK,MACnB+f,SAAU,CAAC8pN,EAAK29O,mBAElB,CACEznd,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CAAC8pN,EAAK29O,mBAElB,CACEznd,MAAO,MAAOC,IAAK,MACnB+f,SAAU,CAAC8pN,EAAK29O,iBAAkB2C,IAEpC,CACEpqd,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CAAC8pN,EAAK29O,iBAAkB2C,MAIxC,CACEnqf,UAAW,SACXmif,SAAU,CACR,CACEpid,MAAO,MAAOC,IAAK,MACnB+f,SAAU,CAACoqc,EAAOtgP,EAAKk+O,oBAEzB,CACEhod,MAAO,WACPwjd,UAAW,GAEb,CAGExjd,MAAO,0CAIb,CACEA,MAAO,IAAM8rd,GAEf,CACElH,YAAa,aACbY,cAAc,EAAMM,YAAY,EAChC1D,SAAU,CACR,CACEpid,MAAO,MAAOC,IAAK,OAErB,CACED,MAAO,IAAKC,IAAK,QAKzBmqd,EAAMpqc,SAAWurc,EAEjB,IAAIQ,EAAQjiP,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAACtod,MAAO8rd,IAE9C7B,EAAS,CACXhqf,UAAW,SACX+/B,MAAO,YAAayld,aAAa,EAGjCzlc,SAAU,CAAC,CACThgB,MAAO,KAAMC,IAAK,KAClB0id,SAAUwH,EACVnqc,SAAU,CAAC,QAAQr+C,OAAO4pf,MAI9B,MAAO,CACLvxR,QAAS,CAAC,SAAU,OAAQ,QAC5B2oR,SAAUwH,EACV7G,QAAS,OACTtjc,SAAUurc,EAAY5pf,OAAO,CAC3BmoQ,EAAK+9O,QAAQ,MAAO,OACpB/9O,EAAKk+O,kBACL,CACE/nf,UAAW,WACX+/B,MAAO,QAAU8rd,EAAc,mCAAyB7rd,IAAK,QAC7Dwld,aAAa,EACbzlc,SAAU,CAAC+rc,EAAO9B,IAEpB,CAEEjqd,MAAO,aACPwjd,UAAW,EACXxjc,SAAU,CACR,CACE//C,UAAW,WACX+/B,MAjCM,0BAiCYC,IAAK,QACvBwld,aAAa,EACbzlc,SAAU,CAACiqc,MAIjB,CACEhqf,UAAW,QACX2if,cAAe,QACf3id,IAAK,IACLqjd,QAAS,YACTtjc,SAAU,CACR,CACE4ic,cAAe,UACfO,gBAAgB,EAChBG,QAAS,YACTtjc,SAAU,CAAC+rc,IAEbA,IAGJ,CACE/rd,MAAO8rd,EAAc,IAAK7rd,IAAK,IAC/Bwld,aAAa,EAAMI,WAAW,EAC9BrC,UAAW,Q,cC5InB3tf,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL64O,SAAU,CACRqG,QACE,mvDAyBFC,SACE,y5CAsBJjpc,SAAU,CACR8pN,EAAK69O,kBACL79O,EAAK+9O,QAAQ,SAAU,UACvB/9O,EAAKo+O,cACL,CACEjof,UAAW,OACXulf,cAAc,EACdxld,MAAO,UACPC,IAAK,QAEP,CAACD,MAAO,a,cC9DdnqC,EAAOD,QAAU,SAAck0Q,GAoE7B,MAAO,CACL04O,kBAAkB,EAClBxoR,QAAS,CAAC,MAAO,OACjB2oR,SAhDA,gbAiDA3ic,SAAU,CAxDE,CACZ//C,UAAW,SACX+/B,MAAO,8BACPwjd,UAAW,GAjBC,CACZvjf,UAAW,SACXmif,SAAU,CACR,CACEpid,MAAO,IACPC,IAAK,IACL+f,SAAU,CAAC,CACThgB,MAAO,KACPwjd,UAAW,OAiEf15O,EAAKg+O,oBACLh+O,EAAKi+O,qBACL,CACE9nf,UAAW,UACX+/B,MAAO,IAAKC,IAAK,IACjBujd,UAAW,GAEb,CACEvjf,UAAW,WACX+/B,MAAO,8BAET,CACE//B,UAAW,WACX+/B,MAAO,mBAET,CACE//B,UAAW,WACX+/B,MAAO,wBAET,CACE//B,UAAW,SACX+/B,MAAO,qBAET,CACE//B,UAAW,UACX+/B,MAAO,gCAKT,CACEA,MAAO,SAAaC,IAAK,KACzBuld,cAAc,EAAMM,YAAY,EAChClB,YAAa,OAEf,CACE5kd,MAAO,4BAA6BC,IAAK,IACzCuld,cAAc,EAAMM,YAAY,EAChClB,YAAa,cAEf,CAEE5kd,MAAO,aAAcC,IAAK,QAC1B2kd,YAAa,W,cCtHrB/uf,EAAOD,QAAU,SAASk0Q,GACxB,IAEIkiP,EAAW,qHAgBf,MAAO,CACLhyR,QAAS,CAAC,MAAO,QACjBwoR,kBAAkB,EAClBG,SAAU,CACRqG,QAASmB,6MACTz2H,QAPW,6EASb1zU,SAAU,CACR8pN,EAAKk+O,kBACL,CACEpF,cAAe,OACfgB,OAAQ,CACN3jd,IAAK,mBACL2jd,OAAQ,CACN3jf,UAAW,QACXggC,IAAK,2BAIX,CACE2id,cAtCU,yBAuCVgB,OAAQ,CACN3jf,UAAW,QACXggC,IAAK,wBACL2jd,OAAQ,CACN3jd,IAAK,8BAIX,CACED,MAAO,OAASgsd,EAAS9tf,MAAM,KAAK0D,KAAK,KAAO,QAChD+gf,SAAUqJ,EACVpI,OAAQ,CACN3jf,UAAW,QACXggC,IAAK,sBAGT,CACE2id,cAlDc,oCAmDdgB,OAAQ,CACN3jf,UAAW,QACXggC,IAAK,qBAGT6pO,EAAK69O,kBACL,CACE1nf,UAAW,OACX+/B,MAAO,sCACPwjd,UAAW,GAEb,CACEvjf,UAAW,SACX+/B,MAAO,+BACPwjd,UAAW,GAEb,CACEvjf,UAAW,UACX+/B,MAAO,qBACPwjd,UAAW,GAEb,CACEvjf,UAAW,OACX+/B,MAAO,0BACPwjd,UAAW,GAEb,CACEvjf,UAAW,MACX+/B,MAAO,MACPC,IAAK,MACLujd,UAAW,O,cCxFnB3tf,EAAOD,QAAU,SAASk0Q,GACxB,IAAImiP,EAAa,4BAGbC,EAAoB,+GACpBC,EAAkB,mCAClBC,EAAmB,CACrBpD,QACE,yYAIFt1H,QAAS,kBAEP02H,EAAQ,CACVnqf,UAAW,QACX+/B,MAAO,KAAMC,IAAK,IAClB0id,SAAUyJ,GAERC,EAAY,CACdpsf,UAAW,oBACXmif,SAAU,CACR,CAACpid,MAAO,SAAUC,IAAK,UACvB,CAACD,MAAO,OAAQC,IAAK,SAEvB0id,SAAUyJ,GAGZ,SAASE,EAAetsd,EAAOC,GAC7B,IACA+f,EAAW,CAAC,CAAChgB,MAAOA,EAAOC,IAAKA,IAEhC,OADA+f,EAAS,GAAGA,SAAWA,EAChBA,EAET,IAAIgqc,EAAS,CACX/pf,UAAW,SACX+/C,SAAU,CAAC8pN,EAAK29O,iBAAkB2C,GAClChI,SAAU,CACR,CAACpid,MAAO,IAAKC,IAAK,KAClB,CAACD,MAAO,IAAKC,IAAK,KAClB,CAACD,MAAO,IAAKC,IAAK,KAClB,CAACD,MAAO,aAAcC,IAAK,MAAO+f,SAAUssc,EAAe,MAAO,QAClE,CAACtsd,MAAO,aAAcC,IAAK,MAAO+f,SAAUssc,EAAe,MAAO,QAClE,CAACtsd,MAAO,WAAYC,IAAK,IAAK+f,SAAUssc,EAAe,IAAK,MAC5D,CAACtsd,MAAO,WAAYC,IAAK,IAAK+f,SAAUssc,EAAe,IAAK,MAC5D,CAACtsd,MAAO,aAAcC,IAAK,OAC3B,CAACD,MAAO,UAAWC,IAAK,aAE1Bujd,UAAW,GAET+I,EAAW,CACbtsf,UAAW,SACXmif,SAAU,CACR,CAACpid,MAAO,QAASC,IAAK,MAAO+f,SAAUssc,EAAe,MAAO,QAC7D,CAACtsd,MAAO,QAASC,IAAK,MAAO+f,SAAUssc,EAAe,MAAO,QAC7D,CAACtsd,MAAO,MAAOC,IAAK,IAAK+f,SAAUssc,EAAe,IAAK,MACvD,CAACtsd,MAAO,MAAOC,IAAK,IAAK+f,SAAUssc,EAAe,IAAK,MACvD,CAACtsd,MAAO,QAASC,IAAK,OACtB,CAACD,MAAO,YAAaC,IAAK,aAE5Bujd,UAAW,GAETgJ,EAAS,CACXxsd,MAAO,UAAY8pO,EAAK09O,eAAiB,2DACzC7E,SAAU,yCACV3ic,SAAU,CACR,CACE//C,UAAW,SACX+/C,SAAU,CAAC8pN,EAAK29O,iBAAkB2C,GAClChI,SAAU,CACR,CAACpid,MAAO,WAAYwjd,UAAW,GAC/B,CAACxjd,MAAO,WAAYC,IAAK,cAI/Bujd,UAAW,GAqBTiJ,EAA2B,CAC7BJ,EACArC,EACAuC,EAtBY,CACZtsf,UAAW,SACX+/C,SAAU,CAAC8pN,EAAK29O,iBAAkB2C,GAClChI,SAAU,CACR,CAACpid,MAAO,QAASC,IAAK,MAAO+f,SAAUssc,EAAe,MAAO,QAC7D,CAACtsd,MAAO,QAASC,IAAK,MAAO+f,SAAUssc,EAAe,MAAO,QAC7D,CAACtsd,MAAO,MAAOC,IAAK,IAAK+f,SAAUssc,EAAe,IAAK,MACvD,CAACtsd,MAAO,MAAOC,IAAK,IAAK+f,SAAUssc,EAAe,IAAK,MACvD,CAACtsd,MAAO,QAASC,IAAK,QAExBujd,UAAW,GAcXgJ,EAZc,CACdvsf,UAAW,OACX+/B,MAAO,OAAQC,IAAK,MACpB+f,SAAU,CACR8pN,EAAKi4O,QAAQj4O,EAAK69O,kBAAmB,CAAC1nf,UAAW,kBAUnD6pQ,EAAKk+O,kBACL,CACE/nf,UAAW,QACX2if,cAAe,sBAAuB3id,IAAK,MAC3Cqjd,QAAS,IACTtjc,SAAU,CACR8pN,EAAKk+O,kBACLl+O,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAACtod,MAAOmsd,IACtC,CAACnsd,MAAO,OAGZ,CACE//B,UAAW,QACX2if,cAAe,iBAAkB3id,IAAK,MACtCqjd,QAAS,IACTtjc,SAAU,CACR8pN,EAAKk+O,kBACLl+O,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAACtod,MAAOmsd,KAExC3I,UAAW,IAEb,CACEZ,cAAe,aAAc3id,IAAK,MAClCqjd,QAAS,IACTtjc,SAAU,CACR8pN,EAAKk+O,kBACLl+O,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAACtod,MAAOmsd,KAExC3I,UAAW,IAEb,CACEvjf,UAAW,WACX2if,cAAe,MAAO3id,IAAK,OAC3B+f,SAAU,CACR8pN,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAC5Btod,MAAOksd,EACPtG,YAAY,MAIlB,CACE3lf,UAAW,WACX2if,cAAe,YAAa3id,IAAK,OACjC+f,SAAU,CACR8pN,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAC5Btod,MAAOksd,EACPtG,YAAY,KAGhBpC,UAAW,GAEb,CACEvjf,UAAW,SACX+/B,MAAO8pO,EAAKs9O,oBAAsB,cAClC5D,UAAW,GAEb,CACEvjf,UAAW,SACX+/B,MAAO,IACPggB,SAAU,CAACgqc,EAAQ,CAAChqd,MAAOksd,IAC3B1I,UAAW,GAEb,CACEvjf,UAAW,SACXmif,SAAU,CACR,CAAEpid,MAAO,gBAAkBisd,GAC3B,CAAEjsd,MAAO,iBAAmBisd,GAC5B,CAAEjsd,MAAO,uBAAyBisd,GAClC,CAAEjsd,MAAO,yFACT,CAAEA,MAAO,sBAAwBisd,IAEnCzI,UAAW,IAMf,OAHA4G,EAAMpqc,SAAWysc,EACjBJ,EAAUrsc,SAAWysc,EAAyBzyf,MAAM,GAE7C,CACLggO,QAAS,CAAC,MACVgpR,QAnLqB,sBAoLrBL,SAAUyJ,EACVpsc,SAAUysc,K,cCxLd52f,EAAOD,QAAU,SAASk0Q,GACxB,IAAIqgP,EAAW,CACbnB,QAEE,mmBASFt1H,QACE,mBAEAk1H,EAAU,CACZ3of,UAAW,SACXmif,SAAU,CACR,CAAEpid,MAAO,iBACT,CAAEA,MAAO,mEACT,CAAEA,MAAO,wFAEXwjd,UAAW,GAETkJ,EAAkB,CACpBzsf,UAAW,SACX+/B,MAAO,KAAMC,IAAK,IAClB+f,SAAU,CAAC,CAAChgB,MAAO,QAEjB2sd,EAAwB7iP,EAAKi4O,QAAQ2K,EAAiB,CAACpJ,QAAS,OAChE8G,EAAQ,CACVnqf,UAAW,QACX+/B,MAAO,IAAKC,IAAK,IACjB0id,SAAUwH,GAERyC,EAAc9iP,EAAKi4O,QAAQqI,EAAO,CAAC9G,QAAS,OAC5CuJ,EAAsB,CACxB5sf,UAAW,SACX+/B,MAAO,MAAOC,IAAK,IACnBqjd,QAAS,KACTtjc,SAAU,CAAC,CAAChgB,MAAO,MAAO,CAACA,MAAO,MAAO8pO,EAAK29O,iBAAkBmF,IAE9DE,EAA+B,CACjC7sf,UAAW,SACX+/B,MAAO,OAAQC,IAAK,IACpB+f,SAAU,CAAC,CAAChgB,MAAO,MAAO,CAACA,MAAO,MAAO,CAACA,MAAO,MAAOoqd,IAEtD2C,EAAqCjjP,EAAKi4O,QAAQ+K,EAA8B,CAClFxJ,QAAS,KACTtjc,SAAU,CAAC,CAAChgB,MAAO,MAAO,CAACA,MAAO,MAAO,CAACA,MAAO,MAAO4sd,KAE1DxC,EAAMpqc,SAAW,CACf8sc,EACAD,EACAH,EACA5iP,EAAK49O,iBACL59O,EAAK69O,kBACLiB,EACA9+O,EAAKi+O,sBAEP6E,EAAY5sc,SAAW,CACrB+sc,EACAF,EACAF,EACA7iP,EAAK49O,iBACL59O,EAAK69O,kBACLiB,EACA9+O,EAAKi4O,QAAQj4O,EAAKi+O,qBAAsB,CAACzE,QAAS,QAEpD,IAAI0G,EAAS,CACX5H,SAAU,CACR0K,EACAD,EACAH,EACA5iP,EAAK49O,iBACL59O,EAAK69O,oBAILqF,EAAgBljP,EAAKq9O,SAAW,KAAOr9O,EAAKq9O,SAAW,aAAer9O,EAAKq9O,SAAW,iBAE1F,MAAO,CACLntR,QAAS,CAAC,SAAU,MACpB2oR,SAAUwH,EACV7G,QAAS,KACTtjc,SAAU,CACR8pN,EAAK+9O,QACH,MACA,IACA,CACEpC,aAAa,EACbzlc,SAAU,CACR,CACE//C,UAAW,SACXmif,SAAU,CACR,CACEpid,MAAO,MAAOwjd,UAAW,GAE3B,CACExjd,MAAO,kBAET,CACEA,MAAO,MAAOC,IAAK,UAO/B6pO,EAAKg+O,oBACLh+O,EAAKi+O,qBACL,CACE9nf,UAAW,OACX+/B,MAAO,IAAKC,IAAK,IACjB0id,SAAU,CACR,eAAgB,wFAGpBqH,EACApB,EACA,CACEhG,cAAe,kBAAmB3id,IAAK,QACvCqjd,QAAS,UACTtjc,SAAU,CACR8pN,EAAKw+O,WACLx+O,EAAKg+O,oBACLh+O,EAAKi+O,uBAGT,CACEnF,cAAe,YAAa3id,IAAK,QACjCqjd,QAAS,SACTtjc,SAAU,CACR8pN,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAACtod,MAAO,uBACtC8pO,EAAKg+O,oBACLh+O,EAAKi+O,uBAGT,CAEE9nf,UAAW,OACX+/B,MAAO,WAAYwld,cAAc,EAAMvld,IAAK,MAAO6ld,YAAY,EAC/D9lc,SAAU,CACR,CAAC//C,UAAW,cAAe+/B,MAAO,IAAKC,IAAK,OAGhD,CAGE2id,cAAe,8BACfY,UAAW,GAEb,CACEvjf,UAAW,WACX+/B,MAAO,IAAMgtd,EAAgB,SAAWljP,EAAKq9O,SAAW,UAAW1B,aAAa,EAChFxld,IAAK,WAAY6ld,YAAY,EAC7BnD,SAAUwH,EACVnqc,SAAU,CACR,CACEhgB,MAAO8pO,EAAKq9O,SAAW,UAAW1B,aAAa,EAC/Czlc,SAAU,CAAC8pN,EAAKw+O,YAChB9E,UAAW,GAEb,CACEvjf,UAAW,SACX+/B,MAAO,KAAMC,IAAK,KAClBuld,cAAc,EACdM,YAAY,EACZnD,SAAUwH,EACV3G,UAAW,EACXxjc,SAAU,CACRgqc,EACApB,EACA9+O,EAAKi+O,uBAGTj+O,EAAKg+O,oBACLh+O,EAAKi+O,2B,cClLflyf,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL04O,kBAAkB,EAClBQ,QAAS,yBACTL,SAAU,CACRqG,QAAS,+KAIXhpc,SAAU,CACV,CACE//C,UAAW,SACX+/B,MAAO,IAAKC,IAAK,KAEnB,CACEhgC,UAAW,YACX+/B,MAAO,WAAYC,IAAK,IAAK6ld,YAAY,O,cChB/Cjwf,EAAOD,QAAU,SAASk0Q,GACxB,IACImjP,EAAO,CACTjtd,MAAO,wCAAyCyld,aAAa,EAAMxld,IAAK,IAAKkjd,gBAAgB,EAC7Fnjc,SAAU,CACR,CACE//C,UAAW,YACX+/B,MAAO,KAAMC,IAAK,IAAK6ld,YAAY,EACnClC,OAAQ,CACNT,gBAAgB,EAAM2C,YAAY,EAClC9lc,SAAU,CACR,CACEhgB,MAAO,WAAYyld,aAAa,EAChCzlc,SAAU,CACR,CACE//C,UAAW,WACX+/B,MAAO,UAET,CACEA,MAAO,KAAMC,IAAK,KAClB+f,SAAU,CACR8pN,EAAK49O,iBACL59O,EAAK69O,sBAKb79O,EAAKs+O,gBACLt+O,EAAK69O,kBACL79O,EAAK49O,iBACL59O,EAAKi+O,qBACL,CACE9nf,UAAW,SAAU+/B,MAAO,iBAE9B,CACE//B,UAAW,OAAQ+/B,MAAO,mBAQtC,MAAO,CACLwid,kBAAkB,EAClBc,QAAS,YACTtjc,SAAU,CACR8pN,EAAKi+O,qBACL,CACE9nf,UAAW,cAAe+/B,MAAO,mBAEnC,CACE//B,UAAW,iBAAkB+/B,MAAO,oBAEtC,CACE//B,UAAW,gBACX+/B,MAAO,KAAMC,IAAK,KAClBqjd,QAAS,KAEX,CACErjf,UAAW,kBACX+/B,MAAO,kCAET,CACEA,MAAO,oBACPgjd,QAAS,UACTL,SAAU,kBAEZ,CACE3id,MAAO,IAAKC,IAAK,OAIjBqjd,QAAS,IACTtjc,SAAU,CACR,CACE//C,UAAW,UACX+/B,MAAO,OAET,CACEA,MAAO,KAAMmjd,gBAAgB,EAAM2C,YAAY,EAC/CtC,UAAW,EACXxjc,SAAU,CACR8pN,EAAK49O,iBAAkB59O,EAAK69O,kBAC5B79O,EAAKs+O,oBAKb,CACEnof,UAAW,eAAgB+/B,MAzFlB,0BA0FTwjd,UAAW,GAEb,CACExjd,MAAO,IAAKC,IAAK,IACjBqjd,QAAS,KACTtjc,SAAU,CACR8pN,EAAKi+O,qBACLkF,Q,cClGVp3f,EAAOD,QAgBP,SAASk0Q,GAMP,IAuCEojP,EAAa,2FAgBXC,EAAqB,yGAcrBC,EAAiB,CACnBntf,UAAW,SACT+/B,MAAO,MAAQktd,EAAa,uBAC5B1J,UAAW,GAOX6J,EAAe,CACjBptf,UAAW,SACX+/B,MAAO,8fAEHktd,EAAa,gBAEjB1J,UAAW,GAQT8J,EAAmB,CACrBrtf,UAAW,SACX+/B,MAAO,KAAQmtd,EAAqB,MAAOltd,IAAK,IAChDqjd,QAAS,KAkBPiK,EAAgB,CAClBttf,UAAW,SACX+/B,MAAO,IACPggB,SAAU,CAbY,CACtBhgB,MAAOmtd,EACP3J,UAAW,IAYXvjd,IAAK,WAuFHutd,EAAyB1jP,EAAK+9O,QAChC,SACA,SACA,CACE7nc,SAAU,CAAC,QACXwjc,UAAW,KAIf,MAAO,CACLR,QAASl5O,EAAKs9O,oBACdzE,SAxNe,CACfqG,QACE,6mBAQFC,SACE,2KAGFv1H,QACE,mBA0MF1zU,SAAU,CACR8pN,EAAKg+O,oBACHh+O,EAAKi+O,qBACLyF,EAvEkB,CACtBvtf,UAAW,SACX+/B,MAAO,iCACPwjd,UAAW,IAsEP+J,EAhGgC,CACpCttf,UAAW,SACX+/B,MAAO,QACPC,IAAK,UACLujd,UAAW,GAQyB,CACpCvjf,UAAW,SACX+/B,MAAO,IACPC,IAAK,WAmBmB,CACxBhgC,UAAW,SACX+/B,MAAO,QACPC,IAAK,QA+DDotd,EACAD,EACAE,EAzDgB,CACpBrtf,UAAW,OACX+/B,MAAO,MACPC,IAAK,IACLujd,UAAW,GAQuB,CAClCvjf,UAAW,OACX+/B,MAAO,UACPC,IAAK,IACLujd,UAAW,GAQU,CACrBvjf,UAAW,UACX+/B,MAAO,+B,cC3NXnqC,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL9vC,QAAS,CAAC,KAAM,SAAU,OAC1Bh6K,SAAU,CAER,CACE//C,UAAW,UACXmif,SAAU,CACR,CAAEpid,MAAO,UAAWC,IAAK,KACzB,CAAED,MAAO,sBAIb,CACEA,MAAO,IAAKC,IAAK,IACjB2kd,YAAa,MACbpB,UAAW,GAGb,CACEvjf,UAAW,SACX+/B,MAAO,8BAGT,CACE//B,UAAW,SACX+/B,MAAO,qBAGT,CACE//B,UAAW,WACXmif,SAAU,CACR,CAAEpid,MAAO,aACT,CAAEA,MAAO,QACPwjd,UAAW,KAKjB,CACEvjf,UAAW,QACX+/B,MAAO,SAAUC,IAAK,KAGxB,CACEhgC,UAAW,OACXmif,SAAU,CACR,CACEpid,MAAO,YAAeC,IAAK,WAE7B,CACED,MAAO,SAET,CACEA,MAAO,aAAcC,IAAK,IAC1Bujd,UAAW,KAKjB,CACExjd,MAAO,cAAeC,IAAK,KAG7B,CACED,MAAO,+BACPyld,aAAa,EACbzlc,SAAU,CACR,CACE//C,UAAW,SACX+/B,MAAO,MAAOC,IAAK,MACnBuld,cAAc,EACdK,WAAW,EACXrC,UAAW,GAEb,CACEvjf,UAAW,OACX+/B,MAAO,SAAUC,IAAK,MACtBuld,cAAc,EAAMM,YAAY,GAElC,CACE7lf,UAAW,SACX+/B,MAAO,SAAUC,IAAK,MACtBuld,cAAc,EAAMM,YAAY,IAGpCtC,UAAW,IAEb,CACExjd,MAAO,eACPyld,aAAa,EACbzlc,SAAU,CACR,CACE//C,UAAW,SACX+/B,MAAO,KAAMC,IAAK,KAClBuld,cAAc,EAAMM,YAAY,GAElC,CACE7lf,UAAW,OACX+/B,MAAO,OAAQC,IAAK,IACpBuld,cAAc,S,cCpG1B3vf,EAAOD,QAAU,SAAUk0Q,GACzB,IAAIsgP,EAAQ,CACVnqf,UAAW,QACXmif,SAAU,CACP,CAACpid,MAAO,sBAITytd,EAAe,CACjBxtf,UAAW,QACXmif,SAAU,CACP,CAACpid,MAAO,OAAQC,IAAK,MAExB0id,SAAU,qCAGRqH,EAAS,CACX/pf,UAAW,SACXmif,SAAU,CACR,CACEpid,MAAO,OAAWC,IAAK,OAEzB,CACED,MAAO,OAAQC,IAAK,OAEtB,CACED,MAAO,KAAOC,IAAK,IACnBqjd,QAAS,OAEX,CACEtjd,MAAO,KAAMC,IAAK,IAClBqjd,QAAS,OAEX,CACEtjd,MAAO,MAAUC,IAAK,MACtB+f,SAAU,CAAC8pN,EAAK29O,iBAAkB2C,EAAOqD,IAE3C,CACEztd,MAAO,MAAOC,IAAK,MACnB+f,SAAU,CAAC8pN,EAAK29O,iBAAkB2C,EAAOqD,IAE3C,CACEztd,MAAO,IAAMC,IAAK,IAClBqjd,QAAS,MACTtjc,SAAU,CAAC8pN,EAAK29O,iBAAkB2C,EAAOqD,IAE3C,CACEztd,MAAO,IAAKC,IAAK,IACjBqjd,QAAS,MACTtjc,SAAU,CAAC8pN,EAAK29O,iBAAkB2C,EAAOqD,MAI/CA,EAAaztc,SAAW,CACtB8pN,EAAKo+O,cAAe8B,GAetB,MAAO,CACLrH,SAba,CACbqG,QAAS,4TAGTC,SAEE,+PAQFjpc,SAAU,CACRgqc,EACAlgP,EAAK+9O,QACH,UACA,OACA,CACEjD,YAAa,aAGjB96O,EAAK+9O,QACH,MACA,IACA,CACEjD,YAAa,aAGjB96O,EAAKg+O,oBACLh+O,EAAKi+O,qBACL,CACE9nf,UAAW,QACX2if,cAAe,kBAAmB3id,IAAK,IAAK6ld,YAAY,EACxD9lc,SAAU,CACR,CACE4ic,cAAe,sBAEjB94O,EAAKy+O,wBAGTz+O,EAAKo+O,cACL,CACEjof,UAAW,OAAQ+/B,MAAO,cAE5B,CACEA,MAAO,U,cCxGfnqC,EAAOD,QAAU,SAASk0Q,GACxB,IAAIqgP,EACF,26BAWEgB,EAAgB,CAClBrhP,EAAKg+O,oBACLh+O,EAAK+9O,QAAQ,KAAM,KAAM,CAACrE,UAAW,IACrC15O,EAAK+9O,QAAQ,OAAQ,OAAQ,CAACrE,UAAW,MAEvCkK,EAAY,CACdztf,UAAW,OACXmif,SAAU,CACR,CAACpid,MAAO,OAAQC,IAAK,MACrB,CAACD,MAAO,SAAUC,IAAK,UAGvB+pd,EAAS,CACX/pf,UAAW,SACX+/B,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CAAC,CAAChgB,MAAO,QAEjBord,EAAc,CAChBnrf,UAAW,SAAU+/B,MAAO,WAE1B2td,EAAQ,CACV3td,MAAO8pO,EAAKq9O,SAAW,wBAAyB1B,aAAa,EAC7Dzlc,SAAU,CACR8pN,EAAKw+O,aAGLsF,EAAW,CACb3tf,UAAW,WACX2if,cAAe,4CAA6C3id,IAAK,OACjE0id,SAAU,qDACV3ic,SAAU,CACR8pN,EAAKw+O,WACL,CACErof,UAAW,SACX+/B,MAAO,KAAMC,IAAK,KAClB0id,SAAUwH,EACVnqc,SAAU,CAACgqc,EAAQoB,EAAasC,GAAW/rf,OAAOwpf,IAEpDuC,GACA/rf,OAAOwpf,IAEX,MAAO,CACLnxR,QAAS,CAAC,MAAO,MAAO,MAAO,SAAU,aAAc,UAAW,MAAO,OACzEwoR,kBAAkB,EAClBG,SAAUwH,EACV7G,QAAS,2BACTtjc,SAAU,CACRgqc,EAAQoB,EACRthP,EAAKm+O,YACL0F,EACAC,EACAF,GACA/rf,OAAOwpf,M,cCjEbt1f,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL9vC,QAAS,CAAC,SACVh6K,SAAU,CACR,CACE//C,UAAW,OACXujf,UAAW,GACXpB,SAAU,CACR,CAACpid,MAAO,kCACR,CAACA,MAAO,+BACR,CAACA,MAAO,iCAGZ,CACE//B,UAAW,UACXmif,SAAU,CACR,CAACpid,MAAO,UAAWC,IAAK,KACxB,CAACD,MAAO,QAASC,IAAK,KACtB,CAACD,MAAO,SAAUC,IAAK,KACvB,CAACD,MAAO,UAAWC,IAAK,KACxB,CAACD,MAAO,SAAUC,IAAK,KACvB,CAACD,MAAO,QAASC,IAAK,YAG1B,CACEhgC,UAAW,WACX+/B,MAAO,OAAQC,IAAK,KAEtB,CACEhgC,UAAW,WACX+/B,MAAO,OAAQC,IAAK,KAEtB,CACEhgC,UAAW,WACX+/B,MAAO,OAAQC,IAAK,S,cClC5BpqC,EAAOD,QAAU,SAASk0Q,GACxB,IAAI+jP,EAAS,CACX7td,MAAO,gBACP2id,SAAU,CACR9qf,KACE,4kBASJmoD,SAAU,CACR8pN,EAAK69O,kBACL79O,EAAK49O,mBAIT,MAAO,CACL1tR,QAAS,CAAC,SACVwoR,kBAAkB,EAClBoC,YAAa,MACb5kc,SAAU,CACR8pN,EAAK+9O,QAAQ,qBAAsB,yBACnC/9O,EAAK+9O,QAAQ,MAAO,MACpB,CACE5nf,UAAW,eACX+/B,MAAO,MAAOC,IAAK,KACnB+f,SAAU,CACR,CACE//C,UAAW,OACX+/B,MAAO,MACP2id,SAAU,CACR9qf,KACE,imBAUJ+rf,OAAQ,CACNT,gBAAgB,EAChBR,SAAU,WACV3ic,SAAU,CAAC6tc,GACXrK,UAAW,MAKnB,CACEvjf,UAAW,oBACX+/B,MAAO,OAAQC,IAAK,KACpB+f,SAAU,CAAC6tc,Q,cC1DnBh4f,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL9vC,QAAS,CAAC,OAAQ,QAClB2oR,SAAU,CACRqG,QACE,2LAGJhpc,SAAU,CACR8pN,EAAK+9O,QAAQ,IAAK,IAAK,CAACrE,UAAW,IACnC,CACEvjf,UAAW,OACX+/B,MAAO,sCAGT,CACE//B,UAAW,SACX+/B,MAAO,+mCAGT,CACE//B,UAAW,SACX+/B,MAAO,+FAET8pO,EAAKi4O,QAAQj4O,EAAKm+O,YAAa,CAACjod,MAAO,qB,cCxB7CnqC,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL9vC,QAAS,CAAC,UACVwoR,kBAAkB,EAClBG,SAAU,yDACV3ic,SAAU,CACR8pN,EAAKk+O,kBACLl+O,EAAK49O,iBACL59O,EAAK69O,kBACL79O,EAAKm+O,YACL,CACErF,cAAe,qEACfgB,OAAQ,CACN3jd,IAAK,SACL2kd,YAAa,UAInBtB,QAAS,Q,cClBbztf,EAAOD,QAAU,SAASk0Q,GACxB,IAAI+9O,EAAU/9O,EAAK+9O,QACjB,cAAe,IACf,CACErE,UAAW,KAQf,MAAO,CACLxpR,QAAS,CAAC,MAAO,OACjBwoR,kBAAkB,EAClBc,QAAS,OACTX,SAAU,CACRqG,QACE,wFAEFC,SACE,mfAUJjpc,SAAU,CACR,CACE//C,UAAW,WAAY+/B,MAAO,4BAEhC,CACE//B,UAAW,WACX+/B,MA5BG,mDA4BiBC,IAAK,WACzB+f,SAAU,CACR8pN,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAACtod,MAAO,sDACtC6nd,IAGJ,CACE5nf,UAAW,SAAU+/B,MAAO,UAC5Bwjd,UAAW,GAEbqE,M,cC/CNhyf,EAAOD,QAAU,SAASk0Q,GAoBxB,MAAO,CACL64O,SAAU,WACV3ic,SAAU,CACR,CACE//C,UAAW,UACX+/B,MAAO,YAAaC,IAAK,MAAO6ld,YAAY,EAC5CtC,UAAW,IAEb,CACEvjf,UAAW,WACX+/B,MAAO,sCAAuCC,IAAK,MAAO6ld,YAAY,EACtExC,QAAS,aACTE,UAAW,IAEb,CACEvjf,UAAW,WACX+/B,MAAO,WAAYC,IAAK,MAAO6ld,YAAY,GAnC3B,CACpB7lf,UAAW,SACX+/B,MAAO,IAAKC,IAAK,KAEC,CAClBhgC,UAAW,SACX+/B,MAAO,IAAKC,IAAK,KAEK,CACtBhgC,UAAW,SACX+/B,MAAO,gBAAiBC,IAAK,MAC7Bujd,UAAW,GAEY,CACvBvjf,UAAW,SACX+/B,MAAO,aAAcC,IAAK,MAC1Bujd,UAAW,GAyBT15O,EAAKk+O,sB,cC1CXnyf,EAAOD,QAAU,SAASk0Q,GACxB,IAAI++O,EAAU,CACZ5of,UAAW,SACXmif,SAAU,CACRt4O,EAAKi4O,QAAQj4O,EAAK69O,kBAAmB,CAAE3nd,MAAO,kBAC9C,CACEA,MAAO,aAAcC,IAAK,IAC1B+f,SAAU,CAAC8pN,EAAK29O,mBAElB,CACEznd,MAAO,UAAYC,IAAK,IACxBqjd,QAAS,OAKXsF,EAAU,CACZ3of,UAAW,SACXmif,SAAU,CACR,CAAEpid,MAAO,kDACT,CAAEA,MAAO8pO,EAAKw9O,cAEhB9D,UAAW,GAGTgH,EAAe,CACjBvqf,UAAW,OACX+/B,MAAO,IAAKC,IAAK,IACjB0id,SAAU,CAAC,eAAgB,gDAC3B3ic,SAAU,CACR,CACEhgB,MAAO,OAAQwjd,UAAW,GAE5B,CACEZ,cAAe,UAAW3id,IAAK,IAC/B0id,SAAU,CAAC,eAAgB,WAC3B3ic,SAAU,CACR8pN,EAAKi4O,QAAQ8G,EAAS,CAAC5of,UAAW,gBAClC,CACEA,UAAW,cACX+/B,MAAO,IAAKC,IAAK,IACjBqjd,QAAS,SAIfuF,EACA/+O,EAAKg+O,oBACLh+O,EAAKi+O,uBAIL+F,EAAgB,CAClB7tf,UAAW,WACX+/B,MAAO,oBAGL+td,EAAc,CAChB9tf,UAAW,eACX+/B,MAAO,qBAGLgud,EAAY,CACd/tf,UAAW,SACX+/B,MAAO,gCAGLiud,EAAoB,CACtBhuf,UAAW,SACX+/B,MAAO,IACPC,IAAK,IACL+f,SAAU,CACR4oc,EACAkF,IAIAI,EAAW,CACbjuf,UAAW,QACX+/B,MAAO,4BACPC,IAAK,QACLwld,aAAa,EACbK,YAAY,GAqBd,MAAO,CACLnD,SAAU,GACV3ic,SAAU,CApBQ,CAClB//C,UAAW,QACX+/B,MAAO,SACPC,IAAK,KACLujd,UAAW,GACXxjc,SAAU,CACR8tc,EACAC,EACAC,EACAE,EACAD,EACAnkP,EAAKg+O,oBACLh+O,EAAKi+O,qBACLa,EACAC,IAQAiF,EACAC,EACAC,EACAE,EACAD,EACAnkP,EAAKg+O,oBACLh+O,EAAKi+O,qBACLa,EACAC,EACA2B,EACA,CACExqd,MAAO8pO,EAAKq9O,SAAW,KACvBxE,SAAU,Q,cCtHlB9sf,EAAOD,QAAU,SAASk0Q,GAExB,MAAO,CACL9vC,QAAS,CAAC,OACVwoR,kBAAkB,EAClBoC,YAAa,MACb5kc,SAAU,CACR,CACE//C,UAAW,eACX+/B,MAAO,UAAWC,IAAK,KAAMqjd,QAAS,IACtCtjc,SAAU,CACR,CACE//C,UAAW,OACX+/B,MAAO,eACP4jd,OAAQ,CACNT,gBAAgB,EAAMK,UAAW,EACjCxjc,SAAU,CACR8pN,EAAK69O,uBAMf,CACE1nf,UAAW,oBACX+/B,MAAO,KAAMC,IAAK,KAAMqjd,QAAS,IACjCX,SAzBoB,sD,cCD5B9sf,EAAOD,QAAU,SAASk0Q,GACtB,IAAIw/O,EAAcx/O,EAAK+9O,QAAQ,OAAQ,QAsBvC,MAAO,CACHvE,QAAS,KACTtjc,SAAU,CACNspc,EAvBc,CAClBrpf,UAAW,YACX+/B,MAAO,qDAQQ,CACfA,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CACNspc,EARkB,CACtBrpf,UAAW,OACX+/B,MAAO,UASH8pO,EAAK49O,iBAAkB59O,EAAK69O,wB,cCnBxC9xf,EAAOD,QAAU,SAASk0Q,GACxB,IAAIqkP,EAAkB,oCAElBC,EACF,sMAGEhE,EAAQ,CACVnqf,UAAW,QACX+/B,MAAO,OAAQC,IAAK,IACpB+id,QAASmL,EACTxL,SAAUyL,GAERpE,EAAS,CACX/pf,UAAW,SACX+/C,SAAU,CAAC8pN,EAAK29O,iBAAkB2C,GAClChI,SAAU,CACR,CACEpid,MAAO,IAAKC,IAAK,KAEnB,CACED,MAAO,IAAKC,IAAK,OAInB2td,EAAW,CACb3tf,UAAW,WACX2if,cAAe,oBAAqB3id,IAAK,OACzC+f,SAAU,CACR8pN,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAC5Btod,MAAOmud,EACPvI,YAAY,MAId+H,EAAQ7jP,EAAKi4O,QAAQ6L,EAAU,CACjC3tf,UAAW,QACX2if,cAAe,0CAA2C3id,IAAK,eAE7Doud,EAA0B,CAC5BrE,EACAlgP,EAAKk+O,kBACL2F,EACAC,EACA,CACE5td,MAAO,MAET,CACE//B,UAAW,SACX+/B,MAAO,cACPggB,SAAU,CAACgqc,EAAQ,CAAChqd,MAhDD,uFAiDnBwjd,UAAW,GAEb,CACEvjf,UAAW,SACX+/B,MAAOmud,EAAkB,SACzB3K,UAAW,GAEb,CACEvjf,UAAW,SACX+/B,MAAO,4EACPwjd,UAAW,GAEb,CACEvjf,UAAW,WACX+/B,MAAO,kCAET,CACEA,MAAO,MAET,CACEA,MAAO,IAAM8pO,EAAK09O,eAAiB,QACnCxnc,SAAU,CACR8pN,EAAKk+O,kBACL,CACE/nf,UAAW,SACXqjf,QAAS,MACTtjc,SAAU,CAAC8pN,EAAK29O,iBAAkB2C,GAClChI,SAAU,CACR,CACEpid,MAAO,IAAKC,IAAK,WAEnB,CACED,MAAO,QAASC,IAAK,gBAK7Bujd,UAAW,IAKf,OAFA4G,EAAMpqc,SAAWquc,EAEV,CACLrL,QAASmL,EACTxL,SAAUyL,EACVpuc,SAAUquc,K,cChGdx4f,EAAOD,QAAU,SAASk0Q,GACxB,IAAI+9O,EAAU,CACZzF,SAAU,CACRt4O,EAAK+9O,QAAQ,KAAM,KACnB/9O,EAAK+9O,QACH,KACA,KACA,CACE7nc,SAAU,CAAC,YAMfsuc,EAAc,CAChBruf,UAAW,OACX+/B,MAAO,kBACPwjd,UAAW,GAGTmI,EAAO,CACT3rd,MAAO,MAAOC,IAAK,MACnBqjd,QAAS,IACTtjc,SAAU,CACR,CAAC//C,UAAW,OAAQ+/B,MAAO,0CAC3B6nd,IAeJ,MAAO,CACLlF,SACE,8HAEF3ic,SAAU,CAIR,CACE4ic,cAAe,qBAAsB3id,IAAK,WAC1C0id,SAAU,yDACV3ic,SAAU,CAAC2rc,EAAM9D,GACjBvE,QAAS,YAEX,CACEtjd,MAAO,SAAUC,IAAK,IACtB0id,SAAU,qBACV3ic,SAAU,CAAC2rc,EAAM9D,GACjBvE,QAAS,YAEX,CACEtjd,MAAO,OAAQC,IAAK,IACpB0id,SAAU,aACV3ic,SAAU,CAACsuc,EAAa3C,EAlCjB,CACX3rd,MAAO,IAAKC,IAAK,IACjB+f,SAAU2rc,EAAK3rc,UAgC2B6nc,IAExC,CACEjF,cAAe,sBAAuB3id,IAAK,IAC3C+f,SAAU,CAAC8pN,EAAKo+O,cAAeL,IAEjC,CACE7nd,MAAO,OAAQC,IAAK,IACpB0id,SAAU,OACV3ic,SAAU,CAAC6nc,IAtCD,CACd5nf,UAAW,SACX+/B,MAAO,UAAYC,IAAK,IACxBqjd,QAAS,KAyCPx5O,EAAK69O,kBACL79O,EAAKo+O,cACLoG,EACAxkP,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAACtod,MAAO,mBACtC6nd,EAEA,CAAC7nd,MAAO,UAEVsjd,QAAS,O,cCtFbztf,EAAOD,QAAU,SAASk0Q,GACxB,IAAIykP,EAAiB,qFACjBC,EAAgB,CAClBxF,QACE,8OAGFt1H,QACE,kBAEA+6H,EAAY,CACdxuf,UAAW,SACX+/B,MAAO,cAEL0ud,EAAa,CACf1ud,MAAO,KAAMC,IAAK,KAEhBkrd,EAAgB,CAClBrhP,EAAK+9O,QACH,IACA,IACA,CACE7nc,SAAU,CAACyuc,KAGf3kP,EAAK+9O,QACH,YACA,UACA,CACE7nc,SAAU,CAACyuc,GACXjL,UAAW,KAGf15O,EAAK+9O,QAAQ,WAAY,SAEvBuC,EAAQ,CACVnqf,UAAW,QACX+/B,MAAO,OAAQC,IAAK,IACpB0id,SAAU6L,GAERxE,EAAS,CACX/pf,UAAW,SACX+/C,SAAU,CAAC8pN,EAAK29O,iBAAkB2C,GAClChI,SAAU,CACR,CAACpid,MAAO,IAAKC,IAAK,KAClB,CAACD,MAAO,IAAKC,IAAK,KAClB,CAACD,MAAO,IAAKC,IAAK,KAClB,CAACD,MAAO,eAAgBC,IAAK,OAC7B,CAACD,MAAO,eAAgBC,IAAK,OAC7B,CAACD,MAAO,aAAcC,IAAK,KAC3B,CAACD,MAAO,aAAcC,IAAK,KAC3B,CAACD,MAAO,aAAcC,IAAK,KAC3B,CAACD,MAAO,aAAcC,IAAK,KAC3B,CAACD,MAAO,aAAcC,IAAK,KAC3B,CAACD,MAAO,eAAgBC,IAAK,OAC7B,CAGED,MAAO,iEAET,CACEA,MAAO,oCACPyld,aAAa,EACbzlc,SAAU,CACR,CAAEhgB,MAAO,aACT,CAAEA,MAAO,MACPkjd,gBAAgB,EAChBljc,SAAU,CAAC8pN,EAAK29O,iBAAkB2C,QAMxCH,EAAS,CACXhqf,UAAW,SACX+/B,MAAO,MAAOC,IAAK,MAAO2ld,YAAY,EACtCjD,SAAU6L,GAGRG,EAAwB,CAC1B3E,EACA0E,EACA,CACEzuf,UAAW,QACX2if,cAAe,eAAgB3id,IAAK,MACpCqjd,QAAS,IACTtjc,SAAU,CACR8pN,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAACtod,MAAO,qCACtC,CACEA,MAAO,QACPggB,SAAU,CAAC,CACThgB,MAAO,IAAM8pO,EAAKq9O,SAAW,OAASr9O,EAAKq9O,aAG/Cxlf,OAAOwpf,IAEX,CACElrf,UAAW,WACX2if,cAAe,MAAO3id,IAAK,MAC3B+f,SAAU,CACR8pN,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAACtod,MAAOuud,IACtCtE,GACAtof,OAAOwpf,IAEX,CAEEnrd,MAAO8pO,EAAKq9O,SAAW,MAEzB,CACElnf,UAAW,SACX+/B,MAAO8pO,EAAKs9O,oBAAsB,cAClC5D,UAAW,GAEb,CACEvjf,UAAW,SACX+/B,MAAO,WACPggB,SAAU,CAACgqc,EAAQ,CAAChqd,MAAOuud,IAC3B/K,UAAW,GAEb,CACEvjf,UAAW,SACX+/B,MAAO,4EACPwjd,UAAW,GAEb,CACExjd,MAAO,kCAET,CACE//B,UAAW,SACX+/B,MAAO,KAAMC,IAAK,KAClB0id,SAAU6L,GAEZ,CACExud,MAAO,IAAM8pO,EAAK09O,eAAiB,eACnC7E,SAAU,SACV3ic,SAAU,CACR0uc,EACA,CACEzuf,UAAW,SACX+/C,SAAU,CAAC8pN,EAAK29O,iBAAkB2C,GAClC9G,QAAS,KACTlB,SAAU,CACR,CAACpid,MAAO,IAAKC,IAAK,WAClB,CAACD,MAAO,MAAOC,IAAK,WACpB,CAACD,MAAO,QAASC,IAAK,aACtB,CAACD,MAAO,MAAOC,IAAK,WACpB,CAACD,MAAO,QAASC,IAAK,gBAG1Bt+B,OAAOwpf,GACT3H,UAAW,IAEb7hf,OAAOwpf,GAETf,EAAMpqc,SAAW2uc,EACjB1E,EAAOjqc,SAAW2uc,EAElB,IAIIC,EAAc,CAChB,CACE5ud,MAAO,SACP4jd,OAAQ,CACN3jd,IAAK,IAAK+f,SAAU2uc,IAGxB,CACE1uf,UAAW,OACX+/B,MAAO,gFACP4jd,OAAQ,CACN3jd,IAAK,IAAK+f,SAAU2uc,KAK1B,MAAO,CACL30R,QAAS,CAAC,KAAM,UAAW,UAAW,OAAQ,OAC9C2oR,SAAU6L,EACVlL,QAAS,OACTtjc,SAAUmrc,EAAcxpf,OAAOitf,GAAajtf,OAAOgtf,M,cCrLvD94f,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL86O,YAAa,MACb5kc,SAAU,CACR8pN,EAAK+9O,QAAQ,MAAO,MACpB,CACE7nd,MAAO,WAAYC,IAAK,UACxB2kd,YAAa,OACbY,cAAc,EACdM,YAAY,O,cCTpBjwf,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL64O,SAAU,CACRsG,SACE,wBACFD,QACE,+IAGJhpc,SAAU,CACR,CACE//C,UAAW,OAAQ+/B,MAAO,YAC1Bwjd,UAAW,IAEb15O,EAAK+9O,QAAQ,IAAK,KAClB,CACE5nf,UAAW,SACX+/B,MAAO,wDACPwjd,UAAW,GAEb15O,EAAK49O,iBACL59O,EAAK69O,kBACL,CACE3nd,MAAO,6BAET,CACEA,MAAO,MAET,CACEA,MAAO,MAET,CACEA,MAAO,KAET,CACEA,MAAO,2EACPwjd,UAAW,GAEb,CACExjd,MAAO,sBACPwjd,UAAW,O,cCxCnB3tf,EAAOD,QAAU,SAASk0Q,GACxB,IAAI+kP,EAAgB,uBAChBC,EAAmB,IAAMD,EAAgB,IAAMA,EAAgB,IAAMA,EAAgB,IACrFE,EAAkB,CACpB/F,QACE,2IAEFt1H,QACE,cAGAm0H,EAAU/9O,EAAK+9O,QAAQ,IAAK,KAC5BiC,EAAS,CACX7pf,UAAW,SACX+/B,MAAO,wDACPwjd,UAAW,GAETwL,EAAY,CACdhvd,MAAO,UAAY6ud,EAAgB,SAEjCI,EAAgB,CAClBjvd,MAAO8ud,EAAmB,MAAO7ud,IAAK,MACtCwld,aAAa,EACbjC,UAAW,EACXxjc,SAAU,CACR,CACEhgB,MAAO8ud,EAAkBtL,UAAW,GAEtC,CACExjd,MAAO,MAAOC,IAAK,MAAOkjd,gBAAgB,EAC1C0C,WAAW,EACXrC,UAAW,KAKb0L,EAAQ,CACVlvd,MAAO,IAAKC,IAAK,IACjBujd,UAAW,GAGT2L,EAAO,CACTnvd,MAAO,4BACPwjd,UAAW,GAET4L,EAAO,CACTpvd,MAAO,qBACPwjd,UAAW,GAET6L,EAAgB,CAClBrvd,MAAO,IAAM8pO,EAAKs9O,oBAClB5D,UAAW,EACXiC,aAAa,EACbzlc,SAAU,CACR,CACEhgB,MAAO,IAAM8pO,EAAKs9O,oBAClB5D,UAAW,GAEb,CACExjd,MAAO,IAAKC,IAAK,IACjBujd,UAAW,KAMb8L,EAAmB,CACrB1M,cAAe,0BAA2B3id,IAAK,MAC/C0id,SAAUoM,GAEZO,EAAiBtvc,SAAW,CAC1B6nc,EACAmH,EACAllP,EAAKi4O,QAAQj4O,EAAK49O,iBAAkB,CAACznf,UAAW,KAChDqvf,EACAL,EACAnlP,EAAK69O,kBACLmC,EACAoF,EACAC,EAAMC,EACNC,GAGF,IAAIE,EAAc,CAChB1H,EACAmH,EACAM,EACAL,EACAnlP,EAAK69O,kBACLmC,EACAoF,EACAC,EAAMC,EACNC,GAEFJ,EAAcjvc,SAAS,GAAGA,SAAWuvc,EACrCL,EAAMlvc,SAAWuvc,EACjBF,EAAcrvc,SAAS,GAAGA,SAAWuvc,EAErC,IAAItF,EAAS,CACXhqf,UAAW,SACX+/B,MAAO,MAAOC,IAAK,MACnB+f,SAAUuvc,GAEZ,MAAO,CACLv1R,QAAS,CAAC,OACV2oR,SAAUoM,EACVzL,QAAS,4CACTtjc,SAAU,CACR,CACE//C,UAAW,WACX+/B,MAAO,IAAM6ud,EAAgB,UAAW5ud,IAAK,KAC7Cwld,aAAa,EACbnC,QAAS,yBACTtjc,SAAU,CACRiqc,EACAngP,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAACtod,MAAO6ud,KAExCjL,OAAQ,CACN3jd,IAAK,QACL0id,SAAUoM,EACV/uc,SAAUuvc,IAGd1H,EACA,CACE7nd,MAAO,KAAMC,IAAK,MAClBujd,UAAW,EACXsC,YAAY,EACZL,aAAa,EACbzC,QAAS,IAAMl5O,EAAKq9O,SACpBxE,SACE,0KAGF3ic,SAAU,CAACiqc,IAEbH,EACAhgP,EAAK69O,kBACL0H,EACAF,EAAMC,EACNF,EACA,CAAClvd,MAAO,W,cC7IdnqC,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL9vC,QAAS,CAAC,OAAQ,OAClBwoR,kBAAkB,EAClBQ,QAAS,kBAETL,SAAU,CACNsG,SAAU,oqHAEdjpc,SAAU,CACR,CAEEhgB,MAAO,KACPC,IAAK,OAAQ4ld,WAAW,EAAMvC,QAAS,IACvCE,UAAW,IAGb,CAEEvjf,UAAW,SACX+/B,MAAO,oBACPC,IAAK,QAAS6ld,YAAY,EAC1BtC,UAAW,GAEb,CAEEvjf,UAAW,SACX+/B,MAAO,8BACPwjd,UAAW,GAEb15O,EAAK29O,iBACL39O,EAAK69O,kBACL,CACE1nf,UAAW,SACX+/B,MAAO8pO,EAAKu9O,UAAY,OACxB7D,UAAW,GAGb15O,EAAK+9O,QAAQ,QAAQ,KACrB,CACErC,cAAc,EACdM,YAAY,EACZxC,QAAS,W,cC1CjBztf,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL9pN,SAAU,CACV,CACEhgB,MAAO,mBACPC,IAAK,iBACL6ld,YAAY,EACZL,aAAa,EACbI,WAAW,EACX7lc,SAAU,CACV,CACEhgB,MAAO,sBACPC,IAAK,uBACL4ld,WAAW,EACXJ,aAAa,EACbxlf,UAAW,QAEb,CACE+/B,MAAO,IACPC,IAAK,mBACL6ld,YAAY,EACZN,cAAc,EACdvlf,UAAW,aAGfuif,kBAAkB,K,cCzBtB3sf,EAAOD,QAAU,SAAUk0Q,GAEvB,IAmBI0lP,EAAS,CACTvvf,UAAW,WACX2if,cAAe,MACf3id,IAAK,cACL6ld,YAAY,EACZ9lc,SAAU,CAVH,CACP//C,UAAW,QACX+/B,MAAO,oFAWX,MAAO,CACH2id,SAAU,CACNjvH,QAAS,aACTs1H,QAAS,uGAEbhpc,SAAU,CACN8pN,EAAKg+O,oBACLh+O,EAAKi+O,qBAlCF,CACP9nf,UAAW,SACX+/B,MAAO,8BAGE,CACT//B,UAAW,SACXmif,SAAU,CACN,CACIpid,MAAO,IAAKC,IAAK,OA4BrBuvd,EACA1lP,EAAKo+O,kB,cCxCjBryf,EAAOD,QAAU,SAASk0Q,GA+CxB,MAAO,CACL04O,kBAAkB,EAClBxoR,QAAS,CAAC,MAAO,OACjB2oR,SA5Ce,CACfjvH,QAAS,iBACTs1H,QAAS,uuDAoBTC,SAAU,i9DAuBV3F,QAAS,OACTtjc,SAAU,CACR8pN,EAAKi4O,QAAQj4O,EAAK49O,iBAAkB,CAACznf,UAAW,SAAUujf,UAAW,IACrE15O,EAAKi4O,QAAQj4O,EAAK69O,kBAAmB,CAAC1nf,UAAW,SAAUujf,UAAW,IACtE,CACEvjf,UAAW,WACX2if,cAAe,8BACfU,QAAS,WACTtjc,SAAU,CAAC8pN,EAAKy+O,sBA1DT,CACXtof,UAAW,SACX+/B,MAAO,MAAOC,IAAK,SA0DjB6pO,EAAK+9O,QAAQ,IAAK,IAAK,CAACrE,UAAW,IACnC,CACEvjf,UAAW,SACX+/B,MAAO,kFACPwjd,UAAW,O,cCjEnB3tf,EAAOD,QAAU,SAASk0Q,GACxB,IAAI2lP,EAAY,CACdzvd,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CACR8pN,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAACtod,MAAO,qBAI1C,MAAO,CACLg6L,QAAS,CAAC,MACV2oR,SACE,wXAMFW,QAAS,OACTtjc,SAAU,CACR,CAEE//C,UAAW,UACX+/B,MAAO,4BAET,CACE//B,UAAW,SACX+/B,MAAO,KAAMC,IAAK,IAClB+f,SAAU,CAAC,CAAChgB,MAAO,QAErB,CACE//B,UAAW,SACX+/B,MAAO,MAAOC,IAAK,OAErB6pO,EAAK+9O,QAAQ,SAAU,UACvB,CACE5nf,UAAW,QACX2if,cAAe,OAAQ3id,IAAK,UAAW6ld,YAAY,EACnD9lc,SAAU,CACR8pN,EAAKy+O,sBACLkH,IAGJ,CACExvf,UAAW,OACX+/B,MAAO,OAAQC,IAAK,OACpBujd,UAAW,IAEb,CACEvjf,UAAW,SACX+/B,MAAO,oBACPggB,SAAU,CAAC8pN,EAAK29O,mBAElB39O,EAAKg+O,oBACLh+O,EAAKi4O,QAAQj4O,EAAK69O,kBAAmB,CAACrE,QAAS,OAC/Cx5O,EAAKo+O,kB,cCtDXryf,EAAOD,QAAU,SAAUk0Q,GACzB,IAAIqgP,EAAW,CACb,QACE,oVAKF,QAAW,aACX,WACE,u3BAqBAuF,EAAU,CACZzvf,UAAW,SACXmif,SAAU,CACR,CAACpid,MAAO,eACR,CAACA,MAAO,QAGR2vd,EAAO,CACT1vf,UAAW,UACXmif,SAAU,CACR,CAACpid,MAAO,IAAMC,IAAK,KACnB,CAACD,MAAO,IAAKC,IAAK,MAEpBqjd,QAAS,MACTtjc,SAAU,CAAC8pN,EAAK29O,mBAEdmI,EAAa,CACf5vd,MAAO,IACPC,IAAK,IACL0id,SAAUwH,EACVnqc,SAAU,CACR2vc,EACA7lP,EAAKg+O,oBACLh+O,EAAKi+O,qBACLj+O,EAAK69O,kBACL79O,EAAK49O,iBACL59O,EAAKo+O,gBAGL2H,EAAW,CACb7vd,MAAO,2CACPwld,cAAc,EACdvld,IAAK,IACLkjd,gBAAgB,EAChBnjc,SAAU,CACR2vc,EACAC,EACA,CACE3vf,UAAW,UACX+/B,MAAO,gDACPwjd,UAAW,KAKjB,MAAO,CACLxpR,QAAS,CAAC,OACVwoR,kBAAkB,EAClBG,SAAUwH,EACVnqc,SAAU,CACR8pN,EAAK+9O,QAAQ,YAAa,cAC1B,CACE5nf,UAAW,OACX+/B,MAAO,gBACPC,IAAK,IACLwld,aAAa,EACbzlc,SAAU,CACR,CACE//C,UAAW,eACX+/B,MAAO,mBAIb8pO,EAAK+9O,QAAQ,OAAQ,KACrB/9O,EAAKg+O,oBACLh+O,EAAKi+O,qBACLj+O,EAAK69O,kBACL79O,EAAK49O,iBAEL,CACE9E,cACE,qFAEF3id,IAAK,IACL+f,SAAU,CACR8pN,EAAK+9O,QAAQ,OAAQ,KACrB/9O,EAAKg+O,oBACLh+O,EAAKi+O,qBACLj+O,EAAK69O,kBACL79O,EAAK49O,iBACLkI,EACAC,IAGJ,CACEjN,cAAe,QACf3id,IAAK,IACLwld,aAAa,EACbzlc,SAAU,CACR,CACE4ic,cAAe,QACf3id,IAAK,IACL+f,SAAU,CAAC6vc,IAEb/lP,EAAK+9O,QAAQ,OAAQ,KACrB/9O,EAAKg+O,oBACLh+O,EAAKi+O,qBACLj+O,EAAK69O,kBACL79O,EAAK49O,iBACL59O,EAAKo+O,gBAKT,CACEjof,UAAW,WACX+/B,MAAO,iCACPyld,aAAa,EACbzlc,SAAU,CACJ,CACE//C,UAAW,QACX+/B,MAAO,eArHR,CACX//B,UAAW,SACX+/B,MAAO,KAAMC,IAAK,KAClBuld,cAAc,EACdM,YAAY,GAoHF4J,IAGR5lP,EAAKo+O,cACLwH,M,cCrJN75f,EAAOD,QAAU,SAASk0Q,GACxB,IAAIqgP,EAAW,CACbnB,QAAU,0vBAUVC,SAAU,40SAqFVv1H,QAAS,8dAQPo8H,EAAkBhmP,EAAK+9O,QAAQ,IAAK,KAEpC2C,EACJ,CACEvqf,UAAW,OACX+/B,MAAO,IAAKC,IAAK,IACjB0id,SAAU,CAAC,eAAgB,6HAC3B3ic,SAAU,CACR,CACEhgB,MAAO,OAAQwjd,UAAW,GAE5B,CACEZ,cAAe,UAAW3id,IAAK,IAC/B0id,SAAU,CAAC,eAAgB,WAC3B3ic,SAAU,CACR,CACE//C,UAAW,cACX+/B,MAAO,IAAKC,IAAK,IACjBqjd,QAAS,SAIfx5O,EAAKg+O,oBACLh+O,EAAKi+O,qBACL+H,IAIAC,EACJ,CACE/vd,MAAO,cACPC,IAAK,KACL0id,SAAU,SACV3ic,SAAU,CACR,CACE//C,UAAW,OACX+/B,MAAO8pO,EAAKs9O,oBACZ5D,UAAW,KAMbwM,EAAe,CACjB,CACE/vf,UAAW,SACX+/B,MAAO,KAAMC,IAAK,KAClBuld,cAAc,EACdM,YAAY,EACZ3C,gBAAgB,EAChBK,UAAW,EACXxjc,SAAU,CACR,CACE//C,UAAW,UACX+/B,MAAO,UAET8pO,EAAKo+O,cACLp+O,EAAKi+O,qBACL+H,EACAC,KAKFE,EACJ,CACEhwf,UAAW,QACX+/B,MAAO8pO,EAAKs9O,oBACZ5D,UAAW,GAGT0M,EAAa,SAAUtN,EAAe3id,EAAK3nB,GAC7C,IAAIrf,EAAO6wQ,EAAKi4O,QACd,CACE9hf,UAAW,WACX2if,cAAeA,EACf3id,IAAKA,EACL6ld,YAAY,EACZ9lc,SAAU,GAAGr+C,OAAOquf,IAEtB13e,GAAY,IAMd,OAJArf,EAAK+mD,SAAS3qD,KAAK46f,GACnBh3f,EAAK+mD,SAAS3qD,KAAKy0Q,EAAKo+O,eACxBjvf,EAAK+mD,SAAS3qD,KAAKy0Q,EAAKi+O,sBACxB9uf,EAAK+mD,SAAS3qD,KAAKy6f,GACZ72f,GAGLk3f,EACJ,CACElwf,UAAW,WACX+/B,MAAO,OAASmqd,EAASlB,SAAS/qf,MAAM,KAAK0D,KAAK,KAAO,QAGvDwuf,EACJ,CACEnwf,UAAW,SACX+/B,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CAAC8pN,EAAK29O,kBAChBjE,UAAW,GAGT6M,EACJ,CAEErwd,MAAO8pO,EAAKs9O,oBAAsB,UAClC3B,aAAa,EACb9C,SAAUwH,EACV3G,UAAW,EACXxjc,SAAU,CACR,CACE4ic,cAAeuH,EAASnB,SAE1BmH,EACA,CACElwf,UAAW,WACX+/B,MAAO8pO,EAAKs9O,oBACZ5D,UAAW,KAKb8M,EACJ,CAEEtwd,MAAO,KACPC,IAAK,KACLujd,UAAW,EACXb,SAAU,CAAEsG,SAAUkB,EAASlB,SAAUv1H,QAASy2H,EAASz2H,SAC3D1zU,SAAU,CACR8pN,EAAKo+O,cACLp+O,EAAKi+O,qBACL+H,EACAK,EACAE,EACAD,EACA,SAMJ,OAFAC,EAAarwc,SAAS3qD,KAAKi7f,GAEpB,CACLt2R,QAAS,CAAC,OACVwoR,kBAAkB,EAClBG,SAAUwH,EACV7G,QAAS,uBACTtjc,SAAU,CACR8pN,EAAKo+O,cACLp+O,EAAKg+O,oBACLh+O,EAAKi+O,qBACL+H,EACAM,EACA5F,EACA,CACEvqf,UAAW,UACX+/B,MAAO,yEAETkwd,EAAW,eAAgB,KAC3BA,EAAW,KAAM,KACjB,CACEtN,cAAe,gBACf3id,IAAK,IAELujd,UAAW,EACXxjc,SAAU,CACR8pN,EAAKi+O,qBACL+H,EACAQ,IAGJ,CAEElO,SAAU,CACR,CAAEpid,MAAO8pO,EAAKs9O,oBAAsB,MAAQt9O,EAAKs9O,qBACjD,CAAEpnd,MAAO8pO,EAAKs9O,oBAAsB,UAEtC5D,UAAW,GAEb6M,EACAN,M,cC9RNl6f,EAAOD,QAAU,SAASk0Q,GACtB,IASIymP,EAAa,CACbzmP,EAAKg+O,oBACLh+O,EAAKi+O,qBACLj+O,EAAK+9O,QAAQ,KAAM,MACnB/9O,EAAKi4O,QAAQj4O,EAAKo+O,cAAe,CAAClod,MAAO,iCAAmC8pO,EAAKw9O,cACjFx9O,EAAKi4O,QAAQj4O,EAAK49O,iBAAkB,CAACpE,QAAS,OAC9Cx5O,EAAKi4O,QAAQj4O,EAAK69O,kBAAmB,CAACrE,QAAS,OAC/C,CACIrjf,UAAW,OACX+/B,MAAO,2BAEX,CACI//B,UAAW,OACX+/B,MAAO,2BAEX,CACI//B,UAAW,OACX+/B,MAAO,YACPC,IAAK,UAET,CACIhgC,UAAW,OACX+/B,MAAO,uBAEX,CACI//B,UAAW,WACX+/B,MAAO,6DACPC,IAAK,sCAET,CACIhgC,UAAW,SACXmif,SAAU,CACN,CACIpid,MAAO,IAAKC,IAAK,OACjBqjd,QAAS,UAMzB,MAAO,CACHtpR,QAAS,CAAC,MAGVwoR,kBAAkB,EAClBQ,QAtDiB,oBAuDjBL,SApDF,4FAqDE3ic,SAAU,CACN,CACI//C,UAAW,OACX+/B,MA1DS,OAIH,CACd//B,UAAW,OACX+/B,MAAO,kBAuDLr+B,OAAO4uf,M,cC/DjB16f,EAAOD,QAAU,SAAUk0Q,GACzB,MAAO,CACL9vC,QAAS,CAAC,WACV2oR,SAAU,kIACV3ic,SAAU,CACR,CACE//C,UAAW,SACX+/B,MAAO,MACPwjd,UAAW,GAEb,CACEvjf,UAAW,OACX+/B,MAAO,aAET,CACEA,MAAO,MAAOC,IAAK,WACnB+f,SAAU,CACR,CACE//C,UAAW,SACX+/B,MAAO,WAIb,CACE//B,UAAW,WACX+/B,MAAO,IAAKC,IAAK,KAEnB6pO,EAAKk+O,kBACL,CACE/nf,UAAW,SACX+/B,MAAO,MAAOC,IAAK,OAErB6pO,EAAK69O,sB,cChCX9xf,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL64O,SAAU,CACRqG,QAEE,igCAaFvxf,KACE,uwCAeFwxf,SAEE,ynLAkEFv1H,QAAS,cAEX4vH,QAAS,IACTtjc,SAAU,CACR8pN,EAAKg+O,oBACLh+O,EAAKi+O,qBACLj+O,EAAKo+O,cACL,CACEjof,UAAW,OACX+/B,MAAO,IAAKC,IAAK,S,cC/GzBpqC,EAAOD,QAAU,SAASk0Q,GA01BxB,MAAO,CACL9vC,QAAS,CAAC,MAAO,OACjBwoR,kBAAkB,EAClBG,SA51BiB,CACjBA,SAAU,2KAGVsG,SAAU,oslCA+lBVv1H,QAAS,+oXA4MTxhM,OAAQ,60EA+CRlyI,SAAU,CACR8pN,EAAKg+O,oBACLh+O,EAAKi+O,qBACLj+O,EAAK49O,iBACL59O,EAAK69O,kBACL79O,EAAKo+O,kB,cCp2BXryf,EAAOD,QAAU,SAASk0Q,GACxB,IAAI0mP,EAAc,CAChBxH,QACE,0RAIFt1H,QACG,sBACHu1H,SACE,2FAEJ,MAAO,CACLjvR,QAAS,CAAC,UACV2oR,SAAU6N,EACVlN,QAAS,KACTtjc,SAAU,CACR8pN,EAAKg+O,oBACLh+O,EAAKi+O,qBACL,CACE9nf,UAAW,SACXmif,SAAU,CACRt4O,EAAK69O,kBACL,CAAC3nd,MAAO,IAAMC,IAAK,YACnB,CAACD,MAAO,IAAKC,IAAK,OAGtB,CACEhgC,UAAW,SACXmif,SAAU,CACR,CAACpid,MAAO8pO,EAAKw9O,YAAc,MAAO9D,UAAW,GAC7C15O,EAAKo+O,gBAGT,CACElod,MAAO,MAET,CACE//B,UAAW,WACX2if,cAAe,OAAQ3id,IAAK,QAAS6ld,YAAY,EACjD9lc,SAAU,CACR8pN,EAAKw+O,WACL,CACErof,UAAW,SACX+/B,MAAO,KAAMC,IAAK,KAClB0id,SAAU6N,EACVlN,QAAS,c,cC9CrBztf,EAAOD,QAAU,SAASk0Q,GACtB,MAAO,CACL64O,SAAU,CACRqG,QACE,0TAKFt1H,QACE,mBAEJ1zU,SAAU,CACR8pN,EAAKk+O,kBACLl+O,EAAK69O,kBACL79O,EAAKo+O,cACL,CACEjof,UAAW,OAAQ+/B,MAAO,kB,cCjBpCnqC,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL04O,kBAAkB,EAClBG,SAAU,CACRqG,QACE,mxCAkBJhpc,SAAU,CACR8pN,EAAKg+O,oBACLh+O,EAAKi+O,qBACLj+O,EAAK49O,iBACL59O,EAAK69O,kBACL79O,EAAKm+O,YACLn+O,EAAKu+O,gB,cC7BXxyf,EAAOD,QAAU,SAASk0Q,GACtB,MAAO,CACH64O,SAAU,CACNjvH,QAAU,kBACVs1H,QACA,wUASJhpc,SAAU,CACN8pN,EAAK+9O,QACD,UACA,OACA,CACIrE,UAAY,EACZxjc,SAAW,CACT,CAEIhgB,MAAO,OAAQwjd,UAAW,GAE9B,CACIvjf,UAAY,SACZ+/B,MAAQ,iBAKtB8pO,EAAKg+O,oBACLh+O,EAAKi+O,qBACL,CACI9nf,UAAW,SACX+/B,MAAO,MAAOC,IAAK,OAEvB,CACIhgC,UAAW,SACX+/B,MAAO,MAAOC,IAAK,OAEvB,CACIhgC,UAAW,SACX+/B,MAAO,OAAQC,IAAK,OACpBujd,UAAW,IAEf15O,EAAK49O,iBACL,CACIznf,UAAW,SACX+/B,MAAO,iBACPggB,SAAU,CACN8pN,EAAK29O,mBAGb39O,EAAK69O,kBACL,CACI1nf,UAAW,OACX+/B,MAAO,kBAAmBC,IAAK,IAC/Bqjd,QAAS,MAEbx5O,EAAKq+O,mBACL,CACIlof,UAAW,QACX2if,cAAe,6BAA8B3id,IAAK,IAClDqjd,QAAS,IACTtjc,SAAU,CACN,CAAC4ic,cAAe,sBAChB94O,EAAKy+O,wBAGbz+O,EAAKo+O,cACL,CACIjof,UAAW,OAAQ+/B,MAAO,cAE9B,CAEI//B,UAAW,SAAU+/B,MAAO,6BAEhC,CAGIA,MAAO,KAAMC,IAAK,MAEtB,CAEIhgC,UAAW,SAAU+/B,MAAO,uBAC5Bwjd,UAAW,IAGnBF,QAAS,W,cC1FjBztf,EAAOD,QACP,SAASk0Q,GACP,MAAO,CACL04O,kBAAkB,EAClBxic,SAAU,CACR,CACE//C,UAAW,OACX+/B,MAAO,gEACPwjd,UAAW,IAGb15O,EAAK+9O,QACH,yBACA,EACA,CACErE,UAAW,IAGf,CACExjd,MAAO,qBACP4jd,OAAQ,CACN3jd,IAAK,MACL2kd,YAAa,SAGjB,CACE3kf,UAAW,MACX+/B,MAAO,SACPggB,SAAU,CACR,CACE//C,UAAW,eACX+/B,MAAO,QAET,CACE//B,UAAW,cACX+/B,MAAO,YAET,CACE//B,UAAW,iBACX+/B,MAAO,cAET,CACEA,MAAO,QACPC,IAAK,QACL+f,SAAU,CACR,CACEhgB,MAAO,cACPC,IAAK,QACLwld,aAAa,EACbtC,gBAAgB,EAChBnjc,SAAU,CACR,CACE//C,UAAW,OACX+/B,MAAO,SAET8pO,EAAK49O,iBACL59O,EAAK69O,kBACL,CACE3nd,MAAO,OACPwjd,UAAW,OAMrB,CACExjd,MAAO,UACPC,IAAK,UACL6ld,YAAY,EACZ9lc,SAAU,CACR,CACEhgB,MAAO,YACPC,IAAK,OACLwld,aAAa,EACbtC,gBAAgB,EAChBnjc,SAAU,CACR,CACE//C,UAAW,OACX+/B,MAAO,OACPwjd,UAAW,GAEb15O,EAAK49O,iBACL59O,EAAK69O,kBACL,CACE3nd,MAAO,OACPwjd,UAAW,SAQzB,CACExjd,MAAO,iBAET,CACEA,MAAO,KACP4jd,OAAQ,CACN3jd,IAAK,IACL2kd,YAAa,a,cCpGvB/uf,EAAOD,QAAU,SAASk0Q,GACxB,IAAI2mP,EAAY,CAAC,eAAgB,0GACjC,MAAO,CACLz2R,QAAS,CAAC,MAAO,WAAY,mBAC7BwoR,kBAAkB,EAClBoC,YAAa,MACb5kc,SAAU,CACV8pN,EAAK+9O,QAAQ,WAAY,WACvB,CACE5nf,UAAW,eACX+/B,MAAO,YAAaC,IAAK,OACzB+f,SAAU,CACR,CACE//C,UAAW,OACX+/B,MAAO,eACP2id,SAAU8N,EACV7M,OAAQ,CACNT,gBAAgB,EAAMK,UAAW,EACjCxjc,SAAU,CACR8pN,EAAK69O,uBAMf,CACE1nf,UAAW,oBACX+/B,MAAO,OAAQC,IAAK,OACpB0id,SAAU8N,O,cC5BlB56f,EAAOD,QAAU,SAASk0Q,GACxB,IAAI+9O,EAAU,CACZzF,SAAU,CACRt4O,EAAK+9O,QAAQ,KAAM,KACnB/9O,EAAK+9O,QACH,KACA,KACA,CACE7nc,SAAU,CAAC,YAMf0wc,EAAS,CACXzwf,UAAW,OACX+/B,MAAO,MAAOC,IAAK,OAGjBuqd,EAAe,CACjBvqf,UAAW,OACX+/B,MAAO,KAAMC,IAAK,KAGhBqud,EAAc,CAChBruf,UAAW,OACX+/B,MAAO,kBACPwjd,UAAW,GAGTmI,EAAO,CACT3rd,MAAO,MAAOC,IAAK,MACnBqjd,QAAS,IACTtjc,SAAU,CACR0wc,EACAlG,EACA,CAACvqf,UAAW,OAAQ+/B,MAAO,0CAC3B8pO,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAACtod,MAAO,kBACtC6nd,IASJ,MAAO,CACL7tR,QAAS,CAAC,MACV2oR,SACE,wOAIF3ic,SAAU,CAIR,CACE4ic,cAAe,SAAU3id,IAAK,QAC9B0id,SAAU,eACV3ic,SAAU,CAAC2rc,EAAM9D,GACjBvE,QAAS,YAEX,CACEtjd,MAAO,eAAgBC,IAAK,IAC5B0id,SAAU,6BACV3ic,SAAU,CAAC2rc,EAAM9D,GACjBvE,QAAS,YAGX,CACErjf,UAAW,QACX+/B,MAAO,8BAA+BC,IAAK,QAC3C0id,SAAU,8BACV3ic,SAAU,CAACsuc,EAAa3C,EAAM9D,IAEhC,CACE5nf,UAAW,QACX+/B,MAAO,0BAA2BC,IAAK,IACvC0id,SAAU,oCACV3ic,SAAU,CAAC0wc,EAAQpC,EAAa3C,EAvCzB,CACX3rd,MAAO,IAAKC,IAAK,IACjB+f,SAAU2rc,EAAK3rc,UAqCmC6nc,IAEhD,CACEjF,cAAe,UAAW3id,IAAK,IAC/B+f,SAAU,CAACsuc,EAAa3C,EAAM9D,IAEhC,CACEjF,cAAe,sBAAuB3id,IAAK,IAC3C+f,SAAU,CAAC8pN,EAAKo+O,cAAeL,IAEjC,CACE7nd,MAAO,gBAAiBC,IAAK,IAC7B0id,SAAU,uEAEV3ic,SAAU,CAACsuc,EAAaxkP,EAAK69O,kBAAmBE,IAElD,CACE5nf,UAAW,OACX+/B,MAAO,kCAAoCC,IAAK,KAKlDywd,EACAlG,EAKA1gP,EAAK69O,kBACL79O,EAAKo+O,cACLoG,EACAxkP,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAACtod,MAAO,mBAEtC6nd,EAEA,CAAC7nd,MAAO,a,cCrHdnqC,EAAOD,QAAU,SAASk0Q,GAMxB,MAAO,CACL9vC,QAAS,CAAC,MACV2oR,SAAU,CACRqG,QAAS,uRAITC,SACE,aACFv1H,QACE,qBAEJ1zU,SAAU,CACR,CAAE//C,UAAW,SACX+/B,MAAO,IAAMC,IAAK,IAClB+f,SAAU,CACR8pN,EAAK29O,iBACL,CAAExnf,UAAW,QACX+/B,MAAO,SAAUC,IAAK,OAExB,CAAEhgC,UAAW,QACX+/B,MAAO,MAAOC,IAAK,UAIzB6pO,EAAK69O,kBACL79O,EAAKg+O,oBACLh+O,EAAKi+O,qBACLj+O,EAAKo+O,cACL,CAAEjof,UAAW,OACX+/B,MAAO,KAAMC,IAAK,KAEpB,CAAEhgC,UAAW,OACX+/B,MAAO,IAAKC,IAAK,IACjB0id,SAAU,CAAC,eAAgB,6BAE7B,CAAE1if,UAAW,OACX+/B,MAAO,UAAWC,IAAK,uBACvBuld,cAAc,EAAMM,YAAY,EAChCtC,UAAW,GAEb,CAAEvjf,UAAW,OACX+/B,MAAO,UAAWC,IAAK,MACvBuld,cAAc,EAAMM,YAAY,GAElC,CAAE7lf,UAAW,OACX+/B,MAAO,QAASC,IAAK,MACrBuld,cAAc,EAAMM,YAAY,GAElC,CAAE7lf,UAAW,QACX2if,cAAe,OAAQ3id,IAAK,MAC5B+f,SAAU,CACR8pN,EAAKw+O,aAGT,CAAErof,UAAW,QACX2if,cAAe,WAAY3id,IAAK,SAChC+f,SAAU,CACR,CAAE//C,UAAW,OACX+/B,MAAO,MAAOC,IAAK,MACnBuld,cAAc,EAAMM,YAAY,GAElC,CAAE7lf,UAAW,OACX+/B,MAAO,SAAUC,IAAK,MACtBuld,cAAc,EAAMM,YAAY,GAElC,CAAE7lf,UAAW,OACX+/B,MAAO,OAAQC,IAAK,MACpBuld,cAAc,EAAMM,YAAY,GAElCh8O,EAAKw+O,YAEP3F,SAAU,CACRqG,QAAS,qBAGb,CAAE/of,UAAW,QACX+/B,MAAO,yBAA0BC,IAAK,SAAW6ld,YAAY,EAC7DnD,SAAU,kBACV3ic,SAAU,CACR,CAAE//C,UAAW,UACX+/B,MAAO,4BACP2id,SAAU,qBACV3ic,SAAU,CACR,CACE//C,UAAW,OACX+/B,MAAO8pO,EAAKq9O,SACZ3D,UAAW,KAIjB15O,EAAKw+O,aAGT,CAAErof,UAAW,WACX2if,cAAe,WAAY3id,IAAK,MAAO6ld,YAAY,EACnDxC,QAAS,MACTtjc,SAAU,CACR8pN,EAAKw+O,cAIXhF,QAAS,S,cC5Gbztf,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL04O,kBAAkB,EAClBQ,QAAS,WACTL,SAAU,2/EACV3ic,SAAU,CACR8pN,EAAKg+O,oBACLh+O,EAAKi+O,qBACLj+O,EAAK69O,kBACL79O,EAAK49O,iBAEL,CAEEznf,UAAW,SACX+/B,MAAO,KAAMC,IAAK,KAClB+f,SAAU,CAAC8pN,EAAK29O,mBAGlB39O,EAAK+9O,QAAQ,IAAK,IAAK,CAACrE,UAAW,IAEnC,CAEEvjf,UAAW,OACX+/B,MAAO,IAAKC,IAAK,IACjB0id,SAAU,CAAC,eAAgB,mNAC3B3ic,SAAU,CACR8pN,EAAKi4O,QAAQj4O,EAAK69O,kBAAmB,CAAC1nf,UAAW,gBACjD6pQ,EAAKm+O,YACLn+O,EAAKo+O,cACLp+O,EAAKg+O,oBACLh+O,EAAKi+O,uBAIT,CAEE9nf,UAAW,SACX+/B,MAAO,gBAGT8pO,EAAKm+O,YACLn+O,EAAKo+O,kB,cCzCXryf,EAAOD,QAAU,SAASk0Q,GACxB,IAAI2mP,EAAY,iLA+BZE,GAPM7mP,EAAK69O,kBAOG,CAChBxE,gBAAgB,EAAMK,UAAW,EACjCb,SAAU,CAACqG,QAAS,KAAMC,SAAUwH,GACpCzwc,SAAU,CACR8pN,EAAK69O,kBAjCa,CACpBrE,QAAS,OACTtjd,MAAO,iBACPyld,aAAa,EACbjC,UAAW,EACXxjc,SAAU,CACR,CACE//C,UAAW,OAAQ+/B,MAAO,mBA4B5B8pO,EAAKm+O,eAIT,MAAO,CACLzF,kBAAkB,EAClBoC,YAAa,MACb5kc,SAAU,CACR8pN,EAAK+9O,QAAQ,WAAY,WACzB,CACE5nf,UAAW,eACX+/B,MAAO,YAAaC,IAAK,OACzB+f,SAAU,CACR,CACE//C,UAAW,OACX+/B,MAAO,gBACP2id,SAAU,CAAC,eAAgB8N,GAC3B7M,OAAQ+M,KAId,CACE1wf,UAAW,oBACX+/B,MAAO,0BAA2BC,IAAK,OACvC0id,SAAU,CAACqG,QAAS,KAAMC,SAAUwH,GACpCzwc,SAAU,CACR8pN,EAAK69O,wB,cChEf9xf,EAAOD,QAAU,SAASk0Q,GACxB,IAAI5pG,EAAU,iBACd,MAAO,CACL85D,QAAS,CAAC,SACVspR,QAAS,MACTtjc,SAAU,CACR,CACEhgB,MAAO,IAAMkgI,EAASjgI,IAAK,IAC3B+f,SAAU,CAAC,CAAC//C,UAAW,SAAU+/B,MAAO,kBAE1C,CACEA,MAAO,iBAAmBkgI,EAAU,IAAKulV,aAAa,EAAMxld,IAAK,IACjE+f,SAAU,CACR,CACE//C,UAAW,SACX+/B,MAAO,IAAKC,IAAK,IACjBuld,cAAc,EAAMM,YAAY,GAElC,CACE9ld,MAAOkgI,GAET,CACEjgK,UAAW,UACX+/B,MAAO,YAIb,CACE//B,UAAW,YACX+/B,MAAO,OAAQC,IAAK,KAAM6ld,YAAY,EACtCxC,QAAS,YACTM,OAAQ,CAAC3jd,IAAK,IAAKujd,UAAW,IAEhC,CACExjd,MAAO,SACP4jd,OAAQ,CAACgB,YAAa,GAAIzB,gBAAgB,Q,cCnClDttf,EAAOD,QAAU,SAASk0Q,GACxB,IAmCI0hP,EAAY,wDAQZtxS,EAAS,CACXl6K,MAAOwrd,EACPhI,UAAW,GAETsG,EAAS,CACX7pf,UAAW,SAAU+/B,MAZA,sBAarBwjd,UAAW,GAETwG,EAASlgP,EAAKi4O,QAAQj4O,EAAK69O,kBAAmB,CAACrE,QAAS,OACxDuE,EAAU/9O,EAAK+9O,QACjB,IACA,IACA,CACErE,UAAW,IAGXmF,EAAU,CACZ1of,UAAW,UACX+/B,MAAO,mCAEL67K,EAAa,CACf77K,MAAO,WAAYC,IAAK,YAEtBwrd,EAAO,CACTxrf,UAAW,UACX+/B,MAAO,MAAQwrd,GAEbE,EAAW5hP,EAAK+9O,QAAQ,SAAU,OAClCv3Y,EAAM,CACRrwG,UAAW,SACX+/B,MAAO,WAAawrd,GAElBG,EAAO,CACT3rd,MAAO,MAAOC,IAAK,OAEjB2rd,EAAO,CACTzI,gBAAgB,EAChBK,UAAW,GAETxrY,EAAO,CACT2qY,SAnFa,CACb,eAEE,okEAiFFK,QAASwI,EACTvrf,UAAW,OAAQ+/B,MAAOwrd,EAC1B5H,OAAQgI,GAENC,EAAmB,CAACF,EAAM3B,EAAQyB,EAAMC,EAAU7D,EAASv3Y,EAAKurG,EAAYiuS,EAAQnB,EAASzuS,GAMjG,OAJAyxS,EAAK3rc,SAAW,CAAC8pN,EAAK+9O,QAAQ,UAAW,IAAK7vY,EAAM4zY,GACpDA,EAAK5rc,SAAW6rc,EAChBhwS,EAAW77J,SAAW6rc,EAEf,CACL7xR,QAAS,CAAC,UACVspR,QAAS,KACTtjc,SAAU,CA3DE,CACZ//C,UAAW,OACX+/B,MAAO,MAAOC,IAAK,KAyDC0rd,EAAM3B,EAAQyB,EAAMC,EAAU7D,EAASv3Y,EAAKurG,EAAYiuS,EAAQnB,M,cClGxF9yf,EAAOD,QAAU,SAASk0Q,GAGxB,MAAO,CACL9vC,QAAS,CAAC,MACVwoR,kBAAkB,EAClBG,SAAU,CAERqG,QAEE,oJASJhpc,SAAU,CACR,CACE//C,UAAW,SACX+/B,MAAO,IAAKC,IAAK,IACjBujd,UAAW,EACXxjc,SAAU,CACR,CACE//C,UAAW,QACX+/B,MA1BU,MA0BYC,IAzBd,SA6Bd,CACEhgC,UAAW,UACX+/B,MAAO,8CACPC,IAAK,KAEP,CAGED,MAAO,mEACPC,IAAK,IACL+f,SAAU,CACR,CAEEhgB,MAAO,UAAWC,IAAK,SAI7B,CACEhgC,UAAW,UACX+/B,MAjDc,MAiDQC,IAhDV,MAiDZ+f,SAAU,CAAC,a,cCnDnBnqD,EAAOD,QAAU,SAASk0Q,GACxB,IAAIkgP,EAAS,CACX/pf,UAAW,SACX+/C,SAAU,CAAC8pN,EAAK29O,kBAChBrF,SAAU,CACR,CACEpid,MAAO,MAAOC,IAAK,MACnBujd,UAAW,IACV,CACDxjd,MAAO,MAAOC,IAAK,MACnBujd,UAAW,IACV,CACDxjd,MAAO,IAAKC,IAAK,KAChB,CACDD,MAAO,IAAKC,IAAK,OAIvB,MAAO,CACL+5L,QAAS,CAAC,QACVwoR,kBAAkB,EAClBc,QAAS,KACTtjc,SAAU,CACR8pN,EAAK+9O,QAAQ,IAAK,KAClB/9O,EAAKk+O,kBACL,CACE/nf,UAAW,UACX+/B,MAAO,UAAWC,IAAK,OAEzB,CACED,MAAO,4BAA6BC,IAAK,IACzCwld,aAAa,EACbzlc,SAAU,CACR,CACE//C,UAAW,OACX+/B,MAAO,qBAET,CACEA,MAAO,IAAKmjd,gBAAgB,EAC5BK,UAAW,EACXxjc,SAAU,CACR8pN,EAAK+9O,QAAQ,IAAK,KAClB/9O,EAAKk+O,kBACL,CACE/nf,UAAW,UACX+/B,MAAO,gCAET,CACE//B,UAAW,WACXmif,SAAU,CACR,CAACpid,MAAO,qBACR,CAACA,MAAO,gBAGZgqd,EACA,CACE/pf,UAAW,SACX+/B,MAAO,0BAET8pO,EAAKm+O,oB,cC3DnBpyf,EAAOD,QAAU,SAASk0Q,GAoDxB,MAAO,CACL04O,kBAAkB,EAClBG,SAhDe,CACfjvH,QAAS,iBACTs1H,QAAS,o6DAuBTC,SAAU,o+DAwBV3F,QAAS,OACTtjc,SAAU,CACR8pN,EAAKi4O,QAAQj4O,EAAK49O,iBAAkB,CAACznf,UAAW,SAAUujf,UAAW,IACrE15O,EAAKi4O,QAAQj4O,EAAK69O,kBAAmB,CAAC1nf,UAAW,SAAUujf,UAAW,IACtE,CACEvjf,UAAW,WACX2if,cAAe,8BACfU,QAAS,WACTtjc,SAAU,CAAC8pN,EAAKy+O,sBA9DT,CACXtof,UAAW,SACX+/B,MAAO,MAAOC,IAAK,SA8DjB6pO,EAAK+9O,QAAQ,IAAK,IAAK,CAACrE,UAAW,IACnC15O,EAAK+9O,QAAQ,YAAa,UAAW,CAACrE,UAAW,KACjD,CACEvjf,UAAW,SACX+/B,MAAO,kFACPwjd,UAAW,O,cCtEnB3tf,EAAOD,QAAU,SAASk0Q,GAExB,IAAIs9O,EAAsB,0CA2+FtBwB,EAAU,CACZ3of,UAAW,SACX+/B,MAAO8pO,EAAKu9O,UACZ7D,UAAW,GAITqF,EAAU,CACZ5of,UAAW,SACXmif,SAAU,CAAC,CAAEpid,MAAO,IAAKC,IAAK,KAAO,CAAED,MAAO,IAAKC,IAAK,OAItD2wd,EAAU,CACZ3wf,UAAW,SACX+/B,MAAO,4DACPwjd,UAAW,GAsBTuF,EAAW,CACb3G,SAAU,CAnBiB,CAC3Bnif,UAAW,UACX+/B,MAAO,KACPC,IAAK,IACLujd,UAAW,EACXxjc,SAAU,CAAC8pN,EAAK89O,mBAAoBgJ,IAIR,CAC5B3wf,UAAW,UACX+/B,MAAO,OACPC,IAAK,OACLujd,UAAW,EACXxjc,SAAU,CAAC8pN,EAAK89O,mBAAoBgJ,MASlCzG,EAAW,CACbnB,QAhhGA,6KAihGAC,SAtDY4H,gwwDAuDZtmZ,MAhWA,mfAiWAmpR,QAlDY,wBAsDVo9H,EAAU,CACZ9wd,MAAO,UAAY8pO,EAAKs9O,oBACxBzE,SAAUwH,EACV3G,UAAW,GAITlza,EAAQ,CACVrwE,UAAW,OACX+/B,MAAO,YA9TP,qrHA8TgCm3D,OAAOr1F,QAAQ,MAAO,KAAO,IAC7Dm+B,IAAK,WACL6ld,YAAY,GAIViL,EAAY,CACd9wf,UAAW,WACX+if,QAASoE,EACTzE,SAAUwH,EACVnqd,MAAOond,EACP5D,UAAW,EACXxjc,SAAU,CAACswB,EAAOwgb,IA8BpB,MAAO,CACL92R,QAAS,CAAC,QACVwoR,kBAAkB,EAClBQ,QAASoE,EACTzE,SAAUwH,EACV7G,QAAS,0BACTtjc,SAAU,CAjBI,CACd//C,UAAW,WACX+/B,MAjBmBgxd,4CAkBnB/wd,IAAK,OACLwld,aAAa,EACbzC,QAASoE,EACTzE,SAAUwH,EACV7G,QAAS,yBACTtjc,SAAU,CArBK,CACf//C,UAAW,QACX+if,QAASoE,EACTzE,SAAU,CACRsG,SAvzBF,k+KAyzBAjpd,MARmBgxd,4CASnB/wd,IAAK,MACLwld,aAAa,EACbK,YAAY,GAYWgL,EAASC,EAAWlI,EAASD,EAASG,IAW3Dz4a,EACAwgb,EACAC,EACAlI,EACAD,EACAG,M,cChmGNlzf,EAAOD,QAAU,SAASk0Q,GACxB,IAEIqgP,EACF,iWAqBE8G,EAAmB,CACrBhxf,UAAW,SACX+/B,MAhBmB,uNAiBnBwjd,UAAW,GAGb,MAAO,CACLxpR,QAAS,CAAC,OACV2oR,SAAUwH,EACV7G,QAAS,QACTtjc,SAAU,CACR8pN,EAAK+9O,QACH,UACA,OACA,CACErE,UAAY,EACZxjc,SAAW,CACT,CAEEhgB,MAAO,OAAQwjd,UAAW,GAE5B,CACEvjf,UAAY,SACZ+/B,MAAQ,iBAKhB8pO,EAAKg+O,oBACLh+O,EAAKi+O,qBACLj+O,EAAK49O,iBACL59O,EAAK69O,kBACL,CACE1nf,UAAW,QACX2if,cAAe,kBAAmB3id,IAAK,QAAS6ld,YAAY,EAC5DnD,SAAU,kBACVW,QAAS,WACTtjc,SAAU,CACR,CAAC4ic,cAAe,sBAChB94O,EAAKy+O,wBAGT,CAGE3F,cAAe,wBACfY,UAAW,GAEb,CACEvjf,UAAW,WACX+/B,MAAO,qHAAoC8pO,EAAKs9O,oBAAsB,UAAW3B,aAAa,EAAMxld,IAAK,QACzG6ld,YAAY,EACZnD,SAAUwH,EACVnqc,SAAU,CACR,CACEhgB,MAAO8pO,EAAKs9O,oBAAsB,UAAW3B,aAAa,EAC1DjC,UAAW,EACXxjc,SAAU,CAAC8pN,EAAKy+O,wBAElB,CACEtof,UAAW,SACX+/B,MAAO,KAAMC,IAAK,KAClB0id,SAAUwH,EACV3G,UAAW,EACXxjc,SAAU,CACR8pN,EAAK49O,iBACL59O,EAAK69O,kBACL79O,EAAKo+O,cACLp+O,EAAKi+O,uBAGTj+O,EAAKg+O,oBACLh+O,EAAKi+O,uBAGTkJ,EACA,CACEhxf,UAAW,OAAQ+/B,MAAO,kB,cCtGlCnqC,EAAOD,QAAU,SAASk0Q,GACxB,IAAIq9O,EAAW,2BACXgD,EAAW,CACbnB,QACE,mOAMFt1H,QACE,yCACFu1H,SACE,2gBASAa,EAAS,CACX7pf,UAAW,SACXmif,SAAU,CACR,CAAEpid,MAAO,mBACT,CAAEA,MAAO,oBACT,CAAEA,MAAO8pO,EAAKw9O,cAEhB9D,UAAW,GAET4G,EAAQ,CACVnqf,UAAW,QACX+/B,MAAO,SAAUC,IAAK,MACtB0id,SAAUwH,EACVnqc,SAAU,IAERkxc,EAAgB,CAClBlxd,MAAO,QAASC,IAAK,GACrB2jd,OAAQ,CACN3jd,IAAK,IAAK4ld,WAAW,EACrB7lc,SAAU,CACR8pN,EAAK29O,iBACL2C,GAEFxF,YAAa,QAGbuM,EAAe,CACjBnxd,MAAO,OAAQC,IAAK,GACpB2jd,OAAQ,CACN3jd,IAAK,IAAK4ld,WAAW,EACrB7lc,SAAU,CACR8pN,EAAK29O,iBACL2C,GAEFxF,YAAa,QAGbyF,EAAkB,CACpBpqf,UAAW,SACX+/B,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CACR8pN,EAAK29O,iBACL2C,IAGJA,EAAMpqc,SAAW,CACf8pN,EAAK49O,iBACL59O,EAAK69O,kBACLuJ,EACAC,EACA9G,EACAP,EACAhgP,EAAKu+O,aAEP,IAAIiC,EAAkBF,EAAMpqc,SAASr+C,OAAO,CAC1CmoQ,EAAKi+O,qBACLj+O,EAAKg+O,sBAGP,MAAO,CACL9tR,QAAS,CAAC,KAAM,OAChB2oR,SAAUwH,EACVnqc,SAAU,CACR,CACE//C,UAAW,OACXujf,UAAW,GACXxjd,MAAO,gCAET,CACE//B,UAAW,OACX+/B,MAAO,MAAOC,IAAK,KAErB6pO,EAAK49O,iBACL59O,EAAK69O,kBACLuJ,EACAC,EACA9G,EACAvgP,EAAKg+O,oBACLh+O,EAAKi+O,qBACL+B,EACA,CACE9pd,MAAO,UAAWwjd,UAAW,EAC7Bxjc,SAAU,CACR,CACEhgB,MAAOmnd,EAAW,QAAS1B,aAAa,EACxCjC,UAAW,EACXxjc,SAAU,CAAC,CAAC//C,UAAW,OAAQ+/B,MAAOmnd,EAAU3D,UAAW,OAIjE,CACExjd,MAAO,IAAM8pO,EAAK09O,eAAiB,kCACnC7E,SAAU,oBACV3ic,SAAU,CACR8pN,EAAKg+O,oBACLh+O,EAAKi+O,qBACLj+O,EAAKu+O,YACL,CACEpof,UAAW,WACX+/B,MAAO,cAAgBmnd,EAAW,UAAW1B,aAAa,EAC1Dxld,IAAK,SACL+f,SAAU,CACR,CACE//C,UAAW,SACXmif,SAAU,CACR,CACEpid,MAAOmnd,GAET,CACEnnd,MAAO,WAET,CACEA,MAAO,KAAMC,IAAK,KAClBuld,cAAc,EAAMM,YAAY,EAChCnD,SAAUwH,EACVnqc,SAAUsqc,OAMpB,CACErqf,UAAW,GACX+/B,MAAO,KACPC,IAAK,MACL2e,MAAM,GAER,CACE5e,MAAO,IAAKC,IAAK,+CACjB2kd,YAAa,MACb5kc,SAAU,CACR,CAAEhgB,MAAO,4BAA6B4e,MAAM,GAC5C,CACE5e,MAAO,sBAAuBC,IAAK,+CAAgD2e,MAAM,EACzFoB,SAAU,CACR,CAAEhgB,MAAO,4BAA6B4e,MAAM,GAC5C,YAMV4kc,UAAW,GAEb,CACEvjf,UAAW,WACX2if,cAAe,WAAY3id,IAAK,KAAM6ld,YAAY,EAClD9lc,SAAU,CACR8pN,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAACtod,MAAOmnd,IACtC,CACElnf,UAAW,SACX+/B,MAAO,KAAMC,IAAK,KAClBuld,cAAc,EACdM,YAAY,EACZ9lc,SAAUsqc,IAGdhH,QAAS,QAEX,CACEtjd,MAAO,UAET8pO,EAAK0+O,aACL,CACEvof,UAAW,QACX2if,cAAe,QAAS3id,IAAK,QAAS6ld,YAAY,EAClDxC,QAAS,WACTtjc,SAAU,CACR,CAAC4ic,cAAe,WAChB94O,EAAKy+O,wBAGT,CACE3F,cAAe,sBAAuB3id,IAAK,KAAM6ld,YAAY,IAGjExC,QAAS,Y,cCtMbztf,EAAOD,QAAU,SAAUk0Q,GACzB,IAKIsnP,EAAc,CAChBnxf,UAAW,SACX+/B,MAAO,KACPC,IAAK,KACL+f,SAAU,CATA,CACVhgB,MAAO,YAAayld,aAAa,EACjCjC,UAAW,EACXxjc,SAAU,CAAC,CAAC//C,UAAW,OAAQ+/B,MAAO,aAOtCwjd,UAAY,GAed,MAAO,CACLxpR,QAAS,CAAC,eACVgpR,QAAS,UACTL,SAAU,CACRqG,QAAS,sVAITt1H,QAAS,cAEX1zU,SAAU,CACR8pN,EAAKk+O,kBACLl+O,EAAK69O,kBAhBY,CACnB1nf,UAAW,SACX+/B,MAAO,gBAXO,CACd//B,UAAW,WACX+/B,MAAO,YACPwjd,UAAW,GAEF,CACTvjf,UAAW,SACX+/B,MAAO,2BAsBLoxd,M,cC1CNv7f,EAAOD,QAAU,SAASk0Q,GACxB,IAAIunP,EAAW,CAAC39H,QAAS,mBACrBpjT,EAAQ,CACVw5L,EAAK69O,kBACL79O,EAAKo+O,eAEHoJ,EAAkB,CACpBrxd,IAAK,IAAKkjd,gBAAgB,EAAM2C,YAAY,EAC5C9lc,SAAUswB,EACVqya,SAAU0O,GAER/F,EAAS,CACXtrd,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CACR,CACE//C,UAAW,OACX+/B,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CAAC8pN,EAAK29O,kBAChBnE,QAAS,OAEXx5O,EAAKi4O,QAAQuP,EAAiB,CAACtxd,MAAO,OAExCsjd,QAAS,OAEPiO,EAAQ,CACVvxd,MAAO,MAAOC,IAAK,MACnB+f,SAAU,CAAC8pN,EAAKi4O,QAAQuP,IACxBhO,QAAS,OAGX,OADAhza,EAAM5uE,OAAO4uE,EAAMv7E,OAAQ,EAAGu2f,EAAQiG,GAC/B,CACLvxc,SAAUswB,EACVqya,SAAU0O,EACV/N,QAAS,S,cCjCbztf,EAAOD,QAAU,SAASk0Q,GAMxB,IAAIqgP,EAAW,CAQbnB,QACE,sPAiBFt1H,QACE,uVAeFu1H,SACE,yhFA2BAuI,EAAmB,uDAGnB9mc,EAAU,CACZs4b,QAASwO,EAAkB7O,SAAUwH,EAAU7G,QAAS,OAsBtDmO,EAAgB,CAClBxxf,UAAW,QACX+/B,MAAO,OAAQC,IAAK,KACpB0id,SAAUwH,GAGRuH,EAAwB,CAC1Bzxf,UAAW,WACX+/B,MAAO,MAAQwxd,GAIbxH,EAAS,CACX/pf,UAAW,SACX+/C,SAAU,CAAC8pN,EAAK29O,iBAAkBgK,EAAeC,GACjDtP,SAAU,CACR,CAAEpid,MAAO,SAAUC,IAAK,SAAUujd,UAAW,IAC7C,CAAExjd,MAAO,OAAQC,IAAK,UAItB0xd,EAAU,CACZ1xf,UAAW,SACX+/C,SAAU,CAAC8pN,EAAK29O,iBAAkBgK,EAAeC,GACjD1xd,MAAO,IAAKC,IAAK,KAGf2xd,EAAY,CACd3xf,UAAW,OACX+/B,MAAO,IAAMwxd,GA4Bf,OAjBA9mc,EAAQ1K,SAAW,CA1DN,CACX//C,UAAW,SAQX+/B,MAAO,qIACPwjd,UAAW,GAGF,CACTvjf,UAAW,SACX+/B,MAAO,8BA8CPgqd,EACA2H,EACAC,EAbY,CACZ3xf,UAAW,UACXmif,SAAU,CACR,CAAEpid,MAAO,KAAMC,IAAK,KAAMujd,UAAW,IACrC,CAAExjd,MAAO,IAAKC,IAAK,OAWrB6pO,EAAKk+O,kBACL,CACE/nf,UAAW,UACX+/B,MACE,+DAEJ,CAACA,MAAO,OAEVyxd,EAAczxc,SAAW0K,EAAQ1K,SAE1B0K,I,cC/JT70D,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL9pN,SAAU,CACR,CACE//C,UAAW,OACX+/B,MAAO,UACPwjd,UAAW,GACXI,OAAQ,CAGN3jd,IAAK,cACL2kd,YAAa,SAOjB5qR,QAAS,CAAC,kB,cClBhBnkO,EAAOD,QAAU,SAASk0Q,GACxB,IAAIqgP,EAAW,CACbnB,QACE,gbAOFC,SACE,kEACFv1H,QACE,mBAcAm+H,EAAQ,CACV5xf,UAAW,SAAU+/B,MAAO8pO,EAAKs9O,oBAAsB,KAIrDgD,EAAQ,CACVnqf,UAAW,QACX+/B,MAAO,OAAQC,IAAK,IAAK+f,SAAU,CAAC8pN,EAAK49O,iBAAkB59O,EAAKo+O,gBAE9D8C,EAAW,CACb/qf,UAAW,WAAY+/B,MAAO,MAAQ8pO,EAAKs9O,qBAEzC4C,EAAS,CACX/pf,UAAW,SACXmif,SAAU,CACR,CACEpid,MAAO,MAAOC,IAAK,MACnB+f,SAAU,CAACgrc,EAAUZ,IAKvB,CACEpqd,MAAO,IAAMC,IAAK,IAClBqjd,QAAS,KACTtjc,SAAU,CAAC8pN,EAAK29O,mBAElB,CACEznd,MAAO,IAAKC,IAAK,IACjBqjd,QAAS,KACTtjc,SAAU,CAAC8pN,EAAK29O,iBAAkBuD,EAAUZ,MAK9C0H,EAAsB,CACxB7xf,UAAW,OAAQ+/B,MAAO,gFAAkF8pO,EAAKs9O,oBAAsB,MAErI2K,EAAa,CACf9xf,UAAW,OAAQ+/B,MAAO,IAAM8pO,EAAKs9O,oBACrCpnc,SAAU,CACR,CACEhgB,MAAO,KAAMC,IAAK,KAClB+f,SAAU,CACR8pN,EAAKi4O,QAAQiI,EAAQ,CAAC/pf,UAAW,oBAuBrC+xf,EAAqB,CACvB/xf,UAAW,SACX+/B,MAhBqB,uNAiBrBwjd,UAAW,GAETyO,EAAwBnoP,EAAK+9O,QAC/B,OAAQ,OACR,CAAE7nc,SAAU,CAAE8pN,EAAKi+O,wBAEjBmK,EAAoB,CACtB9P,SAAU,CACX,CAAEnif,UAAW,OACX+/B,MAAO8pO,EAAKs9O,qBAEd,CAAEpnd,MAAO,KAAMC,IAAK,KAClB+f,SAAU,MAITmyc,EAAqBD,EAIzB,OAHAC,EAAmB/P,SAAS,GAAGpic,SAAW,CAAEkyc,GAC5CA,EAAkB9P,SAAS,GAAGpic,SAAW,CAAEmyc,GAEpC,CACLn4R,QAAS,CAAC,MACV2oR,SAAUwH,EACVnqc,SAAW,CACT8pN,EAAK+9O,QACH,UACA,OACA,CACErE,UAAY,EACZxjc,SAAW,CAAC,CACV//C,UAAY,SACZ+/B,MAAQ,iBAId8pO,EAAKg+O,oBACLmK,EAtHsB,CACxBhyf,UAAW,UACX+/B,MAAO,mCACP4jd,OAAQ,CACN5jc,SAAU,CACR,CACE//C,UAAW,SACX+/B,MAAO,WAiHX6xd,EACAC,EACAC,EACA,CACE9xf,UAAW,WACX2if,cAAe,MAAO3id,IAAK,QAC3Bwld,aAAa,EACbK,YAAY,EACZnD,SAAUwH,EACV7G,QAAS,yCACTE,UAAW,EACXxjc,SAAU,CACR,CACEhgB,MAAO8pO,EAAKs9O,oBAAsB,UAAW3B,aAAa,EAC1DjC,UAAW,EACXxjc,SAAU,CAAC8pN,EAAKy+O,wBAElB,CACEtof,UAAW,OACX+/B,MAAO,IAAKC,IAAK,IAAK0id,SAAU,UAChCa,UAAW,GAEb,CACEvjf,UAAW,SACX+/B,MAAO,KAAMC,IAAK,KAClB2ld,YAAY,EACZjD,SAAUwH,EACV3G,UAAW,EACXxjc,SAAU,CACR,CACEhgB,MAAO,IAAKC,IAAK,SAAUkjd,gBAAgB,EAC3Cnjc,SAAU,CACRkyc,EACApoP,EAAKg+O,oBACLmK,GAEFzO,UAAW,GAEb15O,EAAKg+O,oBACLmK,EACAH,EACAC,EACA/H,EACAlgP,EAAKo+O,gBAGT+J,IAGJ,CACEhyf,UAAW,QACX2if,cAAe,wBAAyB3id,IAAK,WAC7C6ld,YAAY,EACZxC,QAAS,qBACTtjc,SAAU,CACR,CAAC4ic,cAAe,iDAChB94O,EAAKy+O,sBACL,CACEtof,UAAW,OACX+/B,MAAO,IAAKC,IAAK,IAAKuld,cAAc,EAAMM,YAAY,EACtDtC,UAAW,GAEb,CACEvjf,UAAW,OACX+/B,MAAO,UAAWC,IAAK,WAAYuld,cAAc,EAAMK,WAAW,GAEpEiM,EACAC,IAGJ/H,EACA,CACE/pf,UAAW,OACX+/B,MAAO,kBAAmBC,IAAK,IAC/Bqjd,QAAS,MAEX0O,M,cCnNNn8f,EAAOD,QAAU,SAASk0Q,GACxB,IAEIsoP,EAAiB,WACjBC,EAAiB,CACnB3+H,QACE,uGAEFu1H,SACE,yMAGFD,QACE,2hCAkBAsJ,EAAexoP,EAAK+9O,QACtB,UACA,SACA,CACErE,UAAW,IAGX+O,EAAkB,CACpBtyf,UAAW,OACX+/B,MAAO,kBACP4jd,OAAQ,CACN3jd,IAAK,mBACL4ld,WAAW,EACX7lc,SAAU,CAACsyc,KAGXE,EAAc,CAChBvyf,UAAW,OACX+/B,MAAO,wCAELyyd,EAAmB,CACrBxyf,UAAW,SACX+/B,MAAO,sBAEL0yd,EAAa,CACf5oP,EAAKg+O,oBACLh+O,EAAKi+O,qBACLj+O,EAAKi4O,QAAQj4O,EAAKo+O,cAAe,CAAClod,MAAO8pO,EAAKw9O,YAAc,yBAC5Dx9O,EAAKi4O,QAAQj4O,EAAK49O,iBAAkB,CAACpE,QAAS,OAC9Cx5O,EAAKi4O,QAAQj4O,EAAK69O,kBAAmB,CAACrE,QAAS,OAC/C,CACErjf,UAAW,SACX+/B,MAAO,IAAKC,IAAK,KAEnB,CACEmid,SAAU,CACR,CACEpid,MAAO,wBAET,CACEA,MAAO,IAAKC,IAAK,OACjBqjd,QAAS,SAIf,CACErjf,UAAW,OACX+/B,MAAO,SAAUC,IA7EA,mBA8EjBqjd,QAAS,OAEX,CACErjf,UAAW,SACXmif,SAAU,CACR,CACEpid,MAAO,gCACPwjd,UAAW,GAEb,CACExjd,MAAO,iBAIb,CACEA,MAAO,aACPwjd,UAAW,EACXxjc,SAAU,CAACyyc,IAEb,CACExyf,UAAW,QACX2if,cAAe,SACfiD,WAAW,EAAM5ld,IAAK,SACtB+f,SAAU,CACR8pN,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAACtod,MAAO2yd,8CAI5C,MAAO,CACL34R,QAAS,CAAC,KAAM,eAChBwoR,kBAAkB,EAClBQ,QAAS2P,2BACThQ,SAAU0P,EACVryc,SAAU,CACR,CACE//C,UAAW,OACX+/B,MAAOoyd,EACP5O,UAAW,EACXI,OAAQ,CACN3jd,IAAK,6BACL4ld,WAAW,EACXrC,UAAW,EACXxjc,SAAU,CAACsyc,KAGfC,EACAC,EACA,CACEvyf,UAAW,OACX+/B,MAAO,wBACP4jd,OAAQ,CACN3jd,IAAK,4BACL+id,QAAS2P,2BACThQ,SAAU0P,EACVryc,SAAU,CACR,CACE//C,UAAW,OACX+/B,MAAOoyd,EACP5O,UAAW,EACXI,OAAQ,CACN3jd,IAAK,yCACL4ld,WAAW,EACX7lc,SAAU,CAACsyc,KAGfC,EACAC,GACA7wf,OAAO+wf,KAGb,CACEzyf,UAAW,OACX+/B,MAAO,MACPwjd,UAAW,GAEb,CACEvjf,UAAW,OACX+/B,MAAO,MAAOC,IAAI,UAClBujd,UAAW,KAEb7hf,OAAO+wf,M,cC/Jb78f,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL9pN,SAAU,CACR,CACE//C,UAAW,YACX+/B,MAAO,MAAOC,IAAK,KAAM6ld,YAAY,EACrClC,OAAQ,CAAC3jd,IAAK,IAAKujd,UAAW,GAC9BA,UAAW,IAEb,CACEvjf,UAAW,YACX+/B,MAAO,OAAQC,IAAK,KAAM6ld,YAAY,EACtClC,OAAQ,CAAC3jd,IAAK,IAAKujd,UAAW,IAEhC,CACEvjf,UAAW,UACX+/B,MAAO,KAAMC,IAAK,KAEpB6pO,EAAKk+O,sB,cClBXnyf,EAAOD,QAAU,SAAUk0Q,GACzB,MAAO,CACL9pN,SAAU,CACR,CACE//C,UAAW,WACX+/B,MAAO,qBACPC,IAAI,KACJwld,aAAa,EACbK,YAAY,EACZ9lc,SAAW,CACT,CACE//C,UAAW,UACX+/B,MAAO,MAET,CACE//B,UAAW,QACX+/B,MAAO,0BAET,CACE//B,UAAW,SACX+/B,MAAO,MAAOC,IAAK,MACnB2ld,YAAY,EACZ5lc,SAAU,CACR,CACE//C,UAAW,SACX+/B,MAAO,IACPC,IAAK,KAEP,CACEhgC,UAAW,WACX+/B,MAAO,kC,cC9BvBnqC,EAAOD,QAAU,SAASk0Q,GACxB,IACI8oP,EAAkB,uBAIlBC,EAAQ,GAAIC,EAAQ,GAEpBC,EAAc,SAAS16f,GAAK,MAAO,CAErC4H,UAAW,SAAU+/B,MAAO,KAAO3nC,EAAI,MAAQA,IAG7C26f,EAAa,SAASn7f,EAAMmoC,EAAOwjd,GAAa,MAAO,CACzDvjf,UAAWpI,EAAMmoC,MAAOA,EAAOwjd,UAAWA,IAGxCyP,EAAc,CAEhBjzd,MAAO,MAAOC,IAAK,MAAO+f,SAAU8yc,EAAOtP,UAAW,GAIxDsP,EAAMz9f,KACJy0Q,EAAKg+O,oBACLh+O,EAAKi+O,qBACLgL,EAAY,KACZA,EAAY,KACZjpP,EAAKs+O,gBACL,CACEpod,MAAO,oBACP4jd,OAAQ,CAAC3jf,UAAW,SAAUggC,IAAK,WAAY6ld,YAAY,IAE7DkN,EAAW,SAAU,oBACrBC,EACAD,EAAW,WAAY,aAAkB,IACzCA,EAAW,WAAY,cACvBA,EAAW,WAAY,cACvB,CACE/yf,UAAW,YAAa+/B,MAAOmnd,eAAoBlnd,IAAK,IAAKwld,aAAa,EAAMK,YAAY,GAE9F,CACE7lf,UAAW,OACX+/B,MAAO,eAIX,IAAIkzd,EAAsBJ,EAAMnxf,OAAO,CACrCq+B,MAAO,IAAKC,IAAK,IAAK+f,SAAU6yc,IAG9BM,EAAmB,CACrBvQ,cAAe,OAAQO,gBAAgB,EACvCnjc,SAAU,CAAC,CAAC4ic,cAAe,YAAYjhf,OAAOmxf,IAK5CM,EAAY,CACdpzd,MAAO4yd,EAAkB,QAASnN,aAAa,EAAMxld,IAAK,OAC1Dujd,UAAW,EACXxjc,SAAU,CACR,CACE//C,UAAW,YACX+/B,MAAO4yd,EAAiB3yd,IAAK,IAAK6ld,YAAY,EAC9ClC,OAAQ,CACNT,gBAAgB,EAAMG,QAAS,QAC/BE,UAAW,EACXxjc,SAAU8yc,MAMdO,EAAe,CACjBpzf,UAAW,UACX+/B,MAAO,2GACP4jd,OAAQ,CAAC3jd,IAAK,QAAS4ld,WAAW,EAAM7lc,SAAU8yc,EAAOtP,UAAW,IAIlE8P,EAAgB,CAClBrzf,UAAW,WACXmif,SAAU,CAKR,CAACpid,MAAO,gBAA0Bwjd,UAAW,IAC7C,CAACxjd,MAAO,aAEV4jd,OAAQ,CAAC3jd,IAAK,OAAQ4ld,WAAW,EAAM7lc,SAAUkzc,IAG/CK,EAAgB,CAIlBnR,SAAU,CAAC,CACTpid,MAAO,eAAgBC,IAAK,SACzB,CACHD,MAAO4yd,EAAiB3yd,IAAK,MAE/Bwld,aAAa,EACbI,WAAa,EACbvC,QAAS,WACTE,UAAW,EACXxjc,SAAU,CACR8pN,EAAKg+O,oBACLh+O,EAAKi+O,qBACLoL,EACAH,EAAW,UAAY,UACvBA,EAAW,WAAY,cACvBA,EAAW,eAAiBJ,EAAkB,KAAM,GACpDI,EAAW,cAAe,IAAMJ,GAChCI,EAAW,iBAAkB,MAAQJ,EAAiB,GACtDI,EAAW,eAAiB,IAAK,GACjC,CAAC/yf,UAAW,gBAAiB+/B,MAAO,MAAOC,IAAK,OAChD,CAAChgC,UAAW,kBAAmB+/B,MAAO,kCACtC,CAACA,MAAO,MAAOC,IAAK,MAAO+f,SAAUkzc,GACrC,CAAClzd,MAAO,gBAaZ,OATA6yd,EAAMx9f,KACJy0Q,EAAKg+O,oBACLh+O,EAAKi+O,qBACLsL,EACAC,EACAF,EACAG,GAGK,CACL/Q,kBAAkB,EAClBc,QAAS,cACTtjc,SAAU6yc,K,cCxIdh9f,EAAOD,QAAU,SAASk0Q,GACxB,IAAI0pP,EAAgB,gFAEhBC,EAAwB,yEAKxB9K,EAAU,CACZ1of,UAAW,UACX+/B,MAAO,oBAEL8pd,EAAS,CACX7pf,UAAW,SACXmif,SAAU,CACR,CAACpid,MAAOyzd,EAAuBjQ,UAAW,GAC1C,CAACxjd,MAAO,0BACR,CAACA,MAAO,0BACR,CAACA,MAAO,sCACR,CAACA,MAAO,YAAcyzd,EAAwB,KAAOA,EAAuBxzd,IAAK,SAGjF+pd,EAASlgP,EAAKi4O,QAAQj4O,EAAK69O,kBAAmB,CAACrE,QAAS,OACxDuE,EAAU/9O,EAAK+9O,QACjB,IAAK,IACL,CACErE,UAAW,IAGXwH,EAAW,CACbhrd,MAAO,MAAOC,IAAK,OAEjBwod,EAAU,CACZxof,UAAW,SACX+/B,MAAO,OAASwzd,GAEdE,EAAQ,CACV1zd,MAAOwzd,EACPhQ,UAAW,GAETmQ,EAAM,CACR3zd,MAvCW,eA6CT4zd,EAAS,CACX5zc,SAAU,CAAC8pc,EAAQE,EAAQgB,EAAUvC,EALrB,CAChBzod,MAAO,MAAOC,IAAK,MACnB+f,SAAU,CAAC,OAAQ2oc,EAASqB,EAAQF,EAAQ4J,IAGeA,GAC3DtR,SAAU,CACR,CACEpid,MAAO,UAAYC,IAAK,OAE1B,CACED,MAAO,YAAaC,IAAK,MACzB0id,SAAU,CAAC9qf,KAAM,UAEnB,CACEmoC,MAAO,kBAIT6zd,EAAc,CAChBzR,SAAU,CACR,CAACpid,MAAO,IAAOwzd,GACf,CAACxzd,MAAO,KAAQwzd,EAAgB,MAAQA,EAAgB,QAGxD7H,EAAO,CACT3rd,MAAO,UAAWC,IAAK,OAErB2rd,EAAO,CACTzI,gBAAgB,EAChBK,UAAW,GAcb,OAZAmI,EAAK3rc,SAAW,CACd,CACE//C,UAAW,OACXmif,SAAU,CACR,CAACpid,MAAOwzd,GACR,CAACxzd,MA9EM,iBAiFX4rd,GAEFA,EAAK5rc,SAAW,CAAC4zc,EAAQC,EAAalI,EAAMhD,EAASmB,EAAQE,EAAQnC,EAASmD,EAAUvC,EAASkL,EAAKD,GAE/F,CACLpQ,QAAS,KACTtjc,SAAU,CACR8pc,EAtFU,CACZ7pf,UAAW,OACX+/B,MAAO,MAAOC,IAAK,KAsFjB0od,EACAqB,EACAnC,EACA+L,EACAC,EACAlI,EACA+H,M,cClGN79f,EAAOD,QAAU,SAASk0Q,GACxB,IAAIkhP,EAAW,CACb/qf,UAAW,WACXmif,SAAU,CACR,CAACpid,MAAO,uDACR,CAACA,MAAO,eAEVwjd,UAAW,GAET2H,EAAgB,CAClBrhP,EAAKi+O,qBACLj+O,EAAKk+O,kBACLl+O,EAAK+9O,QAAQ,KAAM,KACnB/9O,EAAK+9O,QAAQ,SAAU,MAErBiM,EAAShqP,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CACzClG,SAAU,CACR,CAACpid,MAAO,kCACR,CAACA,MAAO,uBAGR+zd,EAASjqP,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAACtod,MAAO,6BACnD,MAAO,CACLwid,kBAAkB,EAClBG,SAAU,CACRqG,QACE,4/BAYFt1H,QACE,gfAMFu1H,SACE,o4KAqDJjpc,SAAU,CACRgrc,EACA,CACE/qf,UAAW,UACX+/B,MAAO,kBAET,CACE//B,UAAW,WACX2if,cAAe,WAAY3id,IAAK,IAChC+f,SAAU,CACRgrc,EACA+I,EACAjqP,EAAK49O,iBACL59O,EAAK69O,kBACL79O,EAAKq+O,mBACLr+O,EAAKo+O,cACL4L,IAGJ,CACE7zf,UAAW,WACX+/B,MAAO,aAAcC,IAAK,IAC1B0id,SAAU,MACV3ic,SAAU,CACR+zc,EACAD,GAEFtQ,UAAW,GAEb,CACEZ,cAAe,aAAc3id,IAAK,IAClC+f,SAAU,CACRgrc,EACA+I,EACAjqP,EAAK49O,iBACL59O,EAAK69O,kBACL79O,EAAKq+O,mBACLr+O,EAAKo+O,cACL4L,IAGJ,CACE7zf,UAAW,OACXmif,SAAU,CACR,CACEpid,MAAO,wBACPwjd,UAAW,IAEb,CAAExjd,MAAO,QACT,CAAEA,MAAO,UAGb8pO,EAAK49O,iBACL59O,EAAK69O,kBACL79O,EAAKq+O,mBACLr+O,EAAKo+O,cACL4L,GACAnyf,OAAOwpf,GACT7H,QAAS,oB,cC7Jbztf,EAAOD,QAAU,SAASk0Q,GACxB,IAAIqgP,EAAW,CACbnB,QAEE,8WAMFt1H,QAEE,uDAGFu1H,SACE,2DAEA6C,EAAc,8CACdC,EAAQjiP,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAACtod,MAAO8rd,IAC9C1B,EAAQ,CACVnqf,UAAW,QACX+/B,MAAO,MAAOC,IAAK,IACnB0id,SAAUwH,GAER6J,EAAe,CACjB/zf,UAAW,QACX+/B,MAAO,cAAeC,IAAK,qCAC3B0id,SAAUwH,GAERoB,EAAc,CAChBzhP,EAAKq+O,mBACL,CACElof,UAAW,SACX+/B,MAAO,0GACPwjd,UAAW,EACXI,OAAQ,CAAC3jd,IAAK,WAAYujd,UAAW,IAEvC,CACEvjf,UAAW,SACXmif,SAAU,CACR,CACEpid,MAAO,MAAOC,IAAK,MACnB+f,SAAU,CAAC8pN,EAAK29O,mBAElB,CACEznd,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CAAC8pN,EAAK29O,mBAElB,CACEznd,MAAO,MAAOC,IAAK,MACnB+f,SAAU,CAAC8pN,EAAK29O,iBAAkB2C,EAAO4J,IAE3C,CACEh0d,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CAAC8pN,EAAK29O,iBAAkB2C,EAAO4J,IAE3C,CACEh0d,MAAO,KAAMC,IAAK,SAClB6ld,YAAY,KAIlB,CACE7lf,UAAW,SACXmif,SAAU,CACR,CACEpid,MAAO,KAAMC,IAAK,WAClB+f,SAAU,CAACoqc,EAAOtgP,EAAKk+O,oBAEzB,CAGEhod,MAAO,0CAIb,CACEA,MAAO,IAAM8rd,GAEf,CACE9rd,MAAO,KAAMC,IAAK,KAClBuld,cAAc,EAAMM,YAAY,EAChClB,YAAa,eAGjBwF,EAAMpqc,SAAWurc,EAEjB,IAAItB,EAAS,CACXhqf,UAAW,SACX+/B,MAAO,MAAOyld,aAAa,EAG3Bzlc,SAAU,CACR,CACEhgB,MAAO,KAAMC,IAAK,KAClB0id,SAAUwH,EACVnqc,SAAU,CAAC,QAAQr+C,OAAO4pf,MAKhC,MAAO,CACLvxR,QAAS,CAAC,MACV2oR,SAAUwH,EACV7G,QAAS,OACTtjc,SAAUurc,EAAY5pf,OAAO,CAC3BmoQ,EAAK+9O,QAAQ,SAAU,UACvB/9O,EAAKk+O,kBACL,CACE/nf,UAAW,WACX+/C,SAAU,CAAC+rc,EAAO9B,GAClBxE,aAAa,EACbrD,SAAU,CACR,CACEpid,MAAO,IAAM8rd,EAAc,+CAAgD7rd,IAAK,YAElF,CACED,MAAO,IAAM8rd,EAAc,uDAAwD7rd,IAAK,kBAE1F,CACED,MAAO,IAAM8rd,EAAc,uDAAwD7rd,IAAK,sBAI9F,CACEhgC,UAAW,QACX2if,cAAe,QACf3id,IAAK,IACLqjd,QAAS,YACTtjc,SAAU,CACR,CACE4ic,cAAe,UACfO,gBAAgB,EAChBG,QAAS,YACTtjc,SAAU,CAAC+rc,IAEbA,IAGJ,CACE/rd,MAAO8rd,EAAc,IAAK7rd,IAAK,IAC/Bwld,aAAa,EAAMI,WAAW,EAC9BrC,UAAW,Q,cC/InB3tf,EAAOD,QAAU,SAASk0Q,GACxB,IAAIpP,EAAa,4BACjB,MAAO,CAELioP,SACE,ysDAqCF3ic,SAAU,CACR,CACE//C,UAAW,UACX+/B,MAAO,SAET8pO,EAAK+9O,QACH,IAAK,MAAO,CAACrE,UAAW,IAG1B15O,EAAK69O,kBACL,CACE1nf,UAAW,SACXmif,SAAU,CAER,CAAEpid,MAAO,IAAKC,IAAK,aAErBujd,UAAW,GAEb,CACEvjf,UAAW,QACXmif,SAAU,CACR,CAAEpid,MAAO,IAAM06N,GACf,CAAE16N,MAAO,SACT,CAAEA,MAAO,IAAM06N,GACf,CAAE16N,MAAO,QAAU06N,KAGvB,CACEz6P,UAAW,SACXmif,SAAU,CACR,CAAEpid,MAAO,IAAM06N,GACf,CAAE16N,MAAO,SACT,CAAEA,MAAO,WAGb,CACE//B,UAAW,SACXmif,SAAU,CACN,CAAEpid,MAAO,qBACT,CAAEA,MAAO,qDAEbwjd,UAAW,O,cCnFnB3tf,EAAOD,QAAU,SAASk0Q,GAEtB,IAKImqP,EAAc,CACdh0f,UAAW,SACX+/B,MAAO,IACPC,IAAK,IACL+f,SAAU,CATgB,CAC1B//C,UAAW,QACX+/B,MAAO,eAYPk0d,EAAc,CACdj0f,UAAW,SACX+/B,MAAO8pO,EAAKw9O,aAgChB,MAAO,CACHhE,QAAS,IACTtjc,SAAU,CACNi0c,EACA,CACIh0f,UAAW,UACXmif,SAAU,CACNt4O,EAAK+9O,QAAQ,KAAM,KACnB/9O,EAAK+9O,QAAQ,OAAQ,UAG7BqM,EACA,CACIj0f,UAAW,UACXmif,SAAU,CACN,CACIpid,MAAO,2BAEX,CACIA,MAAO,yXAxBP,CAChB//B,UAAW,WACX+/B,MAAO,shIA1BS,CAChB//B,UAAW,UACXmif,SAAU,CACN,CACIpid,MAAO,6DAEX,CACIA,MAAO,+rNAEX,CACIA,MAAO,wBAEX,CACIA,MAAO,2BAEX,CACIA,MAAO,gLAEX,CACIA,MAAO,6DAmCX,CACI//B,UAAW,OACX+/B,MAAO,0E,cC7EvBnqC,EAAOD,QAAU,SAASk0Q,GACxB,IAEIqqP,EAAgB,CAClBn0d,MAHyB,WAGIC,IAFJ,WAGzB+f,SAAU,CAAC,SAET+oc,EAAW,CACbj/O,EAAK+9O,QAAQ,iBAAsC,KACnD/9O,EAAK+9O,QACH,aARuB,WAUvB,CACE7nc,SAAU,CAACm0c,GACX3Q,UAAW,MAIjB,MAAO,CACLR,QAASl5O,EAAKs9O,oBACdzE,SAAU,CACRjvH,QAAS,iBACTs1H,QAAS,0FACTC,SAEE,qlCAeJjpc,SAAU+oc,EAASpnf,OAAO,CACxB,CACE1B,UAAW,WACX2if,cAAe,WAAY3id,IAAK,MAChC+f,SAAU,CACR8pN,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAACtod,MAAO,sDACtC,CACE//B,UAAW,SACX+/B,MAAO,MAAOmjd,gBAAgB,EAC9Bnjc,SAAU+oc,IAEZpnf,OAAOonf,IAEXj/O,EAAKo+O,cACLp+O,EAAK49O,iBACL59O,EAAK69O,kBACL,CACE1nf,UAAW,SACX+/B,MAzDqB,WAyDQC,IAxDR,WAyDrB+f,SAAU,CAACm0c,GACX3Q,UAAW,Q,cC5DnB3tf,EAAOD,QAAU,SAASk0Q,GAExB,IAAIkhP,EAAW,CACb/qf,UAAW,WACXmif,SAAU,CACR,CACEpid,MAAO,SAAW8pO,EAAKs9O,oBAAsB,MAC7Cpnc,SAAU,CAAC8pN,EAAK29O,mBAElB,CACEznd,MAAO,oBAKTkrd,EAAe,CACjBjrf,UAAW,SACX+/B,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CACR8pN,EAAK29O,iBACLuD,IAIAoJ,EAAO,CACTn0f,UAAW,WACX+/B,MAAO,eAAgBC,IAAK,KAC5B0id,SAAU,CACRsG,SACE,kPAKJjpc,SAAU,CACRgrc,IAIAqJ,EAAY,CACdr0d,MAAO,IAAM8pO,EAAKs9O,oBAAsB,cACxC9D,QAAS,MACTmC,aAAa,EACbzlc,SAAU,CACR,CACEhgB,MAAO,IAAM8pO,EAAKs9O,oBAAqBnnd,IAAK,UAC5C6ld,YAAY,KAYdwO,EAAS,CACXr0f,UAAW,UACX+/B,MAAO,WAAYC,IAAK,IACxB+f,SAAU,CAACgrc,IAEb,MAAO,CACLhxR,QAAS,CAAC,KAAM,OAChB2oR,SACE,4HAEFK,QAAS,SACThjc,SAAU,CACR8pN,EAAKk+O,kBACLgD,EACAE,EACAkJ,EACAC,EAvBO,CACTp0f,UAAW,OACX+/B,MAAO,YAAaC,IAAK,IACzB0id,SAAU,CAAC,eAAgB,UAC3BK,QAAS,WAqBPsR,M,cC5ENz+f,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL9vC,QAAS,CAAC,MAAO,MACjBgpR,QAAS,YAAcl5O,EAAKq9O,SAAW,MAWvCxE,SAAU,wm6FA2BV3ic,SAAU,CACR8pN,EAAK+9O,QAAQ,SAAU,SAAU,CAAC7nc,SAAU,CAAC,UAC7C8pN,EAAK69O,kBACL79O,EAAKo+O,kB,cC5CXryf,EAAOD,QAIP,SAASk0Q,GAEP,IACIyqP,EAAY,CACd/Q,UAAW,EACXxjc,SAAU,CACR,CAAEhgB,MAJa,eAQnB,MAAO,CACL2id,SAAU,CACRqG,QACE,0KAEFC,SACE,kwCAiBJ3F,QAAS,0BACTtjc,SAAU,CACR,CACE//C,UAAW,WACX2if,cAAe,WAAY3id,IAAK,IAChC+f,SAAU,CACR8pN,EAAKy+O,sBACL,CACEtof,UAAW,SACXmif,SAAU,CACR,CAACpid,MAAO,MAAOC,IAAK,OACpB,CAACD,MAAO,MAAOC,IAAK,WAK5B,CACEhgC,UAAW,WACX+/B,MAAO,aACPwjd,UAAW,EACXI,OAAQ2Q,GAEV,CACEv0d,MAAO,iCACPwjd,UAAW,GAEb,CACEvjf,UAAW,SACX+/B,MAAO8pO,EAAKw9O,YACZ9D,UAAW,EACXI,OAAQ2Q,GAEV,CACEt0f,UAAW,SACX+/B,MAAO,IAAMC,IAAK,IAClB+f,SAAU,CACR8pN,EAAK29O,iBACL,CAACznd,MAAO,QAEZ,CACEA,MAAO,UACPwjd,UAAW,EACXI,OAAQ2Q,GAEV,CACEt0f,UAAW,SACX+/B,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CACR8pN,EAAK29O,iBACL,CAACznd,MAAO,OAEV4jd,OAAQ2Q,GAEVzqP,EAAK+9O,QAAQ,mBAAoB,oBACjC/9O,EAAK+9O,QAAQ,MAAO,S,cC3F1Bhyf,EAAOD,QAAU,SAASk0Q,GAuWxB,MAAO,CACLk5O,QAAS,2BACTL,SAAU,CACRqG,QAzWW,kEA0WXt1H,QAzWW,4DA0WXu1H,SAxWE,032BAyWF/2T,OARU,iBAUZlyI,SAAU,CACR,CACE//C,UAAW,UACX+/B,MAAO,OACPC,IAAK,OACL+f,SAAU,CAAC,SAEb8pN,EAAK69O,kBACL,CACE1nf,UAAW,SACXujf,UAAW,EACXpB,SAAU,CACR,CAGEpid,MAAO,yDAET,CAEEA,MAAO,wDACPwjd,UAAW,IAEb,CAGExjd,MAAO,+BAET,CAGEA,MAAO,qCAKfsjd,QAAS,O,cClZbztf,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL64O,SACE,o0fA2MFW,QAAS,KACTtjc,SAAU,CACR8pN,EAAKo+O,cACLp+O,EAAK49O,iBACL59O,EAAK69O,kBACL,CACE1nf,UAAW,SACX+/B,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CAAC8pN,EAAK29O,mBAElB,CACEznd,MAAO,uDAET8pO,EAAKg+O,oBACLh+O,EAAKi+O,yB,cC5NXlyf,EAAOD,QAAU,SAASk0Q,GACxB,IA6BI+9O,EAAU/9O,EAAK+9O,QAAQ,IAAK,KAO5B2M,EAAO1qP,EAAKi4O,QAAQj4O,EAAK49O,iBAAkB,CAAClE,UAAW,IACvDwG,EAASlgP,EAAKi4O,QAAQj4O,EAAK69O,kBAAmB,CAACnE,UAAW,IAM9DwG,EAAOhqc,SAAS3qD,KALC,CACf4K,UAAW,QACX+/B,MAAO,wEACPwjd,UAAW,IAuBb,MAAO,CACLxpR,QAAS,CAAC,IAAK,OACf2oR,SAlEa,CACbqG,QACE,odAOF1gX,KAEE,grBAaF2gX,SACE,qIA0CFjpc,SAAU,CAtBM,CAChB//C,UAAW,WACXmif,SAAU,CACR,CAACpid,MAAO,OACR,CAACA,MAAO,KAAMwjd,UAAW,GACzB,CAACxjd,MAAO,KAAMwjd,UAAW,GACzB,CAACxjd,MAAO,SACR,CAACA,MAAO,WAIgB,CAC1B//B,UAAW,WACXmif,SAAU,CACR,CAACpid,MAAO,eACR,CAACA,MAAO,IAAKwjd,UAAW,KAUxBqE,EACA/9O,EAAKi+O,qBAxCK,CACZ9nf,UAAW,SACX+/B,MAAO,4BAwCL8pO,EAAKm+O,YACLuM,EACAxK,EACA,CAAChqd,MAAO,U,cC7EdnqC,EAAOD,QAAU,SAASk0Q,GAExB,MAAO,CACL04O,kBAAkB,EAClBxoR,QAAS,CAAC,QACVgpR,QAAS,OAASl5O,EAAKq9O,SACvBxE,SAAU,CACRr6W,KAEE,6OACF2gX,SACE,opBAYJjpc,SAAU,CACR,CACE//C,UAAW,UACX+/B,MAAO,6zBAqBPC,IAAK,OAEP6pO,EAAK+9O,QAAQ,OAAQ,KACrB/9O,EAAKi+O,qBACLj+O,EAAK69O,kBACL,CACE1nf,UAAW,SACX+/B,MAAO,IACPC,IAAK,WACLujd,UAAW,GAEb,CACEvjf,UAAW,QACX+/B,MAAO,MAAOC,IAAK,MACnBqjd,QAAS,MACTE,UAAW,GAEb,CACEvjf,UAAW,SACXmif,SAAU,CACN,CAACpid,MAAO,eACR,CAACA,MAAO,cAEZwjd,UAAW,GAEb,CACEvjf,UAAW,SACXmif,SAAU,CACN,CAACpid,MAAO,sCACR,CAACA,MAAO,gBACR,CAACA,MAAO,eAEZwjd,UAAW,IAGfF,QAAS,O,cClFbztf,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL64O,SACE,ylBAUF3ic,SAAU,CACR8pN,EAAK+9O,QAAQ,KAAM,S,cCdzBhyf,EAAOD,QAAU,SAASk0Q,GACxB,IAAI2qP,EAAgB,2iDAmBhBrK,EAAQ,CACVnqf,UAAW,QACX+/B,MAAO,UAAWC,IAAK,MACvB0id,SAAU8R,GAERjF,EAAS,CACXxvd,MAAO,MAAOC,IAAK,KAGjBgrd,EAAM,CACR7I,SAAU,CACR,CAACpid,MAAO,QACR,CAACA,MAAO,iDACR,CAACA,MAAO,iBAAkBwjd,UAAW,KAGrCkR,EAAkB,CAAC5qP,EAAK29O,iBAAkB2C,EAAOa,GACjD0J,EAAwB,CAC1B1J,EACAnhP,EAAKk+O,kBACLl+O,EAAK+9O,QACH,UACA,SACA,CACE1E,gBAAgB,IAGpBqM,EACA,CACEvvf,UAAW,SACX+/C,SAAU00c,EACVtS,SAAU,CACR,CACEpid,MAAO,kBAAmBC,IAAK,MAC/Bujd,UAAW,GAEb,CACExjd,MAAO,kBAAmBC,IAAK,MAC/Bujd,UAAW,GAEb,CACExjd,MAAO,kBAAmBC,IAAK,MAC/Bujd,UAAW,GAEb,CACExjd,MAAO,kBAAmBC,IAAK,MAC/Bujd,UAAW,GAEb,CACExjd,MAAO,kBAAmBC,IAAK,MAC/Bujd,UAAW,GAEb,CACExjd,MAAO,UAAWC,IAAK,IACvBujd,UAAW,GAEb,CACExjd,MAAO,IAAMC,IAAK,IAClB+f,SAAU,CAAC8pN,EAAK29O,mBAElB,CACEznd,MAAO,IAAKC,IAAK,KAEnB,CACED,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CAAC8pN,EAAK29O,mBAElB,CACEznd,MAAO,SACPggB,SAAU,GACVwjc,UAAW,GAEb,CACExjd,MAAO,mBACPggB,SAAU,GACVwjc,UAAW,KAIjB,CACEvjf,UAAW,SACX+/B,MAAO,4EACPwjd,UAAW,GAEb,CACExjd,MAAO,WAAa8pO,EAAK09O,eAAiB,gDAC1C7E,SAAU,kCACVa,UAAW,EACXxjc,SAAU,CACR8pN,EAAKk+O,kBACL,CACE/nf,UAAW,SACX+/B,MAAO,8CACPwjd,UAAW,IAEb,CACEvjf,UAAW,SACX+/B,MAAO,WAAYC,IAAK,UACxB+f,SAAU,CAAC8pN,EAAK29O,kBAChBjE,UAAW,KAIjB,CACEvjf,UAAW,WACX2if,cAAe,MAAO3id,IAAK,uBAAwB6ld,YAAY,EAC/DtC,UAAW,EACXxjc,SAAU,CAAC8pN,EAAKw+O,aAElB,CACEtod,MAAO,UACPwjd,UAAW,GAEb,CACExjd,MAAO,aACPC,IAAK,YACL2kd,YAAa,cACb5kc,SAAU,CACR,CACIhgB,MAAO,QACPC,IAAK,IACLhgC,UAAW,cAQrB,OAHAmqf,EAAMpqc,SAAW20c,EACjBnF,EAAOxvc,SAAW20c,EAEX,CACL36R,QAAS,CAAC,KAAM,MAChBgpR,QAAS,UACTL,SAAU8R,EACVz0c,SAAU20c,K,cCzJd9+f,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL86O,YAAa,MACb5kc,SAAU,CACR,CACE//C,UAAW,OACX+/B,MAAO,oBAGT,CACEA,MAAO,oBAAqBC,IAAK,IACjC2kd,YAAa,QAGf,CACE5kd,MAAO,gBACPC,IAAK,WACL2kd,YAAa,OACbY,cAAc,EACdM,YAAY,O,cCnBpBjwf,EAAOD,QAAU,SAASk0Q,GACxB,IAAIggP,EAAS,CACX7pf,UAAW,SAAUujf,UAAW,EAChCpB,SAAU,CACR,CACEpid,MAAO,mBAET8pO,EAAKm+O,cAIT,MAAO,CACLzF,kBAAkB,EAClBG,SAAU,CACRqG,QAAS,qPAKTC,SAAU,uMAGVv1H,QAAS,sCAEX4vH,QAAS,OACTtjc,SAAU,CACR8pN,EAAK+9O,QAAQ,OAAQ,QACrB/9O,EAAK+9O,QACH,IACA,IACA,CACErE,UAAW,IAGf,CACEvjf,UAAW,WACX2if,cAAe,kBAAmB3id,IAAK,UACvCqjd,QAAS,KACTtjc,SAAU,CACR8pN,EAAKy+O,wBAGT,CACEtof,UAAW,QACX2if,cAAe,kBAAmB3id,IAAK,IACvC+f,SAAU,CACR,CACE4ic,cAAe,sBAEjB94O,EAAKy+O,wBAGT,CACEtof,UAAW,WACX+/B,MAAO,sBAET,CACE//B,UAAW,OACX+/B,MAAO,QAASC,IAAK,IACrB0id,SAAU,CAAC,eAAgB,kCAE7B,CACE1if,UAAW,OACX+/B,MAAO,kBAET,CACE4id,cAAe,QAAS3id,IAAK,IAC7B+f,SAAU,CAAC8pN,EAAKy+O,wBAElBz+O,EAAK69O,kBACLmC,M,cCtENj0f,EAAOD,QAAU,SAASk0Q,GACxB,IAAIqgP,EAAW,CACbnB,QAEE,6IAEFt1H,QACE,iBACFu1H,SACE,qRAKA6C,EAAc,2BACd1B,EAAQ,CACVnqf,UAAW,QACX+/B,MAAO,MAAOC,IAAK,IACnB0id,SAAUwH,GAERoB,EAAc,CAChBzhP,EAAKi4O,QAAQj4O,EAAKo+O,cAChB,CAACtE,OAAQ,CAAC3jd,IAAK,WAAYujd,UAAW,KACxC,CACEvjf,UAAW,SACXmif,SAAU,CACR,CACEpid,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CAAC8pN,EAAK29O,mBAElB,CACEznd,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CAAC8pN,EAAK29O,iBAAkB2C,MAIxC,CACEnqf,UAAW,WACX+/B,MAAO,MAAQ8pO,EAAKq9O,UAEtB,CACEnnd,MAAO,IAAM8pO,EAAKq9O,UAEpB,CACEnnd,MAAO8pO,EAAKq9O,SAAW,OAASr9O,EAAKq9O,WAGzCiD,EAAMpqc,SAAWurc,EAEjB,IAAIQ,EAAQjiP,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAACtod,MAAO8rd,IAE9C7B,EAAS,CACXhqf,UAAW,SACX+/B,MAAO,YAAayld,aAAa,EAGjCzlc,SAAU,CAAC,CACThgB,MAAO,KAAMC,IAAK,KAClB0id,SAAUwH,EACVnqc,SAAU,CAAC,QAAQr+C,OAAO4pf,MAI9B,MAAO,CACLvxR,QAAS,CAAC,QACV2oR,SAAUwH,EACV7G,QAAS,OACTtjc,SAAUurc,EAAY5pf,OAAO,CAC3BmoQ,EAAK+9O,QAAQ,KAAM,KACnB,CACE5nf,UAAW,WACX+/B,MAAO,QAAU8rd,EAAc,mCAAyB7rd,IAAK,QAC7Dwld,aAAa,EACbzlc,SAAU,CAAC+rc,EAAO9B,IAEpB,CACEjqd,MAAO,aACPwjd,UAAW,EACXxjc,SAAU,CACR,CACE//C,UAAW,WACX+/B,MA/BM,0BA+BYC,IAAK,QACvBwld,aAAa,EACbzlc,SAAU,CAACiqc,MAIjB,CACEhqf,UAAW,QACX2if,cAAe,QACf3id,IAAK,IACLqjd,QAAS,YACTtjc,SAAU,CACR,CACE4ic,cAAe,UACfO,gBAAgB,EAChBG,QAAS,YACTtjc,SAAU,CAAC+rc,IAEbA,IAGJ,CACE9rf,UAAW,OACX+/B,MAAO8rd,EAAc,IAAK7rd,IAAK,IAC/Bwld,aAAa,EAAMI,WAAW,EAC9BrC,UAAW,Q,cC1GnB3tf,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL04O,kBAAkB,EAClBxic,SAAU,CACR,CACE4ic,cACE,+FACF3id,IAAK,IAAKkjd,gBAAgB,EAC1BR,SAAU,CAERqG,QACE,gkCAaFt1H,QACE,4BAEFu1H,SACE,mxCAaJjpc,SAAU,CACR,CACE//C,UAAW,SACX+/B,MAAO,IAAMC,IAAK,IAClB+f,SAAU,CAAC8pN,EAAK29O,kBAChBjE,UAAW,GAEb,CACEvjf,UAAW,SACX+/B,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CAAC8pN,EAAK29O,kBAChBjE,UAAW,GAEb,CACEvjf,UAAW,SACX+/B,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CAAC8pN,EAAK29O,kBAChBjE,UAAW,GAEb15O,EAAKo+O,cACLp+O,EAAKi+O,uBAGTj+O,EAAKi+O,yB,cChEXlyf,EAAOD,QAAU,SAASk0Q,GACxB,IAAImhP,EAAM,CACRhrf,UAAW,WACXmif,SAAU,CACR,CAACpid,MAAO,SACR,CAACA,MAAO,OAAQC,IAAK,KACrB,CAACD,MAAO,WAAa8pO,EAAKs9O,uBAG1B18b,EAAU,CACZy4b,gBAAgB,EAChBH,QAAS,WACTL,SAAU,CACRjvH,QACE,kJAGJ8vH,UAAW,EACXF,QAAS,KACTtjc,SAAU,CACR8pN,EAAKk+O,kBACL,CACE/nf,UAAW,SACX+/C,SAAU,CAAC8pN,EAAK29O,iBAAkBwD,GAClC7I,SAAU,CACR,CAACpid,MAAO,IAAKC,IAAK,KAClB,CAACD,MAAO,IAAKC,IAAK,OAItB,CACED,MAAO,aAAcC,IAAK,MAAOkjd,gBAAgB,EAAM2C,YAAY,EACnE9lc,SAAU,CAACirc,IAEb,CACEhrf,UAAW,SACX+/C,SAAU,CAAC8pN,EAAK29O,iBAAkBwD,GAClC7I,SAAU,CACR,CAACpid,MAAO,SAAUC,IAAK,UAAW4ld,WAAW,GAE7C,CAAC7ld,MAAO,YAAaC,IAAK,UAAW4ld,WAAW,GAEhD,CAAC7ld,MAAO,sBAER,CAACA,MAAO,wBAIZ,CACE//B,UAAW,SACX+/B,MAAO,+DAGT,CACE//B,UAAW,SACX+/B,MAAO,4BACPwjd,UAAW,GAEbyH,IAIJ,MAAO,CACLjxR,QAAS,CAAC,aACVh6K,SAAU,CACR8pN,EAAKk+O,kBACL,CACEhod,MAAO8pO,EAAKs9O,oBAAsB,QAAS3B,aAAa,EACxDxld,IAAK,IACL+f,SAAU,CACR,CACE//C,UAAW,UACX+/B,MAAO8pO,EAAKs9O,sBAGhB5D,UAAW,GAEb,CACExjd,MAAO8pO,EAAKs9O,oBAAsB,MAAOnnd,IAAK,MAAOwld,aAAa,EAClEzlc,SAAU,CACR,CACE//C,UAAW,YACX+/B,MAAO8pO,EAAKs9O,oBACZxD,OAAQl5b,IAGZ84b,UAAW,IAGfF,QAAS,e,cCzFbztf,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL9vC,QAAS,CAAC,OACV2oR,SAAU,CACRqG,QACE,gXAMFt1H,QACE,uDACFu1H,SACE,4TAMJjpc,SAAU,CAAE,CACR//C,UAAW,OACX+/B,MAAO,MACPC,IAAK,MACLujd,UAAW,IACV,CACDvjf,UAAW,SACX+/B,MAAO,eACPC,IAAK,IACL+f,SAAU,CAAC,CAAChgB,MAAO,QAClB,CACD//B,UAAW,SACX+/B,MAAO,oBACPC,IAAK,OAEP6pO,EAAK69O,kBACL,CACE1nf,UAAW,OACX+/B,MAAO,eACPwjd,UAAW,GACV,CACDvjf,UAAW,SACXujf,UAAW,EACXpB,SAAU,CACR,CAACpid,MAAO,4DACR,CAACA,MAAO,+CACR,CAACA,MAAO,iDACR,CAACA,MAAO,2CAGZ8pO,EAAKk+O,sB,cClDXnyf,EAAOD,QAAU,SAASk0Q,GACxB,IAAI8qP,EAAe,CACjB5L,QACE,8CACFt1H,QACE,yBACFu1H,SACE,2FAGA4L,EAAY,CACd50f,UAAW,QACX+/B,MAAO,OACPC,IAAK,IACL0id,SAAUiS,GAYR5K,EAAS,CACX/pf,UAAW,SACX+/C,SAAU,CAAC60c,GACXzS,SAAU,CACR,CAACpid,MAAO,KAAMC,IAAK,MACnB,CAACD,MAAO,IAAKC,IAAK,OAGlBsrd,EAAc,CAChBzhP,EAAKm+O,YACLn+O,EAAKk+O,kBACLl+O,EAAKi+O,qBACLiC,EAtBU,CACVhqd,MAAO,uBAAwByld,aAAa,EAC5CjC,UAAW,EACXxjc,SAAU,CACR,CACE//C,UAAW,OACX+/B,MAAO,UAoBb,OADA60d,EAAU70c,SAAWurc,EACd,CACLvxR,QAAS,CAAC,SACV2oR,SAAUiS,EACV50c,SAAUurc,K,cC7Cd11f,EAAOD,QAAU,SAASk0Q,GACxB,IAKIgrP,EAAU,CAEZ70f,UAAW,WACX+/B,MAAO,kBAGL+wd,EAAY,CAEd9wf,UAAW,WACX+/B,MAAO,SACPsjd,QAAS,UAGPyR,EAAY,CAEd90f,UAAW,WACX+/B,MAAO,sBA2BHgqd,EAAS,CACX/pf,UAAW,SACXmif,SAAU,CACR,CACEpid,MAAO,IAAKC,IAAK,KAEnB,CACED,MAAO,IAAMC,IAAK,KAEpB,CACED,MAAO,IAAKC,IAAK,MAGrBqjd,QAAS,KACTtjc,SAAU,CA1BE,CAEd//C,UAAW,OACX+/B,MAAO,kBAvCO,CACd//B,UAAW,WACX+/B,MAAO,wbA+DH80d,EACA/D,EACAgE,IAIN,MAAO,CACLvS,kBAAkB,EAClBG,SAAU,CACRqG,QACA,68EACAt1H,QACA,kYAEF1zU,SAAU,CACR8pN,EAAKk+O,kBACLl+O,EAAKi+O,qBACLj+O,EAAK+9O,QACH,IACA,IACA,CACErE,UAAW,IAGf,CACEvjf,UAAW,WACX2if,cAAe,uCAAwC3id,IAAK,KAE9D+pd,EA/DW,CAEb/pf,UAAW,UACX+/B,MAAO,6RA8DL80d,EACA/D,EACAgE,EAzEa,CAEf90f,UAAW,SACX+/B,MAAO,qpBAeK,CAEZ//B,UAAW,QACX+/B,MAAO,cAuDL8pO,EAAKm+O,gB,cCrGXpyf,EAAOD,QAAU,SAASk0Q,GACxB,IAiCIkrP,EAAU,yBACVC,EAAiB,8CACrB,MAAO,CACLj7R,QAAS,CAAC,KAAM,OAAQ,SACxB2oR,SAjCkB,CAClBqG,QACE,guCAsBFt1H,QACE,wCACFu1H,SACE,oFAOFjG,QAASgS,EACT1R,QAAS,KACTtjc,SAAU,CAxCI,CACd//C,UAAW,WACX+/B,MAAO,wEAwCL8pO,EAAKg+O,oBACLh+O,EAAKi+O,qBACLj+O,EAAKo+O,cACLp+O,EAAK69O,kBACL,CACE1nf,UAAW,SACXmif,SAAU,CACR,CACEpid,MAAO,KAAMC,IAAK,IAClBqjd,QAAS,MACTtjc,SAAU,CAAC8pN,EAAK29O,mBAElB,CACEznd,MAAO,IAAMC,IAAK,WAClBqjd,QAAS,iBAIf,CACErjf,UAAW,OACX+/B,MAAO,IACPC,IAAK,IACL+f,SAAU,CACR,CACE//C,UAAW,cACXmif,SAAU,CACR,CAAEpid,MAAO,IAAMC,IAAK,KACpB,CAAED,MAAO,IAAKC,IAAK,SAK3B,CACEhgC,UAAW,QACX+/B,MAAO,IAAMi1d,EAAe/2f,MAAM,KAAK0D,KAAK,KAAO,OAAQq+B,IAAK,QAAS6ld,YAAY,EACrFnD,SAAUsS,EAAgBjS,QAASgS,EACnCh1c,SAAU,CACR8pN,EAAKy+O,wBAGT,CACEvod,MAAO,MAAM8pO,EAAKs9O,oBAClB5D,UAAW,O,cCrFnB3tf,EAAOD,QAAU,SAASk0Q,GAExB,MAAO,CACL9vC,QAAS,CAAC,MACV2oR,SAAU,CACRqG,QACE,sVAOFC,SAEE,qHAGFv1H,QACE,cAEJ4vH,QAAS,UACTN,QAAS,eACThjc,SAAU,CACR,CACE//C,UAAW,UACX+/B,MAAO,yBACPwjd,UAAW,GAEb15O,EAAK+9O,QACH,SACA,SACA,CACE7nc,SAAU,CAAC,UAGf,CACE//C,UAAW,SACX+/B,MAAO,0BAGT,CACE//B,UAAW,OACX+/B,MAAO,iBAET,CACE//B,UAAW,OACX+/B,MAAO,kBACPwjd,UAAW,GAEb,CACExjd,MAAO,qBAAwBwjd,UAAW,GAE5C15O,EAAKi4O,QAAQj4O,EAAK49O,iBAAkB,CAACznf,UAAW,SAAUujf,UAAW,IACrE15O,EAAKi4O,QAAQj4O,EAAK69O,kBAAmB,CAACrE,QAAS,OAC/C,CACErjf,UAAW,SACX+/B,MACE,2HAIFwjd,UAAW,GAEb,CACExjd,MAAO,a,cCjEfnqC,EAAOD,QAAU,SAASk0Q,GACzB,IAAIorP,EAAe,CAClBj1f,UAAW,UACX+/B,MAAO,kCAMR4od,EAAU,CACT3of,UAAW,SACX+/B,MAAO,8BACPwjd,UAAW,GAEZwG,EAASlgP,EAAKi4O,QAAQj4O,EAAK69O,kBAAkB,CAACrE,QAAS,OAgBvD6R,EAAY,CACXl1f,UAAW,WACX2if,cAAe,kBACf3id,IAAK,UACL+f,SAAU,CAbF,CACR//C,UAAW,SACX+/B,MAAO,MAAOC,IAAK,MACnB+f,SAAU,CAAC,OAAQ4oc,EAASoB,EAAQkL,EAnB1B,CACVj1f,UAAW,UACX+/B,MAAO,yBA2BY8pO,EAAKy+O,wBAGzB,MAAO,CACNvuR,QAAS,CAAC,QACV2oR,SAAU,CACTqG,QAAS,+DACTt1H,QAAS,sBACTu1H,SAAU,udAEXjpc,SAAU,CACT8pN,EAAKg+O,oBACLh+O,EAAKi+O,qBACLa,EAhCO,CACR3of,UAAW,OACX0if,SAAU,CAAC,eAAgB,eAC3B3id,MAAO,gBACPC,IAAK,KA8BJ+pd,EACAkL,EAxBU,CACXl1d,MAAO,SACPwjd,UAAW,GAwBV2R,M,cCpDHt/f,EAAOD,QAAU,SAASk0Q,GACxB,IAAIsrP,EAAmB,8lCAQnBC,EAAiBvrP,EAAK+9O,QACxB,IACA,IACA,CACErE,UAAW,IAGX8R,EAAgBxrP,EAAK+9O,QACvB,SACA,SACA,CACErE,UAAW,KAGXwG,EAAS,CACX/pf,UAAW,SACX+/B,MAAO,IAAMC,IAAK,IAClB+f,SAAU,CAAC,CAAChgB,MAAO,QAEjBord,EAAc,CAChBnrf,UAAW,SAAU+/B,MAAO,YAE1B4td,EAAW,CACb3tf,UAAW,WACX2if,cAAe,mDAAoD3id,IAAK,OACxE0id,SAAU,+DACV3ic,SAAU,CACR8pN,EAAKw+O,WACL,CACErof,UAAW,SACX+/B,MAAO,MAAOC,IAAK,MACnB0id,SAAUyS,EACVp1c,SAAU,CAACgqc,EAAQoB,IAErBiK,EAAeC,IAGnB,MAAO,CACL9S,kBAAkB,EAClBQ,QAAS,SACTL,SAAUyS,EACV9R,QAAS,kCACTtjc,SAAU,CACRq1c,EAAeC,EAAexrP,EAAKg+O,oBACnCkC,EAAQoB,EACRthP,EAAKm+O,YACL2F,EACA,CACE3tf,UAAW,QACX+/B,MAAO,eAAgBC,IAAK,OAC5B0id,SAAUyS,EACVp1c,SAAU,CACRgqc,EAAQoB,EACRiK,EAAeC,EAAexrP,EAAKg+O,oBACnC8F,Q,cC/DV/3f,EAAOD,QAAU,SAASk0Q,GACxB,IAAIyrP,EAAmBzrP,EAAK+9O,QAC1B,IACA,IACA,CACE7nc,SAAU,CAAC,UAGf,MAAO,CACL4kc,YAAa,MAAOpB,UAAW,EAC/Bxjc,SAAU,CACR8pN,EAAK+9O,QAAQ,KAAM,KACnB/9O,EAAK+9O,QACH,UACA,IACA,CACErE,UAAW,GACXxjc,SAAU,CACRu1c,KAIN,CACEt1f,UAAW,OACX+/B,MAAO,gCACPwjd,UAAW,IAEb,CACEvjf,UAAW,QACX+/B,MAAO,4DAET,CACE//B,UAAW,WACX+/B,MAAO,8BAET,CACE//B,UAAW,UACX+/B,MAAO,sBAET,CACE//B,UAAW,SACX+/B,MAAO,oBAET8pO,EAAKo+O,kB,cC3CXryf,EAAOD,QAAU,SAASk0Q,GAcxB,MAAO,CACL9vC,QAAS,CAAC,WACVgpR,QAAS,gBACTL,SAAU,CACRsG,SAGE,wDACFD,QACE,myBAgBFt1H,QACE,sDAEJ1zU,SAAU,CACR8pN,EAAKk+O,kBACLl+O,EAAKm+O,YACLn+O,EAAK69O,kBA5CG,CACV1nf,UAAW,WACX+/B,MAAO,sBAEG,CACV//B,UAAW,WACX+/B,MAAO,UAAWC,IAAK,S,cCP3BpqC,EAAOD,QAAU,SAASk0Q,GACxB,IAAI0rP,EAAe1rP,EAAK+9O,QAAQ,KAAM,KA4DlCv3a,EAEF,gxBAiBEmlb,EACFnlb,EAAM6mB,OACAj5F,MAAM,KACNK,KAAK,SAAS2lB,GAAO,OAAOA,EAAIhmB,MAAM,KAAK,MAC3C0D,KAAK,KAuLP8zf,EAzFJ,muIA0FYv+Z,OACAj5F,MAAM,KACNK,KAAK,SAAS2lB,GAAO,OAAOA,EAAIhmB,MAAM,KAAK,MAC3C0D,KAAK,KAEjB,MAAO,CACHo4N,QAAS,CAAC,WAAW,cACrBwoR,kBAAkB,EAClBG,SAAU,CACRqG,QACE2M,stFACF1M,SACE2M,i2MAIJtS,QAAS,2DACTtjc,SAAU,CAER,CACE//C,UAAW,UACXmif,SAAU,CACR,CAAEpid,MAAO,qBACT,CAAEA,MAAO,2CACT,CAAEA,MAAO,2CACT,CAAEA,MAAO,gDACT,CAAEA,MAAO,qCACT,CAAEA,MAAO,4BACT,CAAEA,MAAO,uBACT,CAAEA,MAAO,8BACT,CAAEA,MAAO,0CACT,CAAEA,MAAO,gCACT,CAAEA,MAAO,sCACT,CAAEA,MAAO,iFACT,CAAEA,MAAO,uBACT,CAAEA,MAAO,uBACT,CAAEA,MAAO,+BACT,CAAEA,MAAO,qBACT,CAAEA,MAAO,uBACT,CAAEA,MAAO,8DACT,CAAEA,MAAO,6BACT,CAAEA,MAAO,gDACT,CAAEA,MAAO,oCACT,CAAEA,MAAO,qCACT,CAAEA,MAAO,wCACT,CAAEA,MAAO,6BACT,CAAEA,MAAO,wBACT,CAAEA,MAAO,wCACT,CAAEA,MAAO,2BACT,CAAEA,MAAO,4BACT,CAAEA,MAAO,mCACT,CAAEA,MAAO,+BACT,CAAEA,MAAO,8BACT,CAAEA,MAAO,yCACT,CAAEA,MAAO,qCACT,CAAEA,MAAO,uCACT,CAAEA,MAAO,0CACT,CAAEA,MAAO,wBACT,CAAEA,MAAO,oBACT,CAAEA,MAAO,6BACT,CAAEA,MAAO,mCACT,CAAEA,MAAO,sCACT,CAAEA,MAAO,uGACT,CAAEA,MAAO,sEAIb,CACEA,MAAO,kCAIT,CACEA,MAAO,iBACP2id,SAAU,WAGZ,CACE3id,MAAO,qDAIT,CACEA,MAAO,6MAGT,CAEEA,MAAO,sCACPwjd,UAAW,IAGb,CACExjd,MAAO,iBACPC,IAAK,WACL4ld,WAAW,EACXlD,SAAU,CAERlrf,KAAU,2KAMd,CACEuoC,MAAO,mCACP2id,SAAU,CAERqG,QAAU,SAId,CACEhpd,MAAO,sDACP2id,SAAU,CAERqG,QAAU,qBAMd,CACEpG,cAAe,oCACf3id,IAAK6pO,EAAKw9O,YACVzB,WAAW,EACXlD,SAAU,wCAGZ,CACE1if,UAAW,OACX+/B,MAAO,oCAGT,CACE//B,UAAW,OACX+/B,MAAO,2FAGT,CACEA,MAAO,kGACP2id,SAAU,CACRqG,QAAS,UACTvxf,KAAM,oFAIV,CACEuoC,MAAO,OAAS01d,EAAe,YAIjC,CACE11d,MAAO,OAASy1d,EAAW,QAE7B,CACEz1d,MAAO,OAASy1d,EAAW,eAC3B9S,SAAU,CACRqG,QAAS,OACTvxf,KAAM64E,EAAMxuE,QAAQ,QAAQ,MAGhC,CACE7B,UAAW,OACX+/B,MAAO,OAASy1d,EAAW,QAG7B,CACEx1f,UAAW,SACX+/B,MAAO,IAAMC,IAAK,IAClB+f,SAAU,CAAC,CAAChgB,MAAO,QAErB,CACE//B,UAAW,SACX+/B,MAAO,eAAiBC,IAAK,IAC7B+f,SAAU,CAAC,CAAChgB,MAAO,UACnBwjd,UAAW,IAEb,CACExjd,MA5bU,4CA6bVkjd,gBAAgB,EAChBljc,SAAU,CACR,CAGE4kc,YAAa,CAAC,QAAQ,OAAO,SAAS,MAAM,IAAI,MAAM,OAAO,MAAM,OAAO,OAAO,SAAS,MAAM,QAChGzB,gBAAgB,KAKtB,CACEnjd,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CAAC,CAAChgB,MAAO,QAGrB8pO,EAAKo+O,cAELp+O,EAAKi+O,qBACLyN,EAGA,CACEv1f,UAAW,OACXmif,SAAU,CACR,CAACpid,MAAO,cAAewjd,UAAW,IAClC,CAACxjd,MAAO,WACR,CAACA,MAAO,QAASC,IAAK,OAI1B,CACEhgC,UAAW,SACX+/B,MA7dE,sCA8dFwjd,UAAW,Q,cClevB3tf,EAAOD,QAAU,SAASk0Q,GACxB,IAAIkhP,EAAW,CACbhrd,MAAO,oCAELwqd,EAAe,CACjBvqf,UAAW,OAAQ+/B,MAAO,iBAExBgqd,EAAS,CACX/pf,UAAW,SACX+/C,SAAU,CAAC8pN,EAAK29O,iBAAkB+C,GAClCpI,SAAU,CACR,CACEpid,MAAO,KAAMC,IAAK,KAEpB,CACED,MAAO,KAAOC,IAAK,KAErB6pO,EAAKi4O,QAAQj4O,EAAK49O,iBAAkB,CAACpE,QAAS,OAC9Cx5O,EAAKi4O,QAAQj4O,EAAK69O,kBAAmB,CAACrE,QAAS,SAG/CwG,EAAS,CAAC1H,SAAU,CAACt4O,EAAKq+O,mBAAoBr+O,EAAKo+O,gBACvD,MAAO,CACLluR,QAAS,CAAC,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,QACjDwoR,kBAAkB,EAClBG,SACE,kgBAQF3ic,SAAU,CACR8pN,EAAKk+O,kBACLl+O,EAAK+9O,QAAQ,KAAM,IAAK,CAAC7nc,SAAU,CAACwqc,KACpC1gP,EAAK+9O,QACH,OACA,OACA,CACE7nc,SAAU,CACR,CACE//C,UAAW,SACX+/B,MAAO,iBAKf8pO,EAAK+9O,QACH,uBACA,EACA,CACE1E,gBAAgB,EAChBR,SAAU,kBACVK,QAASl5O,EAAKs9O,sBAGlB,CACEnnf,UAAW,SACX+/B,MAAO,oBAAqBC,IAAK,UACjC+f,SAAU,CACR8pN,EAAK29O,iBACL,CACExnf,UAAW,QACXmif,SAAU,CACR,CAACpid,MAAO,SACR,CAACA,MAAO,OAAQC,IAAK,UAK7Buqd,EACA,CACEvqf,UAAW,UAAW+/B,MAAO,YAE/Bgrd,EACA,CAEEhrd,MAAO,oDAET,CACE//B,UAAW,WACX2if,cAAe,WAAY3id,IAAK,OAAQ6ld,YAAY,EACpDxC,QAAS,YACTtjc,SAAU,CACR8pN,EAAKy+O,sBACL,CACEtof,UAAW,SACX+/B,MAAO,MAAOC,IAAK,MACnB+f,SAAU,CACR,OACAgrc,EACAlhP,EAAKi+O,qBACLiC,EACAF,MAKR,CACE7pf,UAAW,QACX2if,cAAe,kBAAmB3id,IAAK,IAAK6ld,YAAY,EACxDxC,QAAS,WACTtjc,SAAU,CACR,CAAC4ic,cAAe,sBAChB94O,EAAKy+O,wBAGT,CACE3F,cAAe,YAAa3id,IAAK,IACjCqjd,QAAS,QACTtjc,SAAU,CAAC8pN,EAAKy+O,wBAElB,CACE3F,cAAe,MAAO3id,IAAK,IAC3B+f,SAAU,CAAC8pN,EAAKy+O,wBAElB,CACEvod,MAAO,MAETgqd,EACAF,M,cC1HNj0f,EAAOD,QAAU,SAASk0Q,GACtB,MAAO,CACHg9O,mBAAmB,K,cCF3Bjxf,EAAOD,QAAU,SAASk0Q,GAsDxB,MAAO,CACL64O,SAtDa,CACbqG,QACE,iTAKF1gX,KACE,0BACForP,QACE,mBA6CF1zU,SAAU,CAvBI,CACd//C,UAAW,OACX+/B,MAAO,mBACPwjd,UAAW,GAtBkB,CAC7Bvjf,UAAW,SACX+/B,MAAO,MAAOC,IAAK,MACnBujd,UAAW,IAGW,CACtBvjf,UAAW,SACX+/B,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CAAC8pN,EAAK29O,mBAGW,CAC3Bxnf,UAAW,SACX+/B,MAAO,IAAMC,IAAK,IAClB+f,SAAU,CAAC8pN,EAAK29O,kBAChBjE,UAAW,GASK,CAChBxjd,MAAO8pO,EAAKq9O,SAAW,IAAM3D,UAAW,GAsBtC15O,EAAKo+O,cACLp+O,EAAKg+O,oBACLh+O,EAAKi+O,yB,cChEXlyf,EAAOD,QAAU,SAASk0Q,GACxB,IAAIihP,EAAkB,CACpB/qd,MAAO,YACPwjd,UAAW,GAETyH,EAAM,CACRhrf,UAAW,WACXmif,SAAU,CAAC,CAAEpid,MAAO,uBAMlBkrd,EAAe,CACjBjrf,UAAW,SACXmif,SAAU,CAAC,CAAEpid,MAAO,IAAKC,IAAK,KAAO,CAAED,MAAO,KAAMC,IAAK,QACzD+f,SAAU,CACR+qc,EACAE,EACA,CACEhrf,UAAW,WACX+/B,MAAO,UACPC,IAAK,YAuBP41d,EAAa/rP,EAAKi4O,QAAQj4O,EAAK+9O,QAAQ,KAAM,MAAO,CACtDzF,SAAU,CAER,CAAEpid,MAAO,IAAKC,IAAK,KAEnB,CAAED,MAAO,KAAMC,IAAK,OAEtB+f,SAAU,CArBM,CAChB//C,UAAW,SACXmif,SAAU,CAGR,CACEpid,MAAO,2FAGT,CACEA,MAAO,sGAcb,MAAO,CACLg6L,QAAS,CAAC,MACVgpR,QAAS,eACTR,kBAAkB,EAClBG,SAAU,CACRqG,QACE,oXAGFC,SACE,4h6BAgMFc,SACE,2GAEJ/pc,SAAU,CACR+qc,EACAjhP,EAAKm+O,YACLiD,EA7Oc,CAChBjrf,UAAW,SACXmif,SAAU,CAAC,CAAEpid,MAAO,IAAKC,IAAK,KAAO,CAAED,MAAO,KAAMC,IAAK,SAnB7C,CACZhgC,UAAW,UACX+/B,MAAO,yBA+PLird,EACA4K,M,cC3QNhggB,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL64O,SAAU,CACRqG,QAAS,6iBAQTt1H,QAAS,2CACTr8W,MAAO,aACP4xe,SAAU,wtEAyBZjpc,SAAU,CACR8pN,EAAKg+O,oBACLh+O,EAAKi+O,qBACLj+O,EAAK49O,iBACL59O,EAAK69O,kBACL79O,EAAKo+O,kB,cC3CXryf,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL9pN,SAAU,CACR8pN,EAAKo+O,cACL,CACElod,MAAO,6CAA8CC,IAAK,IAC1D6ld,YAAY,GAEd,CACE9ld,MAAO,2BAA4BC,IAAK,IACxC0id,SAAU,wCACVa,UAAW,IAEb,CACExjd,MAAO,iBAAkBC,IAAK,IAC9B+f,SAAU,CAAC8pN,EAAKo+O,eAChB1E,UAAW,IAEb15O,EAAK49O,iBACL59O,EAAK69O,kBACL,CACE1nf,UAAW,SACX+/B,MAAO,MAAOC,IAAK,OACnBuld,cAAc,EAAMM,YAAY,EAChCtC,UAAW,O,cCxBnB3tf,EAAOD,QAAU,SAASk0Q,GAExB,IAgBIgsP,EAAW,CAEb91d,MAAO,KACPC,IAAK,KACLujd,UAAW,GAGTmI,EAAO,CAET3rd,MAAO,KACPC,IAAK,MAGH81d,EAAe,CAEjB91f,UAAW,UACX+/B,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CAAC8pN,EAAK89O,qBAGdoO,EAAkB,CAEpB/1f,UAAW,SACX+/B,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CAAC8pN,EAAK29O,mBAmBdz2b,EAAQ,CA3DD,CAEThxB,MAAO,qBACPwjd,UAAW,GAGH,CAERvjf,UAAW,SACXmif,SAAU,CACR,CAACpid,MAAO,sBACR,CAACA,MAAO,mBAEVwjd,UAAW,GAkDXsS,EARY,CACZ91d,MAAO,MASP2rd,EACAoK,EACAjsP,EAAKi+O,qBACLj+O,EAAK69O,kBACL79O,EAAK49O,iBACLsO,EA3Bc,CAEd/1f,UAAW,SACX+/B,MAAO,eAGQ,CAEf//B,UAAW,SACX+/B,MAAO,UAqBP8pO,EAAKo+O,eAMP,OAHA4N,EAAS91c,SAAWgR,EACpB26b,EAAK3rc,SAAWgR,EAET,CACLhR,SAAUgR,EAAMrvD,OAAO,CACrB,CAACq+B,MAAO,Y,cCnFdnqC,EAAOD,QAAU,SAASk0Q,GAGxB,IAAImsP,EAAM,aAGNC,EAAQ,IAAMD,EAAI,OAAOA,EAAK,eAE9BE,EAAY,+BAEZC,EAAkB,CAEdn2d,IAAKi2d,EACL1S,UAAW,EACXI,OAAQ,CAEN3jf,UAAW,SACXggC,IAAK,IACLujd,UAAW,EACXxjc,SAAU,CACR,CAAEhgB,MAAO,cAKrB,MAAO,CACLwid,kBAAkB,EAClBc,QAAS,KACTtjc,SAAU,CACR8pN,EAAK+9O,QAAQ,YAAa,KAG1B,CACE7nd,MA1Ba,kCA0BSk2d,EACtBzQ,aAAa,EACbzlc,SAAU,CACR,CACE//C,UAAW,OACX+/B,MA/BS,kCAgCT4ld,YAAY,EACZpC,UAAW,IAGfI,OAAQwS,GAGV,CACEp2d,MAAOm2d,EAAYD,EACnBzQ,aAAa,EACbjC,UAAW,EACXxjc,SAAU,CACR,CACE//C,UAAW,OACX+/B,MAAOm2d,EACPvQ,YAAY,EACZpC,UAAW,IAGfI,OAAQwS,GAGV,CACEn2f,UAAW,OACXujf,UAAW,EACXxjd,MAAOm2d,EAAYF,EAAM,S,cChEjCpggB,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL64O,SAAU,CACRqG,QAAS,+DACTC,SAAU,2GAEVv1H,QAAS,cAEX1zU,SAAU,CACR8pN,EAAK69O,kBACL79O,EAAKm+O,YACLn+O,EAAKg+O,oBACL,CACE7nf,UAAW,QACX2if,cAAe,uBAAwB3id,IAAK,KAC5Cqjd,QAAS,KACTtjc,SAAU,CACR8pN,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAC5B1E,OAAQ,CAACT,gBAAgB,EAAM2C,YAAY,OAIjD,CACE7lf,UAAW,WACX2if,cAAe,MACf3id,IAAK,IAAK6ld,YAAY,EACtBnD,SAAU,eAEZ,CACE3id,MAAO,cACPC,IAAK,OAAQ6ld,YAAY,O,cC9BjCjwf,EAAOD,QAAU,SAASk0Q,GAExB,IAqCI+9O,EAAU/9O,EAAK+9O,QAAQ,IAAK,KAI5BkE,EAAQjiP,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAACtod,MAF5B,4BAIXgrd,EAAW,CAAC/qf,UAAW,WAAY+/B,MAAO,8BAE1Cgqd,EAAS,CACX/pf,UAAW,SACX+/C,SAAU,CAAC8pN,EAAK29O,iBAAkBuD,GAClC5I,SAAU,CACR,CAACpid,MAAO,IAAKC,IAAK,KAClB,CAACD,MAAO,IAAKC,IAAK,OAItB,MAAO,CACL+5L,QAAS,CAAC,MACVh6K,SAAU,CACR6nc,EACAmD,EACAhB,EACA,CACEpH,cAAe,QAAS3id,IAAK,QAC7Bqjd,QAAS,IACTtjc,SAAU,CAAC+rc,EAAOlE,IAEpB,CACEjF,cAAe,SAAU3id,IAAK,KAC9B+f,SAAU,CACR,CACE//C,UAAW,UAAW+/B,MAAO8pO,EAAKq9O,SAAUvB,YAAY,KAI9D,CACE5ld,MAAO8pO,EAAKq9O,SAAW,UAAW1B,aAAa,EAC/Cxld,IAAK,KACL+f,SAAU,CACR,CACE//C,UAAW,UACX+/B,MAAO8pO,EAAKq9O,UAEd,CACEnnd,MAAO,KAAMC,IAAK,KAClB0id,SAnFY,CACpBqG,QAEE,2GACFt1H,QAEE,0xDAiBFu1H,SAEE,+sCA2DMzF,UAAW,EACXxjc,SAAU,CACRgqc,EACAnC,EACA,CACE7nd,MAAM,mBACNyld,aAAa,EAAMxld,IAAK,KACxB+f,SAAU,CACR,CACE//C,UAAW,OACX+/B,MAAO8pO,EAAKq9O,YAIlB,CACElnf,UAAW,SACX+/B,MAAO,4EACPwjd,UAAW,GAEbwH,KAINxH,UAAW,O,cC7GnB3tf,EAAOD,QAEP,SAASk0Q,GAYP,MAAO,CACL9vC,QAAS,CAAC,KAAM,OAChB2oR,SAEE,6iCAeF3ic,SAAU,CAER8pN,EAAK+9O,QAAQ,IAAK,IAAK,CAACrE,UAAW,IAEnC,CACEvjf,UAAW,WACX+/B,MAAO,yCACPC,IAAK,MACL6ld,YAAY,EACZL,aAAa,EACbzlc,SAAU,CACR,CACE//C,UAAW,UACX+/B,MAAO,mCACP8ld,YAAY,GAEd,CACE7lf,UAAW,OACX+/B,MAAO,WAGT8pO,EAAKy+O,wBAnDC,CACZtof,UAAW,SACX+/B,MAAO,QAASC,IAAK,IACrBqjd,QAAS,OAEK,CAEdrjf,UAAW,SACX+/B,MAAO,0B,cCXXnqC,EAAOD,QAAU,SAASk0Q,GACxB,IAAIqgP,EAAW,CACbnB,QACE,8LAGFC,SACE,0BACFv1H,QAAS,mBAEPxpQ,EAAS,CACXjqH,UAAW,OAAS+/B,MAAO,kBAEzBoqd,EAAQ,CACVnqf,UAAW,QACX+/B,MAAO,KAAMC,IAAK,KAClB0id,SAAUwH,EACV7G,QAAS,KAEP0G,EAAS,CACX/pf,UAAW,SACX+/C,SAAU,CAAC8pN,EAAK29O,kBAChBrF,SAAU,CACR,CACEpid,MAAO,cAAeC,IAAK,MAC3B+f,SAAU,CAAC8pN,EAAK29O,iBAAkBv9X,GAClCs5X,UAAW,IAEb,CACExjd,MAAO,cAAeC,IAAK,MAC3B+f,SAAU,CAAC8pN,EAAK29O,iBAAkBv9X,GAClCs5X,UAAW,IAEb,CACExjd,MAAO,eAAgBC,IAAK,MAC5B+f,SAAU,CAAC8pN,EAAK29O,iBAAkBv9X,EAAQkgY,IAE5C,CACEpqd,MAAO,eAAgBC,IAAK,MAC5B+f,SAAU,CAAC8pN,EAAK29O,iBAAkBv9X,EAAQkgY,IAE5C,CACEpqd,MAAO,YAAaC,IAAK,IACzBujd,UAAW,IAEb,CACExjd,MAAO,YAAaC,IAAK,IACzBujd,UAAW,IAEb,CACExjd,MAAO,UAAWC,IAAK,KAEzB,CACED,MAAO,UAAWC,IAAK,KAEzB,CACED,MAAO,aAAcC,IAAK,IAC1B+f,SAAU,CAAC8pN,EAAK29O,iBAAkB2C,IAEpC,CACEpqd,MAAO,aAAcC,IAAK,IAC1B+f,SAAU,CAAC8pN,EAAK29O,iBAAkB2C,IAEpCtgP,EAAK49O,iBACL59O,EAAK69O,oBAGLmC,EAAS,CACX7pf,UAAW,SAAUujf,UAAW,EAChCpB,SAAU,CACR,CAACpid,MAAO8pO,EAAKy9O,iBAAmB,WAChC,CAACvnd,MAAO,wBACR,CAACA,MAAO8pO,EAAKw9O,YAAc,aAG3B2C,EAAS,CACXhqf,UAAW,SACX+/B,MAAO,KAAMC,IAAK,KAClB+f,SAAU,CAAC,OAAQkqE,EAAQ4/X,EAAQE,IAGrC,OADAI,EAAMpqc,SAAW,CAACgqc,EAAQF,EAAQ5/X,GAC3B,CACL8vG,QAAS,CAAC,KAAM,MAAO,WACvB2oR,SAAUwH,EACV7G,QAAS,iBACTtjc,SAAU,CACRkqE,EACA4/X,EACAE,EACAlgP,EAAKk+O,kBACL,CACE5F,SAAU,CACR,CAACnif,UAAW,WAAY2if,cAAe,OACvC,CAAC3if,UAAW,QAAS2if,cAAe,UAEtC3id,IAAK,IACLqjd,QAAS,YACTtjc,SAAU,CACR8pN,EAAKy+O,sBACL0B,EACA,CACEjqd,MAAO,KAAMmjd,gBAAgB,EAC7BR,SAAU,UAIhB,CACE1if,UAAW,OACX+/B,MAAO,WAAYC,IAAK,KAE1B,CACED,MAAO,wB,cC/GfnqC,EAAOD,QAAU,SAASk0Q,GAWxB,MAAO,CACP9vC,QAAQ,CAAC,IAAK,OACd2oR,SAZiB,CACjBqG,QACE,wCACFt1H,QACE,QACFu1H,SACE,qtBACFxxf,KACE,8IAKFurf,QAAS,sBACThjc,SAAU,CACV8pN,EAAKg+O,oBACHh+O,EAAK69O,kBACL79O,EAAKo+O,kB,cClBTryf,EAAOD,QAAU,SAASk0Q,GACxB,IAqBIusP,EAAe,4BA4BfC,EAAQ,CACRr2f,UAAW,YACX+/B,MAAO,aACP4jd,OAAQ,CACN3jf,UAAW,SACXggC,IAAKo2d,EACLxQ,WAAW,IAQb0Q,EAAgB,CAClBv2d,MAAOq2d,EAAe,QACtB5Q,aAAa,EACbzlc,SAAU,CACR,CACE//C,UAAW,YACX+/B,MAAOq2d,EACPp2d,IAAK,QACL6ld,YAAY,EACZtC,UAAW,IAGfA,UAAW,GAKTgT,EAAa,CACfx2d,MAAOq2d,EAAe,QAASp2d,IAAK,IACpCwld,aAAa,EACbjC,UAAW,EACXxjc,SAAU,CACR8pN,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAACtod,MAAOq2d,MAI1C,MAAO,CACLr8R,QAAS,CAAC,MACVwoR,kBAAkB,EAClBG,SA5Fa,CACXqG,QACE,uNAGFt1H,QACE,yCACFu1H,SACE,8sBAqFJjpc,SAAU,CACR,CACE//C,UAAW,OACX+/B,MAAO,gCAET8pO,EAAK49O,iBACL59O,EAAK69O,kBACL,CACE1nf,UAAW,SACX+/B,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CACR8pN,EAAK29O,iBACL,CACExnf,UAAW,QACX+/B,MAAO,SAAUC,IAAK,SAI5B6pO,EAAKg+O,oBACLh+O,EAAKi+O,qBACL,CACE9nf,UAAW,SACXmif,SAAU,CACR,CAAEpid,MAAO,mBACT,CAAEA,MAAO,oBACT,CAAEA,MAAO8pO,EAAKw9O,cAEhB9D,UAAW,GAEb,CACExjd,MAAO,IAAM8pO,EAAK09O,eAAiB,kCACnC7E,SAAU,oBACV3ic,SAAU,CACR8pN,EAAKg+O,oBACLh+O,EAAKi+O,qBACLj+O,EAAKu+O,YACL,CACErod,MAAO,IAAKC,IAAK,aACjBujd,UAAW,EACXoB,YAAa,QAGjBpB,UAAW,GAlGJ,CACTvjf,UAAW,UACX+/B,MAAO,eACP4jd,OAAQ,CACN3jf,UAAW,SACXggC,IAAK,0BACL4ld,WAAW,IAlBF,CACX5lf,UAAW,UACX+/B,MAAO,iBACP4jd,OAAQ,CACN3jf,UAAW,SACXggC,IAAK,sBACL4ld,WAAW,IA4Gb,CACE5lf,UAAW,WACX2if,cAAe,WAAY3id,IAAK,KAAM6ld,YAAY,EAClD9lc,SAAU,CACR8pN,EAAKi4O,QAAQj4O,EAAKw+O,WAAY,CAACtod,MAAO,6BACtC,CACE//B,UAAW,SACX+/B,MAAO,KAAMC,IAAK,KAClBuld,cAAc,EACdM,YAAY,EACZ9lc,SAAU,CACR8pN,EAAKg+O,oBACLh+O,EAAKi+O,wBAIXzE,QAAS,QAEX,CACEtjd,MAAO,MAAQ8pO,EAAKq9O,SAAU3D,UAAW,GAE3C8S,EACAC,EACAC,GAEFlT,QAAS,O,cCrKbztf,EAAOD,QAAU,SAASk0Q,GACxB,IAAIq9O,EAAW,wCAEf,MAAO,CACLnnc,SAAU,CACR8pN,EAAKk+O,kBACL,CACEhod,MAAOmnd,EACPnE,QAASmE,EACTxE,SAAU,CACRqG,QACE,iLAGFt1H,QACE,6FAGJ8vH,UAAW,GAEb,CAEEvjf,UAAW,SACX+/B,MAAO,4BACPwjd,UAAW,GAEb,CAEEvjf,UAAW,SACX+/B,MAAO,+BACPwjd,UAAW,GAEb,CAEEvjf,UAAW,SACX+/B,MAAO,0BACPwjd,UAAW,GAEb,CAEEvjf,UAAW,SACX+/B,MAAO,4CACPwjd,UAAW,GAEb,CAEEvjf,UAAW,SACX+/B,MAAO,mCACPwjd,UAAW,GAGb,CAEExjd,MAAO,IACPC,IAAK,IACLujd,UAAW,GAGb,CACEvjf,UAAW,SACX+/C,SAAU,CAAC8pN,EAAK29O,kBAChBrF,SAAU,CACR,CAACpid,MAAO,IAAKC,IAAK,KAClB,CAACD,MAAO,IAAKC,IAAK,W,cC/D5BpqC,EAAOD,QAAU,SAASk0Q,GAcxB,IAAI2sP,EAAW,0BACXC,EAAkB,0BAKlBC,EAAc,IAAiB,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,KAAM,KAAM,MAAO,MAjB5Fp4f,KAAI,SAASswE,GACZ,OAAOA,EACJ3wE,MAAM,IACNK,KAAI,SAASugE,GACZ,MAAO,KAAOA,KAEfl9D,KAAK,OAETA,KAAK,KASgG,WACpGg1f,EAAqB,OAASD,EAAc,OAE5CxM,EAAW,CACbnB,QACE,8SAIFC,SACE,+FACFv1H,QACE,cAGAmjI,EAAY,2HAKZ5O,EAAc,CAChBhof,UAAW,SACXujf,UAAW,EACXpB,SAAU,CACR,CACEpid,MAAO62d,GAET,CACE72d,MAAO,SAAW62d,EAAY,SAKhCC,EAAgB,CAClB72f,UAAW,WACXujf,UAAW,EACXxjd,MAAO22d,GAELI,EAAsB,CACxB,CACE92f,UAAW,aACXujf,UAAW,EACXxjd,MAAOy2d,GAETK,EACA7O,GAGE+O,EAAyB,CAC3BltP,EAAK69O,kBACLmP,EACA,CACE72f,UAAW,SACX+/B,MAAO,MAAQ02d,EAAiBjR,aAAa,EAC7Cxld,IAAK,IACL+f,SAAU,CACR,CACE//C,UAAW,aACX+/B,MAAO02d,EACPlT,UAAW,MAMfyT,EAAkB,CACpB,CACEh3f,UAAW,SACX+/B,MAAO,MAAQ02d,EAAiBjR,aAAa,EAC7Cxld,IAAK,IACLujd,UAAW,EACXxjc,SAAU,CACR,CACE//C,UAAW,aACX+/B,MAAO02d,EACPlT,UAAW,MAuBf0T,EAAsB,CACxBj3f,UAAW,WACXujf,UAAW,EACXb,SAAUwH,EACV/H,SAAU,CACR,CACEpid,MAAO,qBAAuBy2d,EAAW,UACzCx2d,IAAK,SACLwld,aAAa,EACbjC,UAAW,EACXxjc,SAAU,CACR,CACE//C,UAAW,SACXmif,SAAU,CACR,CACEpid,MAAOy2d,GAET,CACEz2d,MArHCy2d,mMAuHH,CACEz2d,MAAO,eAMjB,CACEA,MAAO,8BACPC,IAAK,QACLwld,aAAa,EACbjC,UAAW,EACXxjc,SAAU,CACR,CACE//C,UAAW,SACXujf,UAAW,EACXpB,SAAU,CArDF,CAChBpid,MAAOy2d,EACPx2d,IAAK,cACLujd,UAAW,EACXxjc,SAAU,CACR82c,EACA,CACE72f,UAAW,SACX+/B,MAAO,IACPC,IAAK,UACLwld,aAAa,EACbjC,UAAW,EACXxjc,SAAUi3c,SA+CZ,CACEj3d,MAAO,YAAcy2d,EAAW,eAItCO,EAAuB3hgB,KAAK6hgB,GAE5B,IAAIC,EAAmB,CACrBl3f,UAAW,cACX+/B,MAAO02d,EAAkB,MACzBz2d,IAAK,MACLqjd,QAAS,MACTX,SAAUwH,EACVnqc,SAAU,CACR8pN,EAAK69O,kBACLmP,EACA,CACE72f,UAAW,SACX+/B,MAAO,MAAQy2d,KAKjBW,EAA2B,CAC7Bn3f,UAAW,gBACX+/B,MAAO,MACPyld,aAAa,EACb9C,SAAUwH,EACVlqd,IAAK,KACLujd,UAAW,EACXxjc,SAAU,CACRm3c,EACAL,EACA,CACEtT,UAAW,EACXvjf,UAAW,cACX+/B,MAAO02d,KAKTW,EAAqB,CACvBp3f,UAAW,gBACX0if,SAAUwH,EACV1E,aAAa,EACbrD,SAAU,CACR,CACEpid,MAAO,OAAS02d,EAAkB,QAAUD,GAE9C,CACEz2d,MAAO,OAAS02d,EAAkB,WAClCz2d,IAAK,MACLwld,aAAa,EACbzlc,SAAU,CACRk3c,EACA,CACEl3d,MAAO,MACPC,IAAK,MACL2e,MAAM,IAERj9C,OAAOq1f,IAEX,CACEh3d,MAAO,OAAS02d,EAAkB,SAClCz2d,IAAK,MAGT+f,SAAUg3c,GAKZ,OAFAC,EAAgB5hgB,KAAKgigB,GAEd,CACLr9R,QAAS,CAAC,MACV2oR,SAAUwH,EACV7G,QAAS,sBACTtjc,SAAU,CACR8pN,EAAK+9O,QAAQ,OAAQ,OAAQ,CAAEvE,QAAS,kBACxC,CACErjf,UAAW,YACX+/B,MAAO,qBACPsjd,QAAS,MACTE,UAAW,GAEb15O,EAAK69O,kBACL,CACE1nf,UAAW,UACX+/B,MAAO,SACPwjd,UAAW,GAEb,CACEvjf,UAAW,UACX+/B,MAAO,SACPC,IAAK,SACLujd,UAAY,EACZxjc,SAAU+2c,GAEZ,CACE92f,UAAW,UACX+/B,MAAO,MACPC,IAAK,MACLujd,UAAW,EACXxjc,SAAU+2c,GAEZI,EACA,CACEl3f,UAAW,WACX+/B,MAAO42d,EACPtT,QAAS,UACTE,UAAW,GAEbyE,EACAn+O,EAAKg+O,oBACLsP,EACAF,EACA,CACEj3f,UAAW,aACX+/B,MAAO,gBAAkBy2d,EAAW,OAASC,EAAkB,aAC/Dz2d,IAAK,IACLwld,aAAa,EACb9C,SAAUwH,EACV3G,UAAW,EACXxjc,SAAU,CACR,CACE//C,UAAW,SACXujf,UAAW,EACXxjd,MAAO02d,GAET,CACE12d,MAAO,IACPC,IAAK,IACL2e,MAAM,IAERj9C,OAAOq1f,IAEXK,M,cCvSNxhgB,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL64O,SACE,klCAcFW,QAAS,KACTtjc,SAAU,CACR8pN,EAAKk+O,kBACLl+O,EAAKo+O,cACLp+O,EAAK49O,iBACL59O,EAAK69O,sB,cCtBX9xf,EAAOD,QAAU,SAASk0Q,GACxB,IAAIwtP,EAAa,wBAEbC,EAAW,CACbt3f,UAAW,YACX+/B,MAAO,cAAeC,IAAK,OAAQ6ld,YAAY,EAC/ClC,OAAQ,CACN3jd,IAAK,IACLujd,UAAW,EACXxjc,SAAU,CACR,CACE//C,UAAW,WACX+/B,MAAO,iBAET,CACE//B,UAAW,UACX+/B,MAAO,mBAMf,MAAO,CACLg6L,QAAS,CAAC,QAAS,aACnBwoR,kBAAkB,EAClBG,SAAU,SACV3ic,SAAU,CAER,CACEhgB,MAAO,UAAYs3d,EACnBr3d,IAAK,IACL0id,SAAU,QACV3ic,SAAU,CACRu3c,EACAztP,EAAKk+O,oBAKT,CACEhod,MAAO,oBAAsBs3d,EAC7Br3d,IAAK,IACL0id,SAAU,+DACVW,QAAS,KACTtjc,SAAU,CACR,OACAu3c,EACAztP,EAAKk+O,oBAKT,CACEhod,MAAO,IAAMs3d,EACbr3d,IAAK,IACL+f,SAAU,CACRu3c,EACAztP,EAAKk+O,oBAKTl+O,EAAKk+O,sB,cC9DXnyf,EAAOD,QAMP,SAASk0Q,GAEP,IAAI0tP,EAAa,mEAQbnG,EAAW,qCAaXpG,EAAM,CACRhrf,UAAW,WACXmif,SAAU,CACR,CAACpid,MAAO,sBACR,CAACA,MAAO,gBAIRkrd,EAAe,CACjBjrf,UAAW,SACX+/B,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CACR8pN,EAAK29O,iBACLwD,EACA,CACEhrf,UAAW,WACX+/B,MAAO,OAAQC,IAAK,KACpB+f,SAAU,CAAC8pN,EAAK29O,qBAKlBgQ,EAAc,CAChBx3f,UAAW,SACX+/B,MAAO,IAAKC,IAAK,KAMnB,MAAO,CACL+5L,QAAS,CAAC,WAAY,YACtBwoR,kBAAkB,EAClBQ,QAAS,WACTL,SAAU,CACRjvH,QAAS29H,EACTrI,QAASwO,EAAa,KAAOA,EAAWt5f,MAAM,KAAK0D,KAAK,MAAQ,KAtD9C,mKAsDqE1D,MAAM,KAAK0D,KAAK,OAEzGo+C,SAAU,CACR,CACEoic,SAAU,CACR,CAAEpid,MAAO,KAAMC,IAAK,KACpB,CAAED,MAAO,OAAQC,IAAK,QACtB,CAAED,MAAO,KAAMC,IAAK,KACpB,CAAED,MAAO,KAAMC,IAAK,KACpB,CAAED,MAAO,gBAAiBC,IAAK,KAC/B,CAAED,MAAO,OAAQC,IAAK,KACtB,CAAED,MAAO,QAASC,IAAK,SACvB,CAAED,MAAO,MAAOC,IAAK,KACrB,CAAED,MAAO,UAAWC,IAAK,MACzB,CAAED,MAAO,kBAAmBC,IAAK,MAEnCqjd,QAAS,KAEXx5O,EAAK+9O,QAAQ,KAAM,KACnBqD,EACAuM,EACAxM,EACA,CACEjrd,MAAO,+BACPwjd,UAAW,EACXiC,aAAa,EACbzlc,SAAU,CACR,CACE//C,UAAW,YACX+/B,MAAO,SAET,CACEA,MAAO,IACPmjd,gBAAiB,EACjBK,UAAW,EACXxjc,SAAU,CACRkrc,EACAuM,EACAxM,EACA,CACEhrf,UAAW,UACX+/B,MAAO,OAASqxd,EAASnzf,MAAM,KAAK0D,KAAK,KAAO,QAgBlD,CAGEo+B,MAAO,gCAMjB,CAEE//B,UAAW,SACX+/B,MAAO,kBAGT,CACEA,MAAO,OA5HS,wFA4HgB9hC,MAAM,KAAK0D,KAAK,KAAO,eACvD6jf,aAAa,EACbzlc,SAAU,CACR,CACE//C,UAAW,eACX+/B,MAAO,SAKb,CACE//B,UAAW,WACXmif,SAAU,CACR,CAACpid,MAAO,oBArIF,o7BAqIgC9hC,MAAM,KAAK0D,KAAK,KAAO,WAAW4hf,UAAW,IACnF,CAACxjd,MAAO,c,cCxJlBnqC,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL64O,SAAU,CACRqG,QACE,2FACFC,SACE,2iBAQJ3F,QAAS,KACTtjc,SAAU,CACR8pN,EAAKg+O,oBACLh+O,EAAKi+O,qBACLj+O,EAAK69O,kBACL79O,EAAK49O,iBACL59O,EAAKo+O,cACL,CACEjof,UAAW,OACX+/B,MAAO,IAAKC,IAAK,KAEnB,CACEhgC,UAAW,QACX2if,cAAe,2CAA4C3id,IAAK,OAElE,CACE2id,cAAe,gCAAiC3id,IAAK,W,cC9B7DpqC,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL64O,SAAU,CACPqG,QAAS,y/FAmCTC,SAAU,ocAMbjpc,SAAU,CACR8pN,EAAKg+O,oBACLh+O,EAAKi+O,qBACLj+O,EAAK49O,iBACL59O,EAAK69O,kBACL79O,EAAKo+O,cACL,CACEjof,UAAW,UACXmif,SAAU,CACR,CAACpid,MAAO,uBAAwBwjd,UAAW,GAC3C,CAACxjd,MAAO,0B,cCtDlBnqC,EAAOD,QAAU,SAASk0Q,GACxB,IAAI4tP,EAAa,wCAMbC,EAEF,upBAkBF,MAAO,CACL39R,QAAS,CAAC,MACV2oR,SAAU,CACRqG,QA3BF,2RA6BEt1H,QACE,8BACFu1H,SACE0O,GAEJ3U,QAASl5O,EAAKq9O,SAAW,KACzB7D,QAAS,KACTtjc,SAAU,CACR8pN,EAAKg+O,oBACLh+O,EAAK+9O,QAAQ,OAAQ,OAAQ,CAAC7nc,SAAU,CAAC,UACzC8pN,EAAKi4O,QAAQj4O,EAAK69O,kBAAmB,CAAC3nd,MAAO,MAAOsjd,QAAS,OAC7D,CACErjf,UAAW,SACXmif,SAAU,CACP,CAAEpid,MAAO,0BACT,CAAEA,MAAO,qCAGd,CACE//B,UAAW,SACX+/B,MAAO,2BAET,CACE//B,UAAW,SACXmif,SAAU,CACR,CAAEpid,MAAO,gBAAkB03d,GAC3B,CAAE13d,MAAO,iBAAmB03d,GAC5B,CAAE13d,MAAO,uBAAyB03d,GAClC,CAAE13d,MAAO,kDACA03d,IAGXlU,UAAW,GAEb,CACEvjf,UAAW,WACX2if,cAAe,KAAM3id,IAAK,UAAW6ld,YAAY,EACjD9lc,SAAU,CAAC8pN,EAAKy+O,wBAElB,CACEtof,UAAW,OACX+/B,MAAO,WAAYC,IAAK,MACxB+f,SAAU,CACR,CACE//C,UAAW,cACX+/B,MAAO,IAAKC,IAAK,OAIvB,CACEhgC,UAAW,QACX2if,cAAe,OAAQ3id,IAAK,IAC5B+f,SAAU,CACR8pN,EAAKi4O,QAAQj4O,EAAKy+O,sBAAuB,CAAC3C,YAAY,KAExDtC,QAAS,OAEX,CACErjf,UAAW,QACX2if,cAAe,0BAA2B3id,IAAK,IAC/C+f,SAAU,CACR8pN,EAAKi4O,QAAQj4O,EAAKy+O,sBAAuB,CAAC3C,YAAY,KAExDtC,QAAS,YAEX,CACEtjd,MAAO8pO,EAAKq9O,SAAW,KACvBxE,SAAU,CAACsG,SAAU0O,IAEvB,CACE33d,MAAO,U,cCtGfnqC,EAAOD,QAAU,SAASk0Q,GAyEtB,MAAO,CACH9vC,QAAS,CAAC,MAAO,OACjBwoR,kBAAkB,EAClBG,SAAU,CACNjvH,QACI,kGAEJprP,KA7EW,yrBAgFftoF,SAAU,CACN,CAEI//C,UAAW,UACX+/B,MAAO,2CAEX,CAEI//B,UAAW,WACX+/B,MAAO,iCAEX,CAEI//B,UAAW,WACX+/B,MAAO,yBACPC,IAAK,aAET,CACIhgC,UAAW,WACX+/B,MAAO,gZAEX,CAEI//B,UAAW,OACX+/B,MAAO,2BAEX,CACI//B,UAAW,OACX+/B,MAAO,y2DAEX,CACI//B,UAAW,SACXmif,SAAU,CACNt4O,EAAK49O,iBACL59O,EAAK69O,oBAGb79O,EAAK+9O,QAAQ,MAAO,KACpB/9O,EAAKi+O,yB,cCzHjBlyf,EAAOD,QAAU,SAASk0Q,GAExB,IAGIsgP,EAAQ,CACVnqf,UAAW,QACXmif,SAAU,CACR,CAACpid,MAAO,oBACR,CAACA,MAAO,OAAQC,IAAK,OAIrB+pd,EAAS,CACX/pf,UAAW,SACXmif,SAAU,CACR,CACEpid,MAAO,IAAKC,IAAK,IACjBqjd,QAAS,MACTtjc,SAAU,CAAC8pN,EAAK29O,mBAElB,CACEznd,MAAO,MAAOC,IAAK,MACnBujd,UAAW,IAEb,CACExjd,MAAO,UAAWC,IAAK,IACvBqjd,QAAS,MACTtjc,SAAU,CAAC8pN,EAAK29O,iBAAkB2C,IAEpC,CACEnqf,UAAW,SACX+/B,MAAO,YAAaC,IAAK,MACzB+f,SAAU,CAACoqc,GACX5G,UAAW,MAWbt6Z,EAAO,CACTjpF,UAAW,OACX+/B,MAAO,wBACPwjd,UAAW,GAGTxrY,EAAO,CACT/3G,UAAW,QACX+/B,MAAO,iFACPwjd,UAAW,GAGTmK,EAAQ,CACV1tf,UAAW,QACX2if,cAAe,0BACf3id,IAAK,aACL6ld,YAAY,EACZ9lc,SAAU,CACR,CACE4ic,cAAe,eACfY,UAAW,IAEb,CACExjd,MAAO,KACPC,IAAK,KACLuld,cAAc,EACdM,YAAY,EACZtC,UAAW,EACXxjc,SAAU,CAACkpC,IAEb,CACEjpF,UAAW,SACX+/B,MAAO,KACPC,IAAK,KACLuld,cAAc,EACdM,YAAY,EACZtC,UAAW,EACXxjc,SAAU,CAACkpC,IAEb8uB,IAIAw3Y,EAAS,CACXvvf,UAAW,WACX2if,cAAe,MACf3id,IAAK,cACL6ld,YAAY,EACZ9lc,SAAU,CAACg4D,IAGb,MAAO,CACL2qY,SAAU,CACRjvH,QAAS,kBACTs1H,QAAS,yPAEXhpc,SAAU,CACR8pN,EAAKg+O,oBACLh+O,EAAKi+O,qBACLiC,EAhES,CACX/pf,UAAW,SACX+/B,MAAO,uBAgELkpD,EACAsma,EACA7B,EACA7jP,EAAKo+O,cA3GQ,CAAEjof,UAAW,OAAQ+/B,MAAO,kB,cCF/CnqC,EAAOD,QAAU,SAASk0Q,GACxB,IAAI8tP,EAAkB,wCA8ClBjP,EAAU,CACZ1of,UAAW,UACX+/B,MAAO,eAAiB43d,EAAkB,YAGxC9N,EAAS,CACX7pf,UAAW,SACXmif,SAAU,CACR,CAAEpid,MArDwB,4BAqDQwjd,UAAW,GAC7C,CAAExjd,MArDyB63d,4DAqDQrU,UAAW,GAC9C,CAAExjd,MAAO,sBACT,CAAEA,MAAO,sBACT,CAAEA,MAAO,8BAITgqd,EAASlgP,EAAK69O,kBAQdwD,EAAgB,CAClBrhP,EAAK+9O,QACH,IACA,IACA,CACErE,UAAW,IAGf15O,EAAK+9O,QAAQ,OAAQ,SAGnB6L,EAAQ,CACV1zd,MAAO43d,EACPpU,UAAW,GAGTsU,EAAe,CACjB73f,UAAW,SACX+/B,MAAO,IAAO43d,GAGZhM,EAAO,CACTzI,gBAAgB,EAChBK,UAAW,GAGTuU,EAAc,CAChB3V,SAAU,CACR,CAAEpid,MAAO,KACT,CAAEA,MAAO,MAEXggB,SAAU,CACR,CACEhgB,MAAO,MAAOC,IAAK,MACnB+f,SAAU,CAAC,OAAQ2oc,EAASqB,EAAQF,EAAQ4J,EAAOoE,MAKrD9/Y,EAAO,CACT/3G,UAAW,OACX+/B,MAAO43d,EACP5U,QAAS4U,EACTjV,SA9Ga,CACb,eACE,qoEA0HAgJ,EAAO,CACTvJ,SAAU,CACR,CAAEpid,MAAO,MAAOC,IAAK,OACrB,CAAED,MAAO,MAAOC,IAAK,QAEvB+f,SAAU,CAhBC,CACXhgB,MAAO,SAAUmjd,gBAAgB,EAAMsC,aAAa,EACpDzlc,SAAU,CACRg4D,EACA,CACEh4E,MAAO,KAAMC,IAAK,KAAM2ld,YAAY,EACpC5lc,SAAU,CAAC0zc,MAUI17Y,EAAM4zY,IAK3B,OAFAA,EAAK5rc,SAAW,CAAC2oc,EAASmB,EAAQE,EAAQ0J,EAAOoE,EAAcC,EAAapM,GAAMhqf,OAAOwpf,GAElF,CACL7H,QAAS,KACTtjc,SAAU,CAnGE,CACZ//C,UAAW,OACX+/B,MAAO,MACPC,IAAK,KAgGe6pd,EAAQE,EAAQ8N,EAAcC,EAAapM,GAAMhqf,OAAOwpf,M,cC5IhFt1f,EAAOD,QAAU,SAASk0Q,GAExB,IAAIkuP,EAAkB,CACpBluP,EAAKo+O,cACL,CACEjof,UAAW,SACX+/B,MAAO,OAASC,IAAK,OACrB+f,SAAU,CAAC8pN,EAAK29O,iBAAkB,CAACznd,MAAO,SAI9C,MAAO,CACLg6L,QAAS,CAAC,OACVgpR,QAAS,QACTL,SAAU,CACRqG,QAAS,wIAETt1H,QACE,6CACFu1H,SACC,4bAOH3F,QAAS,uBACTtjc,SAAU,CACR,CACE//C,UAAW,WACX2if,cAAe,WAAY3id,IAAK,IAChC+f,SAAU,CACR8pN,EAAKy+O,sBACL,CACEtof,UAAW,SACX+/B,MAAO,MAAOC,IAAK,SAIzB,CACED,MAAO,4CAAgDC,IAAK,GAC5Dujd,UAAW,GAEb,CACExjd,MAAO,MAAOC,IAAK,eACnBujd,UAAW,EACXxjc,SAAUg4c,GAEZluP,EAAK+9O,QAAQ,KAAM,MACnBlmf,OAAOq2f,M,cClDbnigB,EAAOD,QAAU,SAASk0Q,GACxB,IACIkhP,EAAW,CACb/qf,UAAW,WACX+/B,MAAO,mCAELi4d,EAAW,CACbh4f,UAAW,SAAU+/B,MAAO,iBAWxB8pO,EAAKs+O,gBACLt+O,EAAK69O,kBACL79O,EAAK49O,iBACL59O,EAAKi+O,qBAOX,MAAO,CACLvF,kBAAkB,EAClBc,QAAS,SACTtjc,SAAU,CACR8pN,EAAKg+O,oBACLh+O,EAAKi+O,qBACL,CACE9nf,UAAW,cAAe+/B,MAAO,oBACjCwjd,UAAW,GAEb,CACEvjf,UAAW,iBAAkB+/B,MAAO,oBACpCwjd,UAAW,GAEb,CACEvjf,UAAW,gBAAiB+/B,MAAO,MAAOC,IAAK,MAC/Cqjd,QAAS,KAEX,CACErjf,UAAW,eACX+/B,MAAO,ikBACPwjd,UAAW,GAEb,CACExjd,MAAO,uWAET,CACEA,MAAO,6FAETgrd,EACA,CACE/qf,UAAW,YACX+/B,MAAO,suFACPsjd,QAAS,UAEX,CACEtjd,MAAO,8oCAET,CACEA,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CACRgrc,EACAiN,EACAnuP,EAAKs+O,gBACLt+O,EAAK69O,kBACL79O,EAAK49O,iBACL,CACEznf,UAAW,OAAQ+/B,MAAO,gBAIhC,CACEA,MAAO,IAAKC,IAAK,OACjB0id,SAAU,+GACV3ic,SAAU,CACRgrc,EACAlhP,EAAK69O,kBACL79O,EAAK49O,iBACLuQ,EACAnuP,EAAKs+O,gBACL,CACEpod,MAAO,qBACPwjd,UAAW,S,cC1FvB3tf,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL9vC,QAAS,CAAC,WACVh6K,SAAU,CACR,CACE//C,UAAW,OACX+/B,MAAO,qCACP4jd,OAAQ,CACN3jd,IAAK,IAAK2kd,YAAa,a,cCRjC/uf,EAAOD,QAAU,SAASk0Q,GACxB,IAAIouP,EAAuB,CAAC,MAAO,MAAO,MAAO,OAAQ,OAAQ,QAAS,MAAO,SAAU,QAAS,OAAQ,KAAM,MAAO,OAAQ,OAAQ,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,MAAO,SAAU,MAAO,MAAO,OAAQ,MAAO,QAAS,OAAQ,OAGjP,MAAO,CACLl+R,QAAS,CAAC,SACVh6K,SAAU,CACR,CACE//C,UAAW,SACX+/B,MAAO,IAAKC,IAAK,IACjBujd,UAAW,GAEb15O,EAAK+9O,QACH,IACA,IACA,CACErE,UAAW,IAGf,CACEvjf,UAAW,UACXmif,SAAU,CACR,CAACpid,MAAO,6BACR,CAACA,MAAO,oBAAqBwjd,UAAW,GACxC,CAACxjd,MAAO,oBAAqBwjd,UAAW,GACxC,CAACxjd,MAAO,OAtBK,CAAC,YAAa,cAAe,WAAY,QAAS,YAAa,SAAU,UAAW,YAAa,SAAU,SAAU,UAsBlGp+B,KAAK,KAAO,OAGhD,CACE3B,UAAW,WACXmif,SAAW,CACT,CACEpid,MAAO,OAAOk4d,EAAqBt2f,KAAK,KAAK,QAE/C,CACEo+B,MAAO,OAAOk4d,EAAqBt2f,KAAK,KAAK,6BAC7C4hf,UAAW,IAEb,CACExjd,MAAO,OArCW,CAAC,OAAQ,OAAQ,QAAS,QAAS,UAAW,OAAQ,SAAU,UAAW,UAAW,OAAQ,WAAY,SAAU,OAAQ,UAAW,SAAU,OAAQ,UAqCvIp+B,KAAK,KAAK,6BAC9C4hf,UAAW,MAIjB,CACEvjf,UAAW,QACX+/B,MAAO,cACPwjd,UAAW,GAEb,CACExjd,MAAO,kB,cClDfnqC,EAAOD,QAAU,SAASk0Q,GACxB,IACIquP,EAAO,CACTl4f,UAAW,SACX+/B,MAAO,WAELk6K,EAAS,CACXj6M,UAAW,SACX+/B,MAAO,IAAM8pO,EAAKs9O,qBAEpB,MAAO,CACLptR,QAAS,CAAC,MACV2oR,SAAU,wCACV3ic,SAAU,CACR8pN,EAAK+9O,QAAQ,IAAK,KAClB/9O,EAAK49O,iBACL,CACEznf,UAAW,OACX+/B,MAAO,wBACPwjd,UAAW,GAEb,CACExjd,MAAOo4d,sBACP5U,UAAW,GAEb15O,EAAKo+O,cACLhuS,EACAi+S,EACA,CAIEn4d,MAAO,4DACPyld,aAAa,EAAMxld,IAAK,KACxBqjd,QAAS,KACTtjc,SAAU,CAAC,CAAChgB,MAAO,kCAErB,CACEA,MAAO,SAAUC,IAAK,MACtB+f,SAAU,CACR8pN,EAAK49O,iBACLyQ,EACAruP,EAAKo+O,cACLhuS,Q,cC3CVrkN,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL9vC,QAAS,CAAC,MACV2oR,SAAU,CACRqG,QAEE,iPAIFC,SAEE,uFACFv1H,QACE,+CAEJ4vH,QAAS,UACTN,QAAS,eACThjc,SAAU,CACR,CACE//C,UAAW,UACX+/B,MAAO,mBACPwjd,UAAW,GAEb15O,EAAK+9O,QACH,SACA,SACA,CACE7nc,SAAU,CAAC,UAGf,CACE//C,UAAW,SACX+/B,MAAO,0BAGT,CACE//B,UAAW,OACX+/B,MAAO,iBAET,CACE//B,UAAW,OACX+/B,MAAO,kBACPwjd,UAAW,GAEb,CACExjd,MAAO,sBAET8pO,EAAKi4O,QAAQj4O,EAAK49O,iBAAkB,CAACznf,UAAW,SAAUujf,UAAW,IACrE15O,EAAKi4O,QAAQj4O,EAAK69O,kBAAmB,CAACrE,QAAS,OAC/C,CACErjf,UAAW,SACX+/B,MACE,2HAIFwjd,UAAW,GAEb,CACExjd,MAAO,a,cC5DfnqC,EAAOD,QAAU,SAASk0Q,GACxB,IAAI+gP,EAAM/gP,EAAKvtQ,YAAY,OAAO3G,QAiClC,MAAO,CACLokO,QAAS,CAAC,OACVwoR,kBAAkB,EAClBG,SAAU,CACRqG,QACE,qHAEFC,SACE,418BAyVFv1H,QACE,8OAIJ1zU,SAAU,CACR8pN,EAAKg+O,oBACLh+O,EAAKi+O,qBACLj+O,EAAKm+O,YAvYM,CACbhof,UAAW,WACX+/B,MAAO,oBAKM,CACb//B,UAAW,QACX+/B,MAAO,gCAKK,CACZ//B,UAAW,SACXmif,SAAU,CACR,CACEpid,MAAO,IACPC,IAAK,IACL+f,SAAU,CAAC,CAAChgB,MAAO,KAAMwjd,UAAW,KAEtC,CACExjd,MAAO,IACPC,IAAK,IACL+f,SAAU,CAAC,CAAChgB,MAAO,KAAQwjd,UAAW,OAkXxCqH,EAAID,cAENtH,QAAS,Y,cCjZbztf,EAAOD,QAAU,SAASk0Q,GACxB,IAAI0rP,EAAe1rP,EAAK+9O,QAAQ,KAAM,KACtC,MAAO,CACLrF,kBAAkB,EAClBc,QAAS,UACTtjc,SAAU,CACR,CACE4ic,cACE,gYAKF3id,IAAK,IAAKkjd,gBAAgB,EAC1BH,QAAS,UACTL,SAAU,CACRqG,QACE,uyVA8GFt1H,QACE,0BACFu1H,SACE,iNAGJjpc,SAAU,CACR,CACE//C,UAAW,SACX+/B,MAAO,IAAMC,IAAK,IAClB+f,SAAU,CAAC8pN,EAAK29O,iBAAkB,CAACznd,MAAO,QAE5C,CACE//B,UAAW,SACX+/B,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CAAC8pN,EAAK29O,iBAAkB,CAACznd,MAAO,QAE5C,CACE//B,UAAW,SACX+/B,MAAO,IAAKC,IAAK,IACjB+f,SAAU,CAAC8pN,EAAK29O,mBAElB39O,EAAKo+O,cACLp+O,EAAKi+O,qBACLyN,EACA1rP,EAAKk+O,oBAGTl+O,EAAKi+O,qBACLyN,EACA1rP,EAAKk+O,sB,cC7JXnyf,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL9pN,SAAU,CACR8pN,EAAKk+O,kBACLl+O,EAAKg+O,oBACLh+O,EAAKi+O,qBACL,CACE/nd,MAAO8pO,EAAKs9O,oBACZpE,QAASl5O,EAAKs9O,oBACdzE,SAAU,CAER9qf,KACE,yCAIFq6L,OACE,smBAYF,eACE,iJAIF76K,MACE,mEAEFq8W,QACE,cAEJ8vH,UAAW,GAGb,CAEEvjf,UAAW,SACX+/B,MAAO,4BACPwjd,UAAW,GAEb,CAEEvjf,UAAW,SACX+/B,MAAO,4BACPwjd,UAAW,GAEb,CAEEvjf,UAAW,SACX+/B,MAAO,+BACPwjd,UAAW,GAEb,CAEEvjf,UAAW,SACX+/B,MAAO,0BACPwjd,UAAW,GAEb,CAEEvjf,UAAW,SACX+/B,MAAO,4CACPwjd,UAAW,GAEb,CAEEvjf,UAAW,SACX+/B,MAAO,mCACPwjd,UAAW,O,cC7EnB3tf,EAAOD,QAAU,SAASk0Q,GACxB,MAAO,CACL9vC,QAAS,CAAC,KAAM,OAChBwoR,kBAAkB,EAClBG,SAAU,4/cACN3ic,SAAU,CACZ,CACE//C,UAAW,SACX+/B,MAAO,mBAET,CACE//B,UAAW,WACX+/B,MAAO,yBAET,CACE//B,UAAW,SACXmif,SAAU,CACR,CAACpid,MAAO,kBACR,CAACA,MAAO,iBAIZ,CACE//B,UAAW,WACXmif,SAAU,CACR,CACEpid,MAAO,u5CAKb8pO,EAAK+9O,QAAQ,iBAAiB,GAC9B/9O,EAAKg+O,oBACLh+O,EAAKi+O,yB,cCjCXlyf,EAAOD,QAAU,SAASk0Q,GAgBxB,MAAO,CACL9vC,QAAS,CAAC,MAAO,OAAQ,OACzBwoR,kBAAkB,EAClBQ,QAlBoB,oBAmBpBL,SAlBoB,CACpBqG,QAAS,sBAkBThpc,SAAU,CAhBO,CACjB//C,UAAW,OACX+/B,MAAO,gBACPwjd,UAAW,IAEM,CACjBvjf,UAAW,OACX+/B,MAAO,oBACPwjd,UAAW,IAWT15O,EAAKg+O,oBACLh+O,EAAKi+O,qBACLj+O,EAAK+9O,QAAQ,WAAY,QACzB/9O,EAAKo+O,cACLp+O,EAAKi4O,QAAQj4O,EAAK49O,iBAAkB,CAACpE,QAAS,OAC9Cx5O,EAAKi4O,QAAQj4O,EAAK69O,kBAAmB,CAACrE,QAAS,OAC/C,CACErjf,UAAW,SACX+/B,MAAO,IAAKC,IAAK,KAEnB,CACEhgC,UAAW,SACXmif,SAAU,CACR,CACEpid,MAAO,IAAKC,IAAK,OACjBqjd,QAAS,a,cCvCrBztf,EAAOD,QAAU,SAASk0Q,GAExB,IAAIkhP,EAAW,CACb/qf,UAAW,WACX+/B,MAAO,MAAQ8pO,EAAKq9O,UAGlBkR,EAAY,CACdp4f,UAAW,SACX+/B,MAAO,oCA2GLs4d,EAAU,qBA+Nd,MAAO,CACLt+R,QAAS,CAAC,QACVwoR,kBAAkB,EAClBG,SAAU,iBACVW,QAAS,IAlBG,CACZ,MACA,iBACA,cACA,cACA,cACA,IACA,OACA,SACA,SACA,MACA,KAOuB1hf,KAAK,KAAO,IACnCo+C,SAAU,CAGR8pN,EAAK69O,kBACL79O,EAAK49O,iBAGL59O,EAAKg+O,oBACLh+O,EAAKi+O,qBAGLsQ,EAGA,CACEr4d,MAAO,4BAA8Bs4d,EACrC7S,aAAa,EACbzlc,SAAU,CACR,CAAC//C,UAAW,iBAAkB+/B,MAAO,+BAKzC,CACEA,MAAO,4BAA8Bs4d,EACrC7S,aAAa,EACbzlc,SAAU,CACR,CAAC//C,UAAW,cAAe+/B,MAAO,+BAKtC,CACEA,MAAO,OA/UF,CACT,IACA,OACA,UACA,UACA,QACA,QACA,IACA,aACA,OACA,SACA,SACA,UACA,OACA,OACA,KACA,MACA,UACA,MACA,MACA,KACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,OACA,MACA,SACA,KACA,IACA,IACA,QACA,OACA,UACA,OACA,SACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,KACA,KACA,MACA,SAwQyBp+B,KAAK,KAAO,IAAM02f,EACvC7S,aAAa,EACbzlc,SAAU,CACR,CAAC//C,UAAW,eAAgB+/B,MAAO,+BAKvC,CACEA,MAAO,YAtWU,CACrB,QACA,SACA,eACA,aACA,SACA,cACA,QACA,QACA,OACA,OACA,WA2V0Cp+B,KAAK,KAAO,IAAM02f,GAI1D,CACEt4d,MAAO,KA3XK,CAChB,UACA,MACA,QACA,SACA,YACA,MACA,SACA,UACA,QACA,QACA,OACA,OACA,SA8W+Bp+B,KAAK,KAAO,QAIzCopf,EAGAlhP,EAAKs+O,gBAGLt+O,EAAKm+O,YAIL,CACEhof,UAAW,WACX+/B,MAAO,kCACPsjd,QAAS,QACTmC,aAAa,EACbzlc,SAAU,CACR,CAAC//C,UAAW,QAAS+/B,MAAO,6BAC5B,CACE//B,UAAW,SACX+/B,MAAO,KACPC,IAAK,KACL+f,SAAU,CACRq4c,EACArN,EACAlhP,EAAK49O,iBACL59O,EAAKs+O,gBACLt+O,EAAKm+O,YACLn+O,EAAK69O,sBASb,CACE1nf,UAAW,YACX+/B,MAAO,OA3TI,CACf,gBACA,cACA,aACA,YACA,kBACA,sBACA,qBACA,sBACA,4BACA,iBACA,uBACA,4BACA,OACA,sBACA,aACA,wBACA,kBACA,mBACA,mBACA,oBACA,sBACA,oBACA,kBACA,SACA,gBACA,sBACA,4BACA,6BACA,sBACA,sBACA,kBACA,eACA,eACA,sBACA,sBACA,qBACA,sBACA,qBACA,cACA,oBACA,oBACA,oBACA,gBACA,eACA,qBACA,qBACA,qBACA,iBACA,eACA,aACA,mBACA,yBACA,0BACA,mBACA,mBACA,eACA,SACA,uBACA,aACA,aACA,cACA,eACA,eACA,eACA,QACA,OACA,YACA,QACA,eACA,cACA,aACA,cACA,oBACA,oBACA,oBACA,cACA,eACA,UACA,UACA,oBACA,gBACA,SACA,YACA,UACA,cACA,SACA,OACA,aACA,iBACA,YACA,YACA,cACA,YACA,QACA,OACA,cACA,wBACA,eACA,yBACA,YACA,mBACA,eACA,aACA,eACA,yBACA,cACA,SACA,UACA,OACA,oBACA,kBACA,mBACA,WACA,UACA,UACA,kBACA,OACA,iBACA,cACA,aACA,mBACA,sBACA,kBACA,SACA,gBACA,cACA,eACA,aACA,QACA,OACA,aACA,YACA,aACA,YACA,WACA,YACA,WACA,YACA,SACA,OACA,SACA,aACA,kBACA,UACA,QACA,UACA,UACA,gBACA,iBACA,gBACA,gBACA,WACA,gBACA,aACA,aACA,UACA,iBACA,eACA,gBACA,cACA,mBACA,oBACA,oBACA,cACA,qBACA,iBACA,WACA,SACA,SACA,QACA,WACA,eACA,aACA,kBACA,kBACA,wBACA,uBACA,wBACA,cACA,gBACA,iBACA,cACA,iBACA,0BACA,MACA,YACA,mBACA,kBACA,aACA,mBACA,sBACA,sBACA,6BACA,eACA,iBACA,aACA,cACA,SACA,QACA,aACA,eACA,YACA,WAgH+BiD,UAAUrhC,KAAK,KAAO,OACjDgif,OAAQ,CAEN3jd,IAAK,MACL+f,SAAU,CACRq4c,EACArN,EACAlhP,EAAK49O,iBACL59O,EAAK69O,kBACL79O,EAAKs+O,gBACLt+O,EAAKm+O,YACLn+O,EAAKi+O,sBAEPzE,QAAS,KACTE,UAAW,Q,cC/brB3tf,EAAOD,QAAU,SAASk0Q,GAuBxB,MAAO,CACL04O,kBAAkB,EAClBxic,SAAU,CAxBE,CACZ//C,UAAW,SACX+/B,MAAO,oBAAqBC,IAAK,SAExB,CACThgC,UAAW,SACX+/B,MAAO,wDAEW,CAClB//B,UAAW,SACX+/B,MAAO,eAEM,CACb//B,UAAW,UACXujf,UAAW,GACXpB,SAAU,CACR,CAAEpid,MAAO,wFACT,CAAEA,MAAO,mCACT,CAAEA,MAAO,UACT,CAAEA,MAAO,gB,cCpBfnqC,EAAOD,QAAU,SAASk0Q,GACxB,IAAIyuP,EAAiB,CACjBvP,QAAS,gvBAUTt1H,QAAS,iBACTu1H,SAAU,+kCA2BVuP,EAAgB1uP,EAAK+9O,QACvB,OACA,OACA,CACE7nc,SAAU,CAAC,UAGXoqc,EAAQ,CACVnqf,UAAW,QACX+/B,MAAO,OAAQC,IAAK,MACpB0id,SAAU4V,EACVv4c,SAAU,IAERgqc,EAAS,CACX/pf,UAAW,SACX+/C,SAAU,CAAC8pN,EAAK29O,iBAAkB2C,GAClChI,SAAU,CACR,CAACpid,MAAO,MAAOC,IAAK,OACpB,CAACD,MAAO,IAAKC,IAAK,OAGlB2od,EAAU,CACV3of,UAAW,SACX+/B,MAAO,wFACPwjd,UAAW,GAIf,OAFA4G,EAAMpqc,SAAW,CAAC4oc,GAEX,CACLjG,S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WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,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AS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAO,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAI,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAI,IAAS,IAAO,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,IAAS,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KAAe,KA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","file":"bundles/a6f8076a857e57b3741a/bundle.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t6: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"bundles/\" + \"a6f8076a857e57b3741a\" + \"/\" + ({}[chunkId]||chunkId) + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1042);\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _typeof2 = require('babel-runtime/helpers/typeof');\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nexports.newTranslatableError = newTranslatableError;\nexports._td = _td;\nexports._t = _t;\nexports.substitute = substitute;\nexports.replaceByRegexes = replaceByRegexes;\nexports.setMissingEntryGenerator = setMissingEntryGenerator;\nexports.setLanguage = setLanguage;\nexports.getAllLanguagesFromJson = getAllLanguagesFromJson;\nexports.getLanguagesFromBrowser = getLanguagesFromBrowser;\nexports.getNormalizedLanguageKeys = getNormalizedLanguageKeys;\nexports.normalizeLanguageKey = normalizeLanguageKey;\nexports.getCurrentLanguage = getCurrentLanguage;\nexports.pickBestLanguage = pickBestLanguage;\n\nvar _browserRequest = require('browser-request');\n\nvar _browserRequest2 = _interopRequireDefault(_browserRequest);\n\nvar _counterpart = require('counterpart');\n\nvar _counterpart2 = _interopRequireDefault(_counterpart);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _SettingsStore = require('./settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar i18nFolder = 'i18n/';\n\n// Control whether to also return original, untranslated strings\n// Useful for debugging and testing\n/*\nCopyright 2017 MTRNord and Cooperative EITA\nCopyright 2017 Vector Creations Ltd.\nCopyright 2019 The Matrix.org Foundation C.I.C.\nCopyright 2019 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar ANNOTATE_STRINGS = false;\n\n// We use english strings as keys, some of which contain full stops\n_counterpart2.default.setSeparator('|');\n// Fall back to English\n_counterpart2.default.setFallbackLocale('en');\n\n/**\n * Helper function to create an error which has an English message\n * with a translatedMessage property for use by the consumer.\n * @param {string} message Message to translate.\n * @returns {Error} The constructed error.\n */\nfunction newTranslatableError(message) {\n var error = new Error(message);\n error.translatedMessage = _t(message);\n return error;\n}\n\n// Function which only purpose is to mark that a string is translatable\n// Does not actually do anything. It's helpful for automatic extraction of translatable strings\nfunction _td(s) {\n return s;\n}\n\n// Wrapper for counterpart's translation function so that it handles nulls and undefineds properly\n// Takes the same arguments as counterpart.translate()\nfunction safeCounterpartTranslate(text, options) {\n // Horrible hack to avoid https://github.com/vector-im/riot-web/issues/4191\n // The interpolation library that counterpart uses does not support undefined/null\n // values and instead will throw an error. This is a problem since everywhere else\n // in JS land passing undefined/null will simply stringify instead, and when converting\n // valid ES6 template strings to i18n strings it's extremely easy to pass undefined/null\n // if there are no existing null guards. To avoid this making the app completely inoperable,\n // we'll check all the values for undefined/null and stringify them here.\n var count = void 0;\n\n if (options && (typeof options === 'undefined' ? 'undefined' : (0, _typeof3.default)(options)) === 'object') {\n count = options['count'];\n (0, _keys2.default)(options).forEach(function (k) {\n if (options[k] === undefined) {\n console.warn(\"safeCounterpartTranslate called with undefined interpolation name: \" + k);\n options[k] = 'undefined';\n }\n if (options[k] === null) {\n console.warn(\"safeCounterpartTranslate called with null interpolation name: \" + k);\n options[k] = 'null';\n }\n });\n }\n var translated = _counterpart2.default.translate(text, options);\n if (translated === undefined && count !== undefined) {\n // counterpart does not do fallback if no pluralisation exists\n // in the preferred language, so do it here\n translated = _counterpart2.default.translate(text, (0, _assign2.default)({}, options, { locale: 'en' }));\n }\n return translated;\n}\n\n/*\n * Translates text and optionally also replaces XML-ish elements in the text with e.g. React components\n * @param {string} text The untranslated text, e.g \"click here now to %(foo)s\".\n * @param {object} variables Variable substitutions, e.g { foo: 'bar' }\n * @param {object} tags Tag substitutions e.g. { 'a': (sub) => {sub} }\n *\n * In both variables and tags, the values to substitute with can be either simple strings, React components,\n * or functions that return the value to use in the substitution (e.g. return a React component). In case of\n * a tag replacement, the function receives as the argument the text inside the element corresponding to the tag.\n *\n * Use tag substitutions if you need to translate text between tags (e.g. \"Click here!\"), otherwise\n * you will end up with literal \"\" in your output, rather than HTML. Note that you can also use variable\n * substitution to insert React components, but you can't use it to translate text between tags.\n *\n * @return a React component if any non-strings were used in substitutions, otherwise a string\n */\nfunction _t(text, variables, tags) {\n // Don't do substitutions in counterpart. We handle it ourselves so we can replace with React components\n // However, still pass the variables to counterpart so that it can choose the correct plural if count is given\n // It is enough to pass the count variable, but in the future counterpart might make use of other information too\n var args = (0, _assign2.default)({ interpolate: false }, variables);\n\n // The translation returns text so there's no XSS vector here (no unsafe HTML, no code execution)\n var translated = safeCounterpartTranslate(text, args);\n\n var substituted = substitute(translated, variables, tags);\n\n // For development/testing purposes it is useful to also output the original string\n // Don't do that for release versions\n if (ANNOTATE_STRINGS) {\n if (typeof substituted === 'string') {\n return '@@' + text + '##' + substituted + '@@';\n } else {\n return _react2.default.createElement(\n 'span',\n { className: 'translated-string', 'data-orig-string': text },\n substituted\n );\n }\n } else {\n return substituted;\n }\n}\n\n/*\n * Similar to _t(), except only does substitutions, and no translation\n * @param {string} text The text, e.g \"click here now to %(foo)s\".\n * @param {object} variables Variable substitutions, e.g { foo: 'bar' }\n * @param {object} tags Tag substitutions e.g. { 'a': (sub) => {sub} }\n *\n * The values to substitute with can be either simple strings, or functions that return the value to use in\n * the substitution (e.g. return a React component). In case of a tag replacement, the function receives as\n * the argument the text inside the element corresponding to the tag.\n *\n * @return a React component if any non-strings were used in substitutions, otherwise a string\n */\nfunction substitute(text, variables, tags) {\n var result = text;\n\n if (variables !== undefined) {\n var regexpMapping = {};\n for (var variable in variables) {\n regexpMapping['%\\\\(' + variable + '\\\\)s'] = variables[variable];\n }\n result = replaceByRegexes(result, regexpMapping);\n }\n\n if (tags !== undefined) {\n var _regexpMapping = {};\n for (var tag in tags) {\n _regexpMapping['(<' + tag + '>(.*?)<\\\\/' + tag + '>|<' + tag + '>|<' + tag + '\\\\s*\\\\/>)'] = tags[tag];\n }\n result = replaceByRegexes(result, _regexpMapping);\n }\n\n return result;\n}\n\n/*\n * Replace parts of a text using regular expressions\n * @param {string} text The text on which to perform substitutions\n * @param {object} mapping A mapping from regular expressions in string form to replacement string or a\n * function which will receive as the argument the capture groups defined in the regexp. E.g.\n * { 'Hello (.?) World': (sub) => sub.toUpperCase() }\n *\n * @return a React component if any non-strings were used in substitutions, otherwise a string\n */\nfunction replaceByRegexes(text, mapping) {\n // We initially store our output as an array of strings and objects (e.g. React components).\n // This will then be converted to a string or a at the end\n var output = [text];\n\n // If we insert any components we need to wrap the output in a span. React doesn't like just an array of components.\n var shouldWrapInSpan = false;\n\n for (var regexpString in mapping) {\n // TODO: Cache regexps\n var regexp = new RegExp(regexpString, \"g\");\n\n // Loop over what output we have so far and perform replacements\n // We look for matches: if we find one, we get three parts: everything before the match, the replaced part,\n // and everything after the match. Insert all three into the output. We need to do this because we can insert objects.\n // Otherwise there would be no need for the splitting and we could do simple replacement.\n var matchFoundSomewhere = false; // If we don't find a match anywhere we want to log it\n for (var outputIndex in output) {\n var inputText = output[outputIndex];\n if (typeof inputText !== 'string') {\n // We might have inserted objects earlier, don't try to replace them\n continue;\n }\n\n // process every match in the string\n // starting with the first\n var match = regexp.exec(inputText);\n\n if (!match) continue;\n matchFoundSomewhere = true;\n\n // The textual part before the first match\n var head = inputText.substr(0, match.index);\n\n var parts = [];\n // keep track of prevMatch\n var prevMatch = void 0;\n while (match) {\n // store prevMatch\n prevMatch = match;\n var capturedGroups = match.slice(2);\n\n var replaced = void 0;\n // If substitution is a function, call it\n if (mapping[regexpString] instanceof Function) {\n replaced = mapping[regexpString].apply(null, capturedGroups);\n } else {\n replaced = mapping[regexpString];\n }\n\n if ((typeof replaced === 'undefined' ? 'undefined' : (0, _typeof3.default)(replaced)) === 'object') {\n shouldWrapInSpan = true;\n }\n\n // Here we also need to check that it actually is a string before comparing against one\n // The head and tail are always strings\n if (typeof replaced !== 'string' || replaced !== '') {\n parts.push(replaced);\n }\n\n // try the next match\n match = regexp.exec(inputText);\n\n // add the text between prevMatch and this one\n // or the end of the string if prevMatch is the last match\n var tail = void 0;\n if (match) {\n var startIndex = prevMatch.index + prevMatch[0].length;\n tail = inputText.substr(startIndex, match.index - startIndex);\n } else {\n tail = inputText.substr(prevMatch.index + prevMatch[0].length);\n }\n if (tail) {\n parts.push(tail);\n }\n }\n\n // Insert in reverse order as splice does insert-before and this way we get the final order correct\n // remove the old element at the same time\n output.splice.apply(output, [outputIndex, 1].concat(parts));\n\n if (head !== '') {\n // Don't push empty nodes, they are of no use\n output.splice(outputIndex, 0, head);\n }\n }\n if (!matchFoundSomewhere) {\n // The current regexp did not match anything in the input\n // Missing matches is entirely possible because you might choose to show some variables only in the case\n // of e.g. plurals. It's still a bit suspicious, and could be due to an error, so log it.\n // However, not showing count is so common that it's not worth logging. And other commonly unused variables\n // here, if there are any.\n if (regexpString !== '%\\\\(count\\\\)s') {\n console.log('Could not find ' + regexp + ' in ' + text);\n }\n }\n }\n\n if (shouldWrapInSpan) {\n return _react2.default.createElement.apply(_react2.default, ['span', null].concat(output));\n } else {\n return output.join('');\n }\n}\n\n// Allow overriding the text displayed when no translation exists\n// Currently only used in unit tests to avoid having to load\n// the translations in riot-web\nfunction setMissingEntryGenerator(f) {\n _counterpart2.default.setMissingEntryGenerator(f);\n}\n\nfunction setLanguage(preferredLangs) {\n if (!Array.isArray(preferredLangs)) {\n preferredLangs = [preferredLangs];\n }\n\n var langToUse = void 0;\n var availLangs = void 0;\n return getLangsJson().then(function (result) {\n availLangs = result;\n\n for (var i = 0; i < preferredLangs.length; ++i) {\n if (availLangs.hasOwnProperty(preferredLangs[i])) {\n langToUse = preferredLangs[i];\n break;\n }\n }\n if (!langToUse) {\n // Fallback to en_EN if none is found\n langToUse = 'en';\n console.error(\"Unable to find an appropriate language\");\n }\n\n return getLanguage(i18nFolder + availLangs[langToUse].fileName);\n }).then(function (langData) {\n _counterpart2.default.registerTranslations(langToUse, langData);\n _counterpart2.default.setLocale(langToUse);\n _SettingsStore2.default.setValue(\"language\", null, _SettingsStore.SettingLevel.DEVICE, langToUse);\n console.log(\"set language to \" + langToUse);\n\n // Set 'en' as fallback language:\n if (langToUse !== \"en\") {\n return getLanguage(i18nFolder + availLangs['en'].fileName);\n }\n }).then(function (langData) {\n if (langData) _counterpart2.default.registerTranslations('en', langData);\n });\n}\n\nfunction getAllLanguagesFromJson() {\n return getLangsJson().then(function (langsObject) {\n var langs = [];\n for (var langKey in langsObject) {\n if (langsObject.hasOwnProperty(langKey)) {\n langs.push({\n 'value': langKey,\n 'label': langsObject[langKey].label\n });\n }\n }\n return langs;\n });\n}\n\nfunction getLanguagesFromBrowser() {\n if (navigator.languages && navigator.languages.length) return navigator.languages;\n if (navigator.language) return [navigator.language];\n return [navigator.userLanguage || \"en\"];\n}\n\n/**\n * Turns a language string, normalises it,\n * (see normalizeLanguageKey) into an array of language strings\n * with fallback to generic languages\n * (eg. 'pt-BR' => ['pt-br', 'pt'])\n *\n * @param {string} language The input language string\n * @return {string[]} List of normalised languages\n */\nfunction getNormalizedLanguageKeys(language) {\n var languageKeys = [];\n var normalizedLanguage = normalizeLanguageKey(language);\n var languageParts = normalizedLanguage.split('-');\n if (languageParts.length === 2 && languageParts[0] === languageParts[1]) {\n languageKeys.push(languageParts[0]);\n } else {\n languageKeys.push(normalizedLanguage);\n if (languageParts.length === 2) {\n languageKeys.push(languageParts[0]);\n }\n }\n return languageKeys;\n}\n\n/**\n * Returns a language string with underscores replaced with\n * hyphens, and lowercased.\n *\n * @param {string} language The language string to be normalized\n * @returns {string} The normalized language string\n */\nfunction normalizeLanguageKey(language) {\n return language.toLowerCase().replace(\"_\", \"-\");\n}\n\nfunction getCurrentLanguage() {\n return _counterpart2.default.getLocale();\n}\n\n/**\n * Given a list of language codes, pick the most appropriate one\n * given the current language (ie. getCurrentLanguage())\n * English is assumed to be a reasonable default.\n *\n * @param {string[]} langs List of language codes to pick from\n * @returns {string} The most appropriate language code from langs\n */\nfunction pickBestLanguage(langs) {\n var currentLang = getCurrentLanguage();\n var normalisedLangs = langs.map(normalizeLanguageKey);\n\n {\n // Best is an exact match\n var currentLangIndex = normalisedLangs.indexOf(currentLang);\n if (currentLangIndex > -1) return langs[currentLangIndex];\n }\n\n {\n // Failing that, a different dialect of the same language\n var closeLangIndex = normalisedLangs.find(function (l) {\n return l.substr(0, 2) === currentLang.substr(0, 2);\n });\n if (closeLangIndex > -1) return langs[closeLangIndex];\n }\n\n {\n // Neither of those? Try an english variant.\n var enIndex = normalisedLangs.find(function (l) {\n return l.startsWith('en');\n });\n if (enIndex > -1) return langs[enIndex];\n }\n\n // if nothing else, use the first\n return langs[0];\n}\n\nfunction getLangsJson() {\n return new _bluebird2.default(function (resolve, reject) {\n var url = void 0;\n try {\n // $webapp is a webpack resolve alias pointing to the output directory, see webpack config\n url = require('$webapp/i18n/languages.json');\n } catch (e) {\n url = i18nFolder + 'languages.json';\n }\n (0, _browserRequest2.default)({ method: \"GET\", url: url }, function (err, response, body) {\n if (err || response.status < 200 || response.status >= 300) {\n reject({ err: err, response: response });\n return;\n }\n resolve(JSON.parse(body));\n });\n });\n}\n\nfunction weblateToCounterpart(inTrs) {\n var outTrs = {};\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(inTrs)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n\n var keyParts = key.split('|', 2);\n if (keyParts.length === 2) {\n var obj = outTrs[keyParts[0]];\n if (obj === undefined) {\n obj = {};\n outTrs[keyParts[0]] = obj;\n }\n obj[keyParts[1]] = inTrs[key];\n } else {\n outTrs[key] = inTrs[key];\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return outTrs;\n}\n\nfunction getLanguage(langPath) {\n return new _bluebird2.default(function (resolve, reject) {\n (0, _browserRequest2.default)({ method: \"GET\", url: langPath }, function (err, response, body) {\n if (err || response.status < 200 || response.status >= 300) {\n reject({ err: err, response: response });\n return;\n }\n resolve(weblateToCounterpart(JSON.parse(body)));\n });\n });\n}\n//# sourceMappingURL=languageHandler.js.map","'use strict';\n\nvar _Skinner = require('./Skinner');\n\nvar _Skinner2 = _interopRequireDefault(_Skinner);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports.loadSkin = function (skinObject) {\n _Skinner2.default.load(skinObject);\n}; /*\n Copyright 2015, 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports.resetSkin = function () {\n _Skinner2.default.reset();\n};\n\nmodule.exports.getComponent = function (componentName) {\n return _Skinner2.default.getComponent(componentName);\n};\n//# sourceMappingURL=index.js.map","module.exports = { \"default\": require(\"core-js/library/fn/object/get-prototype-of\"), __esModule: true };","\"use strict\";\n\nexports.__esModule = true;\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = require(\"../core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};","/* @preserve\n * The MIT License (MIT)\n * \n * Copyright (c) 2013-2018 Petka Antonov\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n * \n */\n/**\n * bluebird build version 3.5.5\n * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each\n*/\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var f;\"undefined\"!=typeof window?f=window:\"undefined\"!=typeof global?f=global:\"undefined\"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_==\"function\"&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof _dereq_==\"function\"&&_dereq_;for(var o=0;o 0) {\n _drainQueueStep(queue);\n }\n}\n\nfunction _drainQueueStep(queue) {\n var fn = queue.shift();\n if (typeof fn !== \"function\") {\n fn._settlePromises();\n } else {\n var receiver = queue.shift();\n var arg = queue.shift();\n fn.call(receiver, arg);\n }\n}\n\nAsync.prototype._drainQueues = function () {\n _drainQueue(this._normalQueue);\n this._reset();\n this._haveDrainedQueues = true;\n _drainQueue(this._lateQueue);\n};\n\nAsync.prototype._queueTick = function () {\n if (!this._isTickUsed) {\n this._isTickUsed = true;\n this._schedule(this.drainQueues);\n }\n};\n\nAsync.prototype._reset = function () {\n this._isTickUsed = false;\n};\n\nmodule.exports = Async;\nmodule.exports.firstLineError = firstLineError;\n\n},{\"./queue\":26,\"./schedule\":29,\"./util\":36}],3:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) {\nvar calledBind = false;\nvar rejectThis = function(_, e) {\n this._reject(e);\n};\n\nvar targetRejected = function(e, context) {\n context.promiseRejectionQueued = true;\n context.bindingPromise._then(rejectThis, rejectThis, null, this, e);\n};\n\nvar bindingResolved = function(thisArg, context) {\n if (((this._bitField & 50397184) === 0)) {\n this._resolveCallback(context.target);\n }\n};\n\nvar bindingRejected = function(e, context) {\n if (!context.promiseRejectionQueued) this._reject(e);\n};\n\nPromise.prototype.bind = function (thisArg) {\n if (!calledBind) {\n calledBind = true;\n Promise.prototype._propagateFrom = debug.propagateFromFunction();\n Promise.prototype._boundValue = debug.boundValueFunction();\n }\n var maybePromise = tryConvertToPromise(thisArg);\n var ret = new Promise(INTERNAL);\n ret._propagateFrom(this, 1);\n var target = this._target();\n ret._setBoundTo(maybePromise);\n if (maybePromise instanceof Promise) {\n var context = {\n promiseRejectionQueued: false,\n promise: ret,\n target: target,\n bindingPromise: maybePromise\n };\n target._then(INTERNAL, targetRejected, undefined, ret, context);\n maybePromise._then(\n bindingResolved, bindingRejected, undefined, ret, context);\n ret._setOnCancel(maybePromise);\n } else {\n ret._resolveCallback(target);\n }\n return ret;\n};\n\nPromise.prototype._setBoundTo = function (obj) {\n if (obj !== undefined) {\n this._bitField = this._bitField | 2097152;\n this._boundTo = obj;\n } else {\n this._bitField = this._bitField & (~2097152);\n }\n};\n\nPromise.prototype._isBound = function () {\n return (this._bitField & 2097152) === 2097152;\n};\n\nPromise.bind = function (thisArg, value) {\n return Promise.resolve(value).bind(thisArg);\n};\n};\n\n},{}],4:[function(_dereq_,module,exports){\n\"use strict\";\nvar old;\nif (typeof Promise !== \"undefined\") old = Promise;\nfunction noConflict() {\n try { if (Promise === bluebird) Promise = old; }\n catch (e) {}\n return bluebird;\n}\nvar bluebird = _dereq_(\"./promise\")();\nbluebird.noConflict = noConflict;\nmodule.exports = bluebird;\n\n},{\"./promise\":22}],5:[function(_dereq_,module,exports){\n\"use strict\";\nvar cr = Object.create;\nif (cr) {\n var callerCache = cr(null);\n var getterCache = cr(null);\n callerCache[\" size\"] = getterCache[\" size\"] = 0;\n}\n\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar isIdentifier = util.isIdentifier;\n\nvar getMethodCaller;\nvar getGetter;\nif (!true) {\nvar makeMethodCaller = function (methodName) {\n return new Function(\"ensureMethod\", \" \\n\\\n return function(obj) { \\n\\\n 'use strict' \\n\\\n var len = this.length; \\n\\\n ensureMethod(obj, 'methodName'); \\n\\\n switch(len) { \\n\\\n case 1: return obj.methodName(this[0]); \\n\\\n case 2: return obj.methodName(this[0], this[1]); \\n\\\n case 3: return obj.methodName(this[0], this[1], this[2]); \\n\\\n case 0: return obj.methodName(); \\n\\\n default: \\n\\\n return obj.methodName.apply(obj, this); \\n\\\n } \\n\\\n }; \\n\\\n \".replace(/methodName/g, methodName))(ensureMethod);\n};\n\nvar makeGetter = function (propertyName) {\n return new Function(\"obj\", \" \\n\\\n 'use strict'; \\n\\\n return obj.propertyName; \\n\\\n \".replace(\"propertyName\", propertyName));\n};\n\nvar getCompiled = function(name, compiler, cache) {\n var ret = cache[name];\n if (typeof ret !== \"function\") {\n if (!isIdentifier(name)) {\n return null;\n }\n ret = compiler(name);\n cache[name] = ret;\n cache[\" size\"]++;\n if (cache[\" size\"] > 512) {\n var keys = Object.keys(cache);\n for (var i = 0; i < 256; ++i) delete cache[keys[i]];\n cache[\" size\"] = keys.length - 256;\n }\n }\n return ret;\n};\n\ngetMethodCaller = function(name) {\n return getCompiled(name, makeMethodCaller, callerCache);\n};\n\ngetGetter = function(name) {\n return getCompiled(name, makeGetter, getterCache);\n};\n}\n\nfunction ensureMethod(obj, methodName) {\n var fn;\n if (obj != null) fn = obj[methodName];\n if (typeof fn !== \"function\") {\n var message = \"Object \" + util.classString(obj) + \" has no method '\" +\n util.toString(methodName) + \"'\";\n throw new Promise.TypeError(message);\n }\n return fn;\n}\n\nfunction caller(obj) {\n var methodName = this.pop();\n var fn = ensureMethod(obj, methodName);\n return fn.apply(obj, this);\n}\nPromise.prototype.call = function (methodName) {\n var args = [].slice.call(arguments, 1);;\n if (!true) {\n if (canEvaluate) {\n var maybeCaller = getMethodCaller(methodName);\n if (maybeCaller !== null) {\n return this._then(\n maybeCaller, undefined, undefined, args, undefined);\n }\n }\n }\n args.push(methodName);\n return this._then(caller, undefined, undefined, args, undefined);\n};\n\nfunction namedGetter(obj) {\n return obj[this];\n}\nfunction indexedGetter(obj) {\n var index = +this;\n if (index < 0) index = Math.max(0, index + obj.length);\n return obj[index];\n}\nPromise.prototype.get = function (propertyName) {\n var isIndex = (typeof propertyName === \"number\");\n var getter;\n if (!isIndex) {\n if (canEvaluate) {\n var maybeGetter = getGetter(propertyName);\n getter = maybeGetter !== null ? maybeGetter : namedGetter;\n } else {\n getter = namedGetter;\n }\n } else {\n getter = indexedGetter;\n }\n return this._then(getter, undefined, undefined, propertyName, undefined);\n};\n};\n\n},{\"./util\":36}],6:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, PromiseArray, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nPromise.prototype[\"break\"] = Promise.prototype.cancel = function() {\n if (!debug.cancellation()) return this._warn(\"cancellation is disabled\");\n\n var promise = this;\n var child = promise;\n while (promise._isCancellable()) {\n if (!promise._cancelBy(child)) {\n if (child._isFollowing()) {\n child._followee().cancel();\n } else {\n child._cancelBranched();\n }\n break;\n }\n\n var parent = promise._cancellationParent;\n if (parent == null || !parent._isCancellable()) {\n if (promise._isFollowing()) {\n promise._followee().cancel();\n } else {\n promise._cancelBranched();\n }\n break;\n } else {\n if (promise._isFollowing()) promise._followee().cancel();\n promise._setWillBeCancelled();\n child = promise;\n promise = parent;\n }\n }\n};\n\nPromise.prototype._branchHasCancelled = function() {\n this._branchesRemainingToCancel--;\n};\n\nPromise.prototype._enoughBranchesHaveCancelled = function() {\n return this._branchesRemainingToCancel === undefined ||\n this._branchesRemainingToCancel <= 0;\n};\n\nPromise.prototype._cancelBy = function(canceller) {\n if (canceller === this) {\n this._branchesRemainingToCancel = 0;\n this._invokeOnCancel();\n return true;\n } else {\n this._branchHasCancelled();\n if (this._enoughBranchesHaveCancelled()) {\n this._invokeOnCancel();\n return true;\n }\n }\n return false;\n};\n\nPromise.prototype._cancelBranched = function() {\n if (this._enoughBranchesHaveCancelled()) {\n this._cancel();\n }\n};\n\nPromise.prototype._cancel = function() {\n if (!this._isCancellable()) return;\n this._setCancelled();\n async.invoke(this._cancelPromises, this, undefined);\n};\n\nPromise.prototype._cancelPromises = function() {\n if (this._length() > 0) this._settlePromises();\n};\n\nPromise.prototype._unsetOnCancel = function() {\n this._onCancelField = undefined;\n};\n\nPromise.prototype._isCancellable = function() {\n return this.isPending() && !this._isCancelled();\n};\n\nPromise.prototype.isCancellable = function() {\n return this.isPending() && !this.isCancelled();\n};\n\nPromise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) {\n if (util.isArray(onCancelCallback)) {\n for (var i = 0; i < onCancelCallback.length; ++i) {\n this._doInvokeOnCancel(onCancelCallback[i], internalOnly);\n }\n } else if (onCancelCallback !== undefined) {\n if (typeof onCancelCallback === \"function\") {\n if (!internalOnly) {\n var e = tryCatch(onCancelCallback).call(this._boundValue());\n if (e === errorObj) {\n this._attachExtraTrace(e.e);\n async.throwLater(e.e);\n }\n }\n } else {\n onCancelCallback._resultCancelled(this);\n }\n }\n};\n\nPromise.prototype._invokeOnCancel = function() {\n var onCancelCallback = this._onCancel();\n this._unsetOnCancel();\n async.invoke(this._doInvokeOnCancel, this, onCancelCallback);\n};\n\nPromise.prototype._invokeInternalOnCancel = function() {\n if (this._isCancellable()) {\n this._doInvokeOnCancel(this._onCancel(), true);\n this._unsetOnCancel();\n }\n};\n\nPromise.prototype._resultCancelled = function() {\n this.cancel();\n};\n\n};\n\n},{\"./util\":36}],7:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar getKeys = _dereq_(\"./es5\").keys;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction catchFilter(instances, cb, promise) {\n return function(e) {\n var boundTo = promise._boundValue();\n predicateLoop: for (var i = 0; i < instances.length; ++i) {\n var item = instances[i];\n\n if (item === Error ||\n (item != null && item.prototype instanceof Error)) {\n if (e instanceof item) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (typeof item === \"function\") {\n var matchesPredicate = tryCatch(item).call(boundTo, e);\n if (matchesPredicate === errorObj) {\n return matchesPredicate;\n } else if (matchesPredicate) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (util.isObject(e)) {\n var keys = getKeys(item);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n if (item[key] != e[key]) {\n continue predicateLoop;\n }\n }\n return tryCatch(cb).call(boundTo, e);\n }\n }\n return NEXT_FILTER;\n };\n}\n\nreturn catchFilter;\n};\n\n},{\"./es5\":13,\"./util\":36}],8:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar longStackTraces = false;\nvar contextStack = [];\n\nPromise.prototype._promiseCreated = function() {};\nPromise.prototype._pushContext = function() {};\nPromise.prototype._popContext = function() {return null;};\nPromise._peekContext = Promise.prototype._peekContext = function() {};\n\nfunction Context() {\n this._trace = new Context.CapturedTrace(peekContext());\n}\nContext.prototype._pushContext = function () {\n if (this._trace !== undefined) {\n this._trace._promiseCreated = null;\n contextStack.push(this._trace);\n }\n};\n\nContext.prototype._popContext = function () {\n if (this._trace !== undefined) {\n var trace = contextStack.pop();\n var ret = trace._promiseCreated;\n trace._promiseCreated = null;\n return ret;\n }\n return null;\n};\n\nfunction createContext() {\n if (longStackTraces) return new Context();\n}\n\nfunction peekContext() {\n var lastIndex = contextStack.length - 1;\n if (lastIndex >= 0) {\n return contextStack[lastIndex];\n }\n return undefined;\n}\nContext.CapturedTrace = null;\nContext.create = createContext;\nContext.deactivateLongStackTraces = function() {};\nContext.activateLongStackTraces = function() {\n var Promise_pushContext = Promise.prototype._pushContext;\n var Promise_popContext = Promise.prototype._popContext;\n var Promise_PeekContext = Promise._peekContext;\n var Promise_peekContext = Promise.prototype._peekContext;\n var Promise_promiseCreated = Promise.prototype._promiseCreated;\n Context.deactivateLongStackTraces = function() {\n Promise.prototype._pushContext = Promise_pushContext;\n Promise.prototype._popContext = Promise_popContext;\n Promise._peekContext = Promise_PeekContext;\n Promise.prototype._peekContext = Promise_peekContext;\n Promise.prototype._promiseCreated = Promise_promiseCreated;\n longStackTraces = false;\n };\n longStackTraces = true;\n Promise.prototype._pushContext = Context.prototype._pushContext;\n Promise.prototype._popContext = Context.prototype._popContext;\n Promise._peekContext = Promise.prototype._peekContext = peekContext;\n Promise.prototype._promiseCreated = function() {\n var ctx = this._peekContext();\n if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;\n };\n};\nreturn Context;\n};\n\n},{}],9:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, Context) {\nvar getDomain = Promise._getDomain;\nvar async = Promise._async;\nvar Warning = _dereq_(\"./errors\").Warning;\nvar util = _dereq_(\"./util\");\nvar es5 = _dereq_(\"./es5\");\nvar canAttachTrace = util.canAttachTrace;\nvar unhandledRejectionHandled;\nvar possiblyUnhandledRejection;\nvar bluebirdFramePattern =\n /[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/;\nvar nodeFramePattern = /\\((?:timers\\.js):\\d+:\\d+\\)/;\nvar parseLinePattern = /[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/;\nvar stackFramePattern = null;\nvar formatStack = null;\nvar indentStackFrames = false;\nvar printWarning;\nvar debugging = !!(util.env(\"BLUEBIRD_DEBUG\") != 0 &&\n (true ||\n util.env(\"BLUEBIRD_DEBUG\") ||\n util.env(\"NODE_ENV\") === \"development\"));\n\nvar warnings = !!(util.env(\"BLUEBIRD_WARNINGS\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_WARNINGS\")));\n\nvar longStackTraces = !!(util.env(\"BLUEBIRD_LONG_STACK_TRACES\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_LONG_STACK_TRACES\")));\n\nvar wForgottenReturn = util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\") != 0 &&\n (warnings || !!util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));\n\nPromise.prototype.suppressUnhandledRejections = function() {\n var target = this._target();\n target._bitField = ((target._bitField & (~1048576)) |\n 524288);\n};\n\nPromise.prototype._ensurePossibleRejectionHandled = function () {\n if ((this._bitField & 524288) !== 0) return;\n this._setRejectionIsUnhandled();\n var self = this;\n setTimeout(function() {\n self._notifyUnhandledRejection();\n }, 1);\n};\n\nPromise.prototype._notifyUnhandledRejectionIsHandled = function () {\n fireRejectionEvent(\"rejectionHandled\",\n unhandledRejectionHandled, undefined, this);\n};\n\nPromise.prototype._setReturnedNonUndefined = function() {\n this._bitField = this._bitField | 268435456;\n};\n\nPromise.prototype._returnedNonUndefined = function() {\n return (this._bitField & 268435456) !== 0;\n};\n\nPromise.prototype._notifyUnhandledRejection = function () {\n if (this._isRejectionUnhandled()) {\n var reason = this._settledValue();\n this._setUnhandledRejectionIsNotified();\n fireRejectionEvent(\"unhandledRejection\",\n possiblyUnhandledRejection, reason, this);\n }\n};\n\nPromise.prototype._setUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField | 262144;\n};\n\nPromise.prototype._unsetUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField & (~262144);\n};\n\nPromise.prototype._isUnhandledRejectionNotified = function () {\n return (this._bitField & 262144) > 0;\n};\n\nPromise.prototype._setRejectionIsUnhandled = function () {\n this._bitField = this._bitField | 1048576;\n};\n\nPromise.prototype._unsetRejectionIsUnhandled = function () {\n this._bitField = this._bitField & (~1048576);\n if (this._isUnhandledRejectionNotified()) {\n this._unsetUnhandledRejectionIsNotified();\n this._notifyUnhandledRejectionIsHandled();\n }\n};\n\nPromise.prototype._isRejectionUnhandled = function () {\n return (this._bitField & 1048576) > 0;\n};\n\nPromise.prototype._warn = function(message, shouldUseOwnTrace, promise) {\n return warn(message, shouldUseOwnTrace, promise || this);\n};\n\nPromise.onPossiblyUnhandledRejection = function (fn) {\n var domain = getDomain();\n possiblyUnhandledRejection =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nPromise.onUnhandledRejectionHandled = function (fn) {\n var domain = getDomain();\n unhandledRejectionHandled =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nvar disableLongStackTraces = function() {};\nPromise.longStackTraces = function () {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (!config.longStackTraces && longStackTracesIsSupported()) {\n var Promise_captureStackTrace = Promise.prototype._captureStackTrace;\n var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace;\n var Promise_dereferenceTrace = Promise.prototype._dereferenceTrace;\n config.longStackTraces = true;\n disableLongStackTraces = function() {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n Promise.prototype._captureStackTrace = Promise_captureStackTrace;\n Promise.prototype._attachExtraTrace = Promise_attachExtraTrace;\n Promise.prototype._dereferenceTrace = Promise_dereferenceTrace;\n Context.deactivateLongStackTraces();\n async.enableTrampoline();\n config.longStackTraces = false;\n };\n Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;\n Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;\n Promise.prototype._dereferenceTrace = longStackTracesDereferenceTrace;\n Context.activateLongStackTraces();\n async.disableTrampolineIfNecessary();\n }\n};\n\nPromise.hasLongStackTraces = function () {\n return config.longStackTraces && longStackTracesIsSupported();\n};\n\nvar fireDomEvent = (function() {\n try {\n if (typeof CustomEvent === \"function\") {\n var event = new CustomEvent(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n var eventData = {\n detail: event,\n cancelable: true\n };\n es5.defineProperty(\n eventData, \"promise\", {value: event.promise});\n es5.defineProperty(eventData, \"reason\", {value: event.reason});\n var domEvent = new CustomEvent(name.toLowerCase(), eventData);\n return !util.global.dispatchEvent(domEvent);\n };\n } else if (typeof Event === \"function\") {\n var event = new Event(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = new Event(name.toLowerCase(), {\n cancelable: true\n });\n domEvent.detail = event;\n es5.defineProperty(domEvent, \"promise\", {value: event.promise});\n es5.defineProperty(domEvent, \"reason\", {value: event.reason});\n return !util.global.dispatchEvent(domEvent);\n };\n } else {\n var event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(\"testingtheevent\", false, true, {});\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = document.createEvent(\"CustomEvent\");\n domEvent.initCustomEvent(name.toLowerCase(), false, true,\n event);\n return !util.global.dispatchEvent(domEvent);\n };\n }\n } catch (e) {}\n return function() {\n return false;\n };\n})();\n\nvar fireGlobalEvent = (function() {\n if (util.isNode) {\n return function() {\n return process.emit.apply(process, arguments);\n };\n } else {\n if (!util.global) {\n return function() {\n return false;\n };\n }\n return function(name) {\n var methodName = \"on\" + name.toLowerCase();\n var method = util.global[methodName];\n if (!method) return false;\n method.apply(util.global, [].slice.call(arguments, 1));\n return true;\n };\n }\n})();\n\nfunction generatePromiseLifecycleEventObject(name, promise) {\n return {promise: promise};\n}\n\nvar eventToObjectGenerator = {\n promiseCreated: generatePromiseLifecycleEventObject,\n promiseFulfilled: generatePromiseLifecycleEventObject,\n promiseRejected: generatePromiseLifecycleEventObject,\n promiseResolved: generatePromiseLifecycleEventObject,\n promiseCancelled: generatePromiseLifecycleEventObject,\n promiseChained: function(name, promise, child) {\n return {promise: promise, child: child};\n },\n warning: function(name, warning) {\n return {warning: warning};\n },\n unhandledRejection: function (name, reason, promise) {\n return {reason: reason, promise: promise};\n },\n rejectionHandled: generatePromiseLifecycleEventObject\n};\n\nvar activeFireEvent = function (name) {\n var globalEventFired = false;\n try {\n globalEventFired = fireGlobalEvent.apply(null, arguments);\n } catch (e) {\n async.throwLater(e);\n globalEventFired = true;\n }\n\n var domEventFired = false;\n try {\n domEventFired = fireDomEvent(name,\n eventToObjectGenerator[name].apply(null, arguments));\n } catch (e) {\n async.throwLater(e);\n domEventFired = true;\n }\n\n return domEventFired || globalEventFired;\n};\n\nPromise.config = function(opts) {\n opts = Object(opts);\n if (\"longStackTraces\" in opts) {\n if (opts.longStackTraces) {\n Promise.longStackTraces();\n } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) {\n disableLongStackTraces();\n }\n }\n if (\"warnings\" in opts) {\n var warningsOption = opts.warnings;\n config.warnings = !!warningsOption;\n wForgottenReturn = config.warnings;\n\n if (util.isObject(warningsOption)) {\n if (\"wForgottenReturn\" in warningsOption) {\n wForgottenReturn = !!warningsOption.wForgottenReturn;\n }\n }\n }\n if (\"cancellation\" in opts && opts.cancellation && !config.cancellation) {\n if (async.haveItemsQueued()) {\n throw new Error(\n \"cannot enable cancellation after promises are in use\");\n }\n Promise.prototype._clearCancellationData =\n cancellationClearCancellationData;\n Promise.prototype._propagateFrom = cancellationPropagateFrom;\n Promise.prototype._onCancel = cancellationOnCancel;\n Promise.prototype._setOnCancel = cancellationSetOnCancel;\n Promise.prototype._attachCancellationCallback =\n cancellationAttachCancellationCallback;\n Promise.prototype._execute = cancellationExecute;\n propagateFromFunction = cancellationPropagateFrom;\n config.cancellation = true;\n }\n if (\"monitoring\" in opts) {\n if (opts.monitoring && !config.monitoring) {\n config.monitoring = true;\n Promise.prototype._fireEvent = activeFireEvent;\n } else if (!opts.monitoring && config.monitoring) {\n config.monitoring = false;\n Promise.prototype._fireEvent = defaultFireEvent;\n }\n }\n return Promise;\n};\n\nfunction defaultFireEvent() { return false; }\n\nPromise.prototype._fireEvent = defaultFireEvent;\nPromise.prototype._execute = function(executor, resolve, reject) {\n try {\n executor(resolve, reject);\n } catch (e) {\n return e;\n }\n};\nPromise.prototype._onCancel = function () {};\nPromise.prototype._setOnCancel = function (handler) { ; };\nPromise.prototype._attachCancellationCallback = function(onCancel) {\n ;\n};\nPromise.prototype._captureStackTrace = function () {};\nPromise.prototype._attachExtraTrace = function () {};\nPromise.prototype._dereferenceTrace = function () {};\nPromise.prototype._clearCancellationData = function() {};\nPromise.prototype._propagateFrom = function (parent, flags) {\n ;\n ;\n};\n\nfunction cancellationExecute(executor, resolve, reject) {\n var promise = this;\n try {\n executor(resolve, reject, function(onCancel) {\n if (typeof onCancel !== \"function\") {\n throw new TypeError(\"onCancel must be a function, got: \" +\n util.toString(onCancel));\n }\n promise._attachCancellationCallback(onCancel);\n });\n } catch (e) {\n return e;\n }\n}\n\nfunction cancellationAttachCancellationCallback(onCancel) {\n if (!this._isCancellable()) return this;\n\n var previousOnCancel = this._onCancel();\n if (previousOnCancel !== undefined) {\n if (util.isArray(previousOnCancel)) {\n previousOnCancel.push(onCancel);\n } else {\n this._setOnCancel([previousOnCancel, onCancel]);\n }\n } else {\n this._setOnCancel(onCancel);\n }\n}\n\nfunction cancellationOnCancel() {\n return this._onCancelField;\n}\n\nfunction cancellationSetOnCancel(onCancel) {\n this._onCancelField = onCancel;\n}\n\nfunction cancellationClearCancellationData() {\n this._cancellationParent = undefined;\n this._onCancelField = undefined;\n}\n\nfunction cancellationPropagateFrom(parent, flags) {\n if ((flags & 1) !== 0) {\n this._cancellationParent = parent;\n var branchesRemainingToCancel = parent._branchesRemainingToCancel;\n if (branchesRemainingToCancel === undefined) {\n branchesRemainingToCancel = 0;\n }\n parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;\n }\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\n\nfunction bindingPropagateFrom(parent, flags) {\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\nvar propagateFromFunction = bindingPropagateFrom;\n\nfunction boundValueFunction() {\n var ret = this._boundTo;\n if (ret !== undefined) {\n if (ret instanceof Promise) {\n if (ret.isFulfilled()) {\n return ret.value();\n } else {\n return undefined;\n }\n }\n }\n return ret;\n}\n\nfunction longStackTracesCaptureStackTrace() {\n this._trace = new CapturedTrace(this._peekContext());\n}\n\nfunction longStackTracesAttachExtraTrace(error, ignoreSelf) {\n if (canAttachTrace(error)) {\n var trace = this._trace;\n if (trace !== undefined) {\n if (ignoreSelf) trace = trace._parent;\n }\n if (trace !== undefined) {\n trace.attachExtraTrace(error);\n } else if (!error.__stackCleaned__) {\n var parsed = parseStackAndMessage(error);\n util.notEnumerableProp(error, \"stack\",\n parsed.message + \"\\n\" + parsed.stack.join(\"\\n\"));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n }\n }\n}\n\nfunction longStackTracesDereferenceTrace() {\n this._trace = undefined;\n}\n\nfunction checkForgottenReturns(returnValue, promiseCreated, name, promise,\n parent) {\n if (returnValue === undefined && promiseCreated !== null &&\n wForgottenReturn) {\n if (parent !== undefined && parent._returnedNonUndefined()) return;\n if ((promise._bitField & 65535) === 0) return;\n\n if (name) name = name + \" \";\n var handlerLine = \"\";\n var creatorLine = \"\";\n if (promiseCreated._trace) {\n var traceLines = promiseCreated._trace.stack.split(\"\\n\");\n var stack = cleanStack(traceLines);\n for (var i = stack.length - 1; i >= 0; --i) {\n var line = stack[i];\n if (!nodeFramePattern.test(line)) {\n var lineMatches = line.match(parseLinePattern);\n if (lineMatches) {\n handlerLine = \"at \" + lineMatches[1] +\n \":\" + lineMatches[2] + \":\" + lineMatches[3] + \" \";\n }\n break;\n }\n }\n\n if (stack.length > 0) {\n var firstUserLine = stack[0];\n for (var i = 0; i < traceLines.length; ++i) {\n\n if (traceLines[i] === firstUserLine) {\n if (i > 0) {\n creatorLine = \"\\n\" + traceLines[i - 1];\n }\n break;\n }\n }\n\n }\n }\n var msg = \"a promise was created in a \" + name +\n \"handler \" + handlerLine + \"but was not returned from it, \" +\n \"see http://goo.gl/rRqMUw\" +\n creatorLine;\n promise._warn(msg, true, promiseCreated);\n }\n}\n\nfunction deprecated(name, replacement) {\n var message = name +\n \" is deprecated and will be removed in a future version.\";\n if (replacement) message += \" Use \" + replacement + \" instead.\";\n return warn(message);\n}\n\nfunction warn(message, shouldUseOwnTrace, promise) {\n if (!config.warnings) return;\n var warning = new Warning(message);\n var ctx;\n if (shouldUseOwnTrace) {\n promise._attachExtraTrace(warning);\n } else if (config.longStackTraces && (ctx = Promise._peekContext())) {\n ctx.attachExtraTrace(warning);\n } else {\n var parsed = parseStackAndMessage(warning);\n warning.stack = parsed.message + \"\\n\" + parsed.stack.join(\"\\n\");\n }\n\n if (!activeFireEvent(\"warning\", warning)) {\n formatAndLogError(warning, \"\", true);\n }\n}\n\nfunction reconstructStack(message, stacks) {\n for (var i = 0; i < stacks.length - 1; ++i) {\n stacks[i].push(\"From previous event:\");\n stacks[i] = stacks[i].join(\"\\n\");\n }\n if (i < stacks.length) {\n stacks[i] = stacks[i].join(\"\\n\");\n }\n return message + \"\\n\" + stacks.join(\"\\n\");\n}\n\nfunction removeDuplicateOrEmptyJumps(stacks) {\n for (var i = 0; i < stacks.length; ++i) {\n if (stacks[i].length === 0 ||\n ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) {\n stacks.splice(i, 1);\n i--;\n }\n }\n}\n\nfunction removeCommonRoots(stacks) {\n var current = stacks[0];\n for (var i = 1; i < stacks.length; ++i) {\n var prev = stacks[i];\n var currentLastIndex = current.length - 1;\n var currentLastLine = current[currentLastIndex];\n var commonRootMeetPoint = -1;\n\n for (var j = prev.length - 1; j >= 0; --j) {\n if (prev[j] === currentLastLine) {\n commonRootMeetPoint = j;\n break;\n }\n }\n\n for (var j = commonRootMeetPoint; j >= 0; --j) {\n var line = prev[j];\n if (current[currentLastIndex] === line) {\n current.pop();\n currentLastIndex--;\n } else {\n break;\n }\n }\n current = prev;\n }\n}\n\nfunction cleanStack(stack) {\n var ret = [];\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n var isTraceLine = \" (No stack trace)\" === line ||\n stackFramePattern.test(line);\n var isInternalFrame = isTraceLine && shouldIgnore(line);\n if (isTraceLine && !isInternalFrame) {\n if (indentStackFrames && line.charAt(0) !== \" \") {\n line = \" \" + line;\n }\n ret.push(line);\n }\n }\n return ret;\n}\n\nfunction stackFramesAsArray(error) {\n var stack = error.stack.replace(/\\s+$/g, \"\").split(\"\\n\");\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n if (\" (No stack trace)\" === line || stackFramePattern.test(line)) {\n break;\n }\n }\n if (i > 0 && error.name != \"SyntaxError\") {\n stack = stack.slice(i);\n }\n return stack;\n}\n\nfunction parseStackAndMessage(error) {\n var stack = error.stack;\n var message = error.toString();\n stack = typeof stack === \"string\" && stack.length > 0\n ? stackFramesAsArray(error) : [\" (No stack trace)\"];\n return {\n message: message,\n stack: error.name == \"SyntaxError\" ? stack : cleanStack(stack)\n };\n}\n\nfunction formatAndLogError(error, title, isSoft) {\n if (typeof console !== \"undefined\") {\n var message;\n if (util.isObject(error)) {\n var stack = error.stack;\n message = title + formatStack(stack, error);\n } else {\n message = title + String(error);\n }\n if (typeof printWarning === \"function\") {\n printWarning(message, isSoft);\n } else if (typeof console.log === \"function\" ||\n typeof console.log === \"object\") {\n console.log(message);\n }\n }\n}\n\nfunction fireRejectionEvent(name, localHandler, reason, promise) {\n var localEventFired = false;\n try {\n if (typeof localHandler === \"function\") {\n localEventFired = true;\n if (name === \"rejectionHandled\") {\n localHandler(promise);\n } else {\n localHandler(reason, promise);\n }\n }\n } catch (e) {\n async.throwLater(e);\n }\n\n if (name === \"unhandledRejection\") {\n if (!activeFireEvent(name, reason, promise) && !localEventFired) {\n formatAndLogError(reason, \"Unhandled rejection \");\n }\n } else {\n activeFireEvent(name, promise);\n }\n}\n\nfunction formatNonError(obj) {\n var str;\n if (typeof obj === \"function\") {\n str = \"[function \" +\n (obj.name || \"anonymous\") +\n \"]\";\n } else {\n str = obj && typeof obj.toString === \"function\"\n ? obj.toString() : util.toString(obj);\n var ruselessToString = /\\[object [a-zA-Z0-9$_]+\\]/;\n if (ruselessToString.test(str)) {\n try {\n var newStr = JSON.stringify(obj);\n str = newStr;\n }\n catch(e) {\n\n }\n }\n if (str.length === 0) {\n str = \"(empty array)\";\n }\n }\n return (\"(<\" + snip(str) + \">, no stack trace)\");\n}\n\nfunction snip(str) {\n var maxChars = 41;\n if (str.length < maxChars) {\n return str;\n }\n return str.substr(0, maxChars - 3) + \"...\";\n}\n\nfunction longStackTracesIsSupported() {\n return typeof captureStackTrace === \"function\";\n}\n\nvar shouldIgnore = function() { return false; };\nvar parseLineInfoRegex = /[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;\nfunction parseLineInfo(line) {\n var matches = line.match(parseLineInfoRegex);\n if (matches) {\n return {\n fileName: matches[1],\n line: parseInt(matches[2], 10)\n };\n }\n}\n\nfunction setBounds(firstLineError, lastLineError) {\n if (!longStackTracesIsSupported()) return;\n var firstStackLines = (firstLineError.stack || \"\").split(\"\\n\");\n var lastStackLines = (lastLineError.stack || \"\").split(\"\\n\");\n var firstIndex = -1;\n var lastIndex = -1;\n var firstFileName;\n var lastFileName;\n for (var i = 0; i < firstStackLines.length; ++i) {\n var result = parseLineInfo(firstStackLines[i]);\n if (result) {\n firstFileName = result.fileName;\n firstIndex = result.line;\n break;\n }\n }\n for (var i = 0; i < lastStackLines.length; ++i) {\n var result = parseLineInfo(lastStackLines[i]);\n if (result) {\n lastFileName = result.fileName;\n lastIndex = result.line;\n break;\n }\n }\n if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName ||\n firstFileName !== lastFileName || firstIndex >= lastIndex) {\n return;\n }\n\n shouldIgnore = function(line) {\n if (bluebirdFramePattern.test(line)) return true;\n var info = parseLineInfo(line);\n if (info) {\n if (info.fileName === firstFileName &&\n (firstIndex <= info.line && info.line <= lastIndex)) {\n return true;\n }\n }\n return false;\n };\n}\n\nfunction CapturedTrace(parent) {\n this._parent = parent;\n this._promisesCreated = 0;\n var length = this._length = 1 + (parent === undefined ? 0 : parent._length);\n captureStackTrace(this, CapturedTrace);\n if (length > 32) this.uncycle();\n}\nutil.inherits(CapturedTrace, Error);\nContext.CapturedTrace = CapturedTrace;\n\nCapturedTrace.prototype.uncycle = function() {\n var length = this._length;\n if (length < 2) return;\n var nodes = [];\n var stackToIndex = {};\n\n for (var i = 0, node = this; node !== undefined; ++i) {\n nodes.push(node);\n node = node._parent;\n }\n length = this._length = i;\n for (var i = length - 1; i >= 0; --i) {\n var stack = nodes[i].stack;\n if (stackToIndex[stack] === undefined) {\n stackToIndex[stack] = i;\n }\n }\n for (var i = 0; i < length; ++i) {\n var currentStack = nodes[i].stack;\n var index = stackToIndex[currentStack];\n if (index !== undefined && index !== i) {\n if (index > 0) {\n nodes[index - 1]._parent = undefined;\n nodes[index - 1]._length = 1;\n }\n nodes[i]._parent = undefined;\n nodes[i]._length = 1;\n var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;\n\n if (index < length - 1) {\n cycleEdgeNode._parent = nodes[index + 1];\n cycleEdgeNode._parent.uncycle();\n cycleEdgeNode._length =\n cycleEdgeNode._parent._length + 1;\n } else {\n cycleEdgeNode._parent = undefined;\n cycleEdgeNode._length = 1;\n }\n var currentChildLength = cycleEdgeNode._length + 1;\n for (var j = i - 2; j >= 0; --j) {\n nodes[j]._length = currentChildLength;\n currentChildLength++;\n }\n return;\n }\n }\n};\n\nCapturedTrace.prototype.attachExtraTrace = function(error) {\n if (error.__stackCleaned__) return;\n this.uncycle();\n var parsed = parseStackAndMessage(error);\n var message = parsed.message;\n var stacks = [parsed.stack];\n\n var trace = this;\n while (trace !== undefined) {\n stacks.push(cleanStack(trace.stack.split(\"\\n\")));\n trace = trace._parent;\n }\n removeCommonRoots(stacks);\n removeDuplicateOrEmptyJumps(stacks);\n util.notEnumerableProp(error, \"stack\", reconstructStack(message, stacks));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n};\n\nvar captureStackTrace = (function stackDetection() {\n var v8stackFramePattern = /^\\s*at\\s*/;\n var v8stackFormatter = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if (error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n if (typeof Error.stackTraceLimit === \"number\" &&\n typeof Error.captureStackTrace === \"function\") {\n Error.stackTraceLimit += 6;\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n var captureStackTrace = Error.captureStackTrace;\n\n shouldIgnore = function(line) {\n return bluebirdFramePattern.test(line);\n };\n return function(receiver, ignoreUntil) {\n Error.stackTraceLimit += 6;\n captureStackTrace(receiver, ignoreUntil);\n Error.stackTraceLimit -= 6;\n };\n }\n var err = new Error();\n\n if (typeof err.stack === \"string\" &&\n err.stack.split(\"\\n\")[0].indexOf(\"stackDetection@\") >= 0) {\n stackFramePattern = /@/;\n formatStack = v8stackFormatter;\n indentStackFrames = true;\n return function captureStackTrace(o) {\n o.stack = new Error().stack;\n };\n }\n\n var hasStackAfterThrow;\n try { throw new Error(); }\n catch(e) {\n hasStackAfterThrow = (\"stack\" in e);\n }\n if (!(\"stack\" in err) && hasStackAfterThrow &&\n typeof Error.stackTraceLimit === \"number\") {\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n return function captureStackTrace(o) {\n Error.stackTraceLimit += 6;\n try { throw new Error(); }\n catch(e) { o.stack = e.stack; }\n Error.stackTraceLimit -= 6;\n };\n }\n\n formatStack = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if ((typeof error === \"object\" ||\n typeof error === \"function\") &&\n error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n return null;\n\n})([]);\n\nif (typeof console !== \"undefined\" && typeof console.warn !== \"undefined\") {\n printWarning = function (message) {\n console.warn(message);\n };\n if (util.isNode && process.stderr.isTTY) {\n printWarning = function(message, isSoft) {\n var color = isSoft ? \"\\u001b[33m\" : \"\\u001b[31m\";\n console.warn(color + message + \"\\u001b[0m\\n\");\n };\n } else if (!util.isNode && typeof (new Error().stack) === \"string\") {\n printWarning = function(message, isSoft) {\n console.warn(\"%c\" + message,\n isSoft ? \"color: darkorange\" : \"color: red\");\n };\n }\n}\n\nvar config = {\n warnings: warnings,\n longStackTraces: false,\n cancellation: false,\n monitoring: false\n};\n\nif (longStackTraces) Promise.longStackTraces();\n\nreturn {\n longStackTraces: function() {\n return config.longStackTraces;\n },\n warnings: function() {\n return config.warnings;\n },\n cancellation: function() {\n return config.cancellation;\n },\n monitoring: function() {\n return config.monitoring;\n },\n propagateFromFunction: function() {\n return propagateFromFunction;\n },\n boundValueFunction: function() {\n return boundValueFunction;\n },\n checkForgottenReturns: checkForgottenReturns,\n setBounds: setBounds,\n warn: warn,\n deprecated: deprecated,\n CapturedTrace: CapturedTrace,\n fireDomEvent: fireDomEvent,\n fireGlobalEvent: fireGlobalEvent\n};\n};\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],10:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction returner() {\n return this.value;\n}\nfunction thrower() {\n throw this.reason;\n}\n\nPromise.prototype[\"return\"] =\nPromise.prototype.thenReturn = function (value) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n returner, undefined, undefined, {value: value}, undefined);\n};\n\nPromise.prototype[\"throw\"] =\nPromise.prototype.thenThrow = function (reason) {\n return this._then(\n thrower, undefined, undefined, {reason: reason}, undefined);\n};\n\nPromise.prototype.catchThrow = function (reason) {\n if (arguments.length <= 1) {\n return this._then(\n undefined, thrower, undefined, {reason: reason}, undefined);\n } else {\n var _reason = arguments[1];\n var handler = function() {throw _reason;};\n return this.caught(reason, handler);\n }\n};\n\nPromise.prototype.catchReturn = function (value) {\n if (arguments.length <= 1) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n undefined, returner, undefined, {value: value}, undefined);\n } else {\n var _value = arguments[1];\n if (_value instanceof Promise) _value.suppressUnhandledRejections();\n var handler = function() {return _value;};\n return this.caught(value, handler);\n }\n};\n};\n\n},{}],11:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseReduce = Promise.reduce;\nvar PromiseAll = Promise.all;\n\nfunction promiseAllThis() {\n return PromiseAll(this);\n}\n\nfunction PromiseMapSeries(promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, INTERNAL);\n}\n\nPromise.prototype.each = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, this, undefined);\n};\n\nPromise.prototype.mapSeries = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, INTERNAL);\n};\n\nPromise.each = function (promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, promises, undefined);\n};\n\nPromise.mapSeries = PromiseMapSeries;\n};\n\n\n},{}],12:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar Objectfreeze = es5.freeze;\nvar util = _dereq_(\"./util\");\nvar inherits = util.inherits;\nvar notEnumerableProp = util.notEnumerableProp;\n\nfunction subError(nameProperty, defaultMessage) {\n function SubError(message) {\n if (!(this instanceof SubError)) return new SubError(message);\n notEnumerableProp(this, \"message\",\n typeof message === \"string\" ? message : defaultMessage);\n notEnumerableProp(this, \"name\", nameProperty);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n Error.call(this);\n }\n }\n inherits(SubError, Error);\n return SubError;\n}\n\nvar _TypeError, _RangeError;\nvar Warning = subError(\"Warning\", \"warning\");\nvar CancellationError = subError(\"CancellationError\", \"cancellation error\");\nvar TimeoutError = subError(\"TimeoutError\", \"timeout error\");\nvar AggregateError = subError(\"AggregateError\", \"aggregate error\");\ntry {\n _TypeError = TypeError;\n _RangeError = RangeError;\n} catch(e) {\n _TypeError = subError(\"TypeError\", \"type error\");\n _RangeError = subError(\"RangeError\", \"range error\");\n}\n\nvar methods = (\"join pop push shift unshift slice filter forEach some \" +\n \"every map indexOf lastIndexOf reduce reduceRight sort reverse\").split(\" \");\n\nfor (var i = 0; i < methods.length; ++i) {\n if (typeof Array.prototype[methods[i]] === \"function\") {\n AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];\n }\n}\n\nes5.defineProperty(AggregateError.prototype, \"length\", {\n value: 0,\n configurable: false,\n writable: true,\n enumerable: true\n});\nAggregateError.prototype[\"isOperational\"] = true;\nvar level = 0;\nAggregateError.prototype.toString = function() {\n var indent = Array(level * 4 + 1).join(\" \");\n var ret = \"\\n\" + indent + \"AggregateError of:\" + \"\\n\";\n level++;\n indent = Array(level * 4 + 1).join(\" \");\n for (var i = 0; i < this.length; ++i) {\n var str = this[i] === this ? \"[Circular AggregateError]\" : this[i] + \"\";\n var lines = str.split(\"\\n\");\n for (var j = 0; j < lines.length; ++j) {\n lines[j] = indent + lines[j];\n }\n str = lines.join(\"\\n\");\n ret += str + \"\\n\";\n }\n level--;\n return ret;\n};\n\nfunction OperationalError(message) {\n if (!(this instanceof OperationalError))\n return new OperationalError(message);\n notEnumerableProp(this, \"name\", \"OperationalError\");\n notEnumerableProp(this, \"message\", message);\n this.cause = message;\n this[\"isOperational\"] = true;\n\n if (message instanceof Error) {\n notEnumerableProp(this, \"message\", message.message);\n notEnumerableProp(this, \"stack\", message.stack);\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n}\ninherits(OperationalError, Error);\n\nvar errorTypes = Error[\"__BluebirdErrorTypes__\"];\nif (!errorTypes) {\n errorTypes = Objectfreeze({\n CancellationError: CancellationError,\n TimeoutError: TimeoutError,\n OperationalError: OperationalError,\n RejectionError: OperationalError,\n AggregateError: AggregateError\n });\n es5.defineProperty(Error, \"__BluebirdErrorTypes__\", {\n value: errorTypes,\n writable: false,\n enumerable: false,\n configurable: false\n });\n}\n\nmodule.exports = {\n Error: Error,\n TypeError: _TypeError,\n RangeError: _RangeError,\n CancellationError: errorTypes.CancellationError,\n OperationalError: errorTypes.OperationalError,\n TimeoutError: errorTypes.TimeoutError,\n AggregateError: errorTypes.AggregateError,\n Warning: Warning\n};\n\n},{\"./es5\":13,\"./util\":36}],13:[function(_dereq_,module,exports){\nvar isES5 = (function(){\n \"use strict\";\n return this === undefined;\n})();\n\nif (isES5) {\n module.exports = {\n freeze: Object.freeze,\n defineProperty: Object.defineProperty,\n getDescriptor: Object.getOwnPropertyDescriptor,\n keys: Object.keys,\n names: Object.getOwnPropertyNames,\n getPrototypeOf: Object.getPrototypeOf,\n isArray: Array.isArray,\n isES5: isES5,\n propertyIsWritable: function(obj, prop) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n return !!(!descriptor || descriptor.writable || descriptor.set);\n }\n };\n} else {\n var has = {}.hasOwnProperty;\n var str = {}.toString;\n var proto = {}.constructor.prototype;\n\n var ObjectKeys = function (o) {\n var ret = [];\n for (var key in o) {\n if (has.call(o, key)) {\n ret.push(key);\n }\n }\n return ret;\n };\n\n var ObjectGetDescriptor = function(o, key) {\n return {value: o[key]};\n };\n\n var ObjectDefineProperty = function (o, key, desc) {\n o[key] = desc.value;\n return o;\n };\n\n var ObjectFreeze = function (obj) {\n return obj;\n };\n\n var ObjectGetPrototypeOf = function (obj) {\n try {\n return Object(obj).constructor.prototype;\n }\n catch (e) {\n return proto;\n }\n };\n\n var ArrayIsArray = function (obj) {\n try {\n return str.call(obj) === \"[object Array]\";\n }\n catch(e) {\n return false;\n }\n };\n\n module.exports = {\n isArray: ArrayIsArray,\n keys: ObjectKeys,\n names: ObjectKeys,\n defineProperty: ObjectDefineProperty,\n getDescriptor: ObjectGetDescriptor,\n freeze: ObjectFreeze,\n getPrototypeOf: ObjectGetPrototypeOf,\n isES5: isES5,\n propertyIsWritable: function() {\n return true;\n }\n };\n}\n\n},{}],14:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseMap = Promise.map;\n\nPromise.prototype.filter = function (fn, options) {\n return PromiseMap(this, fn, options, INTERNAL);\n};\n\nPromise.filter = function (promises, fn, options) {\n return PromiseMap(promises, fn, options, INTERNAL);\n};\n};\n\n},{}],15:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar CancellationError = Promise.CancellationError;\nvar errorObj = util.errorObj;\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\nfunction PassThroughHandlerContext(promise, type, handler) {\n this.promise = promise;\n this.type = type;\n this.handler = handler;\n this.called = false;\n this.cancelPromise = null;\n}\n\nPassThroughHandlerContext.prototype.isFinallyHandler = function() {\n return this.type === 0;\n};\n\nfunction FinallyHandlerCancelReaction(finallyHandler) {\n this.finallyHandler = finallyHandler;\n}\n\nFinallyHandlerCancelReaction.prototype._resultCancelled = function() {\n checkCancel(this.finallyHandler);\n};\n\nfunction checkCancel(ctx, reason) {\n if (ctx.cancelPromise != null) {\n if (arguments.length > 1) {\n ctx.cancelPromise._reject(reason);\n } else {\n ctx.cancelPromise._cancel();\n }\n ctx.cancelPromise = null;\n return true;\n }\n return false;\n}\n\nfunction succeed() {\n return finallyHandler.call(this, this.promise._target()._settledValue());\n}\nfunction fail(reason) {\n if (checkCancel(this, reason)) return;\n errorObj.e = reason;\n return errorObj;\n}\nfunction finallyHandler(reasonOrValue) {\n var promise = this.promise;\n var handler = this.handler;\n\n if (!this.called) {\n this.called = true;\n var ret = this.isFinallyHandler()\n ? handler.call(promise._boundValue())\n : handler.call(promise._boundValue(), reasonOrValue);\n if (ret === NEXT_FILTER) {\n return ret;\n } else if (ret !== undefined) {\n promise._setReturnedNonUndefined();\n var maybePromise = tryConvertToPromise(ret, promise);\n if (maybePromise instanceof Promise) {\n if (this.cancelPromise != null) {\n if (maybePromise._isCancelled()) {\n var reason =\n new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n errorObj.e = reason;\n return errorObj;\n } else if (maybePromise.isPending()) {\n maybePromise._attachCancellationCallback(\n new FinallyHandlerCancelReaction(this));\n }\n }\n return maybePromise._then(\n succeed, fail, undefined, this, undefined);\n }\n }\n }\n\n if (promise.isRejected()) {\n checkCancel(this);\n errorObj.e = reasonOrValue;\n return errorObj;\n } else {\n checkCancel(this);\n return reasonOrValue;\n }\n}\n\nPromise.prototype._passThrough = function(handler, type, success, fail) {\n if (typeof handler !== \"function\") return this.then();\n return this._then(success,\n fail,\n undefined,\n new PassThroughHandlerContext(this, type, handler),\n undefined);\n};\n\nPromise.prototype.lastly =\nPromise.prototype[\"finally\"] = function (handler) {\n return this._passThrough(handler,\n 0,\n finallyHandler,\n finallyHandler);\n};\n\n\nPromise.prototype.tap = function (handler) {\n return this._passThrough(handler, 1, finallyHandler);\n};\n\nPromise.prototype.tapCatch = function (handlerOrPredicate) {\n var len = arguments.length;\n if(len === 1) {\n return this._passThrough(handlerOrPredicate,\n 1,\n undefined,\n finallyHandler);\n } else {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return Promise.reject(new TypeError(\n \"tapCatch statement predicate: \"\n + \"expecting an object but got \" + util.classString(item)\n ));\n }\n }\n catchInstances.length = j;\n var handler = arguments[i];\n return this._passThrough(catchFilter(catchInstances, handler, this),\n 1,\n undefined,\n finallyHandler);\n }\n\n};\n\nreturn PassThroughHandlerContext;\n};\n\n},{\"./catch_filter\":7,\"./util\":36}],16:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n apiRejection,\n INTERNAL,\n tryConvertToPromise,\n Proxyable,\n debug) {\nvar errors = _dereq_(\"./errors\");\nvar TypeError = errors.TypeError;\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nvar yieldHandlers = [];\n\nfunction promiseFromYieldHandler(value, yieldHandlers, traceParent) {\n for (var i = 0; i < yieldHandlers.length; ++i) {\n traceParent._pushContext();\n var result = tryCatch(yieldHandlers[i])(value);\n traceParent._popContext();\n if (result === errorObj) {\n traceParent._pushContext();\n var ret = Promise.reject(errorObj.e);\n traceParent._popContext();\n return ret;\n }\n var maybePromise = tryConvertToPromise(result, traceParent);\n if (maybePromise instanceof Promise) return maybePromise;\n }\n return null;\n}\n\nfunction PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {\n if (debug.cancellation()) {\n var internal = new Promise(INTERNAL);\n var _finallyPromise = this._finallyPromise = new Promise(INTERNAL);\n this._promise = internal.lastly(function() {\n return _finallyPromise;\n });\n internal._captureStackTrace();\n internal._setOnCancel(this);\n } else {\n var promise = this._promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n }\n this._stack = stack;\n this._generatorFunction = generatorFunction;\n this._receiver = receiver;\n this._generator = undefined;\n this._yieldHandlers = typeof yieldHandler === \"function\"\n ? [yieldHandler].concat(yieldHandlers)\n : yieldHandlers;\n this._yieldedPromise = null;\n this._cancellationPhase = false;\n}\nutil.inherits(PromiseSpawn, Proxyable);\n\nPromiseSpawn.prototype._isResolved = function() {\n return this._promise === null;\n};\n\nPromiseSpawn.prototype._cleanup = function() {\n this._promise = this._generator = null;\n if (debug.cancellation() && this._finallyPromise !== null) {\n this._finallyPromise._fulfill();\n this._finallyPromise = null;\n }\n};\n\nPromiseSpawn.prototype._promiseCancelled = function() {\n if (this._isResolved()) return;\n var implementsReturn = typeof this._generator[\"return\"] !== \"undefined\";\n\n var result;\n if (!implementsReturn) {\n var reason = new Promise.CancellationError(\n \"generator .return() sentinel\");\n Promise.coroutine.returnSentinel = reason;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n result = tryCatch(this._generator[\"throw\"]).call(this._generator,\n reason);\n this._promise._popContext();\n } else {\n this._promise._pushContext();\n result = tryCatch(this._generator[\"return\"]).call(this._generator,\n undefined);\n this._promise._popContext();\n }\n this._cancellationPhase = true;\n this._yieldedPromise = null;\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseFulfilled = function(value) {\n this._yieldedPromise = null;\n this._promise._pushContext();\n var result = tryCatch(this._generator.next).call(this._generator, value);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseRejected = function(reason) {\n this._yieldedPromise = null;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n var result = tryCatch(this._generator[\"throw\"])\n .call(this._generator, reason);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._resultCancelled = function() {\n if (this._yieldedPromise instanceof Promise) {\n var promise = this._yieldedPromise;\n this._yieldedPromise = null;\n promise.cancel();\n }\n};\n\nPromiseSpawn.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseSpawn.prototype._run = function () {\n this._generator = this._generatorFunction.call(this._receiver);\n this._receiver =\n this._generatorFunction = undefined;\n this._promiseFulfilled(undefined);\n};\n\nPromiseSpawn.prototype._continue = function (result) {\n var promise = this._promise;\n if (result === errorObj) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._rejectCallback(result.e, false);\n }\n }\n\n var value = result.value;\n if (result.done === true) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._resolveCallback(value);\n }\n } else {\n var maybePromise = tryConvertToPromise(value, this._promise);\n if (!(maybePromise instanceof Promise)) {\n maybePromise =\n promiseFromYieldHandler(maybePromise,\n this._yieldHandlers,\n this._promise);\n if (maybePromise === null) {\n this._promiseRejected(\n new TypeError(\n \"A value %s was yielded that could not be treated as a promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\\u000a\".replace(\"%s\", String(value)) +\n \"From coroutine:\\u000a\" +\n this._stack.split(\"\\n\").slice(1, -7).join(\"\\n\")\n )\n );\n return;\n }\n }\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n this._yieldedPromise = maybePromise;\n maybePromise._proxy(this, null);\n } else if (((bitField & 33554432) !== 0)) {\n Promise._async.invoke(\n this._promiseFulfilled, this, maybePromise._value()\n );\n } else if (((bitField & 16777216) !== 0)) {\n Promise._async.invoke(\n this._promiseRejected, this, maybePromise._reason()\n );\n } else {\n this._promiseCancelled();\n }\n }\n};\n\nPromise.coroutine = function (generatorFunction, options) {\n if (typeof generatorFunction !== \"function\") {\n throw new TypeError(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var yieldHandler = Object(options).yieldHandler;\n var PromiseSpawn$ = PromiseSpawn;\n var stack = new Error().stack;\n return function () {\n var generator = generatorFunction.apply(this, arguments);\n var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler,\n stack);\n var ret = spawn.promise();\n spawn._generator = generator;\n spawn._promiseFulfilled(undefined);\n return ret;\n };\n};\n\nPromise.coroutine.addYieldHandler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n yieldHandlers.push(fn);\n};\n\nPromise.spawn = function (generatorFunction) {\n debug.deprecated(\"Promise.spawn()\", \"Promise.coroutine()\");\n if (typeof generatorFunction !== \"function\") {\n return apiRejection(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var spawn = new PromiseSpawn(generatorFunction, this);\n var ret = spawn.promise();\n spawn._run(Promise.spawn);\n return ret;\n};\n};\n\n},{\"./errors\":12,\"./util\":36}],17:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async,\n getDomain) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar reject;\n\nif (!true) {\nif (canEvaluate) {\n var thenCallback = function(i) {\n return new Function(\"value\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = value; \\n\\\n holder.checkFulfillment(this); \\n\\\n \".replace(/Index/g, i));\n };\n\n var promiseSetter = function(i) {\n return new Function(\"promise\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = promise; \\n\\\n \".replace(/Index/g, i));\n };\n\n var generateHolderClass = function(total) {\n var props = new Array(total);\n for (var i = 0; i < props.length; ++i) {\n props[i] = \"this.p\" + (i+1);\n }\n var assignment = props.join(\" = \") + \" = null;\";\n var cancellationCode= \"var promise;\\n\" + props.map(function(prop) {\n return \" \\n\\\n promise = \" + prop + \"; \\n\\\n if (promise instanceof Promise) { \\n\\\n promise.cancel(); \\n\\\n } \\n\\\n \";\n }).join(\"\\n\");\n var passedArguments = props.join(\", \");\n var name = \"Holder$\" + total;\n\n\n var code = \"return function(tryCatch, errorObj, Promise, async) { \\n\\\n 'use strict'; \\n\\\n function [TheName](fn) { \\n\\\n [TheProperties] \\n\\\n this.fn = fn; \\n\\\n this.asyncNeeded = true; \\n\\\n this.now = 0; \\n\\\n } \\n\\\n \\n\\\n [TheName].prototype._callFunction = function(promise) { \\n\\\n promise._pushContext(); \\n\\\n var ret = tryCatch(this.fn)([ThePassedArguments]); \\n\\\n promise._popContext(); \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(ret.e, false); \\n\\\n } else { \\n\\\n promise._resolveCallback(ret); \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype.checkFulfillment = function(promise) { \\n\\\n var now = ++this.now; \\n\\\n if (now === [TheTotal]) { \\n\\\n if (this.asyncNeeded) { \\n\\\n async.invoke(this._callFunction, this, promise); \\n\\\n } else { \\n\\\n this._callFunction(promise); \\n\\\n } \\n\\\n \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype._resultCancelled = function() { \\n\\\n [CancellationCode] \\n\\\n }; \\n\\\n \\n\\\n return [TheName]; \\n\\\n }(tryCatch, errorObj, Promise, async); \\n\\\n \";\n\n code = code.replace(/\\[TheName\\]/g, name)\n .replace(/\\[TheTotal\\]/g, total)\n .replace(/\\[ThePassedArguments\\]/g, passedArguments)\n .replace(/\\[TheProperties\\]/g, assignment)\n .replace(/\\[CancellationCode\\]/g, cancellationCode);\n\n return new Function(\"tryCatch\", \"errorObj\", \"Promise\", \"async\", code)\n (tryCatch, errorObj, Promise, async);\n };\n\n var holderClasses = [];\n var thenCallbacks = [];\n var promiseSetters = [];\n\n for (var i = 0; i < 8; ++i) {\n holderClasses.push(generateHolderClass(i + 1));\n thenCallbacks.push(thenCallback(i + 1));\n promiseSetters.push(promiseSetter(i + 1));\n }\n\n reject = function (reason) {\n this._reject(reason);\n };\n}}\n\nPromise.join = function () {\n var last = arguments.length - 1;\n var fn;\n if (last > 0 && typeof arguments[last] === \"function\") {\n fn = arguments[last];\n if (!true) {\n if (last <= 8 && canEvaluate) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var HolderClass = holderClasses[last - 1];\n var holder = new HolderClass(fn);\n var callbacks = thenCallbacks;\n\n for (var i = 0; i < last; ++i) {\n var maybePromise = tryConvertToPromise(arguments[i], ret);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n maybePromise._then(callbacks[i], reject,\n undefined, ret, holder);\n promiseSetters[i](maybePromise, holder);\n holder.asyncNeeded = false;\n } else if (((bitField & 33554432) !== 0)) {\n callbacks[i].call(ret,\n maybePromise._value(), holder);\n } else if (((bitField & 16777216) !== 0)) {\n ret._reject(maybePromise._reason());\n } else {\n ret._cancel();\n }\n } else {\n callbacks[i].call(ret, maybePromise, holder);\n }\n }\n\n if (!ret._isFateSealed()) {\n if (holder.asyncNeeded) {\n var domain = getDomain();\n if (domain !== null) {\n holder.fn = util.domainBind(domain, holder.fn);\n }\n }\n ret._setAsyncGuaranteed();\n ret._setOnCancel(holder);\n }\n return ret;\n }\n }\n }\n var args = [].slice.call(arguments);;\n if (fn) args.pop();\n var ret = new PromiseArray(args).promise();\n return fn !== undefined ? ret.spread(fn) : ret;\n};\n\n};\n\n},{\"./util\":36}],18:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nfunction MappingPromiseArray(promises, fn, limit, _filter) {\n this.constructor$(promises);\n this._promise._captureStackTrace();\n var domain = getDomain();\n this._callback = domain === null ? fn : util.domainBind(domain, fn);\n this._preservedValues = _filter === INTERNAL\n ? new Array(this.length())\n : null;\n this._limit = limit;\n this._inFlight = 0;\n this._queue = [];\n async.invoke(this._asyncInit, this, undefined);\n}\nutil.inherits(MappingPromiseArray, PromiseArray);\n\nMappingPromiseArray.prototype._asyncInit = function() {\n this._init$(undefined, -2);\n};\n\nMappingPromiseArray.prototype._init = function () {};\n\nMappingPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var values = this._values;\n var length = this.length();\n var preservedValues = this._preservedValues;\n var limit = this._limit;\n\n if (index < 0) {\n index = (index * -1) - 1;\n values[index] = value;\n if (limit >= 1) {\n this._inFlight--;\n this._drainQueue();\n if (this._isResolved()) return true;\n }\n } else {\n if (limit >= 1 && this._inFlight >= limit) {\n values[index] = value;\n this._queue.push(index);\n return false;\n }\n if (preservedValues !== null) preservedValues[index] = value;\n\n var promise = this._promise;\n var callback = this._callback;\n var receiver = promise._boundValue();\n promise._pushContext();\n var ret = tryCatch(callback).call(receiver, value, index, length);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n preservedValues !== null ? \"Promise.filter\" : \"Promise.map\",\n promise\n );\n if (ret === errorObj) {\n this._reject(ret.e);\n return true;\n }\n\n var maybePromise = tryConvertToPromise(ret, this._promise);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n if (limit >= 1) this._inFlight++;\n values[index] = maybePromise;\n maybePromise._proxy(this, (index + 1) * -1);\n return false;\n } else if (((bitField & 33554432) !== 0)) {\n ret = maybePromise._value();\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(maybePromise._reason());\n return true;\n } else {\n this._cancel();\n return true;\n }\n }\n values[index] = ret;\n }\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= length) {\n if (preservedValues !== null) {\n this._filter(values, preservedValues);\n } else {\n this._resolve(values);\n }\n return true;\n }\n return false;\n};\n\nMappingPromiseArray.prototype._drainQueue = function () {\n var queue = this._queue;\n var limit = this._limit;\n var values = this._values;\n while (queue.length > 0 && this._inFlight < limit) {\n if (this._isResolved()) return;\n var index = queue.pop();\n this._promiseFulfilled(values[index], index);\n }\n};\n\nMappingPromiseArray.prototype._filter = function (booleans, values) {\n var len = values.length;\n var ret = new Array(len);\n var j = 0;\n for (var i = 0; i < len; ++i) {\n if (booleans[i]) ret[j++] = values[i];\n }\n ret.length = j;\n this._resolve(ret);\n};\n\nMappingPromiseArray.prototype.preservedValues = function () {\n return this._preservedValues;\n};\n\nfunction map(promises, fn, options, _filter) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var limit = 0;\n if (options !== undefined) {\n if (typeof options === \"object\" && options !== null) {\n if (typeof options.concurrency !== \"number\") {\n return Promise.reject(\n new TypeError(\"'concurrency' must be a number but it is \" +\n util.classString(options.concurrency)));\n }\n limit = options.concurrency;\n } else {\n return Promise.reject(new TypeError(\n \"options argument must be an object but it is \" +\n util.classString(options)));\n }\n }\n limit = typeof limit === \"number\" &&\n isFinite(limit) && limit >= 1 ? limit : 0;\n return new MappingPromiseArray(promises, fn, limit, _filter).promise();\n}\n\nPromise.prototype.map = function (fn, options) {\n return map(this, fn, options, null);\n};\n\nPromise.map = function (promises, fn, options, _filter) {\n return map(promises, fn, options, _filter);\n};\n\n\n};\n\n},{\"./util\":36}],19:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nPromise.method = function (fn) {\n if (typeof fn !== \"function\") {\n throw new Promise.TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return function () {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value = tryCatch(fn).apply(this, arguments);\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.method\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n };\n};\n\nPromise.attempt = Promise[\"try\"] = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value;\n if (arguments.length > 1) {\n debug.deprecated(\"calling Promise.try with more than 1 argument\");\n var arg = arguments[1];\n var ctx = arguments[2];\n value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg)\n : tryCatch(fn).call(ctx, arg);\n } else {\n value = tryCatch(fn)();\n }\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.try\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n};\n\nPromise.prototype._resolveFromSyncValue = function (value) {\n if (value === util.errorObj) {\n this._rejectCallback(value.e, false);\n } else {\n this._resolveCallback(value, true);\n }\n};\n};\n\n},{\"./util\":36}],20:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar errors = _dereq_(\"./errors\");\nvar OperationalError = errors.OperationalError;\nvar es5 = _dereq_(\"./es5\");\n\nfunction isUntypedError(obj) {\n return obj instanceof Error &&\n es5.getPrototypeOf(obj) === Error.prototype;\n}\n\nvar rErrorKey = /^(?:name|message|stack|cause)$/;\nfunction wrapAsOperationalError(obj) {\n var ret;\n if (isUntypedError(obj)) {\n ret = new OperationalError(obj);\n ret.name = obj.name;\n ret.message = obj.message;\n ret.stack = obj.stack;\n var keys = es5.keys(obj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!rErrorKey.test(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n }\n util.markAsOriginatingFromRejection(obj);\n return obj;\n}\n\nfunction nodebackForPromise(promise, multiArgs) {\n return function(err, value) {\n if (promise === null) return;\n if (err) {\n var wrapped = wrapAsOperationalError(maybeWrapAsError(err));\n promise._attachExtraTrace(wrapped);\n promise._reject(wrapped);\n } else if (!multiArgs) {\n promise._fulfill(value);\n } else {\n var args = [].slice.call(arguments, 1);;\n promise._fulfill(args);\n }\n promise = null;\n };\n}\n\nmodule.exports = nodebackForPromise;\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],21:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar async = Promise._async;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction spreadAdapter(val, nodeback) {\n var promise = this;\n if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);\n var ret =\n tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nfunction successAdapter(val, nodeback) {\n var promise = this;\n var receiver = promise._boundValue();\n var ret = val === undefined\n ? tryCatch(nodeback).call(receiver, null)\n : tryCatch(nodeback).call(receiver, null, val);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\nfunction errorAdapter(reason, nodeback) {\n var promise = this;\n if (!reason) {\n var newReason = new Error(reason + \"\");\n newReason.cause = reason;\n reason = newReason;\n }\n var ret = tryCatch(nodeback).call(promise._boundValue(), reason);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nPromise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback,\n options) {\n if (typeof nodeback == \"function\") {\n var adapter = successAdapter;\n if (options !== undefined && Object(options).spread) {\n adapter = spreadAdapter;\n }\n this._then(\n adapter,\n errorAdapter,\n undefined,\n this,\n nodeback\n );\n }\n return this;\n};\n};\n\n},{\"./util\":36}],22:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function() {\nvar makeSelfResolutionError = function () {\n return new TypeError(\"circular promise resolution chain\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar reflectHandler = function() {\n return new Promise.PromiseInspection(this._target());\n};\nvar apiRejection = function(msg) {\n return Promise.reject(new TypeError(msg));\n};\nfunction Proxyable() {}\nvar UNDEFINED_BINDING = {};\nvar util = _dereq_(\"./util\");\n\nvar getDomain;\nif (util.isNode) {\n getDomain = function() {\n var ret = process.domain;\n if (ret === undefined) ret = null;\n return ret;\n };\n} else {\n getDomain = function() {\n return null;\n };\n}\nutil.notEnumerableProp(Promise, \"_getDomain\", getDomain);\n\nvar es5 = _dereq_(\"./es5\");\nvar Async = _dereq_(\"./async\");\nvar async = new Async();\nes5.defineProperty(Promise, \"_async\", {value: async});\nvar errors = _dereq_(\"./errors\");\nvar TypeError = Promise.TypeError = errors.TypeError;\nPromise.RangeError = errors.RangeError;\nvar CancellationError = Promise.CancellationError = errors.CancellationError;\nPromise.TimeoutError = errors.TimeoutError;\nPromise.OperationalError = errors.OperationalError;\nPromise.RejectionError = errors.OperationalError;\nPromise.AggregateError = errors.AggregateError;\nvar INTERNAL = function(){};\nvar APPLY = {};\nvar NEXT_FILTER = {};\nvar tryConvertToPromise = _dereq_(\"./thenables\")(Promise, INTERNAL);\nvar PromiseArray =\n _dereq_(\"./promise_array\")(Promise, INTERNAL,\n tryConvertToPromise, apiRejection, Proxyable);\nvar Context = _dereq_(\"./context\")(Promise);\n /*jshint unused:false*/\nvar createContext = Context.create;\nvar debug = _dereq_(\"./debuggability\")(Promise, Context);\nvar CapturedTrace = debug.CapturedTrace;\nvar PassThroughHandlerContext =\n _dereq_(\"./finally\")(Promise, tryConvertToPromise, NEXT_FILTER);\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nfunction check(self, executor) {\n if (self == null || self.constructor !== Promise) {\n throw new TypeError(\"the promise constructor cannot be invoked directly\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (typeof executor !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(executor));\n }\n\n}\n\nfunction Promise(executor) {\n if (executor !== INTERNAL) {\n check(this, executor);\n }\n this._bitField = 0;\n this._fulfillmentHandler0 = undefined;\n this._rejectionHandler0 = undefined;\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._resolveFromExecutor(executor);\n this._promiseCreated();\n this._fireEvent(\"promiseCreated\", this);\n}\n\nPromise.prototype.toString = function () {\n return \"[object Promise]\";\n};\n\nPromise.prototype.caught = Promise.prototype[\"catch\"] = function (fn) {\n var len = arguments.length;\n if (len > 1) {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return apiRejection(\"Catch statement predicate: \" +\n \"expecting an object but got \" + util.classString(item));\n }\n }\n catchInstances.length = j;\n fn = arguments[i];\n\n if (typeof fn !== \"function\") {\n throw new TypeError(\"The last argument to .catch() \" +\n \"must be a function, got \" + util.toString(fn));\n }\n return this.then(undefined, catchFilter(catchInstances, fn, this));\n }\n return this.then(undefined, fn);\n};\n\nPromise.prototype.reflect = function () {\n return this._then(reflectHandler,\n reflectHandler, undefined, this, undefined);\n};\n\nPromise.prototype.then = function (didFulfill, didReject) {\n if (debug.warnings() && arguments.length > 0 &&\n typeof didFulfill !== \"function\" &&\n typeof didReject !== \"function\") {\n var msg = \".then() only accepts functions but was passed: \" +\n util.classString(didFulfill);\n if (arguments.length > 1) {\n msg += \", \" + util.classString(didReject);\n }\n this._warn(msg);\n }\n return this._then(didFulfill, didReject, undefined, undefined, undefined);\n};\n\nPromise.prototype.done = function (didFulfill, didReject) {\n var promise =\n this._then(didFulfill, didReject, undefined, undefined, undefined);\n promise._setIsFinal();\n};\n\nPromise.prototype.spread = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n return this.all()._then(fn, undefined, undefined, APPLY, undefined);\n};\n\nPromise.prototype.toJSON = function () {\n var ret = {\n isFulfilled: false,\n isRejected: false,\n fulfillmentValue: undefined,\n rejectionReason: undefined\n };\n if (this.isFulfilled()) {\n ret.fulfillmentValue = this.value();\n ret.isFulfilled = true;\n } else if (this.isRejected()) {\n ret.rejectionReason = this.reason();\n ret.isRejected = true;\n }\n return ret;\n};\n\nPromise.prototype.all = function () {\n if (arguments.length > 0) {\n this._warn(\".all() was passed arguments but it does not take any\");\n }\n return new PromiseArray(this).promise();\n};\n\nPromise.prototype.error = function (fn) {\n return this.caught(util.originatesFromRejection, fn);\n};\n\nPromise.getNewLibraryCopy = module.exports;\n\nPromise.is = function (val) {\n return val instanceof Promise;\n};\n\nPromise.fromNode = Promise.fromCallback = function(fn) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs\n : false;\n var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs));\n if (result === errorObj) {\n ret._rejectCallback(result.e, true);\n }\n if (!ret._isFateSealed()) ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.all = function (promises) {\n return new PromiseArray(promises).promise();\n};\n\nPromise.cast = function (obj) {\n var ret = tryConvertToPromise(obj);\n if (!(ret instanceof Promise)) {\n ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._setFulfilled();\n ret._rejectionHandler0 = obj;\n }\n return ret;\n};\n\nPromise.resolve = Promise.fulfilled = Promise.cast;\n\nPromise.reject = Promise.rejected = function (reason) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._rejectCallback(reason, true);\n return ret;\n};\n\nPromise.setScheduler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return async.setScheduler(fn);\n};\n\nPromise.prototype._then = function (\n didFulfill,\n didReject,\n _, receiver,\n internalData\n) {\n var haveInternalData = internalData !== undefined;\n var promise = haveInternalData ? internalData : new Promise(INTERNAL);\n var target = this._target();\n var bitField = target._bitField;\n\n if (!haveInternalData) {\n promise._propagateFrom(this, 3);\n promise._captureStackTrace();\n if (receiver === undefined &&\n ((this._bitField & 2097152) !== 0)) {\n if (!((bitField & 50397184) === 0)) {\n receiver = this._boundValue();\n } else {\n receiver = target === this ? undefined : this._boundTo;\n }\n }\n this._fireEvent(\"promiseChained\", this, promise);\n }\n\n var domain = getDomain();\n if (!((bitField & 50397184) === 0)) {\n var handler, value, settler = target._settlePromiseCtx;\n if (((bitField & 33554432) !== 0)) {\n value = target._rejectionHandler0;\n handler = didFulfill;\n } else if (((bitField & 16777216) !== 0)) {\n value = target._fulfillmentHandler0;\n handler = didReject;\n target._unsetRejectionIsUnhandled();\n } else {\n settler = target._settlePromiseLateCancellationObserver;\n value = new CancellationError(\"late cancellation observer\");\n target._attachExtraTrace(value);\n handler = didReject;\n }\n\n async.invoke(settler, target, {\n handler: domain === null ? handler\n : (typeof handler === \"function\" &&\n util.domainBind(domain, handler)),\n promise: promise,\n receiver: receiver,\n value: value\n });\n } else {\n target._addCallbacks(didFulfill, didReject, promise, receiver, domain);\n }\n\n return promise;\n};\n\nPromise.prototype._length = function () {\n return this._bitField & 65535;\n};\n\nPromise.prototype._isFateSealed = function () {\n return (this._bitField & 117506048) !== 0;\n};\n\nPromise.prototype._isFollowing = function () {\n return (this._bitField & 67108864) === 67108864;\n};\n\nPromise.prototype._setLength = function (len) {\n this._bitField = (this._bitField & -65536) |\n (len & 65535);\n};\n\nPromise.prototype._setFulfilled = function () {\n this._bitField = this._bitField | 33554432;\n this._fireEvent(\"promiseFulfilled\", this);\n};\n\nPromise.prototype._setRejected = function () {\n this._bitField = this._bitField | 16777216;\n this._fireEvent(\"promiseRejected\", this);\n};\n\nPromise.prototype._setFollowing = function () {\n this._bitField = this._bitField | 67108864;\n this._fireEvent(\"promiseResolved\", this);\n};\n\nPromise.prototype._setIsFinal = function () {\n this._bitField = this._bitField | 4194304;\n};\n\nPromise.prototype._isFinal = function () {\n return (this._bitField & 4194304) > 0;\n};\n\nPromise.prototype._unsetCancelled = function() {\n this._bitField = this._bitField & (~65536);\n};\n\nPromise.prototype._setCancelled = function() {\n this._bitField = this._bitField | 65536;\n this._fireEvent(\"promiseCancelled\", this);\n};\n\nPromise.prototype._setWillBeCancelled = function() {\n this._bitField = this._bitField | 8388608;\n};\n\nPromise.prototype._setAsyncGuaranteed = function() {\n if (async.hasCustomScheduler()) return;\n this._bitField = this._bitField | 134217728;\n};\n\nPromise.prototype._receiverAt = function (index) {\n var ret = index === 0 ? this._receiver0 : this[\n index * 4 - 4 + 3];\n if (ret === UNDEFINED_BINDING) {\n return undefined;\n } else if (ret === undefined && this._isBound()) {\n return this._boundValue();\n }\n return ret;\n};\n\nPromise.prototype._promiseAt = function (index) {\n return this[\n index * 4 - 4 + 2];\n};\n\nPromise.prototype._fulfillmentHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 0];\n};\n\nPromise.prototype._rejectionHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 1];\n};\n\nPromise.prototype._boundValue = function() {};\n\nPromise.prototype._migrateCallback0 = function (follower) {\n var bitField = follower._bitField;\n var fulfill = follower._fulfillmentHandler0;\n var reject = follower._rejectionHandler0;\n var promise = follower._promise0;\n var receiver = follower._receiverAt(0);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._migrateCallbackAt = function (follower, index) {\n var fulfill = follower._fulfillmentHandlerAt(index);\n var reject = follower._rejectionHandlerAt(index);\n var promise = follower._promiseAt(index);\n var receiver = follower._receiverAt(index);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._addCallbacks = function (\n fulfill,\n reject,\n promise,\n receiver,\n domain\n) {\n var index = this._length();\n\n if (index >= 65535 - 4) {\n index = 0;\n this._setLength(0);\n }\n\n if (index === 0) {\n this._promise0 = promise;\n this._receiver0 = receiver;\n if (typeof fulfill === \"function\") {\n this._fulfillmentHandler0 =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this._rejectionHandler0 =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n } else {\n var base = index * 4 - 4;\n this[base + 2] = promise;\n this[base + 3] = receiver;\n if (typeof fulfill === \"function\") {\n this[base + 0] =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this[base + 1] =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n }\n this._setLength(index + 1);\n return index;\n};\n\nPromise.prototype._proxy = function (proxyable, arg) {\n this._addCallbacks(undefined, undefined, arg, proxyable, null);\n};\n\nPromise.prototype._resolveCallback = function(value, shouldBind) {\n if (((this._bitField & 117506048) !== 0)) return;\n if (value === this)\n return this._rejectCallback(makeSelfResolutionError(), false);\n var maybePromise = tryConvertToPromise(value, this);\n if (!(maybePromise instanceof Promise)) return this._fulfill(value);\n\n if (shouldBind) this._propagateFrom(maybePromise, 2);\n\n var promise = maybePromise._target();\n\n if (promise === this) {\n this._reject(makeSelfResolutionError());\n return;\n }\n\n var bitField = promise._bitField;\n if (((bitField & 50397184) === 0)) {\n var len = this._length();\n if (len > 0) promise._migrateCallback0(this);\n for (var i = 1; i < len; ++i) {\n promise._migrateCallbackAt(this, i);\n }\n this._setFollowing();\n this._setLength(0);\n this._setFollowee(promise);\n } else if (((bitField & 33554432) !== 0)) {\n this._fulfill(promise._value());\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(promise._reason());\n } else {\n var reason = new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n this._reject(reason);\n }\n};\n\nPromise.prototype._rejectCallback =\nfunction(reason, synchronous, ignoreNonErrorWarnings) {\n var trace = util.ensureErrorObject(reason);\n var hasStack = trace === reason;\n if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {\n var message = \"a promise was rejected with a non-error: \" +\n util.classString(reason);\n this._warn(message, true);\n }\n this._attachExtraTrace(trace, synchronous ? hasStack : false);\n this._reject(reason);\n};\n\nPromise.prototype._resolveFromExecutor = function (executor) {\n if (executor === INTERNAL) return;\n var promise = this;\n this._captureStackTrace();\n this._pushContext();\n var synchronous = true;\n var r = this._execute(executor, function(value) {\n promise._resolveCallback(value);\n }, function (reason) {\n promise._rejectCallback(reason, synchronous);\n });\n synchronous = false;\n this._popContext();\n\n if (r !== undefined) {\n promise._rejectCallback(r, true);\n }\n};\n\nPromise.prototype._settlePromiseFromHandler = function (\n handler, receiver, value, promise\n) {\n var bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n promise._pushContext();\n var x;\n if (receiver === APPLY) {\n if (!value || typeof value.length !== \"number\") {\n x = errorObj;\n x.e = new TypeError(\"cannot .spread() a non-array: \" +\n util.classString(value));\n } else {\n x = tryCatch(handler).apply(this._boundValue(), value);\n }\n } else {\n x = tryCatch(handler).call(receiver, value);\n }\n var promiseCreated = promise._popContext();\n bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n\n if (x === NEXT_FILTER) {\n promise._reject(value);\n } else if (x === errorObj) {\n promise._rejectCallback(x.e, false);\n } else {\n debug.checkForgottenReturns(x, promiseCreated, \"\", promise, this);\n promise._resolveCallback(x);\n }\n};\n\nPromise.prototype._target = function() {\n var ret = this;\n while (ret._isFollowing()) ret = ret._followee();\n return ret;\n};\n\nPromise.prototype._followee = function() {\n return this._rejectionHandler0;\n};\n\nPromise.prototype._setFollowee = function(promise) {\n this._rejectionHandler0 = promise;\n};\n\nPromise.prototype._settlePromise = function(promise, handler, receiver, value) {\n var isPromise = promise instanceof Promise;\n var bitField = this._bitField;\n var asyncGuaranteed = ((bitField & 134217728) !== 0);\n if (((bitField & 65536) !== 0)) {\n if (isPromise) promise._invokeInternalOnCancel();\n\n if (receiver instanceof PassThroughHandlerContext &&\n receiver.isFinallyHandler()) {\n receiver.cancelPromise = promise;\n if (tryCatch(handler).call(receiver, value) === errorObj) {\n promise._reject(errorObj.e);\n }\n } else if (handler === reflectHandler) {\n promise._fulfill(reflectHandler.call(receiver));\n } else if (receiver instanceof Proxyable) {\n receiver._promiseCancelled(promise);\n } else if (isPromise || promise instanceof PromiseArray) {\n promise._cancel();\n } else {\n receiver.cancel();\n }\n } else if (typeof handler === \"function\") {\n if (!isPromise) {\n handler.call(receiver, value, promise);\n } else {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (receiver instanceof Proxyable) {\n if (!receiver._isResolved()) {\n if (((bitField & 33554432) !== 0)) {\n receiver._promiseFulfilled(value, promise);\n } else {\n receiver._promiseRejected(value, promise);\n }\n }\n } else if (isPromise) {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n if (((bitField & 33554432) !== 0)) {\n promise._fulfill(value);\n } else {\n promise._reject(value);\n }\n }\n};\n\nPromise.prototype._settlePromiseLateCancellationObserver = function(ctx) {\n var handler = ctx.handler;\n var promise = ctx.promise;\n var receiver = ctx.receiver;\n var value = ctx.value;\n if (typeof handler === \"function\") {\n if (!(promise instanceof Promise)) {\n handler.call(receiver, value, promise);\n } else {\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (promise instanceof Promise) {\n promise._reject(value);\n }\n};\n\nPromise.prototype._settlePromiseCtx = function(ctx) {\n this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);\n};\n\nPromise.prototype._settlePromise0 = function(handler, value, bitField) {\n var promise = this._promise0;\n var receiver = this._receiverAt(0);\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._settlePromise(promise, handler, receiver, value);\n};\n\nPromise.prototype._clearCallbackDataAtIndex = function(index) {\n var base = index * 4 - 4;\n this[base + 2] =\n this[base + 3] =\n this[base + 0] =\n this[base + 1] = undefined;\n};\n\nPromise.prototype._fulfill = function (value) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n if (value === this) {\n var err = makeSelfResolutionError();\n this._attachExtraTrace(err);\n return this._reject(err);\n }\n this._setFulfilled();\n this._rejectionHandler0 = value;\n\n if ((bitField & 65535) > 0) {\n if (((bitField & 134217728) !== 0)) {\n this._settlePromises();\n } else {\n async.settlePromises(this);\n }\n this._dereferenceTrace();\n }\n};\n\nPromise.prototype._reject = function (reason) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n this._setRejected();\n this._fulfillmentHandler0 = reason;\n\n if (this._isFinal()) {\n return async.fatalError(reason, util.isNode);\n }\n\n if ((bitField & 65535) > 0) {\n async.settlePromises(this);\n } else {\n this._ensurePossibleRejectionHandled();\n }\n};\n\nPromise.prototype._fulfillPromises = function (len, value) {\n for (var i = 1; i < len; i++) {\n var handler = this._fulfillmentHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, value);\n }\n};\n\nPromise.prototype._rejectPromises = function (len, reason) {\n for (var i = 1; i < len; i++) {\n var handler = this._rejectionHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, reason);\n }\n};\n\nPromise.prototype._settlePromises = function () {\n var bitField = this._bitField;\n var len = (bitField & 65535);\n\n if (len > 0) {\n if (((bitField & 16842752) !== 0)) {\n var reason = this._fulfillmentHandler0;\n this._settlePromise0(this._rejectionHandler0, reason, bitField);\n this._rejectPromises(len, reason);\n } else {\n var value = this._rejectionHandler0;\n this._settlePromise0(this._fulfillmentHandler0, value, bitField);\n this._fulfillPromises(len, value);\n }\n this._setLength(0);\n }\n this._clearCancellationData();\n};\n\nPromise.prototype._settledValue = function() {\n var bitField = this._bitField;\n if (((bitField & 33554432) !== 0)) {\n return this._rejectionHandler0;\n } else if (((bitField & 16777216) !== 0)) {\n return this._fulfillmentHandler0;\n }\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.toStringTag) {\n es5.defineProperty(Promise.prototype, Symbol.toStringTag, {\n get: function () {\n return \"Object\";\n }\n });\n}\n\nfunction deferResolve(v) {this.promise._resolveCallback(v);}\nfunction deferReject(v) {this.promise._rejectCallback(v, false);}\n\nPromise.defer = Promise.pending = function() {\n debug.deprecated(\"Promise.defer\", \"new Promise\");\n var promise = new Promise(INTERNAL);\n return {\n promise: promise,\n resolve: deferResolve,\n reject: deferReject\n };\n};\n\nutil.notEnumerableProp(Promise,\n \"_makeSelfResolutionError\",\n makeSelfResolutionError);\n\n_dereq_(\"./method\")(Promise, INTERNAL, tryConvertToPromise, apiRejection,\n debug);\n_dereq_(\"./bind\")(Promise, INTERNAL, tryConvertToPromise, debug);\n_dereq_(\"./cancel\")(Promise, PromiseArray, apiRejection, debug);\n_dereq_(\"./direct_resolve\")(Promise);\n_dereq_(\"./synchronous_inspection\")(Promise);\n_dereq_(\"./join\")(\n Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain);\nPromise.Promise = Promise;\nPromise.version = \"3.5.5\";\n_dereq_('./call_get.js')(Promise);\n_dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug);\n_dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./nodeify.js')(Promise);\n_dereq_('./promisify.js')(Promise, INTERNAL);\n_dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection);\n_dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection);\n_dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./settle.js')(Promise, PromiseArray, debug);\n_dereq_('./some.js')(Promise, PromiseArray, apiRejection);\n_dereq_('./timers.js')(Promise, INTERNAL, debug);\n_dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug);\n_dereq_('./any.js')(Promise);\n_dereq_('./each.js')(Promise, INTERNAL);\n_dereq_('./filter.js')(Promise, INTERNAL);\n \n util.toFastProperties(Promise); \n util.toFastProperties(Promise.prototype); \n function fillTypes(value) { \n var p = new Promise(INTERNAL); \n p._fulfillmentHandler0 = value; \n p._rejectionHandler0 = value; \n p._promise0 = value; \n p._receiver0 = value; \n } \n // Complete slack tracking, opt out of field-type tracking and \n // stabilize map \n fillTypes({a: 1}); \n fillTypes({b: 2}); \n fillTypes({c: 3}); \n fillTypes(1); \n fillTypes(function(){}); \n fillTypes(undefined); \n fillTypes(false); \n fillTypes(new Promise(INTERNAL)); \n debug.setBounds(Async.firstLineError, util.lastLineError); \n return Promise; \n\n};\n\n},{\"./any.js\":1,\"./async\":2,\"./bind\":3,\"./call_get.js\":5,\"./cancel\":6,\"./catch_filter\":7,\"./context\":8,\"./debuggability\":9,\"./direct_resolve\":10,\"./each.js\":11,\"./errors\":12,\"./es5\":13,\"./filter.js\":14,\"./finally\":15,\"./generators.js\":16,\"./join\":17,\"./map.js\":18,\"./method\":19,\"./nodeback\":20,\"./nodeify.js\":21,\"./promise_array\":23,\"./promisify.js\":24,\"./props.js\":25,\"./race.js\":27,\"./reduce.js\":28,\"./settle.js\":30,\"./some.js\":31,\"./synchronous_inspection\":32,\"./thenables\":33,\"./timers.js\":34,\"./using.js\":35,\"./util\":36}],23:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise,\n apiRejection, Proxyable) {\nvar util = _dereq_(\"./util\");\nvar isArray = util.isArray;\n\nfunction toResolutionValue(val) {\n switch(val) {\n case -2: return [];\n case -3: return {};\n case -6: return new Map();\n }\n}\n\nfunction PromiseArray(values) {\n var promise = this._promise = new Promise(INTERNAL);\n if (values instanceof Promise) {\n promise._propagateFrom(values, 3);\n }\n promise._setOnCancel(this);\n this._values = values;\n this._length = 0;\n this._totalResolved = 0;\n this._init(undefined, -2);\n}\nutil.inherits(PromiseArray, Proxyable);\n\nPromiseArray.prototype.length = function () {\n return this._length;\n};\n\nPromiseArray.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {\n var values = tryConvertToPromise(this._values, this._promise);\n if (values instanceof Promise) {\n values = values._target();\n var bitField = values._bitField;\n ;\n this._values = values;\n\n if (((bitField & 50397184) === 0)) {\n this._promise._setAsyncGuaranteed();\n return values._then(\n init,\n this._reject,\n undefined,\n this,\n resolveValueIfEmpty\n );\n } else if (((bitField & 33554432) !== 0)) {\n values = values._value();\n } else if (((bitField & 16777216) !== 0)) {\n return this._reject(values._reason());\n } else {\n return this._cancel();\n }\n }\n values = util.asArray(values);\n if (values === null) {\n var err = apiRejection(\n \"expecting an array or an iterable object but got \" + util.classString(values)).reason();\n this._promise._rejectCallback(err, false);\n return;\n }\n\n if (values.length === 0) {\n if (resolveValueIfEmpty === -5) {\n this._resolveEmptyArray();\n }\n else {\n this._resolve(toResolutionValue(resolveValueIfEmpty));\n }\n return;\n }\n this._iterate(values);\n};\n\nPromiseArray.prototype._iterate = function(values) {\n var len = this.getActualLength(values.length);\n this._length = len;\n this._values = this.shouldCopyValues() ? new Array(len) : this._values;\n var result = this._promise;\n var isResolved = false;\n var bitField = null;\n for (var i = 0; i < len; ++i) {\n var maybePromise = tryConvertToPromise(values[i], result);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n bitField = maybePromise._bitField;\n } else {\n bitField = null;\n }\n\n if (isResolved) {\n if (bitField !== null) {\n maybePromise.suppressUnhandledRejections();\n }\n } else if (bitField !== null) {\n if (((bitField & 50397184) === 0)) {\n maybePromise._proxy(this, i);\n this._values[i] = maybePromise;\n } else if (((bitField & 33554432) !== 0)) {\n isResolved = this._promiseFulfilled(maybePromise._value(), i);\n } else if (((bitField & 16777216) !== 0)) {\n isResolved = this._promiseRejected(maybePromise._reason(), i);\n } else {\n isResolved = this._promiseCancelled(i);\n }\n } else {\n isResolved = this._promiseFulfilled(maybePromise, i);\n }\n }\n if (!isResolved) result._setAsyncGuaranteed();\n};\n\nPromiseArray.prototype._isResolved = function () {\n return this._values === null;\n};\n\nPromiseArray.prototype._resolve = function (value) {\n this._values = null;\n this._promise._fulfill(value);\n};\n\nPromiseArray.prototype._cancel = function() {\n if (this._isResolved() || !this._promise._isCancellable()) return;\n this._values = null;\n this._promise._cancel();\n};\n\nPromiseArray.prototype._reject = function (reason) {\n this._values = null;\n this._promise._rejectCallback(reason, false);\n};\n\nPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nPromiseArray.prototype._promiseCancelled = function() {\n this._cancel();\n return true;\n};\n\nPromiseArray.prototype._promiseRejected = function (reason) {\n this._totalResolved++;\n this._reject(reason);\n return true;\n};\n\nPromiseArray.prototype._resultCancelled = function() {\n if (this._isResolved()) return;\n var values = this._values;\n this._cancel();\n if (values instanceof Promise) {\n values.cancel();\n } else {\n for (var i = 0; i < values.length; ++i) {\n if (values[i] instanceof Promise) {\n values[i].cancel();\n }\n }\n }\n};\n\nPromiseArray.prototype.shouldCopyValues = function () {\n return true;\n};\n\nPromiseArray.prototype.getActualLength = function (len) {\n return len;\n};\n\nreturn PromiseArray;\n};\n\n},{\"./util\":36}],24:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar THIS = {};\nvar util = _dereq_(\"./util\");\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar withAppended = util.withAppended;\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar canEvaluate = util.canEvaluate;\nvar TypeError = _dereq_(\"./errors\").TypeError;\nvar defaultSuffix = \"Async\";\nvar defaultPromisified = {__isPromisified__: true};\nvar noCopyProps = [\n \"arity\", \"length\",\n \"name\",\n \"arguments\",\n \"caller\",\n \"callee\",\n \"prototype\",\n \"__isPromisified__\"\n];\nvar noCopyPropsPattern = new RegExp(\"^(?:\" + noCopyProps.join(\"|\") + \")$\");\n\nvar defaultFilter = function(name) {\n return util.isIdentifier(name) &&\n name.charAt(0) !== \"_\" &&\n name !== \"constructor\";\n};\n\nfunction propsFilter(key) {\n return !noCopyPropsPattern.test(key);\n}\n\nfunction isPromisified(fn) {\n try {\n return fn.__isPromisified__ === true;\n }\n catch (e) {\n return false;\n }\n}\n\nfunction hasPromisified(obj, key, suffix) {\n var val = util.getDataPropertyOrDefault(obj, key + suffix,\n defaultPromisified);\n return val ? isPromisified(val) : false;\n}\nfunction checkValid(ret, suffix, suffixRegexp) {\n for (var i = 0; i < ret.length; i += 2) {\n var key = ret[i];\n if (suffixRegexp.test(key)) {\n var keyWithoutAsyncSuffix = key.replace(suffixRegexp, \"\");\n for (var j = 0; j < ret.length; j += 2) {\n if (ret[j] === keyWithoutAsyncSuffix) {\n throw new TypeError(\"Cannot promisify an API that has normal methods with '%s'-suffix\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\"\n .replace(\"%s\", suffix));\n }\n }\n }\n }\n}\n\nfunction promisifiableMethods(obj, suffix, suffixRegexp, filter) {\n var keys = util.inheritedDataKeys(obj);\n var ret = [];\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var value = obj[key];\n var passesDefaultFilter = filter === defaultFilter\n ? true : defaultFilter(key, value, obj);\n if (typeof value === \"function\" &&\n !isPromisified(value) &&\n !hasPromisified(obj, key, suffix) &&\n filter(key, value, obj, passesDefaultFilter)) {\n ret.push(key, value);\n }\n }\n checkValid(ret, suffix, suffixRegexp);\n return ret;\n}\n\nvar escapeIdentRegex = function(str) {\n return str.replace(/([$])/, \"\\\\$\");\n};\n\nvar makeNodePromisifiedEval;\nif (!true) {\nvar switchCaseArgumentOrder = function(likelyArgumentCount) {\n var ret = [likelyArgumentCount];\n var min = Math.max(0, likelyArgumentCount - 1 - 3);\n for(var i = likelyArgumentCount - 1; i >= min; --i) {\n ret.push(i);\n }\n for(var i = likelyArgumentCount + 1; i <= 3; ++i) {\n ret.push(i);\n }\n return ret;\n};\n\nvar argumentSequence = function(argumentCount) {\n return util.filledRange(argumentCount, \"_arg\", \"\");\n};\n\nvar parameterDeclaration = function(parameterCount) {\n return util.filledRange(\n Math.max(parameterCount, 3), \"_arg\", \"\");\n};\n\nvar parameterCount = function(fn) {\n if (typeof fn.length === \"number\") {\n return Math.max(Math.min(fn.length, 1023 + 1), 0);\n }\n return 0;\n};\n\nmakeNodePromisifiedEval =\nfunction(callback, receiver, originalName, fn, _, multiArgs) {\n var newParameterCount = Math.max(0, parameterCount(fn) - 1);\n var argumentOrder = switchCaseArgumentOrder(newParameterCount);\n var shouldProxyThis = typeof callback === \"string\" || receiver === THIS;\n\n function generateCallForArgumentCount(count) {\n var args = argumentSequence(count).join(\", \");\n var comma = count > 0 ? \", \" : \"\";\n var ret;\n if (shouldProxyThis) {\n ret = \"ret = callback.call(this, {{args}}, nodeback); break;\\n\";\n } else {\n ret = receiver === undefined\n ? \"ret = callback({{args}}, nodeback); break;\\n\"\n : \"ret = callback.call(receiver, {{args}}, nodeback); break;\\n\";\n }\n return ret.replace(\"{{args}}\", args).replace(\", \", comma);\n }\n\n function generateArgumentSwitchCase() {\n var ret = \"\";\n for (var i = 0; i < argumentOrder.length; ++i) {\n ret += \"case \" + argumentOrder[i] +\":\" +\n generateCallForArgumentCount(argumentOrder[i]);\n }\n\n ret += \" \\n\\\n default: \\n\\\n var args = new Array(len + 1); \\n\\\n var i = 0; \\n\\\n for (var i = 0; i < len; ++i) { \\n\\\n args[i] = arguments[i]; \\n\\\n } \\n\\\n args[i] = nodeback; \\n\\\n [CodeForCall] \\n\\\n break; \\n\\\n \".replace(\"[CodeForCall]\", (shouldProxyThis\n ? \"ret = callback.apply(this, args);\\n\"\n : \"ret = callback.apply(receiver, args);\\n\"));\n return ret;\n }\n\n var getFunctionCode = typeof callback === \"string\"\n ? (\"this != null ? this['\"+callback+\"'] : fn\")\n : \"fn\";\n var body = \"'use strict'; \\n\\\n var ret = function (Parameters) { \\n\\\n 'use strict'; \\n\\\n var len = arguments.length; \\n\\\n var promise = new Promise(INTERNAL); \\n\\\n promise._captureStackTrace(); \\n\\\n var nodeback = nodebackForPromise(promise, \" + multiArgs + \"); \\n\\\n var ret; \\n\\\n var callback = tryCatch([GetFunctionCode]); \\n\\\n switch(len) { \\n\\\n [CodeForSwitchCase] \\n\\\n } \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\\n\\\n } \\n\\\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \\n\\\n return promise; \\n\\\n }; \\n\\\n notEnumerableProp(ret, '__isPromisified__', true); \\n\\\n return ret; \\n\\\n \".replace(\"[CodeForSwitchCase]\", generateArgumentSwitchCase())\n .replace(\"[GetFunctionCode]\", getFunctionCode);\n body = body.replace(\"Parameters\", parameterDeclaration(newParameterCount));\n return new Function(\"Promise\",\n \"fn\",\n \"receiver\",\n \"withAppended\",\n \"maybeWrapAsError\",\n \"nodebackForPromise\",\n \"tryCatch\",\n \"errorObj\",\n \"notEnumerableProp\",\n \"INTERNAL\",\n body)(\n Promise,\n fn,\n receiver,\n withAppended,\n maybeWrapAsError,\n nodebackForPromise,\n util.tryCatch,\n util.errorObj,\n util.notEnumerableProp,\n INTERNAL);\n};\n}\n\nfunction makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) {\n var defaultThis = (function() {return this;})();\n var method = callback;\n if (typeof method === \"string\") {\n callback = fn;\n }\n function promisified() {\n var _receiver = receiver;\n if (receiver === THIS) _receiver = this;\n var promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n var cb = typeof method === \"string\" && this !== defaultThis\n ? this[method] : callback;\n var fn = nodebackForPromise(promise, multiArgs);\n try {\n cb.apply(_receiver, withAppended(arguments, fn));\n } catch(e) {\n promise._rejectCallback(maybeWrapAsError(e), true, true);\n }\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed();\n return promise;\n }\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n return promisified;\n}\n\nvar makeNodePromisified = canEvaluate\n ? makeNodePromisifiedEval\n : makeNodePromisifiedClosure;\n\nfunction promisifyAll(obj, suffix, filter, promisifier, multiArgs) {\n var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + \"$\");\n var methods =\n promisifiableMethods(obj, suffix, suffixRegexp, filter);\n\n for (var i = 0, len = methods.length; i < len; i+= 2) {\n var key = methods[i];\n var fn = methods[i+1];\n var promisifiedKey = key + suffix;\n if (promisifier === makeNodePromisified) {\n obj[promisifiedKey] =\n makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n } else {\n var promisified = promisifier(fn, function() {\n return makeNodePromisified(key, THIS, key,\n fn, suffix, multiArgs);\n });\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n obj[promisifiedKey] = promisified;\n }\n }\n util.toFastProperties(obj);\n return obj;\n}\n\nfunction promisify(callback, receiver, multiArgs) {\n return makeNodePromisified(callback, receiver, undefined,\n callback, null, multiArgs);\n}\n\nPromise.promisify = function (fn, options) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n if (isPromisified(fn)) {\n return fn;\n }\n options = Object(options);\n var receiver = options.context === undefined ? THIS : options.context;\n var multiArgs = !!options.multiArgs;\n var ret = promisify(fn, receiver, multiArgs);\n util.copyDescriptors(fn, ret, propsFilter);\n return ret;\n};\n\nPromise.promisifyAll = function (target, options) {\n if (typeof target !== \"function\" && typeof target !== \"object\") {\n throw new TypeError(\"the target of promisifyAll must be an object or a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n options = Object(options);\n var multiArgs = !!options.multiArgs;\n var suffix = options.suffix;\n if (typeof suffix !== \"string\") suffix = defaultSuffix;\n var filter = options.filter;\n if (typeof filter !== \"function\") filter = defaultFilter;\n var promisifier = options.promisifier;\n if (typeof promisifier !== \"function\") promisifier = makeNodePromisified;\n\n if (!util.isIdentifier(suffix)) {\n throw new RangeError(\"suffix must be a valid identifier\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n\n var keys = util.inheritedDataKeys(target);\n for (var i = 0; i < keys.length; ++i) {\n var value = target[keys[i]];\n if (keys[i] !== \"constructor\" &&\n util.isClass(value)) {\n promisifyAll(value.prototype, suffix, filter, promisifier,\n multiArgs);\n promisifyAll(value, suffix, filter, promisifier, multiArgs);\n }\n }\n\n return promisifyAll(target, suffix, filter, promisifier, multiArgs);\n};\n};\n\n\n},{\"./errors\":12,\"./nodeback\":20,\"./util\":36}],25:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, PromiseArray, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar isObject = util.isObject;\nvar es5 = _dereq_(\"./es5\");\nvar Es6Map;\nif (typeof Map === \"function\") Es6Map = Map;\n\nvar mapToEntries = (function() {\n var index = 0;\n var size = 0;\n\n function extractEntry(value, key) {\n this[index] = value;\n this[index + size] = key;\n index++;\n }\n\n return function mapToEntries(map) {\n size = map.size;\n index = 0;\n var ret = new Array(map.size * 2);\n map.forEach(extractEntry, ret);\n return ret;\n };\n})();\n\nvar entriesToMap = function(entries) {\n var ret = new Es6Map();\n var length = entries.length / 2 | 0;\n for (var i = 0; i < length; ++i) {\n var key = entries[length + i];\n var value = entries[i];\n ret.set(key, value);\n }\n return ret;\n};\n\nfunction PropertiesPromiseArray(obj) {\n var isMap = false;\n var entries;\n if (Es6Map !== undefined && obj instanceof Es6Map) {\n entries = mapToEntries(obj);\n isMap = true;\n } else {\n var keys = es5.keys(obj);\n var len = keys.length;\n entries = new Array(len * 2);\n for (var i = 0; i < len; ++i) {\n var key = keys[i];\n entries[i] = obj[key];\n entries[i + len] = key;\n }\n }\n this.constructor$(entries);\n this._isMap = isMap;\n this._init$(undefined, isMap ? -6 : -3);\n}\nutil.inherits(PropertiesPromiseArray, PromiseArray);\n\nPropertiesPromiseArray.prototype._init = function () {};\n\nPropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n var val;\n if (this._isMap) {\n val = entriesToMap(this._values);\n } else {\n val = {};\n var keyOffset = this.length();\n for (var i = 0, len = this.length(); i < len; ++i) {\n val[this._values[i + keyOffset]] = this._values[i];\n }\n }\n this._resolve(val);\n return true;\n }\n return false;\n};\n\nPropertiesPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nPropertiesPromiseArray.prototype.getActualLength = function (len) {\n return len >> 1;\n};\n\nfunction props(promises) {\n var ret;\n var castValue = tryConvertToPromise(promises);\n\n if (!isObject(castValue)) {\n return apiRejection(\"cannot await properties of a non-object\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n } else if (castValue instanceof Promise) {\n ret = castValue._then(\n Promise.props, undefined, undefined, undefined, undefined);\n } else {\n ret = new PropertiesPromiseArray(castValue).promise();\n }\n\n if (castValue instanceof Promise) {\n ret._propagateFrom(castValue, 2);\n }\n return ret;\n}\n\nPromise.prototype.props = function () {\n return props(this);\n};\n\nPromise.props = function (promises) {\n return props(promises);\n};\n};\n\n},{\"./es5\":13,\"./util\":36}],26:[function(_dereq_,module,exports){\n\"use strict\";\nfunction arrayMove(src, srcIndex, dst, dstIndex, len) {\n for (var j = 0; j < len; ++j) {\n dst[j + dstIndex] = src[j + srcIndex];\n src[j + srcIndex] = void 0;\n }\n}\n\nfunction Queue(capacity) {\n this._capacity = capacity;\n this._length = 0;\n this._front = 0;\n}\n\nQueue.prototype._willBeOverCapacity = function (size) {\n return this._capacity < size;\n};\n\nQueue.prototype._pushOne = function (arg) {\n var length = this.length();\n this._checkCapacity(length + 1);\n var i = (this._front + length) & (this._capacity - 1);\n this[i] = arg;\n this._length = length + 1;\n};\n\nQueue.prototype.push = function (fn, receiver, arg) {\n var length = this.length() + 3;\n if (this._willBeOverCapacity(length)) {\n this._pushOne(fn);\n this._pushOne(receiver);\n this._pushOne(arg);\n return;\n }\n var j = this._front + length - 3;\n this._checkCapacity(length);\n var wrapMask = this._capacity - 1;\n this[(j + 0) & wrapMask] = fn;\n this[(j + 1) & wrapMask] = receiver;\n this[(j + 2) & wrapMask] = arg;\n this._length = length;\n};\n\nQueue.prototype.shift = function () {\n var front = this._front,\n ret = this[front];\n\n this[front] = undefined;\n this._front = (front + 1) & (this._capacity - 1);\n this._length--;\n return ret;\n};\n\nQueue.prototype.length = function () {\n return this._length;\n};\n\nQueue.prototype._checkCapacity = function (size) {\n if (this._capacity < size) {\n this._resizeTo(this._capacity << 1);\n }\n};\n\nQueue.prototype._resizeTo = function (capacity) {\n var oldCapacity = this._capacity;\n this._capacity = capacity;\n var front = this._front;\n var length = this._length;\n var moveItemsCount = (front + length) & (oldCapacity - 1);\n arrayMove(this, 0, this, oldCapacity, moveItemsCount);\n};\n\nmodule.exports = Queue;\n\n},{}],27:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, INTERNAL, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\n\nvar raceLater = function (promise) {\n return promise.then(function(array) {\n return race(array, promise);\n });\n};\n\nfunction race(promises, parent) {\n var maybePromise = tryConvertToPromise(promises);\n\n if (maybePromise instanceof Promise) {\n return raceLater(maybePromise);\n } else {\n promises = util.asArray(promises);\n if (promises === null)\n return apiRejection(\"expecting an array or an iterable object but got \" + util.classString(promises));\n }\n\n var ret = new Promise(INTERNAL);\n if (parent !== undefined) {\n ret._propagateFrom(parent, 3);\n }\n var fulfill = ret._fulfill;\n var reject = ret._reject;\n for (var i = 0, len = promises.length; i < len; ++i) {\n var val = promises[i];\n\n if (val === undefined && !(i in promises)) {\n continue;\n }\n\n Promise.cast(val)._then(fulfill, reject, undefined, ret, null);\n }\n return ret;\n}\n\nPromise.race = function (promises) {\n return race(promises, undefined);\n};\n\nPromise.prototype.race = function () {\n return race(this, undefined);\n};\n\n};\n\n},{\"./util\":36}],28:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nfunction ReductionPromiseArray(promises, fn, initialValue, _each) {\n this.constructor$(promises);\n var domain = getDomain();\n this._fn = domain === null ? fn : util.domainBind(domain, fn);\n if (initialValue !== undefined) {\n initialValue = Promise.resolve(initialValue);\n initialValue._attachCancellationCallback(this);\n }\n this._initialValue = initialValue;\n this._currentCancellable = null;\n if(_each === INTERNAL) {\n this._eachValues = Array(this._length);\n } else if (_each === 0) {\n this._eachValues = null;\n } else {\n this._eachValues = undefined;\n }\n this._promise._captureStackTrace();\n this._init$(undefined, -5);\n}\nutil.inherits(ReductionPromiseArray, PromiseArray);\n\nReductionPromiseArray.prototype._gotAccum = function(accum) {\n if (this._eachValues !== undefined && \n this._eachValues !== null && \n accum !== INTERNAL) {\n this._eachValues.push(accum);\n }\n};\n\nReductionPromiseArray.prototype._eachComplete = function(value) {\n if (this._eachValues !== null) {\n this._eachValues.push(value);\n }\n return this._eachValues;\n};\n\nReductionPromiseArray.prototype._init = function() {};\n\nReductionPromiseArray.prototype._resolveEmptyArray = function() {\n this._resolve(this._eachValues !== undefined ? this._eachValues\n : this._initialValue);\n};\n\nReductionPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nReductionPromiseArray.prototype._resolve = function(value) {\n this._promise._resolveCallback(value);\n this._values = null;\n};\n\nReductionPromiseArray.prototype._resultCancelled = function(sender) {\n if (sender === this._initialValue) return this._cancel();\n if (this._isResolved()) return;\n this._resultCancelled$();\n if (this._currentCancellable instanceof Promise) {\n this._currentCancellable.cancel();\n }\n if (this._initialValue instanceof Promise) {\n this._initialValue.cancel();\n }\n};\n\nReductionPromiseArray.prototype._iterate = function (values) {\n this._values = values;\n var value;\n var i;\n var length = values.length;\n if (this._initialValue !== undefined) {\n value = this._initialValue;\n i = 0;\n } else {\n value = Promise.resolve(values[0]);\n i = 1;\n }\n\n this._currentCancellable = value;\n\n if (!value.isRejected()) {\n for (; i < length; ++i) {\n var ctx = {\n accum: null,\n value: values[i],\n index: i,\n length: length,\n array: this\n };\n value = value._then(gotAccum, undefined, undefined, ctx, undefined);\n }\n }\n\n if (this._eachValues !== undefined) {\n value = value\n ._then(this._eachComplete, undefined, undefined, this, undefined);\n }\n value._then(completed, completed, undefined, value, this);\n};\n\nPromise.prototype.reduce = function (fn, initialValue) {\n return reduce(this, fn, initialValue, null);\n};\n\nPromise.reduce = function (promises, fn, initialValue, _each) {\n return reduce(promises, fn, initialValue, _each);\n};\n\nfunction completed(valueOrReason, array) {\n if (this.isFulfilled()) {\n array._resolve(valueOrReason);\n } else {\n array._reject(valueOrReason);\n }\n}\n\nfunction reduce(promises, fn, initialValue, _each) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var array = new ReductionPromiseArray(promises, fn, initialValue, _each);\n return array.promise();\n}\n\nfunction gotAccum(accum) {\n this.accum = accum;\n this.array._gotAccum(accum);\n var value = tryConvertToPromise(this.value, this.array._promise);\n if (value instanceof Promise) {\n this.array._currentCancellable = value;\n return value._then(gotValue, undefined, undefined, this, undefined);\n } else {\n return gotValue.call(this, value);\n }\n}\n\nfunction gotValue(value) {\n var array = this.array;\n var promise = array._promise;\n var fn = tryCatch(array._fn);\n promise._pushContext();\n var ret;\n if (array._eachValues !== undefined) {\n ret = fn.call(promise._boundValue(), value, this.index, this.length);\n } else {\n ret = fn.call(promise._boundValue(),\n this.accum, value, this.index, this.length);\n }\n if (ret instanceof Promise) {\n array._currentCancellable = ret;\n }\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n array._eachValues !== undefined ? \"Promise.each\" : \"Promise.reduce\",\n promise\n );\n return ret;\n}\n};\n\n},{\"./util\":36}],29:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar schedule;\nvar noAsyncScheduler = function() {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar NativePromise = util.getNativePromise();\nif (util.isNode && typeof MutationObserver === \"undefined\") {\n var GlobalSetImmediate = global.setImmediate;\n var ProcessNextTick = process.nextTick;\n schedule = util.isRecentNode\n ? function(fn) { GlobalSetImmediate.call(global, fn); }\n : function(fn) { ProcessNextTick.call(process, fn); };\n} else if (typeof NativePromise === \"function\" &&\n typeof NativePromise.resolve === \"function\") {\n var nativePromise = NativePromise.resolve();\n schedule = function(fn) {\n nativePromise.then(fn);\n };\n} else if ((typeof MutationObserver !== \"undefined\") &&\n !(typeof window !== \"undefined\" &&\n window.navigator &&\n (window.navigator.standalone || window.cordova)) &&\n (\"classList\" in document.documentElement)) {\n schedule = (function() {\n var div = document.createElement(\"div\");\n var opts = {attributes: true};\n var toggleScheduled = false;\n var div2 = document.createElement(\"div\");\n var o2 = new MutationObserver(function() {\n div.classList.toggle(\"foo\");\n toggleScheduled = false;\n });\n o2.observe(div2, opts);\n\n var scheduleToggle = function() {\n if (toggleScheduled) return;\n toggleScheduled = true;\n div2.classList.toggle(\"foo\");\n };\n\n return function schedule(fn) {\n var o = new MutationObserver(function() {\n o.disconnect();\n fn();\n });\n o.observe(div, opts);\n scheduleToggle();\n };\n })();\n} else if (typeof setImmediate !== \"undefined\") {\n schedule = function (fn) {\n setImmediate(fn);\n };\n} else if (typeof setTimeout !== \"undefined\") {\n schedule = function (fn) {\n setTimeout(fn, 0);\n };\n} else {\n schedule = noAsyncScheduler;\n}\nmodule.exports = schedule;\n\n},{\"./util\":36}],30:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\n function(Promise, PromiseArray, debug) {\nvar PromiseInspection = Promise.PromiseInspection;\nvar util = _dereq_(\"./util\");\n\nfunction SettledPromiseArray(values) {\n this.constructor$(values);\n}\nutil.inherits(SettledPromiseArray, PromiseArray);\n\nSettledPromiseArray.prototype._promiseResolved = function (index, inspection) {\n this._values[index] = inspection;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nSettledPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var ret = new PromiseInspection();\n ret._bitField = 33554432;\n ret._settledValueField = value;\n return this._promiseResolved(index, ret);\n};\nSettledPromiseArray.prototype._promiseRejected = function (reason, index) {\n var ret = new PromiseInspection();\n ret._bitField = 16777216;\n ret._settledValueField = reason;\n return this._promiseResolved(index, ret);\n};\n\nPromise.settle = function (promises) {\n debug.deprecated(\".settle()\", \".reflect()\");\n return new SettledPromiseArray(promises).promise();\n};\n\nPromise.prototype.settle = function () {\n return Promise.settle(this);\n};\n};\n\n},{\"./util\":36}],31:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar RangeError = _dereq_(\"./errors\").RangeError;\nvar AggregateError = _dereq_(\"./errors\").AggregateError;\nvar isArray = util.isArray;\nvar CANCELLATION = {};\n\n\nfunction SomePromiseArray(values) {\n this.constructor$(values);\n this._howMany = 0;\n this._unwrap = false;\n this._initialized = false;\n}\nutil.inherits(SomePromiseArray, PromiseArray);\n\nSomePromiseArray.prototype._init = function () {\n if (!this._initialized) {\n return;\n }\n if (this._howMany === 0) {\n this._resolve([]);\n return;\n }\n this._init$(undefined, -5);\n var isArrayResolved = isArray(this._values);\n if (!this._isResolved() &&\n isArrayResolved &&\n this._howMany > this._canPossiblyFulfill()) {\n this._reject(this._getRangeError(this.length()));\n }\n};\n\nSomePromiseArray.prototype.init = function () {\n this._initialized = true;\n this._init();\n};\n\nSomePromiseArray.prototype.setUnwrap = function () {\n this._unwrap = true;\n};\n\nSomePromiseArray.prototype.howMany = function () {\n return this._howMany;\n};\n\nSomePromiseArray.prototype.setHowMany = function (count) {\n this._howMany = count;\n};\n\nSomePromiseArray.prototype._promiseFulfilled = function (value) {\n this._addFulfilled(value);\n if (this._fulfilled() === this.howMany()) {\n this._values.length = this.howMany();\n if (this.howMany() === 1 && this._unwrap) {\n this._resolve(this._values[0]);\n } else {\n this._resolve(this._values);\n }\n return true;\n }\n return false;\n\n};\nSomePromiseArray.prototype._promiseRejected = function (reason) {\n this._addRejected(reason);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._promiseCancelled = function () {\n if (this._values instanceof Promise || this._values == null) {\n return this._cancel();\n }\n this._addRejected(CANCELLATION);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._checkOutcome = function() {\n if (this.howMany() > this._canPossiblyFulfill()) {\n var e = new AggregateError();\n for (var i = this.length(); i < this._values.length; ++i) {\n if (this._values[i] !== CANCELLATION) {\n e.push(this._values[i]);\n }\n }\n if (e.length > 0) {\n this._reject(e);\n } else {\n this._cancel();\n }\n return true;\n }\n return false;\n};\n\nSomePromiseArray.prototype._fulfilled = function () {\n return this._totalResolved;\n};\n\nSomePromiseArray.prototype._rejected = function () {\n return this._values.length - this.length();\n};\n\nSomePromiseArray.prototype._addRejected = function (reason) {\n this._values.push(reason);\n};\n\nSomePromiseArray.prototype._addFulfilled = function (value) {\n this._values[this._totalResolved++] = value;\n};\n\nSomePromiseArray.prototype._canPossiblyFulfill = function () {\n return this.length() - this._rejected();\n};\n\nSomePromiseArray.prototype._getRangeError = function (count) {\n var message = \"Input array must contain at least \" +\n this._howMany + \" items but contains only \" + count + \" items\";\n return new RangeError(message);\n};\n\nSomePromiseArray.prototype._resolveEmptyArray = function () {\n this._reject(this._getRangeError(0));\n};\n\nfunction some(promises, howMany) {\n if ((howMany | 0) !== howMany || howMany < 0) {\n return apiRejection(\"expecting a positive integer\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(howMany);\n ret.init();\n return promise;\n}\n\nPromise.some = function (promises, howMany) {\n return some(promises, howMany);\n};\n\nPromise.prototype.some = function (howMany) {\n return some(this, howMany);\n};\n\nPromise._SomePromiseArray = SomePromiseArray;\n};\n\n},{\"./errors\":12,\"./util\":36}],32:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction PromiseInspection(promise) {\n if (promise !== undefined) {\n promise = promise._target();\n this._bitField = promise._bitField;\n this._settledValueField = promise._isFateSealed()\n ? promise._settledValue() : undefined;\n }\n else {\n this._bitField = 0;\n this._settledValueField = undefined;\n }\n}\n\nPromiseInspection.prototype._settledValue = function() {\n return this._settledValueField;\n};\n\nvar value = PromiseInspection.prototype.value = function () {\n if (!this.isFulfilled()) {\n throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar reason = PromiseInspection.prototype.error =\nPromiseInspection.prototype.reason = function () {\n if (!this.isRejected()) {\n throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar isFulfilled = PromiseInspection.prototype.isFulfilled = function() {\n return (this._bitField & 33554432) !== 0;\n};\n\nvar isRejected = PromiseInspection.prototype.isRejected = function () {\n return (this._bitField & 16777216) !== 0;\n};\n\nvar isPending = PromiseInspection.prototype.isPending = function () {\n return (this._bitField & 50397184) === 0;\n};\n\nvar isResolved = PromiseInspection.prototype.isResolved = function () {\n return (this._bitField & 50331648) !== 0;\n};\n\nPromiseInspection.prototype.isCancelled = function() {\n return (this._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.__isCancelled = function() {\n return (this._bitField & 65536) === 65536;\n};\n\nPromise.prototype._isCancelled = function() {\n return this._target().__isCancelled();\n};\n\nPromise.prototype.isCancelled = function() {\n return (this._target()._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.isPending = function() {\n return isPending.call(this._target());\n};\n\nPromise.prototype.isRejected = function() {\n return isRejected.call(this._target());\n};\n\nPromise.prototype.isFulfilled = function() {\n return isFulfilled.call(this._target());\n};\n\nPromise.prototype.isResolved = function() {\n return isResolved.call(this._target());\n};\n\nPromise.prototype.value = function() {\n return value.call(this._target());\n};\n\nPromise.prototype.reason = function() {\n var target = this._target();\n target._unsetRejectionIsUnhandled();\n return reason.call(target);\n};\n\nPromise.prototype._value = function() {\n return this._settledValue();\n};\n\nPromise.prototype._reason = function() {\n this._unsetRejectionIsUnhandled();\n return this._settledValue();\n};\n\nPromise.PromiseInspection = PromiseInspection;\n};\n\n},{}],33:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar isObject = util.isObject;\n\nfunction tryConvertToPromise(obj, context) {\n if (isObject(obj)) {\n if (obj instanceof Promise) return obj;\n var then = getThen(obj);\n if (then === errorObj) {\n if (context) context._pushContext();\n var ret = Promise.reject(then.e);\n if (context) context._popContext();\n return ret;\n } else if (typeof then === \"function\") {\n if (isAnyBluebirdPromise(obj)) {\n var ret = new Promise(INTERNAL);\n obj._then(\n ret._fulfill,\n ret._reject,\n undefined,\n ret,\n null\n );\n return ret;\n }\n return doThenable(obj, then, context);\n }\n }\n return obj;\n}\n\nfunction doGetThen(obj) {\n return obj.then;\n}\n\nfunction getThen(obj) {\n try {\n return doGetThen(obj);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\n\nvar hasProp = {}.hasOwnProperty;\nfunction isAnyBluebirdPromise(obj) {\n try {\n return hasProp.call(obj, \"_promise0\");\n } catch (e) {\n return false;\n }\n}\n\nfunction doThenable(x, then, context) {\n var promise = new Promise(INTERNAL);\n var ret = promise;\n if (context) context._pushContext();\n promise._captureStackTrace();\n if (context) context._popContext();\n var synchronous = true;\n var result = util.tryCatch(then).call(x, resolve, reject);\n synchronous = false;\n\n if (promise && result === errorObj) {\n promise._rejectCallback(result.e, true, true);\n promise = null;\n }\n\n function resolve(value) {\n if (!promise) return;\n promise._resolveCallback(value);\n promise = null;\n }\n\n function reject(reason) {\n if (!promise) return;\n promise._rejectCallback(reason, synchronous, true);\n promise = null;\n }\n return ret;\n}\n\nreturn tryConvertToPromise;\n};\n\n},{\"./util\":36}],34:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, debug) {\nvar util = _dereq_(\"./util\");\nvar TimeoutError = Promise.TimeoutError;\n\nfunction HandleWrapper(handle) {\n this.handle = handle;\n}\n\nHandleWrapper.prototype._resultCancelled = function() {\n clearTimeout(this.handle);\n};\n\nvar afterValue = function(value) { return delay(+this).thenReturn(value); };\nvar delay = Promise.delay = function (ms, value) {\n var ret;\n var handle;\n if (value !== undefined) {\n ret = Promise.resolve(value)\n ._then(afterValue, null, null, ms, undefined);\n if (debug.cancellation() && value instanceof Promise) {\n ret._setOnCancel(value);\n }\n } else {\n ret = new Promise(INTERNAL);\n handle = setTimeout(function() { ret._fulfill(); }, +ms);\n if (debug.cancellation()) {\n ret._setOnCancel(new HandleWrapper(handle));\n }\n ret._captureStackTrace();\n }\n ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.prototype.delay = function (ms) {\n return delay(ms, this);\n};\n\nvar afterTimeout = function (promise, message, parent) {\n var err;\n if (typeof message !== \"string\") {\n if (message instanceof Error) {\n err = message;\n } else {\n err = new TimeoutError(\"operation timed out\");\n }\n } else {\n err = new TimeoutError(message);\n }\n util.markAsOriginatingFromRejection(err);\n promise._attachExtraTrace(err);\n promise._reject(err);\n\n if (parent != null) {\n parent.cancel();\n }\n};\n\nfunction successClear(value) {\n clearTimeout(this.handle);\n return value;\n}\n\nfunction failureClear(reason) {\n clearTimeout(this.handle);\n throw reason;\n}\n\nPromise.prototype.timeout = function (ms, message) {\n ms = +ms;\n var ret, parent;\n\n var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() {\n if (ret.isPending()) {\n afterTimeout(ret, message, parent);\n }\n }, ms));\n\n if (debug.cancellation()) {\n parent = this.then();\n ret = parent._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n ret._setOnCancel(handleWrapper);\n } else {\n ret = this._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n }\n\n return ret;\n};\n\n};\n\n},{\"./util\":36}],35:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function (Promise, apiRejection, tryConvertToPromise,\n createContext, INTERNAL, debug) {\n var util = _dereq_(\"./util\");\n var TypeError = _dereq_(\"./errors\").TypeError;\n var inherits = _dereq_(\"./util\").inherits;\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n var NULL = {};\n\n function thrower(e) {\n setTimeout(function(){throw e;}, 0);\n }\n\n function castPreservingDisposable(thenable) {\n var maybePromise = tryConvertToPromise(thenable);\n if (maybePromise !== thenable &&\n typeof thenable._isDisposable === \"function\" &&\n typeof thenable._getDisposer === \"function\" &&\n thenable._isDisposable()) {\n maybePromise._setDisposable(thenable._getDisposer());\n }\n return maybePromise;\n }\n function dispose(resources, inspection) {\n var i = 0;\n var len = resources.length;\n var ret = new Promise(INTERNAL);\n function iterator() {\n if (i >= len) return ret._fulfill();\n var maybePromise = castPreservingDisposable(resources[i++]);\n if (maybePromise instanceof Promise &&\n maybePromise._isDisposable()) {\n try {\n maybePromise = tryConvertToPromise(\n maybePromise._getDisposer().tryDispose(inspection),\n resources.promise);\n } catch (e) {\n return thrower(e);\n }\n if (maybePromise instanceof Promise) {\n return maybePromise._then(iterator, thrower,\n null, null, null);\n }\n }\n iterator();\n }\n iterator();\n return ret;\n }\n\n function Disposer(data, promise, context) {\n this._data = data;\n this._promise = promise;\n this._context = context;\n }\n\n Disposer.prototype.data = function () {\n return this._data;\n };\n\n Disposer.prototype.promise = function () {\n return this._promise;\n };\n\n Disposer.prototype.resource = function () {\n if (this.promise().isFulfilled()) {\n return this.promise().value();\n }\n return NULL;\n };\n\n Disposer.prototype.tryDispose = function(inspection) {\n var resource = this.resource();\n var context = this._context;\n if (context !== undefined) context._pushContext();\n var ret = resource !== NULL\n ? this.doDispose(resource, inspection) : null;\n if (context !== undefined) context._popContext();\n this._promise._unsetDisposable();\n this._data = null;\n return ret;\n };\n\n Disposer.isDisposer = function (d) {\n return (d != null &&\n typeof d.resource === \"function\" &&\n typeof d.tryDispose === \"function\");\n };\n\n function FunctionDisposer(fn, promise, context) {\n this.constructor$(fn, promise, context);\n }\n inherits(FunctionDisposer, Disposer);\n\n FunctionDisposer.prototype.doDispose = function (resource, inspection) {\n var fn = this.data();\n return fn.call(resource, resource, inspection);\n };\n\n function maybeUnwrapDisposer(value) {\n if (Disposer.isDisposer(value)) {\n this.resources[this.index]._setDisposable(value);\n return value.promise();\n }\n return value;\n }\n\n function ResourceList(length) {\n this.length = length;\n this.promise = null;\n this[length-1] = null;\n }\n\n ResourceList.prototype._resultCancelled = function() {\n var len = this.length;\n for (var i = 0; i < len; ++i) {\n var item = this[i];\n if (item instanceof Promise) {\n item.cancel();\n }\n }\n };\n\n Promise.using = function () {\n var len = arguments.length;\n if (len < 2) return apiRejection(\n \"you must pass at least 2 arguments to Promise.using\");\n var fn = arguments[len - 1];\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var input;\n var spreadArgs = true;\n if (len === 2 && Array.isArray(arguments[0])) {\n input = arguments[0];\n len = input.length;\n spreadArgs = false;\n } else {\n input = arguments;\n len--;\n }\n var resources = new ResourceList(len);\n for (var i = 0; i < len; ++i) {\n var resource = input[i];\n if (Disposer.isDisposer(resource)) {\n var disposer = resource;\n resource = resource.promise();\n resource._setDisposable(disposer);\n } else {\n var maybePromise = tryConvertToPromise(resource);\n if (maybePromise instanceof Promise) {\n resource =\n maybePromise._then(maybeUnwrapDisposer, null, null, {\n resources: resources,\n index: i\n }, undefined);\n }\n }\n resources[i] = resource;\n }\n\n var reflectedResources = new Array(resources.length);\n for (var i = 0; i < reflectedResources.length; ++i) {\n reflectedResources[i] = Promise.resolve(resources[i]).reflect();\n }\n\n var resultPromise = Promise.all(reflectedResources)\n .then(function(inspections) {\n for (var i = 0; i < inspections.length; ++i) {\n var inspection = inspections[i];\n if (inspection.isRejected()) {\n errorObj.e = inspection.error();\n return errorObj;\n } else if (!inspection.isFulfilled()) {\n resultPromise.cancel();\n return;\n }\n inspections[i] = inspection.value();\n }\n promise._pushContext();\n\n fn = tryCatch(fn);\n var ret = spreadArgs\n ? fn.apply(undefined, inspections) : fn(inspections);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret, promiseCreated, \"Promise.using\", promise);\n return ret;\n });\n\n var promise = resultPromise.lastly(function() {\n var inspection = new Promise.PromiseInspection(resultPromise);\n return dispose(resources, inspection);\n });\n resources.promise = promise;\n promise._setOnCancel(resources);\n return promise;\n };\n\n Promise.prototype._setDisposable = function (disposer) {\n this._bitField = this._bitField | 131072;\n this._disposer = disposer;\n };\n\n Promise.prototype._isDisposable = function () {\n return (this._bitField & 131072) > 0;\n };\n\n Promise.prototype._getDisposer = function () {\n return this._disposer;\n };\n\n Promise.prototype._unsetDisposable = function () {\n this._bitField = this._bitField & (~131072);\n this._disposer = undefined;\n };\n\n Promise.prototype.disposer = function (fn) {\n if (typeof fn === \"function\") {\n return new FunctionDisposer(fn, this, createContext());\n }\n throw new TypeError();\n };\n\n};\n\n},{\"./errors\":12,\"./util\":36}],36:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar canEvaluate = typeof navigator == \"undefined\";\n\nvar errorObj = {e: {}};\nvar tryCatchTarget;\nvar globalObject = typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n typeof global !== \"undefined\" ? global :\n this !== undefined ? this : null;\n\nfunction tryCatcher() {\n try {\n var target = tryCatchTarget;\n tryCatchTarget = null;\n return target.apply(this, arguments);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\nfunction tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n}\n\nvar inherits = function(Child, Parent) {\n var hasProp = {}.hasOwnProperty;\n\n function T() {\n this.constructor = Child;\n this.constructor$ = Parent;\n for (var propertyName in Parent.prototype) {\n if (hasProp.call(Parent.prototype, propertyName) &&\n propertyName.charAt(propertyName.length-1) !== \"$\"\n ) {\n this[propertyName + \"$\"] = Parent.prototype[propertyName];\n }\n }\n }\n T.prototype = Parent.prototype;\n Child.prototype = new T();\n return Child.prototype;\n};\n\n\nfunction isPrimitive(val) {\n return val == null || val === true || val === false ||\n typeof val === \"string\" || typeof val === \"number\";\n\n}\n\nfunction isObject(value) {\n return typeof value === \"function\" ||\n typeof value === \"object\" && value !== null;\n}\n\nfunction maybeWrapAsError(maybeError) {\n if (!isPrimitive(maybeError)) return maybeError;\n\n return new Error(safeToString(maybeError));\n}\n\nfunction withAppended(target, appendee) {\n var len = target.length;\n var ret = new Array(len + 1);\n var i;\n for (i = 0; i < len; ++i) {\n ret[i] = target[i];\n }\n ret[i] = appendee;\n return ret;\n}\n\nfunction getDataPropertyOrDefault(obj, key, defaultValue) {\n if (es5.isES5) {\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n if (desc != null) {\n return desc.get == null && desc.set == null\n ? desc.value\n : defaultValue;\n }\n } else {\n return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;\n }\n}\n\nfunction notEnumerableProp(obj, name, value) {\n if (isPrimitive(obj)) return obj;\n var descriptor = {\n value: value,\n configurable: true,\n enumerable: false,\n writable: true\n };\n es5.defineProperty(obj, name, descriptor);\n return obj;\n}\n\nfunction thrower(r) {\n throw r;\n}\n\nvar inheritedDataKeys = (function() {\n var excludedPrototypes = [\n Array.prototype,\n Object.prototype,\n Function.prototype\n ];\n\n var isExcludedProto = function(val) {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (excludedPrototypes[i] === val) {\n return true;\n }\n }\n return false;\n };\n\n if (es5.isES5) {\n var getKeys = Object.getOwnPropertyNames;\n return function(obj) {\n var ret = [];\n var visitedKeys = Object.create(null);\n while (obj != null && !isExcludedProto(obj)) {\n var keys;\n try {\n keys = getKeys(obj);\n } catch (e) {\n return ret;\n }\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (visitedKeys[key]) continue;\n visitedKeys[key] = true;\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n if (desc != null && desc.get == null && desc.set == null) {\n ret.push(key);\n }\n }\n obj = es5.getPrototypeOf(obj);\n }\n return ret;\n };\n } else {\n var hasProp = {}.hasOwnProperty;\n return function(obj) {\n if (isExcludedProto(obj)) return [];\n var ret = [];\n\n /*jshint forin:false */\n enumeration: for (var key in obj) {\n if (hasProp.call(obj, key)) {\n ret.push(key);\n } else {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (hasProp.call(excludedPrototypes[i], key)) {\n continue enumeration;\n }\n }\n ret.push(key);\n }\n }\n return ret;\n };\n }\n\n})();\n\nvar thisAssignmentPattern = /this\\s*\\.\\s*\\S+\\s*=/;\nfunction isClass(fn) {\n try {\n if (typeof fn === \"function\") {\n var keys = es5.names(fn.prototype);\n\n var hasMethods = es5.isES5 && keys.length > 1;\n var hasMethodsOtherThanConstructor = keys.length > 0 &&\n !(keys.length === 1 && keys[0] === \"constructor\");\n var hasThisAssignmentAndStaticMethods =\n thisAssignmentPattern.test(fn + \"\") && es5.names(fn).length > 0;\n\n if (hasMethods || hasMethodsOtherThanConstructor ||\n hasThisAssignmentAndStaticMethods) {\n return true;\n }\n }\n return false;\n } catch (e) {\n return false;\n }\n}\n\nfunction toFastProperties(obj) {\n /*jshint -W027,-W055,-W031*/\n function FakeConstructor() {}\n FakeConstructor.prototype = obj;\n var receiver = new FakeConstructor();\n function ic() {\n return typeof receiver.foo;\n }\n ic();\n ic();\n return obj;\n eval(obj);\n}\n\nvar rident = /^[a-z$_][a-z$_0-9]*$/i;\nfunction isIdentifier(str) {\n return rident.test(str);\n}\n\nfunction filledRange(count, prefix, suffix) {\n var ret = new Array(count);\n for(var i = 0; i < count; ++i) {\n ret[i] = prefix + i + suffix;\n }\n return ret;\n}\n\nfunction safeToString(obj) {\n try {\n return obj + \"\";\n } catch (e) {\n return \"[no string representation]\";\n }\n}\n\nfunction isError(obj) {\n return obj instanceof Error ||\n (obj !== null &&\n typeof obj === \"object\" &&\n typeof obj.message === \"string\" &&\n typeof obj.name === \"string\");\n}\n\nfunction markAsOriginatingFromRejection(e) {\n try {\n notEnumerableProp(e, \"isOperational\", true);\n }\n catch(ignore) {}\n}\n\nfunction originatesFromRejection(e) {\n if (e == null) return false;\n return ((e instanceof Error[\"__BluebirdErrorTypes__\"].OperationalError) ||\n e[\"isOperational\"] === true);\n}\n\nfunction canAttachTrace(obj) {\n return isError(obj) && es5.propertyIsWritable(obj, \"stack\");\n}\n\nvar ensureErrorObject = (function() {\n if (!(\"stack\" in new Error())) {\n return function(value) {\n if (canAttachTrace(value)) return value;\n try {throw new Error(safeToString(value));}\n catch(err) {return err;}\n };\n } else {\n return function(value) {\n if (canAttachTrace(value)) return value;\n return new Error(safeToString(value));\n };\n }\n})();\n\nfunction classString(obj) {\n return {}.toString.call(obj);\n}\n\nfunction copyDescriptors(from, to, filter) {\n var keys = es5.names(from);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (filter(key)) {\n try {\n es5.defineProperty(to, key, es5.getDescriptor(from, key));\n } catch (ignore) {}\n }\n }\n}\n\nvar asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n }\n return null;\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n var ArrayFrom = typeof Array.from === \"function\" ? function(v) {\n return Array.from(v);\n } : function(v) {\n var ret = [];\n var it = v[Symbol.iterator]();\n var itResult;\n while (!((itResult = it.next()).done)) {\n ret.push(itResult.value);\n }\n return ret;\n };\n\n asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n } else if (v != null && typeof v[Symbol.iterator] === \"function\") {\n return ArrayFrom(v);\n }\n return null;\n };\n}\n\nvar isNode = typeof process !== \"undefined\" &&\n classString(process).toLowerCase() === \"[object process]\";\n\nvar hasEnvVariables = typeof process !== \"undefined\" &&\n typeof process.env !== \"undefined\";\n\nfunction env(key) {\n return hasEnvVariables ? process.env[key] : undefined;\n}\n\nfunction getNativePromise() {\n if (typeof Promise === \"function\") {\n try {\n var promise = new Promise(function(){});\n if ({}.toString.call(promise) === \"[object Promise]\") {\n return Promise;\n }\n } catch (e) {}\n }\n}\n\nfunction domainBind(self, cb) {\n return self.bind(cb);\n}\n\nvar ret = {\n isClass: isClass,\n isIdentifier: isIdentifier,\n inheritedDataKeys: inheritedDataKeys,\n getDataPropertyOrDefault: getDataPropertyOrDefault,\n thrower: thrower,\n isArray: es5.isArray,\n asArray: asArray,\n notEnumerableProp: notEnumerableProp,\n isPrimitive: isPrimitive,\n isObject: isObject,\n isError: isError,\n canEvaluate: canEvaluate,\n errorObj: errorObj,\n tryCatch: tryCatch,\n inherits: inherits,\n withAppended: withAppended,\n maybeWrapAsError: maybeWrapAsError,\n toFastProperties: toFastProperties,\n filledRange: filledRange,\n toString: safeToString,\n canAttachTrace: canAttachTrace,\n ensureErrorObject: ensureErrorObject,\n originatesFromRejection: originatesFromRejection,\n markAsOriginatingFromRejection: markAsOriginatingFromRejection,\n classString: classString,\n copyDescriptors: copyDescriptors,\n hasDevTools: typeof chrome !== \"undefined\" && chrome &&\n typeof chrome.loadTimes === \"function\",\n isNode: isNode,\n hasEnvVariables: hasEnvVariables,\n env: env,\n global: globalObject,\n getNativePromise: getNativePromise,\n domainBind: domainBind\n};\nret.isRecentNode = ret.isNode && (function() {\n var version;\n if (process.versions && process.versions.node) { \n version = process.versions.node.split(\".\").map(Number);\n } else if (process.version) {\n version = process.version.split(\".\").map(Number);\n }\n return (version[0] === 0 && version[1] > 10) || (version[0] > 0);\n})();\n\nif (ret.isNode) ret.toFastProperties(process);\n\ntry {throw new Error(); } catch (e) {ret.lastLineError = e;}\nmodule.exports = ret;\n\n},{\"./es5\":13}]},{},[4])(4)\n}); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _utils = require('matrix-js-sdk/lib/utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _eventTimeline = require('matrix-js-sdk/lib/models/event-timeline');\n\nvar _eventTimeline2 = _interopRequireDefault(_eventTimeline);\n\nvar _eventTimelineSet = require('matrix-js-sdk/lib/models/event-timeline-set');\n\nvar _eventTimelineSet2 = _interopRequireDefault(_eventTimelineSet);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _createMatrixClient = require('./utils/createMatrixClient');\n\nvar _createMatrixClient2 = _interopRequireDefault(_createMatrixClient);\n\nvar _SettingsStore = require('./settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _MatrixActionCreators = require('./actions/MatrixActionCreators');\n\nvar _MatrixActionCreators2 = _interopRequireDefault(_MatrixActionCreators);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _crypto = require('matrix-js-sdk/lib/crypto');\n\nvar _MatrixClientBackedSettingsHandler = require('./settings/handlers/MatrixClientBackedSettingsHandler');\n\nvar _MatrixClientBackedSettingsHandler2 = _interopRequireDefault(_MatrixClientBackedSettingsHandler);\n\nvar _StorageManager = require('./utils/StorageManager');\n\nvar StorageManager = _interopRequireWildcard(_StorageManager);\n\nvar _IdentityAuthClient = require('./IdentityAuthClient');\n\nvar _IdentityAuthClient2 = _interopRequireDefault(_IdentityAuthClient);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Wrapper object for handling the js-sdk Matrix Client object in the react-sdk\n * Handles the creation/initialisation of client objects.\n * This module provides a singleton instance of this class so the 'current'\n * Matrix Client object is available easily.\n */\nvar MatrixClientPeg = function () {\n function MatrixClientPeg() {\n (0, _classCallCheck3.default)(this, MatrixClientPeg);\n\n this.matrixClient = null;\n this._justRegisteredUserId = null;\n\n // These are the default options used when when the\n // client is started in 'start'. These can be altered\n // at any time up to after the 'will_start_client'\n // event is finished processing.\n this.opts = {\n initialSyncLimit: 20\n };\n // the credentials used to init the current client object.\n // used if we tear it down & recreate it with a different store\n this._currentClientCreds = null;\n }\n\n /**\n * Sets the script href passed to the IndexedDB web worker\n * If set, a separate web worker will be started to run the IndexedDB\n * queries on.\n *\n * @param {string} script href to the script to be passed to the web worker\n */\n\n\n (0, _createClass3.default)(MatrixClientPeg, [{\n key: 'setIndexedDbWorkerScript',\n value: function setIndexedDbWorkerScript(script) {\n _createMatrixClient2.default.indexedDbWorkerScript = script;\n }\n }, {\n key: 'get',\n value: function get() {\n return this.matrixClient;\n }\n }, {\n key: 'unset',\n value: function unset() {\n this.matrixClient = null;\n\n _MatrixActionCreators2.default.stop();\n }\n\n /**\n * If we've registered a user ID we set this to the ID of the\n * user we've just registered. If they then go & log in, we\n * can send them to the welcome user (obviously this doesn't\n * guarentee they'll get a chat with the welcome user).\n *\n * @param {string} uid The user ID of the user we've just registered\n */\n\n }, {\n key: 'setJustRegisteredUserId',\n value: function setJustRegisteredUserId(uid) {\n this._justRegisteredUserId = uid;\n }\n\n /**\n * Returns true if the current user has just been registered by this\n * client as determined by setJustRegisteredUserId()\n *\n * @returns {bool} True if user has just been registered\n */\n\n }, {\n key: 'currentUserIsJustRegistered',\n value: function currentUserIsJustRegistered() {\n return this.matrixClient && this.matrixClient.credentials.userId === this._justRegisteredUserId;\n }\n\n /*\n * Replace this MatrixClientPeg's client with a client instance that has\n * homeserver / identity server URLs and active credentials\n */\n\n }, {\n key: 'replaceUsingCreds',\n value: function replaceUsingCreds(creds) {\n this._currentClientCreds = creds;\n this._createClient(creds);\n }\n }, {\n key: 'assign',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var _arr, _i, dbType, promise, CryptoStoreTooNewDialog, opts;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _arr = ['indexeddb', 'memory'];\n _i = 0;\n\n case 2:\n if (!(_i < _arr.length)) {\n _context.next = 24;\n break;\n }\n\n dbType = _arr[_i];\n _context.prev = 4;\n promise = this.matrixClient.store.startup();\n\n console.log(\"MatrixClientPeg: waiting for MatrixClient store to initialise\");\n _context.next = 9;\n return (0, _bluebird.resolve)(promise);\n\n case 9:\n return _context.abrupt('break', 24);\n\n case 12:\n _context.prev = 12;\n _context.t0 = _context['catch'](4);\n\n if (!(dbType === 'indexeddb')) {\n _context.next = 19;\n break;\n }\n\n console.error('Error starting matrixclient store - falling back to memory store', _context.t0);\n this.matrixClient.store = new _matrixJsSdk.MemoryStore({\n localStorage: global.localStorage\n });\n _context.next = 21;\n break;\n\n case 19:\n console.error('Failed to start memory store!', _context.t0);\n throw _context.t0;\n\n case 21:\n _i++;\n _context.next = 2;\n break;\n\n case 24:\n\n StorageManager.trackStores(this.matrixClient);\n\n // try to initialise e2e on the new client\n _context.prev = 25;\n\n if (!(!_SettingsStore2.default.getValue(\"lowBandwidth\") && this.matrixClient.initCrypto)) {\n _context.next = 30;\n break;\n }\n\n _context.next = 29;\n return (0, _bluebird.resolve)(this.matrixClient.initCrypto());\n\n case 29:\n StorageManager.setCryptoInitialised(true);\n\n case 30:\n _context.next = 36;\n break;\n\n case 32:\n _context.prev = 32;\n _context.t1 = _context['catch'](25);\n\n if (_context.t1 && _context.t1.name === 'InvalidCryptoStoreError') {\n // The js-sdk found a crypto DB too new for it to use\n CryptoStoreTooNewDialog = _index2.default.getComponent(\"views.dialogs.CryptoStoreTooNewDialog\");\n\n _Modal2.default.createDialog(CryptoStoreTooNewDialog, {\n host: window.location.host\n });\n }\n // this can happen for a number of reasons, the most likely being\n // that the olm library was missing. It's not fatal.\n console.warn(\"Unable to initialise e2e\", _context.t1);\n\n case 36:\n opts = _utils2.default.deepCopy(this.opts);\n // the react sdk doesn't work without this, so don't allow\n\n opts.pendingEventOrdering = \"detached\";\n opts.lazyLoadMembers = true;\n\n // Connect the matrix client to the dispatcher and setting handlers\n _MatrixActionCreators2.default.start(this.matrixClient);\n _MatrixClientBackedSettingsHandler2.default.matrixClient = this.matrixClient;\n\n return _context.abrupt('return', opts);\n\n case 42:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[4, 12], [25, 32]]);\n }));\n\n function assign() {\n return _ref.apply(this, arguments);\n }\n\n return assign;\n }()\n }, {\n key: 'start',\n value: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var opts;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return (0, _bluebird.resolve)(this.assign());\n\n case 2:\n opts = _context2.sent;\n\n\n console.log('MatrixClientPeg: really starting MatrixClient');\n _context2.next = 6;\n return (0, _bluebird.resolve)(this.get().startClient(opts));\n\n case 6:\n console.log('MatrixClientPeg: MatrixClient started');\n\n case 7:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function start() {\n return _ref2.apply(this, arguments);\n }\n\n return start;\n }()\n }, {\n key: 'getCredentials',\n value: function getCredentials() {\n return {\n homeserverUrl: this.matrixClient.baseUrl,\n identityServerUrl: this.matrixClient.idBaseUrl,\n userId: this.matrixClient.credentials.userId,\n deviceId: this.matrixClient.getDeviceId(),\n accessToken: this.matrixClient.getAccessToken(),\n guest: this.matrixClient.isGuest()\n };\n }\n\n /*\n * Return the server name of the user's homeserver\n * Throws an error if unable to deduce the homeserver name\n * (eg. if the user is not logged in)\n */\n\n }, {\n key: 'getHomeserverName',\n value: function getHomeserverName() {\n var matches = /^@.+:(.+)$/.exec(this.matrixClient.credentials.userId);\n if (matches === null || matches.length < 1) {\n throw new Error(\"Failed to derive homeserver name from user ID!\");\n }\n return matches[1];\n }\n }, {\n key: '_createClient',\n value: function _createClient(creds) {\n var opts = {\n baseUrl: creds.homeserverUrl,\n idBaseUrl: creds.identityServerUrl,\n accessToken: creds.accessToken,\n userId: creds.userId,\n deviceId: creds.deviceId,\n timelineSupport: true,\n forceTURN: !_SettingsStore2.default.getValue('webRtcAllowPeerToPeer', false),\n fallbackICEServerAllowed: !!_SettingsStore2.default.getValue('fallbackICEServerAllowed'),\n verificationMethods: [_crypto.verificationMethods.SAS],\n unstableClientRelationAggregation: true,\n identityServer: new _IdentityAuthClient2.default()\n };\n\n this.matrixClient = (0, _createMatrixClient2.default)(opts);\n\n // we're going to add eventlisteners for each matrix event tile, so the\n // potential number of event listeners is quite high.\n this.matrixClient.setMaxListeners(500);\n\n this.matrixClient.setGuest(Boolean(creds.guest));\n\n var notifTimelineSet = new _eventTimelineSet2.default(null, {\n timelineSupport: true\n });\n // XXX: what is our initial pagination token?! it somehow needs to be synchronised with /sync.\n notifTimelineSet.getLiveTimeline().setPaginationToken(\"\", _eventTimeline2.default.BACKWARDS);\n this.matrixClient.setNotifTimelineSet(notifTimelineSet);\n }\n }]);\n return MatrixClientPeg;\n}(); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd.\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nif (!global.mxMatrixClientPeg) {\n global.mxMatrixClientPeg = new MatrixClientPeg();\n}\nexports.default = global.mxMatrixClientPeg;\nmodule.exports = exports['default'];\n//# sourceMappingURL=MatrixClientPeg.js.map","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar React = require('react');\nvar factory = require('./factory');\n\nif (typeof React === 'undefined') {\n throw Error(\n 'create-react-class could not find the React object. If you are using script tags, ' +\n 'make sure that React is being loaded before create-react-class.'\n );\n}\n\n// Hack to grab NoopUpdateQueue from isomorphic React\nvar ReactNoopUpdateQueue = new React.Component().updater;\n\nmodule.exports = factory(\n React.Component,\n React.isValidElement,\n ReactNoopUpdateQueue\n);\n","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.Immutable = factory();\n}(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice;\n\n function createClass(ctor, superClass) {\n if (superClass) {\n ctor.prototype = Object.create(superClass.prototype);\n }\n ctor.prototype.constructor = ctor;\n }\n\n function Iterable(value) {\n return isIterable(value) ? value : Seq(value);\n }\n\n\n createClass(KeyedIterable, Iterable);\n function KeyedIterable(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n\n createClass(IndexedIterable, Iterable);\n function IndexedIterable(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n\n createClass(SetIterable, Iterable);\n function SetIterable(value) {\n return isIterable(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n\n\n function isIterable(maybeIterable) {\n return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]);\n }\n\n function isKeyed(maybeKeyed) {\n return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]);\n }\n\n function isIndexed(maybeIndexed) {\n return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]);\n }\n\n function isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n }\n\n function isOrdered(maybeOrdered) {\n return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]);\n }\n\n Iterable.isIterable = isIterable;\n Iterable.isKeyed = isKeyed;\n Iterable.isIndexed = isIndexed;\n Iterable.isAssociative = isAssociative;\n Iterable.isOrdered = isOrdered;\n\n Iterable.Keyed = KeyedIterable;\n Iterable.Indexed = IndexedIterable;\n Iterable.Set = SetIterable;\n\n\n var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n // Used for setting prototype methods that IE8 chokes on.\n var DELETE = 'delete';\n\n // Constants describing the size of trie nodes.\n var SHIFT = 5; // Resulted in best performance after ______?\n var SIZE = 1 << SHIFT;\n var MASK = SIZE - 1;\n\n // A consistent shared value representing \"not set\" which equals nothing other\n // than itself, and nothing that could be provided externally.\n var NOT_SET = {};\n\n // Boolean references, Rough equivalent of `bool &`.\n var CHANGE_LENGTH = { value: false };\n var DID_ALTER = { value: false };\n\n function MakeRef(ref) {\n ref.value = false;\n return ref;\n }\n\n function SetRef(ref) {\n ref && (ref.value = true);\n }\n\n // A function which returns a value representing an \"owner\" for transient writes\n // to tries. The return value will only ever equal itself, and will not equal\n // the return of any subsequent call of this function.\n function OwnerID() {}\n\n // http://jsperf.com/copy-array-inline\n function arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n }\n\n function ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n }\n\n function wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n }\n\n function returnTrue() {\n return true;\n }\n\n function wholeSlice(begin, end, size) {\n return (begin === 0 || (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size));\n }\n\n function resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n }\n\n function resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n }\n\n function resolveIndex(index, size, defaultIndex) {\n return index === undefined ?\n defaultIndex :\n index < 0 ?\n Math.max(0, size + index) :\n size === undefined ?\n index :\n Math.min(size, index);\n }\n\n /* global Symbol */\n\n var ITERATE_KEYS = 0;\n var ITERATE_VALUES = 1;\n var ITERATE_ENTRIES = 2;\n\n var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\n var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\n\n function Iterator(next) {\n this.next = next;\n }\n\n Iterator.prototype.toString = function() {\n return '[Iterator]';\n };\n\n\n Iterator.KEYS = ITERATE_KEYS;\n Iterator.VALUES = ITERATE_VALUES;\n Iterator.ENTRIES = ITERATE_ENTRIES;\n\n Iterator.prototype.inspect =\n Iterator.prototype.toSource = function () { return this.toString(); }\n Iterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n };\n\n\n function iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult ? (iteratorResult.value = value) : (iteratorResult = {\n value: value, done: false\n });\n return iteratorResult;\n }\n\n function iteratorDone() {\n return { value: undefined, done: true };\n }\n\n function hasIterator(maybeIterable) {\n return !!getIteratorFn(maybeIterable);\n }\n\n function isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n }\n\n function getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n }\n\n function getIteratorFn(iterable) {\n var iteratorFn = iterable && (\n (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]\n );\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n function isArrayLike(value) {\n return value && typeof value.length === 'number';\n }\n\n createClass(Seq, Iterable);\n function Seq(value) {\n return value === null || value === undefined ? emptySequence() :\n isIterable(value) ? value.toSeq() : seqFromValue(value);\n }\n\n Seq.of = function(/*...values*/) {\n return Seq(arguments);\n };\n\n Seq.prototype.toSeq = function() {\n return this;\n };\n\n Seq.prototype.toString = function() {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function() {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, true);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, true);\n };\n\n\n\n createClass(KeyedSeq, Seq);\n function KeyedSeq(value) {\n return value === null || value === undefined ?\n emptySequence().toKeyedSeq() :\n isIterable(value) ?\n (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) :\n keyedSeqFromValue(value);\n }\n\n KeyedSeq.prototype.toKeyedSeq = function() {\n return this;\n };\n\n\n\n createClass(IndexedSeq, Seq);\n function IndexedSeq(value) {\n return value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value.toIndexedSeq();\n }\n\n IndexedSeq.of = function(/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function() {\n return this;\n };\n\n IndexedSeq.prototype.toString = function() {\n return this.__toString('Seq [', ']');\n };\n\n IndexedSeq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, false);\n };\n\n IndexedSeq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, false);\n };\n\n\n\n createClass(SetSeq, Seq);\n function SetSeq(value) {\n return (\n value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value\n ).toSetSeq();\n }\n\n SetSeq.of = function(/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function() {\n return this;\n };\n\n\n\n Seq.isSeq = isSeq;\n Seq.Keyed = KeyedSeq;\n Seq.Set = SetSeq;\n Seq.Indexed = IndexedSeq;\n\n var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\n\n Seq.prototype[IS_SEQ_SENTINEL] = true;\n\n\n\n createClass(ArraySeq, IndexedSeq);\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n ArraySeq.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function(fn, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ArraySeq.prototype.__iterator = function(type, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n var ii = 0;\n return new Iterator(function() \n {return ii > maxIndex ?\n iteratorDone() :\n iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])}\n );\n };\n\n\n\n createClass(ObjectSeq, KeyedSeq);\n function ObjectSeq(object) {\n var keys = Object.keys(object);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n ObjectSeq.prototype.get = function(key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function(key) {\n return this._object.hasOwnProperty(key);\n };\n\n ObjectSeq.prototype.__iterate = function(fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var key = keys[reverse ? maxIndex - ii : ii];\n if (fn(object[key], key, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ObjectSeq.prototype.__iterator = function(type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var key = keys[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, key, object[key]);\n });\n };\n\n ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(IterableSeq, IndexedSeq);\n function IterableSeq(iterable) {\n this._iterable = iterable;\n this.size = iterable.length || iterable.size;\n }\n\n IterableSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n IterableSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n\n\n createClass(IteratorSeq, IndexedSeq);\n function IteratorSeq(iterator) {\n this._iterator = iterator;\n this._iteratorCache = [];\n }\n\n IteratorSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n while (iterations < cache.length) {\n if (fn(cache[iterations], iterations++, this) === false) {\n return iterations;\n }\n }\n var step;\n while (!(step = iterator.next()).done) {\n var val = step.value;\n cache[iterations] = val;\n if (fn(val, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n\n IteratorSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n return new Iterator(function() {\n if (iterations >= cache.length) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n cache[iterations] = step.value;\n }\n return iteratorValue(type, iterations, cache[iterations++]);\n });\n };\n\n\n\n\n // # pragma Helper functions\n\n function isSeq(maybeSeq) {\n return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]);\n }\n\n var EMPTY_SEQ;\n\n function emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n }\n\n function keyedSeqFromValue(value) {\n var seq =\n Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() :\n isIterator(value) ? new IteratorSeq(value).fromEntrySeq() :\n hasIterator(value) ? new IterableSeq(value).fromEntrySeq() :\n typeof value === 'object' ? new ObjectSeq(value) :\n undefined;\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of [k, v] entries, '+\n 'or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values: ' + value\n );\n }\n return seq;\n }\n\n function seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value) ||\n (typeof value === 'object' && new ObjectSeq(value));\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values, or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function maybeIndexedSeqFromValue(value) {\n return (\n isArrayLike(value) ? new ArraySeq(value) :\n isIterator(value) ? new IteratorSeq(value) :\n hasIterator(value) ? new IterableSeq(value) :\n undefined\n );\n }\n\n function seqIterate(seq, fn, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var entry = cache[reverse ? maxIndex - ii : ii];\n if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) {\n return ii + 1;\n }\n }\n return ii;\n }\n return seq.__iterateUncached(fn, reverse);\n }\n\n function seqIterator(seq, type, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var entry = cache[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]);\n });\n }\n return seq.__iteratorUncached(type, reverse);\n }\n\n function fromJS(json, converter) {\n return converter ?\n fromJSWith(converter, json, '', {'': json}) :\n fromJSDefault(json);\n }\n\n function fromJSWith(converter, json, key, parentJSON) {\n if (Array.isArray(json)) {\n return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n if (isPlainObj(json)) {\n return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n return json;\n }\n\n function fromJSDefault(json) {\n if (Array.isArray(json)) {\n return IndexedSeq(json).map(fromJSDefault).toList();\n }\n if (isPlainObj(json)) {\n return KeyedSeq(json).map(fromJSDefault).toMap();\n }\n return json;\n }\n\n function isPlainObj(value) {\n return value && (value.constructor === Object || value.constructor === undefined);\n }\n\n /**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if the it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections implement `equals` and `hashCode`.\n *\n */\n function is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function') {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n if (typeof valueA.equals === 'function' &&\n typeof valueB.equals === 'function' &&\n valueA.equals(valueB)) {\n return true;\n }\n return false;\n }\n\n function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isIterable(b) ||\n a.size !== undefined && b.size !== undefined && a.size !== b.size ||\n a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return b.every(function(v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done;\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function(v, k) {\n if (notAssociative ? !a.has(v) :\n flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n }\n\n createClass(Repeat, IndexedSeq);\n\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n Repeat.prototype.toString = function() {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function(searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function(begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size) ? this :\n new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n };\n\n Repeat.prototype.reverse = function() {\n return this;\n };\n\n Repeat.prototype.indexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function(fn, reverse) {\n for (var ii = 0; ii < this.size; ii++) {\n if (fn(this._value, ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this;\n var ii = 0;\n return new Iterator(function() \n {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()}\n );\n };\n\n Repeat.prototype.equals = function(other) {\n return other instanceof Repeat ?\n is(this._value, other._value) :\n deepEqual(other);\n };\n\n\n var EMPTY_REPEAT;\n\n function invariant(condition, error) {\n if (!condition) throw new Error(error);\n }\n\n createClass(Range, IndexedSeq);\n\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n Range.prototype.toString = function() {\n if (this.size === 0) {\n return 'Range []';\n }\n return 'Range [ ' +\n this._start + '...' + this._end +\n (this._step > 1 ? ' by ' + this._step : '') +\n ' ]';\n };\n\n Range.prototype.get = function(index, notSetValue) {\n return this.has(index) ?\n this._start + wrapIndex(this, index) * this._step :\n notSetValue;\n };\n\n Range.prototype.includes = function(searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex);\n };\n\n Range.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n };\n\n Range.prototype.indexOf = function(searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function(searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function(fn, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(value, ii, this) === false) {\n return ii + 1;\n }\n value += reverse ? -step : step;\n }\n return ii;\n };\n\n Range.prototype.__iterator = function(type, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n var ii = 0;\n return new Iterator(function() {\n var v = value;\n value += reverse ? -step : step;\n return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v);\n });\n };\n\n Range.prototype.equals = function(other) {\n return other instanceof Range ?\n this._start === other._start &&\n this._end === other._end &&\n this._step === other._step :\n deepEqual(this, other);\n };\n\n\n var EMPTY_RANGE;\n\n createClass(Collection, Iterable);\n function Collection() {\n throw TypeError('Abstract');\n }\n\n\n createClass(KeyedCollection, Collection);function KeyedCollection() {}\n\n createClass(IndexedCollection, Collection);function IndexedCollection() {}\n\n createClass(SetCollection, Collection);function SetCollection() {}\n\n\n Collection.Keyed = KeyedCollection;\n Collection.Indexed = IndexedCollection;\n Collection.Set = SetCollection;\n\n var imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ?\n Math.imul :\n function imul(a, b) {\n a = a | 0; // int\n b = b | 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int\n };\n\n // v8 has an optimization for storing 31-bit signed numbers.\n // Values which have either 00 or 11 as the high order bits qualify.\n // This function drops the highest order bit in a signed number, maintaining\n // the sign bit.\n function smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF);\n }\n\n function hash(o) {\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n if (typeof o.valueOf === 'function') {\n o = o.valueOf();\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n }\n if (o === true) {\n return 1;\n }\n var type = typeof o;\n if (type === 'number') {\n var h = o | 0;\n if (h !== o) {\n h ^= o * 0xFFFFFFFF;\n }\n while (o > 0xFFFFFFFF) {\n o /= 0xFFFFFFFF;\n h ^= o;\n }\n return smi(h);\n }\n if (type === 'string') {\n return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o);\n }\n if (typeof o.hashCode === 'function') {\n return o.hashCode();\n }\n if (type === 'object') {\n return hashJSObj(o);\n }\n if (typeof o.toString === 'function') {\n return hashString(o.toString());\n }\n throw new Error('Value type ' + type + ' cannot be hashed.');\n }\n\n function cachedHashString(string) {\n var hash = stringHashCache[string];\n if (hash === undefined) {\n hash = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hash;\n }\n return hash;\n }\n\n // http://jsperf.com/hashing-strings\n function hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hash = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hash = 31 * hash + string.charCodeAt(ii) | 0;\n }\n return smi(hash);\n }\n\n function hashJSObj(obj) {\n var hash;\n if (usingWeakMap) {\n hash = weakMap.get(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = obj[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n if (!canDefineProperty) {\n hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n hash = getIENodeHash(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = ++objHashUID;\n if (objHashUID & 0x40000000) {\n objHashUID = 0;\n }\n\n if (usingWeakMap) {\n weakMap.set(obj, hash);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n 'enumerable': false,\n 'configurable': false,\n 'writable': false,\n 'value': hash\n });\n } else if (obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function() {\n return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hash;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hash;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hash;\n }\n\n // Get references to ES5 object methods.\n var isExtensible = Object.isExtensible;\n\n // True if Object.defineProperty works as expected. IE8 fails this test.\n var canDefineProperty = (function() {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n }());\n\n // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n // and avoid memory leaks from the IE cloneNode bug.\n function getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n }\n\n // If possible, use a WeakMap.\n var usingWeakMap = typeof WeakMap === 'function';\n var weakMap;\n if (usingWeakMap) {\n weakMap = new WeakMap();\n }\n\n var objHashUID = 0;\n\n var UID_HASH_KEY = '__immutablehash__';\n if (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n }\n\n var STRING_HASH_CACHE_MIN_STRLEN = 16;\n var STRING_HASH_CACHE_MAX_SIZE = 255;\n var STRING_HASH_CACHE_SIZE = 0;\n var stringHashCache = {};\n\n function assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n }\n\n createClass(Map, KeyedCollection);\n\n // @pragma Construction\n\n function Map(value) {\n return value === null || value === undefined ? emptyMap() :\n isMap(value) && !isOrdered(value) ? value :\n emptyMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n Map.prototype.toString = function() {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function(k, notSetValue) {\n return this._root ?\n this._root.get(0, undefined, k, notSetValue) :\n notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function(k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.setIn = function(keyPath, v) {\n return this.updateIn(keyPath, NOT_SET, function() {return v});\n };\n\n Map.prototype.remove = function(k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteIn = function(keyPath) {\n return this.updateIn(keyPath, function() {return NOT_SET});\n };\n\n Map.prototype.update = function(k, notSetValue, updater) {\n return arguments.length === 1 ?\n k(this) :\n this.updateIn([k], notSetValue, updater);\n };\n\n Map.prototype.updateIn = function(keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeepMap(\n this,\n forceIterator(keyPath),\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? undefined : updatedValue;\n };\n\n Map.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.merge = function(/*...iters*/) {\n return mergeIntoMapWith(this, undefined, arguments);\n };\n\n Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, merger, iters);\n };\n\n Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.merge === 'function' ?\n m.merge.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoMapWith(this, deepMerger, arguments);\n };\n\n Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, deepMergerWith(merger), iters);\n };\n\n Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.mergeDeep === 'function' ?\n m.mergeDeep.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.sort = function(comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n // @pragma Mutability\n\n Map.prototype.withMutations = function(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n };\n\n Map.prototype.asMutable = function() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n };\n\n Map.prototype.asImmutable = function() {\n return this.__ensureOwner();\n };\n\n Map.prototype.wasAltered = function() {\n return this.__altered;\n };\n\n Map.prototype.__iterator = function(type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n this._root && this._root.iterate(function(entry ) {\n iterations++;\n return fn(entry[1], entry[0], this$0);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n\n function isMap(maybeMap) {\n return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]);\n }\n\n Map.isMap = isMap;\n\n var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\n\n var MapPrototype = Map.prototype;\n MapPrototype[IS_MAP_SENTINEL] = true;\n MapPrototype[DELETE] = MapPrototype.remove;\n MapPrototype.removeIn = MapPrototype.deleteIn;\n\n\n // #pragma Trie Nodes\n\n\n\n function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n }\n\n ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n };\n\n\n\n\n function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n }\n\n BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK));\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0 ? notSetValue :\n this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue);\n };\n\n BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n var newNodes = exists ? newNode ?\n setIn(nodes, idx, newNode, isEditable) :\n spliceOut(nodes, idx, isEditable) :\n spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n };\n\n\n\n\n function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n }\n\n HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n };\n\n HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n };\n\n\n\n\n function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n }\n\n HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n };\n\n\n\n\n function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n }\n\n ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n };\n\n ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n };\n\n\n\n // #pragma Iterators\n\n ArrayMapNode.prototype.iterate =\n HashCollisionNode.prototype.iterate = function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n }\n\n BitmapIndexedNode.prototype.iterate =\n HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n }\n\n ValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n }\n\n createClass(MapIterator, Iterator);\n\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n MapIterator.prototype.next = function() {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex;\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n\n function mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n }\n\n function mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev\n };\n }\n\n function makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_MAP;\n function emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n }\n\n function updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef(CHANGE_LENGTH);\n var didAlter = MakeRef(DID_ALTER);\n newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n }\n\n function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n }\n\n function isLeafNode(node) {\n return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n }\n\n function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes = idx1 === idx2 ?\n [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] :\n ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n }\n\n function createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n }\n\n function packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n }\n\n function expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n }\n\n function mergeIntoMapWith(map, merger, iterables) {\n var iters = [];\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = KeyedIterable(value);\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n return mergeIntoCollectionWith(map, merger, iters);\n }\n\n function deepMerger(existing, value, key) {\n return existing && existing.mergeDeep && isIterable(value) ?\n existing.mergeDeep(value) :\n is(existing, value) ? existing : value;\n }\n\n function deepMergerWith(merger) {\n return function(existing, value, key) {\n if (existing && existing.mergeDeepWith && isIterable(value)) {\n return existing.mergeDeepWith(merger, value);\n }\n var nextValue = merger(existing, value, key);\n return is(existing, nextValue) ? existing : nextValue;\n };\n }\n\n function mergeIntoCollectionWith(collection, merger, iters) {\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return collection;\n }\n if (collection.size === 0 && !collection.__ownerID && iters.length === 1) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function(collection ) {\n var mergeIntoMap = merger ?\n function(value, key) {\n collection.update(key, NOT_SET, function(existing )\n {return existing === NOT_SET ? value : merger(existing, value, key)}\n );\n } :\n function(value, key) {\n collection.set(key, value);\n }\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoMap);\n }\n });\n }\n\n function updateInDeepMap(existing, keyPathIter, notSetValue, updater) {\n var isNotSet = existing === NOT_SET;\n var step = keyPathIter.next();\n if (step.done) {\n var existingValue = isNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n invariant(\n isNotSet || (existing && existing.set),\n 'invalid keyPath'\n );\n var key = step.value;\n var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET);\n var nextUpdated = updateInDeepMap(\n nextExisting,\n keyPathIter,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting ? existing :\n nextUpdated === NOT_SET ? existing.remove(key) :\n (isNotSet ? emptyMap() : existing).set(key, nextUpdated);\n }\n\n function popCount(x) {\n x = x - ((x >> 1) & 0x55555555);\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x = x + (x >> 8);\n x = x + (x >> 16);\n return x & 0x7f;\n }\n\n function setIn(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n }\n\n function spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n }\n\n function spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n }\n\n var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n createClass(List, IndexedCollection);\n\n // @pragma Construction\n\n function List(value) {\n var empty = emptyList();\n if (value === null || value === undefined) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedIterable(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function(list ) {\n list.setSize(size);\n iter.forEach(function(v, i) {return list.set(i, v)});\n });\n }\n\n List.of = function(/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function() {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function(index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function(index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function(index) {\n return !this.has(index) ? this :\n index === 0 ? this.shift() :\n index === this.size - 1 ? this.pop() :\n this.splice(index, 1);\n };\n\n List.prototype.insert = function(index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function(/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function(list ) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function() {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function(/*...values*/) {\n var values = arguments;\n return this.withMutations(function(list ) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function() {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.merge = function(/*...iters*/) {\n return mergeIntoListWith(this, undefined, arguments);\n };\n\n List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, merger, iters);\n };\n\n List.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoListWith(this, deepMerger, arguments);\n };\n\n List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, deepMergerWith(merger), iters);\n };\n\n List.prototype.setSize = function(size) {\n return setListBounds(this, 0, size);\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function(begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function(type, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n return new Iterator(function() {\n var value = values();\n return value === DONE ?\n iteratorDone() :\n iteratorValue(type, index++, value);\n });\n };\n\n List.prototype.__iterate = function(fn, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n return this;\n }\n return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n };\n\n\n function isList(maybeList) {\n return !!(maybeList && maybeList[IS_LIST_SENTINEL]);\n }\n\n List.isList = isList;\n\n var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\n\n var ListPrototype = List.prototype;\n ListPrototype[IS_LIST_SENTINEL] = true;\n ListPrototype[DELETE] = ListPrototype.remove;\n ListPrototype.setIn = MapPrototype.setIn;\n ListPrototype.deleteIn =\n ListPrototype.removeIn = MapPrototype.removeIn;\n ListPrototype.update = MapPrototype.update;\n ListPrototype.updateIn = MapPrototype.updateIn;\n ListPrototype.mergeIn = MapPrototype.mergeIn;\n ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n ListPrototype.withMutations = MapPrototype.withMutations;\n ListPrototype.asMutable = MapPrototype.asMutable;\n ListPrototype.asImmutable = MapPrototype.asImmutable;\n ListPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n\n function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n }\n\n // TODO: seems like these methods are very similar\n\n VNode.prototype.removeBefore = function(ownerID, level, index) {\n if (index === level ? 1 << level : 0 || this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n };\n\n VNode.prototype.removeAfter = function(ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n };\n\n\n\n var DONE = {};\n\n function iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0 ?\n iterateLeaf(node, offset) :\n iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n do {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx], level - SHIFT, offset + (idx << level)\n );\n } while (true);\n };\n }\n }\n\n function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n }\n\n var EMPTY_LIST;\n function emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n }\n\n function updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function(list ) {\n index < 0 ?\n setListBounds(list, index).set(0, value) :\n setListBounds(list, 0, index + 1).set(index, value)\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef(DID_ALTER);\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n }\n\n function updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n SetRef(didAlter);\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n }\n\n function editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n }\n\n function listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n }\n\n function setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail = newTailOffset < oldTailOffset ?\n listNodeFor(list, newCapacity - 1) :\n newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;\n\n // Merge Tail into tree.\n if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if (beginIndex !== (newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n }\n\n function mergeIntoListWith(list, merger, iterables) {\n var iters = [];\n var maxSize = 0;\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = IndexedIterable(value);\n if (iter.size > maxSize) {\n maxSize = iter.size;\n }\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n if (maxSize > list.size) {\n list = list.setSize(maxSize);\n }\n return mergeIntoCollectionWith(list, merger, iters);\n }\n\n function getTailOffset(size) {\n return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT);\n }\n\n createClass(OrderedMap, Map);\n\n // @pragma Construction\n\n function OrderedMap(value) {\n return value === null || value === undefined ? emptyOrderedMap() :\n isOrderedMap(value) ? value :\n emptyOrderedMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n OrderedMap.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function() {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function(k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function(k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function(k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.wasAltered = function() {\n return this._map.wasAltered() || this._list.wasAltered();\n };\n\n OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._list.__iterate(\n function(entry ) {return entry && fn(entry[1], entry[0], this$0)},\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function(type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n\n function isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n }\n\n OrderedMap.isOrderedMap = isOrderedMap;\n\n OrderedMap.prototype[IS_ORDERED_SENTINEL] = true;\n OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\n\n\n function makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n return omap;\n }\n\n var EMPTY_ORDERED_MAP;\n function emptyOrderedMap() {\n return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n }\n\n function updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) { // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function(entry, idx) {return entry !== undefined && i !== idx});\n newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else {\n if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n }\n\n createClass(ToKeyedSequence, KeyedSeq);\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n ToKeyedSequence.prototype.get = function(key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function(key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function() {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function() {var this$0 = this;\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function() {return this$0._iter.toSeq().reverse()};\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this;\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function() {return this$0._iter.toSeq().map(mapper, context)};\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var ii;\n return this._iter.__iterate(\n this._useKeys ?\n function(v, k) {return fn(v, k, this$0)} :\n ((ii = reverse ? resolveSize(this) : 0),\n function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}),\n reverse\n );\n };\n\n ToKeyedSequence.prototype.__iterator = function(type, reverse) {\n if (this._useKeys) {\n return this._iter.__iterator(type, reverse);\n }\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var ii = reverse ? resolveSize(this) : 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, reverse ? --ii : ii++, step.value, step);\n });\n };\n\n ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(ToIndexedSequence, IndexedSeq);\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToIndexedSequence.prototype.includes = function(value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse);\n };\n\n ToIndexedSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, iterations++, step.value, step)\n });\n };\n\n\n\n createClass(ToSetSequence, SetSeq);\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToSetSequence.prototype.has = function(key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, step.value, step.value, step);\n });\n };\n\n\n\n createClass(FromEntriesSequence, KeyedSeq);\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n FromEntriesSequence.prototype.entrySeq = function() {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(entry ) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return fn(\n indexedIterable ? entry.get(1) : entry[1],\n indexedIterable ? entry.get(0) : entry[0],\n this$0\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return iteratorValue(\n type,\n indexedIterable ? entry.get(0) : entry[0],\n indexedIterable ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n\n ToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\n\n function flipFactory(iterable) {\n var flipSequence = makeSequence(iterable);\n flipSequence._iter = iterable;\n flipSequence.size = iterable.size;\n flipSequence.flip = function() {return iterable};\n flipSequence.reverse = function () {\n var reversedSequence = iterable.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function() {return iterable.reverse()};\n return reversedSequence;\n };\n flipSequence.has = function(key ) {return iterable.includes(key)};\n flipSequence.includes = function(key ) {return iterable.has(key)};\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(k, v, this$0) !== false}, reverse);\n }\n flipSequence.__iteratorUncached = function(type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = iterable.__iterator(type, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return iterable.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n }\n return flipSequence;\n }\n\n\n function mapFactory(iterable, mapper, context) {\n var mappedSequence = makeSequence(iterable);\n mappedSequence.size = iterable.size;\n mappedSequence.has = function(key ) {return iterable.has(key)};\n mappedSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v === NOT_SET ?\n notSetValue :\n mapper.call(context, v, key, iterable);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(\n function(v, k, c) {return fn(mapper.call(context, v, k, c), k, this$0) !== false},\n reverse\n );\n }\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, iterable),\n step\n );\n });\n }\n return mappedSequence;\n }\n\n\n function reverseFactory(iterable, useKeys) {\n var reversedSequence = makeSequence(iterable);\n reversedSequence._iter = iterable;\n reversedSequence.size = iterable.size;\n reversedSequence.reverse = function() {return iterable};\n if (iterable.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(iterable);\n flipSequence.reverse = function() {return iterable.flip()};\n return flipSequence;\n };\n }\n reversedSequence.get = function(key, notSetValue) \n {return iterable.get(useKeys ? key : -1 - key, notSetValue)};\n reversedSequence.has = function(key )\n {return iterable.has(useKeys ? key : -1 - key)};\n reversedSequence.includes = function(value ) {return iterable.includes(value)};\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(v, k, this$0)}, !reverse);\n };\n reversedSequence.__iterator =\n function(type, reverse) {return iterable.__iterator(type, !reverse)};\n return reversedSequence;\n }\n\n\n function filterFactory(iterable, predicate, context, useKeys) {\n var filterSequence = makeSequence(iterable);\n if (useKeys) {\n filterSequence.has = function(key ) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, iterable);\n };\n filterSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, iterable) ?\n v : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, iterable)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n }\n return filterSequence;\n }\n\n\n function countByFactory(iterable, grouper, context) {\n var groups = Map().asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n 0,\n function(a ) {return a + 1}\n );\n });\n return groups.asImmutable();\n }\n\n\n function groupByFactory(iterable, grouper, context) {\n var isKeyedIter = isKeyed(iterable);\n var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)}\n );\n });\n var coerce = iterableClass(iterable);\n return groups.map(function(arr ) {return reify(iterable, coerce(arr))});\n }\n\n\n function sliceFactory(iterable, begin, end, useKeys) {\n var originalSize = iterable.size;\n\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n\n if (wholeSlice(begin, end, originalSize)) {\n return iterable;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this iterable's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(iterable);\n\n // If iterable.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined;\n\n if (!useKeys && isSeq(iterable) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize ?\n iterable.get(index + resolvedBegin, notSetValue) :\n notSetValue;\n }\n }\n\n sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0) !== false &&\n iterations !== sliceSize;\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function(type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function() {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n } else {\n return iteratorValue(type, iterations - 1, step.value[1], step);\n }\n });\n }\n\n return sliceSeq;\n }\n\n\n function takeWhileFactory(iterable, predicate, context) {\n var takeSequence = makeSequence(iterable);\n takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n iterable.__iterate(function(v, k, c) \n {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)}\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function() {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$0)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n }\n\n\n function skipWhileFactory(iterable, predicate, context, useKeys) {\n var skipSequence = makeSequence(iterable);\n skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function() {\n var step, k, v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n } else {\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$0));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n }\n\n\n function concatFactory(iterable, values) {\n var isKeyedIterable = isKeyed(iterable);\n var iters = [iterable].concat(values).map(function(v ) {\n if (!isIterable(v)) {\n v = isKeyedIterable ?\n keyedSeqFromValue(v) :\n indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedIterable) {\n v = KeyedIterable(v);\n }\n return v;\n }).filter(function(v ) {return v.size !== 0});\n\n if (iters.length === 0) {\n return iterable;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (singleton === iterable ||\n isKeyedIterable && isKeyed(singleton) ||\n isIndexed(iterable) && isIndexed(singleton)) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedIterable) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(iterable)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(\n function(sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n },\n 0\n );\n return concatSeq;\n }\n\n\n function flattenFactory(iterable, depth, useKeys) {\n var flatSequence = makeSequence(iterable);\n flatSequence.__iterateUncached = function(fn, reverse) {\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {var this$0 = this;\n iter.__iterate(function(v, k) {\n if ((!depth || currentDepth < depth) && isIterable(v)) {\n flatDeep(v, currentDepth + 1);\n } else if (fn(v, useKeys ? k : iterations++, this$0) === false) {\n stopped = true;\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(iterable, 0);\n return iterations;\n }\n flatSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function() {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isIterable(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n }\n return flatSequence;\n }\n\n\n function flatMapFactory(iterable, mapper, context) {\n var coerce = iterableClass(iterable);\n return iterable.toSeq().map(\n function(v, k) {return coerce(mapper.call(context, v, k, iterable))}\n ).flatten(true);\n }\n\n\n function interposeFactory(iterable, separator) {\n var interposedSequence = makeSequence(iterable);\n interposedSequence.size = iterable.size && iterable.size * 2 -1;\n interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k) \n {return (!iterations || fn(separator, iterations++, this$0) !== false) &&\n fn(v, iterations++, this$0) !== false},\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function() {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2 ?\n iteratorValue(type, iterations++, separator) :\n iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n }\n\n\n function sortFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedIterable = isKeyed(iterable);\n var index = 0;\n var entries = iterable.toSeq().map(\n function(v, k) {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]}\n ).toArray();\n entries.sort(function(a, b) {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach(\n isKeyedIterable ?\n function(v, i) { entries[i].length = 2; } :\n function(v, i) { entries[i] = v[1]; }\n );\n return isKeyedIterable ? KeyedSeq(entries) :\n isIndexed(iterable) ? IndexedSeq(entries) :\n SetSeq(entries);\n }\n\n\n function maxFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = iterable.toSeq()\n .map(function(v, k) {return [v, mapper(v, k, iterable)]})\n .reduce(function(a, b) {return maxCompare(comparator, a[1], b[1]) ? b : a});\n return entry && entry[0];\n } else {\n return iterable.reduce(function(a, b) {return maxCompare(comparator, a, b) ? b : a});\n }\n }\n\n function maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0;\n }\n\n\n function zipWithFactory(keyIter, zipper, iters) {\n var zipSequence = makeSequence(keyIter);\n zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function(fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function(type, reverse) {\n var iterators = iters.map(function(i )\n {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))}\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function() {\n var steps;\n if (!isDone) {\n steps = iterators.map(function(i ) {return i.next()});\n isDone = steps.some(function(s ) {return s.done});\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(null, steps.map(function(s ) {return s.value}))\n );\n });\n };\n return zipSequence\n }\n\n\n // #pragma Helper Functions\n\n function reify(iter, seq) {\n return isSeq(iter) ? seq : iter.constructor(seq);\n }\n\n function validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n }\n\n function resolveSize(iter) {\n assertNotInfinite(iter.size);\n return ensureSize(iter);\n }\n\n function iterableClass(iterable) {\n return isKeyed(iterable) ? KeyedIterable :\n isIndexed(iterable) ? IndexedIterable :\n SetIterable;\n }\n\n function makeSequence(iterable) {\n return Object.create(\n (\n isKeyed(iterable) ? KeyedSeq :\n isIndexed(iterable) ? IndexedSeq :\n SetSeq\n ).prototype\n );\n }\n\n function cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n } else {\n return Seq.prototype.cacheResult.call(this);\n }\n }\n\n function defaultComparator(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n function forceIterator(keyPath) {\n var iter = getIterator(keyPath);\n if (!iter) {\n // Array might not be iterable in this environment, so we need a fallback\n // to our wrapped type.\n if (!isArrayLike(keyPath)) {\n throw new TypeError('Expected iterable or array-like: ' + keyPath);\n }\n iter = getIterator(Iterable(keyPath));\n }\n return iter;\n }\n\n createClass(Record, KeyedCollection);\n\n function Record(defaultValues, name) {\n var hasInitialized;\n\n var RecordType = function Record(values) {\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n setProps(RecordTypePrototype, keys);\n RecordTypePrototype.size = keys.length;\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n }\n this._map = Map(values);\n };\n\n var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n RecordTypePrototype.constructor = RecordType;\n\n return RecordType;\n }\n\n Record.prototype.toString = function() {\n return this.__toString(recordName(this) + ' {', '}');\n };\n\n // @pragma Access\n\n Record.prototype.has = function(k) {\n return this._defaultValues.hasOwnProperty(k);\n };\n\n Record.prototype.get = function(k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var defaultVal = this._defaultValues[k];\n return this._map ? this._map.get(k, defaultVal) : defaultVal;\n };\n\n // @pragma Modification\n\n Record.prototype.clear = function() {\n if (this.__ownerID) {\n this._map && this._map.clear();\n return this;\n }\n var RecordType = this.constructor;\n return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap()));\n };\n\n Record.prototype.set = function(k, v) {\n if (!this.has(k)) {\n throw new Error('Cannot set unknown key \"' + k + '\" on ' + recordName(this));\n }\n var newMap = this._map && this._map.set(k, v);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.remove = function(k) {\n if (!this.has(k)) {\n return this;\n }\n var newMap = this._map && this._map.remove(k);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Record.prototype.__iterator = function(type, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterator(type, reverse);\n };\n\n Record.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterate(fn, reverse);\n };\n\n Record.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map && this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return makeRecord(this, newMap, ownerID);\n };\n\n\n var RecordPrototype = Record.prototype;\n RecordPrototype[DELETE] = RecordPrototype.remove;\n RecordPrototype.deleteIn =\n RecordPrototype.removeIn = MapPrototype.removeIn;\n RecordPrototype.merge = MapPrototype.merge;\n RecordPrototype.mergeWith = MapPrototype.mergeWith;\n RecordPrototype.mergeIn = MapPrototype.mergeIn;\n RecordPrototype.mergeDeep = MapPrototype.mergeDeep;\n RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith;\n RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n RecordPrototype.setIn = MapPrototype.setIn;\n RecordPrototype.update = MapPrototype.update;\n RecordPrototype.updateIn = MapPrototype.updateIn;\n RecordPrototype.withMutations = MapPrototype.withMutations;\n RecordPrototype.asMutable = MapPrototype.asMutable;\n RecordPrototype.asImmutable = MapPrototype.asImmutable;\n\n\n function makeRecord(likeRecord, map, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._map = map;\n record.__ownerID = ownerID;\n return record;\n }\n\n function recordName(record) {\n return record._name || record.constructor.name || 'Record';\n }\n\n function setProps(prototype, names) {\n try {\n names.forEach(setProp.bind(undefined, prototype));\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n }\n\n function setProp(prototype, name) {\n Object.defineProperty(prototype, name, {\n get: function() {\n return this.get(name);\n },\n set: function(value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n }\n });\n }\n\n createClass(Set, SetCollection);\n\n // @pragma Construction\n\n function Set(value) {\n return value === null || value === undefined ? emptySet() :\n isSet(value) && !isOrdered(value) ? value :\n emptySet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n Set.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n Set.prototype.toString = function() {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function(value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function(value) {\n return updateSet(this, this._map.set(value, true));\n };\n\n Set.prototype.remove = function(value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function() {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0);\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function(set ) {\n for (var ii = 0; ii < iters.length; ii++) {\n SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)});\n }\n });\n };\n\n Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (!iters.every(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (iters.some(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.merge = function() {\n return this.union.apply(this, arguments);\n };\n\n Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return this.union.apply(this, iters);\n };\n\n Set.prototype.sort = function(comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._map.__iterate(function(_, k) {return fn(k, k, this$0)}, reverse);\n };\n\n Set.prototype.__iterator = function(type, reverse) {\n return this._map.map(function(_, k) {return k}).__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n\n function isSet(maybeSet) {\n return !!(maybeSet && maybeSet[IS_SET_SENTINEL]);\n }\n\n Set.isSet = isSet;\n\n var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\n\n var SetPrototype = Set.prototype;\n SetPrototype[IS_SET_SENTINEL] = true;\n SetPrototype[DELETE] = SetPrototype.remove;\n SetPrototype.mergeDeep = SetPrototype.merge;\n SetPrototype.mergeDeepWith = SetPrototype.mergeWith;\n SetPrototype.withMutations = MapPrototype.withMutations;\n SetPrototype.asMutable = MapPrototype.asMutable;\n SetPrototype.asImmutable = MapPrototype.asImmutable;\n\n SetPrototype.__empty = emptySet;\n SetPrototype.__make = makeSet;\n\n function updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map ? set :\n newMap.size === 0 ? set.__empty() :\n set.__make(newMap);\n }\n\n function makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_SET;\n function emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n }\n\n createClass(OrderedSet, Set);\n\n // @pragma Construction\n\n function OrderedSet(value) {\n return value === null || value === undefined ? emptyOrderedSet() :\n isOrderedSet(value) ? value :\n emptyOrderedSet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n OrderedSet.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function() {\n return this.__toString('OrderedSet {', '}');\n };\n\n\n function isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n }\n\n OrderedSet.isOrderedSet = isOrderedSet;\n\n var OrderedSetPrototype = OrderedSet.prototype;\n OrderedSetPrototype[IS_ORDERED_SENTINEL] = true;\n\n OrderedSetPrototype.__empty = emptyOrderedSet;\n OrderedSetPrototype.__make = makeOrderedSet;\n\n function makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_ORDERED_SET;\n function emptyOrderedSet() {\n return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n }\n\n createClass(Stack, IndexedCollection);\n\n // @pragma Construction\n\n function Stack(value) {\n return value === null || value === undefined ? emptyStack() :\n isStack(value) ? value :\n emptyStack().unshiftAll(value);\n }\n\n Stack.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function() {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function(index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function() {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function(/*...values*/) {\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments[ii],\n next: head\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function(iter) {\n iter = IndexedIterable(iter);\n if (iter.size === 0) {\n return this;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.reverse().forEach(function(value ) {\n newSize++;\n head = {\n value: value,\n next: head\n };\n });\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function() {\n return this.slice(1);\n };\n\n Stack.prototype.unshift = function(/*...values*/) {\n return this.push.apply(this, arguments);\n };\n\n Stack.prototype.unshiftAll = function(iter) {\n return this.pushAll(iter);\n };\n\n Stack.prototype.shift = function() {\n return this.pop.apply(this, arguments);\n };\n\n Stack.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function(fn, reverse) {\n if (reverse) {\n return this.reverse().__iterate(fn);\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function(type, reverse) {\n if (reverse) {\n return this.reverse().__iterator(type);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function() {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n\n function isStack(maybeStack) {\n return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]);\n }\n\n Stack.isStack = isStack;\n\n var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\n\n var StackPrototype = Stack.prototype;\n StackPrototype[IS_STACK_SENTINEL] = true;\n StackPrototype.withMutations = MapPrototype.withMutations;\n StackPrototype.asMutable = MapPrototype.asMutable;\n StackPrototype.asImmutable = MapPrototype.asImmutable;\n StackPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n function makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_STACK;\n function emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n }\n\n /**\n * Contributes additional methods to a constructor\n */\n function mixin(ctor, methods) {\n var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n }\n\n Iterable.Iterator = Iterator;\n\n mixin(Iterable, {\n\n // ### Conversion to other types\n\n toArray: function() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n this.valueSeq().__iterate(function(v, i) { array[i] = v; });\n return array;\n },\n\n toIndexedSeq: function() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value}\n ).__toJS();\n },\n\n toJSON: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value}\n ).__toJS();\n },\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: function() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function(v, k) { object[k] = v; });\n return object;\n },\n\n toOrderedMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function() {\n return new ToSetSequence(this);\n },\n\n toSeq: function() {\n return isIndexed(this) ? this.toIndexedSeq() :\n isKeyed(this) ? this.toKeyedSeq() :\n this.toSetSeq();\n },\n\n toStack: function() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n\n // ### Common JavaScript methods and properties\n\n toString: function() {\n return '[Iterable]';\n },\n\n __toString: function(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function() {var values = SLICE$0.call(arguments, 0);\n return reify(this, concatFactory(this, values));\n },\n\n includes: function(searchValue) {\n return this.some(function(value ) {return is(value, searchValue)});\n },\n\n entries: function() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function(v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n find: function(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n findEntry: function(predicate, context) {\n var found;\n this.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findLastEntry: function(predicate, context) {\n return this.toSeq().reverse().findEntry(predicate, context);\n },\n\n forEach: function(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function(v ) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function(reducer, initialReduction, context) {\n assertNotInfinite(this.size);\n var reduction;\n var useFirst;\n if (arguments.length < 2) {\n useFirst = true;\n } else {\n reduction = initialReduction;\n }\n this.__iterate(function(v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n });\n return reduction;\n },\n\n reduceRight: function(reducer, initialReduction, context) {\n var reversed = this.toKeyedSeq().reverse();\n return reversed.reduce.apply(reversed, arguments);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function(predicate, context) {\n return !this.every(not(predicate), context);\n },\n\n sort: function(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n\n // ### More sequential methods\n\n butLast: function() {\n return this.slice(0, -1);\n },\n\n isEmpty: function() {\n return this.size !== undefined ? this.size === 0 : !this.some(function() {return true});\n },\n\n count: function(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function() {\n var iterable = this;\n if (iterable._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(iterable._cache);\n }\n var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function() {return iterable.toSeq()};\n return entriesSequence;\n },\n\n filterNot: function(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findLast: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n first: function() {\n return this.find(returnTrue);\n },\n\n flatMap: function(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function() {\n return new FromEntriesSequence(this);\n },\n\n get: function(searchKey, notSetValue) {\n return this.find(function(_, key) {return is(key, searchKey)}, undefined, notSetValue);\n },\n\n getIn: function(searchKeyPath, notSetValue) {\n var nested = this;\n // Note: in an ES6 environment, we would prefer:\n // for (var key of searchKeyPath) {\n var iter = forceIterator(searchKeyPath);\n var step;\n while (!(step = iter.next()).done) {\n var key = step.value;\n nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET;\n if (nested === NOT_SET) {\n return notSetValue;\n }\n }\n return nested;\n },\n\n groupBy: function(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: function(searchKeyPath) {\n return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET;\n },\n\n isSubset: function(iter) {\n iter = typeof iter.includes === 'function' ? iter : Iterable(iter);\n return this.every(function(value ) {return iter.includes(value)});\n },\n\n isSuperset: function(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter);\n return iter.isSubset(this);\n },\n\n keySeq: function() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function() {\n return this.toSeq().reverse().first();\n },\n\n max: function(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function(comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n },\n\n minBy: function(mapper, comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n },\n\n rest: function() {\n return this.slice(1);\n },\n\n skip: function(amount) {\n return this.slice(Math.max(0, amount));\n },\n\n skipLast: function(amount) {\n return reify(this, this.toSeq().reverse().skip(amount).reverse());\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function(amount) {\n return reify(this, this.toSeq().reverse().take(amount).reverse());\n },\n\n takeWhile: function(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n valueSeq: function() {\n return this.toIndexedSeq();\n },\n\n\n // ### Hashable Object\n\n hashCode: function() {\n return this.__hash || (this.__hash = hashIterable(this));\n }\n\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n });\n\n // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n var IterablePrototype = Iterable.prototype;\n IterablePrototype[IS_ITERABLE_SENTINEL] = true;\n IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values;\n IterablePrototype.__toJS = IterablePrototype.toArray;\n IterablePrototype.__toStringMapper = quoteString;\n IterablePrototype.inspect =\n IterablePrototype.toSource = function() { return this.toString(); };\n IterablePrototype.chain = IterablePrototype.flatMap;\n IterablePrototype.contains = IterablePrototype.includes;\n\n // Temporary warning about using length\n (function () {\n try {\n Object.defineProperty(IterablePrototype, 'length', {\n get: function () {\n if (!Iterable.noLengthWarning) {\n var stack;\n try {\n throw new Error();\n } catch (error) {\n stack = error.stack;\n }\n if (stack.indexOf('_wrapObject') === -1) {\n console && console.warn && console.warn(\n 'iterable.length has been deprecated, '+\n 'use iterable.size or iterable.count(). '+\n 'This warning will become a silent error in a future version. ' +\n stack\n );\n return this.size;\n }\n }\n }\n });\n } catch (e) {}\n })();\n\n\n\n mixin(KeyedIterable, {\n\n // ### More sequential methods\n\n flip: function() {\n return reify(this, flipFactory(this));\n },\n\n findKey: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLastKey: function(predicate, context) {\n return this.toSeq().reverse().findKey(predicate, context);\n },\n\n keyOf: function(searchValue) {\n return this.findKey(function(value ) {return is(value, searchValue)});\n },\n\n lastKeyOf: function(searchValue) {\n return this.findLastKey(function(value ) {return is(value, searchValue)});\n },\n\n mapEntries: function(mapper, context) {var this$0 = this;\n var iterations = 0;\n return reify(this,\n this.toSeq().map(\n function(v, k) {return mapper.call(context, [k, v], iterations++, this$0)}\n ).fromEntrySeq()\n );\n },\n\n mapKeys: function(mapper, context) {var this$0 = this;\n return reify(this,\n this.toSeq().flip().map(\n function(k, v) {return mapper.call(context, k, v, this$0)}\n ).flip()\n );\n }\n\n });\n\n var KeyedIterablePrototype = KeyedIterable.prototype;\n KeyedIterablePrototype[IS_KEYED_SENTINEL] = true;\n KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries;\n KeyedIterablePrototype.__toJS = IterablePrototype.toObject;\n KeyedIterablePrototype.__toStringMapper = function(v, k) {return JSON.stringify(k) + ': ' + quoteString(v)};\n\n\n\n mixin(IndexedIterable, {\n\n // ### Conversion to other types\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, false);\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function(searchValue) {\n var key = this.toKeyedSeq().keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function(searchValue) {\n var key = this.toKeyedSeq().reverse().keyOf(searchValue);\n return key === undefined ? -1 : key;\n\n // var index =\n // return this.toSeq().reverse().indexOf(searchValue);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum | 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1 ?\n spliced :\n spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n\n // ### More collection methods\n\n findLastIndex: function(predicate, context) {\n var key = this.toKeyedSeq().findLastKey(predicate, context);\n return key === undefined ? -1 : key;\n },\n\n first: function() {\n return this.get(0);\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function(index, notSetValue) {\n index = wrapIndex(this, index);\n return (index < 0 || (this.size === Infinity ||\n (this.size !== undefined && index > this.size))) ?\n notSetValue :\n this.find(function(_, key) {return key === index}, undefined, notSetValue);\n },\n\n has: function(index) {\n index = wrapIndex(this, index);\n return index >= 0 && (this.size !== undefined ?\n this.size === Infinity || index < this.size :\n this.indexOf(index) !== -1\n );\n },\n\n interpose: function(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function(/*...iterables*/) {\n var iterables = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * iterables.length;\n }\n return reify(this, interleaved);\n },\n\n last: function() {\n return this.get(-1);\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function(/*, ...iterables */) {\n var iterables = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, iterables));\n },\n\n zipWith: function(zipper/*, ...iterables */) {\n var iterables = arrCopy(arguments);\n iterables[0] = this;\n return reify(this, zipWithFactory(this, zipper, iterables));\n }\n\n });\n\n IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true;\n IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n\n mixin(SetIterable, {\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function(value) {\n return this.has(value);\n },\n\n\n // ### More sequential methods\n\n keySeq: function() {\n return this.valueSeq();\n }\n\n });\n\n SetIterable.prototype.has = IterablePrototype.includes;\n\n\n // Mixin subclasses\n\n mixin(KeyedSeq, KeyedIterable.prototype);\n mixin(IndexedSeq, IndexedIterable.prototype);\n mixin(SetSeq, SetIterable.prototype);\n\n mixin(KeyedCollection, KeyedIterable.prototype);\n mixin(IndexedCollection, IndexedIterable.prototype);\n mixin(SetCollection, SetIterable.prototype);\n\n\n // #pragma Helper functions\n\n function keyMapper(v, k) {\n return k;\n }\n\n function entryMapper(v, k) {\n return [k, v];\n }\n\n function not(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n }\n }\n\n function neg(predicate) {\n return function() {\n return -predicate.apply(this, arguments);\n }\n }\n\n function quoteString(value) {\n return typeof value === 'string' ? JSON.stringify(value) : value;\n }\n\n function defaultZipper() {\n return arrCopy(arguments);\n }\n\n function defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n }\n\n function hashIterable(iterable) {\n if (iterable.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(iterable);\n var keyed = isKeyed(iterable);\n var h = ordered ? 1 : 0;\n var size = iterable.__iterate(\n keyed ?\n ordered ?\n function(v, k) { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } :\n function(v, k) { h = h + hashMerge(hash(v), hash(k)) | 0; } :\n ordered ?\n function(v ) { h = 31 * h + hash(v) | 0; } :\n function(v ) { h = h + hash(v) | 0; }\n );\n return murmurHashOfSize(size, h);\n }\n\n function murmurHashOfSize(size, h) {\n h = imul(h, 0xCC9E2D51);\n h = imul(h << 15 | h >>> -15, 0x1B873593);\n h = imul(h << 13 | h >>> -13, 5);\n h = (h + 0xE6546B64 | 0) ^ size;\n h = imul(h ^ h >>> 16, 0x85EBCA6B);\n h = imul(h ^ h >>> 13, 0xC2B2AE35);\n h = smi(h ^ h >>> 16);\n return h;\n }\n\n function hashMerge(a, b) {\n return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int\n }\n\n var Immutable = {\n\n Iterable: Iterable,\n\n Seq: Seq,\n Collection: Collection,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS\n\n };\n\n return Immutable;\n\n}));","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","module.exports = require(\"regenerator-runtime\");\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _get2 = require('babel-runtime/helpers/get');\n\nvar _get3 = _interopRequireDefault(_get2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar flux = require(\"flux\");\n\nvar MatrixDispatcher = function (_flux$Dispatcher) {\n (0, _inherits3.default)(MatrixDispatcher, _flux$Dispatcher);\n\n function MatrixDispatcher() {\n (0, _classCallCheck3.default)(this, MatrixDispatcher);\n return (0, _possibleConstructorReturn3.default)(this, (MatrixDispatcher.__proto__ || (0, _getPrototypeOf2.default)(MatrixDispatcher)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(MatrixDispatcher, [{\n key: 'dispatch',\n\n /**\n * @param {Object|function} payload Required. The payload to dispatch.\n * If an Object, must contain at least an 'action' key.\n * If a function, must have the signature (dispatch) => {...}.\n * @param {boolean=} sync Optional. Pass true to dispatch\n * synchronously. This is useful for anything triggering\n * an operation that the browser requires user interaction\n * for.\n */\n value: function dispatch(payload, sync) {\n var _this2 = this;\n\n // Allow for asynchronous dispatching by accepting payloads that have the\n // type `function (dispatch) {...}`\n if (typeof payload === 'function') {\n payload(function (action) {\n _this2.dispatch(action, sync);\n });\n return;\n }\n\n if (sync) {\n (0, _get3.default)(MatrixDispatcher.prototype.__proto__ || (0, _getPrototypeOf2.default)(MatrixDispatcher.prototype), 'dispatch', this).call(this, payload);\n } else {\n // Unless the caller explicitly asked for us to dispatch synchronously,\n // we always set a timeout to do this: The flux dispatcher complains\n // if you dispatch from within a dispatch, so rather than action\n // handlers having to worry about not calling anything that might\n // then dispatch, we just do dispatches asynchronously.\n setTimeout((0, _get3.default)(MatrixDispatcher.prototype.__proto__ || (0, _getPrototypeOf2.default)(MatrixDispatcher.prototype), 'dispatch', this).bind(this, payload), 0);\n }\n }\n }]);\n return MatrixDispatcher;\n}(flux.Dispatcher);\n\nif (global.mxDispatcher === undefined) {\n global.mxDispatcher = new MatrixDispatcher();\n}\nmodule.exports = global.mxDispatcher;\n//# sourceMappingURL=dispatcher.js.map","module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nvar _Analytics = require('./Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _languageHandler = require('./languageHandler');\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DIALOG_CONTAINER_ID = \"mx_Dialog_Container\"; /*\n Copyright 2015, 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar STATIC_DIALOG_CONTAINER_ID = \"mx_Dialog_StaticContainer\";\n\n/**\n * Wrap an asynchronous loader function with a react component which shows a\n * spinner until the real component loads.\n */\nvar AsyncWrapper = (0, _createReactClass2.default)({\n displayName: 'AsyncWrapper',\n\n propTypes: {\n /** A promise which resolves with the real component\n */\n prom: _propTypes2.default.object.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n component: null,\n error: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this._unmounted = false;\n // XXX: temporary logging to try to diagnose\n // https://github.com/vector-im/riot-web/issues/3148\n console.log('Starting load of AsyncWrapper for modal');\n this.props.prom.then(function (result) {\n if (_this._unmounted) {\n return;\n }\n // Take the 'default' member if it's there, then we support\n // passing in just an import()ed module, since ES6 async import\n // always returns a module *namespace*.\n var component = result.default ? result.default : result;\n _this.setState({ component: component });\n }).catch(function (e) {\n console.warn('AsyncWrapper promise failed', e);\n _this.setState({ error: e });\n });\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n },\n\n _onWrapperCancelClick: function _onWrapperCancelClick() {\n this.props.onFinished(false);\n },\n\n render: function render() {\n if (this.state.component) {\n var Component = this.state.component;\n return _react2.default.createElement(Component, this.props);\n } else if (this.state.error) {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n return _react2.default.createElement(\n BaseDialog,\n { onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)(\"Error\")\n },\n (0, _languageHandler._t)(\"Unable to load! Check your network connectivity and try again.\"),\n _react2.default.createElement(DialogButtons, { primaryButton: (0, _languageHandler._t)(\"Dismiss\"),\n onPrimaryButtonClick: this._onWrapperCancelClick,\n hasCancel: false\n })\n );\n } else {\n // show a spinner until the component is loaded.\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(Spinner, null);\n }\n }\n});\n\nvar ModalManager = function () {\n function ModalManager() {\n (0, _classCallCheck3.default)(this, ModalManager);\n\n this._counter = 0;\n\n // The modal to prioritise over all others. If this is set, only show\n // this modal. Remove all other modals from the stack when this modal\n // is closed.\n this._priorityModal = null;\n // The modal to keep open underneath other modals if possible. Useful\n // for cases like Settings where the modal should remain open while the\n // user is prompted for more information/errors.\n this._staticModal = null;\n // A list of the modals we have stacked up, with the most recent at [0]\n // Neither the static nor priority modal will be in this list.\n this._modals = [\n /* {\n elem: React component for this dialog\n onFinished: caller-supplied onFinished callback\n className: CSS class for the dialog wrapper div\n } */\n ];\n\n this.closeAll = this.closeAll.bind(this);\n }\n\n (0, _createClass3.default)(ModalManager, [{\n key: 'hasDialogs',\n value: function hasDialogs() {\n return this._priorityModal || this._staticModal || this._modals.length > 0;\n }\n }, {\n key: 'getOrCreateContainer',\n value: function getOrCreateContainer() {\n var container = document.getElementById(DIALOG_CONTAINER_ID);\n\n if (!container) {\n container = document.createElement(\"div\");\n container.id = DIALOG_CONTAINER_ID;\n document.body.appendChild(container);\n }\n\n return container;\n }\n }, {\n key: 'getOrCreateStaticContainer',\n value: function getOrCreateStaticContainer() {\n var container = document.getElementById(STATIC_DIALOG_CONTAINER_ID);\n\n if (!container) {\n container = document.createElement(\"div\");\n container.id = STATIC_DIALOG_CONTAINER_ID;\n document.body.appendChild(container);\n }\n\n return container;\n }\n }, {\n key: 'createTrackedDialog',\n value: function createTrackedDialog(analyticsAction, analyticsInfo) {\n _Analytics2.default.trackEvent('Modal', analyticsAction, analyticsInfo);\n\n for (var _len = arguments.length, rest = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n rest[_key - 2] = arguments[_key];\n }\n\n return this.createDialog.apply(this, rest);\n }\n }, {\n key: 'appendTrackedDialog',\n value: function appendTrackedDialog(analyticsAction, analyticsInfo) {\n _Analytics2.default.trackEvent('Modal', analyticsAction, analyticsInfo);\n\n for (var _len2 = arguments.length, rest = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n rest[_key2 - 2] = arguments[_key2];\n }\n\n return this.appendDialog.apply(this, rest);\n }\n }, {\n key: 'createDialog',\n value: function createDialog(Element) {\n for (var _len3 = arguments.length, rest = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n rest[_key3 - 1] = arguments[_key3];\n }\n\n return this.createDialogAsync.apply(this, [_bluebird2.default.resolve(Element)].concat(rest));\n }\n }, {\n key: 'appendDialog',\n value: function appendDialog(Element) {\n for (var _len4 = arguments.length, rest = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n rest[_key4 - 1] = arguments[_key4];\n }\n\n return this.appendDialogAsync.apply(this, [_bluebird2.default.resolve(Element)].concat(rest));\n }\n }, {\n key: 'createTrackedDialogAsync',\n value: function createTrackedDialogAsync(analyticsAction, analyticsInfo) {\n _Analytics2.default.trackEvent('Modal', analyticsAction, analyticsInfo);\n\n for (var _len5 = arguments.length, rest = Array(_len5 > 2 ? _len5 - 2 : 0), _key5 = 2; _key5 < _len5; _key5++) {\n rest[_key5 - 2] = arguments[_key5];\n }\n\n return this.createDialogAsync.apply(this, rest);\n }\n }, {\n key: 'appendTrackedDialogAsync',\n value: function appendTrackedDialogAsync(analyticsAction, analyticsInfo) {\n _Analytics2.default.trackEvent('Modal', analyticsAction, analyticsInfo);\n\n for (var _len6 = arguments.length, rest = Array(_len6 > 2 ? _len6 - 2 : 0), _key6 = 2; _key6 < _len6; _key6++) {\n rest[_key6 - 2] = arguments[_key6];\n }\n\n return this.appendDialogAsync.apply(this, rest);\n }\n }, {\n key: '_buildModal',\n value: function _buildModal(prom, props, className) {\n var modal = {};\n\n // never call this from onFinished() otherwise it will loop\n\n var _getCloseFn2 = this._getCloseFn(modal, props),\n _getCloseFn3 = (0, _slicedToArray3.default)(_getCloseFn2, 2),\n closeDialog = _getCloseFn3[0],\n onFinishedProm = _getCloseFn3[1];\n\n // don't attempt to reuse the same AsyncWrapper for different dialogs,\n // otherwise we'll get confused.\n\n\n var modalCount = this._counter++;\n\n // FIXME: If a dialog uses getDefaultProps it clobbers the onFinished\n // property set here so you can't close the dialog from a button click!\n modal.elem = _react2.default.createElement(AsyncWrapper, (0, _extends3.default)({ key: modalCount, prom: prom }, props, {\n onFinished: closeDialog }));\n modal.onFinished = props ? props.onFinished : null;\n modal.className = className;\n\n return { modal: modal, closeDialog: closeDialog, onFinishedProm: onFinishedProm };\n }\n }, {\n key: '_getCloseFn',\n value: function _getCloseFn(modal, props) {\n var _this2 = this;\n\n var deferred = _bluebird2.default.defer();\n return [function () {\n for (var _len7 = arguments.length, args = Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n deferred.resolve(args);\n if (props && props.onFinished) props.onFinished.apply(null, args);\n var i = _this2._modals.indexOf(modal);\n if (i >= 0) {\n _this2._modals.splice(i, 1);\n }\n\n if (_this2._priorityModal === modal) {\n _this2._priorityModal = null;\n\n // XXX: This is destructive\n _this2._modals = [];\n }\n\n if (_this2._staticModal === modal) {\n _this2._staticModal = null;\n\n // XXX: This is destructive\n _this2._modals = [];\n }\n\n _this2._reRender();\n }, deferred.promise];\n }\n\n /**\n * Open a modal view.\n *\n * This can be used to display a react component which is loaded as an asynchronous\n * webpack component. To do this, set 'loader' as:\n *\n * (cb) => {\n * require([''], cb);\n * }\n *\n * @param {Promise} prom a promise which resolves with a React component\n * which will be displayed as the modal view.\n *\n * @param {Object} props properties to pass to the displayed\n * component. (We will also pass an 'onFinished' property.)\n *\n * @param {String} className CSS class to apply to the modal wrapper\n *\n * @param {boolean} isPriorityModal if true, this modal will be displayed regardless\n * of other modals that are currently in the stack.\n * Also, when closed, all modals will be removed\n * from the stack.\n * @param {boolean} isStaticModal if true, this modal will be displayed under other\n * modals in the stack. When closed, all modals will\n * also be removed from the stack. This is not compatible\n * with being a priority modal. Only one modal can be\n * static at a time.\n * @returns {object} Object with 'close' parameter being a function that will close the dialog\n */\n\n }, {\n key: 'createDialogAsync',\n value: function createDialogAsync(prom, props, className, isPriorityModal, isStaticModal) {\n var _buildModal2 = this._buildModal(prom, props, className),\n modal = _buildModal2.modal,\n closeDialog = _buildModal2.closeDialog,\n onFinishedProm = _buildModal2.onFinishedProm;\n\n if (isPriorityModal) {\n // XXX: This is destructive\n this._priorityModal = modal;\n } else if (isStaticModal) {\n // This is intentionally destructive\n this._staticModal = modal;\n } else {\n this._modals.unshift(modal);\n }\n\n this._reRender();\n return {\n close: closeDialog,\n finished: onFinishedProm\n };\n }\n }, {\n key: 'appendDialogAsync',\n value: function appendDialogAsync(prom, props, className) {\n var _buildModal3 = this._buildModal(prom, props, className),\n modal = _buildModal3.modal,\n closeDialog = _buildModal3.closeDialog,\n onFinishedProm = _buildModal3.onFinishedProm;\n\n this._modals.push(modal);\n this._reRender();\n return {\n close: closeDialog,\n finished: onFinishedProm\n };\n }\n }, {\n key: 'closeAll',\n value: function closeAll() {\n var modalsToClose = [].concat((0, _toConsumableArray3.default)(this._modals), [this._priorityModal]);\n this._modals = [];\n this._priorityModal = null;\n\n if (this._staticModal && modalsToClose.length === 0) {\n modalsToClose.push(this._staticModal);\n this._staticModal = null;\n }\n\n for (var i = 0; i < modalsToClose.length; i++) {\n var m = modalsToClose[i];\n if (m && m.onFinished) {\n m.onFinished(false);\n }\n }\n\n this._reRender();\n }\n }, {\n key: '_reRender',\n value: function _reRender() {\n if (this._modals.length === 0 && !this._priorityModal && !this._staticModal) {\n // If there is no modal to render, make all of Riot available\n // to screen reader users again\n _dispatcher2.default.dispatch({\n action: 'aria_unhide_main_app'\n });\n _reactDom2.default.unmountComponentAtNode(this.getOrCreateContainer());\n _reactDom2.default.unmountComponentAtNode(this.getOrCreateStaticContainer());\n return;\n }\n\n // Hide the content outside the modal to screen reader users\n // so they won't be able to navigate into it and act on it using\n // screen reader specific features\n _dispatcher2.default.dispatch({\n action: 'aria_hide_main_app'\n });\n\n if (this._staticModal) {\n var classes = \"mx_Dialog_wrapper mx_Dialog_staticWrapper \" + (this._staticModal.className ? this._staticModal.className : '');\n\n var staticDialog = _react2.default.createElement(\n 'div',\n { className: classes },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog' },\n this._staticModal.elem\n ),\n _react2.default.createElement('div', { className: 'mx_Dialog_background mx_Dialog_staticBackground', onClick: this.closeAll })\n );\n\n _reactDom2.default.render(staticDialog, this.getOrCreateStaticContainer());\n } else {\n // This is safe to call repeatedly if we happen to do that\n _reactDom2.default.unmountComponentAtNode(this.getOrCreateStaticContainer());\n }\n\n var modal = this._priorityModal ? this._priorityModal : this._modals[0];\n if (modal) {\n var _classes = \"mx_Dialog_wrapper \" + (this._staticModal ? \"mx_Dialog_wrapperWithStaticUnder \" : '') + (modal.className ? modal.className : '');\n\n var dialog = _react2.default.createElement(\n 'div',\n { className: _classes },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog' },\n modal.elem\n ),\n _react2.default.createElement('div', { className: 'mx_Dialog_background', onClick: this.closeAll })\n );\n\n _reactDom2.default.render(dialog, this.getOrCreateContainer());\n } else {\n // This is safe to call repeatedly if we happen to do that\n _reactDom2.default.unmountComponentAtNode(this.getOrCreateContainer());\n }\n }\n }]);\n return ModalManager;\n}();\n\nif (!global.singletonModalManager) {\n global.singletonModalManager = new ModalManager();\n}\nexports.default = global.singletonModalManager;\nmodule.exports = exports['default'];\n//# sourceMappingURL=Modal.js.map","module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };","var matrixcs = require(\"./lib/matrix\");\nconst request = require('browser-request');\nconst queryString = require('qs');\n\nmatrixcs.request(function(opts, fn) {\n // We manually fix the query string for browser-request because\n // it doesn't correctly handle cases like ?via=one&via=two. Instead\n // we mimic `request`'s query string interface to make it all work\n // as expected.\n // browser-request will happily take the constructed string as the\n // query string without trying to modify it further.\n opts.qs = queryString.stringify(opts.qs || {}, opts.qsStringifyOptions);\n return request(opts, fn);\n});\n\n// just *accessing* indexedDB throws an exception in firefox with\n// indexeddb disabled.\nvar indexedDB;\ntry {\n indexedDB = global.indexedDB;\n} catch(e) {}\n\n// if our browser (appears to) support indexeddb, use an indexeddb crypto store.\nif (indexedDB) {\n matrixcs.setCryptoStoreFactory(\n function() {\n return new matrixcs.IndexedDBCryptoStore(\n indexedDB, \"matrix-js-sdk:crypto\"\n );\n }\n );\n}\n\nmodule.exports = matrixcs; // keep export for browserify package deps\nglobal.matrixcs = matrixcs;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SettingLevel = undefined;\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _DeviceSettingsHandler = require(\"./handlers/DeviceSettingsHandler\");\n\nvar _DeviceSettingsHandler2 = _interopRequireDefault(_DeviceSettingsHandler);\n\nvar _RoomDeviceSettingsHandler = require(\"./handlers/RoomDeviceSettingsHandler\");\n\nvar _RoomDeviceSettingsHandler2 = _interopRequireDefault(_RoomDeviceSettingsHandler);\n\nvar _DefaultSettingsHandler = require(\"./handlers/DefaultSettingsHandler\");\n\nvar _DefaultSettingsHandler2 = _interopRequireDefault(_DefaultSettingsHandler);\n\nvar _RoomAccountSettingsHandler = require(\"./handlers/RoomAccountSettingsHandler\");\n\nvar _RoomAccountSettingsHandler2 = _interopRequireDefault(_RoomAccountSettingsHandler);\n\nvar _AccountSettingsHandler = require(\"./handlers/AccountSettingsHandler\");\n\nvar _AccountSettingsHandler2 = _interopRequireDefault(_AccountSettingsHandler);\n\nvar _RoomSettingsHandler = require(\"./handlers/RoomSettingsHandler\");\n\nvar _RoomSettingsHandler2 = _interopRequireDefault(_RoomSettingsHandler);\n\nvar _ConfigSettingsHandler = require(\"./handlers/ConfigSettingsHandler\");\n\nvar _ConfigSettingsHandler2 = _interopRequireDefault(_ConfigSettingsHandler);\n\nvar _languageHandler = require(\"../languageHandler\");\n\nvar _SdkConfig = require(\"../SdkConfig\");\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _dispatcher = require(\"../dispatcher\");\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Settings = require(\"./Settings\");\n\nvar _LocalEchoWrapper = require(\"./handlers/LocalEchoWrapper\");\n\nvar _LocalEchoWrapper2 = _interopRequireDefault(_LocalEchoWrapper);\n\nvar _WatchManager = require(\"./WatchManager\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Represents the various setting levels supported by the SettingsStore.\n */\nvar SettingLevel = exports.SettingLevel = {\n // Note: This enum is not used in this class or in the Settings file\n // This should always be used elsewhere in the project.\n DEVICE: \"device\",\n ROOM_DEVICE: \"room-device\",\n ROOM_ACCOUNT: \"room-account\",\n ACCOUNT: \"account\",\n ROOM: \"room\",\n CONFIG: \"config\",\n DEFAULT: \"default\"\n}; /*\n Copyright 2017 Travis Ralston\n Copyright 2019 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar defaultWatchManager = new _WatchManager.WatchManager();\n\n// Convert the settings to easier to manage objects for the handlers\nvar defaultSettings = {};\nvar invertedDefaultSettings = {};\nvar featureNames = [];\nvar _iteratorNormalCompletion = true;\nvar _didIteratorError = false;\nvar _iteratorError = undefined;\n\ntry {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(_Settings.SETTINGS)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n\n defaultSettings[key] = _Settings.SETTINGS[key].default;\n if (_Settings.SETTINGS[key].isFeature) featureNames.push(key);\n if (_Settings.SETTINGS[key].invertedSettingName) {\n // Invert now so that the rest of the system will invert it back\n // to what was intended.\n invertedDefaultSettings[key] = !_Settings.SETTINGS[key].default;\n }\n }\n} catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n} finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n}\n\nvar LEVEL_HANDLERS = {\n \"device\": new _DeviceSettingsHandler2.default(featureNames, defaultWatchManager),\n \"room-device\": new _RoomDeviceSettingsHandler2.default(defaultWatchManager),\n \"room-account\": new _RoomAccountSettingsHandler2.default(defaultWatchManager),\n \"account\": new _AccountSettingsHandler2.default(defaultWatchManager),\n \"room\": new _RoomSettingsHandler2.default(defaultWatchManager),\n \"config\": new _ConfigSettingsHandler2.default(),\n \"default\": new _DefaultSettingsHandler2.default(defaultSettings, invertedDefaultSettings)\n};\n\n// Wrap all the handlers with local echo\nvar _iteratorNormalCompletion2 = true;\nvar _didIteratorError2 = false;\nvar _iteratorError2 = undefined;\n\ntry {\n for (var _iterator2 = (0, _getIterator3.default)((0, _keys2.default)(LEVEL_HANDLERS)), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _key = _step2.value;\n\n LEVEL_HANDLERS[_key] = new _LocalEchoWrapper2.default(LEVEL_HANDLERS[_key]);\n }\n} catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n} finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n}\n\nvar LEVEL_ORDER = ['device', 'room-device', 'room-account', 'account', 'room', 'config', 'default'];\n\n/**\n * Controls and manages application settings by providing varying levels at which the\n * setting value may be specified. The levels are then used to determine what the setting\n * value should be given a set of circumstances. The levels, in priority order, are:\n * - \"device\" - Values are determined by the current device\n * - \"room-device\" - Values are determined by the current device for a particular room\n * - \"room-account\" - Values are determined by the current account for a particular room\n * - \"account\" - Values are determined by the current account\n * - \"room\" - Values are determined by a particular room (by the room admins)\n * - \"config\" - Values are determined by the config.json\n * - \"default\" - Values are determined by the hardcoded defaults\n *\n * Each level has a different method to storing the setting value. For implementation\n * specific details, please see the handlers. The \"config\" and \"default\" levels are\n * both always supported on all platforms. All other settings should be guarded by\n * isLevelSupported() prior to attempting to set the value.\n *\n * Settings can also represent features. Features are significant portions of the\n * application that warrant a dedicated setting to toggle them on or off. Features are\n * special-cased to ensure that their values respect the configuration (for example, a\n * feature may be reported as disabled even though a user has specifically requested it\n * be enabled).\n */\n\nvar SettingsStore = function () {\n function SettingsStore() {\n (0, _classCallCheck3.default)(this, SettingsStore);\n }\n\n (0, _createClass3.default)(SettingsStore, null, [{\n key: \"watchSetting\",\n // { settingName => { roomId => callbackRef } }\n\n /**\n * Watches for changes in a particular setting. This is done without any local echo\n * wrapping and fires whenever a change is detected in a setting's value, at any level.\n * Watching is intended to be used in scenarios where the app needs to react to changes\n * made by other devices. It is otherwise expected that callers will be able to use the\n * Controller system or track their own changes to settings. Callers should retain the\n * returned reference to later unsubscribe from updates.\n * @param {string} settingName The setting name to watch\n * @param {String} roomId The room ID to watch for changes in. May be null for 'all'.\n * @param {function} callbackFn A function to be called when a setting change is\n * detected. Five arguments can be expected: the setting name, the room ID (may be null),\n * the level the change happened at, the new value at the given level, and finally the new\n * value for the setting regardless of level. The callback is responsible for determining\n * if the change in value is worthwhile enough to react upon.\n * @returns {string} A reference to the watcher that was employed.\n */\n\n // We support watching settings for changes, and do this by tracking which callbacks have\n // been given to us. We end up returning the callbackRef to the caller so they can unsubscribe\n // at a later point.\n //\n // We also maintain a list of monitors which are special watchers: they cause dispatches\n // when the setting changes. We track which rooms we're monitoring though to ensure we\n // don't duplicate updates on the bus.\n value: function watchSetting(settingName, roomId, callbackFn) {\n var setting = _Settings.SETTINGS[settingName];\n var originalSettingName = settingName;\n if (!setting) throw new Error(settingName + \" is not a setting\");\n\n if (setting.invertedSettingName) {\n settingName = setting.invertedSettingName;\n }\n\n var watcherId = new Date().getTime() + \"_\" + settingName + \"_\" + roomId;\n\n var localizedCallback = function localizedCallback(changedInRoomId, atLevel, newValAtLevel) {\n var newValue = SettingsStore.getValue(originalSettingName);\n callbackFn(originalSettingName, changedInRoomId, atLevel, newValAtLevel, newValue);\n };\n\n console.log(\"Starting watcher for \" + settingName + \"@\" + (roomId || ''));\n SettingsStore._watchers[watcherId] = localizedCallback;\n defaultWatchManager.watchSetting(settingName, roomId, localizedCallback);\n\n return watcherId;\n }\n\n /**\n * Stops the SettingsStore from watching a setting. This is a no-op if the watcher\n * provided is not found.\n * @param {string} watcherReference The watcher reference (received from #watchSetting)\n * to cancel.\n */\n // { callbackRef => { callbackFn } }\n\n }, {\n key: \"unwatchSetting\",\n value: function unwatchSetting(watcherReference) {\n if (!SettingsStore._watchers[watcherReference]) return;\n\n defaultWatchManager.unwatchSetting(SettingsStore._watchers[watcherReference]);\n delete SettingsStore._watchers[watcherReference];\n }\n\n /**\n * Sets up a monitor for a setting. This behaves similar to #watchSetting except instead\n * of making a call to a callback, it forwards all changes to the dispatcher. Callers can\n * expect to listen for the 'setting_updated' action with an object containing settingName,\n * roomId, level, newValueAtLevel, and newValue.\n * @param {string} settingName The setting name to monitor.\n * @param {String} roomId The room ID to monitor for changes in. Use null for all rooms.\n */\n\n }, {\n key: \"monitorSetting\",\n value: function monitorSetting(settingName, roomId) {\n var _this = this;\n\n if (!this._monitors[settingName]) this._monitors[settingName] = {};\n\n var registerWatcher = function registerWatcher() {\n _this._monitors[settingName][roomId] = SettingsStore.watchSetting(settingName, roomId, function (settingName, inRoomId, level, newValueAtLevel, newValue) {\n _dispatcher2.default.dispatch({\n action: 'setting_updated',\n settingName: settingName,\n roomId: inRoomId,\n level: level,\n newValueAtLevel: newValueAtLevel,\n newValue: newValue\n });\n });\n };\n\n var hasRoom = (0, _keys2.default)(this._monitors[settingName]).find(function (r) {\n return r === roomId || r === null;\n });\n if (!hasRoom) {\n registerWatcher();\n } else {\n if (roomId === null) {\n // Unregister all existing watchers and register the new one\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)((0, _keys2.default)(this._monitors[settingName])), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _roomId = _step3.value;\n\n SettingsStore.unwatchSetting(this._monitors[settingName][_roomId]);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n this._monitors[settingName] = {};\n registerWatcher();\n } // else a watcher is already registered for the room, so don't bother registering it again\n }\n }\n\n /**\n * Gets the translated display name for a given setting\n * @param {string} settingName The setting to look up.\n * @param {\"device\"|\"room-device\"|\"room-account\"|\"account\"|\"room\"|\"config\"|\"default\"} atLevel\n * The level to get the display name for; Defaults to 'default'.\n * @return {String} The display name for the setting, or null if not found.\n */\n\n }, {\n key: \"getDisplayName\",\n value: function getDisplayName(settingName) {\n var atLevel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"default\";\n\n if (!_Settings.SETTINGS[settingName] || !_Settings.SETTINGS[settingName].displayName) return null;\n\n var displayName = _Settings.SETTINGS[settingName].displayName;\n if (displayName instanceof Object) {\n if (displayName[atLevel]) displayName = displayName[atLevel];else displayName = displayName[\"default\"];\n }\n\n return (0, _languageHandler._t)(displayName);\n }\n\n /**\n * Returns a list of all available labs feature names\n * @returns {string[]} The list of available feature names\n */\n\n }, {\n key: \"getLabsFeatures\",\n value: function getLabsFeatures() {\n var possibleFeatures = (0, _keys2.default)(_Settings.SETTINGS).filter(function (s) {\n return SettingsStore.isFeature(s);\n });\n\n var enableLabs = _SdkConfig2.default.get()[\"enableLabs\"];\n if (enableLabs) return possibleFeatures;\n\n return possibleFeatures.filter(function (s) {\n return SettingsStore._getFeatureState(s) === \"labs\";\n });\n }\n\n /**\n * Determines if a setting is also a feature.\n * @param {string} settingName The setting to look up.\n * @return {boolean} True if the setting is a feature.\n */\n\n }, {\n key: \"isFeature\",\n value: function isFeature(settingName) {\n if (!_Settings.SETTINGS[settingName]) return false;\n return _Settings.SETTINGS[settingName].isFeature;\n }\n\n /**\n * Determines if a given feature is enabled. The feature given must be a known\n * feature.\n * @param {string} settingName The name of the setting that is a feature.\n * @param {String} roomId The optional room ID to validate in, may be null.\n * @return {boolean} True if the feature is enabled, false otherwise\n */\n\n }, {\n key: \"isFeatureEnabled\",\n value: function isFeatureEnabled(settingName) {\n var roomId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (!SettingsStore.isFeature(settingName)) {\n throw new Error(\"Setting \" + settingName + \" is not a feature\");\n }\n\n return SettingsStore.getValue(settingName, roomId);\n }\n\n /**\n * Sets a feature as enabled or disabled on the current device.\n * @param {string} settingName The name of the setting.\n * @param {boolean} value True to enable the feature, false otherwise.\n * @returns {Promise} Resolves when the setting has been set.\n */\n\n }, {\n key: \"setFeatureEnabled\",\n value: function setFeatureEnabled(settingName, value) {\n // Verify that the setting is actually a setting\n if (!_Settings.SETTINGS[settingName]) {\n throw new Error(\"Setting '\" + settingName + \"' does not appear to be a setting.\");\n }\n if (!SettingsStore.isFeature(settingName)) {\n throw new Error(\"Setting \" + settingName + \" is not a feature\");\n }\n\n return SettingsStore.setValue(settingName, null, \"device\", value);\n }\n\n /**\n * Gets the value of a setting. The room ID is optional if the setting is not to\n * be applied to any particular room, otherwise it should be supplied.\n * @param {string} settingName The name of the setting to read the value of.\n * @param {String} roomId The room ID to read the setting value in, may be null.\n * @param {boolean} excludeDefault True to disable using the default value.\n * @return {*} The value, or null if not found\n */\n\n }, {\n key: \"getValue\",\n value: function getValue(settingName) {\n var roomId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var excludeDefault = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n // Verify that the setting is actually a setting\n if (!_Settings.SETTINGS[settingName]) {\n throw new Error(\"Setting '\" + settingName + \"' does not appear to be a setting.\");\n }\n\n var setting = _Settings.SETTINGS[settingName];\n var levelOrder = setting.supportedLevelsAreOrdered ? setting.supportedLevels : LEVEL_ORDER;\n\n return SettingsStore.getValueAt(levelOrder[0], settingName, roomId, false, excludeDefault);\n }\n\n /**\n * Gets a setting's value at a particular level, ignoring all levels that are more specific.\n * @param {\"device\"|\"room-device\"|\"room-account\"|\"account\"|\"room\"|\"config\"|\"default\"} level The\n * level to look at.\n * @param {string} settingName The name of the setting to read.\n * @param {String} roomId The room ID to read the setting value in, may be null.\n * @param {boolean} explicit If true, this method will not consider other levels, just the one\n * provided. Defaults to false.\n * @param {boolean} excludeDefault True to disable using the default value.\n * @return {*} The value, or null if not found.\n */\n\n }, {\n key: \"getValueAt\",\n value: function getValueAt(level, settingName) {\n var roomId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var explicit = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var excludeDefault = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // Verify that the setting is actually a setting\n var setting = _Settings.SETTINGS[settingName];\n if (!setting) {\n throw new Error(\"Setting '\" + settingName + \"' does not appear to be a setting.\");\n }\n\n var levelOrder = setting.supportedLevelsAreOrdered ? setting.supportedLevels : LEVEL_ORDER;\n if (!levelOrder.includes(\"default\")) levelOrder.push(\"default\"); // always include default\n\n var minIndex = levelOrder.indexOf(level);\n if (minIndex === -1) throw new Error(\"Level \" + level + \" is not prioritized\");\n\n if (SettingsStore.isFeature(settingName)) {\n var configValue = SettingsStore._getFeatureState(settingName);\n if (configValue === \"enable\") return true;\n if (configValue === \"disable\") return false;\n // else let it fall through the default process\n }\n\n var handlers = SettingsStore._getHandlers(settingName);\n\n // Check if we need to invert the setting at all. Do this after we get the setting\n // handlers though, otherwise we'll fail to read the value.\n if (setting.invertedSettingName) {\n //console.warn(`Inverting ${settingName} to be ${setting.invertedSettingName} - legacy setting`);\n settingName = setting.invertedSettingName;\n }\n\n if (explicit) {\n var handler = handlers[level];\n if (!handler) {\n return SettingsStore._getFinalValue(setting, level, roomId, null, null);\n }\n var value = handler.getValue(settingName, roomId);\n return SettingsStore._getFinalValue(setting, level, roomId, value, level);\n }\n\n for (var i = minIndex; i < levelOrder.length; i++) {\n var _handler = handlers[levelOrder[i]];\n if (!_handler) continue;\n if (excludeDefault && levelOrder[i] === \"default\") continue;\n\n var _value = _handler.getValue(settingName, roomId);\n if (_value === null || _value === undefined) continue;\n return SettingsStore._getFinalValue(setting, level, roomId, _value, levelOrder[i]);\n }\n\n return SettingsStore._getFinalValue(setting, level, roomId, null, null);\n }\n }, {\n key: \"_getFinalValue\",\n value: function _getFinalValue(setting, level, roomId, calculatedValue, calculatedAtLevel) {\n var resultingValue = calculatedValue;\n\n if (setting.controller) {\n var actualValue = setting.controller.getValueOverride(level, roomId, calculatedValue, calculatedAtLevel);\n if (actualValue !== undefined && actualValue !== null) resultingValue = actualValue;\n }\n\n if (setting.invertedSettingName) resultingValue = !resultingValue;\n return resultingValue;\n }\n\n /* eslint-disable valid-jsdoc */ //https://github.com/eslint/eslint/issues/7307\n /**\n * Sets the value for a setting. The room ID is optional if the setting is not being\n * set for a particular room, otherwise it should be supplied. The value may be null\n * to indicate that the level should no longer have an override.\n * @param {string} settingName The name of the setting to change.\n * @param {String} roomId The room ID to change the value in, may be null.\n * @param {\"device\"|\"room-device\"|\"room-account\"|\"account\"|\"room\"} level The level\n * to change the value at.\n * @param {*} value The new value of the setting, may be null.\n * @return {Promise} Resolves when the setting has been changed.\n */\n /* eslint-enable valid-jsdoc */\n\n }, {\n key: \"setValue\",\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(settingName, roomId, level, value) {\n var setting, handler, controller;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n // Verify that the setting is actually a setting\n setting = _Settings.SETTINGS[settingName];\n\n if (setting) {\n _context.next = 3;\n break;\n }\n\n throw new Error(\"Setting '\" + settingName + \"' does not appear to be a setting.\");\n\n case 3:\n handler = SettingsStore._getHandler(settingName, level);\n\n if (handler) {\n _context.next = 6;\n break;\n }\n\n throw new Error(\"Setting \" + settingName + \" does not have a handler for \" + level);\n\n case 6:\n\n if (setting.invertedSettingName) {\n // Note: We can't do this when the `level` is \"default\", however we also\n // know that the user can't possible change the default value through this\n // function so we don't bother checking it.\n //console.warn(`Inverting ${settingName} to be ${setting.invertedSettingName} - legacy setting`);\n settingName = setting.invertedSettingName;\n value = !value;\n }\n\n if (handler.canSetValue(settingName, roomId)) {\n _context.next = 9;\n break;\n }\n\n throw new Error(\"User cannot set \" + settingName + \" at \" + level + \" in \" + roomId);\n\n case 9:\n _context.next = 11;\n return (0, _bluebird.resolve)(handler.setValue(settingName, roomId, value));\n\n case 11:\n controller = setting.controller;\n\n if (controller) {\n controller.onChange(level, roomId, value);\n }\n\n case 13:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function setValue(_x8, _x9, _x10, _x11) {\n return _ref.apply(this, arguments);\n }\n\n return setValue;\n }()\n\n /**\n * Determines if the current user is permitted to set the given setting at the given\n * level for a particular room. The room ID is optional if the setting is not being\n * set for a particular room, otherwise it should be supplied.\n * @param {string} settingName The name of the setting to check.\n * @param {String} roomId The room ID to check in, may be null.\n * @param {\"device\"|\"room-device\"|\"room-account\"|\"account\"|\"room\"} level The level to\n * check at.\n * @return {boolean} True if the user may set the setting, false otherwise.\n */\n\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId, level) {\n // Verify that the setting is actually a setting\n if (!_Settings.SETTINGS[settingName]) {\n throw new Error(\"Setting '\" + settingName + \"' does not appear to be a setting.\");\n }\n\n var handler = SettingsStore._getHandler(settingName, level);\n if (!handler) return false;\n return handler.canSetValue(settingName, roomId);\n }\n\n /**\n * Determines if the given level is supported on this device.\n * @param {\"device\"|\"room-device\"|\"room-account\"|\"account\"|\"room\"} level The level\n * to check the feasibility of.\n * @return {boolean} True if the level is supported, false otherwise.\n */\n\n }, {\n key: \"isLevelSupported\",\n value: function isLevelSupported(level) {\n if (!LEVEL_HANDLERS[level]) return false;\n return LEVEL_HANDLERS[level].isSupported();\n }\n\n /**\n * Debugging function for reading explicit setting values without going through the\n * complicated/biased functions in the SettingsStore. This will print information to\n * the console for analysis. Not intended to be used within the application.\n * @param {string} realSettingName The setting name to try and read.\n * @param {string} roomId Optional room ID to test the setting in.\n */\n\n }, {\n key: \"debugSetting\",\n value: function debugSetting(realSettingName, roomId) {\n console.log(\"--- DEBUG \" + realSettingName);\n\n // Note: we intentionally use JSON.stringify here to avoid the console masking the\n // problem if there's a type representation issue. Also, this way it is guaranteed\n // to show up in a rageshake if required.\n\n var def = _Settings.SETTINGS[realSettingName];\n console.log(\"--- definition: \" + (def ? (0, _stringify2.default)(def) : ''));\n console.log(\"--- default level order: \" + (0, _stringify2.default)(LEVEL_ORDER));\n console.log(\"--- registered handlers: \" + (0, _stringify2.default)((0, _keys2.default)(LEVEL_HANDLERS)));\n\n var doChecks = function doChecks(settingName) {\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = (0, _getIterator3.default)((0, _keys2.default)(LEVEL_HANDLERS)), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var handlerName = _step4.value;\n\n var handler = LEVEL_HANDLERS[handlerName];\n\n try {\n var _value3 = handler.getValue(settingName, roomId);\n console.log(\"--- \" + handlerName + \"@\" + (roomId || '') + \" = \" + (0, _stringify2.default)(_value3));\n } catch (e) {\n console.log(\"--- \" + handler + \"@\" + (roomId || '') + \" THREW ERROR: \" + e.message);\n console.error(e);\n }\n\n if (roomId) {\n try {\n var _value4 = handler.getValue(settingName, null);\n console.log(\"--- \" + handlerName + \"@ = \" + (0, _stringify2.default)(_value4));\n } catch (e) {\n console.log(\"--- \" + handler + \"@ THREW ERROR: \" + e.message);\n console.error(e);\n }\n }\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n console.log(\"--- calculating as returned by SettingsStore\");\n console.log(\"--- these might not match if the setting uses a controller - be warned!\");\n\n try {\n var value = SettingsStore.getValue(settingName, roomId);\n console.log(\"--- SettingsStore#generic@\" + (roomId || '') + \" = \" + (0, _stringify2.default)(value));\n } catch (e) {\n console.log(\"--- SettingsStore#generic@\" + (roomId || '') + \" THREW ERROR: \" + e.message);\n console.error(e);\n }\n\n if (roomId) {\n try {\n var _value2 = SettingsStore.getValue(settingName, null);\n console.log(\"--- SettingsStore#generic@ = \" + (0, _stringify2.default)(_value2));\n } catch (e) {\n console.log(\"--- SettingsStore#generic@$ THREW ERROR: \" + e.message);\n console.error(e);\n }\n }\n\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = (0, _getIterator3.default)(LEVEL_ORDER), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var level = _step5.value;\n\n try {\n var _value5 = SettingsStore.getValueAt(level, settingName, roomId);\n console.log(\"--- SettingsStore#\" + level + \"@\" + (roomId || '') + \" = \" + (0, _stringify2.default)(_value5));\n } catch (e) {\n console.log(\"--- SettingsStore#\" + level + \"@\" + (roomId || '') + \" THREW ERROR: \" + e.message);\n console.error(e);\n }\n\n if (roomId) {\n try {\n var _value6 = SettingsStore.getValueAt(level, settingName, null);\n console.log(\"--- SettingsStore#\" + level + \"@ = \" + (0, _stringify2.default)(_value6));\n } catch (e) {\n console.log(\"--- SettingsStore#\" + level + \"@$ THREW ERROR: \" + e.message);\n console.error(e);\n }\n }\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n };\n\n doChecks(realSettingName);\n\n if (def.invertedSettingName) {\n console.log(\"--- TESTING INVERTED SETTING NAME\");\n console.log(\"--- inverted: \" + def.invertedSettingName);\n doChecks(def.invertedSettingName);\n }\n\n console.log(\"--- END DEBUG\");\n }\n }, {\n key: \"_getHandler\",\n value: function _getHandler(settingName, level) {\n var handlers = SettingsStore._getHandlers(settingName);\n if (!handlers[level]) return null;\n return handlers[level];\n }\n }, {\n key: \"_getHandlers\",\n value: function _getHandlers(settingName) {\n if (!_Settings.SETTINGS[settingName]) return {};\n\n var handlers = {};\n var _iteratorNormalCompletion6 = true;\n var _didIteratorError6 = false;\n var _iteratorError6 = undefined;\n\n try {\n for (var _iterator6 = (0, _getIterator3.default)(_Settings.SETTINGS[settingName].supportedLevels), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n var level = _step6.value;\n\n if (!LEVEL_HANDLERS[level]) throw new Error(\"Unexpected level \" + level);\n handlers[level] = LEVEL_HANDLERS[level];\n }\n\n // Always support 'default'\n } catch (err) {\n _didIteratorError6 = true;\n _iteratorError6 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion6 && _iterator6.return) {\n _iterator6.return();\n }\n } finally {\n if (_didIteratorError6) {\n throw _iteratorError6;\n }\n }\n }\n\n if (!handlers['default']) handlers['default'] = LEVEL_HANDLERS['default'];\n\n return handlers;\n }\n }, {\n key: \"_getFeatureState\",\n value: function _getFeatureState(settingName) {\n var featuresConfig = _SdkConfig2.default.get()['features'];\n var enableLabs = _SdkConfig2.default.get()['enableLabs']; // we'll honour the old flag\n\n var featureState = enableLabs ? \"labs\" : \"disable\";\n if (featuresConfig && featuresConfig[settingName] !== undefined) {\n featureState = featuresConfig[settingName];\n }\n\n var allowedStates = ['enable', 'disable', 'labs'];\n if (!allowedStates.includes(featureState)) {\n console.warn(\"Feature state '\" + featureState + \"' is invalid for \" + settingName);\n featureState = \"disable\"; // to prevent accidental features.\n }\n\n return featureState;\n }\n }]);\n return SettingsStore;\n}();\n\n// For debugging purposes\n\n\nSettingsStore._watchers = {};\nSettingsStore._monitors = {};\nexports.default = SettingsStore;\nglobal.mxSettingsStore = SettingsStore;\n//# sourceMappingURL=SettingsStore.js.map","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","var core = module.exports = { version: '2.6.9' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nexports.default = AccessibleButton;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _Keyboard = require('../../../Keyboard');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * AccessibleButton is a generic wrapper for any element that should be treated\n * as a button. Identifies the element as a button, setting proper tab\n * indexing and keyboard activation behavior.\n *\n * @param {Object} props react element properties\n * @returns {Object} rendered react\n */\nfunction AccessibleButton(props) {\n var element = props.element,\n onClick = props.onClick,\n children = props.children,\n kind = props.kind,\n disabled = props.disabled,\n restProps = (0, _objectWithoutProperties3.default)(props, ['element', 'onClick', 'children', 'kind', 'disabled']);\n\n\n if (!disabled) {\n restProps.onClick = onClick;\n // We need to consume enter onKeyDown and space onKeyUp\n // otherwise we are risking also activating other keyboard focusable elements\n // that might receive focus as a result of the AccessibleButtonClick action\n // It's because we are using html buttons at a few places e.g. inside dialogs\n // And divs which we report as role button to assistive technologies.\n // Browsers handle space and enter keypresses differently and we are only adjusting to the\n // inconsistencies here\n restProps.onKeyDown = function (e) {\n if (e.keyCode === _Keyboard.KeyCode.ENTER) {\n e.stopPropagation();\n e.preventDefault();\n return onClick(e);\n }\n if (e.keyCode === _Keyboard.KeyCode.SPACE) {\n e.stopPropagation();\n e.preventDefault();\n }\n };\n restProps.onKeyUp = function (e) {\n if (e.keyCode === _Keyboard.KeyCode.SPACE) {\n e.stopPropagation();\n e.preventDefault();\n return onClick(e);\n }\n if (e.keyCode === _Keyboard.KeyCode.ENTER) {\n e.stopPropagation();\n e.preventDefault();\n }\n };\n }\n\n // Pass through the ref - used for keyboard shortcut access to some buttons\n restProps.ref = restProps.inputRef;\n delete restProps.inputRef;\n\n restProps.tabIndex = restProps.tabIndex || \"0\";\n restProps.role = restProps.role || \"button\";\n restProps.className = (restProps.className ? restProps.className + \" \" : \"\") + \"mx_AccessibleButton\";\n\n if (kind) {\n // We apply a hasKind class to maintain backwards compatibility with\n // buttons which might not know about kind and break\n restProps.className += \" mx_AccessibleButton_hasKind mx_AccessibleButton_kind_\" + kind;\n }\n\n if (disabled) {\n restProps.className += \" mx_AccessibleButton_disabled\";\n restProps[\"aria-disabled\"] = true;\n }\n\n return _react2.default.createElement(element, restProps, children);\n}\n\n/**\n * children: React's magic prop. Represents all children given to the element.\n * element: (optional) The base element type. \"div\" by default.\n * onClick: (required) Event handler for button activation. Should be\n * implemented exactly like a normal onClick handler.\n */\n/*\n Copyright 2016 Jani Mustonen\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nAccessibleButton.propTypes = {\n children: _propTypes2.default.node,\n inputRef: _propTypes2.default.func,\n element: _propTypes2.default.string,\n onClick: _propTypes2.default.func.isRequired,\n\n // The kind of button, similar to how Bootstrap works.\n // See available classes for AccessibleButton for options.\n kind: _propTypes2.default.string,\n\n disabled: _propTypes2.default.bool\n};\n\nAccessibleButton.defaultProps = {\n element: 'div'\n};\n\nAccessibleButton.displayName = \"AccessibleButton\";\nmodule.exports = exports['default'];\n//# sourceMappingURL=AccessibleButton.js.map","import isPlainObject from 'is-plain-object';\nimport { Map as Map$1, List, Record, Set, OrderedSet, is, Stack } from 'immutable';\nimport warning from 'slate-dev-warning';\nimport { reverse } from 'esrever';\nimport omit from 'lodash/omit';\nimport pick from 'lodash/pick';\nimport Debug from 'debug';\nimport direction from 'direction';\n\n/**\n * An auto-incrementing index for generating keys.\n *\n * @type {Number}\n */\n\nvar n = void 0;\n\n/**\n * The global key generating function.\n *\n * @type {Function}\n */\n\nvar generate = void 0;\n\n/**\n * Create a key, using a provided key if available.\n *\n * @param {String|Void} key\n * @return {String}\n */\n\nfunction create(key) {\n if (key == null) {\n return generate();\n }\n\n if (typeof key === 'string') {\n return key;\n }\n\n throw new Error('Keys must be strings, but you passed: ' + key);\n}\n\n/**\n * Set a different unique ID generating `function`.\n *\n * @param {Function} func\n */\n\nfunction setGenerator(func) {\n generate = func;\n}\n\n/**\n * Reset the key generating function to its initial state.\n */\n\nfunction resetGenerator() {\n n = 0;\n generate = function generate() {\n return '' + n++;\n };\n}\n\n/**\n * Set the initial state.\n */\n\nresetGenerator();\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nvar KeyUtils = {\n create: create,\n setGenerator: setGenerator,\n resetGenerator: resetGenerator\n};\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n\n\n\n\nvar slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\n/**\n * Data.\n *\n * This isn't an immutable record, it's just a thin wrapper around `Map` so that\n * we can allow for more convenient creation.\n *\n * @type {Object}\n */\n\nvar Data = function () {\n function Data() {\n classCallCheck(this, Data);\n }\n\n createClass(Data, null, [{\n key: 'create',\n\n /**\n * Create a new `Data` with `attrs`.\n *\n * @param {Object|Data|Map} attrs\n * @return {Data} data\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Map$1.isMap(attrs)) {\n return attrs;\n }\n\n if (isPlainObject(attrs)) {\n return Data.fromJSON(attrs);\n }\n\n throw new Error('`Data.create` only accepts objects or maps, but you passed it: ' + attrs);\n }\n\n /**\n * Create a `Data` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Data}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n return new Map$1(object);\n }\n\n /**\n * Alias `fromJS`.\n */\n\n }]);\n return Data;\n}();\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nData.fromJS = Data.fromJSON;\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS = {\n data: undefined,\n key: undefined,\n nodes: undefined\n\n /**\n * Document.\n *\n * @type {Document}\n */\n\n};\nvar Document = function (_Record) {\n inherits(Document, _Record);\n\n function Document() {\n classCallCheck(this, Document);\n return possibleConstructorReturn(this, (Document.__proto__ || Object.getPrototypeOf(Document)).apply(this, arguments));\n }\n\n createClass(Document, [{\n key: 'toJSON',\n\n\n /**\n * Return a JSON representation of the document.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var object = {\n object: this.object,\n data: this.data.toJSON(),\n nodes: this.nodes.toArray().map(function (n) {\n return n.toJSON(options);\n })\n };\n\n if (options.preserveKeys) {\n object.key = this.key;\n }\n\n return object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Document` with `attrs`.\n *\n * @param {Object|Array|List|Text} attrs\n * @return {Document}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Document.isDocument(attrs)) {\n return attrs;\n }\n\n if (List.isList(attrs) || Array.isArray(attrs)) {\n attrs = { nodes: attrs };\n }\n\n if (isPlainObject(attrs)) {\n return Document.fromJSON(attrs);\n }\n\n throw new Error('`Document.create` only accepts objects, arrays, lists or documents, but you passed it: ' + attrs);\n }\n\n /**\n * Create a `Document` from a JSON `object`.\n *\n * @param {Object|Document} object\n * @return {Document}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Document.isDocument(object)) {\n return object;\n }\n\n var _object$data = object.data,\n data = _object$data === undefined ? {} : _object$data,\n _object$key = object.key,\n key = _object$key === undefined ? KeyUtils.create() : _object$key,\n _object$nodes = object.nodes,\n nodes = _object$nodes === undefined ? [] : _object$nodes;\n\n\n var document = new Document({\n key: key,\n data: new Map$1(data),\n nodes: Node.createList(nodes)\n });\n\n return document;\n }\n }]);\n return Document;\n}(Record(DEFAULTS));\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$1 = {\n data: undefined,\n key: undefined,\n nodes: undefined,\n type: undefined\n\n /**\n * Inline.\n *\n * @type {Inline}\n */\n\n};\nvar Inline = function (_Record) {\n inherits(Inline, _Record);\n\n function Inline() {\n classCallCheck(this, Inline);\n return possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments));\n }\n\n createClass(Inline, [{\n key: 'toJSON',\n\n\n /**\n * Return a JSON representation of the inline.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var object = {\n object: this.object,\n type: this.type,\n data: this.data.toJSON(),\n nodes: this.nodes.toArray().map(function (n) {\n return n.toJSON(options);\n })\n };\n\n if (options.preserveKeys) {\n object.key = this.key;\n }\n\n return object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Inline` with `attrs`.\n *\n * @param {Object|String|Inline} attrs\n * @return {Inline}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Inline.isInline(attrs)) {\n return attrs;\n }\n\n if (typeof attrs == 'string') {\n attrs = { type: attrs };\n }\n\n if (isPlainObject(attrs)) {\n return Inline.fromJSON(attrs);\n }\n\n throw new Error('`Inline.create` only accepts objects, strings or inlines, but you passed it: ' + attrs);\n }\n\n /**\n * Create a list of `Inlines` from an array.\n *\n * @param {Array|List} elements\n * @return {List}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (List.isList(elements) || Array.isArray(elements)) {\n var list = new List(elements.map(Inline.create));\n return list;\n }\n\n throw new Error('`Inline.createList` only accepts arrays or lists, but you passed it: ' + elements);\n }\n\n /**\n * Create a `Inline` from a JSON `object`.\n *\n * @param {Object|Inline} object\n * @return {Inline}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Inline.isInline(object)) {\n return object;\n }\n\n var _object$data = object.data,\n data = _object$data === undefined ? {} : _object$data,\n _object$key = object.key,\n key = _object$key === undefined ? KeyUtils.create() : _object$key,\n _object$nodes = object.nodes,\n nodes = _object$nodes === undefined ? [] : _object$nodes,\n type = object.type;\n\n\n if (typeof type != 'string') {\n throw new Error('`Inline.fromJS` requires a `type` string.');\n }\n\n var inline = new Inline({\n key: key,\n type: type,\n data: new Map$1(data),\n nodes: Node.createList(nodes)\n });\n\n return inline;\n }\n\n /**\n * Check if `any` is a list of inlines.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isInlineList',\n value: function isInlineList(any) {\n return List.isList(any) && any.every(function (item) {\n return Inline.isInline(item);\n });\n }\n }]);\n return Inline;\n}(Record(DEFAULTS$1));\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$2 = {\n data: undefined,\n type: undefined\n\n /**\n * Mark.\n *\n * @type {Mark}\n */\n\n};\nvar Mark = function (_Record) {\n inherits(Mark, _Record);\n\n function Mark() {\n classCallCheck(this, Mark);\n return possibleConstructorReturn(this, (Mark.__proto__ || Object.getPrototypeOf(Mark)).apply(this, arguments));\n }\n\n createClass(Mark, [{\n key: 'toJSON',\n\n\n /**\n * Return a JSON representation of the mark.\n *\n * @return {Object}\n */\n\n value: function toJSON() {\n var object = {\n object: this.object,\n type: this.type,\n data: this.data.toJSON()\n };\n\n return object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Mark` with `attrs`.\n *\n * @param {Object|Mark} attrs\n * @return {Mark}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Mark.isMark(attrs)) {\n return attrs;\n }\n\n if (typeof attrs == 'string') {\n attrs = { type: attrs };\n }\n\n if (isPlainObject(attrs)) {\n return Mark.fromJSON(attrs);\n }\n\n throw new Error('`Mark.create` only accepts objects, strings or marks, but you passed it: ' + attrs);\n }\n\n /**\n * Create a set of marks.\n *\n * @param {Array} elements\n * @return {Set}\n */\n\n }, {\n key: 'createSet',\n value: function createSet(elements) {\n if (Set.isSet(elements) || Array.isArray(elements)) {\n var marks = new Set(elements.map(Mark.create));\n return marks;\n }\n\n if (elements == null) {\n return Set();\n }\n\n throw new Error('`Mark.createSet` only accepts sets, arrays or null, but you passed it: ' + elements);\n }\n\n /**\n * Create a dictionary of settable mark properties from `attrs`.\n *\n * @param {Object|String|Mark} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Mark.isMark(attrs)) {\n return {\n data: attrs.data,\n type: attrs.type\n };\n }\n\n if (typeof attrs == 'string') {\n return { type: attrs };\n }\n\n if (isPlainObject(attrs)) {\n var props = {};\n if ('type' in attrs) props.type = attrs.type;\n if ('data' in attrs) props.data = Data.create(attrs.data);\n return props;\n }\n\n throw new Error('`Mark.createProperties` only accepts objects, strings or marks, but you passed it: ' + attrs);\n }\n\n /**\n * Create a `Mark` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Mark}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var _object$data = object.data,\n data = _object$data === undefined ? {} : _object$data,\n type = object.type;\n\n\n if (typeof type != 'string') {\n throw new Error('`Mark.fromJS` requires a `type` string.');\n }\n\n var mark = new Mark({\n type: type,\n data: new Map$1(data)\n });\n\n return mark;\n }\n\n /**\n * Check if `any` is a set of marks.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isMarkSet',\n value: function isMarkSet(any) {\n return Set.isSet(any) && any.every(function (item) {\n return Mark.isMark(item);\n });\n }\n }]);\n return Mark;\n}(Record(DEFAULTS$2));\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$3 = {\n marks: undefined,\n text: undefined\n\n /**\n * Leaf.\n *\n * @type {Leaf}\n */\n\n};\nvar Leaf = function (_Record) {\n inherits(Leaf, _Record);\n\n function Leaf() {\n classCallCheck(this, Leaf);\n return possibleConstructorReturn(this, (Leaf.__proto__ || Object.getPrototypeOf(Leaf)).apply(this, arguments));\n }\n\n createClass(Leaf, [{\n key: 'updateMark',\n\n\n /**\n * Update a `mark` at leaf, replace with newMark\n *\n * @param {Mark} mark\n * @param {Mark} newMark\n * @returns {Leaf}\n */\n\n value: function updateMark(mark, newMark) {\n var marks = this.marks;\n\n if (newMark.equals(mark)) return this;\n if (!marks.has(mark)) return this;\n var newMarks = marks.withMutations(function (collection) {\n collection.remove(mark).add(newMark);\n });\n return this.set('marks', newMarks);\n }\n\n /**\n * Add a `mark` to the leaf.\n *\n * @param {Mark} mark\n * @returns {Text}\n */\n\n }, {\n key: 'addMark',\n value: function addMark(mark) {\n var marks = this.marks;\n\n return this.set('marks', marks.add(mark));\n }\n\n /**\n * Add a `set` of marks to the leaf.\n *\n * @param {Set} set\n * @returns {Text}\n */\n\n }, {\n key: 'addMarks',\n value: function addMarks(set$$1) {\n var marks = this.marks;\n\n return this.set('marks', marks.union(set$$1));\n }\n\n /**\n * Remove a `mark` from the leaf.\n *\n * @param {Mark} mark\n * @returns {Text}\n */\n\n }, {\n key: 'removeMark',\n value: function removeMark(mark) {\n var marks = this.marks;\n\n return this.set('marks', marks.remove(mark));\n }\n\n /**\n * Return a JSON representation of the leaf.\n *\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var object = {\n object: this.object,\n text: this.text,\n marks: this.marks.toArray().map(function (m) {\n return m.toJSON();\n })\n };\n\n return object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Leaf` with `attrs`.\n *\n * @param {Object|Leaf} attrs\n * @return {Leaf}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Leaf.isLeaf(attrs)) {\n return attrs;\n }\n\n if (typeof attrs == 'string') {\n attrs = { text: attrs };\n }\n\n if (isPlainObject(attrs)) {\n return Leaf.fromJSON(attrs);\n }\n\n throw new Error('`Leaf.create` only accepts objects, strings or leaves, but you passed it: ' + attrs);\n }\n\n /**\n * Create a valid List of `Leaf` from `leaves`\n *\n * @param {List} leaves\n * @return {List}\n */\n\n }, {\n key: 'createLeaves',\n value: function createLeaves(leaves) {\n if (leaves.size <= 1) return leaves;\n\n var invalid = false;\n\n // TODO: we can make this faster with [List] and then flatten\n var result = List().withMutations(function (cache) {\n // Search from the leaves left end to find invalid node;\n leaves.findLast(function (leaf, index) {\n var firstLeaf = cache.first();\n\n // If the first leaf of cache exist, check whether the first leaf is connectable with the current leaf\n if (firstLeaf) {\n // If marks equals, then the two leaves can be connected\n if (firstLeaf.marks.equals(leaf.marks)) {\n invalid = true;\n cache.set(0, firstLeaf.set('text', '' + leaf.text + firstLeaf.text));\n return;\n }\n\n // If the cached leaf is empty, drop the empty leaf with the upcoming leaf\n if (firstLeaf.text === '') {\n invalid = true;\n cache.set(0, leaf);\n return;\n }\n\n // If the current leaf is empty, drop the leaf\n if (leaf.text === '') {\n invalid = true;\n return;\n }\n }\n\n cache.unshift(leaf);\n });\n });\n\n if (!invalid) return leaves;\n return result;\n }\n\n /**\n * Split a list of leaves to two lists; if the leaves are valid leaves, the returned leaves are also valid\n * Corner Cases:\n * 1. if offset is smaller than 0, then return [List(), leaves]\n * 2. if offset is bigger than the text length, then return [leaves, List()]\n *\n * @param {List leaves\n * @return {Array>}\n */\n\n }, {\n key: 'splitLeaves',\n value: function splitLeaves(leaves, offset) {\n if (offset < 0) return [List(), leaves];\n\n if (leaves.size === 0) {\n return [List(), List()];\n }\n\n var endOffset = 0;\n var index = -1;\n var left = void 0,\n right = void 0;\n\n leaves.find(function (leaf) {\n index++;\n var startOffset = endOffset;\n var text = leaf.text;\n\n endOffset += text.length;\n\n if (endOffset < offset) return false;\n if (startOffset > offset) return false;\n\n var length = offset - startOffset;\n left = leaf.set('text', text.slice(0, length));\n right = leaf.set('text', text.slice(length));\n return true;\n });\n\n if (!left) return [leaves, List()];\n\n if (left.text === '') {\n if (index === 0) {\n return [List.of(left), leaves];\n }\n\n return [leaves.take(index), leaves.skip(index)];\n }\n\n if (right.text === '') {\n if (index === leaves.size - 1) {\n return [leaves, List.of(right)];\n }\n\n return [leaves.take(index + 1), leaves.skip(index + 1)];\n }\n\n return [leaves.take(index).push(left), leaves.skip(index + 1).unshift(right)];\n }\n\n /**\n * Create a `Leaf` list from `attrs`.\n *\n * @param {Array|List} attrs\n * @return {List}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (List.isList(attrs) || Array.isArray(attrs)) {\n var list = new List(attrs.map(Leaf.create));\n return list;\n }\n\n throw new Error('`Leaf.createList` only accepts arrays or lists, but you passed it: ' + attrs);\n }\n\n /**\n * Create a `Leaf` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Leaf}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var _object$text = object.text,\n text = _object$text === undefined ? '' : _object$text,\n _object$marks = object.marks,\n marks = _object$marks === undefined ? [] : _object$marks;\n\n\n var leaf = new Leaf({\n text: text,\n marks: Set(marks.map(Mark.fromJSON))\n });\n\n return leaf;\n }\n\n /**\n * Check if `any` is a list of leaves.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isLeafList',\n value: function isLeafList(any) {\n return List.isList(any) && any.every(function (item) {\n return Leaf.isLeaf(item);\n });\n }\n }]);\n return Leaf;\n}(Record(DEFAULTS$3));\n\n/**\n * GLOBAL: True if memoization should is enabled.\n *\n * @type {Boolean}\n */\n\nvar ENABLED = true;\n\n/**\n * GLOBAL: Changing this cache key will clear all previous cached results.\n *\n * @type {Number}\n */\n\nvar CACHE_KEY = 0;\n\n/**\n * The leaf node of a cache tree. Used to support variable argument length. A\n * unique object, so that native Maps will key it by reference.\n *\n * @type {Object}\n */\n\nvar LEAF = {};\n\n/**\n * A value to represent a memoized undefined value. Allows efficient value\n * retrieval using Map.get only.\n *\n * @type {Object}\n */\n\nvar UNDEFINED = {};\n\n/**\n * Default value for unset keys in native Maps\n *\n * @type {Undefined}\n */\n\nvar UNSET = undefined;\n\n/**\n * Memoize all of the `properties` on a `object`.\n *\n * @param {Object} object\n * @param {Array} properties\n * @return {Record}\n */\n\nfunction memoize(object, properties) {\n var _loop = function _loop(property) {\n var original = object[property];\n\n if (!original) {\n throw new Error(\"Object does not have a property named \\\"\" + property + \"\\\".\");\n }\n\n object[property] = function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n // If memoization is disabled, call into the original method.\n if (!ENABLED) return original.apply(this, args);\n\n // If the cache key is different, previous caches must be cleared.\n if (CACHE_KEY !== this.__cache_key) {\n this.__cache_key = CACHE_KEY;\n this.__cache = new Map(); // eslint-disable-line no-undef,no-restricted-globals\n this.__cache_no_args = {};\n }\n\n if (!this.__cache) {\n this.__cache = new Map(); // eslint-disable-line no-undef,no-restricted-globals\n }\n\n if (!this.__cache_no_args) {\n this.__cache_no_args = {};\n }\n\n var takesArguments = args.length !== 0;\n\n var cachedValue = void 0;\n var keys = void 0;\n\n if (takesArguments) {\n keys = [property].concat(args);\n cachedValue = getIn(this.__cache, keys);\n } else {\n cachedValue = this.__cache_no_args[property];\n }\n\n // If we've got a result already, return it.\n if (cachedValue !== UNSET) {\n return cachedValue === UNDEFINED ? undefined : cachedValue;\n }\n\n // Otherwise calculate what it should be once and cache it.\n var value = original.apply(this, args);\n var v = value === undefined ? UNDEFINED : value;\n\n if (takesArguments) {\n this.__cache = setIn(this.__cache, keys, v);\n } else {\n this.__cache_no_args[property] = v;\n }\n\n return value;\n };\n };\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = properties[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var property = _step.value;\n\n _loop(property);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\n\n/**\n * Get a value at a key path in a tree of Map.\n *\n * If not set, returns UNSET.\n * If the set value is undefined, returns UNDEFINED.\n *\n * @param {Map} map\n * @param {Array} keys\n * @return {Any|UNSET|UNDEFINED}\n */\n\nfunction getIn(map, keys) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = keys[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var key = _step2.value;\n\n map = map.get(key);\n if (map === UNSET) return UNSET;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return map.get(LEAF);\n}\n\n/**\n * Set a value at a key path in a tree of Map, creating Maps on the go.\n *\n * @param {Map} map\n * @param {Array} keys\n * @param {Any} value\n * @return {Map}\n */\n\nfunction setIn(map, keys, value) {\n var parent = map;\n var child = void 0;\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = keys[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var key = _step3.value;\n\n child = parent.get(key);\n\n // If the path was not created yet...\n if (child === UNSET) {\n child = new Map(); // eslint-disable-line no-undef,no-restricted-globals\n parent.set(key, child);\n }\n\n parent = child;\n }\n\n // The whole path has been created, so set the value to the bottom most map.\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n child.set(LEAF, value);\n return map;\n}\n\n/**\n * In DEV mode, clears the previously memoized values, globally.\n *\n * @return {Void}\n */\n\nfunction resetMemoization() {\n CACHE_KEY++;\n\n if (CACHE_KEY >= Number.MAX_SAFE_INTEGER) {\n CACHE_KEY = 0;\n }\n}\n\n/**\n * In DEV mode, enable or disable the use of memoize values, globally.\n *\n * @param {Boolean} enabled\n * @return {Void}\n */\n\nfunction useMemoization(enabled) {\n ENABLED = enabled;\n}\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$4 = {\n leaves: undefined,\n key: undefined\n\n /**\n * Text.\n *\n * @type {Text}\n */\n\n};\nvar Text = function (_Record) {\n inherits(Text, _Record);\n\n function Text() {\n classCallCheck(this, Text);\n return possibleConstructorReturn(this, (Text.__proto__ || Object.getPrototypeOf(Text)).apply(this, arguments));\n }\n\n createClass(Text, [{\n key: 'searchLeafAtOffset',\n\n\n /**\n * Find the 'first' leaf at offset; By 'first' the alorighthm prefers `endOffset === offset` than `startOffset === offset`\n * Corner Cases:\n * 1. if offset is negative, return the first leaf;\n * 2. if offset is larger than text length, the leaf is null, startOffset, endOffset and index is of the last leaf\n *\n * @param {number}\n * @returns {Object}\n * @property {number} startOffset\n * @property {number} endOffset\n * @property {number} index\n * @property {Leaf} leaf\n */\n\n value: function searchLeafAtOffset(offset) {\n var endOffset = 0;\n var startOffset = 0;\n var index = -1;\n\n var leaf = this.leaves.find(function (l) {\n index++;\n startOffset = endOffset;\n endOffset = startOffset + l.text.length;\n return endOffset >= offset;\n });\n\n return {\n leaf: leaf,\n endOffset: endOffset,\n index: index,\n startOffset: startOffset\n };\n }\n\n /**\n * Add a `mark` at `index` and `length`.\n *\n * @param {Number} index\n * @param {Number} length\n * @param {Mark} mark\n * @return {Text}\n */\n\n }, {\n key: 'addMark',\n value: function addMark(index, length, mark) {\n var marks = Set.of(mark);\n return this.addMarks(index, length, marks);\n }\n\n /**\n * Add a `set` of marks at `index` and `length`.\n * Corner Cases:\n * 1. If empty text, and if length === 0 and index === 0, will make sure the text contain an empty leaf with the given mark.\n *\n * @param {Number} index\n * @param {Number} length\n * @param {Set} set\n * @return {Text}\n */\n\n }, {\n key: 'addMarks',\n value: function addMarks(index, length, set$$1) {\n if (this.text === '' && length === 0 && index === 0) {\n var _leaves = this.leaves;\n\n var first = _leaves.first();\n\n if (!first) {\n return this.set('leaves', List.of(Leaf.fromJSON({ text: '', marks: set$$1 })));\n }\n\n var newFirst = first.addMarks(set$$1);\n if (newFirst === first) return this;\n return this.set('leaves', List.of(newFirst));\n }\n\n if (this.text === '') return this;\n if (length === 0) return this;\n if (index >= this.text.length) return this;\n\n var _Leaf$splitLeaves = Leaf.splitLeaves(this.leaves, index),\n _Leaf$splitLeaves2 = slicedToArray(_Leaf$splitLeaves, 2),\n before = _Leaf$splitLeaves2[0],\n bundle = _Leaf$splitLeaves2[1];\n\n var _Leaf$splitLeaves3 = Leaf.splitLeaves(bundle, length),\n _Leaf$splitLeaves4 = slicedToArray(_Leaf$splitLeaves3, 2),\n middle = _Leaf$splitLeaves4[0],\n after = _Leaf$splitLeaves4[1];\n\n var leaves = before.concat(middle.map(function (x) {\n return x.addMarks(set$$1);\n }), after);\n return this.setLeaves(leaves);\n }\n\n /**\n * Derive the leaves for a list of `decorations`.\n *\n * @param {Array|Void} decorations (optional)\n * @return {List}\n */\n\n }, {\n key: 'getLeaves',\n value: function getLeaves() {\n var _this2 = this;\n\n var decorations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var leaves = this.leaves;\n\n if (leaves.size === 0) return List.of(Leaf.create({}));\n if (!decorations || decorations.length === 0) return leaves;\n if (this.text.length === 0) return leaves;\n var key = this.key;\n\n\n decorations.forEach(function (dec) {\n var start = dec.start,\n end = dec.end,\n mark = dec.mark;\n\n var hasStart = start.key == key;\n var hasEnd = end.key == key;\n\n if (hasStart && hasEnd) {\n var index = hasStart ? start.offset : 0;\n var length = hasEnd ? end.offset - index : _this2.text.length - index;\n\n if (length < 1) return;\n if (index >= _this2.text.length) return;\n\n if (index !== 0 || length < _this2.text.length) {\n var _Leaf$splitLeaves5 = Leaf.splitLeaves(leaves, index),\n _Leaf$splitLeaves6 = slicedToArray(_Leaf$splitLeaves5, 2),\n before = _Leaf$splitLeaves6[0],\n bundle = _Leaf$splitLeaves6[1];\n\n var _Leaf$splitLeaves7 = Leaf.splitLeaves(bundle, length),\n _Leaf$splitLeaves8 = slicedToArray(_Leaf$splitLeaves7, 2),\n middle = _Leaf$splitLeaves8[0],\n after = _Leaf$splitLeaves8[1];\n\n leaves = before.concat(middle.map(function (x) {\n return x.addMark(mark);\n }), after);\n return;\n }\n }\n\n leaves = leaves.map(function (x) {\n return x.addMark(mark);\n });\n });\n\n if (leaves === this.leaves) return leaves;\n return Leaf.createLeaves(leaves);\n }\n\n /**\n * Get all of the active marks on between two offsets\n * Corner Cases:\n * 1. if startOffset is equal or bigger than endOffset, then return Set();\n * 2. If no text is selected between start and end, then return Set()\n *\n * @return {Set}\n */\n\n }, {\n key: 'getActiveMarksBetweenOffsets',\n value: function getActiveMarksBetweenOffsets(startOffset, endOffset) {\n if (startOffset <= 0 && endOffset >= this.text.length) {\n return this.getActiveMarks();\n }\n\n if (startOffset >= endOffset) return Set();\n // For empty text in a paragraph, use getActiveMarks;\n if (this.text === '') return this.getActiveMarks();\n\n var result = null;\n var leafEnd = 0;\n\n this.leaves.forEach(function (leaf) {\n var leafStart = leafEnd;\n leafEnd = leafStart + leaf.text.length;\n\n if (leafEnd <= startOffset) return;\n if (leafStart >= endOffset) return false;\n\n if (!result) {\n result = leaf.marks;\n return;\n }\n\n result = result.intersect(leaf.marks);\n if (result && result.size === 0) return false;\n return false;\n });\n\n return result || Set();\n }\n\n /**\n * Get all of the active marks on the text\n *\n * @return {Set}\n */\n\n }, {\n key: 'getActiveMarks',\n value: function getActiveMarks() {\n var _this3 = this;\n\n if (this.leaves.size === 0) return Set();\n\n var result = this.leaves.first().marks;\n if (result.size === 0) return result;\n\n return result.toOrderedSet().withMutations(function (x) {\n _this3.leaves.forEach(function (c) {\n x.intersect(c.marks);\n if (x.size === 0) return false;\n });\n });\n }\n\n /**\n * Get all of the marks on between two offsets\n * Corner Cases:\n * 1. if startOffset is equal or bigger than endOffset, then return Set();\n * 2. If no text is selected between start and end, then return Set()\n *\n * @return {OrderedSet}\n */\n\n }, {\n key: 'getMarksBetweenOffsets',\n value: function getMarksBetweenOffsets(startOffset, endOffset) {\n if (startOffset <= 0 && endOffset >= this.text.length) {\n return this.getMarks();\n }\n\n if (startOffset >= endOffset) return Set();\n // For empty text in a paragraph, use getActiveMarks;\n if (this.text === '') return this.getActiveMarks();\n\n var result = null;\n var leafEnd = 0;\n\n this.leaves.forEach(function (leaf) {\n var leafStart = leafEnd;\n leafEnd = leafStart + leaf.text.length;\n\n if (leafEnd <= startOffset) return;\n if (leafStart >= endOffset) return false;\n\n if (!result) {\n result = leaf.marks;\n return;\n }\n\n result = result.union(leaf.marks);\n });\n\n return result || Set();\n }\n\n /**\n * Get all of the marks on the text.\n *\n * @return {OrderedSet}\n */\n\n }, {\n key: 'getMarks',\n value: function getMarks() {\n var array = this.getMarksAsArray();\n return new OrderedSet(array);\n }\n\n /**\n * Get all of the marks on the text as an array\n *\n * @return {Array}\n */\n\n }, {\n key: 'getMarksAsArray',\n value: function getMarksAsArray() {\n if (this.leaves.size === 0) return [];\n var first = this.leaves.first().marks;\n if (this.leaves.size === 1) return first.toArray();\n\n var result = [];\n\n this.leaves.forEach(function (leaf) {\n result.push(leaf.marks.toArray());\n });\n\n return Array.prototype.concat.apply(first.toArray(), result);\n }\n\n /**\n * Get the marks on the text at `index`.\n * Corner Cases:\n * 1. if no text is before the index, and index !== 0, then return Set()\n * 2. (for insert after split node or mark at range) if index === 0, and text === '', then return the leaf.marks\n * 3. if index === 0, text !== '', return Set()\n *\n *\n * @param {Number} index\n * @return {Set}\n */\n\n }, {\n key: 'getMarksAtIndex',\n value: function getMarksAtIndex(index) {\n var _searchLeafAtOffset = this.searchLeafAtOffset(index),\n leaf = _searchLeafAtOffset.leaf;\n\n if (!leaf) return Set();\n return leaf.marks;\n }\n\n /**\n * Insert `text` at `index`.\n *\n * @param {Numbder} offset\n * @param {String} text\n * @param {Set} marks (optional)\n * @return {Text}\n */\n\n }, {\n key: 'insertText',\n value: function insertText(offset, text, marks) {\n if (this.text === '') {\n return this.set('leaves', List.of(Leaf.create({ text: text, marks: marks })));\n }\n\n if (text.length === 0) return this;\n if (!marks) marks = Set();\n\n var _searchLeafAtOffset2 = this.searchLeafAtOffset(offset),\n startOffset = _searchLeafAtOffset2.startOffset,\n leaf = _searchLeafAtOffset2.leaf,\n index = _searchLeafAtOffset2.index;\n\n var delta = offset - startOffset;\n var beforeText = leaf.text.slice(0, delta);\n var afterText = leaf.text.slice(delta);\n var leaves = this.leaves;\n\n\n if (leaf.marks.equals(marks)) {\n return this.set('leaves', leaves.set(index, leaf.set('text', beforeText + text + afterText)));\n }\n\n var nextLeaves = leaves.splice(index, 1, leaf.set('text', beforeText), Leaf.create({ text: text, marks: marks }), leaf.set('text', afterText));\n\n return this.setLeaves(nextLeaves);\n }\n\n /**\n * Remove a `mark` at `index` and `length`.\n *\n * @param {Number} index\n * @param {Number} length\n * @param {Mark} mark\n * @return {Text}\n */\n\n }, {\n key: 'removeMark',\n value: function removeMark(index, length, mark) {\n if (this.text === '' && index === 0 && length === 0) {\n var first = this.leaves.first();\n if (!first) return this;\n var newFirst = first.removeMark(mark);\n if (newFirst === first) return this;\n return this.set('leaves', List.of(newFirst));\n }\n\n if (length <= 0) return this;\n if (index >= this.text.length) return this;\n\n var _Leaf$splitLeaves9 = Leaf.splitLeaves(this.leaves, index),\n _Leaf$splitLeaves10 = slicedToArray(_Leaf$splitLeaves9, 2),\n before = _Leaf$splitLeaves10[0],\n bundle = _Leaf$splitLeaves10[1];\n\n var _Leaf$splitLeaves11 = Leaf.splitLeaves(bundle, length),\n _Leaf$splitLeaves12 = slicedToArray(_Leaf$splitLeaves11, 2),\n middle = _Leaf$splitLeaves12[0],\n after = _Leaf$splitLeaves12[1];\n\n var leaves = before.concat(middle.map(function (x) {\n return x.removeMark(mark);\n }), after);\n return this.setLeaves(leaves);\n }\n\n /**\n * Remove text from the text node at `start` for `length`.\n *\n * @param {Number} start\n * @param {Number} length\n * @return {Text}\n */\n\n }, {\n key: 'removeText',\n value: function removeText(start, length) {\n if (length <= 0) return this;\n if (start >= this.text.length) return this;\n\n // PERF: For simple backspace, we can operate directly on the leaf\n if (length === 1) {\n var _searchLeafAtOffset3 = this.searchLeafAtOffset(start + 1),\n leaf = _searchLeafAtOffset3.leaf,\n index = _searchLeafAtOffset3.index,\n startOffset = _searchLeafAtOffset3.startOffset;\n\n var offset = start - startOffset;\n\n if (leaf) {\n if (leaf.text.length === 1) {\n var _leaves2 = this.leaves.remove(index);\n return this.setLeaves(_leaves2);\n }\n\n var beforeText = leaf.text.slice(0, offset);\n var afterText = leaf.text.slice(offset + length);\n var text = beforeText + afterText;\n\n if (text.length > 0) {\n return this.set('leaves', this.leaves.set(index, leaf.set('text', text)));\n }\n }\n }\n\n var _Leaf$splitLeaves13 = Leaf.splitLeaves(this.leaves, start),\n _Leaf$splitLeaves14 = slicedToArray(_Leaf$splitLeaves13, 2),\n before = _Leaf$splitLeaves14[0],\n bundle = _Leaf$splitLeaves14[1];\n\n var after = Leaf.splitLeaves(bundle, length)[1];\n var leaves = Leaf.createLeaves(before.concat(after));\n\n if (leaves.size === 1) {\n var first = leaves.first();\n\n if (first.text === '') {\n return this.set('leaves', List.of(first.set('marks', this.getActiveMarks())));\n }\n }\n\n return this.set('leaves', leaves);\n }\n\n /**\n * Return a JSON representation of the text.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var object = {\n object: this.object,\n leaves: this.getLeaves().toArray().map(function (r) {\n return r.toJSON();\n })\n };\n\n if (options.preserveKeys) {\n object.key = this.key;\n }\n\n return object;\n }\n\n /**\n * Update a `mark` at `index` and `length` with `properties`.\n *\n * @param {Number} index\n * @param {Number} length\n * @param {Mark} mark\n * @param {Object} properties\n * @return {Text}\n */\n\n }, {\n key: 'updateMark',\n value: function updateMark(index, length, mark, properties) {\n var newMark = mark.merge(properties);\n\n if (this.text === '' && length === 0 && index === 0) {\n var _leaves3 = this.leaves;\n\n var first = _leaves3.first();\n if (!first) return this;\n var newFirst = first.updateMark(mark, newMark);\n if (newFirst === first) return this;\n return this.set('leaves', List.of(newFirst));\n }\n\n if (length <= 0) return this;\n if (index >= this.text.length) return this;\n\n var _Leaf$splitLeaves15 = Leaf.splitLeaves(this.leaves, index),\n _Leaf$splitLeaves16 = slicedToArray(_Leaf$splitLeaves15, 2),\n before = _Leaf$splitLeaves16[0],\n bundle = _Leaf$splitLeaves16[1];\n\n var _Leaf$splitLeaves17 = Leaf.splitLeaves(bundle, length),\n _Leaf$splitLeaves18 = slicedToArray(_Leaf$splitLeaves17, 2),\n middle = _Leaf$splitLeaves18[0],\n after = _Leaf$splitLeaves18[1];\n\n var leaves = before.concat(middle.map(function (x) {\n return x.updateMark(mark, newMark);\n }), after);\n\n return this.setLeaves(leaves);\n }\n\n /**\n * Split this text and return two different texts\n * @param {Number} position\n * @returns {Array}\n */\n\n }, {\n key: 'splitText',\n value: function splitText(offset) {\n var splitted = Leaf.splitLeaves(this.leaves, offset);\n var one = this.set('leaves', splitted[0]);\n var two = this.set('leaves', splitted[1]).regenerateKey();\n return [one, two];\n }\n\n /**\n * merge this text and another text at the end\n * @param {Text} text\n * @returns {Text}\n */\n\n }, {\n key: 'mergeText',\n value: function mergeText(text) {\n var leaves = this.leaves.concat(text.leaves);\n return this.setLeaves(leaves);\n }\n\n /**\n * Set leaves with normalized `leaves`\n *\n * @param {Schema} schema\n * @returns {Text|Null}\n */\n\n }, {\n key: 'setLeaves',\n value: function setLeaves(leaves) {\n var result = Leaf.createLeaves(leaves);\n\n if (result.size === 1) {\n var first = result.first();\n\n if (!first.marks || first.marks.size === 0) {\n if (first.text === '') {\n return this.set('leaves', List());\n }\n }\n }\n\n return this.set('leaves', Leaf.createLeaves(leaves));\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Text` with `attrs`.\n *\n * @param {Object|Array|List|String|Text} attrs\n * @return {Text}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n if (Text.isText(attrs)) {\n return attrs;\n }\n\n if (typeof attrs == 'string') {\n attrs = { leaves: [{ text: attrs }] };\n }\n\n if (isPlainObject(attrs)) {\n if (attrs.text) {\n var _attrs = attrs,\n text = _attrs.text,\n marks = _attrs.marks,\n key = _attrs.key;\n\n attrs = { key: key, leaves: [{ text: text, marks: marks }] };\n }\n\n return Text.fromJSON(attrs);\n }\n\n throw new Error('`Text.create` only accepts objects, arrays, strings or texts, but you passed it: ' + attrs);\n }\n\n /**\n * Create a list of `Texts` from `elements`.\n *\n * @param {Array|List} elements\n * @return {List}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (List.isList(elements) || Array.isArray(elements)) {\n var list = new List(elements.map(Text.create));\n return list;\n }\n\n throw new Error('`Text.createList` only accepts arrays or lists, but you passed it: ' + elements);\n }\n\n /**\n * Create a `Text` from a JSON `object`.\n *\n * @param {Object|Text} object\n * @return {Text}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Text.isText(object)) {\n return object;\n }\n\n var _object$key = object.key,\n key = _object$key === undefined ? KeyUtils.create() : _object$key;\n var leaves = object.leaves;\n\n\n if (!leaves) {\n if (object.ranges) {\n warning(false, 'As of slate@0.27.0, the `ranges` property of Slate objects has been renamed to `leaves`.');\n\n leaves = object.ranges;\n } else {\n leaves = List();\n }\n }\n\n if (Array.isArray(leaves)) {\n leaves = List(leaves.map(function (x) {\n return Leaf.create(x);\n }));\n } else if (List.isList(leaves)) {\n leaves = leaves.map(function (x) {\n return Leaf.create(x);\n });\n } else {\n throw new Error('leaves must be either Array or Immutable.List');\n }\n\n var node = new Text({\n leaves: Leaf.createLeaves(leaves),\n key: key\n });\n\n return node;\n }\n\n /**\n * Check if `any` is a list of texts.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isTextList',\n value: function isTextList(any) {\n return List.isList(any) && any.every(function (item) {\n return Text.isText(item);\n });\n }\n }]);\n return Text;\n}(Record(DEFAULTS$4));\n\n/**\n * Memoize read methods.\n */\n\nmemoize(Text.prototype, ['getActiveMarks', 'getMarks', 'getMarksAsArray']);\n\n/**\n * A pseudo-model that is used for its static methods only.\n *\n * @type {Node}\n */\n\nvar Node = function () {\n function Node() {\n classCallCheck(this, Node);\n }\n\n createClass(Node, null, [{\n key: 'create',\n\n /**\n * Create a new `Node` with `attrs`.\n *\n * @param {Object|Node} attrs\n * @return {Node}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Node.isNode(attrs)) {\n return attrs;\n }\n\n if (isPlainObject(attrs)) {\n var object = attrs.object;\n\n\n if (!object && attrs.kind) {\n warning(false, 'As of slate@0.32.0, the `kind` property of Slate objects has been renamed to `object`.');\n\n object = attrs.kind;\n }\n\n switch (object) {\n case 'block':\n return Block.create(attrs);\n case 'document':\n return Document.create(attrs);\n case 'inline':\n return Inline.create(attrs);\n case 'text':\n return Text.create(attrs);\n\n default:\n {\n throw new Error('`Node.create` requires a `object` string.');\n }\n }\n }\n\n throw new Error('`Node.create` only accepts objects or nodes but you passed it: ' + attrs);\n }\n\n /**\n * Create a list of `Nodes` from an array.\n *\n * @param {Array} elements\n * @return {List}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (List.isList(elements) || Array.isArray(elements)) {\n var list = List(elements.map(Node.create));\n return list;\n }\n\n throw new Error('`Node.createList` only accepts lists or arrays, but you passed it: ' + elements);\n }\n\n /**\n * Create a dictionary of settable node properties from `attrs`.\n *\n * @param {Object|String|Node} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Block.isBlock(attrs) || Inline.isInline(attrs)) {\n return {\n data: attrs.data,\n type: attrs.type\n };\n }\n\n if (typeof attrs == 'string') {\n return { type: attrs };\n }\n\n if (isPlainObject(attrs)) {\n var props = {};\n if ('type' in attrs) props.type = attrs.type;\n if ('data' in attrs) props.data = Data.create(attrs.data);\n return props;\n }\n\n throw new Error('`Node.createProperties` only accepts objects, strings, blocks or inlines, but you passed it: ' + attrs);\n }\n\n /**\n * Create a `Node` from a JSON `value`.\n *\n * @param {Object} value\n * @return {Node}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(value) {\n var object = value.object;\n\n\n if (!object && value.kind) {\n warning(false, 'As of slate@0.32.0, the `kind` property of Slate objects has been renamed to `object`.');\n\n object = value.kind;\n }\n\n switch (object) {\n case 'block':\n return Block.fromJSON(value);\n case 'document':\n return Document.fromJSON(value);\n case 'inline':\n return Inline.fromJSON(value);\n case 'text':\n return Text.fromJSON(value);\n\n default:\n {\n throw new Error('`Node.fromJSON` requires an `object` of either \\'block\\', \\'document\\', \\'inline\\' or \\'text\\', but you passed: ' + value);\n }\n }\n }\n\n /**\n * Check if `any` is a `Node`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isNode',\n value: function isNode(any) {\n return Block.isBlock(any) || Document.isDocument(any) || Inline.isInline(any) || Text.isText(any);\n }\n\n /**\n * Check if `any` is a list of nodes.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isNodeList',\n value: function isNodeList(any) {\n return List.isList(any) && any.every(function (item) {\n return Node.isNode(item);\n });\n }\n }]);\n return Node;\n}();\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$5 = {\n data: undefined,\n key: undefined,\n nodes: undefined,\n type: undefined\n\n /**\n * Block.\n *\n * @type {Block}\n */\n\n};\nvar Block = function (_Record) {\n inherits(Block, _Record);\n\n function Block() {\n classCallCheck(this, Block);\n return possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).apply(this, arguments));\n }\n\n createClass(Block, [{\n key: 'toJSON',\n\n\n /**\n * Return a JSON representation of the block.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var object = {\n object: this.object,\n type: this.type,\n data: this.data.toJSON(),\n nodes: this.nodes.toArray().map(function (n) {\n return n.toJSON(options);\n })\n };\n\n if (options.preserveKeys) {\n object.key = this.key;\n }\n\n return object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Block` from `attrs`.\n *\n * @param {Object|String|Block} attrs\n * @return {Block}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Block.isBlock(attrs)) {\n return attrs;\n }\n\n if (typeof attrs == 'string') {\n attrs = { type: attrs };\n }\n\n if (isPlainObject(attrs)) {\n return Block.fromJSON(attrs);\n }\n\n throw new Error('`Block.create` only accepts objects, strings or blocks, but you passed it: ' + attrs);\n }\n\n /**\n * Create a list of `Blocks` from `attrs`.\n *\n * @param {Array|List} attrs\n * @return {List}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (List.isList(attrs) || Array.isArray(attrs)) {\n var list = new List(attrs.map(Block.create));\n return list;\n }\n\n throw new Error('`Block.createList` only accepts arrays or lists, but you passed it: ' + attrs);\n }\n\n /**\n * Create a `Block` from a JSON `object`.\n *\n * @param {Object|Block} object\n * @return {Block}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Block.isBlock(object)) {\n return object;\n }\n\n var _object$data = object.data,\n data = _object$data === undefined ? {} : _object$data,\n _object$key = object.key,\n key = _object$key === undefined ? KeyUtils.create() : _object$key,\n _object$nodes = object.nodes,\n nodes = _object$nodes === undefined ? [] : _object$nodes,\n type = object.type;\n\n\n if (typeof type != 'string') {\n throw new Error('`Block.fromJSON` requires a `type` string.');\n }\n\n var block = new Block({\n key: key,\n type: type,\n data: Map$1(data),\n nodes: Node.createList(nodes)\n });\n\n return block;\n }\n\n /**\n * Check if `any` is a block list.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isBlockList',\n value: function isBlockList(any) {\n return List.isList(any) && any.every(function (item) {\n return Block.isBlock(item);\n });\n }\n }]);\n return Block;\n}(Record(DEFAULTS$5));\n\n/**\n * Changes.\n *\n * @type {Object}\n */\n\nvar Changes = {};\n\n/**\n * Mix in the changes that pass through to their at-range equivalents because\n * they don't have any effect on the selection.\n */\n\nvar PROXY_TRANSFORMS = ['deleteBackward', 'deleteCharBackward', 'deleteLineBackward', 'deleteWordBackward', 'deleteForward', 'deleteCharForward', 'deleteWordForward', 'deleteLineForward', 'setBlocks', 'setInlines', 'splitInline', 'unwrapBlock', 'unwrapInline', 'wrapBlock', 'wrapInline'];\n\nPROXY_TRANSFORMS.forEach(function (method) {\n Changes[method] = function (change) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var value = change.value;\n var selection = value.selection;\n\n var methodAtRange = method + 'AtRange';\n change[methodAtRange].apply(change, [selection].concat(args));\n\n if (method.match(/Backward$/)) {\n change.moveToStart();\n } else if (method.match(/Forward$/)) {\n change.moveToEnd();\n }\n };\n});\n\n/**\n * Add a `mark` to the characters in the current selection.\n *\n * @param {Change} change\n * @param {Mark} mark\n */\n\nChanges.addMark = function (change, mark) {\n mark = Mark.create(mark);\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n\n\n if (selection.isExpanded) {\n change.addMarkAtRange(selection, mark);\n } else if (selection.marks) {\n var marks = selection.marks.add(mark);\n var sel = selection.set('marks', marks);\n change.select(sel);\n } else {\n var _marks = document.getActiveMarksAtRange(selection).add(mark);\n var _sel = selection.set('marks', _marks);\n change.select(_sel);\n }\n};\n\n/**\n * Add a list of `marks` to the characters in the current selection.\n *\n * @param {Change} change\n * @param {Mark} mark\n */\n\nChanges.addMarks = function (change, marks) {\n marks.forEach(function (mark) {\n return change.addMark(mark);\n });\n};\n\n/**\n * Delete at the current selection.\n *\n * @param {Change} change\n */\n\nChanges.delete = function (change) {\n var value = change.value;\n var selection = value.selection;\n\n change.deleteAtRange(selection);\n\n // Ensure that the selection is collapsed to the start, because in certain\n // cases when deleting across inline nodes, when splitting the inline node the\n // end point of the selection will end up after the split point.\n change.moveToStart();\n};\n\n/**\n * Insert a `block` at the current selection.\n *\n * @param {Change} change\n * @param {String|Object|Block} block\n */\n\nChanges.insertBlock = function (change, block) {\n block = Block.create(block);\n var value = change.value;\n var selection = value.selection;\n\n change.insertBlockAtRange(selection, block);\n\n // If the node was successfully inserted, update the selection.\n var node = change.value.document.getNode(block.key);\n if (node) change.moveToEndOfNode(node);\n};\n\n/**\n * Insert a `fragment` at the current selection.\n *\n * @param {Change} change\n * @param {Document} fragment\n */\n\nChanges.insertFragment = function (change, fragment) {\n if (!fragment.nodes.size) return;\n\n var value = change.value;\n var _value = value,\n document = _value.document,\n selection = _value.selection;\n var start = selection.start,\n end = selection.end;\n var _value2 = value,\n startText = _value2.startText,\n endText = _value2.endText,\n startInline = _value2.startInline;\n\n var lastText = fragment.getLastText();\n var lastInline = fragment.getClosestInline(lastText.key);\n var firstChild = fragment.nodes.first();\n var lastChild = fragment.nodes.last();\n var keys = document.getTexts().map(function (text) {\n return text.key;\n });\n var isAppending = !startInline || start.isAtStartOfNode(startText) || end.isAtStartOfNode(startText) || start.isAtEndOfNode(endText) || end.isAtEndOfNode(endText);\n\n var isInserting = firstChild.hasBlockChildren() || lastChild.hasBlockChildren();\n\n change.insertFragmentAtRange(selection, fragment);\n value = change.value;\n document = value.document;\n\n var newTexts = document.getTexts().filter(function (n) {\n return !keys.includes(n.key);\n });\n var newText = isAppending ? newTexts.last() : newTexts.takeLast(2).first();\n\n if (newText && (lastInline || isInserting)) {\n change.select(selection.moveToEndOfNode(newText));\n } else if (newText) {\n change.select(selection.moveToStartOfNode(newText).moveForward(lastText.text.length));\n } else {\n change.select(selection.moveToStart().moveForward(lastText.text.length));\n }\n};\n\n/**\n * Insert an `inline` at the current selection.\n *\n * @param {Change} change\n * @param {String|Object|Inline} inline\n */\n\nChanges.insertInline = function (change, inline) {\n inline = Inline.create(inline);\n var value = change.value;\n var selection = value.selection;\n\n change.insertInlineAtRange(selection, inline);\n\n // If the node was successfully inserted, update the selection.\n var node = change.value.document.getNode(inline.key);\n if (node) change.moveToEndOfNode(node);\n};\n\n/**\n * Insert a string of `text` with optional `marks` at the current selection.\n *\n * @param {Change} change\n * @param {String} text\n * @param {Set} marks (optional)\n */\n\nChanges.insertText = function (change, text, marks) {\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n\n marks = marks || selection.marks || document.getInsertMarksAtRange(selection);\n change.insertTextAtRange(selection, text, marks);\n\n // If the text was successfully inserted, and the selection had marks on it,\n // unset the selection's marks.\n if (selection.marks && document != change.value.document) {\n change.select({ marks: null });\n }\n};\n\n/**\n * Remove a `mark` from the characters in the current selection.\n *\n * @param {Change} change\n * @param {Mark} mark\n */\n\nChanges.removeMark = function (change, mark) {\n mark = Mark.create(mark);\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n\n\n if (selection.isExpanded) {\n change.removeMarkAtRange(selection, mark);\n } else if (selection.marks) {\n var marks = selection.marks.remove(mark);\n var sel = selection.set('marks', marks);\n change.select(sel);\n } else {\n var _marks2 = document.getActiveMarksAtRange(selection).remove(mark);\n var _sel2 = selection.set('marks', _marks2);\n change.select(_sel2);\n }\n};\n\n/**\n * Replace an `oldMark` with a `newMark` in the characters in the current selection.\n *\n * @param {Change} change\n * @param {Mark} oldMark\n * @param {Mark} newMark\n */\n\nChanges.replaceMark = function (change, oldMark, newMark) {\n change.removeMark(oldMark);\n change.addMark(newMark);\n};\n\n/**\n * Split the block node at the current selection, to optional `depth`.\n *\n * @param {Change} change\n * @param {Number} depth (optional)\n */\n\nChanges.splitBlock = function (change) {\n var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var value = change.value;\n var selection = value.selection,\n document = value.document;\n\n var marks = selection.marks || document.getInsertMarksAtRange(selection);\n change.splitBlockAtRange(selection, depth).moveToEnd();\n\n if (marks && marks.size !== 0) {\n change.select({ marks: marks });\n }\n};\n\n/**\n * Add or remove a `mark` from the characters in the current selection,\n * depending on whether it's already there.\n *\n * @param {Change} change\n * @param {Mark} mark\n */\n\nChanges.toggleMark = function (change, mark) {\n mark = Mark.create(mark);\n var value = change.value;\n\n var exists = value.activeMarks.has(mark);\n\n if (exists) {\n change.removeMark(mark);\n } else {\n change.addMark(mark);\n }\n};\n\n/**\n * Wrap the current selection with prefix/suffix.\n *\n * @param {Change} change\n * @param {String} prefix\n * @param {String} suffix\n */\n\nChanges.wrapText = function (change, prefix) {\n var suffix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : prefix;\n var value = change.value;\n var selection = value.selection;\n\n change.wrapTextAtRange(selection, prefix, suffix);\n\n // If the selection was collapsed, it will have moved the start offset too.\n if (selection.isCollapsed) {\n change.moveStartBackward(prefix.length);\n }\n\n // Adding the suffix will have pushed the end of the selection further on, so\n // we need to move it back to account for this.\n change.moveEndBackward(suffix.length);\n\n // There's a chance that the selection points moved \"through\" each other,\n // resulting in a now-incorrect selection direction.\n if (selection.isForward != change.value.selection.isForward) {\n change.flip();\n }\n};\n\n/**\n * Surrogate pair start and end points.\n *\n * @type {Number}\n */\n\nvar SURROGATE_START = 0xd800;\nvar SURROGATE_END = 0xdfff;\n\n/**\n * A regex to match space characters.\n *\n * @type {RegExp}\n */\n\nvar SPACE = /\\s/;\n\n/**\n * A regex to match chameleon characters, that count as word characters as long\n * as they are inside of a word.\n *\n * @type {RegExp}\n */\n\nvar CHAMELEON = /['\\u2018\\u2019]/;\n\n/**\n * A regex that matches punctuation.\n *\n * @type {RegExp}\n */\n\nvar PUNCTUATION = /[\\u0021-\\u0023\\u0025-\\u002A\\u002C-\\u002F\\u003A\\u003B\\u003F\\u0040\\u005B-\\u005D\\u005F\\u007B\\u007D\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E3B\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/;\n\n/**\n * Is a character `code` in a surrogate character.\n *\n * @param {Number} code\n * @return {Boolean}\n */\n\nfunction isSurrogate(code) {\n return SURROGATE_START <= code && code <= SURROGATE_END;\n}\n\n/**\n * Is a character a word character? Needs the `remaining` characters too.\n *\n * @param {String} char\n * @param {String|Void} remaining\n * @return {Boolean}\n */\n\nfunction isWord(char, remaining) {\n if (SPACE.test(char)) return false;\n\n // If it's a chameleon character, recurse to see if the next one is or not.\n if (CHAMELEON.test(char)) {\n var next = remaining.charAt(0);\n var length = getCharLength(next);\n next = remaining.slice(0, length);\n var rest = remaining.slice(length);\n if (isWord(next, rest)) return true;\n }\n\n if (PUNCTUATION.test(char)) return false;\n return true;\n}\n\n/**\n * Get the length of a `character`.\n *\n * @param {String} char\n * @return {Number}\n */\n\nfunction getCharLength(char) {\n return isSurrogate(char.charCodeAt(0)) ? 2 : 1;\n}\n\n/**\n * Get the offset to the end of the first character in `text`.\n *\n * @param {String} text\n * @return {Number}\n */\n\nfunction getCharOffset(text) {\n var char = text.charAt(0);\n return getCharLength(char);\n}\n\n/**\n * Get the offset to the end of the character before an `offset` in `text`.\n *\n * @param {String} text\n * @param {Number} offset\n * @return {Number}\n */\n\nfunction getCharOffsetBackward(text, offset) {\n text = text.slice(0, offset);\n text = reverse(text);\n return getCharOffset(text);\n}\n\n/**\n * Get the offset to the end of the character after an `offset` in `text`.\n *\n * @param {String} text\n * @param {Number} offset\n * @return {Number}\n */\n\nfunction getCharOffsetForward(text, offset) {\n text = text.slice(offset);\n return getCharOffset(text);\n}\n\n/**\n * Get the offset to the end of the first word in `text`.\n *\n * @param {String} text\n * @return {Number}\n */\n\nfunction getWordOffset(text) {\n var length = 0;\n var i = 0;\n var started = false;\n var char = void 0;\n\n while (char = text.charAt(i)) {\n var l = getCharLength(char);\n char = text.slice(i, i + l);\n var rest = text.slice(i + l);\n\n if (isWord(char, rest)) {\n started = true;\n length += l;\n } else if (!started) {\n length += l;\n } else {\n break;\n }\n\n i += l;\n }\n\n return length;\n}\n\n/**\n * Get the offset to the end of the word before an `offset` in `text`.\n *\n * @param {String} text\n * @param {Number} offset\n * @return {Number}\n */\n\nfunction getWordOffsetBackward(text, offset) {\n text = text.slice(0, offset);\n text = reverse(text);\n var o = getWordOffset(text);\n return o;\n}\n\n/**\n * Get the offset to the end of the word after an `offset` in `text`.\n *\n * @param {String} text\n * @param {Number} offset\n * @return {Number}\n */\n\nfunction getWordOffsetForward(text, offset) {\n text = text.slice(offset);\n var o = getWordOffset(text);\n return o;\n}\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nvar TextUtils = {\n getCharLength: getCharLength,\n getCharOffset: getCharOffset,\n getCharOffsetBackward: getCharOffsetBackward,\n getCharOffsetForward: getCharOffsetForward,\n getWordOffset: getWordOffset,\n getWordOffsetBackward: getWordOffsetBackward,\n getWordOffsetForward: getWordOffsetForward,\n isSurrogate: isSurrogate,\n isWord: isWord\n};\n\n/**\n * Changes.\n *\n * @type {Object}\n */\n\nvar Changes$1 = {};\n\n/**\n * Add a new `mark` to the characters at `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Mixed} mark\n */\n\nChanges$1.addMarkAtRange = function (change, range, mark) {\n if (range.isCollapsed) return;\n\n var value = change.value;\n var document = value.document;\n var start = range.start,\n end = range.end;\n\n var texts = document.getTextsAtRange(range);\n\n change.withoutNormalizing(function () {\n texts.forEach(function (node) {\n var key = node.key;\n\n var index = 0;\n var length = node.text.length;\n\n if (key == start.key) index = start.offset;\n if (key == end.key) length = end.offset;\n if (key == start.key && key == end.key) length = end.offset - start.offset;\n\n change.addMarkByKey(key, index, length, mark);\n });\n });\n};\n\n/**\n * Add a list of `marks` to the characters at `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Array} mark\n */\n\nChanges$1.addMarksAtRange = function (change, range, marks) {\n marks.forEach(function (mark) {\n return change.addMarkAtRange(range, mark);\n });\n};\n\n/**\n * Delete everything in a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n */\n\nChanges$1.deleteAtRange = function (change, range) {\n // Snapshot the selection, which creates an extra undo save point, so that\n // when you undo a delete, the expanded selection will be retained.\n change.snapshotSelection();\n\n var value = change.value;\n var start = range.start,\n end = range.end;\n\n var startKey = start.key;\n var startOffset = start.offset;\n var endKey = end.key;\n var endOffset = end.offset;\n var document = value.document,\n schema = value.schema;\n\n var isStartVoid = document.hasVoidParent(startKey, schema);\n var isEndVoid = document.hasVoidParent(endKey, schema);\n var startBlock = document.getClosestBlock(startKey, schema);\n var endBlock = document.getClosestBlock(endKey, schema);\n\n // Check if we have a \"hanging\" selection case where the even though the\n // selection extends into the start of the end node, we actually want to\n // ignore that for UX reasons.\n var isHanging = startOffset == 0 && endOffset == 0 && isStartVoid == false && startKey == startBlock.getFirstText().key && endKey == endBlock.getFirstText().key;\n\n // If it's a hanging selection, nudge it back to end in the previous text.\n if (isHanging && isEndVoid) {\n var prevText = document.getPreviousText(endKey);\n endKey = prevText.key;\n endOffset = prevText.text.length;\n isEndVoid = document.hasVoidParent(endKey, schema);\n }\n\n change.withoutNormalizing(function () {\n // If the start node is inside a void node, remove the void node and update\n // the starting point to be right after it, continuously until the start point\n // is not a void, or until the entire range is handled.\n while (isStartVoid) {\n var startVoid = document.getClosestVoid(startKey, schema);\n var nextText = document.getNextText(startKey);\n change.removeNodeByKey(startVoid.key);\n\n // If the start and end keys are the same, we're done.\n if (startKey == endKey) return;\n\n // If there is no next text node, we're done.\n if (!nextText) return;\n\n // Continue...\n document = change.value.document;\n startKey = nextText.key;\n startOffset = 0;\n isStartVoid = document.hasVoidParent(startKey, schema);\n }\n\n // If the end node is inside a void node, do the same thing but backwards. But\n // we don't need any aborting checks because if we've gotten this far there\n // must be a non-void node that will exit the loop.\n while (isEndVoid) {\n var endVoid = document.getClosestVoid(endKey, schema);\n var _prevText = document.getPreviousText(endKey);\n change.removeNodeByKey(endVoid.key);\n\n // Continue...\n document = change.value.document;\n endKey = _prevText.key;\n endOffset = _prevText.text.length;\n isEndVoid = document.hasVoidParent(endKey, schema);\n }\n\n // If the start and end key are the same, and it was a hanging selection, we\n // can just remove the entire block.\n if (startKey == endKey && isHanging) {\n change.removeNodeByKey(startBlock.key);\n return;\n } else if (startKey == endKey) {\n // Otherwise, if it wasn't hanging, we're inside a single text node, so we can\n // simply remove the text in the range.\n var index = startOffset;\n var length = endOffset - startOffset;\n change.removeTextByKey(startKey, index, length);\n return;\n } else {\n // Otherwise, we need to recursively remove text and nodes inside the start\n // block after the start offset and inside the end block before the end\n // offset. Then remove any blocks that are in between the start and end\n // blocks. Then finally merge the start and end nodes.\n startBlock = document.getClosestBlock(startKey);\n endBlock = document.getClosestBlock(endKey);\n var startText = document.getNode(startKey);\n var endText = document.getNode(endKey);\n var startLength = startText.text.length - startOffset;\n var endLength = endOffset;\n\n var ancestor = document.getCommonAncestor(startKey, endKey);\n var startChild = ancestor.getFurthestAncestor(startKey);\n var endChild = ancestor.getFurthestAncestor(endKey);\n\n var startParent = document.getParent(startBlock.key);\n var startParentIndex = startParent.nodes.indexOf(startBlock);\n var endParentIndex = startParent.nodes.indexOf(endBlock);\n\n var child = void 0;\n\n // Iterate through all of the nodes in the tree after the start text node\n // but inside the end child, and remove them.\n child = startText;\n\n while (child.key != startChild.key) {\n var parent = document.getParent(child.key);\n var _index = parent.nodes.indexOf(child);\n var afters = parent.nodes.slice(_index + 1);\n\n afters.reverse().forEach(function (node) {\n change.removeNodeByKey(node.key);\n });\n\n child = parent;\n }\n\n // Remove all of the middle children.\n var startChildIndex = ancestor.nodes.indexOf(startChild);\n var endChildIndex = ancestor.nodes.indexOf(endChild);\n var middles = ancestor.nodes.slice(startChildIndex + 1, endChildIndex);\n\n middles.reverse().forEach(function (node) {\n change.removeNodeByKey(node.key);\n });\n\n // Remove the nodes before the end text node in the tree.\n child = endText;\n\n while (child.key != endChild.key) {\n var _parent = document.getParent(child.key);\n var _index2 = _parent.nodes.indexOf(child);\n var befores = _parent.nodes.slice(0, _index2);\n\n befores.reverse().forEach(function (node) {\n change.removeNodeByKey(node.key);\n });\n\n child = _parent;\n }\n\n // Remove any overlapping text content from the leaf text nodes.\n if (startLength != 0) {\n change.removeTextByKey(startKey, startOffset, startLength);\n }\n\n if (endLength != 0) {\n change.removeTextByKey(endKey, 0, endOffset);\n }\n\n // If the start and end blocks aren't the same, move and merge the end block\n // into the start block.\n if (startBlock.key != endBlock.key) {\n document = change.value.document;\n var lonely = document.getFurthestOnlyChildAncestor(endBlock.key);\n\n // Move the end block to be right after the start block.\n if (endParentIndex != startParentIndex + 1) {\n change.moveNodeByKey(endBlock.key, startParent.key, startParentIndex + 1);\n }\n\n // If the selection is hanging, just remove the start block, otherwise\n // merge the end block into it.\n if (isHanging) {\n change.removeNodeByKey(startBlock.key);\n } else {\n change.mergeNodeByKey(endBlock.key);\n }\n\n // If nested empty blocks are left over above the end block, remove them.\n if (lonely) {\n change.removeNodeByKey(lonely.key);\n }\n }\n }\n });\n};\n\n/**\n * Delete backward until the character boundary at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n */\n\nChanges$1.deleteCharBackwardAtRange = function (change, range) {\n var value = change.value;\n var document = value.document;\n var start = range.start;\n\n var startBlock = document.getClosestBlock(start.key);\n var offset = startBlock.getOffset(start.key);\n var o = offset + start.offset;\n var text = startBlock.text;\n\n var n = TextUtils.getCharOffsetBackward(text, o);\n change.deleteBackwardAtRange(range, n);\n};\n\n/**\n * Delete backward until the line boundary at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n */\n\nChanges$1.deleteLineBackwardAtRange = function (change, range) {\n var value = change.value;\n var document = value.document;\n var start = range.start;\n\n var startBlock = document.getClosestBlock(start.key);\n var offset = startBlock.getOffset(start.key);\n var o = offset + start.offset;\n change.deleteBackwardAtRange(range, o);\n};\n\n/**\n * Delete backward until the word boundary at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n */\n\nChanges$1.deleteWordBackwardAtRange = function (change, range) {\n var value = change.value;\n var document = value.document;\n var start = range.start;\n\n var startBlock = document.getClosestBlock(start.key);\n var offset = startBlock.getOffset(start.key);\n var o = offset + start.offset;\n var text = startBlock.text;\n\n var n = o === 0 ? 1 : TextUtils.getWordOffsetBackward(text, o);\n change.deleteBackwardAtRange(range, n);\n};\n\n/**\n * Delete backward `n` characters at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Number} n (optional)\n */\n\nChanges$1.deleteBackwardAtRange = function (change, range) {\n var n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n if (n === 0) return;\n var value = change.value;\n var document = value.document,\n schema = value.schema;\n var _range = range,\n start = _range.start,\n focus = _range.focus;\n\n // If the range is expanded, perform a regular delete instead.\n\n if (range.isExpanded) {\n change.deleteAtRange(range);\n return;\n }\n\n var voidParent = document.getClosestVoid(start.key, schema);\n\n // If there is a void parent, delete it.\n if (voidParent) {\n change.removeNodeByKey(voidParent.key);\n return;\n }\n\n var block = document.getClosestBlock(start.key);\n\n // If the closest is not void, but empty, remove it\n if (block && !schema.isVoid(block) && block.text === '' && document.nodes.size !== 1) {\n change.removeNodeByKey(block.key);\n return;\n }\n\n // If the range is at the start of the document, abort.\n if (start.isAtStartOfNode(document)) {\n return;\n }\n\n // If the range is at the start of the text node, we need to figure out what\n // is behind it to know how to delete...\n var text = document.getDescendant(start.key);\n\n if (start.isAtStartOfNode(text)) {\n var prev = document.getPreviousText(text.key);\n var prevBlock = document.getClosestBlock(prev.key);\n var prevVoid = document.getClosestVoid(prev.key, schema);\n\n // If the previous text node has a void parent, remove it.\n if (prevVoid) {\n change.removeNodeByKey(prevVoid.key);\n return;\n }\n\n // If we're deleting by one character and the previous text node is not\n // inside the current block, we need to merge the two blocks together.\n if (n == 1 && prevBlock != block) {\n range = range.moveAnchorTo(prev.key, prev.text.length);\n change.deleteAtRange(range);\n return;\n }\n }\n\n // If the focus offset is farther than the number of characters to delete,\n // just remove the characters backwards inside the current node.\n if (n < focus.offset) {\n range = range.moveFocusBackward(n);\n change.deleteAtRange(range);\n return;\n }\n\n // Otherwise, we need to see how many nodes backwards to go.\n var node = text;\n var offset = 0;\n var traversed = focus.offset;\n\n while (n > traversed) {\n node = document.getPreviousText(node.key);\n var next = traversed + node.text.length;\n\n if (n <= next) {\n offset = next - n;\n break;\n } else {\n traversed = next;\n }\n }\n\n range = range.moveAnchorTo(node.key, offset);\n change.deleteAtRange(range);\n};\n\n/**\n * Delete forward until the character boundary at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n */\n\nChanges$1.deleteCharForwardAtRange = function (change, range) {\n var value = change.value;\n var document = value.document;\n var start = range.start;\n\n var startBlock = document.getClosestBlock(start.key);\n var offset = startBlock.getOffset(start.key);\n var o = offset + start.offset;\n var text = startBlock.text;\n\n var n = TextUtils.getCharOffsetForward(text, o);\n change.deleteForwardAtRange(range, n);\n};\n\n/**\n * Delete forward until the line boundary at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n */\n\nChanges$1.deleteLineForwardAtRange = function (change, range) {\n var value = change.value;\n var document = value.document;\n var start = range.start;\n\n var startBlock = document.getClosestBlock(start.key);\n var offset = startBlock.getOffset(start.key);\n var o = offset + start.offset;\n change.deleteForwardAtRange(range, startBlock.text.length - o);\n};\n\n/**\n * Delete forward until the word boundary at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n */\n\nChanges$1.deleteWordForwardAtRange = function (change, range) {\n var value = change.value;\n var document = value.document;\n var start = range.start;\n\n var startBlock = document.getClosestBlock(start.key);\n var offset = startBlock.getOffset(start.key);\n var o = offset + start.offset;\n var text = startBlock.text;\n\n var n = TextUtils.getWordOffsetForward(text, o);\n change.deleteForwardAtRange(range, n);\n};\n\n/**\n * Delete forward `n` characters at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Number} n (optional)\n */\n\nChanges$1.deleteForwardAtRange = function (change, range) {\n var n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n if (n === 0) return;\n var value = change.value;\n var document = value.document,\n schema = value.schema;\n var _range2 = range,\n start = _range2.start,\n focus = _range2.focus;\n\n // If the range is expanded, perform a regular delete instead.\n\n if (range.isExpanded) {\n change.deleteAtRange(range);\n return;\n }\n\n var voidParent = document.getClosestVoid(start.key, schema);\n\n // If the node has a void parent, delete it.\n if (voidParent) {\n change.removeNodeByKey(voidParent.key);\n return;\n }\n\n var block = document.getClosestBlock(start.key);\n\n // If the closest is not void, but empty, remove it\n if (block && !schema.isVoid(block) && block.text === '' && document.nodes.size !== 1) {\n var nextBlock = document.getNextBlock(block.key);\n change.removeNodeByKey(block.key);\n\n if (nextBlock && nextBlock.key) {\n change.moveToStartOfNode(nextBlock);\n }\n\n return;\n }\n\n // If the range is at the start of the document, abort.\n if (start.isAtEndOfNode(document)) {\n return;\n }\n\n // If the range is at the start of the text node, we need to figure out what\n // is behind it to know how to delete...\n var text = document.getDescendant(start.key);\n\n if (start.isAtEndOfNode(text)) {\n var next = document.getNextText(text.key);\n var _nextBlock = document.getClosestBlock(next.key);\n var nextVoid = document.getClosestVoid(next.key, schema);\n\n // If the next text node has a void parent, remove it.\n if (nextVoid) {\n change.removeNodeByKey(nextVoid.key);\n return;\n }\n\n // If we're deleting by one character and the previous text node is not\n // inside the current block, we need to merge the two blocks together.\n if (n == 1 && _nextBlock != block) {\n range = range.moveFocusTo(next.key, 0);\n change.deleteAtRange(range);\n return;\n }\n }\n\n // If the remaining characters to the end of the node is greater than or equal\n // to the number of characters to delete, just remove the characters forwards\n // inside the current node.\n if (n <= text.text.length - focus.offset) {\n range = range.moveFocusForward(n);\n change.deleteAtRange(range);\n return;\n }\n\n // Otherwise, we need to see how many nodes forwards to go.\n var node = text;\n var offset = focus.offset;\n var traversed = text.text.length - focus.offset;\n\n while (n > traversed) {\n node = document.getNextText(node.key);\n var _next = traversed + node.text.length;\n\n if (n <= _next) {\n offset = n - traversed;\n break;\n } else {\n traversed = _next;\n }\n }\n\n range = range.moveFocusTo(node.key, offset);\n change.deleteAtRange(range);\n};\n\n/**\n * Insert a `block` node at `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Block|String|Object} block\n */\n\nChanges$1.insertBlockAtRange = function (change, range, block) {\n block = Block.create(block);\n\n if (range.isExpanded) {\n change.deleteAtRange(range);\n range = range.moveToStart();\n }\n\n var value = change.value;\n var document = value.document,\n schema = value.schema;\n var _range3 = range,\n start = _range3.start;\n\n var startKey = start.key;\n var startOffset = start.offset;\n var startBlock = document.getClosestBlock(startKey);\n var startInline = document.getClosestInline(startKey);\n var parent = document.getParent(startBlock.key);\n var index = parent.nodes.indexOf(startBlock);\n\n if (schema.isVoid(startBlock)) {\n var extra = start.isAtEndOfNode(startBlock) ? 1 : 0;\n change.insertNodeByKey(parent.key, index + extra, block);\n } else if (!startInline && startBlock.text === '') {\n change.insertNodeByKey(parent.key, index + 1, block);\n } else if (start.isAtStartOfNode(startBlock)) {\n change.insertNodeByKey(parent.key, index, block);\n } else if (start.isAtEndOfNode(startBlock)) {\n change.insertNodeByKey(parent.key, index + 1, block);\n } else {\n if (startInline && schema.isVoid(startInline)) {\n var atEnd = start.isAtEndOfNode(startInline);\n var siblingText = atEnd ? document.getNextText(startKey) : document.getPreviousText(startKey);\n\n var splitRange = atEnd ? range.moveToStartOfNode(siblingText) : range.moveToEndOfNode(siblingText);\n\n startKey = splitRange.start.key;\n startOffset = splitRange.start.offset;\n }\n\n change.withoutNormalizing(function () {\n change.splitDescendantsByKey(startBlock.key, startKey, startOffset);\n change.insertNodeByKey(parent.key, index + 1, block);\n });\n }\n};\n\n/**\n * Insert a `fragment` at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Document} fragment\n */\n\nChanges$1.insertFragmentAtRange = function (change, range, fragment) {\n change.withoutNormalizing(function () {\n // If the range is expanded, delete it first.\n if (range.isExpanded) {\n change.deleteAtRange(range);\n\n if (change.value.document.getDescendant(range.start.key)) {\n range = range.moveToStart();\n } else {\n range = range.moveTo(range.end.key, 0).normalize(change.value.document);\n }\n }\n\n // If the fragment is empty, there's nothing to do after deleting.\n if (!fragment.nodes.size) return;\n\n // Regenerate the keys for all of the fragments nodes, so that they're\n // guaranteed not to collide with the existing keys in the document. Otherwise\n // they will be rengerated automatically and we won't have an easy way to\n // reference them.\n fragment = fragment.mapDescendants(function (child) {\n return child.regenerateKey();\n });\n\n // Calculate a few things...\n var _range4 = range,\n start = _range4.start;\n var value = change.value;\n var schema = value.schema;\n var document = value.document;\n\n var startText = document.getDescendant(start.key);\n var startBlock = document.getClosestBlock(startText.key);\n var startChild = startBlock.getFurthestAncestor(startText.key);\n var isAtStart = start.isAtStartOfNode(startBlock);\n var parent = document.getParent(startBlock.key);\n var index = parent.nodes.indexOf(startBlock);\n var blocks = fragment.getBlocks();\n var firstChild = fragment.nodes.first();\n var lastChild = fragment.nodes.last();\n var firstBlock = blocks.first();\n var lastBlock = blocks.last();\n\n // If the fragment only contains a void block, use `insertBlock` instead.\n if (firstBlock === lastBlock && schema.isVoid(firstBlock)) {\n change.insertBlockAtRange(range, firstBlock);\n return;\n }\n\n // If the fragment starts or ends with single nested block, (e.g., table),\n // do not merge this fragment with existing blocks.\n if (firstChild.hasBlockChildren() || lastChild.hasBlockChildren()) {\n fragment.nodes.reverse().forEach(function (node) {\n change.insertBlockAtRange(range, node);\n });\n return;\n }\n\n // If the first and last block aren't the same, we need to insert all of the\n // nodes after the fragment's first block at the index.\n if (firstBlock != lastBlock) {\n var lonelyParent = fragment.getFurthest(firstBlock.key, function (p) {\n return p.nodes.size == 1;\n });\n var lonelyChild = lonelyParent || firstBlock;\n var startIndex = parent.nodes.indexOf(startBlock);\n fragment = fragment.removeNode(lonelyChild.key);\n\n fragment.nodes.forEach(function (node, i) {\n var newIndex = startIndex + i + 1;\n change.insertNodeByKey(parent.key, newIndex, node);\n });\n }\n\n // Check if we need to split the node.\n if (start.offset != 0) {\n change.splitDescendantsByKey(startChild.key, start.key, start.offset);\n }\n\n // Update our variables with the new value.\n document = change.value.document;\n startText = document.getDescendant(start.key);\n startBlock = document.getClosestBlock(start.key);\n startChild = startBlock.getFurthestAncestor(startText.key);\n\n // If the first and last block aren't the same, we need to move any of the\n // starting block's children after the split into the last block of the\n // fragment, which has already been inserted.\n if (firstBlock != lastBlock) {\n var nextChild = isAtStart ? startChild : startBlock.getNextSibling(startChild.key);\n var nextNodes = nextChild ? startBlock.nodes.skipUntil(function (n) {\n return n.key == nextChild.key;\n }) : List();\n var lastIndex = lastBlock.nodes.size;\n\n nextNodes.forEach(function (node, i) {\n var newIndex = lastIndex + i;\n change.moveNodeByKey(node.key, lastBlock.key, newIndex);\n });\n }\n\n // If the starting block is empty, we replace it entirely with the first block\n // of the fragment, since this leads to a more expected behavior for the user.\n if (!schema.isVoid(startBlock) && startBlock.text === '') {\n change.removeNodeByKey(startBlock.key);\n change.insertNodeByKey(parent.key, index, firstBlock);\n } else {\n // Otherwise, we maintain the starting block, and insert all of the first\n // block's inline nodes into it at the split point.\n var inlineChild = startBlock.getFurthestAncestor(startText.key);\n var inlineIndex = startBlock.nodes.indexOf(inlineChild);\n\n firstBlock.nodes.forEach(function (inline, i) {\n var o = start.offset == 0 ? 0 : 1;\n var newIndex = inlineIndex + i + o;\n change.insertNodeByKey(startBlock.key, newIndex, inline);\n });\n }\n });\n};\n\n/**\n * Insert an `inline` node at `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Inline|String|Object} inline\n */\n\nChanges$1.insertInlineAtRange = function (change, range, inline) {\n inline = Inline.create(inline);\n\n change.withoutNormalizing(function () {\n if (range.isExpanded) {\n change.deleteAtRange(range);\n range = range.moveToStart();\n }\n\n var value = change.value;\n var document = value.document,\n schema = value.schema;\n var _range5 = range,\n start = _range5.start;\n\n var parent = document.getParent(start.key);\n var startText = document.assertDescendant(start.key);\n var index = parent.nodes.indexOf(startText);\n\n if (schema.isVoid(parent)) return;\n\n change.splitNodeByKey(start.key, start.offset);\n change.insertNodeByKey(parent.key, index + 1, inline);\n });\n};\n\n/**\n * Insert `text` at a `range`, with optional `marks`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {String} text\n * @param {Set} marks (optional)\n */\n\nChanges$1.insertTextAtRange = function (change, range, text, marks) {\n var value = change.value;\n var document = value.document,\n schema = value.schema;\n var start = range.start;\n\n var key = start.key;\n var offset = start.offset;\n var parent = document.getParent(start.key);\n\n if (schema.isVoid(parent)) {\n return;\n }\n\n change.withoutNormalizing(function () {\n if (range.isExpanded) {\n change.deleteAtRange(range);\n\n // Update range start after delete\n if (change.value.selection.start.key !== key) {\n key = change.value.selection.start.key;\n offset = change.value.selection.start.offset;\n }\n }\n\n change.insertTextByKey(key, offset, text, marks);\n });\n};\n\n/**\n * Remove an existing `mark` to the characters at `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Mark|String} mark (optional)\n */\n\nChanges$1.removeMarkAtRange = function (change, range, mark) {\n if (range.isCollapsed) return;\n\n var value = change.value;\n var document = value.document;\n\n var texts = document.getTextsAtRange(range);\n var start = range.start,\n end = range.end;\n\n\n change.withoutNormalizing(function () {\n texts.forEach(function (node) {\n var key = node.key;\n\n var index = 0;\n var length = node.text.length;\n\n if (key == start.key) index = start.offset;\n if (key == end.key) length = end.offset;\n if (key == start.key && key == end.key) length = end.offset - start.offset;\n\n change.removeMarkByKey(key, index, length, mark);\n });\n });\n};\n\n/**\n * Set the `properties` of block nodes in a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Object|String} properties\n */\n\nChanges$1.setBlocksAtRange = function (change, range, properties) {\n var value = change.value;\n var document = value.document,\n schema = value.schema;\n\n var blocks = document.getBlocksAtRange(range);\n\n var start = range.start,\n end = range.end,\n isCollapsed = range.isCollapsed;\n\n var isStartVoid = document.hasVoidParent(start.key, schema);\n var startBlock = document.getClosestBlock(start.key);\n var endBlock = document.getClosestBlock(end.key);\n\n // Check if we have a \"hanging\" selection case where the even though the\n // selection extends into the start of the end node, we actually want to\n // ignore that for UX reasons.\n var isHanging = isCollapsed == false && start.offset == 0 && end.offset == 0 && isStartVoid == false && start.key == startBlock.getFirstText().key && end.key == endBlock.getFirstText().key;\n\n // If it's a hanging selection, ignore the last block.\n var sets = isHanging ? blocks.slice(0, -1) : blocks;\n\n change.withoutNormalizing(function () {\n sets.forEach(function (block) {\n change.setNodeByKey(block.key, properties);\n });\n });\n};\n\n/**\n * Set the `properties` of inline nodes in a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Object|String} properties\n */\n\nChanges$1.setInlinesAtRange = function (change, range, properties) {\n var value = change.value;\n var document = value.document;\n\n var inlines = document.getInlinesAtRange(range);\n\n change.withoutNormalizing(function () {\n inlines.forEach(function (inline) {\n change.setNodeByKey(inline.key, properties);\n });\n });\n};\n\n/**\n * Split the block nodes at a `range`, to optional `height`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Number} height (optional)\n */\n\nChanges$1.splitBlockAtRange = function (change, range) {\n var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var _range6 = range,\n start = _range6.start,\n end = _range6.end;\n var value = change.value;\n var _value = value,\n document = _value.document;\n\n var node = document.assertDescendant(start.key);\n var parent = document.getClosestBlock(node.key);\n var h = 0;\n\n while (parent && parent.object == 'block' && h < height) {\n node = parent;\n parent = document.getClosestBlock(parent.key);\n h++;\n }\n\n change.withoutNormalizing(function () {\n change.splitDescendantsByKey(node.key, start.key, start.offset);\n\n value = change.value;\n document = value.document;\n\n if (range.isExpanded) {\n if (range.isBackward) range = range.flip();\n var nextBlock = document.getNextBlock(node.key);\n range = range.moveAnchorToStartOfNode(nextBlock);\n range = range.setFocus(range.focus.setPath(null));\n\n if (start.key === end.key) {\n range = range.moveFocusTo(range.anchor.key, end.offset - start.offset);\n }\n\n range = document.resolveRange(range);\n change.deleteAtRange(range);\n }\n });\n};\n\n/**\n * Split the inline nodes at a `range`, to optional `height`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Number} height (optional)\n */\n\nChanges$1.splitInlineAtRange = function (change, range) {\n var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Infinity;\n\n if (range.isExpanded) {\n change.deleteAtRange(range);\n range = range.moveToStart();\n }\n\n var _range7 = range,\n start = _range7.start;\n var value = change.value;\n var document = value.document;\n\n var node = document.assertDescendant(start.key);\n var parent = document.getClosestInline(node.key);\n var h = 0;\n\n while (parent && parent.object == 'inline' && h < height) {\n node = parent;\n parent = document.getClosestInline(parent.key);\n h++;\n }\n\n change.splitDescendantsByKey(node.key, start.key, start.offset);\n};\n\n/**\n * Add or remove a `mark` from the characters at `range`, depending on whether\n * it's already there.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Mixed} mark\n */\n\nChanges$1.toggleMarkAtRange = function (change, range, mark) {\n if (range.isCollapsed) return;\n\n mark = Mark.create(mark);\n\n var value = change.value;\n var document = value.document;\n\n var marks = document.getActiveMarksAtRange(range);\n var exists = marks.some(function (m) {\n return m.equals(mark);\n });\n\n if (exists) {\n change.removeMarkAtRange(range, mark);\n } else {\n change.addMarkAtRange(range, mark);\n }\n};\n\n/**\n * Unwrap all of the block nodes in a `range` from a block with `properties`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {String|Object} properties\n */\n\nChanges$1.unwrapBlockAtRange = function (change, range, properties) {\n properties = Node.createProperties(properties);\n\n var value = change.value;\n var document = value.document;\n\n var blocks = document.getBlocksAtRange(range);\n var wrappers = blocks.map(function (block) {\n return document.getClosest(block.key, function (parent) {\n if (parent.object != 'block') return false;\n if (properties.type != null && parent.type != properties.type) return false;\n if (properties.data != null && !parent.data.isSuperset(properties.data)) return false;\n return true;\n });\n }).filter(function (exists) {\n return exists;\n }).toOrderedSet().toList();\n\n change.withoutNormalizing(function () {\n wrappers.forEach(function (block) {\n var first = block.nodes.first();\n var last = block.nodes.last();\n var parent = document.getParent(block.key);\n var index = parent.nodes.indexOf(block);\n\n var children = block.nodes.filter(function (child) {\n return blocks.some(function (b) {\n return child == b || child.hasDescendant(b.key);\n });\n });\n\n var firstMatch = children.first();\n var lastMatch = children.last();\n\n if (first == firstMatch && last == lastMatch) {\n block.nodes.forEach(function (child, i) {\n change.moveNodeByKey(child.key, parent.key, index + i);\n });\n\n change.removeNodeByKey(block.key);\n } else if (last == lastMatch) {\n block.nodes.skipUntil(function (n) {\n return n == firstMatch;\n }).forEach(function (child, i) {\n change.moveNodeByKey(child.key, parent.key, index + 1 + i);\n });\n } else if (first == firstMatch) {\n block.nodes.takeUntil(function (n) {\n return n == lastMatch;\n }).push(lastMatch).forEach(function (child, i) {\n change.moveNodeByKey(child.key, parent.key, index + i);\n });\n } else {\n var firstText = firstMatch.getFirstText();\n\n change.splitDescendantsByKey(block.key, firstText.key, 0);\n\n document = change.value.document;\n\n children.forEach(function (child, i) {\n if (i == 0) {\n var extra = child;\n child = document.getNextBlock(child.key);\n change.removeNodeByKey(extra.key);\n }\n\n change.moveNodeByKey(child.key, parent.key, index + 1 + i);\n });\n }\n });\n });\n};\n\n/**\n * Unwrap the inline nodes in a `range` from an inline with `properties`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {String|Object} properties\n */\n\nChanges$1.unwrapInlineAtRange = function (change, range, properties) {\n properties = Node.createProperties(properties);\n\n var value = change.value;\n var document = value.document;\n\n var texts = document.getTextsAtRange(range);\n var inlines = texts.map(function (text) {\n return document.getClosest(text.key, function (parent) {\n if (parent.object != 'inline') return false;\n if (properties.type != null && parent.type != properties.type) return false;\n if (properties.data != null && !parent.data.isSuperset(properties.data)) return false;\n return true;\n });\n }).filter(function (exists) {\n return exists;\n }).toOrderedSet().toList();\n\n change.withoutNormalizing(function () {\n inlines.forEach(function (inline) {\n var parent = change.value.document.getParent(inline.key);\n var index = parent.nodes.indexOf(inline);\n\n inline.nodes.forEach(function (child, i) {\n change.moveNodeByKey(child.key, parent.key, index + i);\n });\n\n change.removeNodeByKey(inline.key);\n });\n });\n};\n\n/**\n * Wrap all of the blocks in a `range` in a new `block`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Block|Object|String} block\n */\n\nChanges$1.wrapBlockAtRange = function (change, range, block) {\n block = Block.create(block);\n block = block.set('nodes', block.nodes.clear());\n\n var value = change.value;\n var document = value.document;\n\n\n var blocks = document.getBlocksAtRange(range);\n var firstblock = blocks.first();\n var lastblock = blocks.last();\n var parent = void 0,\n siblings = void 0,\n index = void 0;\n\n // If there is only one block in the selection then we know the parent and\n // siblings.\n if (blocks.length === 1) {\n parent = document.getParent(firstblock.key);\n siblings = blocks;\n } else {\n // Determine closest shared parent to all blocks in selection.\n parent = document.getClosest(firstblock.key, function (p1) {\n return !!document.getClosest(lastblock.key, function (p2) {\n return p1 == p2;\n });\n });\n }\n\n // If no shared parent could be found then the parent is the document.\n if (parent == null) parent = document;\n\n // Create a list of direct children siblings of parent that fall in the\n // selection.\n if (siblings == null) {\n var indexes = parent.nodes.reduce(function (ind, node, i) {\n if (node == firstblock || node.hasDescendant(firstblock.key)) ind[0] = i;\n if (node == lastblock || node.hasDescendant(lastblock.key)) ind[1] = i;\n return ind;\n }, []);\n\n index = indexes[0];\n siblings = parent.nodes.slice(indexes[0], indexes[1] + 1);\n }\n\n // Get the index to place the new wrapped node at.\n if (index == null) {\n index = parent.nodes.indexOf(siblings.first());\n }\n\n change.withoutNormalizing(function () {\n // Inject the new block node into the parent.\n change.insertNodeByKey(parent.key, index, block);\n\n // Move the sibling nodes into the new block node.\n siblings.forEach(function (node, i) {\n change.moveNodeByKey(node.key, block.key, i);\n });\n });\n};\n\n/**\n * Wrap the text and inlines in a `range` in a new `inline`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Inline|Object|String} inline\n */\n\nChanges$1.wrapInlineAtRange = function (change, range, inline) {\n var value = change.value;\n var document = value.document,\n schema = value.schema;\n var start = range.start,\n end = range.end;\n\n\n if (range.isCollapsed) {\n // Wrapping an inline void\n var inlineParent = document.getClosestInline(start.key);\n\n if (!schema.isVoid(inlineParent)) {\n return;\n }\n\n return change.wrapInlineByKey(inlineParent.key, inline);\n }\n\n inline = Inline.create(inline);\n inline = inline.set('nodes', inline.nodes.clear());\n\n var blocks = document.getBlocksAtRange(range);\n var startBlock = document.getClosestBlock(start.key);\n var endBlock = document.getClosestBlock(end.key);\n var startInline = document.getClosestInline(start.key);\n var endInline = document.getClosestInline(end.key);\n var startChild = startBlock.getFurthestAncestor(start.key);\n var endChild = endBlock.getFurthestAncestor(end.key);\n\n change.withoutNormalizing(function () {\n if (!startInline || startInline != endInline) {\n change.splitDescendantsByKey(endChild.key, end.key, end.offset);\n change.splitDescendantsByKey(startChild.key, start.key, start.offset);\n }\n\n document = change.value.document;\n startBlock = document.getDescendant(startBlock.key);\n endBlock = document.getDescendant(endBlock.key);\n startChild = startBlock.getFurthestAncestor(start.key);\n endChild = endBlock.getFurthestAncestor(end.key);\n var startIndex = startBlock.nodes.indexOf(startChild);\n var endIndex = endBlock.nodes.indexOf(endChild);\n\n if (startInline && startInline == endInline) {\n var text = startBlock.getTextsAtRange(range).get(0).splitText(start.offset)[1].splitText(end.offset - start.offset)[0];\n\n inline = inline.set('nodes', List([text]));\n change.insertInlineAtRange(range, inline);\n\n var inlinekey = inline.getFirstText().key;\n var rng = {\n anchor: {\n key: inlinekey,\n offset: 0\n },\n focus: {\n key: inlinekey,\n offset: end.offset - start.offset\n },\n isFocused: true\n };\n change.select(rng);\n } else if (startBlock == endBlock) {\n document = change.value.document;\n startBlock = document.getClosestBlock(start.key);\n startChild = startBlock.getFurthestAncestor(start.key);\n\n var startInner = document.getNextSibling(startChild.key);\n var startInnerIndex = startBlock.nodes.indexOf(startInner);\n var endInner = start.key == end.key ? startInner : startBlock.getFurthestAncestor(end.key);\n var inlines = startBlock.nodes.skipUntil(function (n) {\n return n == startInner;\n }).takeUntil(function (n) {\n return n == endInner;\n }).push(endInner);\n\n var node = inline.regenerateKey();\n\n change.insertNodeByKey(startBlock.key, startInnerIndex, node);\n\n inlines.forEach(function (child, i) {\n change.moveNodeByKey(child.key, node.key, i);\n });\n } else {\n var startInlines = startBlock.nodes.slice(startIndex + 1);\n var endInlines = endBlock.nodes.slice(0, endIndex + 1);\n var startNode = inline.regenerateKey();\n var endNode = inline.regenerateKey();\n\n change.insertNodeByKey(startBlock.key, startIndex + 1, startNode);\n change.insertNodeByKey(endBlock.key, endIndex, endNode);\n\n startInlines.forEach(function (child, i) {\n change.moveNodeByKey(child.key, startNode.key, i);\n });\n\n endInlines.forEach(function (child, i) {\n change.moveNodeByKey(child.key, endNode.key, i);\n });\n\n blocks.slice(1, -1).forEach(function (block) {\n var node = inline.regenerateKey();\n change.insertNodeByKey(block.key, 0, node);\n\n block.nodes.forEach(function (child, i) {\n change.moveNodeByKey(child.key, node.key, i);\n });\n });\n }\n });\n};\n\n/**\n * Wrap the text in a `range` in a prefix/suffix.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {String} prefix\n * @param {String} suffix (optional)\n */\n\nChanges$1.wrapTextAtRange = function (change, range, prefix) {\n var suffix = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : prefix;\n var start = range.start,\n end = range.end;\n\n var startRange = range.moveToStart();\n var endRange = range.moveToEnd();\n\n if (start.key == end.key) {\n endRange = endRange.moveForward(prefix.length);\n }\n\n change.withoutNormalizing(function () {\n change.insertTextAtRange(startRange, prefix, []);\n change.insertTextAtRange(endRange, suffix, []);\n });\n};\n\n/**\n * Compare paths `path` and `b` to see which is before or after.\n *\n * @param {List} path\n * @param {List} b\n * @return {Number|Null}\n */\n\nfunction compare(path, target) {\n // PERF: if the paths are not the same size we can exit early.\n if (path.size !== target.size) return null;\n\n for (var i = 0; i < path.size; i++) {\n var pv = path.get(i);\n var tv = target.get(i);\n\n // If the path's value is ever less than the target's, it's before.\n if (pv < tv) return -1;\n\n // If the target's value is ever less than the path's, it's after.\n if (pv > tv) return 1;\n }\n\n // Otherwise they were equal the whole way, it's the same.\n return 0;\n}\n\n/**\n * Create a path from `attrs`.\n *\n * @param {Array|List} attrs\n * @return {List}\n */\n\nfunction create$1(attrs) {\n if (attrs == null) {\n return null;\n }\n\n if (List.isList(attrs)) {\n return attrs;\n }\n\n if (Array.isArray(attrs)) {\n return List(attrs);\n }\n\n throw new Error('Paths can only be created from arrays or lists, but you passed: ' + attrs);\n}\n\n/**\n * Crop paths `a` and `b` to an equal size, defaulting to the shortest.\n *\n * @param {List} a\n * @param {List} b\n */\n\nfunction crop(a, b) {\n var size = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : min(a, b);\n\n var ca = a.slice(0, size);\n var cb = b.slice(0, size);\n return [ca, cb];\n}\n\n/**\n * Decrement a `path` by `n` at `index`, defaulting to the last index.\n *\n * @param {List} path\n * @param {Number} n\n * @param {Number} index\n */\n\nfunction decrement(path) {\n var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : path.size - 1;\n\n return increment(path, 0 - n, index);\n}\n\n/**\n * Increment a `path` by `n` at `index`, defaulting to the last index.\n *\n * @param {List} path\n * @param {Number} n\n * @param {Number} index\n */\n\nfunction increment(path) {\n var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : path.size - 1;\n\n var value = path.get(index);\n var newValue = value + n;\n var newPath = path.set(index, newValue);\n return newPath;\n}\n\n/**\n * Is a `path` above another `target` path?\n *\n * @param {List} path\n * @param {List} target\n * @return {Boolean}\n */\n\nfunction isAbove(path, target) {\n var _crop = crop(path, target),\n _crop2 = slicedToArray(_crop, 2),\n p = _crop2[0],\n t = _crop2[1];\n\n return path.size < target.size && compare(p, t) === 0;\n}\n\n/**\n * Is a `path` after another `target` path in a document?\n *\n * @param {List} path\n * @param {List} target\n * @return {Boolean}\n */\n\nfunction isAfter(path, target) {\n var _crop3 = crop(path, target),\n _crop4 = slicedToArray(_crop3, 2),\n p = _crop4[0],\n t = _crop4[1];\n\n return compare(p, t) === 1;\n}\n\n/**\n * Is a `path` before another `target` path in a document?\n *\n * @param {List} path\n * @param {List} target\n * @return {Boolean}\n */\n\nfunction isBefore(path, target) {\n var _crop5 = crop(path, target),\n _crop6 = slicedToArray(_crop5, 2),\n p = _crop6[0],\n t = _crop6[1];\n\n return compare(p, t) === -1;\n}\n\n/**\n * Is a `path` equal to another `target` path in a document?\n *\n * @param {List} path\n * @param {List} target\n * @return {Boolean}\n */\n\nfunction isEqual(path, target) {\n return path.equals(target);\n}\n\n/**\n * Is a `path` older than a `target` path? Meaning that it ends as an older\n * sibling of one of the indexes in the target.\n *\n * @param {List} path\n * @param {List} target\n * @return {Boolean}\n */\n\nfunction isOlder(path, target) {\n var index = path.size - 1;\n\n var _crop7 = crop(path, target, index),\n _crop8 = slicedToArray(_crop7, 2),\n p = _crop8[0],\n t = _crop8[1];\n\n var pl = path.get(index);\n var tl = target.get(index);\n return isEqual(p, t) && pl > tl;\n}\n\n/**\n * Is a `path` a sibling of a `target` path?\n *\n * @param {List} path\n * @param {List} target\n * @return {Boolean}\n */\n\nfunction isSibling(path, target) {\n if (path.size !== target.size) return false;\n var p = path.butLast();\n var t = target.butLast();\n return p.equals(t);\n}\n\n/**\n * Is a `path` younger than a `target` path? Meaning that it ends as a younger\n * sibling of one of the indexes in the target.\n *\n * @param {List} path\n * @param {List} target\n * @return {Boolean}\n */\n\nfunction isYounger(path, target) {\n var index = path.size - 1;\n\n var _crop9 = crop(path, target, index),\n _crop10 = slicedToArray(_crop9, 2),\n p = _crop10[0],\n t = _crop10[1];\n\n var pl = path.get(index);\n var tl = target.get(index);\n return isEqual(p, t) && pl < tl;\n}\n\n/**\n * Lift a `path` to refer to its parent.\n *\n * @param {List} path\n * @return {Array}\n */\n\nfunction lift(path) {\n var parent = path.slice(0, -1);\n return parent;\n}\n\n/**\n * Get the maximum length of paths `a` and `b`.\n *\n * @param {List} path\n * @param {List} path\n * @return {Number}\n */\n\nfunction max(a, b) {\n var n = Math.max(a.size, b.size);\n return n;\n}\n\n/**\n * Get the minimum length of paths `a` and `b`.\n *\n * @param {List} path\n * @param {List} path\n * @return {Number}\n */\n\nfunction min(a, b) {\n var n = Math.min(a.size, b.size);\n return n;\n}\n\n/**\n * Get the common ancestor path of path `a` and path `b`.\n *\n * @param {List} a\n * @param {List} b\n * @return {List}\n */\n\nfunction relate(a, b) {\n var array = [];\n\n for (var i = 0; i < a.size && i < b.size; i++) {\n var av = a.get(i);\n var bv = b.get(i);\n\n // If the values aren't equal, they've diverged and don't share an ancestor.\n if (av !== bv) break;\n\n // Otherwise, the current value is still a common ancestor.\n array.push(av);\n }\n\n var path = create$1(array);\n return path;\n}\n\n/**\n * Transform a `path` by an `operation`, adjusting it to stay current.\n *\n * @param {List} path\n * @param {Operation} operation\n * @return {List}\n */\n\nfunction transform(path, operation) {\n var type = operation.type,\n position = operation.position,\n p = operation.path;\n\n\n if (type === 'add_mark' || type === 'insert_text' || type === 'remove_mark' || type === 'remove_text' || type === 'set_mark' || type === 'set_node' || type === 'set_selection' || type === 'set_value' || path.size === 0) {\n return List([path]);\n }\n\n var pIndex = p.size - 1;\n var pEqual = isEqual(p, path);\n var pYounger = isYounger(p, path);\n var pAbove = isAbove(p, path);\n\n if (type === 'insert_node') {\n if (pEqual || pYounger || pAbove) {\n path = increment(path, 1, pIndex);\n }\n }\n\n if (type === 'remove_node') {\n if (pYounger) {\n path = decrement(path, 1, pIndex);\n } else if (pEqual || pAbove) {\n path = [];\n }\n }\n\n if (type === 'merge_node') {\n if (pEqual || pYounger) {\n path = decrement(path, 1, pIndex);\n } else if (pAbove) {\n path = decrement(path, 1, pIndex);\n path = increment(path, position, pIndex + 1);\n }\n }\n\n if (type === 'split_node') {\n if (pEqual) {\n path = [path, increment(path)];\n } else if (pYounger) {\n path = increment(path, 1, pIndex);\n } else if (pAbove) {\n if (path.get(pIndex + 1) >= position) {\n path = increment(path, 1, pIndex);\n path = decrement(path, position, pIndex + 1);\n }\n }\n }\n\n if (type === 'move_node') {\n var np = operation.newPath;\n\n var npIndex = np.size - 1;\n var npEqual = isEqual(np, path);\n var npYounger = isYounger(np, path);\n var npAbove = isAbove(np, path);\n\n if (pAbove) {\n path = np.concat(path.slice(p.size));\n } else {\n if (pEqual) {\n path = np;\n } else if (pYounger) {\n path = decrement(path, 1, pIndex);\n }\n\n if (npEqual || npYounger || npAbove) {\n path = increment(path, 1, npIndex);\n }\n }\n }\n\n var paths = Array.isArray(path) ? path : [path];\n return List(paths);\n}\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nvar PathUtils = {\n compare: compare,\n create: create$1,\n crop: crop,\n decrement: decrement,\n increment: increment,\n isAbove: isAbove,\n isAfter: isAfter,\n isBefore: isBefore,\n isEqual: isEqual,\n isOlder: isOlder,\n isSibling: isSibling,\n isYounger: isYounger,\n lift: lift,\n max: max,\n min: min,\n relate: relate,\n transform: transform\n};\n\n/**\n * Changes.\n *\n * @type {Object}\n */\n\nvar Changes$2 = {};\n\n/**\n * Add mark to text at `offset` and `length` in node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mixed} mark\n */\n\nChanges$2.addMarkByPath = function (change, path, offset, length, mark) {\n mark = Mark.create(mark);\n var value = change.value;\n var document = value.document;\n\n var node = document.assertNode(path);\n var leaves = node.getLeaves();\n\n var operations = [];\n var bx = offset;\n var by = offset + length;\n var o = 0;\n\n leaves.forEach(function (leaf) {\n var ax = o;\n var ay = ax + leaf.text.length;\n\n o += leaf.text.length;\n\n // If the leaf doesn't overlap with the operation, continue on.\n if (ay < bx || by < ax) return;\n\n // If the leaf already has the mark, continue on.\n if (leaf.marks.has(mark)) return;\n\n // Otherwise, determine which offset and characters overlap.\n var start = Math.max(ax, bx);\n var end = Math.min(ay, by);\n\n operations.push({\n type: 'add_mark',\n value: value,\n path: path,\n offset: start,\n length: end - start,\n mark: mark\n });\n });\n\n change.applyOperations(operations);\n};\n\n/**\n * Insert a `fragment` at `index` in a node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Number} index\n * @param {Fragment} fragment\n */\n\nChanges$2.insertFragmentByPath = function (change, path, index, fragment) {\n fragment.nodes.forEach(function (node, i) {\n change.insertNodeByPath(path, index + i, node);\n });\n};\n\n/**\n * Insert a `node` at `index` in a node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Number} index\n * @param {Node} node\n */\n\nChanges$2.insertNodeByPath = function (change, path, index, node) {\n var value = change.value;\n\n\n change.applyOperation({\n type: 'insert_node',\n value: value,\n path: path.concat(index),\n node: node\n });\n};\n\n/**\n * Insert `text` at `offset` in node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Number} offset\n * @param {String} text\n * @param {Set} marks (optional)\n */\n\nChanges$2.insertTextByPath = function (change, path, offset, text, marks) {\n var value = change.value;\n var document = value.document;\n\n var node = document.assertNode(path);\n marks = marks || node.getMarksAtIndex(offset);\n\n change.applyOperation({\n type: 'insert_text',\n value: value,\n path: path,\n offset: offset,\n text: text,\n marks: marks\n });\n};\n\n/**\n * Merge a node by `path` with the previous node.\n *\n * @param {Change} change\n * @param {Array} path\n */\n\nChanges$2.mergeNodeByPath = function (change, path) {\n var value = change.value;\n var document = value.document;\n\n var original = document.getDescendant(path);\n var previous = document.getPreviousSibling(path);\n\n if (!previous) {\n throw new Error('Unable to merge node with path \"' + path + '\", because it has no previous sibling.');\n }\n\n var position = previous.object == 'text' ? previous.text.length : previous.nodes.size;\n\n change.applyOperation({\n type: 'merge_node',\n value: value,\n path: path,\n position: position,\n // for undos to succeed we only need the type and data because\n // these are the only properties that get changed in the merge operation\n properties: {\n type: original.type,\n data: original.data\n },\n target: null\n });\n};\n\n/**\n * Move a node by `path` to a new parent by `newPath` and `index`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {String} newPath\n * @param {Number} index\n */\n\nChanges$2.moveNodeByPath = function (change, path, newPath, newIndex) {\n var value = change.value;\n\n\n change.applyOperation({\n type: 'move_node',\n value: value,\n path: path,\n newPath: newPath.concat(newIndex)\n });\n};\n\n/**\n * Remove mark from text at `offset` and `length` in node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n */\n\nChanges$2.removeMarkByPath = function (change, path, offset, length, mark) {\n mark = Mark.create(mark);\n var value = change.value;\n var document = value.document;\n\n var node = document.assertNode(path);\n var leaves = node.getLeaves();\n\n var operations = [];\n var bx = offset;\n var by = offset + length;\n var o = 0;\n\n leaves.forEach(function (leaf) {\n var ax = o;\n var ay = ax + leaf.text.length;\n\n o += leaf.text.length;\n\n // If the leaf doesn't overlap with the operation, continue on.\n if (ay < bx || by < ax) return;\n\n // If the leaf already has the mark, continue on.\n if (!leaf.marks.has(mark)) return;\n\n // Otherwise, determine which offset and characters overlap.\n var start = Math.max(ax, bx);\n var end = Math.min(ay, by);\n\n operations.push({\n type: 'remove_mark',\n value: value,\n path: path,\n offset: start,\n length: end - start,\n mark: mark\n });\n });\n\n change.applyOperations(operations);\n};\n\n/**\n * Remove all `marks` from node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n */\n\nChanges$2.removeAllMarksByPath = function (change, path) {\n var state = change.state;\n var document = state.document;\n\n var node = document.assertNode(path);\n var texts = node.object === 'text' ? [node] : node.getTextsAsArray();\n\n texts.forEach(function (text) {\n text.getMarksAsArray().forEach(function (mark) {\n change.removeMarkByKey(text.key, 0, text.text.length, mark);\n });\n });\n};\n\n/**\n * Remove a node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n */\n\nChanges$2.removeNodeByPath = function (change, path) {\n var value = change.value;\n var document = value.document;\n\n var node = document.assertNode(path);\n\n change.applyOperation({\n type: 'remove_node',\n value: value,\n path: path,\n node: node\n });\n};\n\n/**\n * Remove text at `offset` and `length` in node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Number} offset\n * @param {Number} length\n */\n\nChanges$2.removeTextByPath = function (change, path, offset, length) {\n var value = change.value;\n var document = value.document;\n\n var node = document.assertNode(path);\n var leaves = node.getLeaves();\n var text = node.text;\n\n\n var removals = [];\n var bx = offset;\n var by = offset + length;\n var o = 0;\n\n leaves.forEach(function (leaf) {\n var ax = o;\n var ay = ax + leaf.text.length;\n\n o += leaf.text.length;\n\n // If the leaf doesn't overlap with the removal, continue on.\n if (ay < bx || by < ax) return;\n\n // Otherwise, determine which offset and characters overlap.\n var start = Math.max(ax, bx);\n var end = Math.min(ay, by);\n var string = text.slice(start, end);\n\n removals.push({\n type: 'remove_text',\n value: value,\n path: path,\n offset: start,\n text: string,\n marks: leaf.marks\n });\n });\n\n // Apply in reverse order, so subsequent removals don't impact previous ones.\n change.applyOperations(removals.reverse());\n};\n\n/**\n`* Replace a `node` with another `node`\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Object|Node} node\n */\n\nChanges$2.replaceNodeByPath = function (change, path, newNode) {\n newNode = Node.create(newNode);\n var index = path.last();\n var parentPath = PathUtils.lift(path);\n\n change.withoutNormalizing(function () {\n change.removeNodeByPath(path);\n change.insertNodeByPath(parentPath, index, newNode);\n });\n};\n\n/**\n * Replace A Length of Text with another string or text\n * @param {Change} change\n * @param {String} key\n * @param {Number} offset\n * @param {Number} length\n * @param {string} text\n * @param {Set} marks (optional)\n */\n\nChanges$2.replaceTextByPath = function (change, path, offset, length, text, marks) {\n var document = change.value.document;\n\n var node = document.assertNode(path);\n\n if (length + offset > node.text.length) {\n length = node.text.length - offset;\n }\n\n var range = document.createRange({\n anchor: { path: path, offset: offset },\n focus: { path: path, offset: offset + length }\n });\n\n var activeMarks = document.getActiveMarksAtRange(range);\n\n change.withoutNormalizing(function () {\n change.removeTextByPath(path, offset, length);\n\n if (!marks) {\n // Do not use mark at index when marks and activeMarks are both empty\n marks = activeMarks ? activeMarks : [];\n } else if (activeMarks) {\n // Do not use `has` because we may want to reset marks like font-size with\n // an updated data;\n activeMarks = activeMarks.filter(function (activeMark) {\n return !marks.find(function (m) {\n return activeMark.type === m.type;\n });\n });\n\n marks = activeMarks.merge(marks);\n }\n\n change.insertTextByPath(path, offset, text, marks);\n });\n};\n\n/**\n * Set `properties` on mark on text at `offset` and `length` in node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n */\n\nChanges$2.setMarkByPath = function (change, path, offset, length, mark, properties) {\n mark = Mark.create(mark);\n properties = Mark.createProperties(properties);\n var value = change.value;\n\n\n change.applyOperation({\n type: 'set_mark',\n value: value,\n path: path,\n offset: offset,\n length: length,\n mark: mark,\n properties: properties\n });\n};\n\n/**\n * Set `properties` on a node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Object|String} properties\n */\n\nChanges$2.setNodeByPath = function (change, path, properties) {\n properties = Node.createProperties(properties);\n var value = change.value;\n var document = value.document;\n\n var node = document.assertNode(path);\n\n change.applyOperation({\n type: 'set_node',\n value: value,\n path: path,\n node: node,\n properties: properties\n });\n};\n\n/**\n * Insert `text` at `offset` in node by `path`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {String} text\n * @param {Set} marks (optional)\n */\n\nChanges$2.setTextByPath = function (change, path, text, marks) {\n var value = change.value;\n var document = value.document;\n\n var node = document.assertNode(path);\n var end = node.text.length;\n change.replaceTextByPath(path, 0, end, text, marks);\n};\n\n/**\n * Split a node by `path` at `position`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Number} position\n * @param {Object} options\n */\n\nChanges$2.splitNodeByPath = function (change, path, position) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var _options$target = options.target,\n target = _options$target === undefined ? null : _options$target;\n var value = change.value;\n var document = value.document;\n\n var node = document.getDescendant(path);\n\n change.applyOperation({\n type: 'split_node',\n value: value,\n path: path,\n position: position,\n target: target,\n properties: {\n type: node.type,\n data: node.data\n }\n });\n};\n\n/**\n * Split a node deeply down the tree by `path`, `textPath` and `textOffset`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Array} textPath\n * @param {Number} textOffset\n */\n\nChanges$2.splitDescendantsByPath = function (change, path, textPath, textOffset) {\n if (path.equals(textPath)) {\n change.splitNodeByPath(textPath, textOffset);\n return;\n }\n\n var value = change.value;\n var document = value.document;\n\n var node = document.assertNode(path);\n var text = document.assertNode(textPath);\n var ancestors = document.getAncestors(textPath);\n var nodes = ancestors.skipUntil(function (a) {\n return a.key == node.key;\n }).reverse().unshift(text);\n\n var previous = void 0;\n var index = void 0;\n\n change.withoutNormalizing(function () {\n nodes.forEach(function (n) {\n var prevIndex = index == null ? null : index;\n index = previous ? n.nodes.indexOf(previous) + 1 : textOffset;\n previous = n;\n change.splitNodeByKey(n.key, index, { target: prevIndex });\n });\n });\n};\n\n/**\n * Unwrap content from an inline parent with `properties`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Object|String} properties\n */\n\nChanges$2.unwrapInlineByPath = function (change, path, properties) {\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n\n var node = document.assertNode(path);\n var first = node.getFirstText();\n var last = node.getLastText();\n var range = selection.moveToRangeOfNode(first, last);\n change.unwrapInlineAtRange(range, properties);\n};\n\n/**\n * Unwrap content from a block parent with `properties`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Object|String} properties\n */\n\nChanges$2.unwrapBlockByPath = function (change, path, properties) {\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n\n var node = document.assertNode(path);\n var first = node.getFirstText();\n var last = node.getLastText();\n var range = selection.moveToRangeOfNode(first, last);\n change.unwrapBlockAtRange(range, properties);\n};\n\n/**\n * Unwrap a single node from its parent.\n *\n * If the node is surrounded with siblings, its parent will be\n * split. If the node is the only child, the parent is removed, and\n * simply replaced by the node itself. Cannot unwrap a root node.\n *\n * @param {Change} change\n * @param {Array} path\n */\n\nChanges$2.unwrapNodeByPath = function (change, path) {\n var value = change.value;\n var document = value.document;\n\n document.assertNode(path);\n\n var parentPath = PathUtils.lift(path);\n var parent = document.assertNode(parentPath);\n var index = path.last();\n var parentIndex = parentPath.last();\n var grandPath = PathUtils.lift(parentPath);\n var isFirst = index === 0;\n var isLast = index === parent.nodes.size - 1;\n\n change.withoutNormalizing(function () {\n if (parent.nodes.size === 1) {\n change.moveNodeByPath(path, grandPath, parentIndex + 1);\n change.removeNodeByPath(parentPath);\n } else if (isFirst) {\n change.moveNodeByPath(path, grandPath, parentIndex);\n } else if (isLast) {\n change.moveNodeByPath(path, grandPath, parentIndex + 1);\n } else {\n var updatedPath = PathUtils.increment(path, 1, parentPath.size - 1);\n updatedPath = updatedPath.set(updatedPath.size - 1, 0);\n change.splitNodeByPath(parentPath, index);\n change.moveNodeByPath(updatedPath, grandPath, parentIndex + 1);\n }\n });\n};\n\n/**\n * Wrap a node in a block with `properties`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Block|Object|String} block\n */\n\nChanges$2.wrapBlockByPath = function (change, path, block) {\n block = Block.create(block);\n block = block.set('nodes', block.nodes.clear());\n var parentPath = PathUtils.lift(path);\n var index = path.last();\n var newPath = PathUtils.increment(path);\n\n change.withoutNormalizing(function () {\n change.insertNodeByPath(parentPath, index, block);\n change.moveNodeByPath(newPath, path, 0);\n });\n};\n\n/**\n * Wrap a node in an inline with `properties`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Block|Object|String} inline\n */\n\nChanges$2.wrapInlineByPath = function (change, path, inline) {\n inline = Inline.create(inline);\n inline = inline.set('nodes', inline.nodes.clear());\n var parentPath = PathUtils.lift(path);\n var index = path.last();\n var newPath = PathUtils.increment(path);\n\n change.withoutNormalizing(function () {\n change.insertNodeByPath(parentPath, index, inline);\n change.moveNodeByPath(newPath, path, 0);\n });\n};\n\n/**\n * Wrap a node by `path` with `node`.\n *\n * @param {Change} change\n * @param {Array} path\n * @param {Node|Object} node\n */\n\nChanges$2.wrapNodeByPath = function (change, path, node) {\n node = Node.create(node);\n\n if (node.object === 'block') {\n change.wrapBlockByPath(path, node);\n } else if (node.object === 'inline') {\n change.wrapInlineByPath(path, node);\n }\n};\n\n/**\n * Mix in `*ByKey` variants.\n */\n\nvar CHANGES = ['addMark', 'insertFragment', 'insertNode', 'insertText', 'mergeNode', 'removeMark', 'removeAllMarks', 'removeNode', 'setText', 'replaceText', 'removeText', 'replaceNode', 'setMark', 'setNode', 'splitNode', 'unwrapInline', 'unwrapBlock', 'unwrapNode', 'wrapBlock', 'wrapInline', 'wrapNode'];\n\nvar _loop = function _loop(method) {\n Changes$2[method + 'ByKey'] = function (change, key) {\n for (var _len3 = arguments.length, args = Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n args[_key3 - 2] = arguments[_key3];\n }\n\n var value = change.value;\n var document = value.document;\n\n var path = document.assertPath(key);\n change[method + 'ByPath'].apply(change, [path].concat(args));\n };\n};\n\nvar _iteratorNormalCompletion = true;\nvar _didIteratorError = false;\nvar _iteratorError = undefined;\n\ntry {\n for (var _iterator = CHANGES[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var method = _step.value;\n\n _loop(method);\n }\n\n // Moving nodes takes two keys, so it's slightly different.\n} catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n} finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n}\n\nChanges$2.moveNodeByKey = function (change, key, newKey) {\n for (var _len = arguments.length, args = Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n args[_key - 3] = arguments[_key];\n }\n\n var value = change.value;\n var document = value.document;\n\n var path = document.assertPath(key);\n var newPath = document.assertPath(newKey);\n change.moveNodeByPath.apply(change, [path, newPath].concat(args));\n};\n\n// Splitting descendants takes two keys, so it's slightly different.\nChanges$2.splitDescendantsByKey = function (change, key, textKey) {\n for (var _len2 = arguments.length, args = Array(_len2 > 3 ? _len2 - 3 : 0), _key2 = 3; _key2 < _len2; _key2++) {\n args[_key2 - 3] = arguments[_key2];\n }\n\n var value = change.value;\n var document = value.document;\n\n var path = document.assertPath(key);\n var textPath = document.assertPath(textKey);\n change.splitDescendantsByPath.apply(change, [path, textPath].concat(args));\n};\n\n/**\n * Changes.\n *\n * @type {Object}\n */\n\nvar Changes$3 = {};\n\n/**\n * Redo to the next value in the history.\n *\n * @param {Change} change\n */\n\nChanges$3.redo = function (change) {\n var value = change.value;\n var _value = value,\n history = _value.history;\n\n if (!history) return;\n\n var _history = history,\n undos = _history.undos,\n redos = _history.redos;\n\n var next = redos.peek();\n if (!next) return;\n\n // Shift the next value into the undo stack.\n redos = redos.pop();\n undos = undos.push(next);\n\n // Replay the next operations.\n next.forEach(function (op) {\n var _op = op,\n type = _op.type,\n properties = _op.properties;\n\n // When the operation mutates the selection, omit its `isFocused` value to\n // prevent the editor focus from changing during redoing.\n\n if (type == 'set_selection') {\n op = op.set('properties', omit(properties, 'isFocused'));\n }\n\n change.withoutSaving(function () {\n change.applyOperation(op);\n });\n });\n\n // Update the history.\n value = change.value;\n history = history.set('undos', undos).set('redos', redos);\n value = value.set('history', history);\n change.value = value;\n};\n\n/**\n * Undo the previous operations in the history.\n *\n * @param {Change} change\n */\n\nChanges$3.undo = function (change) {\n var value = change.value;\n var _value2 = value,\n history = _value2.history;\n\n if (!history) return;\n\n var _history2 = history,\n undos = _history2.undos,\n redos = _history2.redos;\n\n var previous = undos.peek();\n if (!previous) return;\n\n // Shift the previous operations into the redo stack.\n undos = undos.pop();\n redos = redos.push(previous);\n\n // Replay the inverse of the previous operations.\n previous.slice().reverse().map(function (op) {\n return op.invert();\n }).forEach(function (inverse) {\n var _inverse = inverse,\n type = _inverse.type,\n properties = _inverse.properties;\n\n // When the operation mutates the selection, omit its `isFocused` value to\n // prevent the editor focus from changing during undoing.\n\n if (type == 'set_selection') {\n inverse = inverse.set('properties', omit(properties, 'isFocused'));\n }\n\n change.withoutSaving(function () {\n change.applyOperation(inverse);\n });\n });\n\n // Update the history.\n value = change.value;\n history = history.set('undos', undos).set('redos', redos);\n value = value.set('history', history);\n change.value = value;\n};\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$6 = {\n key: undefined,\n offset: undefined,\n path: undefined\n\n /**\n * Point.\n *\n * @type {Point}\n */\n\n};\nvar Point = function (_Record) {\n inherits(Point, _Record);\n\n function Point() {\n classCallCheck(this, Point);\n return possibleConstructorReturn(this, (Point.__proto__ || Object.getPrototypeOf(Point)).apply(this, arguments));\n }\n\n createClass(Point, [{\n key: 'isAtEndOfNode',\n\n\n /**\n * Check whether the point is at the end of a `node`.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\n value: function isAtEndOfNode(node) {\n if (this.isUnset) return false;\n var last = node.getLastText();\n var is$$1 = this.key === last.key && this.offset === last.text.length;\n return is$$1;\n }\n\n /**\n * Check whether the point is at the start of a `node`.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\n }, {\n key: 'isAtStartOfNode',\n value: function isAtStartOfNode(node) {\n if (this.isUnset) return false;\n\n // PERF: Do a check for a `0` offset first since it's quickest.\n if (this.offset != 0) return false;\n\n var first = node.getFirstText();\n var is$$1 = this.key === first.key;\n return is$$1;\n }\n\n /**\n * Check whether the point is in a `node`.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\n }, {\n key: 'isInNode',\n value: function isInNode(node) {\n if (this.isUnset) return false;\n if (node.object === 'text' && node.key === this.key) return true;\n if (node.hasNode(this.key)) return true;\n return false;\n }\n\n /**\n * Move the point's offset backward `n` characters.\n *\n * @param {Number} n (optional)\n * @return {Point}\n */\n\n }, {\n key: 'moveBackward',\n value: function moveBackward() {\n var n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n\n if (n === 0) return this;\n if (n < 0) return this.moveForward(-n);\n var point = this.setOffset(this.offset - n);\n return point;\n }\n\n /**\n * Move the point's offset forward `n` characters.\n *\n * @param {Number} n (optional)\n * @return {Point}\n */\n\n }, {\n key: 'moveForward',\n value: function moveForward() {\n var n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n\n if (n === 0) return this;\n if (n < 0) return this.moveBackward(-n);\n var point = this.setOffset(this.offset + n);\n return point;\n }\n\n /**\n * Move the point's anchor point to a new `path` and `offset`.\n *\n * Optionally, the `path` can be a key string, or omitted entirely in which\n * case it would be the offset number.\n *\n * @param {List|String|Number} path\n * @param {Number} offset\n * @return {Point}\n */\n\n }, {\n key: 'moveTo',\n value: function moveTo(path) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var key = this.key;\n\n if (typeof path === 'number') {\n offset = path;\n path = this.path;\n } else if (typeof path === 'string') {\n key = path;\n path = key === this.key ? this.path : null;\n } else {\n key = path.equals(this.path) ? this.key : null;\n }\n\n var point = this.merge({ key: key, path: path, offset: offset });\n return point;\n }\n\n /**\n * Move the point's anchor point to the start of a `node`.\n *\n * @param {Node} node\n * @return {Point}\n */\n\n }, {\n key: 'moveToStartOfNode',\n value: function moveToStartOfNode(node) {\n var first = node.getFirstText();\n var point = this.moveTo(first.key, 0);\n return point;\n }\n\n /**\n * Move the point's anchor point to the end of a `node`.\n *\n * @param {Node} node\n * @return {Point}\n */\n\n }, {\n key: 'moveToEndOfNode',\n value: function moveToEndOfNode(node) {\n var last = node.getLastText();\n var point = this.moveTo(last.key, last.text.length);\n return point;\n }\n\n /**\n * Normalize the point relative to a `node`, ensuring that its key and path\n * reference a text node, or that it gets unset.\n *\n * @param {Node} node\n * @return {Point}\n */\n\n }, {\n key: 'normalize',\n value: function normalize(node) {\n // If both the key and path are null, there's no reference to a node, so\n // make sure it is entirely unset.\n if (this.key == null && this.path == null) {\n return this.setOffset(null);\n }\n\n var key = this.key,\n offset = this.offset,\n path = this.path;\n\n var target = node.getNode(key || path);\n\n if (!target) {\n warning(false, \"A point's `path` or `key` invalid and was reset!\");\n\n var text = node.getFirstText();\n if (!text) return Point.create();\n\n var _point = this.merge({\n key: text.key,\n offset: 0,\n path: node.getPath(text.key)\n });\n\n return _point;\n }\n\n if (target.object !== 'text') {\n warning(false, 'A point should not reference a non-text node!');\n\n var _text = target.getTextAtOffset(offset);\n var before = target.getOffset(_text.key);\n var _point2 = this.merge({\n offset: offset - before,\n key: _text.key,\n path: node.getPath(_text.key)\n });\n\n return _point2;\n }\n\n if (target && path && key && key !== target.key) {\n warning(false, \"A point's `key` did not match its `path`!\");\n }\n\n var point = this.merge({\n key: target.key,\n path: path == null ? node.getPath(target.key) : path,\n offset: offset == null ? 0 : Math.min(offset, target.text.length)\n });\n\n return point;\n }\n\n /**\n * Set the point's key to a new `key`.\n *\n * @param {String} key\n * @return {Point}\n */\n\n }, {\n key: 'setKey',\n value: function setKey(key) {\n if (key !== null) {\n key = KeyUtils.create(key);\n }\n\n var point = this.set('key', key);\n return point;\n }\n\n /**\n * Set the point's offset to a new `offset`.\n *\n * @param {Number} offset\n * @return {Point}\n */\n\n }, {\n key: 'setOffset',\n value: function setOffset(offset) {\n var point = this.set('offset', offset);\n return point;\n }\n\n /**\n * Set the point's path to a new `path`.\n *\n * @param {List|Array} path\n * @return {Point}\n */\n\n }, {\n key: 'setPath',\n value: function setPath(path) {\n if (path !== null) {\n path = PathUtils.create(path);\n }\n\n var point = this.set('path', path);\n return point;\n }\n\n /**\n * Return a JSON representation of the point.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var object = {\n object: this.object,\n key: this.key,\n offset: this.offset,\n path: this.path && this.path.toArray()\n };\n\n if (!options.preserveKeys) {\n delete object.key;\n }\n\n return object;\n }\n\n /**\n * Unset the point.\n *\n * @return {Point}\n */\n\n }, {\n key: 'unset',\n value: function unset() {\n return this.merge({\n key: null,\n offset: null,\n path: null\n });\n }\n }, {\n key: 'isSet',\n\n\n /**\n * Check whether all properties of the point are set.\n *\n * @return {Boolean}\n */\n\n get: function get$$1() {\n return this.key != null && this.offset != null && this.path != null;\n }\n\n /**\n * Check whether any property of the point is not set.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isUnset',\n get: function get$$1() {\n return !this.isSet;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Point` with `attrs`.\n *\n * @param {Object|Point} attrs\n * @return {Point}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Point.isPoint(attrs)) {\n return attrs;\n }\n\n if (isPlainObject(attrs)) {\n return Point.fromJSON(attrs);\n }\n\n throw new Error('`Point.create` only accepts objects or points, but you passed it: ' + attrs);\n }\n\n /**\n * Create a dictionary of settable point properties from `attrs`.\n *\n * @param {Object|Point} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Point.isPoint(a)) {\n return {\n key: a.key,\n offset: a.offset,\n path: a.path\n };\n }\n\n if (isPlainObject(a)) {\n var p = {};\n if ('key' in a) p.key = a.key;\n if ('offset' in a) p.offset = a.offset;\n if ('path' in a) p.path = PathUtils.create(a.path);\n\n // If only a path is set, or only a key is set, ensure that the other is\n // set to null so that it can be normalized back to the right value.\n // Otherwise we won't realize that the path and key don't match anymore.\n if ('path' in a && !('key' in a)) p.key = null;\n if ('key' in a && !('path' in a)) p.path = null;\n\n return p;\n }\n\n throw new Error('`Point.createProperties` only accepts objects or points, but you passed it: ' + a);\n }\n\n /**\n * Create a `Point` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Point}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var _object$key = object.key,\n key = _object$key === undefined ? null : _object$key,\n _object$offset = object.offset,\n offset = _object$offset === undefined ? null : _object$offset,\n _object$path = object.path,\n path = _object$path === undefined ? null : _object$path;\n\n\n var point = new Point({\n key: key,\n offset: offset,\n path: PathUtils.create(path)\n });\n\n return point;\n }\n }]);\n return Point;\n}(Record(DEFAULTS$6));\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$7 = {\n anchor: undefined,\n focus: undefined,\n mark: undefined\n\n /**\n * Decoration.\n *\n * @type {Decoration}\n */\n\n};\nvar Decoration = function (_Record) {\n inherits(Decoration, _Record);\n\n function Decoration() {\n classCallCheck(this, Decoration);\n return possibleConstructorReturn(this, (Decoration.__proto__ || Object.getPrototypeOf(Decoration)).apply(this, arguments));\n }\n\n createClass(Decoration, [{\n key: 'setProperties',\n\n\n /**\n * Set new `properties` on the decoration.\n *\n * @param {Object|Range|Selection} properties\n * @return {Range}\n */\n\n value: function setProperties(properties) {\n properties = Decoration.createProperties(properties);\n var _properties = properties,\n anchor = _properties.anchor,\n focus = _properties.focus,\n mark = _properties.mark;\n\n var props = {};\n\n if (anchor) {\n props.anchor = Point.create(anchor);\n }\n\n if (focus) {\n props.focus = Point.create(focus);\n }\n\n if (mark) {\n props.mark = Mark.create(mark);\n }\n\n var decoration = this.merge(props);\n return decoration;\n }\n\n /**\n * Return a JSON representation of the decoration.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var object = {\n object: this.object,\n anchor: this.anchor.toJSON(options),\n focus: this.focus.toJSON(options),\n mark: this.mark.toJSON(options)\n };\n\n return object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Decoration` with `attrs`.\n *\n * @param {Object|Decoration} attrs\n * @return {Decoration}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Decoration.isDecoration(attrs)) {\n return attrs;\n }\n\n if (Range.isRange(attrs)) {\n return Decoration.fromJSON(Range.createProperties(attrs));\n }\n\n if (isPlainObject(attrs)) {\n return Decoration.fromJSON(attrs);\n }\n\n throw new Error('`Decoration.create` only accepts objects or decorations, but you passed it: ' + attrs);\n }\n\n /**\n * Create a list of `Ranges` from `elements`.\n *\n * @param {Array|List} elements\n * @return {List}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (List.isList(elements) || Array.isArray(elements)) {\n var list = new List(elements.map(Decoration.create));\n return list;\n }\n\n throw new Error('`Decoration.createList` only accepts arrays or lists, but you passed it: ' + elements);\n }\n\n /**\n * Create a dictionary of settable decoration properties from `attrs`.\n *\n * @param {Object|String|Decoration} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Decoration.isDecoration(a)) {\n return {\n anchor: Point.createProperties(a.anchor),\n focus: Point.createProperties(a.focus),\n mark: Mark.create(a.mark)\n };\n }\n\n if (isPlainObject(a)) {\n var p = {};\n if ('anchor' in a) p.anchor = Point.create(a.anchor);\n if ('focus' in a) p.focus = Point.create(a.focus);\n if ('mark' in a) p.mark = Mark.create(a.mark);\n return p;\n }\n\n throw new Error('`Decoration.createProperties` only accepts objects or decorations, but you passed it: ' + a);\n }\n\n /**\n * Create a `Decoration` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Decoration}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var anchor = object.anchor,\n focus = object.focus,\n mark = object.mark;\n\n\n if (!mark) {\n throw new Error('Decorations must be created with a `mark`, but you passed: ' + JSON.stringify(object));\n }\n\n var decoration = new Decoration({\n anchor: Point.fromJSON(anchor || {}),\n focus: Point.fromJSON(focus || {}),\n mark: Mark.fromJSON(mark)\n });\n\n return decoration;\n }\n }]);\n return Decoration;\n}(Record(DEFAULTS$7));\n\n/**\n * Slate-specific object types.\n *\n * @type {Object}\n */\n\nvar TYPES = {\n block: '@@__SLATE_BLOCK__@@',\n change: '@@__SLATE_CHANGE__@@',\n decoration: '@@__SLATE_DECORATION__@@',\n document: '@@__SLATE_DOCUMENT__@@',\n history: '@@__SLATE_HISTORY__@@',\n inline: '@@__SLATE_INLINE__@@',\n leaf: '@@__SLATE_LEAF__@@',\n mark: '@@__SLATE_MARK__@@',\n operation: '@@__SLATE_OPERATION__@@',\n point: '@@__SLATE_POINT__@@',\n range: '@@__SLATE_RANGE__@@',\n schema: '@@__SLATE_SCHEMA__@@',\n selection: '@@__SLATE_SELECTION__@@',\n stack: '@@__SLATE_STACK__@@',\n text: '@@__SLATE_TEXT__@@',\n value: '@@__SLATE_VALUE__@@'\n\n /**\n * Determine whether a `value` is of `type`.\n *\n * @param {string} type\n * @param {any} value\n * @return {boolean}\n */\n\n};function isObject(type, value) {\n return !!(value && value[TYPES[type]]);\n}\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$8 = {\n anchor: undefined,\n focus: undefined\n\n /**\n * Range.\n *\n * @type {Range}\n */\n\n};\nvar Range = function (_Record) {\n inherits(Range, _Record);\n\n function Range() {\n classCallCheck(this, Range);\n return possibleConstructorReturn(this, (Range.__proto__ || Object.getPrototypeOf(Range)).apply(this, arguments));\n }\n\n createClass(Range, [{\n key: 'toJSON',\n\n\n /**\n * Return a JSON representation of the range.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var object = {\n object: this.object,\n anchor: this.anchor.toJSON(options),\n focus: this.focus.toJSON(options)\n };\n\n return object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Range` with `attrs`.\n *\n * @param {Object|Range} attrs\n * @return {Range}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Range.isRange(attrs)) {\n if (attrs.object === 'range') {\n return attrs;\n } else {\n return Range.fromJSON(Range.createProperties(attrs));\n }\n }\n\n if (isPlainObject(attrs)) {\n return Range.fromJSON(attrs);\n }\n\n throw new Error('`Range.create` only accepts objects or ranges, but you passed it: ' + attrs);\n }\n\n /**\n * Create a list of `Ranges` from `elements`.\n *\n * @param {Array|List} elements\n * @return {List}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (List.isList(elements) || Array.isArray(elements)) {\n var list = new List(elements.map(Range.create));\n return list;\n }\n\n throw new Error('`Range.createList` only accepts arrays or lists, but you passed it: ' + elements);\n }\n\n /**\n * Create a dictionary of settable range properties from `attrs`.\n *\n * @param {Object|String|Range} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Range.isRange(a)) {\n return {\n anchor: Point.createProperties(a.anchor),\n focus: Point.createProperties(a.focus)\n };\n }\n\n if (isPlainObject(a)) {\n var p = {};\n if ('anchor' in a) p.anchor = Point.create(a.anchor);\n if ('focus' in a) p.focus = Point.create(a.focus);\n return p;\n }\n\n throw new Error('`Range.createProperties` only accepts objects, decorations, ranges or selections, but you passed it: ' + a);\n }\n\n /**\n * Create a `Range` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Range}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var anchor = object.anchor,\n focus = object.focus;\n\n var range = new Range({\n anchor: Point.fromJSON(anchor || {}),\n focus: Point.fromJSON(focus || {})\n });\n\n return range;\n }\n\n /**\n * Check if a `value` is a `Range`, or is range-like.\n *\n * @param {Any} value\n * @return {Boolean}\n */\n\n }, {\n key: 'isRange',\n value: function isRange(value) {\n return isObject('range', value) || Decoration.isDecoration(value) || Selection.isSelection(value);\n }\n }]);\n return Range;\n}(Record(DEFAULTS$8));\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$9 = {\n anchor: undefined,\n focus: undefined,\n isFocused: undefined,\n marks: undefined\n\n /**\n * Selection.\n *\n * @type {Selection}\n */\n\n};\nvar Selection = function (_Record) {\n inherits(Selection, _Record);\n\n function Selection() {\n classCallCheck(this, Selection);\n return possibleConstructorReturn(this, (Selection.__proto__ || Object.getPrototypeOf(Selection)).apply(this, arguments));\n }\n\n createClass(Selection, [{\n key: 'setIsFocused',\n\n\n /**\n * Set the `isFocused` property to a new `value`.\n *\n * @param {Boolean} value\n * @return {Selection}\n */\n\n value: function setIsFocused(value) {\n var selection = this.set('isFocused', value);\n return selection;\n }\n\n /**\n * Set the `marks` property to a new set of `marks`.\n *\n * @param {Set} marks\n * @return {Selection}\n */\n\n }, {\n key: 'setMarks',\n value: function setMarks(marks) {\n var selection = this.set('marks', marks);\n return selection;\n }\n\n /**\n * Set new `properties` on the selection.\n *\n * @param {Object|Range|Selection} properties\n * @return {Range}\n */\n\n }, {\n key: 'setProperties',\n value: function setProperties(properties) {\n properties = Selection.createProperties(properties);\n var _properties = properties,\n anchor = _properties.anchor,\n focus = _properties.focus,\n props = objectWithoutProperties(_properties, ['anchor', 'focus']);\n\n\n if (anchor) {\n props.anchor = Point.create(anchor);\n }\n\n if (focus) {\n props.focus = Point.create(focus);\n }\n\n var selection = this.merge(props);\n return selection;\n }\n\n /**\n * Return a JSON representation of the selection.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var object = {\n object: this.object,\n anchor: this.anchor.toJSON(options),\n focus: this.focus.toJSON(options),\n isFocused: this.isFocused,\n marks: this.marks == null ? null : this.marks.toArray().map(function (m) {\n return m.toJSON();\n })\n };\n\n return object;\n }\n }, {\n key: 'isBlurred',\n\n\n /**\n * Check whether the selection is blurred.\n *\n * @return {Boolean}\n */\n\n get: function get$$1() {\n return !this.isFocused;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Selection` with `attrs`.\n *\n * @param {Object|Selection} attrs\n * @return {Selection}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Selection.isSelection(attrs)) {\n return attrs;\n }\n\n if (Range.isRange(attrs)) {\n return Selection.fromJSON(Range.createProperties(attrs));\n }\n\n if (isPlainObject(attrs)) {\n return Selection.fromJSON(attrs);\n }\n\n throw new Error('`Selection.create` only accepts objects, ranges or selections, but you passed it: ' + attrs);\n }\n\n /**\n * Create a dictionary of settable selection properties from `attrs`.\n *\n * @param {Object|String|Selection} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Selection.isSelection(a)) {\n return {\n anchor: Point.createProperties(a.anchor),\n focus: Point.createProperties(a.focus),\n isFocused: a.isFocused,\n marks: a.marks\n };\n }\n\n if (Range.isRange(a)) {\n return {\n anchor: Point.createProperties(a.anchor),\n focus: Point.createProperties(a.focus)\n };\n }\n\n if (isPlainObject(a)) {\n var p = {};\n if ('anchor' in a) p.anchor = Point.create(a.anchor);\n if ('focus' in a) p.focus = Point.create(a.focus);\n if ('isFocused' in a) p.isFocused = a.isFocused;\n if ('marks' in a) p.marks = a.marks == null ? null : Mark.createSet(a.marks);\n return p;\n }\n\n throw new Error('`Selection.createProperties` only accepts objects, ranges or selections, but you passed it: ' + a);\n }\n\n /**\n * Create a `Selection` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Selection}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var anchor = object.anchor,\n focus = object.focus,\n _object$isFocused = object.isFocused,\n isFocused = _object$isFocused === undefined ? false : _object$isFocused,\n _object$marks = object.marks,\n marks = _object$marks === undefined ? null : _object$marks;\n\n var selection = new Selection({\n anchor: Point.fromJSON(anchor || {}),\n focus: Point.fromJSON(focus || {}),\n isFocused: isFocused,\n marks: marks == null ? null : new Set(marks.map(Mark.fromJSON))\n });\n\n return selection;\n }\n }]);\n return Selection;\n}(Record(DEFAULTS$9));\n\nvar Changes$4 = {};\n\nChanges$4.blur = function (change) {\n change.select({ isFocused: false });\n};\n\nChanges$4.deselect = function (change) {\n var range = Selection.create();\n change.select(range);\n};\n\nChanges$4.focus = function (change) {\n change.select({ isFocused: true });\n};\n\nChanges$4.flip = function (change) {\n change.call(proxy, 'flip');\n};\n\nChanges$4.moveAnchorBackward = function (change) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n change.call.apply(change, [pointBackward, 'anchor'].concat(args));\n};\n\nChanges$4.moveAnchorForward = function (change) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n change.call.apply(change, [pointForward, 'anchor'].concat(args));\n};\n\nChanges$4.moveAnchorTo = function (change) {\n for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n change.call.apply(change, [proxy, 'moveAnchorTo'].concat(args));\n};\n\nChanges$4.moveAnchorToEndOfBlock = function (change) {\n change.call(pointEdgeObject, 'anchor', 'end', 'block');\n};\n\nChanges$4.moveAnchorToEndOfInline = function (change) {\n change.call(pointEdgeObject, 'anchor', 'end', 'inline');\n};\n\nChanges$4.moveAnchorToEndOfDocument = function (change) {\n change.moveAnchorToEndOfNode(change.value.document).moveToAnchor();\n};\n\nChanges$4.moveAnchorToEndOfNextBlock = function (change) {\n change.call(pointEdgeSideObject, 'anchor', 'end', 'next', 'block');\n};\n\nChanges$4.moveAnchorToEndOfNextInline = function (change) {\n change.call(pointEdgeSideObject, 'anchor', 'end', 'next', 'inline');\n};\n\nChanges$4.moveAnchorToEndOfNextText = function (change) {\n change.call(pointEdgeSideObject, 'anchor', 'end', 'next', 'text');\n};\n\nChanges$4.moveAnchorToEndOfNode = function (change) {\n for (var _len4 = arguments.length, args = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n change.call.apply(change, [proxy, 'moveAnchorToEndOfNode'].concat(args));\n};\n\nChanges$4.moveAnchorToEndOfPreviousBlock = function (change) {\n change.call(pointEdgeSideObject, 'anchor', 'end', 'previous', 'block');\n};\n\nChanges$4.moveAnchorToEndOfPreviousInline = function (change) {\n change.call(pointEdgeSideObject, 'anchor', 'end', 'previous', 'inline');\n};\n\nChanges$4.moveAnchorToEndOfPreviousText = function (change) {\n change.call(pointEdgeSideObject, 'anchor', 'end', 'previous', 'text');\n};\n\nChanges$4.moveAnchorToEndOfText = function (change) {\n change.call(pointEdgeObject, 'anchor', 'end', 'text');\n};\n\nChanges$4.moveAnchorToStartOfBlock = function (change) {\n change.call(pointEdgeObject, 'anchor', 'start', 'block');\n};\n\nChanges$4.moveAnchorToStartOfDocument = function (change) {\n change.moveAnchorToStartOfNode(change.value.document).moveToAnchor();\n};\n\nChanges$4.moveAnchorToStartOfInline = function (change) {\n change.call(pointEdgeObject, 'anchor', 'start', 'inline');\n};\n\nChanges$4.moveAnchorToStartOfNextBlock = function (change) {\n change.call(pointEdgeSideObject, 'anchor', 'start', 'next', 'block');\n};\n\nChanges$4.moveAnchorToStartOfNextInline = function (change) {\n change.call(pointEdgeSideObject, 'anchor', 'start', 'next', 'inline');\n};\n\nChanges$4.moveAnchorToStartOfNextText = function (change) {\n change.call(pointEdgeSideObject, 'anchor', 'start', 'next', 'text');\n};\n\nChanges$4.moveAnchorToStartOfNode = function (change) {\n for (var _len5 = arguments.length, args = Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n args[_key5 - 1] = arguments[_key5];\n }\n\n change.call.apply(change, [proxy, 'moveAnchorToStartOfNode'].concat(args));\n};\n\nChanges$4.moveAnchorToStartOfPreviousBlock = function (change) {\n change.call(pointEdgeSideObject, 'anchor', 'start', 'previous', 'block');\n};\n\nChanges$4.moveAnchorToStartOfPreviousInline = function (change) {\n change.call(pointEdgeSideObject, 'anchor', 'start', 'previous', 'inline');\n};\n\nChanges$4.moveAnchorToStartOfPreviousText = function (change) {\n change.call(pointEdgeSideObject, 'anchor', 'start', 'previous', 'text');\n};\n\nChanges$4.moveAnchorToStartOfText = function (change) {\n change.call(pointEdgeObject, 'anchor', 'start', 'text');\n};\n\nChanges$4.moveBackward = function (change) {\n var _change$moveAnchorBac;\n\n for (var _len6 = arguments.length, args = Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) {\n args[_key6 - 1] = arguments[_key6];\n }\n\n (_change$moveAnchorBac = change.moveAnchorBackward.apply(change, args)).moveFocusBackward.apply(_change$moveAnchorBac, args);\n};\n\nChanges$4.moveEndBackward = function (change) {\n for (var _len7 = arguments.length, args = Array(_len7 > 1 ? _len7 - 1 : 0), _key7 = 1; _key7 < _len7; _key7++) {\n args[_key7 - 1] = arguments[_key7];\n }\n\n change.call.apply(change, [pointBackward, 'end'].concat(args));\n};\n\nChanges$4.moveEndForward = function (change) {\n for (var _len8 = arguments.length, args = Array(_len8 > 1 ? _len8 - 1 : 0), _key8 = 1; _key8 < _len8; _key8++) {\n args[_key8 - 1] = arguments[_key8];\n }\n\n change.call.apply(change, [pointForward, 'end'].concat(args));\n};\n\nChanges$4.moveEndTo = function (change) {\n for (var _len9 = arguments.length, args = Array(_len9 > 1 ? _len9 - 1 : 0), _key9 = 1; _key9 < _len9; _key9++) {\n args[_key9 - 1] = arguments[_key9];\n }\n\n change.call.apply(change, [proxy, 'moveEndTo'].concat(args));\n};\n\nChanges$4.moveEndToEndOfBlock = function (change) {\n change.call(pointEdgeObject, 'end', 'end', 'block');\n};\n\nChanges$4.moveEndToEndOfDocument = function (change) {\n change.moveEndToEndOfNode(change.value.document).moveToEnd();\n};\n\nChanges$4.moveEndToEndOfInline = function (change) {\n change.call(pointEdgeObject, 'end', 'end', 'inline');\n};\n\nChanges$4.moveEndToEndOfNextBlock = function (change) {\n change.call(pointEdgeSideObject, 'end', 'end', 'next', 'block');\n};\n\nChanges$4.moveEndToEndOfNextInline = function (change) {\n change.call(pointEdgeSideObject, 'end', 'end', 'next', 'inline');\n};\n\nChanges$4.moveEndToEndOfNextText = function (change) {\n change.call(pointEdgeSideObject, 'end', 'end', 'next', 'text');\n};\n\nChanges$4.moveEndToEndOfNode = function (change) {\n for (var _len10 = arguments.length, args = Array(_len10 > 1 ? _len10 - 1 : 0), _key10 = 1; _key10 < _len10; _key10++) {\n args[_key10 - 1] = arguments[_key10];\n }\n\n change.call.apply(change, [proxy, 'moveEndToEndOfNode'].concat(args));\n};\n\nChanges$4.moveEndToEndOfPreviousBlock = function (change) {\n change.call(pointEdgeSideObject, 'end', 'end', 'previous', 'block');\n};\n\nChanges$4.moveEndToEndOfPreviousInline = function (change) {\n change.call(pointEdgeSideObject, 'end', 'end', 'previous', 'inline');\n};\n\nChanges$4.moveEndToEndOfPreviousText = function (change) {\n change.call(pointEdgeSideObject, 'end', 'end', 'previous', 'text');\n};\n\nChanges$4.moveEndToEndOfText = function (change) {\n change.call(pointEdgeObject, 'end', 'end', 'text');\n};\n\nChanges$4.moveEndToStartOfBlock = function (change) {\n change.call(pointEdgeObject, 'end', 'start', 'block');\n};\n\nChanges$4.moveEndToStartOfDocument = function (change) {\n change.moveEndToStartOfNode(change.value.document).moveToEnd();\n};\n\nChanges$4.moveEndToStartOfInline = function (change) {\n change.call(pointEdgeObject, 'end', 'start', 'inline');\n};\n\nChanges$4.moveEndToStartOfNextBlock = function (change) {\n change.call(pointEdgeSideObject, 'end', 'start', 'next', 'block');\n};\n\nChanges$4.moveEndToStartOfNextInline = function (change) {\n change.call(pointEdgeSideObject, 'end', 'start', 'next', 'inline');\n};\n\nChanges$4.moveEndToStartOfNextText = function (change) {\n change.call(pointEdgeSideObject, 'end', 'start', 'next', 'text');\n};\n\nChanges$4.moveEndToStartOfNode = function (change) {\n for (var _len11 = arguments.length, args = Array(_len11 > 1 ? _len11 - 1 : 0), _key11 = 1; _key11 < _len11; _key11++) {\n args[_key11 - 1] = arguments[_key11];\n }\n\n change.call.apply(change, [proxy, 'moveEndToStartOfNode'].concat(args));\n};\n\nChanges$4.moveEndToStartOfPreviousBlock = function (change) {\n change.call(pointEdgeSideObject, 'end', 'start', 'previous', 'block');\n};\n\nChanges$4.moveEndToStartOfPreviousInline = function (change) {\n change.call(pointEdgeSideObject, 'end', 'start', 'previous', 'inline');\n};\n\nChanges$4.moveEndToStartOfPreviousText = function (change) {\n change.call(pointEdgeSideObject, 'end', 'start', 'previous', 'text');\n};\n\nChanges$4.moveEndToStartOfText = function (change) {\n change.call(pointEdgeObject, 'end', 'start', 'text');\n};\n\nChanges$4.moveFocusBackward = function (change) {\n for (var _len12 = arguments.length, args = Array(_len12 > 1 ? _len12 - 1 : 0), _key12 = 1; _key12 < _len12; _key12++) {\n args[_key12 - 1] = arguments[_key12];\n }\n\n change.call.apply(change, [pointBackward, 'focus'].concat(args));\n};\n\nChanges$4.moveFocusForward = function (change) {\n for (var _len13 = arguments.length, args = Array(_len13 > 1 ? _len13 - 1 : 0), _key13 = 1; _key13 < _len13; _key13++) {\n args[_key13 - 1] = arguments[_key13];\n }\n\n change.call.apply(change, [pointForward, 'focus'].concat(args));\n};\n\nChanges$4.moveFocusTo = function (change) {\n for (var _len14 = arguments.length, args = Array(_len14 > 1 ? _len14 - 1 : 0), _key14 = 1; _key14 < _len14; _key14++) {\n args[_key14 - 1] = arguments[_key14];\n }\n\n change.call.apply(change, [proxy, 'moveFocusTo'].concat(args));\n};\n\nChanges$4.moveFocusToEndOfBlock = function (change) {\n change.call(pointEdgeObject, 'focus', 'end', 'block');\n};\n\nChanges$4.moveFocusToEndOfDocument = function (change) {\n change.moveFocusToEndOfNode(change.value.document).moveToFocus();\n};\n\nChanges$4.moveFocusToEndOfInline = function (change) {\n change.call(pointEdgeObject, 'focus', 'end', 'inline');\n};\n\nChanges$4.moveFocusToEndOfNextBlock = function (change) {\n change.call(pointEdgeSideObject, 'focus', 'end', 'next', 'block');\n};\n\nChanges$4.moveFocusToEndOfNextInline = function (change) {\n change.call(pointEdgeSideObject, 'focus', 'end', 'next', 'inline');\n};\n\nChanges$4.moveFocusToEndOfNextText = function (change) {\n change.call(pointEdgeSideObject, 'focus', 'end', 'next', 'text');\n};\n\nChanges$4.moveFocusToEndOfNode = function (change) {\n for (var _len15 = arguments.length, args = Array(_len15 > 1 ? _len15 - 1 : 0), _key15 = 1; _key15 < _len15; _key15++) {\n args[_key15 - 1] = arguments[_key15];\n }\n\n change.call.apply(change, [proxy, 'moveFocusToEndOfNode'].concat(args));\n};\n\nChanges$4.moveFocusToEndOfPreviousBlock = function (change) {\n change.call(pointEdgeSideObject, 'focus', 'end', 'previous', 'block');\n};\n\nChanges$4.moveFocusToEndOfPreviousInline = function (change) {\n change.call(pointEdgeSideObject, 'focus', 'end', 'previous', 'inline');\n};\n\nChanges$4.moveFocusToEndOfPreviousText = function (change) {\n change.call(pointEdgeSideObject, 'focus', 'end', 'previous', 'text');\n};\n\nChanges$4.moveFocusToEndOfText = function (change) {\n change.call(pointEdgeObject, 'focus', 'end', 'text');\n};\n\nChanges$4.moveFocusToStartOfBlock = function (change) {\n change.call(pointEdgeObject, 'focus', 'start', 'block');\n};\n\nChanges$4.moveFocusToStartOfDocument = function (change) {\n change.moveFocusToStartOfNode(change.value.document).moveToFocus();\n};\n\nChanges$4.moveFocusToStartOfInline = function (change) {\n change.call(pointEdgeObject, 'focus', 'start', 'inline');\n};\n\nChanges$4.moveFocusToStartOfNextBlock = function (change) {\n change.call(pointEdgeSideObject, 'focus', 'start', 'next', 'block');\n};\n\nChanges$4.moveFocusToStartOfNextInline = function (change) {\n change.call(pointEdgeSideObject, 'focus', 'start', 'next', 'inline');\n};\n\nChanges$4.moveFocusToStartOfNextText = function (change) {\n change.call(pointEdgeSideObject, 'focus', 'start', 'next', 'text');\n};\n\nChanges$4.moveFocusToStartOfNode = function (change) {\n for (var _len16 = arguments.length, args = Array(_len16 > 1 ? _len16 - 1 : 0), _key16 = 1; _key16 < _len16; _key16++) {\n args[_key16 - 1] = arguments[_key16];\n }\n\n change.call.apply(change, [proxy, 'moveFocusToStartOfNode'].concat(args));\n};\n\nChanges$4.moveFocusToStartOfPreviousBlock = function (change) {\n change.call(pointEdgeSideObject, 'focus', 'start', 'previous', 'block');\n};\n\nChanges$4.moveFocusToStartOfPreviousInline = function (change) {\n change.call(pointEdgeSideObject, 'focus', 'start', 'previous', 'inline');\n};\n\nChanges$4.moveFocusToStartOfPreviousText = function (change) {\n change.call(pointEdgeSideObject, 'focus', 'start', 'previous', 'text');\n};\n\nChanges$4.moveFocusToStartOfText = function (change) {\n change.call(pointEdgeObject, 'focus', 'start', 'text');\n};\n\nChanges$4.moveForward = function (change) {\n var _change$moveAnchorFor;\n\n for (var _len17 = arguments.length, args = Array(_len17 > 1 ? _len17 - 1 : 0), _key17 = 1; _key17 < _len17; _key17++) {\n args[_key17 - 1] = arguments[_key17];\n }\n\n (_change$moveAnchorFor = change.moveAnchorForward.apply(change, args)).moveFocusForward.apply(_change$moveAnchorFor, args);\n};\n\nChanges$4.moveStartBackward = function (change) {\n for (var _len18 = arguments.length, args = Array(_len18 > 1 ? _len18 - 1 : 0), _key18 = 1; _key18 < _len18; _key18++) {\n args[_key18 - 1] = arguments[_key18];\n }\n\n change.call.apply(change, [pointBackward, 'start'].concat(args));\n};\n\nChanges$4.moveStartForward = function (change) {\n for (var _len19 = arguments.length, args = Array(_len19 > 1 ? _len19 - 1 : 0), _key19 = 1; _key19 < _len19; _key19++) {\n args[_key19 - 1] = arguments[_key19];\n }\n\n change.call.apply(change, [pointForward, 'start'].concat(args));\n};\n\nChanges$4.moveStartTo = function (change) {\n for (var _len20 = arguments.length, args = Array(_len20 > 1 ? _len20 - 1 : 0), _key20 = 1; _key20 < _len20; _key20++) {\n args[_key20 - 1] = arguments[_key20];\n }\n\n change.call.apply(change, [proxy, 'moveStartTo'].concat(args));\n};\n\nChanges$4.moveStartToEndOfBlock = function (change) {\n change.call(pointEdgeObject, 'start', 'end', 'block');\n};\n\nChanges$4.moveStartToEndOfDocument = function (change) {\n change.moveStartToEndOfNode(change.value.document).moveToStart();\n};\n\nChanges$4.moveStartToEndOfInline = function (change) {\n change.call(pointEdgeObject, 'start', 'end', 'inline');\n};\n\nChanges$4.moveStartToEndOfNextBlock = function (change) {\n change.call(pointEdgeSideObject, 'start', 'end', 'next', 'block');\n};\n\nChanges$4.moveStartToEndOfNextInline = function (change) {\n change.call(pointEdgeSideObject, 'start', 'end', 'next', 'inline');\n};\n\nChanges$4.moveStartToEndOfNextText = function (change) {\n change.call(pointEdgeSideObject, 'start', 'end', 'next', 'text');\n};\n\nChanges$4.moveStartToEndOfNode = function (change) {\n for (var _len21 = arguments.length, args = Array(_len21 > 1 ? _len21 - 1 : 0), _key21 = 1; _key21 < _len21; _key21++) {\n args[_key21 - 1] = arguments[_key21];\n }\n\n change.call.apply(change, [proxy, 'moveStartToEndOfNode'].concat(args));\n};\n\nChanges$4.moveStartToEndOfPreviousBlock = function (change) {\n change.call(pointEdgeSideObject, 'start', 'end', 'previous', 'block');\n};\n\nChanges$4.moveStartToEndOfPreviousInline = function (change) {\n change.call(pointEdgeSideObject, 'start', 'end', 'previous', 'inline');\n};\n\nChanges$4.moveStartToEndOfPreviousText = function (change) {\n change.call(pointEdgeSideObject, 'start', 'end', 'previous', 'text');\n};\n\nChanges$4.moveStartToEndOfText = function (change) {\n change.call(pointEdgeObject, 'start', 'end', 'text');\n};\n\nChanges$4.moveStartToStartOfBlock = function (change) {\n change.call(pointEdgeObject, 'start', 'start', 'block');\n};\n\nChanges$4.moveStartToStartOfDocument = function (change) {\n change.moveStartToStartOfNode(change.value.document).moveToStart();\n};\n\nChanges$4.moveStartToStartOfInline = function (change) {\n change.call(pointEdgeObject, 'start', 'start', 'inline');\n};\n\nChanges$4.moveStartToStartOfNextBlock = function (change) {\n change.call(pointEdgeSideObject, 'start', 'start', 'next', 'block');\n};\n\nChanges$4.moveStartToStartOfNextInline = function (change) {\n change.call(pointEdgeSideObject, 'start', 'start', 'next', 'inline');\n};\n\nChanges$4.moveStartToStartOfNextText = function (change) {\n change.call(pointEdgeSideObject, 'start', 'start', 'next', 'text');\n};\n\nChanges$4.moveStartToStartOfNode = function (change) {\n for (var _len22 = arguments.length, args = Array(_len22 > 1 ? _len22 - 1 : 0), _key22 = 1; _key22 < _len22; _key22++) {\n args[_key22 - 1] = arguments[_key22];\n }\n\n change.call.apply(change, [proxy, 'moveStartToStartOfNode'].concat(args));\n};\n\nChanges$4.moveStartToStartOfPreviousBlock = function (change) {\n change.call(pointEdgeSideObject, 'start', 'start', 'previous', 'block');\n};\n\nChanges$4.moveStartToStartOfPreviousInline = function (change) {\n change.call(pointEdgeSideObject, 'start', 'start', 'previous', 'inline');\n};\n\nChanges$4.moveStartToStartOfPreviousText = function (change) {\n change.call(pointEdgeSideObject, 'start', 'start', 'previous', 'text');\n};\n\nChanges$4.moveStartToStartOfText = function (change) {\n change.call(pointEdgeObject, 'start', 'start', 'text');\n};\n\nChanges$4.moveTo = function (change) {\n for (var _len23 = arguments.length, args = Array(_len23 > 1 ? _len23 - 1 : 0), _key23 = 1; _key23 < _len23; _key23++) {\n args[_key23 - 1] = arguments[_key23];\n }\n\n change.call.apply(change, [proxy, 'moveTo'].concat(args));\n};\n\nChanges$4.moveToAnchor = function (change) {\n change.call(proxy, 'moveToAnchor');\n};\n\nChanges$4.moveToEnd = function (change) {\n change.call(proxy, 'moveToEnd');\n};\n\nChanges$4.moveToEndOfBlock = function (change) {\n change.moveEndToEndOfBlock().moveToEnd();\n};\n\nChanges$4.moveToEndOfDocument = function (change) {\n change.moveEndToEndOfNode(change.value.document).moveToEnd();\n};\n\nChanges$4.moveToEndOfInline = function (change) {\n change.moveEndToEndOfInline().moveToEnd();\n};\n\nChanges$4.moveToEndOfNextBlock = function (change) {\n change.moveEndToEndOfNextBlock().moveToEnd();\n};\n\nChanges$4.moveToEndOfNextInline = function (change) {\n change.moveEndToEndOfNextInline().moveToEnd();\n};\n\nChanges$4.moveToEndOfNextText = function (change) {\n change.moveEndToEndOfNextText().moveToEnd();\n};\n\nChanges$4.moveToEndOfNode = function (change) {\n for (var _len24 = arguments.length, args = Array(_len24 > 1 ? _len24 - 1 : 0), _key24 = 1; _key24 < _len24; _key24++) {\n args[_key24 - 1] = arguments[_key24];\n }\n\n change.call.apply(change, [proxy, 'moveToEndOfNode'].concat(args));\n};\n\nChanges$4.moveToEndOfPreviousBlock = function (change) {\n change.moveStartToEndOfPreviousBlock().moveToStart();\n};\n\nChanges$4.moveToEndOfPreviousInline = function (change) {\n change.moveStartToEndOfPreviousInline().moveToStart();\n};\n\nChanges$4.moveToEndOfPreviousText = function (change) {\n change.moveStartToEndOfPreviousText().moveToStart();\n};\n\nChanges$4.moveToEndOfText = function (change) {\n change.moveEndToEndOfText().moveToEnd();\n};\n\nChanges$4.moveToFocus = function (change) {\n change.call(proxy, 'moveToFocus');\n};\n\nChanges$4.moveToRangeOfDocument = function (change) {\n change.moveToRangeOfNode(change.value.document);\n};\n\nChanges$4.moveToRangeOfNode = function (change) {\n for (var _len25 = arguments.length, args = Array(_len25 > 1 ? _len25 - 1 : 0), _key25 = 1; _key25 < _len25; _key25++) {\n args[_key25 - 1] = arguments[_key25];\n }\n\n change.call.apply(change, [proxy, 'moveToRangeOfNode'].concat(args));\n};\n\nChanges$4.moveToStart = function (change) {\n change.call(proxy, 'moveToStart');\n};\n\nChanges$4.moveToStartOfBlock = function (change) {\n change.moveStartToStartOfBlock().moveToStart();\n};\n\nChanges$4.moveToStartOfDocument = function (change) {\n change.moveStartToStartOfNode(change.value.document).moveToStart();\n};\n\nChanges$4.moveToStartOfInline = function (change) {\n change.moveStartToStartOfInline().moveToStart();\n};\n\nChanges$4.moveToStartOfNextBlock = function (change) {\n change.moveEndToStartOfNextBlock().moveToEnd();\n};\n\nChanges$4.moveToStartOfNextInline = function (change) {\n change.moveEndToStartOfNextInline().moveToEnd();\n};\n\nChanges$4.moveToStartOfNextText = function (change) {\n change.moveEndToStartOfNextText().moveToEnd();\n};\n\nChanges$4.moveToStartOfNode = function (change) {\n for (var _len26 = arguments.length, args = Array(_len26 > 1 ? _len26 - 1 : 0), _key26 = 1; _key26 < _len26; _key26++) {\n args[_key26 - 1] = arguments[_key26];\n }\n\n change.call.apply(change, [proxy, 'moveToStartOfNode'].concat(args));\n};\n\nChanges$4.moveToStartOfPreviousBlock = function (change) {\n change.moveStartToStartOfPreviousBlock().moveToStart();\n};\n\nChanges$4.moveToStartOfPreviousInline = function (change) {\n change.moveStartToStartOfPreviousInline().moveToStart();\n};\n\nChanges$4.moveToStartOfPreviousText = function (change) {\n change.moveStartToStartOfPreviousText().moveToStart();\n};\n\nChanges$4.moveToStartOfText = function (change) {\n change.moveStartToStartOfText().moveToStart();\n};\n\nChanges$4.select = function (change, properties) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n properties = Selection.createProperties(properties);\n var _options$snapshot = options.snapshot,\n snapshot = _options$snapshot === undefined ? false : _options$snapshot;\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n\n var props = {};\n var next = selection.setProperties(properties);\n next = document.resolveSelection(next);\n\n // Re-compute the properties, to ensure that we get their normalized values.\n properties = pick(next, Object.keys(properties));\n\n // Remove any properties that are already equal to the current selection. And\n // create a dictionary of the previous values for all of the properties that\n // are being changed, for the inverse operation.\n for (var k in properties) {\n if (snapshot === true || !is(properties[k], selection[k])) {\n props[k] = properties[k];\n }\n }\n\n // If the selection moves, clear any marks, unless the new selection\n // properties change the marks in some way.\n if (selection.marks && !props.marks && (props.anchor || props.focus)) {\n props.marks = null;\n }\n\n // If there are no new properties to set, abort to avoid extra operations.\n if (Object.keys(props).length === 0) {\n return;\n }\n\n change.applyOperation({\n type: 'set_selection',\n value: value,\n properties: props,\n selection: selection.toJSON()\n }, snapshot ? { skip: false, merge: false } : {});\n};\n\nChanges$4.setAnchor = function (change) {\n for (var _len27 = arguments.length, args = Array(_len27 > 1 ? _len27 - 1 : 0), _key27 = 1; _key27 < _len27; _key27++) {\n args[_key27 - 1] = arguments[_key27];\n }\n\n change.call.apply(change, [proxy, 'setAnchor'].concat(args));\n};\n\nChanges$4.setEnd = function (change) {\n for (var _len28 = arguments.length, args = Array(_len28 > 1 ? _len28 - 1 : 0), _key28 = 1; _key28 < _len28; _key28++) {\n args[_key28 - 1] = arguments[_key28];\n }\n\n change.call.apply(change, [proxy, 'setEnd'].concat(args));\n};\n\nChanges$4.setFocus = function (change) {\n for (var _len29 = arguments.length, args = Array(_len29 > 1 ? _len29 - 1 : 0), _key29 = 1; _key29 < _len29; _key29++) {\n args[_key29 - 1] = arguments[_key29];\n }\n\n change.call.apply(change, [proxy, 'setFocus'].concat(args));\n};\n\nChanges$4.setStart = function (change) {\n for (var _len30 = arguments.length, args = Array(_len30 > 1 ? _len30 - 1 : 0), _key30 = 1; _key30 < _len30; _key30++) {\n args[_key30 - 1] = arguments[_key30];\n }\n\n change.call.apply(change, [proxy, 'setStart'].concat(args));\n};\n\nChanges$4.snapshotSelection = function (change) {\n change.withoutMerging(function (c) {\n return c.select(change.value.selection, { snapshot: true });\n });\n};\n\n/**\n * Helpers.\n */\n\nfunction proxy(change, method) {\n var _change$value$selecti;\n\n for (var _len31 = arguments.length, args = Array(_len31 > 2 ? _len31 - 2 : 0), _key31 = 2; _key31 < _len31; _key31++) {\n args[_key31 - 2] = arguments[_key31];\n }\n\n var range = (_change$value$selecti = change.value.selection)[method].apply(_change$value$selecti, args);\n change.select(range);\n}\n\nfunction pointEdgeObject(change, point, edge, object) {\n var Point = point.slice(0, 1).toUpperCase() + point.slice(1);\n var Edge = edge.slice(0, 1).toUpperCase() + edge.slice(1);\n var Object = object.slice(0, 1).toUpperCase() + object.slice(1);\n var method = 'move' + Point + 'To' + Edge + 'OfNode';\n var getNode = object == 'text' ? 'getNode' : 'getClosest' + Object;\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n\n var p = selection[point];\n var node = document[getNode](p.key);\n if (!node) return;\n change[method](node);\n}\n\nfunction pointEdgeSideObject(change, point, edge, side, object) {\n var Point = point.slice(0, 1).toUpperCase() + point.slice(1);\n var Edge = edge.slice(0, 1).toUpperCase() + edge.slice(1);\n var Side = side.slice(0, 1).toUpperCase() + side.slice(1);\n var Object = object.slice(0, 1).toUpperCase() + object.slice(1);\n var method = 'move' + Point + 'To' + Edge + 'OfNode';\n var getNode = object == 'text' ? 'getNode' : 'getClosest' + Object;\n var getDirectionNode = 'get' + Side + Object;\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n\n var p = selection[point];\n var node = document[getNode](p.key);\n if (!node) return;\n var target = document[getDirectionNode](node.key);\n if (!target) return;\n change[method](target);\n}\n\nfunction pointBackward(change, point) {\n var n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n if (n === 0) return;\n if (n < 0) return pointForward(change, point, -n);\n\n var Point = point.slice(0, 1).toUpperCase() + point.slice(1);\n var value = change.value;\n var document = value.document,\n selection = value.selection,\n schema = value.schema;\n\n var p = selection[point];\n var hasVoidParent = document.hasVoidParent(p.path, schema);\n\n // what is this?\n if (!hasVoidParent && p.offset - n >= 0) {\n var range = selection['move' + Point + 'Backward'](n);\n change.select(range);\n return;\n }\n\n var previous = document.getPreviousText(p.path);\n if (!previous) return;\n\n var block = document.getClosestBlock(p.path);\n var isInBlock = block.hasNode(previous.key);\n var isPreviousInVoid = previous && document.hasVoidParent(previous.key, schema);\n change['move' + Point + 'ToEndOfNode'](previous);\n\n // when is this called?\n if (!hasVoidParent && !isPreviousInVoid && isInBlock) {\n var _range = change.value.selection['move' + Point + 'Backward'](n);\n change.select(_range);\n }\n}\n\nfunction pointForward(change, point) {\n var n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n if (n === 0) return;\n if (n < 0) return pointBackward(change, point, -n);\n\n var Point = point.slice(0, 1).toUpperCase() + point.slice(1);\n var value = change.value;\n var document = value.document,\n selection = value.selection,\n schema = value.schema;\n\n var p = selection[point];\n var text = document.getNode(p.path);\n var hasVoidParent = document.hasVoidParent(p.path, schema);\n\n // what is this?\n if (!hasVoidParent && p.offset + n <= text.text.length) {\n var range = selection['move' + Point + 'Forward'](n);\n change.select(range);\n return;\n }\n\n var next = document.getNextText(p.path);\n if (!next) return;\n\n var block = document.getClosestBlock(p.path);\n var isInBlock = block.hasNode(next.key);\n var isNextInVoid = document.hasVoidParent(next.key, schema);\n change['move' + Point + 'ToStartOfNode'](next);\n\n // when is this called?\n if (!hasVoidParent && !isNextInVoid && isInBlock) {\n var _range2 = change.value.selection['move' + Point + 'Forward'](n);\n change.select(_range2);\n }\n}\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug = Debug('slate:history');\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$10 = {\n redos: undefined,\n undos: undefined\n\n /**\n * History.\n *\n * @type {History}\n */\n\n};\nvar History = function (_Record) {\n inherits(History, _Record);\n\n function History() {\n classCallCheck(this, History);\n return possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).apply(this, arguments));\n }\n\n createClass(History, [{\n key: 'save',\n\n\n /**\n * Save an `operation` into the history.\n *\n * @param {Object} operation\n * @param {Object} options\n * @return {History}\n */\n\n value: function save(operation) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var history = this;\n var _history = history,\n undos = _history.undos,\n redos = _history.redos;\n var merge = options.merge,\n skip = options.skip;\n\n\n if (skip) {\n return history;\n }\n\n var prevBatch = undos.peek();\n var prevOperation = prevBatch && prevBatch.last();\n\n if (merge == null) {\n merge = shouldMerge(operation, prevOperation);\n }\n\n debug('save', { operation: operation, merge: merge });\n\n // If the `merge` flag is true, add the operation to the previous batch.\n if (merge && prevBatch) {\n var batch = prevBatch.push(operation);\n undos = undos.pop();\n undos = undos.push(batch);\n } else {\n // Otherwise, create a new batch with the operation.\n var _batch = new List([operation]);\n undos = undos.push(_batch);\n }\n\n // Constrain the history to 100 entries for memory's sake.\n if (undos.size > 100) {\n undos = undos.take(100);\n }\n\n // Clear the redos and update the history.\n redos = redos.clear();\n history = history.set('undos', undos).set('redos', redos);\n return history;\n }\n\n /**\n * Return a JSON representation of the history.\n *\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var object = {\n object: this.object,\n redos: this.redos.toJSON(),\n undos: this.undos.toJSON()\n };\n\n return object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `History` with `attrs`.\n *\n * @param {Object|History} attrs\n * @return {History}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (History.isHistory(attrs)) {\n return attrs;\n }\n\n if (isPlainObject(attrs)) {\n return History.fromJSON(attrs);\n }\n\n throw new Error('`History.create` only accepts objects or histories, but you passed it: ' + attrs);\n }\n\n /**\n * Create a list of `Operations` from `operations`.\n *\n * @param {Array|List} operations\n * @return {List}\n */\n\n }, {\n key: 'createOperationsList',\n value: function createOperationsList() {\n var operations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (List.isList(operations)) {\n return operations;\n }\n\n if (Array.isArray(operations)) {\n return new List(operations);\n }\n\n throw new Error('`History.createList` only accepts arrays or lists, but you passed it: ' + operations);\n }\n\n /**\n * Create a `History` from a JSON `object`.\n *\n * @param {Object} object\n * @return {History}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var _object$redos = object.redos,\n redos = _object$redos === undefined ? [] : _object$redos,\n _object$undos = object.undos,\n undos = _object$undos === undefined ? [] : _object$undos;\n\n\n var history = new History({\n redos: new Stack(redos.map(this.createOperationsList)),\n undos: new Stack(undos.map(this.createOperationsList))\n });\n\n return history;\n }\n }]);\n return History;\n}(Record(DEFAULTS$10));\n\n/**\n * Check whether to merge a new operation `o` into the previous operation `p`.\n *\n * @param {Object} o\n * @param {Object} p\n * @return {Boolean}\n */\n\nfunction shouldMerge(o, p) {\n if (!p) return false;\n\n var merge = o.type == 'set_selection' && p.type == 'set_selection' || o.type == 'insert_text' && p.type == 'insert_text' && o.offset == p.offset + p.text.length && o.path.equals(p.path) || o.type == 'remove_text' && p.type == 'remove_text' && o.offset + o.text.length == p.offset && o.path.equals(p.path);\n\n return merge;\n}\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$11 = {\n plugins: undefined\n\n /**\n * Stack.\n *\n * @type {Stack}\n */\n\n};\nvar Stack$1 = function (_Record) {\n inherits(Stack$$1, _Record);\n\n function Stack$$1() {\n classCallCheck(this, Stack$$1);\n return possibleConstructorReturn(this, (Stack$$1.__proto__ || Object.getPrototypeOf(Stack$$1)).apply(this, arguments));\n }\n\n createClass(Stack$$1, [{\n key: 'getPluginsWith',\n\n\n /**\n * Get all plugins with `property`.\n *\n * @param {String} property\n * @return {Array}\n */\n\n value: function getPluginsWith(property) {\n return this.plugins.filter(function (plugin) {\n return plugin[property] != null;\n });\n }\n\n /**\n * Iterate the plugins with `property`, returning the first non-null value.\n *\n * @param {String} property\n * @param {Any} ...args\n */\n\n }, {\n key: 'find',\n value: function find(property) {\n var plugins = this.getPluginsWith(property);\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = plugins[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var plugin = _step.value;\n\n var ret = plugin[property].apply(plugin, args);\n if (ret != null) return ret;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n\n /**\n * Iterate the plugins with `property`, returning all the non-null values.\n *\n * @param {String} property\n * @param {Any} ...args\n * @return {Array}\n */\n\n }, {\n key: 'map',\n value: function map(property) {\n var plugins = this.getPluginsWith(property);\n var array = [];\n\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = plugins[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var plugin = _step2.value;\n\n var ret = plugin[property].apply(plugin, args);\n if (ret != null) array.push(ret);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return array;\n }\n\n /**\n * Iterate the plugins with `property`, breaking on any a non-null values.\n *\n * @param {String} property\n * @param {Any} ...args\n */\n\n }, {\n key: 'run',\n value: function run(property) {\n var plugins = this.getPluginsWith(property);\n\n for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = plugins[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var plugin = _step3.value;\n\n var ret = plugin[property].apply(plugin, args);\n if (ret != null) return;\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n\n /**\n * Iterate the plugins with `property`, reducing to a set of React children.\n *\n * @param {String} property\n * @param {Object} props\n * @param {Any} ...args\n */\n\n }, {\n key: 'render',\n value: function render(property, props) {\n for (var _len4 = arguments.length, args = Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) {\n args[_key4 - 2] = arguments[_key4];\n }\n\n var plugins = this.getPluginsWith(property);\n return plugins.reduceRight(function (children, plugin) {\n if (!plugin[property]) return children;\n var ret = plugin[property].apply(plugin, [props].concat(args));\n if (ret == null) return children;\n props.children = ret;\n return ret;\n }, props.children === undefined ? null : props.children);\n }\n }], [{\n key: 'create',\n\n /**\n * Constructor.\n *\n * @param {Object} attrs\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _attrs$plugins = attrs.plugins,\n plugins = _attrs$plugins === undefined ? [] : _attrs$plugins;\n\n var stack = new Stack$$1({ plugins: plugins });\n return stack;\n }\n }]);\n return Stack$$1;\n}(Record(DEFAULTS$11));\n\n/**\n * Memoize read methods.\n */\n\nmemoize(Stack$1.prototype, ['getPluginsWith']);\n\n/**\n * Define a Slate error.\n *\n * @type {SlateError}\n */\n\nvar SlateError = function (_Error) {\n inherits(SlateError, _Error);\n\n function SlateError(code) {\n var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n classCallCheck(this, SlateError);\n\n var _this = possibleConstructorReturn(this, (SlateError.__proto__ || Object.getPrototypeOf(SlateError)).call(this, code));\n\n _this.code = code;\n\n for (var key in attrs) {\n _this[key] = attrs[key];\n }\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_this, _this.constructor);\n } else {\n _this.stack = new Error().stack;\n }\n return _this;\n }\n\n return SlateError;\n}(Error);\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$1 = Debug('slate:schema');\n\n/**\n * Define the core schema rules, order-sensitive.\n *\n * @type {Array}\n */\n\nvar CORE_RULES = [\n// Only allow block nodes in documents.\n{\n match: { object: 'document' },\n nodes: [{\n match: { object: 'block' }\n }]\n},\n\n// Only allow block nodes or inline and text nodes in blocks.\n{\n match: {\n object: 'block',\n first: { object: 'block' }\n },\n nodes: [{\n match: { object: 'block' }\n }]\n}, {\n match: {\n object: 'block',\n first: [{ object: 'inline' }, { object: 'text' }]\n },\n nodes: [{\n match: [{ object: 'inline' }, { object: 'text' }]\n }]\n},\n\n// Only allow inline and text nodes in inlines.\n{\n match: { object: 'inline' },\n nodes: [{ match: [{ object: 'inline' }, { object: 'text' }] }]\n},\n\n// Ensure that block and inline nodes have at least one text child.\n{\n match: [{ object: 'block' }, { object: 'inline' }],\n nodes: [{ min: 1 }],\n normalize: function normalize(change, error) {\n var code = error.code,\n node = error.node;\n\n if (code !== 'child_required') return;\n change.insertNodeByKey(node.key, 0, Text.create(), { normalize: false });\n }\n},\n\n// Ensure that inline nodes are surrounded by text nodes.\n{\n match: { object: 'block' },\n first: [{ object: 'block' }, { object: 'text' }],\n last: [{ object: 'block' }, { object: 'text' }],\n normalize: function normalize(change, error) {\n var code = error.code,\n node = error.node;\n\n var text = Text.create();\n var i = void 0;\n\n if (code === 'first_child_object_invalid') {\n i = 0;\n } else if (code === 'last_child_object_invalid') {\n i = node.nodes.size;\n } else {\n return;\n }\n\n change.insertNodeByKey(node.key, i, text, { normalize: false });\n }\n}, {\n match: { object: 'inline' },\n first: [{ object: 'block' }, { object: 'text' }],\n last: [{ object: 'block' }, { object: 'text' }],\n previous: [{ object: 'block' }, { object: 'text' }],\n next: [{ object: 'block' }, { object: 'text' }],\n normalize: function normalize(change, error) {\n var code = error.code,\n node = error.node,\n index = error.index;\n\n var text = Text.create();\n var i = void 0;\n\n if (code === 'first_child_object_invalid') {\n i = 0;\n } else if (code === 'last_child_object_invalid') {\n i = node.nodes.size;\n } else if (code === 'previous_sibling_object_invalid') {\n i = index;\n } else if (code === 'next_sibling_object_invalid') {\n i = index + 1;\n } else {\n return;\n }\n\n change.insertNodeByKey(node.key, i, text, { normalize: false });\n }\n},\n\n// Merge adjacent text nodes.\n{\n match: { object: 'text' },\n next: [{ object: 'block' }, { object: 'inline' }],\n normalize: function normalize(change, error) {\n var code = error.code,\n next = error.next;\n\n if (code !== 'next_sibling_object_invalid') return;\n change.mergeNodeByKey(next.key, { normalize: false });\n }\n}];\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$12 = {\n stack: undefined,\n rules: undefined\n\n /**\n * Schema.\n *\n * @type {Schema}\n */\n\n};\nvar Schema = function (_Record) {\n inherits(Schema, _Record);\n\n function Schema() {\n classCallCheck(this, Schema);\n return possibleConstructorReturn(this, (Schema.__proto__ || Object.getPrototypeOf(Schema)).apply(this, arguments));\n }\n\n createClass(Schema, [{\n key: 'getNodeRules',\n\n\n /**\n * Get the schema rules for a `node`.\n *\n * @param {Node} node\n * @return {Array}\n */\n\n value: function getNodeRules(node) {\n var rules = this.rules.filter(function (r) {\n return testRules(node, r.match);\n });\n return rules;\n }\n\n /**\n * Validate a `node` with the schema, returning an error if it's invalid.\n *\n * @param {Node} node\n * @return {Error|Void}\n */\n\n }, {\n key: 'validateNode',\n value: function validateNode(node) {\n var rules = this.getNodeRules(node);\n var failure = validateRules(node, rules, this.rules, { every: true });\n if (!failure) return;\n var error = new SlateError(failure.code, failure);\n return error;\n }\n\n /**\n * Test whether a `node` is valid against the schema.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\n }, {\n key: 'testNode',\n value: function testNode(node) {\n var error = this.validateNode(node);\n return !error;\n }\n\n /**\n * Assert that a `node` is valid against the schema.\n *\n * @param {Node} node\n * @throws\n */\n\n }, {\n key: 'assertNode',\n value: function assertNode(node) {\n var error = this.validateNode(node);\n if (error) throw error;\n }\n\n /**\n * Normalize a `node` with the schema, returning a function that will fix the\n * invalid node, or void if the node is valid.\n *\n * @param {Node} node\n * @return {Function|Void}\n */\n\n }, {\n key: 'normalizeNode',\n value: function normalizeNode(node) {\n var ret = this.stack.find('normalizeNode', node);\n if (ret) return ret;\n if (node.object == 'text') return;\n\n var error = this.validateNode(node);\n if (!error) return;\n\n return function (change) {\n debug$1('normalizing', { error: error });\n var rule = error.rule;\n var size = change.operations.size;\n\n // First run the user-provided `normalize` function if one exists...\n\n if (rule.normalize) {\n rule.normalize(change, error);\n }\n\n // If the `normalize` function did not add any operations to the change\n // object, it can't have normalized, so run the default one.\n if (change.operations.size === size) {\n defaultNormalize(change, error);\n }\n };\n }\n\n /**\n * Check if a mark is void.\n *\n * @param {Mark}\n * @return {Boolean}\n */\n\n }, {\n key: 'isAtomic',\n value: function isAtomic(mark) {\n var rule = this.rules.find(function (r) {\n return 'isAtomic' in r && testRules(mark, r.match);\n });\n\n return rule ? rule.isAtomic : false;\n }\n\n /**\n * Check if a node is void.\n *\n * @param {Node}\n * @return {Boolean}\n */\n\n }, {\n key: 'isVoid',\n value: function isVoid(node) {\n var rule = this.rules.find(function (r) {\n return 'isVoid' in r && testRules(node, r.match);\n });\n return rule ? rule.isVoid : false;\n }\n\n /**\n * Return a JSON representation of the schema.\n *\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var object = {\n object: this.object,\n rules: this.rules\n };\n\n return object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Schema` with `attrs`.\n *\n * @param {Object|Schema} attrs\n * @return {Schema}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Schema.isSchema(attrs)) {\n return attrs;\n }\n\n if (isPlainObject(attrs)) {\n return Schema.fromJSON(attrs);\n }\n\n throw new Error('`Schema.create` only accepts objects or schemas, but you passed it: ' + attrs);\n }\n\n /**\n * Create a `Schema` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Schema}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Schema.isSchema(object)) {\n return object;\n }\n\n var plugins = object.plugins ? object.plugins : [{ schema: object }];\n var rules = [].concat(CORE_RULES);\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = plugins[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var plugin = _step.value;\n var _plugin$schema = plugin.schema,\n schema = _plugin$schema === undefined ? {} : _plugin$schema;\n var _schema$blocks = schema.blocks,\n blocks = _schema$blocks === undefined ? {} : _schema$blocks,\n _schema$inlines = schema.inlines,\n inlines = _schema$inlines === undefined ? {} : _schema$inlines,\n _schema$marks = schema.marks,\n marks = _schema$marks === undefined ? {} : _schema$marks;\n\n\n if (schema.rules) {\n rules = rules.concat(schema.rules);\n }\n\n if (schema.document) {\n rules.push(_extends({\n match: [{ object: 'document' }]\n }, schema.document));\n }\n\n for (var key in blocks) {\n rules.push(_extends({\n match: [{ object: 'block', type: key }]\n }, blocks[key]));\n }\n\n for (var _key in inlines) {\n rules.push(_extends({\n match: [{ object: 'inline', type: _key }]\n }, inlines[_key]));\n }\n\n for (var _key2 in marks) {\n rules.push(_extends({\n match: [{ object: 'mark', type: _key2 }]\n }, marks[_key2]));\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var stack = Stack$1.create({ plugins: plugins });\n var ret = new Schema({ stack: stack, rules: rules });\n return ret;\n }\n }]);\n return Schema;\n}(Record(DEFAULTS$12));\n\n/**\n * Normalize an invalid value with `error` with default remedies.\n *\n * @param {Change} change\n * @param {SlateError} error\n */\n\nfunction defaultNormalize(change, error) {\n var code = error.code,\n node = error.node,\n child = error.child,\n next = error.next,\n previous = error.previous,\n key = error.key,\n mark = error.mark;\n\n\n switch (code) {\n case 'child_object_invalid':\n case 'child_type_invalid':\n case 'child_unknown':\n case 'first_child_object_invalid':\n case 'first_child_type_invalid':\n case 'last_child_object_invalid':\n case 'last_child_type_invalid':\n {\n return child.object === 'text' && node.object === 'block' && node.nodes.size === 1 ? change.removeNodeByKey(node.key, { normalize: false }) : change.removeNodeByKey(child.key, { normalize: false });\n }\n\n case 'previous_sibling_object_invalid':\n case 'previous_sibling_type_invalid':\n {\n return previous.object === 'text' && node.object === 'block' && node.nodes.size === 1 ? change.removeNodeByKey(node.key, { normalize: false }) : change.removeNodeByKey(previous.key, { normalize: false });\n }\n\n case 'next_sibling_object_invalid':\n case 'next_sibling_type_invalid':\n {\n return next.object === 'text' && node.object === 'block' && node.nodes.size === 1 ? change.removeNodeByKey(node.key, { normalize: false }) : change.removeNodeByKey(next.key, { normalize: false });\n }\n\n case 'child_required':\n case 'node_text_invalid':\n case 'parent_object_invalid':\n case 'parent_type_invalid':\n {\n return node.object === 'document' ? node.nodes.forEach(function (n) {\n return change.removeNodeByKey(n.key, { normalize: false });\n }) : change.removeNodeByKey(node.key, { normalize: false });\n }\n\n case 'node_data_invalid':\n {\n return node.data.get(key) === undefined && node.object !== 'document' ? change.removeNodeByKey(node.key, { normalize: false }) : change.setNodeByKey(node.key, { data: node.data.delete(key) }, { normalize: false });\n }\n\n case 'node_mark_invalid':\n {\n return node.getTexts().forEach(function (t) {\n return change.removeMarkByKey(t.key, 0, t.text.length, mark, {\n normalize: false\n });\n });\n }\n\n default:\n {\n return change.removeNodeByKey(node.key, { normalize: false });\n }\n }\n}\n\n/**\n * Check that an `object` matches one of a set of `rules`.\n *\n * @param {Mixed} object\n * @param {Object|Array} rules\n * @return {Boolean}\n */\n\nfunction testRules(object, rules) {\n var error = validateRules(object, rules);\n return !error;\n}\n\n/**\n * Validate that a `object` matches a `rule` object or array.\n *\n * @param {Mixed} object\n * @param {Object|Array} rule\n * @param {Array|Void} rules\n * @return {Error|Void}\n */\n\nfunction validateRules(object, rule, rules) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var _options$every = options.every,\n every = _options$every === undefined ? false : _options$every;\n\n\n if (Array.isArray(rule)) {\n var array = rule.length ? rule : [{}];\n var first = void 0;\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = array[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var r = _step2.value;\n\n var _error = validateRules(object, r, rules);\n first = first || _error;\n if (every && _error) return _error;\n if (!every && !_error) return;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return first;\n }\n\n var error = validateObject(object, rule) || validateType(object, rule) || validateData(object, rule) || validateMarks(object, rule) || validateText(object, rule) || validateFirst(object, rule) || validateLast(object, rule) || validateNodes(object, rule, rules);\n\n return error;\n}\n\nfunction validateObject(node, rule) {\n if (rule.object == null) return;\n if (rule.object === node.object) return;\n if (typeof rule.object === 'function' && rule.object(node.object)) return;\n return fail('node_object_invalid', { rule: rule, node: node });\n}\n\nfunction validateType(node, rule) {\n if (rule.type == null) return;\n if (rule.type === node.type) return;\n if (typeof rule.type === 'function' && rule.type(node.type)) return;\n return fail('node_type_invalid', { rule: rule, node: node });\n}\n\nfunction validateData(node, rule) {\n if (rule.data == null) return;\n if (node.data == null) return;\n\n if (typeof rule.data === 'function') {\n if (rule.data(node.data)) return;\n return fail('node_data_invalid', { rule: rule, node: node });\n }\n\n for (var key in rule.data) {\n var fn = rule.data[key];\n var value = node.data && node.data.get(key);\n var valid = typeof fn === 'function' ? fn(value) : fn === value;\n if (valid) continue;\n return fail('node_data_invalid', { rule: rule, node: node, key: key, value: value });\n }\n}\n\nfunction validateMarks(node, rule) {\n if (rule.marks == null) return;\n var marks = node.getMarks().toArray();\n\n var _loop = function _loop(mark) {\n var valid = rule.marks.some(function (def) {\n return typeof def.type === 'function' ? def.type(mark.type) : def.type === mark.type;\n });\n if (valid) return 'continue';\n return {\n v: fail('node_mark_invalid', { rule: rule, node: node, mark: mark })\n };\n };\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = marks[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var mark = _step3.value;\n\n var _ret = _loop(mark);\n\n switch (_ret) {\n case 'continue':\n continue;\n\n default:\n if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === \"object\") return _ret.v;\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n}\n\nfunction validateText(node, rule) {\n if (rule.text == null) return;\n var text = node.text;\n\n var valid = typeof rule.text === 'function' ? rule.text(text) : rule.text.test(text);\n if (valid) return;\n return fail('node_text_invalid', { rule: rule, node: node, text: text });\n}\n\nfunction validateFirst(node, rule) {\n if (rule.first == null) return;\n var first = node.nodes.first();\n if (!first) return;\n var error = validateRules(first, rule.first);\n if (!error) return;\n error.rule = rule;\n error.node = node;\n error.child = first;\n error.code = error.code.replace('node_', 'first_child_');\n return error;\n}\n\nfunction validateLast(node, rule) {\n if (rule.last == null) return;\n var last = node.nodes.last();\n if (!last) return;\n var error = validateRules(last, rule.last);\n if (!error) return;\n error.rule = rule;\n error.node = node;\n error.child = last;\n error.code = error.code.replace('node_', 'last_child_');\n return error;\n}\n\nfunction validateNodes(node, rule) {\n var rules = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n if (node.nodes == null) return;\n\n var children = node.nodes.toArray();\n var defs = rule.nodes != null ? rule.nodes.slice() : [];\n var offset = void 0;\n var min = void 0;\n var index = void 0;\n var def = void 0;\n var max = void 0;\n var child = void 0;\n var previous = void 0;\n var next = void 0;\n\n function nextDef() {\n offset = offset == null ? null : 0;\n def = defs.shift();\n min = def && def.min;\n max = def && def.max;\n return !!def;\n }\n\n function nextChild() {\n index = index == null ? 0 : index + 1;\n offset = offset == null ? 0 : offset + 1;\n previous = child;\n child = children[index];\n next = children[index + 1];\n if (max != null && offset == max) nextDef();\n return !!child;\n }\n\n function rewind() {\n offset -= 1;\n index -= 1;\n }\n\n if (rule.nodes != null) {\n nextDef();\n }\n\n while (nextChild()) {\n var err = validateParent(node, child, rules) || validatePrevious(node, child, previous, index, rules) || validateNext(node, child, next, index, rules);\n\n if (err) return err;\n\n if (rule.nodes != null) {\n if (!def) {\n return fail('child_unknown', { rule: rule, node: node, child: child, index: index });\n }\n\n if (def.match) {\n var error = validateRules(child, def.match);\n\n if (error && offset >= min && nextDef()) {\n rewind();\n continue;\n }\n\n if (error) {\n error.rule = rule;\n error.node = node;\n error.child = child;\n error.index = index;\n error.code = error.code.replace('node_', 'child_');\n return error;\n }\n }\n }\n }\n\n if (rule.nodes != null) {\n while (min != null) {\n if (offset < min) {\n return fail('child_required', { rule: rule, node: node, index: index });\n }\n\n nextDef();\n }\n }\n}\n\nfunction validateParent(node, child, rules) {\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = rules[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var rule = _step4.value;\n\n if (rule.parent == null) continue;\n if (!testRules(child, rule.match)) continue;\n\n var error = validateRules(node, rule.parent);\n if (!error) continue;\n\n error.rule = rule;\n error.parent = node;\n error.node = child;\n error.code = error.code.replace('node_', 'parent_');\n return error;\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n}\n\nfunction validatePrevious(node, child, previous, index, rules) {\n if (!previous) return;\n\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = rules[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var rule = _step5.value;\n\n if (rule.previous == null) continue;\n if (!testRules(child, rule.match)) continue;\n\n var error = validateRules(previous, rule.previous);\n if (!error) continue;\n\n error.rule = rule;\n error.node = node;\n error.child = child;\n error.index = index;\n error.previous = previous;\n error.code = error.code.replace('node_', 'previous_sibling_');\n return error;\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n}\n\nfunction validateNext(node, child, next, index, rules) {\n if (!next) return;\n\n var _iteratorNormalCompletion6 = true;\n var _didIteratorError6 = false;\n var _iteratorError6 = undefined;\n\n try {\n for (var _iterator6 = rules[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n var rule = _step6.value;\n\n if (rule.next == null) continue;\n if (!testRules(child, rule.match)) continue;\n\n var error = validateRules(next, rule.next);\n if (!error) continue;\n\n error.rule = rule;\n error.node = node;\n error.child = child;\n error.index = index;\n error.next = next;\n error.code = error.code.replace('node_', 'next_sibling_');\n return error;\n }\n } catch (err) {\n _didIteratorError6 = true;\n _iteratorError6 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion6 && _iterator6.return) {\n _iterator6.return();\n }\n } finally {\n if (_didIteratorError6) {\n throw _iteratorError6;\n }\n }\n }\n}\n\n/**\n * Create an interim failure object with `code` and `attrs`.\n *\n * @param {String} code\n * @param {Object} attrs\n * @return {Object}\n */\n\nfunction fail(code, attrs) {\n return _extends({ code: code }, attrs);\n}\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$13 = {\n data: undefined,\n decorations: undefined,\n document: undefined,\n history: undefined,\n schema: undefined,\n selection: undefined\n\n /**\n * Value.\n *\n * @type {Value}\n */\n\n};\nvar Value = function (_Record) {\n inherits(Value, _Record);\n\n function Value() {\n classCallCheck(this, Value);\n return possibleConstructorReturn(this, (Value.__proto__ || Object.getPrototypeOf(Value)).apply(this, arguments));\n }\n\n createClass(Value, [{\n key: 'change',\n\n\n /**\n * Create a new `Change` with the current value as a starting point.\n *\n * @param {Object} attrs\n * @return {Change}\n */\n\n value: function change() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n return new Change(_extends({}, attrs, { value: this }));\n }\n\n /**\n * Add mark to text at `offset` and `length` in node by `path`.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n * @return {Value}\n */\n\n }, {\n key: 'addMark',\n value: function addMark(path, offset, length, mark) {\n var value = this;\n var _value = value,\n document = _value.document;\n\n document = document.addMark(path, offset, length, mark);\n value = this.set('document', document);\n return value;\n }\n\n /**\n * Insert a `node`.\n *\n * @param {List|String} path\n * @param {Node} node\n * @return {Value}\n */\n\n }, {\n key: 'insertNode',\n value: function insertNode(path, node) {\n var value = this;\n var _value2 = value,\n document = _value2.document;\n\n document = document.insertNode(path, node);\n value = value.set('document', document);\n\n value = value.mapRanges(function (range) {\n return range.updatePoints(function (point) {\n return point.setPath(null);\n });\n });\n\n return value;\n }\n\n /**\n * Insert `text` at `offset` in node by `path`.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @param {String} text\n * @param {Set} marks\n * @return {Value}\n */\n\n }, {\n key: 'insertText',\n value: function insertText(path, offset, text, marks) {\n var value = this;\n var _value3 = value,\n document = _value3.document,\n schema = _value3.schema;\n\n document = document.insertText(path, offset, text, marks);\n value = value.set('document', document);\n\n // Update any ranges that were affected.\n var node = document.assertNode(path);\n\n value = value.mapRanges(function (range) {\n var _range = range,\n anchor = _range.anchor,\n focus = _range.focus,\n isBackward = _range.isBackward;\n\n var isAtomic = Decoration.isDecoration(range) && schema.isAtomic(range.mark);\n\n if (anchor.key === node.key && (anchor.offset > offset || anchor.offset === offset && (!isAtomic || !isBackward))) {\n range = range.moveAnchorForward(text.length);\n }\n\n if (focus.key === node.key && (focus.offset > offset || focus.offset == offset && (!isAtomic || isBackward))) {\n range = range.moveFocusForward(text.length);\n }\n\n return range;\n });\n\n value = value.clearAtomicRanges(node.key, offset);\n return value;\n }\n\n /**\n * Merge a node backwards its previous sibling.\n *\n * @param {List|Key} path\n * @return {Value}\n */\n\n }, {\n key: 'mergeNode',\n value: function mergeNode(path) {\n var value = this;\n var _value4 = value,\n document = _value4.document;\n\n var newDocument = document.mergeNode(path);\n path = document.resolvePath(path);\n var withPath = PathUtils.decrement(path);\n var one = document.getNode(withPath);\n var two = document.getNode(path);\n value = value.set('document', newDocument);\n\n value = value.mapRanges(function (range) {\n if (two.object === 'text') {\n var max = one.text.length;\n\n if (range.anchor.key === two.key) {\n range = range.moveAnchorTo(one.key, max + range.anchor.offset);\n }\n\n if (range.focus.key === two.key) {\n range = range.moveFocusTo(one.key, max + range.focus.offset);\n }\n }\n\n range = range.updatePoints(function (point) {\n return point.setPath(null);\n });\n\n return range;\n });\n\n return value;\n }\n\n /**\n * Move a node by `path` to `newPath`.\n *\n * A `newIndex` can be provided when move nodes by `key`, to account for not\n * being able to have a key for a location in the tree that doesn't exist yet.\n *\n * @param {List|Key} path\n * @param {List|Key} newPath\n * @param {Number} newIndex\n * @return {Value}\n */\n\n }, {\n key: 'moveNode',\n value: function moveNode(path, newPath) {\n var newIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n var value = this;\n var _value5 = value,\n document = _value5.document;\n\n document = document.moveNode(path, newPath, newIndex);\n value = value.set('document', document);\n\n value = value.mapRanges(function (range) {\n return range.updatePoints(function (point) {\n return point.setPath(null);\n });\n });\n\n return value;\n }\n\n /**\n * Remove mark from text at `offset` and `length` in node.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n * @return {Value}\n */\n\n }, {\n key: 'removeMark',\n value: function removeMark(path, offset, length, mark) {\n var value = this;\n var _value6 = value,\n document = _value6.document;\n\n document = document.removeMark(path, offset, length, mark);\n value = this.set('document', document);\n return value;\n }\n\n /**\n * Remove a node by `path`.\n *\n * @param {List|String} path\n * @return {Value}\n */\n\n }, {\n key: 'removeNode',\n value: function removeNode(path) {\n var value = this;\n var _value7 = value,\n document = _value7.document;\n\n var node = document.assertNode(path);\n var first = node.object == 'text' ? node : node.getFirstText() || node;\n var last = node.object == 'text' ? node : node.getLastText() || node;\n var prev = document.getPreviousText(first.key);\n var next = document.getNextText(last.key);\n\n document = document.removeNode(path);\n value = value.set('document', document);\n\n value = value.mapRanges(function (range) {\n var _range2 = range,\n start = _range2.start,\n end = _range2.end;\n\n\n if (node.hasNode(start.key)) {\n range = prev ? range.moveStartTo(prev.key, prev.text.length) : next ? range.moveStartTo(next.key, 0) : range.unset();\n }\n\n if (node.hasNode(end.key)) {\n range = prev ? range.moveEndTo(prev.key, prev.text.length) : next ? range.moveEndTo(next.key, 0) : range.unset();\n }\n\n range = range.updatePoints(function (point) {\n return point.setPath(null);\n });\n\n return range;\n });\n\n return value;\n }\n\n /**\n * Remove `text` at `offset` in node by `path`.\n *\n * @param {List|Key} path\n * @param {Number} offset\n * @param {String} text\n * @return {Value}\n */\n\n }, {\n key: 'removeText',\n value: function removeText(path, offset, text) {\n var value = this;\n var _value8 = value,\n document = _value8.document;\n\n document = document.removeText(path, offset, text);\n value = value.set('document', document);\n\n var node = document.assertNode(path);\n var length = text.length;\n\n var rangeOffset = offset + length;\n\n value = value.clearAtomicRanges(node.key, offset, offset + length);\n\n value = value.mapRanges(function (range) {\n var _range3 = range,\n anchor = _range3.anchor,\n focus = _range3.focus;\n\n\n if (anchor.key === node.key) {\n range = anchor.offset >= rangeOffset ? range.moveAnchorBackward(length) : anchor.offset > offset ? range.moveAnchorTo(anchor.key, offset) : range;\n }\n\n if (focus.key === node.key) {\n range = focus.offset >= rangeOffset ? range.moveFocusBackward(length) : focus.offset > offset ? range.moveFocusTo(focus.key, offset) : range;\n }\n\n return range;\n });\n\n return value;\n }\n\n /**\n * Set `properties` on a node.\n *\n * @param {List|String} path\n * @param {Object} properties\n * @return {Value}\n */\n\n }, {\n key: 'setNode',\n value: function setNode(path, properties) {\n var value = this;\n var _value9 = value,\n document = _value9.document;\n\n document = document.setNode(path, properties);\n value = value.set('document', document);\n return value;\n }\n\n /**\n * Set `properties` on `mark` on text at `offset` and `length` in node.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n * @param {Object} properties\n * @return {Value}\n */\n\n }, {\n key: 'setMark',\n value: function setMark(path, offset, length, mark, properties) {\n var value = this;\n var _value10 = value,\n document = _value10.document;\n\n document = document.setMark(path, offset, length, mark, properties);\n value = value.set('document', document);\n return value;\n }\n\n /**\n * Set `properties` on the value.\n *\n * @param {Object} properties\n * @return {Value}\n */\n\n }, {\n key: 'setProperties',\n value: function setProperties(properties) {\n var value = this;\n var _value11 = value,\n document = _value11.document;\n var data = properties.data,\n decorations = properties.decorations,\n history = properties.history,\n schema = properties.schema;\n\n var props = {};\n\n if (data) {\n props.data = data;\n }\n\n if (history) {\n props.history = history;\n }\n\n if (schema) {\n props.schema = schema;\n }\n\n if (decorations) {\n props.decorations = decorations.map(function (d) {\n return d.isSet ? d : document.resolveDecoration(d);\n });\n }\n\n value = value.merge(props);\n return value;\n }\n\n /**\n * Set `properties` on the selection.\n *\n * @param {Value} value\n * @param {Operation} operation\n * @return {Value}\n */\n\n }, {\n key: 'setSelection',\n value: function setSelection(properties) {\n var value = this;\n var _value12 = value,\n document = _value12.document,\n selection = _value12.selection;\n\n var next = selection.setProperties(properties);\n selection = document.resolveSelection(next);\n value = value.set('selection', selection);\n return value;\n }\n\n /**\n * Split a node by `path` at `position` with optional `properties` to apply\n * to the newly split node.\n *\n * @param {List|String} path\n * @param {Number} position\n * @param {Object} properties\n * @return {Value}\n */\n\n }, {\n key: 'splitNode',\n value: function splitNode(path, position, properties) {\n var value = this;\n var _value13 = value,\n document = _value13.document;\n\n var newDocument = document.splitNode(path, position, properties);\n var node = document.assertNode(path);\n value = value.set('document', newDocument);\n\n value = value.mapRanges(function (range) {\n var next = newDocument.getNextText(node.key);\n var _range4 = range,\n start = _range4.start,\n end = _range4.end;\n\n // If the start was after the split, move it to the next node.\n\n if (node.key === start.key && position <= start.offset) {\n range = range.moveStartTo(next.key, start.offset - position);\n }\n\n // If the end was after the split, move it to the next node.\n if (node.key === end.key && position <= end.offset) {\n range = range.moveEndTo(next.key, end.offset - position);\n }\n\n range = range.updatePoints(function (point) {\n return point.setPath(null);\n });\n\n return range;\n });\n\n return value;\n }\n\n /**\n * Map all range objects to apply adjustments with an `iterator`.\n *\n * @param {Function} iterator\n * @return {Value}\n */\n\n }, {\n key: 'mapRanges',\n value: function mapRanges(iterator) {\n var value = this;\n var _value14 = value,\n document = _value14.document,\n selection = _value14.selection,\n decorations = _value14.decorations;\n\n\n var sel = selection.isSet ? iterator(selection) : selection;\n if (!sel) sel = selection.unset();\n if (sel !== selection) sel = document.createSelection(sel);\n value = value.set('selection', sel);\n\n var decs = decorations.map(function (decoration) {\n var n = decoration.isSet ? iterator(decoration) : decoration;\n if (n && n !== decoration) n = document.createDecoration(n);\n return n;\n });\n\n decs = decs.filter(function (decoration) {\n return !!decoration;\n });\n value = value.set('decorations', decs);\n return value;\n }\n\n /**\n * Remove any atomic ranges inside a `key`, `offset` and `length`.\n *\n * @param {String} key\n * @param {Number} from\n * @param {Number?} to\n * @return {Value}\n */\n\n }, {\n key: 'clearAtomicRanges',\n value: function clearAtomicRanges(key, from) {\n var to = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n var value = this;\n var _value15 = value,\n schema = _value15.schema;\n\n\n value = this.mapRanges(function (range) {\n if (!Decoration.isDecoration(range)) return range;\n var start = range.start,\n end = range.end,\n mark = range.mark;\n\n var isAtomic = schema.isAtomic(mark);\n if (!isAtomic) return range;\n if (start.key !== key) return range;\n\n if (start.offset < from && (end.key !== key || end.offset > from)) {\n return null;\n }\n\n if (to != null && start.offset < to && (end.key !== key || end.offset > to)) {\n return null;\n }\n\n return range;\n });\n\n return value;\n }\n\n /**\n * Return a JSON representation of the value.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var object = {\n object: this.object,\n document: this.document.toJSON(options)\n };\n\n if (options.preserveData) {\n object.data = this.data.toJSON(options);\n }\n\n if (options.preserveDecorations) {\n object.decorations = this.decorations.toArray().map(function (d) {\n return d.toJSON(options);\n });\n }\n\n if (options.preserveHistory) {\n object.history = this.history.toJSON(options);\n }\n\n if (options.preserveSelection) {\n object.selection = this.selection.toJSON(options);\n }\n\n if (options.preserveSchema) {\n object.schema = this.schema.toJSON(options);\n }\n\n return object;\n }\n }, {\n key: 'startBlock',\n\n\n /**\n * Get the current start text node's closest block parent.\n *\n * @return {Block}\n */\n\n get: function get$$1() {\n return this.selection.start.key && this.document.getClosestBlock(this.selection.start.key);\n }\n\n /**\n * Get the current end text node's closest block parent.\n *\n * @return {Block}\n */\n\n }, {\n key: 'endBlock',\n get: function get$$1() {\n return this.selection.end.key && this.document.getClosestBlock(this.selection.end.key);\n }\n\n /**\n * Get the current anchor text node's closest block parent.\n *\n * @return {Block}\n */\n\n }, {\n key: 'anchorBlock',\n get: function get$$1() {\n return this.selection.anchor.key && this.document.getClosestBlock(this.selection.anchor.key);\n }\n\n /**\n * Get the current focus text node's closest block parent.\n *\n * @return {Block}\n */\n\n }, {\n key: 'focusBlock',\n get: function get$$1() {\n return this.selection.focus.key && this.document.getClosestBlock(this.selection.focus.key);\n }\n\n /**\n * Get the current start text node's closest inline parent.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'startInline',\n get: function get$$1() {\n return this.selection.start.key && this.document.getClosestInline(this.selection.start.key);\n }\n\n /**\n * Get the current end text node's closest inline parent.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'endInline',\n get: function get$$1() {\n return this.selection.end.key && this.document.getClosestInline(this.selection.end.key);\n }\n\n /**\n * Get the current anchor text node's closest inline parent.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'anchorInline',\n get: function get$$1() {\n return this.selection.anchor.key && this.document.getClosestInline(this.selection.anchor.key);\n }\n\n /**\n * Get the current focus text node's closest inline parent.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'focusInline',\n get: function get$$1() {\n return this.selection.focus.key && this.document.getClosestInline(this.selection.focus.key);\n }\n\n /**\n * Get the current start text node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'startText',\n get: function get$$1() {\n return this.selection.start.key && this.document.getDescendant(this.selection.start.key);\n }\n\n /**\n * Get the current end node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'endText',\n get: function get$$1() {\n return this.selection.end.key && this.document.getDescendant(this.selection.end.key);\n }\n\n /**\n * Get the current anchor node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'anchorText',\n get: function get$$1() {\n return this.selection.anchor.key && this.document.getDescendant(this.selection.anchor.key);\n }\n\n /**\n * Get the current focus node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'focusText',\n get: function get$$1() {\n return this.selection.focus.key && this.document.getDescendant(this.selection.focus.key);\n }\n\n /**\n * Get the next block node.\n *\n * @return {Block}\n */\n\n }, {\n key: 'nextBlock',\n get: function get$$1() {\n return this.selection.end.key && this.document.getNextBlock(this.selection.end.key);\n }\n\n /**\n * Get the previous block node.\n *\n * @return {Block}\n */\n\n }, {\n key: 'previousBlock',\n get: function get$$1() {\n return this.selection.start.key && this.document.getPreviousBlock(this.selection.start.key);\n }\n\n /**\n * Get the next inline node.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'nextInline',\n get: function get$$1() {\n return this.selection.end.key && this.document.getNextInline(this.selection.end.key);\n }\n\n /**\n * Get the previous inline node.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'previousInline',\n get: function get$$1() {\n return this.selection.start.key && this.document.getPreviousInline(this.selection.start.key);\n }\n\n /**\n * Get the next text node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'nextText',\n get: function get$$1() {\n return this.selection.end.key && this.document.getNextText(this.selection.end.key);\n }\n\n /**\n * Get the previous text node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'previousText',\n get: function get$$1() {\n return this.selection.start.key && this.document.getPreviousText(this.selection.start.key);\n }\n\n /**\n * Get the marks of the current selection.\n *\n * @return {Set}\n */\n\n }, {\n key: 'marks',\n get: function get$$1() {\n return this.selection.isUnset ? new Set() : this.selection.marks || this.document.getMarksAtRange(this.selection);\n }\n\n /**\n * Get the active marks of the current selection.\n *\n * @return {Set}\n */\n\n }, {\n key: 'activeMarks',\n get: function get$$1() {\n return this.selection.isUnset ? new Set() : this.selection.marks || this.document.getActiveMarksAtRange(this.selection);\n }\n\n /**\n * Get the block nodes in the current selection.\n *\n * @return {List}\n */\n\n }, {\n key: 'blocks',\n get: function get$$1() {\n return this.selection.isUnset ? new List() : this.document.getBlocksAtRange(this.selection);\n }\n\n /**\n * Get the fragment of the current selection.\n *\n * @return {Document}\n */\n\n }, {\n key: 'fragment',\n get: function get$$1() {\n return this.selection.isUnset ? Document.create() : this.document.getFragmentAtRange(this.selection);\n }\n\n /**\n * Get the inline nodes in the current selection.\n *\n * @return {List}\n */\n\n }, {\n key: 'inlines',\n get: function get$$1() {\n return this.selection.isUnset ? new List() : this.document.getInlinesAtRange(this.selection);\n }\n\n /**\n * Get the text nodes in the current selection.\n *\n * @return {List}\n */\n\n }, {\n key: 'texts',\n get: function get$$1() {\n return this.selection.isUnset ? new List() : this.document.getTextsAtRange(this.selection);\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Value` with `attrs`.\n *\n * @param {Object|Value} attrs\n * @param {Object} options\n * @return {Value}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (Value.isValue(attrs)) {\n return attrs;\n }\n\n if (isPlainObject(attrs)) {\n return Value.fromJSON(attrs, options);\n }\n\n throw new Error('`Value.create` only accepts objects or values, but you passed it: ' + attrs);\n }\n\n /**\n * Create a dictionary of settable value properties from `attrs`.\n *\n * @param {Object|Value} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Value.isValue(a)) {\n return {\n data: a.data,\n decorations: a.decorations,\n schema: a.schema\n };\n }\n\n if (isPlainObject(a)) {\n var p = {};\n if ('data' in a) p.data = Data.create(a.data);\n if ('decorations' in a) p.decorations = Decoration.createList(a.decorations);\n if ('schema' in a) p.schema = Schema.create(a.schema);\n return p;\n }\n\n throw new Error('`Value.createProperties` only accepts objects or values, but you passed it: ' + a);\n }\n\n /**\n * Create a `Value` from a JSON `object`.\n *\n * @param {Object} object\n * @param {Object} options\n * @property {Boolean} normalize\n * @property {Array} plugins\n * @return {Value}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _object$data = object.data,\n data = _object$data === undefined ? {} : _object$data,\n _object$decorations = object.decorations,\n decorations = _object$decorations === undefined ? [] : _object$decorations,\n _object$document = object.document,\n document = _object$document === undefined ? {} : _object$document,\n _object$selection = object.selection,\n selection = _object$selection === undefined ? {} : _object$selection,\n _object$schema = object.schema,\n schema = _object$schema === undefined ? {} : _object$schema,\n _object$history = object.history,\n history = _object$history === undefined ? {} : _object$history;\n\n\n data = Data.fromJSON(data);\n schema = Schema.fromJSON(schema);\n history = History.fromJSON(history);\n document = Document.fromJSON(document);\n selection = document.createSelection(selection);\n decorations = List(decorations.map(function (d) {\n return Decoration.fromJSON(d);\n }));\n\n if (selection.isUnset) {\n var text = document.getFirstText();\n if (text) selection = selection.moveToStartOfNode(text);\n selection = document.createSelection(selection);\n }\n\n var value = new Value({\n data: data,\n decorations: decorations,\n document: document,\n selection: selection,\n schema: schema,\n history: history\n });\n\n if (options.normalize !== false) {\n var change = value.change();\n change.withoutSaving(function () {\n return change.normalize();\n });\n value = change.value;\n }\n\n return value;\n }\n }]);\n return Value;\n}(Record(DEFAULTS$13));\n\n/**\n * Changes.\n *\n * @type {Object}\n */\n\nvar Changes$5 = {};\n\n/**\n * Set `properties` on the value.\n *\n * @param {Change} change\n * @param {Object|Value} properties\n */\n\nChanges$5.setValue = function (change, properties) {\n properties = Value.createProperties(properties);\n var value = change.value;\n\n\n change.applyOperation({\n type: 'set_value',\n properties: properties,\n value: value\n });\n};\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nvar Changes$6 = _extends({}, Changes, Changes$1, Changes$2, Changes$3, Changes$4, Changes$5);\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$2 = Debug('slate:operation:apply');\n\n/**\n * Apply an `op` to a `value`.\n *\n * @param {Value} value\n * @param {Object|Operation} op\n * @return {Value} value\n */\n\nfunction applyOperation(value, op) {\n op = Operation.create(op);\n var _op = op,\n type = _op.type;\n\n debug$2(type, op);\n\n switch (type) {\n case 'add_mark':\n {\n var _op2 = op,\n path = _op2.path,\n offset = _op2.offset,\n length = _op2.length,\n mark = _op2.mark;\n\n var next = value.addMark(path, offset, length, mark);\n return next;\n }\n\n case 'insert_node':\n {\n var _op3 = op,\n _path = _op3.path,\n node = _op3.node;\n\n var _next = value.insertNode(_path, node);\n return _next;\n }\n\n case 'insert_text':\n {\n var _op4 = op,\n _path2 = _op4.path,\n _offset = _op4.offset,\n text = _op4.text,\n marks = _op4.marks;\n\n var _next2 = value.insertText(_path2, _offset, text, marks);\n return _next2;\n }\n\n case 'merge_node':\n {\n var _op5 = op,\n _path3 = _op5.path;\n\n var _next3 = value.mergeNode(_path3);\n return _next3;\n }\n\n case 'move_node':\n {\n var _op6 = op,\n _path4 = _op6.path,\n newPath = _op6.newPath;\n\n var _next4 = value.moveNode(_path4, newPath);\n return _next4;\n }\n\n case 'remove_mark':\n {\n var _op7 = op,\n _path5 = _op7.path,\n _offset2 = _op7.offset,\n _length = _op7.length,\n _mark = _op7.mark;\n\n var _next5 = value.removeMark(_path5, _offset2, _length, _mark);\n return _next5;\n }\n\n case 'remove_node':\n {\n var _op8 = op,\n _path6 = _op8.path;\n\n var _next6 = value.removeNode(_path6);\n return _next6;\n }\n\n case 'remove_text':\n {\n var _op9 = op,\n _path7 = _op9.path,\n _offset3 = _op9.offset,\n _text = _op9.text;\n\n var _next7 = value.removeText(_path7, _offset3, _text);\n return _next7;\n }\n\n case 'set_mark':\n {\n var _op10 = op,\n _path8 = _op10.path,\n _offset4 = _op10.offset,\n _length2 = _op10.length,\n _mark2 = _op10.mark,\n properties = _op10.properties;\n\n var _next8 = value.setMark(_path8, _offset4, _length2, _mark2, properties);\n return _next8;\n }\n\n case 'set_node':\n {\n var _op11 = op,\n _path9 = _op11.path,\n _properties = _op11.properties;\n\n var _next9 = value.setNode(_path9, _properties);\n return _next9;\n }\n\n case 'set_selection':\n {\n var _op12 = op,\n _properties2 = _op12.properties;\n\n var _next10 = value.setSelection(_properties2);\n return _next10;\n }\n\n case 'set_value':\n {\n var _op13 = op,\n _properties3 = _op13.properties;\n\n var _next11 = value.setProperties(_properties3);\n return _next11;\n }\n\n case 'split_node':\n {\n var _op14 = op,\n _path10 = _op14.path,\n position = _op14.position,\n _properties4 = _op14.properties;\n\n var _next12 = value.splitNode(_path10, position, _properties4);\n return _next12;\n }\n\n default:\n {\n throw new Error('Unknown operation type: \"' + type + '\".');\n }\n }\n}\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$3 = Debug('slate:operation:invert');\n\n/**\n * Invert an `op`.\n *\n * @param {Object} op\n * @return {Object}\n */\n\nfunction invertOperation(op) {\n op = Operation.create(op);\n var _op = op,\n type = _op.type;\n\n debug$3(type, op);\n\n switch (type) {\n case 'insert_node':\n {\n var inverse = op.set('type', 'remove_node');\n return inverse;\n }\n\n case 'remove_node':\n {\n var _inverse = op.set('type', 'insert_node');\n return _inverse;\n }\n\n case 'move_node':\n {\n var _op2 = op,\n newPath = _op2.newPath,\n path = _op2.path;\n\n var inversePath = newPath;\n var inverseNewPath = path;\n\n var pathLast = path.size - 1;\n var newPathLast = newPath.size - 1;\n\n // If the node's old position was a left sibling of an ancestor of\n // its new position, we need to adjust part of the path by -1.\n if (path.size < inversePath.size && path.slice(0, pathLast).every(function (e, i) {\n return e == inversePath.get(i);\n }) && path.last() < inversePath.get(pathLast)) {\n inversePath = inversePath.slice(0, pathLast).concat(inversePath.get(pathLast) - 1).concat(inversePath.slice(pathLast + 1, inversePath.size));\n }\n\n // If the node's new position is an ancestor of the old position,\n // or a left sibling of an ancestor of its old position, we need\n // to adjust part of the path by 1.\n if (newPath.size < inverseNewPath.size && newPath.slice(0, newPathLast).every(function (e, i) {\n return e == inverseNewPath.get(i);\n }) && newPath.last() <= inverseNewPath.get(newPathLast)) {\n inverseNewPath = inverseNewPath.slice(0, newPathLast).concat(inverseNewPath.get(newPathLast) + 1).concat(inverseNewPath.slice(newPathLast + 1, inverseNewPath.size));\n }\n\n var _inverse2 = op.set('path', inversePath).set('newPath', inverseNewPath);\n return _inverse2;\n }\n\n case 'merge_node':\n {\n var _op3 = op,\n _path = _op3.path;\n\n var _inversePath = PathUtils.decrement(_path);\n var _inverse3 = op.set('type', 'split_node').set('path', _inversePath);\n return _inverse3;\n }\n\n case 'split_node':\n {\n var _op4 = op,\n _path2 = _op4.path;\n\n var _inversePath2 = PathUtils.increment(_path2);\n var _inverse4 = op.set('type', 'merge_node').set('path', _inversePath2);\n return _inverse4;\n }\n\n case 'set_node':\n {\n var _op5 = op,\n properties = _op5.properties,\n node = _op5.node;\n\n var inverseNode = node.merge(properties);\n var inverseProperties = pick(node, Object.keys(properties));\n var _inverse5 = op.set('node', inverseNode).set('properties', inverseProperties);\n return _inverse5;\n }\n\n case 'insert_text':\n {\n var _inverse6 = op.set('type', 'remove_text');\n return _inverse6;\n }\n\n case 'remove_text':\n {\n var _inverse7 = op.set('type', 'insert_text');\n return _inverse7;\n }\n\n case 'add_mark':\n {\n var _inverse8 = op.set('type', 'remove_mark');\n return _inverse8;\n }\n\n case 'remove_mark':\n {\n var _inverse9 = op.set('type', 'add_mark');\n return _inverse9;\n }\n\n case 'set_mark':\n {\n var _op6 = op,\n _properties = _op6.properties,\n mark = _op6.mark;\n\n var inverseMark = mark.merge(_properties);\n var _inverseProperties = pick(mark, Object.keys(_properties));\n var _inverse10 = op.set('mark', inverseMark).set('properties', _inverseProperties);\n return _inverse10;\n }\n\n case 'set_selection':\n {\n var _op7 = op,\n _properties2 = _op7.properties,\n selection = _op7.selection;\n\n var inverseSelection = selection.merge(_properties2);\n var inverseProps = pick(selection, Object.keys(_properties2));\n var _inverse11 = op.set('selection', inverseSelection).set('properties', inverseProps);\n return _inverse11;\n }\n\n case 'set_value':\n {\n var _op8 = op,\n _properties3 = _op8.properties,\n value = _op8.value;\n\n var inverseValue = value.merge(_properties3);\n var _inverseProperties2 = pick(value, Object.keys(_properties3));\n var _inverse12 = op.set('value', inverseValue).set('properties', _inverseProperties2);\n return _inverse12;\n }\n\n default:\n {\n throw new Error('Unknown operation type: \"' + type + '\".');\n }\n }\n}\n\n/**\n * Operation attributes.\n *\n * @type {Array}\n */\n\nvar OPERATION_ATTRIBUTES = {\n add_mark: ['value', 'path', 'offset', 'length', 'mark'],\n insert_node: ['value', 'path', 'node'],\n insert_text: ['value', 'path', 'offset', 'text', 'marks'],\n merge_node: ['value', 'path', 'position', 'properties', 'target'],\n move_node: ['value', 'path', 'newPath'],\n remove_mark: ['value', 'path', 'offset', 'length', 'mark'],\n remove_node: ['value', 'path', 'node'],\n remove_text: ['value', 'path', 'offset', 'text', 'marks'],\n set_mark: ['value', 'path', 'offset', 'length', 'mark', 'properties'],\n set_node: ['value', 'path', 'node', 'properties'],\n set_selection: ['value', 'selection', 'properties'],\n set_value: ['value', 'properties'],\n split_node: ['value', 'path', 'position', 'properties', 'target']\n\n /**\n * Default properties.\n *\n * @type {Object}\n */\n\n};var DEFAULTS$14 = {\n length: undefined,\n mark: undefined,\n marks: undefined,\n newPath: undefined,\n node: undefined,\n offset: undefined,\n path: undefined,\n position: undefined,\n properties: undefined,\n selection: undefined,\n target: undefined,\n text: undefined,\n type: undefined,\n value: undefined\n\n /**\n * Operation.\n *\n * @type {Operation}\n */\n\n};\nvar Operation = function (_Record) {\n inherits(Operation, _Record);\n\n function Operation() {\n classCallCheck(this, Operation);\n return possibleConstructorReturn(this, (Operation.__proto__ || Object.getPrototypeOf(Operation)).apply(this, arguments));\n }\n\n createClass(Operation, [{\n key: 'apply',\n\n\n /**\n * Apply the operation to a `value`.\n *\n * @param {Value} value\n * @return {Value}\n */\n\n value: function apply(value) {\n var next = applyOperation(value, this);\n return next;\n }\n\n /**\n * Invert the operation.\n *\n * @return {Operation}\n */\n\n }, {\n key: 'invert',\n value: function invert() {\n var inverted = invertOperation(this);\n return inverted;\n }\n\n /**\n * Return a JSON representation of the operation.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var object = this.object,\n type = this.type;\n\n var json = { object: object, type: type };\n var ATTRIBUTES = OPERATION_ATTRIBUTES[type];\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = ATTRIBUTES[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n\n var value = this[key];\n\n // Skip keys for objects that should not be serialized, and are only used\n // for providing the local-only invert behavior for the history stack.\n if (key == 'document') continue;\n if (key == 'selection') continue;\n if (key == 'value') continue;\n if (key == 'node' && type != 'insert_node') continue;\n\n if (key == 'mark' || key == 'marks' || key == 'node' || key == 'path' || key == 'newPath') {\n value = value.toJSON();\n }\n\n if (key == 'properties' && type == 'merge_node') {\n var v = {};\n if ('data' in value) v.data = value.data.toJS();\n if ('type' in value) v.type = value.type;\n value = v;\n }\n\n if (key == 'properties' && type == 'set_mark') {\n var _v = {};\n if ('data' in value) _v.data = value.data.toJS();\n if ('type' in value) _v.type = value.type;\n value = _v;\n }\n\n if (key == 'properties' && type == 'set_node') {\n var _v2 = {};\n if ('data' in value) _v2.data = value.data.toJS();\n if ('type' in value) _v2.type = value.type;\n value = _v2;\n }\n\n if (key == 'properties' && type == 'set_selection') {\n var _v3 = {};\n if ('anchor' in value) _v3.anchor = value.anchor.toJSON();\n if ('focus' in value) _v3.focus = value.focus.toJSON();\n if ('isFocused' in value) _v3.isFocused = value.isFocused;\n if ('marks' in value) _v3.marks = value.marks && value.marks.toJSON();\n value = _v3;\n }\n\n if (key == 'properties' && type == 'set_value') {\n var _v4 = {};\n if ('data' in value) _v4.data = value.data.toJS();\n if ('decorations' in value) _v4.decorations = value.decorations.toJS();\n if ('schema' in value) _v4.schema = value.schema.toJS();\n value = _v4;\n }\n\n if (key == 'properties' && type == 'split_node') {\n var _v5 = {};\n if ('data' in value) _v5.data = value.data.toJS();\n if ('type' in value) _v5.type = value.type;\n value = _v5;\n }\n\n json[key] = value;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return json;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Operation` with `attrs`.\n *\n * @param {Object|Array|List|String|Operation} attrs\n * @return {Operation}\n */\n\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Operation.isOperation(attrs)) {\n return attrs;\n }\n\n if (isPlainObject(attrs)) {\n return Operation.fromJSON(attrs);\n }\n\n throw new Error('`Operation.create` only accepts objects or operations, but you passed it: ' + attrs);\n }\n\n /**\n * Create a list of `Operations` from `elements`.\n *\n * @param {Array|List} elements\n * @return {List}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (List.isList(elements) || Array.isArray(elements)) {\n var list = new List(elements.map(Operation.create));\n return list;\n }\n\n throw new Error('`Operation.createList` only accepts arrays or lists, but you passed it: ' + elements);\n }\n\n /**\n * Create a `Operation` from a JSON `object`.\n *\n * @param {Object|Operation} object\n * @return {Operation}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Operation.isOperation(object)) {\n return object;\n }\n\n var type = object.type;\n\n var ATTRIBUTES = OPERATION_ATTRIBUTES[type];\n var attrs = { type: type };\n\n if (!ATTRIBUTES) {\n throw new Error('`Operation.fromJSON` was passed an unrecognized operation type: \"' + type + '\"');\n }\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = ATTRIBUTES[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var key = _step2.value;\n\n var v = object[key];\n\n if (v === undefined) {\n // Skip keys for objects that should not be serialized, and are only used\n // for providing the local-only invert behavior for the history stack.\n if (key == 'document') continue;\n if (key == 'selection') continue;\n if (key == 'value') continue;\n if (key == 'node' && type != 'insert_node') continue;\n\n throw new Error('`Operation.fromJSON` was passed a \"' + type + '\" operation without the required \"' + key + '\" attribute.');\n }\n\n if (key === 'path' || key === 'newPath') {\n v = PathUtils.create(v);\n }\n\n if (key === 'mark') {\n v = Mark.create(v);\n }\n\n if (key === 'marks' && v != null) {\n v = Mark.createSet(v);\n }\n\n if (key === 'node') {\n v = Node.create(v);\n }\n\n if (key === 'selection') {\n v = Selection.create(v);\n }\n\n if (key === 'value') {\n v = Value.create(v);\n }\n\n if (key === 'properties' && type === 'merge_node') {\n v = Node.createProperties(v);\n }\n\n if (key === 'properties' && type === 'set_mark') {\n v = Mark.createProperties(v);\n }\n\n if (key === 'properties' && type === 'set_node') {\n v = Node.createProperties(v);\n }\n\n if (key === 'properties' && type === 'set_selection') {\n v = Selection.createProperties(v);\n }\n\n if (key === 'properties' && type === 'set_value') {\n v = Value.createProperties(v);\n }\n\n if (key === 'properties' && type === 'split_node') {\n v = Node.createProperties(v);\n }\n\n attrs[key] = v;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n var node = new Operation(attrs);\n return node;\n }\n\n /**\n * Check if `any` is a list of operations.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isOperationList',\n value: function isOperationList(any) {\n return List.isList(any) && any.every(function (item) {\n return Operation.isOperation(item);\n });\n }\n }]);\n return Operation;\n}(Record(DEFAULTS$14));\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$4 = Debug('slate:change');\n\n/**\n * Change.\n *\n * @type {Change}\n */\n\nvar Change = function () {\n /**\n * Create a new `Change` with `attrs`.\n *\n * @param {Object} attrs\n * @property {Value} value\n */\n\n function Change(attrs) {\n classCallCheck(this, Change);\n var value = attrs.value;\n\n this.value = value;\n this.operations = new List();\n\n this.tmp = {\n dirty: [],\n merge: null,\n normalize: true,\n save: true\n };\n }\n\n /**\n * Apply an `operation` to the current value, saving the operation to the\n * history if needed.\n *\n * @param {Operation|Object} operation\n * @return {Change}\n */\n\n createClass(Change, [{\n key: 'applyOperation',\n value: function applyOperation(operation) {\n var operations = this.operations;\n var value = this.value;\n var _value = value,\n history = _value.history;\n\n // Add in the current `value` in case the operation was serialized.\n\n if (isPlainObject(operation)) {\n operation = _extends({}, operation, { value: value });\n }\n\n operation = Operation.create(operation);\n\n // Default options to the change-level flags, this allows for setting\n // specific options for all of the operations of a given change.\n var _tmp = this.tmp,\n merge = _tmp.merge,\n save = _tmp.save;\n\n // If `merge` is non-commital, and this is not the first operation in a new change\n // then we should merge.\n\n if (merge == null && operations.size !== 0) {\n merge = true;\n }\n\n // Apply the operation to the value.\n debug$4('apply', { operation: operation, save: save, merge: merge });\n value = operation.apply(value);\n\n // If needed, save the operation to the history.\n if (history && save) {\n history = history.save(operation, { merge: merge });\n value = value.set('history', history);\n }\n\n // Get the paths of the affected nodes, and mark them as dirty.\n var newDirtyPaths = getDirtyPaths(operation);\n var dirty = this.tmp.dirty.reduce(function (memo, path) {\n path = PathUtils.create(path);\n var transformed = PathUtils.transform(path, operation);\n memo = memo.concat(transformed.toArray());\n return memo;\n }, newDirtyPaths);\n\n this.tmp.dirty = dirty;\n\n // Update the mutable change object.\n this.value = value;\n this.operations = operations.push(operation);\n return this;\n }\n\n /**\n * Apply a series of `operations` to the current value.\n *\n * @param {Array|List} operations\n * @param {Object} options\n * @return {Change}\n */\n\n }, {\n key: 'applyOperations',\n value: function applyOperations(operations, options) {\n var _this = this;\n\n operations.forEach(function (op) {\n return _this.applyOperation(op, options);\n });\n return this;\n }\n\n /**\n * Call a change `fn` with arguments.\n *\n * @param {Function} fn\n * @param {Mixed} ...args\n * @return {Change}\n */\n\n }, {\n key: 'call',\n value: function call(fn) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n fn.apply(undefined, [this].concat(args));\n this.normalizeDirtyPaths();\n return this;\n }\n\n /**\n * Normalize all of the nodes in the document from scratch.\n *\n * @return {Change}\n */\n\n }, {\n key: 'normalize',\n value: function normalize() {\n var value = this.value;\n var document = value.document;\n\n var table = document.getKeysToPathsTable();\n var paths = Object.values(table).map(PathUtils.create);\n this.tmp.dirty = this.tmp.dirty.concat(paths);\n this.normalizeDirtyPaths();\n return this;\n }\n\n /**\n * Normalize any new \"dirty\" paths that have been added to the change.\n *\n * @return {Change}\n */\n\n }, {\n key: 'normalizeDirtyPaths',\n value: function normalizeDirtyPaths() {\n if (!this.tmp.normalize) {\n return this;\n }\n\n while (this.tmp.dirty.length) {\n var path = this.tmp.dirty.pop();\n this.normalizeNodeByPath(path);\n }\n\n return this;\n }\n\n /**\n * Normalize the node at a specific `path`, iterating as many times as\n * necessary until it satisfies all of the schema rules.\n *\n * @param {Array} path\n * @return {Change}\n */\n\n }, {\n key: 'normalizeNodeByPath',\n value: function normalizeNodeByPath(path) {\n var _this2 = this;\n\n var value = this.value;\n var document = value.document,\n schema = value.schema;\n\n var node = document.assertNode(path);\n\n var iterations = 0;\n var max = schema.stack.plugins.length + schema.rules.length + (node.object === 'text' ? 1 : node.nodes.size);\n\n var iterate = function iterate() {\n var fn = node.normalize(schema);\n if (!fn) return;\n\n // Run the normalize `fn` to fix the node.\n fn(_this2);\n\n // Attempt to re-find the node by path, or by key if it has changed\n // locations in the tree continue iterating.\n document = _this2.value.document;\n var _node = node,\n key = _node.key;\n\n var found = document.getDescendant(path);\n\n if (found && found.key === key) {\n node = found;\n } else {\n found = document.getDescendant(key);\n\n if (found) {\n node = found;\n path = document.getPath(key);\n } else {\n // If it no longer exists by key, it was removed, so abort.\n return;\n }\n }\n\n // Increment the iterations counter, and check to make sure that we haven't\n // exceeded the max. Without this check, it's easy for the `normalize`\n // function of a schema rule to be written incorrectly and for an infinite\n // invalid loop to occur.\n iterations++;\n\n if (iterations > max) {\n throw new Error('A schema rule could not be normalized after sufficient iterations. This is usually due to a `rule.normalize` or `plugin.normalizeNode` function of a schema being incorrectly written, causing an infinite loop.');\n }\n\n // Otherwise, iterate again.\n iterate();\n };\n\n this.withoutNormalizing(function () {\n iterate();\n });\n\n return this;\n }\n\n /**\n * Apply a series of changes inside a synchronous `fn`, deferring\n * normalization until after the function has finished executing.\n *\n * @param {Function} fn\n * @return {Change}\n */\n\n }, {\n key: 'withoutNormalizing',\n value: function withoutNormalizing(fn) {\n var value = this.tmp.normalize;\n this.tmp.normalize = false;\n fn(this);\n this.tmp.normalize = value;\n this.normalizeDirtyPaths();\n return this;\n }\n\n /**\n * Apply a series of changes inside a synchronous `fn`, without merging any of\n * the new operations into previous save point in the history.\n *\n * @param {Function} fn\n * @return {Change}\n */\n\n }, {\n key: 'withoutMerging',\n value: function withoutMerging(fn) {\n var value = this.tmp.merge;\n this.tmp.merge = false;\n fn(this);\n this.tmp.merge = value;\n return this;\n }\n\n /**\n * Apply a series of changes inside a synchronous `fn`, without saving any of\n * their operations into the history.\n *\n * @param {Function} fn\n * @return {Change}\n */\n\n }, {\n key: 'withoutSaving',\n value: function withoutSaving(fn) {\n var value = this.tmp.save;\n this.tmp.save = false;\n fn(this);\n this.tmp.save = value;\n return this;\n }\n\n /**\n * Set an operation flag by `key` to `value`.\n *\n * @param {String} key\n * @param {Any} value\n * @return {Change}\n */\n\n /**\n * Deprecated.\n */\n\n }, {\n key: 'setOperationFlag',\n value: function setOperationFlag(key, value) {\n warning(false, 'As of slate@0.41.0 the `change.setOperationFlag` method has been deprecated.');\n\n this.tmp[key] = value;\n return this;\n }\n }, {\n key: 'getFlag',\n value: function getFlag(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n warning(false, 'As of slate@0.41.0 the `change.getFlag` method has been deprecated.');\n\n return options[key] !== undefined ? options[key] : this.tmp[key];\n }\n }, {\n key: 'unsetOperationFlag',\n value: function unsetOperationFlag(key) {\n warning(false, 'As of slate@0.41.0 the `change.unsetOperationFlag` method has been deprecated.');\n\n delete this.tmp[key];\n return this;\n }\n }, {\n key: 'withoutNormalization',\n value: function withoutNormalization(fn) {\n warning(false, 'As of slate@0.41.0 the `change.withoutNormalization` helper has been renamed to `change.withoutNormalizing`.');\n\n return this.withoutNormalizing(fn);\n }\n }]);\n return Change;\n}();\n\n/**\n * Get the \"dirty\" paths for a given `operation`.\n *\n * @param {Operation} operation\n * @return {Array}\n */\n\nfunction getDirtyPaths(operation) {\n var type = operation.type,\n node = operation.node,\n path = operation.path,\n newPath = operation.newPath;\n\n\n switch (type) {\n case 'add_mark':\n case 'insert_text':\n case 'remove_mark':\n case 'remove_text':\n case 'set_mark':\n case 'set_node':\n {\n return [path];\n }\n\n case 'insert_node':\n {\n var table = node.getKeysToPathsTable();\n var paths = Object.values(table).map(function (p) {\n return path.concat(p);\n });\n var parentPath = PathUtils.lift(path);\n return [parentPath, path].concat(toConsumableArray(paths));\n }\n\n case 'split_node':\n {\n var _parentPath = PathUtils.lift(path);\n var nextPath = PathUtils.increment(path);\n return [_parentPath, path, nextPath];\n }\n\n case 'merge_node':\n {\n var _parentPath2 = PathUtils.lift(path);\n var previousPath = PathUtils.decrement(path);\n return [_parentPath2, previousPath];\n }\n\n case 'move_node':\n {\n var _parentPath3 = PathUtils.lift(path);\n var newParentPath = PathUtils.lift(newPath);\n\n // HACK: this clause only exists because the `move_path` logic isn't\n // consistent when it deals with siblings.\n if (!PathUtils.isSibling(path, newPath)) {\n if (newParentPath.size && PathUtils.isYounger(path, newPath)) {\n newParentPath = PathUtils.decrement(newParentPath, 1, path.size - 1);\n }\n\n if (_parentPath3.size && PathUtils.isYounger(newPath, path)) {\n _parentPath3 = PathUtils.increment(_parentPath3, 1, newPath.size - 1);\n }\n }\n\n return [_parentPath3, newParentPath];\n }\n\n case 'remove_node':\n {\n var _parentPath4 = PathUtils.lift(path);\n return [_parentPath4];\n }\n\n default:\n {\n return [];\n }\n }\n}\n\n/**\n * Add a change method for each of the changes.\n */\n\nObject.keys(Changes$6).forEach(function (type) {\n Change.prototype[type] = function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n debug$4(type, { args: args });\n this.call.apply(this, [Changes$6[type]].concat(args));\n return this;\n };\n});\n\n/**\n * Mix in an `Interface` to a `Class`.\n *\n * @param {Class} Interface\n * @param {Class} Class\n */\n\nfunction mixin(Interface, Classes) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = Classes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var Class = _step.value;\n\n // Copy static properties from the interface.\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = Object.getOwnPropertyNames(Interface)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var name = _step2.value;\n\n if (Class.hasOwnProperty(name)) continue;\n var desc = Object.getOwnPropertyDescriptor(Interface, name);\n Object.defineProperty(Class, name, desc);\n }\n\n // Copy instance properties from the interface.\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = Object.getOwnPropertyNames(Interface.prototype)[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _name = _step3.value;\n\n if (Class.prototype.hasOwnProperty(_name)) continue;\n var desc = Object.getOwnPropertyDescriptor(Interface.prototype, _name);\n Object.defineProperty(Class.prototype, _name, desc);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\n\n/**\n * A factory for the interface that all Slate objects implement.\n *\n * @type {Function}\n */\n\nfunction create$2(type) {\n var TYPE = TYPES[type];\n var camel = '' + type.charAt(0).toUpperCase() + type.slice(1);\n var is$$1 = 'is' + camel;\n\n var ObjectInterface = function () {\n function ObjectInterface() {\n classCallCheck(this, ObjectInterface);\n }\n\n createClass(ObjectInterface, [{\n key: 'object',\n\n /**\n * Return the type of the object.\n *\n * @return {String}\n */\n\n get: function get$$1() {\n return type;\n }\n }]);\n return ObjectInterface;\n }();\n\n ObjectInterface[is$$1] = isObject.bind(null, type);\n ObjectInterface.prototype[TYPE] = true;\n return ObjectInterface;\n}\n\n/**\n * Mix in the object interfaces.\n */\n\nmixin(create$2('block'), [Block]);\nmixin(create$2('change'), [Change]);\nmixin(create$2('decoration'), [Decoration]);\nmixin(create$2('document'), [Document]);\nmixin(create$2('history'), [History]);\nmixin(create$2('inline'), [Inline]);\nmixin(create$2('leaf'), [Leaf]);\nmixin(create$2('mark'), [Mark]);\nmixin(create$2('node'), [Node]);\nmixin(create$2('operation'), [Operation]);\nmixin(create$2('point'), [Point]);\nmixin(create$2('range'), [Range]);\nmixin(create$2('schema'), [Schema]);\nmixin(create$2('selection'), [Selection]);\nmixin(create$2('stack'), [Stack$1]);\nmixin(create$2('text'), [Text]);\nmixin(create$2('value'), [Value]);\n\n/**\n * The interface that all Slate models implement.\n *\n * @type {Class}\n */\n\nvar ModelInterface = function () {\n function ModelInterface() {\n classCallCheck(this, ModelInterface);\n }\n\n createClass(ModelInterface, [{\n key: 'toJS',\n\n\n /**\n * Alias `toJS`.\n */\n\n value: function toJS() {\n return this.toJSON.apply(this, arguments);\n }\n }], [{\n key: 'fromJS',\n\n /**\n * Alias `fromJS`.\n */\n\n value: function fromJS() {\n return this.fromJSON.apply(this, arguments);\n }\n }]);\n return ModelInterface;\n}();\n\n/**\n * Mix in the common interface.\n *\n * @param {Record}\n */\n\nmixin(ModelInterface, [Block, Change, Decoration, Document, History, Inline, Leaf, Mark, Node, Operation, Point, Range, Schema, Selection, Stack$1, Text, Value]);\n\n/**\n * The interface that `Document`, `Block` and `Inline` all implement, to make\n * working with the recursive node tree easier.\n *\n * @type {Class}\n */\n\nvar NodeInterface = function () {\n function NodeInterface() {\n classCallCheck(this, NodeInterface);\n }\n\n createClass(NodeInterface, [{\n key: 'getFirstInvalidNode',\n\n\n /**\n * Check whether the node is a leaf inline.\n *\n * @return {Boolean}\n */\n\n value: function getFirstInvalidNode(schema) {\n if (this.object === 'text') {\n var _invalid = this.validate(schema) ? this : null;\n return _invalid;\n }\n\n var invalid = null;\n\n this.nodes.find(function (n) {\n invalid = n.validate(schema) ? n : n.getFirstInvalidNode(schema);\n return invalid;\n });\n\n return invalid;\n }\n\n /**\n * Get the first text node of a node, or the node itself.\n *\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFirstText',\n value: function getFirstText() {\n if (this.object === 'text') {\n return this;\n }\n\n var descendant = null;\n\n var found = this.nodes.find(function (node) {\n if (node.object === 'text') return true;\n descendant = node.getFirstText();\n return !!descendant;\n });\n\n return descendant || found;\n }\n\n /**\n * Get an object mapping all the keys in the node to their paths.\n *\n * @return {Object}\n */\n\n }, {\n key: 'getKeysToPathsTable',\n value: function getKeysToPathsTable() {\n var ret = defineProperty({}, this.key, []);\n\n if (this.nodes) {\n this.nodes.forEach(function (node, i) {\n var nested = node.getKeysToPathsTable();\n\n for (var key in nested) {\n var path = nested[key];\n\n warning(!(key in ret), 'A node with a duplicate key of \"' + key + '\" was found! Duplicate keys are not allowed, you should use `node.regenerateKey` before inserting if you are reusing an existing node.');\n\n ret[key] = [i].concat(toConsumableArray(path));\n }\n });\n }\n\n return ret;\n }\n\n /**\n * Get the last text node of a node, or the node itself.\n *\n * @return {Node|Null}\n */\n\n }, {\n key: 'getLastText',\n value: function getLastText() {\n if (this.object === 'text') {\n return this;\n }\n\n var descendant = null;\n\n var found = this.nodes.findLast(function (node) {\n if (node.object == 'text') return true;\n descendant = node.getLastText();\n return descendant;\n });\n\n return descendant || found;\n }\n\n /**\n * Get a node in the tree, or the node itself.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNode',\n value: function getNode(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (this.object === 'text' && path.size) return null;\n var node = path.size ? this.getDescendant(path) : this;\n return node;\n }\n\n /**\n * Find the path to a node.\n *\n * @param {String|List} key\n * @return {List}\n */\n\n }, {\n key: 'getPath',\n value: function getPath(key) {\n // Handle the case of passing in a path directly, to match other methods.\n if (List.isList(key)) return key;\n\n var dict = this.getKeysToPathsTable();\n var path = dict[key];\n return path ? List(path) : null;\n }\n\n /**\n * Get the concatenated text string of a node.\n *\n * @return {String}\n */\n\n }, {\n key: 'getText',\n value: function getText() {\n var children = this.object === 'text' ? this.leaves : this.nodes;\n var text = children.reduce(function (memo, c) {\n return memo + c.text;\n }, '');\n return text;\n }\n\n /**\n * Check if a node exists.\n *\n * @param {List|String} path\n * @return {Boolean}\n */\n\n }, {\n key: 'hasNode',\n value: function hasNode(path) {\n var node = this.getNode(path);\n return !!node;\n }\n\n /**\n * Normalize the text node with a `schema`.\n *\n * @param {Schema} schema\n * @return {Function|Void}\n */\n\n }, {\n key: 'normalize',\n value: function normalize(schema) {\n var normalizer = schema.normalizeNode(this);\n return normalizer;\n }\n\n /**\n * Regenerate the node's key.\n *\n * @return {Node}\n */\n\n }, {\n key: 'regenerateKey',\n value: function regenerateKey() {\n var key = KeyUtils.create();\n var node = this.set('key', key);\n return node;\n }\n\n /**\n * Resolve a path from a path list or key string.\n *\n * An `index` can be provided, in which case paths created from a key string\n * will have the index pushed onto them. This is helpful in cases where you\n * want to accept either a `path` or a `key, index` combination for targeting\n * a location in the tree that doesn't exist yet, like when inserting.\n *\n * @param {List|String} value\n * @param {Number} index\n * @return {List}\n */\n\n }, {\n key: 'resolvePath',\n value: function resolvePath(path, index) {\n if (typeof path === 'string') {\n path = this.getPath(path);\n\n if (index != null) {\n path = path.concat(index);\n }\n } else {\n path = PathUtils.create(path);\n }\n\n return path;\n }\n\n /**\n * Validate the node against a `schema`.\n *\n * @param {Schema} schema\n * @return {Error|Void}\n */\n\n }, {\n key: 'validate',\n value: function validate(schema) {\n var error = schema.validateNode(this);\n return error;\n }\n }, {\n key: 'text',\n\n /**\n * Get the concatenated text of the node.\n *\n * @return {String}\n */\n\n get: function get$$1() {\n return this.getText();\n }\n }]);\n return NodeInterface;\n}();\n\n/**\n * Memoize read methods.\n */\n\nmemoize(NodeInterface.prototype, ['getFirstInvalidNode', 'getFirstText', 'getKeysToPathsTable', 'getLastText', 'getText', 'normalize', 'validate']);\n\n/**\n * Mix in the node interface.\n */\n\nmixin(NodeInterface, [Block, Document, Inline, Text]);\n\n/**\n * The interface that `Document`, `Block` and `Inline` all implement, to make\n * working with the recursive node tree easier.\n *\n * @type {Class}\n */\n\nvar ElementInterface = function () {\n function ElementInterface() {\n classCallCheck(this, ElementInterface);\n }\n\n createClass(ElementInterface, [{\n key: 'addMark',\n\n /**\n * Add mark to text at `offset` and `length` in node by `path`.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n * @return {Node}\n */\n\n value: function addMark(path, offset, length, mark) {\n var node = this.assertDescendant(path);\n path = this.resolvePath(path);\n node = node.addMark(offset, length, mark);\n var ret = this.replaceNode(path, node);\n return ret;\n }\n\n /**\n * Create a decoration with `properties` relative to the node.\n *\n * @param {Object|Decoration} properties\n * @return {Decoration}\n */\n\n }, {\n key: 'createDecoration',\n value: function createDecoration(properties) {\n properties = Decoration.createProperties(properties);\n var decoration = this.resolveDecoration(properties);\n return decoration;\n }\n\n /**\n * Create a point with `properties` relative to the node.\n *\n * @param {Object|Point} properties\n * @return {Range}\n */\n\n }, {\n key: 'createPoint',\n value: function createPoint(properties) {\n properties = Point.createProperties(properties);\n var point = this.resolvePoint(properties);\n return point;\n }\n\n /**\n * Create a range with `properties` relative to the node.\n *\n * @param {Object|Range} properties\n * @return {Range}\n */\n\n }, {\n key: 'createRange',\n value: function createRange(properties) {\n properties = Range.createProperties(properties);\n var range = this.resolveRange(properties);\n return range;\n }\n\n /**\n * Create a selection with `properties` relative to the node.\n *\n * @param {Object|Selection} properties\n * @return {Selection}\n */\n\n }, {\n key: 'createSelection',\n value: function createSelection(properties) {\n properties = Selection.createProperties(properties);\n var selection = this.resolveSelection(properties);\n return selection;\n }\n\n /**\n * Recursively filter all descendant nodes with `iterator`.\n *\n * @param {Function} iterator\n * @return {List}\n */\n\n }, {\n key: 'filterDescendants',\n value: function filterDescendants(iterator) {\n var matches = [];\n\n this.forEachDescendant(function (node, i, nodes) {\n if (iterator(node, i, nodes)) matches.push(node);\n });\n\n return List(matches);\n }\n\n /**\n * Recursively find all descendant nodes by `iterator`.\n *\n * @param {Function} iterator\n * @return {Node|Null}\n */\n\n }, {\n key: 'findDescendant',\n value: function findDescendant(iterator) {\n var found = null;\n\n this.forEachDescendant(function (node, i, nodes) {\n if (iterator(node, i, nodes)) {\n found = node;\n return false;\n }\n });\n\n return found;\n }\n\n /**\n * Recursively iterate over all descendant nodes with `iterator`. If the\n * iterator returns false it will break the loop.\n *\n * @param {Function} iterator\n */\n\n }, {\n key: 'forEachDescendant',\n value: function forEachDescendant(iterator) {\n var ret = void 0;\n\n this.nodes.forEach(function (child, i, nodes) {\n if (iterator(child, i, nodes) === false) {\n ret = false;\n return false;\n }\n\n if (child.object != 'text') {\n ret = child.forEachDescendant(iterator);\n return ret;\n }\n });\n\n return ret;\n }\n\n /**\n * Get a set of the active marks in a `range`.\n *\n * @param {Range} range\n * @return {Set}\n */\n\n }, {\n key: 'getActiveMarksAtRange',\n value: function getActiveMarksAtRange(range) {\n range = this.resolveRange(range);\n if (range.isUnset) return Set();\n\n if (range.isCollapsed) {\n var _range = range,\n _start = _range.start;\n\n return this.getMarksAtPosition(_start.key, _start.offset).toSet();\n }\n\n var _range2 = range,\n start = _range2.start,\n end = _range2.end;\n\n var startKey = start.key;\n var startOffset = start.offset;\n var endKey = end.key;\n var endOffset = end.offset;\n var startText = this.getDescendant(startKey);\n\n if (startKey !== endKey) {\n while (startKey !== endKey && endOffset === 0) {\n var _endText = this.getPreviousText(endKey);\n endKey = _endText.key;\n endOffset = _endText.text.length;\n }\n\n while (startKey !== endKey && startOffset === startText.text.length) {\n startText = this.getNextText(startKey);\n startKey = startText.key;\n startOffset = 0;\n }\n }\n\n if (startKey === endKey) {\n return startText.getActiveMarksBetweenOffsets(startOffset, endOffset);\n }\n\n var startMarks = startText.getActiveMarksBetweenOffsets(startOffset, startText.text.length);\n if (startMarks.size === 0) return Set();\n var endText = this.getDescendant(endKey);\n var endMarks = endText.getActiveMarksBetweenOffsets(0, endOffset);\n var marks = startMarks.intersect(endMarks);\n // If marks is already empty, the active marks is empty\n if (marks.size === 0) return marks;\n\n var text = this.getNextText(startKey);\n\n while (text.key !== endKey) {\n if (text.text.length !== 0) {\n marks = marks.intersect(text.getActiveMarks());\n if (marks.size === 0) return Set();\n }\n\n text = this.getNextText(text.key);\n }\n return marks;\n }\n\n /**\n * Get a list of the ancestors of a descendant.\n *\n * @param {List|String} path\n * @return {List|Null}\n */\n\n }, {\n key: 'getAncestors',\n value: function getAncestors(path) {\n var _this = this;\n\n path = this.resolvePath(path);\n if (!path) return null;\n\n var ancestors = [];\n\n path.forEach(function (p, i) {\n var current = path.slice(0, i);\n var parent = _this.getNode(current);\n ancestors.push(parent);\n });\n\n return List(ancestors);\n }\n\n /**\n * Get the leaf block descendants of the node.\n *\n * @return {List}\n */\n\n }, {\n key: 'getBlocks',\n value: function getBlocks() {\n var array = this.getBlocksAsArray();\n return List(array);\n }\n\n /**\n * Get the leaf block descendants of the node.\n *\n * @return {List}\n */\n\n }, {\n key: 'getBlocksAsArray',\n value: function getBlocksAsArray() {\n return this.nodes.reduce(function (array, child) {\n if (child.object != 'block') return array;\n if (!child.isLeafBlock()) return array.concat(child.getBlocksAsArray());\n array.push(child);\n return array;\n }, []);\n }\n\n /**\n * Get the leaf block descendants in a `range`.\n *\n * @param {Range} range\n * @return {List}\n */\n\n }, {\n key: 'getBlocksAtRange',\n value: function getBlocksAtRange(range) {\n var array = this.getBlocksAtRangeAsArray(range);\n // Eliminate duplicates by converting to an `OrderedSet` first.\n return List(OrderedSet(array));\n }\n\n /**\n * Get the leaf block descendants in a `range` as an array\n *\n * @param {Range} range\n * @return {Array}\n */\n\n }, {\n key: 'getBlocksAtRangeAsArray',\n value: function getBlocksAtRangeAsArray(range) {\n range = this.resolveRange(range);\n if (range.isUnset) return [];\n\n var _range3 = range,\n start = _range3.start,\n end = _range3.end;\n\n var startBlock = this.getClosestBlock(start.key);\n\n // PERF: the most common case is when the range is in a single block node,\n // where we can avoid a lot of iterating of the tree.\n if (start.key === end.key) return [startBlock];\n\n var endBlock = this.getClosestBlock(end.key);\n var blocks = this.getBlocksAsArray();\n var startIndex = blocks.indexOf(startBlock);\n var endIndex = blocks.indexOf(endBlock);\n return blocks.slice(startIndex, endIndex + 1);\n }\n\n /**\n * Get all of the leaf blocks that match a `type`.\n *\n * @param {String} type\n * @return {List}\n */\n\n }, {\n key: 'getBlocksByType',\n value: function getBlocksByType(type) {\n var array = this.getBlocksByTypeAsArray(type);\n return List(array);\n }\n\n /**\n * Get all of the leaf blocks that match a `type` as an array\n *\n * @param {String} type\n * @return {Array}\n */\n\n }, {\n key: 'getBlocksByTypeAsArray',\n value: function getBlocksByTypeAsArray(type) {\n return this.nodes.reduce(function (array, node) {\n if (node.object != 'block') {\n return array;\n } else if (node.isLeafBlock() && node.type == type) {\n array.push(node);\n return array;\n } else {\n return array.concat(node.getBlocksByTypeAsArray(type));\n }\n }, []);\n }\n\n /**\n * Get a child node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getChild',\n value: function getChild(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n var child = path.size === 1 ? this.nodes.get(path.first()) : null;\n return child;\n }\n\n /**\n * Get closest parent of node that matches an `iterator`.\n *\n * @param {List|String} path\n * @param {Function} iterator\n * @return {Node|Null}\n */\n\n }, {\n key: 'getClosest',\n value: function getClosest(path, iterator) {\n var _this2 = this;\n\n var ancestors = this.getAncestors(path);\n if (!ancestors) return null;\n\n var closest = ancestors.findLast(function (node) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n // We never want to include the top-level node.\n if (node === _this2) return false;\n return iterator.apply(undefined, [node].concat(args));\n });\n\n return closest || null;\n }\n\n /**\n * Get the closest block parent of a node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getClosestBlock',\n value: function getClosestBlock(path) {\n var closest = this.getClosest(path, function (n) {\n return n.object === 'block';\n });\n return closest;\n }\n\n /**\n * Get the closest inline parent of a node by `path`.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getClosestInline',\n value: function getClosestInline(path) {\n var closest = this.getClosest(path, function (n) {\n return n.object === 'inline';\n });\n return closest;\n }\n\n /**\n * Get the closest void parent of a node by `path`.\n *\n * @param {List|String} path\n * @param {Schema} schema\n * @return {Node|Null}\n */\n\n }, {\n key: 'getClosestVoid',\n value: function getClosestVoid(path, schema) {\n var ancestors = this.getAncestors(path);\n if (!ancestors) return null;\n\n var ancestor = ancestors.findLast(function (a) {\n return schema.isVoid(a);\n });\n return ancestor;\n }\n\n /**\n * Get the common ancestor of nodes `a` and `b`.\n *\n * @param {List} a\n * @param {List} b\n * @return {Node}\n */\n\n }, {\n key: 'getCommonAncestor',\n value: function getCommonAncestor(a, b) {\n a = this.resolvePath(a);\n b = this.resolvePath(b);\n if (!a || !b) return null;\n\n var path = PathUtils.relate(a, b);\n var node = this.getNode(path);\n return node;\n }\n\n /**\n * Get the decorations for the node from a `stack`.\n *\n * @param {Stack} stack\n * @return {List}\n */\n\n }, {\n key: 'getDecorations',\n value: function getDecorations(stack) {\n var allDecorations = stack.map('decorateNode', this).map(function (decorations) {\n return Decoration.createList(decorations);\n });\n var list = List(allDecorations).flatten(true);\n return list;\n }\n\n /**\n * Get the depth of a descendant, with optional `startAt`.\n *\n * @param {List|String} path\n * @param {Number} startAt\n * @return {Number|Null}\n */\n\n }, {\n key: 'getDepth',\n value: function getDepth(path) {\n var startAt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n path = this.resolvePath(path);\n if (!path) return null;\n\n var node = this.getNode(path);\n var depth = node ? path.size - 1 + startAt : null;\n return depth;\n }\n\n /**\n * Get a descendant node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getDescendant',\n value: function getDescendant(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n\n var deep = path.flatMap(function (x) {\n return ['nodes', x];\n });\n var ret = this.getIn(deep);\n return ret;\n }\n\n /**\n * Get a fragment of the node at a `range`.\n *\n * @param {Range} range\n * @return {Document}\n */\n\n }, {\n key: 'getFragmentAtRange',\n value: function getFragmentAtRange(range) {\n range = this.resolveRange(range);\n\n if (range.isUnset) {\n return Document.create();\n }\n\n var _range4 = range,\n start = _range4.start,\n end = _range4.end;\n\n var node = this;\n var targetPath = end.path;\n var targetPosition = end.offset;\n var mode = 'end';\n\n while (targetPath.size) {\n var index = targetPath.last();\n node = node.splitNode(targetPath, targetPosition);\n targetPosition = index + 1;\n targetPath = PathUtils.lift(targetPath);\n\n if (!targetPath.size && mode === 'end') {\n targetPath = start.path;\n targetPosition = start.offset;\n mode = 'start';\n }\n }\n\n var startIndex = start.path.first() + 1;\n var endIndex = end.path.first() + 2;\n var nodes = node.nodes.slice(startIndex, endIndex);\n var fragment = Document.create({ nodes: nodes });\n return fragment;\n }\n\n /**\n * Get the furthest parent of a node that matches an `iterator`.\n *\n * @param {Path} path\n * @param {Function} iterator\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFurthest',\n value: function getFurthest(path, iterator) {\n var _this3 = this;\n\n var ancestors = this.getAncestors(path);\n if (!ancestors) return null;\n\n var furthest = ancestors.find(function (node) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n // We never want to include the top-level node.\n if (node === _this3) return false;\n return iterator.apply(undefined, [node].concat(args));\n });\n\n return furthest || null;\n }\n\n /**\n * Get the furthest ancestor of a node.\n *\n * @param {Path} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFurthestAncestor',\n value: function getFurthestAncestor(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n var furthest = path.size ? this.nodes.get(path.first()) : null;\n return furthest;\n }\n\n /**\n * Get the furthest block parent of a node.\n *\n * @param {Path} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFurthestBlock',\n value: function getFurthestBlock(path) {\n var furthest = this.getFurthest(path, function (n) {\n return n.object === 'block';\n });\n return furthest;\n }\n\n /**\n * Get the furthest inline parent of a node.\n *\n * @param {Path} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFurthestInline',\n value: function getFurthestInline(path) {\n var furthest = this.getFurthest(path, function (n) {\n return n.object === 'inline';\n });\n return furthest;\n }\n\n /**\n * Get the furthest ancestor of a node that has only one child.\n *\n * @param {Path} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFurthestOnlyChildAncestor',\n value: function getFurthestOnlyChildAncestor(path) {\n var ancestors = this.getAncestors(path);\n if (!ancestors) return null;\n\n var furthest = ancestors.rest().reverse().takeUntil(function (p) {\n return p.nodes.size > 1;\n }).last();\n\n return furthest || null;\n }\n\n /**\n * Get the closest inline nodes for each text node in the node.\n *\n * @return {List}\n */\n\n }, {\n key: 'getInlines',\n value: function getInlines() {\n var array = this.getInlinesAsArray();\n var list = List(array);\n return list;\n }\n\n /**\n * Get the closest inline nodes for each text node in the node, as an array.\n *\n * @return {List}\n */\n\n }, {\n key: 'getInlinesAsArray',\n value: function getInlinesAsArray() {\n var array = [];\n\n this.nodes.forEach(function (child) {\n if (child.object == 'text') return;\n\n if (child.isLeafInline()) {\n array.push(child);\n } else {\n array = array.concat(child.getInlinesAsArray());\n }\n });\n\n return array;\n }\n\n /**\n * Get the closest inline nodes for each text node in a `range`.\n *\n * @param {Range} range\n * @return {List}\n */\n\n }, {\n key: 'getInlinesAtRange',\n value: function getInlinesAtRange(range) {\n var array = this.getInlinesAtRangeAsArray(range);\n // Remove duplicates by converting it to an `OrderedSet` first.\n var list = List(OrderedSet(array));\n return list;\n }\n\n /**\n * Get the closest inline nodes for each text node in a `range` as an array.\n *\n * @param {Range} range\n * @return {Array}\n */\n\n }, {\n key: 'getInlinesAtRangeAsArray',\n value: function getInlinesAtRangeAsArray(range) {\n var _this4 = this;\n\n range = this.resolveRange(range);\n if (range.isUnset) return [];\n\n var array = this.getTextsAtRangeAsArray(range).map(function (text) {\n return _this4.getClosestInline(text.key);\n }).filter(function (exists) {\n return exists;\n });\n\n return array;\n }\n\n /**\n * Get all of the leaf inline nodes that match a `type`.\n *\n * @param {String} type\n * @return {List}\n */\n\n }, {\n key: 'getInlinesByType',\n value: function getInlinesByType(type) {\n var array = this.getInlinesByTypeAsArray(type);\n var list = List(array);\n return list;\n }\n\n /**\n * Get all of the leaf inline nodes that match a `type` as an array.\n *\n * @param {String} type\n * @return {Array}\n */\n\n }, {\n key: 'getInlinesByTypeAsArray',\n value: function getInlinesByTypeAsArray(type) {\n var array = this.nodes.reduce(function (inlines, node) {\n if (node.object == 'text') {\n return inlines;\n } else if (node.isLeafInline() && node.type == type) {\n inlines.push(node);\n return inlines;\n } else {\n return inlines.concat(node.getInlinesByTypeAsArray(type));\n }\n }, []);\n\n return array;\n }\n\n /**\n * Get a set of the marks in a `range`.\n *\n * @param {Range} range\n * @return {Set}\n */\n\n }, {\n key: 'getInsertMarksAtRange',\n value: function getInsertMarksAtRange(range) {\n range = this.resolveRange(range);\n var _range5 = range,\n start = _range5.start;\n\n\n if (range.isUnset) {\n return Set();\n }\n\n if (range.isCollapsed) {\n // PERF: range is not cachable, use key and offset as proxies for cache\n return this.getMarksAtPosition(start.key, start.offset);\n }\n\n var text = this.getDescendant(start.key);\n var marks = text.getMarksAtIndex(start.offset + 1);\n return marks;\n }\n\n /**\n * Get all of the marks for all of the characters of every text node.\n *\n * @return {Set}\n */\n\n }, {\n key: 'getMarks',\n value: function getMarks() {\n var array = this.getMarksAsArray();\n return Set(array);\n }\n\n /**\n * Get all of the marks as an array.\n *\n * @return {Array}\n */\n\n }, {\n key: 'getMarksAsArray',\n value: function getMarksAsArray() {\n var _ref;\n\n var result = [];\n\n this.nodes.forEach(function (node) {\n result.push(node.getMarksAsArray());\n });\n\n // PERF: use only one concat rather than multiple for speed.\n var array = (_ref = []).concat.apply(_ref, result);\n return array;\n }\n\n /**\n * Get a set of marks in a `position`, the equivalent of a collapsed range\n *\n * @param {string} key\n * @param {number} offset\n * @return {Set}\n */\n\n }, {\n key: 'getMarksAtPosition',\n value: function getMarksAtPosition(key, offset) {\n var text = this.getDescendant(key);\n var currentMarks = text.getMarksAtIndex(offset);\n if (offset !== 0) return currentMarks;\n var closestBlock = this.getClosestBlock(key);\n\n if (closestBlock.text === '') {\n // insert mark for empty block; the empty block are often created by split node or add marks in a range including empty blocks\n return currentMarks;\n }\n\n var previous = this.getPreviousText(key);\n if (!previous) return Set();\n\n if (closestBlock.hasDescendant(previous.key)) {\n return previous.getMarksAtIndex(previous.text.length);\n }\n\n return currentMarks;\n }\n\n /**\n * Get a set of the marks in a `range`.\n *\n * @param {Range} range\n * @return {Set}\n */\n\n }, {\n key: 'getMarksAtRange',\n value: function getMarksAtRange(range) {\n var marks = Set(this.getOrderedMarksAtRange(range));\n return marks;\n }\n\n /**\n * Get all of the marks that match a `type`.\n *\n * @param {String} type\n * @return {Set}\n */\n\n }, {\n key: 'getMarksByType',\n value: function getMarksByType(type) {\n var array = this.getMarksByTypeAsArray(type);\n return Set(array);\n }\n\n /**\n * Get all of the marks that match a `type` as an array.\n *\n * @param {String} type\n * @return {Array}\n */\n\n }, {\n key: 'getMarksByTypeAsArray',\n value: function getMarksByTypeAsArray(type) {\n var array = this.nodes.reduce(function (memo, node) {\n return node.object == 'text' ? memo.concat(node.getMarksAsArray().filter(function (m) {\n return m.type == type;\n })) : memo.concat(node.getMarksByTypeAsArray(type));\n }, []);\n\n return array;\n }\n\n /**\n * Get the block node before a descendant text node by `key`.\n *\n * @param {String} key\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNextBlock',\n value: function getNextBlock(key) {\n var child = this.assertDescendant(key);\n var last = void 0;\n\n if (child.object == 'block') {\n last = child.getLastText();\n } else {\n var block = this.getClosestBlock(key);\n last = block.getLastText();\n }\n\n var next = this.getNextText(last.key);\n if (!next) return null;\n\n var closest = this.getClosestBlock(next.key);\n return closest;\n }\n\n /**\n * Get the next node in the tree from a node.\n *\n * This will not only check for siblings but instead move up the tree\n * returning the next ancestor if no sibling is found.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNextNode',\n value: function getNextNode(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (!path.size) return null;\n\n for (var i = path.size; i > 0; i--) {\n var p = path.slice(0, i);\n var target = PathUtils.increment(p);\n var node = this.getNode(target);\n if (node) return node;\n }\n\n return null;\n }\n\n /**\n * Get the next sibling of a node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNextSibling',\n value: function getNextSibling(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (!path.size) return null;\n var p = PathUtils.increment(path);\n var sibling = this.getNode(p);\n return sibling;\n }\n\n /**\n * Get the text node after a descendant text node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNextText',\n value: function getNextText(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (!path.size) return null;\n var next = this.getNextNode(path);\n if (!next) return null;\n var text = next.getFirstText();\n return text;\n }\n\n /**\n * Get the offset for a descendant text node by `key`.\n *\n * @param {String} key\n * @return {Number}\n */\n\n }, {\n key: 'getOffset',\n value: function getOffset(key) {\n this.assertDescendant(key);\n\n // Calculate the offset of the nodes before the highest child.\n var child = this.getFurthestAncestor(key);\n var offset = this.nodes.takeUntil(function (n) {\n return n == child;\n }).reduce(function (memo, n) {\n return memo + n.text.length;\n }, 0);\n\n // Recurse if need be.\n var ret = this.hasChild(key) ? offset : offset + child.getOffset(key);\n return ret;\n }\n\n /**\n * Get the offset from a `range`.\n *\n * @param {Range} range\n * @return {Number}\n */\n\n }, {\n key: 'getOffsetAtRange',\n value: function getOffsetAtRange(range) {\n range = this.resolveRange(range);\n\n if (range.isUnset) {\n throw new Error('The range cannot be unset to calculcate its offset.');\n }\n\n if (range.isExpanded) {\n throw new Error('The range must be collapsed to calculcate its offset.');\n }\n\n var _range6 = range,\n start = _range6.start;\n\n var offset = this.getOffset(start.key) + start.offset;\n return offset;\n }\n\n /**\n * Get all of the marks for all of the characters of every text node.\n *\n * @return {OrderedSet}\n */\n\n }, {\n key: 'getOrderedMarks',\n value: function getOrderedMarks() {\n var array = this.getMarksAsArray();\n return OrderedSet(array);\n }\n\n /**\n * Get a set of the marks in a `range`.\n *\n * @param {Range} range\n * @return {OrderedSet}\n */\n\n }, {\n key: 'getOrderedMarksAtRange',\n value: function getOrderedMarksAtRange(range) {\n range = this.resolveRange(range);\n var _range7 = range,\n start = _range7.start,\n end = _range7.end;\n\n\n if (range.isUnset) {\n return OrderedSet();\n }\n\n if (range.isCollapsed) {\n // PERF: range is not cachable, use key and offset as proxies for cache\n return this.getMarksAtPosition(start.key, start.offset);\n }\n\n var marks = this.getOrderedMarksBetweenPositions(start.key, start.offset, end.key, end.offset);\n\n return marks;\n }\n\n /**\n * Get a set of the marks in a `range`.\n * PERF: arguments use key and offset for utilizing cache\n *\n * @param {string} startKey\n * @param {number} startOffset\n * @param {string} endKey\n * @param {number} endOffset\n * @returns {OrderedSet}\n */\n\n }, {\n key: 'getOrderedMarksBetweenPositions',\n value: function getOrderedMarksBetweenPositions(startKey, startOffset, endKey, endOffset) {\n if (startKey === endKey) {\n var startText = this.getDescendant(startKey);\n return startText.getMarksBetweenOffsets(startOffset, endOffset);\n }\n\n var texts = this.getTextsBetweenPositionsAsArray(startKey, endKey);\n\n return OrderedSet().withMutations(function (result) {\n texts.forEach(function (text) {\n if (text.key === startKey) {\n result.union(text.getMarksBetweenOffsets(startOffset, text.text.length));\n } else if (text.key === endKey) {\n result.union(text.getMarksBetweenOffsets(0, endOffset));\n } else {\n result.union(text.getMarks());\n }\n });\n });\n }\n\n /**\n * Get all of the marks that match a `type`.\n *\n * @param {String} type\n * @return {OrderedSet}\n */\n\n }, {\n key: 'getOrderedMarksByType',\n value: function getOrderedMarksByType(type) {\n var array = this.getMarksByTypeAsArray(type);\n return OrderedSet(array);\n }\n\n /**\n * Get the parent of a descendant node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getParent',\n value: function getParent(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (!path.size) return null;\n var parentPath = PathUtils.lift(path);\n var parent = this.getNode(parentPath);\n return parent;\n }\n\n /**\n * Get the block node before a descendant text node by `key`.\n *\n * @param {String} key\n * @return {Node|Null}\n */\n\n }, {\n key: 'getPreviousBlock',\n value: function getPreviousBlock(key) {\n var child = this.assertDescendant(key);\n var first = void 0;\n\n if (child.object == 'block') {\n first = child.getFirstText();\n } else {\n var block = this.getClosestBlock(key);\n first = block.getFirstText();\n }\n\n var previous = this.getPreviousText(first.key);\n if (!previous) return null;\n\n var closest = this.getClosestBlock(previous.key);\n return closest;\n }\n\n /**\n * Get the previous node from a node in the tree.\n *\n * This will not only check for siblings but instead move up the tree\n * returning the previous ancestor if no sibling is found.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getPreviousNode',\n value: function getPreviousNode(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (!path.size) return null;\n\n for (var i = path.size; i > 0; i--) {\n var p = path.slice(0, i);\n if (p.last() === 0) continue;\n\n var target = PathUtils.decrement(p);\n var node = this.getNode(target);\n if (node) return node;\n }\n\n return null;\n }\n\n /**\n * Get the previous sibling of a node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getPreviousSibling',\n value: function getPreviousSibling(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (!path.size) return null;\n if (path.last() === 0) return null;\n var p = PathUtils.decrement(path);\n var sibling = this.getNode(p);\n return sibling;\n }\n\n /**\n * Get the text node after a descendant text node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getPreviousText',\n value: function getPreviousText(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (!path.size) return null;\n var previous = this.getPreviousNode(path);\n if (!previous) return null;\n var text = previous.getLastText();\n return text;\n }\n\n /**\n * Get the indexes of the selection for a `range`, given an extra flag for\n * whether the node `isSelected`, to determine whether not finding matches\n * means everything is selected or nothing is.\n *\n * @param {Range} range\n * @param {Boolean} isSelected\n * @return {Object|Null}\n */\n\n }, {\n key: 'getSelectionIndexes',\n value: function getSelectionIndexes(range) {\n var isSelected = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var start = range.start,\n end = range.end;\n\n // PERF: if we're not selected, we can exit early.\n\n if (!isSelected) {\n return null;\n }\n\n // if we've been given an invalid selection we can exit early.\n if (range.isUnset) {\n return null;\n }\n\n // PERF: if the start and end keys are the same, just check for the child\n // that contains that single key.\n if (start.key == end.key) {\n var child = this.getFurthestAncestor(start.key);\n var index = child ? this.nodes.indexOf(child) : null;\n return { start: index, end: index + 1 };\n }\n\n // Otherwise, check all of the children...\n var startIndex = null;\n var endIndex = null;\n\n this.nodes.forEach(function (child, i) {\n if (child.object == 'text') {\n if (startIndex == null && child.key == start.key) startIndex = i;\n if (endIndex == null && child.key == end.key) endIndex = i + 1;\n } else {\n if (startIndex == null && child.hasDescendant(start.key)) startIndex = i;\n if (endIndex == null && child.hasDescendant(end.key)) endIndex = i + 1;\n }\n\n // PERF: exit early if both start and end have been found.\n return startIndex == null || endIndex == null;\n });\n\n if (isSelected && startIndex == null) startIndex = 0;\n if (isSelected && endIndex == null) endIndex = this.nodes.size;\n return startIndex == null ? null : { start: startIndex, end: endIndex };\n }\n\n /**\n * Get the descendent text node at an `offset`.\n *\n * @param {String} offset\n * @return {Node|Null}\n */\n\n }, {\n key: 'getTextAtOffset',\n value: function getTextAtOffset(offset) {\n // PERF: Add a few shortcuts for the obvious cases.\n if (offset === 0) return this.getFirstText();\n if (offset === this.text.length) return this.getLastText();\n if (offset < 0 || offset > this.text.length) return null;\n\n var length = 0;\n var text = this.getTexts().find(function (node, i, nodes) {\n length += node.text.length;\n return length > offset;\n });\n\n return text;\n }\n\n /**\n * Get the direction of the node's text.\n *\n * @return {String}\n */\n\n }, {\n key: 'getTextDirection',\n value: function getTextDirection() {\n var dir = direction(this.text);\n return dir === 'neutral' ? null : dir;\n }\n\n /**\n * Recursively get all of the child text nodes in order of appearance.\n *\n * @return {List}\n */\n\n }, {\n key: 'getTexts',\n value: function getTexts() {\n var array = this.getTextsAsArray();\n return List(array);\n }\n\n /**\n * Recursively get all the leaf text nodes in order of appearance, as array.\n *\n * @return {List}\n */\n\n }, {\n key: 'getTextsAsArray',\n value: function getTextsAsArray() {\n var array = [];\n\n this.nodes.forEach(function (node) {\n if (node.object == 'text') {\n array.push(node);\n } else {\n array = array.concat(node.getTextsAsArray());\n }\n });\n\n return array;\n }\n\n /**\n * Get all of the text nodes in a `range`.\n *\n * @param {Range} range\n * @return {List}\n */\n\n }, {\n key: 'getTextsAtRange',\n value: function getTextsAtRange(range) {\n range = this.resolveRange(range);\n if (range.isUnset) return List();\n var _range8 = range,\n start = _range8.start,\n end = _range8.end;\n\n var list = List(this.getTextsBetweenPositionsAsArray(start.key, end.key));\n\n return list;\n }\n\n /**\n * Get all of the text nodes in a `range` as an array.\n *\n * @param {Range} range\n * @return {Array}\n */\n\n }, {\n key: 'getTextsAtRangeAsArray',\n value: function getTextsAtRangeAsArray(range) {\n range = this.resolveRange(range);\n if (range.isUnset) return [];\n var _range9 = range,\n start = _range9.start,\n end = _range9.end;\n\n var texts = this.getTextsBetweenPositionsAsArray(start.key, end.key);\n return texts;\n }\n\n /**\n * Get all of the text nodes in a `range` as an array.\n * PERF: use key in arguments for cache\n *\n * @param {string} startKey\n * @param {string} endKey\n * @returns {Array}\n */\n\n }, {\n key: 'getTextsBetweenPositionsAsArray',\n value: function getTextsBetweenPositionsAsArray(startKey, endKey) {\n var startText = this.getDescendant(startKey);\n\n // PERF: the most common case is when the range is in a single text node,\n // where we can avoid a lot of iterating of the tree.\n if (startKey == endKey) return [startText];\n\n var endText = this.getDescendant(endKey);\n var texts = this.getTextsAsArray();\n var start = texts.indexOf(startText);\n var end = texts.indexOf(endText, start);\n var ret = texts.slice(start, end + 1);\n return ret;\n }\n\n /**\n * Check if the node has block children.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'hasBlockChildren',\n value: function hasBlockChildren() {\n return !!(this.nodes && this.nodes.find(function (n) {\n return n.object === 'block';\n }));\n }\n\n /**\n * Check if a child node exists.\n *\n * @param {List|String} path\n * @return {Boolean}\n */\n\n }, {\n key: 'hasChild',\n value: function hasChild(path) {\n var child = this.getChild(path);\n return !!child;\n }\n\n /**\n * Check if a node has inline children.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'hasInlineChildren',\n value: function hasInlineChildren() {\n return !!(this.nodes && this.nodes.find(function (n) {\n return n.object === 'inline' || n.object === 'text';\n }));\n }\n\n /**\n * Recursively check if a child node exists.\n *\n * @param {List|String} path\n * @return {Boolean}\n */\n\n }, {\n key: 'hasDescendant',\n value: function hasDescendant(path) {\n var descendant = this.getDescendant(path);\n return !!descendant;\n }\n\n /**\n * Check if a node has a void parent.\n *\n * @param {List|String} path\n * @param {Schema} schema\n * @return {Boolean}\n */\n\n }, {\n key: 'hasVoidParent',\n value: function hasVoidParent(path, schema) {\n var closest = this.getClosestVoid(path, schema);\n return !!closest;\n }\n\n /**\n * Insert a `node`.\n *\n * @param {List|String} path\n * @param {Node} node\n * @return {Node}\n */\n\n }, {\n key: 'insertNode',\n value: function insertNode(path, node) {\n path = this.resolvePath(path);\n var index = path.last();\n var parentPath = PathUtils.lift(path);\n var parent = this.assertNode(parentPath);\n var nodes = parent.nodes.splice(index, 0, node);\n parent = parent.set('nodes', nodes);\n var ret = this.replaceNode(parentPath, parent);\n return ret;\n }\n\n /**\n * Insert `text` at `offset` in node by `path`.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @param {String} text\n * @param {Set} marks\n * @return {Node}\n */\n\n }, {\n key: 'insertText',\n value: function insertText(path, offset, text, marks) {\n var node = this.assertDescendant(path);\n path = this.resolvePath(path);\n node = node.insertText(offset, text, marks);\n var ret = this.replaceNode(path, node);\n return ret;\n }\n\n /**\n * Check whether the node is a leaf block.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isLeafBlock',\n value: function isLeafBlock() {\n var object = this.object,\n nodes = this.nodes;\n\n var first = nodes.first();\n return object === 'block' && first.object !== 'block';\n }\n\n /**\n * Check whether the node is a leaf inline.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isLeafInline',\n value: function isLeafInline() {\n var object = this.object,\n nodes = this.nodes;\n\n var first = nodes.first();\n return object === 'inline' && first.object !== 'inline';\n }\n\n /**\n * Map all child nodes, updating them in their parents. This method is\n * optimized to not return a new node if no changes are made.\n *\n * @param {Function} iterator\n * @return {Node}\n */\n\n }, {\n key: 'mapChildren',\n value: function mapChildren(iterator) {\n var _this5 = this;\n\n var nodes = this.nodes;\n\n\n nodes.forEach(function (node, i) {\n var ret = iterator(node, i, _this5.nodes);\n if (ret !== node) nodes = nodes.set(ret.key, ret);\n });\n\n var ret = this.set('nodes', nodes);\n return ret;\n }\n\n /**\n * Map all descendant nodes, updating them in their parents. This method is\n * optimized to not return a new node if no changes are made.\n *\n * @param {Function} iterator\n * @return {Node}\n */\n\n }, {\n key: 'mapDescendants',\n value: function mapDescendants(iterator) {\n var _this6 = this;\n\n var nodes = this.nodes;\n\n\n nodes.forEach(function (node, index) {\n var ret = node;\n if (ret.object !== 'text') ret = ret.mapDescendants(iterator);\n ret = iterator(ret, index, _this6.nodes);\n if (ret === node) return;\n\n nodes = nodes.set(index, ret);\n });\n\n var ret = this.set('nodes', nodes);\n return ret;\n }\n\n /**\n * Merge a node backwards its previous sibling.\n *\n * @param {List|Key} path\n * @return {Node}\n */\n\n }, {\n key: 'mergeNode',\n value: function mergeNode(path) {\n var b = this.assertNode(path);\n path = this.resolvePath(path);\n\n if (path.last() === 0) {\n throw new Error('Unable to merge node because it has no previous sibling: ' + b);\n }\n\n var withPath = PathUtils.decrement(path);\n var a = this.assertNode(withPath);\n\n if (a.object !== b.object) {\n throw new Error('Unable to merge two different kinds of nodes: ' + a + ' and ' + b);\n }\n\n var newNode = a.object === 'text' ? a.mergeText(b) : a.set('nodes', a.nodes.concat(b.nodes));\n\n var ret = this;\n ret = ret.removeNode(path);\n ret = ret.removeNode(withPath);\n ret = ret.insertNode(withPath, newNode);\n return ret;\n }\n\n /**\n * Move a node by `path` to `newPath`.\n *\n * A `newIndex` can be provided when move nodes by `key`, to account for not\n * being able to have a key for a location in the tree that doesn't exist yet.\n *\n * @param {List|Key} path\n * @param {List|Key} newPath\n * @param {Number} newIndex\n * @return {Node}\n */\n\n }, {\n key: 'moveNode',\n value: function moveNode(path, newPath) {\n var newIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n var node = this.assertNode(path);\n path = this.resolvePath(path);\n newPath = this.resolvePath(newPath, newIndex);\n\n var newParentPath = PathUtils.lift(newPath);\n this.assertNode(newParentPath);\n\n var _PathUtils$crop = PathUtils.crop(path, newPath),\n _PathUtils$crop2 = slicedToArray(_PathUtils$crop, 2),\n p = _PathUtils$crop2[0],\n np = _PathUtils$crop2[1];\n\n var position = PathUtils.compare(p, np);\n\n // If the old path ends above and before a node in the new path, then\n // removing it will alter the target, so we need to adjust the new path.\n if (path.size < newPath.size && position === -1) {\n newPath = PathUtils.decrement(newPath, 1, p.size - 1);\n }\n\n var ret = this;\n ret = ret.removeNode(path);\n ret = ret.insertNode(newPath, node);\n return ret;\n }\n\n /**\n * Remove mark from text at `offset` and `length` in node.\n *\n * @param {List} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n * @return {Node}\n */\n\n }, {\n key: 'removeMark',\n value: function removeMark(path, offset, length, mark) {\n var node = this.assertDescendant(path);\n path = this.resolvePath(path);\n node = node.removeMark(offset, length, mark);\n var ret = this.replaceNode(path, node);\n return ret;\n }\n\n /**\n * Remove a node.\n *\n * @param {List|String} path\n * @return {Node}\n */\n\n }, {\n key: 'removeNode',\n value: function removeNode(path) {\n this.assertDescendant(path);\n path = this.resolvePath(path);\n var deep = path.flatMap(function (x) {\n return ['nodes', x];\n });\n var ret = this.deleteIn(deep);\n return ret;\n }\n\n /**\n * Remove `text` at `offset` in node.\n *\n * @param {List|Key} path\n * @param {Number} offset\n * @param {String} text\n * @return {Node}\n */\n\n }, {\n key: 'removeText',\n value: function removeText(path, offset, text) {\n var node = this.assertDescendant(path);\n node = node.removeText(offset, text.length);\n var ret = this.replaceNode(path, node);\n return ret;\n }\n\n /**\n * Replace a `node` in the tree.\n *\n * @param {List|Key} path\n * @param {Node} node\n * @return {Node}\n */\n\n }, {\n key: 'replaceNode',\n value: function replaceNode(path, node) {\n path = this.resolvePath(path);\n\n if (!path) {\n throw new Error('Unable to replace a node because it could not be found in the first place: ' + path);\n }\n\n if (!path.size) return node;\n this.assertNode(path);\n var deep = path.flatMap(function (x) {\n return ['nodes', x];\n });\n var ret = this.setIn(deep, node);\n return ret;\n }\n\n /**\n * Resolve a `decoration`, relative to the node, ensuring that the keys and\n * offsets in the decoration exist and that they are synced with the paths.\n *\n * @param {Decoration|Object} decoration\n * @return {Decoration}\n */\n\n }, {\n key: 'resolveDecoration',\n value: function resolveDecoration(decoration) {\n decoration = Decoration.create(decoration);\n decoration = decoration.normalize(this);\n return decoration;\n }\n\n /**\n * Resolve a `point`, relative to the node, ensuring that the keys and\n * offsets in the point exist and that they are synced with the paths.\n *\n * @param {Point|Object} point\n * @return {Point}\n */\n\n }, {\n key: 'resolvePoint',\n value: function resolvePoint(point) {\n point = Point.create(point);\n point = point.normalize(this);\n return point;\n }\n\n /**\n * Resolve a `range`, relative to the node, ensuring that the keys and\n * offsets in the range exist and that they are synced with the paths.\n *\n * @param {Range|Object} range\n * @return {Range}\n */\n\n }, {\n key: 'resolveRange',\n value: function resolveRange(range) {\n range = Range.create(range);\n range = range.normalize(this);\n return range;\n }\n\n /**\n * Resolve a `selection`, relative to the node, ensuring that the keys and\n * offsets in the selection exist and that they are synced with the paths.\n *\n * @param {Selection|Object} selection\n * @return {Selection}\n */\n\n }, {\n key: 'resolveSelection',\n value: function resolveSelection(selection) {\n selection = Selection.create(selection);\n selection = selection.normalize(this);\n return selection;\n }\n\n /**\n * Set `properties` on a node.\n *\n * @param {List|String} path\n * @param {Object} properties\n * @return {Node}\n */\n\n }, {\n key: 'setNode',\n value: function setNode(path, properties) {\n var node = this.assertNode(path);\n node = node.merge(properties);\n var ret = this.replaceNode(path, node);\n return ret;\n }\n\n /**\n * Set `properties` on `mark` on text at `offset` and `length` in node.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n * @param {Object} properties\n * @return {Node}\n */\n\n }, {\n key: 'setMark',\n value: function setMark(path, offset, length, mark, properties) {\n var node = this.assertNode(path);\n node = node.updateMark(offset, length, mark, properties);\n var ret = this.replaceNode(path, node);\n return ret;\n }\n\n /**\n * Split a node by `path` at `position` with optional `properties` to apply\n * to the newly split node.\n *\n * @param {List|String} path\n * @param {Number} position\n * @param {Object} properties\n * @return {Node}\n */\n\n }, {\n key: 'splitNode',\n value: function splitNode(path, position, properties) {\n var child = this.assertNode(path);\n path = this.resolvePath(path);\n var a = void 0;\n var b = void 0;\n\n if (child.object === 'text') {\n \n var _child$splitText = child.splitText(position);\n\n var _child$splitText2 = slicedToArray(_child$splitText, 2);\n\n a = _child$splitText2[0];\n b = _child$splitText2[1];\n } else {\n var befores = child.nodes.take(position);\n var afters = child.nodes.skip(position);\n a = child.set('nodes', befores);\n b = child.set('nodes', afters).regenerateKey();\n }\n\n if (properties && child.object !== 'text') {\n b = b.merge(properties);\n }\n\n var ret = this;\n ret = ret.removeNode(path);\n ret = ret.insertNode(path, b);\n ret = ret.insertNode(path, a);\n return ret;\n }\n }]);\n return ElementInterface;\n}();\n\n/**\n * Mix in assertion variants.\n */\n\nvar ASSERTS = ['Child', 'Depth', 'Descendant', 'Node', 'Parent', 'Path'];\n\nvar _loop$1 = function _loop(method) {\n ElementInterface.prototype['assert' + method] = function (path) {\n for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n var ret = this['get' + method].apply(this, [path].concat(args));\n\n if (ret == null) {\n throw new Error('`Node.assert' + method + '` could not find node with path or key: ' + path);\n }\n\n return ret;\n };\n};\n\nvar _iteratorNormalCompletion$1 = true;\nvar _didIteratorError$1 = false;\nvar _iteratorError$1 = undefined;\n\ntry {\n for (var _iterator$1 = ASSERTS[Symbol.iterator](), _step$1; !(_iteratorNormalCompletion$1 = (_step$1 = _iterator$1.next()).done); _iteratorNormalCompletion$1 = true) {\n var method$1 = _step$1.value;\n\n _loop$1(method$1);\n }\n\n /**\n * Memoize read methods.\n */\n} catch (err) {\n _didIteratorError$1 = true;\n _iteratorError$1 = err;\n} finally {\n try {\n if (!_iteratorNormalCompletion$1 && _iterator$1.return) {\n _iterator$1.return();\n }\n } finally {\n if (_didIteratorError$1) {\n throw _iteratorError$1;\n }\n }\n}\n\nmemoize(ElementInterface.prototype, ['getBlocksAsArray', 'getBlocksAtRangeAsArray', 'getBlocksByTypeAsArray', 'getDecorations', 'getFragmentAtRange', 'getInlinesAsArray', 'getInlinesAtRangeAsArray', 'getInlinesByTypeAsArray', 'getMarksAsArray', 'getMarksAtPosition', 'getOrderedMarksBetweenPositions', 'getInsertMarksAtRange', 'getMarksByTypeAsArray', 'getNextBlock', 'getOffset', 'getOffsetAtRange', 'getPreviousBlock', 'getTextAtOffset', 'getTextDirection', 'getTextsAsArray', 'getTextsBetweenPositionsAsArray']);\n\n/**\n * Mix in the element interface.\n */\n\nmixin(ElementInterface, [Block, Document, Inline]);\n\n/**\n * The interface that `Decoration`, `Range` and `Selection` all implement, to make\n * working anchor and focus points easier.\n *\n * @type {Class}\n */\n\nvar RangeInterface = function () {\n function RangeInterface() {\n classCallCheck(this, RangeInterface);\n }\n\n createClass(RangeInterface, [{\n key: 'flip',\n\n\n /**\n * Flip the range.\n *\n * @return {Range}\n */\n\n value: function flip() {\n var range = this.setPoints([this.focus, this.anchor]);\n return range;\n }\n\n /**\n * Move the anchor and focus offsets forward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveForward',\n value: function moveForward(n) {\n return this.updatePoints(function (point) {\n return point.moveForward(n);\n });\n }\n\n /**\n * Move the anchor and focus offsets backward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveBackward',\n value: function moveBackward(n) {\n return this.updatePoints(function (point) {\n return point.moveBackward(n);\n });\n }\n\n /**\n * Move the anchor offset backward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveAnchorBackward',\n value: function moveAnchorBackward(n) {\n var range = this.setAnchor(this.anchor.moveBackward(n));\n return range;\n }\n\n /**\n * Move the anchor offset forward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveAnchorForward',\n value: function moveAnchorForward(n) {\n var range = this.setAnchor(this.anchor.moveForward(n));\n return range;\n }\n\n /**\n * Move the range's anchor point to a new `path` and `offset`.\n *\n * Optionally, the `path` can be a key string, or omitted entirely in which\n * case it would be the offset number.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @return {Range}\n */\n\n }, {\n key: 'moveAnchorTo',\n value: function moveAnchorTo(path, offset) {\n var range = this.setAnchor(this.anchor.moveTo(path, offset));\n return range;\n }\n\n /**\n * Move the range's anchor point to the start of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveAnchorToStartOfNode',\n value: function moveAnchorToStartOfNode(node) {\n var range = this.setAnchor(this.anchor.moveToStartOfNode(node));\n return range;\n }\n\n /**\n * Move the range's anchor point to the end of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveAnchorToEndOfNode',\n value: function moveAnchorToEndOfNode(node) {\n var range = this.setAnchor(this.anchor.moveToEndOfNode(node));\n return range;\n }\n\n /**\n * Move the end offset backward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveEndBackward',\n value: function moveEndBackward(n) {\n var range = this.setEnd(this.end.moveBackward(n));\n return range;\n }\n\n /**\n * Move the end offset forward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveEndForward',\n value: function moveEndForward(n) {\n var range = this.setEnd(this.end.moveForward(n));\n return range;\n }\n\n /**\n * Move the range's end point to a new `path` and `offset`.\n *\n * Optionally, the `path` can be a key string, or omitted entirely in which\n * case it would be the offset number.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @return {Range}\n */\n\n }, {\n key: 'moveEndTo',\n value: function moveEndTo(path, offset) {\n var range = this.setEnd(this.end.moveTo(path, offset));\n return range;\n }\n\n /**\n * Move the range's end point to the start of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveEndToStartOfNode',\n value: function moveEndToStartOfNode(node) {\n var range = this.setEnd(this.end.moveToStartOfNode(node));\n return range;\n }\n\n /**\n * Move the range's end point to the end of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveEndToEndOfNode',\n value: function moveEndToEndOfNode(node) {\n var range = this.setEnd(this.end.moveToEndOfNode(node));\n return range;\n }\n\n /**\n * Move the focus offset backward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveFocusBackward',\n value: function moveFocusBackward(n) {\n var range = this.setFocus(this.focus.moveBackward(n));\n return range;\n }\n\n /**\n * Move the focus offset forward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveFocusForward',\n value: function moveFocusForward(n) {\n var range = this.setFocus(this.focus.moveForward(n));\n return range;\n }\n\n /**\n * Move the range's focus point to a new `path` and `offset`.\n *\n * Optionally, the `path` can be a key string, or omitted entirely in which\n * case it would be the offset number.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @return {Range}\n */\n\n }, {\n key: 'moveFocusTo',\n value: function moveFocusTo(path, offset) {\n var range = this.setFocus(this.focus.moveTo(path, offset));\n return range;\n }\n\n /**\n * Move the range's focus point to the start of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveFocusToStartOfNode',\n value: function moveFocusToStartOfNode(node) {\n var range = this.setFocus(this.focus.moveToStartOfNode(node));\n return range;\n }\n\n /**\n * Move the range's focus point to the end of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveFocusToEndOfNode',\n value: function moveFocusToEndOfNode(node) {\n var range = this.setFocus(this.focus.moveToEndOfNode(node));\n return range;\n }\n\n /**\n * Move the start offset backward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveStartBackward',\n value: function moveStartBackward(n) {\n var range = this.setStart(this.start.moveBackward(n));\n return range;\n }\n\n /**\n * Move the start offset forward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveStartForward',\n value: function moveStartForward(n) {\n var range = this.setStart(this.start.moveForward(n));\n return range;\n }\n\n /**\n * Move the range's start point to a new `path` and `offset`.\n *\n * Optionally, the `path` can be a key string, or omitted entirely in which\n * case it would be the offset number.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @return {Range}\n */\n\n }, {\n key: 'moveStartTo',\n value: function moveStartTo(path, offset) {\n var range = this.setStart(this.start.moveTo(path, offset));\n return range;\n }\n\n /**\n * Move the range's start point to the start of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveStartToStartOfNode',\n value: function moveStartToStartOfNode(node) {\n var range = this.setStart(this.start.moveToStartOfNode(node));\n return range;\n }\n\n /**\n * Move the range's start point to the end of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveStartToEndOfNode',\n value: function moveStartToEndOfNode(node) {\n var range = this.setStart(this.start.moveToEndOfNode(node));\n return range;\n }\n\n /**\n * Move range's points to a new `path` and `offset`.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveTo',\n value: function moveTo(path, offset) {\n return this.updatePoints(function (point) {\n return point.moveTo(path, offset);\n });\n }\n\n /**\n * Move the focus point to the anchor point.\n *\n * @return {Range}\n */\n\n }, {\n key: 'moveToAnchor',\n value: function moveToAnchor() {\n var range = this.setFocus(this.anchor);\n return range;\n }\n\n /**\n * Move the start point to the end point.\n *\n * @return {Range}\n */\n\n }, {\n key: 'moveToEnd',\n value: function moveToEnd() {\n var range = this.setStart(this.end);\n return range;\n }\n\n /**\n * Move the range's points to the end of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveToEndOfNode',\n value: function moveToEndOfNode(node) {\n return this.updatePoints(function (point) {\n return point.moveToEndOfNode(node);\n });\n }\n\n /**\n * Move the anchor point to the focus point.\n *\n * @return {Range}\n */\n\n }, {\n key: 'moveToFocus',\n value: function moveToFocus() {\n var range = this.setAnchor(this.focus);\n return range;\n }\n\n /**\n * Move to the entire range of `start` and `end` nodes.\n *\n * @param {Node} start\n * @param {Node} end (optional)\n * @return {Range}\n */\n\n }, {\n key: 'moveToRangeOfNode',\n value: function moveToRangeOfNode(start) {\n var end = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : start;\n\n var range = this.setPoints([this.anchor.moveToStartOfNode(start), this.focus.moveToEndOfNode(end)]);\n\n return range;\n }\n\n /**\n * Move the end point to the start point.\n *\n * @return {Range}\n */\n\n }, {\n key: 'moveToStart',\n value: function moveToStart() {\n var range = this.setEnd(this.start);\n return range;\n }\n\n /**\n * Move the range's points to the start of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveToStartOfNode',\n value: function moveToStartOfNode(node) {\n return this.updatePoints(function (point) {\n return point.moveToStartOfNode(node);\n });\n }\n\n /**\n * Normalize the range, relative to a `node`, ensuring that the anchor\n * and focus nodes of the range always refer to leaf text nodes.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'normalize',\n value: function normalize(node) {\n return this.updatePoints(function (point) {\n return point.normalize(node);\n });\n }\n\n /**\n * Set the anchor point to a new `anchor`.\n *\n * @param {Point} anchor\n * @return {Range}\n */\n\n }, {\n key: 'setAnchor',\n value: function setAnchor(anchor) {\n var range = this.set('anchor', anchor);\n return range;\n }\n\n /**\n * Set the end point to a new `point`.\n *\n * @param {Point} point\n * @return {Range}\n */\n\n }, {\n key: 'setEnd',\n value: function setEnd(point) {\n var range = this.isBackward ? this.setAnchor(point) : this.setFocus(point);\n return range;\n }\n\n /**\n * Set the focus point to a new `focus`.\n *\n * @param {Point} focus\n * @return {Range}\n */\n\n }, {\n key: 'setFocus',\n value: function setFocus(focus) {\n var range = this.set('focus', focus);\n return range;\n }\n\n /**\n * Set the anchor and focus points to new `values`.\n *\n * @param {Array} values\n * @return {Range}\n */\n\n }, {\n key: 'setPoints',\n value: function setPoints(values) {\n var _values = slicedToArray(values, 2),\n anchor = _values[0],\n focus = _values[1];\n\n var range = this.set('anchor', anchor).set('focus', focus);\n return range;\n }\n\n /**\n * Set the anchor and focus points with `updater` callback\n *\n * @param {Function} updater\n * @return {Range}\n */\n\n }, {\n key: 'updatePoints',\n value: function updatePoints(updater) {\n var anchor = this.anchor,\n focus = this.focus;\n\n anchor = updater(anchor);\n focus = updater(focus);\n return this.merge({ anchor: anchor, focus: focus });\n }\n\n /**\n * Set the start point to a new `point`.\n *\n * @param {Point} point\n * @return {Range}\n */\n\n }, {\n key: 'setStart',\n value: function setStart(point) {\n var range = this.isBackward ? this.setFocus(point) : this.setAnchor(point);\n return range;\n }\n\n /**\n * Set new `properties` on the range.\n *\n * @param {Object|Range} properties\n * @return {Range}\n */\n\n }, {\n key: 'setProperties',\n value: function setProperties(properties) {\n properties = Range.createProperties(properties);\n var _properties = properties,\n anchor = _properties.anchor,\n focus = _properties.focus,\n props = objectWithoutProperties(_properties, ['anchor', 'focus']);\n\n\n if (anchor) {\n props.anchor = Point.create(anchor);\n }\n\n if (focus) {\n props.focus = Point.create(focus);\n }\n\n var range = this.merge(props);\n return range;\n }\n\n /**\n * Return a JSON representation of the range.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var object = {\n object: this.object,\n anchor: this.anchor.toJSON(options),\n focus: this.focus.toJSON(options)\n };\n\n return object;\n }\n\n /**\n * Return a `Range` instance from any range-like instance.\n *\n * @return {Range}\n */\n\n }, {\n key: 'toRange',\n value: function toRange() {\n var properties = Range.createProperties(this);\n var range = Range.create(properties);\n return range;\n }\n\n /**\n * Unset the range.\n *\n * @return {Range}\n */\n\n }, {\n key: 'unset',\n value: function unset() {\n var range = this.updatePoints(function (p) {\n return p.unset();\n });\n return range;\n }\n }, {\n key: 'isCollapsed',\n\n /**\n * Check whether the range is collapsed.\n *\n * @return {Boolean}\n */\n\n get: function get$$1() {\n return this.anchor === this.focus || this.anchor.key === this.focus.key && this.anchor.offset === this.focus.offset;\n }\n\n /**\n * Check whether the range is expanded.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isExpanded',\n get: function get$$1() {\n return !this.isCollapsed;\n }\n\n /**\n * Check whether the range is backward.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isBackward',\n get: function get$$1() {\n var isUnset = this.isUnset,\n anchor = this.anchor,\n focus = this.focus;\n\n\n if (isUnset) {\n return null;\n }\n\n if (anchor.key === focus.key) {\n return anchor.offset > focus.offset;\n }\n\n var isBackward = PathUtils.isBefore(focus.path, anchor.path);\n return isBackward;\n }\n\n /**\n * Check whether the range is forward.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isForward',\n get: function get$$1() {\n var isBackward = this.isBackward;\n\n var isForward = isBackward == null ? null : !isBackward;\n return isForward;\n }\n\n /**\n * Check whether the range isn't set.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isUnset',\n get: function get$$1() {\n var anchor = this.anchor,\n focus = this.focus;\n\n var isUnset = anchor.isUnset || focus.isUnset;\n return isUnset;\n }\n\n /**\n * Check whether the range is set.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isSet',\n get: function get$$1() {\n return !this.isUnset;\n }\n\n /**\n * Get the start point.\n *\n * @return {String}\n */\n\n }, {\n key: 'start',\n get: function get$$1() {\n return this.isBackward ? this.focus : this.anchor;\n }\n\n /**\n * Get the end point.\n *\n * @return {String}\n */\n\n }, {\n key: 'end',\n get: function get$$1() {\n return this.isBackward ? this.anchor : this.focus;\n }\n }]);\n return RangeInterface;\n}();\n\n/**\n * Mix in the range interface.\n *\n * @param {Record}\n */\n\nmixin(RangeInterface, [Decoration, Range, Selection]);\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nvar Operations = {\n apply: applyOperation,\n invert: invertOperation\n};\n\nvar index = {\n Block: Block,\n Changes: Changes$6,\n Data: Data,\n Decoration: Decoration,\n Document: Document,\n History: History,\n Inline: Inline,\n KeyUtils: KeyUtils,\n Leaf: Leaf,\n Mark: Mark,\n Node: Node,\n Operation: Operation,\n Operations: Operations,\n PathUtils: PathUtils,\n Point: Point,\n Range: Range,\n resetMemoization: resetMemoization,\n Schema: Schema,\n Selection: Selection,\n Stack: Stack$1,\n Text: Text,\n TextUtils: TextUtils,\n useMemoization: useMemoization,\n Value: Value\n};\n\nexport default index;\nexport { Block, Change, Changes$6 as Changes, Data, Decoration, Document, History, Inline, KeyUtils, Leaf, Mark, Node, Operation, Operations, PathUtils, Point, Range, resetMemoization, Schema, Selection, Stack$1 as Stack, Text, TextUtils, useMemoization, Value };\n//# sourceMappingURL=slate.es.js.map\n","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DEFAULTS = undefined;\n\nvar _assign = require(\"babel-runtime/core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar DEFAULTS = exports.DEFAULTS = {\n // URL to a page we show in an iframe to configure integrations\n integrations_ui_url: \"https://scalar.vector.im/\",\n // Base URL to the REST interface of the integrations server\n integrations_rest_url: \"https://scalar.vector.im/api\",\n // Where to send bug reports. If not specified, bugs cannot be sent.\n bug_report_endpoint_url: null\n};\n\nvar SdkConfig = function () {\n function SdkConfig() {\n (0, _classCallCheck3.default)(this, SdkConfig);\n }\n\n (0, _createClass3.default)(SdkConfig, null, [{\n key: \"get\",\n value: function get() {\n return global.mxReactSdkConfig || {};\n }\n }, {\n key: \"put\",\n value: function put(cfg) {\n var defaultKeys = (0, _keys2.default)(DEFAULTS);\n for (var i = 0; i < defaultKeys.length; ++i) {\n if (cfg[defaultKeys[i]] === undefined) {\n cfg[defaultKeys[i]] = DEFAULTS[defaultKeys[i]];\n }\n }\n global.mxReactSdkConfig = cfg;\n }\n }, {\n key: \"unset\",\n value: function unset() {\n global.mxReactSdkConfig = undefined;\n }\n }, {\n key: \"add\",\n value: function add(cfg) {\n var liveConfig = SdkConfig.get();\n var newConfig = (0, _assign2.default)({}, liveConfig, cfg);\n SdkConfig.put(newConfig);\n }\n }]);\n return SdkConfig;\n}();\n\nmodule.exports = SdkConfig;\n//# sourceMappingURL=SdkConfig.js.map","module.exports = { \"default\": require(\"core-js/library/fn/json/stringify\"), __esModule: true };","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _from = require(\"../core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * This is an internal module.\n * @module utils\n */\n\nvar _create = require(\"babel-runtime/core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"babel-runtime/helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar unhomoglyph = require('unhomoglyph');\n\n/**\n * Encode a dictionary of query parameters.\n * @param {Object} params A dict of key/values to encode e.g.\n * {\"foo\": \"bar\", \"baz\": \"taz\"}\n * @return {string} The encoded string e.g. foo=bar&baz=taz\n */\nmodule.exports.encodeParams = function (params) {\n var qs = \"\";\n for (var key in params) {\n if (!params.hasOwnProperty(key)) {\n continue;\n }\n qs += \"&\" + encodeURIComponent(key) + \"=\" + encodeURIComponent(params[key]);\n }\n return qs.substring(1);\n};\n\n/**\n * Encodes a URI according to a set of template variables. Variables will be\n * passed through encodeURIComponent.\n * @param {string} pathTemplate The path with template variables e.g. '/foo/$bar'.\n * @param {Object} variables The key/value pairs to replace the template\n * variables with. E.g. { \"$bar\": \"baz\" }.\n * @return {string} The result of replacing all template variables e.g. '/foo/baz'.\n */\nmodule.exports.encodeUri = function (pathTemplate, variables) {\n for (var key in variables) {\n if (!variables.hasOwnProperty(key)) {\n continue;\n }\n pathTemplate = pathTemplate.replace(key, encodeURIComponent(variables[key]));\n }\n return pathTemplate;\n};\n\n/**\n * Applies a map function to the given array.\n * @param {Array} array The array to apply the function to.\n * @param {Function} fn The function that will be invoked for each element in\n * the array with the signature fn(element){...}\n * @return {Array} A new array with the results of the function.\n */\nmodule.exports.map = function (array, fn) {\n var results = new Array(array.length);\n for (var i = 0; i < array.length; i++) {\n results[i] = fn(array[i]);\n }\n return results;\n};\n\n/**\n * Applies a filter function to the given array.\n * @param {Array} array The array to apply the function to.\n * @param {Function} fn The function that will be invoked for each element in\n * the array. It should return true to keep the element. The function signature\n * looks like fn(element, index, array){...}.\n * @return {Array} A new array with the results of the function.\n */\nmodule.exports.filter = function (array, fn) {\n var results = [];\n for (var i = 0; i < array.length; i++) {\n if (fn(array[i], i, array)) {\n results.push(array[i]);\n }\n }\n return results;\n};\n\n/**\n * Get the keys for an object. Same as Object.keys().\n * @param {Object} obj The object to get the keys for.\n * @return {string[]} The keys of the object.\n */\nmodule.exports.keys = function (obj) {\n var keys = [];\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n keys.push(key);\n }\n return keys;\n};\n\n/**\n * Get the values for an object.\n * @param {Object} obj The object to get the values for.\n * @return {Array<*>} The values of the object.\n */\nmodule.exports.values = function (obj) {\n var values = [];\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n values.push(obj[key]);\n }\n return values;\n};\n\n/**\n * Invoke a function for each item in the array.\n * @param {Array} array The array.\n * @param {Function} fn The function to invoke for each element. Has the\n * function signature fn(element, index).\n */\nmodule.exports.forEach = function (array, fn) {\n for (var i = 0; i < array.length; i++) {\n fn(array[i], i);\n }\n};\n\n/**\n * The findElement() method returns a value in the array, if an element in the array\n * satisfies (returns true) the provided testing function. Otherwise undefined\n * is returned.\n * @param {Array} array The array.\n * @param {Function} fn Function to execute on each value in the array, with the\n * function signature fn(element, index, array)\n * @param {boolean} reverse True to search in reverse order.\n * @return {*} The first value in the array which returns true for\n * the given function.\n */\nmodule.exports.findElement = function (array, fn, reverse) {\n var i = void 0;\n if (reverse) {\n for (i = array.length - 1; i >= 0; i--) {\n if (fn(array[i], i, array)) {\n return array[i];\n }\n }\n } else {\n for (i = 0; i < array.length; i++) {\n if (fn(array[i], i, array)) {\n return array[i];\n }\n }\n }\n};\n\n/**\n * The removeElement() method removes the first element in the array that\n * satisfies (returns true) the provided testing function.\n * @param {Array} array The array.\n * @param {Function} fn Function to execute on each value in the array, with the\n * function signature fn(element, index, array). Return true to\n * remove this element and break.\n * @param {boolean} reverse True to search in reverse order.\n * @return {boolean} True if an element was removed.\n */\nmodule.exports.removeElement = function (array, fn, reverse) {\n var i = void 0;\n var removed = void 0;\n if (reverse) {\n for (i = array.length - 1; i >= 0; i--) {\n if (fn(array[i], i, array)) {\n removed = array[i];\n array.splice(i, 1);\n return removed;\n }\n }\n } else {\n for (i = 0; i < array.length; i++) {\n if (fn(array[i], i, array)) {\n removed = array[i];\n array.splice(i, 1);\n return removed;\n }\n }\n }\n return false;\n};\n\n/**\n * Checks if the given thing is a function.\n * @param {*} value The thing to check.\n * @return {boolean} True if it is a function.\n */\nmodule.exports.isFunction = function (value) {\n return Object.prototype.toString.call(value) == \"[object Function]\";\n};\n\n/**\n * Checks if the given thing is an array.\n * @param {*} value The thing to check.\n * @return {boolean} True if it is an array.\n */\nmodule.exports.isArray = function (value) {\n return Array.isArray ? Array.isArray(value) : Boolean(value && value.constructor === Array);\n};\n\n/**\n * Checks that the given object has the specified keys.\n * @param {Object} obj The object to check.\n * @param {string[]} keys The list of keys that 'obj' must have.\n * @throws If the object is missing keys.\n */\nmodule.exports.checkObjectHasKeys = function (obj, keys) {\n for (var i = 0; i < keys.length; i++) {\n if (!obj.hasOwnProperty(keys[i])) {\n throw new Error(\"Missing required key: \" + keys[i]);\n }\n }\n};\n\n/**\n * Checks that the given object has no extra keys other than the specified ones.\n * @param {Object} obj The object to check.\n * @param {string[]} allowedKeys The list of allowed key names.\n * @throws If there are extra keys.\n */\nmodule.exports.checkObjectHasNoAdditionalKeys = function (obj, allowedKeys) {\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n if (allowedKeys.indexOf(key) === -1) {\n throw new Error(\"Unknown key: \" + key);\n }\n }\n};\n\n/**\n * Deep copy the given object. The object MUST NOT have circular references and\n * MUST NOT have functions.\n * @param {Object} obj The object to deep copy.\n * @return {Object} A copy of the object without any references to the original.\n */\nmodule.exports.deepCopy = function (obj) {\n return JSON.parse((0, _stringify2.default)(obj));\n};\n\n/**\n * Compare two objects for equality. The objects MUST NOT have circular references.\n *\n * @param {Object} x The first object to compare.\n * @param {Object} y The second object to compare.\n *\n * @return {boolean} true if the two objects are equal\n */\nvar deepCompare = module.exports.deepCompare = function (x, y) {\n // Inspired by\n // http://stackoverflow.com/questions/1068834/object-comparison-in-javascript#1144249\n\n // Compare primitives and functions.\n // Also check if both arguments link to the same object.\n if (x === y) {\n return true;\n }\n\n if ((typeof x === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(x)) !== (typeof y === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(y))) {\n return false;\n }\n\n // special-case NaN (since NaN !== NaN)\n if (typeof x === 'number' && isNaN(x) && isNaN(y)) {\n return true;\n }\n\n // special-case null (since typeof null == 'object', but null.constructor\n // throws)\n if (x === null || y === null) {\n return x === y;\n }\n\n // everything else is either an unequal primitive, or an object\n if (!(x instanceof Object)) {\n return false;\n }\n\n // check they are the same type of object\n if (x.constructor !== y.constructor || x.prototype !== y.prototype) {\n return false;\n }\n\n // special-casing for some special types of object\n if (x instanceof RegExp || x instanceof Date) {\n return x.toString() === y.toString();\n }\n\n // the object algorithm works for Array, but it's sub-optimal.\n if (x instanceof Array) {\n if (x.length !== y.length) {\n return false;\n }\n\n for (var i = 0; i < x.length; i++) {\n if (!deepCompare(x[i], y[i])) {\n return false;\n }\n }\n } else {\n // disable jshint \"The body of a for in should be wrapped in an if\n // statement\"\n /* jshint -W089 */\n\n // check that all of y's direct keys are in x\n var p = void 0;\n for (p in y) {\n if (y.hasOwnProperty(p) !== x.hasOwnProperty(p)) {\n return false;\n }\n }\n\n // finally, compare each of x's keys with y\n for (p in y) {\n // eslint-disable-line guard-for-in\n if (y.hasOwnProperty(p) !== x.hasOwnProperty(p)) {\n return false;\n }\n if (!deepCompare(x[p], y[p])) {\n return false;\n }\n }\n }\n /* jshint +W089 */\n return true;\n};\n\n/**\n * Copy properties from one object to another.\n *\n * All enumerable properties, included inherited ones, are copied.\n *\n * This is approximately equivalent to ES6's Object.assign, except\n * that the latter doesn't copy inherited properties.\n *\n * @param {Object} target The object that will receive new properties\n * @param {...Object} source Objects from which to copy properties\n *\n * @return {Object} target\n */\nmodule.exports.extend = function () {\n var target = arguments[0] || {};\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var propName in source) {\n // eslint-disable-line guard-for-in\n target[propName] = source[propName];\n }\n }\n return target;\n};\n\n/**\n * Run polyfills to add Array.map and Array.filter if they are missing.\n */\nmodule.exports.runPolyfills = function () {\n // Array.prototype.filter\n // ========================================================\n // SOURCE:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter\n if (!Array.prototype.filter) {\n Array.prototype.filter = function (fun /*, thisArg*/) {\n if (this === void 0 || this === null) {\n throw new TypeError();\n }\n\n var t = Object(this);\n var len = t.length >>> 0;\n if (typeof fun !== 'function') {\n throw new TypeError();\n }\n\n var res = [];\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n for (var i = 0; i < len; i++) {\n if (i in t) {\n var val = t[i];\n\n // NOTE: Technically this should Object.defineProperty at\n // the next index, as push can be affected by\n // properties on Object.prototype and Array.prototype.\n // But that method's new, and collisions should be\n // rare, so use the more-compatible alternative.\n if (fun.call(thisArg, val, i, t)) {\n res.push(val);\n }\n }\n }\n\n return res;\n };\n }\n\n // Array.prototype.map\n // ========================================================\n // SOURCE:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map\n // Production steps of ECMA-262, Edition 5, 15.4.4.19\n // Reference: http://es5.github.io/#x15.4.4.19\n if (!Array.prototype.map) {\n Array.prototype.map = function (callback, thisArg) {\n var T = void 0,\n k = void 0;\n\n if (this === null || this === undefined) {\n throw new TypeError(' this is null or not defined');\n }\n\n // 1. Let O be the result of calling ToObject passing the |this|\n // value as the argument.\n var O = Object(this);\n\n // 2. Let lenValue be the result of calling the Get internal\n // method of O with the argument \"length\".\n // 3. Let len be ToUint32(lenValue).\n var len = O.length >>> 0;\n\n // 4. If IsCallable(callback) is false, throw a TypeError exception.\n // See: http://es5.github.com/#x9.11\n if (typeof callback !== 'function') {\n throw new TypeError(callback + ' is not a function');\n }\n\n // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.\n if (arguments.length > 1) {\n T = thisArg;\n }\n\n // 6. Let A be a new array created as if by the expression new Array(len)\n // where Array is the standard built-in constructor with that name and\n // len is the value of len.\n var A = new Array(len);\n\n // 7. Let k be 0\n k = 0;\n\n // 8. Repeat, while k < len\n while (k < len) {\n var kValue, mappedValue;\n\n // a. Let Pk be ToString(k).\n // This is implicit for LHS operands of the in operator\n // b. Let kPresent be the result of calling the HasProperty internal\n // method of O with argument Pk.\n // This step can be combined with c\n // c. If kPresent is true, then\n if (k in O) {\n // i. Let kValue be the result of calling the Get internal\n // method of O with argument Pk.\n kValue = O[k];\n\n // ii. Let mappedValue be the result of calling the Call internal\n // method of callback with T as the this value and argument\n // list containing kValue, k, and O.\n mappedValue = callback.call(T, kValue, k, O);\n\n // iii. Call the DefineOwnProperty internal method of A with arguments\n // Pk, Property Descriptor\n // { Value: mappedValue,\n // Writable: true,\n // Enumerable: true,\n // Configurable: true },\n // and false.\n\n // In browsers that support Object.defineProperty, use the following:\n // Object.defineProperty(A, k, {\n // value: mappedValue,\n // writable: true,\n // enumerable: true,\n // configurable: true\n // });\n\n // For best browser support, use the following:\n A[k] = mappedValue;\n }\n // d. Increase k by 1.\n k++;\n }\n\n // 9. return A\n return A;\n };\n }\n\n // Array.prototype.forEach\n // ========================================================\n // SOURCE:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach\n // Production steps of ECMA-262, Edition 5, 15.4.4.18\n // Reference: http://es5.github.io/#x15.4.4.18\n if (!Array.prototype.forEach) {\n Array.prototype.forEach = function (callback, thisArg) {\n var T = void 0,\n k = void 0;\n\n if (this === null || this === undefined) {\n throw new TypeError(' this is null or not defined');\n }\n\n // 1. Let O be the result of calling ToObject passing the |this| value as the\n // argument.\n var O = Object(this);\n\n // 2. Let lenValue be the result of calling the Get internal method of O with the\n // argument \"length\".\n // 3. Let len be ToUint32(lenValue).\n var len = O.length >>> 0;\n\n // 4. If IsCallable(callback) is false, throw a TypeError exception.\n // See: http://es5.github.com/#x9.11\n if (typeof callback !== \"function\") {\n throw new TypeError(callback + ' is not a function');\n }\n\n // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.\n if (arguments.length > 1) {\n T = thisArg;\n }\n\n // 6. Let k be 0\n k = 0;\n\n // 7. Repeat, while k < len\n while (k < len) {\n var kValue;\n\n // a. Let Pk be ToString(k).\n // This is implicit for LHS operands of the in operator\n // b. Let kPresent be the result of calling the HasProperty internal\n // method of O with\n // argument Pk.\n // This step can be combined with c\n // c. If kPresent is true, then\n if (k in O) {\n // i. Let kValue be the result of calling the Get internal method of O with\n // argument Pk\n kValue = O[k];\n\n // ii. Call the Call internal method of callback with T as the this value and\n // argument list containing kValue, k, and O.\n callback.call(T, kValue, k, O);\n }\n // d. Increase k by 1.\n k++;\n }\n // 8. return undefined\n };\n }\n};\n\n/**\n * Inherit the prototype methods from one constructor into another. This is a\n * port of the Node.js implementation with an Object.create polyfill.\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nmodule.exports.inherits = function (ctor, superCtor) {\n // Add Object.create polyfill for IE8\n // Source:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript\n // /Reference/Global_Objects/Object/create#Polyfill\n if (typeof _create2.default != 'function') {\n // Production steps of ECMA-262, Edition 5, 15.2.3.5\n // Reference: http://es5.github.io/#x15.2.3.5\n Object.create = function () {\n // To save on memory, use a shared constructor\n function Temp() {}\n\n // make a safe reference to Object.prototype.hasOwnProperty\n var hasOwn = Object.prototype.hasOwnProperty;\n\n return function (O) {\n // 1. If Type(O) is not Object or Null throw a TypeError exception.\n if ((typeof O === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(O)) != 'object') {\n throw new TypeError('Object prototype may only be an Object or null');\n }\n\n // 2. Let obj be the result of creating a new object as if by the\n // expression new Object() where Object is the standard built-in\n // constructor with that name\n // 3. Set the [[Prototype]] internal property of obj to O.\n Temp.prototype = O;\n var obj = new Temp();\n Temp.prototype = null; // Let's not keep a stray reference to O...\n\n // 4. If the argument Properties is present and not undefined, add\n // own properties to obj as if by calling the standard built-in\n // function Object.defineProperties with arguments obj and\n // Properties.\n if (arguments.length > 1) {\n // Object.defineProperties does ToObject on its first argument.\n var Properties = Object(arguments[1]);\n for (var prop in Properties) {\n if (hasOwn.call(Properties, prop)) {\n obj[prop] = Properties[prop];\n }\n }\n }\n\n // 5. Return obj\n return obj;\n };\n }();\n }\n // END polyfill\n\n // Add util.inherits from Node.js\n // Source:\n // https://github.com/joyent/node/blob/master/lib/util.js\n // Copyright Joyent, Inc. and other Node contributors.\n //\n // Permission is hereby granted, free of charge, to any person obtaining a\n // copy of this software and associated documentation files (the\n // \"Software\"), to deal in the Software without restriction, including\n // without limitation the rights to use, copy, modify, merge, publish,\n // distribute, sublicense, and/or sell copies of the Software, and to permit\n // persons to whom the Software is furnished to do so, subject to the\n // following conditions:\n //\n // The above copyright notice and this permission notice shall be included\n // in all copies or substantial portions of the Software.\n //\n // THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n // USE OR OTHER DEALINGS IN THE SOFTWARE.\n ctor.super_ = superCtor;\n ctor.prototype = (0, _create2.default)(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n};\n\n/**\n * Returns whether the given value is a finite number without type-coercion\n *\n * @param {*} value the value to test\n * @return {boolean} whether or not value is a finite number without type-coercion\n */\nmodule.exports.isNumber = function (value) {\n return typeof value === 'number' && isFinite(value);\n};\n\n/**\n * Removes zero width chars, diacritics and whitespace from the string\n * Also applies an unhomoglyph on the string, to prevent similar looking chars\n * @param {string} str the string to remove hidden characters from\n * @return {string} a string with the hidden characters removed\n */\nmodule.exports.removeHiddenChars = function (str) {\n return unhomoglyph(str.normalize('NFD').replace(removeHiddenCharsRegex, ''));\n};\nvar removeHiddenCharsRegex = /[\\u200B-\\u200D\\u0300-\\u036f\\uFEFF\\s]/g;\n\nfunction escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\nmodule.exports.escapeRegExp = escapeRegExp;\n\nmodule.exports.globToRegexp = function (glob, extended) {\n extended = typeof extended === 'boolean' ? extended : true;\n // From\n // https://github.com/matrix-org/synapse/blob/abbee6b29be80a77e05730707602f3bbfc3f38cb/synapse/push/__init__.py#L132\n // Because micromatch is about 130KB with dependencies,\n // and minimatch is not much better.\n var pat = escapeRegExp(glob);\n pat = pat.replace(/\\\\\\*/g, '.*');\n pat = pat.replace(/\\?/g, '.');\n if (extended) {\n pat = pat.replace(/\\\\\\[(!|)(.*)\\\\]/g, function (match, p1, p2, offset, string) {\n var first = p1 && '^' || '';\n var second = p2.replace(/\\\\-/, '-');\n return '[' + first + second + ']';\n });\n }\n return pat;\n};\n\nmodule.exports.ensureNoTrailingSlash = function (url) {\n if (url && url.endsWith(\"/\")) {\n return url.substr(0, url.length - 1);\n } else {\n return url;\n }\n};\n//# sourceMappingURL=utils.js.map","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _isIterable2 = require(\"../core-js/is-iterable\");\n\nvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\nvar _getIterator2 = require(\"../core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if ((0, _isIterable3.default)(Object(arr))) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();","module.exports = { \"default\": require(\"core-js/library/fn/promise\"), __esModule: true };","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (obj, key, value) {\n if (key in obj) {\n (0, _defineProperty2.default)(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};","/*!\n * is-plain-object \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isObject = require('isobject');\n\nfunction isObjectObject(o) {\n return isObject(o) === true\n && Object.prototype.toString.call(o) === '[object Object]';\n}\n\nmodule.exports = function isPlainObject(o) {\n var ctor,prot;\n\n if (isObjectObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (typeof ctor !== 'function') return false;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObjectObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction $getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return $getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = $getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) args.push(arguments[i]);\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n ReflectApply(this.listener, this.target, args);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n","/*\nCopyright 2018 André Jaenisch\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * @module logger\n */\nconst log = require(\"loglevel\");\n\n// This is to demonstrate, that you can use any namespace you want.\n// Namespaces allow you to turn on/off the logging for specific parts of the\n// application.\n// An idea would be to control this via an environment variable (on Node.js).\n// See https://www.npmjs.com/package/debug to see how this could be implemented\n// Part of #332 is introducing a logging library in the first place.\nconst DEFAULT_NAME_SPACE = \"matrix\";\nconst logger = log.getLogger(DEFAULT_NAME_SPACE);\nlogger.setLevel(log.levels.DEBUG);\n\n/**\n * Drop-in replacement for console using {@link https://www.npmjs.com/package/loglevel|loglevel}.\n * Can be tailored down to specific use cases if needed.\n*/\nmodule.exports = logger;\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.RoomPermalinkCreator = undefined;\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _slicedToArray2 = require(\"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _entries = require(\"babel-runtime/core-js/object/entries\");\n\nvar _entries2 = _interopRequireDefault(_entries);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.makeGenericPermalink = makeGenericPermalink;\nexports.makeUserPermalink = makeUserPermalink;\nexports.makeRoomPermalink = makeRoomPermalink;\nexports.makeGroupPermalink = makeGroupPermalink;\nexports.isPermalinkHost = isPermalinkHost;\nexports.tryTransformPermalinkToLocalHref = tryTransformPermalinkToLocalHref;\nexports.getPrimaryPermalinkEntity = getPrimaryPermalinkEntity;\nexports.parsePermalink = parsePermalink;\n\nvar _MatrixClientPeg = require(\"../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _isIp = require(\"is-ip\");\n\nvar _isIp2 = _interopRequireDefault(_isIp);\n\nvar _utils = require(\"matrix-js-sdk/lib/utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _SpecPermalinkConstructor = require(\"./SpecPermalinkConstructor\");\n\nvar _SpecPermalinkConstructor2 = _interopRequireDefault(_SpecPermalinkConstructor);\n\nvar _PermalinkConstructor = require(\"./PermalinkConstructor\");\n\nvar _PermalinkConstructor2 = _interopRequireDefault(_PermalinkConstructor);\n\nvar _RiotPermalinkConstructor = require(\"./RiotPermalinkConstructor\");\n\nvar _RiotPermalinkConstructor2 = _interopRequireDefault(_RiotPermalinkConstructor);\n\nvar _linkifyMatrix = require(\"../../linkify-matrix\");\n\nvar matrixLinkify = _interopRequireWildcard(_linkifyMatrix);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SdkConfig = require(\"../../SdkConfig\");\n\n// The maximum number of servers to pick when working out which servers\n// to add to permalinks. The servers are appended as ?via=example.org\n/*\nCopyright 2019 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MAX_SERVER_CANDIDATES = 3;\n\n// Permalinks can have servers appended to them so that the user\n// receiving them can have a fighting chance at joining the room.\n// These servers are called \"candidates\" at this point because\n// it is unclear whether they are going to be useful to actually\n// join in the future.\n//\n// We pick 3 servers based on the following criteria:\n//\n// Server 1: The highest power level user in the room, provided\n// they are at least PL 50. We don't calculate \"what is a moderator\"\n// here because it is less relevant for the vast majority of rooms.\n// We also want to ensure that we get an admin or high-ranking mod\n// as they are less likely to leave the room. If no user happens\n// to meet this criteria, we'll pick the most popular server in the\n// room.\n//\n// Server 2: The next most popular server in the room (in user\n// distribution). This cannot be the same as Server 1. If no other\n// servers are available then we'll only return Server 1.\n//\n// Server 3: The next most popular server by user distribution. This\n// has the same rules as Server 2, with the added exception that it\n// must be unique from Server 1 and 2.\n\n// Rationale for popular servers: It's hard to get rid of people when\n// they keep flocking in from a particular server. Sure, the server could\n// be ACL'd in the future or for some reason be evicted from the room\n// however an event like that is unlikely the larger the room gets. If\n// the server is ACL'd at the time of generating the link however, we\n// shouldn't pick them. We also don't pick IP addresses.\n\n// Note: we don't pick the server the room was created on because the\n// homeserver should already be using that server as a last ditch attempt\n// and there's less of a guarantee that the server is a resident server.\n// Instead, we actively figure out which servers are likely to be residents\n// in the future and try to use those.\n\n// Note: Users receiving permalinks that happen to have all 3 potential\n// servers fail them (in terms of joining) are somewhat expected to hunt\n// down the person who gave them the link to ask for a participating server.\n// The receiving user can then manually append the known-good server to\n// the list and magically have the link work.\n\nvar RoomPermalinkCreator = exports.RoomPermalinkCreator = function () {\n // We support being given a roomId as a fallback in the event the `room` object\n // doesn't exist or is not healthy for us to rely on. For example, loading a\n // permalink to a room which the MatrixClient doesn't know about.\n function RoomPermalinkCreator(room) {\n var roomId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n (0, _classCallCheck3.default)(this, RoomPermalinkCreator);\n\n this._room = room;\n this._roomId = room ? room.roomId : roomId;\n this._highestPlUserId = null;\n this._populationMap = null;\n this._bannedHostsRegexps = null;\n this._allowedHostsRegexps = null;\n this._serverCandidates = null;\n this._started = false;\n\n if (!this._roomId) {\n throw new Error(\"Failed to resolve a roomId for the permalink creator to use\");\n }\n\n this.onMembership = this.onMembership.bind(this);\n this.onRoomState = this.onRoomState.bind(this);\n }\n\n (0, _createClass3.default)(RoomPermalinkCreator, [{\n key: \"load\",\n value: function load() {\n if (!this._room || !this._room.currentState) {\n // Under rare and unknown circumstances it is possible to have a room with no\n // currentState, at least potentially at the early stages of joining a room.\n // To avoid breaking everything, we'll just warn rather than throw as well as\n // not bother updating the various aspects of the share link.\n console.warn(\"Tried to load a permalink creator with no room state\");\n return;\n }\n this._updateAllowedServers();\n this._updateHighestPlUser();\n this._updatePopulationMap();\n this._updateServerCandidates();\n }\n }, {\n key: \"start\",\n value: function start() {\n this.load();\n this._room.on(\"RoomMember.membership\", this.onMembership);\n this._room.on(\"RoomState.events\", this.onRoomState);\n this._started = true;\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this._room.removeListener(\"RoomMember.membership\", this.onMembership);\n this._room.removeListener(\"RoomState.events\", this.onRoomState);\n this._started = false;\n }\n }, {\n key: \"isStarted\",\n value: function isStarted() {\n return this._started;\n }\n }, {\n key: \"forEvent\",\n value: function forEvent(eventId) {\n return getPermalinkConstructor().forEvent(this._roomId, eventId, this._serverCandidates);\n }\n }, {\n key: \"forRoom\",\n value: function forRoom() {\n return getPermalinkConstructor().forRoom(this._roomId, this._serverCandidates);\n }\n }, {\n key: \"onRoomState\",\n value: function onRoomState(event) {\n switch (event.getType()) {\n case \"m.room.server_acl\":\n this._updateAllowedServers();\n this._updateHighestPlUser();\n this._updatePopulationMap();\n this._updateServerCandidates();\n return;\n case \"m.room.power_levels\":\n this._updateHighestPlUser();\n this._updateServerCandidates();\n return;\n }\n }\n }, {\n key: \"onMembership\",\n value: function onMembership(evt, member, oldMembership) {\n var userId = member.userId;\n var membership = member.membership;\n var serverName = getServerName(userId);\n var hasJoined = oldMembership !== \"join\" && membership === \"join\";\n var hasLeft = oldMembership === \"join\" && membership !== \"join\";\n\n if (hasLeft) {\n this._populationMap[serverName]--;\n } else if (hasJoined) {\n this._populationMap[serverName]++;\n }\n\n this._updateHighestPlUser();\n this._updateServerCandidates();\n }\n }, {\n key: \"_updateHighestPlUser\",\n value: function _updateHighestPlUser() {\n var _this = this;\n\n var plEvent = this._room.currentState.getStateEvents(\"m.room.power_levels\", \"\");\n if (plEvent) {\n var content = plEvent.getContent();\n if (content) {\n var users = content.users;\n if (users) {\n var entries = (0, _entries2.default)(users);\n var allowedEntries = entries.filter(function (_ref) {\n var _ref2 = (0, _slicedToArray3.default)(_ref, 1),\n userId = _ref2[0];\n\n var member = _this._room.getMember(userId);\n if (!member || member.membership !== \"join\") {\n return false;\n }\n var serverName = getServerName(userId);\n return !isHostnameIpAddress(serverName) && !isHostInRegex(serverName, _this._bannedHostsRegexps) && isHostInRegex(serverName, _this._allowedHostsRegexps);\n });\n var maxEntry = allowedEntries.reduce(function (max, entry) {\n return entry[1] > max[1] ? entry : max;\n }, [null, 0]);\n\n var _maxEntry = (0, _slicedToArray3.default)(maxEntry, 2),\n userId = _maxEntry[0],\n powerLevel = _maxEntry[1];\n // object wasn't empty, and max entry wasn't a demotion from the default\n\n\n if (userId !== null && powerLevel >= 50) {\n this._highestPlUserId = userId;\n return;\n }\n }\n }\n }\n this._highestPlUserId = null;\n }\n }, {\n key: \"_updateAllowedServers\",\n value: function _updateAllowedServers() {\n var bannedHostsRegexps = [];\n var allowedHostsRegexps = [new RegExp(\".*\")]; // default allow everyone\n if (this._room.currentState) {\n var aclEvent = this._room.currentState.getStateEvents(\"m.room.server_acl\", \"\");\n if (aclEvent && aclEvent.getContent()) {\n var getRegex = function getRegex(hostname) {\n return new RegExp(\"^\" + _utils2.default.globToRegexp(hostname, false) + \"$\");\n };\n\n var denied = aclEvent.getContent().deny || [];\n denied.forEach(function (h) {\n return bannedHostsRegexps.push(getRegex(h));\n });\n\n var allowed = aclEvent.getContent().allow || [];\n allowedHostsRegexps = []; // we don't want to use the default rule here\n allowed.forEach(function (h) {\n return allowedHostsRegexps.push(getRegex(h));\n });\n }\n }\n this._bannedHostsRegexps = bannedHostsRegexps;\n this._allowedHostsRegexps = allowedHostsRegexps;\n }\n }, {\n key: \"_updatePopulationMap\",\n value: function _updatePopulationMap() {\n var populationMap = {};\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(this._room.getJoinedMembers()), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var member = _step.value;\n\n var serverName = getServerName(member.userId);\n if (!populationMap[serverName]) {\n populationMap[serverName] = 0;\n }\n populationMap[serverName]++;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n this._populationMap = populationMap;\n }\n }, {\n key: \"_updateServerCandidates\",\n value: function _updateServerCandidates() {\n var _this2 = this;\n\n var candidates = [];\n if (this._highestPlUserId) {\n candidates.push(getServerName(this._highestPlUserId));\n }\n\n var serversByPopulation = (0, _keys2.default)(this._populationMap).sort(function (a, b) {\n return _this2._populationMap[b] - _this2._populationMap[a];\n }).filter(function (a) {\n return !candidates.includes(a) && !isHostnameIpAddress(a) && !isHostInRegex(a, _this2._bannedHostsRegexps) && isHostInRegex(a, _this2._allowedHostsRegexps);\n });\n\n var remainingServers = serversByPopulation.slice(0, MAX_SERVER_CANDIDATES - candidates.length);\n candidates = candidates.concat(remainingServers);\n\n this._serverCandidates = candidates;\n }\n }]);\n return RoomPermalinkCreator;\n}();\n\nfunction makeGenericPermalink(entityId) {\n return getPermalinkConstructor().forEntity(entityId);\n}\n\nfunction makeUserPermalink(userId) {\n return getPermalinkConstructor().forUser(userId);\n}\n\nfunction makeRoomPermalink(roomId) {\n if (!roomId) {\n throw new Error(\"can't permalink a falsey roomId\");\n }\n\n // If the roomId isn't actually a room ID, don't try to list the servers.\n // Aliases are already routable, and don't need extra information.\n if (roomId[0] !== '!') return getPermalinkConstructor().forRoom(roomId, []);\n\n var client = _MatrixClientPeg2.default.get();\n var room = client.getRoom(roomId);\n if (!room) {\n return getPermalinkConstructor().forRoom(roomId, []);\n }\n var permalinkCreator = new RoomPermalinkCreator(room);\n permalinkCreator.load();\n return permalinkCreator.forRoom();\n}\n\nfunction makeGroupPermalink(groupId) {\n return getPermalinkConstructor().forGroup(groupId);\n}\n\nfunction isPermalinkHost(host) {\n // Always check if the permalink is a spec permalink (callers are likely to call\n // parsePermalink after this function).\n if (new _SpecPermalinkConstructor2.default().isPermalinkHost(host)) return true;\n return getPermalinkConstructor().isPermalinkHost(host);\n}\n\n/**\n * Transforms a permalink (or possible permalink) into a local URL if possible. If\n * the given permalink is found to not be a permalink, it'll be returned unaltered.\n * @param {string} permalink The permalink to try and transform.\n * @returns {string} The transformed permalink or original URL if unable.\n */\nfunction tryTransformPermalinkToLocalHref(permalink) {\n if (!permalink.startsWith(\"http:\") && !permalink.startsWith(\"https:\")) {\n return permalink;\n }\n\n var m = permalink.match(matrixLinkify.VECTOR_URL_PATTERN);\n if (m) {\n return m[1];\n }\n\n // A bit of a hack to convert permalinks of unknown origin to Riot links\n try {\n var permalinkParts = parsePermalink(permalink);\n if (permalinkParts) {\n if (permalinkParts.roomIdOrAlias) {\n var eventIdPart = permalinkParts.eventId ? \"/\" + permalinkParts.eventId : '';\n permalink = \"#/room/\" + permalinkParts.roomIdOrAlias + eventIdPart;\n } else if (permalinkParts.groupId) {\n permalink = \"#/group/\" + permalinkParts.groupId;\n } else if (permalinkParts.userId) {\n permalink = \"#/user/\" + permalinkParts.userId;\n } // else not a valid permalink for our purposes - do not handle\n }\n } catch (e) {\n // Not an href we need to care about\n }\n\n return permalink;\n}\n\nfunction getPrimaryPermalinkEntity(permalink) {\n try {\n var permalinkParts = parsePermalink(permalink);\n\n // If not a permalink, try the vector patterns.\n if (!permalinkParts) {\n var m = permalink.match(matrixLinkify.VECTOR_URL_PATTERN);\n if (m) {\n // A bit of a hack, but it gets the job done\n var handler = new _RiotPermalinkConstructor2.default(\"http://localhost\");\n var entityInfo = m[1].split('#').slice(1).join('#');\n permalinkParts = handler.parsePermalink(\"http://localhost/#\" + entityInfo);\n }\n }\n\n if (!permalinkParts) return null; // not processable\n if (permalinkParts.userId) return permalinkParts.userId;\n if (permalinkParts.groupId) return permalinkParts.groupId;\n if (permalinkParts.roomIdOrAlias) return permalinkParts.roomIdOrAlias;\n } catch (e) {\n // no entity - not a permalink\n }\n\n return null;\n}\n\nfunction getPermalinkConstructor() {\n var riotPrefix = SdkConfig.get()['permalinkPrefix'];\n if (riotPrefix && riotPrefix !== _SpecPermalinkConstructor.baseUrl) {\n return new _RiotPermalinkConstructor2.default(riotPrefix);\n }\n\n return new _SpecPermalinkConstructor2.default();\n}\n\nfunction parsePermalink(fullUrl) {\n var riotPrefix = SdkConfig.get()['permalinkPrefix'];\n if (fullUrl.startsWith(_SpecPermalinkConstructor.baseUrl)) {\n return new _SpecPermalinkConstructor2.default().parsePermalink(fullUrl);\n } else if (riotPrefix && fullUrl.startsWith(riotPrefix)) {\n return new _RiotPermalinkConstructor2.default(riotPrefix).parsePermalink(fullUrl);\n }\n\n return null; // not a permalink we can handle\n}\n\nfunction getServerName(userId) {\n return userId.split(\":\").splice(1).join(\":\");\n}\n\nfunction getHostnameFromMatrixDomain(domain) {\n if (!domain) return null;\n return new URL(\"https://\" + domain).hostname;\n}\n\nfunction isHostInRegex(hostname, regexps) {\n hostname = getHostnameFromMatrixDomain(hostname);\n if (!hostname) return true; // assumed\n if (regexps.length > 0 && !regexps[0].test) throw new Error(regexps[0]);\n\n return regexps.filter(function (h) {\n return h.test(hostname);\n }).length > 0;\n}\n\nfunction isHostnameIpAddress(hostname) {\n hostname = getHostnameFromMatrixDomain(hostname);\n if (!hostname) return false;\n\n // is-ip doesn't want IPv6 addresses surrounded by brackets, so\n // take them off.\n if (hostname.startsWith(\"[\") && hostname.endsWith(\"]\")) {\n hostname = hostname.substring(1, hostname.length - 1);\n }\n\n return (0, _isIp2.default)(hostname);\n}\n//# sourceMappingURL=Permalinks.js.map","\n/**\n * Module dependencies.\n */\n\nvar getDocument = require('get-document');\n\n/**\n * Module exports.\n */\n\nmodule.exports = getWindow;\n\nvar needsIEFallback = require('./needs-ie-fallback');\n\n/**\n * Returns `true` if `w` is a Window object, or `false` otherwise.\n *\n * @param {Mixed} w - Window object, maybe\n * @return {Boolean}\n * @private\n */\n\nfunction isWindow (w) {\n return w && w.window === w;\n}\n\n/**\n * Returns the `window` object associated with the given `node`, which may be\n * a DOM element, the Window object, a Selection, a Range. Basically any DOM\n * object that references the Window in some way, this function will find it.\n *\n * @param {Mixed} node - DOM node, selection, or range in which to find the `window` object\n * @return {Window} the `window` object associated with `node`\n * @public\n */\n\nfunction getWindow(node) {\n if (isWindow(node)) {\n return node;\n }\n\n var doc = getDocument(node);\n\n if (needsIEFallback) {\n // In IE 6-8, only the variable 'window' can be used to connect events (others\n // may be only copies).\n doc.parentWindow.execScript('document._parentWindow = window;', 'Javascript');\n var win = doc._parentWindow;\n // to prevent memory leak, unset it after use\n // another possibility is to add an onUnload handler,\n // (which seems overkill to @liucougar)\n doc._parentWindow = null;\n return win;\n } else {\n // standards-compliant and newer IE\n return doc.defaultView || doc.parentWindow;\n }\n}\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","module.exports = {};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/values\"), __esModule: true };","/**\n * A `warning` helper, modeled after Facebook's and the `tiny-invariant` library.\n *\n * @param {Mixed} condition\n * @param {String} message\n */\n\nfunction warning(condition) {\n var message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n if (condition) return;\n\n var isProduction = \"development\" === 'production';\n var log = console.warn || console.log; // eslint-disable-line no-console\n\n if (isProduction) {\n log('Warning');\n } else {\n log('Warning: ' + message);\n }\n}\n\nexport default warning;\n//# sourceMappingURL=slate-dev-warning.es.js.map\n","module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };","'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _values = require('babel-runtime/core-js/object/values');\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _languageHandler = require('./languageHandler');\n\nvar _PlatformPeg = require('./PlatformPeg');\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nvar _SdkConfig = require('./SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar hashRegex = /#\\/(groups?|room|user|settings|register|login|forgot_password|home|directory)/; /*\n Copyright 2017 Michael Telatynski <7t3chguy@gmail.com>\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar hashVarRegex = /#\\/(group|room|user)\\/.*$/;\n\n// Remove all but the first item in the hash path. Redact unexpected hashes.\nfunction getRedactedHash(hash) {\n // Don't leak URLs we aren't expecting - they could contain tokens/PII\n var match = hashRegex.exec(hash);\n if (!match) {\n console.warn('Unexpected hash location \"' + hash + '\"');\n return '#/';\n }\n\n if (hashVarRegex.test(hash)) {\n return hash.replace(hashVarRegex, \"#/$1/\");\n }\n\n return hash.replace(hashRegex, \"#/$1\");\n}\n\n// Return the current origin, path and hash separated with a `/`. This does\n// not include query parameters.\nfunction getRedactedUrl() {\n var _window$location = window.location,\n origin = _window$location.origin,\n hash = _window$location.hash;\n var pathname = window.location.pathname;\n\n // Redact paths which could contain unexpected PII\n\n if (origin.startsWith('file://')) {\n pathname = \"//\";\n }\n\n return origin + pathname + getRedactedHash(hash);\n}\n\nvar customVariables = {\n 'App Platform': {\n id: 1,\n expl: (0, _languageHandler._td)('The platform you\\'re on'),\n example: 'Electron Platform'\n },\n 'App Version': {\n id: 2,\n expl: (0, _languageHandler._td)('The version of Riot.im'),\n example: '15.0.0'\n },\n 'User Type': {\n id: 3,\n expl: (0, _languageHandler._td)('Whether or not you\\'re logged in (we don\\'t record your username)'),\n example: 'Logged In'\n },\n 'Chosen Language': {\n id: 4,\n expl: (0, _languageHandler._td)('Your language of choice'),\n example: 'en'\n },\n 'Instance': {\n id: 5,\n expl: (0, _languageHandler._td)('Which officially provided instance you are using, if any'),\n example: 'app'\n },\n 'RTE: Uses Richtext Mode': {\n id: 6,\n expl: (0, _languageHandler._td)('Whether or not you\\'re using the Richtext mode of the Rich Text Editor'),\n example: 'off'\n },\n 'Breadcrumbs': {\n id: 9,\n expl: (0, _languageHandler._td)(\"Whether or not you're using the 'breadcrumbs' feature (avatars above the room list)\"),\n example: 'disabled'\n },\n 'Homeserver URL': {\n id: 7,\n expl: (0, _languageHandler._td)('Your homeserver\\'s URL'),\n example: 'https://matrix.org'\n },\n 'Identity Server URL': {\n id: 8,\n expl: (0, _languageHandler._td)('Your identity server\\'s URL'),\n example: 'https://vector.im'\n }\n};\n\nfunction whitelistRedact(whitelist, str) {\n if (whitelist.includes(str)) return str;\n return '';\n}\n\nvar Analytics = function () {\n function Analytics() {\n (0, _classCallCheck3.default)(this, Analytics);\n\n this._paq = null;\n this.disabled = true;\n this.firstPage = true;\n }\n\n /**\n * Enable Analytics if initialized but disabled\n * otherwise try and initalize, no-op if piwik config missing\n */\n\n\n (0, _createClass3.default)(Analytics, [{\n key: 'enable',\n value: function enable() {\n if (this._paq || this._init()) {\n this.disabled = false;\n }\n }\n\n /**\n * Disable Analytics calls, will not fully unload Piwik until a refresh,\n * but this is second best, Piwik should not pull anything implicitly.\n */\n\n }, {\n key: 'disable',\n value: function disable() {\n this.trackEvent('Analytics', 'opt-out');\n // disableHeartBeatTimer is undocumented but exists in the piwik code\n // the _paq.push method will result in an error being printed in the console\n // if an unknown method signature is passed\n this._paq.push(['disableHeartBeatTimer']);\n this.disabled = true;\n }\n }, {\n key: '_init',\n value: function _init() {\n var _this = this;\n\n var config = _SdkConfig2.default.get();\n if (!config || !config.piwik || !config.piwik.url || !config.piwik.siteId) return;\n\n var url = config.piwik.url;\n var siteId = config.piwik.siteId;\n var self = this;\n\n window._paq = this._paq = window._paq || [];\n\n this._paq.push(['setTrackerUrl', url + 'piwik.php']);\n this._paq.push(['setSiteId', siteId]);\n\n this._paq.push(['trackAllContentImpressions']);\n this._paq.push(['discardHashTag', false]);\n this._paq.push(['enableHeartBeatTimer']);\n // this._paq.push(['enableLinkTracking', true]);\n\n var platform = _PlatformPeg2.default.get();\n this._setVisitVariable('App Platform', platform.getHumanReadableName());\n platform.getAppVersion().then(function (version) {\n _this._setVisitVariable('App Version', version);\n }).catch(function () {\n _this._setVisitVariable('App Version', 'unknown');\n });\n\n this._setVisitVariable('Chosen Language', (0, _languageHandler.getCurrentLanguage)());\n\n if (window.location.hostname === 'riot.im') {\n this._setVisitVariable('Instance', window.location.pathname);\n }\n\n (function () {\n var g = document.createElement('script');\n var s = document.getElementsByTagName('script')[0];\n g.type = 'text/javascript';g.async = true;g.defer = true;g.src = url + 'piwik.js';\n\n g.onload = function () {\n console.log('Initialised anonymous analytics');\n self._paq = window._paq;\n };\n\n s.parentNode.insertBefore(g, s);\n })();\n\n return true;\n }\n }, {\n key: 'trackPageChange',\n value: function trackPageChange(generationTimeMs) {\n if (this.disabled) return;\n if (this.firstPage) {\n // De-duplicate first page\n // router seems to hit the fn twice\n this.firstPage = false;\n return;\n }\n\n if (typeof generationTimeMs === 'number') {\n this._paq.push(['setGenerationTimeMs', generationTimeMs]);\n } else {\n console.warn('Analytics.trackPageChange: expected generationTimeMs to be a number');\n // But continue anyway because we still want to track the change\n }\n\n this._paq.push(['setCustomUrl', getRedactedUrl()]);\n this._paq.push(['trackPageView']);\n }\n }, {\n key: 'trackEvent',\n value: function trackEvent(category, action, name, value) {\n if (this.disabled) return;\n this._paq.push(['setCustomUrl', getRedactedUrl()]);\n this._paq.push(['trackEvent', category, action, name, value]);\n }\n }, {\n key: 'logout',\n value: function logout() {\n if (this.disabled) return;\n this._paq.push(['deleteCookies']);\n }\n }, {\n key: '_setVisitVariable',\n value: function _setVisitVariable(key, value) {\n if (this.disabled) return;\n this._paq.push(['setCustomVariable', customVariables[key].id, key, value, 'visit']);\n }\n }, {\n key: 'setLoggedIn',\n value: function setLoggedIn(isGuest, homeserverUrl, identityServerUrl) {\n if (this.disabled) return;\n\n var config = _SdkConfig2.default.get();\n if (!config.piwik) return;\n\n var whitelistedHSUrls = config.piwik.whitelistedHSUrls || [];\n var whitelistedISUrls = config.piwik.whitelistedISUrls || [];\n\n this._setVisitVariable('User Type', isGuest ? 'Guest' : 'Logged In');\n this._setVisitVariable('Homeserver URL', whitelistRedact(whitelistedHSUrls, homeserverUrl));\n this._setVisitVariable('Identity Server URL', whitelistRedact(whitelistedISUrls, identityServerUrl));\n }\n }, {\n key: 'setRichtextMode',\n value: function setRichtextMode(state) {\n if (this.disabled) return;\n this._setVisitVariable('RTE: Uses Richtext Mode', state ? 'on' : 'off');\n }\n }, {\n key: 'setBreadcrumbs',\n value: function setBreadcrumbs(state) {\n if (this.disabled) return;\n this._setVisitVariable('Breadcrumbs', state ? 'enabled' : 'disabled');\n }\n }, {\n key: 'showDetailsModal',\n value: function showDetailsModal() {\n var rows = [];\n if (window.Piwik) {\n var Tracker = window.Piwik.getAsyncTracker();\n rows = (0, _values2.default)(customVariables).map(function (v) {\n return Tracker.getCustomVariable(v.id);\n }).filter(Boolean);\n } else {\n // Piwik may not have been enabled, so show example values\n rows = (0, _keys2.default)(customVariables).map(function (k) {\n return [k, (0, _languageHandler._t)('e.g. %(exampleValue)s', { exampleValue: customVariables[k].example })];\n });\n }\n\n var resolution = window.screen.width + 'x' + window.screen.height;\n var otherVariables = [{\n expl: (0, _languageHandler._td)('Every page you use in the app'),\n value: (0, _languageHandler._t)('e.g. ', {}, {\n CurrentPageURL: getRedactedUrl()\n })\n }, { expl: (0, _languageHandler._td)('Your User Agent'), value: navigator.userAgent }, { expl: (0, _languageHandler._td)('Your device resolution'), value: resolution }];\n\n var ErrorDialog = _index2.default.getComponent('dialogs.ErrorDialog');\n _Modal2.default.createTrackedDialog('Analytics Details', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Analytics'),\n description: React.createElement(\n 'div',\n { className: 'mx_AnalyticsModal' },\n React.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('The information being sent to us to help make Riot.im better includes:')\n ),\n React.createElement(\n 'table',\n null,\n rows.map(function (row) {\n return React.createElement(\n 'tr',\n { key: row[0] },\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)(customVariables[row[0]].expl)\n ),\n row[1] !== undefined && React.createElement(\n 'td',\n null,\n React.createElement(\n 'code',\n null,\n row[1]\n )\n )\n );\n }),\n otherVariables.map(function (item, index) {\n return React.createElement(\n 'tr',\n { key: index },\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)(item.expl)\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(\n 'code',\n null,\n item.value\n )\n )\n );\n })\n ),\n React.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('Where this page includes identifiable information, such as a room, ' + 'user or group ID, that data is removed before being sent to the server.')\n )\n )\n });\n }\n }]);\n return Analytics;\n}();\n\nif (!global.mxAnalytics) {\n global.mxAnalytics = new Analytics();\n}\nmodule.exports = global.mxAnalytics;\n//# sourceMappingURL=Analytics.js.map","\"use strict\";\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/*\n * Holds the current Platform object used by the code to do anything\n * specific to the platform we're running on (eg. web, electron)\n * Platforms are provided by the app layer.\n * This allows the app layer to set a Platform without necessarily\n * having to have a MatrixChat object\n */\nvar PlatformPeg = function () {\n function PlatformPeg() {\n (0, _classCallCheck3.default)(this, PlatformPeg);\n\n this.platform = null;\n }\n\n /**\n * Returns the current Platform object for the application.\n * This should be an instance of a class extending BasePlatform.\n */\n\n\n (0, _createClass3.default)(PlatformPeg, [{\n key: \"get\",\n value: function get() {\n return this.platform;\n }\n\n /**\n * Sets the current platform handler object to use for the\n * application.\n * This should be an instance of a class extending BasePlatform.\n */\n\n }, {\n key: \"set\",\n value: function set(plaf) {\n this.platform = plaf;\n }\n }]);\n return PlatformPeg;\n}();\n\nif (!global.mxPlatformPeg) {\n global.mxPlatformPeg = new PlatformPeg();\n}\nmodule.exports = global.mxPlatformPeg;\n//# sourceMappingURL=PlatformPeg.js.map","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isOnlyCtrlOrCmdKeyEvent = isOnlyCtrlOrCmdKeyEvent;\nexports.isOnlyCtrlOrCmdIgnoreShiftKeyEvent = isOnlyCtrlOrCmdIgnoreShiftKeyEvent;\n/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/* a selection of key codes, as used in KeyboardEvent.keyCode */\nvar KeyCode = exports.KeyCode = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n SHIFT: 16,\n ESCAPE: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46,\n KEY_A: 65,\n KEY_B: 66,\n KEY_C: 67,\n KEY_D: 68,\n KEY_E: 69,\n KEY_F: 70,\n KEY_G: 71,\n KEY_H: 72,\n KEY_I: 73,\n KEY_J: 74,\n KEY_K: 75,\n KEY_L: 76,\n KEY_M: 77,\n KEY_N: 78,\n KEY_O: 79,\n KEY_P: 80,\n KEY_Q: 81,\n KEY_R: 82,\n KEY_S: 83,\n KEY_T: 84,\n KEY_U: 85,\n KEY_V: 86,\n KEY_W: 87,\n KEY_X: 88,\n KEY_Y: 89,\n KEY_Z: 90,\n KEY_BACKTICK: 223 // DO NOT USE THIS: browsers disagree on backtick 192 vs 223\n};\n\nvar Key = exports.Key = {\n HOME: \"Home\",\n End: \"End\",\n PAGE_UP: \"PageUp\",\n PAGE_DOWN: \"PageDown\",\n BACKTICK: \"`\",\n\n K: \"k\"\n};\n\nfunction isOnlyCtrlOrCmdKeyEvent(ev) {\n var isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0;\n if (isMac) {\n return ev.metaKey && !ev.altKey && !ev.ctrlKey && !ev.shiftKey;\n } else {\n return ev.ctrlKey && !ev.altKey && !ev.metaKey && !ev.shiftKey;\n }\n}\n\nfunction isOnlyCtrlOrCmdIgnoreShiftKeyEvent(ev) {\n var isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0;\n if (isMac) {\n return ev.metaKey && !ev.altKey && !ev.ctrlKey;\n } else {\n return ev.ctrlKey && !ev.altKey && !ev.metaKey;\n }\n}\n//# sourceMappingURL=Keyboard.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017, 2018 New Vector Ltd\nCopyright 2019 Michael Telatynski <7t3chguy@gmail.com>\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nexports.unicodeToShortcode = unicodeToShortcode;\nexports.shortcodeToUnicode = shortcodeToUnicode;\nexports.processHtmlForSending = processHtmlForSending;\nexports.sanitizedHtmlNode = sanitizedHtmlNode;\nexports.isUrlPermitted = isUrlPermitted;\nexports.bodyToHtml = bodyToHtml;\nexports.linkifyString = linkifyString;\nexports.linkifyElement = linkifyElement;\nexports.linkifyAndSanitizeHtml = linkifyAndSanitizeHtml;\nexports.checkBlockNode = checkBlockNode;\n\nvar _ReplyThread = require('./components/views/elements/ReplyThread');\n\nvar _ReplyThread2 = _interopRequireDefault(_ReplyThread);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _sanitizeHtml = require('sanitize-html');\n\nvar _sanitizeHtml2 = _interopRequireDefault(_sanitizeHtml);\n\nvar _highlight = require('highlight.js');\n\nvar _highlight2 = _interopRequireDefault(_highlight);\n\nvar _linkifyjs = require('linkifyjs');\n\nvar linkify = _interopRequireWildcard(_linkifyjs);\n\nvar _linkifyMatrix = require('./linkify-matrix');\n\nvar _linkifyMatrix2 = _interopRequireDefault(_linkifyMatrix);\n\nvar _element = require('linkifyjs/element');\n\nvar _element2 = _interopRequireDefault(_element);\n\nvar _string = require('linkifyjs/string');\n\nvar _string2 = _interopRequireDefault(_string);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _url = require('url');\n\nvar _url2 = _interopRequireDefault(_url);\n\nvar _compact = require('emojibase-data/en/compact.json');\n\nvar _compact2 = _interopRequireDefault(_compact);\n\nvar _emojibaseRegex = require('emojibase-regex');\n\nvar _emojibaseRegex2 = _interopRequireDefault(_emojibaseRegex);\n\nvar _Permalinks = require('./utils/permalinks/Permalinks');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _linkifyMatrix2.default)(linkify);\n\n// Anything outside the basic multilingual plane will be a surrogate pair\nvar SURROGATE_PAIR_PATTERN = /([\\ud800-\\udbff])([\\udc00-\\udfff])/;\n// And there a bunch more symbol characters that emojibase has within the\n// BMP, so this includes the ranges from 'letterlike symbols' to\n// 'miscellaneous symbols and arrows' which should catch all of them\n// (with plenty of false positives, but that's OK)\nvar SYMBOL_PATTERN = /([\\u2100-\\u2bff])/;\n\n// Regex pattern for Zero-Width joiner unicode characters\nvar ZWJ_REGEX = new RegExp('\\u200D|\\u2003', \"g\");\n\n// Regex pattern for whitespace characters\nvar WHITESPACE_REGEX = new RegExp(\"\\\\s\", \"g\");\n\nvar BIGEMOJI_REGEX = new RegExp('^(' + _emojibaseRegex2.default.source + ')+$', 'i');\nvar SINGLE_EMOJI_REGEX = new RegExp('^(' + _emojibaseRegex2.default.source + ')$', 'i');\n\nvar COLOR_REGEX = /^#[0-9a-fA-F]{6}$/;\n\nvar PERMITTED_URL_SCHEMES = ['http', 'https', 'ftp', 'mailto', 'magnet'];\n\nvar VARIATION_SELECTOR = String.fromCharCode(0xFE0F);\n\n/*\n * Return true if the given string contains emoji\n * Uses a much, much simpler regex than emojibase's so will give false\n * positives, but useful for fast-path testing strings to see if they\n * need emojification.\n * unicodeToImage uses this function.\n */\nfunction mightContainEmoji(str) {\n return SURROGATE_PAIR_PATTERN.test(str) || SYMBOL_PATTERN.test(str);\n}\n\n/**\n * Returns the shortcode for an emoji character.\n *\n * @param {String} char The emoji character\n * @return {String} The shortcode (such as :thumbup:)\n */\nfunction unicodeToShortcode(char) {\n // Check against both the char and the char with an empty variation selector appended because that's how\n // emoji-base stores its base emojis which have variations. https://github.com/vector-im/riot-web/issues/9785\n var emptyVariation = char + VARIATION_SELECTOR;\n var data = _compact2.default.find(function (e) {\n return e.unicode === char || e.unicode === emptyVariation;\n });\n return data && data.shortcodes ? ':' + data.shortcodes[0] + ':' : '';\n}\n\n/**\n * Returns the unicode character for an emoji shortcode\n *\n * @param {String} shortcode The shortcode (such as :thumbup:)\n * @return {String} The emoji character; null if none exists\n */\nfunction shortcodeToUnicode(shortcode) {\n shortcode = shortcode.slice(1, shortcode.length - 1);\n var data = _compact2.default.find(function (e) {\n return e.shortcodes && e.shortcodes.includes(shortcode);\n });\n return data ? data.unicode : null;\n}\n\nfunction processHtmlForSending(html) {\n var contentDiv = document.createElement('div');\n contentDiv.innerHTML = html;\n\n if (contentDiv.children.length === 0) {\n return contentDiv.innerHTML;\n }\n\n var contentHTML = \"\";\n for (var i = 0; i < contentDiv.children.length; i++) {\n var element = contentDiv.children[i];\n if (element.tagName.toLowerCase() === 'p') {\n contentHTML += element.innerHTML;\n // Don't add a
for the last

\n if (i !== contentDiv.children.length - 1) {\n contentHTML += '
';\n }\n } else {\n var temp = document.createElement('div');\n temp.appendChild(element.cloneNode(true));\n contentHTML += temp.innerHTML;\n }\n }\n\n return contentHTML;\n}\n\n/*\n * Given an untrusted HTML string, return a React node with an sanitized version\n * of that HTML.\n */\nfunction sanitizedHtmlNode(insaneHtml) {\n var saneHtml = (0, _sanitizeHtml2.default)(insaneHtml, sanitizeHtmlParams);\n\n return _react2.default.createElement('div', { dangerouslySetInnerHTML: { __html: saneHtml }, dir: 'auto' });\n}\n\n/**\n * Tests if a URL from an untrusted source may be safely put into the DOM\n * The biggest threat here is javascript: URIs.\n * Note that the HTML sanitiser library has its own internal logic for\n * doing this, to which we pass the same list of schemes. This is used in\n * other places we need to sanitise URLs.\n * @return true if permitted, otherwise false\n */\nfunction isUrlPermitted(inputUrl) {\n try {\n var parsed = _url2.default.parse(inputUrl);\n if (!parsed.protocol) return false;\n // URL parser protocol includes the trailing colon\n return PERMITTED_URL_SCHEMES.includes(parsed.protocol.slice(0, -1));\n } catch (e) {\n return false;\n }\n}\n\nvar transformTags = { // custom to matrix\n // add blank targets to all hyperlinks except vector URLs\n 'a': function a(tagName, attribs) {\n if (attribs.href) {\n attribs.target = '_blank'; // by default\n\n var transformed = (0, _Permalinks.tryTransformPermalinkToLocalHref)(attribs.href);\n if (transformed !== attribs.href || attribs.href.match(_linkifyMatrix2.default.VECTOR_URL_PATTERN)) {\n attribs.href = transformed;\n delete attribs.target;\n }\n }\n attribs.rel = 'noopener'; // https://mathiasbynens.github.io/rel-noopener/\n return { tagName: tagName, attribs: attribs };\n },\n 'img': function img(tagName, attribs) {\n // Strip out imgs that aren't `mxc` here instead of using allowedSchemesByTag\n // because transformTags is used _before_ we filter by allowedSchemesByTag and\n // we don't want to allow images with `https?` `src`s.\n if (!attribs.src || !attribs.src.startsWith('mxc://')) {\n return { tagName: tagName, attribs: {} };\n }\n attribs.src = _MatrixClientPeg2.default.get().mxcUrlToHttp(attribs.src, attribs.width || 800, attribs.height || 600);\n return { tagName: tagName, attribs: attribs };\n },\n 'code': function code(tagName, attribs) {\n if (typeof attribs.class !== 'undefined') {\n // Filter out all classes other than ones starting with language- for syntax highlighting.\n var classes = attribs.class.split(/\\s/).filter(function (cl) {\n return cl.startsWith('language-');\n });\n attribs.class = classes.join(' ');\n }\n return { tagName: tagName, attribs: attribs };\n },\n '*': function _(tagName, attribs) {\n // Delete any style previously assigned, style is an allowedTag for font and span\n // because attributes are stripped after transforming\n delete attribs.style;\n\n // Sanitise and transform data-mx-color and data-mx-bg-color to their CSS\n // equivalents\n var customCSSMapper = {\n 'data-mx-color': 'color',\n 'data-mx-bg-color': 'background-color'\n // $customAttributeKey: $cssAttributeKey\n };\n\n var style = \"\";\n (0, _keys2.default)(customCSSMapper).forEach(function (customAttributeKey) {\n var cssAttributeKey = customCSSMapper[customAttributeKey];\n var customAttributeValue = attribs[customAttributeKey];\n if (customAttributeValue && typeof customAttributeValue === 'string' && COLOR_REGEX.test(customAttributeValue)) {\n style += cssAttributeKey + \":\" + customAttributeValue + \";\";\n delete attribs[customAttributeKey];\n }\n });\n\n if (style) {\n attribs.style = style;\n }\n\n return { tagName: tagName, attribs: attribs };\n }\n};\n\nvar sanitizeHtmlParams = {\n allowedTags: ['font', // custom to matrix for IRC-style font coloring\n 'del', // for markdown\n 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'blockquote', 'p', 'a', 'ul', 'ol', 'sup', 'sub', 'nl', 'li', 'b', 'i', 'u', 'strong', 'em', 'strike', 'code', 'hr', 'br', 'div', 'table', 'thead', 'caption', 'tbody', 'tr', 'th', 'td', 'pre', 'span', 'img'],\n allowedAttributes: {\n // custom ones first:\n font: ['color', 'data-mx-bg-color', 'data-mx-color', 'style'], // custom to matrix\n span: ['data-mx-bg-color', 'data-mx-color', 'data-mx-spoiler', 'style'], // custom to matrix\n a: ['href', 'name', 'target', 'rel'], // remote target: custom to matrix\n img: ['src', 'width', 'height', 'alt', 'title'],\n ol: ['start'],\n code: ['class'] // We don't actually allow all classes, we filter them in transformTags\n },\n // Lots of these won't come up by default because we don't allow them\n selfClosing: ['img', 'br', 'hr', 'area', 'base', 'basefont', 'input', 'link', 'meta'],\n // URL schemes we permit\n allowedSchemes: PERMITTED_URL_SCHEMES,\n\n allowProtocolRelative: false,\n transformTags: transformTags\n};\n\n// this is the same as the above except with less rewriting\nvar composerSanitizeHtmlParams = (0, _assign2.default)({}, sanitizeHtmlParams);\ncomposerSanitizeHtmlParams.transformTags = {\n 'code': transformTags['code'],\n '*': transformTags['*']\n};\n\nvar BaseHighlighter = function () {\n function BaseHighlighter(highlightClass, highlightLink) {\n (0, _classCallCheck3.default)(this, BaseHighlighter);\n\n this.highlightClass = highlightClass;\n this.highlightLink = highlightLink;\n }\n\n /**\n * apply the highlights to a section of text\n *\n * @param {string} safeSnippet The snippet of text to apply the highlights\n * to.\n * @param {string[]} safeHighlights A list of substrings to highlight,\n * sorted by descending length.\n *\n * returns a list of results (strings for HtmlHighligher, react nodes for\n * TextHighlighter).\n */\n\n\n (0, _createClass3.default)(BaseHighlighter, [{\n key: 'applyHighlights',\n value: function applyHighlights(safeSnippet, safeHighlights) {\n var lastOffset = 0;\n var offset = void 0;\n var nodes = [];\n\n var safeHighlight = safeHighlights[0];\n while ((offset = safeSnippet.toLowerCase().indexOf(safeHighlight.toLowerCase(), lastOffset)) >= 0) {\n // handle preamble\n if (offset > lastOffset) {\n var subSnippet = safeSnippet.substring(lastOffset, offset);\n nodes = nodes.concat(this._applySubHighlights(subSnippet, safeHighlights));\n }\n\n // do highlight. use the original string rather than safeHighlight\n // to preserve the original casing.\n var endOffset = offset + safeHighlight.length;\n nodes.push(this._processSnippet(safeSnippet.substring(offset, endOffset), true));\n\n lastOffset = endOffset;\n }\n\n // handle postamble\n if (lastOffset !== safeSnippet.length) {\n subSnippet = safeSnippet.substring(lastOffset, undefined);\n nodes = nodes.concat(this._applySubHighlights(subSnippet, safeHighlights));\n }\n return nodes;\n }\n }, {\n key: '_applySubHighlights',\n value: function _applySubHighlights(safeSnippet, safeHighlights) {\n if (safeHighlights[1]) {\n // recurse into this range to check for the next set of highlight matches\n return this.applyHighlights(safeSnippet, safeHighlights.slice(1));\n } else {\n // no more highlights to be found, just return the unhighlighted string\n return [this._processSnippet(safeSnippet, false)];\n }\n }\n }]);\n return BaseHighlighter;\n}();\n\nvar HtmlHighlighter = function (_BaseHighlighter) {\n (0, _inherits3.default)(HtmlHighlighter, _BaseHighlighter);\n\n function HtmlHighlighter() {\n (0, _classCallCheck3.default)(this, HtmlHighlighter);\n return (0, _possibleConstructorReturn3.default)(this, (HtmlHighlighter.__proto__ || (0, _getPrototypeOf2.default)(HtmlHighlighter)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(HtmlHighlighter, [{\n key: '_processSnippet',\n\n /* highlight the given snippet if required\n *\n * snippet: content of the span; must have been sanitised\n * highlight: true to highlight as a search match\n *\n * returns an HTML string\n */\n value: function _processSnippet(snippet, highlight) {\n if (!highlight) {\n // nothing required here\n return snippet;\n }\n\n var span = \"\" + snippet + \"\";\n\n if (this.highlightLink) {\n span = \"\" + span + \"\";\n }\n return span;\n }\n }]);\n return HtmlHighlighter;\n}(BaseHighlighter);\n\nvar TextHighlighter = function (_BaseHighlighter2) {\n (0, _inherits3.default)(TextHighlighter, _BaseHighlighter2);\n\n function TextHighlighter(highlightClass, highlightLink) {\n (0, _classCallCheck3.default)(this, TextHighlighter);\n\n var _this2 = (0, _possibleConstructorReturn3.default)(this, (TextHighlighter.__proto__ || (0, _getPrototypeOf2.default)(TextHighlighter)).call(this, highlightClass, highlightLink));\n\n _this2._key = 0;\n return _this2;\n }\n\n /* create a node to hold the given content\n *\n * snippet: content of the span\n * highlight: true to highlight as a search match\n *\n * returns a React node\n */\n\n\n (0, _createClass3.default)(TextHighlighter, [{\n key: '_processSnippet',\n value: function _processSnippet(snippet, highlight) {\n var key = this._key++;\n\n var node = _react2.default.createElement(\n 'span',\n { key: key, className: highlight ? this.highlightClass : null },\n snippet\n );\n\n if (highlight && this.highlightLink) {\n node = _react2.default.createElement(\n 'a',\n { key: key, href: this.highlightLink },\n node\n );\n }\n\n return node;\n }\n }]);\n return TextHighlighter;\n}(BaseHighlighter);\n\n/* turn a matrix event body into html\n *\n * content: 'content' of the MatrixEvent\n *\n * highlights: optional list of words to highlight, ordered by longest word first\n *\n * opts.highlightLink: optional href to add to highlighted words\n * opts.disableBigEmoji: optional argument to disable the big emoji class.\n * opts.stripReplyFallback: optional argument specifying the event is a reply and so fallback needs removing\n * opts.returnString: return an HTML string rather than JSX elements\n * opts.forComposerQuote: optional param to lessen the url rewriting done by sanitization, for quoting into composer\n */\n\n\nfunction bodyToHtml(content, highlights) {\n var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var isHtmlMessage = content.format === \"org.matrix.custom.html\" && content.formatted_body;\n var bodyHasEmoji = false;\n\n var sanitizeParams = sanitizeHtmlParams;\n if (opts.forComposerQuote) {\n sanitizeParams = composerSanitizeHtmlParams;\n }\n\n var strippedBody = void 0;\n var safeBody = void 0;\n var isDisplayedWithHtml = void 0;\n // XXX: We sanitize the HTML whilst also highlighting its text nodes, to avoid accidentally trying\n // to highlight HTML tags themselves. However, this does mean that we don't highlight textnodes which\n // are interrupted by HTML tags (not that we did before) - e.g. foobar won't get highlighted\n // by an attempt to search for 'foobar'. Then again, the search query probably wouldn't work either\n try {\n if (highlights && highlights.length > 0) {\n var highlighter = new HtmlHighlighter(\"mx_EventTile_searchHighlight\", opts.highlightLink);\n var safeHighlights = highlights.map(function (highlight) {\n return (0, _sanitizeHtml2.default)(highlight, sanitizeParams);\n });\n // XXX: hacky bodge to temporarily apply a textFilter to the sanitizeParams structure.\n sanitizeParams.textFilter = function (safeText) {\n return highlighter.applyHighlights(safeText, safeHighlights).join('');\n };\n }\n\n var formattedBody = content.formatted_body;\n if (opts.stripReplyFallback && formattedBody) formattedBody = _ReplyThread2.default.stripHTMLReply(formattedBody);\n strippedBody = opts.stripReplyFallback ? _ReplyThread2.default.stripPlainReply(content.body) : content.body;\n\n bodyHasEmoji = mightContainEmoji(isHtmlMessage ? formattedBody : content.body);\n\n // Only generate safeBody if the message was sent as org.matrix.custom.html\n if (isHtmlMessage) {\n isDisplayedWithHtml = true;\n safeBody = (0, _sanitizeHtml2.default)(formattedBody, sanitizeParams);\n }\n } finally {\n delete sanitizeParams.textFilter;\n }\n\n if (opts.returnString) {\n return isDisplayedWithHtml ? safeBody : strippedBody;\n }\n\n var emojiBody = false;\n if (!opts.disableBigEmoji && bodyHasEmoji) {\n var contentBodyTrimmed = strippedBody !== undefined ? strippedBody.trim() : '';\n\n // Ignore spaces in body text. Emojis with spaces in between should\n // still be counted as purely emoji messages.\n contentBodyTrimmed = contentBodyTrimmed.replace(WHITESPACE_REGEX, '');\n\n // Remove zero width joiner characters from emoji messages. This ensures\n // that emojis that are made up of multiple unicode characters are still\n // presented as large.\n contentBodyTrimmed = contentBodyTrimmed.replace(ZWJ_REGEX, '');\n\n var match = BIGEMOJI_REGEX.exec(contentBodyTrimmed);\n emojiBody = match && match[0] && match[0].length === contentBodyTrimmed.length && (\n // Prevent user pills expanding for users with only emoji in\n // their username. Permalinks (links in pills) can be any URL\n // now, so we just check for an HTTP-looking thing.\n content.formatted_body == undefined || !content.formatted_body.includes(\"http:\") && !content.formatted_body.includes(\"https:\"));\n }\n\n var className = (0, _classnames2.default)({\n 'mx_EventTile_body': true,\n 'mx_EventTile_bigEmoji': emojiBody,\n 'markdown-body': isHtmlMessage && !emojiBody\n });\n\n return isDisplayedWithHtml ? _react2.default.createElement('span', { key: 'body', className: className, dangerouslySetInnerHTML: { __html: safeBody }, dir: 'auto' }) : _react2.default.createElement(\n 'span',\n { key: 'body', className: className, dir: 'auto' },\n strippedBody\n );\n}\n\n/**\n * Linkifies the given string. This is a wrapper around 'linkifyjs/string'.\n *\n * @param {string} str\n * @returns {string}\n */\nfunction linkifyString(str) {\n return (0, _string2.default)(str);\n}\n\n/**\n * Linkifies the given DOM element. This is a wrapper around 'linkifyjs/element'.\n *\n * @param {object} element DOM element to linkify\n * @param {object} [options] Options for linkifyElement. Default: linkifyMatrix.options\n * @returns {object}\n */\nfunction linkifyElement(element) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _linkifyMatrix2.default.options;\n\n return (0, _element2.default)(element, options);\n}\n\n/**\n * Linkify the given string and sanitize the HTML afterwards.\n *\n * @param {string} dirtyHtml The HTML string to sanitize and linkify\n * @returns {string}\n */\nfunction linkifyAndSanitizeHtml(dirtyHtml) {\n return (0, _sanitizeHtml2.default)(linkifyString(dirtyHtml), sanitizeHtmlParams);\n}\n\n/**\n * Returns if a node is a block element or not.\n * Only takes html nodes into account that are allowed in matrix messages.\n *\n * @param {Node} node\n * @returns {bool}\n */\nfunction checkBlockNode(node) {\n switch (node.nodeName) {\n case \"H1\":\n case \"H2\":\n case \"H3\":\n case \"H4\":\n case \"H5\":\n case \"H6\":\n case \"PRE\":\n case \"BLOCKQUOTE\":\n case \"DIV\":\n case \"P\":\n case \"UL\":\n case \"OL\":\n case \"LI\":\n case \"HR\":\n case \"TABLE\":\n case \"THEAD\":\n case \"TBODY\":\n case \"TR\":\n case \"TH\":\n case \"TD\":\n return true;\n default:\n return false;\n }\n}\n//# sourceMappingURL=HtmlUtils.js.map","'use strict';\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _dispatcher = require('../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _utils = require('flux/utils');\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar INITIAL_STATE = {\n // Whether we're joining the currently viewed room (see isJoining())\n joining: false,\n // Any error that has occurred during joining\n joinError: null,\n // The room ID of the room currently being viewed\n roomId: null,\n\n // The event to scroll to when the room is first viewed\n initialEventId: null,\n // Whether to highlight the initial event\n isInitialEventHighlighted: false,\n\n // The room alias of the room (or null if not originally specified in view_room)\n roomAlias: null,\n // Whether the current room is loading\n roomLoading: false,\n // Any error that has occurred during loading\n roomLoadError: null,\n\n forwardingEvent: null,\n\n quotingEvent: null\n};\n\n/**\n * A class for storing application state for RoomView. This is the RoomView's interface\n* with a subset of the js-sdk.\n * ```\n */\n\nvar RoomViewStore = function (_Store) {\n (0, _inherits3.default)(RoomViewStore, _Store);\n\n function RoomViewStore() {\n (0, _classCallCheck3.default)(this, RoomViewStore);\n\n // Initialise state\n var _this = (0, _possibleConstructorReturn3.default)(this, (RoomViewStore.__proto__ || (0, _getPrototypeOf2.default)(RoomViewStore)).call(this, _dispatcher2.default));\n\n _this._state = INITIAL_STATE;\n return _this;\n }\n\n (0, _createClass3.default)(RoomViewStore, [{\n key: '_setState',\n value: function _setState(newState) {\n this._state = (0, _assign2.default)(this._state, newState);\n this.__emitChange();\n }\n }, {\n key: '__onDispatch',\n value: function __onDispatch(payload) {\n switch (payload.action) {\n // view_room:\n // - room_alias: '#somealias:matrix.org'\n // - room_id: '!roomid123:matrix.org'\n // - event_id: '$213456782:matrix.org'\n // - event_offset: 100\n // - highlighted: true\n case 'view_room':\n this._viewRoom(payload);\n break;\n case 'view_my_groups':\n case 'view_group':\n this._setState({\n roomId: null,\n roomAlias: null\n });\n break;\n case 'view_room_error':\n this._viewRoomError(payload);\n break;\n case 'will_join':\n this._setState({\n joining: true\n });\n break;\n case 'cancel_join':\n this._setState({\n joining: false\n });\n break;\n // join_room:\n // - opts: options for joinRoom\n case 'join_room':\n this._joinRoom(payload);\n break;\n case 'join_room_error':\n this._joinRoomError(payload);\n break;\n case 'on_client_not_viable':\n case 'on_logged_out':\n this.reset();\n break;\n case 'forward_event':\n this._setState({\n forwardingEvent: payload.event\n });\n break;\n case 'reply_to_event':\n // If currently viewed room does not match the room in which we wish to reply then change rooms\n // this can happen when performing a search across all rooms\n if (payload.event && payload.event.getRoomId() !== this._state.roomId) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: payload.event.getRoomId(),\n replyingToEvent: payload.event\n });\n } else {\n this._setState({\n replyingToEvent: payload.event\n });\n }\n break;\n case 'open_room_settings':\n {\n var RoomSettingsDialog = _index2.default.getComponent(\"dialogs.RoomSettingsDialog\");\n _Modal2.default.createTrackedDialog('Room settings', '', RoomSettingsDialog, {\n roomId: payload.room_id || this._state.roomId\n }, /*className=*/null, /*isPriority=*/false, /*isStatic=*/true);\n break;\n }\n }\n }\n }, {\n key: '_viewRoom',\n value: function _viewRoom(payload) {\n if (payload.room_id) {\n var newState = {\n roomId: payload.room_id,\n roomAlias: payload.room_alias,\n initialEventId: payload.event_id,\n isInitialEventHighlighted: payload.highlighted,\n forwardingEvent: null,\n roomLoading: false,\n roomLoadError: null,\n // should peek by default\n shouldPeek: payload.should_peek === undefined ? true : payload.should_peek,\n // have we sent a join request for this room and are waiting for a response?\n joining: payload.joining || false,\n // Reset replyingToEvent because we don't want cross-room because bad UX\n replyingToEvent: null,\n // pull the user out of Room Settings\n isEditingSettings: false\n };\n\n // Allow being given an event to be replied to when switching rooms but sanity check its for this room\n if (payload.replyingToEvent && payload.replyingToEvent.getRoomId() === payload.room_id) {\n newState.replyingToEvent = payload.replyingToEvent;\n }\n\n if (this._state.forwardingEvent) {\n _dispatcher2.default.dispatch({\n action: 'send_event',\n room_id: newState.roomId,\n event: this._state.forwardingEvent\n });\n }\n\n this._setState(newState);\n\n if (payload.auto_join) {\n this._joinRoom(payload);\n }\n } else if (payload.room_alias) {\n // Resolve the alias and then do a second dispatch with the room ID acquired\n this._setState({\n roomId: null,\n initialEventId: null,\n initialEventPixelOffset: null,\n isInitialEventHighlighted: null,\n roomAlias: payload.room_alias,\n roomLoading: true,\n roomLoadError: null\n });\n _MatrixClientPeg2.default.get().getRoomIdForAlias(payload.room_alias).done(function (result) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: result.room_id,\n event_id: payload.event_id,\n highlighted: payload.highlighted,\n room_alias: payload.room_alias,\n auto_join: payload.auto_join,\n oob_data: payload.oob_data\n });\n }, function (err) {\n _dispatcher2.default.dispatch({\n action: 'view_room_error',\n room_id: null,\n room_alias: payload.room_alias,\n err: err\n });\n });\n }\n }\n }, {\n key: '_viewRoomError',\n value: function _viewRoomError(payload) {\n this._setState({\n roomId: payload.room_id,\n roomAlias: payload.room_alias,\n roomLoading: false,\n roomLoadError: payload.err\n });\n }\n }, {\n key: '_joinRoom',\n value: function _joinRoom(payload) {\n this._setState({\n joining: true\n });\n _MatrixClientPeg2.default.get().joinRoom(this._state.roomAlias || this._state.roomId, payload.opts).done(function () {\n // We don't actually need to do anything here: we do *not*\n // clear the 'joining' flag because the Room object and/or\n // our 'joined' member event may not have come down the sync\n // stream yet, and that's the point at which we'd consider\n // the user joined to the room.\n }, function (err) {\n _dispatcher2.default.dispatch({\n action: 'join_room_error',\n err: err\n });\n var msg = err.message ? err.message : (0, _stringify2.default)(err);\n // XXX: We are relying on the error message returned by browsers here.\n // This isn't great, but it does generalize the error being shown to users.\n if (msg && msg.startsWith(\"CORS request rejected\")) {\n msg = (0, _languageHandler._t)(\"There was an error joining the room\");\n }\n if (err.errcode === 'M_INCOMPATIBLE_ROOM_VERSION') {\n msg = React.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"Sorry, your homeserver is too old to participate in this room.\"),\n React.createElement('br', null),\n (0, _languageHandler._t)(\"Please contact your homeserver administrator.\")\n );\n }\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to join room', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to join room\"),\n description: msg\n });\n });\n }\n }, {\n key: '_joinRoomError',\n value: function _joinRoomError(payload) {\n this._setState({\n joining: false,\n joinError: payload.err\n });\n }\n }, {\n key: 'reset',\n value: function reset() {\n this._state = (0, _assign2.default)({}, INITIAL_STATE);\n }\n\n // The room ID of the room currently being viewed\n\n }, {\n key: 'getRoomId',\n value: function getRoomId() {\n return this._state.roomId;\n }\n\n // The event to scroll to when the room is first viewed\n\n }, {\n key: 'getInitialEventId',\n value: function getInitialEventId() {\n return this._state.initialEventId;\n }\n\n // Whether to highlight the initial event\n\n }, {\n key: 'isInitialEventHighlighted',\n value: function isInitialEventHighlighted() {\n return this._state.isInitialEventHighlighted;\n }\n\n // The room alias of the room (or null if not originally specified in view_room)\n\n }, {\n key: 'getRoomAlias',\n value: function getRoomAlias() {\n return this._state.roomAlias;\n }\n\n // Whether the current room is loading (true whilst resolving an alias)\n\n }, {\n key: 'isRoomLoading',\n value: function isRoomLoading() {\n return this._state.roomLoading;\n }\n\n // Any error that has occurred during loading\n\n }, {\n key: 'getRoomLoadError',\n value: function getRoomLoadError() {\n return this._state.roomLoadError;\n }\n\n // True if we're expecting the user to be joined to the room currently being\n // viewed. Note that this is left true after the join request has finished,\n // since we should still consider a join to be in progress until the room\n // & member events come down the sync.\n //\n // This flag remains true after the room has been sucessfully joined,\n // (this store doesn't listen for the appropriate member events)\n // so you should always observe the joined state from the member event\n // if a room object is present.\n // ie. The correct logic is:\n // if (room) {\n // if (myMember.membership == 'joined') {\n // // user is joined to the room\n // } else {\n // // Not joined\n // }\n // } else {\n // if (RoomViewStore.isJoining()) {\n // // show spinner\n // } else {\n // // show join prompt\n // }\n // }\n\n }, {\n key: 'isJoining',\n value: function isJoining() {\n return this._state.joining;\n }\n\n // Any error that has occurred during joining\n\n }, {\n key: 'getJoinError',\n value: function getJoinError() {\n return this._state.joinError;\n }\n\n // The mxEvent if one is about to be forwarded\n\n }, {\n key: 'getForwardingEvent',\n value: function getForwardingEvent() {\n return this._state.forwardingEvent;\n }\n\n // The mxEvent if one is currently being replied to/quoted\n\n }, {\n key: 'getQuotingEvent',\n value: function getQuotingEvent() {\n return this._state.replyingToEvent;\n }\n }, {\n key: 'shouldPeek',\n value: function shouldPeek() {\n return this._state.shouldPeek;\n }\n }]);\n return RoomViewStore;\n}(_utils.Store);\n\nvar singletonRoomViewStore = null;\nif (!singletonRoomViewStore) {\n singletonRoomViewStore = new RoomViewStore();\n}\nmodule.exports = singletonRoomViewStore;\n//# sourceMappingURL=RoomViewStore.js.map","module.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","\"use strict\";\n\n/*\nCopyright 2018 André Jaenisch\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * @module logger\n */\nvar log = require(\"loglevel\");\n\n// This is to demonstrate, that you can use any namespace you want.\n// Namespaces allow you to turn on/off the logging for specific parts of the\n// application.\n// An idea would be to control this via an environment variable (on Node.js).\n// See https://www.npmjs.com/package/debug to see how this could be implemented\n// Part of #332 is introducing a logging library in the first place.\nvar DEFAULT_NAME_SPACE = \"matrix\";\nvar logger = log.getLogger(DEFAULT_NAME_SPACE);\nlogger.setLevel(log.levels.DEBUG);\n\n/**\n * Drop-in replacement for console using {@link https://www.npmjs.com/package/loglevel|loglevel}.\n * Can be tailored down to specific use cases if needed.\n*/\nmodule.exports = logger;\n//# sourceMappingURL=logger.js.map","'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _bluebird = require('bluebird');\n\n// Limit the maximum number of ongoing promises returned by fn to LIMIT and\n// use a FIFO queue to handle the backlog.\nvar limitConcurrency = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(fn) {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(ongoingRequestCount >= LIMIT)) {\n _context.next = 3;\n break;\n }\n\n _context.next = 3;\n return (0, _bluebird.resolve)(new _promise2.default(function (resolve, reject) {\n backlogQueue.push(resolve);\n }));\n\n case 3:\n\n ongoingRequestCount++;\n _context.prev = 4;\n _context.next = 7;\n return (0, _bluebird.resolve)(fn());\n\n case 7:\n return _context.abrupt('return', _context.sent);\n\n case 10:\n _context.prev = 10;\n _context.t0 = _context['catch'](4);\n throw _context.t0;\n\n case 13:\n _context.prev = 13;\n\n ongoingRequestCount--;\n checkBacklog();\n return _context.finish(13);\n\n case 17:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[4, 10, 13, 17]]);\n }));\n\n return function limitConcurrency(_x) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * Global store for tracking group summary, members, invited members and rooms.\n */\n\n\nvar _events = require('events');\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _groups = require('../groups');\n\nvar _FlairStore = require('./FlairStore');\n\nvar _FlairStore2 = _interopRequireDefault(_FlairStore);\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction parseMembersResponse(response) {\n return response.chunk.map(function (apiMember) {\n return (0, _groups.groupMemberFromApiObject)(apiMember);\n });\n}\n\nfunction parseRoomsResponse(response) {\n return response.chunk.map(function (apiRoom) {\n return (0, _groups.groupRoomFromApiObject)(apiRoom);\n });\n}\n\n// The number of ongoing group requests\nvar ongoingRequestCount = 0;\n\n// This has arbitrarily been set to a small number to lower the priority\n// of doing group-related requests because we care about other important\n// requests like hitting /sync.\nvar LIMIT = 3; // Maximum number of ongoing group requests\n\n// FIFO queue of functions to call in the backlog\nvar backlogQueue = [\n // () => {...}\n];\n\n// Pull from the FIFO queue\nfunction checkBacklog() {\n var item = backlogQueue.shift();\n if (typeof item === 'function') item();\n}\nvar GroupStore = function (_EventEmitter) {\n (0, _inherits3.default)(GroupStore, _EventEmitter);\n\n function GroupStore() {\n var _this$_fetchResourceP, _this$_resourceFetche;\n\n (0, _classCallCheck3.default)(this, GroupStore);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (GroupStore.__proto__ || (0, _getPrototypeOf2.default)(GroupStore)).call(this));\n\n _this.STATE_KEY = {\n GroupMembers: 'GroupMembers',\n GroupInvitedMembers: 'GroupInvitedMembers',\n Summary: 'Summary',\n GroupRooms: 'GroupRooms'\n };\n\n _this._state = {};\n _this._state[_this.STATE_KEY.Summary] = {};\n _this._state[_this.STATE_KEY.GroupRooms] = {};\n _this._state[_this.STATE_KEY.GroupMembers] = {};\n _this._state[_this.STATE_KEY.GroupInvitedMembers] = {};\n\n _this._ready = {};\n _this._ready[_this.STATE_KEY.Summary] = {};\n _this._ready[_this.STATE_KEY.GroupRooms] = {};\n _this._ready[_this.STATE_KEY.GroupMembers] = {};\n _this._ready[_this.STATE_KEY.GroupInvitedMembers] = {};\n\n _this._fetchResourcePromise = (_this$_fetchResourceP = {}, (0, _defineProperty3.default)(_this$_fetchResourceP, _this.STATE_KEY.Summary, {}), (0, _defineProperty3.default)(_this$_fetchResourceP, _this.STATE_KEY.GroupRooms, {}), (0, _defineProperty3.default)(_this$_fetchResourceP, _this.STATE_KEY.GroupMembers, {}), (0, _defineProperty3.default)(_this$_fetchResourceP, _this.STATE_KEY.GroupInvitedMembers, {}), _this$_fetchResourceP);\n\n _this._resourceFetcher = (_this$_resourceFetche = {}, (0, _defineProperty3.default)(_this$_resourceFetche, _this.STATE_KEY.Summary, function (groupId) {\n return limitConcurrency(function () {\n return _MatrixClientPeg2.default.get().getGroupSummary(groupId);\n });\n }), (0, _defineProperty3.default)(_this$_resourceFetche, _this.STATE_KEY.GroupRooms, function (groupId) {\n return limitConcurrency(function () {\n return _MatrixClientPeg2.default.get().getGroupRooms(groupId).then(parseRoomsResponse);\n });\n }), (0, _defineProperty3.default)(_this$_resourceFetche, _this.STATE_KEY.GroupMembers, function (groupId) {\n return limitConcurrency(function () {\n return _MatrixClientPeg2.default.get().getGroupUsers(groupId).then(parseMembersResponse);\n });\n }), (0, _defineProperty3.default)(_this$_resourceFetche, _this.STATE_KEY.GroupInvitedMembers, function (groupId) {\n return limitConcurrency(function () {\n return _MatrixClientPeg2.default.get().getGroupInvitedUsers(groupId).then(parseMembersResponse);\n });\n }), _this$_resourceFetche);\n return _this;\n }\n\n (0, _createClass3.default)(GroupStore, [{\n key: '_fetchResource',\n value: function _fetchResource(stateKey, groupId) {\n var _this2 = this;\n\n // Ongoing request, ignore\n if (this._fetchResourcePromise[stateKey][groupId]) return;\n\n var clientPromise = this._resourceFetcher[stateKey](groupId);\n\n // Indicate ongoing request\n this._fetchResourcePromise[stateKey][groupId] = clientPromise;\n\n clientPromise.then(function (result) {\n _this2._state[stateKey][groupId] = result;\n _this2._ready[stateKey][groupId] = true;\n _this2._notifyListeners();\n }).catch(function (err) {\n // Invited users not visible to non-members\n if (stateKey === _this2.STATE_KEY.GroupInvitedMembers && err.httpStatus === 403) {\n return;\n }\n\n console.error('Failed to get resource ' + stateKey + ' for ' + groupId, err);\n _this2.emit('error', err, groupId, stateKey);\n }).finally(function () {\n // Indicate finished request, allow for future fetches\n delete _this2._fetchResourcePromise[stateKey][groupId];\n });\n\n return clientPromise;\n }\n }, {\n key: '_notifyListeners',\n value: function _notifyListeners() {\n this.emit('update');\n }\n\n /**\n * Register a listener to recieve updates from the store. This also\n * immediately triggers an update to send the current state of the\n * store (which could be the initial state).\n *\n * If a group ID is specified, this also causes a fetch of all data\n * of the specified group, which might cause 4 separate HTTP\n * requests, but only if said requests aren't already ongoing.\n *\n * @param {string?} groupId the ID of the group to fetch data for.\n * Optional.\n * @param {function} fn the function to call when the store updates.\n * @return {Object} tok a registration \"token\" with a single\n * property `unregister`, a function that can\n * be called to unregister the listener such\n * that it won't be called any more.\n */\n\n }, {\n key: 'registerListener',\n value: function registerListener(groupId, fn) {\n var _this3 = this;\n\n this.on('update', fn);\n // Call to set initial state (before fetching starts)\n this.emit('update');\n\n if (groupId) {\n this._fetchResource(this.STATE_KEY.Summary, groupId);\n this._fetchResource(this.STATE_KEY.GroupRooms, groupId);\n this._fetchResource(this.STATE_KEY.GroupMembers, groupId);\n this._fetchResource(this.STATE_KEY.GroupInvitedMembers, groupId);\n }\n\n // Similar to the Store of flux/utils, we return a \"token\" that\n // can be used to unregister the listener.\n return {\n unregister: function unregister() {\n _this3.unregisterListener(fn);\n }\n };\n }\n }, {\n key: 'unregisterListener',\n value: function unregisterListener(fn) {\n this.removeListener('update', fn);\n }\n }, {\n key: 'isStateReady',\n value: function isStateReady(groupId, id) {\n return this._ready[id][groupId];\n }\n }, {\n key: 'getGroupIdsForRoomId',\n value: function getGroupIdsForRoomId(roomId) {\n var _this4 = this;\n\n var groupIds = (0, _keys2.default)(this._state[this.STATE_KEY.GroupRooms]);\n return groupIds.filter(function (groupId) {\n var rooms = _this4._state[_this4.STATE_KEY.GroupRooms][groupId] || [];\n return rooms.some(function (room) {\n return room.roomId === roomId;\n });\n });\n }\n }, {\n key: 'getSummary',\n value: function getSummary(groupId) {\n return this._state[this.STATE_KEY.Summary][groupId] || {};\n }\n }, {\n key: 'getGroupRooms',\n value: function getGroupRooms(groupId) {\n return this._state[this.STATE_KEY.GroupRooms][groupId] || [];\n }\n }, {\n key: 'getGroupMembers',\n value: function getGroupMembers(groupId) {\n return this._state[this.STATE_KEY.GroupMembers][groupId] || [];\n }\n }, {\n key: 'getGroupInvitedMembers',\n value: function getGroupInvitedMembers(groupId) {\n return this._state[this.STATE_KEY.GroupInvitedMembers][groupId] || [];\n }\n }, {\n key: 'getGroupPublicity',\n value: function getGroupPublicity(groupId) {\n return (this._state[this.STATE_KEY.Summary][groupId] || {}).user ? (this._state[this.STATE_KEY.Summary][groupId] || {}).user.is_publicised : null;\n }\n }, {\n key: 'isUserPrivileged',\n value: function isUserPrivileged(groupId) {\n return (this._state[this.STATE_KEY.Summary][groupId] || {}).user ? (this._state[this.STATE_KEY.Summary][groupId] || {}).user.is_privileged : null;\n }\n }, {\n key: 'refreshGroupRooms',\n value: function refreshGroupRooms(groupId) {\n return this._fetchResource(this.STATE_KEY.GroupRooms, groupId);\n }\n }, {\n key: 'refreshGroupMembers',\n value: function refreshGroupMembers(groupId) {\n return this._fetchResource(this.STATE_KEY.GroupMembers, groupId);\n }\n }, {\n key: 'addRoomToGroup',\n value: function addRoomToGroup(groupId, roomId, isPublic) {\n return _MatrixClientPeg2.default.get().addRoomToGroup(groupId, roomId, isPublic).then(this._fetchResource.bind(this, this.STATE_KEY.GroupRooms, groupId));\n }\n }, {\n key: 'updateGroupRoomVisibility',\n value: function updateGroupRoomVisibility(groupId, roomId, isPublic) {\n return _MatrixClientPeg2.default.get().updateGroupRoomVisibility(groupId, roomId, isPublic).then(this._fetchResource.bind(this, this.STATE_KEY.GroupRooms, groupId));\n }\n }, {\n key: 'removeRoomFromGroup',\n value: function removeRoomFromGroup(groupId, roomId) {\n return _MatrixClientPeg2.default.get().removeRoomFromGroup(groupId, roomId)\n // Room might be in the summary, refresh just in case\n .then(this._fetchResource.bind(this, this.STATE_KEY.Summary, groupId)).then(this._fetchResource.bind(this, this.STATE_KEY.GroupRooms, groupId));\n }\n }, {\n key: 'inviteUserToGroup',\n value: function inviteUserToGroup(groupId, userId) {\n return _MatrixClientPeg2.default.get().inviteUserToGroup(groupId, userId).then(this._fetchResource.bind(this, this.STATE_KEY.GroupInvitedMembers, groupId));\n }\n }, {\n key: 'acceptGroupInvite',\n value: function acceptGroupInvite(groupId) {\n return _MatrixClientPeg2.default.get().acceptGroupInvite(groupId)\n // The user should now be able to access (personal) group settings\n .then(this._fetchResource.bind(this, this.STATE_KEY.Summary, groupId))\n // The user might be able to see more rooms now\n .then(this._fetchResource.bind(this, this.STATE_KEY.GroupRooms, groupId))\n // The user should now appear as a member\n .then(this._fetchResource.bind(this, this.STATE_KEY.GroupMembers, groupId))\n // The user should now not appear as an invited member\n .then(this._fetchResource.bind(this, this.STATE_KEY.GroupInvitedMembers, groupId));\n }\n }, {\n key: 'joinGroup',\n value: function joinGroup(groupId) {\n return _MatrixClientPeg2.default.get().joinGroup(groupId)\n // The user should now be able to access (personal) group settings\n .then(this._fetchResource.bind(this, this.STATE_KEY.Summary, groupId))\n // The user might be able to see more rooms now\n .then(this._fetchResource.bind(this, this.STATE_KEY.GroupRooms, groupId))\n // The user should now appear as a member\n .then(this._fetchResource.bind(this, this.STATE_KEY.GroupMembers, groupId))\n // The user should now not appear as an invited member\n .then(this._fetchResource.bind(this, this.STATE_KEY.GroupInvitedMembers, groupId));\n }\n }, {\n key: 'leaveGroup',\n value: function leaveGroup(groupId) {\n return _MatrixClientPeg2.default.get().leaveGroup(groupId)\n // The user should now not be able to access group settings\n .then(this._fetchResource.bind(this, this.STATE_KEY.Summary, groupId))\n // The user might only be able to see a subset of rooms now\n .then(this._fetchResource.bind(this, this.STATE_KEY.GroupRooms, groupId))\n // The user should now not appear as a member\n .then(this._fetchResource.bind(this, this.STATE_KEY.GroupMembers, groupId));\n }\n }, {\n key: 'addRoomToGroupSummary',\n value: function addRoomToGroupSummary(groupId, roomId, categoryId) {\n return _MatrixClientPeg2.default.get().addRoomToGroupSummary(groupId, roomId, categoryId).then(this._fetchResource.bind(this, this.STATE_KEY.Summary, groupId));\n }\n }, {\n key: 'addUserToGroupSummary',\n value: function addUserToGroupSummary(groupId, userId, roleId) {\n return _MatrixClientPeg2.default.get().addUserToGroupSummary(groupId, userId, roleId).then(this._fetchResource.bind(this, this.STATE_KEY.Summary, groupId));\n }\n }, {\n key: 'removeRoomFromGroupSummary',\n value: function removeRoomFromGroupSummary(groupId, roomId) {\n return _MatrixClientPeg2.default.get().removeRoomFromGroupSummary(groupId, roomId).then(this._fetchResource.bind(this, this.STATE_KEY.Summary, groupId));\n }\n }, {\n key: 'removeUserFromGroupSummary',\n value: function removeUserFromGroupSummary(groupId, userId) {\n return _MatrixClientPeg2.default.get().removeUserFromGroupSummary(groupId, userId).then(this._fetchResource.bind(this, this.STATE_KEY.Summary, groupId));\n }\n }, {\n key: 'setGroupPublicity',\n value: function setGroupPublicity(groupId, isPublished) {\n return _MatrixClientPeg2.default.get().setGroupPublicity(groupId, isPublished).then(function () {\n _FlairStore2.default.invalidatePublicisedGroups(_MatrixClientPeg2.default.get().credentials.userId);\n }).then(this._fetchResource.bind(this, this.STATE_KEY.Summary, groupId));\n }\n }]);\n return GroupStore;\n}(_events2.default);\n\nvar singletonGroupStore = null;\nif (!singletonGroupStore) {\n singletonGroupStore = new GroupStore();\n}\nmodule.exports = singletonGroupStore;\n//# sourceMappingURL=GroupStore.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.closest = exports.distance = exports.patch = exports.absolute = exports.negate = exports.isEqual = exports.subtract = exports.add = undefined;\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar add = exports.add = function add(point1, point2) {\n return {\n x: point1.x + point2.x,\n y: point1.y + point2.y\n };\n};\n\nvar subtract = exports.subtract = function subtract(point1, point2) {\n return {\n x: point1.x - point2.x,\n y: point1.y - point2.y\n };\n};\n\nvar isEqual = exports.isEqual = function isEqual(point1, point2) {\n return point1.x === point2.x && point1.y === point2.y;\n};\n\nvar negate = exports.negate = function negate(point) {\n return {\n x: point.x !== 0 ? -point.x : 0,\n y: point.y !== 0 ? -point.y : 0\n };\n};\n\nvar absolute = exports.absolute = function absolute(point) {\n return {\n x: Math.abs(point.x),\n y: Math.abs(point.y)\n };\n};\n\nvar patch = exports.patch = function patch(line, value) {\n var _ref;\n\n var otherValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n return _ref = {}, (0, _defineProperty3.default)(_ref, line, value), (0, _defineProperty3.default)(_ref, line === 'x' ? 'y' : 'x', otherValue), _ref;\n};\n\nvar distance = exports.distance = function distance(point1, point2) {\n return Math.sqrt(Math.pow(point2.x - point1.x, 2) + Math.pow(point2.y - point1.y, 2));\n};\n\nvar closest = exports.closest = function closest(target, points) {\n return Math.min.apply(Math, (0, _toConsumableArray3.default)(points.map(function (point) {\n return distance(target, point);\n })));\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _lodash = require('lodash');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Invoke validation from user input (when typing, etc.) at most once every N ms.\nvar VALIDATION_THROTTLE_MS = 200; /*\n Copyright 2019 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar Field = function (_React$PureComponent) {\n (0, _inherits3.default)(Field, _React$PureComponent);\n\n function Field() {\n (0, _classCallCheck3.default)(this, Field);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (Field.__proto__ || (0, _getPrototypeOf2.default)(Field)).call(this));\n\n _this.onFocus = function (ev) {\n _this.validate({\n focused: true\n });\n // Parent component may have supplied its own `onFocus` as well\n if (_this.props.onFocus) {\n _this.props.onFocus(ev);\n }\n };\n\n _this.onChange = function (ev) {\n _this.validateOnChange();\n // Parent component may have supplied its own `onChange` as well\n if (_this.props.onChange) {\n _this.props.onChange(ev);\n }\n };\n\n _this.onBlur = function (ev) {\n _this.validate({\n focused: false\n });\n // Parent component may have supplied its own `onBlur` as well\n if (_this.props.onBlur) {\n _this.props.onBlur(ev);\n }\n };\n\n _this.validateOnChange = (0, _lodash.debounce)(function () {\n _this.validate({\n focused: true\n });\n }, VALIDATION_THROTTLE_MS);\n\n _this.state = {\n valid: undefined,\n feedback: undefined\n };\n return _this;\n }\n\n (0, _createClass3.default)(Field, [{\n key: 'focus',\n value: function focus() {\n this.input.focus();\n }\n }, {\n key: 'validate',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(_ref2) {\n var focused = _ref2.focused,\n _ref2$allowEmpty = _ref2.allowEmpty,\n allowEmpty = _ref2$allowEmpty === undefined ? true : _ref2$allowEmpty;\n\n var value, _ref3, valid, feedback;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (this.props.onValidate) {\n _context.next = 2;\n break;\n }\n\n return _context.abrupt('return');\n\n case 2:\n value = this.input ? this.input.value : null;\n _context.next = 5;\n return (0, _bluebird.resolve)(this.props.onValidate({\n value: value,\n focused: focused,\n allowEmpty: allowEmpty\n }));\n\n case 5:\n _ref3 = _context.sent;\n valid = _ref3.valid;\n feedback = _ref3.feedback;\n\n\n if (feedback) {\n this.setState({\n valid: valid,\n feedback: feedback,\n feedbackVisible: true\n });\n } else {\n // When we receive null `feedback`, we want to hide the tooltip.\n // We leave the previous `feedback` content in state without updating it,\n // so that we can hide the tooltip containing the most recent feedback\n // via CSS animation.\n this.setState({\n valid: valid,\n feedbackVisible: false\n });\n }\n\n case 9:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function validate(_x) {\n return _ref.apply(this, arguments);\n }\n\n return validate;\n }()\n\n /*\n * This was changed from throttle to debounce: this is more traditional for\n * form validation since it means that the validation doesn't happen at all\n * until the user stops typing for a bit (debounce defaults to not running on\n * the leading edge). If we're doing an HTTP hit on each validation, we have more\n * incentive to prevent validating input that's very unlikely to be valid.\n * We may find that we actually want different behaviour for registration\n * fields, in which case we can add some options to control it.\n */\n\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n element = _props.element,\n prefix = _props.prefix,\n postfix = _props.postfix,\n className = _props.className,\n onValidate = _props.onValidate,\n children = _props.children,\n tooltipContent = _props.tooltipContent,\n flagInvalid = _props.flagInvalid,\n tooltipClassName = _props.tooltipClassName,\n inputProps = (0, _objectWithoutProperties3.default)(_props, ['element', 'prefix', 'postfix', 'className', 'onValidate', 'children', 'tooltipContent', 'flagInvalid', 'tooltipClassName']);\n\n\n var inputElement = element || \"input\";\n\n // Set some defaults for the element\n inputProps.type = inputProps.type || \"text\";\n inputProps.ref = function (input) {\n return _this2.input = input;\n };\n inputProps.placeholder = inputProps.placeholder || inputProps.label;\n\n inputProps.onFocus = this.onFocus;\n inputProps.onChange = this.onChange;\n inputProps.onBlur = this.onBlur;\n\n var fieldInput = _react2.default.createElement(inputElement, inputProps, children);\n\n var prefixContainer = null;\n if (prefix) {\n prefixContainer = _react2.default.createElement(\n 'span',\n { className: 'mx_Field_prefix' },\n prefix\n );\n }\n var postfixContainer = null;\n if (postfix) {\n postfixContainer = _react2.default.createElement(\n 'span',\n { className: 'mx_Field_postfix' },\n postfix\n );\n }\n\n var hasValidationFlag = flagInvalid !== null && flagInvalid !== undefined;\n var fieldClasses = (0, _classnames2.default)(\"mx_Field\", 'mx_Field_' + inputElement, className, {\n // If we have a prefix element, leave the label always at the top left and\n // don't animate it, as it looks a bit clunky and would add complexity to do\n // properly.\n mx_Field_labelAlwaysTopLeft: prefix,\n mx_Field_valid: onValidate && this.state.valid === true,\n mx_Field_invalid: hasValidationFlag ? flagInvalid : onValidate && this.state.valid === false\n });\n\n // Handle displaying feedback on validity\n var Tooltip = _index2.default.getComponent(\"elements.Tooltip\");\n var fieldTooltip = void 0;\n if (tooltipContent || this.state.feedback) {\n var addlClassName = tooltipClassName ? tooltipClassName : '';\n fieldTooltip = _react2.default.createElement(Tooltip, {\n tooltipClassName: 'mx_Field_tooltip ' + addlClassName,\n visible: this.state.feedbackVisible,\n label: tooltipContent || this.state.feedback\n });\n }\n\n return _react2.default.createElement(\n 'div',\n { className: fieldClasses },\n prefixContainer,\n fieldInput,\n _react2.default.createElement(\n 'label',\n { htmlFor: this.props.id },\n this.props.label\n ),\n postfixContainer,\n fieldTooltip\n );\n }\n }]);\n return Field;\n}(_react2.default.PureComponent);\n\nField.propTypes = {\n // The field's ID, which binds the input and label together.\n id: _propTypes2.default.string.isRequired,\n // The element to create. Defaults to \"input\".\n // To define options for a select, use \n element: _propTypes2.default.oneOf([\"input\", \"select\", \"textarea\"]),\n // The field's type (when used as an ). Defaults to \"text\".\n type: _propTypes2.default.string,\n // The field's label string.\n label: _propTypes2.default.string,\n // The field's placeholder string. Defaults to the label.\n placeholder: _propTypes2.default.string,\n // The field's value.\n // This is a controlled component, so the value is required.\n value: _propTypes2.default.string.isRequired,\n // Optional component to include inside the field before the input.\n prefix: _propTypes2.default.node,\n // Optional component to include inside the field after the input.\n postfix: _propTypes2.default.node,\n // The callback called whenever the contents of the field\n // changes. Returns an object with `valid` boolean field\n // and a `feedback` react component field to provide feedback\n // to the user.\n onValidate: _propTypes2.default.func,\n // If specified, overrides the value returned by onValidate.\n flagInvalid: _propTypes2.default.bool,\n // If specified, contents will appear as a tooltip on the element and\n // validation feedback tooltips will be suppressed.\n tooltipContent: _propTypes2.default.node,\n // If specified alongside tooltipContent, the class name to apply to the\n // tooltip itself.\n tooltipClassName: _propTypes2.default.string,\n // If specified, an additional class name to apply to the field container\n className: _propTypes2.default.string\n // All other props pass through to the .\n};\nexports.default = Field;\nmodule.exports = exports['default'];\n//# sourceMappingURL=Field.js.map","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n var S = String(defined(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\nmodule.exports = function (NAME, exec) {\n var O = {};\n O[NAME] = exec(createHTML);\n $export($export.P + $export.F * fails(function () {\n var test = ''[NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n }), 'String', O);\n};\n","module.exports = true;\n","module.exports = { \"default\": require(\"core-js/library/fn/set\"), __esModule: true };","\n\nvar simpleIsEqual = function simpleIsEqual(a, b) {\n return a === b;\n};\n\nexport default function (resultFn) {\n var isEqual = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : simpleIsEqual;\n\n var lastThis = void 0;\n var lastArgs = [];\n var lastResult = void 0;\n var calledOnce = false;\n\n var isNewArgEqualToLast = function isNewArgEqualToLast(newArg, index) {\n return isEqual(newArg, lastArgs[index]);\n };\n\n var result = function result() {\n for (var _len = arguments.length, newArgs = Array(_len), _key = 0; _key < _len; _key++) {\n newArgs[_key] = arguments[_key];\n }\n\n if (calledOnce && lastThis === this && newArgs.length === lastArgs.length && newArgs.every(isNewArgEqualToLast)) {\n return lastResult;\n }\n\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n lastResult = resultFn.apply(this, newArgs);\n return lastResult;\n };\n\n return result;\n}","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _entries = require('babel-runtime/core-js/object/entries');\n\nvar _entries2 = _interopRequireDefault(_entries);\n\nvar _values = require('babel-runtime/core-js/object/values');\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _SdkConfig = require('../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _dispatcher = require('../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _url = require('url');\n\nvar url = _interopRequireWildcard(_url);\n\nvar _WidgetEchoStore = require('../stores/WidgetEchoStore');\n\nvar _WidgetEchoStore2 = _interopRequireDefault(_WidgetEchoStore);\n\nvar _SettingsStore = require('../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _ActiveWidgetStore = require('../stores/ActiveWidgetStore');\n\nvar _ActiveWidgetStore2 = _interopRequireDefault(_ActiveWidgetStore);\n\nvar _IntegrationManagers = require('../integrations/IntegrationManagers');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// How long we wait for the state event echo to come back from the server\n// before waitFor[Room/User]Widget rejects its promise\nvar WIDGET_WAIT_TIME = 20000; /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n Copyright 2019 Travis Ralston\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/**\n * Encodes a URI according to a set of template variables. Variables will be\n * passed through encodeURIComponent.\n * @param {string} pathTemplate The path with template variables e.g. '/foo/$bar'.\n * @param {Object} variables The key/value pairs to replace the template\n * variables with. E.g. { '$bar': 'baz' }.\n * @return {string} The result of replacing all template variables e.g. '/foo/baz'.\n */\nfunction encodeUri(pathTemplate, variables) {\n for (var key in variables) {\n if (!variables.hasOwnProperty(key)) {\n continue;\n }\n pathTemplate = pathTemplate.replace(key, encodeURIComponent(variables[key]));\n }\n return pathTemplate;\n}\n\nvar WidgetUtils = function () {\n function WidgetUtils() {\n (0, _classCallCheck3.default)(this, WidgetUtils);\n }\n\n (0, _createClass3.default)(WidgetUtils, null, [{\n key: 'canUserModifyWidgets',\n\n /* Returns true if user is able to send state events to modify widgets in this room\n * (Does not apply to non-room-based / user widgets)\n * @param roomId -- The ID of the room to check\n * @return Boolean -- true if the user can modify widgets in this room\n * @throws Error -- specifies the error reason\n */\n value: function canUserModifyWidgets(roomId) {\n if (!roomId) {\n console.warn('No room ID specified');\n return false;\n }\n\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n console.warn('User must be be logged in');\n return false;\n }\n\n var room = client.getRoom(roomId);\n if (!room) {\n console.warn('Room ID ' + roomId + ' is not recognised');\n return false;\n }\n\n var me = client.credentials.userId;\n if (!me) {\n console.warn('Failed to get user ID');\n return false;\n }\n\n if (room.getMyMembership() !== \"join\") {\n console.warn('User ' + me + ' is not in room ' + roomId);\n return false;\n }\n\n return room.currentState.maySendStateEvent('im.vector.modular.widgets', me);\n }\n\n /**\n * Returns true if specified url is a scalar URL, typically https://scalar.vector.im/api\n * @param {[type]} testUrlString URL to check\n * @return {Boolean} True if specified URL is a scalar URL\n */\n\n }, {\n key: 'isScalarUrl',\n value: function isScalarUrl(testUrlString) {\n if (!testUrlString) {\n console.error('Scalar URL check failed. No URL specified');\n return false;\n }\n\n var testUrl = url.parse(testUrlString);\n var scalarUrls = _SdkConfig2.default.get().integrations_widgets_urls;\n if (!scalarUrls || scalarUrls.length === 0) {\n var defaultManager = _IntegrationManagers.IntegrationManagers.sharedInstance().getPrimaryManager();\n if (defaultManager) {\n scalarUrls = [defaultManager.apiUrl];\n } else {\n scalarUrls = [];\n }\n }\n\n for (var i = 0; i < scalarUrls.length; i++) {\n var scalarUrl = url.parse(scalarUrls[i]);\n if (testUrl && scalarUrl) {\n if (testUrl.protocol === scalarUrl.protocol && testUrl.host === scalarUrl.host && testUrl.pathname.startsWith(scalarUrl.pathname)) {\n return true;\n }\n }\n }\n return false;\n }\n\n /**\n * Returns a promise that resolves when a widget with the given\n * ID has been added as a user widget (ie. the accountData event\n * arrives) or rejects after a timeout\n *\n * @param {string} widgetId The ID of the widget to wait for\n * @param {boolean} add True to wait for the widget to be added,\n * false to wait for it to be deleted.\n * @returns {Promise} that resolves when the widget is in the\n * requested state according to the `add` param\n */\n\n }, {\n key: 'waitForUserWidget',\n value: function waitForUserWidget(widgetId, add) {\n return new _promise2.default(function (resolve, reject) {\n // Tests an account data event, returning true if it's in the state\n // we're waiting for it to be in\n function eventInIntendedState(ev) {\n if (!ev || !ev.getContent()) return false;\n if (add) {\n return ev.getContent()[widgetId] !== undefined;\n } else {\n return ev.getContent()[widgetId] === undefined;\n }\n }\n\n var startingAccountDataEvent = _MatrixClientPeg2.default.get().getAccountData('m.widgets');\n if (eventInIntendedState(startingAccountDataEvent)) {\n resolve();\n return;\n }\n\n function onAccountData(ev) {\n var currentAccountDataEvent = _MatrixClientPeg2.default.get().getAccountData('m.widgets');\n if (eventInIntendedState(currentAccountDataEvent)) {\n _MatrixClientPeg2.default.get().removeListener('accountData', onAccountData);\n clearTimeout(timerId);\n resolve();\n }\n }\n var timerId = setTimeout(function () {\n _MatrixClientPeg2.default.get().removeListener('accountData', onAccountData);\n reject(new Error(\"Timed out waiting for widget ID \" + widgetId + \" to appear\"));\n }, WIDGET_WAIT_TIME);\n _MatrixClientPeg2.default.get().on('accountData', onAccountData);\n });\n }\n\n /**\n * Returns a promise that resolves when a widget with the given\n * ID has been added as a room widget in the given room (ie. the\n * room state event arrives) or rejects after a timeout\n *\n * @param {string} widgetId The ID of the widget to wait for\n * @param {string} roomId The ID of the room to wait for the widget in\n * @param {boolean} add True to wait for the widget to be added,\n * false to wait for it to be deleted.\n * @returns {Promise} that resolves when the widget is in the\n * requested state according to the `add` param\n */\n\n }, {\n key: 'waitForRoomWidget',\n value: function waitForRoomWidget(widgetId, roomId, add) {\n return new _promise2.default(function (resolve, reject) {\n // Tests a list of state events, returning true if it's in the state\n // we're waiting for it to be in\n function eventsInIntendedState(evList) {\n var widgetPresent = evList.some(function (ev) {\n return ev.getContent() && ev.getContent()['id'] === widgetId;\n });\n if (add) {\n return widgetPresent;\n } else {\n return !widgetPresent;\n }\n }\n\n var room = _MatrixClientPeg2.default.get().getRoom(roomId);\n var startingWidgetEvents = room.currentState.getStateEvents('im.vector.modular.widgets');\n if (eventsInIntendedState(startingWidgetEvents)) {\n resolve();\n return;\n }\n\n function onRoomStateEvents(ev) {\n if (ev.getRoomId() !== roomId) return;\n\n var currentWidgetEvents = room.currentState.getStateEvents('im.vector.modular.widgets');\n\n if (eventsInIntendedState(currentWidgetEvents)) {\n _MatrixClientPeg2.default.get().removeListener('RoomState.events', onRoomStateEvents);\n clearTimeout(timerId);\n resolve();\n }\n }\n var timerId = setTimeout(function () {\n _MatrixClientPeg2.default.get().removeListener('RoomState.events', onRoomStateEvents);\n reject(new Error(\"Timed out waiting for widget ID \" + widgetId + \" to appear\"));\n }, WIDGET_WAIT_TIME);\n _MatrixClientPeg2.default.get().on('RoomState.events', onRoomStateEvents);\n });\n }\n }, {\n key: 'setUserWidget',\n value: function setUserWidget(widgetId, widgetType, widgetUrl, widgetName, widgetData) {\n var content = {\n type: widgetType,\n url: widgetUrl,\n name: widgetName,\n data: widgetData\n };\n\n var client = _MatrixClientPeg2.default.get();\n // Get the current widgets and clone them before we modify them, otherwise\n // we'll modify the content of the old event.\n var userWidgets = JSON.parse((0, _stringify2.default)(WidgetUtils.getUserWidgets()));\n\n // Delete existing widget with ID\n try {\n delete userWidgets[widgetId];\n } catch (e) {\n console.error('$widgetId is non-configurable');\n }\n\n var addingWidget = Boolean(widgetUrl);\n\n // Add new widget / update\n if (addingWidget) {\n userWidgets[widgetId] = {\n content: content,\n sender: client.getUserId(),\n state_key: widgetId,\n type: 'm.widget',\n id: widgetId\n };\n }\n\n // This starts listening for when the echo comes back from the server\n // since the widget won't appear added until this happens. If we don't\n // wait for this, the action will complete but if the user is fast enough,\n // the widget still won't actually be there.\n return client.setAccountData('m.widgets', userWidgets).then(function () {\n return WidgetUtils.waitForUserWidget(widgetId, addingWidget);\n }).then(function () {\n _dispatcher2.default.dispatch({ action: \"user_widget_updated\" });\n });\n }\n }, {\n key: 'setRoomWidget',\n value: function setRoomWidget(roomId, widgetId, widgetType, widgetUrl, widgetName, widgetData) {\n var content = void 0;\n\n var addingWidget = Boolean(widgetUrl);\n\n if (addingWidget) {\n content = {\n type: widgetType,\n url: widgetUrl,\n name: widgetName,\n data: widgetData\n };\n } else {\n content = {};\n }\n\n _WidgetEchoStore2.default.setRoomWidgetEcho(roomId, widgetId, content);\n\n var client = _MatrixClientPeg2.default.get();\n // TODO - Room widgets need to be moved to 'm.widget' state events\n // https://docs.google.com/document/d/1uPF7XWY_dXTKVKV7jZQ2KmsI19wn9-kFRgQ1tFQP7wQ/edit?usp=sharing\n return client.sendStateEvent(roomId, \"im.vector.modular.widgets\", content, widgetId).then(function () {\n return WidgetUtils.waitForRoomWidget(widgetId, roomId, addingWidget);\n }).finally(function () {\n _WidgetEchoStore2.default.removeRoomWidgetEcho(roomId, widgetId);\n });\n }\n\n /**\n * Get room specific widgets\n * @param {object} room The room to get widgets force\n * @return {[object]} Array containing current / active room widgets\n */\n\n }, {\n key: 'getRoomWidgets',\n value: function getRoomWidgets(room) {\n var appsStateEvents = room.currentState.getStateEvents('im.vector.modular.widgets');\n if (!appsStateEvents) {\n return [];\n }\n\n return appsStateEvents.filter(function (ev) {\n return ev.getContent().type && ev.getContent().url;\n });\n }\n\n /**\n * Get user specific widgets (not linked to a specific room)\n * @return {object} Event content object containing current / active user widgets\n */\n\n }, {\n key: 'getUserWidgets',\n value: function getUserWidgets() {\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n throw new Error('User not logged in');\n }\n var userWidgets = client.getAccountData('m.widgets');\n if (userWidgets && userWidgets.getContent()) {\n return userWidgets.getContent();\n }\n return {};\n }\n\n /**\n * Get user specific widgets (not linked to a specific room) as an array\n * @return {[object]} Array containing current / active user widgets\n */\n\n }, {\n key: 'getUserWidgetsArray',\n value: function getUserWidgetsArray() {\n return (0, _values2.default)(WidgetUtils.getUserWidgets());\n }\n\n /**\n * Get active stickerpicker widgets (stickerpickers are user widgets by nature)\n * @return {[object]} Array containing current / active stickerpicker widgets\n */\n\n }, {\n key: 'getStickerpickerWidgets',\n value: function getStickerpickerWidgets() {\n var widgets = WidgetUtils.getUserWidgetsArray();\n return widgets.filter(function (widget) {\n return widget.content && widget.content.type === \"m.stickerpicker\";\n });\n }\n\n /**\n * Get all integration manager widgets for this user.\n * @returns {Object[]} An array of integration manager user widgets.\n */\n\n }, {\n key: 'getIntegrationManagerWidgets',\n value: function getIntegrationManagerWidgets() {\n var widgets = WidgetUtils.getUserWidgetsArray();\n return widgets.filter(function (w) {\n return w.content && w.content.type === \"m.integration_manager\";\n });\n }\n }, {\n key: 'removeIntegrationManagerWidgets',\n value: function removeIntegrationManagerWidgets() {\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n throw new Error('User not logged in');\n }\n var widgets = client.getAccountData('m.widgets');\n if (!widgets) return;\n var userWidgets = widgets.getContent() || {};\n (0, _entries2.default)(userWidgets).forEach(function (_ref) {\n var _ref2 = (0, _slicedToArray3.default)(_ref, 2),\n key = _ref2[0],\n widget = _ref2[1];\n\n if (widget.content && widget.content.type === \"m.integration_manager\") {\n delete userWidgets[key];\n }\n });\n return client.setAccountData('m.widgets', userWidgets);\n }\n }, {\n key: 'addIntegrationManagerWidget',\n value: function addIntegrationManagerWidget(name, uiUrl, apiUrl) {\n return WidgetUtils.setUserWidget(\"integration_manager_\" + new Date().getTime(), \"m.integration_manager\", uiUrl, \"Integration Manager: \" + name, { \"api_url\": apiUrl });\n }\n\n /**\n * Remove all stickerpicker widgets (stickerpickers are user widgets by nature)\n * @return {Promise} Resolves on account data updated\n */\n\n }, {\n key: 'removeStickerpickerWidgets',\n value: function removeStickerpickerWidgets() {\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n throw new Error('User not logged in');\n }\n var widgets = client.getAccountData('m.widgets');\n if (!widgets) return;\n var userWidgets = widgets.getContent() || {};\n (0, _entries2.default)(userWidgets).forEach(function (_ref3) {\n var _ref4 = (0, _slicedToArray3.default)(_ref3, 2),\n key = _ref4[0],\n widget = _ref4[1];\n\n if (widget.content && widget.content.type === 'm.stickerpicker') {\n delete userWidgets[key];\n }\n });\n return client.setAccountData('m.widgets', userWidgets);\n }\n }, {\n key: 'makeAppConfig',\n value: function makeAppConfig(appId, app, sender, roomId) {\n var myUserId = _MatrixClientPeg2.default.get().credentials.userId;\n var user = _MatrixClientPeg2.default.get().getUser(myUserId);\n var params = {\n '$matrix_user_id': myUserId,\n '$matrix_room_id': roomId,\n '$matrix_display_name': user ? user.displayName : myUserId,\n '$matrix_avatar_url': user ? _MatrixClientPeg2.default.get().mxcUrlToHttp(user.avatarUrl) : '',\n\n // TODO: Namespace themes through some standard\n '$theme': _SettingsStore2.default.getValue(\"theme\")\n };\n\n app.id = appId;\n app.name = app.name || app.type;\n\n if (app.data) {\n (0, _keys2.default)(app.data).forEach(function (key) {\n params['$' + key] = app.data[key];\n });\n\n app.waitForIframeLoad = app.data.waitForIframeLoad === 'false' ? false : true;\n }\n\n app.url = encodeUri(app.url, params);\n app.creatorUserId = sender && sender.userId ? sender.userId : null;\n\n return app;\n }\n }, {\n key: 'getCapWhitelistForAppTypeInRoomId',\n value: function getCapWhitelistForAppTypeInRoomId(appType, roomId) {\n var enableScreenshots = _SettingsStore2.default.getValue(\"enableWidgetScreenshots\", roomId);\n\n var capWhitelist = enableScreenshots ? [\"m.capability.screenshot\"] : [];\n\n // Obviously anyone that can add a widget can claim it's a jitsi widget,\n // so this doesn't really offer much over the set of domains we load\n // widgets from at all, but it probably makes sense for sanity.\n if (appType == 'jitsi') capWhitelist.push(\"m.always_on_screen\");\n\n return capWhitelist;\n }\n }, {\n key: 'getWidgetSecurityKey',\n value: function getWidgetSecurityKey(widgetId, widgetUrl, isUserWidget) {\n var widgetLocation = _ActiveWidgetStore2.default.getRoomId(widgetId);\n\n if (isUserWidget) {\n var userWidget = WidgetUtils.getUserWidgetsArray().find(function (w) {\n return w.id === widgetId && w.content && w.content.url === widgetUrl;\n });\n\n if (!userWidget) {\n throw new Error(\"No matching user widget to form security key\");\n }\n\n widgetLocation = userWidget.sender;\n }\n\n if (!widgetLocation) {\n throw new Error(\"Failed to locate where the widget resides\");\n }\n\n return encodeURIComponent(widgetLocation + '::' + widgetUrl);\n }\n }]);\n return WidgetUtils;\n}();\n\nexports.default = WidgetUtils;\nmodule.exports = exports['default'];\n//# sourceMappingURL=WidgetUtils.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.IntegrationManagers = undefined;\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _bluebird = require('bluebird');\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _SdkConfig = require('../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _IntegrationManagerInstance = require('./IntegrationManagerInstance');\n\nvar _WidgetUtils = require('../utils/WidgetUtils');\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar HS_MANAGERS_REFRESH_INTERVAL = 8 * 60 * 60 * 1000; // 8 hours\n/*\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar KIND_PREFERENCE = [\n// Ordered: first is most preferred, last is least preferred.\n_IntegrationManagerInstance.KIND_ACCOUNT, _IntegrationManagerInstance.KIND_HOMESERVER, _IntegrationManagerInstance.KIND_CONFIG];\n\nvar IntegrationManagers = exports.IntegrationManagers = function () {\n (0, _createClass3.default)(IntegrationManagers, null, [{\n key: 'sharedInstance',\n value: function sharedInstance() {\n if (!IntegrationManagers._instance) {\n IntegrationManagers._instance = new IntegrationManagers();\n }\n return IntegrationManagers._instance;\n }\n }]);\n\n function IntegrationManagers() {\n (0, _classCallCheck3.default)(this, IntegrationManagers);\n this._managers = [];\n this._wellknownRefreshTimerId = null;\n\n this._compileManagers();\n }\n\n (0, _createClass3.default)(IntegrationManagers, [{\n key: 'startWatching',\n value: function startWatching() {\n var _this = this;\n\n this.stopWatching();\n this._client = _MatrixClientPeg2.default.get();\n this._client.on(\"accountData\", this._onAccountData.bind(this));\n this._compileManagers();\n setInterval(function () {\n return _this._setupHomeserverManagers();\n }, HS_MANAGERS_REFRESH_INTERVAL);\n }\n }, {\n key: 'stopWatching',\n value: function stopWatching() {\n if (!this._client) return;\n this._client.removeListener(\"accountData\", this._onAccountData.bind(this));\n if (this._wellknownRefreshTimerId !== null) clearInterval(this._wellknownRefreshTimerId);\n }\n }, {\n key: '_compileManagers',\n value: function _compileManagers() {\n this._managers = [];\n this._setupConfiguredManager();\n this._setupHomeserverManagers();\n this._setupAccountManagers();\n }\n }, {\n key: '_setupConfiguredManager',\n value: function _setupConfiguredManager() {\n var apiUrl = _SdkConfig2.default.get()['integrations_rest_url'];\n var uiUrl = _SdkConfig2.default.get()['integrations_ui_url'];\n\n if (apiUrl && uiUrl) {\n this._managers.push(new _IntegrationManagerInstance.IntegrationManagerInstance(_IntegrationManagerInstance.KIND_CONFIG, apiUrl, uiUrl));\n this._primaryManager = null; // reset primary\n }\n }\n }, {\n key: '_setupHomeserverManagers',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var homeserverDomain, discoveryResponse, managers, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, hsManager;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n\n console.log(\"Updating homeserver-configured integration managers...\");\n homeserverDomain = _MatrixClientPeg2.default.getHomeserverName();\n _context.next = 5;\n return (0, _bluebird.resolve)(_matrixJsSdk.AutoDiscovery.getRawClientConfig(homeserverDomain));\n\n case 5:\n discoveryResponse = _context.sent;\n\n if (!(discoveryResponse && discoveryResponse['m.integrations'])) {\n _context.next = 41;\n break;\n }\n\n managers = discoveryResponse['m.integrations']['managers'];\n\n if (!Array.isArray(managers)) managers = []; // make it an array so we can wipe the HS managers\n\n console.log('Homeserver has ' + managers.length + ' integration managers');\n\n // Clear out any known managers for the homeserver\n // TODO: Log out of the scalar clients\n this._managers = this._managers.filter(function (m) {\n return m.kind !== _IntegrationManagerInstance.KIND_HOMESERVER;\n });\n\n // Now add all the managers the homeserver wants us to have\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context.prev = 14;\n _iterator = (0, _getIterator3.default)(managers);\n\n case 16:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context.next = 24;\n break;\n }\n\n hsManager = _step.value;\n\n if (hsManager[\"api_url\"]) {\n _context.next = 20;\n break;\n }\n\n return _context.abrupt('continue', 21);\n\n case 20:\n this._managers.push(new _IntegrationManagerInstance.IntegrationManagerInstance(_IntegrationManagerInstance.KIND_HOMESERVER, hsManager[\"api_url\"], hsManager[\"ui_url\"]) // optional\n );\n\n case 21:\n _iteratorNormalCompletion = true;\n _context.next = 16;\n break;\n\n case 24:\n _context.next = 30;\n break;\n\n case 26:\n _context.prev = 26;\n _context.t0 = _context['catch'](14);\n _didIteratorError = true;\n _iteratorError = _context.t0;\n\n case 30:\n _context.prev = 30;\n _context.prev = 31;\n\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n\n case 33:\n _context.prev = 33;\n\n if (!_didIteratorError) {\n _context.next = 36;\n break;\n }\n\n throw _iteratorError;\n\n case 36:\n return _context.finish(33);\n\n case 37:\n return _context.finish(30);\n\n case 38:\n\n this._primaryManager = null; // reset primary\n _context.next = 42;\n break;\n\n case 41:\n console.log(\"Homeserver has no integration managers\");\n\n case 42:\n _context.next = 47;\n break;\n\n case 44:\n _context.prev = 44;\n _context.t1 = _context['catch'](0);\n\n console.error(_context.t1);\n // Errors during discovery are non-fatal\n\n case 47:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[0, 44], [14, 26, 30, 38], [31,, 33, 37]]);\n }));\n\n function _setupHomeserverManagers() {\n return _ref.apply(this, arguments);\n }\n\n return _setupHomeserverManagers;\n }()\n }, {\n key: '_setupAccountManagers',\n value: function _setupAccountManagers() {\n var _this2 = this;\n\n if (!this._client || !this._client.getUserId()) return; // not logged in\n var widgets = _WidgetUtils2.default.getIntegrationManagerWidgets();\n widgets.forEach(function (w) {\n var data = w.content['data'];\n if (!data) return;\n\n var uiUrl = w.content['url'];\n var apiUrl = data['api_url'];\n if (!apiUrl || !uiUrl) return;\n\n var manager = new _IntegrationManagerInstance.IntegrationManagerInstance(_IntegrationManagerInstance.KIND_ACCOUNT, apiUrl, uiUrl);\n manager.id = w['id'] || w['state_key'] || '';\n _this2._managers.push(manager);\n });\n this._primaryManager = null; // reset primary\n }\n }, {\n key: '_onAccountData',\n value: function _onAccountData(ev) {\n if (ev.getType() === 'm.widgets') {\n this._compileManagers();\n }\n }\n }, {\n key: 'hasManager',\n value: function hasManager() {\n return this._managers.length > 0;\n }\n }, {\n key: 'getOrderedManagers',\n value: function getOrderedManagers() {\n var _this3 = this;\n\n var ordered = [];\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n var _loop = function _loop() {\n var kind = _step2.value;\n\n var managers = _this3._managers.filter(function (m) {\n return m.kind === kind;\n });\n if (!managers || !managers.length) return 'continue';\n\n if (kind === _IntegrationManagerInstance.KIND_ACCOUNT) {\n // Order by state_keys (IDs)\n managers.sort(function (a, b) {\n return a.id.localeCompare(b.id);\n });\n }\n\n ordered.push.apply(ordered, (0, _toConsumableArray3.default)(managers));\n };\n\n for (var _iterator2 = (0, _getIterator3.default)(KIND_PREFERENCE), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _ret = _loop();\n\n if (_ret === 'continue') continue;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return ordered;\n }\n }, {\n key: 'getPrimaryManager',\n value: function getPrimaryManager() {\n if (this.hasManager()) {\n if (this._primaryManager) return this._primaryManager;\n\n this._primaryManager = this.getOrderedManagers()[0];\n return this._primaryManager;\n } else {\n return null;\n }\n }\n }, {\n key: 'openNoManagerDialog',\n value: function openNoManagerDialog() {\n // TODO: Is it Integrations (plural) or Integration (singular). Singular is easier spoken.\n var IntegrationsManager = _index2.default.getComponent(\"views.settings.IntegrationsManager\");\n _Modal2.default.createTrackedDialog(\"Integration Manager\", \"None\", IntegrationsManager, { configured: false }, 'mx_IntegrationsManager');\n }\n }, {\n key: 'openAll',\n value: function openAll() {\n var room = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var screen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var integrationId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n var TabbedIntegrationManagerDialog = _index2.default.getComponent(\"views.dialogs.TabbedIntegrationManagerDialog\");\n _Modal2.default.createTrackedDialog('Tabbed Integration Manager', '', TabbedIntegrationManagerDialog, { room: room, screen: screen, integrationId: integrationId }, 'mx_TabbedIntegrationManagerDialog');\n }\n }, {\n key: 'overwriteManagerOnAccount',\n value: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(manager) {\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return (0, _bluebird.resolve)(_WidgetUtils2.default.removeIntegrationManagerWidgets());\n\n case 2:\n _context2.next = 4;\n return (0, _bluebird.resolve)(_WidgetUtils2.default.addIntegrationManagerWidget(manager.name, manager.uiUrl, manager.apiUrl));\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function overwriteManagerOnAccount(_x4) {\n return _ref2.apply(this, arguments);\n }\n\n return overwriteManagerOnAccount;\n }()\n\n /**\n * Attempts to discover an integration manager using only its name. This will not validate that\n * the integration manager is functional - that is the caller's responsibility.\n * @param {string} domainName The domain name to look up.\n * @returns {Promise} Resolves to an integration manager instance,\n * or null if none was found.\n */\n\n }, {\n key: 'tryDiscoverManager',\n value: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(domainName) {\n var url, wkConfig, result, widget, manager;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n console.log(\"Looking up integration manager via .well-known\");\n if (domainName.startsWith(\"http:\") || domainName.startsWith(\"https:\")) {\n // trim off the scheme and just use the domain\n url = url.parse(domainName);\n\n domainName = url.host;\n }\n\n wkConfig = void 0;\n _context3.prev = 3;\n _context3.next = 6;\n return (0, _bluebird.resolve)(fetch('https://' + domainName + '/.well-known/matrix/integrations'));\n\n case 6:\n result = _context3.sent;\n _context3.next = 9;\n return (0, _bluebird.resolve)(result.json());\n\n case 9:\n wkConfig = _context3.sent;\n _context3.next = 17;\n break;\n\n case 12:\n _context3.prev = 12;\n _context3.t0 = _context3['catch'](3);\n\n console.error(_context3.t0);\n console.warn(\"Failed to locate integration manager\");\n return _context3.abrupt('return', null);\n\n case 17:\n if (!(!wkConfig || !wkConfig[\"m.integrations_widget\"])) {\n _context3.next = 20;\n break;\n }\n\n console.warn(\"Missing integrations widget on .well-known response\");\n return _context3.abrupt('return', null);\n\n case 20:\n widget = wkConfig[\"m.integrations_widget\"];\n\n if (!(!widget[\"url\"] || !widget[\"data\"] || !widget[\"data\"][\"api_url\"])) {\n _context3.next = 24;\n break;\n }\n\n console.warn(\"Malformed .well-known response for integrations widget\");\n return _context3.abrupt('return', null);\n\n case 24:\n\n // All discovered managers are per-user managers\n manager = new _IntegrationManagerInstance.IntegrationManagerInstance(_IntegrationManagerInstance.KIND_ACCOUNT, widget[\"data\"][\"api_url\"], widget[\"url\"]);\n\n console.log(\"Got an integration manager (untested)\");\n\n // We don't test the manager because the caller may need to do extra\n // checks or similar with it. For instance, they may need to deal with\n // terms of service or want to call something particular.\n\n return _context3.abrupt('return', manager);\n\n case 27:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this, [[3, 12]]);\n }));\n\n function tryDiscoverManager(_x5) {\n return _ref3.apply(this, arguments);\n }\n\n return tryDiscoverManager;\n }()\n }]);\n return IntegrationManagers;\n}();\n\n// For debugging\n\n\nglobal.mxIntegrationManagers = IntegrationManagers;\n//# sourceMappingURL=IntegrationManagers.js.map","var core = module.exports = { version: '2.6.9' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * This is an internal module. See {@link MatrixEvent} and {@link RoomEvent} for\n * the public classes.\n * @module models/event\n */\n\nvar _isFinite = require('babel-runtime/core-js/number/is-finite');\n\nvar _isFinite2 = _interopRequireDefault(_isFinite);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _events = require('events');\n\nvar _utils = require('../utils.js');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _logger = require('../../src/logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Enum for event statuses.\n * @readonly\n * @enum {string}\n */\nvar EventStatus = {\n /** The event was not sent and will no longer be retried. */\n NOT_SENT: \"not_sent\",\n\n /** The message is being encrypted */\n ENCRYPTING: \"encrypting\",\n\n /** The event is in the process of being sent. */\n SENDING: \"sending\",\n /** The event is in a queue waiting to be sent. */\n QUEUED: \"queued\",\n /** The event has been sent to the server, but we have not yet received the\n * echo. */\n SENT: \"sent\",\n\n /** The event was cancelled before it was successfully sent. */\n CANCELLED: \"cancelled\"\n};\nmodule.exports.EventStatus = EventStatus;\n\nvar interns = {};\nfunction intern(str) {\n if (!interns[str]) {\n interns[str] = str;\n }\n return interns[str];\n}\n\n/**\n * Construct a Matrix Event object\n * @constructor\n *\n * @param {Object} event The raw event to be wrapped in this DAO\n *\n * @prop {Object} event The raw (possibly encrypted) event. Do not access\n * this property directly unless you absolutely have to. Prefer the getter\n * methods defined on this class. Using the getter methods shields your app\n * from changes to event JSON between Matrix versions.\n *\n * @prop {RoomMember} sender The room member who sent this event, or null e.g.\n * this is a presence event. This is only guaranteed to be set for events that\n * appear in a timeline, ie. do not guarantee that it will be set on state\n * events.\n * @prop {RoomMember} target The room member who is the target of this event, e.g.\n * the invitee, the person being banned, etc.\n * @prop {EventStatus} status The sending status of the event.\n * @prop {Error} error most recent error associated with sending the event, if any\n * @prop {boolean} forwardLooking True if this event is 'forward looking', meaning\n * that getDirectionalContent() will return event.content and not event.prev_content.\n * Default: true. This property is experimental and may change.\n */\nmodule.exports.MatrixEvent = function MatrixEvent(event) {\n // intern the values of matrix events to force share strings and reduce the\n // amount of needless string duplication. This can save moderate amounts of\n // memory (~10% on a 350MB heap).\n // 'membership' at the event level (rather than the content level) is a legacy\n // field that Riot never otherwise looks at, but it will still take up a lot\n // of space if we don't intern it.\n [\"state_key\", \"type\", \"sender\", \"room_id\", \"membership\"].forEach(function (prop) {\n if (!event[prop]) {\n return;\n }\n event[prop] = intern(event[prop]);\n });\n\n [\"membership\", \"avatar_url\", \"displayname\"].forEach(function (prop) {\n if (!event.content || !event.content[prop]) {\n return;\n }\n event.content[prop] = intern(event.content[prop]);\n });\n\n [\"rel_type\"].forEach(function (prop) {\n if (!event.content || !event.content[\"m.relates_to\"] || !event.content[\"m.relates_to\"][prop]) {\n return;\n }\n event.content[\"m.relates_to\"][prop] = intern(event.content[\"m.relates_to\"][prop]);\n });\n\n this.event = event || {};\n\n this.sender = null;\n this.target = null;\n this.status = null;\n this.error = null;\n this.forwardLooking = true;\n this._pushActions = null;\n this._replacingEvent = null;\n this._localRedactionEvent = null;\n this._isCancelled = false;\n\n this._clearEvent = {};\n\n /* curve25519 key which we believe belongs to the sender of the event. See\n * getSenderKey()\n */\n this._senderCurve25519Key = null;\n\n /* ed25519 key which the sender of this event (for olm) or the creator of\n * the megolm session (for megolm) claims to own. See getClaimedEd25519Key()\n */\n this._claimedEd25519Key = null;\n\n /* curve25519 keys of devices involved in telling us about the\n * _senderCurve25519Key and _claimedEd25519Key.\n * See getForwardingCurve25519KeyChain().\n */\n this._forwardingCurve25519KeyChain = [];\n\n /* if we have a process decrypting this event, a Promise which resolves\n * when it is finished. Normally null.\n */\n this._decryptionPromise = null;\n\n /* flag to indicate if we should retry decrypting this event after the\n * first attempt (eg, we have received new data which means that a second\n * attempt may succeed)\n */\n this._retryDecryption = false;\n};\n_utils2.default.inherits(module.exports.MatrixEvent, _events.EventEmitter);\n\n_utils2.default.extend(module.exports.MatrixEvent.prototype, {\n\n /**\n * Get the event_id for this event.\n * @return {string} The event ID, e.g. $143350589368169JsLZx:localhost\n * \n */\n getId: function getId() {\n return this.event.event_id;\n },\n\n /**\n * Get the user_id for this event.\n * @return {string} The user ID, e.g. @alice:matrix.org\n */\n getSender: function getSender() {\n return this.event.sender || this.event.user_id; // v2 / v1\n },\n\n /**\n * Get the (decrypted, if necessary) type of event.\n *\n * @return {string} The event type, e.g. m.room.message\n */\n getType: function getType() {\n return this._clearEvent.type || this.event.type;\n },\n\n /**\n * Get the (possibly encrypted) type of the event that will be sent to the\n * homeserver.\n *\n * @return {string} The event type.\n */\n getWireType: function getWireType() {\n return this.event.type;\n },\n\n /**\n * Get the room_id for this event. This will return undefined\n * for m.presence events.\n * @return {string} The room ID, e.g. !cURbafjkfsMDVwdRDQ:matrix.org\n * \n */\n getRoomId: function getRoomId() {\n return this.event.room_id;\n },\n\n /**\n * Get the timestamp of this event.\n * @return {Number} The event timestamp, e.g. 1433502692297\n */\n getTs: function getTs() {\n return this.event.origin_server_ts;\n },\n\n /**\n * Get the timestamp of this event, as a Date object.\n * @return {Date} The event date, e.g. new Date(1433502692297)\n */\n getDate: function getDate() {\n return this.event.origin_server_ts ? new Date(this.event.origin_server_ts) : null;\n },\n\n /**\n * Get the (decrypted, if necessary) event content JSON, even if the event\n * was replaced by another event.\n *\n * @return {Object} The event content JSON, or an empty object.\n */\n getOriginalContent: function getOriginalContent() {\n if (this._localRedactionEvent) {\n return {};\n }\n return this._clearEvent.content || this.event.content || {};\n },\n\n /**\n * Get the (decrypted, if necessary) event content JSON,\n * or the content from the replacing event, if any.\n * See `makeReplaced`.\n *\n * @return {Object} The event content JSON, or an empty object.\n */\n getContent: function getContent() {\n if (this._localRedactionEvent) {\n return {};\n } else if (this._replacingEvent) {\n return this._replacingEvent.getContent()[\"m.new_content\"] || {};\n } else {\n return this.getOriginalContent();\n }\n },\n\n /**\n * Get the (possibly encrypted) event content JSON that will be sent to the\n * homeserver.\n *\n * @return {Object} The event content JSON, or an empty object.\n */\n getWireContent: function getWireContent() {\n return this.event.content || {};\n },\n\n /**\n * Get the previous event content JSON. This will only return something for\n * state events which exist in the timeline.\n * @return {Object} The previous event content JSON, or an empty object.\n */\n getPrevContent: function getPrevContent() {\n // v2 then v1 then default\n return this.getUnsigned().prev_content || this.event.prev_content || {};\n },\n\n /**\n * Get either 'content' or 'prev_content' depending on if this event is\n * 'forward-looking' or not. This can be modified via event.forwardLooking.\n * In practice, this means we get the chronologically earlier content value\n * for this event (this method should surely be called getEarlierContent)\n * This method is experimental and may change.\n * @return {Object} event.content if this event is forward-looking, else\n * event.prev_content.\n */\n getDirectionalContent: function getDirectionalContent() {\n return this.forwardLooking ? this.getContent() : this.getPrevContent();\n },\n\n /**\n * Get the age of this event. This represents the age of the event when the\n * event arrived at the device, and not the age of the event when this\n * function was called.\n * @return {Number} The age of this event in milliseconds.\n */\n getAge: function getAge() {\n return this.getUnsigned().age || this.event.age; // v2 / v1\n },\n\n /**\n * Get the event state_key if it has one. This will return undefined\n * for message events.\n * @return {string} The event's state_key.\n */\n getStateKey: function getStateKey() {\n return this.event.state_key;\n },\n\n /**\n * Check if this event is a state event.\n * @return {boolean} True if this is a state event.\n */\n isState: function isState() {\n return this.event.state_key !== undefined;\n },\n\n /**\n * Replace the content of this event with encrypted versions.\n * (This is used when sending an event; it should not be used by applications).\n *\n * @internal\n *\n * @param {string} crypto_type type of the encrypted event - typically\n * \"m.room.encrypted\"\n *\n * @param {object} crypto_content raw 'content' for the encrypted event.\n *\n * @param {string} senderCurve25519Key curve25519 key to record for the\n * sender of this event.\n * See {@link module:models/event.MatrixEvent#getSenderKey}.\n *\n * @param {string} claimedEd25519Key claimed ed25519 key to record for the\n * sender if this event.\n * See {@link module:models/event.MatrixEvent#getClaimedEd25519Key}\n */\n makeEncrypted: function makeEncrypted(crypto_type, crypto_content, senderCurve25519Key, claimedEd25519Key) {\n // keep the plain-text data for 'view source'\n this._clearEvent = {\n type: this.event.type,\n content: this.event.content\n };\n this.event.type = crypto_type;\n this.event.content = crypto_content;\n this._senderCurve25519Key = senderCurve25519Key;\n this._claimedEd25519Key = claimedEd25519Key;\n },\n\n /**\n * Check if this event is currently being decrypted.\n *\n * @return {boolean} True if this event is currently being decrypted, else false.\n */\n isBeingDecrypted: function isBeingDecrypted() {\n return this._decryptionPromise != null;\n },\n\n /**\n * Check if this event is an encrypted event which we failed to decrypt\n *\n * (This implies that we might retry decryption at some point in the future)\n *\n * @return {boolean} True if this event is an encrypted event which we\n * couldn't decrypt.\n */\n isDecryptionFailure: function isDecryptionFailure() {\n return this._clearEvent && this._clearEvent.content && this._clearEvent.content.msgtype === \"m.bad.encrypted\";\n },\n\n /**\n * Start the process of trying to decrypt this event.\n *\n * (This is used within the SDK: it isn't intended for use by applications)\n *\n * @internal\n *\n * @param {module:crypto} crypto crypto module\n *\n * @returns {Promise} promise which resolves (to undefined) when the decryption\n * attempt is completed.\n */\n attemptDecryption: function () {\n var _ref = (0, _bluebird.method)(function (crypto) {\n // start with a couple of sanity checks.\n if (!this.isEncrypted()) {\n throw new Error(\"Attempt to decrypt event which isn't encrypted\");\n }\n\n if (this._clearEvent && this._clearEvent.content && this._clearEvent.content.msgtype !== \"m.bad.encrypted\") {\n // we may want to just ignore this? let's start with rejecting it.\n throw new Error(\"Attempt to decrypt event which has already been encrypted\");\n }\n\n // if we already have a decryption attempt in progress, then it may\n // fail because it was using outdated info. We now have reason to\n // succeed where it failed before, but we don't want to have multiple\n // attempts going at the same time, so just set a flag that says we have\n // new info.\n //\n if (this._decryptionPromise) {\n _logger2.default.log('Event ' + this.getId() + ' already being decrypted; queueing a retry');\n this._retryDecryption = true;\n return this._decryptionPromise;\n }\n\n this._decryptionPromise = this._decryptionLoop(crypto);\n return this._decryptionPromise;\n });\n\n function attemptDecryption(_x) {\n return _ref.apply(this, arguments);\n }\n\n return attemptDecryption;\n }(),\n\n /**\n * Cancel any room key request for this event and resend another.\n *\n * @param {module:crypto} crypto crypto module\n * @param {string} userId the user who received this event\n *\n * @returns {Promise} a promise that resolves when the request is queued\n */\n cancelAndResendKeyRequest: function cancelAndResendKeyRequest(crypto, userId) {\n var wireContent = this.getWireContent();\n return crypto.requestRoomKey({\n algorithm: wireContent.algorithm,\n room_id: this.getRoomId(),\n session_id: wireContent.session_id,\n sender_key: wireContent.sender_key\n }, this.getKeyRequestRecipients(userId), true);\n },\n\n /**\n * Calculate the recipients for keyshare requests.\n *\n * @param {string} userId the user who received this event.\n *\n * @returns {Array} array of recipients\n */\n getKeyRequestRecipients: function getKeyRequestRecipients(userId) {\n // send the request to all of our own devices, and the\n // original sending device if it wasn't us.\n var wireContent = this.getWireContent();\n var recipients = [{\n userId: userId, deviceId: '*'\n }];\n var sender = this.getSender();\n if (sender !== userId) {\n recipients.push({\n userId: sender, deviceId: wireContent.device_id\n });\n }\n return recipients;\n },\n\n _decryptionLoop: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(crypto) {\n var res, err;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(_bluebird2.default.resolve());\n\n case 2:\n if (!true) {\n _context.next = 37;\n break;\n }\n\n this._retryDecryption = false;\n\n res = void 0;\n err = void 0;\n _context.prev = 6;\n\n if (crypto) {\n _context.next = 11;\n break;\n }\n\n res = this._badEncryptedMessage(\"Encryption not enabled\");\n _context.next = 14;\n break;\n\n case 11:\n _context.next = 13;\n return (0, _bluebird.resolve)(crypto.decryptEvent(this));\n\n case 13:\n res = _context.sent;\n\n case 14:\n _context.next = 29;\n break;\n\n case 16:\n _context.prev = 16;\n _context.t0 = _context['catch'](6);\n\n if (!(_context.t0.name !== \"DecryptionError\")) {\n _context.next = 23;\n break;\n }\n\n // not a decryption error: log the whole exception as an error\n // (and don't bother with a retry)\n _logger2.default.error('Error decrypting event (id=' + this.getId() + '): ' + (_context.t0.stack || _context.t0));\n this._decryptionPromise = null;\n this._retryDecryption = false;\n return _context.abrupt('return');\n\n case 23:\n\n err = _context.t0;\n\n // see if we have a retry queued.\n //\n // NB: make sure to keep this check in the same tick of the\n // event loop as `_decryptionPromise = null` below - otherwise we\n // risk a race:\n //\n // * A: we check _retryDecryption here and see that it is\n // false\n // * B: we get a second call to attemptDecryption, which sees\n // that _decryptionPromise is set so sets\n // _retryDecryption\n // * A: we continue below, clear _decryptionPromise, and\n // never do the retry.\n //\n\n if (!this._retryDecryption) {\n _context.next = 27;\n break;\n }\n\n // decryption error, but we have a retry queued.\n _logger2.default.log('Got error decrypting event (id=' + this.getId() + ': ' + (_context.t0 + '), but retrying'));\n return _context.abrupt('continue', 2);\n\n case 27:\n\n // decryption error, no retries queued. Warn about the error and\n // set it to m.bad.encrypted.\n _logger2.default.warn('Error decrypting event (id=' + this.getId() + '): ' + _context.t0.detailedString);\n\n res = this._badEncryptedMessage(_context.t0.message);\n\n case 29:\n\n // at this point, we've either successfully decrypted the event, or have given up\n // (and set res to a 'badEncryptedMessage'). Either way, we can now set the\n // cleartext of the event and raise Event.decrypted.\n //\n // make sure we clear '_decryptionPromise' before sending the 'Event.decrypted' event,\n // otherwise the app will be confused to see `isBeingDecrypted` still set when\n // there isn't an `Event.decrypted` on the way.\n //\n // see also notes on _retryDecryption above.\n //\n this._decryptionPromise = null;\n this._retryDecryption = false;\n this._setClearData(res);\n\n // Before we emit the event, clear the push actions so that they can be recalculated\n // by relevant code. We do this because the clear event has now changed, making it\n // so that existing rules can be re-run over the applicable properties. Stuff like\n // highlighting when the user's name is mentioned rely on this happening. We also want\n // to set the push actions before emitting so that any notification listeners don't\n // pick up the wrong contents.\n this.setPushActions(null);\n\n this.emit(\"Event.decrypted\", this, err);\n\n return _context.abrupt('return');\n\n case 37:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[6, 16]]);\n }));\n\n function _decryptionLoop(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return _decryptionLoop;\n }(),\n\n _badEncryptedMessage: function _badEncryptedMessage(reason) {\n return {\n clearEvent: {\n type: \"m.room.message\",\n content: {\n msgtype: \"m.bad.encrypted\",\n body: \"** Unable to decrypt: \" + reason + \" **\"\n }\n }\n };\n },\n\n /**\n * Update the cleartext data on this event.\n *\n * (This is used after decrypting an event; it should not be used by applications).\n *\n * @internal\n *\n * @fires module:models/event.MatrixEvent#\"Event.decrypted\"\n *\n * @param {module:crypto~EventDecryptionResult} decryptionResult\n * the decryption result, including the plaintext and some key info\n */\n _setClearData: function _setClearData(decryptionResult) {\n this._clearEvent = decryptionResult.clearEvent;\n this._senderCurve25519Key = decryptionResult.senderCurve25519Key || null;\n this._claimedEd25519Key = decryptionResult.claimedEd25519Key || null;\n this._forwardingCurve25519KeyChain = decryptionResult.forwardingCurve25519KeyChain || [];\n },\n\n /**\n * Gets the cleartext content for this event. If the event is not encrypted,\n * or encryption has not been completed, this will return null.\n *\n * @returns {Object} The cleartext (decrypted) content for the event\n */\n getClearContent: function getClearContent() {\n var ev = this._clearEvent;\n return ev && ev.content ? ev.content : null;\n },\n\n /**\n * Check if the event is encrypted.\n * @return {boolean} True if this event is encrypted.\n */\n isEncrypted: function isEncrypted() {\n return this.event.type === \"m.room.encrypted\";\n },\n\n /**\n * The curve25519 key for the device that we think sent this event\n *\n * For an Olm-encrypted event, this is inferred directly from the DH\n * exchange at the start of the session: the curve25519 key is involved in\n * the DH exchange, so only a device which holds the private part of that\n * key can establish such a session.\n *\n * For a megolm-encrypted event, it is inferred from the Olm message which\n * established the megolm session\n *\n * @return {string}\n */\n getSenderKey: function getSenderKey() {\n return this._senderCurve25519Key;\n },\n\n /**\n * The additional keys the sender of this encrypted event claims to possess.\n *\n * Just a wrapper for #getClaimedEd25519Key (q.v.)\n *\n * @return {Object}\n */\n getKeysClaimed: function getKeysClaimed() {\n return {\n ed25519: this._claimedEd25519Key\n };\n },\n\n /**\n * Get the ed25519 the sender of this event claims to own.\n *\n * For Olm messages, this claim is encoded directly in the plaintext of the\n * event itself. For megolm messages, it is implied by the m.room_key event\n * which established the megolm session.\n *\n * Until we download the device list of the sender, it's just a claim: the\n * device list gives a proof that the owner of the curve25519 key used for\n * this event (and returned by #getSenderKey) also owns the ed25519 key by\n * signing the public curve25519 key with the ed25519 key.\n *\n * In general, applications should not use this method directly, but should\n * instead use MatrixClient.getEventSenderDeviceInfo.\n *\n * @return {string}\n */\n getClaimedEd25519Key: function getClaimedEd25519Key() {\n return this._claimedEd25519Key;\n },\n\n /**\n * Get the curve25519 keys of the devices which were involved in telling us\n * about the claimedEd25519Key and sender curve25519 key.\n *\n * Normally this will be empty, but in the case of a forwarded megolm\n * session, the sender keys are sent to us by another device (the forwarding\n * device), which we need to trust to do this. In that case, the result will\n * be a list consisting of one entry.\n *\n * If the device that sent us the key (A) got it from another device which\n * it wasn't prepared to vouch for (B), the result will be [A, B]. And so on.\n *\n * @return {string[]} base64-encoded curve25519 keys, from oldest to newest.\n */\n getForwardingCurve25519KeyChain: function getForwardingCurve25519KeyChain() {\n return this._forwardingCurve25519KeyChain;\n },\n\n getUnsigned: function getUnsigned() {\n return this.event.unsigned || {};\n },\n\n unmarkLocallyRedacted: function unmarkLocallyRedacted() {\n var value = this._localRedactionEvent;\n this._localRedactionEvent = null;\n if (this.event.unsigned) {\n this.event.unsigned.redacted_because = null;\n }\n return !!value;\n },\n\n markLocallyRedacted: function markLocallyRedacted(redactionEvent) {\n if (this._localRedactionEvent) {\n return;\n }\n this.emit(\"Event.beforeRedaction\", this, redactionEvent);\n this._localRedactionEvent = redactionEvent;\n if (!this.event.unsigned) {\n this.event.unsigned = {};\n }\n this.event.unsigned.redacted_because = redactionEvent.event;\n },\n\n /**\n * Update the content of an event in the same way it would be by the server\n * if it were redacted before it was sent to us\n *\n * @param {module:models/event.MatrixEvent} redaction_event\n * event causing the redaction\n */\n makeRedacted: function makeRedacted(redaction_event) {\n // quick sanity-check\n if (!redaction_event.event) {\n throw new Error(\"invalid redaction_event in makeRedacted\");\n }\n\n this._localRedactionEvent = null;\n\n this.emit(\"Event.beforeRedaction\", this, redaction_event);\n\n this._replacingEvent = null;\n // we attempt to replicate what we would see from the server if\n // the event had been redacted before we saw it.\n //\n // The server removes (most of) the content of the event, and adds a\n // \"redacted_because\" key to the unsigned section containing the\n // redacted event.\n if (!this.event.unsigned) {\n this.event.unsigned = {};\n }\n this.event.unsigned.redacted_because = redaction_event.event;\n\n var key = void 0;\n for (key in this.event) {\n if (!this.event.hasOwnProperty(key)) {\n continue;\n }\n if (!_REDACT_KEEP_KEY_MAP[key]) {\n delete this.event[key];\n }\n }\n\n var keeps = _REDACT_KEEP_CONTENT_MAP[this.getType()] || {};\n var content = this.getContent();\n for (key in content) {\n if (!content.hasOwnProperty(key)) {\n continue;\n }\n if (!keeps[key]) {\n delete content[key];\n }\n }\n },\n\n /**\n * Check if this event has been redacted\n *\n * @return {boolean} True if this event has been redacted\n */\n isRedacted: function isRedacted() {\n return Boolean(this.getUnsigned().redacted_because);\n },\n\n /**\n * Check if this event is a redaction of another event\n *\n * @return {boolean} True if this event is a redaction\n */\n isRedaction: function isRedaction() {\n return this.getType() === \"m.room.redaction\";\n },\n\n /**\n * Get the push actions, if known, for this event\n *\n * @return {?Object} push actions\n */\n getPushActions: function getPushActions() {\n return this._pushActions;\n },\n\n /**\n * Set the push actions for this event.\n *\n * @param {Object} pushActions push actions\n */\n setPushActions: function setPushActions(pushActions) {\n this._pushActions = pushActions;\n },\n\n /**\n * Replace the `event` property and recalculate any properties based on it.\n * @param {Object} event the object to assign to the `event` property\n */\n handleRemoteEcho: function handleRemoteEcho(event) {\n var oldUnsigned = this.getUnsigned();\n var oldId = this.getId();\n this.event = event;\n // if this event was redacted before it was sent, it's locally marked as redacted.\n // At this point, we've received the remote echo for the event, but not yet for\n // the redaction that we are sending ourselves. Preserve the locally redacted\n // state by copying over redacted_because so we don't get a flash of\n // redacted, not-redacted, redacted as remote echos come in\n if (oldUnsigned.redacted_because) {\n if (!this.event.unsigned) {\n this.event.unsigned = {};\n }\n this.event.unsigned.redacted_because = oldUnsigned.redacted_because;\n }\n // successfully sent.\n this.setStatus(null);\n if (this.getId() !== oldId) {\n // emit the event if it changed\n this.emit(\"Event.localEventIdReplaced\", this);\n }\n },\n\n /**\n * Whether the event is in any phase of sending, send failure, waiting for\n * remote echo, etc.\n *\n * @return {boolean}\n */\n isSending: function isSending() {\n return !!this.status;\n },\n\n\n /**\n * Update the event's sending status and emit an event as well.\n *\n * @param {String} status The new status\n */\n setStatus: function setStatus(status) {\n this.status = status;\n this.emit(\"Event.status\", this, status);\n },\n replaceLocalEventId: function replaceLocalEventId(eventId) {\n this.event.event_id = eventId;\n this.emit(\"Event.localEventIdReplaced\", this);\n },\n\n\n /**\n * Get whether the event is a relation event, and of a given type if\n * `relType` is passed in.\n *\n * @param {string?} relType if given, checks that the relation is of the\n * given type\n * @return {boolean}\n */\n isRelation: function isRelation() {\n var relType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n // Relation info is lifted out of the encrypted content when sent to\n // encrypted rooms, so we have to check `getWireContent` for this.\n var content = this.getWireContent();\n var relation = content && content[\"m.relates_to\"];\n return relation && relation.rel_type && relation.event_id && (relType && relation.rel_type === relType || !relType);\n },\n\n\n /**\n * Get relation info for the event, if any.\n *\n * @return {Object}\n */\n getRelation: function getRelation() {\n if (!this.isRelation()) {\n return null;\n }\n return this.getWireContent()[\"m.relates_to\"];\n },\n\n\n /**\n * Set an event that replaces the content of this event, through an m.replace relation.\n *\n * @param {MatrixEvent?} newEvent the event with the replacing content, if any.\n */\n makeReplaced: function makeReplaced(newEvent) {\n // don't allow redacted events to be replaced.\n // if newEvent is null we allow to go through though,\n // as with local redaction, the replacing event might get\n // cancelled, which should be reflected on the target event.\n if (this.isRedacted() && newEvent) {\n return;\n }\n if (this._replacingEvent !== newEvent) {\n this._replacingEvent = newEvent;\n this.emit(\"Event.replaced\", this);\n }\n },\n\n\n /**\n * Returns the status of any associated edit or redaction\n * (not for reactions/annotations as their local echo doesn't affect the orignal event),\n * or else the status of the event.\n *\n * @return {EventStatus}\n */\n getAssociatedStatus: function getAssociatedStatus() {\n if (this._replacingEvent) {\n return this._replacingEvent.status;\n } else if (this._localRedactionEvent) {\n return this._localRedactionEvent.status;\n }\n return this.status;\n },\n getServerAggregatedRelation: function getServerAggregatedRelation(relType) {\n var relations = this.getUnsigned()[\"m.relations\"];\n if (relations) {\n return relations[relType];\n }\n },\n\n\n /**\n * Returns the event ID of the event replacing the content of this event, if any.\n *\n * @return {string?}\n */\n replacingEventId: function replacingEventId() {\n var replaceRelation = this.getServerAggregatedRelation(\"m.replace\");\n if (replaceRelation) {\n return replaceRelation.event_id;\n } else if (this._replacingEvent) {\n return this._replacingEvent.getId();\n }\n },\n\n\n /**\n * Returns the event replacing the content of this event, if any.\n * Replacements are aggregated on the server, so this would only\n * return an event in case it came down the sync, or for local echo of edits.\n *\n * @return {MatrixEvent?}\n */\n replacingEvent: function replacingEvent() {\n return this._replacingEvent;\n },\n\n\n /**\n * Returns the origin_server_ts of the event replacing the content of this event, if any.\n *\n * @return {Date?}\n */\n replacingEventDate: function replacingEventDate() {\n var replaceRelation = this.getServerAggregatedRelation(\"m.replace\");\n if (replaceRelation) {\n var ts = replaceRelation.origin_server_ts;\n if ((0, _isFinite2.default)(ts)) {\n return new Date(ts);\n }\n } else if (this._replacingEvent) {\n return this._replacingEvent.getDate();\n }\n },\n\n\n /**\n * Returns the event that wants to redact this event, but hasn't been sent yet.\n * @return {MatrixEvent} the event\n */\n localRedactionEvent: function localRedactionEvent() {\n return this._localRedactionEvent;\n },\n\n\n /**\n * For relations and redactions, returns the event_id this event is referring to.\n *\n * @return {string?}\n */\n getAssociatedId: function getAssociatedId() {\n var relation = this.getRelation();\n if (relation) {\n return relation.event_id;\n } else if (this.isRedaction()) {\n return this.event.redacts;\n }\n },\n\n\n /**\n * Checks if this event is associated with another event. See `getAssociatedId`.\n *\n * @return {bool}\n */\n hasAssocation: function hasAssocation() {\n return !!this.getAssociatedId();\n },\n\n\n /**\n * Update the related id with a new one.\n *\n * Used to replace a local id with remote one before sending\n * an event with a related id.\n *\n * @param {string} eventId the new event id\n */\n updateAssociatedId: function updateAssociatedId(eventId) {\n var relation = this.getRelation();\n if (relation) {\n relation.event_id = eventId;\n } else if (this.isRedaction()) {\n this.event.redacts = eventId;\n }\n },\n\n\n /**\n * Flags an event as cancelled due to future conditions. For example, a verification\n * request event in the same sync transaction may be flagged as cancelled to warn\n * listeners that a cancellation event is coming down the same pipe shortly.\n * @param {boolean} cancelled Whether the event is to be cancelled or not.\n */\n flagCancelled: function flagCancelled() {\n var cancelled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n this._isCancelled = cancelled;\n },\n\n\n /**\n * Gets whether or not the event is flagged as cancelled. See flagCancelled() for\n * more information.\n * @returns {boolean} True if the event is cancelled, false otherwise.\n */\n isCancelled: function isCancelled() {\n return this._isCancelled;\n },\n\n\n /**\n * Summarise the event as JSON for debugging. If encrypted, include both the\n * decrypted and encrypted view of the event. This is named `toJSON` for use\n * with `JSON.stringify` which checks objects for functions named `toJSON`\n * and will call them to customise the output if they are defined.\n *\n * @return {Object}\n */\n toJSON: function toJSON() {\n var event = {\n type: this.getType(),\n sender: this.getSender(),\n content: this.getContent(),\n event_id: this.getId(),\n origin_server_ts: this.getTs(),\n unsigned: this.getUnsigned(),\n room_id: this.getRoomId()\n };\n\n // if this is a redaction then attach the redacts key\n if (this.isRedaction()) {\n event.redacts = this.event.redacts;\n }\n\n if (!this.isEncrypted()) {\n return event;\n }\n\n return {\n decrypted: event,\n encrypted: this.event\n };\n }\n});\n\n/* _REDACT_KEEP_KEY_MAP gives the keys we keep when an event is redacted\n *\n * This is specified here:\n * http://matrix.org/speculator/spec/HEAD/client_server/latest.html#redactions\n *\n * Also:\n * - We keep 'unsigned' since that is created by the local server\n * - We keep user_id for backwards-compat with v1\n */\nvar _REDACT_KEEP_KEY_MAP = ['event_id', 'type', 'room_id', 'user_id', 'sender', 'state_key', 'prev_state', 'content', 'unsigned', 'origin_server_ts'].reduce(function (ret, val) {\n ret[val] = 1;return ret;\n}, {});\n\n// a map from event type to the .content keys we keep when an event is redacted\nvar _REDACT_KEEP_CONTENT_MAP = {\n 'm.room.member': { 'membership': 1 },\n 'm.room.create': { 'creator': 1 },\n 'm.room.join_rules': { 'join_rule': 1 },\n 'm.room.power_levels': { 'ban': 1, 'events': 1, 'events_default': 1,\n 'kick': 1, 'redact': 1, 'state_default': 1,\n 'users': 1, 'users_default': 1\n },\n 'm.room.aliases': { 'aliases': 1 }\n};\n\n/**\n * Fires when an event is decrypted\n *\n * @event module:models/event.MatrixEvent#\"Event.decrypted\"\n *\n * @param {module:models/event.MatrixEvent} event\n * The matrix event which has been decrypted\n * @param {module:crypto/algorithms/base.DecryptionError?} err\n * The error that occured during decryption, or `undefined` if no\n * error occured.\n */\n//# sourceMappingURL=event.js.map","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ValidatedServerConfig = undefined;\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _matrixJsSdk = require(\"matrix-js-sdk\");\n\nvar _languageHandler = require(\"../languageHandler\");\n\nvar _TypeUtils = require(\"./TypeUtils\");\n\nvar _SdkConfig = require(\"../SdkConfig\");\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LIVELINESS_DISCOVERY_ERRORS = [_matrixJsSdk.AutoDiscovery.ERROR_INVALID_HOMESERVER, _matrixJsSdk.AutoDiscovery.ERROR_INVALID_IDENTITY_SERVER]; /*\n Copyright 2019 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar ValidatedServerConfig = exports.ValidatedServerConfig = function ValidatedServerConfig() {\n (0, _classCallCheck3.default)(this, ValidatedServerConfig);\n};\n\nvar AutoDiscoveryUtils = function () {\n function AutoDiscoveryUtils() {\n (0, _classCallCheck3.default)(this, AutoDiscoveryUtils);\n }\n\n (0, _createClass3.default)(AutoDiscoveryUtils, null, [{\n key: \"isLivelinessError\",\n\n /**\n * Checks if a given error or error message is considered an error\n * relating to the liveliness of the server. Must be an error returned\n * from this AutoDiscoveryUtils class.\n * @param {string|Error} error The error to check\n * @returns {boolean} True if the error is a liveliness error.\n */\n value: function isLivelinessError(error) {\n if (!error) return false;\n return !!LIVELINESS_DISCOVERY_ERRORS.find(function (e) {\n return e === error || e === error.message;\n });\n }\n\n /**\n * Gets the common state for auth components (login, registration, forgot\n * password) for a given validation error.\n * @param {Error} err The error encountered.\n * @param {string} pageName The page for which the error should be customized to. See\n * implementation for known values.\n * @returns {*} The state for the component, given the error.\n */\n\n }, {\n key: \"authComponentStateForError\",\n value: function authComponentStateForError(err) {\n var pageName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"login\";\n\n var title = (0, _languageHandler._t)(\"Cannot reach homeserver\");\n var body = (0, _languageHandler._t)(\"Ensure you have a stable internet connection, or get in touch with the server admin\");\n if (!AutoDiscoveryUtils.isLivelinessError(err)) {\n title = (0, _languageHandler._t)(\"Your Riot is misconfigured\");\n body = (0, _languageHandler._t)(\"Ask your Riot admin to check your config for incorrect or duplicate entries.\", {}, {\n a: function a(sub) {\n return _react2.default.createElement(\n \"a\",\n {\n href: \"https://github.com/vector-im/riot-web/blob/master/docs/config.md\",\n target: \"_blank\",\n rel: \"noopener\"\n },\n sub\n );\n }\n });\n }\n\n var isFatalError = true;\n var errorMessage = err.message ? err.message : err;\n if (errorMessage === _matrixJsSdk.AutoDiscovery.ERROR_INVALID_IDENTITY_SERVER) {\n isFatalError = false;\n title = (0, _languageHandler._t)(\"Cannot reach identity server\");\n\n // It's annoying having a ladder for the third word in the same sentence, but our translations\n // don't make this easy to avoid.\n if (pageName === \"register\") {\n body = (0, _languageHandler._t)(\"You can register, but some features will be unavailable until the identity server is \" + \"back online. If you keep seeing this warning, check your configuration or contact a server \" + \"admin.\");\n } else if (pageName === \"reset_password\") {\n body = (0, _languageHandler._t)(\"You can reset your password, but some features will be unavailable until the identity \" + \"server is back online. If you keep seeing this warning, check your configuration or contact \" + \"a server admin.\");\n } else {\n body = (0, _languageHandler._t)(\"You can log in, but some features will be unavailable until the identity server is \" + \"back online. If you keep seeing this warning, check your configuration or contact a server \" + \"admin.\");\n }\n }\n\n return {\n serverIsAlive: false,\n serverErrorIsFatal: isFatalError,\n serverDeadError: _react2.default.createElement(\n \"div\",\n null,\n _react2.default.createElement(\n \"strong\",\n null,\n title\n ),\n _react2.default.createElement(\n \"div\",\n null,\n body\n )\n )\n };\n }\n\n /**\n * Validates a server configuration, using a pair of URLs as input.\n * @param {string} homeserverUrl The homeserver URL.\n * @param {string} identityUrl The identity server URL.\n * @param {boolean} syntaxOnly If true, errors relating to liveliness of the servers will\n * not be raised.\n * @returns {Promise} Resolves to the validated configuration.\n */\n\n }, {\n key: \"validateServerConfigWithStaticUrls\",\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(homeserverUrl, identityUrl) {\n var syntaxOnly = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var wellknownConfig, result, url, serverName;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (homeserverUrl) {\n _context.next = 2;\n break;\n }\n\n throw (0, _languageHandler.newTranslatableError)((0, _languageHandler._td)(\"No homeserver URL provided\"));\n\n case 2:\n wellknownConfig = {\n \"m.homeserver\": {\n base_url: homeserverUrl\n }\n };\n\n\n if (identityUrl) {\n wellknownConfig['m.identity_server'] = {\n base_url: identityUrl\n };\n }\n\n _context.next = 6;\n return (0, _bluebird.resolve)(_matrixJsSdk.AutoDiscovery.fromDiscoveryConfig(wellknownConfig));\n\n case 6:\n result = _context.sent;\n url = new URL(homeserverUrl);\n serverName = url.hostname;\n return _context.abrupt(\"return\", AutoDiscoveryUtils.buildValidatedConfigFromDiscovery(serverName, result, syntaxOnly));\n\n case 10:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function validateServerConfigWithStaticUrls(_x2, _x3, _x4) {\n return _ref.apply(this, arguments);\n }\n\n return validateServerConfigWithStaticUrls;\n }()\n\n /**\n * Validates a server configuration, using a homeserver domain name as input.\n * @param {string} serverName The homeserver domain name (eg: \"matrix.org\") to validate.\n * @param {boolean} syntaxOnly If true, errors relating to liveliness of the servers will\n * not be raised.\n * @returns {Promise} Resolves to the validated configuration.\n */\n\n }, {\n key: \"validateServerName\",\n value: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(serverName) {\n var syntaxOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var result;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return (0, _bluebird.resolve)(_matrixJsSdk.AutoDiscovery.findClientConfig(serverName));\n\n case 2:\n result = _context2.sent;\n return _context2.abrupt(\"return\", AutoDiscoveryUtils.buildValidatedConfigFromDiscovery(serverName, result));\n\n case 4:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function validateServerName(_x6, _x7) {\n return _ref2.apply(this, arguments);\n }\n\n return validateServerName;\n }()\n\n /**\n * Validates a server configuration, using a pre-calculated AutoDiscovery result as\n * input.\n * @param {string} serverName The domain name the AutoDiscovery result is for.\n * @param {*} discoveryResult The AutoDiscovery result.\n * @param {boolean} syntaxOnly If true, errors relating to liveliness of the servers will\n * not be raised.\n * @returns {Promise} Resolves to the validated configuration.\n */\n\n }, {\n key: \"buildValidatedConfigFromDiscovery\",\n value: function buildValidatedConfigFromDiscovery(serverName, discoveryResult) {\n var syntaxOnly = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (!discoveryResult || !discoveryResult[\"m.homeserver\"]) {\n // This shouldn't happen without major misconfiguration, so we'll log a bit of information\n // in the log so we can find this bit of codee but otherwise tell teh user \"it broke\".\n console.error(\"Ended up in a state of not knowing which homeserver to connect to.\");\n throw (0, _languageHandler.newTranslatableError)((0, _languageHandler._td)(\"Unexpected error resolving homeserver configuration\"));\n }\n\n var hsResult = discoveryResult['m.homeserver'];\n var isResult = discoveryResult['m.identity_server'];\n\n var defaultConfig = _SdkConfig2.default.get()[\"validated_server_config\"];\n\n // Validate the identity server first because an invalid identity server causes\n // and invalid homeserver, which may not be picked up correctly.\n\n // Note: In the cases where we rely on the default IS from the config (namely\n // lack of identity server provided by the discovery method), we intentionally do not\n // validate it. This has already been validated and this helps some off-the-grid usage\n // of Riot.\n var preferredIdentityUrl = defaultConfig && defaultConfig['isUrl'];\n if (isResult && isResult.state === _matrixJsSdk.AutoDiscovery.SUCCESS) {\n preferredIdentityUrl = isResult[\"base_url\"];\n } else if (isResult && isResult.state !== _matrixJsSdk.AutoDiscovery.PROMPT) {\n console.error(\"Error determining preferred identity server URL:\", isResult);\n if (!syntaxOnly || !AutoDiscoveryUtils.isLivelinessError(isResult.error)) {\n if (_matrixJsSdk.AutoDiscovery.ALL_ERRORS.indexOf(isResult.error) !== -1) {\n throw (0, _languageHandler.newTranslatableError)(isResult.error);\n }\n throw (0, _languageHandler.newTranslatableError)((0, _languageHandler._td)(\"Unexpected error resolving identity server configuration\"));\n } // else the error is not related to syntax - continue anyways.\n\n // rewrite homeserver error if we don't care about problems\n if (syntaxOnly) {\n hsResult.error = _matrixJsSdk.AutoDiscovery.ERROR_INVALID_IDENTITY_SERVER;\n\n // Also use the user's supplied identity server if provided\n if (isResult[\"base_url\"]) preferredIdentityUrl = isResult[\"base_url\"];\n }\n }\n\n if (hsResult.state !== _matrixJsSdk.AutoDiscovery.SUCCESS) {\n console.error(\"Error processing homeserver config:\", hsResult);\n if (!syntaxOnly || !AutoDiscoveryUtils.isLivelinessError(hsResult.error)) {\n if (_matrixJsSdk.AutoDiscovery.ALL_ERRORS.indexOf(hsResult.error) !== -1) {\n throw (0, _languageHandler.newTranslatableError)(hsResult.error);\n }\n throw (0, _languageHandler.newTranslatableError)((0, _languageHandler._td)(\"Unexpected error resolving homeserver configuration\"));\n } // else the error is not related to syntax - continue anyways.\n }\n\n var preferredHomeserverUrl = hsResult[\"base_url\"];\n var preferredHomeserverName = serverName ? serverName : hsResult[\"server_name\"];\n\n var url = new URL(preferredHomeserverUrl);\n if (!preferredHomeserverName) preferredHomeserverName = url.hostname;\n\n // It should have been set by now, so check it\n if (!preferredHomeserverName) {\n console.error(\"Failed to parse homeserver name from homeserver URL\");\n throw (0, _languageHandler.newTranslatableError)((0, _languageHandler._td)(\"Unexpected error resolving homeserver configuration\"));\n }\n\n return (0, _TypeUtils.makeType)(ValidatedServerConfig, {\n hsUrl: preferredHomeserverUrl,\n hsName: preferredHomeserverName,\n hsNameIsDifferent: url.hostname !== preferredHomeserverName,\n isUrl: preferredIdentityUrl,\n isDefault: false\n });\n }\n }]);\n return AutoDiscoveryUtils;\n}();\n\nexports.default = AutoDiscoveryUtils;\n//# sourceMappingURL=AutoDiscoveryUtils.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.formatDate = formatDate;\nexports.formatFullDateNoTime = formatFullDateNoTime;\nexports.formatFullDate = formatFullDate;\nexports.formatFullTime = formatFullTime;\nexports.formatTime = formatTime;\nexports.wantsDateSeparator = wantsDateSeparator;\n\nvar _languageHandler = require('./languageHandler');\n\nfunction getDaysArray() {\n return [(0, _languageHandler._t)('Sun'), (0, _languageHandler._t)('Mon'), (0, _languageHandler._t)('Tue'), (0, _languageHandler._t)('Wed'), (0, _languageHandler._t)('Thu'), (0, _languageHandler._t)('Fri'), (0, _languageHandler._t)('Sat')];\n} /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction getMonthsArray() {\n return [(0, _languageHandler._t)('Jan'), (0, _languageHandler._t)('Feb'), (0, _languageHandler._t)('Mar'), (0, _languageHandler._t)('Apr'), (0, _languageHandler._t)('May'), (0, _languageHandler._t)('Jun'), (0, _languageHandler._t)('Jul'), (0, _languageHandler._t)('Aug'), (0, _languageHandler._t)('Sep'), (0, _languageHandler._t)('Oct'), (0, _languageHandler._t)('Nov'), (0, _languageHandler._t)('Dec')];\n}\n\nfunction pad(n) {\n return (n < 10 ? '0' : '') + n;\n}\n\nfunction twelveHourTime(date) {\n var showSeconds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var hours = date.getHours() % 12;\n var minutes = pad(date.getMinutes());\n var ampm = date.getHours() >= 12 ? (0, _languageHandler._t)('PM') : (0, _languageHandler._t)('AM');\n hours = hours ? hours : 12; // convert 0 -> 12\n if (showSeconds) {\n var seconds = pad(date.getSeconds());\n return hours + ':' + minutes + ':' + seconds + ampm;\n }\n return hours + ':' + minutes + ampm;\n}\n\nfunction formatDate(date) {\n var showTwelveHour = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var now = new Date();\n var days = getDaysArray();\n var months = getMonthsArray();\n if (date.toDateString() === now.toDateString()) {\n return formatTime(date, showTwelveHour);\n } else if (now.getTime() - date.getTime() < 6 * 24 * 60 * 60 * 1000) {\n // TODO: use standard date localize function provided in counterpart\n return (0, _languageHandler._t)('%(weekDayName)s %(time)s', {\n weekDayName: days[date.getDay()],\n time: formatTime(date, showTwelveHour)\n });\n } else if (now.getFullYear() === date.getFullYear()) {\n // TODO: use standard date localize function provided in counterpart\n return (0, _languageHandler._t)('%(weekDayName)s, %(monthName)s %(day)s %(time)s', {\n weekDayName: days[date.getDay()],\n monthName: months[date.getMonth()],\n day: date.getDate(),\n time: formatTime(date, showTwelveHour)\n });\n }\n return formatFullDate(date, showTwelveHour);\n}\n\nfunction formatFullDateNoTime(date) {\n var days = getDaysArray();\n var months = getMonthsArray();\n return (0, _languageHandler._t)('%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s', {\n weekDayName: days[date.getDay()],\n monthName: months[date.getMonth()],\n day: date.getDate(),\n fullYear: date.getFullYear()\n });\n}\n\nfunction formatFullDate(date) {\n var showTwelveHour = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var days = getDaysArray();\n var months = getMonthsArray();\n return (0, _languageHandler._t)('%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s', {\n weekDayName: days[date.getDay()],\n monthName: months[date.getMonth()],\n day: date.getDate(),\n fullYear: date.getFullYear(),\n time: formatFullTime(date, showTwelveHour)\n });\n}\n\nfunction formatFullTime(date) {\n var showTwelveHour = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (showTwelveHour) {\n return twelveHourTime(date, true);\n }\n return pad(date.getHours()) + ':' + pad(date.getMinutes()) + ':' + pad(date.getSeconds());\n}\n\nfunction formatTime(date) {\n var showTwelveHour = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (showTwelveHour) {\n return twelveHourTime(date);\n }\n return pad(date.getHours()) + ':' + pad(date.getMinutes());\n}\n\nvar MILLIS_IN_DAY = 86400000;\nfunction wantsDateSeparator(prevEventDate, nextEventDate) {\n if (!nextEventDate || !prevEventDate) {\n return false;\n }\n // Return early for events that are > 24h apart\n if (Math.abs(prevEventDate.getTime() - nextEventDate.getTime()) > MILLIS_IN_DAY) {\n return true;\n }\n\n // Compare weekdays\n return prevEventDate.getDay() !== nextEventDate.getDay();\n}\n//# sourceMappingURL=DateUtils.js.map","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};","module.exports = \"img/cancel.4b9715b.svg\";","module.exports = \"img/warning.05cc423.svg\";","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","module.exports = { \"default\": require(\"core-js/library/fn/object/entries\"), __esModule: true };","// Browser Request\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// UMD HEADER START \n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory);\n } else if (typeof exports === 'object') {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like enviroments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n root.returnExports = factory();\n }\n}(this, function () {\n// UMD HEADER END\n\nvar XHR = XMLHttpRequest\nif (!XHR) throw new Error('missing XMLHttpRequest')\nrequest.log = {\n 'trace': noop, 'debug': noop, 'info': noop, 'warn': noop, 'error': noop\n}\n\nvar DEFAULT_TIMEOUT = 3 * 60 * 1000 // 3 minutes\n\n//\n// request\n//\n\nfunction request(options, callback) {\n // The entry-point to the API: prep the options object and pass the real work to run_xhr.\n if(typeof callback !== 'function')\n throw new Error('Bad callback given: ' + callback)\n\n if(!options)\n throw new Error('No options given')\n\n var options_onResponse = options.onResponse; // Save this for later.\n\n if(typeof options === 'string')\n options = {'uri':options};\n else\n options = JSON.parse(JSON.stringify(options)); // Use a duplicate for mutating.\n\n options.onResponse = options_onResponse // And put it back.\n\n if (options.verbose) request.log = getLogger();\n\n if(options.url) {\n options.uri = options.url;\n delete options.url;\n }\n\n if(!options.uri && options.uri !== \"\")\n throw new Error(\"options.uri is a required argument\");\n\n if(typeof options.uri != \"string\")\n throw new Error(\"options.uri must be a string\");\n\n var unsupported_options = ['proxy', '_redirectsFollowed', 'maxRedirects', 'followRedirect']\n for (var i = 0; i < unsupported_options.length; i++)\n if(options[ unsupported_options[i] ])\n throw new Error(\"options.\" + unsupported_options[i] + \" is not supported\")\n\n options.callback = callback\n options.method = options.method || 'GET';\n options.headers = options.headers || {};\n options.body = options.body || null\n options.timeout = options.timeout || request.DEFAULT_TIMEOUT\n\n if(options.headers.host)\n throw new Error(\"Options.headers.host is not supported\");\n\n if(options.json) {\n options.headers.accept = options.headers.accept || 'application/json'\n if(options.method !== 'GET')\n options.headers['content-type'] = 'application/json'\n\n if(typeof options.json !== 'boolean')\n options.body = JSON.stringify(options.json)\n else if(typeof options.body !== 'string')\n options.body = JSON.stringify(options.body)\n }\n \n //BEGIN QS Hack\n var serialize = function(obj) {\n var str = [];\n for(var p in obj)\n if (obj.hasOwnProperty(p)) {\n str.push(encodeURIComponent(p) + \"=\" + encodeURIComponent(obj[p]));\n }\n return str.join(\"&\");\n }\n \n if(options.qs){\n var qs = (typeof options.qs == 'string')? options.qs : serialize(options.qs);\n if(options.uri.indexOf('?') !== -1){ //no get params\n options.uri = options.uri+'&'+qs;\n }else{ //existing get params\n options.uri = options.uri+'?'+qs;\n }\n }\n //END QS Hack\n \n //BEGIN FORM Hack\n var multipart = function(obj) {\n //todo: support file type (useful?)\n var result = {};\n result.boundry = '-------------------------------'+Math.floor(Math.random()*1000000000);\n var lines = [];\n for(var p in obj){\n if (obj.hasOwnProperty(p)) {\n lines.push(\n '--'+result.boundry+\"\\n\"+\n 'Content-Disposition: form-data; name=\"'+p+'\"'+\"\\n\"+\n \"\\n\"+\n obj[p]+\"\\n\"\n );\n }\n }\n lines.push( '--'+result.boundry+'--' );\n result.body = lines.join('');\n result.length = result.body.length;\n result.type = 'multipart/form-data; boundary='+result.boundry;\n return result;\n }\n \n if(options.form){\n if(typeof options.form == 'string') throw('form name unsupported');\n if(options.method === 'POST'){\n var encoding = (options.encoding || 'application/x-www-form-urlencoded').toLowerCase();\n options.headers['content-type'] = encoding;\n switch(encoding){\n case 'application/x-www-form-urlencoded':\n options.body = serialize(options.form).replace(/%20/g, \"+\");\n break;\n case 'multipart/form-data':\n var multi = multipart(options.form);\n //options.headers['content-length'] = multi.length;\n options.body = multi.body;\n options.headers['content-type'] = multi.type;\n break;\n default : throw new Error('unsupported encoding:'+encoding);\n }\n }\n }\n //END FORM Hack\n\n // If onResponse is boolean true, call back immediately when the response is known,\n // not when the full request is complete.\n options.onResponse = options.onResponse || noop\n if(options.onResponse === true) {\n options.onResponse = callback\n options.callback = noop\n }\n\n // XXX Browsers do not like this.\n //if(options.body)\n // options.headers['content-length'] = options.body.length;\n\n // HTTP basic authentication\n if(!options.headers.authorization && options.auth)\n options.headers.authorization = 'Basic ' + b64_enc(options.auth.username + ':' + options.auth.password);\n\n return run_xhr(options)\n}\n\nvar req_seq = 0\nfunction run_xhr(options) {\n var xhr = new XHR\n , timed_out = false\n , is_cors = is_crossDomain(options.uri)\n , supports_cors = ('withCredentials' in xhr)\n\n req_seq += 1\n xhr.seq_id = req_seq\n xhr.id = req_seq + ': ' + options.method + ' ' + options.uri\n xhr._id = xhr.id // I know I will type \"_id\" from habit all the time.\n\n if(is_cors && !supports_cors) {\n var cors_err = new Error('Browser does not support cross-origin request: ' + options.uri)\n cors_err.cors = 'unsupported'\n return options.callback(cors_err, xhr)\n }\n\n xhr.timeoutTimer = setTimeout(too_late, options.timeout)\n function too_late() {\n timed_out = true\n var er = new Error('ETIMEDOUT')\n er.code = 'ETIMEDOUT'\n er.duration = options.timeout\n\n request.log.error('Timeout', { 'id':xhr._id, 'milliseconds':options.timeout })\n return options.callback(er, xhr)\n }\n\n // Some states can be skipped over, so remember what is still incomplete.\n var did = {'response':false, 'loading':false, 'end':false}\n\n xhr.onreadystatechange = on_state_change\n xhr.open(options.method, options.uri, true) // asynchronous\n if(is_cors)\n xhr.withCredentials = !! options.withCredentials\n xhr.send(options.body)\n return xhr\n\n function on_state_change(event) {\n if(timed_out)\n return request.log.debug('Ignoring timed out state change', {'state':xhr.readyState, 'id':xhr.id})\n\n request.log.debug('State change', {'state':xhr.readyState, 'id':xhr.id, 'timed_out':timed_out})\n\n if(xhr.readyState === XHR.OPENED) {\n request.log.debug('Request started', {'id':xhr.id})\n for (var key in options.headers)\n xhr.setRequestHeader(key, options.headers[key])\n }\n\n else if(xhr.readyState === XHR.HEADERS_RECEIVED)\n on_response()\n\n else if(xhr.readyState === XHR.LOADING) {\n on_response()\n on_loading()\n }\n\n else if(xhr.readyState === XHR.DONE) {\n on_response()\n on_loading()\n on_end()\n }\n }\n\n function on_response() {\n if(did.response)\n return\n\n did.response = true\n request.log.debug('Got response', {'id':xhr.id, 'status':xhr.status})\n clearTimeout(xhr.timeoutTimer)\n xhr.statusCode = xhr.status // Node request compatibility\n\n // Detect failed CORS requests.\n if(is_cors && xhr.statusCode == 0) {\n var cors_err = new Error('CORS request rejected: ' + options.uri)\n cors_err.cors = 'rejected'\n\n // Do not process this request further.\n did.loading = true\n did.end = true\n\n return options.callback(cors_err, xhr)\n }\n\n options.onResponse(null, xhr)\n }\n\n function on_loading() {\n if(did.loading)\n return\n\n did.loading = true\n request.log.debug('Response body loading', {'id':xhr.id})\n // TODO: Maybe simulate \"data\" events by watching xhr.responseText\n }\n\n function on_end() {\n if(did.end)\n return\n\n did.end = true\n request.log.debug('Request done', {'id':xhr.id})\n\n xhr.body = xhr.responseText\n if(options.json) {\n try { xhr.body = JSON.parse(xhr.responseText) }\n catch (er) { return options.callback(er, xhr) }\n }\n\n options.callback(null, xhr, xhr.body)\n }\n\n} // request\n\nrequest.withCredentials = false;\nrequest.DEFAULT_TIMEOUT = DEFAULT_TIMEOUT;\n\n//\n// defaults\n//\n\nrequest.defaults = function(options, requester) {\n var def = function (method) {\n var d = function (params, callback) {\n if(typeof params === 'string')\n params = {'uri': params};\n else {\n params = JSON.parse(JSON.stringify(params));\n }\n for (var i in options) {\n if (params[i] === undefined) params[i] = options[i]\n }\n return method(params, callback)\n }\n return d\n }\n var de = def(request)\n de.get = def(request.get)\n de.post = def(request.post)\n de.put = def(request.put)\n de.head = def(request.head)\n return de\n}\n\n//\n// HTTP method shortcuts\n//\n\nvar shortcuts = [ 'get', 'put', 'post', 'head' ];\nshortcuts.forEach(function(shortcut) {\n var method = shortcut.toUpperCase();\n var func = shortcut.toLowerCase();\n\n request[func] = function(opts) {\n if(typeof opts === 'string')\n opts = {'method':method, 'uri':opts};\n else {\n opts = JSON.parse(JSON.stringify(opts));\n opts.method = method;\n }\n\n var args = [opts].concat(Array.prototype.slice.apply(arguments, [1]));\n return request.apply(this, args);\n }\n})\n\n//\n// CouchDB shortcut\n//\n\nrequest.couch = function(options, callback) {\n if(typeof options === 'string')\n options = {'uri':options}\n\n // Just use the request API to do JSON.\n options.json = true\n if(options.body)\n options.json = options.body\n delete options.body\n\n callback = callback || noop\n\n var xhr = request(options, couch_handler)\n return xhr\n\n function couch_handler(er, resp, body) {\n if(er)\n return callback(er, resp, body)\n\n if((resp.statusCode < 200 || resp.statusCode > 299) && body.error) {\n // The body is a Couch JSON object indicating the error.\n er = new Error('CouchDB error: ' + (body.error.reason || body.error.error))\n for (var key in body)\n er[key] = body[key]\n return callback(er, resp, body);\n }\n\n return callback(er, resp, body);\n }\n}\n\n//\n// Utility\n//\n\nfunction noop() {}\n\nfunction getLogger() {\n var logger = {}\n , levels = ['trace', 'debug', 'info', 'warn', 'error']\n , level, i\n\n for(i = 0; i < levels.length; i++) {\n level = levels[i]\n\n logger[level] = noop\n if(typeof console !== 'undefined' && console && console[level])\n logger[level] = formatted(console, level)\n }\n\n return logger\n}\n\nfunction formatted(obj, method) {\n return formatted_logger\n\n function formatted_logger(str, context) {\n if(typeof context === 'object')\n str += ' ' + JSON.stringify(context)\n\n return obj[method].call(obj, str)\n }\n}\n\n// Return whether a URL is a cross-domain request.\nfunction is_crossDomain(url) {\n var rurl = /^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+))?)?/\n\n // jQuery #8138, IE may throw an exception when accessing\n // a field from window.location if document.domain has been set\n var ajaxLocation\n try { ajaxLocation = location.href }\n catch (e) {\n // Use the href attribute of an A element since IE will modify it given document.location\n ajaxLocation = document.createElement( \"a\" );\n ajaxLocation.href = \"\";\n ajaxLocation = ajaxLocation.href;\n }\n\n var ajaxLocParts = rurl.exec(ajaxLocation.toLowerCase()) || []\n , parts = rurl.exec(url.toLowerCase() )\n\n var result = !!(\n parts &&\n ( parts[1] != ajaxLocParts[1]\n || parts[2] != ajaxLocParts[2]\n || (parts[3] || (parts[1] === \"http:\" ? 80 : 443)) != (ajaxLocParts[3] || (ajaxLocParts[1] === \"http:\" ? 80 : 443))\n )\n )\n\n //console.debug('is_crossDomain('+url+') -> ' + result)\n return result\n}\n\n// MIT License from http://phpjs.org/functions/base64_encode:358\nfunction b64_enc (data) {\n // Encodes string using MIME base64 algorithm\n var b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, enc=\"\", tmp_arr = [];\n\n if (!data) {\n return data;\n }\n\n // assume utf8 data\n // data = this.utf8_encode(data+'');\n\n do { // pack three octets into four hexets\n o1 = data.charCodeAt(i++);\n o2 = data.charCodeAt(i++);\n o3 = data.charCodeAt(i++);\n\n bits = o1<<16 | o2<<8 | o3;\n\n h1 = bits>>18 & 0x3f;\n h2 = bits>>12 & 0x3f;\n h3 = bits>>6 & 0x3f;\n h4 = bits & 0x3f;\n\n // use hexets to index into b64, and append result to encoded string\n tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);\n } while (i < data.length);\n\n enc = tmp_arr.join('');\n\n switch (data.length % 3) {\n case 1:\n enc = enc.slice(0, -2) + '==';\n break;\n case 2:\n enc = enc.slice(0, -1) + '=';\n break;\n }\n\n return enc;\n}\n return request;\n//UMD FOOTER START\n}));\n//UMD FOOTER END\n","'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _startCallApp = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(roomId, type) {\n var managers, haveScalar, scalarClient, ErrorDialog, room, currentRoomWidgets, _ErrorDialog3, currentJitsiWidgets, _ErrorDialog4, widgetSessionId, confId, queryString, widgetUrl, apiUrl, widgetData, widgetId;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n // check for a working integrations manager. Technically we could put\n // the state event in anyway, but the resulting widget would then not\n // work for us. Better that the user knows before everyone else in the\n // room sees it.\n managers = _IntegrationManagers.IntegrationManagers.sharedInstance();\n haveScalar = true;\n\n if (!managers.hasManager()) {\n _context.next = 14;\n break;\n }\n\n _context.prev = 3;\n scalarClient = managers.getPrimaryManager().getScalarClient();\n _context.next = 7;\n return (0, _bluebird.resolve)(scalarClient.connect());\n\n case 7:\n haveScalar = scalarClient.hasCredentials();\n _context.next = 12;\n break;\n\n case 10:\n _context.prev = 10;\n _context.t0 = _context['catch'](3);\n\n case 12:\n _context.next = 15;\n break;\n\n case 14:\n haveScalar = false;\n\n case 15:\n if (haveScalar) {\n _context.next = 19;\n break;\n }\n\n ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n\n\n _Modal2.default.createTrackedDialog('Could not connect to the integration server', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Could not connect to the integration server'),\n description: (0, _languageHandler._t)('A conference call could not be started because the integrations server is not available')\n });\n return _context.abrupt('return');\n\n case 19:\n\n _dispatcher2.default.dispatch({\n action: 'appsDrawer',\n show: true\n });\n\n room = _MatrixClientPeg2.default.get().getRoom(roomId);\n currentRoomWidgets = _WidgetUtils2.default.getRoomWidgets(room);\n\n if (!_WidgetEchoStore2.default.roomHasPendingWidgetsOfType(roomId, currentRoomWidgets, 'jitsi')) {\n _context.next = 26;\n break;\n }\n\n _ErrorDialog3 = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n\n\n _Modal2.default.createTrackedDialog('Call already in progress', '', _ErrorDialog3, {\n title: (0, _languageHandler._t)('Call in Progress'),\n description: (0, _languageHandler._t)('A call is currently being placed!')\n });\n return _context.abrupt('return');\n\n case 26:\n currentJitsiWidgets = currentRoomWidgets.filter(function (ev) {\n return ev.getContent().type === 'jitsi';\n });\n\n if (!(currentJitsiWidgets.length > 0)) {\n _context.next = 32;\n break;\n }\n\n console.warn(\"Refusing to start conference call widget in \" + roomId + \" a conference call widget is already present\");\n _ErrorDialog4 = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n\n\n _Modal2.default.createTrackedDialog('Already have Jitsi Widget', '', _ErrorDialog4, {\n title: (0, _languageHandler._t)('Call in Progress'),\n description: (0, _languageHandler._t)('A call is already in progress!')\n });\n return _context.abrupt('return');\n\n case 32:\n\n // This inherits its poor naming from the field of the same name that goes into\n // the event. It's just a random string to make the Jitsi URLs unique.\n widgetSessionId = Math.random().toString(36).substring(2);\n confId = room.roomId.replace(/[^A-Za-z0-9]/g, '') + widgetSessionId;\n // NB. we can't just encodeURICompoent all of these because the $ signs need to be there\n // (but currently the only thing that needs encoding is the confId)\n\n queryString = ['confId=' + encodeURIComponent(confId), 'isAudioConf=' + (type === 'voice' ? 'true' : 'false'), 'displayName=$matrix_display_name', 'avatarUrl=$matrix_avatar_url', 'email=$matrix_user_id'].join('&');\n widgetUrl = void 0;\n\n if (_SdkConfig2.default.get().integrations_jitsi_widget_url) {\n // Try this config key. This probably isn't ideal as a way of discovering this\n // URL, but this will at least allow the integration manager to not be hardcoded.\n widgetUrl = _SdkConfig2.default.get().integrations_jitsi_widget_url + '?' + queryString;\n } else {\n apiUrl = _IntegrationManagers.IntegrationManagers.sharedInstance().getPrimaryManager().apiUrl;\n\n widgetUrl = apiUrl + '/widgets/jitsi.html?' + queryString;\n }\n\n widgetData = { widgetSessionId: widgetSessionId };\n widgetId = 'jitsi_' + _MatrixClientPeg2.default.get().credentials.userId + '_' + Date.now();\n\n\n _WidgetUtils2.default.setRoomWidget(roomId, widgetId, 'jitsi', widgetUrl, 'Jitsi', widgetData).then(function () {\n console.log('Jitsi widget added');\n }).catch(function (e) {\n if (e.errcode === 'M_FORBIDDEN') {\n var _ErrorDialog5 = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n\n _Modal2.default.createTrackedDialog('Call Failed', '', _ErrorDialog5, {\n title: (0, _languageHandler._t)('Permission Required'),\n description: (0, _languageHandler._t)(\"You do not have permission to start a conference call in this room\")\n });\n }\n console.error(e);\n });\n\n case 40:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[3, 10]]);\n }));\n\n return function _startCallApp(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n\n// FIXME: Nasty way of making sure we only register\n// with the dispatcher once\n\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _PlatformPeg = require('./PlatformPeg');\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('./languageHandler');\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _SdkConfig = require('./SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _cryptodevices = require('./cryptodevices');\n\nvar _WidgetUtils = require('./utils/WidgetUtils');\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nvar _WidgetEchoStore = require('./stores/WidgetEchoStore');\n\nvar _WidgetEchoStore2 = _interopRequireDefault(_WidgetEchoStore);\n\nvar _IntegrationManagers = require('./integrations/IntegrationManagers');\n\nvar _SettingsStore = require('./settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nglobal.mxCalls = {\n //room_id: MatrixCall\n}; /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017, 2018 New Vector Ltd\n Copyright 2019 The Matrix.org Foundation C.I.C.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/*\n * Manages a list of all the currently active calls.\n *\n * This handler dispatches when voip calls are added/updated/removed from this list:\n * {\n * action: 'call_state'\n * room_id: \n * }\n *\n * To know the state of the call, this handler exposes a getter to\n * obtain the call for a room:\n * var call = CallHandler.getCall(roomId)\n * var state = call.call_state; // ringing|ringback|connected|ended|busy|stop_ringback|stop_ringing\n *\n * This handler listens for and handles the following actions:\n * {\n * action: 'place_call',\n * type: 'voice|video',\n * room_id: \n * }\n *\n * {\n * action: 'incoming_call'\n * call: MatrixCall\n * }\n *\n * {\n * action: 'hangup'\n * room_id: \n * }\n *\n * {\n * action: 'answer'\n * room_id: \n * }\n */\n\nvar calls = global.mxCalls;\nvar ConferenceHandler = null;\n\nvar audioPromises = {};\n\nfunction play(audioId) {\n // TODO: Attach an invisible element for this instead\n // which listens?\n var audio = document.getElementById(audioId);\n if (audio) {\n if (audioPromises[audioId]) {\n audioPromises[audioId] = audioPromises[audioId].then(function () {\n audio.load();\n return audio.play();\n });\n } else {\n audioPromises[audioId] = audio.play();\n }\n }\n}\n\nfunction pause(audioId) {\n // TODO: Attach an invisible element for this instead\n // which listens?\n var audio = document.getElementById(audioId);\n if (audio) {\n if (audioPromises[audioId]) {\n audioPromises[audioId] = audioPromises[audioId].then(function () {\n return audio.pause();\n });\n } else {\n // pause doesn't actually return a promise, but might as well do this for symmetry with play();\n audioPromises[audioId] = audio.pause();\n }\n }\n}\n\nfunction _reAttemptCall(call) {\n if (call.direction === 'outbound') {\n _dispatcher2.default.dispatch({\n action: 'place_call',\n room_id: call.roomId,\n type: call.type\n });\n } else {\n call.answer();\n }\n}\n\nfunction _setCallListeners(call) {\n call.on(\"error\", function (err) {\n console.error(\"Call error:\", err);\n if (err.code === 'unknown_devices') {\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n\n _Modal2.default.createTrackedDialog('Call Failed', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Call Failed'),\n description: (0, _languageHandler._t)(\"There are unknown devices in this room: \" + \"if you proceed without verifying them, it will be \" + \"possible for someone to eavesdrop on your call.\"),\n button: (0, _languageHandler._t)('Review Devices'),\n onFinished: function onFinished(confirmed) {\n if (confirmed) {\n var room = _MatrixClientPeg2.default.get().getRoom(call.roomId);\n (0, _cryptodevices.showUnknownDeviceDialogForCalls)(_MatrixClientPeg2.default.get(), room, function () {\n _reAttemptCall(call);\n }, call.direction === 'outbound' ? (0, _languageHandler._t)(\"Call Anyway\") : (0, _languageHandler._t)(\"Answer Anyway\"), call.direction === 'outbound' ? (0, _languageHandler._t)(\"Call\") : (0, _languageHandler._t)(\"Answer\"));\n }\n }\n });\n } else {\n if (_MatrixClientPeg2.default.get().getTurnServers().length === 0 && _SettingsStore2.default.getValue(\"fallbackICEServerAllowed\") === null) {\n _showICEFallbackPrompt();\n return;\n }\n\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Call Failed', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Call Failed'),\n description: err.message\n });\n }\n });\n call.on(\"hangup\", function () {\n _setCallState(undefined, call.roomId, \"ended\");\n });\n // map web rtc states to dummy UI state\n // ringing|ringback|connected|ended|busy|stop_ringback|stop_ringing\n call.on(\"state\", function (newState, oldState) {\n if (newState === \"ringing\") {\n _setCallState(call, call.roomId, \"ringing\");\n pause(\"ringbackAudio\");\n } else if (newState === \"invite_sent\") {\n _setCallState(call, call.roomId, \"ringback\");\n play(\"ringbackAudio\");\n } else if (newState === \"ended\" && oldState === \"connected\") {\n _setCallState(undefined, call.roomId, \"ended\");\n pause(\"ringbackAudio\");\n play(\"callendAudio\");\n } else if (newState === \"ended\" && oldState === \"invite_sent\" && (call.hangupParty === \"remote\" || call.hangupParty === \"local\" && call.hangupReason === \"invite_timeout\")) {\n _setCallState(call, call.roomId, \"busy\");\n pause(\"ringbackAudio\");\n play(\"busyAudio\");\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Call Handler', 'Call Timeout', ErrorDialog, {\n title: (0, _languageHandler._t)('Call Timeout'),\n description: (0, _languageHandler._t)('The remote side failed to pick up') + '.'\n });\n } else if (oldState === \"invite_sent\") {\n _setCallState(call, call.roomId, \"stop_ringback\");\n pause(\"ringbackAudio\");\n } else if (oldState === \"ringing\") {\n _setCallState(call, call.roomId, \"stop_ringing\");\n pause(\"ringbackAudio\");\n } else if (newState === \"connected\") {\n _setCallState(call, call.roomId, \"connected\");\n pause(\"ringbackAudio\");\n }\n });\n}\n\nfunction _setCallState(call, roomId, status) {\n console.log(\"Call state in %s changed to %s (%s)\", roomId, status, call ? call.call_state : \"-\");\n calls[roomId] = call;\n\n if (status === \"ringing\") {\n play(\"ringAudio\");\n } else if (call && call.call_state === \"ringing\") {\n pause(\"ringAudio\");\n }\n\n if (call) {\n call.call_state = status;\n }\n _dispatcher2.default.dispatch({\n action: 'call_state',\n room_id: roomId,\n state: status\n });\n}\n\nfunction _showICEFallbackPrompt() {\n var cli = _MatrixClientPeg2.default.get();\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n var code = function code(sub) {\n return React.createElement(\n 'code',\n null,\n sub\n );\n };\n _Modal2.default.createTrackedDialog('No TURN servers', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Call failed due to misconfigured server\"),\n description: React.createElement(\n 'div',\n null,\n React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Please ask the administrator of your homeserver \" + \"(%(homeserverDomain)s) to configure a TURN server in \" + \"order for calls to work reliably.\", { homeserverDomain: cli.getDomain() }, { code: code })\n ),\n React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Alternatively, you can try to use the public server at \" + \"turn.matrix.org, but this will not be as reliable, and \" + \"it will share your IP address with that server. You can also manage \" + \"this in Settings.\", null, { code: code })\n )\n ),\n button: (0, _languageHandler._t)('Try using turn.matrix.org'),\n cancelButton: (0, _languageHandler._t)('OK'),\n onFinished: function onFinished(allow) {\n _SettingsStore2.default.setValue(\"fallbackICEServerAllowed\", null, _SettingsStore.SettingLevel.DEVICE, allow);\n cli.setFallbackICEServerAllowed(allow);\n }\n }, null, true);\n}\n\nfunction _onAction(payload) {\n function placeCall(newCall) {\n _setCallListeners(newCall);\n if (payload.type === 'voice') {\n newCall.placeVoiceCall();\n } else if (payload.type === 'video') {\n newCall.placeVideoCall(payload.remote_element, payload.local_element);\n } else if (payload.type === 'screensharing') {\n var screenCapErrorString = _PlatformPeg2.default.get().screenCaptureErrorString();\n if (screenCapErrorString) {\n _setCallState(undefined, newCall.roomId, \"ended\");\n console.log(\"Can't capture screen: \" + screenCapErrorString);\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Call Handler', 'Unable to capture screen', ErrorDialog, {\n title: (0, _languageHandler._t)('Unable to capture screen'),\n description: screenCapErrorString\n });\n return;\n }\n newCall.placeScreenSharingCall(payload.remote_element, payload.local_element);\n } else {\n console.error(\"Unknown conf call type: %s\", payload.type);\n }\n }\n\n switch (payload.action) {\n case 'place_call':\n {\n if (module.exports.getAnyActiveCall()) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Call Handler', 'Existing Call', ErrorDialog, {\n title: (0, _languageHandler._t)('Existing Call'),\n description: (0, _languageHandler._t)('You are already in a call.')\n });\n return; // don't allow >1 call to be placed.\n }\n\n // if the runtime env doesn't do VoIP, whine.\n if (!_MatrixClientPeg2.default.get().supportsVoip()) {\n var _ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Call Handler', 'VoIP is unsupported', _ErrorDialog, {\n title: (0, _languageHandler._t)('VoIP is unsupported'),\n description: (0, _languageHandler._t)('You cannot place VoIP calls in this browser.')\n });\n return;\n }\n\n var room = _MatrixClientPeg2.default.get().getRoom(payload.room_id);\n if (!room) {\n console.error(\"Room %s does not exist.\", payload.room_id);\n return;\n }\n\n var members = room.getJoinedMembers();\n if (members.length <= 1) {\n var _ErrorDialog2 = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Call Handler', 'Cannot place call with self', _ErrorDialog2, {\n description: (0, _languageHandler._t)('You cannot place a call with yourself.')\n });\n return;\n } else if (members.length === 2) {\n console.log(\"Place %s call in %s\", payload.type, payload.room_id);\n var call = _matrixJsSdk2.default.createNewMatrixCall(_MatrixClientPeg2.default.get(), payload.room_id);\n placeCall(call);\n } else {\n // > 2\n _dispatcher2.default.dispatch({\n action: \"place_conference_call\",\n room_id: payload.room_id,\n type: payload.type,\n remote_element: payload.remote_element,\n local_element: payload.local_element\n });\n }\n }\n break;\n case 'place_conference_call':\n console.log(\"Place conference call in %s\", payload.room_id);\n _startCallApp(payload.room_id, payload.type);\n break;\n case 'incoming_call':\n {\n if (module.exports.getAnyActiveCall()) {\n // ignore multiple incoming calls. in future, we may want a line-1/line-2 setup.\n // we avoid rejecting with \"busy\" in case the user wants to answer it on a different device.\n // in future we could signal a \"local busy\" as a warning to the caller.\n // see https://github.com/vector-im/vector-web/issues/1964\n return;\n }\n\n // if the runtime env doesn't do VoIP, stop here.\n if (!_MatrixClientPeg2.default.get().supportsVoip()) {\n return;\n }\n\n var _call = payload.call;\n _setCallListeners(_call);\n _setCallState(_call, _call.roomId, \"ringing\");\n }\n break;\n case 'hangup':\n if (!calls[payload.room_id]) {\n return; // no call to hangup\n }\n calls[payload.room_id].hangup();\n _setCallState(null, payload.room_id, \"ended\");\n break;\n case 'answer':\n if (!calls[payload.room_id]) {\n return; // no call to answer\n }\n calls[payload.room_id].answer();\n _setCallState(calls[payload.room_id], payload.room_id, \"connected\");\n _dispatcher2.default.dispatch({\n action: \"view_room\",\n room_id: payload.room_id\n });\n break;\n }\n}\n\nif (!global.mxCallHandler) {\n _dispatcher2.default.register(_onAction);\n}\n\nvar callHandler = {\n getCallForRoom: function getCallForRoom(roomId) {\n var call = module.exports.getCall(roomId);\n if (call) return call;\n\n if (ConferenceHandler) {\n call = ConferenceHandler.getConferenceCallForRoom(roomId);\n }\n if (call) return call;\n\n return null;\n },\n\n getCall: function getCall(roomId) {\n return calls[roomId] || null;\n },\n\n getAnyActiveCall: function getAnyActiveCall() {\n var roomsWithCalls = (0, _keys2.default)(calls);\n for (var i = 0; i < roomsWithCalls.length; i++) {\n if (calls[roomsWithCalls[i]] && calls[roomsWithCalls[i]].call_state !== \"ended\") {\n return calls[roomsWithCalls[i]];\n }\n }\n return null;\n },\n\n /**\n * The conference handler is a module that deals with implementation-specific\n * multi-party calling implementations. Riot passes in its own which creates\n * a one-to-one call with a freeswitch conference bridge. As of July 2018,\n * the de-facto way of conference calling is a Jitsi widget, so this is\n * deprecated. It reamins here for two reasons:\n * 1. So Riot still supports joining existing freeswitch conference calls\n * (but doesn't support creating them). After a transition period, we can\n * remove support for joining them too.\n * 2. To hide the one-to-one rooms that old-style conferencing creates. This\n * is much harder to remove: probably either we make Riot leave & forget these\n * rooms after we remove support for joining freeswitch conferences, or we\n * accept that random rooms with cryptic users will suddently appear for\n * anyone who's ever used conference calling, or we are stuck with this\n * code forever.\n *\n * @param {object} confHandler The conference handler object\n */\n setConferenceHandler: function setConferenceHandler(confHandler) {\n ConferenceHandler = confHandler;\n },\n\n getConferenceHandler: function getConferenceHandler() {\n return ConferenceHandler;\n }\n};\n// Only things in here which actually need to be global are the\n// calls list (done separately) and making sure we only register\n// with the dispatcher once (which uses this mechanism but checks\n// separately). This could be tidied up.\nif (global.mxCallHandler === undefined) {\n global.mxCallHandler = callHandler;\n}\n\nmodule.exports = global.mxCallHandler;\n//# sourceMappingURL=CallHandler.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _uniq2 = require('lodash/uniq');\n\nvar _uniq3 = _interopRequireDefault(_uniq2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Class that takes a Matrix Client and flips the m.direct map\n * so the operation of mapping a room ID to which user it's a DM\n * with can be performed efficiently.\n *\n * With 'start', this can also keep itself up to date over time.\n */\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar DMRoomMap = function () {\n function DMRoomMap(matrixClient) {\n (0, _classCallCheck3.default)(this, DMRoomMap);\n\n this.matrixClient = matrixClient;\n this.roomToUser = null;\n // see _onAccountData\n this._hasSentOutPatchDirectAccountDataPatch = false;\n\n // XXX: Force-bind the event handler method because it\n // doesn't call it with our object as the 'this'\n // (use a static property arrow function for this when we can)\n this._onAccountData = this._onAccountData.bind(this);\n\n var mDirectEvent = matrixClient.getAccountData('m.direct');\n this.mDirectEvent = mDirectEvent ? mDirectEvent.getContent() : {};\n this.userToRooms = null;\n }\n\n /**\n * Makes and returns a new shared instance that can then be accessed\n * with shared(). This returned instance is not automatically started.\n */\n\n\n (0, _createClass3.default)(DMRoomMap, [{\n key: 'start',\n value: function start() {\n this._populateRoomToUser();\n this.matrixClient.on(\"accountData\", this._onAccountData);\n }\n }, {\n key: 'stop',\n value: function stop() {\n this.matrixClient.removeListener(\"accountData\", this._onAccountData);\n }\n }, {\n key: '_onAccountData',\n value: function _onAccountData(ev) {\n if (ev.getType() == 'm.direct') {\n this.mDirectEvent = this.matrixClient.getAccountData('m.direct').getContent() || {};\n this.userToRooms = null;\n this.roomToUser = null;\n }\n }\n /**\n * some client bug somewhere is causing some DMs to be marked\n * with ourself, not the other user. Fix it by guessing the other user and\n * modifying userToRooms\n */\n\n }, {\n key: '_patchUpSelfDMs',\n value: function _patchUpSelfDMs(userToRooms) {\n var _this = this;\n\n var myUserId = this.matrixClient.getUserId();\n var selfRoomIds = userToRooms[myUserId];\n if (selfRoomIds) {\n // any self-chats that should not be self-chats?\n var guessedUserIdsThatChanged = selfRoomIds.map(function (roomId) {\n var room = _this.matrixClient.getRoom(roomId);\n if (room) {\n var userId = room.guessDMUserId();\n if (userId && userId !== myUserId) {\n return { userId: userId, roomId: roomId };\n }\n }\n }).filter(function (ids) {\n return !!ids;\n }); //filter out\n // these are actually all legit self-chats\n // bail out\n if (!guessedUserIdsThatChanged.length) {\n return false;\n }\n userToRooms[myUserId] = selfRoomIds.filter(function (roomId) {\n return !guessedUserIdsThatChanged.some(function (ids) {\n return ids.roomId === roomId;\n });\n });\n guessedUserIdsThatChanged.forEach(function (_ref) {\n var userId = _ref.userId,\n roomId = _ref.roomId;\n\n var roomIds = userToRooms[userId];\n if (!roomIds) {\n userToRooms[userId] = [roomId];\n } else {\n roomIds.push(roomId);\n userToRooms[userId] = (0, _uniq3.default)(roomIds);\n }\n });\n return true;\n }\n }\n }, {\n key: 'getDMRoomsForUserId',\n value: function getDMRoomsForUserId(userId) {\n // Here, we return the empty list if there are no rooms,\n // since the number of conversations you have with this user is zero.\n return this._getUserToRooms()[userId] || [];\n }\n }, {\n key: 'getUserIdForRoomId',\n value: function getUserIdForRoomId(roomId) {\n if (this.roomToUser == null) {\n // we lazily populate roomToUser so you can use\n // this class just to call getDMRoomsForUserId\n // which doesn't do very much, but is a fairly\n // convenient wrapper and there's no point\n // iterating through the map if getUserIdForRoomId()\n // is never called.\n this._populateRoomToUser();\n }\n // Here, we return undefined if the room is not in the map:\n // the room ID you gave is not a DM room for any user.\n if (this.roomToUser[roomId] === undefined) {\n // no entry? if the room is an invite, look for the is_direct hint.\n var room = this.matrixClient.getRoom(roomId);\n if (room) {\n return room.getDMInviter();\n }\n }\n return this.roomToUser[roomId];\n }\n }, {\n key: '_getUserToRooms',\n value: function _getUserToRooms() {\n if (!this.userToRooms) {\n var userToRooms = this.mDirectEvent;\n var myUserId = this.matrixClient.getUserId();\n var selfDMs = userToRooms[myUserId];\n if (selfDMs && selfDMs.length) {\n var neededPatching = this._patchUpSelfDMs(userToRooms);\n // to avoid multiple devices fighting to correct\n // the account data, only try to send the corrected\n // version once.\n console.warn('Invalid m.direct account data detected ' + '(self-chats that shouldn\\'t be), patching it up.');\n if (neededPatching && !this._hasSentOutPatchDirectAccountDataPatch) {\n this._hasSentOutPatchDirectAccountDataPatch = true;\n this.matrixClient.setAccountData('m.direct', userToRooms);\n }\n }\n this.userToRooms = userToRooms;\n }\n return this.userToRooms;\n }\n }, {\n key: '_populateRoomToUser',\n value: function _populateRoomToUser() {\n this.roomToUser = {};\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(this._getUserToRooms())), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var user = _step.value;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(this.userToRooms[user]), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var roomId = _step2.value;\n\n this.roomToUser[roomId] = user;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }], [{\n key: 'makeShared',\n value: function makeShared() {\n DMRoomMap._sharedInstance = new DMRoomMap(_MatrixClientPeg2.default.get());\n return DMRoomMap._sharedInstance;\n }\n\n /**\n * Returns a shared instance of the class\n * that uses the singleton matrix client\n * The shared instance must be started before use.\n */\n\n }, {\n key: 'shared',\n value: function shared() {\n return DMRoomMap._sharedInstance;\n }\n }]);\n return DMRoomMap;\n}();\n\nexports.default = DMRoomMap;\nmodule.exports = exports['default'];\n//# sourceMappingURL=DMRoomMap.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.formatCount = formatCount;\nexports.formatCryptoKey = formatCryptoKey;\nexports.hashCode = hashCode;\nexports.getUserNameColorClass = getUserNameColorClass;\nexports.formatCommaSeparatedList = formatCommaSeparatedList;\n\nvar _languageHandler = require(\"../languageHandler\");\n\n/**\n * formats numbers to fit into ~3 characters, suitable for badge counts\n * e.g: 999, 9.9K, 99K, 0.9M, 9.9M, 99M, 0.9B, 9.9B\n */\nfunction formatCount(count) {\n if (count < 1000) return count;\n if (count < 10000) return (count / 1000).toFixed(1) + \"K\";\n if (count < 100000) return (count / 1000).toFixed(0) + \"K\";\n if (count < 10000000) return (count / 1000000).toFixed(1) + \"M\";\n if (count < 100000000) return (count / 1000000).toFixed(0) + \"M\";\n return (count / 1000000000).toFixed(1) + \"B\"; // 10B is enough for anyone, right? :S\n}\n\n/**\n * format a key into groups of 4 characters, for easier visual inspection\n *\n * @param {string} key key to format\n *\n * @return {string}\n */\n/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction formatCryptoKey(key) {\n return key.match(/.{1,4}/g).join(\" \");\n}\n/**\n * calculates a numeric hash for a given string\n *\n * @param {string} str string to hash\n *\n * @return {number}\n */\nfunction hashCode(str) {\n var hash = 0;\n var i = void 0;\n var chr = void 0;\n if (str.length === 0) {\n return hash;\n }\n for (i = 0; i < str.length; i++) {\n chr = str.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0;\n }\n return Math.abs(hash);\n}\n\nfunction getUserNameColorClass(userId) {\n var colorNumber = hashCode(userId) % 8 + 1;\n return \"mx_Username_color\" + colorNumber;\n}\n\n/**\n * Constructs a written English string representing `items`, with an optional\n * limit on the number of items included in the result. If specified and if the\n * length of `items` is greater than the limit, the string \"and n others\" will\n * be appended onto the result. If `items` is empty, returns the empty string.\n * If there is only one item, return it.\n * @param {string[]} items the items to construct a string from.\n * @param {number?} itemLimit the number by which to limit the list.\n * @returns {string} a string constructed by joining `items` with a comma\n * between each item, but with the last item appended as \" and [lastItem]\".\n */\nfunction formatCommaSeparatedList(items, itemLimit) {\n var remaining = itemLimit === undefined ? 0 : Math.max(items.length - itemLimit, 0);\n if (items.length === 0) {\n return \"\";\n } else if (items.length === 1) {\n return items[0];\n } else if (remaining > 0) {\n items = items.slice(0, itemLimit);\n return (0, _languageHandler._t)(\"%(items)s and %(count)s others\", { items: items.join(', '), count: remaining });\n } else {\n var lastItem = items.pop();\n return (0, _languageHandler._t)(\"%(items)s and %(lastItem)s\", { items: items.join(', '), lastItem: lastItem });\n }\n}\n//# sourceMappingURL=FormattingUtils.js.map","'use strict';\nif (require('./_descriptors')) {\n var LIBRARY = require('./_library');\n var global = require('./_global');\n var fails = require('./_fails');\n var $export = require('./_export');\n var $typed = require('./_typed');\n var $buffer = require('./_typed-buffer');\n var ctx = require('./_ctx');\n var anInstance = require('./_an-instance');\n var propertyDesc = require('./_property-desc');\n var hide = require('./_hide');\n var redefineAll = require('./_redefine-all');\n var toInteger = require('./_to-integer');\n var toLength = require('./_to-length');\n var toIndex = require('./_to-index');\n var toAbsoluteIndex = require('./_to-absolute-index');\n var toPrimitive = require('./_to-primitive');\n var has = require('./_has');\n var classof = require('./_classof');\n var isObject = require('./_is-object');\n var toObject = require('./_to-object');\n var isArrayIter = require('./_is-array-iter');\n var create = require('./_object-create');\n var getPrototypeOf = require('./_object-gpo');\n var gOPN = require('./_object-gopn').f;\n var getIterFn = require('./core.get-iterator-method');\n var uid = require('./_uid');\n var wks = require('./_wks');\n var createArrayMethod = require('./_array-methods');\n var createArrayIncludes = require('./_array-includes');\n var speciesConstructor = require('./_species-constructor');\n var ArrayIterators = require('./es6.array.iterator');\n var Iterators = require('./_iterators');\n var $iterDetect = require('./_iter-detect');\n var setSpecies = require('./_set-species');\n var arrayFill = require('./_array-fill');\n var arrayCopyWithin = require('./_array-copy-within');\n var $DP = require('./_object-dp');\n var $GOPD = require('./_object-gopd');\n var dP = $DP.f;\n var gOPD = $GOPD.f;\n var RangeError = global.RangeError;\n var TypeError = global.TypeError;\n var Uint8Array = global.Uint8Array;\n var ARRAY_BUFFER = 'ArrayBuffer';\n var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n var PROTOTYPE = 'prototype';\n var ArrayProto = Array[PROTOTYPE];\n var $ArrayBuffer = $buffer.ArrayBuffer;\n var $DataView = $buffer.DataView;\n var arrayForEach = createArrayMethod(0);\n var arrayFilter = createArrayMethod(2);\n var arraySome = createArrayMethod(3);\n var arrayEvery = createArrayMethod(4);\n var arrayFind = createArrayMethod(5);\n var arrayFindIndex = createArrayMethod(6);\n var arrayIncludes = createArrayIncludes(true);\n var arrayIndexOf = createArrayIncludes(false);\n var arrayValues = ArrayIterators.values;\n var arrayKeys = ArrayIterators.keys;\n var arrayEntries = ArrayIterators.entries;\n var arrayLastIndexOf = ArrayProto.lastIndexOf;\n var arrayReduce = ArrayProto.reduce;\n var arrayReduceRight = ArrayProto.reduceRight;\n var arrayJoin = ArrayProto.join;\n var arraySort = ArrayProto.sort;\n var arraySlice = ArrayProto.slice;\n var arrayToString = ArrayProto.toString;\n var arrayToLocaleString = ArrayProto.toLocaleString;\n var ITERATOR = wks('iterator');\n var TAG = wks('toStringTag');\n var TYPED_CONSTRUCTOR = uid('typed_constructor');\n var DEF_CONSTRUCTOR = uid('def_constructor');\n var ALL_CONSTRUCTORS = $typed.CONSTR;\n var TYPED_ARRAY = $typed.TYPED;\n var VIEW = $typed.VIEW;\n var WRONG_LENGTH = 'Wrong length!';\n\n var $map = createArrayMethod(1, function (O, length) {\n return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n });\n\n var LITTLE_ENDIAN = fails(function () {\n // eslint-disable-next-line no-undef\n return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n });\n\n var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n new Uint8Array(1).set({});\n });\n\n var toOffset = function (it, BYTES) {\n var offset = toInteger(it);\n if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n return offset;\n };\n\n var validate = function (it) {\n if (isObject(it) && TYPED_ARRAY in it) return it;\n throw TypeError(it + ' is not a typed array!');\n };\n\n var allocate = function (C, length) {\n if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n throw TypeError('It is not a typed array constructor!');\n } return new C(length);\n };\n\n var speciesFromList = function (O, list) {\n return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n };\n\n var fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = allocate(C, length);\n while (length > index) result[index] = list[index++];\n return result;\n };\n\n var addGetter = function (it, key, internal) {\n dP(it, key, { get: function () { return this._d[internal]; } });\n };\n\n var $from = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iterFn = getIterFn(O);\n var i, length, values, result, step, iterator;\n if (iterFn != undefined && !isArrayIter(iterFn)) {\n for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n values.push(step.value);\n } O = values;\n }\n if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n };\n\n var $of = function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = allocate(this, length);\n while (length > index) result[index] = arguments[index++];\n return result;\n };\n\n // iOS Safari 6.x fails here\n var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n var $toLocaleString = function toLocaleString() {\n return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n };\n\n var proto = {\n copyWithin: function copyWithin(target, start /* , end */) {\n return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n },\n every: function every(callbackfn /* , thisArg */) {\n return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n return arrayFill.apply(validate(this), arguments);\n },\n filter: function filter(callbackfn /* , thisArg */) {\n return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n arguments.length > 1 ? arguments[1] : undefined));\n },\n find: function find(predicate /* , thisArg */) {\n return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n findIndex: function findIndex(predicate /* , thisArg */) {\n return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n forEach: function forEach(callbackfn /* , thisArg */) {\n arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n indexOf: function indexOf(searchElement /* , fromIndex */) {\n return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n includes: function includes(searchElement /* , fromIndex */) {\n return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n join: function join(separator) { // eslint-disable-line no-unused-vars\n return arrayJoin.apply(validate(this), arguments);\n },\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n return arrayLastIndexOf.apply(validate(this), arguments);\n },\n map: function map(mapfn /* , thisArg */) {\n return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduce.apply(validate(this), arguments);\n },\n reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduceRight.apply(validate(this), arguments);\n },\n reverse: function reverse() {\n var that = this;\n var length = validate(that).length;\n var middle = Math.floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n },\n some: function some(callbackfn /* , thisArg */) {\n return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n sort: function sort(comparefn) {\n return arraySort.call(validate(this), comparefn);\n },\n subarray: function subarray(begin, end) {\n var O = validate(this);\n var length = O.length;\n var $begin = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n O.buffer,\n O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n );\n }\n };\n\n var $slice = function slice(start, end) {\n return speciesFromList(this, arraySlice.call(validate(this), start, end));\n };\n\n var $set = function set(arrayLike /* , offset */) {\n validate(this);\n var offset = toOffset(arguments[1], 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError(WRONG_LENGTH);\n while (index < len) this[offset + index] = src[index++];\n };\n\n var $iterators = {\n entries: function entries() {\n return arrayEntries.call(validate(this));\n },\n keys: function keys() {\n return arrayKeys.call(validate(this));\n },\n values: function values() {\n return arrayValues.call(validate(this));\n }\n };\n\n var isTAIndex = function (target, key) {\n return isObject(target)\n && target[TYPED_ARRAY]\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n };\n var $getDesc = function getOwnPropertyDescriptor(target, key) {\n return isTAIndex(target, key = toPrimitive(key, true))\n ? propertyDesc(2, target[key])\n : gOPD(target, key);\n };\n var $setDesc = function defineProperty(target, key, desc) {\n if (isTAIndex(target, key = toPrimitive(key, true))\n && isObject(desc)\n && has(desc, 'value')\n && !has(desc, 'get')\n && !has(desc, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !desc.configurable\n && (!has(desc, 'writable') || desc.writable)\n && (!has(desc, 'enumerable') || desc.enumerable)\n ) {\n target[key] = desc.value;\n return target;\n } return dP(target, key, desc);\n };\n\n if (!ALL_CONSTRUCTORS) {\n $GOPD.f = $getDesc;\n $DP.f = $setDesc;\n }\n\n $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n getOwnPropertyDescriptor: $getDesc,\n defineProperty: $setDesc\n });\n\n if (fails(function () { arrayToString.call({}); })) {\n arrayToString = arrayToLocaleString = function toString() {\n return arrayJoin.call(this);\n };\n }\n\n var $TypedArrayPrototype$ = redefineAll({}, proto);\n redefineAll($TypedArrayPrototype$, $iterators);\n hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n redefineAll($TypedArrayPrototype$, {\n slice: $slice,\n set: $set,\n constructor: function () { /* noop */ },\n toString: arrayToString,\n toLocaleString: $toLocaleString\n });\n addGetter($TypedArrayPrototype$, 'buffer', 'b');\n addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n addGetter($TypedArrayPrototype$, 'length', 'e');\n dP($TypedArrayPrototype$, TAG, {\n get: function () { return this[TYPED_ARRAY]; }\n });\n\n // eslint-disable-next-line max-statements\n module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n CLAMPED = !!CLAMPED;\n var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + KEY;\n var SETTER = 'set' + KEY;\n var TypedArray = global[NAME];\n var Base = TypedArray || {};\n var TAC = TypedArray && getPrototypeOf(TypedArray);\n var FORCED = !TypedArray || !$typed.ABV;\n var O = {};\n var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n var getter = function (that, index) {\n var data = that._d;\n return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n };\n var setter = function (that, index, value) {\n var data = that._d;\n if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n };\n var addElement = function (that, index) {\n dP(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n if (FORCED) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME, '_d');\n var index = 0;\n var offset = 0;\n var buffer, byteLength, length, klass;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new $ArrayBuffer(byteLength);\n } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n buffer = data;\n offset = toOffset($offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - offset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (TYPED_ARRAY in data) {\n return fromList(TypedArray, data);\n } else {\n return $from.call(TypedArray, data);\n }\n hide(that, '_d', {\n b: buffer,\n o: offset,\n l: byteLength,\n e: length,\n v: new $DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n hide(TypedArrayPrototype, 'constructor', TypedArray);\n } else if (!fails(function () {\n TypedArray(1);\n }) || !fails(function () {\n new TypedArray(-1); // eslint-disable-line no-new\n }) || !$iterDetect(function (iter) {\n new TypedArray(); // eslint-disable-line no-new\n new TypedArray(null); // eslint-disable-line no-new\n new TypedArray(1.5); // eslint-disable-line no-new\n new TypedArray(iter); // eslint-disable-line no-new\n }, true)) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME);\n var klass;\n // `ws` module bug, temporarily remove validation length for Uint8Array\n // https://github.com/websockets/ws/pull/645\n if (!isObject(data)) return new Base(toIndex(data));\n if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n return $length !== undefined\n ? new Base(data, toOffset($offset, BYTES), $length)\n : $offset !== undefined\n ? new Base(data, toOffset($offset, BYTES))\n : new Base(data);\n }\n if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n return $from.call(TypedArray, data);\n });\n arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n });\n TypedArray[PROTOTYPE] = TypedArrayPrototype;\n if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n }\n var $nativeIterator = TypedArrayPrototype[ITERATOR];\n var CORRECT_ITER_NAME = !!$nativeIterator\n && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n var $iterator = $iterators.values;\n hide(TypedArray, TYPED_CONSTRUCTOR, true);\n hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n hide(TypedArrayPrototype, VIEW, true);\n hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n dP(TypedArrayPrototype, TAG, {\n get: function () { return NAME; }\n });\n }\n\n O[NAME] = TypedArray;\n\n $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n $export($export.S, NAME, {\n BYTES_PER_ELEMENT: BYTES\n });\n\n $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n from: $from,\n of: $of\n });\n\n if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n $export($export.P, NAME, proto);\n\n setSpecies(NAME);\n\n $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n $export($export.P + $export.F * fails(function () {\n new TypedArray(1).slice();\n }), NAME, { slice: $slice });\n\n $export($export.P + $export.F * (fails(function () {\n return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n }) || !fails(function () {\n TypedArrayPrototype.toLocaleString.call([1, 2]);\n })), NAME, { toLocaleString: $toLocaleString });\n\n Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n };\n} else module.exports = function () { /* empty */ };\n","var Map = require('./es6.map');\nvar $export = require('./_export');\nvar shared = require('./_shared')('metadata');\nvar store = shared.store || (shared.store = new (require('./es6.weak-map'))());\n\nvar getOrCreateMetadataMap = function (target, targetKey, create) {\n var targetMetadata = store.get(target);\n if (!targetMetadata) {\n if (!create) return undefined;\n store.set(target, targetMetadata = new Map());\n }\n var keyMetadata = targetMetadata.get(targetKey);\n if (!keyMetadata) {\n if (!create) return undefined;\n targetMetadata.set(targetKey, keyMetadata = new Map());\n } return keyMetadata;\n};\nvar ordinaryHasOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? false : metadataMap.has(MetadataKey);\n};\nvar ordinaryGetOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);\n};\nvar ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) {\n getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);\n};\nvar ordinaryOwnMetadataKeys = function (target, targetKey) {\n var metadataMap = getOrCreateMetadataMap(target, targetKey, false);\n var keys = [];\n if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); });\n return keys;\n};\nvar toMetaKey = function (it) {\n return it === undefined || typeof it == 'symbol' ? it : String(it);\n};\nvar exp = function (O) {\n $export($export.S, 'Reflect', O);\n};\n\nmodule.exports = {\n store: store,\n map: getOrCreateMetadataMap,\n has: ordinaryHasOwnMetadata,\n get: ordinaryGetOwnMetadata,\n set: ordinaryDefineOwnMetadata,\n keys: ordinaryOwnMetadataKeys,\n key: toMetaKey,\n exp: exp\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","exports.f = {}.propertyIsEnumerable;\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _getPrototypeOf = require(\"../core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _getOwnPropertyDescriptor = require(\"../core-js/object/get-own-property-descriptor\");\n\nvar _getOwnPropertyDescriptor2 = _interopRequireDefault(_getOwnPropertyDescriptor);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = (0, _getOwnPropertyDescriptor2.default)(object, property);\n\n if (desc === undefined) {\n var parent = (0, _getPrototypeOf2.default)(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n};","'use strict';\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _PlatformPeg = require('./PlatformPeg');\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nvar _TextForEvent = require('./TextForEvent');\n\nvar _TextForEvent2 = _interopRequireDefault(_TextForEvent);\n\nvar _Analytics = require('./Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _Avatar = require('./Avatar');\n\nvar _Avatar2 = _interopRequireDefault(_Avatar);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('./languageHandler');\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _SettingsStore = require('./settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n * Dispatches:\n * {\n * action: \"notifier_enabled\",\n * value: boolean\n * }\n */\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MAX_PENDING_ENCRYPTED = 20;\n\nvar Notifier = {\n notifsByRoom: {},\n\n // A list of event IDs that we've received but need to wait until\n // they're decrypted until we decide whether to notify for them\n // or not\n pendingEncryptedEventIds: [],\n\n notificationMessageForEvent: function notificationMessageForEvent(ev) {\n return _TextForEvent2.default.textForEvent(ev);\n },\n\n _displayPopupNotification: function _displayPopupNotification(ev, room) {\n var plaf = _PlatformPeg2.default.get();\n if (!plaf) {\n return;\n }\n if (!plaf.supportsNotifications() || !plaf.maySendNotifications()) {\n return;\n }\n if (global.document.hasFocus()) {\n return;\n }\n\n var msg = this.notificationMessageForEvent(ev);\n if (!msg) return;\n\n var title = void 0;\n if (!ev.sender || room.name === ev.sender.name) {\n title = room.name;\n // notificationMessageForEvent includes sender,\n // but we already have the sender here\n if (ev.getContent().body) msg = ev.getContent().body;\n } else if (ev.getType() === 'm.room.member') {\n // context is all in the message here, we don't need\n // to display sender info\n title = room.name;\n } else if (ev.sender) {\n title = ev.sender.name + \" (\" + room.name + \")\";\n // notificationMessageForEvent includes sender,\n // but we've just out sender in the title\n if (ev.getContent().body) msg = ev.getContent().body;\n }\n\n if (!this.isBodyEnabled()) {\n msg = '';\n }\n\n var avatarUrl = null;\n if (ev.sender && !_SettingsStore2.default.getValue(\"lowBandwidth\")) {\n avatarUrl = _Avatar2.default.avatarUrlForMember(ev.sender, 40, 40, 'crop');\n }\n\n var notif = plaf.displayNotification(title, msg, avatarUrl, room);\n\n // if displayNotification returns non-null, the platform supports\n // clearing notifications later, so keep track of this.\n if (notif) {\n if (this.notifsByRoom[ev.getRoomId()] === undefined) this.notifsByRoom[ev.getRoomId()] = [];\n this.notifsByRoom[ev.getRoomId()].push(notif);\n }\n },\n\n getSoundForRoom: function () {\n var _ref = (0, _bluebird.method)(function (roomId) {\n // We do no caching here because the SDK caches setting\n // and the browser will cache the sound.\n var content = _SettingsStore2.default.getValue(\"notificationSound\", roomId);\n if (!content) {\n return null;\n }\n\n if (!content.url) {\n console.warn(roomId + ' has custom notification sound event, but no url key');\n return null;\n }\n\n if (!content.url.startsWith(\"mxc://\")) {\n console.warn(roomId + ' has custom notification sound event, but url is not a mxc url');\n return null;\n }\n\n // Ideally in here we could use MSC1310 to detect the type of file, and reject it.\n\n return {\n url: _MatrixClientPeg2.default.get().mxcUrlToHttp(content.url),\n name: content.name,\n type: content.type,\n size: content.size\n };\n });\n\n function getSoundForRoom(_x) {\n return _ref.apply(this, arguments);\n }\n\n return getSoundForRoom;\n }(),\n\n _playAudioNotification: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(ev, room) {\n var sound, selector, audioElement;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(this.getSoundForRoom(room.roomId));\n\n case 2:\n sound = _context.sent;\n\n console.log('Got sound ' + (sound && sound.name || \"default\") + ' for ' + room.roomId);\n\n _context.prev = 4;\n selector = document.querySelector(sound ? 'audio[src=\\'' + sound.url + '\\']' : \"#messageAudio\");\n audioElement = selector;\n\n if (selector) {\n _context.next = 14;\n break;\n }\n\n if (sound) {\n _context.next = 11;\n break;\n }\n\n console.error(\"No audio element or sound to play for notification\");\n return _context.abrupt('return');\n\n case 11:\n audioElement = new Audio(sound.url);\n if (sound.type) {\n audioElement.type = sound.type;\n }\n document.body.appendChild(audioElement);\n\n case 14:\n audioElement.play();\n _context.next = 20;\n break;\n\n case 17:\n _context.prev = 17;\n _context.t0 = _context['catch'](4);\n\n console.warn(\"Caught error when trying to fetch room notification sound:\", _context.t0);\n\n case 20:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[4, 17]]);\n }));\n\n function _playAudioNotification(_x2, _x3) {\n return _ref2.apply(this, arguments);\n }\n\n return _playAudioNotification;\n }(),\n\n start: function start() {\n this.boundOnEvent = this.onEvent.bind(this);\n this.boundOnSyncStateChange = this.onSyncStateChange.bind(this);\n this.boundOnRoomReceipt = this.onRoomReceipt.bind(this);\n this.boundOnEventDecrypted = this.onEventDecrypted.bind(this);\n _MatrixClientPeg2.default.get().on('event', this.boundOnEvent);\n _MatrixClientPeg2.default.get().on('Room.receipt', this.boundOnRoomReceipt);\n _MatrixClientPeg2.default.get().on('Event.decrypted', this.boundOnEventDecrypted);\n _MatrixClientPeg2.default.get().on(\"sync\", this.boundOnSyncStateChange);\n this.toolbarHidden = false;\n this.isSyncing = false;\n },\n\n stop: function stop() {\n if (_MatrixClientPeg2.default.get() && this.boundOnRoomTimeline) {\n _MatrixClientPeg2.default.get().removeListener('Event', this.boundOnEvent);\n _MatrixClientPeg2.default.get().removeListener('Room.receipt', this.boundOnRoomReceipt);\n _MatrixClientPeg2.default.get().removeListener('Event.decrypted', this.boundOnEventDecrypted);\n _MatrixClientPeg2.default.get().removeListener('sync', this.boundOnSyncStateChange);\n }\n this.isSyncing = false;\n },\n\n supportsDesktopNotifications: function supportsDesktopNotifications() {\n var plaf = _PlatformPeg2.default.get();\n return plaf && plaf.supportsNotifications();\n },\n\n setEnabled: function setEnabled(enable, callback) {\n var plaf = _PlatformPeg2.default.get();\n if (!plaf) return;\n\n // Dev note: We don't set the \"notificationsEnabled\" setting to true here because it is a\n // calculated value. It is determined based upon whether or not the master rule is enabled\n // and other flags. Setting it here would cause a circular reference.\n\n _Analytics2.default.trackEvent('Notifier', 'Set Enabled', enable);\n\n // make sure that we persist the current setting audio_enabled setting\n // before changing anything\n if (_SettingsStore2.default.isLevelSupported(_SettingsStore.SettingLevel.DEVICE)) {\n _SettingsStore2.default.setValue(\"audioNotificationsEnabled\", null, _SettingsStore.SettingLevel.DEVICE, this.isEnabled());\n }\n\n if (enable) {\n // Attempt to get permission from user\n plaf.requestNotificationPermission().done(function (result) {\n if (result !== 'granted') {\n // The permission request was dismissed or denied\n // TODO: Support alternative branding in messaging\n var description = result === 'denied' ? (0, _languageHandler._t)('Riot does not have permission to send you notifications - ' + 'please check your browser settings') : (0, _languageHandler._t)('Riot was not given permission to send notifications - please try again');\n var ErrorDialog = _index2.default.getComponent('dialogs.ErrorDialog');\n _Modal2.default.createTrackedDialog('Unable to enable Notifications', result, ErrorDialog, {\n title: (0, _languageHandler._t)('Unable to enable Notifications'),\n description: description\n });\n return;\n }\n\n if (callback) callback();\n _dispatcher2.default.dispatch({\n action: \"notifier_enabled\",\n value: true\n });\n });\n } else {\n _dispatcher2.default.dispatch({\n action: \"notifier_enabled\",\n value: false\n });\n }\n // set the notifications_hidden flag, as the user has knowingly interacted\n // with the setting we shouldn't nag them any further\n this.setToolbarHidden(true);\n },\n\n isEnabled: function isEnabled() {\n return this.isPossible() && _SettingsStore2.default.getValue(\"notificationsEnabled\");\n },\n\n isPossible: function isPossible() {\n var plaf = _PlatformPeg2.default.get();\n if (!plaf) return false;\n if (!plaf.supportsNotifications()) return false;\n if (!plaf.maySendNotifications()) return false;\n\n return true; // possible, but not necessarily enabled\n },\n\n isBodyEnabled: function isBodyEnabled() {\n return this.isEnabled() && _SettingsStore2.default.getValue(\"notificationBodyEnabled\");\n },\n\n isAudioEnabled: function isAudioEnabled() {\n return this.isEnabled() && _SettingsStore2.default.getValue(\"audioNotificationsEnabled\");\n },\n\n setToolbarHidden: function setToolbarHidden(hidden) {\n var persistent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n this.toolbarHidden = hidden;\n\n _Analytics2.default.trackEvent('Notifier', 'Set Toolbar Hidden', hidden);\n\n // XXX: why are we dispatching this here?\n // this is nothing to do with notifier_enabled\n _dispatcher2.default.dispatch({\n action: \"notifier_enabled\",\n value: this.isEnabled()\n });\n\n // update the info to localStorage for persistent settings\n if (persistent && global.localStorage) {\n global.localStorage.setItem(\"notifications_hidden\", hidden);\n }\n },\n\n shouldShowToolbar: function shouldShowToolbar() {\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n return false;\n }\n var isGuest = client.isGuest();\n return !isGuest && this.supportsDesktopNotifications() && !this.isEnabled() && !this._isToolbarHidden();\n },\n\n _isToolbarHidden: function _isToolbarHidden() {\n // Check localStorage for any such meta data\n if (global.localStorage) {\n return global.localStorage.getItem(\"notifications_hidden\") === \"true\";\n }\n\n return this.toolbarHidden;\n },\n\n onSyncStateChange: function onSyncStateChange(state) {\n if (state === \"SYNCING\") {\n this.isSyncing = true;\n } else if (state === \"STOPPED\" || state === \"ERROR\") {\n this.isSyncing = false;\n }\n },\n\n onEvent: function onEvent(ev) {\n if (!this.isSyncing) return; // don't alert for any messages initially\n if (ev.sender && ev.sender.userId === _MatrixClientPeg2.default.get().credentials.userId) return;\n\n // If it's an encrypted event and the type is still 'm.room.encrypted',\n // it hasn't yet been decrypted, so wait until it is.\n if (ev.isBeingDecrypted() || ev.isDecryptionFailure()) {\n this.pendingEncryptedEventIds.push(ev.getId());\n // don't let the list fill up indefinitely\n while (this.pendingEncryptedEventIds.length > MAX_PENDING_ENCRYPTED) {\n this.pendingEncryptedEventIds.shift();\n }\n return;\n }\n\n this._evaluateEvent(ev);\n },\n\n onEventDecrypted: function onEventDecrypted(ev) {\n // 'decrypted' means the decryption process has finished: it may have failed,\n // in which case it might decrypt soon if the keys arrive\n if (ev.isDecryptionFailure()) return;\n\n var idx = this.pendingEncryptedEventIds.indexOf(ev.getId());\n if (idx === -1) return;\n\n this.pendingEncryptedEventIds.splice(idx, 1);\n this._evaluateEvent(ev);\n },\n\n onRoomReceipt: function onRoomReceipt(ev, room) {\n if (room.getUnreadNotificationCount() === 0) {\n // ideally we would clear each notification when it was read,\n // but we have no way, given a read receipt, to know whether\n // the receipt comes before or after an event, so we can't\n // do this. Instead, clear all notifications for a room once\n // there are no notifs left in that room., which is not quite\n // as good but it's something.\n var plaf = _PlatformPeg2.default.get();\n if (!plaf) return;\n if (this.notifsByRoom[room.roomId] === undefined) return;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(this.notifsByRoom[room.roomId]), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var notif = _step.value;\n\n plaf.clearNotification(notif);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n delete this.notifsByRoom[room.roomId];\n }\n },\n\n _evaluateEvent: function _evaluateEvent(ev) {\n var room = _MatrixClientPeg2.default.get().getRoom(ev.getRoomId());\n var actions = _MatrixClientPeg2.default.get().getPushActionsForEvent(ev);\n if (actions && actions.notify) {\n if (this.isEnabled()) {\n this._displayPopupNotification(ev, room);\n }\n if (actions.tweaks.sound && this.isAudioEnabled()) {\n _PlatformPeg2.default.get().loudNotification(ev, room);\n this._playAudioNotification(ev, room);\n }\n }\n }\n};\n\nif (!global.mxNotifier) {\n global.mxNotifier = Notifier;\n}\n\nmodule.exports = global.mxNotifier;\n//# sourceMappingURL=Notifier.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _setImmediate2 = require('babel-runtime/core-js/set-immediate');\n\nvar _setImmediate3 = _interopRequireDefault(_setImmediate2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nexports.createMenu = createMenu;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _Accessibility = require('../../utils/Accessibility');\n\nvar _Keyboard = require('../../Keyboard');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Shamelessly ripped off Modal.js. There's probably a better way\n// of doing reusable widgets like dialog boxes & menus where we go and\n// pass in a custom control as the actual body.\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar ContextualMenuContainerId = \"mx_ContextualMenu_Container\";\n\nfunction getOrCreateContainer() {\n var container = document.getElementById(ContextualMenuContainerId);\n\n if (!container) {\n container = document.createElement(\"div\");\n container.id = ContextualMenuContainerId;\n document.body.appendChild(container);\n }\n\n return container;\n}\n\nvar ContextualMenu = function (_React$Component) {\n (0, _inherits3.default)(ContextualMenu, _React$Component);\n\n function ContextualMenu() {\n (0, _classCallCheck3.default)(this, ContextualMenu);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (ContextualMenu.__proto__ || (0, _getPrototypeOf2.default)(ContextualMenu)).call(this));\n\n _this._onKeyDown = function (ev) {\n if (ev.keyCode === _Keyboard.KeyCode.ESCAPE) {\n ev.stopPropagation();\n ev.preventDefault();\n _this.props.closeMenu();\n }\n };\n\n _this.state = {\n contextMenuRect: null\n };\n\n _this.onContextMenu = _this.onContextMenu.bind(_this);\n _this.collectContextMenuRect = _this.collectContextMenuRect.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(ContextualMenu, [{\n key: 'collectContextMenuRect',\n value: function collectContextMenuRect(element) {\n // We don't need to clean up when unmounting, so ignore\n if (!element) return;\n\n // For screen readers to find the thing\n (0, _Accessibility.focusCapturedRef)(element);\n\n this.setState({\n contextMenuRect: element.getBoundingClientRect()\n });\n }\n }, {\n key: 'onContextMenu',\n value: function onContextMenu(e) {\n if (this.props.closeMenu) {\n this.props.closeMenu();\n\n e.preventDefault();\n var x = e.clientX;\n var y = e.clientY;\n\n // XXX: This isn't pretty but the only way to allow opening a different context menu on right click whilst\n // a context menu and its click-guard are up without completely rewriting how the context menus work.\n (0, _setImmediate3.default)(function () {\n var clickEvent = document.createEvent('MouseEvents');\n clickEvent.initMouseEvent('contextmenu', true, true, window, 0, 0, 0, x, y, false, false, false, false, 0, null);\n document.elementFromPoint(x, y).dispatchEvent(clickEvent);\n });\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var position = {};\n var chevronFace = null;\n var props = this.props;\n\n if (props.top) {\n position.top = props.top;\n } else {\n position.bottom = props.bottom;\n }\n\n if (props.left) {\n position.left = props.left;\n chevronFace = 'left';\n } else {\n position.right = props.right;\n chevronFace = 'right';\n }\n\n var contextMenuRect = this.state.contextMenuRect || null;\n var padding = 10;\n\n var chevronOffset = {};\n if (props.chevronFace) {\n chevronFace = props.chevronFace;\n }\n var hasChevron = chevronFace && chevronFace !== \"none\";\n\n if (chevronFace === 'top' || chevronFace === 'bottom') {\n chevronOffset.left = props.chevronOffset;\n } else {\n var target = position.top;\n\n // By default, no adjustment is made\n var adjusted = target;\n\n // If we know the dimensions of the context menu, adjust its position\n // such that it does not leave the (padded) window.\n if (contextMenuRect) {\n adjusted = Math.min(position.top, document.body.clientHeight - contextMenuRect.height - padding);\n }\n\n position.top = adjusted;\n chevronOffset.top = Math.max(props.chevronOffset, props.chevronOffset + target - adjusted);\n }\n\n var chevron = hasChevron ? _react2.default.createElement('div', { style: chevronOffset, className: \"mx_ContextualMenu_chevron_\" + chevronFace }) : undefined;\n var className = 'mx_ContextualMenu_wrapper';\n\n var menuClasses = (0, _classnames2.default)({\n 'mx_ContextualMenu': true,\n 'mx_HiddenFocusable': true, // hide browser outline\n 'mx_ContextualMenu_left': !hasChevron && position.left,\n 'mx_ContextualMenu_right': !hasChevron && position.right,\n 'mx_ContextualMenu_top': !hasChevron && position.top,\n 'mx_ContextualMenu_bottom': !hasChevron && position.bottom,\n 'mx_ContextualMenu_withChevron_left': chevronFace === 'left',\n 'mx_ContextualMenu_withChevron_right': chevronFace === 'right',\n 'mx_ContextualMenu_withChevron_top': chevronFace === 'top',\n 'mx_ContextualMenu_withChevron_bottom': chevronFace === 'bottom'\n });\n\n var menuStyle = {};\n if (props.menuWidth) {\n menuStyle.width = props.menuWidth;\n }\n\n if (props.menuHeight) {\n menuStyle.height = props.menuHeight;\n }\n\n if (!isNaN(Number(props.menuPaddingTop))) {\n menuStyle[\"paddingTop\"] = props.menuPaddingTop;\n }\n if (!isNaN(Number(props.menuPaddingLeft))) {\n menuStyle[\"paddingLeft\"] = props.menuPaddingLeft;\n }\n if (!isNaN(Number(props.menuPaddingBottom))) {\n menuStyle[\"paddingBottom\"] = props.menuPaddingBottom;\n }\n if (!isNaN(Number(props.menuPaddingRight))) {\n menuStyle[\"paddingRight\"] = props.menuPaddingRight;\n }\n\n var wrapperStyle = {};\n if (!isNaN(Number(props.zIndex))) {\n menuStyle[\"zIndex\"] = props.zIndex + 1;\n wrapperStyle[\"zIndex\"] = props.zIndex;\n }\n\n var ElementClass = props.elementClass;\n\n // FIXME: If a menu uses getDefaultProps it clobbers the onFinished\n // property set here so you can't close the menu from a button click!\n return _react2.default.createElement(\n 'div',\n { className: className, style: (0, _extends3.default)({}, position, wrapperStyle), onKeyDown: this._onKeyDown },\n _react2.default.createElement(\n 'div',\n { className: menuClasses, style: menuStyle, ref: this.collectContextMenuRect, tabIndex: 0 },\n chevron,\n _react2.default.createElement(ElementClass, (0, _extends3.default)({}, props, { onFinished: props.closeMenu, onResize: props.windowResize }))\n ),\n props.hasBackground && _react2.default.createElement('div', { className: 'mx_ContextualMenu_background', style: wrapperStyle,\n onClick: props.closeMenu, onContextMenu: this.onContextMenu })\n );\n }\n }]);\n return ContextualMenu;\n}(_react2.default.Component);\n\nexports.default = ContextualMenu;\nfunction createMenu(ElementClass, props) {\n var hasBackground = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n var closeMenu = function closeMenu() {\n _reactDom2.default.unmountComponentAtNode(getOrCreateContainer());\n\n if (props && props.onFinished) {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n props.onFinished.apply(null, args);\n }\n };\n\n // We only reference closeMenu once per call to createMenu\n var menu = _react2.default.createElement(ContextualMenu, (0, _extends3.default)({\n hasBackground: hasBackground\n }, props, {\n elementClass: ElementClass,\n closeMenu: closeMenu // eslint-disable-line react/jsx-no-bind\n , windowResize: closeMenu // eslint-disable-line react/jsx-no-bind\n }));\n\n _reactDom2.default.render(menu, getOrCreateContainer());\n\n return { close: closeMenu };\n}\n//# sourceMappingURL=ContextualMenu.js.map","\"use strict\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\n/**\n * Colors.\n */\n\nexports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'];\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n// eslint-disable-next-line complexity\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n return true;\n } // Internet Explorer and Edge do not support colors.\n\n\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n } // Is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\n\n return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773\n typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/);\n}\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);\n\n if (!this.useColors) {\n return;\n }\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit'); // The final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function (match) {\n if (match === '%%') {\n return;\n }\n\n index++;\n\n if (match === '%c') {\n // We only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n args.splice(lastC, 0, c);\n}\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\n\nfunction log() {\n var _console;\n\n // This hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return (typeof console === \"undefined\" ? \"undefined\" : _typeof(console)) === 'object' && console.log && (_console = console).log.apply(_console, arguments);\n}\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n try {\n if (namespaces) {\n exports.storage.setItem('debug', namespaces);\n } else {\n exports.storage.removeItem('debug');\n }\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n var r;\n\n try {\n r = exports.storage.getItem('debug');\n } catch (error) {} // Swallow\n // XXX (@Qix-) should we be logging these?\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\n\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\n\nfunction localstorage() {\n try {\n // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n // The Browser also has localStorage in the global context.\n return localStorage;\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n\nmodule.exports = require('./common')(exports);\nvar formatters = module.exports.formatters;\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n try {\n return JSON.stringify(v);\n } catch (error) {\n return '[UnexpectedJSONParseError]: ' + error.message;\n }\n};\n\n","module.exports = false;\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule invariant\n */\n\n\"use strict\";\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function (condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error('Invariant Violation: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _events = require('events');\n\nvar _events2 = _interopRequireDefault(_events);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar BULK_REQUEST_DEBOUNCE_MS = 200;\n\n// Does the server support groups? Assume yes until we receive M_UNRECOGNIZED.\n// If true, flair can function and we should keep sending requests for groups and avatars.\nvar _groupSupport = true;\n\nvar USER_GROUPS_CACHE_BUST_MS = 1800000; // 30 mins\nvar GROUP_PROFILES_CACHE_BUST_MS = 1800000; // 30 mins\n\n/**\n * Stores data used by \n */\n\nvar FlairStore = function (_EventEmitter) {\n (0, _inherits3.default)(FlairStore, _EventEmitter);\n\n function FlairStore(matrixClient) {\n (0, _classCallCheck3.default)(this, FlairStore);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (FlairStore.__proto__ || (0, _getPrototypeOf2.default)(FlairStore)).call(this));\n\n _this._matrixClient = matrixClient;\n _this._userGroups = {\n // $userId: ['+group1:domain', '+group2:domain', ...]\n };\n _this._groupProfiles = {\n // $groupId: {\n // avatar_url: 'mxc://...'\n // }\n };\n _this._groupProfilesPromise = {\n // $groupId: Promise\n };\n _this._usersPending = {\n // $userId: {\n // prom: Promise\n // resolve: () => {}\n // reject: () => {}\n // }\n };\n _this._usersInFlight = {\n // This has the same schema as _usersPending\n };\n\n _this._debounceTimeoutID = null;\n return _this;\n }\n\n (0, _createClass3.default)(FlairStore, [{\n key: 'groupSupport',\n value: function groupSupport() {\n return _groupSupport;\n }\n }, {\n key: 'invalidatePublicisedGroups',\n value: function invalidatePublicisedGroups(userId) {\n delete this._userGroups[userId];\n }\n }, {\n key: 'getPublicisedGroupsCached',\n value: function getPublicisedGroupsCached(matrixClient, userId) {\n var _this2 = this;\n\n if (this._userGroups[userId]) {\n return _bluebird2.default.resolve(this._userGroups[userId]);\n }\n\n // Bulk lookup ongoing, return promise to resolve/reject\n if (this._usersPending[userId]) {\n return this._usersPending[userId].prom;\n }\n // User has been moved from pending to in-flight\n if (this._usersInFlight[userId]) {\n return this._usersInFlight[userId].prom;\n }\n\n this._usersPending[userId] = {};\n this._usersPending[userId].prom = new _bluebird2.default(function (resolve, reject) {\n _this2._usersPending[userId].resolve = resolve;\n _this2._usersPending[userId].reject = reject;\n }).then(function (groups) {\n _this2._userGroups[userId] = groups;\n setTimeout(function () {\n delete _this2._userGroups[userId];\n }, USER_GROUPS_CACHE_BUST_MS);\n return _this2._userGroups[userId];\n }).catch(function (err) {\n // Indicate whether the homeserver supports groups\n if (err.errcode === 'M_UNRECOGNIZED') {\n console.warn('Cannot display flair, server does not support groups');\n _groupSupport = false;\n // Return silently to avoid spamming for non-supporting servers\n return;\n }\n console.error('Could not get groups for user', userId, err);\n throw err;\n }).finally(function () {\n delete _this2._usersInFlight[userId];\n });\n\n // This debounce will allow consecutive requests for the public groups of users that\n // are sent in intervals of < BULK_REQUEST_DEBOUNCE_MS to be batched and only requested\n // when no more requests are received within the next BULK_REQUEST_DEBOUNCE_MS. The naive\n // implementation would do a request that only requested the groups for `userId`, leading\n // to a worst and best case of 1 user per request. This implementation's worst is still\n // 1 user per request but only if the requests are > BULK_REQUEST_DEBOUNCE_MS apart and the\n // best case is N users per request.\n //\n // This is to reduce the number of requests made whilst trading off latency when viewing\n // a Flair component.\n if (this._debounceTimeoutID) clearTimeout(this._debounceTimeoutID);\n this._debounceTimeoutID = setTimeout(function () {\n _this2._batchedGetPublicGroups(matrixClient);\n }, BULK_REQUEST_DEBOUNCE_MS);\n\n return this._usersPending[userId].prom;\n }\n }, {\n key: '_batchedGetPublicGroups',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(matrixClient) {\n var _this3 = this;\n\n var resp, updatedUserGroups;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n // Move users pending to users in flight\n this._usersInFlight = this._usersPending;\n this._usersPending = {};\n\n resp = {\n users: []\n };\n _context.prev = 3;\n _context.next = 6;\n return (0, _bluebird.resolve)(matrixClient.getPublicisedGroups((0, _keys2.default)(this._usersInFlight)));\n\n case 6:\n resp = _context.sent;\n _context.next = 13;\n break;\n\n case 9:\n _context.prev = 9;\n _context.t0 = _context['catch'](3);\n\n // Propagate the same error to all usersInFlight\n (0, _keys2.default)(this._usersInFlight).forEach(function (userId) {\n // The promise should always exist for userId, but do a null-check anyway\n if (!_this3._usersInFlight[userId]) return;\n _this3._usersInFlight[userId].reject(_context.t0);\n });\n return _context.abrupt('return');\n\n case 13:\n updatedUserGroups = resp.users;\n\n (0, _keys2.default)(this._usersInFlight).forEach(function (userId) {\n // The promise should always exist for userId, but do a null-check anyway\n if (!_this3._usersInFlight[userId]) return;\n _this3._usersInFlight[userId].resolve(updatedUserGroups[userId] || []);\n });\n\n case 15:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[3, 9]]);\n }));\n\n function _batchedGetPublicGroups(_x) {\n return _ref.apply(this, arguments);\n }\n\n return _batchedGetPublicGroups;\n }()\n }, {\n key: 'getGroupProfileCached',\n value: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(matrixClient, groupId) {\n var _this4 = this;\n\n var profile;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!this._groupProfiles[groupId]) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt('return', this._groupProfiles[groupId]);\n\n case 2:\n if (!this._groupProfilesPromise[groupId]) {\n _context2.next = 12;\n break;\n }\n\n _context2.prev = 3;\n _context2.next = 6;\n return (0, _bluebird.resolve)(this._groupProfilesPromise[groupId]);\n\n case 6:\n _context2.next = 11;\n break;\n\n case 8:\n _context2.prev = 8;\n _context2.t0 = _context2['catch'](3);\n return _context2.abrupt('return', null);\n\n case 11:\n return _context2.abrupt('return', this._groupProfiles[groupId]);\n\n case 12:\n\n // No request yet, start one\n console.log('FlairStore: Request group profile of ' + groupId);\n this._groupProfilesPromise[groupId] = matrixClient.getGroupProfile(groupId);\n\n profile = void 0;\n _context2.prev = 15;\n _context2.next = 18;\n return (0, _bluebird.resolve)(this._groupProfilesPromise[groupId]);\n\n case 18:\n profile = _context2.sent;\n _context2.next = 26;\n break;\n\n case 21:\n _context2.prev = 21;\n _context2.t1 = _context2['catch'](15);\n\n console.log('FlairStore: Failed to get group profile for ' + groupId, _context2.t1);\n // Don't retry, but allow a retry when the profile is next requested\n delete this._groupProfilesPromise[groupId];\n return _context2.abrupt('return', null);\n\n case 26:\n\n this._groupProfiles[groupId] = {\n groupId: groupId,\n avatarUrl: profile.avatar_url,\n name: profile.name,\n shortDescription: profile.short_description\n };\n delete this._groupProfilesPromise[groupId];\n\n /// XXX: This is verging on recreating a third \"Flux\"-looking Store. We really\n /// should replace FlairStore with a Flux store and some async actions.\n console.log('FlairStore: Emit updateGroupProfile for ' + groupId);\n this.emit('updateGroupProfile');\n\n setTimeout(function () {\n _this4.refreshGroupProfile(matrixClient, groupId);\n }, GROUP_PROFILES_CACHE_BUST_MS);\n\n return _context2.abrupt('return', this._groupProfiles[groupId]);\n\n case 32:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this, [[3, 8], [15, 21]]);\n }));\n\n function getGroupProfileCached(_x2, _x3) {\n return _ref2.apply(this, arguments);\n }\n\n return getGroupProfileCached;\n }()\n }, {\n key: 'refreshGroupProfile',\n value: function refreshGroupProfile(matrixClient, groupId) {\n // Invalidate the cache\n delete this._groupProfiles[groupId];\n // Fetch new profile data, and cache it\n return this.getGroupProfileCached(matrixClient, groupId);\n }\n }]);\n return FlairStore;\n}(_events2.default);\n\nif (global.singletonFlairStore === undefined) {\n global.singletonFlairStore = new FlairStore();\n}\nexports.default = global.singletonFlairStore;\nmodule.exports = exports['default'];\n//# sourceMappingURL=FlairStore.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nexports.getDisplayAliasForRoom = getDisplayAliasForRoom;\nexports.getOnlyOtherMember = getOnlyOtherMember;\nexports.isConfCallRoom = isConfCallRoom;\nexports.looksLikeDirectMessageRoom = looksLikeDirectMessageRoom;\nexports.guessAndSetDMRoom = guessAndSetDMRoom;\nexports.setDMRoom = setDMRoom;\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Given a room object, return the alias we should use for it,\n * if any. This could be the canonical alias if one exists, otherwise\n * an alias selected arbitrarily but deterministically from the list\n * of aliases. Otherwise return null;\n */\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction getDisplayAliasForRoom(room) {\n return room.getCanonicalAlias() || room.getAliases()[0];\n}\n\n/**\n * If the room contains only two members including the logged-in user,\n * return the other one. Otherwise, return null.\n */\nfunction getOnlyOtherMember(room, myUserId) {\n if (room.currentState.getJoinedMemberCount() === 2) {\n return room.getJoinedMembers().filter(function (m) {\n return m.userId !== myUserId;\n })[0];\n }\n\n return null;\n}\n\nfunction _isConfCallRoom(room, myUserId, conferenceHandler) {\n if (!conferenceHandler) return false;\n\n var myMembership = room.getMyMembership();\n if (myMembership != \"join\") {\n return false;\n }\n\n var otherMember = getOnlyOtherMember(room, myUserId);\n if (!otherMember) {\n return false;\n }\n\n if (conferenceHandler.isConferenceUser(otherMember.userId)) {\n return true;\n }\n\n return false;\n}\n\n// Cache whether a room is a conference call. Assumes that rooms will always\n// either will or will not be a conference call room.\nvar isConfCallRoomCache = {\n // $roomId: bool\n};\n\nfunction isConfCallRoom(room, myUserId, conferenceHandler) {\n if (isConfCallRoomCache[room.roomId] !== undefined) {\n return isConfCallRoomCache[room.roomId];\n }\n\n var result = _isConfCallRoom(room, myUserId, conferenceHandler);\n\n isConfCallRoomCache[room.roomId] = result;\n\n return result;\n}\n\nfunction looksLikeDirectMessageRoom(room, myUserId) {\n var myMembership = room.getMyMembership();\n var me = room.getMember(myUserId);\n\n if (myMembership == \"join\" || myMembership === \"ban\" || me && me.isKicked()) {\n // Used to split rooms via tags\n var tagNames = (0, _keys2.default)(room.tags);\n // Used for 1:1 direct chats\n // Show 1:1 chats in seperate \"Direct Messages\" section as long as they haven't\n // been moved to a different tag section\n var totalMemberCount = room.currentState.getJoinedMemberCount() + room.currentState.getInvitedMemberCount();\n if (totalMemberCount === 2 && !tagNames.length) {\n return true;\n }\n }\n return false;\n}\n\nfunction guessAndSetDMRoom(room, isDirect) {\n var newTarget = void 0;\n if (isDirect) {\n var guessedUserId = guessDMRoomTargetId(room, _MatrixClientPeg2.default.get().getUserId());\n newTarget = guessedUserId;\n } else {\n newTarget = null;\n }\n\n return setDMRoom(room.roomId, newTarget);\n}\n\n/**\n * Marks or unmarks the given room as being as a DM room.\n * @param {string} roomId The ID of the room to modify\n * @param {string} userId The user ID of the desired DM\n room target user or null to un-mark\n this room as a DM room\n * @returns {object} A promise\n */\nfunction setDMRoom(roomId, userId) {\n if (_MatrixClientPeg2.default.get().isGuest()) {\n return _bluebird2.default.resolve();\n }\n\n var mDirectEvent = _MatrixClientPeg2.default.get().getAccountData('m.direct');\n var dmRoomMap = {};\n\n if (mDirectEvent !== undefined) dmRoomMap = mDirectEvent.getContent();\n\n // remove it from the lists of any others users\n // (it can only be a DM room for one person)\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(dmRoomMap)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var thisUserId = _step.value;\n\n var _roomList = dmRoomMap[thisUserId];\n\n if (thisUserId != userId) {\n var indexOfRoom = _roomList.indexOf(roomId);\n if (indexOfRoom > -1) {\n _roomList.splice(indexOfRoom, 1);\n }\n }\n }\n\n // now add it, if it's not already there\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (userId) {\n var roomList = dmRoomMap[userId] || [];\n if (roomList.indexOf(roomId) == -1) {\n roomList.push(roomId);\n }\n dmRoomMap[userId] = roomList;\n }\n\n return _MatrixClientPeg2.default.get().setAccountData('m.direct', dmRoomMap);\n}\n\n/**\n * Given a room, estimate which of its members is likely to\n * be the target if the room were a DM room and return that user.\n *\n * @param {Object} room Target room\n * @param {string} myUserId User ID of the current user\n * @returns {string} User ID of the user that the room is probably a DM with\n */\nfunction guessDMRoomTargetId(room, myUserId) {\n var oldestTs = void 0;\n var oldestUser = void 0;\n\n // Pick the joined user who's been here longest (and isn't us),\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(room.getJoinedMembers()), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var user = _step2.value;\n\n if (user.userId == myUserId) continue;\n\n if (oldestTs === undefined || user.events.member && user.events.member.getTs() < oldestTs) {\n oldestUser = user;\n oldestTs = user.events.member.getTs();\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n if (oldestUser) return oldestUser.userId;\n\n // if there are no joined members other than us, use the oldest member\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(room.currentState.getMembers()), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _user = _step3.value;\n\n if (_user.userId == myUserId) continue;\n\n if (oldestTs === undefined || _user.events.member && _user.events.member.getTs() < oldestTs) {\n oldestUser = _user;\n oldestTs = _user.events.member.getTs();\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n if (oldestUser === undefined) return myUserId;\n return oldestUser.userId;\n}\n//# sourceMappingURL=Rooms.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getArea = require('../get-area');\n\nvar _getArea2 = _interopRequireDefault(_getArea);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n var top = window.pageYOffset;\n var left = window.pageXOffset;\n var width = window.innerWidth;\n var height = window.innerHeight;\n\n var right = left + width;\n var bottom = top + height;\n\n return (0, _getArea2.default)({\n top: top, left: left, right: right, bottom: bottom\n });\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar prefix = function prefix(key) {\n return 'private-react-beautiful-dnd-key-do-not-use-' + key;\n};\n\nvar storeKey = exports.storeKey = prefix('store');\nvar droppableIdKey = exports.droppableIdKey = prefix('droppable-id');\nvar dimensionMarshalKey = exports.dimensionMarshalKey = prefix('dimension-marshal');\nvar styleContextKey = exports.styleContextKey = prefix('style-context');\nvar canLiftContextKey = exports.canLiftContextKey = prefix('can-lift');","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","module.exports = require('./_hide');\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","exports.f = require('./_wks');\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","/*\nCopyright 2016, 2017 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module models/event-timeline\n */\n\nvar _freeze = require(\"babel-runtime/core-js/object/freeze\");\n\nvar _freeze2 = _interopRequireDefault(_freeze);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar RoomState = require(\"./room-state\");\n\n/**\n * Construct a new EventTimeline\n *\n *

An EventTimeline represents a contiguous sequence of events in a room.\n *\n *

As well as keeping track of the events themselves, it stores the state of\n * the room at the beginning and end of the timeline, and pagination tokens for\n * going backwards and forwards in the timeline.\n *\n *

In order that clients can meaningfully maintain an index into a timeline,\n * the EventTimeline object tracks a 'baseIndex'. This starts at zero, but is\n * incremented when events are prepended to the timeline. The index of an event\n * relative to baseIndex therefore remains constant.\n *\n *

Once a timeline joins up with its neighbour, they are linked together into a\n * doubly-linked list.\n *\n * @param {EventTimelineSet} eventTimelineSet the set of timelines this is part of\n * @constructor\n */\nfunction EventTimeline(eventTimelineSet) {\n this._eventTimelineSet = eventTimelineSet;\n this._roomId = eventTimelineSet.room ? eventTimelineSet.room.roomId : null;\n this._events = [];\n this._baseIndex = 0;\n this._startState = new RoomState(this._roomId);\n this._startState.paginationToken = null;\n this._endState = new RoomState(this._roomId);\n this._endState.paginationToken = null;\n\n this._prevTimeline = null;\n this._nextTimeline = null;\n\n // this is used by client.js\n this._paginationRequests = { 'b': null, 'f': null };\n\n this._name = this._roomId + \":\" + new Date().toISOString();\n}\n\n/**\n * Symbolic constant for methods which take a 'direction' argument:\n * refers to the start of the timeline, or backwards in time.\n */\nEventTimeline.BACKWARDS = \"b\";\n\n/**\n * Symbolic constant for methods which take a 'direction' argument:\n * refers to the end of the timeline, or forwards in time.\n */\nEventTimeline.FORWARDS = \"f\";\n\n/**\n * Initialise the start and end state with the given events\n *\n *

This can only be called before any events are added.\n *\n * @param {MatrixEvent[]} stateEvents list of state events to initialise the\n * state with.\n * @throws {Error} if an attempt is made to call this after addEvent is called.\n */\nEventTimeline.prototype.initialiseState = function (stateEvents) {\n if (this._events.length > 0) {\n throw new Error(\"Cannot initialise state after events are added\");\n }\n\n // We previously deep copied events here and used different copies in\n // the oldState and state events: this decision seems to date back\n // quite a way and was apparently made to fix a bug where modifications\n // made to the start state leaked through to the end state.\n // This really shouldn't be possible though: the events themselves should\n // not change. Duplicating the events uses a lot of extra memory,\n // so we now no longer do it. To assert that they really do never change,\n // freeze them! Note that we can't do this for events in general:\n // although it looks like the only things preventing us are the\n // 'status' flag, forwardLooking (which is only set once when adding to the\n // timeline) and possibly the sender (which seems like it should never be\n // reset but in practice causes a lot of the tests to break).\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(stateEvents), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var e = _step.value;\n\n (0, _freeze2.default)(e);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n this._startState.setStateEvents(stateEvents);\n this._endState.setStateEvents(stateEvents);\n};\n\n/**\n * Forks the (live) timeline, taking ownership of the existing directional state of this timeline.\n * All attached listeners will keep receiving state updates from the new live timeline state.\n * The end state of this timeline gets replaced with an independent copy of the current RoomState,\n * and will need a new pagination token if it ever needs to paginate forwards.\n\n * @param {string} direction EventTimeline.BACKWARDS to get the state at the\n * start of the timeline; EventTimeline.FORWARDS to get the state at the end\n * of the timeline.\n *\n * @return {EventTimeline} the new timeline\n */\nEventTimeline.prototype.forkLive = function (direction) {\n var forkState = this.getState(direction);\n var timeline = new EventTimeline(this._eventTimelineSet);\n timeline._startState = forkState.clone();\n // Now clobber the end state of the new live timeline with that from the\n // previous live timeline. It will be identical except that we'll keep\n // using the same RoomMember objects for the 'live' set of members with any\n // listeners still attached\n timeline._endState = forkState;\n // Firstly, we just stole the current timeline's end state, so it needs a new one.\n // Make an immutable copy of the state so back pagination will get the correct sentinels.\n this._endState = forkState.clone();\n return timeline;\n};\n\n/**\n * Creates an independent timeline, inheriting the directional state from this timeline.\n *\n * @param {string} direction EventTimeline.BACKWARDS to get the state at the\n * start of the timeline; EventTimeline.FORWARDS to get the state at the end\n * of the timeline.\n *\n * @return {EventTimeline} the new timeline\n */\nEventTimeline.prototype.fork = function (direction) {\n var forkState = this.getState(direction);\n var timeline = new EventTimeline(this._eventTimelineSet);\n timeline._startState = forkState.clone();\n timeline._endState = forkState.clone();\n return timeline;\n};\n\n/**\n * Get the ID of the room for this timeline\n * @return {string} room ID\n */\nEventTimeline.prototype.getRoomId = function () {\n return this._roomId;\n};\n\n/**\n * Get the filter for this timeline's timelineSet (if any)\n * @return {Filter} filter\n */\nEventTimeline.prototype.getFilter = function () {\n return this._eventTimelineSet.getFilter();\n};\n\n/**\n * Get the timelineSet for this timeline\n * @return {EventTimelineSet} timelineSet\n */\nEventTimeline.prototype.getTimelineSet = function () {\n return this._eventTimelineSet;\n};\n\n/**\n * Get the base index.\n *\n *

This is an index which is incremented when events are prepended to the\n * timeline. An individual event therefore stays at the same index in the array\n * relative to the base index (although note that a given event's index may\n * well be less than the base index, thus giving that event a negative relative\n * index).\n *\n * @return {number}\n */\nEventTimeline.prototype.getBaseIndex = function () {\n return this._baseIndex;\n};\n\n/**\n * Get the list of events in this context\n *\n * @return {MatrixEvent[]} An array of MatrixEvents\n */\nEventTimeline.prototype.getEvents = function () {\n return this._events;\n};\n\n/**\n * Get the room state at the start/end of the timeline\n *\n * @param {string} direction EventTimeline.BACKWARDS to get the state at the\n * start of the timeline; EventTimeline.FORWARDS to get the state at the end\n * of the timeline.\n *\n * @return {RoomState} state at the start/end of the timeline\n */\nEventTimeline.prototype.getState = function (direction) {\n if (direction == EventTimeline.BACKWARDS) {\n return this._startState;\n } else if (direction == EventTimeline.FORWARDS) {\n return this._endState;\n } else {\n throw new Error(\"Invalid direction '\" + direction + \"'\");\n }\n};\n\n/**\n * Get a pagination token\n *\n * @param {string} direction EventTimeline.BACKWARDS to get the pagination\n * token for going backwards in time; EventTimeline.FORWARDS to get the\n * pagination token for going forwards in time.\n *\n * @return {?string} pagination token\n */\nEventTimeline.prototype.getPaginationToken = function (direction) {\n return this.getState(direction).paginationToken;\n};\n\n/**\n * Set a pagination token\n *\n * @param {?string} token pagination token\n *\n * @param {string} direction EventTimeline.BACKWARDS to set the pagination\n * token for going backwards in time; EventTimeline.FORWARDS to set the\n * pagination token for going forwards in time.\n */\nEventTimeline.prototype.setPaginationToken = function (token, direction) {\n this.getState(direction).paginationToken = token;\n};\n\n/**\n * Get the next timeline in the series\n *\n * @param {string} direction EventTimeline.BACKWARDS to get the previous\n * timeline; EventTimeline.FORWARDS to get the next timeline.\n *\n * @return {?EventTimeline} previous or following timeline, if they have been\n * joined up.\n */\nEventTimeline.prototype.getNeighbouringTimeline = function (direction) {\n if (direction == EventTimeline.BACKWARDS) {\n return this._prevTimeline;\n } else if (direction == EventTimeline.FORWARDS) {\n return this._nextTimeline;\n } else {\n throw new Error(\"Invalid direction '\" + direction + \"'\");\n }\n};\n\n/**\n * Set the next timeline in the series\n *\n * @param {EventTimeline} neighbour previous/following timeline\n *\n * @param {string} direction EventTimeline.BACKWARDS to set the previous\n * timeline; EventTimeline.FORWARDS to set the next timeline.\n *\n * @throws {Error} if an attempt is made to set the neighbouring timeline when\n * it is already set.\n */\nEventTimeline.prototype.setNeighbouringTimeline = function (neighbour, direction) {\n if (this.getNeighbouringTimeline(direction)) {\n throw new Error(\"timeline already has a neighbouring timeline - \" + \"cannot reset neighbour (direction: \" + direction + \")\");\n }\n\n if (direction == EventTimeline.BACKWARDS) {\n this._prevTimeline = neighbour;\n } else if (direction == EventTimeline.FORWARDS) {\n this._nextTimeline = neighbour;\n } else {\n throw new Error(\"Invalid direction '\" + direction + \"'\");\n }\n\n // make sure we don't try to paginate this timeline\n this.setPaginationToken(null, direction);\n};\n\n/**\n * Add a new event to the timeline, and update the state\n *\n * @param {MatrixEvent} event new event\n * @param {boolean} atStart true to insert new event at the start\n */\nEventTimeline.prototype.addEvent = function (event, atStart) {\n var stateContext = atStart ? this._startState : this._endState;\n\n // only call setEventMetadata on the unfiltered timelineSets\n var timelineSet = this.getTimelineSet();\n if (timelineSet.room && timelineSet.room.getUnfilteredTimelineSet() === timelineSet) {\n EventTimeline.setEventMetadata(event, stateContext, atStart);\n\n // modify state\n if (event.isState()) {\n stateContext.setStateEvents([event]);\n // it is possible that the act of setting the state event means we\n // can set more metadata (specifically sender/target props), so try\n // it again if the prop wasn't previously set. It may also mean that\n // the sender/target is updated (if the event set was a room member event)\n // so we want to use the *updated* member (new avatar/name) instead.\n //\n // However, we do NOT want to do this on member events if we're going\n // back in time, else we'll set the .sender value for BEFORE the given\n // member event, whereas we want to set the .sender value for the ACTUAL\n // member event itself.\n if (!event.sender || event.getType() === \"m.room.member\" && !atStart) {\n EventTimeline.setEventMetadata(event, stateContext, atStart);\n }\n }\n }\n\n var insertIndex = void 0;\n\n if (atStart) {\n insertIndex = 0;\n } else {\n insertIndex = this._events.length;\n }\n\n this._events.splice(insertIndex, 0, event); // insert element\n if (atStart) {\n this._baseIndex++;\n }\n};\n\n/**\n * Static helper method to set sender and target properties\n *\n * @param {MatrixEvent} event the event whose metadata is to be set\n * @param {RoomState} stateContext the room state to be queried\n * @param {bool} toStartOfTimeline if true the event's forwardLooking flag is set false\n */\nEventTimeline.setEventMetadata = function (event, stateContext, toStartOfTimeline) {\n // set sender and target properties\n event.sender = stateContext.getSentinelMember(event.getSender());\n if (event.getType() === \"m.room.member\") {\n event.target = stateContext.getSentinelMember(event.getStateKey());\n }\n if (event.isState()) {\n // room state has no concept of 'old' or 'current', but we want the\n // room state to regress back to previous values if toStartOfTimeline\n // is set, which means inspecting prev_content if it exists. This\n // is done by toggling the forwardLooking flag.\n if (toStartOfTimeline) {\n event.forwardLooking = false;\n }\n }\n};\n\n/**\n * Remove an event from the timeline\n *\n * @param {string} eventId ID of event to be removed\n * @return {?MatrixEvent} removed event, or null if not found\n */\nEventTimeline.prototype.removeEvent = function (eventId) {\n for (var i = this._events.length - 1; i >= 0; i--) {\n var ev = this._events[i];\n if (ev.getId() == eventId) {\n this._events.splice(i, 1);\n if (i < this._baseIndex) {\n this._baseIndex--;\n }\n return ev;\n }\n }\n return null;\n};\n\n/**\n * Return a string to identify this timeline, for debugging\n *\n * @return {string} name for this timeline\n */\nEventTimeline.prototype.toString = function () {\n return this._name;\n};\n\n/**\n * The EventTimeline class\n */\nmodule.exports = EventTimeline;\n//# sourceMappingURL=event-timeline.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.UserAddressType = exports.addressTypes = undefined;\nexports.getAddressType = getAddressType;\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar emailRegex = /^\\S+@\\S+\\.\\S+$/;\n\nvar mxUserIdRegex = /^@\\S+:\\S+$/;\nvar mxRoomIdRegex = /^!\\S+:\\S+$/;\n\nvar addressTypes = exports.addressTypes = ['mx-user-id', 'mx-room-id', 'email'];\n\n// PropType definition for an object describing\n// an address that can be invited to a room (which\n// could be a third party identifier or a matrix ID)\n// along with some additional information about the\n// address / target.\nvar UserAddressType = exports.UserAddressType = _propTypes2.default.shape({\n addressType: _propTypes2.default.oneOf(addressTypes).isRequired,\n address: _propTypes2.default.string.isRequired,\n displayName: _propTypes2.default.string,\n avatarMxc: _propTypes2.default.string,\n // true if the address is known to be a valid address (eg. is a real\n // user we've seen) or false otherwise (eg. is just an address the\n // user has entered)\n isKnown: _propTypes2.default.bool\n});\n\nfunction getAddressType(inputText) {\n var isEmailAddress = emailRegex.test(inputText);\n var isUserId = mxUserIdRegex.test(inputText);\n var isRoomId = mxRoomIdRegex.test(inputText);\n\n // sanity check the input for user IDs\n if (isEmailAddress) {\n return 'email';\n } else if (isUserId) {\n return 'mx-user-id';\n } else if (isRoomId) {\n return 'mx-room-id';\n } else {\n return null;\n }\n}\n//# sourceMappingURL=UserAddress.js.map","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _DMRoomMap = require('./utils/DMRoomMap');\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n avatarUrlForMember: function avatarUrlForMember(member, width, height, resizeMethod) {\n var url = member.getAvatarUrl(_MatrixClientPeg2.default.get().getHomeserverUrl(), Math.floor(width * window.devicePixelRatio), Math.floor(height * window.devicePixelRatio), resizeMethod, false, false);\n if (!url) {\n // member can be null here currently since on invites, the JS SDK\n // does not have enough info to build a RoomMember object for\n // the inviter.\n url = this.defaultAvatarUrlForString(member ? member.userId : '');\n }\n return url;\n },\n\n avatarUrlForUser: function avatarUrlForUser(user, width, height, resizeMethod) {\n var url = _matrixJsSdk.ContentRepo.getHttpUriForMxc(_MatrixClientPeg2.default.get().getHomeserverUrl(), user.avatarUrl, Math.floor(width * window.devicePixelRatio), Math.floor(height * window.devicePixelRatio), resizeMethod);\n if (!url || url.length === 0) {\n return null;\n }\n return url;\n },\n\n defaultAvatarUrlForString: function defaultAvatarUrlForString(s) {\n var images = ['03b381', '368bd6', 'ac3ba8'];\n var total = 0;\n for (var i = 0; i < s.length; ++i) {\n total += s.charCodeAt(i);\n }\n return require('../res/img/' + images[total % images.length] + '.png');\n },\n\n /**\n * returns the first (non-sigil) character of 'name',\n * converted to uppercase\n * @param {string} name\n * @return {string} the first letter\n */\n getInitialLetter: function getInitialLetter(name) {\n if (!name) {\n // XXX: We should find out what causes the name to sometimes be falsy.\n console.trace(\"`name` argument to `getInitialLetter` not supplied\");\n return undefined;\n }\n if (name.length < 1) {\n return undefined;\n }\n\n var idx = 0;\n var initial = name[0];\n if ((initial === '@' || initial === '#' || initial === '+') && name[1]) {\n idx++;\n }\n\n // string.codePointAt(0) would do this, but that isn't supported by\n // some browsers (notably PhantomJS).\n var chars = 1;\n var first = name.charCodeAt(idx);\n\n // check if it’s the start of a surrogate pair\n if (first >= 0xD800 && first <= 0xDBFF && name[idx + 1]) {\n var second = name.charCodeAt(idx + 1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n chars++;\n }\n }\n\n var firstChar = name.substring(idx, idx + chars);\n return firstChar.toUpperCase();\n },\n avatarUrlForRoom: function avatarUrlForRoom(room, width, height, resizeMethod) {\n var explicitRoomAvatar = room.getAvatarUrl(_MatrixClientPeg2.default.get().getHomeserverUrl(), width, height, resizeMethod, false);\n if (explicitRoomAvatar) {\n return explicitRoomAvatar;\n }\n\n var otherMember = null;\n var otherUserId = _DMRoomMap2.default.shared().getUserIdForRoomId(room.roomId);\n if (otherUserId) {\n otherMember = room.getMember(otherUserId);\n } else {\n // if the room is not marked as a 1:1, but only has max 2 members\n // then still try to show any avatar (pref. other member)\n otherMember = room.getAvatarFallbackMember();\n }\n if (otherMember) {\n return otherMember.getAvatarUrl(_MatrixClientPeg2.default.get().getHomeserverUrl(), width, height, resizeMethod, false);\n }\n return null;\n }\n};\n//# sourceMappingURL=Avatar.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar DEBUG = 0;\n\n// utility to turn #rrggbb or rgb(r,g,b) into [red,green,blue]\nfunction colorToRgb(color) {\n if (!color) {\n return [0, 0, 0];\n }\n\n if (color[0] === '#') {\n color = color.slice(1);\n if (color.length === 3) {\n color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];\n }\n var val = parseInt(color, 16);\n var r = val >> 16 & 255;\n var g = val >> 8 & 255;\n var b = val & 255;\n return [r, g, b];\n } else {\n var match = color.match(/rgb\\((.*?),(.*?),(.*?)\\)/);\n if (match) {\n return [parseInt(match[1]), parseInt(match[2]), parseInt(match[3])];\n }\n }\n return [0, 0, 0];\n}\n\n// utility to turn [red,green,blue] into #rrggbb\nfunction rgbToColor(rgb) {\n var val = rgb[0] << 16 | rgb[1] << 8 | rgb[2];\n return '#' + (0x1000000 + val).toString(16).slice(1);\n}\n\nvar Tinter = function () {\n function Tinter() {\n (0, _classCallCheck3.default)(this, Tinter);\n\n // The default colour keys to be replaced as referred to in CSS\n // (should be overridden by .mx_theme_accentColor and .mx_theme_secondaryAccentColor)\n this.keyRgb = [\"rgb(118, 207, 166)\", // Vector Green\n \"rgb(234, 245, 240)\", // Vector Light Green\n \"rgb(211, 239, 225)\"];\n\n // Some algebra workings for calculating the tint % of Vector Green & Light Green\n // x * 118 + (1 - x) * 255 = 234\n // x * 118 + 255 - 255 * x = 234\n // x * 118 - x * 255 = 234 - 255\n // (255 - 118) x = 255 - 234\n // x = (255 - 234) / (255 - 118) = 0.16\n\n // The colour keys to be replaced as referred to in SVGs\n this.keyHex = [\"#76CFA6\", // Vector Green\n \"#EAF5F0\", // Vector Light Green\n \"#D3EFE1\", // roomsublist-label-bg-color (20% Green overlaid on Light Green)\n \"#FFFFFF\", // white highlights of the SVGs (for switching to dark theme)\n \"#000000\"];\n\n // track the replacement colours actually being used\n // defaults to our keys.\n this.colors = [this.keyHex[0], this.keyHex[1], this.keyHex[2], this.keyHex[3], this.keyHex[4]];\n\n // track the most current tint request inputs (which may differ from the\n // end result stored in this.colors\n this.currentTint = [undefined, undefined, undefined, undefined, undefined];\n\n this.cssFixups = [\n // { theme: {\n // style: a style object that should be fixed up taken from a stylesheet\n // attr: name of the attribute to be clobbered, e.g. 'color'\n // index: ordinal of primary, secondary or tertiary\n // },\n // }\n ];\n\n // CSS attributes to be fixed up\n this.cssAttrs = [\"color\", \"backgroundColor\", \"borderColor\", \"borderTopColor\", \"borderBottomColor\", \"borderLeftColor\"];\n\n this.svgAttrs = [\"fill\", \"stroke\"];\n\n // List of functions to call when the tint changes.\n this.tintables = [];\n\n // the currently loaded theme (if any)\n this.theme = undefined;\n\n // whether to force a tint (e.g. after changing theme)\n this.forceTint = false;\n }\n\n /**\n * Register a callback to fire when the tint changes.\n * This is used to rewrite the tintable SVGs with the new tint.\n *\n * It's not possible to unregister a tintable callback. So this can only be\n * used to register a static callback. If a set of tintables will change\n * over time then the best bet is to register a single callback for the\n * entire set.\n *\n * @param {Function} tintable Function to call when the tint changes.\n */\n\n\n (0, _createClass3.default)(Tinter, [{\n key: 'registerTintable',\n value: function registerTintable(tintable) {\n this.tintables.push(tintable);\n }\n }, {\n key: 'getKeyRgb',\n value: function getKeyRgb() {\n return this.keyRgb;\n }\n }, {\n key: 'tint',\n value: function tint(primaryColor, secondaryColor, tertiaryColor) {\n return;\n // eslint-disable-next-line no-unreachable\n this.currentTint[0] = primaryColor;\n this.currentTint[1] = secondaryColor;\n this.currentTint[2] = tertiaryColor;\n\n this.calcCssFixups();\n\n if (DEBUG) {\n console.log(\"Tinter.tint(\" + primaryColor + \", \" + secondaryColor + \", \" + tertiaryColor + \")\");\n }\n\n if (!primaryColor) {\n primaryColor = this.keyRgb[0];\n secondaryColor = this.keyRgb[1];\n tertiaryColor = this.keyRgb[2];\n }\n\n if (!secondaryColor) {\n var x = 0.16; // average weighting factor calculated from vector green & light green\n var rgb = colorToRgb(primaryColor);\n rgb[0] = x * rgb[0] + (1 - x) * 255;\n rgb[1] = x * rgb[1] + (1 - x) * 255;\n rgb[2] = x * rgb[2] + (1 - x) * 255;\n secondaryColor = rgbToColor(rgb);\n }\n\n if (!tertiaryColor) {\n var _x = 0.19;\n var rgb1 = colorToRgb(primaryColor);\n var rgb2 = colorToRgb(secondaryColor);\n rgb1[0] = _x * rgb1[0] + (1 - _x) * rgb2[0];\n rgb1[1] = _x * rgb1[1] + (1 - _x) * rgb2[1];\n rgb1[2] = _x * rgb1[2] + (1 - _x) * rgb2[2];\n tertiaryColor = rgbToColor(rgb1);\n }\n\n if (this.forceTint == false && this.colors[0] === primaryColor && this.colors[1] === secondaryColor && this.colors[2] === tertiaryColor) {\n return;\n }\n\n this.forceTint = false;\n\n this.colors[0] = primaryColor;\n this.colors[1] = secondaryColor;\n this.colors[2] = tertiaryColor;\n\n if (DEBUG) {\n console.log(\"Tinter.tint final: (\" + primaryColor + \", \" + secondaryColor + \", \" + tertiaryColor + \")\");\n }\n\n // go through manually fixing up the stylesheets.\n this.applyCssFixups();\n\n // tell all the SVGs to go fix themselves up\n // we don't do this as a dispatch otherwise it will visually lag\n this.tintables.forEach(function (tintable) {\n tintable();\n });\n }\n }, {\n key: 'tintSvgWhite',\n value: function tintSvgWhite(whiteColor) {\n this.currentTint[3] = whiteColor;\n\n if (!whiteColor) {\n whiteColor = this.colors[3];\n }\n if (this.colors[3] === whiteColor) {\n return;\n }\n this.colors[3] = whiteColor;\n this.tintables.forEach(function (tintable) {\n tintable();\n });\n }\n }, {\n key: 'tintSvgBlack',\n value: function tintSvgBlack(blackColor) {\n this.currentTint[4] = blackColor;\n\n if (!blackColor) {\n blackColor = this.colors[4];\n }\n if (this.colors[4] === blackColor) {\n return;\n }\n this.colors[4] = blackColor;\n this.tintables.forEach(function (tintable) {\n tintable();\n });\n }\n }, {\n key: 'setTheme',\n value: function setTheme(theme) {\n this.theme = theme;\n\n // update keyRgb from the current theme CSS itself, if it defines it\n if (document.getElementById('mx_theme_accentColor')) {\n this.keyRgb[0] = window.getComputedStyle(document.getElementById('mx_theme_accentColor')).color;\n }\n if (document.getElementById('mx_theme_secondaryAccentColor')) {\n this.keyRgb[1] = window.getComputedStyle(document.getElementById('mx_theme_secondaryAccentColor')).color;\n }\n if (document.getElementById('mx_theme_tertiaryAccentColor')) {\n this.keyRgb[2] = window.getComputedStyle(document.getElementById('mx_theme_tertiaryAccentColor')).color;\n }\n\n this.calcCssFixups();\n this.forceTint = true;\n\n this.tint(this.currentTint[0], this.currentTint[1], this.currentTint[2]);\n\n if (theme === 'dark') {\n // abuse the tinter to change all the SVG's #fff to #2d2d2d\n // XXX: obviously this shouldn't be hardcoded here.\n this.tintSvgWhite('#2d2d2d');\n this.tintSvgBlack('#dddddd');\n } else {\n this.tintSvgWhite('#ffffff');\n this.tintSvgBlack('#000000');\n }\n }\n }, {\n key: 'calcCssFixups',\n value: function calcCssFixups() {\n // cache our fixups\n if (this.cssFixups[this.theme]) return;\n\n if (DEBUG) {\n console.debug(\"calcCssFixups start for \" + this.theme + \" (checking \" + document.styleSheets.length + \" stylesheets)\");\n }\n\n this.cssFixups[this.theme] = [];\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n var ss = document.styleSheets[i];\n try {\n if (!ss) continue; // well done safari >:(\n // Chromium apparently sometimes returns null here; unsure why.\n // see $14534907369972FRXBx:matrix.org in HQ\n // ...ah, it's because there's a third party extension like\n // privacybadger inserting its own stylesheet in there with a\n // resource:// URI or something which results in a XSS error.\n // See also #vector:matrix.org/$145357669685386ebCfr:matrix.org\n // ...except some browsers apparently return stylesheets without\n // hrefs, which we have no choice but ignore right now\n\n // XXX seriously? we are hardcoding the name of vector's CSS file in\n // here?\n //\n // Why do we need to limit it to vector's CSS file anyway - if there\n // are other CSS files affecting the doc don't we want to apply the\n // same transformations to them?\n //\n // Iterating through the CSS looking for matches to hack on feels\n // pretty horrible anyway. And what if the application skin doesn't use\n // Vector Green as its primary color?\n // --richvdh\n\n // Yes, tinting assumes that you are using the Riot skin for now.\n // The right solution will be to move the CSS over to react-sdk.\n // And yes, the default assets for the base skin might as well use\n // Vector Green as any other colour.\n // --matthew\n\n // stylesheets we don't have permission to access (eg. ones from extensions) have a null\n // href and will throw exceptions if we try to access their rules.\n if (!ss.href || !ss.href.match(new RegExp('/theme-' + this.theme + '.css$'))) continue;\n if (ss.disabled) continue;\n if (!ss.cssRules) continue;\n\n if (DEBUG) console.debug(\"calcCssFixups checking \" + ss.cssRules.length + \" rules for \" + ss.href);\n\n for (var j = 0; j < ss.cssRules.length; j++) {\n var rule = ss.cssRules[j];\n if (!rule.style) continue;\n if (rule.selectorText && rule.selectorText.match(/#mx_theme/)) continue;\n for (var k = 0; k < this.cssAttrs.length; k++) {\n var attr = this.cssAttrs[k];\n for (var l = 0; l < this.keyRgb.length; l++) {\n if (rule.style[attr] === this.keyRgb[l]) {\n this.cssFixups[this.theme].push({\n style: rule.style,\n attr: attr,\n index: l\n });\n }\n }\n }\n }\n } catch (e) {\n // Catch any random exceptions that happen here: all sorts of things can go\n // wrong with this (nulls, SecurityErrors) and mostly it's for other\n // stylesheets that we don't want to proces anyway. We should not propagate an\n // exception out since this will cause the app to fail to start.\n console.log(\"Failed to calculate CSS fixups for a stylesheet: \" + ss.href, e);\n }\n }\n if (DEBUG) {\n console.log(\"calcCssFixups end (\" + this.cssFixups[this.theme].length + \" fixups)\");\n }\n }\n }, {\n key: 'applyCssFixups',\n value: function applyCssFixups() {\n if (DEBUG) {\n console.log(\"applyCssFixups start (\" + this.cssFixups[this.theme].length + \" fixups)\");\n }\n for (var i = 0; i < this.cssFixups[this.theme].length; i++) {\n var cssFixup = this.cssFixups[this.theme][i];\n try {\n cssFixup.style[cssFixup.attr] = this.colors[cssFixup.index];\n } catch (e) {\n // Firefox Quantum explodes if you manually edit the CSS in the\n // inspector and then try to do a tint, as apparently all the\n // fixups are then stale.\n console.error(\"Failed to apply cssFixup in Tinter! \", e.name);\n }\n }\n if (DEBUG) console.log(\"applyCssFixups end\");\n }\n\n // XXX: we could just move this all into TintableSvg, but as it's so similar\n // to the CSS fixup stuff in Tinter (just that the fixups are stored in TintableSvg)\n // keeping it here for now.\n\n }, {\n key: 'calcSvgFixups',\n value: function calcSvgFixups(svgs) {\n // go through manually fixing up SVG colours.\n // we could do this by stylesheets, but keeping the stylesheets\n // updated would be a PITA, so just brute-force search for the\n // key colour; cache the element and apply.\n\n if (DEBUG) console.log(\"calcSvgFixups start for \" + svgs);\n var fixups = [];\n for (var i = 0; i < svgs.length; i++) {\n var svgDoc = void 0;\n try {\n svgDoc = svgs[i].contentDocument;\n } catch (e) {\n var msg = 'Failed to get svg.contentDocument of ' + svgs[i].toString();\n if (e.message) {\n msg += e.message;\n }\n if (e.stack) {\n msg += ' | stack: ' + e.stack;\n }\n console.error(msg);\n }\n if (!svgDoc) continue;\n var tags = svgDoc.getElementsByTagName(\"*\");\n for (var j = 0; j < tags.length; j++) {\n var tag = tags[j];\n for (var k = 0; k < this.svgAttrs.length; k++) {\n var attr = this.svgAttrs[k];\n for (var l = 0; l < this.keyHex.length; l++) {\n if (tag.getAttribute(attr) && tag.getAttribute(attr).toUpperCase() === this.keyHex[l]) {\n fixups.push({\n node: tag,\n attr: attr,\n index: l\n });\n }\n }\n }\n }\n }\n if (DEBUG) console.log(\"calcSvgFixups end\");\n\n return fixups;\n }\n }, {\n key: 'applySvgFixups',\n value: function applySvgFixups(fixups) {\n if (DEBUG) console.log(\"applySvgFixups start for \" + fixups);\n for (var i = 0; i < fixups.length; i++) {\n var svgFixup = fixups[i];\n svgFixup.node.setAttribute(svgFixup.attr, this.colors[svgFixup.index]);\n }\n if (DEBUG) console.log(\"applySvgFixups end\");\n }\n }]);\n return Tinter;\n}();\n\nif (global.singletonTinter === undefined) {\n global.singletonTinter = new Tinter();\n}\nexports.default = global.singletonTinter;\nmodule.exports = exports['default'];\n//# sourceMappingURL=Tinter.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Terms = require('./Terms');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar IdentityAuthClient = function () {\n /**\n * Creates a new identity auth client\n * @param {string} identityUrl The URL to contact the identity server with.\n * When provided, this class will operate solely within memory, refusing to\n * persist any information such as tokens. Default null (not provided).\n */\n function IdentityAuthClient() {\n var identityUrl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n (0, _classCallCheck3.default)(this, IdentityAuthClient);\n\n this.accessToken = null;\n this.authEnabled = true;\n\n if (identityUrl) {\n // XXX: We shouldn't have to create a whole new MatrixClient just to\n // do identity server auth. The functions don't take an identity URL\n // though, and making all of them take one could lead to developer\n // confusion about what the idBaseUrl does on a client. Therefore, we\n // just make a new client and live with it.\n this.tempClient = (0, _matrixJsSdk.createClient)({\n baseUrl: \"\", // invalid by design\n idBaseUrl: identityUrl\n });\n } else {\n // Indicates that we're using the real client, not some workaround.\n this.tempClient = null;\n }\n }\n\n (0, _createClass3.default)(IdentityAuthClient, [{\n key: '_writeToken',\n value: function _writeToken() {\n if (this.tempClient) return; // temporary client: ignore\n window.localStorage.setItem(\"mx_is_access_token\", this.accessToken);\n }\n }, {\n key: '_readToken',\n value: function _readToken() {\n if (this.tempClient) return null; // temporary client: ignore\n return window.localStorage.getItem(\"mx_is_access_token\");\n }\n }, {\n key: 'hasCredentials',\n value: function hasCredentials() {\n return this.accessToken != null; // undef or null\n }\n\n // Returns a promise that resolves to the access_token string from the IS\n\n }, {\n key: 'getAccessToken',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$check = _ref2.check,\n check = _ref2$check === undefined ? true : _ref2$check;\n\n var token;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (this.authEnabled) {\n _context.next = 2;\n break;\n }\n\n return _context.abrupt('return', null);\n\n case 2:\n token = this.accessToken;\n\n if (!token) {\n token = this._readToken();\n }\n\n if (token) {\n _context.next = 10;\n break;\n }\n\n _context.next = 7;\n return (0, _bluebird.resolve)(this.registerForToken(check));\n\n case 7:\n token = _context.sent;\n\n if (token) {\n this.accessToken = token;\n this._writeToken();\n }\n return _context.abrupt('return', token);\n\n case 10:\n if (!check) {\n _context.next = 24;\n break;\n }\n\n _context.prev = 11;\n _context.next = 14;\n return (0, _bluebird.resolve)(this._checkToken(token));\n\n case 14:\n _context.next = 24;\n break;\n\n case 16:\n _context.prev = 16;\n _context.t0 = _context['catch'](11);\n\n if (!(_context.t0 instanceof _Terms.TermsNotSignedError)) {\n _context.next = 20;\n break;\n }\n\n throw _context.t0;\n\n case 20:\n _context.next = 22;\n return (0, _bluebird.resolve)(this.registerForToken());\n\n case 22:\n token = _context.sent;\n\n if (token) {\n this.accessToken = token;\n this._writeToken();\n }\n\n case 24:\n return _context.abrupt('return', token);\n\n case 25:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[11, 16]]);\n }));\n\n function getAccessToken(_x2) {\n return _ref.apply(this, arguments);\n }\n\n return getAccessToken;\n }()\n }, {\n key: '_checkToken',\n value: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(token) {\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n _context2.next = 3;\n return (0, _bluebird.resolve)(this._matrixClient.getIdentityAccount(token));\n\n case 3:\n _context2.next = 13;\n break;\n\n case 5:\n _context2.prev = 5;\n _context2.t0 = _context2['catch'](0);\n\n if (!(_context2.t0.errcode === \"M_TERMS_NOT_SIGNED\")) {\n _context2.next = 12;\n break;\n }\n\n console.log(\"Identity Server requires new terms to be agreed to\");\n _context2.next = 11;\n return (0, _bluebird.resolve)((0, _Terms.startTermsFlow)([new _Terms.Service(_matrixJsSdk.SERVICE_TYPES.IS, this._matrixClient.getIdentityServerUrl(), token)]));\n\n case 11:\n return _context2.abrupt('return');\n\n case 12:\n throw _context2.t0;\n\n case 13:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this, [[0, 5]]);\n }));\n\n function _checkToken(_x4) {\n return _ref3.apply(this, arguments);\n }\n\n return _checkToken;\n }()\n }, {\n key: 'registerForToken',\n value: function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var check = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n var hsOpenIdToken, _ref5, identityAccessToken;\n\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.prev = 0;\n _context3.next = 3;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get().getOpenIdToken());\n\n case 3:\n hsOpenIdToken = _context3.sent;\n _context3.next = 6;\n return (0, _bluebird.resolve)(this._matrixClient.registerWithIdentityServer(hsOpenIdToken));\n\n case 6:\n _ref5 = _context3.sent;\n identityAccessToken = _ref5.access_token;\n\n if (!check) {\n _context3.next = 11;\n break;\n }\n\n _context3.next = 11;\n return (0, _bluebird.resolve)(this._checkToken(identityAccessToken));\n\n case 11:\n return _context3.abrupt('return', identityAccessToken);\n\n case 14:\n _context3.prev = 14;\n _context3.t0 = _context3['catch'](0);\n\n if (!(_context3.t0.cors === \"rejected\" || _context3.t0.httpStatus === 404)) {\n _context3.next = 20;\n break;\n }\n\n // Assume IS only supports deprecated v1 API for now\n // TODO: Remove this path once v2 is only supported version\n // See https://github.com/vector-im/riot-web/issues/10443\n console.warn(\"IS doesn't support v2 auth\");\n this.authEnabled = false;\n return _context3.abrupt('return');\n\n case 20:\n throw _context3.t0;\n\n case 21:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this, [[0, 14]]);\n }));\n\n function registerForToken(_x5) {\n return _ref4.apply(this, arguments);\n }\n\n return registerForToken;\n }()\n }, {\n key: '_matrixClient',\n get: function get() {\n return this.tempClient ? this.tempClient : _MatrixClientPeg2.default.get();\n }\n }]);\n return IdentityAuthClient;\n}(); /*\n Copyright 2019 The Matrix.org Foundation C.I.C.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = IdentityAuthClient;\nmodule.exports = exports['default'];\n//# sourceMappingURL=IdentityAuthClient.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = require(\"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\nA countdown timer, exposing a promise api.\nA timer starts in a non-started state,\nand needs to be started by calling `start()`` on it first.\n\nTimers can be `abort()`-ed which makes the promise reject prematurely.\n\nOnce a timer is finished or aborted, it can't be started again\n(because the promise should not be replaced). Instead, create\na new one through `clone()` or `cloneIfRun()`.\n*/\nvar Timer = function () {\n function Timer(timeout) {\n (0, _classCallCheck3.default)(this, Timer);\n\n this._timeout = timeout;\n this._onTimeout = this._onTimeout.bind(this);\n this._setNotStarted();\n }\n\n (0, _createClass3.default)(Timer, [{\n key: \"_setNotStarted\",\n value: function _setNotStarted() {\n var _this = this;\n\n this._timerHandle = null;\n this._startTs = null;\n this._promise = new _promise2.default(function (resolve, reject) {\n _this._resolve = resolve;\n _this._reject = reject;\n }).finally(function () {\n _this._timerHandle = null;\n });\n }\n }, {\n key: \"_onTimeout\",\n value: function _onTimeout() {\n var now = Date.now();\n var elapsed = now - this._startTs;\n if (elapsed >= this._timeout) {\n this._resolve();\n this._setNotStarted();\n } else {\n var delta = this._timeout - elapsed;\n this._timerHandle = setTimeout(this._onTimeout, delta);\n }\n }\n }, {\n key: \"changeTimeout\",\n value: function changeTimeout(timeout) {\n if (timeout === this._timeout) {\n return;\n }\n var isSmallerTimeout = timeout < this._timeout;\n this._timeout = timeout;\n if (this.isRunning() && isSmallerTimeout) {\n clearTimeout(this._timerHandle);\n this._onTimeout();\n }\n }\n\n /**\n * if not started before, starts the timer.\n * @returns {Timer} the same timer\n */\n\n }, {\n key: \"start\",\n value: function start() {\n if (!this.isRunning()) {\n this._startTs = Date.now();\n this._timerHandle = setTimeout(this._onTimeout, this._timeout);\n }\n return this;\n }\n\n /**\n * (re)start the timer. If it's running, reset the timeout. If not, start it.\n * @returns {Timer} the same timer\n */\n\n }, {\n key: \"restart\",\n value: function restart() {\n if (this.isRunning()) {\n // don't clearTimeout here as this method\n // can be called in fast succession,\n // instead just take note and compare\n // when the already running timeout expires\n this._startTs = Date.now();\n return this;\n } else {\n return this.start();\n }\n }\n\n /**\n * if the timer is running, abort it,\n * and reject the promise for this timer.\n * @returns {Timer} the same timer\n */\n\n }, {\n key: \"abort\",\n value: function abort() {\n if (this.isRunning()) {\n clearTimeout(this._timerHandle);\n this._reject(new Error(\"Timer was aborted.\"));\n this._setNotStarted();\n }\n return this;\n }\n\n /**\n *promise that will resolve when the timer elapses,\n *or is rejected when abort is called\n *@return {Promise}\n */\n\n }, {\n key: \"finished\",\n value: function finished() {\n return this._promise;\n }\n }, {\n key: \"isRunning\",\n value: function isRunning() {\n return this._timerHandle !== null;\n }\n }]);\n return Timer;\n}();\n\nexports.default = Timer;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=Timer.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MENTION_BADGE_STATES = exports.BADGE_STATES = exports.MUTE = exports.MENTIONS_ONLY = exports.ALL_MESSAGES = exports.ALL_MESSAGES_LOUD = undefined;\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nexports.shouldShowNotifBadge = shouldShowNotifBadge;\nexports.shouldShowMentionBadge = shouldShowMentionBadge;\nexports.countRoomsWithNotif = countRoomsWithNotif;\nexports.aggregateNotificationCount = aggregateNotificationCount;\nexports.getRoomHasBadge = getRoomHasBadge;\nexports.getRoomNotifsState = getRoomNotifsState;\nexports.setRoomNotifsState = setRoomNotifsState;\nexports.getUnreadNotificationCount = getUnreadNotificationCount;\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _pushprocessor = require('matrix-js-sdk/lib/pushprocessor');\n\nvar _pushprocessor2 = _interopRequireDefault(_pushprocessor);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ALL_MESSAGES_LOUD = exports.ALL_MESSAGES_LOUD = 'all_messages_loud'; /*\n Copyright 2016 OpenMarket Ltd\n Copyright 2019 The Matrix.org Foundation C.I.C.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar ALL_MESSAGES = exports.ALL_MESSAGES = 'all_messages';\nvar MENTIONS_ONLY = exports.MENTIONS_ONLY = 'mentions_only';\nvar MUTE = exports.MUTE = 'mute';\n\nvar BADGE_STATES = exports.BADGE_STATES = [ALL_MESSAGES, ALL_MESSAGES_LOUD];\nvar MENTION_BADGE_STATES = exports.MENTION_BADGE_STATES = [].concat(BADGE_STATES, [MENTIONS_ONLY]);\n\nfunction shouldShowNotifBadge(roomNotifState) {\n return BADGE_STATES.includes(roomNotifState);\n}\n\nfunction shouldShowMentionBadge(roomNotifState) {\n return MENTION_BADGE_STATES.includes(roomNotifState);\n}\n\nfunction countRoomsWithNotif(rooms) {\n return rooms.reduce(function (result, room, index) {\n var roomNotifState = getRoomNotifsState(room.roomId);\n var highlight = room.getUnreadNotificationCount('highlight') > 0;\n var notificationCount = room.getUnreadNotificationCount();\n\n var notifBadges = notificationCount > 0 && shouldShowNotifBadge(roomNotifState);\n var mentionBadges = highlight && shouldShowMentionBadge(roomNotifState);\n var isInvite = room.hasMembershipState(_MatrixClientPeg2.default.get().credentials.userId, 'invite');\n var badges = notifBadges || mentionBadges || isInvite;\n\n if (badges) {\n result.count++;\n if (highlight) {\n result.highlight = true;\n }\n }\n return result;\n }, { count: 0, highlight: false });\n}\n\nfunction aggregateNotificationCount(rooms) {\n return rooms.reduce(function (result, room, index) {\n var roomNotifState = getRoomNotifsState(room.roomId);\n var highlight = room.getUnreadNotificationCount('highlight') > 0;\n var notificationCount = room.getUnreadNotificationCount();\n\n var notifBadges = notificationCount > 0 && shouldShowNotifBadge(roomNotifState);\n var mentionBadges = highlight && shouldShowMentionBadge(roomNotifState);\n var badges = notifBadges || mentionBadges;\n\n if (badges) {\n result.count += notificationCount;\n if (highlight) {\n result.highlight = true;\n }\n }\n return result;\n }, { count: 0, highlight: false });\n}\n\nfunction getRoomHasBadge(room) {\n var roomNotifState = getRoomNotifsState(room.roomId);\n var highlight = room.getUnreadNotificationCount('highlight') > 0;\n var notificationCount = room.getUnreadNotificationCount();\n\n var notifBadges = notificationCount > 0 && shouldShowNotifBadge(roomNotifState);\n var mentionBadges = highlight && shouldShowMentionBadge(roomNotifState);\n\n return notifBadges || mentionBadges;\n}\n\nfunction getRoomNotifsState(roomId) {\n if (_MatrixClientPeg2.default.get().isGuest()) return ALL_MESSAGES;\n\n // look through the override rules for a rule affecting this room:\n // if one exists, it will take precedence.\n var muteRule = findOverrideMuteRule(roomId);\n if (muteRule) {\n return MUTE;\n }\n\n // for everything else, look at the room rule.\n var roomRule = null;\n try {\n roomRule = _MatrixClientPeg2.default.get().getRoomPushRule('global', roomId);\n } catch (err) {\n // Possible that the client doesn't have pushRules yet. If so, it\n // hasn't started eiher, so indicate that this room is not notifying.\n return null;\n }\n\n // XXX: We have to assume the default is to notify for all messages\n // (in particular this will be 'wrong' for one to one rooms because\n // they will notify loudly for all messages)\n if (!roomRule || !roomRule.enabled) return ALL_MESSAGES;\n\n // a mute at the room level will still allow mentions\n // to notify\n if (isMuteRule(roomRule)) return MENTIONS_ONLY;\n\n var actionsObject = _pushprocessor2.default.actionListToActionsObject(roomRule.actions);\n if (actionsObject.tweaks.sound) return ALL_MESSAGES_LOUD;\n\n return null;\n}\n\nfunction setRoomNotifsState(roomId, newState) {\n if (newState === MUTE) {\n return setRoomNotifsStateMuted(roomId);\n } else {\n return setRoomNotifsStateUnmuted(roomId, newState);\n }\n}\n\nfunction getUnreadNotificationCount(room) {\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n var notificationCount = room.getUnreadNotificationCount(type);\n\n // Check notification counts in the old room just in case there's some lost\n // there. We only go one level down to avoid performance issues, and theory\n // is that 1st generation rooms will have already been read by the 3rd generation.\n var createEvent = room.currentState.getStateEvents(\"m.room.create\", \"\");\n if (createEvent && createEvent.getContent()['predecessor']) {\n var oldRoomId = createEvent.getContent()['predecessor']['room_id'];\n var oldRoom = _MatrixClientPeg2.default.get().getRoom(oldRoomId);\n if (oldRoom) {\n // We only ever care if there's highlights in the old room. No point in\n // notifying the user for unread messages because they would have extreme\n // difficulty changing their notification preferences away from \"All Messages\"\n // and \"Noisy\".\n notificationCount += oldRoom.getUnreadNotificationCount(\"highlight\");\n }\n }\n\n return notificationCount;\n}\n\nfunction setRoomNotifsStateMuted(roomId) {\n var cli = _MatrixClientPeg2.default.get();\n var promises = [];\n\n // delete the room rule\n var roomRule = cli.getRoomPushRule('global', roomId);\n if (roomRule) {\n promises.push(cli.deletePushRule('global', 'room', roomRule.rule_id));\n }\n\n // add/replace an override rule to squelch everything in this room\n // NB. We use the room ID as the name of this rule too, although this\n // is an override rule, not a room rule: it still pertains to this room\n // though, so using the room ID as the rule ID is logical and prevents\n // duplicate copies of the rule.\n promises.push(cli.addPushRule('global', 'override', roomId, {\n conditions: [{\n kind: 'event_match',\n key: 'room_id',\n pattern: roomId\n }],\n actions: ['dont_notify']\n }));\n\n return _bluebird2.default.all(promises);\n}\n\nfunction setRoomNotifsStateUnmuted(roomId, newState) {\n var cli = _MatrixClientPeg2.default.get();\n var promises = [];\n\n var overrideMuteRule = findOverrideMuteRule(roomId);\n if (overrideMuteRule) {\n promises.push(cli.deletePushRule('global', 'override', overrideMuteRule.rule_id));\n }\n\n if (newState === 'all_messages') {\n var roomRule = cli.getRoomPushRule('global', roomId);\n if (roomRule) {\n promises.push(cli.deletePushRule('global', 'room', roomRule.rule_id));\n }\n } else if (newState === 'mentions_only') {\n promises.push(cli.addPushRule('global', 'room', roomId, {\n actions: ['dont_notify']\n }));\n // https://matrix.org/jira/browse/SPEC-400\n promises.push(cli.setPushRuleEnabled('global', 'room', roomId, true));\n } else if ('all_messages_loud') {\n promises.push(cli.addPushRule('global', 'room', roomId, {\n actions: ['notify', {\n set_tweak: 'sound',\n value: 'default'\n }]\n }));\n // https://matrix.org/jira/browse/SPEC-400\n promises.push(cli.setPushRuleEnabled('global', 'room', roomId, true));\n }\n\n return _bluebird2.default.all(promises);\n}\n\nfunction findOverrideMuteRule(roomId) {\n if (!_MatrixClientPeg2.default.get().pushRules || !_MatrixClientPeg2.default.get().pushRules['global'] || !_MatrixClientPeg2.default.get().pushRules['global'].override) {\n return null;\n }\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(_MatrixClientPeg2.default.get().pushRules['global'].override), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var rule = _step.value;\n\n if (isRuleForRoom(roomId, rule)) {\n if (isMuteRule(rule) && rule.enabled) {\n return rule;\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return null;\n}\n\nfunction isRuleForRoom(roomId, rule) {\n if (rule.conditions.length !== 1) {\n return false;\n }\n var cond = rule.conditions[0];\n return cond.kind === 'event_match' && cond.key === 'room_id' && cond.pattern === roomId;\n}\n\nfunction isMuteRule(rule) {\n return rule.actions.length === 1 && rule.actions[0] === 'dont_notify';\n}\n//# sourceMappingURL=RoomNotifs.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2019 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.UploadCanceledError = undefined;\n\nvar _create = require('babel-runtime/core-js/object/create');\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _setPrototypeOf = require('babel-runtime/core-js/object/set-prototype-of');\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _from = require('babel-runtime/core-js/array/from');\n\nvar _from2 = _interopRequireDefault(_from);\n\nvar _construct = require('babel-runtime/core-js/reflect/construct');\n\nvar _construct2 = _interopRequireDefault(_construct);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\n/**\n * Load a file into a newly created image element.\n *\n * @param {File} imageFile The file to load in an image element.\n * @return {Promise} A promise that resolves with the html image element.\n */\nvar loadImageElement = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(imageFile) {\n var img, objectUrl, imgPromise, parsePromise, headers, _ref2, _ref3, hidpi, width, height;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n // Load the file into an html element\n img = document.createElement(\"img\");\n objectUrl = URL.createObjectURL(imageFile);\n imgPromise = new _bluebird2.default(function (resolve, reject) {\n img.onload = function () {\n URL.revokeObjectURL(objectUrl);\n resolve(img);\n };\n img.onerror = function (e) {\n reject(e);\n };\n });\n\n img.src = objectUrl;\n\n // check for hi-dpi PNGs and fudge display resolution as needed.\n // this is mainly needed for macOS screencaps\n parsePromise = void 0;\n\n if (imageFile.type === \"image/png\") {\n // in practice macOS happens to order the chunks so they fall in\n // the first 0x1000 bytes (thanks to a massive ICC header).\n // Thus we could slice the file down to only sniff the first 0x1000\n // bytes (but this makes extractPngChunks choke on the corrupt file)\n headers = imageFile; //.slice(0, 0x1000);\n\n parsePromise = readFileAsArrayBuffer(headers).then(function (arrayBuffer) {\n var buffer = new Uint8Array(arrayBuffer);\n var chunks = (0, _pngChunksExtract2.default)(buffer);\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(chunks), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var chunk = _step.value;\n\n if (chunk.name === 'pHYs') {\n if (chunk.data.byteLength !== PHYS_HIDPI.length) return;\n var _hidpi = chunk.data.every(function (val, i) {\n return val === PHYS_HIDPI[i];\n });\n return _hidpi;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return false;\n });\n }\n\n _context.next = 8;\n return (0, _bluebird.resolve)(_bluebird2.default.all([parsePromise, imgPromise]));\n\n case 8:\n _ref2 = _context.sent;\n _ref3 = (0, _slicedToArray3.default)(_ref2, 1);\n hidpi = _ref3[0];\n width = hidpi ? img.width >> 1 : img.width;\n height = hidpi ? img.height >> 1 : img.height;\n return _context.abrupt('return', { width: width, height: height, img: img });\n\n case 14:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function loadImageElement(_x) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * Read the metadata for an image file and create and upload a thumbnail of the image.\n *\n * @param {MatrixClient} matrixClient A matrixClient to upload the thumbnail with.\n * @param {String} roomId The ID of the room the image will be uploaded in.\n * @param {File} imageFile The image to read and thumbnail.\n * @return {Promise} A promise that resolves with the attachment info.\n */\n\n\nvar _extend = require('./extend');\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('./languageHandler');\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _RoomViewStore = require('./stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _browserEncryptAttachment = require('browser-encrypt-attachment');\n\nvar _browserEncryptAttachment2 = _interopRequireDefault(_browserEncryptAttachment);\n\nvar _pngChunksExtract = require('png-chunks-extract');\n\nvar _pngChunksExtract2 = _interopRequireDefault(_pngChunksExtract);\n\nrequire('blueimp-canvas-to-blob');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extendableBuiltin(cls) {\n function ExtendableBuiltin() {\n var instance = (0, _construct2.default)(cls, (0, _from2.default)(arguments));\n (0, _setPrototypeOf2.default)(instance, (0, _getPrototypeOf2.default)(this));\n return instance;\n }\n\n ExtendableBuiltin.prototype = (0, _create2.default)(cls.prototype, {\n constructor: {\n value: cls,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n\n if (_setPrototypeOf2.default) {\n (0, _setPrototypeOf2.default)(ExtendableBuiltin, cls);\n } else {\n ExtendableBuiltin.__proto__ = cls;\n }\n\n return ExtendableBuiltin;\n}\n\n// Polyfill for Canvas.toBlob API using Canvas.toDataURL\n\n\nvar MAX_WIDTH = 800;\nvar MAX_HEIGHT = 600;\n\n// scraped out of a macOS hidpi (5660ppm) screenshot png\n// 5669 px (x-axis) , 5669 px (y-axis) , per metre\nvar PHYS_HIDPI = [0x00, 0x00, 0x16, 0x25, 0x00, 0x00, 0x16, 0x25, 0x01];\n\nvar UploadCanceledError = exports.UploadCanceledError = function (_extendableBuiltin2) {\n (0, _inherits3.default)(UploadCanceledError, _extendableBuiltin2);\n\n function UploadCanceledError() {\n (0, _classCallCheck3.default)(this, UploadCanceledError);\n return (0, _possibleConstructorReturn3.default)(this, (UploadCanceledError.__proto__ || (0, _getPrototypeOf2.default)(UploadCanceledError)).apply(this, arguments));\n }\n\n return UploadCanceledError;\n}(_extendableBuiltin(Error));\n\n/**\n * Create a thumbnail for a image DOM element.\n * The image will be smaller than MAX_WIDTH and MAX_HEIGHT.\n * The thumbnail will have the same aspect ratio as the original.\n * Draws the element into a canvas using CanvasRenderingContext2D.drawImage\n * Then calls Canvas.toBlob to get a blob object for the image data.\n *\n * Since it needs to calculate the dimensions of the source image and the\n * thumbnailed image it returns an info object filled out with information\n * about the original image and the thumbnail.\n *\n * @param {HTMLElement} element The element to thumbnail.\n * @param {integer} inputWidth The width of the image in the input element.\n * @param {integer} inputHeight the width of the image in the input element.\n * @param {String} mimeType The mimeType to save the blob as.\n * @return {Promise} A promise that resolves with an object with an info key\n * and a thumbnail key.\n */\n\n\nfunction createThumbnail(element, inputWidth, inputHeight, mimeType) {\n var deferred = _bluebird2.default.defer();\n\n var targetWidth = inputWidth;\n var targetHeight = inputHeight;\n if (targetHeight > MAX_HEIGHT) {\n targetWidth = Math.floor(targetWidth * (MAX_HEIGHT / targetHeight));\n targetHeight = MAX_HEIGHT;\n }\n if (targetWidth > MAX_WIDTH) {\n targetHeight = Math.floor(targetHeight * (MAX_WIDTH / targetWidth));\n targetWidth = MAX_WIDTH;\n }\n\n var canvas = document.createElement(\"canvas\");\n canvas.width = targetWidth;\n canvas.height = targetHeight;\n canvas.getContext(\"2d\").drawImage(element, 0, 0, targetWidth, targetHeight);\n canvas.toBlob(function (thumbnail) {\n deferred.resolve({\n info: {\n thumbnail_info: {\n w: targetWidth,\n h: targetHeight,\n mimetype: thumbnail.type,\n size: thumbnail.size\n },\n w: inputWidth,\n h: inputHeight\n },\n thumbnail: thumbnail\n });\n }, mimeType);\n\n return deferred.promise;\n}function infoForImageFile(matrixClient, roomId, imageFile) {\n var thumbnailType = \"image/png\";\n if (imageFile.type == \"image/jpeg\") {\n thumbnailType = \"image/jpeg\";\n }\n\n var imageInfo = void 0;\n return loadImageElement(imageFile).then(function (r) {\n return createThumbnail(r.img, r.width, r.height, thumbnailType);\n }).then(function (result) {\n imageInfo = result.info;\n return uploadFile(matrixClient, roomId, result.thumbnail);\n }).then(function (result) {\n imageInfo.thumbnail_url = result.url;\n imageInfo.thumbnail_file = result.file;\n return imageInfo;\n });\n}\n\n/**\n * Load a file into a newly created video element.\n *\n * @param {File} videoFile The file to load in an video element.\n * @return {Promise} A promise that resolves with the video image element.\n */\nfunction loadVideoElement(videoFile) {\n var deferred = _bluebird2.default.defer();\n\n // Load the file into an html element\n var video = document.createElement(\"video\");\n\n var reader = new FileReader();\n reader.onload = function (e) {\n video.src = e.target.result;\n\n // Once ready, returns its size\n // Wait until we have enough data to thumbnail the first frame.\n video.onloadeddata = function () {\n deferred.resolve(video);\n };\n video.onerror = function (e) {\n deferred.reject(e);\n };\n };\n reader.onerror = function (e) {\n deferred.reject(e);\n };\n reader.readAsDataURL(videoFile);\n\n return deferred.promise;\n}\n\n/**\n * Read the metadata for a video file and create and upload a thumbnail of the video.\n *\n * @param {MatrixClient} matrixClient A matrixClient to upload the thumbnail with.\n * @param {String} roomId The ID of the room the video will be uploaded to.\n * @param {File} videoFile The video to read and thumbnail.\n * @return {Promise} A promise that resolves with the attachment info.\n */\nfunction infoForVideoFile(matrixClient, roomId, videoFile) {\n var thumbnailType = \"image/jpeg\";\n\n var videoInfo = void 0;\n return loadVideoElement(videoFile).then(function (video) {\n return createThumbnail(video, video.videoWidth, video.videoHeight, thumbnailType);\n }).then(function (result) {\n videoInfo = result.info;\n return uploadFile(matrixClient, roomId, result.thumbnail);\n }).then(function (result) {\n videoInfo.thumbnail_url = result.url;\n videoInfo.thumbnail_file = result.file;\n return videoInfo;\n });\n}\n\n/**\n * Read the file as an ArrayBuffer.\n * @param {File} file The file to read\n * @return {Promise} A promise that resolves with an ArrayBuffer when the file\n * is read.\n */\nfunction readFileAsArrayBuffer(file) {\n var deferred = _bluebird2.default.defer();\n var reader = new FileReader();\n reader.onload = function (e) {\n deferred.resolve(e.target.result);\n };\n reader.onerror = function (e) {\n deferred.reject(e);\n };\n reader.readAsArrayBuffer(file);\n return deferred.promise;\n}\n\n/**\n * Upload the file to the content repository.\n * If the room is encrypted then encrypt the file before uploading.\n *\n * @param {MatrixClient} matrixClient The matrix client to upload the file with.\n * @param {String} roomId The ID of the room being uploaded to.\n * @param {File} file The file to upload.\n * @param {Function?} progressHandler optional callback to be called when a chunk of\n * data is uploaded.\n * @return {Promise} A promise that resolves with an object.\n * If the file is unencrypted then the object will have a \"url\" key.\n * If the file is encrypted then the object will have a \"file\" key.\n */\nfunction uploadFile(matrixClient, roomId, file, progressHandler) {\n if (matrixClient.isRoomEncrypted(roomId)) {\n // If the room is encrypted then encrypt the file before uploading it.\n // First read the file into memory.\n var canceled = false;\n var uploadPromise = void 0;\n var encryptInfo = void 0;\n var prom = readFileAsArrayBuffer(file).then(function (data) {\n if (canceled) throw new UploadCanceledError();\n // Then encrypt the file.\n return _browserEncryptAttachment2.default.encryptAttachment(data);\n }).then(function (encryptResult) {\n if (canceled) throw new UploadCanceledError();\n // Record the information needed to decrypt the attachment.\n encryptInfo = encryptResult.info;\n // Pass the encrypted data as a Blob to the uploader.\n var blob = new Blob([encryptResult.data]);\n uploadPromise = matrixClient.uploadContent(blob, {\n progressHandler: progressHandler,\n includeFilename: false\n });\n\n return uploadPromise;\n }).then(function (url) {\n // If the attachment is encrypted then bundle the URL along\n // with the information needed to decrypt the attachment and\n // add it under a file key.\n encryptInfo.url = url;\n if (file.type) {\n encryptInfo.mimetype = file.type;\n }\n return { \"file\": encryptInfo };\n });\n prom.abort = function () {\n canceled = true;\n if (uploadPromise) _MatrixClientPeg2.default.get().cancelUpload(uploadPromise);\n };\n return prom;\n } else {\n var basePromise = matrixClient.uploadContent(file, {\n progressHandler: progressHandler\n });\n var promise1 = basePromise.then(function (url) {\n // If the attachment isn't encrypted then include the URL directly.\n return { \"url\": url };\n });\n // XXX: copy over the abort method to the new promise\n promise1.abort = basePromise.abort;\n return promise1;\n }\n}\n\nvar ContentMessages = function () {\n function ContentMessages() {\n (0, _classCallCheck3.default)(this, ContentMessages);\n\n this.inprogress = [];\n this.nextId = 0;\n this._mediaConfig = null;\n }\n\n (0, _createClass3.default)(ContentMessages, [{\n key: '_isFileSizeAcceptable',\n value: function _isFileSizeAcceptable(file) {\n if (this._mediaConfig !== null && this._mediaConfig[\"m.upload.size\"] !== undefined && file.size > this._mediaConfig[\"m.upload.size\"]) {\n return false;\n }\n return true;\n }\n }, {\n key: '_ensureMediaConfigFetched',\n value: function _ensureMediaConfigFetched() {\n var _this2 = this;\n\n if (this._mediaConfig !== null) return;\n\n console.log(\"[Media Config] Fetching\");\n return _MatrixClientPeg2.default.get().getMediaConfig().then(function (config) {\n console.log(\"[Media Config] Fetched config:\", config);\n return config;\n }).catch(function () {\n // Media repo can't or won't report limits, so provide an empty object (no limits).\n console.log(\"[Media Config] Could not fetch config, so not limiting uploads.\");\n return {};\n }).then(function (config) {\n _this2._mediaConfig = config;\n });\n }\n }, {\n key: 'sendStickerContentToRoom',\n value: function sendStickerContentToRoom(url, roomId, info, text, matrixClient) {\n return _MatrixClientPeg2.default.get().sendStickerMessage(roomId, url, info, text).catch(function (e) {\n console.warn('Failed to send content with URL ' + url + ' to room ' + roomId, e);\n throw e;\n });\n }\n }, {\n key: 'getUploadLimit',\n value: function getUploadLimit() {\n if (this._mediaConfig !== null && this._mediaConfig[\"m.upload.size\"] !== undefined) {\n return this._mediaConfig[\"m.upload.size\"];\n } else {\n return null;\n }\n }\n }, {\n key: 'sendContentListToRoom',\n value: function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(files, roomId, matrixClient) {\n var _this3 = this;\n\n var isQuoting, QuestionDialog, shouldUpload, tooBigFiles, okFiles, i, UploadFailureDialog, uploadFailureDialogPromise, shouldContinue, UploadConfirmDialog, uploadAll, _loop, _i, _ret;\n\n return _regenerator2.default.wrap(function _callee2$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (!matrixClient.isGuest()) {\n _context3.next = 3;\n break;\n }\n\n _dispatcher2.default.dispatch({ action: 'require_registration' });\n return _context3.abrupt('return');\n\n case 3:\n isQuoting = Boolean(_RoomViewStore2.default.getQuotingEvent());\n\n if (!isQuoting) {\n _context3.next = 11;\n break;\n }\n\n QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n _context3.next = 8;\n return (0, _bluebird.resolve)(new _bluebird2.default(function (resolve) {\n _Modal2.default.createTrackedDialog('Upload Reply Warning', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Replying With Files'),\n description: React.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('At this time it is not possible to reply with a file. ' + 'Would you like to upload this file without replying?')\n ),\n hasCancelButton: true,\n button: (0, _languageHandler._t)(\"Continue\"),\n onFinished: function onFinished(shouldUpload) {\n resolve(shouldUpload);\n }\n });\n }));\n\n case 8:\n shouldUpload = _context3.sent;\n\n if (shouldUpload) {\n _context3.next = 11;\n break;\n }\n\n return _context3.abrupt('return');\n\n case 11:\n _context3.next = 13;\n return (0, _bluebird.resolve)(this._ensureMediaConfigFetched());\n\n case 13:\n tooBigFiles = [];\n okFiles = [];\n\n\n for (i = 0; i < files.length; ++i) {\n if (this._isFileSizeAcceptable(files[i])) {\n okFiles.push(files[i]);\n } else {\n tooBigFiles.push(files[i]);\n }\n }\n\n if (!(tooBigFiles.length > 0)) {\n _context3.next = 24;\n break;\n }\n\n UploadFailureDialog = _index2.default.getComponent(\"dialogs.UploadFailureDialog\");\n uploadFailureDialogPromise = new _bluebird2.default(function (resolve) {\n _Modal2.default.createTrackedDialog('Upload Failure', '', UploadFailureDialog, {\n badFiles: tooBigFiles,\n totalFiles: files.length,\n contentMessages: _this3,\n onFinished: function onFinished(shouldContinue) {\n resolve(shouldContinue);\n }\n });\n });\n _context3.next = 21;\n return (0, _bluebird.resolve)(uploadFailureDialogPromise);\n\n case 21:\n shouldContinue = _context3.sent;\n\n if (shouldContinue) {\n _context3.next = 24;\n break;\n }\n\n return _context3.abrupt('return');\n\n case 24:\n UploadConfirmDialog = _index2.default.getComponent(\"dialogs.UploadConfirmDialog\");\n uploadAll = false;\n _loop = /*#__PURE__*/_regenerator2.default.mark(function _loop(_i) {\n var file, _shouldContinue;\n\n return _regenerator2.default.wrap(function _loop$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n file = okFiles[_i];\n\n if (uploadAll) {\n _context2.next = 7;\n break;\n }\n\n _context2.next = 4;\n return (0, _bluebird.resolve)(new _bluebird2.default(function (resolve) {\n _Modal2.default.createTrackedDialog('Upload Files confirmation', '', UploadConfirmDialog, {\n file: file,\n currentIndex: _i,\n totalFiles: okFiles.length,\n onFinished: function onFinished(shouldContinue, shouldUploadAll) {\n if (shouldUploadAll) {\n uploadAll = true;\n }\n resolve(shouldContinue);\n }\n });\n }));\n\n case 4:\n _shouldContinue = _context2.sent;\n\n if (_shouldContinue) {\n _context2.next = 7;\n break;\n }\n\n return _context2.abrupt('return', 'break');\n\n case 7:\n _this3._sendContentToRoom(file, roomId, matrixClient);\n\n case 8:\n case 'end':\n return _context2.stop();\n }\n }\n }, _loop, _this3);\n });\n _i = 0;\n\n case 28:\n if (!(_i < okFiles.length)) {\n _context3.next = 36;\n break;\n }\n\n return _context3.delegateYield(_loop(_i), 't0', 30);\n\n case 30:\n _ret = _context3.t0;\n\n if (!(_ret === 'break')) {\n _context3.next = 33;\n break;\n }\n\n return _context3.abrupt('break', 36);\n\n case 33:\n ++_i;\n _context3.next = 28;\n break;\n\n case 36:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function sendContentListToRoom(_x2, _x3, _x4) {\n return _ref4.apply(this, arguments);\n }\n\n return sendContentListToRoom;\n }()\n }, {\n key: '_sendContentToRoom',\n value: function _sendContentToRoom(file, roomId, matrixClient) {\n var _this4 = this;\n\n var content = {\n body: file.name || 'Attachment',\n info: {\n size: file.size\n }\n };\n\n // if we have a mime type for the file, add it to the message metadata\n if (file.type) {\n content.info.mimetype = file.type;\n }\n\n var def = _bluebird2.default.defer();\n if (file.type.indexOf('image/') == 0) {\n content.msgtype = 'm.image';\n infoForImageFile(matrixClient, roomId, file).then(function (imageInfo) {\n (0, _extend2.default)(content.info, imageInfo);\n def.resolve();\n }, function (error) {\n console.error(error);\n content.msgtype = 'm.file';\n def.resolve();\n });\n } else if (file.type.indexOf('audio/') == 0) {\n content.msgtype = 'm.audio';\n def.resolve();\n } else if (file.type.indexOf('video/') == 0) {\n content.msgtype = 'm.video';\n infoForVideoFile(matrixClient, roomId, file).then(function (videoInfo) {\n (0, _extend2.default)(content.info, videoInfo);\n def.resolve();\n }, function (error) {\n content.msgtype = 'm.file';\n def.resolve();\n });\n } else {\n content.msgtype = 'm.file';\n def.resolve();\n }\n\n var upload = {\n fileName: file.name || 'Attachment',\n roomId: roomId,\n total: 0,\n loaded: 0\n };\n this.inprogress.push(upload);\n _dispatcher2.default.dispatch({ action: 'upload_started' });\n\n // Focus the composer view\n _dispatcher2.default.dispatch({ action: 'focus_composer' });\n\n var error = void 0;\n\n function onProgress(ev) {\n upload.total = ev.total;\n upload.loaded = ev.loaded;\n _dispatcher2.default.dispatch({ action: 'upload_progress', upload: upload });\n }\n\n return def.promise.then(function () {\n // XXX: upload.promise must be the promise that\n // is returned by uploadFile as it has an abort()\n // method hacked onto it.\n upload.promise = uploadFile(matrixClient, roomId, file, onProgress);\n return upload.promise.then(function (result) {\n content.file = result.file;\n content.url = result.url;\n });\n }).then(function (url) {\n return matrixClient.sendMessage(roomId, content);\n }, function (err) {\n error = err;\n if (!upload.canceled) {\n var desc = (0, _languageHandler._t)(\"The file '%(fileName)s' failed to upload.\", { fileName: upload.fileName });\n if (err.http_status == 413) {\n desc = (0, _languageHandler._t)(\"The file '%(fileName)s' exceeds this homeserver's size limit for uploads\", { fileName: upload.fileName });\n }\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Upload failed', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Upload Failed'),\n description: desc\n });\n }\n }).finally(function () {\n var inprogressKeys = (0, _keys2.default)(_this4.inprogress);\n for (var i = 0; i < _this4.inprogress.length; ++i) {\n var k = inprogressKeys[i];\n if (_this4.inprogress[k].promise === upload.promise) {\n _this4.inprogress.splice(k, 1);\n break;\n }\n }\n if (error) {\n // 413: File was too big or upset the server in some way:\n // clear the media size limit so we fetch it again next time\n // we try to upload\n if (error && error.http_status === 413) {\n _this4._mediaConfig = null;\n }\n _dispatcher2.default.dispatch({ action: 'upload_failed', upload: upload, error: error });\n } else {\n _dispatcher2.default.dispatch({ action: 'upload_finished', upload: upload });\n _dispatcher2.default.dispatch({ action: 'message_sent' });\n }\n });\n }\n }, {\n key: 'getCurrentUploads',\n value: function getCurrentUploads() {\n return this.inprogress.filter(function (u) {\n return !u.canceled;\n });\n }\n }, {\n key: 'cancelUpload',\n value: function cancelUpload(promise) {\n var inprogressKeys = (0, _keys2.default)(this.inprogress);\n var upload = void 0;\n for (var i = 0; i < this.inprogress.length; ++i) {\n var k = inprogressKeys[i];\n if (this.inprogress[k].promise === promise) {\n upload = this.inprogress[k];\n break;\n }\n }\n if (upload) {\n upload.canceled = true;\n _MatrixClientPeg2.default.get().cancelUpload(upload.promise);\n _dispatcher2.default.dispatch({ action: 'upload_canceled', upload: upload });\n }\n }\n }], [{\n key: 'sharedInstance',\n value: function sharedInstance() {\n if (global.mx_ContentMessages === undefined) {\n global.mx_ContentMessages = new ContentMessages();\n }\n return global.mx_ContentMessages;\n }\n }]);\n return ContentMessages;\n}();\n\nexports.default = ContentMessages;\n//# sourceMappingURL=ContentMessages.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _ToggleSwitch = require(\"./ToggleSwitch\");\n\nvar _ToggleSwitch2 = _interopRequireDefault(_ToggleSwitch);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LabelledToggleSwitch = function (_React$Component) {\n (0, _inherits3.default)(LabelledToggleSwitch, _React$Component);\n\n function LabelledToggleSwitch() {\n (0, _classCallCheck3.default)(this, LabelledToggleSwitch);\n return (0, _possibleConstructorReturn3.default)(this, (LabelledToggleSwitch.__proto__ || (0, _getPrototypeOf2.default)(LabelledToggleSwitch)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(LabelledToggleSwitch, [{\n key: \"render\",\n value: function render() {\n // This is a minimal version of a SettingsFlag\n\n var firstPart = _react2.default.createElement(\n \"span\",\n { className: \"mx_SettingsFlag_label\" },\n this.props.label\n );\n var secondPart = _react2.default.createElement(_ToggleSwitch2.default, { checked: this.props.value, disabled: this.props.disabled,\n onChange: this.props.onChange, \"aria-label\": this.props.label });\n\n if (this.props.toggleInFront) {\n var temp = firstPart;\n firstPart = secondPart;\n secondPart = temp;\n }\n\n return _react2.default.createElement(\n \"div\",\n { className: \"mx_SettingsFlag\" },\n firstPart,\n secondPart\n );\n }\n }]);\n return LabelledToggleSwitch;\n}(_react2.default.Component); /*\n Copyright 2019 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nLabelledToggleSwitch.propTypes = {\n // The value for the toggle switch\n value: _propTypes2.default.bool.isRequired,\n\n // The function to call when the value changes\n onChange: _propTypes2.default.func.isRequired,\n\n // The translated label for the switch\n label: _propTypes2.default.string.isRequired,\n\n // Whether or not to disable the toggle switch\n disabled: _propTypes2.default.bool,\n\n // True to put the toggle in front of the label\n // Default false.\n toggleInFront: _propTypes2.default.bool\n};\nexports.default = LabelledToggleSwitch;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=LabelledToggleSwitch.js.map","module.exports = \"img/spinner.0b29ec9.gif\";","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bluebird = require('bluebird');\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar AutocompleteProvider = function () {\n function AutocompleteProvider(commandRegex, forcedCommandRegex) {\n (0, _classCallCheck3.default)(this, AutocompleteProvider);\n\n if (commandRegex) {\n if (!commandRegex.global) {\n throw new Error('commandRegex must have global flag set');\n }\n this.commandRegex = commandRegex;\n }\n if (forcedCommandRegex) {\n if (!forcedCommandRegex.global) {\n throw new Error('forcedCommandRegex must have global flag set');\n }\n this.forcedCommandRegex = forcedCommandRegex;\n }\n }\n\n (0, _createClass3.default)(AutocompleteProvider, [{\n key: 'destroy',\n value: function destroy() {}\n // stub\n\n\n /**\n * Of the matched commands in the query, returns the first that contains or is contained by the selection, or null.\n * @param {string} query The query string\n * @param {SelectionRange} selection Selection to search\n * @param {boolean} force True if the user is forcing completion\n * @return {object} { command, range } where both objects fields are null if no match\n */\n\n }, {\n key: 'getCurrentCommand',\n value: function getCurrentCommand(query, selection) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var commandRegex = this.commandRegex;\n\n if (force && this.shouldForceComplete()) {\n commandRegex = this.forcedCommandRegex || /\\S+/g;\n }\n\n if (commandRegex == null) {\n return null;\n }\n\n commandRegex.lastIndex = 0;\n\n var match = void 0;\n while ((match = commandRegex.exec(query)) != null) {\n var start = match.index;\n var end = start + match[0].length;\n if (selection.start <= end && selection.end >= start) {\n return {\n command: match,\n range: {\n start: start,\n end: end\n }\n };\n }\n }\n return {\n command: null,\n range: {\n start: -1,\n end: -1\n }\n };\n }\n }, {\n key: 'getCompletions',\n value: function () {\n var _ref = (0, _bluebird.method)(function (query, selection) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n return [];\n });\n\n function getCompletions(_x2, _x3, _x4) {\n return _ref.apply(this, arguments);\n }\n\n return getCompletions;\n }()\n }, {\n key: 'getName',\n value: function getName() {\n return 'Default Provider';\n }\n }, {\n key: 'renderCompletions',\n value: function renderCompletions(completions) {\n console.error('stub; should be implemented in subclasses');\n return null;\n }\n\n // Whether we should provide completions even if triggered forcefully, without a sigil.\n\n }, {\n key: 'shouldForceComplete',\n value: function shouldForceComplete() {\n return false;\n }\n }]);\n return AutocompleteProvider;\n}(); /*\n Copyright 2016 Aviral Dasgupta\n Copyright 2017 Vector Creations Ltd\n Copyright 2017, 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = AutocompleteProvider;\nmodule.exports = exports['default'];\n//# sourceMappingURL=AutocompleteProvider.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PillCompletion = exports.TextualCompletion = undefined;\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* These were earlier stateless functional components but had to be converted\nsince we need to use refs/findDOMNode to access the underlying DOM node to focus the correct completion,\nsomething that is not entirely possible with stateless functional components. One could\npresumably wrap them in a

before rendering but I think this is the better way to do it.\n */\n\nvar TextualCompletion = exports.TextualCompletion = function (_React$Component) {\n (0, _inherits3.default)(TextualCompletion, _React$Component);\n\n function TextualCompletion() {\n (0, _classCallCheck3.default)(this, TextualCompletion);\n return (0, _possibleConstructorReturn3.default)(this, (TextualCompletion.__proto__ || (0, _getPrototypeOf2.default)(TextualCompletion)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(TextualCompletion, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n title = _props.title,\n subtitle = _props.subtitle,\n description = _props.description,\n className = _props.className,\n restProps = (0, _objectWithoutProperties3.default)(_props, ['title', 'subtitle', 'description', 'className']);\n\n return _react2.default.createElement(\n 'div',\n (0, _extends3.default)({ className: (0, _classnames2.default)('mx_Autocomplete_Completion_block', className) }, restProps),\n _react2.default.createElement(\n 'span',\n { className: 'mx_Autocomplete_Completion_title' },\n title\n ),\n _react2.default.createElement(\n 'span',\n { className: 'mx_Autocomplete_Completion_subtitle' },\n subtitle\n ),\n _react2.default.createElement(\n 'span',\n { className: 'mx_Autocomplete_Completion_description' },\n description\n )\n );\n }\n }]);\n return TextualCompletion;\n}(_react2.default.Component); /*\n Copyright 2016 Aviral Dasgupta\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nTextualCompletion.propTypes = {\n title: _propTypes2.default.string,\n subtitle: _propTypes2.default.string,\n description: _propTypes2.default.string,\n className: _propTypes2.default.string\n};\n\nvar PillCompletion = exports.PillCompletion = function (_React$Component2) {\n (0, _inherits3.default)(PillCompletion, _React$Component2);\n\n function PillCompletion() {\n (0, _classCallCheck3.default)(this, PillCompletion);\n return (0, _possibleConstructorReturn3.default)(this, (PillCompletion.__proto__ || (0, _getPrototypeOf2.default)(PillCompletion)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(PillCompletion, [{\n key: 'render',\n value: function render() {\n var _props2 = this.props,\n title = _props2.title,\n subtitle = _props2.subtitle,\n description = _props2.description,\n initialComponent = _props2.initialComponent,\n className = _props2.className,\n restProps = (0, _objectWithoutProperties3.default)(_props2, ['title', 'subtitle', 'description', 'initialComponent', 'className']);\n\n return _react2.default.createElement(\n 'div',\n (0, _extends3.default)({ className: (0, _classnames2.default)('mx_Autocomplete_Completion_pill', className), role: 'option' }, restProps),\n initialComponent,\n _react2.default.createElement(\n 'span',\n { className: 'mx_Autocomplete_Completion_title' },\n title\n ),\n _react2.default.createElement(\n 'span',\n { className: 'mx_Autocomplete_Completion_subtitle' },\n subtitle\n ),\n _react2.default.createElement(\n 'span',\n { className: 'mx_Autocomplete_Completion_description' },\n description\n )\n );\n }\n }]);\n return PillCompletion;\n}(_react2.default.Component);\n\nPillCompletion.propTypes = {\n title: _propTypes2.default.string,\n subtitle: _propTypes2.default.string,\n description: _propTypes2.default.string,\n initialComponent: _propTypes2.default.element,\n className: _propTypes2.default.string\n};\n//# sourceMappingURL=Components.js.map","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n var exp = {};\n var FORCE = fails(function () {\n return !!spaces[KEY]() || non[KEY]() != non;\n });\n var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n if (ALIAS) exp[ALIAS] = fn;\n $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n string = String(defined(string));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n};\n\nmodule.exports = exporter;\n","module.exports = {};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","exports.f = Object.getOwnPropertySymbols;\n","'use strict';\n\nvar _typeof2 = require('babel-runtime/helpers/typeof');\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _utils = require('./utils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @module pushprocessor\n */\n\nvar RULEKINDS_IN_ORDER = ['override', 'content', 'room', 'sender', 'underride'];\n\n// The default override rules to apply when calculating actions for an event. These\n// defaults apply under no other circumstances to avoid confusing the client with server\n// state. We do this for two reasons:\n// 1. Synapse is unlikely to send us the push rule in an incremental sync - see\n// https://github.com/matrix-org/synapse/pull/4867#issuecomment-481446072 for\n// more details.\n// 2. We often want to start using push rules ahead of the server supporting them,\n// and so we can put them here.\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar DEFAULT_OVERRIDE_RULES = [{\n // For homeservers which don't support MSC1930 yet\n rule_id: \".m.rule.tombstone\",\n default: true,\n enabled: true,\n conditions: [{\n kind: \"event_match\",\n key: \"type\",\n pattern: \"m.room.tombstone\"\n }, {\n kind: \"event_match\",\n key: \"state_key\",\n pattern: \"\"\n }],\n actions: [\"notify\", {\n set_tweak: \"highlight\",\n value: true\n }]\n}, {\n // For homeservers which don't support MSC2153 yet\n rule_id: \".m.rule.reaction\",\n default: true,\n enabled: true,\n conditions: [{\n kind: \"event_match\",\n key: \"type\",\n pattern: \"m.reaction\"\n }],\n actions: [\"dont_notify\"]\n}];\n\n/**\n * Construct a Push Processor.\n * @constructor\n * @param {Object} client The Matrix client object to use\n */\nfunction PushProcessor(client) {\n var _this = this;\n\n var cachedGlobToRegex = {\n // $glob: RegExp,\n };\n\n var matchingRuleFromKindSet = function matchingRuleFromKindSet(ev, kindset, device) {\n for (var ruleKindIndex = 0; ruleKindIndex < RULEKINDS_IN_ORDER.length; ++ruleKindIndex) {\n var kind = RULEKINDS_IN_ORDER[ruleKindIndex];\n var ruleset = kindset[kind];\n\n for (var ruleIndex = 0; ruleIndex < ruleset.length; ++ruleIndex) {\n var rule = ruleset[ruleIndex];\n if (!rule.enabled) {\n continue;\n }\n\n var rawrule = templateRuleToRaw(kind, rule, device);\n if (!rawrule) {\n continue;\n }\n\n if (_this.ruleMatchesEvent(rawrule, ev)) {\n rule.kind = kind;\n return rule;\n }\n }\n }\n return null;\n };\n\n var templateRuleToRaw = function templateRuleToRaw(kind, tprule, device) {\n var rawrule = {\n 'rule_id': tprule.rule_id,\n 'actions': tprule.actions,\n 'conditions': []\n };\n switch (kind) {\n case 'underride':\n case 'override':\n rawrule.conditions = tprule.conditions;\n break;\n case 'room':\n if (!tprule.rule_id) {\n return null;\n }\n rawrule.conditions.push({\n 'kind': 'event_match',\n 'key': 'room_id',\n 'value': tprule.rule_id\n });\n break;\n case 'sender':\n if (!tprule.rule_id) {\n return null;\n }\n rawrule.conditions.push({\n 'kind': 'event_match',\n 'key': 'user_id',\n 'value': tprule.rule_id\n });\n break;\n case 'content':\n if (!tprule.pattern) {\n return null;\n }\n rawrule.conditions.push({\n 'kind': 'event_match',\n 'key': 'content.body',\n 'pattern': tprule.pattern\n });\n break;\n }\n if (device) {\n rawrule.conditions.push({\n 'kind': 'device',\n 'profile_tag': device\n });\n }\n return rawrule;\n };\n\n var eventFulfillsCondition = function eventFulfillsCondition(cond, ev) {\n var condition_functions = {\n \"event_match\": eventFulfillsEventMatchCondition,\n \"device\": eventFulfillsDeviceCondition,\n \"contains_display_name\": eventFulfillsDisplayNameCondition,\n \"room_member_count\": eventFulfillsRoomMemberCountCondition,\n \"sender_notification_permission\": eventFulfillsSenderNotifPermCondition\n };\n if (condition_functions[cond.kind]) {\n return condition_functions[cond.kind](cond, ev);\n }\n // unknown conditions: we previously matched all unknown conditions,\n // but given that rules can be added to the base rules on a server,\n // it's probably better to not match unknown conditions.\n return false;\n };\n\n var eventFulfillsSenderNotifPermCondition = function eventFulfillsSenderNotifPermCondition(cond, ev) {\n var notifLevelKey = cond['key'];\n if (!notifLevelKey) {\n return false;\n }\n\n var room = client.getRoom(ev.getRoomId());\n if (!room || !room.currentState) {\n return false;\n }\n\n // Note that this should not be the current state of the room but the state at\n // the point the event is in the DAG. Unfortunately the js-sdk does not store\n // this.\n return room.currentState.mayTriggerNotifOfType(notifLevelKey, ev.getSender());\n };\n\n var eventFulfillsRoomMemberCountCondition = function eventFulfillsRoomMemberCountCondition(cond, ev) {\n if (!cond.is) {\n return false;\n }\n\n var room = client.getRoom(ev.getRoomId());\n if (!room || !room.currentState || !room.currentState.members) {\n return false;\n }\n\n var memberCount = room.currentState.getJoinedMemberCount();\n\n var m = cond.is.match(/^([=<>]*)([0-9]*)$/);\n if (!m) {\n return false;\n }\n var ineq = m[1];\n var rhs = parseInt(m[2]);\n if (isNaN(rhs)) {\n return false;\n }\n switch (ineq) {\n case '':\n case '==':\n return memberCount == rhs;\n case '<':\n return memberCount < rhs;\n case '>':\n return memberCount > rhs;\n case '<=':\n return memberCount <= rhs;\n case '>=':\n return memberCount >= rhs;\n default:\n return false;\n }\n };\n\n var eventFulfillsDisplayNameCondition = function eventFulfillsDisplayNameCondition(cond, ev) {\n var content = ev.getContent();\n if (ev.isEncrypted() && ev.getClearContent()) {\n content = ev.getClearContent();\n }\n if (!content || !content.body || typeof content.body != 'string') {\n return false;\n }\n\n var room = client.getRoom(ev.getRoomId());\n if (!room || !room.currentState || !room.currentState.members || !room.currentState.getMember(client.credentials.userId)) {\n return false;\n }\n\n var displayName = room.currentState.getMember(client.credentials.userId).name;\n\n // N.B. we can't use \\b as it chokes on unicode. however \\W seems to be okay\n // as shorthand for [^0-9A-Za-z_].\n var pat = new RegExp(\"(^|\\\\W)\" + (0, _utils.escapeRegExp)(displayName) + \"(\\\\W|$)\", 'i');\n return content.body.search(pat) > -1;\n };\n\n var eventFulfillsDeviceCondition = function eventFulfillsDeviceCondition(cond, ev) {\n return false; // XXX: Allow a profile tag to be set for the web client instance\n };\n\n var eventFulfillsEventMatchCondition = function eventFulfillsEventMatchCondition(cond, ev) {\n if (!cond.key) {\n return false;\n }\n\n var val = valueForDottedKey(cond.key, ev);\n if (!val || typeof val != 'string') {\n return false;\n }\n\n if (cond.value) {\n return cond.value === val;\n }\n\n var regex = void 0;\n\n if (cond.key == 'content.body') {\n regex = createCachedRegex('(^|\\\\W)', cond.pattern, '(\\\\W|$)');\n } else {\n regex = createCachedRegex('^', cond.pattern, '$');\n }\n\n return !!val.match(regex);\n };\n\n var createCachedRegex = function createCachedRegex(prefix, glob, suffix) {\n if (cachedGlobToRegex[glob]) {\n return cachedGlobToRegex[glob];\n }\n cachedGlobToRegex[glob] = new RegExp(prefix + (0, _utils.globToRegexp)(glob) + suffix, 'i');\n return cachedGlobToRegex[glob];\n };\n\n var valueForDottedKey = function valueForDottedKey(key, ev) {\n var parts = key.split('.');\n var val = void 0;\n\n // special-case the first component to deal with encrypted messages\n var firstPart = parts[0];\n if (firstPart == 'content') {\n val = ev.getContent();\n parts.shift();\n } else if (firstPart == 'type') {\n val = ev.getType();\n parts.shift();\n } else {\n // use the raw event for any other fields\n val = ev.event;\n }\n\n while (parts.length > 0) {\n var thispart = parts.shift();\n if (!val[thispart]) {\n return null;\n }\n val = val[thispart];\n }\n return val;\n };\n\n var matchingRuleForEventWithRulesets = function matchingRuleForEventWithRulesets(ev, rulesets) {\n if (!rulesets || !rulesets.device) {\n return null;\n }\n if (ev.getSender() == client.credentials.userId) {\n return null;\n }\n\n var allDevNames = (0, _keys2.default)(rulesets.device);\n for (var i = 0; i < allDevNames.length; ++i) {\n var devname = allDevNames[i];\n var devrules = rulesets.device[devname];\n\n var matchingRule = matchingRuleFromKindSet(devrules, devname);\n if (matchingRule) {\n return matchingRule;\n }\n }\n return matchingRuleFromKindSet(ev, rulesets.global);\n };\n\n var pushActionsForEventAndRulesets = function pushActionsForEventAndRulesets(ev, rulesets) {\n var rule = matchingRuleForEventWithRulesets(ev, rulesets);\n if (!rule) {\n return {};\n }\n\n var actionObj = PushProcessor.actionListToActionsObject(rule.actions);\n\n // Some actions are implicit in some situations: we add those here\n if (actionObj.tweaks.highlight === undefined) {\n // if it isn't specified, highlight if it's a content\n // rule but otherwise not\n actionObj.tweaks.highlight = rule.kind == 'content';\n }\n\n return actionObj;\n };\n\n var applyRuleDefaults = function applyRuleDefaults(clientRuleset) {\n // Deep clone the object before we mutate it\n var ruleset = JSON.parse((0, _stringify2.default)(clientRuleset));\n\n if (!clientRuleset['global']) {\n clientRuleset['global'] = {};\n }\n if (!clientRuleset['global']['override']) {\n clientRuleset['global']['override'] = [];\n }\n\n // Apply default overrides\n var globalOverrides = clientRuleset['global']['override'];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n var _loop = function _loop() {\n var override = _step.value;\n\n var existingRule = globalOverrides.find(function (r) {\n return r.rule_id === override.rule_id;\n });\n\n if (!existingRule) {\n var ruleId = override.rule_id;\n console.warn('Adding default global override for ' + ruleId);\n globalOverrides.push(override);\n }\n };\n\n for (var _iterator = (0, _getIterator3.default)(DEFAULT_OVERRIDE_RULES), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n _loop();\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return ruleset;\n };\n\n this.ruleMatchesEvent = function (rule, ev) {\n var ret = true;\n for (var i = 0; i < rule.conditions.length; ++i) {\n var cond = rule.conditions[i];\n ret &= eventFulfillsCondition(cond, ev);\n }\n //console.log(\"Rule \"+rule.rule_id+(ret ? \" matches\" : \" doesn't match\"));\n return ret;\n };\n\n /**\n * Get the user's push actions for the given event\n *\n * @param {module:models/event.MatrixEvent} ev\n *\n * @return {PushAction}\n */\n this.actionsForEvent = function (ev) {\n var rules = applyRuleDefaults(client.pushRules);\n return pushActionsForEventAndRulesets(ev, rules);\n };\n\n /**\n * Get one of the users push rules by its ID\n *\n * @param {string} ruleId The ID of the rule to search for\n * @return {object} The push rule, or null if no such rule was found\n */\n this.getPushRuleById = function (ruleId) {\n var _arr = ['device', 'global'];\n\n for (var _i = 0; _i < _arr.length; _i++) {\n var scope = _arr[_i];\n if (client.pushRules[scope] === undefined) continue;\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(RULEKINDS_IN_ORDER), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var kind = _step2.value;\n\n if (client.pushRules[scope][kind] === undefined) continue;\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(client.pushRules[scope][kind]), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var rule = _step3.value;\n\n if (rule.rule_id === ruleId) return rule;\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n return null;\n };\n}\n\n/**\n * Convert a list of actions into a object with the actions as keys and their values\n * eg. [ 'notify', { set_tweak: 'sound', value: 'default' } ]\n * becomes { notify: true, tweaks: { sound: 'default' } }\n * @param {array} actionlist The actions list\n *\n * @return {object} A object with key 'notify' (true or false) and an object of actions\n */\nPushProcessor.actionListToActionsObject = function (actionlist) {\n var actionobj = { 'notify': false, 'tweaks': {} };\n for (var i = 0; i < actionlist.length; ++i) {\n var action = actionlist[i];\n if (action === 'notify') {\n actionobj.notify = true;\n } else if ((typeof action === 'undefined' ? 'undefined' : (0, _typeof3.default)(action)) === 'object') {\n if (action.value === undefined) {\n action.value = true;\n }\n actionobj.tweaks[action.set_tweak] = action.value;\n }\n }\n return actionobj;\n};\n\n/**\n * Rewrites conditions on a client's push rules to match the defaults\n * where applicable. Useful for upgrading push rules to more strict\n * conditions when the server is falling behind on defaults.\n * @param {object} incomingRules The client's existing push rules\n * @returns {object} The rewritten rules\n */\nPushProcessor.rewriteDefaultRules = function (incomingRules) {\n var newRules = JSON.parse((0, _stringify2.default)(incomingRules)); // deep clone\n\n // These lines are mostly to make the tests happy. We shouldn't run into these\n // properties missing in practice.\n if (!newRules) newRules = {};\n if (!newRules.global) newRules.global = {};\n if (!newRules.global.override) newRules.global.override = [];\n\n // Fix default override rules\n newRules.global.override = newRules.global.override.map(function (r) {\n var defaultRule = DEFAULT_OVERRIDE_RULES.find(function (d) {\n return d.rule_id === r.rule_id;\n });\n if (!defaultRule) return r;\n\n // Copy over the actions, default, and conditions. Don't touch the user's\n // preference.\n r.default = defaultRule.default;\n r.conditions = defaultRule.conditions;\n r.actions = defaultRule.actions;\n return r;\n });\n\n return newRules;\n};\n\n/**\n * @typedef {Object} PushAction\n * @type {Object}\n * @property {boolean} notify Whether this event should notify the user or not.\n * @property {Object} tweaks How this event should be notified.\n * @property {boolean} tweaks.highlight Whether this event should be highlighted\n * on the UI.\n * @property {boolean} tweaks.sound Whether this notification should produce a\n * noise.\n */\n\n/** The PushProcessor class. */\nmodule.exports = PushProcessor;\n//# sourceMappingURL=pushprocessor.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Represents the base class for all level handlers. This class performs no logic\n * and should be overridden.\n */\nvar SettingsHandler = function () {\n function SettingsHandler() {\n (0, _classCallCheck3.default)(this, SettingsHandler);\n }\n\n (0, _createClass3.default)(SettingsHandler, [{\n key: \"getValue\",\n\n /**\n * Gets the value for a particular setting at this level for a particular room.\n * If no room is applicable, the roomId may be null. The roomId may not be\n * applicable to this level and may be ignored by the handler.\n * @param {string} settingName The name of the setting.\n * @param {String} roomId The room ID to read from, may be null.\n * @returns {*} The setting value, or null if not found.\n */\n value: function getValue(settingName, roomId) {\n console.error(\"Invalid operation: getValue was not overridden\");\n return null;\n }\n\n /**\n * Sets the value for a particular setting at this level for a particular room.\n * If no room is applicable, the roomId may be null. The roomId may not be\n * applicable to this level and may be ignored by the handler. Setting a value\n * to null will cause the level to remove the value. The current user should be\n * able to set the value prior to calling this.\n * @param {string} settingName The name of the setting to change.\n * @param {String} roomId The room ID to set the value in, may be null.\n * @param {*} newValue The new value for the setting, may be null.\n * @returns {Promise} Resolves when the setting has been saved.\n */\n\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n console.error(\"Invalid operation: setValue was not overridden\");\n return _bluebird2.default.reject();\n }\n\n /**\n * Determines if the current user is able to set the value of the given setting\n * in the given room at this level.\n * @param {string} settingName The name of the setting to check.\n * @param {String} roomId The room ID to check in, may be null\n * @returns {boolean} True if the setting can be set by the user, false otherwise.\n */\n\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n return false;\n }\n\n /**\n * Determines if this level is supported on this device.\n * @returns {boolean} True if this level is supported on the current device.\n */\n\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n return false;\n }\n }]);\n return SettingsHandler;\n}(); /*\n Copyright 2017 Travis Ralston\n Copyright 2019 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = SettingsHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=SettingsHandler.js.map","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _events = require('events');\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Stores information about the widgets active in the app right now:\n * * What widget is set to remain always-on-screen, if any\n * Only one widget may be 'always on screen' at any one time.\n * * Negotiated capabilities for active apps\n */\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar ActiveWidgetStore = function (_EventEmitter) {\n (0, _inherits3.default)(ActiveWidgetStore, _EventEmitter);\n\n function ActiveWidgetStore() {\n (0, _classCallCheck3.default)(this, ActiveWidgetStore);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (ActiveWidgetStore.__proto__ || (0, _getPrototypeOf2.default)(ActiveWidgetStore)).call(this));\n\n _this._persistentWidgetId = null;\n\n // A list of negotiated capabilities for each widget, by ID\n // {\n // widgetId: [caps...],\n // }\n _this._capsByWidgetId = {};\n\n // A WidgetMessaging instance for each widget ID\n _this._widgetMessagingByWidgetId = {};\n\n // What room ID each widget is associated with (if it's a room widget)\n _this._roomIdByWidgetId = {};\n\n _this.onRoomStateEvents = _this.onRoomStateEvents.bind(_this);\n\n _this.dispatcherRef = null;\n return _this;\n }\n\n (0, _createClass3.default)(ActiveWidgetStore, [{\n key: 'start',\n value: function start() {\n _MatrixClientPeg2.default.get().on('RoomState.events', this.onRoomStateEvents);\n }\n }, {\n key: 'stop',\n value: function stop() {\n if (_MatrixClientPeg2.default.get()) {\n _MatrixClientPeg2.default.get().removeListener('RoomState.events', this.onRoomStateEvents);\n }\n this._capsByWidgetId = {};\n this._widgetMessagingByWidgetId = {};\n this._roomIdByWidgetId = {};\n }\n }, {\n key: 'onRoomStateEvents',\n value: function onRoomStateEvents(ev, state) {\n // XXX: This listens for state events in order to remove the active widget.\n // Everything else relies on views listening for events and calling setters\n // on this class which is terrible. This store should just listen for events\n // and keep itself up to date.\n if (ev.getType() !== 'im.vector.modular.widgets') return;\n\n if (ev.getStateKey() === this._persistentWidgetId) {\n this.destroyPersistentWidget(this._persistentWidgetId);\n }\n }\n }, {\n key: 'destroyPersistentWidget',\n value: function destroyPersistentWidget(id) {\n if (id !== this._persistentWidgetId) return;\n var toDeleteId = this._persistentWidgetId;\n\n this.setWidgetPersistence(toDeleteId, false);\n this.delWidgetMessaging(toDeleteId);\n this.delWidgetCapabilities(toDeleteId);\n this.delRoomId(toDeleteId);\n }\n }, {\n key: 'setWidgetPersistence',\n value: function setWidgetPersistence(widgetId, val) {\n if (this._persistentWidgetId === widgetId && !val) {\n this._persistentWidgetId = null;\n } else if (this._persistentWidgetId !== widgetId && val) {\n this._persistentWidgetId = widgetId;\n }\n this.emit('update');\n }\n }, {\n key: 'getWidgetPersistence',\n value: function getWidgetPersistence(widgetId) {\n return this._persistentWidgetId === widgetId;\n }\n }, {\n key: 'getPersistentWidgetId',\n value: function getPersistentWidgetId() {\n return this._persistentWidgetId;\n }\n }, {\n key: 'setWidgetCapabilities',\n value: function setWidgetCapabilities(widgetId, caps) {\n this._capsByWidgetId[widgetId] = caps;\n this.emit('update');\n }\n }, {\n key: 'widgetHasCapability',\n value: function widgetHasCapability(widgetId, cap) {\n return this._capsByWidgetId[widgetId] && this._capsByWidgetId[widgetId].includes(cap);\n }\n }, {\n key: 'delWidgetCapabilities',\n value: function delWidgetCapabilities(widgetId) {\n delete this._capsByWidgetId[widgetId];\n this.emit('update');\n }\n }, {\n key: 'setWidgetMessaging',\n value: function setWidgetMessaging(widgetId, wm) {\n // Stop any existing widget messaging first\n this.delWidgetMessaging(widgetId);\n this._widgetMessagingByWidgetId[widgetId] = wm;\n this.emit('update');\n }\n }, {\n key: 'getWidgetMessaging',\n value: function getWidgetMessaging(widgetId) {\n return this._widgetMessagingByWidgetId[widgetId];\n }\n }, {\n key: 'delWidgetMessaging',\n value: function delWidgetMessaging(widgetId) {\n if (this._widgetMessagingByWidgetId[widgetId]) {\n try {\n this._widgetMessagingByWidgetId[widgetId].stop();\n } catch (e) {\n console.error('Failed to stop listening for widgetMessaging events', e.message);\n }\n delete this._widgetMessagingByWidgetId[widgetId];\n this.emit('update');\n }\n }\n }, {\n key: 'getRoomId',\n value: function getRoomId(widgetId) {\n return this._roomIdByWidgetId[widgetId];\n }\n }, {\n key: 'setRoomId',\n value: function setRoomId(widgetId, roomId) {\n this._roomIdByWidgetId[widgetId] = roomId;\n this.emit('update');\n }\n }, {\n key: 'delRoomId',\n value: function delRoomId(widgetId) {\n delete this._roomIdByWidgetId[widgetId];\n this.emit('update');\n }\n }]);\n return ActiveWidgetStore;\n}(_events2.default);\n\nif (global.singletonActiveWidgetStore === undefined) {\n global.singletonActiveWidgetStore = new ActiveWidgetStore();\n}\nexports.default = global.singletonActiveWidgetStore;\nmodule.exports = exports['default'];\n//# sourceMappingURL=ActiveWidgetStore.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// derived from code from github.com/noeldelgado/gemini-scrollbar\n// Copyright (c) Noel Delgado (pixelia.me)\nfunction getScrollbarWidth(alternativeOverflow) {\n var div = document.createElement('div');\n div.className = 'mx_AutoHideScrollbar'; //to get width of css scrollbar\n div.style.position = 'absolute';\n div.style.top = '-9999px';\n div.style.width = '100px';\n div.style.height = '100px';\n div.style.overflow = \"scroll\";\n if (alternativeOverflow) {\n div.style.overflow = alternativeOverflow;\n }\n div.style.msOverflowStyle = '-ms-autohiding-scrollbar';\n document.body.appendChild(div);\n var scrollbarWidth = div.offsetWidth - div.clientWidth;\n document.body.removeChild(div);\n return scrollbarWidth;\n} /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction install() {\n var scrollbarWidth = getScrollbarWidth();\n if (scrollbarWidth !== 0) {\n var hasForcedOverlayScrollbar = getScrollbarWidth('overlay') === 0;\n // overflow: overlay on webkit doesn't auto hide the scrollbar\n if (hasForcedOverlayScrollbar) {\n document.body.classList.add(\"mx_scrollbar_overlay_noautohide\");\n } else {\n document.body.classList.add(\"mx_scrollbar_nooverlay\");\n var style = document.createElement('style');\n style.type = 'text/css';\n style.innerText = 'body.mx_scrollbar_nooverlay { --scrollbar-width: ' + scrollbarWidth + 'px; }';\n document.head.appendChild(style);\n }\n }\n}\n\nvar installBodyClassesIfNeeded = function () {\n var installed = false;\n return function () {\n if (!installed) {\n install();\n installed = true;\n }\n };\n}();\n\nvar AutoHideScrollbar = function (_React$Component) {\n (0, _inherits3.default)(AutoHideScrollbar, _React$Component);\n\n function AutoHideScrollbar(props) {\n (0, _classCallCheck3.default)(this, AutoHideScrollbar);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (AutoHideScrollbar.__proto__ || (0, _getPrototypeOf2.default)(AutoHideScrollbar)).call(this, props));\n\n _this.onOverflow = _this.onOverflow.bind(_this);\n _this.onUnderflow = _this.onUnderflow.bind(_this);\n _this._collectContainerRef = _this._collectContainerRef.bind(_this);\n _this._needsOverflowListener = null;\n return _this;\n }\n\n (0, _createClass3.default)(AutoHideScrollbar, [{\n key: 'onOverflow',\n value: function onOverflow() {\n this.containerRef.classList.add(\"mx_AutoHideScrollbar_overflow\");\n this.containerRef.classList.remove(\"mx_AutoHideScrollbar_underflow\");\n }\n }, {\n key: 'onUnderflow',\n value: function onUnderflow() {\n this.containerRef.classList.remove(\"mx_AutoHideScrollbar_overflow\");\n this.containerRef.classList.add(\"mx_AutoHideScrollbar_underflow\");\n }\n }, {\n key: 'checkOverflow',\n value: function checkOverflow() {\n if (!this._needsOverflowListener) {\n return;\n }\n if (this.containerRef.scrollHeight > this.containerRef.clientHeight) {\n this.onOverflow();\n } else {\n this.onUnderflow();\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this.checkOverflow();\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n installBodyClassesIfNeeded();\n this._needsOverflowListener = document.body.classList.contains(\"mx_scrollbar_nooverlay\");\n this.checkOverflow();\n }\n }, {\n key: '_collectContainerRef',\n value: function _collectContainerRef(ref) {\n if (ref && !this.containerRef) {\n this.containerRef = ref;\n }\n if (this.props.wrappedRef) {\n this.props.wrappedRef(ref);\n }\n }\n }, {\n key: 'getScrollTop',\n value: function getScrollTop() {\n return this.containerRef.scrollTop;\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'div',\n {\n ref: this._collectContainerRef,\n style: this.props.style,\n className: [\"mx_AutoHideScrollbar\", this.props.className].join(\" \"),\n onScroll: this.props.onScroll,\n onWheel: this.props.onWheel\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_AutoHideScrollbar_offset' },\n this.props.children\n )\n );\n }\n }]);\n return AutoHideScrollbar;\n}(_react2.default.Component);\n\nexports.default = AutoHideScrollbar;\nmodule.exports = exports['default'];\n//# sourceMappingURL=AutoHideScrollbar.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _DateUtils = require('../../../DateUtils');\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _Permalinks = require('../../../utils/permalinks/Permalinks');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// This component does no cycle detection, simply because the only way to make such a cycle would be to\n// craft event_id's, using a homeserver that generates predictable event IDs; even then the impact would\n// be low as each event being loaded (after the first) is triggered by an explicit user action.\nvar ReplyThread = function (_React$Component) {\n (0, _inherits3.default)(ReplyThread, _React$Component);\n\n function ReplyThread(props, context) {\n (0, _classCallCheck3.default)(this, ReplyThread);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (ReplyThread.__proto__ || (0, _getPrototypeOf2.default)(ReplyThread)).call(this, props, context));\n\n _this.onRoomRedaction = function (ev, room) {\n if (_this.unmounted) return;\n\n // If one of the events we are rendering gets redacted, force a re-render\n if (_this.state.events.some(function (event) {\n return event.getId() === ev.getId();\n })) {\n _this.forceUpdate();\n }\n };\n\n _this.state = {\n // The loaded events to be rendered as linear-replies\n events: [],\n\n // The latest loaded event which has not yet been shown\n loadedEv: null,\n // Whether the component is still loading more events\n loading: true,\n\n // Whether as error was encountered fetching a replied to event.\n err: false\n };\n\n _this.onQuoteClick = _this.onQuoteClick.bind(_this);\n _this.canCollapse = _this.canCollapse.bind(_this);\n _this.collapse = _this.collapse.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(ReplyThread, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n this.unmounted = false;\n this.room = this.context.matrixClient.getRoom(this.props.parentEv.getRoomId());\n this.room.on(\"Room.redaction\", this.onRoomRedaction);\n // same event handler as Room.redaction as for both we just do forceUpdate\n this.room.on(\"Room.redactionCancelled\", this.onRoomRedaction);\n this.initialize();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this.props.onHeightChanged();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unmounted = true;\n if (this.room) {\n this.room.removeListener(\"Room.redaction\", this.onRoomRedaction);\n this.room.removeListener(\"Room.redactionCancelled\", this.onRoomRedaction);\n }\n }\n }, {\n key: 'initialize',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var parentEv, ev;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n parentEv = this.props.parentEv;\n // at time of making this component we checked that props.parentEv has a parentEventId\n\n _context.next = 3;\n return (0, _bluebird.resolve)(this.getEvent(ReplyThread.getParentEventId(parentEv)));\n\n case 3:\n ev = _context.sent;\n\n if (!this.unmounted) {\n _context.next = 6;\n break;\n }\n\n return _context.abrupt('return');\n\n case 6:\n\n if (ev) {\n this.setState({\n events: [ev]\n }, this.loadNextEvent);\n } else {\n this.setState({ err: true });\n }\n\n case 7:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function initialize() {\n return _ref.apply(this, arguments);\n }\n\n return initialize;\n }()\n }, {\n key: 'loadNextEvent',\n value: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var ev, inReplyToEventId, loadedEv;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!this.unmounted) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt('return');\n\n case 2:\n ev = this.state.events[0];\n inReplyToEventId = ReplyThread.getParentEventId(ev);\n\n if (inReplyToEventId) {\n _context2.next = 7;\n break;\n }\n\n this.setState({\n loading: false\n });\n return _context2.abrupt('return');\n\n case 7:\n _context2.next = 9;\n return (0, _bluebird.resolve)(this.getEvent(inReplyToEventId));\n\n case 9:\n loadedEv = _context2.sent;\n\n if (!this.unmounted) {\n _context2.next = 12;\n break;\n }\n\n return _context2.abrupt('return');\n\n case 12:\n\n if (loadedEv) {\n this.setState({ loadedEv: loadedEv });\n } else {\n this.setState({ err: true });\n }\n\n case 13:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function loadNextEvent() {\n return _ref2.apply(this, arguments);\n }\n\n return loadNextEvent;\n }()\n }, {\n key: 'getEvent',\n value: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(eventId) {\n var event;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n event = this.room.findEventById(eventId);\n\n if (!event) {\n _context3.next = 3;\n break;\n }\n\n return _context3.abrupt('return', event);\n\n case 3:\n _context3.prev = 3;\n _context3.next = 6;\n return (0, _bluebird.resolve)(this.context.matrixClient.getEventTimeline(this.room.getUnfilteredTimelineSet(), eventId));\n\n case 6:\n _context3.next = 11;\n break;\n\n case 8:\n _context3.prev = 8;\n _context3.t0 = _context3['catch'](3);\n return _context3.abrupt('return', null);\n\n case 11:\n return _context3.abrupt('return', this.room.findEventById(eventId));\n\n case 12:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this, [[3, 8]]);\n }));\n\n function getEvent(_x) {\n return _ref3.apply(this, arguments);\n }\n\n return getEvent;\n }()\n }, {\n key: 'canCollapse',\n value: function canCollapse() {\n return this.state.events.length > 1;\n }\n }, {\n key: 'collapse',\n value: function collapse() {\n this.initialize();\n }\n }, {\n key: 'onQuoteClick',\n value: function onQuoteClick() {\n var events = [this.state.loadedEv].concat((0, _toConsumableArray3.default)(this.state.events));\n\n this.setState({\n loadedEv: null,\n events: events\n }, this.loadNextEvent);\n\n _dispatcher2.default.dispatch({ action: 'focus_composer' });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var header = null;\n\n if (this.state.err) {\n header = _react2.default.createElement(\n 'blockquote',\n { className: 'mx_ReplyThread mx_ReplyThread_error' },\n (0, _languageHandler._t)('Unable to load event that was replied to, ' + 'it either does not exist or you do not have permission to view it.')\n );\n } else if (this.state.loadedEv) {\n var ev = this.state.loadedEv;\n var Pill = _index2.default.getComponent('elements.Pill');\n var room = this.context.matrixClient.getRoom(ev.getRoomId());\n header = _react2.default.createElement(\n 'blockquote',\n { className: 'mx_ReplyThread' },\n (0, _languageHandler._t)('In reply to ', {}, {\n 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { onClick: _this2.onQuoteClick, className: 'mx_ReplyThread_show' },\n sub\n );\n },\n 'pill': _react2.default.createElement(Pill, { type: Pill.TYPE_USER_MENTION, room: room,\n url: (0, _Permalinks.makeUserPermalink)(ev.getSender()), shouldShowPillAvatar: true })\n })\n );\n } else if (this.state.loading) {\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n header = _react2.default.createElement(Spinner, { w: 16, h: 16 });\n }\n\n var EventTile = _index2.default.getComponent('views.rooms.EventTile');\n var DateSeparator = _index2.default.getComponent('messages.DateSeparator');\n var evTiles = this.state.events.map(function (ev) {\n var dateSep = null;\n\n if ((0, _DateUtils.wantsDateSeparator)(_this2.props.parentEv.getDate(), ev.getDate())) {\n dateSep = _react2.default.createElement(\n 'a',\n { href: _this2.props.url },\n _react2.default.createElement(DateSeparator, { ts: ev.getTs() })\n );\n }\n\n return _react2.default.createElement(\n 'blockquote',\n { className: 'mx_ReplyThread', key: ev.getId() },\n dateSep,\n _react2.default.createElement(EventTile, {\n mxEvent: ev,\n tileShape: 'reply',\n onHeightChanged: _this2.props.onHeightChanged,\n permalinkCreator: _this2.props.permalinkCreator,\n isRedacted: ev.isRedacted(),\n isTwelveHour: _SettingsStore2.default.getValue(\"showTwelveHourTimestamps\") })\n );\n });\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n null,\n header\n ),\n _react2.default.createElement(\n 'div',\n null,\n evTiles\n )\n );\n }\n }], [{\n key: 'getParentEventId',\n value: function getParentEventId(ev) {\n if (!ev || ev.isRedacted()) return;\n\n // XXX: For newer relations (annotations, replacements, etc.), we now\n // have a `getRelation` helper on the event, and you might assume it\n // could be used here for replies as well... However, the helper\n // currently assumes the relation has a `rel_type`, which older replies\n // do not, so this block is left as-is for now.\n var mRelatesTo = ev.getWireContent()['m.relates_to'];\n if (mRelatesTo && mRelatesTo['m.in_reply_to']) {\n var mInReplyTo = mRelatesTo['m.in_reply_to'];\n if (mInReplyTo && mInReplyTo['event_id']) return mInReplyTo['event_id'];\n }\n }\n\n // Part of Replies fallback support\n\n }, {\n key: 'stripPlainReply',\n value: function stripPlainReply(body) {\n // Removes lines beginning with `> ` until you reach one that doesn't.\n var lines = body.split('\\n');\n while (lines.length && lines[0].startsWith('> ')) {\n lines.shift();\n } // Reply fallback has a blank line after it, so remove it to prevent leading newline\n if (lines[0] === '') lines.shift();\n return lines.join('\\n');\n }\n\n // Part of Replies fallback support\n\n }, {\n key: 'stripHTMLReply',\n value: function stripHTMLReply(html) {\n return html.replace(/^[\\s\\S]+?<\\/mx-reply>/, '');\n }\n\n // Part of Replies fallback support\n\n }, {\n key: 'getNestedReplyText',\n value: function getNestedReplyText(ev, permalinkCreator) {\n if (!ev) return null;\n\n var _ev$getContent = ev.getContent(),\n body = _ev$getContent.body,\n html = _ev$getContent.formatted_body;\n\n if (this.getParentEventId(ev)) {\n if (body) body = this.stripPlainReply(body);\n if (html) html = this.stripHTMLReply(html);\n }\n\n var evLink = permalinkCreator.forEvent(ev.getId());\n var userLink = (0, _Permalinks.makeUserPermalink)(ev.getSender());\n var mxid = ev.getSender();\n\n // This fallback contains text that is explicitly EN.\n switch (ev.getContent().msgtype) {\n case 'm.text':\n case 'm.notice':\n {\n html = '
In reply to ' + mxid + '' + ('
' + (html || body) + '
');\n var lines = body.trim().split('\\n');\n if (lines.length > 0) {\n lines[0] = '<' + mxid + '> ' + lines[0];\n body = lines.map(function (line) {\n return '> ' + line;\n }).join('\\n') + '\\n\\n';\n }\n break;\n }\n case 'm.image':\n html = '
In reply to ' + mxid + '' + '
sent an image.
';\n body = '> <' + mxid + '> sent an image.\\n\\n';\n break;\n case 'm.video':\n html = '
In reply to ' + mxid + '' + '
sent a video.
';\n body = '> <' + mxid + '> sent a video.\\n\\n';\n break;\n case 'm.audio':\n html = '
In reply to ' + mxid + '' + '
sent an audio file.
';\n body = '> <' + mxid + '> sent an audio file.\\n\\n';\n break;\n case 'm.file':\n html = '
In reply to ' + mxid + '' + '
sent a file.
';\n body = '> <' + mxid + '> sent a file.\\n\\n';\n break;\n case 'm.emote':\n {\n html = '
In reply to * ' + ('' + mxid + '
' + (html || body) + '
');\n var _lines = body.trim().split('\\n');\n if (_lines.length > 0) {\n _lines[0] = '* <' + mxid + '> ' + _lines[0];\n body = _lines.map(function (line) {\n return '> ' + line;\n }).join('\\n') + '\\n\\n';\n }\n break;\n }\n default:\n return null;\n }\n\n return { body: body, html: html };\n }\n }, {\n key: 'makeReplyMixIn',\n value: function makeReplyMixIn(ev) {\n if (!ev) return {};\n return {\n 'm.relates_to': {\n 'm.in_reply_to': {\n 'event_id': ev.getId()\n }\n }\n };\n }\n }, {\n key: 'makeThread',\n value: function makeThread(parentEv, onHeightChanged, permalinkCreator, ref) {\n if (!ReplyThread.getParentEventId(parentEv)) {\n return _react2.default.createElement('div', null);\n }\n return _react2.default.createElement(ReplyThread, { parentEv: parentEv, onHeightChanged: onHeightChanged,\n ref: ref, permalinkCreator: permalinkCreator });\n }\n }]);\n return ReplyThread;\n}(_react2.default.Component); /*\n Copyright 2017 New Vector Ltd\n Copyright 2019 Michael Telatynski <7t3chguy@gmail.com>\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n\nReplyThread.propTypes = {\n // the latest event in this chain of replies\n parentEv: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixEvent),\n // called when the ReplyThread contents has changed, including EventTiles thereof\n onHeightChanged: _propTypes2.default.func.isRequired,\n permalinkCreator: _propTypes2.default.instanceOf(_Permalinks.RoomPermalinkCreator).isRequired\n};\nReplyThread.contextTypes = {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient).isRequired\n};\nexports.default = ReplyThread;\nmodule.exports = exports['default'];\n//# sourceMappingURL=ReplyThread.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _freeze = require('babel-runtime/core-js/object/freeze');\n\nvar _freeze2 = _interopRequireDefault(_freeze);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _ratelimitedfunc = require('../../ratelimitedfunc');\n\nvar _ratelimitedfunc2 = _interopRequireDefault(_ratelimitedfunc);\n\nvar _GroupAddressPicker = require('../../GroupAddressPicker');\n\nvar _GroupStore = require('../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar RightPanel = function (_React$Component) {\n (0, _inherits3.default)(RightPanel, _React$Component);\n (0, _createClass3.default)(RightPanel, null, [{\n key: 'propTypes',\n get: function get() {\n return {\n roomId: _propTypes2.default.string, // if showing panels for a given room, this is set\n groupId: _propTypes2.default.string, // if showing panels for a given group, this is set\n user: _propTypes2.default.object\n };\n }\n }, {\n key: 'contextTypes',\n get: function get() {\n return {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n };\n }\n }]);\n\n function RightPanel(props, context) {\n (0, _classCallCheck3.default)(this, RightPanel);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (RightPanel.__proto__ || (0, _getPrototypeOf2.default)(RightPanel)).call(this, props, context));\n\n _this.state = {\n phase: _this._getPhaseFromProps(),\n isUserPrivilegedInGroup: null\n };\n _this.onAction = _this.onAction.bind(_this);\n _this.onRoomStateMember = _this.onRoomStateMember.bind(_this);\n _this.onGroupStoreUpdated = _this.onGroupStoreUpdated.bind(_this);\n _this.onInviteToGroupButtonClick = _this.onInviteToGroupButtonClick.bind(_this);\n _this.onAddRoomToGroupButtonClick = _this.onAddRoomToGroupButtonClick.bind(_this);\n\n _this._delayedUpdate = new _ratelimitedfunc2.default(function () {\n _this.forceUpdate();\n }, 500);\n return _this;\n }\n\n (0, _createClass3.default)(RightPanel, [{\n key: '_getPhaseFromProps',\n value: function _getPhaseFromProps() {\n if (this.props.groupId) {\n return RightPanel.Phase.GroupMemberList;\n } else if (this.props.user) {\n return RightPanel.Phase.RoomMemberInfo;\n } else {\n return RightPanel.Phase.RoomMemberList;\n }\n }\n }, {\n key: 'componentWillMount',\n value: function componentWillMount() {\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n var cli = this.context.matrixClient;\n cli.on(\"RoomState.members\", this.onRoomStateMember);\n this._initGroupStore(this.props.groupId);\n if (this.props.user) {\n this.setState({ member: this.props.user });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _dispatcher2.default.unregister(this.dispatcherRef);\n if (this.context.matrixClient) {\n this.context.matrixClient.removeListener(\"RoomState.members\", this.onRoomStateMember);\n }\n this._unregisterGroupStore(this.props.groupId);\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(newProps) {\n if (newProps.groupId !== this.props.groupId) {\n this._unregisterGroupStore(this.props.groupId);\n this._initGroupStore(newProps.groupId);\n }\n }\n }, {\n key: '_initGroupStore',\n value: function _initGroupStore(groupId) {\n if (!groupId) return;\n _GroupStore2.default.registerListener(groupId, this.onGroupStoreUpdated);\n }\n }, {\n key: '_unregisterGroupStore',\n value: function _unregisterGroupStore() {\n _GroupStore2.default.unregisterListener(this.onGroupStoreUpdated);\n }\n }, {\n key: 'onGroupStoreUpdated',\n value: function onGroupStoreUpdated() {\n this.setState({\n isUserPrivilegedInGroup: _GroupStore2.default.isUserPrivileged(this.props.groupId)\n });\n }\n }, {\n key: 'onInviteToGroupButtonClick',\n value: function onInviteToGroupButtonClick() {\n var _this2 = this;\n\n (0, _GroupAddressPicker.showGroupInviteDialog)(this.props.groupId).then(function () {\n _this2.setState({\n phase: RightPanel.Phase.GroupMemberList\n });\n });\n }\n }, {\n key: 'onAddRoomToGroupButtonClick',\n value: function onAddRoomToGroupButtonClick() {\n var _this3 = this;\n\n (0, _GroupAddressPicker.showGroupAddRoomDialog)(this.props.groupId).then(function () {\n _this3.forceUpdate();\n });\n }\n }, {\n key: 'onRoomStateMember',\n value: function onRoomStateMember(ev, state, member) {\n if (member.roomId !== this.props.roomId) {\n return;\n }\n // redraw the badge on the membership list\n if (this.state.phase === RightPanel.Phase.RoomMemberList && member.roomId === this.props.roomId) {\n this._delayedUpdate();\n } else if (this.state.phase === RightPanel.Phase.RoomMemberInfo && member.roomId === this.props.roomId && member.userId === this.state.member.userId) {\n // refresh the member info (e.g. new power level)\n this._delayedUpdate();\n }\n }\n }, {\n key: 'onAction',\n value: function onAction(payload) {\n if (payload.action === \"view_right_panel_phase\") {\n this.setState({\n phase: payload.phase,\n groupRoomId: payload.groupRoomId,\n groupId: payload.groupId,\n member: payload.member,\n event: payload.event\n });\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var MemberList = _index2.default.getComponent('rooms.MemberList');\n var MemberInfo = _index2.default.getComponent('rooms.MemberInfo');\n var ThirdPartyMemberInfo = _index2.default.getComponent('rooms.ThirdPartyMemberInfo');\n var NotificationPanel = _index2.default.getComponent('structures.NotificationPanel');\n var FilePanel = _index2.default.getComponent('structures.FilePanel');\n\n var GroupMemberList = _index2.default.getComponent('groups.GroupMemberList');\n var GroupMemberInfo = _index2.default.getComponent('groups.GroupMemberInfo');\n var GroupRoomList = _index2.default.getComponent('groups.GroupRoomList');\n var GroupRoomInfo = _index2.default.getComponent('groups.GroupRoomInfo');\n\n var panel = _react2.default.createElement('div', null);\n\n if (this.props.roomId && this.state.phase === RightPanel.Phase.RoomMemberList) {\n panel = _react2.default.createElement(MemberList, { roomId: this.props.roomId, key: this.props.roomId });\n } else if (this.props.groupId && this.state.phase === RightPanel.Phase.GroupMemberList) {\n panel = _react2.default.createElement(GroupMemberList, { groupId: this.props.groupId, key: this.props.groupId });\n } else if (this.state.phase === RightPanel.Phase.GroupRoomList) {\n panel = _react2.default.createElement(GroupRoomList, { groupId: this.props.groupId, key: this.props.groupId });\n } else if (this.state.phase === RightPanel.Phase.RoomMemberInfo) {\n panel = _react2.default.createElement(MemberInfo, { member: this.state.member, key: this.props.roomId || this.state.member.userId });\n } else if (this.state.phase === RightPanel.Phase.Room3pidMemberInfo) {\n panel = _react2.default.createElement(ThirdPartyMemberInfo, { event: this.state.event, key: this.props.roomId });\n } else if (this.state.phase === RightPanel.Phase.GroupMemberInfo) {\n panel = _react2.default.createElement(GroupMemberInfo, {\n groupMember: this.state.member,\n groupId: this.props.groupId,\n key: this.state.member.user_id });\n } else if (this.state.phase === RightPanel.Phase.GroupRoomInfo) {\n panel = _react2.default.createElement(GroupRoomInfo, {\n groupRoomId: this.state.groupRoomId,\n groupId: this.props.groupId,\n key: this.state.groupRoomId });\n } else if (this.state.phase === RightPanel.Phase.NotificationPanel) {\n panel = _react2.default.createElement(NotificationPanel, null);\n } else if (this.state.phase === RightPanel.Phase.FilePanel) {\n panel = _react2.default.createElement(FilePanel, { roomId: this.props.roomId, resizeNotifier: this.props.resizeNotifier });\n }\n\n var classes = (0, _classnames2.default)(\"mx_RightPanel\", \"mx_fadable\", {\n \"collapsed\": this.props.collapsed,\n \"mx_fadable_faded\": this.props.disabled,\n \"dark-panel\": true\n });\n\n return _react2.default.createElement(\n 'aside',\n { className: classes },\n panel\n );\n }\n }]);\n return RightPanel;\n}(_react2.default.Component); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n Copyright 2017 New Vector Ltd\n Copyright 2018 New Vector Ltd\n Copyright 2019 Michael Telatynski <7t3chguy@gmail.com>\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nRightPanel.Phase = (0, _freeze2.default)({\n RoomMemberList: 'RoomMemberList',\n GroupMemberList: 'GroupMemberList',\n GroupRoomList: 'GroupRoomList',\n GroupRoomInfo: 'GroupRoomInfo',\n FilePanel: 'FilePanel',\n NotificationPanel: 'NotificationPanel',\n RoomMemberInfo: 'RoomMemberInfo',\n Room3pidMemberInfo: 'Room3pidMemberInfo',\n GroupMemberInfo: 'GroupMemberInfo'\n});\nexports.default = RightPanel;\nmodule.exports = exports['default'];\n//# sourceMappingURL=RightPanel.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = ratelimitedfunc;\n\nvar _lodash = require(\"lodash\");\n\nfunction ratelimitedfunc(fn, time) {\n var throttledFn = (0, _lodash.throttle)(fn, time, {\n leading: true,\n trailing: true\n });\n var _bind = throttledFn.bind;\n throttledFn.bind = function () {\n var boundFn = _bind.apply(throttledFn, arguments);\n boundFn.cancelPendingCall = throttledFn.cancelPendingCall;\n return boundFn;\n };\n\n throttledFn.cancelPendingCall = function () {\n throttledFn.cancel();\n };\n return throttledFn;\n} /*\n Copyright 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/**\n * 'debounces' a function to only execute every n milliseconds.\n * Useful when react-sdk gets many, many events but only wants\n * to update the interface once for all of them.\n *\n * Note that the function must not take arguments, since the args\n * could be different for each invocation of the function.\n *\n * The returned function has a 'cancelPendingCall' property which can be called\n * on unmount or similar to cancel any pending update.\n */\n\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=ratelimitedfunc.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (_ref) {\n var top = _ref.top,\n right = _ref.right,\n bottom = _ref.bottom,\n left = _ref.left;\n return {\n top: top,\n right: right,\n bottom: bottom,\n left: left,\n width: right - left,\n height: bottom - top,\n center: {\n x: (right + left) / 2,\n y: (bottom + top) / 2\n }\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (0, _memoizeOne2.default)(function (droppable, draggables) {\n return (0, _keys2.default)(draggables).map(function (id) {\n return draggables[id];\n }).filter(function (draggable) {\n return droppable.descriptor.id === draggable.descriptor.droppableId;\n }).sort(function (a, b) {\n return a.descriptor.index - b.descriptor.index;\n });\n});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getDisplacementMap = require('./get-displacement-map');\n\nvar _getDisplacementMap2 = _interopRequireDefault(_getDisplacementMap);\n\nvar _isPartiallyVisible = require('./visibility/is-partially-visible');\n\nvar _isPartiallyVisible2 = _interopRequireDefault(_isPartiallyVisible);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var draggable = _ref.draggable,\n destination = _ref.destination,\n previousImpact = _ref.previousImpact,\n viewport = _ref.viewport;\n\n var id = draggable.descriptor.id;\n var map = (0, _getDisplacementMap2.default)(previousImpact.movement.displaced);\n\n var isVisible = (0, _isPartiallyVisible2.default)({\n target: draggable.page.withMargin,\n destination: destination,\n viewport: viewport\n });\n\n var shouldAnimate = function () {\n if (!isVisible) {\n return false;\n }\n\n var previous = map[id];\n\n if (!previous) {\n return true;\n }\n\n return previous.shouldAnimate;\n }();\n\n var displacement = {\n draggableId: id,\n isVisible: isVisible,\n shouldAnimate: shouldAnimate\n };\n\n return displacement;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isContentActionable = isContentActionable;\nexports.canEditContent = canEditContent;\nexports.canEditOwnEvent = canEditOwnEvent;\nexports.findEditableEvent = findEditableEvent;\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _shouldHideEvent = require('../shouldHideEvent');\n\nvar _shouldHideEvent2 = _interopRequireDefault(_shouldHideEvent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Returns whether an event should allow actions like reply, reactions, edit, etc.\n * which effectively checks whether it's a regular message that has been sent and that we\n * can display.\n *\n * @param {MatrixEvent} mxEvent The event to check\n * @returns {boolean} true if actionable\n */\nfunction isContentActionable(mxEvent) {\n var eventStatus = mxEvent.status;\n\n // status is SENT before remote-echo, null after\n\n var isSent = !eventStatus || eventStatus === _matrixJsSdk.EventStatus.SENT;\n\n if (isSent && mxEvent.getType() === 'm.room.message') {\n var content = mxEvent.getContent();\n if (content.msgtype && content.msgtype !== 'm.bad.encrypted' && content.hasOwnProperty('body')) {\n return true;\n }\n }\n\n return false;\n} /*\n Copyright 2019 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction canEditContent(mxEvent) {\n if (mxEvent.status === _matrixJsSdk.EventStatus.CANCELLED || mxEvent.getType() !== \"m.room.message\") {\n return false;\n }\n var content = mxEvent.getOriginalContent();\n var msgtype = content.msgtype;\n\n return (msgtype === \"m.text\" || msgtype === \"m.emote\") && mxEvent.getSender() === _MatrixClientPeg2.default.get().getUserId();\n}\n\nfunction canEditOwnEvent(mxEvent) {\n // for now we only allow editing\n // your own events. So this just call through\n // In the future though, moderators will be able to\n // edit other people's messages as well but we don't\n // want findEditableEvent to return other people's events\n // hence this method.\n return canEditContent(mxEvent);\n}\n\nvar MAX_JUMP_DISTANCE = 100;\nfunction findEditableEvent(room, isForward) {\n var fromEventId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n\n var liveTimeline = room.getLiveTimeline();\n var events = liveTimeline.getEvents().concat(room.getPendingEvents());\n var maxIdx = events.length - 1;\n var inc = isForward ? 1 : -1;\n var beginIdx = isForward ? 0 : maxIdx;\n var endIdx = isForward ? maxIdx : 0;\n if (!fromEventId) {\n endIdx = Math.min(Math.max(0, beginIdx + inc * MAX_JUMP_DISTANCE), maxIdx);\n }\n var foundFromEventId = !fromEventId;\n for (var i = beginIdx; i !== endIdx + inc; i += inc) {\n var e = events[i];\n // find start event first\n if (!foundFromEventId && e.getId() === fromEventId) {\n foundFromEventId = true;\n // don't look further than MAX_JUMP_DISTANCE events from `fromEventId`\n // to not iterate potentially 1000nds of events on key up/down\n endIdx = Math.min(Math.max(0, i + inc * MAX_JUMP_DISTANCE), maxIdx);\n } else if (foundFromEventId && !(0, _shouldHideEvent2.default)(e) && canEditOwnEvent(e)) {\n // otherwise look for editable event\n return e;\n }\n }\n}\n//# sourceMappingURL=EventUtils.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (0, _createReactClass2.default)({\n displayName: 'QuestionDialog',\n propTypes: {\n title: _propTypes2.default.string,\n description: _propTypes2.default.node,\n extraButtons: _propTypes2.default.node,\n button: _propTypes2.default.string,\n danger: _propTypes2.default.bool,\n focus: _propTypes2.default.bool,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n title: \"\",\n description: \"\",\n extraButtons: null,\n focus: true,\n hasCancelButton: true,\n danger: false\n };\n },\n\n onOk: function onOk() {\n this.props.onFinished(true);\n },\n\n onCancel: function onCancel() {\n this.props.onFinished(false);\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n var primaryButtonClass = \"\";\n if (this.props.danger) {\n primaryButtonClass = \"danger\";\n }\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_QuestionDialog', onFinished: this.props.onFinished,\n title: this.props.title,\n contentId: 'mx_Dialog_content',\n hasCancel: this.props.hasCancelButton\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content', id: 'mx_Dialog_content' },\n this.props.description\n ),\n _react2.default.createElement(\n DialogButtons,\n { primaryButton: this.props.button || (0, _languageHandler._t)('OK'),\n primaryButtonClass: primaryButtonClass,\n cancelButton: this.props.cancelButton,\n hasCancel: this.props.hasCancelButton,\n onPrimaryButtonClick: this.onOk,\n focus: this.props.focus,\n onCancel: this.onCancel\n },\n this.props.extraButtons\n )\n );\n }\n}); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=QuestionDialog.js.map","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","\"use strict\";\n\nvar encode = require('mdurl/encode');\nvar decode = require('mdurl/decode');\n\nvar C_BACKSLASH = 92;\n\nvar decodeHTML = require('entities').decodeHTML;\n\nvar ENTITY = \"&(?:#x[a-f0-9]{1,8}|#[0-9]{1,8}|[a-z][a-z0-9]{1,31});\";\n\nvar TAGNAME = '[A-Za-z][A-Za-z0-9-]*';\nvar ATTRIBUTENAME = '[a-zA-Z_:][a-zA-Z0-9:._-]*';\nvar UNQUOTEDVALUE = \"[^\\\"'=<>`\\\\x00-\\\\x20]+\";\nvar SINGLEQUOTEDVALUE = \"'[^']*'\";\nvar DOUBLEQUOTEDVALUE = '\"[^\"]*\"';\nvar ATTRIBUTEVALUE = \"(?:\" + UNQUOTEDVALUE + \"|\" + SINGLEQUOTEDVALUE + \"|\" + DOUBLEQUOTEDVALUE + \")\";\nvar ATTRIBUTEVALUESPEC = \"(?:\" + \"\\\\s*=\" + \"\\\\s*\" + ATTRIBUTEVALUE + \")\";\nvar ATTRIBUTE = \"(?:\" + \"\\\\s+\" + ATTRIBUTENAME + ATTRIBUTEVALUESPEC + \"?)\";\nvar OPENTAG = \"<\" + TAGNAME + ATTRIBUTE + \"*\" + \"\\\\s*/?>\";\nvar CLOSETAG = \"]\";\nvar HTMLCOMMENT = \"|\";\nvar PROCESSINGINSTRUCTION = \"[<][?].*?[?][>]\";\nvar DECLARATION = \"]*>\";\nvar CDATA = \"\";\nvar HTMLTAG = \"(?:\" + OPENTAG + \"|\" + CLOSETAG + \"|\" + HTMLCOMMENT + \"|\" +\n PROCESSINGINSTRUCTION + \"|\" + DECLARATION + \"|\" + CDATA + \")\";\nvar reHtmlTag = new RegExp('^' + HTMLTAG, 'i');\n\nvar reBackslashOrAmp = /[\\\\&]/;\n\nvar ESCAPABLE = '[!\"#$%&\\'()*+,./:;<=>?@[\\\\\\\\\\\\]^_`{|}~-]';\n\nvar reEntityOrEscapedChar = new RegExp('\\\\\\\\' + ESCAPABLE + '|' + ENTITY, 'gi');\n\nvar XMLSPECIAL = '[&<>\"]';\n\nvar reXmlSpecial = new RegExp(XMLSPECIAL, 'g');\n\nvar reXmlSpecialOrEntity = new RegExp(ENTITY + '|' + XMLSPECIAL, 'gi');\n\nvar unescapeChar = function(s) {\n if (s.charCodeAt(0) === C_BACKSLASH) {\n return s.charAt(1);\n } else {\n return decodeHTML(s);\n }\n};\n\n// Replace entities and backslash escapes with literal characters.\nvar unescapeString = function(s) {\n if (reBackslashOrAmp.test(s)) {\n return s.replace(reEntityOrEscapedChar, unescapeChar);\n } else {\n return s;\n }\n};\n\nvar normalizeURI = function(uri) {\n try {\n return encode(decode(uri));\n }\n catch(err) {\n return uri;\n }\n};\n\nvar replaceUnsafeChar = function(s) {\n switch (s) {\n case '&':\n return '&';\n case '<':\n return '<';\n case '>':\n return '>';\n case '\"':\n return '"';\n default:\n return s;\n }\n};\n\nvar escapeXml = function(s, preserve_entities) {\n if (reXmlSpecial.test(s)) {\n if (preserve_entities) {\n return s.replace(reXmlSpecialOrEntity, replaceUnsafeChar);\n } else {\n return s.replace(reXmlSpecial, replaceUnsafeChar);\n }\n } else {\n return s;\n }\n};\n\nmodule.exports = { unescapeString: unescapeString,\n normalizeURI: normalizeURI,\n escapeXml: escapeXml,\n reHtmlTag: reHtmlTag,\n OPENTAG: OPENTAG,\n CLOSETAG: CLOSETAG,\n ENTITY: ENTITY,\n ESCAPABLE: ESCAPABLE\n };\n","var basePick = require('./_basePick'),\n flatRest = require('./_flatRest');\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n});\n\nmodule.exports = pick;\n","\"use strict\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\n/**\n * Colors.\n */\n\nexports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'];\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n// eslint-disable-next-line complexity\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n return true;\n } // Internet Explorer and Edge do not support colors.\n\n\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n } // Is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\n\n return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773\n typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/);\n}\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);\n\n if (!this.useColors) {\n return;\n }\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit'); // The final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function (match) {\n if (match === '%%') {\n return;\n }\n\n index++;\n\n if (match === '%c') {\n // We only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n args.splice(lastC, 0, c);\n}\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\n\nfunction log() {\n var _console;\n\n // This hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return (typeof console === \"undefined\" ? \"undefined\" : _typeof(console)) === 'object' && console.log && (_console = console).log.apply(_console, arguments);\n}\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n try {\n if (namespaces) {\n exports.storage.setItem('debug', namespaces);\n } else {\n exports.storage.removeItem('debug');\n }\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n var r;\n\n try {\n r = exports.storage.getItem('debug');\n } catch (error) {} // Swallow\n // XXX (@Qix-) should we be logging these?\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\n\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\n\nfunction localstorage() {\n try {\n // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n // The Browser also has localStorage in the global context.\n return localStorage;\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n\nmodule.exports = require('./common')(exports);\nvar formatters = module.exports.formatters;\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n try {\n return JSON.stringify(v);\n } catch (error) {\n return '[UnexpectedJSONParseError]: ' + error.message;\n }\n};\n\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","exports.f = {}.propertyIsEnumerable;\n","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() { return this })() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nmodule.exports = require(\"./runtime\");\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() { return this })() || Function(\"return this\")()\n);\n","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a \n//\n// This waits to receive a message event sent using the window.postMessage API.\n// When it receives the event it evals a javascript function in data.code and\n// runs the function passing the event as an argument. This version adds\n// support for a query parameter controlling the origin from which messages\n// will be processed as an extra layer of security (note that the default URL\n// is still 'v1' since it is backwards compatible).\n//\n// In particular it means that the rendering function can be written as a\n// ordinary javascript function which then is turned into a string using\n// toString().\n//\nvar DEFAULT_CROSS_ORIGIN_RENDERER = \"https://usercontent.riot.im/v1.html\";\n\n/**\n * Render the attachment inside the iframe.\n * We can't use imported libraries here so this has to be vanilla JS.\n */\nfunction remoteRender(event) {\n var data = event.data;\n\n var img = document.createElement(\"img\");\n img.id = \"img\";\n img.src = data.imgSrc;\n\n var a = document.createElement(\"a\");\n a.id = \"a\";\n a.rel = data.rel;\n a.target = data.target;\n a.download = data.download;\n a.style = data.style;\n a.style.fontFamily = \"Arial, Helvetica, Sans-Serif\";\n a.href = window.URL.createObjectURL(data.blob);\n a.appendChild(img);\n a.appendChild(document.createTextNode(data.textContent));\n\n var body = document.body;\n // Don't display scrollbars if the link takes more than one line\n // to display.\n body.style = \"margin: 0px; overflow: hidden\";\n body.appendChild(a);\n}\n\n/**\n * Update the tint inside the iframe.\n * We can't use imported libraries here so this has to be vanilla JS.\n */\nfunction remoteSetTint(event) {\n var data = event.data;\n\n var img = document.getElementById(\"img\");\n img.src = data.imgSrc;\n img.style = data.imgStyle;\n\n var a = document.getElementById(\"a\");\n a.style = data.style;\n}\n\n/**\n * Get the current CSS style for a DOMElement.\n * @param {HTMLElement} element The element to get the current style of.\n * @return {string} The CSS style encoded as a string.\n */\nfunction computedStyle(element) {\n if (!element) {\n return \"\";\n }\n var style = window.getComputedStyle(element, null);\n var cssText = style.cssText;\n if (cssText == \"\") {\n // Firefox doesn't implement \".cssText\" for computed styles.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=137687\n for (var i = 0; i < style.length; i++) {\n cssText += style[i] + \":\";\n cssText += style.getPropertyValue(style[i]) + \";\";\n }\n }\n return cssText;\n}\n\nmodule.exports = (0, _createReactClass2.default)({\n displayName: 'MFileBody',\n\n getInitialState: function getInitialState() {\n return {\n decryptedBlob: this.props.decryptedBlob ? this.props.decryptedBlob : null\n };\n },\n\n propTypes: {\n /* the MatrixEvent to show */\n mxEvent: _propTypes2.default.object.isRequired,\n /* already decrypted blob */\n decryptedBlob: _propTypes2.default.object,\n /* called when the download link iframe is shown */\n onHeightChanged: _propTypes2.default.func,\n /* the shape of the tile, used */\n tileShape: _propTypes2.default.string\n },\n\n contextTypes: {\n appConfig: _propTypes2.default.object\n },\n\n /**\n * Extracts a human readable label for the file attachment to use as\n * link text.\n *\n * @params {Object} content The \"content\" key of the matrix event.\n * @return {string} the human readable link text for the attachment.\n */\n presentableTextForFile: function presentableTextForFile(content) {\n var linkText = (0, _languageHandler._t)(\"Attachment\");\n if (content.body && content.body.length > 0) {\n // The content body should be the name of the file including a\n // file extension.\n linkText = content.body;\n }\n\n if (content.info && content.info.size) {\n // If we know the size of the file then add it as human readable\n // string to the end of the link text so that the user knows how\n // big a file they are downloading.\n // The content.info also contains a MIME-type but we don't display\n // it since it is \"ugly\", users generally aren't aware what it\n // means and the type of the attachment can usually be inferrered\n // from the file extension.\n linkText += ' (' + (0, _filesize2.default)(content.info.size) + ')';\n }\n return linkText;\n },\n\n _getContentUrl: function _getContentUrl() {\n var content = this.props.mxEvent.getContent();\n return _MatrixClientPeg2.default.get().mxcUrlToHttp(content.url);\n },\n\n componentDidMount: function componentDidMount() {\n // Add this to the list of mounted components to receive notifications\n // when the tint changes.\n this.id = nextMountId++;\n mounts[this.id] = this;\n this.tint();\n },\n\n componentDidUpdate: function componentDidUpdate(prevProps, prevState) {\n if (this.props.onHeightChanged && !prevState.decryptedBlob && this.state.decryptedBlob) {\n this.props.onHeightChanged();\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n // Remove this from the list of mounted components\n delete mounts[this.id];\n },\n\n tint: function tint() {\n // Update our tinted copy of require(\"../../../../res/img/download.svg\")\n if (this.refs.downloadImage) {\n this.refs.downloadImage.src = tintedDownloadImageURL;\n }\n if (this.refs.iframe) {\n // If the attachment is encrypted then the download image\n // will be inside the iframe so we wont be able to update\n // it directly.\n this.refs.iframe.contentWindow.postMessage({\n code: remoteSetTint.toString(),\n imgSrc: tintedDownloadImageURL,\n style: computedStyle(this.refs.dummyLink)\n }, \"*\");\n }\n },\n\n render: function render() {\n var _this = this;\n\n var content = this.props.mxEvent.getContent();\n var text = this.presentableTextForFile(content);\n var isEncrypted = content.file !== undefined;\n var fileName = content.body && content.body.length > 0 ? content.body : (0, _languageHandler._t)(\"Attachment\");\n var contentUrl = this._getContentUrl();\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n var fileSize = content.info ? content.info.size : null;\n var fileType = content.info ? content.info.mimetype : \"application/octet-stream\";\n\n if (isEncrypted) {\n if (this.state.decryptedBlob === null) {\n // Need to decrypt the attachment\n // Wait for the user to click on the link before downloading\n // and decrypting the attachment.\n var decrypting = false;\n var decrypt = function decrypt() {\n if (decrypting) {\n return false;\n }\n decrypting = true;\n (0, _DecryptFile.decryptFile)(content.file).then(function (blob) {\n _this.setState({\n decryptedBlob: blob\n });\n }).catch(function (err) {\n console.warn(\"Unable to decrypt attachment: \", err);\n _Modal2.default.createTrackedDialog('Error decrypting attachment', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Error decrypting attachment\")\n });\n }).finally(function () {\n decrypting = false;\n return;\n });\n };\n\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MFileBody', ref: 'body' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MFileBody_download' },\n _react2.default.createElement(\n 'a',\n { href: 'javascript:void(0)', onClick: decrypt },\n (0, _languageHandler._t)(\"Decrypt %(text)s\", { text: text })\n )\n )\n );\n }\n\n // When the iframe loads we tell it to render a download link\n var onIframeLoad = function onIframeLoad(ev) {\n ev.target.contentWindow.postMessage({\n code: remoteRender.toString(),\n imgSrc: tintedDownloadImageURL,\n style: computedStyle(_this.refs.dummyLink),\n blob: _this.state.decryptedBlob,\n // Set a download attribute for encrypted files so that the file\n // will have the correct name when the user tries to download it.\n // We can't provide a Content-Disposition header like we would for HTTP.\n download: fileName,\n rel: \"noopener\",\n target: \"_blank\",\n textContent: (0, _languageHandler._t)(\"Download %(text)s\", { text: text })\n }, \"*\");\n };\n\n // If the attachment is encryped then put the link inside an iframe.\n var renderer_url = DEFAULT_CROSS_ORIGIN_RENDERER;\n if (this.context.appConfig && this.context.appConfig.cross_origin_renderer_url) {\n renderer_url = this.context.appConfig.cross_origin_renderer_url;\n }\n renderer_url += \"?origin=\" + encodeURIComponent(window.location.origin);\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MFileBody' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MFileBody_download' },\n _react2.default.createElement(\n 'div',\n { style: { display: \"none\" } },\n _react2.default.createElement('a', { ref: 'dummyLink' })\n ),\n _react2.default.createElement('iframe', { src: renderer_url, onLoad: onIframeLoad, ref: 'iframe' })\n )\n );\n } else if (contentUrl) {\n var downloadProps = {\n target: \"_blank\",\n rel: \"noopener\",\n\n // We set the href regardless of whether or not we intercept the download\n // because we don't really want to convert the file to a blob eagerly, and\n // still want \"open in new tab\" and \"save link as\" to work.\n href: contentUrl\n };\n\n // Blobs can only have up to 500mb, so if the file reports as being too large then\n // we won't try and convert it. Likewise, if the file size is unknown then we'll assume\n // it is too big. There is the risk of the reported file size and the actual file size\n // being different, however the user shouldn't normally run into this problem.\n var fileTooBig = typeof fileSize === 'number' ? fileSize > 524288000 : true;\n\n if ([\"application/pdf\"].includes(fileType) && !fileTooBig) {\n // We want to force a download on this type, so use an onClick handler.\n downloadProps[\"onClick\"] = function (e) {\n console.log('Downloading ' + fileType + ' as blob (unencrypted)');\n\n // Avoid letting the do its thing\n e.preventDefault();\n e.stopPropagation();\n\n // Start a fetch for the download\n // Based upon https://stackoverflow.com/a/49500465\n fetch(contentUrl).then(function (response) {\n return response.blob();\n }).then(function (blob) {\n var blobUrl = URL.createObjectURL(blob);\n\n // We have to create an anchor to download the file\n var tempAnchor = document.createElement('a');\n tempAnchor.download = fileName;\n tempAnchor.href = blobUrl;\n document.body.appendChild(tempAnchor); // for firefox: https://stackoverflow.com/a/32226068\n tempAnchor.click();\n tempAnchor.remove();\n });\n };\n } else {\n // Else we are hoping the browser will do the right thing\n downloadProps[\"download\"] = fileName;\n }\n\n // If the attachment is not encrypted then we check whether we\n // are being displayed in the room timeline or in a list of\n // files in the right hand side of the screen.\n if (this.props.tileShape === \"file_grid\") {\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MFileBody' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MFileBody_download' },\n _react2.default.createElement(\n 'a',\n (0, _extends3.default)({ className: 'mx_MFileBody_downloadLink' }, downloadProps),\n fileName\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MImageBody_size' },\n content.info && content.info.size ? (0, _filesize2.default)(content.info.size) : \"\"\n )\n )\n );\n } else {\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MFileBody' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MFileBody_download' },\n _react2.default.createElement(\n 'a',\n downloadProps,\n _react2.default.createElement('img', { src: tintedDownloadImageURL, width: '12', height: '14', ref: 'downloadImage' }),\n (0, _languageHandler._t)(\"Download %(text)s\", { text: text })\n )\n )\n );\n }\n } else {\n var extra = text ? ': ' + text : '';\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MFileBody' },\n (0, _languageHandler._t)(\"Invalid file%(extra)s\", { extra: extra })\n );\n }\n }\n});\n//# sourceMappingURL=MFileBody.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.decryptFile = decryptFile;\n\nvar _browserEncryptAttachment = require('browser-encrypt-attachment');\n\nvar _browserEncryptAttachment2 = _interopRequireDefault(_browserEncryptAttachment);\n\nrequire('isomorphic-fetch');\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// WARNING: We have to be very careful about what mime-types we allow into blobs,\n// as for performance reasons these are now rendered via URL.createObjectURL()\n// rather than by converting into data: URIs.\n//\n// This means that the content is rendered using the origin of the script which\n// called createObjectURL(), and so if the content contains any scripting then it\n// will pose a XSS vulnerability when the browser renders it. This is particularly\n// bad if the user right-clicks the URI and pastes it into a new window or tab,\n// as the blob will then execute with access to Riot's full JS environment(!)\n//\n// See https://github.com/matrix-org/matrix-react-sdk/pull/1820#issuecomment-385210647\n// for details.\n//\n// We mitigate this by only allowing mime-types into blobs which we know don't\n// contain any scripting, and instantiate all others as application/octet-stream\n// regardless of what mime-type the event claimed. Even if the payload itself\n// is some malicious HTML, the fact we instantiate it with a media mimetype or\n// application/octet-stream means the browser doesn't try to render it as such.\n//\n// One interesting edge case is image/svg+xml, which empirically *is* rendered\n// correctly if the blob is set to the src attribute of an img tag (for thumbnails)\n// *even if the mimetype is application/octet-stream*. However, empirically JS\n// in the SVG isn't executed in this scenario, so we seem to be okay.\n//\n// Tested on Chrome 65 and Firefox 60\n//\n// The list below is taken mainly from\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Supported_media_formats\n// N.B. Matrix doesn't currently specify which mimetypes are valid in given\n// events, so we pick the ones which HTML5 browsers should be able to display\n//\n// For the record, mime-types which must NEVER enter this list below include:\n// text/html, text/xhtml, image/svg, image/svg+xml, image/pdf, and similar.\n\n// Grab the client so that we can turn mxc:// URLs into https:// URLS.\n/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// Pull in the encryption lib so that we can decrypt attachments.\nvar ALLOWED_BLOB_MIMETYPES = {\n 'image/jpeg': true,\n 'image/gif': true,\n 'image/png': true,\n\n 'video/mp4': true,\n 'video/webm': true,\n 'video/ogg': true,\n\n 'audio/mp4': true,\n 'audio/webm': true,\n 'audio/aac': true,\n 'audio/mpeg': true,\n 'audio/ogg': true,\n 'audio/wave': true,\n 'audio/wav': true,\n 'audio/x-wav': true,\n 'audio/x-pn-wav': true,\n 'audio/flac': true,\n 'audio/x-flac': true\n};\n\n/**\n * Decrypt a file attached to a matrix event.\n * @param file {Object} The json taken from the matrix event.\n * This passed to [link]{@link https://github.com/matrix-org/browser-encrypt-attachments}\n * as the encryption info object, so will also have the those keys in addition to\n * the keys below.\n * @param file.url {string} An mxc:// URL for the encrypted file.\n * @param file.mimetype {string} The MIME-type of the plaintext file.\n */\n\n// Pull in a fetch polyfill so we can download encrypted attachments.\nfunction decryptFile(file) {\n var url = _MatrixClientPeg2.default.get().mxcUrlToHttp(file.url);\n // Download the encrypted file as an array buffer.\n return _bluebird2.default.resolve(fetch(url)).then(function (response) {\n return response.arrayBuffer();\n }).then(function (responseData) {\n // Decrypt the array buffer using the information taken from\n // the event content.\n return _browserEncryptAttachment2.default.decryptAttachment(responseData, file);\n }).then(function (dataArray) {\n // Turn the array into a Blob and give it the correct MIME-type.\n\n // IMPORTANT: we must not allow scriptable mime-types into Blobs otherwise\n // they introduce XSS attacks if the Blob URI is viewed directly in the\n // browser (e.g. by copying the URI into a new tab or window.)\n // See warning at top of file.\n var mimetype = file.mimetype ? file.mimetype.split(\";\")[0].trim() : '';\n if (!ALLOWED_BLOB_MIMETYPES[mimetype]) {\n mimetype = 'application/octet-stream';\n }\n\n var blob = new Blob([dataArray], { type: mimetype });\n return blob;\n });\n}\n//# sourceMappingURL=DecryptFile.js.map","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _typeof2 = require(\"babel-runtime/helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n // Encodes a dictionary of {\n // \"notify\": true/false,\n // \"sound\": string or undefined,\n // \"highlight: true/false,\n // }\n // to a list of push actions.\n encodeActions: function encodeActions(action) {\n var notify = action.notify;\n var sound = action.sound;\n var highlight = action.highlight;\n if (notify) {\n var actions = [\"notify\"];\n if (sound) {\n actions.push({ \"set_tweak\": \"sound\", \"value\": sound });\n }\n if (highlight) {\n actions.push({ \"set_tweak\": \"highlight\" });\n } else {\n actions.push({ \"set_tweak\": \"highlight\", \"value\": false });\n }\n return actions;\n } else {\n return [\"dont_notify\"];\n }\n },\n\n // Decode a list of actions to a dictionary of {\n // \"notify\": true/false,\n // \"sound\": string or undefined,\n // \"highlight: true/false,\n // }\n // If the actions couldn't be decoded then returns null.\n decodeActions: function decodeActions(actions) {\n var notify = false;\n var sound = null;\n var highlight = false;\n\n for (var i = 0; i < actions.length; ++i) {\n var action = actions[i];\n if (action === \"notify\") {\n notify = true;\n } else if (action === \"dont_notify\") {\n notify = false;\n } else if ((typeof action === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(action)) === 'object') {\n if (action.set_tweak === \"sound\") {\n sound = action.value;\n } else if (action.set_tweak === \"highlight\") {\n highlight = action.value;\n } else {\n // We don't understand this kind of tweak, so give up.\n return null;\n }\n } else {\n // We don't understand this kind of action, so give up.\n return null;\n }\n }\n\n if (highlight === undefined) {\n // If a highlight tweak is missing a value then it defaults to true.\n highlight = true;\n }\n\n var result = { notify: notify, highlight: highlight };\n if (sound !== null) {\n result.sound = sound;\n }\n return result;\n }\n};\n//# sourceMappingURL=NotificationUtils.js.map","import { Block, Mark, Node, Value } from 'slate';\nimport { Set } from 'immutable';\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Deserialize a plain text `string` to a Slate value.\n *\n * @param {String} string\n * @param {Object} options\n * @property {Boolean} toJSON\n * @property {String|Object|Block} defaultBlock\n * @property {Array|Set} defaultMarks\n * @return {Value}\n */\n\nfunction deserialize(string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _options$defaultBlock = options.defaultBlock,\n defaultBlock = _options$defaultBlock === undefined ? 'line' : _options$defaultBlock,\n _options$defaultMarks = options.defaultMarks,\n defaultMarks = _options$defaultMarks === undefined ? [] : _options$defaultMarks,\n _options$delimiter = options.delimiter,\n delimiter = _options$delimiter === undefined ? '\\n' : _options$delimiter,\n _options$toJSON = options.toJSON,\n toJSON = _options$toJSON === undefined ? false : _options$toJSON;\n\n\n if (Set.isSet(defaultMarks)) {\n defaultMarks = defaultMarks.toArray();\n }\n\n defaultBlock = Node.createProperties(defaultBlock);\n defaultMarks = defaultMarks.map(Mark.createProperties);\n\n var json = {\n object: 'value',\n document: {\n object: 'document',\n data: {},\n nodes: string.split(delimiter).map(function (line) {\n return _extends({}, defaultBlock, {\n object: 'block',\n data: {},\n nodes: [{\n object: 'text',\n leaves: [{\n object: 'leaf',\n text: line,\n marks: defaultMarks\n }]\n }]\n });\n })\n }\n };\n\n var ret = toJSON ? json : Value.fromJSON(json);\n return ret;\n}\n\n/**\n * Serialize a Slate `value` to a plain text string.\n *\n * @param {Value} value\n * @return {String}\n */\n\nfunction serialize(value) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return serializeNode(value.document, options);\n}\n\n/**\n * Serialize a `node` to plain text.\n *\n * @param {Node} node\n * @return {String}\n */\n\nfunction serializeNode(node) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _options$delimiter2 = options.delimiter,\n delimiter = _options$delimiter2 === undefined ? '\\n' : _options$delimiter2;\n\n\n if (node.object === 'document' || node.object === 'block' && Block.isBlockList(node.nodes)) {\n return node.nodes.map(serializeNode).join(delimiter);\n } else {\n return node.text;\n }\n}\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nvar index = {\n deserialize: deserialize,\n serialize: serialize\n};\n\nexport default index;\n//# sourceMappingURL=slate-plain-serializer.es.js.map\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n/**\n * Constants.\n */\n\nvar IS_MAC = typeof window != 'undefined' && /Mac|iPod|iPhone|iPad/.test(window.navigator.platform);\n\nvar MODIFIERS = {\n alt: 'altKey',\n control: 'ctrlKey',\n meta: 'metaKey',\n shift: 'shiftKey'\n};\n\nvar ALIASES = {\n add: '+',\n break: 'pause',\n cmd: 'meta',\n command: 'meta',\n ctl: 'control',\n ctrl: 'control',\n del: 'delete',\n down: 'arrowdown',\n esc: 'escape',\n ins: 'insert',\n left: 'arrowleft',\n mod: IS_MAC ? 'meta' : 'control',\n opt: 'alt',\n option: 'alt',\n return: 'enter',\n right: 'arrowright',\n space: ' ',\n spacebar: ' ',\n up: 'arrowup',\n win: 'meta',\n windows: 'meta'\n};\n\nvar CODES = {\n backspace: 8,\n tab: 9,\n enter: 13,\n shift: 16,\n control: 17,\n alt: 18,\n pause: 19,\n capslock: 20,\n escape: 27,\n ' ': 32,\n pageup: 33,\n pagedown: 34,\n end: 35,\n home: 36,\n arrowleft: 37,\n arrowup: 38,\n arrowright: 39,\n arrowdown: 40,\n insert: 45,\n delete: 46,\n meta: 91,\n numlock: 144,\n scrolllock: 145,\n ';': 186,\n '=': 187,\n ',': 188,\n '-': 189,\n '.': 190,\n '/': 191,\n '`': 192,\n '[': 219,\n '\\\\': 220,\n ']': 221,\n '\\'': 222\n};\n\nfor (var f = 1; f < 20; f++) {\n CODES['f' + f] = 111 + f;\n}\n\n/**\n * Is hotkey?\n */\n\nfunction isHotkey(hotkey, options, event) {\n if (options && !('byKey' in options)) {\n event = options;\n options = null;\n }\n\n if (!Array.isArray(hotkey)) {\n hotkey = [hotkey];\n }\n\n var array = hotkey.map(function (string) {\n return parseHotkey(string, options);\n });\n var check = function check(e) {\n return array.some(function (object) {\n return compareHotkey(object, e);\n });\n };\n var ret = event == null ? check : check(event);\n return ret;\n}\n\nfunction isCodeHotkey(hotkey, event) {\n return isHotkey(hotkey, event);\n}\n\nfunction isKeyHotkey(hotkey, event) {\n return isHotkey(hotkey, { byKey: true }, event);\n}\n\n/**\n * Parse.\n */\n\nfunction parseHotkey(hotkey, options) {\n var byKey = options && options.byKey;\n var ret = {};\n\n // Special case to handle the `+` key since we use it as a separator.\n hotkey = hotkey.replace('++', '+add');\n var values = hotkey.split('+');\n var length = values.length;\n\n // Ensure that all the modifiers are set to false unless the hotkey has them.\n\n for (var k in MODIFIERS) {\n ret[MODIFIERS[k]] = false;\n }\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = values[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var value = _step.value;\n\n var optional = value.endsWith('?');\n\n if (optional) {\n value = value.slice(0, -1);\n }\n\n var name = toKeyName(value);\n var modifier = MODIFIERS[name];\n\n if (length === 1 || !modifier) {\n if (byKey) {\n ret.key = name;\n } else {\n ret.which = toKeyCode(value);\n }\n }\n\n if (modifier) {\n ret[modifier] = optional ? null : true;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return ret;\n}\n\n/**\n * Compare.\n */\n\nfunction compareHotkey(object, event) {\n for (var key in object) {\n var expected = object[key];\n var actual = void 0;\n\n if (expected == null) {\n continue;\n }\n\n if (key === 'key') {\n actual = event.key.toLowerCase();\n } else if (key === 'which') {\n actual = expected === 91 && event.which === 93 ? 91 : event.which;\n } else {\n actual = event[key];\n }\n\n if (actual == null && expected === false) {\n continue;\n }\n\n if (actual !== expected) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Utils.\n */\n\nfunction toKeyCode(name) {\n name = toKeyName(name);\n var code = CODES[name] || name.toUpperCase().charCodeAt(0);\n return code;\n}\n\nfunction toKeyName(name) {\n name = name.toLowerCase();\n name = ALIASES[name] || name;\n return name;\n}\n\n/**\n * Export.\n */\n\nexports.default = isHotkey;\nexports.isHotkey = isHotkey;\nexports.isCodeHotkey = isCodeHotkey;\nexports.isKeyHotkey = isKeyHotkey;\nexports.parseHotkey = parseHotkey;\nexports.compareHotkey = compareHotkey;\nexports.toKeyCode = toKeyCode;\nexports.toKeyName = toKeyName;","var toString = Object.prototype.toString\r\n\r\nmodule.exports = function(val){\r\n switch (toString.call(val)) {\r\n case '[object Function]': return 'function'\r\n case '[object Date]': return 'date'\r\n case '[object RegExp]': return 'regexp'\r\n case '[object Arguments]': return 'arguments'\r\n case '[object Array]': return 'array'\r\n case '[object String]': return 'string'\r\n }\r\n\r\n if (typeof val == 'object' && val && typeof val.length == 'number') {\r\n try {\r\n if (typeof val.callee == 'function') return 'arguments';\r\n } catch (ex) {\r\n if (ex instanceof TypeError) {\r\n return 'arguments';\r\n }\r\n }\r\n }\r\n\r\n if (val === null) return 'null'\r\n if (val === undefined) return 'undefined'\r\n if (val && val.nodeType === 1) return 'element'\r\n if (val === Object(val)) return 'object'\r\n\r\n return typeof val\r\n}\r\n","\"use strict\";\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _typeof2 = require(\"babel-runtime/helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// This module contains all the code needed to log the console, persist it to\n// disk and submit bug reports. Rationale is as follows:\n// - Monkey-patching the console is preferable to having a log library because\n// we can catch logs by other libraries more easily, without having to all\n// depend on the same log framework / pass the logger around.\n// - We use IndexedDB to persists logs because it has generous disk space\n// limits compared to local storage. IndexedDB does not work in incognito\n// mode, in which case this module will not be able to write logs to disk.\n// However, the logs will still be stored in-memory, so can still be\n// submitted in a bug report should the user wish to: we can also store more\n// logs in-memory than in local storage, which does work in incognito mode.\n// We also need to handle the case where there are 2+ tabs. Each JS runtime\n// generates a random string which serves as the \"ID\" for that tab/session.\n// These IDs are stored along with the log lines.\n// - Bug reports are sent as a POST over HTTPS: it purposefully does not use\n// Matrix as bug reports may be made when Matrix is not responsive (which may\n// be the cause of the bug). We send the most recent N MB of UTF-8 log data,\n// starting with the most recent, which we know because the \"ID\"s are\n// actually timestamps. We then purge the remaining logs. We also do this\n// purge on startup to prevent logs from accumulating.\n\n// the frequency with which we flush to indexeddb\nvar FLUSH_RATE_MS = 30 * 1000;\n\n// the length of log data we keep in indexeddb (and include in the reports)\n/*\nCopyright 2017 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MAX_LOG_SIZE = 1024 * 1024 * 1; // 1 MB\n\n// A class which monkey-patches the global console and stores log lines.\n\nvar ConsoleLogger = function () {\n function ConsoleLogger() {\n (0, _classCallCheck3.default)(this, ConsoleLogger);\n\n this.logs = \"\";\n }\n\n (0, _createClass3.default)(ConsoleLogger, [{\n key: \"monkeyPatch\",\n value: function monkeyPatch(consoleObj) {\n var _this = this;\n\n // Monkey-patch console logging\n var consoleFunctionsToLevels = {\n log: \"I\",\n info: \"I\",\n warn: \"W\",\n error: \"E\"\n };\n (0, _keys2.default)(consoleFunctionsToLevels).forEach(function (fnName) {\n var level = consoleFunctionsToLevels[fnName];\n var originalFn = consoleObj[fnName].bind(consoleObj);\n consoleObj[fnName] = function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this.log.apply(_this, [level].concat(args));\n originalFn.apply(undefined, args);\n };\n });\n }\n }, {\n key: \"log\",\n value: function log(level) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n // We don't know what locale the user may be running so use ISO strings\n var ts = new Date().toISOString();\n\n // Convert objects and errors to helpful things\n args = args.map(function (arg) {\n if (arg instanceof Error) {\n return arg.message + (arg.stack ? \"\\n\" + arg.stack : '');\n } else if ((typeof arg === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(arg)) === 'object') {\n return (0, _stringify2.default)(arg);\n } else {\n return arg;\n }\n });\n\n // Some browsers support string formatting which we're not doing here\n // so the lines are a little more ugly but easy to implement / quick to\n // run.\n // Example line:\n // 2017-01-18T11:23:53.214Z W Failed to set badge count\n var line = ts + \" \" + level + \" \" + args.join(' ') + \"\\n\";\n // Do some cleanup\n line = line.replace(/token=[a-zA-Z0-9-]+/gm, 'token=xxxxx');\n // Using + really is the quickest way in JS\n // http://jsperf.com/concat-vs-plus-vs-join\n this.logs += line;\n }\n\n /**\n * Retrieve log lines to flush to disk.\n * @param {boolean} keepLogs True to not delete logs after flushing.\n * @return {string} \\n delimited log lines to flush.\n */\n\n }, {\n key: \"flush\",\n value: function flush(keepLogs) {\n // The ConsoleLogger doesn't care how these end up on disk, it just\n // flushes them to the caller.\n if (keepLogs) {\n return this.logs;\n }\n var logsToFlush = this.logs;\n this.logs = \"\";\n return logsToFlush;\n }\n }]);\n return ConsoleLogger;\n}();\n\n// A class which stores log lines in an IndexedDB instance.\n\n\nvar IndexedDBLogStore = function () {\n function IndexedDBLogStore(indexedDB, logger) {\n (0, _classCallCheck3.default)(this, IndexedDBLogStore);\n\n this.indexedDB = indexedDB;\n this.logger = logger;\n this.id = \"instance-\" + Math.random() + Date.now();\n this.index = 0;\n this.db = null;\n this.flushPromise = null;\n // set if flush() is called whilst one is ongoing\n this.flushAgainPromise = null;\n }\n\n /**\n * @return {Promise} Resolves when the store is ready.\n */\n\n\n (0, _createClass3.default)(IndexedDBLogStore, [{\n key: \"connect\",\n value: function connect() {\n var _this2 = this;\n\n var req = this.indexedDB.open(\"logs\");\n return new _bluebird2.default(function (resolve, reject) {\n req.onsuccess = function (event) {\n _this2.db = event.target.result;\n // Periodically flush logs to local storage / indexeddb\n setInterval(_this2.flush.bind(_this2), FLUSH_RATE_MS);\n resolve();\n };\n\n req.onerror = function (event) {\n var err = \"Failed to open log database: \" + event.target.error.name;\n console.error(err);\n reject(new Error(err));\n };\n\n // First time: Setup the object store\n req.onupgradeneeded = function (event) {\n var db = event.target.result;\n var logObjStore = db.createObjectStore(\"logs\", {\n keyPath: [\"id\", \"index\"]\n });\n // Keys in the database look like: [ \"instance-148938490\", 0 ]\n // Later on we need to query everything based on an instance id.\n // In order to do this, we need to set up indexes \"id\".\n logObjStore.createIndex(\"id\", \"id\", { unique: false });\n\n logObjStore.add(_this2._generateLogEntry(new Date() + \" ::: Log database was created.\"));\n\n var lastModifiedStore = db.createObjectStore(\"logslastmod\", {\n keyPath: \"id\"\n });\n lastModifiedStore.add(_this2._generateLastModifiedTime());\n };\n });\n }\n\n /**\n * Flush logs to disk.\n *\n * There are guards to protect against race conditions in order to ensure\n * that all previous flushes have completed before the most recent flush.\n * Consider without guards:\n * - A calls flush() periodically.\n * - B calls flush() and wants to send logs immediately afterwards.\n * - If B doesn't wait for A's flush to complete, B will be missing the\n * contents of A's flush.\n * To protect against this, we set 'flushPromise' when a flush is ongoing.\n * Subsequent calls to flush() during this period will chain another flush,\n * then keep returning that same chained flush.\n *\n * This guarantees that we will always eventually do a flush when flush() is\n * called.\n *\n * @return {Promise} Resolved when the logs have been flushed.\n */\n\n }, {\n key: \"flush\",\n value: function flush() {\n var _this3 = this;\n\n // check if a flush() operation is ongoing\n if (this.flushPromise && this.flushPromise.isPending()) {\n if (this.flushAgainPromise && this.flushAgainPromise.isPending()) {\n // this is the 3rd+ time we've called flush() : return the same\n // promise.\n return this.flushAgainPromise;\n }\n // queue up a flush to occur immediately after the pending one\n // completes.\n this.flushAgainPromise = this.flushPromise.then(function () {\n return _this3.flush();\n });\n return this.flushAgainPromise;\n }\n // there is no flush promise or there was but it has finished, so do\n // a brand new one, destroying the chain which may have been built up.\n this.flushPromise = new _bluebird2.default(function (resolve, reject) {\n if (!_this3.db) {\n // not connected yet or user rejected access for us to r/w to\n // the db.\n reject(new Error(\"No connected database\"));\n return;\n }\n var lines = _this3.logger.flush();\n if (lines.length === 0) {\n resolve();\n return;\n }\n var txn = _this3.db.transaction([\"logs\", \"logslastmod\"], \"readwrite\");\n var objStore = txn.objectStore(\"logs\");\n txn.oncomplete = function (event) {\n resolve();\n };\n txn.onerror = function (event) {\n console.error(\"Failed to flush logs : \", event);\n reject(new Error(\"Failed to write logs: \" + event.target.errorCode));\n };\n objStore.add(_this3._generateLogEntry(lines));\n var lastModStore = txn.objectStore(\"logslastmod\");\n lastModStore.put(_this3._generateLastModifiedTime());\n });\n return this.flushPromise;\n }\n\n /**\n * Consume the most recent logs and return them. Older logs which are not\n * returned are deleted at the same time, so this can be called at startup\n * to do house-keeping to keep the logs from growing too large.\n *\n * @return {Promise} Resolves to an array of objects. The array is\n * sorted in time (oldest first) based on when the log file was created (the\n * log ID). The objects have said log ID in an \"id\" field and \"lines\" which\n * is a big string with all the new-line delimited logs.\n */\n\n }, {\n key: \"consume\",\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var db, fetchLogs, fetchLogIds, deleteLogs, allLogIds, removeLogIds, logs, size, i, lines;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n deleteLogs = function deleteLogs(id) {\n return new _bluebird2.default(function (resolve, reject) {\n var txn = db.transaction([\"logs\", \"logslastmod\"], \"readwrite\");\n var o = txn.objectStore(\"logs\");\n // only load the key path, not the data which may be huge\n var query = o.index(\"id\").openKeyCursor(IDBKeyRange.only(id));\n query.onsuccess = function (event) {\n var cursor = event.target.result;\n if (!cursor) {\n return;\n }\n o.delete(cursor.primaryKey);\n cursor.continue();\n };\n txn.oncomplete = function () {\n resolve();\n };\n txn.onerror = function (event) {\n reject(new Error(\"Failed to delete logs for \" + (\"'\" + id + \"' : \" + event.target.errorCode)));\n };\n // delete last modified entries\n var lastModStore = txn.objectStore(\"logslastmod\");\n lastModStore.delete(id);\n });\n };\n\n fetchLogIds = function fetchLogIds() {\n // To gather all the log IDs, query for all records in logslastmod.\n var o = db.transaction(\"logslastmod\", \"readonly\").objectStore(\"logslastmod\");\n return selectQuery(o, undefined, function (cursor) {\n return {\n id: cursor.value.id,\n ts: cursor.value.ts\n };\n }).then(function (res) {\n // Sort IDs by timestamp (newest first)\n return res.sort(function (a, b) {\n return b.ts - a.ts;\n }).map(function (a) {\n return a.id;\n });\n });\n };\n\n fetchLogs = function fetchLogs(id) {\n var objectStore = db.transaction(\"logs\", \"readonly\").objectStore(\"logs\");\n\n return new _bluebird2.default(function (resolve, reject) {\n var query = objectStore.index(\"id\").openCursor(IDBKeyRange.only(id), 'prev');\n var lines = '';\n query.onerror = function (event) {\n reject(new Error(\"Query failed: \" + event.target.errorCode));\n };\n query.onsuccess = function (event) {\n var cursor = event.target.result;\n if (!cursor) {\n resolve(lines);\n return; // end of results\n }\n if (lines.length + cursor.value.lines.length >= MAX_LOG_SIZE && lines.length > 0) {\n resolve(lines);\n } else {\n lines = cursor.value.lines + lines;\n cursor.continue();\n }\n };\n });\n };\n\n db = this.db;\n\n // Returns: a string representing the concatenated logs for this ID.\n\n\n // Returns: A sorted array of log IDs. (newest first)\n\n _context.next = 6;\n return (0, _bluebird.resolve)(fetchLogIds());\n\n case 6:\n allLogIds = _context.sent;\n removeLogIds = [];\n logs = [];\n size = 0;\n i = 0;\n\n case 11:\n if (!(i < allLogIds.length)) {\n _context.next = 23;\n break;\n }\n\n _context.next = 14;\n return (0, _bluebird.resolve)(fetchLogs(allLogIds[i]));\n\n case 14:\n lines = _context.sent;\n\n if (!(i > 0 && size + lines.length > MAX_LOG_SIZE)) {\n _context.next = 18;\n break;\n }\n\n // the remaining log IDs should be removed. If we go out of\n // bounds this is just []\n removeLogIds = allLogIds.slice(i + 1);\n return _context.abrupt(\"break\", 23);\n\n case 18:\n\n logs.push({\n lines: lines,\n id: allLogIds[i]\n });\n size += lines.length;\n\n case 20:\n i++;\n _context.next = 11;\n break;\n\n case 23:\n if (removeLogIds.length > 0) {\n console.log(\"Removing logs: \", removeLogIds);\n // Don't await this because it's non-fatal if we can't clean up\n // logs.\n _bluebird2.default.all(removeLogIds.map(function (id) {\n return deleteLogs(id);\n })).then(function () {\n console.log(\"Removed \" + removeLogIds.length + \" old logs.\");\n }, function (err) {\n console.error(err);\n });\n }\n return _context.abrupt(\"return\", logs);\n\n case 25:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function consume() {\n return _ref.apply(this, arguments);\n }\n\n return consume;\n }()\n }, {\n key: \"_generateLogEntry\",\n value: function _generateLogEntry(lines) {\n return {\n id: this.id,\n lines: lines,\n index: this.index++\n };\n }\n }, {\n key: \"_generateLastModifiedTime\",\n value: function _generateLastModifiedTime() {\n return {\n id: this.id,\n ts: Date.now()\n };\n }\n }]);\n return IndexedDBLogStore;\n}();\n\n/**\n * Helper method to collect results from a Cursor and promiseify it.\n * @param {ObjectStore|Index} store The store to perform openCursor on.\n * @param {IDBKeyRange=} keyRange Optional key range to apply on the cursor.\n * @param {Function} resultMapper A function which is repeatedly called with a\n * Cursor.\n * Return the data you want to keep.\n * @return {Promise} Resolves to an array of whatever you returned from\n * resultMapper.\n */\n\n\nfunction selectQuery(store, keyRange, resultMapper) {\n var query = store.openCursor(keyRange);\n return new _bluebird2.default(function (resolve, reject) {\n var results = [];\n query.onerror = function (event) {\n reject(new Error(\"Query failed: \" + event.target.errorCode));\n };\n // collect results\n query.onsuccess = function (event) {\n var cursor = event.target.result;\n if (!cursor) {\n resolve(results);\n return; // end of results\n }\n results.push(resultMapper(cursor));\n cursor.continue();\n };\n });\n}\n\nmodule.exports = {\n\n /**\n * Configure rage shaking support for sending bug reports.\n * Modifies globals.\n * @return {Promise} Resolves when set up.\n */\n init: function init() {\n if (global.mx_rage_initPromise) {\n return global.mx_rage_initPromise;\n }\n global.mx_rage_logger = new ConsoleLogger();\n global.mx_rage_logger.monkeyPatch(window.console);\n\n // just *accessing* indexedDB throws an exception in firefox with\n // indexeddb disabled.\n var indexedDB = void 0;\n try {\n indexedDB = window.indexedDB;\n } catch (e) {}\n\n if (indexedDB) {\n global.mx_rage_store = new IndexedDBLogStore(indexedDB, global.mx_rage_logger);\n global.mx_rage_initPromise = global.mx_rage_store.connect();\n return global.mx_rage_initPromise;\n }\n global.mx_rage_initPromise = _bluebird2.default.resolve();\n return global.mx_rage_initPromise;\n },\n\n flush: function flush() {\n if (!global.mx_rage_store) {\n return;\n }\n global.mx_rage_store.flush();\n },\n\n /**\n * Clean up old logs.\n * @return Promise Resolves if cleaned logs.\n */\n cleanup: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (global.mx_rage_store) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 2:\n _context2.next = 4;\n return (0, _bluebird.resolve)(global.mx_rage_store.consume());\n\n case 4:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function cleanup() {\n return _ref2.apply(this, arguments);\n }\n\n return cleanup;\n }(),\n\n /**\n * Get a recent snapshot of the logs, ready for attaching to a bug report\n *\n * @return {Array<{lines: string, id, string}>} list of log data\n */\n getLogsForReport: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (global.mx_rage_logger) {\n _context3.next = 2;\n break;\n }\n\n throw new Error(\"No console logger, did you forget to call init()?\");\n\n case 2:\n if (!global.mx_rage_store) {\n _context3.next = 10;\n break;\n }\n\n _context3.next = 5;\n return (0, _bluebird.resolve)(global.mx_rage_store.flush());\n\n case 5:\n _context3.next = 7;\n return (0, _bluebird.resolve)(global.mx_rage_store.consume());\n\n case 7:\n return _context3.abrupt(\"return\", _context3.sent);\n\n case 10:\n return _context3.abrupt(\"return\", [{\n lines: global.mx_rage_logger.flush(true),\n id: \"-\"\n }]);\n\n case 11:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function getLogsForReport() {\n return _ref3.apply(this, arguments);\n }\n\n return getLogsForReport;\n }()\n};\n//# sourceMappingURL=rageshake.js.map","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","'use strict';\nvar toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n\nmodule.exports = function repeat(count) {\n var str = String(defined(this));\n var res = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n","// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","// 20.2.2.14 Math.expm1(x)\nvar $expm1 = Math.expm1;\nmodule.exports = (!$expm1\n // Old FF bug\n || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n // Tor Browser bug\n || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;\n} : $expm1;\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n // eslint-disable-next-line no-loop-func\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","'use strict';\nvar global = require('./_global');\nvar DESCRIPTORS = require('./_descriptors');\nvar LIBRARY = require('./_library');\nvar $typed = require('./_typed');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar fails = require('./_fails');\nvar anInstance = require('./_an-instance');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar toIndex = require('./_to-index');\nvar gOPN = require('./_object-gopn').f;\nvar dP = require('./_object-dp').f;\nvar arrayFill = require('./_array-fill');\nvar setToStringTag = require('./_set-to-string-tag');\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n var buffer = new Array(nBytes);\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var i = 0;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n var e, m, c;\n value = abs(value);\n // eslint-disable-next-line no-self-compare\n if (value != value || value === Infinity) {\n // eslint-disable-next-line no-self-compare\n m = value != value ? 1 : 0;\n e = eMax;\n } else {\n e = floor(log(value) / LN2);\n if (value * (c = pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * pow(2, eBias - 1) * pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n buffer[--i] |= s * 128;\n return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = eLen - 7;\n var i = nBytes - 1;\n var s = buffer[i--];\n var e = s & 127;\n var m;\n s >>= 7;\n for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : s ? -Infinity : Infinity;\n } else {\n m = m + pow(2, mLen);\n e = e - eBias;\n } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n return [it & 0xff];\n}\nfunction packI16(it) {\n return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = store.slice(start, start + bytes);\n return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = conversion(+value);\n for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n this._b = arrayFill.call(new Array(byteLength), 0);\n this[$LENGTH] = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = buffer[$LENGTH];\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n this[$BUFFER] = buffer;\n this[$OFFSET] = offset;\n this[$LENGTH] = byteLength;\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n addGetter($DataView, BUFFER, '_b');\n addGetter($DataView, BYTE_LENGTH, '_l');\n addGetter($DataView, BYTE_OFFSET, '_o');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packF32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packF64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n $ArrayBuffer(1);\n }) || !fails(function () {\n new $ArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new $ArrayBuffer(); // eslint-disable-line no-new\n new $ArrayBuffer(1.5); // eslint-disable-line no-new\n new $ArrayBuffer(NaN); // eslint-disable-line no-new\n return $ArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new BaseBuffer(toIndex(length));\n };\n var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n }\n if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var view = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataView[PROTOTYPE].setInt8;\n view.setInt8(0, 2147483648);\n view.setInt8(1, 2147483649);\n if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n","require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","var core = require('../../modules/_core');\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/** The {@link module:ContentHelpers} object */\n\nmodule.exports.ContentHelpers = require(\"./content-helpers\");\n/** The {@link module:models/event.MatrixEvent|MatrixEvent} class. */\nmodule.exports.MatrixEvent = require(\"./models/event\").MatrixEvent;\n/** The {@link module:models/event.EventStatus|EventStatus} enum. */\nmodule.exports.EventStatus = require(\"./models/event\").EventStatus;\n/** The {@link module:store/memory.MemoryStore|MemoryStore} class. */\nmodule.exports.MemoryStore = require(\"./store/memory\").MemoryStore;\n/**\n * The {@link module:store/memory.MemoryStore|MemoryStore} class was previously\n * exported as `MatrixInMemoryStore`, so this is preserved for SDK consumers.\n * @deprecated Prefer `MemoryStore` going forward.\n */\nmodule.exports.MatrixInMemoryStore = module.exports.MemoryStore;\n/** The {@link module:store/indexeddb.IndexedDBStore|IndexedDBStore} class. */\nmodule.exports.IndexedDBStore = require(\"./store/indexeddb\").IndexedDBStore;\n/** The {@link module:store/indexeddb.IndexedDBStoreBackend|IndexedDBStoreBackend} class. */\nmodule.exports.IndexedDBStoreBackend = require(\"./store/indexeddb\").IndexedDBStoreBackend;\n/** The {@link module:sync-accumulator.SyncAccumulator|SyncAccumulator} class. */\nmodule.exports.SyncAccumulator = require(\"./sync-accumulator\");\n/** The {@link module:http-api.MatrixHttpApi|MatrixHttpApi} class. */\nmodule.exports.MatrixHttpApi = require(\"./http-api\").MatrixHttpApi;\n/** The {@link module:http-api.MatrixError|MatrixError} class. */\nmodule.exports.MatrixError = require(\"./http-api\").MatrixError;\n/** The {@link module:errors.InvalidStoreError|InvalidStoreError} class. */\nmodule.exports.InvalidStoreError = require(\"./errors\").InvalidStoreError;\n/** The {@link module:client.MatrixClient|MatrixClient} class. */\nmodule.exports.MatrixClient = require(\"./client\").MatrixClient;\n/** The {@link module:models/room|Room} class. */\nmodule.exports.Room = require(\"./models/room\");\n/** The {@link module:models/group|Group} class. */\nmodule.exports.Group = require(\"./models/group\");\n/** The {@link module:models/event-timeline~EventTimeline} class. */\nmodule.exports.EventTimeline = require(\"./models/event-timeline\");\n/** The {@link module:models/event-timeline-set~EventTimelineSet} class. */\nmodule.exports.EventTimelineSet = require(\"./models/event-timeline-set\");\n/** The {@link module:models/room-member|RoomMember} class. */\nmodule.exports.RoomMember = require(\"./models/room-member\");\n/** The {@link module:models/room-state~RoomState|RoomState} class. */\nmodule.exports.RoomState = require(\"./models/room-state\");\n/** The {@link module:models/user~User|User} class. */\nmodule.exports.User = require(\"./models/user\");\n/** The {@link module:scheduler~MatrixScheduler|MatrixScheduler} class. */\nmodule.exports.MatrixScheduler = require(\"./scheduler\");\n/** The {@link module:store/session/webstorage~WebStorageSessionStore|\n * WebStorageSessionStore} class. Work in progress; unstable. */\nmodule.exports.WebStorageSessionStore = require(\"./store/session/webstorage\");\n/** True if crypto libraries are being used on this client. */\nmodule.exports.CRYPTO_ENABLED = require(\"./client\").CRYPTO_ENABLED;\n/** {@link module:content-repo|ContentRepo} utility functions. */\nmodule.exports.ContentRepo = require(\"./content-repo\");\n/** The {@link module:filter~Filter|Filter} class. */\nmodule.exports.Filter = require(\"./filter\");\n/** The {@link module:timeline-window~TimelineWindow} class. */\nmodule.exports.TimelineWindow = require(\"./timeline-window\").TimelineWindow;\n/** The {@link module:interactive-auth} class. */\nmodule.exports.InteractiveAuth = require(\"./interactive-auth\");\n/** The {@link module:auto-discovery|AutoDiscovery} class. */\nmodule.exports.AutoDiscovery = require(\"./autodiscovery\").AutoDiscovery;\n\nmodule.exports.SERVICE_TYPES = require('./service-types').SERVICE_TYPES;\n\nmodule.exports.MemoryCryptoStore = require(\"./crypto/store/memory-crypto-store\").default;\nmodule.exports.IndexedDBCryptoStore = require(\"./crypto/store/indexeddb-crypto-store\").default;\n\n/**\n * Create a new Matrix Call.\n * @function\n * @param {module:client.MatrixClient} client The MatrixClient instance to use.\n * @param {string} roomId The room the call is in.\n * @return {module:webrtc/call~MatrixCall} The Matrix call or null if the browser\n * does not support WebRTC.\n */\nmodule.exports.createNewMatrixCall = require(\"./webrtc/call\").createNewMatrixCall;\n\n/**\n * Set a preferred audio output device to use for MatrixCalls\n * @function\n * @param {string=} deviceId the identifier for the device\n * undefined treated as unset\n */\nmodule.exports.setMatrixCallAudioOutput = require('./webrtc/call').setAudioOutput;\n/**\n * Set a preferred audio input device to use for MatrixCalls\n * @function\n * @param {string=} deviceId the identifier for the device\n * undefined treated as unset\n */\nmodule.exports.setMatrixCallAudioInput = require('./webrtc/call').setAudioInput;\n/**\n * Set a preferred video input device to use for MatrixCalls\n * @function\n * @param {string=} deviceId the identifier for the device\n * undefined treated as unset\n */\nmodule.exports.setMatrixCallVideoInput = require('./webrtc/call').setVideoInput;\n\n// expose the underlying request object so different environments can use\n// different request libs (e.g. request or browser-request)\nvar request = void 0;\n/**\n * The function used to perform HTTP requests. Only use this if you want to\n * use a different HTTP library, e.g. Angular's $http. This should\n * be set prior to calling {@link createClient}.\n * @param {requestFunction} r The request function to use.\n */\nmodule.exports.request = function (r) {\n request = r;\n};\n\n/**\n * Return the currently-set request function.\n * @return {requestFunction} The current request function.\n */\nmodule.exports.getRequest = function () {\n return request;\n};\n\n/**\n * Apply wrapping code around the request function. The wrapper function is\n * installed as the new request handler, and when invoked it is passed the\n * previous value, along with the options and callback arguments.\n * @param {requestWrapperFunction} wrapper The wrapping function.\n */\nmodule.exports.wrapRequest = function (wrapper) {\n var origRequest = request;\n request = function request(options, callback) {\n return wrapper(origRequest, options, callback);\n };\n};\n\nvar cryptoStoreFactory = function cryptoStoreFactory() {\n return new module.exports.MemoryCryptoStore();\n};\n\n/**\n * Configure a different factory to be used for creating crypto stores\n *\n * @param {Function} fac a function which will return a new\n * {@link module:crypto.store.base~CryptoStore}.\n */\nmodule.exports.setCryptoStoreFactory = function (fac) {\n cryptoStoreFactory = fac;\n};\n\n/**\n * Construct a Matrix Client. Similar to {@link module:client~MatrixClient}\n * except that the 'request', 'store' and 'scheduler' dependencies are satisfied.\n * @param {(Object|string)} opts The configuration options for this client. If\n * this is a string, it is assumed to be the base URL. These configuration\n * options will be passed directly to {@link module:client~MatrixClient}.\n * @param {Object} opts.store If not set, defaults to\n * {@link module:store/memory.MemoryStore}.\n * @param {Object} opts.scheduler If not set, defaults to\n * {@link module:scheduler~MatrixScheduler}.\n * @param {requestFunction} opts.request If not set, defaults to the function\n * supplied to {@link request} which defaults to the request module from NPM.\n *\n * @param {module:crypto.store.base~CryptoStore=} opts.cryptoStore\n * crypto store implementation. Calls the factory supplied to\n * {@link setCryptoStoreFactory} if unspecified; or if no factory has been\n * specified, uses a default implementation (indexeddb in the browser,\n * in-memory otherwise).\n *\n * @return {MatrixClient} A new matrix client.\n * @see {@link module:client~MatrixClient} for the full list of options for\n * opts.\n */\nmodule.exports.createClient = function (opts) {\n if (typeof opts === \"string\") {\n opts = {\n \"baseUrl\": opts\n };\n }\n opts.request = opts.request || request;\n opts.store = opts.store || new module.exports.MemoryStore({\n localStorage: global.localStorage\n });\n opts.scheduler = opts.scheduler || new module.exports.MatrixScheduler();\n opts.cryptoStore = opts.cryptoStore || cryptoStoreFactory();\n return new module.exports.MatrixClient(opts);\n};\n\n/**\n * The request function interface for performing HTTP requests. This matches the\n * API for the {@link https://github.com/request/request#requestoptions-callback|\n * request NPM module}. The SDK will attempt to call this function in order to\n * perform an HTTP request.\n * @callback requestFunction\n * @param {Object} opts The options for this HTTP request.\n * @param {string} opts.uri The complete URI.\n * @param {string} opts.method The HTTP method.\n * @param {Object} opts.qs The query parameters to append to the URI.\n * @param {Object} opts.body The JSON-serializable object.\n * @param {boolean} opts.json True if this is a JSON request.\n * @param {Object} opts._matrix_opts The underlying options set for\n * {@link MatrixHttpApi}.\n * @param {requestCallback} callback The request callback.\n */\n\n/**\n * A wrapper for the request function interface.\n * @callback requestWrapperFunction\n * @param {requestFunction} origRequest The underlying request function being\n * wrapped\n * @param {Object} opts The options for this HTTP request, given in the same\n * form as {@link requestFunction}.\n * @param {requestCallback} callback The request callback.\n */\n\n/**\n * The request callback interface for performing HTTP requests. This matches the\n * API for the {@link https://github.com/request/request#requestoptions-callback|\n * request NPM module}. The SDK will implement a callback which meets this\n * interface in order to handle the HTTP response.\n * @callback requestCallback\n * @param {Error} err The error if one occurred, else falsey.\n * @param {Object} response The HTTP response which consists of\n * {statusCode: {Number}, headers: {Object}}\n * @param {Object} body The parsed HTTP response body.\n */\n//# sourceMappingURL=matrix.js.map","'use strict';\n\n\nvar data = require('./data.json');\n\nfunction escapeRegexp(str) {\n return str.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\n}\n\nvar REPLACE_RE = RegExp(Object.keys(data).map(escapeRegexp).join('|'), 'g');\n\nfunction replace_fn(match) {\n return data[match];\n}\n\nfunction unhomoglyph(str) {\n return str.replace(REPLACE_RE, replace_fn);\n}\n\nmodule.exports = unhomoglyph;\n","module.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _slicedToArray2 = require(\"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _syncAccumulator = require(\"../sync-accumulator\");\n\nvar _syncAccumulator2 = _interopRequireDefault(_syncAccumulator);\n\nvar _utils = require(\"../utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _indexeddbHelpers = require(\"../indexeddb-helpers\");\n\nvar IndexedDBHelpers = _interopRequireWildcard(_indexeddbHelpers);\n\nvar _logger = require(\"../../src/logger\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar VERSION = 3; /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction createDatabase(db) {\n // Make user store, clobber based on user ID. (userId property of User objects)\n db.createObjectStore(\"users\", { keyPath: [\"userId\"] });\n\n // Make account data store, clobber based on event type.\n // (event.type property of MatrixEvent objects)\n db.createObjectStore(\"accountData\", { keyPath: [\"type\"] });\n\n // Make /sync store (sync tokens, room data, etc), always clobber (const key).\n db.createObjectStore(\"sync\", { keyPath: [\"clobber\"] });\n}\n\nfunction upgradeSchemaV2(db) {\n var oobMembersStore = db.createObjectStore(\"oob_membership_events\", {\n keyPath: [\"room_id\", \"state_key\"]\n });\n oobMembersStore.createIndex(\"room\", \"room_id\");\n}\n\nfunction upgradeSchemaV3(db) {\n db.createObjectStore(\"client_options\", { keyPath: [\"clobber\"] });\n}\n\n/**\n * Helper method to collect results from a Cursor and promiseify it.\n * @param {ObjectStore|Index} store The store to perform openCursor on.\n * @param {IDBKeyRange=} keyRange Optional key range to apply on the cursor.\n * @param {Function} resultMapper A function which is repeatedly called with a\n * Cursor.\n * Return the data you want to keep.\n * @return {Promise} Resolves to an array of whatever you returned from\n * resultMapper.\n */\nfunction selectQuery(store, keyRange, resultMapper) {\n var query = store.openCursor(keyRange);\n return new _bluebird2.default(function (resolve, reject) {\n var results = [];\n query.onerror = function (event) {\n reject(new Error(\"Query failed: \" + event.target.errorCode));\n };\n // collect results\n query.onsuccess = function (event) {\n var cursor = event.target.result;\n if (!cursor) {\n resolve(results);\n return; // end of results\n }\n results.push(resultMapper(cursor));\n cursor.continue();\n };\n });\n}\n\nfunction txnAsPromise(txn) {\n return new _bluebird2.default(function (resolve, reject) {\n txn.oncomplete = function (event) {\n resolve(event);\n };\n txn.onerror = function (event) {\n reject(event.target.error);\n };\n });\n}\n\nfunction reqAsEventPromise(req) {\n return new _bluebird2.default(function (resolve, reject) {\n req.onsuccess = function (event) {\n resolve(event);\n };\n req.onerror = function (event) {\n reject(event.target.error);\n };\n });\n}\n\nfunction reqAsPromise(req) {\n return new _bluebird2.default(function (resolve, reject) {\n req.onsuccess = function () {\n return resolve(req);\n };\n req.onerror = function (err) {\n return reject(err);\n };\n });\n}\n\nfunction reqAsCursorPromise(req) {\n return reqAsEventPromise(req).then(function (event) {\n return event.target.result;\n });\n}\n\n/**\n * Does the actual reading from and writing to the indexeddb\n *\n * Construct a new Indexed Database store backend. This requires a call to\n * connect() before this store can be used.\n * @constructor\n * @param {Object} indexedDBInterface The Indexed DB interface e.g\n * window.indexedDB\n * @param {string=} dbName Optional database name. The same name must be used\n * to open the same database.\n */\nvar LocalIndexedDBStoreBackend = function LocalIndexedDBStoreBackend(indexedDBInterface, dbName) {\n this.indexedDB = indexedDBInterface;\n this._dbName = \"matrix-js-sdk:\" + (dbName || \"default\");\n this.db = null;\n this._disconnected = true;\n this._syncAccumulator = new _syncAccumulator2.default();\n this._isNewlyCreated = false;\n};\n\nLocalIndexedDBStoreBackend.exists = function (indexedDB, dbName) {\n dbName = \"matrix-js-sdk:\" + (dbName || \"default\");\n return IndexedDBHelpers.exists(indexedDB, dbName);\n};\n\nLocalIndexedDBStoreBackend.prototype = {\n /**\n * Attempt to connect to the database. This can fail if the user does not\n * grant permission.\n * @return {Promise} Resolves if successfully connected.\n */\n connect: function connect() {\n var _this = this;\n\n if (!this._disconnected) {\n _logger2.default.log(\"LocalIndexedDBStoreBackend.connect: already connected or connecting\");\n return _bluebird2.default.resolve();\n }\n\n this._disconnected = false;\n\n _logger2.default.log(\"LocalIndexedDBStoreBackend.connect: connecting...\");\n var req = this.indexedDB.open(this._dbName, VERSION);\n req.onupgradeneeded = function (ev) {\n var db = ev.target.result;\n var oldVersion = ev.oldVersion;\n _logger2.default.log(\"LocalIndexedDBStoreBackend.connect: upgrading from \" + oldVersion);\n if (oldVersion < 1) {\n // The database did not previously exist.\n _this._isNewlyCreated = true;\n createDatabase(db);\n }\n if (oldVersion < 2) {\n upgradeSchemaV2(db);\n }\n if (oldVersion < 3) {\n upgradeSchemaV3(db);\n }\n // Expand as needed.\n };\n\n req.onblocked = function () {\n _logger2.default.log(\"can't yet open LocalIndexedDBStoreBackend because it is open elsewhere\");\n };\n\n _logger2.default.log(\"LocalIndexedDBStoreBackend.connect: awaiting connection...\");\n return reqAsEventPromise(req).then(function (ev) {\n _logger2.default.log(\"LocalIndexedDBStoreBackend.connect: connected\");\n _this.db = ev.target.result;\n\n // add a poorly-named listener for when deleteDatabase is called\n // so we can close our db connections.\n _this.db.onversionchange = function () {\n _this.db.close();\n };\n\n return _this._init();\n });\n },\n /** @return {bool} whether or not the database was newly created in this session. */\n isNewlyCreated: function isNewlyCreated() {\n return _bluebird2.default.resolve(this._isNewlyCreated);\n },\n\n /**\n * Having connected, load initial data from the database and prepare for use\n * @return {Promise} Resolves on success\n */\n _init: function _init() {\n var _this2 = this;\n\n return _bluebird2.default.all([this._loadAccountData(), this._loadSyncData()]).then(function (_ref) {\n var _ref2 = (0, _slicedToArray3.default)(_ref, 2),\n accountData = _ref2[0],\n syncData = _ref2[1];\n\n _logger2.default.log(\"LocalIndexedDBStoreBackend: loaded initial data\");\n _this2._syncAccumulator.accumulate({\n next_batch: syncData.nextBatch,\n rooms: syncData.roomsData,\n groups: syncData.groupsData,\n account_data: {\n events: accountData\n }\n });\n });\n },\n\n /**\n * Returns the out-of-band membership events for this room that\n * were previously loaded.\n * @param {string} roomId\n * @returns {Promise} the events, potentially an empty array if OOB loading didn't yield any new members\n * @returns {null} in case the members for this room haven't been stored yet\n */\n getOutOfBandMembers: function getOutOfBandMembers(roomId) {\n var _this3 = this;\n\n return new _bluebird2.default(function (resolve, reject) {\n var tx = _this3.db.transaction([\"oob_membership_events\"], \"readonly\");\n var store = tx.objectStore(\"oob_membership_events\");\n var roomIndex = store.index(\"room\");\n var range = IDBKeyRange.only(roomId);\n var request = roomIndex.openCursor(range);\n\n var membershipEvents = [];\n // did we encounter the oob_written marker object\n // amongst the results? That means OOB member\n // loading already happened for this room\n // but there were no members to persist as they\n // were all known already\n var oobWritten = false;\n\n request.onsuccess = function (event) {\n var cursor = event.target.result;\n if (!cursor) {\n // Unknown room\n if (!membershipEvents.length && !oobWritten) {\n return resolve(null);\n }\n return resolve(membershipEvents);\n }\n var record = cursor.value;\n if (record.oob_written) {\n oobWritten = true;\n } else {\n membershipEvents.push(record);\n }\n cursor.continue();\n };\n request.onerror = function (err) {\n reject(err);\n };\n }).then(function (events) {\n _logger2.default.log(\"LL: got \" + (events && events.length) + (\" membershipEvents from storage for room \" + roomId + \" ...\"));\n return events;\n });\n },\n\n /**\n * Stores the out-of-band membership events for this room. Note that\n * it still makes sense to store an empty array as the OOB status for the room is\n * marked as fetched, and getOutOfBandMembers will return an empty array instead of null\n * @param {string} roomId\n * @param {event[]} membershipEvents the membership events to store\n */\n setOutOfBandMembers: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(roomId, membershipEvents) {\n var tx, store, markerObject;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _logger2.default.log(\"LL: backend about to store \" + membershipEvents.length + (\" members for \" + roomId));\n tx = this.db.transaction([\"oob_membership_events\"], \"readwrite\");\n store = tx.objectStore(\"oob_membership_events\");\n\n membershipEvents.forEach(function (e) {\n store.put(e);\n });\n // aside from all the events, we also write a marker object to the store\n // to mark the fact that OOB members have been written for this room.\n // It's possible that 0 members need to be written as all where previously know\n // but we still need to know whether to return null or [] from getOutOfBandMembers\n // where null means out of band members haven't been stored yet for this room\n markerObject = {\n room_id: roomId,\n oob_written: true,\n state_key: 0\n };\n\n store.put(markerObject);\n _context.next = 8;\n return (0, _bluebird.resolve)(txnAsPromise(tx));\n\n case 8:\n _logger2.default.log(\"LL: backend done storing for \" + roomId + \"!\");\n\n case 9:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function setOutOfBandMembers(_x, _x2) {\n return _ref3.apply(this, arguments);\n }\n\n return setOutOfBandMembers;\n }(),\n\n clearOutOfBandMembers: function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(roomId) {\n var readTx, store, roomIndex, roomRange, minStateKeyProm, maxStateKeyProm, _ref5, _ref6, minStateKey, maxStateKey, writeTx, writeStore, membersKeyRange;\n\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n // the approach to delete all members for a room\n // is to get the min and max state key from the index\n // for that room, and then delete between those\n // keys in the store.\n // this should be way faster than deleting every member\n // individually for a large room.\n readTx = this.db.transaction([\"oob_membership_events\"], \"readonly\");\n store = readTx.objectStore(\"oob_membership_events\");\n roomIndex = store.index(\"room\");\n roomRange = IDBKeyRange.only(roomId);\n minStateKeyProm = reqAsCursorPromise(roomIndex.openKeyCursor(roomRange, \"next\")).then(function (cursor) {\n return cursor && cursor.primaryKey[1];\n });\n maxStateKeyProm = reqAsCursorPromise(roomIndex.openKeyCursor(roomRange, \"prev\")).then(function (cursor) {\n return cursor && cursor.primaryKey[1];\n });\n _context2.next = 8;\n return (0, _bluebird.resolve)(_bluebird2.default.all([minStateKeyProm, maxStateKeyProm]));\n\n case 8:\n _ref5 = _context2.sent;\n _ref6 = (0, _slicedToArray3.default)(_ref5, 2);\n minStateKey = _ref6[0];\n maxStateKey = _ref6[1];\n writeTx = this.db.transaction([\"oob_membership_events\"], \"readwrite\");\n writeStore = writeTx.objectStore(\"oob_membership_events\");\n membersKeyRange = IDBKeyRange.bound([roomId, minStateKey], [roomId, maxStateKey]);\n\n\n _logger2.default.log(\"LL: Deleting all users + marker in storage for \" + (\"room \" + roomId + \", with key range:\"), [roomId, minStateKey], [roomId, maxStateKey]);\n _context2.next = 18;\n return (0, _bluebird.resolve)(reqAsPromise(writeStore.delete(membersKeyRange)));\n\n case 18:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function clearOutOfBandMembers(_x3) {\n return _ref4.apply(this, arguments);\n }\n\n return clearOutOfBandMembers;\n }(),\n\n /**\n * Clear the entire database. This should be used when logging out of a client\n * to prevent mixing data between accounts.\n * @return {Promise} Resolved when the database is cleared.\n */\n clearDatabase: function clearDatabase() {\n var _this4 = this;\n\n return new _bluebird2.default(function (resolve, reject) {\n _logger2.default.log(\"Removing indexeddb instance: \" + _this4._dbName);\n var req = _this4.indexedDB.deleteDatabase(_this4._dbName);\n\n req.onblocked = function () {\n _logger2.default.log(\"can't yet delete indexeddb \" + _this4._dbName + \" because it is open elsewhere\");\n };\n\n req.onerror = function (ev) {\n // in firefox, with indexedDB disabled, this fails with a\n // DOMError. We treat this as non-fatal, so that we can still\n // use the app.\n _logger2.default.warn(\"unable to delete js-sdk store indexeddb: \" + ev.target.error);\n resolve();\n };\n\n req.onsuccess = function () {\n _logger2.default.log(\"Removed indexeddb instance: \" + _this4._dbName);\n resolve();\n };\n });\n },\n\n /**\n * @param {boolean=} copy If false, the data returned is from internal\n * buffers and must not be mutated. Otherwise, a copy is made before\n * returning such that the data can be safely mutated. Default: true.\n *\n * @return {Promise} Resolves with a sync response to restore the\n * client state to where it was at the last save, or null if there\n * is no saved sync data.\n */\n getSavedSync: function getSavedSync(copy) {\n if (copy === undefined) copy = true;\n\n var data = this._syncAccumulator.getJSON();\n if (!data.nextBatch) return _bluebird2.default.resolve(null);\n if (copy) {\n // We must deep copy the stored data so that the /sync processing code doesn't\n // corrupt the internal state of the sync accumulator (it adds non-clonable keys)\n return _bluebird2.default.resolve(_utils2.default.deepCopy(data));\n } else {\n return _bluebird2.default.resolve(data);\n }\n },\n\n getNextBatchToken: function getNextBatchToken() {\n return _bluebird2.default.resolve(this._syncAccumulator.getNextBatchToken());\n },\n\n setSyncData: function setSyncData(syncData) {\n var _this5 = this;\n\n return _bluebird2.default.resolve().then(function () {\n _this5._syncAccumulator.accumulate(syncData);\n });\n },\n\n syncToDatabase: function syncToDatabase(userTuples) {\n var syncData = this._syncAccumulator.getJSON();\n\n return _bluebird2.default.all([this._persistUserPresenceEvents(userTuples), this._persistAccountData(syncData.accountData), this._persistSyncData(syncData.nextBatch, syncData.roomsData, syncData.groupsData)]);\n },\n\n /**\n * Persist rooms /sync data along with the next batch token.\n * @param {string} nextBatch The next_batch /sync value.\n * @param {Object} roomsData The 'rooms' /sync data from a SyncAccumulator\n * @param {Object} groupsData The 'groups' /sync data from a SyncAccumulator\n * @return {Promise} Resolves if the data was persisted.\n */\n _persistSyncData: function _persistSyncData(nextBatch, roomsData, groupsData) {\n var _this6 = this;\n\n _logger2.default.log(\"Persisting sync data up to \", nextBatch);\n return _bluebird2.default.try(function () {\n var txn = _this6.db.transaction([\"sync\"], \"readwrite\");\n var store = txn.objectStore(\"sync\");\n store.put({\n clobber: \"-\", // constant key so will always clobber\n nextBatch: nextBatch,\n roomsData: roomsData,\n groupsData: groupsData\n }); // put == UPSERT\n return txnAsPromise(txn);\n });\n },\n\n /**\n * Persist a list of account data events. Events with the same 'type' will\n * be replaced.\n * @param {Object[]} accountData An array of raw user-scoped account data events\n * @return {Promise} Resolves if the events were persisted.\n */\n _persistAccountData: function _persistAccountData(accountData) {\n var _this7 = this;\n\n return _bluebird2.default.try(function () {\n var txn = _this7.db.transaction([\"accountData\"], \"readwrite\");\n var store = txn.objectStore(\"accountData\");\n for (var i = 0; i < accountData.length; i++) {\n store.put(accountData[i]); // put == UPSERT\n }\n return txnAsPromise(txn);\n });\n },\n\n /**\n * Persist a list of [user id, presence event] they are for.\n * Users with the same 'userId' will be replaced.\n * Presence events should be the event in its raw form (not the Event\n * object)\n * @param {Object[]} tuples An array of [userid, event] tuples\n * @return {Promise} Resolves if the users were persisted.\n */\n _persistUserPresenceEvents: function _persistUserPresenceEvents(tuples) {\n var _this8 = this;\n\n return _bluebird2.default.try(function () {\n var txn = _this8.db.transaction([\"users\"], \"readwrite\");\n var store = txn.objectStore(\"users\");\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(tuples), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var tuple = _step.value;\n\n store.put({\n userId: tuple[0],\n event: tuple[1]\n }); // put == UPSERT\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return txnAsPromise(txn);\n });\n },\n\n /**\n * Load all user presence events from the database. This is not cached.\n * FIXME: It would probably be more sensible to store the events in the\n * sync.\n * @return {Promise} A list of presence events in their raw form.\n */\n getUserPresenceEvents: function getUserPresenceEvents() {\n var _this9 = this;\n\n return _bluebird2.default.try(function () {\n var txn = _this9.db.transaction([\"users\"], \"readonly\");\n var store = txn.objectStore(\"users\");\n return selectQuery(store, undefined, function (cursor) {\n return [cursor.value.userId, cursor.value.event];\n });\n });\n },\n\n /**\n * Load all the account data events from the database. This is not cached.\n * @return {Promise} A list of raw global account events.\n */\n _loadAccountData: function _loadAccountData() {\n var _this10 = this;\n\n _logger2.default.log(\"LocalIndexedDBStoreBackend: loading account data...\");\n return _bluebird2.default.try(function () {\n var txn = _this10.db.transaction([\"accountData\"], \"readonly\");\n var store = txn.objectStore(\"accountData\");\n return selectQuery(store, undefined, function (cursor) {\n return cursor.value;\n }).then(function (result) {\n _logger2.default.log(\"LocalIndexedDBStoreBackend: loaded account data\");\n return result;\n });\n });\n },\n\n /**\n * Load the sync data from the database.\n * @return {Promise} An object with \"roomsData\" and \"nextBatch\" keys.\n */\n _loadSyncData: function _loadSyncData() {\n var _this11 = this;\n\n _logger2.default.log(\"LocalIndexedDBStoreBackend: loading sync data...\");\n return _bluebird2.default.try(function () {\n var txn = _this11.db.transaction([\"sync\"], \"readonly\");\n var store = txn.objectStore(\"sync\");\n return selectQuery(store, undefined, function (cursor) {\n return cursor.value;\n }).then(function (results) {\n _logger2.default.log(\"LocalIndexedDBStoreBackend: loaded sync data\");\n if (results.length > 1) {\n _logger2.default.warn(\"loadSyncData: More than 1 sync row found.\");\n }\n return results.length > 0 ? results[0] : {};\n });\n });\n },\n\n getClientOptions: function getClientOptions() {\n var _this12 = this;\n\n return _bluebird2.default.resolve().then(function () {\n var txn = _this12.db.transaction([\"client_options\"], \"readonly\");\n var store = txn.objectStore(\"client_options\");\n return selectQuery(store, undefined, function (cursor) {\n if (cursor.value && cursor.value && cursor.value.options) {\n return cursor.value.options;\n }\n }).then(function (results) {\n return results[0];\n });\n });\n },\n\n storeClientOptions: function () {\n var _ref7 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(options) {\n var txn, store;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n txn = this.db.transaction([\"client_options\"], \"readwrite\");\n store = txn.objectStore(\"client_options\");\n\n store.put({\n clobber: \"-\", // constant key so will always clobber\n options: options\n }); // put == UPSERT\n _context3.next = 5;\n return (0, _bluebird.resolve)(txnAsPromise(txn));\n\n case 5:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function storeClientOptions(_x4) {\n return _ref7.apply(this, arguments);\n }\n\n return storeClientOptions;\n }()\n};\n\nexports.default = LocalIndexedDBStoreBackend;\n//# sourceMappingURL=indexeddb-local-backend.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _create = require(\"babel-runtime/core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/reflect/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _setPrototypeOf = require(\"babel-runtime/core-js/reflect/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _construct = require(\"babel-runtime/core-js/reflect/construct\");\n\nvar _construct2 = _interopRequireDefault(_construct);\n\nexports.InvalidStoreError = InvalidStoreError;\nexports.InvalidCryptoStoreError = InvalidCryptoStoreError;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// can't just do InvalidStoreError extends Error\n// because of http://babeljs.io/docs/usage/caveats/#classes\nfunction InvalidStoreError(reason, value) {\n var message = \"Store is invalid because \" + reason + \", \" + \"please stop the client, delete all data and start the client again\";\n var instance = (0, _construct2.default)(Error, [message]);\n (0, _setPrototypeOf2.default)(instance, (0, _getPrototypeOf2.default)(this));\n instance.reason = reason;\n instance.value = value;\n return instance;\n}\n\nInvalidStoreError.TOGGLED_LAZY_LOADING = \"TOGGLED_LAZY_LOADING\";\n\nInvalidStoreError.prototype = (0, _create2.default)(Error.prototype, {\n constructor: {\n value: Error,\n enumerable: false,\n writable: true,\n configurable: true\n }\n});\n(0, _setPrototypeOf2.default)(InvalidStoreError, Error);\n\nfunction InvalidCryptoStoreError(reason) {\n var message = \"Crypto store is invalid because \" + reason + \", \" + \"please stop the client, delete all data and start the client again\";\n var instance = (0, _construct2.default)(Error, [message]);\n (0, _setPrototypeOf2.default)(instance, (0, _getPrototypeOf2.default)(this));\n instance.reason = reason;\n instance.name = 'InvalidCryptoStoreError';\n return instance;\n}\n\nInvalidCryptoStoreError.TOO_NEW = \"TOO_NEW\";\n\nInvalidCryptoStoreError.prototype = (0, _create2.default)(Error.prototype, {\n constructor: {\n value: Error,\n enumerable: false,\n writable: true,\n configurable: true\n }\n});\n(0, _setPrototypeOf2.default)(InvalidCryptoStoreError, Error);\n//# sourceMappingURL=errors.js.map","var hide = require('./_hide');\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _values = require('babel-runtime/core-js/object/values');\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _logger = require('../../logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _utils = require('../../utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Internal module. in-memory storage for e2e.\n *\n * @module\n */\n\n/**\n * @implements {module:crypto/store/base~CryptoStore}\n */\nvar MemoryCryptoStore = function () {\n function MemoryCryptoStore() {\n (0, _classCallCheck3.default)(this, MemoryCryptoStore);\n\n this._outgoingRoomKeyRequests = [];\n this._account = null;\n\n // Map of {devicekey -> {sessionId -> session pickle}}\n this._sessions = {};\n // Map of {senderCurve25519Key+'/'+sessionId -> session data object}\n this._inboundGroupSessions = {};\n // Opaque device data object\n this._deviceData = null;\n // roomId -> Opaque roomInfo object\n this._rooms = {};\n // Set of {senderCurve25519Key+'/'+sessionId}\n this._sessionsNeedingBackup = {};\n }\n\n /**\n * Delete all data from this store.\n *\n * @returns {Promise} Promise which resolves when the store has been cleared.\n */\n\n\n (0, _createClass3.default)(MemoryCryptoStore, [{\n key: 'deleteAllData',\n value: function deleteAllData() {\n return _bluebird2.default.resolve();\n }\n\n /**\n * Look for an existing outgoing room key request, and if none is found,\n * add a new one\n *\n * @param {module:crypto/store/base~OutgoingRoomKeyRequest} request\n *\n * @returns {Promise} resolves to\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}: either the\n * same instance as passed in, or the existing one.\n */\n\n }, {\n key: 'getOrAddOutgoingRoomKeyRequest',\n value: function getOrAddOutgoingRoomKeyRequest(request) {\n var _this = this;\n\n var requestBody = request.requestBody;\n\n return _bluebird2.default.try(function () {\n // first see if we already have an entry for this request.\n var existing = _this._getOutgoingRoomKeyRequest(requestBody);\n\n if (existing) {\n // this entry matches the request - return it.\n _logger2.default.log('already have key request outstanding for ' + (requestBody.room_id + ' / ' + requestBody.session_id + ': ') + 'not sending another');\n return existing;\n }\n\n // we got to the end of the list without finding a match\n // - add the new request.\n _logger2.default.log('enqueueing key request for ' + requestBody.room_id + ' / ' + requestBody.session_id);\n _this._outgoingRoomKeyRequests.push(request);\n return request;\n });\n }\n\n /**\n * Look for an existing room key request\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * existing request to look for\n *\n * @return {Promise} resolves to the matching\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if\n * not found\n */\n\n }, {\n key: 'getOutgoingRoomKeyRequest',\n value: function getOutgoingRoomKeyRequest(requestBody) {\n return _bluebird2.default.resolve(this._getOutgoingRoomKeyRequest(requestBody));\n }\n\n /**\n * Looks for existing room key request, and returns the result synchronously.\n *\n * @internal\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * existing request to look for\n *\n * @return {module:crypto/store/base~OutgoingRoomKeyRequest?}\n * the matching request, or null if not found\n */\n\n }, {\n key: '_getOutgoingRoomKeyRequest',\n value: function _getOutgoingRoomKeyRequest(requestBody) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(this._outgoingRoomKeyRequests), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var existing = _step.value;\n\n if (_utils2.default.deepCompare(existing.requestBody, requestBody)) {\n return existing;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return null;\n }\n\n /**\n * Look for room key requests by state\n *\n * @param {Array} wantedStates list of acceptable states\n *\n * @return {Promise} resolves to the a\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if\n * there are no pending requests in those states\n */\n\n }, {\n key: 'getOutgoingRoomKeyRequestByState',\n value: function getOutgoingRoomKeyRequestByState(wantedStates) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(this._outgoingRoomKeyRequests), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var req = _step2.value;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(wantedStates), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var state = _step3.value;\n\n if (req.state === state) {\n return _bluebird2.default.resolve(req);\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return _bluebird2.default.resolve(null);\n }\n }, {\n key: 'getOutgoingRoomKeyRequestsByTarget',\n value: function getOutgoingRoomKeyRequestsByTarget(userId, deviceId, wantedStates) {\n var results = [];\n\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = (0, _getIterator3.default)(this._outgoingRoomKeyRequests), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var req = _step4.value;\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = (0, _getIterator3.default)(wantedStates), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var state = _step5.value;\n\n if (req.state === state && req.recipients.includes({ userId: userId, deviceId: deviceId })) {\n results.push(req);\n }\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n return _bluebird2.default.resolve(results);\n }\n\n /**\n * Look for an existing room key request by id and state, and update it if\n * found\n *\n * @param {string} requestId ID of request to update\n * @param {number} expectedState state we expect to find the request in\n * @param {Object} updates name/value map of updates to apply\n *\n * @returns {Promise} resolves to\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}\n * updated request, or null if no matching row was found\n */\n\n }, {\n key: 'updateOutgoingRoomKeyRequest',\n value: function updateOutgoingRoomKeyRequest(requestId, expectedState, updates) {\n var _iteratorNormalCompletion6 = true;\n var _didIteratorError6 = false;\n var _iteratorError6 = undefined;\n\n try {\n for (var _iterator6 = (0, _getIterator3.default)(this._outgoingRoomKeyRequests), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n var req = _step6.value;\n\n if (req.requestId !== requestId) {\n continue;\n }\n\n if (req.state != expectedState) {\n _logger2.default.warn('Cannot update room key request from ' + expectedState + ' ' + ('as it was already updated to ' + req.state));\n return _bluebird2.default.resolve(null);\n }\n (0, _assign2.default)(req, updates);\n return _bluebird2.default.resolve(req);\n }\n } catch (err) {\n _didIteratorError6 = true;\n _iteratorError6 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion6 && _iterator6.return) {\n _iterator6.return();\n }\n } finally {\n if (_didIteratorError6) {\n throw _iteratorError6;\n }\n }\n }\n\n return _bluebird2.default.resolve(null);\n }\n\n /**\n * Look for an existing room key request by id and state, and delete it if\n * found\n *\n * @param {string} requestId ID of request to update\n * @param {number} expectedState state we expect to find the request in\n *\n * @returns {Promise} resolves once the operation is completed\n */\n\n }, {\n key: 'deleteOutgoingRoomKeyRequest',\n value: function deleteOutgoingRoomKeyRequest(requestId, expectedState) {\n for (var i = 0; i < this._outgoingRoomKeyRequests.length; i++) {\n var req = this._outgoingRoomKeyRequests[i];\n\n if (req.requestId !== requestId) {\n continue;\n }\n\n if (req.state != expectedState) {\n _logger2.default.warn('Cannot delete room key request in state ' + req.state + ' ' + ('(expected ' + expectedState + ')'));\n return _bluebird2.default.resolve(null);\n }\n\n this._outgoingRoomKeyRequests.splice(i, 1);\n return _bluebird2.default.resolve(req);\n }\n\n return _bluebird2.default.resolve(null);\n }\n\n // Olm Account\n\n }, {\n key: 'getAccount',\n value: function getAccount(txn, func) {\n func(this._account);\n }\n }, {\n key: 'storeAccount',\n value: function storeAccount(txn, newData) {\n this._account = newData;\n }\n\n // Olm Sessions\n\n }, {\n key: 'countEndToEndSessions',\n value: function countEndToEndSessions(txn, func) {\n return (0, _keys2.default)(this._sessions).length;\n }\n }, {\n key: 'getEndToEndSession',\n value: function getEndToEndSession(deviceKey, sessionId, txn, func) {\n var deviceSessions = this._sessions[deviceKey] || {};\n func(deviceSessions[sessionId] || null);\n }\n }, {\n key: 'getEndToEndSessions',\n value: function getEndToEndSessions(deviceKey, txn, func) {\n func(this._sessions[deviceKey] || {});\n }\n }, {\n key: 'getAllEndToEndSessions',\n value: function getAllEndToEndSessions(txn, func) {\n var _iteratorNormalCompletion7 = true;\n var _didIteratorError7 = false;\n var _iteratorError7 = undefined;\n\n try {\n for (var _iterator7 = (0, _getIterator3.default)((0, _values2.default)(this._sessions)), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {\n var deviceSessions = _step7.value;\n var _iteratorNormalCompletion8 = true;\n var _didIteratorError8 = false;\n var _iteratorError8 = undefined;\n\n try {\n for (var _iterator8 = (0, _getIterator3.default)((0, _values2.default)(deviceSessions)), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {\n var sess = _step8.value;\n\n func(sess);\n }\n } catch (err) {\n _didIteratorError8 = true;\n _iteratorError8 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion8 && _iterator8.return) {\n _iterator8.return();\n }\n } finally {\n if (_didIteratorError8) {\n throw _iteratorError8;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError7 = true;\n _iteratorError7 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion7 && _iterator7.return) {\n _iterator7.return();\n }\n } finally {\n if (_didIteratorError7) {\n throw _iteratorError7;\n }\n }\n }\n }\n }, {\n key: 'storeEndToEndSession',\n value: function storeEndToEndSession(deviceKey, sessionId, sessionInfo, txn) {\n var deviceSessions = this._sessions[deviceKey];\n if (deviceSessions === undefined) {\n deviceSessions = {};\n this._sessions[deviceKey] = deviceSessions;\n }\n deviceSessions[sessionId] = sessionInfo;\n }\n\n // Inbound Group Sessions\n\n }, {\n key: 'getEndToEndInboundGroupSession',\n value: function getEndToEndInboundGroupSession(senderCurve25519Key, sessionId, txn, func) {\n func(this._inboundGroupSessions[senderCurve25519Key + '/' + sessionId] || null);\n }\n }, {\n key: 'getAllEndToEndInboundGroupSessions',\n value: function getAllEndToEndInboundGroupSessions(txn, func) {\n var _iteratorNormalCompletion9 = true;\n var _didIteratorError9 = false;\n var _iteratorError9 = undefined;\n\n try {\n for (var _iterator9 = (0, _getIterator3.default)((0, _keys2.default)(this._inboundGroupSessions)), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {\n var key = _step9.value;\n\n // we can't use split, as the components we are trying to split out\n // might themselves contain '/' characters. We rely on the\n // senderKey being a (32-byte) curve25519 key, base64-encoded\n // (hence 43 characters long).\n\n func({\n senderKey: key.substr(0, 43),\n sessionId: key.substr(44),\n sessionData: this._inboundGroupSessions[key]\n });\n }\n } catch (err) {\n _didIteratorError9 = true;\n _iteratorError9 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion9 && _iterator9.return) {\n _iterator9.return();\n }\n } finally {\n if (_didIteratorError9) {\n throw _iteratorError9;\n }\n }\n }\n\n func(null);\n }\n }, {\n key: 'addEndToEndInboundGroupSession',\n value: function addEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {\n var k = senderCurve25519Key + '/' + sessionId;\n if (this._inboundGroupSessions[k] === undefined) {\n this._inboundGroupSessions[k] = sessionData;\n }\n }\n }, {\n key: 'storeEndToEndInboundGroupSession',\n value: function storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {\n this._inboundGroupSessions[senderCurve25519Key + '/' + sessionId] = sessionData;\n }\n\n // Device Data\n\n }, {\n key: 'getEndToEndDeviceData',\n value: function getEndToEndDeviceData(txn, func) {\n func(this._deviceData);\n }\n }, {\n key: 'storeEndToEndDeviceData',\n value: function storeEndToEndDeviceData(deviceData, txn) {\n this._deviceData = deviceData;\n }\n\n // E2E rooms\n\n }, {\n key: 'storeEndToEndRoom',\n value: function storeEndToEndRoom(roomId, roomInfo, txn) {\n this._rooms[roomId] = roomInfo;\n }\n }, {\n key: 'getEndToEndRooms',\n value: function getEndToEndRooms(txn, func) {\n func(this._rooms);\n }\n }, {\n key: 'getSessionsNeedingBackup',\n value: function getSessionsNeedingBackup(limit) {\n var sessions = [];\n for (var session in this._sessionsNeedingBackup) {\n if (this._inboundGroupSessions[session]) {\n sessions.push({\n senderKey: session.substr(0, 43),\n sessionId: session.substr(44),\n sessionData: this._inboundGroupSessions[session]\n });\n if (limit && session.length >= limit) {\n break;\n }\n }\n }\n return _bluebird2.default.resolve(sessions);\n }\n }, {\n key: 'countSessionsNeedingBackup',\n value: function countSessionsNeedingBackup() {\n return _bluebird2.default.resolve((0, _keys2.default)(this._sessionsNeedingBackup).length);\n }\n }, {\n key: 'unmarkSessionsNeedingBackup',\n value: function unmarkSessionsNeedingBackup(sessions) {\n var _iteratorNormalCompletion10 = true;\n var _didIteratorError10 = false;\n var _iteratorError10 = undefined;\n\n try {\n for (var _iterator10 = (0, _getIterator3.default)(sessions), _step10; !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) {\n var session = _step10.value;\n\n var sessionKey = session.senderKey + '/' + session.sessionId;\n delete this._sessionsNeedingBackup[sessionKey];\n }\n } catch (err) {\n _didIteratorError10 = true;\n _iteratorError10 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion10 && _iterator10.return) {\n _iterator10.return();\n }\n } finally {\n if (_didIteratorError10) {\n throw _iteratorError10;\n }\n }\n }\n\n return _bluebird2.default.resolve();\n }\n }, {\n key: 'markSessionsNeedingBackup',\n value: function markSessionsNeedingBackup(sessions) {\n var _iteratorNormalCompletion11 = true;\n var _didIteratorError11 = false;\n var _iteratorError11 = undefined;\n\n try {\n for (var _iterator11 = (0, _getIterator3.default)(sessions), _step11; !(_iteratorNormalCompletion11 = (_step11 = _iterator11.next()).done); _iteratorNormalCompletion11 = true) {\n var session = _step11.value;\n\n var sessionKey = session.senderKey + '/' + session.sessionId;\n this._sessionsNeedingBackup[sessionKey] = true;\n }\n } catch (err) {\n _didIteratorError11 = true;\n _iteratorError11 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion11 && _iterator11.return) {\n _iterator11.return();\n }\n } finally {\n if (_didIteratorError11) {\n throw _iteratorError11;\n }\n }\n }\n\n return _bluebird2.default.resolve();\n }\n\n // Session key backups\n\n }, {\n key: 'doTxn',\n value: function doTxn(mode, stores, func) {\n return _bluebird2.default.resolve(func(null));\n }\n }]);\n return MemoryCryptoStore;\n}(); /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = MemoryCryptoStore;\n//# sourceMappingURL=memory-crypto-store.js.map","/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018-2019 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module crypto\n */\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.verificationMethods = undefined;\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _set = require('babel-runtime/core-js/set');\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _map = require('babel-runtime/core-js/map');\n\nvar _map2 = _interopRequireDefault(_map);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _defaultVerificationM;\n\n// returns a promise which resolves to the response\nvar _uploadOneTimeKeys = function () {\n var _ref6 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(crypto) {\n var oneTimeKeys, oneTimeJson, promises, keyId, k, res;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return (0, _bluebird.resolve)(crypto._olmDevice.getOneTimeKeys());\n\n case 2:\n oneTimeKeys = _context6.sent;\n oneTimeJson = {};\n promises = [];\n\n\n for (keyId in oneTimeKeys.curve25519) {\n if (oneTimeKeys.curve25519.hasOwnProperty(keyId)) {\n k = {\n key: oneTimeKeys.curve25519[keyId]\n };\n\n oneTimeJson[\"signed_curve25519:\" + keyId] = k;\n promises.push(crypto._signObject(k));\n }\n }\n\n _context6.next = 8;\n return (0, _bluebird.resolve)(_bluebird2.default.all(promises));\n\n case 8:\n _context6.next = 10;\n return (0, _bluebird.resolve)(crypto._baseApis.uploadKeysRequest({\n one_time_keys: oneTimeJson\n }, {\n // for now, we set the device id explicitly, as we may not be using the\n // same one as used in login.\n device_id: crypto._deviceId\n }));\n\n case 10:\n res = _context6.sent;\n _context6.next = 13;\n return (0, _bluebird.resolve)(crypto._olmDevice.markKeysAsPublished());\n\n case 13:\n return _context6.abrupt('return', res);\n\n case 14:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n return function _uploadOneTimeKeys(_x3) {\n return _ref6.apply(this, arguments);\n };\n}();\n\n/**\n * Download the keys for a list of users and stores the keys in the session\n * store.\n * @param {Array} userIds The users to fetch.\n * @param {bool} forceDownload Always download the keys even if cached.\n *\n * @return {Promise} A promise which resolves to a map userId->deviceId->{@link\n * module:crypto/deviceinfo|DeviceInfo}.\n */\n\n\nexports.isCryptoAvailable = isCryptoAvailable;\nexports.default = Crypto;\n\nvar _events = require('events');\n\nvar _logger = require('../logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _randomstring = require('../randomstring');\n\nvar _OutgoingRoomKeyRequestManager = require('./OutgoingRoomKeyRequestManager');\n\nvar _OutgoingRoomKeyRequestManager2 = _interopRequireDefault(_OutgoingRoomKeyRequestManager);\n\nvar _indexeddbCryptoStore = require('./store/indexeddb-crypto-store');\n\nvar _indexeddbCryptoStore2 = _interopRequireDefault(_indexeddbCryptoStore);\n\nvar _QRCode = require('./verification/QRCode');\n\nvar _SAS = require('./verification/SAS');\n\nvar _SAS2 = _interopRequireDefault(_SAS);\n\nvar _Error = require('./verification/Error');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar anotherjson = require('another-json');\n\nvar utils = require(\"../utils\");\nvar OlmDevice = require(\"./OlmDevice\");\nvar olmlib = require(\"./olmlib\");\nvar algorithms = require(\"./algorithms\");\nvar DeviceInfo = require(\"./deviceinfo\");\nvar DeviceVerification = DeviceInfo.DeviceVerification;\nvar DeviceList = require('./DeviceList').default;\n\n\nvar defaultVerificationMethods = (_defaultVerificationM = {}, (0, _defineProperty3.default)(_defaultVerificationM, _QRCode.ScanQRCode.NAME, _QRCode.ScanQRCode), (0, _defineProperty3.default)(_defaultVerificationM, _QRCode.ShowQRCode.NAME, _QRCode.ShowQRCode), (0, _defineProperty3.default)(_defaultVerificationM, _SAS2.default.NAME, _SAS2.default), _defaultVerificationM);\n\n/**\n * verification method names\n */\nvar verificationMethods = exports.verificationMethods = {\n QR_CODE_SCAN: _QRCode.ScanQRCode.NAME,\n QR_CODE_SHOW: _QRCode.ShowQRCode.NAME,\n SAS: _SAS2.default.NAME\n};\n\nfunction isCryptoAvailable() {\n return Boolean(global.Olm);\n}\n\nvar MIN_FORCE_SESSION_INTERVAL_MS = 60 * 60 * 1000;\nvar KEY_BACKUP_KEYS_PER_REQUEST = 200;\n\n/**\n * Cryptography bits\n *\n * This module is internal to the js-sdk; the public API is via MatrixClient.\n *\n * @constructor\n * @alias module:crypto\n *\n * @internal\n *\n * @param {module:base-apis~MatrixBaseApis} baseApis base matrix api interface\n *\n * @param {module:store/session/webstorage~WebStorageSessionStore} sessionStore\n * Store to be used for end-to-end crypto session data\n *\n * @param {string} userId The user ID for the local user\n *\n * @param {string} deviceId The identifier for this device.\n *\n * @param {Object} clientStore the MatrixClient data store.\n *\n * @param {module:crypto/store/base~CryptoStore} cryptoStore\n * storage for the crypto layer.\n *\n * @param {RoomList} roomList An initialised RoomList object\n *\n * @param {Array} verificationMethods Array of verification methods to use.\n * Each element can either be a string from MatrixClient.verificationMethods\n * or a class that implements a verification method.\n */\nfunction Crypto(baseApis, sessionStore, userId, deviceId, clientStore, cryptoStore, roomList, verificationMethods) {\n this._baseApis = baseApis;\n this._sessionStore = sessionStore;\n this._userId = userId;\n this._deviceId = deviceId;\n this._clientStore = clientStore;\n this._cryptoStore = cryptoStore;\n this._roomList = roomList;\n this._verificationMethods = new _map2.default();\n if (verificationMethods) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(verificationMethods), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var method = _step.value;\n\n if (typeof method === \"string\") {\n if (defaultVerificationMethods[method]) {\n this._verificationMethods.set(method, defaultVerificationMethods[method]);\n }\n } else if (method.NAME) {\n this._verificationMethods.set(method.NAME, method);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n\n // track whether this device's megolm keys are being backed up incrementally\n // to the server or not.\n // XXX: this should probably have a single source of truth from OlmAccount\n this.backupInfo = null; // The info dict from /room_keys/version\n this.backupKey = null; // The encryption key object\n this._checkedForBackup = false; // Have we checked the server for a backup we can use?\n this._sendingBackups = false; // Are we currently sending backups?\n\n this._olmDevice = new OlmDevice(cryptoStore);\n this._deviceList = new DeviceList(baseApis, cryptoStore, this._olmDevice);\n\n // the last time we did a check for the number of one-time-keys on the\n // server.\n this._lastOneTimeKeyCheck = null;\n this._oneTimeKeyCheckInProgress = false;\n\n // EncryptionAlgorithm instance for each room\n this._roomEncryptors = {};\n\n // map from algorithm to DecryptionAlgorithm instance, for each room\n this._roomDecryptors = {};\n\n this._supportedAlgorithms = utils.keys(algorithms.DECRYPTION_CLASSES);\n\n this._deviceKeys = {};\n\n this._globalBlacklistUnverifiedDevices = false;\n\n this._outgoingRoomKeyRequestManager = new _OutgoingRoomKeyRequestManager2.default(baseApis, this._deviceId, this._cryptoStore);\n\n // list of IncomingRoomKeyRequests/IncomingRoomKeyRequestCancellations\n // we received in the current sync.\n this._receivedRoomKeyRequests = [];\n this._receivedRoomKeyRequestCancellations = [];\n // true if we are currently processing received room key requests\n this._processingRoomKeyRequests = false;\n // controls whether device tracking is delayed\n // until calling encryptEvent or trackRoomDevices,\n // or done immediately upon enabling room encryption.\n this._lazyLoadMembers = false;\n // in case _lazyLoadMembers is true,\n // track if an initial tracking of all the room members\n // has happened for a given room. This is delayed\n // to avoid loading room members as long as possible.\n this._roomDeviceTrackingState = {};\n\n // The timestamp of the last time we forced establishment\n // of a new session for each device, in milliseconds.\n // {\n // userId: {\n // deviceId: 1234567890000,\n // },\n // }\n this._lastNewSessionForced = {};\n\n this._verificationTransactions = new _map2.default();\n}\nutils.inherits(Crypto, _events.EventEmitter);\n\n/**\n * Initialise the crypto module so that it is ready for use\n *\n * Returns a promise which resolves once the crypto module is ready for use.\n */\nCrypto.prototype.init = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var myDevices, deviceInfo;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _logger2.default.log(\"Crypto: initialising Olm...\");\n _context.next = 3;\n return (0, _bluebird.resolve)(global.Olm.init());\n\n case 3:\n _logger2.default.log(\"Crypto: initialising Olm device...\");\n _context.next = 6;\n return (0, _bluebird.resolve)(this._olmDevice.init());\n\n case 6:\n _logger2.default.log(\"Crypto: loading device list...\");\n _context.next = 9;\n return (0, _bluebird.resolve)(this._deviceList.load());\n\n case 9:\n\n // build our device keys: these will later be uploaded\n this._deviceKeys[\"ed25519:\" + this._deviceId] = this._olmDevice.deviceEd25519Key;\n this._deviceKeys[\"curve25519:\" + this._deviceId] = this._olmDevice.deviceCurve25519Key;\n\n _logger2.default.log(\"Crypto: fetching own devices...\");\n myDevices = this._deviceList.getRawStoredDevicesForUser(this._userId);\n\n\n if (!myDevices) {\n myDevices = {};\n }\n\n if (!myDevices[this._deviceId]) {\n // add our own deviceinfo to the cryptoStore\n _logger2.default.log(\"Crypto: adding this device to the store...\");\n deviceInfo = {\n keys: this._deviceKeys,\n algorithms: this._supportedAlgorithms,\n verified: DeviceVerification.VERIFIED,\n known: true\n };\n\n\n myDevices[this._deviceId] = deviceInfo;\n this._deviceList.storeDevicesForUser(this._userId, myDevices);\n this._deviceList.saveIfDirty();\n }\n\n _logger2.default.log(\"Crypto: checking for key backup...\");\n this._checkAndStartKeyBackup();\n\n case 17:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n}));\n\n/**\n * Check the server for an active key backup and\n * if one is present and has a valid signature from\n * one of the user's verified devices, start backing up\n * to it.\n */\nCrypto.prototype._checkAndStartKeyBackup = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var backupInfo, trustInfo;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _logger2.default.log(\"Checking key backup status...\");\n\n if (!this._baseApis.isGuest()) {\n _context2.next = 5;\n break;\n }\n\n _logger2.default.log(\"Skipping key backup check since user is guest\");\n this._checkedForBackup = true;\n return _context2.abrupt('return', null);\n\n case 5:\n backupInfo = void 0;\n _context2.prev = 6;\n _context2.next = 9;\n return (0, _bluebird.resolve)(this._baseApis.getKeyBackupVersion());\n\n case 9:\n backupInfo = _context2.sent;\n _context2.next = 17;\n break;\n\n case 12:\n _context2.prev = 12;\n _context2.t0 = _context2['catch'](6);\n\n _logger2.default.log(\"Error checking for active key backup\", _context2.t0);\n if (_context2.t0.httpStatus / 100 === 4) {\n // well that's told us. we won't try again.\n this._checkedForBackup = true;\n }\n return _context2.abrupt('return', null);\n\n case 17:\n this._checkedForBackup = true;\n\n _context2.next = 20;\n return (0, _bluebird.resolve)(this.isKeyBackupTrusted(backupInfo));\n\n case 20:\n trustInfo = _context2.sent;\n\n\n if (trustInfo.usable && !this.backupInfo) {\n _logger2.default.log(\"Found usable key backup v\" + backupInfo.version + \": enabling key backups\");\n this._baseApis.enableKeyBackup(backupInfo);\n } else if (!trustInfo.usable && this.backupInfo) {\n _logger2.default.log(\"No usable key backup: disabling key backup\");\n this._baseApis.disableKeyBackup();\n } else if (!trustInfo.usable && !this.backupInfo) {\n _logger2.default.log(\"No usable key backup: not enabling key backup\");\n } else if (trustInfo.usable && this.backupInfo) {\n // may not be the same version: if not, we should switch\n if (backupInfo.version !== this.backupInfo.version) {\n _logger2.default.log(\"On backup version \" + this.backupInfo.version + \" but found \" + \"version \" + backupInfo.version + \": switching.\");\n this._baseApis.disableKeyBackup();\n this._baseApis.enableKeyBackup(backupInfo);\n } else {\n _logger2.default.log(\"Backup version \" + backupInfo.version + \" still current\");\n }\n }\n\n return _context2.abrupt('return', { backupInfo: backupInfo, trustInfo: trustInfo });\n\n case 23:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this, [[6, 12]]);\n}));\n\nCrypto.prototype.setTrustedBackupPubKey = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(trustedPubKey) {\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n // This should be redundant post cross-signing is a thing, so just\n // plonk it in localStorage for now.\n this._sessionStore.setLocalTrustedBackupPubKey(trustedPubKey);\n _context3.next = 3;\n return (0, _bluebird.resolve)(this.checkKeyBackup());\n\n case 3:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function (_x) {\n return _ref3.apply(this, arguments);\n };\n}();\n\n/**\n * Forces a re-check of the key backup and enables/disables it\n * as appropriate.\n *\n * @return {Object} Object with backup info (as returned by\n * getKeyBackupVersion) in backupInfo and\n * trust information (as returned by isKeyBackupTrusted)\n * in trustInfo.\n */\nCrypto.prototype.checkKeyBackup = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {\n var returnInfo;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n this._checkedForBackup = false;\n _context4.next = 3;\n return (0, _bluebird.resolve)(this._checkAndStartKeyBackup());\n\n case 3:\n returnInfo = _context4.sent;\n return _context4.abrupt('return', returnInfo);\n\n case 5:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n}));\n\n/**\n * @param {object} backupInfo key backup info dict from /room_keys/version\n * @return {object} {\n * usable: [bool], // is the backup trusted, true iff there is a sig that is valid & from a trusted device\n * sigs: [\n * valid: [bool || null], // true: valid, false: invalid, null: cannot attempt validation\n * deviceId: [string],\n * device: [DeviceInfo || null],\n * ]\n * }\n */\nCrypto.prototype.isKeyBackupTrusted = function () {\n var _ref5 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(backupInfo) {\n var ret, trustedPubkey, mySigs, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, keyId, keyIdParts, sigInfo, device;\n\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n ret = {\n usable: false,\n trusted_locally: false,\n sigs: []\n };\n\n if (!(!backupInfo || !backupInfo.algorithm || !backupInfo.auth_data || !backupInfo.auth_data.public_key || !backupInfo.auth_data.signatures)) {\n _context5.next = 4;\n break;\n }\n\n _logger2.default.info(\"Key backup is absent or missing required data\");\n return _context5.abrupt('return', ret);\n\n case 4:\n trustedPubkey = this._sessionStore.getLocalTrustedBackupPubKey();\n\n\n if (backupInfo.auth_data.public_key === trustedPubkey) {\n _logger2.default.info(\"Backup public key \" + trustedPubkey + \" is trusted locally\");\n ret.trusted_locally = true;\n }\n\n mySigs = backupInfo.auth_data.signatures[this._userId] || [];\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context5.prev = 10;\n _iterator2 = (0, _getIterator3.default)((0, _keys2.default)(mySigs));\n\n case 12:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context5.next = 40;\n break;\n }\n\n keyId = _step2.value;\n keyIdParts = keyId.split(':');\n\n if (!(keyIdParts[0] !== 'ed25519')) {\n _context5.next = 18;\n break;\n }\n\n _logger2.default.log(\"Ignoring unknown signature type: \" + keyIdParts[0]);\n return _context5.abrupt('continue', 37);\n\n case 18:\n sigInfo = { deviceId: keyIdParts[1] }; // XXX: is this how we're supposed to get the device ID?\n\n device = this._deviceList.getStoredDevice(this._userId, sigInfo.deviceId);\n\n if (!device) {\n _context5.next = 34;\n break;\n }\n\n sigInfo.device = device;\n _context5.prev = 22;\n _context5.next = 25;\n return (0, _bluebird.resolve)(olmlib.verifySignature(this._olmDevice,\n // verifySignature modifies the object so we need to copy\n // if we verify more than one sig\n (0, _assign2.default)({}, backupInfo.auth_data), this._userId, device.deviceId, device.getFingerprint()));\n\n case 25:\n sigInfo.valid = true;\n _context5.next = 32;\n break;\n\n case 28:\n _context5.prev = 28;\n _context5.t0 = _context5['catch'](22);\n\n _logger2.default.info(\"Bad signature from key ID \" + keyId + \" userID \" + this._userId + \" device ID \" + device.deviceId + \" fingerprint: \" + device.getFingerprint(), backupInfo.auth_data, _context5.t0);\n sigInfo.valid = false;\n\n case 32:\n _context5.next = 36;\n break;\n\n case 34:\n sigInfo.valid = null; // Can't determine validity because we don't have the signing device\n _logger2.default.info(\"Ignoring signature from unknown key \" + keyId);\n\n case 36:\n ret.sigs.push(sigInfo);\n\n case 37:\n _iteratorNormalCompletion2 = true;\n _context5.next = 12;\n break;\n\n case 40:\n _context5.next = 46;\n break;\n\n case 42:\n _context5.prev = 42;\n _context5.t1 = _context5['catch'](10);\n _didIteratorError2 = true;\n _iteratorError2 = _context5.t1;\n\n case 46:\n _context5.prev = 46;\n _context5.prev = 47;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n\n case 49:\n _context5.prev = 49;\n\n if (!_didIteratorError2) {\n _context5.next = 52;\n break;\n }\n\n throw _iteratorError2;\n\n case 52:\n return _context5.finish(49);\n\n case 53:\n return _context5.finish(46);\n\n case 54:\n\n ret.usable = ret.sigs.some(function (s) {\n return s.valid && s.device.isVerified();\n }) || ret.trusted_locally;\n return _context5.abrupt('return', ret);\n\n case 56:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this, [[10, 42, 46, 54], [22, 28], [47,, 49, 53]]);\n }));\n\n return function (_x2) {\n return _ref5.apply(this, arguments);\n };\n}();\n\n/**\n */\nCrypto.prototype.enableLazyLoading = function () {\n this._lazyLoadMembers = true;\n};\n\n/**\n * Tell the crypto module to register for MatrixClient events which it needs to\n * listen for\n *\n * @param {external:EventEmitter} eventEmitter event source where we can register\n * for event notifications\n */\nCrypto.prototype.registerEventHandlers = function (eventEmitter) {\n var crypto = this;\n\n eventEmitter.on(\"RoomMember.membership\", function (event, member, oldMembership) {\n try {\n crypto._onRoomMembership(event, member, oldMembership);\n } catch (e) {\n _logger2.default.error(\"Error handling membership change:\", e);\n }\n });\n\n eventEmitter.on(\"toDeviceEvent\", function (event) {\n crypto._onToDeviceEvent(event);\n });\n};\n\n/** Start background processes related to crypto */\nCrypto.prototype.start = function () {\n this._outgoingRoomKeyRequestManager.start();\n};\n\n/** Stop background processes related to crypto */\nCrypto.prototype.stop = function () {\n this._outgoingRoomKeyRequestManager.stop();\n this._deviceList.stop();\n};\n\n/**\n * @return {string} The version of Olm.\n */\nCrypto.getOlmVersion = function () {\n return OlmDevice.getOlmVersion();\n};\n\n/**\n * Get the Ed25519 key for this device\n *\n * @return {string} base64-encoded ed25519 key.\n */\nCrypto.prototype.getDeviceEd25519Key = function () {\n return this._olmDevice.deviceEd25519Key;\n};\n\n/**\n * Set the global override for whether the client should ever send encrypted\n * messages to unverified devices. This provides the default for rooms which\n * do not specify a value.\n *\n * @param {boolean} value whether to blacklist all unverified devices by default\n */\nCrypto.prototype.setGlobalBlacklistUnverifiedDevices = function (value) {\n this._globalBlacklistUnverifiedDevices = value;\n};\n\n/**\n * @return {boolean} whether to blacklist all unverified devices by default\n */\nCrypto.prototype.getGlobalBlacklistUnverifiedDevices = function () {\n return this._globalBlacklistUnverifiedDevices;\n};\n\n/**\n * Upload the device keys to the homeserver.\n * @return {object} A promise that will resolve when the keys are uploaded.\n */\nCrypto.prototype.uploadDeviceKeys = function () {\n var crypto = this;\n var userId = crypto._userId;\n var deviceId = crypto._deviceId;\n\n var deviceKeys = {\n algorithms: crypto._supportedAlgorithms,\n device_id: deviceId,\n keys: crypto._deviceKeys,\n user_id: userId\n };\n\n return crypto._signObject(deviceKeys).then(function () {\n crypto._baseApis.uploadKeysRequest({\n device_keys: deviceKeys\n }, {\n // for now, we set the device id explicitly, as we may not be using the\n // same one as used in login.\n device_id: deviceId\n });\n });\n};\n\n/**\n * Stores the current one_time_key count which will be handled later (in a call of\n * onSyncCompleted). The count is e.g. coming from a /sync response.\n *\n * @param {Number} currentCount The current count of one_time_keys to be stored\n */\nCrypto.prototype.updateOneTimeKeyCount = function (currentCount) {\n if (isFinite(currentCount)) {\n this._oneTimeKeyCount = currentCount;\n } else {\n throw new TypeError(\"Parameter for updateOneTimeKeyCount has to be a number\");\n }\n};\n\n// check if it's time to upload one-time keys, and do so if so.\nfunction _maybeUploadOneTimeKeys(crypto) {\n // frequency with which to check & upload one-time keys\n var uploadPeriod = 1000 * 60; // one minute\n\n // max number of keys to upload at once\n // Creating keys can be an expensive operation so we limit the\n // number we generate in one go to avoid blocking the application\n // for too long.\n var maxKeysPerCycle = 5;\n\n if (crypto._oneTimeKeyCheckInProgress) {\n return;\n }\n\n var now = Date.now();\n if (crypto._lastOneTimeKeyCheck !== null && now - crypto._lastOneTimeKeyCheck < uploadPeriod) {\n // we've done a key upload recently.\n return;\n }\n\n crypto._lastOneTimeKeyCheck = now;\n\n // We need to keep a pool of one time public keys on the server so that\n // other devices can start conversations with us. But we can only store\n // a finite number of private keys in the olm Account object.\n // To complicate things further then can be a delay between a device\n // claiming a public one time key from the server and it sending us a\n // message. We need to keep the corresponding private key locally until\n // we receive the message.\n // But that message might never arrive leaving us stuck with duff\n // private keys clogging up our local storage.\n // So we need some kind of enginering compromise to balance all of\n // these factors.\n\n // Check how many keys we can store in the Account object.\n var maxOneTimeKeys = crypto._olmDevice.maxNumberOfOneTimeKeys();\n // Try to keep at most half that number on the server. This leaves the\n // rest of the slots free to hold keys that have been claimed from the\n // server but we haven't recevied a message for.\n // If we run out of slots when generating new keys then olm will\n // discard the oldest private keys first. This will eventually clean\n // out stale private keys that won't receive a message.\n var keyLimit = Math.floor(maxOneTimeKeys / 2);\n\n function uploadLoop(keyCount) {\n if (keyLimit <= keyCount) {\n // If we don't need to generate any more keys then we are done.\n return _bluebird2.default.resolve();\n }\n\n var keysThisLoop = Math.min(keyLimit - keyCount, maxKeysPerCycle);\n\n // Ask olm to generate new one time keys, then upload them to synapse.\n return crypto._olmDevice.generateOneTimeKeys(keysThisLoop).then(function () {\n return _uploadOneTimeKeys(crypto);\n }).then(function (res) {\n if (res.one_time_key_counts && res.one_time_key_counts.signed_curve25519) {\n // if the response contains a more up to date value use this\n // for the next loop\n return uploadLoop(res.one_time_key_counts.signed_curve25519);\n } else {\n throw new Error(\"response for uploading keys does not contain \" + \"one_time_key_counts.signed_curve25519\");\n }\n });\n }\n\n crypto._oneTimeKeyCheckInProgress = true;\n _bluebird2.default.resolve().then(function () {\n if (crypto._oneTimeKeyCount !== undefined) {\n // We already have the current one_time_key count from a /sync response.\n // Use this value instead of asking the server for the current key count.\n return _bluebird2.default.resolve(crypto._oneTimeKeyCount);\n }\n // ask the server how many keys we have\n return crypto._baseApis.uploadKeysRequest({}, {\n device_id: crypto._deviceId\n }).then(function (res) {\n return res.one_time_key_counts.signed_curve25519 || 0;\n });\n }).then(function (keyCount) {\n // Start the uploadLoop with the current keyCount. The function checks if\n // we need to upload new keys or not.\n // If there are too many keys on the server then we don't need to\n // create any more keys.\n return uploadLoop(keyCount);\n }).catch(function (e) {\n _logger2.default.error(\"Error uploading one-time keys\", e.stack || e);\n }).finally(function () {\n // reset _oneTimeKeyCount to prevent start uploading based on old data.\n // it will be set again on the next /sync-response\n crypto._oneTimeKeyCount = undefined;\n crypto._oneTimeKeyCheckInProgress = false;\n }).done();\n}Crypto.prototype.downloadKeys = function (userIds, forceDownload) {\n return this._deviceList.downloadKeys(userIds, forceDownload);\n};\n\n/**\n * Get the stored device keys for a user id\n *\n * @param {string} userId the user to list keys for.\n *\n * @return {module:crypto/deviceinfo[]|null} list of devices, or null if we haven't\n * managed to get a list of devices for this user yet.\n */\nCrypto.prototype.getStoredDevicesForUser = function (userId) {\n return this._deviceList.getStoredDevicesForUser(userId);\n};\n\n/**\n * Get the stored keys for a single device\n *\n * @param {string} userId\n * @param {string} deviceId\n *\n * @return {module:crypto/deviceinfo?} device, or undefined\n * if we don't know about this device\n */\nCrypto.prototype.getStoredDevice = function (userId, deviceId) {\n return this._deviceList.getStoredDevice(userId, deviceId);\n};\n\n/**\n * Save the device list, if necessary\n *\n * @param {integer} delay Time in ms before which the save actually happens.\n * By default, the save is delayed for a short period in order to batch\n * multiple writes, but this behaviour can be disabled by passing 0.\n *\n * @return {Promise} true if the data was saved, false if\n * it was not (eg. because no changes were pending). The promise\n * will only resolve once the data is saved, so may take some time\n * to resolve.\n */\nCrypto.prototype.saveDeviceList = function (delay) {\n return this._deviceList.saveIfDirty(delay);\n};\n\n/**\n * Update the blocked/verified state of the given device\n *\n * @param {string} userId owner of the device\n * @param {string} deviceId unique identifier for the device\n *\n * @param {?boolean} verified whether to mark the device as verified. Null to\n * leave unchanged.\n *\n * @param {?boolean} blocked whether to mark the device as blocked. Null to\n * leave unchanged.\n *\n * @param {?boolean} known whether to mark that the user has been made aware of\n * the existence of this device. Null to leave unchanged\n *\n * @return {Promise} updated DeviceInfo\n */\nCrypto.prototype.setDeviceVerification = function () {\n var _ref7 = (0, _bluebird.method)(function (userId, deviceId, verified, blocked, known) {\n var devices = this._deviceList.getRawStoredDevicesForUser(userId);\n if (!devices || !devices[deviceId]) {\n throw new Error(\"Unknown device \" + userId + \":\" + deviceId);\n }\n\n var dev = devices[deviceId];\n var verificationStatus = dev.verified;\n\n if (verified) {\n verificationStatus = DeviceVerification.VERIFIED;\n } else if (verified !== null && verificationStatus == DeviceVerification.VERIFIED) {\n verificationStatus = DeviceVerification.UNVERIFIED;\n }\n\n if (blocked) {\n verificationStatus = DeviceVerification.BLOCKED;\n } else if (blocked !== null && verificationStatus == DeviceVerification.BLOCKED) {\n verificationStatus = DeviceVerification.UNVERIFIED;\n }\n\n var knownStatus = dev.known;\n if (known !== null && known !== undefined) {\n knownStatus = known;\n }\n\n if (dev.verified !== verificationStatus || dev.known !== knownStatus) {\n dev.verified = verificationStatus;\n dev.known = knownStatus;\n this._deviceList.storeDevicesForUser(userId, devices);\n this._deviceList.saveIfDirty();\n }\n return DeviceInfo.fromStorage(dev, deviceId);\n });\n\n return function (_x4, _x5, _x6, _x7, _x8) {\n return _ref7.apply(this, arguments);\n };\n}();\n\nCrypto.prototype.requestVerification = function (userId, methods, devices) {\n var _this = this;\n\n if (!methods) {\n // .keys() returns an iterator, so we need to explicitly turn it into an array\n methods = [].concat((0, _toConsumableArray3.default)(this._verificationMethods.keys()));\n }\n if (!devices) {\n devices = (0, _keys2.default)(this._deviceList.getRawStoredDevicesForUser(userId));\n }\n if (!this._verificationTransactions.has(userId)) {\n this._verificationTransactions.set(userId, new _map2.default());\n }\n\n var transactionId = (0, _randomstring.randomString)(32);\n\n var promise = new _bluebird2.default(function (resolve, reject) {\n _this._verificationTransactions.get(userId).set(transactionId, {\n request: {\n methods: methods,\n devices: devices,\n resolve: resolve,\n reject: reject\n }\n });\n });\n\n var message = {\n transaction_id: transactionId,\n from_device: this._baseApis.deviceId,\n methods: methods,\n timestamp: Date.now()\n };\n var msgMap = {};\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(devices), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var deviceId = _step3.value;\n\n msgMap[deviceId] = message;\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n this._baseApis.sendToDevice(\"m.key.verification.request\", (0, _defineProperty3.default)({}, userId, msgMap));\n\n return promise;\n};\n\nCrypto.prototype.beginKeyVerification = function (method, userId, deviceId, transactionId) {\n if (!this._verificationTransactions.has(userId)) {\n this._verificationTransactions.set(userId, new _map2.default());\n }\n transactionId = transactionId || (0, _randomstring.randomString)(32);\n if (method instanceof Array) {\n if (method.length !== 2 || !this._verificationMethods.has(method[0]) || !this._verificationMethods.has(method[1])) {\n throw (0, _Error.newUnknownMethodError)();\n }\n /*\n return new TwoPartVerification(\n this._verificationMethods[method[0]],\n this._verificationMethods[method[1]],\n userId, deviceId, transactionId,\n );\n */\n } else if (this._verificationMethods.has(method)) {\n var verifier = new (this._verificationMethods.get(method))(this._baseApis, userId, deviceId, transactionId);\n if (!this._verificationTransactions.get(userId).has(transactionId)) {\n this._verificationTransactions.get(userId).set(transactionId, {});\n }\n this._verificationTransactions.get(userId).get(transactionId).verifier = verifier;\n return verifier;\n } else {\n throw (0, _Error.newUnknownMethodError)();\n }\n};\n\n/**\n * Get information on the active olm sessions with a user\n *

\n * Returns a map from device id to an object with keys 'deviceIdKey' (the\n * device's curve25519 identity key) and 'sessions' (an array of objects in the\n * same format as that returned by\n * {@link module:crypto/OlmDevice#getSessionInfoForDevice}).\n *

\n * This method is provided for debugging purposes.\n *\n * @param {string} userId id of user to inspect\n *\n * @return {Promise>}\n */\nCrypto.prototype.getOlmSessionsForUser = function () {\n var _ref8 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(userId) {\n var devices, result, j, device, deviceKey, sessions;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n devices = this.getStoredDevicesForUser(userId) || [];\n result = {};\n j = 0;\n\n case 3:\n if (!(j < devices.length)) {\n _context7.next = 13;\n break;\n }\n\n device = devices[j];\n deviceKey = device.getIdentityKey();\n _context7.next = 8;\n return (0, _bluebird.resolve)(this._olmDevice.getSessionInfoForDevice(deviceKey));\n\n case 8:\n sessions = _context7.sent;\n\n\n result[device.deviceId] = {\n deviceIdKey: deviceKey,\n sessions: sessions\n };\n\n case 10:\n ++j;\n _context7.next = 3;\n break;\n\n case 13:\n return _context7.abrupt('return', result);\n\n case 14:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n return function (_x9) {\n return _ref8.apply(this, arguments);\n };\n}();\n\n/**\n * Get the device which sent an event\n *\n * @param {module:models/event.MatrixEvent} event event to be checked\n *\n * @return {module:crypto/deviceinfo?}\n */\nCrypto.prototype.getEventSenderDeviceInfo = function (event) {\n var senderKey = event.getSenderKey();\n var algorithm = event.getWireContent().algorithm;\n\n if (!senderKey || !algorithm) {\n return null;\n }\n\n var forwardingChain = event.getForwardingCurve25519KeyChain();\n if (forwardingChain.length > 0) {\n // we got this event from somewhere else\n // TODO: check if we can trust the forwarders.\n return null;\n }\n\n // senderKey is the Curve25519 identity key of the device which the event\n // was sent from. In the case of Megolm, it's actually the Curve25519\n // identity key of the device which set up the Megolm session.\n\n var device = this._deviceList.getDeviceByIdentityKey(algorithm, senderKey);\n\n if (device === null) {\n // we haven't downloaded the details of this device yet.\n return null;\n }\n\n // so far so good, but now we need to check that the sender of this event\n // hadn't advertised someone else's Curve25519 key as their own. We do that\n // by checking the Ed25519 claimed by the event (or, in the case of megolm,\n // the event which set up the megolm session), to check that it matches the\n // fingerprint of the purported sending device.\n //\n // (see https://github.com/vector-im/vector-web/issues/2215)\n\n var claimedKey = event.getClaimedEd25519Key();\n if (!claimedKey) {\n _logger2.default.warn(\"Event \" + event.getId() + \" claims no ed25519 key: \" + \"cannot verify sending device\");\n return null;\n }\n\n if (claimedKey !== device.getFingerprint()) {\n _logger2.default.warn(\"Event \" + event.getId() + \" claims ed25519 key \" + claimedKey + \"but sender device has key \" + device.getFingerprint());\n return null;\n }\n\n return device;\n};\n\n/**\n * Forces the current outbound group session to be discarded such\n * that another one will be created next time an event is sent.\n *\n * @param {string} roomId The ID of the room to discard the session for\n *\n * This should not normally be necessary.\n */\nCrypto.prototype.forceDiscardSession = function (roomId) {\n var alg = this._roomEncryptors[roomId];\n if (alg === undefined) throw new Error(\"Room not encrypted\");\n if (alg.forceDiscardSession === undefined) {\n throw new Error(\"Room encryption algorithm doesn't support session discarding\");\n }\n alg.forceDiscardSession();\n};\n\n/**\n * Configure a room to use encryption (ie, save a flag in the cryptoStore).\n *\n * @param {string} roomId The room ID to enable encryption in.\n *\n * @param {object} config The encryption config for the room.\n *\n * @param {boolean=} inhibitDeviceQuery true to suppress device list query for\n * users in the room (for now). In case lazy loading is enabled,\n * the device query is always inhibited as the members are not tracked.\n */\nCrypto.prototype.setRoomEncryption = function () {\n var _ref9 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(roomId, config, inhibitDeviceQuery) {\n var existingConfig, existingAlg, storeConfigPromise, AlgClass, alg;\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n if (config.algorithm) {\n _context8.next = 3;\n break;\n }\n\n console.log(\"Ignoring setRoomEncryption with no algorithm\");\n return _context8.abrupt('return');\n\n case 3:\n\n // if state is being replayed from storage, we might already have a configuration\n // for this room as they are persisted as well.\n // We just need to make sure the algorithm is initialized in this case.\n // However, if the new config is different,\n // we should bail out as room encryption can't be changed once set.\n existingConfig = this._roomList.getRoomEncryption(roomId);\n\n if (!existingConfig) {\n _context8.next = 8;\n break;\n }\n\n if (!((0, _stringify2.default)(existingConfig) != (0, _stringify2.default)(config))) {\n _context8.next = 8;\n break;\n }\n\n _logger2.default.error(\"Ignoring m.room.encryption event which requests \" + \"a change of config in \" + roomId);\n return _context8.abrupt('return');\n\n case 8:\n // if we already have encryption in this room, we should ignore this event,\n // as it would reset the encryption algorithm.\n // This is at least expected to be called twice, as sync calls onCryptoEvent\n // for both the timeline and state sections in the /sync response,\n // the encryption event would appear in both.\n // If it's called more than twice though,\n // it signals a bug on client or server.\n existingAlg = this._roomEncryptors[roomId];\n\n if (!existingAlg) {\n _context8.next = 11;\n break;\n }\n\n return _context8.abrupt('return');\n\n case 11:\n\n // _roomList.getRoomEncryption will not race with _roomList.setRoomEncryption\n // because it first stores in memory. We should await the promise only\n // after all the in-memory state (_roomEncryptors and _roomList) has been updated\n // to avoid races when calling this method multiple times. Hence keep a hold of the promise.\n storeConfigPromise = null;\n\n if (!existingConfig) {\n storeConfigPromise = this._roomList.setRoomEncryption(roomId, config);\n }\n\n AlgClass = algorithms.ENCRYPTION_CLASSES[config.algorithm];\n\n if (AlgClass) {\n _context8.next = 16;\n break;\n }\n\n throw new Error(\"Unable to encrypt with \" + config.algorithm);\n\n case 16:\n alg = new AlgClass({\n userId: this._userId,\n deviceId: this._deviceId,\n crypto: this,\n olmDevice: this._olmDevice,\n baseApis: this._baseApis,\n roomId: roomId,\n config: config\n });\n\n this._roomEncryptors[roomId] = alg;\n\n if (!storeConfigPromise) {\n _context8.next = 21;\n break;\n }\n\n _context8.next = 21;\n return (0, _bluebird.resolve)(storeConfigPromise);\n\n case 21:\n if (this._lazyLoadMembers) {\n _context8.next = 28;\n break;\n }\n\n _logger2.default.log(\"Enabling encryption in \" + roomId + \"; \" + \"starting to track device lists for all users therein\");\n\n _context8.next = 25;\n return (0, _bluebird.resolve)(this.trackRoomDevices(roomId));\n\n case 25:\n // TODO: this flag is only not used from MatrixClient::setRoomEncryption\n // which is never used (inside riot at least)\n // but didn't want to remove it as it technically would\n // be a breaking change.\n if (!this.inhibitDeviceQuery) {\n this._deviceList.refreshOutdatedDeviceLists();\n }\n _context8.next = 29;\n break;\n\n case 28:\n _logger2.default.log(\"Enabling encryption in \" + roomId);\n\n case 29:\n case 'end':\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n return function (_x10, _x11, _x12) {\n return _ref9.apply(this, arguments);\n };\n}();\n\n/**\n * Make sure we are tracking the device lists for all users in this room.\n *\n * @param {string} roomId The room ID to start tracking devices in.\n * @returns {Promise} when all devices for the room have been fetched and marked to track\n */\nCrypto.prototype.trackRoomDevices = function (roomId) {\n var _this2 = this;\n\n var trackMembers = function () {\n var _ref10 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee9() {\n var room, members;\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n if (_this2._roomEncryptors[roomId]) {\n _context9.next = 2;\n break;\n }\n\n return _context9.abrupt('return');\n\n case 2:\n room = _this2._clientStore.getRoom(roomId);\n\n if (room) {\n _context9.next = 5;\n break;\n }\n\n throw new Error('Unable to start tracking devices in unknown room ' + roomId);\n\n case 5:\n _logger2.default.log('Starting to track devices for room ' + roomId + ' ...');\n _context9.next = 8;\n return (0, _bluebird.resolve)(room.getEncryptionTargetMembers());\n\n case 8:\n members = _context9.sent;\n\n members.forEach(function (m) {\n _this2._deviceList.startTrackingDeviceList(m.userId);\n });\n\n case 10:\n case 'end':\n return _context9.stop();\n }\n }\n }, _callee9, _this2);\n }));\n\n return function trackMembers() {\n return _ref10.apply(this, arguments);\n };\n }();\n\n var promise = this._roomDeviceTrackingState[roomId];\n if (!promise) {\n promise = trackMembers();\n this._roomDeviceTrackingState[roomId] = promise;\n }\n return promise;\n};\n\n/**\n * @typedef {Object} module:crypto~OlmSessionResult\n * @property {module:crypto/deviceinfo} device device info\n * @property {string?} sessionId base64 olm session id; null if no session\n * could be established\n */\n\n/**\n * Try to make sure we have established olm sessions for all known devices for\n * the given users.\n *\n * @param {string[]} users list of user ids\n *\n * @return {module:client.Promise} resolves once the sessions are complete, to\n * an Object mapping from userId to deviceId to\n * {@link module:crypto~OlmSessionResult}\n */\nCrypto.prototype.ensureOlmSessionsForUsers = function (users) {\n var devicesByUser = {};\n\n for (var i = 0; i < users.length; ++i) {\n var userId = users[i];\n devicesByUser[userId] = [];\n\n var devices = this.getStoredDevicesForUser(userId) || [];\n for (var j = 0; j < devices.length; ++j) {\n var deviceInfo = devices[j];\n\n var key = deviceInfo.getIdentityKey();\n if (key == this._olmDevice.deviceCurve25519Key) {\n // don't bother setting up session to ourself\n continue;\n }\n if (deviceInfo.verified == DeviceVerification.BLOCKED) {\n // don't bother setting up sessions with blocked users\n continue;\n }\n\n devicesByUser[userId].push(deviceInfo);\n }\n }\n\n return olmlib.ensureOlmSessionsForDevices(this._olmDevice, this._baseApis, devicesByUser);\n};\n\n/**\n * Get a list containing all of the room keys\n *\n * @return {module:crypto/OlmDevice.MegolmSessionData[]} a list of session export objects\n */\nCrypto.prototype.exportRoomKeys = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee10() {\n var _this3 = this;\n\n var exportedSessions;\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n exportedSessions = [];\n _context10.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_INBOUND_GROUP_SESSIONS], function (txn) {\n _this3._cryptoStore.getAllEndToEndInboundGroupSessions(txn, function (s) {\n if (s === null) return;\n\n var sess = _this3._olmDevice.exportInboundGroupSession(s.senderKey, s.sessionId, s.sessionData);\n delete sess.first_known_index;\n sess.algorithm = olmlib.MEGOLM_ALGORITHM;\n exportedSessions.push(sess);\n });\n }));\n\n case 3:\n return _context10.abrupt('return', exportedSessions);\n\n case 4:\n case 'end':\n return _context10.stop();\n }\n }\n }, _callee10, this);\n}));\n\n/**\n * Import a list of room keys previously exported by exportRoomKeys\n *\n * @param {Object[]} keys a list of session export objects\n * @return {module:client.Promise} a promise which resolves once the keys have been imported\n */\nCrypto.prototype.importRoomKeys = function (keys) {\n var _this4 = this;\n\n return _bluebird2.default.map(keys, function (key) {\n if (!key.room_id || !key.algorithm) {\n _logger2.default.warn(\"ignoring room key entry with missing fields\", key);\n return null;\n }\n\n var alg = _this4._getRoomDecryptor(key.room_id, key.algorithm);\n return alg.importRoomKey(key);\n });\n};\n\n/**\n * Schedules sending all keys waiting to be sent to the backup, if not already\n * scheduled. Retries if necessary.\n *\n * @param {number} maxDelay Maximum delay to wait in ms. 0 means no delay.\n */\nCrypto.prototype.scheduleKeyBackupSend = function () {\n var _ref12 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee11() {\n var maxDelay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10000;\n var delay, numFailures, numBackedUp;\n return _regenerator2.default.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n if (!this._sendingBackups) {\n _context11.next = 2;\n break;\n }\n\n return _context11.abrupt('return');\n\n case 2:\n\n this._sendingBackups = true;\n\n _context11.prev = 3;\n\n // wait between 0 and `maxDelay` seconds, to avoid backup\n // requests from different clients hitting the server all at\n // the same time when a new key is sent\n delay = Math.random() * maxDelay;\n _context11.next = 7;\n return (0, _bluebird.resolve)(_bluebird2.default.delay(delay));\n\n case 7:\n numFailures = 0; // number of consecutive failures\n\n case 8:\n if (!1) {\n _context11.next = 35;\n break;\n }\n\n if (this.backupKey) {\n _context11.next = 11;\n break;\n }\n\n return _context11.abrupt('return');\n\n case 11:\n _context11.prev = 11;\n _context11.next = 14;\n return (0, _bluebird.resolve)(this._backupPendingKeys(KEY_BACKUP_KEYS_PER_REQUEST));\n\n case 14:\n numBackedUp = _context11.sent;\n\n if (!(numBackedUp === 0)) {\n _context11.next = 17;\n break;\n }\n\n return _context11.abrupt('return');\n\n case 17:\n numFailures = 0;\n _context11.next = 30;\n break;\n\n case 20:\n _context11.prev = 20;\n _context11.t0 = _context11['catch'](11);\n\n numFailures++;\n _logger2.default.log(\"Key backup request failed\", _context11.t0);\n\n if (!_context11.t0.data) {\n _context11.next = 30;\n break;\n }\n\n if (!(_context11.t0.data.errcode == 'M_NOT_FOUND' || _context11.t0.data.errcode == 'M_WRONG_ROOM_KEYS_VERSION')) {\n _context11.next = 30;\n break;\n }\n\n _context11.next = 28;\n return (0, _bluebird.resolve)(this.checkKeyBackup());\n\n case 28:\n // Backup version has changed or this backup version\n // has been deleted\n this.emit(\"crypto.keyBackupFailed\", _context11.t0.data.errcode);\n throw _context11.t0;\n\n case 30:\n if (!numFailures) {\n _context11.next = 33;\n break;\n }\n\n _context11.next = 33;\n return (0, _bluebird.resolve)(_bluebird2.default.delay(1000 * Math.pow(2, Math.min(numFailures - 1, 4))));\n\n case 33:\n _context11.next = 8;\n break;\n\n case 35:\n _context11.prev = 35;\n\n this._sendingBackups = false;\n return _context11.finish(35);\n\n case 38:\n case 'end':\n return _context11.stop();\n }\n }\n }, _callee11, this, [[3,, 35, 38], [11, 20]]);\n }));\n\n return function (_x13) {\n return _ref12.apply(this, arguments);\n };\n}();\n\n/**\n * Take some e2e keys waiting to be backed up and send them\n * to the backup.\n *\n * @param {integer} limit Maximum number of keys to back up\n * @returns {integer} Number of sessions backed up\n */\nCrypto.prototype._backupPendingKeys = function () {\n var _ref13 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee12(limit) {\n var sessions, remaining, data, _iteratorNormalCompletion4, _didIteratorError4, _iteratorError4, _iterator4, _step4, session, roomId, sessionData, firstKnownIndex, encrypted, forwardedCount, device;\n\n return _regenerator2.default.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n _context12.next = 2;\n return (0, _bluebird.resolve)(this._cryptoStore.getSessionsNeedingBackup(limit));\n\n case 2:\n sessions = _context12.sent;\n\n if (sessions.length) {\n _context12.next = 5;\n break;\n }\n\n return _context12.abrupt('return', 0);\n\n case 5:\n _context12.next = 7;\n return (0, _bluebird.resolve)(this._cryptoStore.countSessionsNeedingBackup());\n\n case 7:\n remaining = _context12.sent;\n\n this.emit(\"crypto.keyBackupSessionsRemaining\", remaining);\n\n data = {};\n _iteratorNormalCompletion4 = true;\n _didIteratorError4 = false;\n _iteratorError4 = undefined;\n _context12.prev = 13;\n _iterator4 = (0, _getIterator3.default)(sessions);\n\n case 15:\n if (_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done) {\n _context12.next = 34;\n break;\n }\n\n session = _step4.value;\n roomId = session.sessionData.room_id;\n\n if (data[roomId] === undefined) {\n data[roomId] = { sessions: {} };\n }\n\n _context12.next = 21;\n return (0, _bluebird.resolve)(this._olmDevice.exportInboundGroupSession(session.senderKey, session.sessionId, session.sessionData));\n\n case 21:\n sessionData = _context12.sent;\n\n sessionData.algorithm = olmlib.MEGOLM_ALGORITHM;\n delete sessionData.session_id;\n delete sessionData.room_id;\n firstKnownIndex = sessionData.first_known_index;\n\n delete sessionData.first_known_index;\n encrypted = this.backupKey.encrypt((0, _stringify2.default)(sessionData));\n forwardedCount = (sessionData.forwarding_curve25519_key_chain || []).length;\n device = this._deviceList.getDeviceByIdentityKey(olmlib.MEGOLM_ALGORITHM, session.senderKey);\n\n\n data[roomId]['sessions'][session.sessionId] = {\n first_message_index: firstKnownIndex,\n forwarded_count: forwardedCount,\n is_verified: !!(device && device.isVerified()),\n session_data: encrypted\n };\n\n case 31:\n _iteratorNormalCompletion4 = true;\n _context12.next = 15;\n break;\n\n case 34:\n _context12.next = 40;\n break;\n\n case 36:\n _context12.prev = 36;\n _context12.t0 = _context12['catch'](13);\n _didIteratorError4 = true;\n _iteratorError4 = _context12.t0;\n\n case 40:\n _context12.prev = 40;\n _context12.prev = 41;\n\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n\n case 43:\n _context12.prev = 43;\n\n if (!_didIteratorError4) {\n _context12.next = 46;\n break;\n }\n\n throw _iteratorError4;\n\n case 46:\n return _context12.finish(43);\n\n case 47:\n return _context12.finish(40);\n\n case 48:\n _context12.next = 50;\n return (0, _bluebird.resolve)(this._baseApis.sendKeyBackup(undefined, undefined, this.backupInfo.version, { rooms: data }));\n\n case 50:\n _context12.next = 52;\n return (0, _bluebird.resolve)(this._cryptoStore.unmarkSessionsNeedingBackup(sessions));\n\n case 52:\n _context12.next = 54;\n return (0, _bluebird.resolve)(this._cryptoStore.countSessionsNeedingBackup());\n\n case 54:\n remaining = _context12.sent;\n\n this.emit(\"crypto.keyBackupSessionsRemaining\", remaining);\n\n return _context12.abrupt('return', sessions.length);\n\n case 57:\n case 'end':\n return _context12.stop();\n }\n }\n }, _callee12, this, [[13, 36, 40, 48], [41,, 43, 47]]);\n }));\n\n return function (_x15) {\n return _ref13.apply(this, arguments);\n };\n}();\n\nCrypto.prototype.backupGroupSession = function () {\n var _ref14 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee13(roomId, senderKey, forwardingCurve25519KeyChain, sessionId, sessionKey, keysClaimed, exportFormat) {\n return _regenerator2.default.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n if (this.backupInfo) {\n _context13.next = 2;\n break;\n }\n\n throw new Error(\"Key backups are not enabled\");\n\n case 2:\n _context13.next = 4;\n return (0, _bluebird.resolve)(this._cryptoStore.markSessionsNeedingBackup([{\n senderKey: senderKey,\n sessionId: sessionId\n }]));\n\n case 4:\n\n // don't wait for this to complete: it will delay so\n // happens in the background\n this.scheduleKeyBackupSend();\n\n case 5:\n case 'end':\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n return function (_x16, _x17, _x18, _x19, _x20, _x21, _x22) {\n return _ref14.apply(this, arguments);\n };\n}();\n\n/**\n * Marks all group sessions as needing to be backed up and schedules them to\n * upload in the background as soon as possible.\n */\nCrypto.prototype.scheduleAllGroupSessionsForBackup = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee14() {\n return _regenerator2.default.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n _context14.next = 2;\n return (0, _bluebird.resolve)(this.flagAllGroupSessionsForBackup());\n\n case 2:\n\n // Schedule keys to upload in the background as soon as possible.\n this.scheduleKeyBackupSend(0 /* maxDelay */);\n\n case 3:\n case 'end':\n return _context14.stop();\n }\n }\n }, _callee14, this);\n}));\n\n/**\n * Marks all group sessions as needing to be backed up without scheduling\n * them to upload in the background.\n * @returns {Promise} Resolves to the number of sessions requiring a backup.\n */\nCrypto.prototype.flagAllGroupSessionsForBackup = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee15() {\n var _this5 = this;\n\n var remaining;\n return _regenerator2.default.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n _context15.next = 2;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_INBOUND_GROUP_SESSIONS, _indexeddbCryptoStore2.default.STORE_BACKUP], function (txn) {\n _this5._cryptoStore.getAllEndToEndInboundGroupSessions(txn, function (session) {\n if (session !== null) {\n _this5._cryptoStore.markSessionsNeedingBackup([session], txn);\n }\n });\n }));\n\n case 2:\n _context15.next = 4;\n return (0, _bluebird.resolve)(this._cryptoStore.countSessionsNeedingBackup());\n\n case 4:\n remaining = _context15.sent;\n\n this.emit(\"crypto.keyBackupSessionsRemaining\", remaining);\n return _context15.abrupt('return', remaining);\n\n case 7:\n case 'end':\n return _context15.stop();\n }\n }\n }, _callee15, this);\n}));\n\n/* eslint-disable valid-jsdoc */ //https://github.com/eslint/eslint/issues/7307\n/**\n * Encrypt an event according to the configuration of the room.\n *\n * @param {module:models/event.MatrixEvent} event event to be sent\n *\n * @param {module:models/room} room destination room.\n *\n * @return {module:client.Promise?} Promise which resolves when the event has been\n * encrypted, or null if nothing was needed\n */\n/* eslint-enable valid-jsdoc */\nCrypto.prototype.encryptEvent = function () {\n var _ref17 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee16(event, room) {\n var roomId, alg, content, mRelatesTo, encryptedContent;\n return _regenerator2.default.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n if (room) {\n _context16.next = 2;\n break;\n }\n\n throw new Error(\"Cannot send encrypted messages in unknown rooms\");\n\n case 2:\n roomId = event.getRoomId();\n alg = this._roomEncryptors[roomId];\n\n if (alg) {\n _context16.next = 6;\n break;\n }\n\n throw new Error(\"Room was previously configured to use encryption, but is \" + \"no longer. Perhaps the homeserver is hiding the \" + \"configuration event.\");\n\n case 6:\n\n if (!this._roomDeviceTrackingState[roomId]) {\n this.trackRoomDevices(roomId);\n }\n // wait for all the room devices to be loaded\n _context16.next = 9;\n return (0, _bluebird.resolve)(this._roomDeviceTrackingState[roomId]);\n\n case 9:\n content = event.getContent();\n // If event has an m.relates_to then we need\n // to put this on the wrapping event instead\n\n mRelatesTo = content['m.relates_to'];\n\n if (mRelatesTo) {\n // Clone content here so we don't remove `m.relates_to` from the local-echo\n content = (0, _assign2.default)({}, content);\n delete content['m.relates_to'];\n }\n\n _context16.next = 14;\n return (0, _bluebird.resolve)(alg.encryptMessage(room, event.getType(), content));\n\n case 14:\n encryptedContent = _context16.sent;\n\n\n if (mRelatesTo) {\n encryptedContent['m.relates_to'] = mRelatesTo;\n }\n\n event.makeEncrypted(\"m.room.encrypted\", encryptedContent, this._olmDevice.deviceCurve25519Key, this._olmDevice.deviceEd25519Key);\n\n case 17:\n case 'end':\n return _context16.stop();\n }\n }\n }, _callee16, this);\n }));\n\n return function (_x23, _x24) {\n return _ref17.apply(this, arguments);\n };\n}();\n\n/**\n * Decrypt a received event\n *\n * @param {MatrixEvent} event\n *\n * @return {Promise} resolves once we have\n * finished decrypting. Rejects with an `algorithms.DecryptionError` if there\n * is a problem decrypting the event.\n */\nCrypto.prototype.decryptEvent = function (event) {\n if (event.isRedacted()) {\n return _bluebird2.default.resolve({\n clearEvent: {\n room_id: event.getRoomId(),\n type: \"m.room.message\",\n content: {}\n }\n });\n }\n var content = event.getWireContent();\n var alg = this._getRoomDecryptor(event.getRoomId(), content.algorithm);\n return alg.decryptEvent(event);\n};\n\n/**\n * Handle the notification from /sync or /keys/changes that device lists have\n * been changed.\n *\n * @param {Object} syncData Object containing sync tokens associated with this sync\n * @param {Object} syncDeviceLists device_lists field from /sync, or response from\n * /keys/changes\n */\nCrypto.prototype.handleDeviceListChanges = function () {\n var _ref18 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee17(syncData, syncDeviceLists) {\n return _regenerator2.default.wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n if (syncData.oldSyncToken) {\n _context17.next = 2;\n break;\n }\n\n return _context17.abrupt('return');\n\n case 2:\n _context17.next = 4;\n return (0, _bluebird.resolve)(this._evalDeviceListChanges(syncDeviceLists));\n\n case 4:\n case 'end':\n return _context17.stop();\n }\n }\n }, _callee17, this);\n }));\n\n return function (_x25, _x26) {\n return _ref18.apply(this, arguments);\n };\n}();\n\n/**\n * Send a request for some room keys, if we have not already done so\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * @param {Array<{userId: string, deviceId: string}>} recipients\n * @param {boolean} resend whether to resend the key request if there is\n * already one\n *\n * @return {Promise} a promise that resolves when the key request is queued\n */\nCrypto.prototype.requestRoomKey = function (requestBody, recipients) {\n var resend = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n return this._outgoingRoomKeyRequestManager.sendRoomKeyRequest(requestBody, recipients, resend).catch(function (e) {\n // this normally means we couldn't talk to the store\n _logger2.default.error('Error requesting key for event', e);\n }).done();\n};\n\n/**\n * Cancel any earlier room key request\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * parameters to match for cancellation\n */\nCrypto.prototype.cancelRoomKeyRequest = function (requestBody) {\n this._outgoingRoomKeyRequestManager.cancelRoomKeyRequest(requestBody).catch(function (e) {\n _logger2.default.warn(\"Error clearing pending room key requests\", e);\n }).done();\n};\n\n/**\n * handle an m.room.encryption event\n *\n * @param {module:models/event.MatrixEvent} event encryption event\n */\nCrypto.prototype.onCryptoEvent = function () {\n var _ref19 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee18(event) {\n var roomId, content;\n return _regenerator2.default.wrap(function _callee18$(_context18) {\n while (1) {\n switch (_context18.prev = _context18.next) {\n case 0:\n roomId = event.getRoomId();\n content = event.getContent();\n _context18.prev = 2;\n _context18.next = 5;\n return (0, _bluebird.resolve)(this.setRoomEncryption(roomId, content, true));\n\n case 5:\n _context18.next = 10;\n break;\n\n case 7:\n _context18.prev = 7;\n _context18.t0 = _context18['catch'](2);\n\n _logger2.default.error(\"Error configuring encryption in room \" + roomId + \":\", _context18.t0);\n\n case 10:\n case 'end':\n return _context18.stop();\n }\n }\n }, _callee18, this, [[2, 7]]);\n }));\n\n return function (_x28) {\n return _ref19.apply(this, arguments);\n };\n}();\n\n/**\n * Called before the result of a sync is procesed\n *\n * @param {Object} syncData the data from the 'MatrixClient.sync' event\n */\nCrypto.prototype.onSyncWillProcess = function () {\n var _ref20 = (0, _bluebird.method)(function (syncData) {\n if (!syncData.oldSyncToken) {\n // If there is no old sync token, we start all our tracking from\n // scratch, so mark everything as untracked. onCryptoEvent will\n // be called for all e2e rooms during the processing of the sync,\n // at which point we'll start tracking all the users of that room.\n _logger2.default.log(\"Initial sync performed - resetting device tracking state\");\n this._deviceList.stopTrackingAllDeviceLists();\n this._roomDeviceTrackingState = {};\n }\n });\n\n return function (_x29) {\n return _ref20.apply(this, arguments);\n };\n}();\n\n/**\n * handle the completion of a /sync\n *\n * This is called after the processing of each successful /sync response.\n * It is an opportunity to do a batch process on the information received.\n *\n * @param {Object} syncData the data from the 'MatrixClient.sync' event\n */\nCrypto.prototype.onSyncCompleted = function () {\n var _ref21 = (0, _bluebird.method)(function (syncData) {\n var nextSyncToken = syncData.nextSyncToken;\n\n this._deviceList.setSyncToken(syncData.nextSyncToken);\n this._deviceList.saveIfDirty();\n\n // catch up on any new devices we got told about during the sync.\n this._deviceList.lastKnownSyncToken = nextSyncToken;\n\n // we always track our own device list (for key backups etc)\n this._deviceList.startTrackingDeviceList(this._userId);\n\n this._deviceList.refreshOutdatedDeviceLists();\n\n // we don't start uploading one-time keys until we've caught up with\n // to-device messages, to help us avoid throwing away one-time-keys that we\n // are about to receive messages for\n // (https://github.com/vector-im/riot-web/issues/2782).\n if (!syncData.catchingUp) {\n _maybeUploadOneTimeKeys(this);\n this._processReceivedRoomKeyRequests();\n }\n });\n\n return function (_x30) {\n return _ref21.apply(this, arguments);\n };\n}();\n\n/**\n * Trigger the appropriate invalidations and removes for a given\n * device list\n *\n * @param {Object} deviceLists device_lists field from /sync, or response from\n * /keys/changes\n */\nCrypto.prototype._evalDeviceListChanges = function () {\n var _ref22 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee19(deviceLists) {\n var _this6 = this;\n\n var e2eUserIds;\n return _regenerator2.default.wrap(function _callee19$(_context19) {\n while (1) {\n switch (_context19.prev = _context19.next) {\n case 0:\n if (deviceLists.changed && Array.isArray(deviceLists.changed)) {\n deviceLists.changed.forEach(function (u) {\n _this6._deviceList.invalidateUserDeviceList(u);\n });\n }\n\n if (!(deviceLists.left && Array.isArray(deviceLists.left) && deviceLists.left.length)) {\n _context19.next = 8;\n break;\n }\n\n _context19.t0 = _set2.default;\n _context19.next = 5;\n return (0, _bluebird.resolve)(this._getTrackedE2eUsers());\n\n case 5:\n _context19.t1 = _context19.sent;\n e2eUserIds = new _context19.t0(_context19.t1);\n\n\n deviceLists.left.forEach(function (u) {\n if (!e2eUserIds.has(u)) {\n _this6._deviceList.stopTrackingDeviceList(u);\n }\n });\n\n case 8:\n case 'end':\n return _context19.stop();\n }\n }\n }, _callee19, this);\n }));\n\n return function (_x31) {\n return _ref22.apply(this, arguments);\n };\n}();\n\n/**\n * Get a list of all the IDs of users we share an e2e room with\n * for which we are tracking devices already\n *\n * @returns {string[]} List of user IDs\n */\nCrypto.prototype._getTrackedE2eUsers = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee20() {\n var e2eUserIds, _iteratorNormalCompletion5, _didIteratorError5, _iteratorError5, _iterator5, _step5, room, members, _iteratorNormalCompletion6, _didIteratorError6, _iteratorError6, _iterator6, _step6, member;\n\n return _regenerator2.default.wrap(function _callee20$(_context20) {\n while (1) {\n switch (_context20.prev = _context20.next) {\n case 0:\n e2eUserIds = [];\n _iteratorNormalCompletion5 = true;\n _didIteratorError5 = false;\n _iteratorError5 = undefined;\n _context20.prev = 4;\n _iterator5 = (0, _getIterator3.default)(this._getTrackedE2eRooms());\n\n case 6:\n if (_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done) {\n _context20.next = 33;\n break;\n }\n\n room = _step5.value;\n _context20.next = 10;\n return (0, _bluebird.resolve)(room.getEncryptionTargetMembers());\n\n case 10:\n members = _context20.sent;\n _iteratorNormalCompletion6 = true;\n _didIteratorError6 = false;\n _iteratorError6 = undefined;\n _context20.prev = 14;\n\n for (_iterator6 = (0, _getIterator3.default)(members); !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n member = _step6.value;\n\n e2eUserIds.push(member.userId);\n }\n _context20.next = 22;\n break;\n\n case 18:\n _context20.prev = 18;\n _context20.t0 = _context20['catch'](14);\n _didIteratorError6 = true;\n _iteratorError6 = _context20.t0;\n\n case 22:\n _context20.prev = 22;\n _context20.prev = 23;\n\n if (!_iteratorNormalCompletion6 && _iterator6.return) {\n _iterator6.return();\n }\n\n case 25:\n _context20.prev = 25;\n\n if (!_didIteratorError6) {\n _context20.next = 28;\n break;\n }\n\n throw _iteratorError6;\n\n case 28:\n return _context20.finish(25);\n\n case 29:\n return _context20.finish(22);\n\n case 30:\n _iteratorNormalCompletion5 = true;\n _context20.next = 6;\n break;\n\n case 33:\n _context20.next = 39;\n break;\n\n case 35:\n _context20.prev = 35;\n _context20.t1 = _context20['catch'](4);\n _didIteratorError5 = true;\n _iteratorError5 = _context20.t1;\n\n case 39:\n _context20.prev = 39;\n _context20.prev = 40;\n\n if (!_iteratorNormalCompletion5 && _iterator5.return) {\n _iterator5.return();\n }\n\n case 42:\n _context20.prev = 42;\n\n if (!_didIteratorError5) {\n _context20.next = 45;\n break;\n }\n\n throw _iteratorError5;\n\n case 45:\n return _context20.finish(42);\n\n case 46:\n return _context20.finish(39);\n\n case 47:\n return _context20.abrupt('return', e2eUserIds);\n\n case 48:\n case 'end':\n return _context20.stop();\n }\n }\n }, _callee20, this, [[4, 35, 39, 47], [14, 18, 22, 30], [23,, 25, 29], [40,, 42, 46]]);\n}));\n\n/**\n * Get a list of the e2e-enabled rooms we are members of,\n * and for which we are already tracking the devices\n *\n * @returns {module:models.Room[]}\n */\nCrypto.prototype._getTrackedE2eRooms = function () {\n var _this7 = this;\n\n return this._clientStore.getRooms().filter(function (room) {\n // check for rooms with encryption enabled\n var alg = _this7._roomEncryptors[room.roomId];\n if (!alg) {\n return false;\n }\n if (!_this7._roomDeviceTrackingState[room.roomId]) {\n return false;\n }\n\n // ignore any rooms which we have left\n var myMembership = room.getMyMembership();\n return myMembership === \"join\" || myMembership === \"invite\";\n });\n};\n\nCrypto.prototype._onToDeviceEvent = function (event) {\n var _this8 = this;\n\n try {\n if (event.getType() == \"m.room_key\" || event.getType() == \"m.forwarded_room_key\") {\n this._onRoomKeyEvent(event);\n } else if (event.getType() == \"m.room_key_request\") {\n this._onRoomKeyRequestEvent(event);\n } else if (event.getType() === \"m.key.verification.request\") {\n this._onKeyVerificationRequest(event);\n } else if (event.getType() === \"m.key.verification.start\") {\n this._onKeyVerificationStart(event);\n } else if (event.getContent().transaction_id) {\n this._onKeyVerificationMessage(event);\n } else if (event.getContent().msgtype === \"m.bad.encrypted\") {\n this._onToDeviceBadEncrypted(event);\n } else if (event.isBeingDecrypted()) {\n // once the event has been decrypted, try again\n event.once('Event.decrypted', function (ev) {\n _this8._onToDeviceEvent(ev);\n });\n }\n } catch (e) {\n _logger2.default.error(\"Error handling toDeviceEvent:\", e);\n }\n};\n\n/**\n * Handle a key event\n *\n * @private\n * @param {module:models/event.MatrixEvent} event key event\n */\nCrypto.prototype._onRoomKeyEvent = function (event) {\n var content = event.getContent();\n\n if (!content.room_id || !content.algorithm) {\n _logger2.default.error(\"key event is missing fields\");\n return;\n }\n\n if (!this._checkedForBackup) {\n // don't bother awaiting on this - the important thing is that we retry if we\n // haven't managed to check before\n this._checkAndStartKeyBackup();\n }\n\n var alg = this._getRoomDecryptor(content.room_id, content.algorithm);\n alg.onRoomKeyEvent(event);\n};\n\n/**\n * Handle a key verification request event.\n *\n * @private\n * @param {module:models/event.MatrixEvent} event verification request event\n */\nCrypto.prototype._onKeyVerificationRequest = function (event) {\n var _this9 = this;\n\n if (event.isCancelled()) {\n _logger2.default.warn(\"Ignoring flagged verification request from \" + event.getSender());\n return;\n }\n\n var content = event.getContent();\n if (!(\"from_device\" in content) || typeof content.from_device !== \"string\" || !(\"transaction_id\" in content) || typeof content.from_device !== \"string\" || !(\"methods\" in content) || !(content.methods instanceof Array) || !(\"timestamp\" in content) || typeof content.timestamp !== \"number\") {\n _logger2.default.warn(\"received invalid verification request from \" + event.getSender());\n // ignore event if malformed\n return;\n }\n\n var now = Date.now();\n if (now < content.timestamp - 5 * 60 * 1000 || now > content.timestamp + 10 * 60 * 1000) {\n // ignore if event is too far in the past or too far in the future\n _logger2.default.log(\"received verification that is too old or from the future\");\n return;\n }\n\n var sender = event.getSender();\n if (sender === this._userId && content.from_device === this._deviceId) {\n // ignore requests from ourselves, because it doesn't make sense for a\n // device to verify itself\n return;\n }\n if (this._verificationTransactions.has(sender)) {\n if (this._verificationTransactions.get(sender).has(content.transaction_id)) {\n // transaction already exists: cancel it and drop the existing\n // request because someone has gotten confused\n var err = (0, _Error.newUnexpectedMessageError)({\n transaction_id: content.transaction_id\n });\n if (this._verificationTransactions.get(sender).get(content.transaction_id).verifier) {\n this._verificationTransactions.get(sender).get(content.transaction_id).verifier.cancel(err);\n } else {\n this._verificationTransactions.get(sender).get(content.transaction_id).reject(err);\n this.sendToDevice(\"m.key.verification.cancel\", (0, _defineProperty3.default)({}, sender, (0, _defineProperty3.default)({}, content.from_device, err.getContent())));\n }\n this._verificationTransactions.get(sender).delete(content.transaction_id);\n return;\n }\n } else {\n this._verificationTransactions.set(sender, new _map2.default());\n }\n\n // determine what requested methods we support\n var methods = [];\n var _iteratorNormalCompletion7 = true;\n var _didIteratorError7 = false;\n var _iteratorError7 = undefined;\n\n try {\n for (var _iterator7 = (0, _getIterator3.default)(content.methods), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {\n var method = _step7.value;\n\n if (typeof method !== \"string\") {\n continue;\n }\n if (this._verificationMethods.has(method)) {\n methods.push(method);\n }\n }\n } catch (err) {\n _didIteratorError7 = true;\n _iteratorError7 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion7 && _iterator7.return) {\n _iterator7.return();\n }\n } finally {\n if (_didIteratorError7) {\n throw _iteratorError7;\n }\n }\n }\n\n if (methods.length === 0) {\n this._baseApis.emit(\"crypto.verification.request.unknown\", event.getSender(), function () {\n _this9.sendToDevice(\"m.key.verification.cancel\", (0, _defineProperty3.default)({}, sender, (0, _defineProperty3.default)({}, content.from_device, (0, _Error.newUserCancelledError)({\n transaction_id: content.transaction_id\n }).getContent())));\n });\n } else {\n // notify the application of the verification request, so it can\n // decide what to do with it\n var request = {\n event: event,\n methods: methods,\n beginKeyVerification: function beginKeyVerification(method) {\n var verifier = _this9.beginKeyVerification(method, sender, content.from_device, content.transaction_id);\n _this9._verificationTransactions.get(sender).get(content.transaction_id).verifier = verifier;\n return verifier;\n },\n cancel: function cancel() {\n _this9._baseApis.sendToDevice(\"m.key.verification.cancel\", (0, _defineProperty3.default)({}, sender, (0, _defineProperty3.default)({}, content.from_device, (0, _Error.newUserCancelledError)({\n transaction_id: content.transaction_id\n }).getContent())));\n }\n };\n this._verificationTransactions.get(sender).set(content.transaction_id, {\n request: request\n });\n this._baseApis.emit(\"crypto.verification.request\", request);\n }\n};\n\n/**\n * Handle a key verification start event.\n *\n * @private\n * @param {module:models/event.MatrixEvent} event verification start event\n */\nCrypto.prototype._onKeyVerificationStart = function (event) {\n var _this10 = this;\n\n if (event.isCancelled()) {\n _logger2.default.warn(\"Ignoring flagged verification start from \" + event.getSender());\n return;\n }\n\n var sender = event.getSender();\n var content = event.getContent();\n var transactionId = content.transaction_id;\n var deviceId = content.from_device;\n if (!transactionId || !deviceId) {\n // invalid request, and we don't have enough information to send a\n // cancellation, so just ignore it\n return;\n }\n\n var handler = this._verificationTransactions.has(sender) && this._verificationTransactions.get(sender).get(transactionId);\n // if the verification start message is invalid, send a cancel message to\n // the other side, and also send a cancellation event\n var cancel = function cancel(err) {\n if (handler.verifier) {\n handler.verifier.cancel(err);\n } else if (handler.request && handler.request.cancel) {\n handler.request.cancel(err);\n }\n _this10.sendToDevice(\"m.key.verification.cancel\", (0, _defineProperty3.default)({}, sender, (0, _defineProperty3.default)({}, deviceId, err.getContent())));\n };\n if (!this._verificationMethods.has(content.method)) {\n cancel((0, _Error.newUnknownMethodError)({\n transaction_id: content.transactionId\n }));\n return;\n } else if (content.next_method) {\n if (!this._verificationMethods.has(content.next_method)) {\n cancel((0, _Error.newUnknownMethodError)({\n transaction_id: content.transactionId\n }));\n return;\n } else {\n /* TODO:\n const verification = new TwoPartVerification(\n this._verificationMethods[content.method],\n this._verificationMethods[content.next_method],\n userId, deviceId,\n );\n this.emit(verification.event_type, verification);\n this.emit(verification.first.event_type, verification);*/\n }\n } else {\n var verifier = new (this._verificationMethods.get(content.method))(this._baseApis, sender, deviceId, content.transaction_id, event, handler && handler.request);\n if (!handler) {\n if (!this._verificationTransactions.has(sender)) {\n this._verificationTransactions.set(sender, new _map2.default());\n }\n handler = this._verificationTransactions.get(sender).set(transactionId, {\n verifier: verifier\n });\n } else {\n if (!handler.verifier) {\n handler.verifier = verifier;\n if (handler.request) {\n // the verification start was sent as a response to a\n // verification request\n\n if (!handler.request.devices.includes(deviceId)) {\n // didn't send a request to that device, so it\n // shouldn't have responded\n cancel((0, _Error.newUnexpectedMessageError)({\n transaction_id: content.transactionId\n }));\n return;\n }\n if (!handler.request.methods.includes(content.method)) {\n // verification method wasn't one that was requested\n cancel((0, _Error.newUnknownMethodError)({\n transaction_id: content.transactionId\n }));\n return;\n }\n\n // send cancellation messages to all the other devices that\n // the request was sent to\n var message = {\n transaction_id: transactionId,\n code: \"m.accepted\",\n reason: \"Verification request accepted by another device\"\n };\n var msgMap = {};\n var _iteratorNormalCompletion8 = true;\n var _didIteratorError8 = false;\n var _iteratorError8 = undefined;\n\n try {\n for (var _iterator8 = (0, _getIterator3.default)(handler.request.devices), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {\n var devId = _step8.value;\n\n if (devId !== deviceId) {\n msgMap[devId] = message;\n }\n }\n } catch (err) {\n _didIteratorError8 = true;\n _iteratorError8 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion8 && _iterator8.return) {\n _iterator8.return();\n }\n } finally {\n if (_didIteratorError8) {\n throw _iteratorError8;\n }\n }\n }\n\n this._baseApis.sendToDevice(\"m.key.verification.cancel\", (0, _defineProperty3.default)({}, sender, msgMap));\n\n handler.request.resolve(verifier);\n }\n } else {\n // FIXME: make sure we're in a two-part verification, and the start matches the second part\n }\n }\n this._baseApis.emit(\"crypto.verification.start\", verifier);\n }\n};\n\n/**\n * Handle a general key verification event.\n *\n * @private\n * @param {module:models/event.MatrixEvent} event verification start event\n */\nCrypto.prototype._onKeyVerificationMessage = function (event) {\n var sender = event.getSender();\n var transactionId = event.getContent().transaction_id;\n var handler = this._verificationTransactions.has(sender) && this._verificationTransactions.get(sender).get(transactionId);\n if (!handler) {\n return;\n } else if (event.getType() === \"m.key.verification.cancel\") {\n _logger2.default.log(event);\n if (handler.verifier) {\n handler.verifier.cancel(event);\n } else if (handler.request && handler.request.cancel) {\n handler.request.cancel(event);\n }\n } else if (handler.verifier) {\n var verifier = handler.verifier;\n if (verifier.events && verifier.events.includes(event.getType())) {\n verifier.handleEvent(event);\n }\n }\n};\n\n/**\n * Handle a toDevice event that couldn't be decrypted\n *\n * @private\n * @param {module:models/event.MatrixEvent} event undecryptable event\n */\nCrypto.prototype._onToDeviceBadEncrypted = function () {\n var _ref24 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee21(event) {\n var content, sender, algorithm, deviceKey, lastNewSessionForced, device, devicesByUser, encryptedContent, requestsToResend, _iteratorNormalCompletion9, _didIteratorError9, _iteratorError9, _iterator9, _step9, keyReq;\n\n return _regenerator2.default.wrap(function _callee21$(_context21) {\n while (1) {\n switch (_context21.prev = _context21.next) {\n case 0:\n content = event.getWireContent();\n sender = event.getSender();\n algorithm = content.algorithm;\n deviceKey = content.sender_key;\n\n if (!(sender === undefined || deviceKey === undefined || deviceKey === undefined)) {\n _context21.next = 6;\n break;\n }\n\n return _context21.abrupt('return');\n\n case 6:\n\n // check when we last forced a new session with this device: if we've already done so\n // recently, don't do it again.\n this._lastNewSessionForced[sender] = this._lastNewSessionForced[sender] || {};\n lastNewSessionForced = this._lastNewSessionForced[sender][deviceKey] || 0;\n\n if (!(lastNewSessionForced + MIN_FORCE_SESSION_INTERVAL_MS > Date.now())) {\n _context21.next = 11;\n break;\n }\n\n _logger2.default.debug(\"New session already forced with device \" + sender + \":\" + deviceKey + \" at \" + lastNewSessionForced + \": not forcing another\");\n return _context21.abrupt('return');\n\n case 11:\n\n // establish a new olm session with this device since we're failing to decrypt messages\n // on a current session.\n // Note that an undecryptable message from another device could easily be spoofed -\n // is there anything we can do to mitigate this?\n device = this._deviceList.getDeviceByIdentityKey(algorithm, deviceKey);\n\n if (device) {\n _context21.next = 15;\n break;\n }\n\n _logger2.default.info(\"Couldn't find device for identity key \" + deviceKey + \": not re-establishing session\");\n return _context21.abrupt('return');\n\n case 15:\n devicesByUser = {};\n\n devicesByUser[sender] = [device];\n _context21.next = 19;\n return (0, _bluebird.resolve)(olmlib.ensureOlmSessionsForDevices(this._olmDevice, this._baseApis, devicesByUser, true));\n\n case 19:\n\n this._lastNewSessionForced[sender][deviceKey] = Date.now();\n\n // Now send a blank message on that session so the other side knows about it.\n // (The keyshare request is sent in the clear so that won't do)\n // We send this first such that, as long as the toDevice messages arrive in the\n // same order we sent them, the other end will get this first, set up the new session,\n // then get the keyshare request and send the key over this new session (because it\n // is the session it has most recently received a message on).\n encryptedContent = {\n algorithm: olmlib.OLM_ALGORITHM,\n sender_key: this._olmDevice.deviceCurve25519Key,\n ciphertext: {}\n };\n _context21.next = 23;\n return (0, _bluebird.resolve)(olmlib.encryptMessageForDevice(encryptedContent.ciphertext, this._userId, this._deviceId, this._olmDevice, sender, device, { type: \"m.dummy\" }));\n\n case 23:\n _context21.next = 25;\n return (0, _bluebird.resolve)(this._baseApis.sendToDevice(\"m.room.encrypted\", (0, _defineProperty3.default)({}, sender, (0, _defineProperty3.default)({}, device.deviceId, encryptedContent))));\n\n case 25:\n _context21.next = 27;\n return (0, _bluebird.resolve)(this._outgoingRoomKeyRequestManager.getOutgoingSentRoomKeyRequest(sender, device.deviceId));\n\n case 27:\n requestsToResend = _context21.sent;\n _iteratorNormalCompletion9 = true;\n _didIteratorError9 = false;\n _iteratorError9 = undefined;\n _context21.prev = 31;\n\n for (_iterator9 = (0, _getIterator3.default)(requestsToResend); !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {\n keyReq = _step9.value;\n\n this.requestRoomKey(keyReq.requestBody, keyReq.recipients, true);\n }\n _context21.next = 39;\n break;\n\n case 35:\n _context21.prev = 35;\n _context21.t0 = _context21['catch'](31);\n _didIteratorError9 = true;\n _iteratorError9 = _context21.t0;\n\n case 39:\n _context21.prev = 39;\n _context21.prev = 40;\n\n if (!_iteratorNormalCompletion9 && _iterator9.return) {\n _iterator9.return();\n }\n\n case 42:\n _context21.prev = 42;\n\n if (!_didIteratorError9) {\n _context21.next = 45;\n break;\n }\n\n throw _iteratorError9;\n\n case 45:\n return _context21.finish(42);\n\n case 46:\n return _context21.finish(39);\n\n case 47:\n case 'end':\n return _context21.stop();\n }\n }\n }, _callee21, this, [[31, 35, 39, 47], [40,, 42, 46]]);\n }));\n\n return function (_x32) {\n return _ref24.apply(this, arguments);\n };\n}();\n\n/**\n * Handle a change in the membership state of a member of a room\n *\n * @private\n * @param {module:models/event.MatrixEvent} event event causing the change\n * @param {module:models/room-member} member user whose membership changed\n * @param {string=} oldMembership previous membership\n */\nCrypto.prototype._onRoomMembership = function (event, member, oldMembership) {\n // this event handler is registered on the *client* (as opposed to the room\n // member itself), which means it is only called on changes to the *live*\n // membership state (ie, it is not called when we back-paginate, nor when\n // we load the state in the initialsync).\n //\n // Further, it is automatically registered and called when new members\n // arrive in the room.\n\n var roomId = member.roomId;\n\n var alg = this._roomEncryptors[roomId];\n if (!alg) {\n // not encrypting in this room\n return;\n }\n // only mark users in this room as tracked if we already started tracking in this room\n // this way we don't start device queries after sync on behalf of this room which we won't use\n // the result of anyway, as we'll need to do a query again once all the members are fetched\n // by calling _trackRoomDevices\n if (this._roomDeviceTrackingState[roomId]) {\n if (member.membership == 'join') {\n _logger2.default.log('Join event for ' + member.userId + ' in ' + roomId);\n // make sure we are tracking the deviceList for this user\n this._deviceList.startTrackingDeviceList(member.userId);\n } else if (member.membership == 'invite' && this._clientStore.getRoom(roomId).shouldEncryptForInvitedMembers()) {\n _logger2.default.log('Invite event for ' + member.userId + ' in ' + roomId);\n this._deviceList.startTrackingDeviceList(member.userId);\n }\n }\n\n alg.onRoomMembership(event, member, oldMembership);\n};\n\n/**\n * Called when we get an m.room_key_request event.\n *\n * @private\n * @param {module:models/event.MatrixEvent} event key request event\n */\nCrypto.prototype._onRoomKeyRequestEvent = function (event) {\n var content = event.getContent();\n if (content.action === \"request\") {\n // Queue it up for now, because they tend to arrive before the room state\n // events at initial sync, and we want to see if we know anything about the\n // room before passing them on to the app.\n var req = new IncomingRoomKeyRequest(event);\n this._receivedRoomKeyRequests.push(req);\n } else if (content.action === \"request_cancellation\") {\n var _req = new IncomingRoomKeyRequestCancellation(event);\n this._receivedRoomKeyRequestCancellations.push(_req);\n }\n};\n\n/**\n * Process any m.room_key_request events which were queued up during the\n * current sync.\n *\n * @private\n */\nCrypto.prototype._processReceivedRoomKeyRequests = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee22() {\n var _this11 = this;\n\n var requests, cancellations;\n return _regenerator2.default.wrap(function _callee22$(_context22) {\n while (1) {\n switch (_context22.prev = _context22.next) {\n case 0:\n if (!this._processingRoomKeyRequests) {\n _context22.next = 2;\n break;\n }\n\n return _context22.abrupt('return');\n\n case 2:\n this._processingRoomKeyRequests = true;\n\n _context22.prev = 3;\n\n // we need to grab and clear the queues in the synchronous bit of this method,\n // so that we don't end up racing with the next /sync.\n requests = this._receivedRoomKeyRequests;\n\n this._receivedRoomKeyRequests = [];\n cancellations = this._receivedRoomKeyRequestCancellations;\n\n this._receivedRoomKeyRequestCancellations = [];\n\n // Process all of the requests, *then* all of the cancellations.\n //\n // This makes sure that if we get a request and its cancellation in the\n // same /sync result, then we process the request before the\n // cancellation (and end up with a cancelled request), rather than the\n // cancellation before the request (and end up with an outstanding\n // request which should have been cancelled.)\n _context22.next = 10;\n return (0, _bluebird.resolve)(_bluebird2.default.map(requests, function (req) {\n return _this11._processReceivedRoomKeyRequest(req);\n }));\n\n case 10:\n _context22.next = 12;\n return (0, _bluebird.resolve)(_bluebird2.default.map(cancellations, function (cancellation) {\n return _this11._processReceivedRoomKeyRequestCancellation(cancellation);\n }));\n\n case 12:\n _context22.next = 17;\n break;\n\n case 14:\n _context22.prev = 14;\n _context22.t0 = _context22['catch'](3);\n\n _logger2.default.error('Error processing room key requsts: ' + _context22.t0);\n\n case 17:\n _context22.prev = 17;\n\n this._processingRoomKeyRequests = false;\n return _context22.finish(17);\n\n case 20:\n case 'end':\n return _context22.stop();\n }\n }\n }, _callee22, this, [[3, 14, 17, 20]]);\n}));\n\n/**\n * Helper for processReceivedRoomKeyRequests\n *\n * @param {IncomingRoomKeyRequest} req\n */\nCrypto.prototype._processReceivedRoomKeyRequest = function () {\n var _ref26 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee23(req) {\n var userId, deviceId, body, roomId, alg, encryptor, _device, decryptor, device;\n\n return _regenerator2.default.wrap(function _callee23$(_context23) {\n while (1) {\n switch (_context23.prev = _context23.next) {\n case 0:\n userId = req.userId;\n deviceId = req.deviceId;\n body = req.requestBody;\n roomId = body.room_id;\n alg = body.algorithm;\n\n\n _logger2.default.log('m.room_key_request from ' + userId + ':' + deviceId + (' for ' + roomId + ' / ' + body.session_id + ' (id ' + req.requestId + ')'));\n\n if (!(userId !== this._userId)) {\n _context23.next = 24;\n break;\n }\n\n if (this._roomEncryptors[roomId]) {\n _context23.next = 10;\n break;\n }\n\n _logger2.default.debug('room key request for unencrypted room ' + roomId);\n return _context23.abrupt('return');\n\n case 10:\n encryptor = this._roomEncryptors[roomId];\n _device = this._deviceList.getStoredDevice(userId, deviceId);\n\n if (_device) {\n _context23.next = 15;\n break;\n }\n\n _logger2.default.debug('Ignoring keyshare for unknown device ' + userId + ':' + deviceId);\n return _context23.abrupt('return');\n\n case 15:\n _context23.prev = 15;\n _context23.next = 18;\n return (0, _bluebird.resolve)(encryptor.reshareKeyWithDevice(body.sender_key, body.session_id, userId, _device));\n\n case 18:\n _context23.next = 23;\n break;\n\n case 20:\n _context23.prev = 20;\n _context23.t0 = _context23['catch'](15);\n\n _logger2.default.warn(\"Failed to re-share keys for session \" + body.session_id + \" with device \" + userId + \":\" + _device.deviceId, _context23.t0);\n\n case 23:\n return _context23.abrupt('return');\n\n case 24:\n if (this._roomDecryptors[roomId]) {\n _context23.next = 27;\n break;\n }\n\n _logger2.default.log('room key request for unencrypted room ' + roomId);\n return _context23.abrupt('return');\n\n case 27:\n decryptor = this._roomDecryptors[roomId][alg];\n\n if (decryptor) {\n _context23.next = 31;\n break;\n }\n\n _logger2.default.log('room key request for unknown alg ' + alg + ' in room ' + roomId);\n return _context23.abrupt('return');\n\n case 31:\n _context23.next = 33;\n return (0, _bluebird.resolve)(decryptor.hasKeysForKeyRequest(req));\n\n case 33:\n if (_context23.sent) {\n _context23.next = 36;\n break;\n }\n\n _logger2.default.log('room key request for unknown session ' + roomId + ' / ' + body.session_id);\n return _context23.abrupt('return');\n\n case 36:\n\n req.share = function () {\n decryptor.shareKeysWithDevice(req);\n };\n\n // if the device is is verified already, share the keys\n device = this._deviceList.getStoredDevice(userId, deviceId);\n\n if (!(device && device.isVerified())) {\n _context23.next = 42;\n break;\n }\n\n _logger2.default.log('device is already verified: sharing keys');\n req.share();\n return _context23.abrupt('return');\n\n case 42:\n\n this.emit(\"crypto.roomKeyRequest\", req);\n\n case 43:\n case 'end':\n return _context23.stop();\n }\n }\n }, _callee23, this, [[15, 20]]);\n }));\n\n return function (_x33) {\n return _ref26.apply(this, arguments);\n };\n}();\n\n/**\n * Helper for processReceivedRoomKeyRequests\n *\n * @param {IncomingRoomKeyRequestCancellation} cancellation\n */\nCrypto.prototype._processReceivedRoomKeyRequestCancellation = function () {\n var _ref27 = (0, _bluebird.method)(function (cancellation) {\n _logger2.default.log('m.room_key_request cancellation for ' + cancellation.userId + ':' + (cancellation.deviceId + ' (id ' + cancellation.requestId + ')'));\n\n // we should probably only notify the app of cancellations we told it\n // about, but we don't currently have a record of that, so we just pass\n // everything through.\n this.emit(\"crypto.roomKeyRequestCancellation\", cancellation);\n });\n\n return function (_x34) {\n return _ref27.apply(this, arguments);\n };\n}();\n\n/**\n * Get a decryptor for a given room and algorithm.\n *\n * If we already have a decryptor for the given room and algorithm, return\n * it. Otherwise try to instantiate it.\n *\n * @private\n *\n * @param {string?} roomId room id for decryptor. If undefined, a temporary\n * decryptor is instantiated.\n *\n * @param {string} algorithm crypto algorithm\n *\n * @return {module:crypto.algorithms.base.DecryptionAlgorithm}\n *\n * @raises {module:crypto.algorithms.DecryptionError} if the algorithm is\n * unknown\n */\nCrypto.prototype._getRoomDecryptor = function (roomId, algorithm) {\n var decryptors = void 0;\n var alg = void 0;\n\n roomId = roomId || null;\n if (roomId) {\n decryptors = this._roomDecryptors[roomId];\n if (!decryptors) {\n this._roomDecryptors[roomId] = decryptors = {};\n }\n\n alg = decryptors[algorithm];\n if (alg) {\n return alg;\n }\n }\n\n var AlgClass = algorithms.DECRYPTION_CLASSES[algorithm];\n if (!AlgClass) {\n throw new algorithms.DecryptionError('UNKNOWN_ENCRYPTION_ALGORITHM', 'Unknown encryption algorithm \"' + algorithm + '\".');\n }\n alg = new AlgClass({\n userId: this._userId,\n crypto: this,\n olmDevice: this._olmDevice,\n baseApis: this._baseApis,\n roomId: roomId\n });\n\n if (decryptors) {\n decryptors[algorithm] = alg;\n }\n return alg;\n};\n\n/**\n * sign the given object with our ed25519 key\n *\n * @param {Object} obj Object to which we will add a 'signatures' property\n */\nCrypto.prototype._signObject = function () {\n var _ref28 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee24(obj) {\n var sigs;\n return _regenerator2.default.wrap(function _callee24$(_context24) {\n while (1) {\n switch (_context24.prev = _context24.next) {\n case 0:\n sigs = {};\n\n sigs[this._userId] = {};\n _context24.next = 4;\n return (0, _bluebird.resolve)(this._olmDevice.sign(anotherjson.stringify(obj)));\n\n case 4:\n sigs[this._userId][\"ed25519:\" + this._deviceId] = _context24.sent;\n\n obj.signatures = sigs;\n\n case 6:\n case 'end':\n return _context24.stop();\n }\n }\n }, _callee24, this);\n }));\n\n return function (_x35) {\n return _ref28.apply(this, arguments);\n };\n}();\n\n/**\n * The parameters of a room key request. The details of the request may\n * vary with the crypto algorithm, but the management and storage layers for\n * outgoing requests expect it to have 'room_id' and 'session_id' properties.\n *\n * @typedef {Object} RoomKeyRequestBody\n */\n\n/**\n * Represents a received m.room_key_request event\n *\n * @property {string} userId user requesting the key\n * @property {string} deviceId device requesting the key\n * @property {string} requestId unique id for the request\n * @property {module:crypto~RoomKeyRequestBody} requestBody\n * @property {function()} share callback which, when called, will ask\n * the relevant crypto algorithm implementation to share the keys for\n * this request.\n */\n\nvar IncomingRoomKeyRequest = function IncomingRoomKeyRequest(event) {\n (0, _classCallCheck3.default)(this, IncomingRoomKeyRequest);\n\n var content = event.getContent();\n\n this.userId = event.getSender();\n this.deviceId = content.requesting_device_id;\n this.requestId = content.request_id;\n this.requestBody = content.body || {};\n this.share = function () {\n throw new Error(\"don't know how to share keys for this request yet\");\n };\n};\n\n/**\n * Represents a received m.room_key_request cancellation\n *\n * @property {string} userId user requesting the cancellation\n * @property {string} deviceId device requesting the cancellation\n * @property {string} requestId unique id for the request to be cancelled\n */\n\n\nvar IncomingRoomKeyRequestCancellation = function IncomingRoomKeyRequestCancellation(event) {\n (0, _classCallCheck3.default)(this, IncomingRoomKeyRequestCancellation);\n\n var content = event.getContent();\n\n this.userId = event.getSender();\n this.deviceId = content.requesting_device_id;\n this.requestId = content.request_id;\n};\n\n/**\n * The result of a (successful) call to decryptEvent.\n *\n * @typedef {Object} EventDecryptionResult\n *\n * @property {Object} clearEvent The plaintext payload for the event\n * (typically containing type and content fields).\n *\n * @property {?string} senderCurve25519Key Key owned by the sender of this\n * event. See {@link module:models/event.MatrixEvent#getSenderKey}.\n *\n * @property {?string} claimedEd25519Key ed25519 key claimed by the sender of\n * this event. See\n * {@link module:models/event.MatrixEvent#getClaimedEd25519Key}.\n *\n * @property {?Array} forwardingCurve25519KeyChain list of curve25519\n * keys involved in telling us about the senderCurve25519Key and\n * claimedEd25519Key. See\n * {@link module:models/event.MatrixEvent#getForwardingCurve25519KeyChain}.\n */\n\n/**\n * Fires when we receive a room key request\n *\n * @event module:client~MatrixClient#\"crypto.roomKeyRequest\"\n * @param {module:crypto~IncomingRoomKeyRequest} req request details\n */\n\n/**\n * Fires when we receive a room key request cancellation\n *\n * @event module:client~MatrixClient#\"crypto.roomKeyRequestCancellation\"\n * @param {module:crypto~IncomingRoomKeyRequestCancellation} req\n */\n\n/**\n * Fires when the app may wish to warn the user about something related\n * the end-to-end crypto.\n *\n * @event module:client~MatrixClient#\"crypto.warning\"\n * @param {string} type One of the strings listed above\n */\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.randomString = randomString;\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction randomString(len) {\n var ret = \"\";\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\n for (var i = 0; i < len; ++i) {\n ret += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n\n return ret;\n}\n//# sourceMappingURL=randomstring.js.map","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","/* Copyright 2015 Mark Haines\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n'use strict';\n\nvar escaped = /[\\\\\\\"\\x00-\\x1F]/g;\nvar escapes = {};\nfor (var i = 0; i < 0x20; ++i) {\n escapes[String.fromCharCode(i)] = (\n '\\\\U' + ('0000' + i.toString(16)).slice(-4).toUpperCase()\n );\n}\nescapes['\\b'] = '\\\\b';\nescapes['\\t'] = '\\\\t';\nescapes['\\n'] = '\\\\n';\nescapes['\\f'] = '\\\\f';\nescapes['\\r'] = '\\\\r';\nescapes['\\\"'] = '\\\\\\\"';\nescapes['\\\\'] = '\\\\\\\\';\n\nfunction escapeString(value) {\n escaped.lastIndex = 0;\n return value.replace(escaped, function(c) { return escapes[c]; });\n}\n\nfunction stringify(value) {\n switch (typeof value) {\n case 'string':\n return '\"' + escapeString(value) + '\"';\n case 'number':\n return isFinite(value) ? value : 'null';\n case 'boolean':\n return value;\n case 'object':\n if (value === null) {\n return 'null';\n }\n if (Array.isArray(value)) {\n return stringifyArray(value);\n }\n return stringifyObject(value);\n default:\n throw new Error('Cannot stringify: ' + typeof value);\n }\n}\n\nfunction stringifyArray(array) {\n var sep = '[';\n var result = '';\n for (var i = 0; i < array.length; ++i) {\n result += sep;\n sep = ',';\n result += stringify(array[i]);\n }\n if (sep != ',') {\n return '[]';\n } else {\n return result + ']';\n }\n}\n\nfunction stringifyObject(object) {\n var sep = '{';\n var result = '';\n var keys = Object.keys(object);\n keys.sort();\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n result += sep + '\"' + escapeString(key) + '\":';\n sep = ',';\n result += stringify(object[key]);\n }\n if (sep != ',') {\n return '{}';\n } else {\n return result + '}';\n }\n}\n\n/** */\nmodule.exports = {stringify: stringify};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.UnknownDeviceError = exports.DecryptionError = exports.DecryptionAlgorithm = exports.EncryptionAlgorithm = exports.DECRYPTION_CLASSES = exports.ENCRYPTION_CLASSES = undefined;\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.registerAlgorithm = registerAlgorithm;\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * map of registered encryption algorithm classes. A map from string to {@link\n * module:crypto/algorithms/base.EncryptionAlgorithm|EncryptionAlgorithm} class\n *\n * @type {Object.}\n */\nvar ENCRYPTION_CLASSES = exports.ENCRYPTION_CLASSES = {};\n\n/**\n * map of registered encryption algorithm classes. Map from string to {@link\n * module:crypto/algorithms/base.DecryptionAlgorithm|DecryptionAlgorithm} class\n *\n * @type {Object.}\n */\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Internal module. Defines the base classes of the encryption implementations\n *\n * @module\n */\n\nvar DECRYPTION_CLASSES = exports.DECRYPTION_CLASSES = {};\n\n/**\n * base type for encryption implementations\n *\n * @alias module:crypto/algorithms/base.EncryptionAlgorithm\n *\n * @param {object} params parameters\n * @param {string} params.userId The UserID for the local user\n * @param {string} params.deviceId The identifier for this device.\n * @param {module:crypto} params.crypto crypto core\n * @param {module:crypto/OlmDevice} params.olmDevice olm.js wrapper\n * @param {module:base-apis~MatrixBaseApis} baseApis base matrix api interface\n * @param {string} params.roomId The ID of the room we will be sending to\n * @param {object} params.config The body of the m.room.encryption event\n */\n\nvar EncryptionAlgorithm = function () {\n function EncryptionAlgorithm(params) {\n (0, _classCallCheck3.default)(this, EncryptionAlgorithm);\n\n this._userId = params.userId;\n this._deviceId = params.deviceId;\n this._crypto = params.crypto;\n this._olmDevice = params.olmDevice;\n this._baseApis = params.baseApis;\n this._roomId = params.roomId;\n }\n\n /**\n * Encrypt a message event\n *\n * @method module:crypto/algorithms/base.EncryptionAlgorithm.encryptMessage\n * @abstract\n *\n * @param {module:models/room} room\n * @param {string} eventType\n * @param {object} plaintext event content\n *\n * @return {module:client.Promise} Promise which resolves to the new event body\n */\n\n /**\n * Called when the membership of a member of the room changes.\n *\n * @param {module:models/event.MatrixEvent} event event causing the change\n * @param {module:models/room-member} member user whose membership changed\n * @param {string=} oldMembership previous membership\n * @public\n */\n\n\n (0, _createClass3.default)(EncryptionAlgorithm, [{\n key: 'onRoomMembership',\n value: function onRoomMembership(event, member, oldMembership) {}\n }]);\n return EncryptionAlgorithm;\n}();\n\nexports.EncryptionAlgorithm = EncryptionAlgorithm; // https://github.com/jsdoc3/jsdoc/issues/1272\n\n/**\n * base type for decryption implementations\n *\n * @alias module:crypto/algorithms/base.DecryptionAlgorithm\n * @param {object} params parameters\n * @param {string} params.userId The UserID for the local user\n * @param {module:crypto} params.crypto crypto core\n * @param {module:crypto/OlmDevice} params.olmDevice olm.js wrapper\n * @param {module:base-apis~MatrixBaseApis} baseApis base matrix api interface\n * @param {string=} params.roomId The ID of the room we will be receiving\n * from. Null for to-device events.\n */\n\nvar DecryptionAlgorithm = function () {\n function DecryptionAlgorithm(params) {\n (0, _classCallCheck3.default)(this, DecryptionAlgorithm);\n\n this._userId = params.userId;\n this._crypto = params.crypto;\n this._olmDevice = params.olmDevice;\n this._baseApis = params.baseApis;\n this._roomId = params.roomId;\n }\n\n /**\n * Decrypt an event\n *\n * @method module:crypto/algorithms/base.DecryptionAlgorithm#decryptEvent\n * @abstract\n *\n * @param {MatrixEvent} event undecrypted event\n *\n * @return {Promise} promise which\n * resolves once we have finished decrypting. Rejects with an\n * `algorithms.DecryptionError` if there is a problem decrypting the event.\n */\n\n /**\n * Handle a key event\n *\n * @method module:crypto/algorithms/base.DecryptionAlgorithm#onRoomKeyEvent\n *\n * @param {module:models/event.MatrixEvent} params event key event\n */\n\n\n (0, _createClass3.default)(DecryptionAlgorithm, [{\n key: 'onRoomKeyEvent',\n value: function onRoomKeyEvent(params) {}\n // ignore by default\n\n\n /**\n * Import a room key\n *\n * @param {module:crypto/OlmDevice.MegolmSessionData} session\n */\n\n }, {\n key: 'importRoomKey',\n value: function importRoomKey(session) {}\n // ignore by default\n\n\n /**\n * Determine if we have the keys necessary to respond to a room key request\n *\n * @param {module:crypto~IncomingRoomKeyRequest} keyRequest\n * @return {Promise} true if we have the keys and could (theoretically) share\n * them; else false.\n */\n\n }, {\n key: 'hasKeysForKeyRequest',\n value: function hasKeysForKeyRequest(keyRequest) {\n return _bluebird2.default.resolve(false);\n }\n\n /**\n * Send the response to a room key request\n *\n * @param {module:crypto~IncomingRoomKeyRequest} keyRequest\n */\n\n }, {\n key: 'shareKeysWithDevice',\n value: function shareKeysWithDevice(keyRequest) {\n throw new Error(\"shareKeysWithDevice not supported for this DecryptionAlgorithm\");\n }\n }]);\n return DecryptionAlgorithm;\n}();\n\nexports.DecryptionAlgorithm = DecryptionAlgorithm; // https://github.com/jsdoc3/jsdoc/issues/1272\n\n/**\n * Exception thrown when decryption fails\n *\n * @alias module:crypto/algorithms/base.DecryptionError\n * @param {string} msg user-visible message describing the problem\n *\n * @param {Object=} details key/value pairs reported in the logs but not shown\n * to the user.\n *\n * @extends Error\n */\n\nvar DecryptionError = function (_Error) {\n (0, _inherits3.default)(DecryptionError, _Error);\n\n function DecryptionError(code, msg, details) {\n (0, _classCallCheck3.default)(this, DecryptionError);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DecryptionError.__proto__ || (0, _getPrototypeOf2.default)(DecryptionError)).call(this, msg));\n\n _this.code = code;\n _this.name = 'DecryptionError';\n _this.detailedString = _detailedStringForDecryptionError(_this, details);\n return _this;\n }\n\n return DecryptionError;\n}(Error);\n\nexports.DecryptionError = DecryptionError; // https://github.com/jsdoc3/jsdoc/issues/1272\n\nfunction _detailedStringForDecryptionError(err, details) {\n var result = err.name + '[msg: ' + err.message;\n\n if (details) {\n result += ', ' + (0, _keys2.default)(details).map(function (k) {\n return k + ': ' + details[k];\n }).join(', ');\n }\n\n result += ']';\n\n return result;\n}\n\n/**\n * Exception thrown specifically when we want to warn the user to consider\n * the security of their conversation before continuing\n *\n * @param {string} msg message describing the problem\n * @param {Object} devices userId -> {deviceId -> object}\n * set of unknown devices per user we're warning about\n * @extends Error\n */\n\nvar UnknownDeviceError = exports.UnknownDeviceError = function (_Error2) {\n (0, _inherits3.default)(UnknownDeviceError, _Error2);\n\n function UnknownDeviceError(msg, devices) {\n (0, _classCallCheck3.default)(this, UnknownDeviceError);\n\n var _this2 = (0, _possibleConstructorReturn3.default)(this, (UnknownDeviceError.__proto__ || (0, _getPrototypeOf2.default)(UnknownDeviceError)).call(this, msg));\n\n _this2.name = \"UnknownDeviceError\";\n _this2.devices = devices;\n return _this2;\n }\n\n return UnknownDeviceError;\n}(Error);\n\n/**\n * Registers an encryption/decryption class for a particular algorithm\n *\n * @param {string} algorithm algorithm tag to register for\n *\n * @param {class} encryptor {@link\n * module:crypto/algorithms/base.EncryptionAlgorithm|EncryptionAlgorithm}\n * implementation\n *\n * @param {class} decryptor {@link\n * module:crypto/algorithms/base.DecryptionAlgorithm|DecryptionAlgorithm}\n * implementation\n */\n\n\nfunction registerAlgorithm(algorithm, encryptor, decryptor) {\n ENCRYPTION_CLASSES[algorithm] = encryptor;\n DECRYPTION_CLASSES[algorithm] = decryptor;\n}\n//# sourceMappingURL=base.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module crypto/deviceinfo\n */\n\n/**\n * Information about a user's device\n *\n * @constructor\n * @alias module:crypto/deviceinfo\n *\n * @property {string} deviceId the ID of this device\n *\n * @property {string[]} algorithms list of algorithms supported by this device\n *\n * @property {Object.} keys a map from\n * <key type>:<id> -> <base64-encoded key>>\n *\n * @property {module:crypto/deviceinfo.DeviceVerification} verified\n * whether the device has been verified/blocked by the user\n *\n * @property {boolean} known\n * whether the user knows of this device's existence (useful when warning\n * the user that a user has added new devices)\n *\n * @property {Object} unsigned additional data from the homeserver\n *\n * @param {string} deviceId id of the device\n */\n\nfunction DeviceInfo(deviceId) {\n // you can't change the deviceId\n Object.defineProperty(this, 'deviceId', {\n enumerable: true,\n value: deviceId\n });\n\n this.algorithms = [];\n this.keys = {};\n this.verified = DeviceVerification.UNVERIFIED;\n this.known = false;\n this.unsigned = {};\n}\n\n/**\n * rehydrate a DeviceInfo from the session store\n *\n * @param {object} obj raw object from session store\n * @param {string} deviceId id of the device\n *\n * @return {module:crypto~DeviceInfo} new DeviceInfo\n */\nDeviceInfo.fromStorage = function (obj, deviceId) {\n var res = new DeviceInfo(deviceId);\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n res[prop] = obj[prop];\n }\n }\n return res;\n};\n\n/**\n * Prepare a DeviceInfo for JSON serialisation in the session store\n *\n * @return {object} deviceinfo with non-serialised members removed\n */\nDeviceInfo.prototype.toStorage = function () {\n return {\n algorithms: this.algorithms,\n keys: this.keys,\n verified: this.verified,\n known: this.known,\n unsigned: this.unsigned\n };\n};\n\n/**\n * Get the fingerprint for this device (ie, the Ed25519 key)\n *\n * @return {string} base64-encoded fingerprint of this device\n */\nDeviceInfo.prototype.getFingerprint = function () {\n return this.keys[\"ed25519:\" + this.deviceId];\n};\n\n/**\n * Get the identity key for this device (ie, the Curve25519 key)\n *\n * @return {string} base64-encoded identity key of this device\n */\nDeviceInfo.prototype.getIdentityKey = function () {\n return this.keys[\"curve25519:\" + this.deviceId];\n};\n\n/**\n * Get the configured display name for this device, if any\n *\n * @return {string?} displayname\n */\nDeviceInfo.prototype.getDisplayName = function () {\n return this.unsigned.device_display_name || null;\n};\n\n/**\n * Returns true if this device is blocked\n *\n * @return {Boolean} true if blocked\n */\nDeviceInfo.prototype.isBlocked = function () {\n return this.verified == DeviceVerification.BLOCKED;\n};\n\n/**\n * Returns true if this device is verified\n *\n * @return {Boolean} true if verified\n */\nDeviceInfo.prototype.isVerified = function () {\n return this.verified == DeviceVerification.VERIFIED;\n};\n\n/**\n * Returns true if this device is unverified\n *\n * @return {Boolean} true if unverified\n */\nDeviceInfo.prototype.isUnverified = function () {\n return this.verified == DeviceVerification.UNVERIFIED;\n};\n\n/**\n * Returns true if the user knows about this device's existence\n *\n * @return {Boolean} true if known\n */\nDeviceInfo.prototype.isKnown = function () {\n return this.known == true;\n};\n\n/**\n * @enum\n */\nDeviceInfo.DeviceVerification = {\n VERIFIED: 1,\n UNVERIFIED: 0,\n BLOCKED: -1\n};\n\nvar DeviceVerification = DeviceInfo.DeviceVerification;\n\n/** */\nmodule.exports = DeviceInfo;\n//# sourceMappingURL=deviceinfo.js.map","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module models/room-member\n */\n\nvar EventEmitter = require(\"events\").EventEmitter;\nvar ContentRepo = require(\"../content-repo\");\n\nvar utils = require(\"../utils\");\n\n/**\n * Construct a new room member.\n *\n * @constructor\n * @alias module:models/room-member\n *\n * @param {string} roomId The room ID of the member.\n * @param {string} userId The user ID of the member.\n * @prop {string} roomId The room ID for this member.\n * @prop {string} userId The user ID of this member.\n * @prop {boolean} typing True if the room member is currently typing.\n * @prop {string} name The human-readable name for this room member. This will be\n * disambiguated with a suffix of \" (@user_id:matrix.org)\" if another member shares the\n * same displayname.\n * @prop {string} rawDisplayName The ambiguous displayname of this room member.\n * @prop {Number} powerLevel The power level for this room member.\n * @prop {Number} powerLevelNorm The normalised power level (0-100) for this\n * room member.\n * @prop {User} user The User object for this room member, if one exists.\n * @prop {string} membership The membership state for this room member e.g. 'join'.\n * @prop {Object} events The events describing this RoomMember.\n * @prop {MatrixEvent} events.member The m.room.member event for this RoomMember.\n */\nfunction RoomMember(roomId, userId) {\n this.roomId = roomId;\n this.userId = userId;\n this.typing = false;\n this.name = userId;\n this.rawDisplayName = userId;\n this.powerLevel = 0;\n this.powerLevelNorm = 0;\n this.user = null;\n this.membership = null;\n this.events = {\n member: null\n };\n this._isOutOfBand = false;\n this._updateModifiedTime();\n}\nutils.inherits(RoomMember, EventEmitter);\n\n/**\n * Mark the member as coming from a channel that is not sync\n */\nRoomMember.prototype.markOutOfBand = function () {\n this._isOutOfBand = true;\n};\n\n/**\n * @return {bool} does the member come from a channel that is not sync?\n * This is used to store the member seperately\n * from the sync state so it available across browser sessions.\n */\nRoomMember.prototype.isOutOfBand = function () {\n return this._isOutOfBand;\n};\n\n/**\n * Update this room member's membership event. May fire \"RoomMember.name\" if\n * this event updates this member's name.\n * @param {MatrixEvent} event The m.room.member event\n * @param {RoomState} roomState Optional. The room state to take into account\n * when calculating (e.g. for disambiguating users with the same name).\n * @fires module:client~MatrixClient#event:\"RoomMember.name\"\n * @fires module:client~MatrixClient#event:\"RoomMember.membership\"\n */\nRoomMember.prototype.setMembershipEvent = function (event, roomState) {\n if (event.getType() !== \"m.room.member\") {\n return;\n }\n\n this._isOutOfBand = false;\n\n this.events.member = event;\n\n var oldMembership = this.membership;\n this.membership = event.getDirectionalContent().membership;\n\n var oldName = this.name;\n this.name = calculateDisplayName(this.userId, event.getDirectionalContent().displayname, roomState);\n\n this.rawDisplayName = event.getDirectionalContent().displayname || this.userId;\n if (oldMembership !== this.membership) {\n this._updateModifiedTime();\n this.emit(\"RoomMember.membership\", event, this, oldMembership);\n }\n if (oldName !== this.name) {\n this._updateModifiedTime();\n this.emit(\"RoomMember.name\", event, this, oldName);\n }\n};\n\n/**\n * Update this room member's power level event. May fire\n * \"RoomMember.powerLevel\" if this event updates this member's power levels.\n * @param {MatrixEvent} powerLevelEvent The m.room.power_levels\n * event\n * @fires module:client~MatrixClient#event:\"RoomMember.powerLevel\"\n */\nRoomMember.prototype.setPowerLevelEvent = function (powerLevelEvent) {\n if (powerLevelEvent.getType() !== \"m.room.power_levels\") {\n return;\n }\n\n var evContent = powerLevelEvent.getDirectionalContent();\n\n var maxLevel = evContent.users_default || 0;\n utils.forEach(utils.values(evContent.users), function (lvl) {\n maxLevel = Math.max(maxLevel, lvl);\n });\n var oldPowerLevel = this.powerLevel;\n var oldPowerLevelNorm = this.powerLevelNorm;\n\n if (evContent.users && evContent.users[this.userId] !== undefined) {\n this.powerLevel = evContent.users[this.userId];\n } else if (evContent.users_default !== undefined) {\n this.powerLevel = evContent.users_default;\n } else {\n this.powerLevel = 0;\n }\n this.powerLevelNorm = 0;\n if (maxLevel > 0) {\n this.powerLevelNorm = this.powerLevel * 100 / maxLevel;\n }\n\n // emit for changes in powerLevelNorm as well (since the app will need to\n // redraw everyone's level if the max has changed)\n if (oldPowerLevel !== this.powerLevel || oldPowerLevelNorm !== this.powerLevelNorm) {\n this._updateModifiedTime();\n this.emit(\"RoomMember.powerLevel\", powerLevelEvent, this);\n }\n};\n\n/**\n * Update this room member's typing event. May fire \"RoomMember.typing\" if\n * this event changes this member's typing state.\n * @param {MatrixEvent} event The typing event\n * @fires module:client~MatrixClient#event:\"RoomMember.typing\"\n */\nRoomMember.prototype.setTypingEvent = function (event) {\n if (event.getType() !== \"m.typing\") {\n return;\n }\n var oldTyping = this.typing;\n this.typing = false;\n var typingList = event.getContent().user_ids;\n if (!utils.isArray(typingList)) {\n // malformed event :/ bail early. TODO: whine?\n return;\n }\n if (typingList.indexOf(this.userId) !== -1) {\n this.typing = true;\n }\n if (oldTyping !== this.typing) {\n this._updateModifiedTime();\n this.emit(\"RoomMember.typing\", event, this);\n }\n};\n\n/**\n * Update the last modified time to the current time.\n */\nRoomMember.prototype._updateModifiedTime = function () {\n this._modified = Date.now();\n};\n\n/**\n * Get the timestamp when this RoomMember was last updated. This timestamp is\n * updated when properties on this RoomMember are updated.\n * It is updated before firing events.\n * @return {number} The timestamp\n */\nRoomMember.prototype.getLastModifiedTime = function () {\n return this._modified;\n};\n\nRoomMember.prototype.isKicked = function () {\n return this.membership === \"leave\" && this.events.member.getSender() !== this.events.member.getStateKey();\n};\n\n/**\n * If this member was invited with the is_direct flag set, return\n * the user that invited this member\n * @return {string} user id of the inviter\n */\nRoomMember.prototype.getDMInviter = function () {\n // when not available because that room state hasn't been loaded in,\n // we don't really know, but more likely to not be a direct chat\n if (this.events.member) {\n // TODO: persist the is_direct flag on the member as more member events\n // come in caused by displayName changes.\n\n // the is_direct flag is set on the invite member event.\n // This is copied on the prev_content section of the join member event\n // when the invite is accepted.\n\n var memberEvent = this.events.member;\n var memberContent = memberEvent.getContent();\n var inviteSender = memberEvent.getSender();\n\n if (memberContent.membership === \"join\") {\n memberContent = memberEvent.getPrevContent();\n inviteSender = memberEvent.getUnsigned().prev_sender;\n }\n\n if (memberContent.membership === \"invite\" && memberContent.is_direct) {\n return inviteSender;\n }\n }\n};\n\n/**\n * Get the avatar URL for a room member.\n * @param {string} baseUrl The base homeserver URL See\n * {@link module:client~MatrixClient#getHomeserverUrl}.\n * @param {Number} width The desired width of the thumbnail.\n * @param {Number} height The desired height of the thumbnail.\n * @param {string} resizeMethod The thumbnail resize method to use, either\n * \"crop\" or \"scale\".\n * @param {Boolean} allowDefault (optional) Passing false causes this method to\n * return null if the user has no avatar image. Otherwise, a default image URL\n * will be returned. Default: true. (Deprecated)\n * @param {Boolean} allowDirectLinks (optional) If true, the avatar URL will be\n * returned even if it is a direct hyperlink rather than a matrix content URL.\n * If false, any non-matrix content URLs will be ignored. Setting this option to\n * true will expose URLs that, if fetched, will leak information about the user\n * to anyone who they share a room with.\n * @return {?string} the avatar URL or null.\n */\nRoomMember.prototype.getAvatarUrl = function (baseUrl, width, height, resizeMethod, allowDefault, allowDirectLinks) {\n if (allowDefault === undefined) {\n allowDefault = true;\n }\n\n var rawUrl = this.getMxcAvatarUrl();\n\n if (!rawUrl && !allowDefault) {\n return null;\n }\n var httpUrl = ContentRepo.getHttpUriForMxc(baseUrl, rawUrl, width, height, resizeMethod, allowDirectLinks);\n if (httpUrl) {\n return httpUrl;\n } else if (allowDefault) {\n return ContentRepo.getIdenticonUri(baseUrl, this.userId, width, height);\n }\n return null;\n};\n/**\n * get the mxc avatar url, either from a state event, or from a lazily loaded member\n * @return {string} the mxc avatar url\n */\nRoomMember.prototype.getMxcAvatarUrl = function () {\n if (this.events.member) {\n return this.events.member.getDirectionalContent().avatar_url;\n } else if (this.user) {\n return this.user.avatarUrl;\n }\n return null;\n};\n\nfunction calculateDisplayName(selfUserId, displayName, roomState) {\n if (!displayName || displayName === selfUserId) {\n return selfUserId;\n }\n\n // First check if the displayname is something we consider truthy\n // after stripping it of zero width characters and padding spaces\n if (!utils.removeHiddenChars(displayName)) {\n return selfUserId;\n }\n\n if (!roomState) {\n return displayName;\n }\n\n // Next check if the name contains something that look like a mxid\n // If it does, it may be someone trying to impersonate someone else\n // Show full mxid in this case\n // Also show mxid if there are other people with the same or similar\n // displayname, after hidden character removal.\n var disambiguate = /@.+:.+/.test(displayName);\n if (!disambiguate) {\n var userIds = roomState.getUserIdsWithDisplayName(displayName);\n disambiguate = userIds.some(function (u) {\n return u !== selfUserId;\n });\n }\n\n if (disambiguate) {\n return displayName + \" (\" + selfUserId + \")\";\n }\n return displayName;\n}\n\n/**\n * The RoomMember class.\n */\nmodule.exports = RoomMember;\n\n/**\n * Fires whenever any room member's name changes.\n * @event module:client~MatrixClient#\"RoomMember.name\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {RoomMember} member The member whose RoomMember.name changed.\n * @param {string?} oldName The previous name. Null if the member didn't have a\n * name previously.\n * @example\n * matrixClient.on(\"RoomMember.name\", function(event, member){\n * var newName = member.name;\n * });\n */\n\n/**\n * Fires whenever any room member's membership state changes.\n * @event module:client~MatrixClient#\"RoomMember.membership\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {RoomMember} member The member whose RoomMember.membership changed.\n * @param {string?} oldMembership The previous membership state. Null if it's a\n * new member.\n * @example\n * matrixClient.on(\"RoomMember.membership\", function(event, member, oldMembership){\n * var newState = member.membership;\n * });\n */\n\n/**\n * Fires whenever any room member's typing state changes.\n * @event module:client~MatrixClient#\"RoomMember.typing\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {RoomMember} member The member whose RoomMember.typing changed.\n * @example\n * matrixClient.on(\"RoomMember.typing\", function(event, member){\n * var isTyping = member.typing;\n * });\n */\n\n/**\n * Fires whenever any room member's power level changes.\n * @event module:client~MatrixClient#\"RoomMember.powerLevel\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {RoomMember} member The member whose RoomMember.powerLevel changed.\n * @example\n * matrixClient.on(\"RoomMember.powerLevel\", function(event, member){\n * var newPowerLevel = member.powerLevel;\n * var newNormPowerLevel = member.powerLevelNorm;\n * });\n */\n//# sourceMappingURL=room-member.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module filter\n */\n\nvar FilterComponent = require(\"./filter-component\");\n\n/**\n * @param {Object} obj\n * @param {string} keyNesting\n * @param {*} val\n */\nfunction setProp(obj, keyNesting, val) {\n var nestedKeys = keyNesting.split(\".\");\n var currentObj = obj;\n for (var i = 0; i < nestedKeys.length - 1; i++) {\n if (!currentObj[nestedKeys[i]]) {\n currentObj[nestedKeys[i]] = {};\n }\n currentObj = currentObj[nestedKeys[i]];\n }\n currentObj[nestedKeys[nestedKeys.length - 1]] = val;\n}\n\n/**\n * Construct a new Filter.\n * @constructor\n * @param {string} userId The user ID for this filter.\n * @param {string=} filterId The filter ID if known.\n * @prop {string} userId The user ID of the filter\n * @prop {?string} filterId The filter ID\n */\nfunction Filter(userId, filterId) {\n this.userId = userId;\n this.filterId = filterId;\n this.definition = {};\n}\n\nFilter.LAZY_LOADING_MESSAGES_FILTER = {\n lazy_load_members: true\n};\n\nFilter.LAZY_LOADING_SYNC_FILTER = {\n room: {\n state: Filter.LAZY_LOADING_MESSAGES_FILTER\n }\n};\n\n/**\n * Get the ID of this filter on your homeserver (if known)\n * @return {?Number} The filter ID\n */\nFilter.prototype.getFilterId = function () {\n return this.filterId;\n};\n\n/**\n * Get the JSON body of the filter.\n * @return {Object} The filter definition\n */\nFilter.prototype.getDefinition = function () {\n return this.definition;\n};\n\n/**\n * Set the JSON body of the filter\n * @param {Object} definition The filter definition\n */\nFilter.prototype.setDefinition = function (definition) {\n this.definition = definition;\n\n // This is all ported from synapse's FilterCollection()\n\n // definitions look something like:\n // {\n // \"room\": {\n // \"rooms\": [\"!abcde:example.com\"],\n // \"not_rooms\": [\"!123456:example.com\"],\n // \"state\": {\n // \"types\": [\"m.room.*\"],\n // \"not_rooms\": [\"!726s6s6q:example.com\"],\n // },\n // \"timeline\": {\n // \"limit\": 10,\n // \"types\": [\"m.room.message\"],\n // \"not_rooms\": [\"!726s6s6q:example.com\"],\n // \"not_senders\": [\"@spam:example.com\"]\n // \"contains_url\": true\n // },\n // \"ephemeral\": {\n // \"types\": [\"m.receipt\", \"m.typing\"],\n // \"not_rooms\": [\"!726s6s6q:example.com\"],\n // \"not_senders\": [\"@spam:example.com\"]\n // }\n // },\n // \"presence\": {\n // \"types\": [\"m.presence\"],\n // \"not_senders\": [\"@alice:example.com\"]\n // },\n // \"event_format\": \"client\",\n // \"event_fields\": [\"type\", \"content\", \"sender\"]\n // }\n\n var room_filter_json = definition.room;\n\n // consider the top level rooms/not_rooms filter\n var room_filter_fields = {};\n if (room_filter_json) {\n if (room_filter_json.rooms) {\n room_filter_fields.rooms = room_filter_json.rooms;\n }\n if (room_filter_json.rooms) {\n room_filter_fields.not_rooms = room_filter_json.not_rooms;\n }\n\n this._include_leave = room_filter_json.include_leave || false;\n }\n\n this._room_filter = new FilterComponent(room_filter_fields);\n this._room_timeline_filter = new FilterComponent(room_filter_json ? room_filter_json.timeline || {} : {});\n\n // don't bother porting this from synapse yet:\n // this._room_state_filter =\n // new FilterComponent(room_filter_json.state || {});\n // this._room_ephemeral_filter =\n // new FilterComponent(room_filter_json.ephemeral || {});\n // this._room_account_data_filter =\n // new FilterComponent(room_filter_json.account_data || {});\n // this._presence_filter =\n // new FilterComponent(definition.presence || {});\n // this._account_data_filter =\n // new FilterComponent(definition.account_data || {});\n};\n\n/**\n * Get the room.timeline filter component of the filter\n * @return {FilterComponent} room timeline filter component\n */\nFilter.prototype.getRoomTimelineFilterComponent = function () {\n return this._room_timeline_filter;\n};\n\n/**\n * Filter the list of events based on whether they are allowed in a timeline\n * based on this filter\n * @param {MatrixEvent[]} events the list of events being filtered\n * @return {MatrixEvent[]} the list of events which match the filter\n */\nFilter.prototype.filterRoomTimeline = function (events) {\n return this._room_timeline_filter.filter(this._room_filter.filter(events));\n};\n\n/**\n * Set the max number of events to return for each room's timeline.\n * @param {Number} limit The max number of events to return for each room.\n */\nFilter.prototype.setTimelineLimit = function (limit) {\n setProp(this.definition, \"room.timeline.limit\", limit);\n};\n\n/**\n * Control whether left rooms should be included in responses.\n * @param {boolean} includeLeave True to make rooms the user has left appear\n * in responses.\n */\nFilter.prototype.setIncludeLeaveRooms = function (includeLeave) {\n setProp(this.definition, \"room.include_leave\", includeLeave);\n};\n\n/**\n * Create a filter from existing data.\n * @static\n * @param {string} userId\n * @param {string} filterId\n * @param {Object} jsonObj\n * @return {Filter}\n */\nFilter.fromJson = function (userId, filterId, jsonObj) {\n var filter = new Filter(userId, filterId);\n filter.setDefinition(jsonObj);\n return filter;\n};\n\n/** The Filter class */\nmodule.exports = Filter;\n//# sourceMappingURL=filter.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module models/event-timeline-set\n */\n\nvar _event = require(\"./event\");\n\nvar _logger = require(\"../../src/logger\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _relations = require(\"./relations\");\n\nvar _relations2 = _interopRequireDefault(_relations);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EventEmitter = require(\"events\").EventEmitter;\nvar utils = require(\"../utils\");\nvar EventTimeline = require(\"./event-timeline\");\n\n\n// var DEBUG = false;\nvar DEBUG = true;\n\nvar debuglog = void 0;\nif (DEBUG) {\n // using bind means that we get to keep useful line numbers in the console\n debuglog = _logger2.default.log.bind(_logger2.default);\n} else {\n debuglog = function debuglog() {};\n}\n\n/**\n * Construct a set of EventTimeline objects, typically on behalf of a given\n * room. A room may have multiple EventTimelineSets for different levels\n * of filtering. The global notification list is also an EventTimelineSet, but\n * lacks a room.\n *\n *

This is an ordered sequence of timelines, which may or may not\n * be continuous. Each timeline lists a series of events, as well as tracking\n * the room state at the start and the end of the timeline (if appropriate).\n * It also tracks forward and backward pagination tokens, as well as containing\n * links to the next timeline in the sequence.\n *\n *

There is one special timeline - the 'live' timeline, which represents the\n * timeline to which events are being added in real-time as they are received\n * from the /sync API. Note that you should not retain references to this\n * timeline - even if it is the current timeline right now, it may not remain\n * so if the server gives us a timeline gap in /sync.\n *\n *

In order that we can find events from their ids later, we also maintain a\n * map from event_id to timeline and index.\n *\n * @constructor\n * @param {?Room} room\n * Room for this timelineSet. May be null for non-room cases, such as the\n * notification timeline.\n * @param {Object} opts Options inherited from Room.\n *\n * @param {boolean} [opts.timelineSupport = false]\n * Set to true to enable improved timeline support.\n * @param {Object} [opts.filter = null]\n * The filter object, if any, for this timelineSet.\n * @param {boolean} [opts.unstableClientRelationAggregation = false]\n * Optional. Set to true to enable client-side aggregation of event relations\n * via `getRelationsForEvent`.\n * This feature is currently unstable and the API may change without notice.\n */\nfunction EventTimelineSet(room, opts) {\n this.room = room;\n\n this._timelineSupport = Boolean(opts.timelineSupport);\n this._liveTimeline = new EventTimeline(this);\n this._unstableClientRelationAggregation = !!opts.unstableClientRelationAggregation;\n\n // just a list - *not* ordered.\n this._timelines = [this._liveTimeline];\n this._eventIdToTimeline = {};\n\n this._filter = opts.filter || null;\n\n if (this._unstableClientRelationAggregation) {\n // A tree of objects to access a set of relations for an event, as in:\n // this._relations[relatesToEventId][relationType][relationEventType]\n this._relations = {};\n }\n}\nutils.inherits(EventTimelineSet, EventEmitter);\n\n/**\n * Get the filter object this timeline set is filtered on, if any\n * @return {?Filter} the optional filter for this timelineSet\n */\nEventTimelineSet.prototype.getFilter = function () {\n return this._filter;\n};\n\n/**\n * Set the filter object this timeline set is filtered on\n * (passed to the server when paginating via /messages).\n * @param {Filter} filter the filter for this timelineSet\n */\nEventTimelineSet.prototype.setFilter = function (filter) {\n this._filter = filter;\n};\n\n/**\n * Get the list of pending sent events for this timelineSet's room, filtered\n * by the timelineSet's filter if appropriate.\n *\n * @return {module:models/event.MatrixEvent[]} A list of the sent events\n * waiting for remote echo.\n *\n * @throws If opts.pendingEventOrdering was not 'detached'\n */\nEventTimelineSet.prototype.getPendingEvents = function () {\n if (!this.room) {\n return [];\n }\n\n if (this._filter) {\n return this._filter.filterRoomTimeline(this.room.getPendingEvents());\n } else {\n return this.room.getPendingEvents();\n }\n};\n\n/**\n * Get the live timeline for this room.\n *\n * @return {module:models/event-timeline~EventTimeline} live timeline\n */\nEventTimelineSet.prototype.getLiveTimeline = function () {\n return this._liveTimeline;\n};\n\n/**\n * Return the timeline (if any) this event is in.\n * @param {String} eventId the eventId being sought\n * @return {module:models/event-timeline~EventTimeline} timeline\n */\nEventTimelineSet.prototype.eventIdToTimeline = function (eventId) {\n return this._eventIdToTimeline[eventId];\n};\n\n/**\n * Track a new event as if it were in the same timeline as an old event,\n * replacing it.\n * @param {String} oldEventId event ID of the original event\n * @param {String} newEventId event ID of the replacement event\n */\nEventTimelineSet.prototype.replaceEventId = function (oldEventId, newEventId) {\n var existingTimeline = this._eventIdToTimeline[oldEventId];\n if (existingTimeline) {\n delete this._eventIdToTimeline[oldEventId];\n this._eventIdToTimeline[newEventId] = existingTimeline;\n }\n};\n\n/**\n * Reset the live timeline, and start a new one.\n *\n *

This is used when /sync returns a 'limited' timeline.\n *\n * @param {string=} backPaginationToken token for back-paginating the new timeline\n * @param {string=} forwardPaginationToken token for forward-paginating the old live timeline,\n * if absent or null, all timelines are reset.\n *\n * @fires module:client~MatrixClient#event:\"Room.timelineReset\"\n */\nEventTimelineSet.prototype.resetLiveTimeline = function (backPaginationToken, forwardPaginationToken) {\n // Each EventTimeline has RoomState objects tracking the state at the start\n // and end of that timeline. The copies at the end of the live timeline are\n // special because they will have listeners attached to monitor changes to\n // the current room state, so we move this RoomState from the end of the\n // current live timeline to the end of the new one and, if necessary,\n // replace it with a newly created one. We also make a copy for the start\n // of the new timeline.\n\n // if timeline support is disabled, forget about the old timelines\n var resetAllTimelines = !this._timelineSupport || !forwardPaginationToken;\n\n var oldTimeline = this._liveTimeline;\n var newTimeline = resetAllTimelines ? oldTimeline.forkLive(EventTimeline.FORWARDS) : oldTimeline.fork(EventTimeline.FORWARDS);\n\n if (resetAllTimelines) {\n this._timelines = [newTimeline];\n this._eventIdToTimeline = {};\n } else {\n this._timelines.push(newTimeline);\n }\n\n if (forwardPaginationToken) {\n // Now set the forward pagination token on the old live timeline\n // so it can be forward-paginated.\n oldTimeline.setPaginationToken(forwardPaginationToken, EventTimeline.FORWARDS);\n }\n\n // make sure we set the pagination token before firing timelineReset,\n // otherwise clients which start back-paginating will fail, and then get\n // stuck without realising that they *can* back-paginate.\n newTimeline.setPaginationToken(backPaginationToken, EventTimeline.BACKWARDS);\n\n // Now we can swap the live timeline to the new one.\n this._liveTimeline = newTimeline;\n this.emit(\"Room.timelineReset\", this.room, this, resetAllTimelines);\n};\n\n/**\n * Get the timeline which contains the given event, if any\n *\n * @param {string} eventId event ID to look for\n * @return {?module:models/event-timeline~EventTimeline} timeline containing\n * the given event, or null if unknown\n */\nEventTimelineSet.prototype.getTimelineForEvent = function (eventId) {\n var res = this._eventIdToTimeline[eventId];\n return res === undefined ? null : res;\n};\n\n/**\n * Get an event which is stored in our timelines\n *\n * @param {string} eventId event ID to look for\n * @return {?module:models/event~MatrixEvent} the given event, or undefined if unknown\n */\nEventTimelineSet.prototype.findEventById = function (eventId) {\n var tl = this.getTimelineForEvent(eventId);\n if (!tl) {\n return undefined;\n }\n return utils.findElement(tl.getEvents(), function (ev) {\n return ev.getId() == eventId;\n });\n};\n\n/**\n * Add a new timeline to this timeline list\n *\n * @return {module:models/event-timeline~EventTimeline} newly-created timeline\n */\nEventTimelineSet.prototype.addTimeline = function () {\n if (!this._timelineSupport) {\n throw new Error(\"timeline support is disabled. Set the 'timelineSupport'\" + \" parameter to true when creating MatrixClient to enable\" + \" it.\");\n }\n\n var timeline = new EventTimeline(this);\n this._timelines.push(timeline);\n return timeline;\n};\n\n/**\n * Add events to a timeline\n *\n *

Will fire \"Room.timeline\" for each event added.\n *\n * @param {MatrixEvent[]} events A list of events to add.\n *\n * @param {boolean} toStartOfTimeline True to add these events to the start\n * (oldest) instead of the end (newest) of the timeline. If true, the oldest\n * event will be the last element of 'events'.\n *\n * @param {module:models/event-timeline~EventTimeline} timeline timeline to\n * add events to.\n *\n * @param {string=} paginationToken token for the next batch of events\n *\n * @fires module:client~MatrixClient#event:\"Room.timeline\"\n *\n */\nEventTimelineSet.prototype.addEventsToTimeline = function (events, toStartOfTimeline, timeline, paginationToken) {\n if (!timeline) {\n throw new Error(\"'timeline' not specified for EventTimelineSet.addEventsToTimeline\");\n }\n\n if (!toStartOfTimeline && timeline == this._liveTimeline) {\n throw new Error(\"EventTimelineSet.addEventsToTimeline cannot be used for adding events to \" + \"the live timeline - use Room.addLiveEvents instead\");\n }\n\n if (this._filter) {\n events = this._filter.filterRoomTimeline(events);\n if (!events.length) {\n return;\n }\n }\n\n var direction = toStartOfTimeline ? EventTimeline.BACKWARDS : EventTimeline.FORWARDS;\n var inverseDirection = toStartOfTimeline ? EventTimeline.FORWARDS : EventTimeline.BACKWARDS;\n\n // Adding events to timelines can be quite complicated. The following\n // illustrates some of the corner-cases.\n //\n // Let's say we start by knowing about four timelines. timeline3 and\n // timeline4 are neighbours:\n //\n // timeline1 timeline2 timeline3 timeline4\n // [M] [P] [S] <------> [T]\n //\n // Now we paginate timeline1, and get the following events from the server:\n // [M, N, P, R, S, T, U].\n //\n // 1. First, we ignore event M, since we already know about it.\n //\n // 2. Next, we append N to timeline 1.\n //\n // 3. Next, we don't add event P, since we already know about it,\n // but we do link together the timelines. We now have:\n //\n // timeline1 timeline2 timeline3 timeline4\n // [M, N] <---> [P] [S] <------> [T]\n //\n // 4. Now we add event R to timeline2:\n //\n // timeline1 timeline2 timeline3 timeline4\n // [M, N] <---> [P, R] [S] <------> [T]\n //\n // Note that we have switched the timeline we are working on from\n // timeline1 to timeline2.\n //\n // 5. We ignore event S, but again join the timelines:\n //\n // timeline1 timeline2 timeline3 timeline4\n // [M, N] <---> [P, R] <---> [S] <------> [T]\n //\n // 6. We ignore event T, and the timelines are already joined, so there\n // is nothing to do.\n //\n // 7. Finally, we add event U to timeline4:\n //\n // timeline1 timeline2 timeline3 timeline4\n // [M, N] <---> [P, R] <---> [S] <------> [T, U]\n //\n // The important thing to note in the above is what happened when we\n // already knew about a given event:\n //\n // - if it was appropriate, we joined up the timelines (steps 3, 5).\n // - in any case, we started adding further events to the timeline which\n // contained the event we knew about (steps 3, 5, 6).\n //\n //\n // So much for adding events to the timeline. But what do we want to do\n // with the pagination token?\n //\n // In the case above, we will be given a pagination token which tells us how to\n // get events beyond 'U' - in this case, it makes sense to store this\n // against timeline4. But what if timeline4 already had 'U' and beyond? in\n // that case, our best bet is to throw away the pagination token we were\n // given and stick with whatever token timeline4 had previously. In short,\n // we want to only store the pagination token if the last event we receive\n // is one we didn't previously know about.\n //\n // We make an exception for this if it turns out that we already knew about\n // *all* of the events, and we weren't able to join up any timelines. When\n // that happens, it means our existing pagination token is faulty, since it\n // is only telling us what we already know. Rather than repeatedly\n // paginating with the same token, we might as well use the new pagination\n // token in the hope that we eventually work our way out of the mess.\n\n var didUpdate = false;\n var lastEventWasNew = false;\n for (var i = 0; i < events.length; i++) {\n var event = events[i];\n var eventId = event.getId();\n\n var existingTimeline = this._eventIdToTimeline[eventId];\n\n if (!existingTimeline) {\n // we don't know about this event yet. Just add it to the timeline.\n this.addEventToTimeline(event, timeline, toStartOfTimeline);\n lastEventWasNew = true;\n didUpdate = true;\n continue;\n }\n\n lastEventWasNew = false;\n\n if (existingTimeline == timeline) {\n debuglog(\"Event \" + eventId + \" already in timeline \" + timeline);\n continue;\n }\n\n var neighbour = timeline.getNeighbouringTimeline(direction);\n if (neighbour) {\n // this timeline already has a neighbour in the relevant direction;\n // let's assume the timelines are already correctly linked up, and\n // skip over to it.\n //\n // there's probably some edge-case here where we end up with an\n // event which is in a timeline a way down the chain, and there is\n // a break in the chain somewhere. But I can't really imagine how\n // that would happen, so I'm going to ignore it for now.\n //\n if (existingTimeline == neighbour) {\n debuglog(\"Event \" + eventId + \" in neighbouring timeline - \" + \"switching to \" + existingTimeline);\n } else {\n debuglog(\"Event \" + eventId + \" already in a different \" + \"timeline \" + existingTimeline);\n }\n timeline = existingTimeline;\n continue;\n }\n\n // time to join the timelines.\n _logger2.default.info(\"Already have timeline for \" + eventId + \" - joining timeline \" + timeline + \" to \" + existingTimeline);\n\n // Variables to keep the line length limited below.\n var existingIsLive = existingTimeline === this._liveTimeline;\n var timelineIsLive = timeline === this._liveTimeline;\n\n var backwardsIsLive = direction === EventTimeline.BACKWARDS && existingIsLive;\n var forwardsIsLive = direction === EventTimeline.FORWARDS && timelineIsLive;\n\n if (backwardsIsLive || forwardsIsLive) {\n // The live timeline should never be spliced into a non-live position.\n // We use independent logging to better discover the problem at a glance.\n if (backwardsIsLive) {\n _logger2.default.warn(\"Refusing to set a preceding existingTimeLine on our \" + \"timeline as the existingTimeLine is live (\" + existingTimeline + \")\");\n }\n if (forwardsIsLive) {\n _logger2.default.warn(\"Refusing to set our preceding timeline on a existingTimeLine \" + \"as our timeline is live (\" + timeline + \")\");\n }\n continue; // abort splicing - try next event\n }\n\n timeline.setNeighbouringTimeline(existingTimeline, direction);\n existingTimeline.setNeighbouringTimeline(timeline, inverseDirection);\n\n timeline = existingTimeline;\n didUpdate = true;\n }\n\n // see above - if the last event was new to us, or if we didn't find any\n // new information, we update the pagination token for whatever\n // timeline we ended up on.\n if (lastEventWasNew || !didUpdate) {\n if (direction === EventTimeline.FORWARDS && timeline === this._liveTimeline) {\n _logger2.default.warn({ lastEventWasNew: lastEventWasNew, didUpdate: didUpdate }); // for debugging\n _logger2.default.warn(\"Refusing to set forwards pagination token of live timeline \" + (timeline + \" to \" + paginationToken));\n return;\n }\n timeline.setPaginationToken(paginationToken, direction);\n }\n};\n\n/**\n * Add an event to the end of this live timeline.\n *\n * @param {MatrixEvent} event Event to be added\n * @param {string?} duplicateStrategy 'ignore' or 'replace'\n */\nEventTimelineSet.prototype.addLiveEvent = function (event, duplicateStrategy) {\n if (this._filter) {\n var events = this._filter.filterRoomTimeline([event]);\n if (!events.length) {\n return;\n }\n }\n\n var timeline = this._eventIdToTimeline[event.getId()];\n if (timeline) {\n if (duplicateStrategy === \"replace\") {\n debuglog(\"EventTimelineSet.addLiveEvent: replacing duplicate event \" + event.getId());\n var tlEvents = timeline.getEvents();\n for (var j = 0; j < tlEvents.length; j++) {\n if (tlEvents[j].getId() === event.getId()) {\n // still need to set the right metadata on this event\n EventTimeline.setEventMetadata(event, timeline.getState(EventTimeline.FORWARDS), false);\n\n if (!tlEvents[j].encryptedType) {\n tlEvents[j] = event;\n }\n\n // XXX: we need to fire an event when this happens.\n break;\n }\n }\n } else {\n debuglog(\"EventTimelineSet.addLiveEvent: ignoring duplicate event \" + event.getId());\n }\n return;\n }\n\n this.addEventToTimeline(event, this._liveTimeline, false);\n};\n\n/**\n * Add event to the given timeline, and emit Room.timeline. Assumes\n * we have already checked we don't know about this event.\n *\n * Will fire \"Room.timeline\" for each event added.\n *\n * @param {MatrixEvent} event\n * @param {EventTimeline} timeline\n * @param {boolean} toStartOfTimeline\n *\n * @fires module:client~MatrixClient#event:\"Room.timeline\"\n */\nEventTimelineSet.prototype.addEventToTimeline = function (event, timeline, toStartOfTimeline) {\n var eventId = event.getId();\n timeline.addEvent(event, toStartOfTimeline);\n this._eventIdToTimeline[eventId] = timeline;\n\n this.setRelationsTarget(event);\n this.aggregateRelations(event);\n\n var data = {\n timeline: timeline,\n liveEvent: !toStartOfTimeline && timeline == this._liveTimeline\n };\n this.emit(\"Room.timeline\", event, this.room, Boolean(toStartOfTimeline), false, data);\n};\n\n/**\n * Replaces event with ID oldEventId with one with newEventId, if oldEventId is\n * recognised. Otherwise, add to the live timeline. Used to handle remote echos.\n *\n * @param {MatrixEvent} localEvent the new event to be added to the timeline\n * @param {String} oldEventId the ID of the original event\n * @param {boolean} newEventId the ID of the replacement event\n *\n * @fires module:client~MatrixClient#event:\"Room.timeline\"\n */\nEventTimelineSet.prototype.handleRemoteEcho = function (localEvent, oldEventId, newEventId) {\n // XXX: why don't we infer newEventId from localEvent?\n var existingTimeline = this._eventIdToTimeline[oldEventId];\n if (existingTimeline) {\n delete this._eventIdToTimeline[oldEventId];\n this._eventIdToTimeline[newEventId] = existingTimeline;\n } else {\n if (this._filter) {\n if (this._filter.filterRoomTimeline([localEvent]).length) {\n this.addEventToTimeline(localEvent, this._liveTimeline, false);\n }\n } else {\n this.addEventToTimeline(localEvent, this._liveTimeline, false);\n }\n }\n};\n\n/**\n * Removes a single event from this room.\n *\n * @param {String} eventId The id of the event to remove\n *\n * @return {?MatrixEvent} the removed event, or null if the event was not found\n * in this room.\n */\nEventTimelineSet.prototype.removeEvent = function (eventId) {\n var timeline = this._eventIdToTimeline[eventId];\n if (!timeline) {\n return null;\n }\n\n var removed = timeline.removeEvent(eventId);\n if (removed) {\n delete this._eventIdToTimeline[eventId];\n var data = {\n timeline: timeline\n };\n this.emit(\"Room.timeline\", removed, this.room, undefined, true, data);\n }\n return removed;\n};\n\n/**\n * Determine where two events appear in the timeline relative to one another\n *\n * @param {string} eventId1 The id of the first event\n * @param {string} eventId2 The id of the second event\n\n * @return {?number} a number less than zero if eventId1 precedes eventId2, and\n * greater than zero if eventId1 succeeds eventId2. zero if they are the\n * same event; null if we can't tell (either because we don't know about one\n * of the events, or because they are in separate timelines which don't join\n * up).\n */\nEventTimelineSet.prototype.compareEventOrdering = function (eventId1, eventId2) {\n if (eventId1 == eventId2) {\n // optimise this case\n return 0;\n }\n\n var timeline1 = this._eventIdToTimeline[eventId1];\n var timeline2 = this._eventIdToTimeline[eventId2];\n\n if (timeline1 === undefined) {\n return null;\n }\n if (timeline2 === undefined) {\n return null;\n }\n\n if (timeline1 === timeline2) {\n // both events are in the same timeline - figure out their\n // relative indices\n var idx1 = void 0,\n idx2 = void 0;\n var events = timeline1.getEvents();\n for (var idx = 0; idx < events.length && (idx1 === undefined || idx2 === undefined); idx++) {\n var evId = events[idx].getId();\n if (evId == eventId1) {\n idx1 = idx;\n }\n if (evId == eventId2) {\n idx2 = idx;\n }\n }\n return idx1 - idx2;\n }\n\n // the events are in different timelines. Iterate through the\n // linkedlist to see which comes first.\n\n // first work forwards from timeline1\n var tl = timeline1;\n while (tl) {\n if (tl === timeline2) {\n // timeline1 is before timeline2\n return -1;\n }\n tl = tl.getNeighbouringTimeline(EventTimeline.FORWARDS);\n }\n\n // now try backwards from timeline1\n tl = timeline1;\n while (tl) {\n if (tl === timeline2) {\n // timeline2 is before timeline1\n return 1;\n }\n tl = tl.getNeighbouringTimeline(EventTimeline.BACKWARDS);\n }\n\n // the timelines are not contiguous.\n return null;\n};\n\n/**\n * Get a collection of relations to a given event in this timeline set.\n *\n * @param {String} eventId\n * The ID of the event that you'd like to access relation events for.\n * For example, with annotations, this would be the ID of the event being annotated.\n * @param {String} relationType\n * The type of relation involved, such as \"m.annotation\", \"m.reference\", \"m.replace\", etc.\n * @param {String} eventType\n * The relation event's type, such as \"m.reaction\", etc.\n *\n * @returns {Relations}\n * A container for relation events.\n */\nEventTimelineSet.prototype.getRelationsForEvent = function (eventId, relationType, eventType) {\n if (!this._unstableClientRelationAggregation) {\n throw new Error(\"Client-side relation aggregation is disabled\");\n }\n\n if (!eventId || !relationType || !eventType) {\n throw new Error(\"Invalid arguments for `getRelationsForEvent`\");\n }\n\n // debuglog(\"Getting relations for: \", eventId, relationType, eventType);\n\n var relationsForEvent = this._relations[eventId] || {};\n var relationsWithRelType = relationsForEvent[relationType] || {};\n return relationsWithRelType[eventType];\n};\n\n/**\n * Set an event as the target event if any Relations exist for it already\n *\n * @param {MatrixEvent} event\n * The event to check as relation target.\n */\nEventTimelineSet.prototype.setRelationsTarget = function (event) {\n if (!this._unstableClientRelationAggregation) {\n return;\n }\n\n var relationsForEvent = this._relations[event.getId()];\n if (!relationsForEvent) {\n return;\n }\n // don't need it for non m.replace relations for now\n var relationsWithRelType = relationsForEvent[\"m.replace\"];\n if (!relationsWithRelType) {\n return;\n }\n // only doing replacements for messages for now (e.g. edits)\n var relationsWithEventType = relationsWithRelType[\"m.room.message\"];\n\n if (relationsWithEventType) {\n relationsWithEventType.setTargetEvent(event);\n }\n};\n\n/**\n * Add relation events to the relevant relation collection.\n *\n * @param {MatrixEvent} event\n * The new relation event to be aggregated.\n */\nEventTimelineSet.prototype.aggregateRelations = function (event) {\n var _this = this;\n\n if (!this._unstableClientRelationAggregation) {\n return;\n }\n\n if (event.isRedacted() || event.status === _event.EventStatus.CANCELLED) {\n return;\n }\n\n // If the event is currently encrypted, wait until it has been decrypted.\n if (event.isBeingDecrypted()) {\n event.once(\"Event.decrypted\", function () {\n _this.aggregateRelations(event);\n });\n return;\n }\n\n var relation = event.getRelation();\n if (!relation) {\n return;\n }\n\n var relatesToEventId = relation.event_id;\n var relationType = relation.rel_type;\n var eventType = event.getType();\n\n // debuglog(\"Aggregating relation: \", event.getId(), eventType, relation);\n\n var relationsForEvent = this._relations[relatesToEventId];\n if (!relationsForEvent) {\n relationsForEvent = this._relations[relatesToEventId] = {};\n }\n var relationsWithRelType = relationsForEvent[relationType];\n if (!relationsWithRelType) {\n relationsWithRelType = relationsForEvent[relationType] = {};\n }\n var relationsWithEventType = relationsWithRelType[eventType];\n\n if (!relationsWithEventType) {\n relationsWithEventType = relationsWithRelType[eventType] = new _relations2.default(relationType, eventType, this.room);\n var relatesToEvent = this.findEventById(relatesToEventId);\n if (relatesToEvent) {\n relationsWithEventType.setTargetEvent(relatesToEvent);\n relatesToEvent.emit(\"Event.relationsCreated\", relationType, eventType);\n }\n }\n\n relationsWithEventType.addEvent(event);\n};\n\n/**\n * The EventTimelineSet class.\n */\nmodule.exports = EventTimelineSet;\n\n/**\n * Fires whenever the timeline in a room is updated.\n * @event module:client~MatrixClient#\"Room.timeline\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {?Room} room The room, if any, whose timeline was updated.\n * @param {boolean} toStartOfTimeline True if this event was added to the start\n * @param {boolean} removed True if this event has just been removed from the timeline\n * (beginning; oldest) of the timeline e.g. due to pagination.\n *\n * @param {object} data more data about the event\n *\n * @param {module:event-timeline.EventTimeline} data.timeline the timeline the\n * event was added to/removed from\n *\n * @param {boolean} data.liveEvent true if the event was a real-time event\n * added to the end of the live timeline\n *\n * @example\n * matrixClient.on(\"Room.timeline\",\n * function(event, room, toStartOfTimeline, removed, data) {\n * if (!toStartOfTimeline && data.liveEvent) {\n * var messageToAppend = room.timeline.[room.timeline.length - 1];\n * }\n * });\n */\n\n/**\n * Fires whenever the live timeline in a room is reset.\n *\n * When we get a 'limited' sync (for example, after a network outage), we reset\n * the live timeline to be empty before adding the recent events to the new\n * timeline. This event is fired after the timeline is reset, and before the\n * new events are added.\n *\n * @event module:client~MatrixClient#\"Room.timelineReset\"\n * @param {Room} room The room whose live timeline was reset, if any\n * @param {EventTimelineSet} timelineSet timelineSet room whose live timeline was reset\n * @param {boolean} resetAllTimelines True if all timelines were reset.\n */\n//# sourceMappingURL=event-timeline-set.js.map","'use strict';\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n merge: merge\n};\n","'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _CallHandler = require('./CallHandler');\n\nvar _CallHandler2 = _interopRequireDefault(_CallHandler);\n\nvar _languageHandler = require('./languageHandler');\n\nvar _Roles = require('./Roles');\n\nvar Roles = _interopRequireWildcard(_Roles);\n\nvar _RoomInvite = require('./RoomInvite');\n\nvar _SettingsStore = require('./settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nfunction textForMemberEvent(ev) {\n // XXX: SYJS-16 \"sender is sometimes null for join messages\"\n var senderName = ev.sender ? ev.sender.name : ev.getSender();\n var targetName = ev.target ? ev.target.name : ev.getStateKey();\n var prevContent = ev.getPrevContent();\n var content = ev.getContent();\n\n var ConferenceHandler = _CallHandler2.default.getConferenceHandler();\n var reason = content.reason ? (0, _languageHandler._t)('Reason') + ': ' + content.reason : '';\n switch (content.membership) {\n case 'invite':\n {\n var threePidContent = content.third_party_invite;\n if (threePidContent) {\n if (threePidContent.display_name) {\n return (0, _languageHandler._t)('%(targetName)s accepted the invitation for %(displayName)s.', {\n targetName: targetName,\n displayName: threePidContent.display_name\n });\n } else {\n return (0, _languageHandler._t)('%(targetName)s accepted an invitation.', { targetName: targetName });\n }\n } else {\n if (ConferenceHandler && ConferenceHandler.isConferenceUser(ev.getStateKey())) {\n return (0, _languageHandler._t)('%(senderName)s requested a VoIP conference.', { senderName: senderName });\n } else {\n return (0, _languageHandler._t)('%(senderName)s invited %(targetName)s.', { senderName: senderName, targetName: targetName });\n }\n }\n }\n case 'ban':\n return (0, _languageHandler._t)('%(senderName)s banned %(targetName)s.', { senderName: senderName, targetName: targetName }) + ' ' + reason;\n case 'join':\n if (prevContent && prevContent.membership === 'join') {\n if (prevContent.displayname && content.displayname && prevContent.displayname !== content.displayname) {\n return (0, _languageHandler._t)('%(oldDisplayName)s changed their display name to %(displayName)s.', {\n oldDisplayName: prevContent.displayname,\n displayName: content.displayname\n });\n } else if (!prevContent.displayname && content.displayname) {\n return (0, _languageHandler._t)('%(senderName)s set their display name to %(displayName)s.', {\n senderName: ev.getSender(),\n displayName: content.displayname\n });\n } else if (prevContent.displayname && !content.displayname) {\n return (0, _languageHandler._t)('%(senderName)s removed their display name (%(oldDisplayName)s).', {\n senderName: senderName,\n oldDisplayName: prevContent.displayname\n });\n } else if (prevContent.avatar_url && !content.avatar_url) {\n return (0, _languageHandler._t)('%(senderName)s removed their profile picture.', { senderName: senderName });\n } else if (prevContent.avatar_url && content.avatar_url && prevContent.avatar_url !== content.avatar_url) {\n return (0, _languageHandler._t)('%(senderName)s changed their profile picture.', { senderName: senderName });\n } else if (!prevContent.avatar_url && content.avatar_url) {\n return (0, _languageHandler._t)('%(senderName)s set a profile picture.', { senderName: senderName });\n } else if (_SettingsStore2.default.getValue(\"showHiddenEventsInTimeline\")) {\n // This is a null rejoin, it will only be visible if the Labs option is enabled\n return (0, _languageHandler._t)(\"%(senderName)s made no change.\", { senderName: senderName });\n } else {\n return \"\";\n }\n } else {\n if (!ev.target) console.warn(\"Join message has no target! -- \" + ev.getContent().state_key);\n if (ConferenceHandler && ConferenceHandler.isConferenceUser(ev.getStateKey())) {\n return (0, _languageHandler._t)('VoIP conference started.');\n } else {\n return (0, _languageHandler._t)('%(targetName)s joined the room.', { targetName: targetName });\n }\n }\n case 'leave':\n if (ev.getSender() === ev.getStateKey()) {\n if (ConferenceHandler && ConferenceHandler.isConferenceUser(ev.getStateKey())) {\n return (0, _languageHandler._t)('VoIP conference finished.');\n } else if (prevContent.membership === \"invite\") {\n return (0, _languageHandler._t)('%(targetName)s rejected the invitation.', { targetName: targetName });\n } else {\n return (0, _languageHandler._t)('%(targetName)s left the room.', { targetName: targetName });\n }\n } else if (prevContent.membership === \"ban\") {\n return (0, _languageHandler._t)('%(senderName)s unbanned %(targetName)s.', { senderName: senderName, targetName: targetName });\n } else if (prevContent.membership === \"invite\") {\n return (0, _languageHandler._t)('%(senderName)s withdrew %(targetName)s\\'s invitation.', {\n senderName: senderName,\n targetName: targetName\n }) + ' ' + reason;\n } else {\n // sender is not target and made the target leave, if not from invite/ban then this is a kick\n return (0, _languageHandler._t)('%(senderName)s kicked %(targetName)s.', { senderName: senderName, targetName: targetName }) + ' ' + reason;\n }\n }\n}\n\nfunction textForTopicEvent(ev) {\n var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n return (0, _languageHandler._t)('%(senderDisplayName)s changed the topic to \"%(topic)s\".', {\n senderDisplayName: senderDisplayName,\n topic: ev.getContent().topic\n });\n}\n\nfunction textForRoomNameEvent(ev) {\n var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n\n if (!ev.getContent().name || ev.getContent().name.trim().length === 0) {\n return (0, _languageHandler._t)('%(senderDisplayName)s removed the room name.', { senderDisplayName: senderDisplayName });\n }\n return (0, _languageHandler._t)('%(senderDisplayName)s changed the room name to %(roomName)s.', {\n senderDisplayName: senderDisplayName,\n roomName: ev.getContent().name\n });\n}\n\nfunction textForTombstoneEvent(ev) {\n var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n return (0, _languageHandler._t)('%(senderDisplayName)s upgraded this room.', { senderDisplayName: senderDisplayName });\n}\n\nfunction textForJoinRulesEvent(ev) {\n var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n switch (ev.getContent().join_rule) {\n case \"public\":\n return (0, _languageHandler._t)('%(senderDisplayName)s made the room public to whoever knows the link.', { senderDisplayName: senderDisplayName });\n case \"invite\":\n return (0, _languageHandler._t)('%(senderDisplayName)s made the room invite only.', { senderDisplayName: senderDisplayName });\n default:\n // The spec supports \"knock\" and \"private\", however nothing implements these.\n return (0, _languageHandler._t)('%(senderDisplayName)s changed the join rule to %(rule)s', {\n senderDisplayName: senderDisplayName,\n rule: ev.getContent().join_rule\n });\n }\n}\n\nfunction textForGuestAccessEvent(ev) {\n var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n switch (ev.getContent().guest_access) {\n case \"can_join\":\n return (0, _languageHandler._t)('%(senderDisplayName)s has allowed guests to join the room.', { senderDisplayName: senderDisplayName });\n case \"forbidden\":\n return (0, _languageHandler._t)('%(senderDisplayName)s has prevented guests from joining the room.', { senderDisplayName: senderDisplayName });\n default:\n // There's no other options we can expect, however just for safety's sake we'll do this.\n return (0, _languageHandler._t)('%(senderDisplayName)s changed guest access to %(rule)s', {\n senderDisplayName: senderDisplayName,\n rule: ev.getContent().guest_access\n });\n }\n}\n\nfunction textForRelatedGroupsEvent(ev) {\n var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n var groups = ev.getContent().groups || [];\n var prevGroups = ev.getPrevContent().groups || [];\n var added = groups.filter(function (g) {\n return !prevGroups.includes(g);\n });\n var removed = prevGroups.filter(function (g) {\n return !groups.includes(g);\n });\n\n if (added.length && !removed.length) {\n return (0, _languageHandler._t)('%(senderDisplayName)s enabled flair for %(groups)s in this room.', {\n senderDisplayName: senderDisplayName,\n groups: added.join(', ')\n });\n } else if (!added.length && removed.length) {\n return (0, _languageHandler._t)('%(senderDisplayName)s disabled flair for %(groups)s in this room.', {\n senderDisplayName: senderDisplayName,\n groups: removed.join(', ')\n });\n } else if (added.length && removed.length) {\n return (0, _languageHandler._t)('%(senderDisplayName)s enabled flair for %(newGroups)s and disabled flair for ' + '%(oldGroups)s in this room.', {\n senderDisplayName: senderDisplayName,\n newGroups: added.join(', '),\n oldGroups: removed.join(', ')\n });\n } else {\n // Don't bother rendering this change (because there were no changes)\n return '';\n }\n}\n\nfunction textForServerACLEvent(ev) {\n var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n var prevContent = ev.getPrevContent();\n var changes = [];\n var current = ev.getContent();\n var prev = {\n deny: Array.isArray(prevContent.deny) ? prevContent.deny : [],\n allow: Array.isArray(prevContent.allow) ? prevContent.allow : [],\n allow_ip_literals: !(prevContent.allow_ip_literals === false)\n };\n var text = \"\";\n if (prev.deny.length === 0 && prev.allow.length === 0) {\n text = senderDisplayName + ' set server ACLs for this room: ';\n } else {\n text = senderDisplayName + ' changed the server ACLs for this room: ';\n }\n\n if (!Array.isArray(current.allow)) {\n current.allow = [];\n }\n /* If we know for sure everyone is banned, don't bother showing the diff view */\n if (current.allow.length === 0) {\n return text + \"🎉 All servers are banned from participating! This room can no longer be used.\";\n }\n\n if (!Array.isArray(current.deny)) {\n current.deny = [];\n }\n\n var bannedServers = current.deny.filter(function (srv) {\n return typeof srv === 'string' && !prev.deny.includes(srv);\n });\n var unbannedServers = prev.deny.filter(function (srv) {\n return typeof srv === 'string' && !current.deny.includes(srv);\n });\n var allowedServers = current.allow.filter(function (srv) {\n return typeof srv === 'string' && !prev.allow.includes(srv);\n });\n var unallowedServers = prev.allow.filter(function (srv) {\n return typeof srv === 'string' && !current.allow.includes(srv);\n });\n\n if (bannedServers.length > 0) {\n changes.push('Servers matching ' + bannedServers.join(\", \") + ' are now banned.');\n }\n\n if (unbannedServers.length > 0) {\n changes.push('Servers matching ' + unbannedServers.join(\", \") + ' were removed from the ban list.');\n }\n\n if (allowedServers.length > 0) {\n changes.push('Servers matching ' + allowedServers.join(\", \") + ' are now allowed.');\n }\n\n if (unallowedServers.length > 0) {\n changes.push('Servers matching ' + unallowedServers.join(\", \") + ' were removed from the allowed list.');\n }\n\n if (prev.allow_ip_literals !== current.allow_ip_literals) {\n var allowban = current.allow_ip_literals ? \"allowed\" : \"banned\";\n changes.push('Participating from a server using an IP literal hostname is now ' + allowban + '.');\n }\n\n return text + changes.join(\" \");\n}\n\nfunction textForMessageEvent(ev) {\n var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n var message = senderDisplayName + ': ' + ev.getContent().body;\n if (ev.getContent().msgtype === \"m.emote\") {\n message = \"* \" + senderDisplayName + \" \" + message;\n } else if (ev.getContent().msgtype === \"m.image\") {\n message = (0, _languageHandler._t)('%(senderDisplayName)s sent an image.', { senderDisplayName: senderDisplayName });\n }\n return message;\n}\n\nfunction textForRoomAliasesEvent(ev) {\n // An alternative implementation of this as a first-class event can be found at\n // https://github.com/matrix-org/matrix-react-sdk/blob/dc7212ec2bd12e1917233ed7153b3e0ef529a135/src/components/views/messages/RoomAliasesEvent.js\n // This feels a bit overkill though, and it's not clear the i18n really needs it\n // so instead it's landing as a simple textual event.\n\n var senderName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n var oldAliases = ev.getPrevContent().aliases || [];\n var newAliases = ev.getContent().aliases || [];\n\n var addedAliases = newAliases.filter(function (x) {\n return !oldAliases.includes(x);\n });\n var removedAliases = oldAliases.filter(function (x) {\n return !newAliases.includes(x);\n });\n\n if (!addedAliases.length && !removedAliases.length) {\n return '';\n }\n\n if (addedAliases.length && !removedAliases.length) {\n return (0, _languageHandler._t)('%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.', {\n senderName: senderName,\n count: addedAliases.length,\n addedAddresses: addedAliases.join(', ')\n });\n } else if (!addedAliases.length && removedAliases.length) {\n return (0, _languageHandler._t)('%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.', {\n senderName: senderName,\n count: removedAliases.length,\n removedAddresses: removedAliases.join(', ')\n });\n } else {\n return (0, _languageHandler._t)('%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.', {\n senderName: senderName,\n addedAddresses: addedAliases.join(', '),\n removedAddresses: removedAliases.join(', ')\n });\n }\n}\n\nfunction textForCanonicalAliasEvent(ev) {\n var senderName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n var oldAlias = ev.getPrevContent().alias;\n var newAlias = ev.getContent().alias;\n\n if (newAlias) {\n return (0, _languageHandler._t)('%(senderName)s set the main address for this room to %(address)s.', {\n senderName: senderName,\n address: ev.getContent().alias\n });\n } else if (oldAlias) {\n return (0, _languageHandler._t)('%(senderName)s removed the main address for this room.', {\n senderName: senderName\n });\n }\n}\n\nfunction textForCallAnswerEvent(event) {\n var senderName = event.sender ? event.sender.name : (0, _languageHandler._t)('Someone');\n var supported = _MatrixClientPeg2.default.get().supportsVoip() ? '' : (0, _languageHandler._t)('(not supported by this browser)');\n return (0, _languageHandler._t)('%(senderName)s answered the call.', { senderName: senderName }) + ' ' + supported;\n}\n\nfunction textForCallHangupEvent(event) {\n var senderName = event.sender ? event.sender.name : (0, _languageHandler._t)('Someone');\n var eventContent = event.getContent();\n var reason = \"\";\n if (!_MatrixClientPeg2.default.get().supportsVoip()) {\n reason = (0, _languageHandler._t)('(not supported by this browser)');\n } else if (eventContent.reason) {\n if (eventContent.reason === \"ice_failed\") {\n reason = (0, _languageHandler._t)('(could not connect media)');\n } else if (eventContent.reason === \"invite_timeout\") {\n reason = (0, _languageHandler._t)('(no answer)');\n } else if (eventContent.reason === \"user hangup\") {\n // workaround for https://github.com/vector-im/riot-web/issues/5178\n // it seems Android randomly sets a reason of \"user hangup\" which is\n // interpreted as an error code :(\n // https://github.com/vector-im/riot-android/issues/2623\n reason = '';\n } else {\n reason = (0, _languageHandler._t)('(unknown failure: %(reason)s)', { reason: eventContent.reason });\n }\n }\n return (0, _languageHandler._t)('%(senderName)s ended the call.', { senderName: senderName }) + ' ' + reason;\n}\n\nfunction textForCallInviteEvent(event) {\n var senderName = event.sender ? event.sender.name : (0, _languageHandler._t)('Someone');\n // FIXME: Find a better way to determine this from the event?\n var callType = \"voice\";\n if (event.getContent().offer && event.getContent().offer.sdp && event.getContent().offer.sdp.indexOf('m=video') !== -1) {\n callType = \"video\";\n }\n var supported = _MatrixClientPeg2.default.get().supportsVoip() ? \"\" : (0, _languageHandler._t)('(not supported by this browser)');\n return (0, _languageHandler._t)('%(senderName)s placed a %(callType)s call.', { senderName: senderName, callType: callType }) + ' ' + supported;\n}\n\nfunction textForThreePidInviteEvent(event) {\n var senderName = event.sender ? event.sender.name : event.getSender();\n\n if (!(0, _RoomInvite.isValid3pidInvite)(event)) {\n var targetDisplayName = event.getPrevContent().display_name || (0, _languageHandler._t)(\"Someone\");\n return (0, _languageHandler._t)('%(senderName)s revoked the invitation for %(targetDisplayName)s to join the room.', {\n senderName: senderName,\n targetDisplayName: targetDisplayName\n });\n }\n\n return (0, _languageHandler._t)('%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.', {\n senderName: senderName,\n targetDisplayName: event.getContent().display_name\n });\n}\n\nfunction textForHistoryVisibilityEvent(event) {\n var senderName = event.sender ? event.sender.name : event.getSender();\n switch (event.getContent().history_visibility) {\n case 'invited':\n return (0, _languageHandler._t)('%(senderName)s made future room history visible to all room members, ' + 'from the point they are invited.', { senderName: senderName });\n case 'joined':\n return (0, _languageHandler._t)('%(senderName)s made future room history visible to all room members, ' + 'from the point they joined.', { senderName: senderName });\n case 'shared':\n return (0, _languageHandler._t)('%(senderName)s made future room history visible to all room members.', { senderName: senderName });\n case 'world_readable':\n return (0, _languageHandler._t)('%(senderName)s made future room history visible to anyone.', { senderName: senderName });\n default:\n return (0, _languageHandler._t)('%(senderName)s made future room history visible to unknown (%(visibility)s).', {\n senderName: senderName,\n visibility: event.getContent().history_visibility\n });\n }\n}\n\nfunction textForEncryptionEvent(event) {\n var senderName = event.sender ? event.sender.name : event.getSender();\n return (0, _languageHandler._t)('%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).', {\n senderName: senderName,\n algorithm: event.getContent().algorithm\n });\n}\n\n// Currently will only display a change if a user's power level is changed\nfunction textForPowerEvent(event) {\n var senderName = event.sender ? event.sender.name : event.getSender();\n if (!event.getPrevContent() || !event.getPrevContent().users || !event.getContent() || !event.getContent().users) {\n return '';\n }\n var userDefault = event.getContent().users_default || 0;\n // Construct set of userIds\n var users = [];\n (0, _keys2.default)(event.getContent().users).forEach(function (userId) {\n if (users.indexOf(userId) === -1) users.push(userId);\n });\n (0, _keys2.default)(event.getPrevContent().users).forEach(function (userId) {\n if (users.indexOf(userId) === -1) users.push(userId);\n });\n var diff = [];\n // XXX: This is also surely broken for i18n\n users.forEach(function (userId) {\n // Previous power level\n var from = event.getPrevContent().users[userId];\n // Current power level\n var to = event.getContent().users[userId];\n if (to !== from) {\n diff.push((0, _languageHandler._t)('%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s', {\n userId: userId,\n fromPowerLevel: Roles.textualPowerLevel(from, userDefault),\n toPowerLevel: Roles.textualPowerLevel(to, userDefault)\n }));\n }\n });\n if (!diff.length) {\n return '';\n }\n return (0, _languageHandler._t)('%(senderName)s changed the power level of %(powerLevelDiffText)s.', {\n senderName: senderName,\n powerLevelDiffText: diff.join(\", \")\n });\n}\n\nfunction textForPinnedEvent(event) {\n var senderName = event.getSender();\n return (0, _languageHandler._t)(\"%(senderName)s changed the pinned messages for the room.\", { senderName: senderName });\n}\n\nfunction textForWidgetEvent(event) {\n var senderName = event.getSender();\n\n var _event$getPrevContent = event.getPrevContent(),\n prevName = _event$getPrevContent.name,\n prevType = _event$getPrevContent.type,\n prevUrl = _event$getPrevContent.url;\n\n var _ref = event.getContent() || {},\n name = _ref.name,\n type = _ref.type,\n url = _ref.url;\n\n var widgetName = name || prevName || type || prevType || '';\n // Apply sentence case to widget name\n if (widgetName && widgetName.length > 0) {\n widgetName = widgetName[0].toUpperCase() + widgetName.slice(1) + ' ';\n }\n\n // If the widget was removed, its content should be {}, but this is sufficiently\n // equivalent to that condition.\n if (url) {\n if (prevUrl) {\n return (0, _languageHandler._t)('%(widgetName)s widget modified by %(senderName)s', {\n widgetName: widgetName, senderName: senderName\n });\n } else {\n return (0, _languageHandler._t)('%(widgetName)s widget added by %(senderName)s', {\n widgetName: widgetName, senderName: senderName\n });\n }\n } else {\n return (0, _languageHandler._t)('%(widgetName)s widget removed by %(senderName)s', {\n widgetName: widgetName, senderName: senderName\n });\n }\n}\n\nvar handlers = {\n 'm.room.message': textForMessageEvent,\n 'm.call.invite': textForCallInviteEvent,\n 'm.call.answer': textForCallAnswerEvent,\n 'm.call.hangup': textForCallHangupEvent\n};\n\nvar stateHandlers = {\n 'm.room.aliases': textForRoomAliasesEvent,\n 'm.room.canonical_alias': textForCanonicalAliasEvent,\n 'm.room.name': textForRoomNameEvent,\n 'm.room.topic': textForTopicEvent,\n 'm.room.member': textForMemberEvent,\n 'm.room.third_party_invite': textForThreePidInviteEvent,\n 'm.room.history_visibility': textForHistoryVisibilityEvent,\n 'm.room.encryption': textForEncryptionEvent,\n 'm.room.power_levels': textForPowerEvent,\n 'm.room.pinned_events': textForPinnedEvent,\n 'm.room.server_acl': textForServerACLEvent,\n 'm.room.tombstone': textForTombstoneEvent,\n 'm.room.join_rules': textForJoinRulesEvent,\n 'm.room.guest_access': textForGuestAccessEvent,\n 'm.room.related_groups': textForRelatedGroupsEvent,\n\n 'im.vector.modular.widgets': textForWidgetEvent\n};\n\nmodule.exports = {\n textForEvent: function textForEvent(ev) {\n var handler = (ev.isState() ? stateHandlers : handlers)[ev.getType()];\n if (handler) return handler(ev);\n return '';\n }\n};\n//# sourceMappingURL=TextForEvent.js.map","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DEFAULT_THEME = undefined;\n\nvar _values = require(\"babel-runtime/core-js/object/values\");\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _create = require(\"babel-runtime/core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _slicedToArray2 = require(\"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _entries = require(\"babel-runtime/core-js/object/entries\");\n\nvar _entries2 = _interopRequireDefault(_entries);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _assign = require(\"babel-runtime/core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nexports.enumerateThemes = enumerateThemes;\nexports.setTheme = setTheme;\n\nvar _languageHandler = require(\"./languageHandler\");\n\nvar _Tinter = require(\"./Tinter\");\n\nvar _Tinter2 = _interopRequireDefault(_Tinter);\n\nvar _SettingsStore = require(\"./settings/SettingsStore\");\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DEFAULT_THEME = exports.DEFAULT_THEME = \"light\"; /*\n Copyright 2019 Michael Telatynski <7t3chguy@gmail.com>\n Copyright 2019 The Matrix.org Foundation C.I.C.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction enumerateThemes() {\n var BUILTIN_THEMES = {\n \"light\": (0, _languageHandler._t)(\"Light theme\"),\n \"dark\": (0, _languageHandler._t)(\"Dark theme\")\n };\n var customThemes = _SettingsStore2.default.getValue(\"custom_themes\");\n var customThemeNames = {};\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(customThemes), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _ref2 = _step.value;\n var name = _ref2.name;\n\n customThemeNames[\"custom-\" + name] = name;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return (0, _assign2.default)({}, customThemeNames, BUILTIN_THEMES);\n}\n\nfunction setCustomThemeVars(customTheme) {\n var style = document.body.style;\n\n if (customTheme.colors) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)((0, _entries2.default)(customTheme.colors)), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _step2$value = (0, _slicedToArray3.default)(_step2.value, 2),\n name = _step2$value[0],\n hexColor = _step2$value[1];\n\n style.setProperty(\"--\" + name, hexColor);\n // uses #rrggbbaa to define the color with alpha values at 0% and 50%\n style.setProperty(\"--\" + name + \"-0pct\", hexColor + \"00\");\n style.setProperty(\"--\" + name + \"-50pct\", hexColor + \"7F\");\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n}\n\nfunction getCustomTheme(themeName) {\n // set css variables\n var customThemes = _SettingsStore2.default.getValue(\"custom_themes\");\n if (!customThemes) {\n throw new Error(\"No custom themes set, can't set custom theme \\\"\" + themeName + \"\\\"\");\n }\n var customTheme = customThemes.find(function (t) {\n return t.name === themeName;\n });\n if (!customTheme) {\n var knownNames = customThemes.map(function (t) {\n return t.name;\n }).join(\", \");\n throw new Error(\"Can't find custom theme \\\"\" + themeName + \"\\\", only know \" + knownNames);\n }\n return customTheme;\n}\n\n/**\n * Called whenever someone changes the theme\n *\n * @param {string} theme new theme\n */\nfunction setTheme(theme) {\n if (!theme) {\n theme = _SettingsStore2.default.getValue(\"theme\");\n }\n var stylesheetName = theme;\n if (theme.startsWith(\"custom-\")) {\n var customTheme = getCustomTheme(theme.substr(7));\n stylesheetName = customTheme.is_dark ? \"dark-custom\" : \"light-custom\";\n setCustomThemeVars(customTheme);\n }\n\n // look for the stylesheet elements.\n // styleElements is a map from style name to HTMLLinkElement.\n var styleElements = (0, _create2.default)(null);\n var a = void 0;\n for (var i = 0; a = document.getElementsByTagName(\"link\")[i]; i++) {\n var href = a.getAttribute(\"href\");\n // shouldn't we be using the 'title' tag rather than the href?\n var match = href.match(/^bundles\\/.*\\/theme-(.*)\\.css$/);\n if (match) {\n styleElements[match[1]] = a;\n }\n }\n\n if (!(stylesheetName in styleElements)) {\n throw new Error(\"Unknown theme \" + stylesheetName);\n }\n\n // disable all of them first, then enable the one we want. Chrome only\n // bothers to do an update on a true->false transition, so this ensures\n // that we get exactly one update, at the right time.\n //\n // ^ This comment was true when we used to use alternative stylesheets\n // for the CSS. Nowadays we just set them all as disabled in index.html\n // and enable them as needed. It might be cleaner to disable them all\n // at the same time to prevent loading two themes simultaneously and\n // having them interact badly... but this causes a flash of unstyled app\n // which is even uglier. So we don't.\n\n styleElements[stylesheetName].disabled = false;\n\n var switchTheme = function switchTheme() {\n // we re-enable our theme here just in case we raced with another\n // theme set request as per https://github.com/vector-im/riot-web/issues/5601.\n // We could alternatively lock or similar to stop the race, but\n // this is probably good enough for now.\n styleElements[stylesheetName].disabled = false;\n (0, _values2.default)(styleElements).forEach(function (a) {\n if (a == styleElements[stylesheetName]) return;\n a.disabled = true;\n });\n _Tinter2.default.setTheme(theme);\n };\n\n // turns out that Firefox preloads the CSS for link elements with\n // the disabled attribute, but Chrome doesn't.\n\n var cssLoaded = false;\n\n styleElements[stylesheetName].onload = function () {\n switchTheme();\n };\n\n for (var _i = 0; _i < document.styleSheets.length; _i++) {\n var ss = document.styleSheets[_i];\n if (ss && ss.href === styleElements[stylesheetName].href) {\n cssLoaded = true;\n break;\n }\n }\n\n if (cssLoaded) {\n styleElements[stylesheetName].onload = undefined;\n switchTheme();\n }\n}\n//# sourceMappingURL=theme.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getUnknownDevicesForRoom = undefined;\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\n/**\n * Gets all crypto devices in a room that are marked neither known\n * nor verified.\n *\n * @param {MatrixClient} matrixClient A MatrixClient\n * @param {Room} room js-sdk room object representing the room\n * @return {Promise} A promise which resolves to a map userId->deviceId->{@link\n * module:crypto~DeviceInfo|DeviceInfo}.\n */\nvar getUnknownDevicesForRoom = exports.getUnknownDevicesForRoom = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(matrixClient, room) {\n var roomMembers, devices, unknownDevices;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(room.getEncryptionTargetMembers().map(function (m) {\n return m.userId;\n }));\n\n case 2:\n roomMembers = _context.sent;\n _context.next = 5;\n return (0, _bluebird.resolve)(matrixClient.downloadKeys(roomMembers, false));\n\n case 5:\n devices = _context.sent;\n unknownDevices = {};\n // This is all devices in this room, so find the unknown ones.\n\n (0, _keys2.default)(devices).forEach(function (userId) {\n (0, _keys2.default)(devices[userId]).map(function (deviceId) {\n var device = devices[userId][deviceId];\n\n if (device.isUnverified() && !device.isKnown()) {\n if (unknownDevices[userId] === undefined) {\n unknownDevices[userId] = {};\n }\n unknownDevices[userId][deviceId] = device;\n }\n });\n });\n return _context.abrupt('return', unknownDevices);\n\n case 9:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function getUnknownDevicesForRoom(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n\nexports.markAllDevicesKnown = markAllDevicesKnown;\nexports.showUnknownDeviceDialogForMessages = showUnknownDeviceDialogForMessages;\nexports.showUnknownDeviceDialogForCalls = showUnknownDeviceDialogForCalls;\n\nvar _Resend = require('./Resend');\n\nvar _Resend2 = _interopRequireDefault(_Resend);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Mark all given devices as 'known'\n *\n * @param {MatrixClient} matrixClient A MatrixClient\n * @param {Object} devices Map from userid -> deviceid -> deviceinfo\n */\nfunction markAllDevicesKnown(matrixClient, devices) {\n (0, _keys2.default)(devices).forEach(function (userId) {\n (0, _keys2.default)(devices[userId]).map(function (deviceId) {\n matrixClient.setDeviceKnown(userId, deviceId, true);\n });\n });\n} /*\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction focusComposer() {\n _dispatcher2.default.dispatch({ action: 'focus_composer' });\n}\n\n/**\n * Show the UnknownDeviceDialog for a given room. The dialog will inform the user\n * that messages they sent to this room have not been sent due to unknown devices\n * being present.\n *\n * @param {MatrixClient} matrixClient A MatrixClient\n * @param {Room} room js-sdk room object representing the room\n */\nfunction showUnknownDeviceDialogForMessages(matrixClient, room) {\n getUnknownDevicesForRoom(matrixClient, room).then(function (unknownDevices) {\n var onSendClicked = function onSendClicked() {\n _Resend2.default.resendUnsentEvents(room);\n };\n\n var UnknownDeviceDialog = _index2.default.getComponent('dialogs.UnknownDeviceDialog');\n _Modal2.default.createTrackedDialog('Unknown Device Dialog', '', UnknownDeviceDialog, {\n room: room,\n devices: unknownDevices,\n sendAnywayLabel: (0, _languageHandler._t)(\"Send anyway\"),\n sendLabel: (0, _languageHandler._t)(\"Send\"),\n onSend: onSendClicked,\n onFinished: focusComposer\n }, 'mx_Dialog_unknownDevice');\n });\n}\n\n/**\n * Show the UnknownDeviceDialog for a given room. The dialog will inform the user\n * that a call they tried to place or answer in the room couldn't be placed or\n * answered due to unknown devices being present.\n *\n * @param {MatrixClient} matrixClient A MatrixClient\n * @param {Room} room js-sdk room object representing the room\n * @param {func} sendAnyway Function called when the 'call anyway' or 'call'\n * button is pressed. This should attempt to place or answer the call again.\n * @param {string} sendAnywayLabel Label for the button displayed to retry the call\n * when unknown devices are still present (eg. \"Call Anyway\")\n * @param {string} sendLabel Label for the button displayed to retry the call\n * after all devices have been verified (eg. \"Call\")\n */\nfunction showUnknownDeviceDialogForCalls(matrixClient, room, sendAnyway, sendAnywayLabel, sendLabel) {\n getUnknownDevicesForRoom(matrixClient, room).then(function (unknownDevices) {\n var UnknownDeviceDialog = _index2.default.getComponent('dialogs.UnknownDeviceDialog');\n _Modal2.default.createTrackedDialog('Unknown Device Dialog', '', UnknownDeviceDialog, {\n room: room,\n devices: unknownDevices,\n sendAnywayLabel: sendAnywayLabel,\n sendLabel: sendLabel,\n onSend: sendAnyway\n }, 'mx_Dialog_unknownDevice');\n });\n}\n//# sourceMappingURL=cryptodevices.js.map","'use strict';\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n resendUnsentEvents: function resendUnsentEvents(room) {\n room.getPendingEvents().filter(function (ev) {\n return ev.status === _matrixJsSdk.EventStatus.NOT_SENT;\n }).forEach(function (event) {\n module.exports.resend(event);\n });\n },\n cancelUnsentEvents: function cancelUnsentEvents(room) {\n room.getPendingEvents().filter(function (ev) {\n return ev.status === _matrixJsSdk.EventStatus.NOT_SENT;\n }).forEach(function (event) {\n module.exports.removeFromQueue(event);\n });\n },\n resend: function resend(event) {\n var room = _MatrixClientPeg2.default.get().getRoom(event.getRoomId());\n _MatrixClientPeg2.default.get().resendEvent(event, room).done(function (res) {\n _dispatcher2.default.dispatch({\n action: 'message_sent',\n event: event\n });\n }, function (err) {\n // XXX: temporary logging to try to diagnose\n // https://github.com/vector-im/riot-web/issues/3148\n console.log('Resend got send failure: ' + err.name + '(' + err + ')');\n\n _dispatcher2.default.dispatch({\n action: 'message_send_failed',\n event: event\n });\n });\n },\n removeFromQueue: function removeFromQueue(event) {\n _MatrixClientPeg2.default.get().cancelPendingEvent(event);\n }\n}; /*\n Copyright 2015, 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=Resend.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.sendLoginRequest = undefined;\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\n/**\n * Send a login request to the given server, and format the response\n * as a MatrixClientCreds\n *\n * @param {string} hsUrl the base url of the Homeserver used to log in.\n * @param {string} isUrl the base url of the default identity server\n * @param {string} loginType the type of login to do\n * @param {object} loginParams the parameters for the login\n *\n * @returns {MatrixClientCreds}\n */\nvar sendLoginRequest = exports.sendLoginRequest = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(hsUrl, isUrl, loginType, loginParams) {\n var client, data, wellknown;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n client = _matrixJsSdk2.default.createClient({\n baseUrl: hsUrl,\n idBaseUrl: isUrl\n });\n _context.next = 3;\n return (0, _bluebird.resolve)(client.login(loginType, loginParams));\n\n case 3:\n data = _context.sent;\n wellknown = data.well_known;\n\n if (wellknown) {\n if (wellknown[\"m.homeserver\"] && wellknown[\"m.homeserver\"][\"base_url\"]) {\n hsUrl = wellknown[\"m.homeserver\"][\"base_url\"];\n console.log(\"Overrode homeserver setting with \" + hsUrl + \" from login response\");\n }\n if (wellknown[\"m.identity_server\"] && wellknown[\"m.identity_server\"][\"base_url\"]) {\n // TODO: should we prompt here?\n isUrl = wellknown[\"m.identity_server\"][\"base_url\"];\n console.log(\"Overrode IS setting with \" + isUrl + \" from login response\");\n }\n }\n\n return _context.abrupt(\"return\", {\n homeserverUrl: hsUrl,\n identityServerUrl: isUrl,\n userId: data.user_id,\n deviceId: data.device_id,\n accessToken: data.access_token\n });\n\n case 7:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function sendLoginRequest(_x, _x2, _x3, _x4) {\n return _ref.apply(this, arguments);\n };\n}();\n\nvar _matrixJsSdk = require(\"matrix-js-sdk\");\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nvar _url = require(\"url\");\n\nvar _url2 = _interopRequireDefault(_url);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\nCopyright 2019 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar Login = function () {\n function Login(hsUrl, isUrl, fallbackHsUrl, opts) {\n (0, _classCallCheck3.default)(this, Login);\n\n this._hsUrl = hsUrl;\n this._isUrl = isUrl;\n this._fallbackHsUrl = fallbackHsUrl;\n this._currentFlowIndex = 0;\n this._flows = [];\n this._defaultDeviceDisplayName = opts.defaultDeviceDisplayName;\n }\n\n (0, _createClass3.default)(Login, [{\n key: \"getHomeserverUrl\",\n value: function getHomeserverUrl() {\n return this._hsUrl;\n }\n }, {\n key: \"getIdentityServerUrl\",\n value: function getIdentityServerUrl() {\n return this._isUrl;\n }\n }, {\n key: \"setHomeserverUrl\",\n value: function setHomeserverUrl(hsUrl) {\n this._hsUrl = hsUrl;\n }\n }, {\n key: \"setIdentityServerUrl\",\n value: function setIdentityServerUrl(isUrl) {\n this._isUrl = isUrl;\n }\n\n /**\n * Get a temporary MatrixClient, which can be used for login or register\n * requests.\n * @returns {MatrixClient}\n */\n\n }, {\n key: \"_createTemporaryClient\",\n value: function _createTemporaryClient() {\n return _matrixJsSdk2.default.createClient({\n baseUrl: this._hsUrl,\n idBaseUrl: this._isUrl\n });\n }\n }, {\n key: \"getFlows\",\n value: function getFlows() {\n var self = this;\n var client = this._createTemporaryClient();\n return client.loginFlows().then(function (result) {\n self._flows = result.flows;\n self._currentFlowIndex = 0;\n // technically the UI should display options for all flows for the\n // user to then choose one, so return all the flows here.\n return self._flows;\n });\n }\n }, {\n key: \"chooseFlow\",\n value: function chooseFlow(flowIndex) {\n this._currentFlowIndex = flowIndex;\n }\n }, {\n key: \"getCurrentFlowStep\",\n value: function getCurrentFlowStep() {\n // technically the flow can have multiple steps, but no one does this\n // for login so we can ignore it.\n var flowStep = this._flows[this._currentFlowIndex];\n return flowStep ? flowStep.type : null;\n }\n }, {\n key: \"loginViaPassword\",\n value: function loginViaPassword(username, phoneCountry, phoneNumber, pass) {\n var _this = this;\n\n var self = this;\n\n var isEmail = username.indexOf(\"@\") > 0;\n\n var identifier = void 0;\n if (phoneCountry && phoneNumber) {\n identifier = {\n type: 'm.id.phone',\n country: phoneCountry,\n number: phoneNumber\n };\n } else if (isEmail) {\n identifier = {\n type: 'm.id.thirdparty',\n medium: 'email',\n address: username\n };\n } else {\n identifier = {\n type: 'm.id.user',\n user: username\n };\n }\n\n var loginParams = {\n password: pass,\n identifier: identifier,\n initial_device_display_name: this._defaultDeviceDisplayName\n };\n\n var tryFallbackHs = function tryFallbackHs(originalError) {\n return sendLoginRequest(self._fallbackHsUrl, _this._isUrl, 'm.login.password', loginParams).catch(function (fallbackError) {\n console.log(\"fallback HS login failed\", fallbackError);\n // throw the original error\n throw originalError;\n });\n };\n\n var originalLoginError = null;\n return sendLoginRequest(self._hsUrl, self._isUrl, 'm.login.password', loginParams).catch(function (error) {\n originalLoginError = error;\n if (error.httpStatus === 403) {\n if (self._fallbackHsUrl) {\n return tryFallbackHs(originalLoginError);\n }\n }\n throw originalLoginError;\n }).catch(function (error) {\n console.log(\"Login failed\", error);\n throw error;\n });\n }\n }, {\n key: \"getSsoLoginUrl\",\n value: function getSsoLoginUrl(loginType) {\n var client = this._createTemporaryClient();\n var parsedUrl = _url2.default.parse(window.location.href, true);\n\n // XXX: at this point, the fragment will always be #/login, which is no\n // use to anyone. Ideally, we would get the intended fragment from\n // MatrixChat.screenAfterLogin so that you could follow #/room links etc\n // through an SSO login.\n parsedUrl.hash = \"\";\n\n parsedUrl.query[\"homeserver\"] = client.getHomeserverUrl();\n parsedUrl.query[\"identityServer\"] = client.getIdentityServerUrl();\n return client.getSsoLoginUrl(_url2.default.format(parsedUrl), loginType);\n }\n }]);\n return Login;\n}();\n\nexports.default = Login;\n//# sourceMappingURL=Login.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _MatrixClientPeg = require(\"../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _SettingsStore = require(\"../settings/SettingsStore\");\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _Timer = require(\"../utils/Timer\");\n\nvar _Timer2 = _interopRequireDefault(_Timer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TYPING_USER_TIMEOUT = 10000; /*\n Copyright 2019 The Matrix.org Foundation C.I.C.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar TYPING_SERVER_TIMEOUT = 30000;\n\n/**\n * Tracks typing state for users.\n */\n\nvar TypingStore = function () {\n function TypingStore() {\n (0, _classCallCheck3.default)(this, TypingStore);\n\n this.reset();\n }\n\n (0, _createClass3.default)(TypingStore, [{\n key: \"reset\",\n\n\n /**\n * Clears all cached typing states. Intended to be called when the\n * MatrixClientPeg client changes.\n */\n value: function reset() {\n this._typingStates = {\n // \"roomId\": {\n // isTyping: bool, // Whether the user is typing or not\n // userTimer: Timer, // Local timeout for \"user has stopped typing\"\n // serverTimer: Timer, // Maximum timeout for the typing state\n // },\n };\n }\n\n /**\n * Changes the typing status for the MatrixClientPeg user.\n * @param {string} roomId The room ID to set the typing state in.\n * @param {boolean} isTyping Whether the user is typing or not.\n */\n\n }, {\n key: \"setSelfTyping\",\n value: function setSelfTyping(roomId, isTyping) {\n var _this = this;\n\n if (!_SettingsStore2.default.getValue('sendTypingNotifications')) return;\n if (_SettingsStore2.default.getValue('lowBandwidth')) return;\n\n var currentTyping = this._typingStates[roomId];\n if (!isTyping && !currentTyping || currentTyping && currentTyping.isTyping === isTyping) {\n // No change in state, so don't do anything. We'll let the timer run its course.\n return;\n }\n\n if (!currentTyping) {\n currentTyping = this._typingStates[roomId] = {\n isTyping: isTyping,\n serverTimer: new _Timer2.default(TYPING_SERVER_TIMEOUT),\n userTimer: new _Timer2.default(TYPING_USER_TIMEOUT)\n };\n }\n\n currentTyping.isTyping = isTyping;\n\n if (isTyping) {\n if (!currentTyping.serverTimer.isRunning()) {\n currentTyping.serverTimer.restart().finished().then(function () {\n var currentTyping = _this._typingStates[roomId];\n if (currentTyping) currentTyping.isTyping = false;\n\n // The server will (should) time us out on typing, so we don't\n // need to advertise a stop of typing.\n });\n } else currentTyping.serverTimer.restart();\n\n if (!currentTyping.userTimer.isRunning()) {\n currentTyping.userTimer.restart().finished().then(function () {\n _this.setSelfTyping(roomId, false);\n });\n } else currentTyping.userTimer.restart();\n }\n\n _MatrixClientPeg2.default.get().sendTyping(roomId, isTyping, TYPING_SERVER_TIMEOUT);\n }\n }], [{\n key: \"sharedInstance\",\n value: function sharedInstance() {\n if (global.mxTypingStore === undefined) {\n global.mxTypingStore = new TypingStore();\n }\n return global.mxTypingStore;\n }\n }]);\n return TypingStore;\n}();\n\nexports.default = TypingStore;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=TypingStore.js.map","/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport Promise from 'bluebird';\nimport request from 'browser-request';\n\n// Load the config file. First try to load up a domain-specific config of the\n// form \"config.$domain.json\" and if that fails, fall back to config.json.\nexport async function getVectorConfig(relativeLocation) {\n if (relativeLocation === undefined) relativeLocation = '';\n if (relativeLocation !== '' && !relativeLocation.endsWith('/')) relativeLocation += '/';\n try {\n const configJson = await getConfig(`${relativeLocation}config.${document.domain}.json`);\n // 404s succeed with an empty json config, so check that there are keys\n if (Object.keys(configJson).length === 0) {\n throw new Error(); // throw to enter the catch\n }\n return configJson;\n } catch (e) {\n return await getConfig(relativeLocation + \"config.json\");\n }\n}\n\nfunction getConfig(configJsonFilename) {\n return new Promise(function(resolve, reject) {\n request(\n { method: \"GET\", url: configJsonFilename, qs: { cachebuster: Date.now() } },\n (err, response, body) => {\n try {\n if (err || response.status < 200 || response.status >= 300) {\n // Lack of a config isn't an error, we should\n // just use the defaults.\n // Also treat a blank config as no config, assuming\n // the status code is 0, because we don't get 404s\n // from file: URIs so this is the only way we can\n // not fail if the file doesn't exist when loading\n // from a file:// URI.\n if (response) {\n if (response.status == 404 || (response.status == 0 && body == '')) {\n resolve({});\n }\n }\n reject({err: err, response: response});\n return;\n }\n\n // We parse the JSON ourselves rather than use the JSON\n // parameter, since this throws a parse error on empty\n // which breaks if there's no config.json and we're\n // loading from the filesystem (see above).\n resolve(JSON.parse(body));\n } catch (e) {\n reject({err: e});\n }\n },\n );\n });\n}\n","'use strict';\n\nvar htmlparser = require('htmlparser2');\nvar extend = require('xtend');\nvar quoteRegexp = require('lodash.escaperegexp');\nvar cloneDeep = require('lodash.clonedeep');\nvar mergeWith = require('lodash.mergewith');\nvar isString = require('lodash.isstring');\nvar isPlainObject = require('lodash.isplainobject');\nvar srcset = require('srcset');\nvar postcss = require('postcss');\nvar url = require('url');\n\nfunction each(obj, cb) {\n if (obj) Object.keys(obj).forEach(function (key) {\n cb(obj[key], key);\n });\n}\n\n// Avoid false positives with .__proto__, .hasOwnProperty, etc.\nfunction has(obj, key) {\n return {}.hasOwnProperty.call(obj, key);\n}\n\n// Returns those elements of `a` for which `cb(a)` returns truthy\nfunction filter(a, cb) {\n var n = [];\n each(a, function (v) {\n if (cb(v)) {\n n.push(v);\n }\n });\n return n;\n}\n\nmodule.exports = sanitizeHtml;\n\n// A valid attribute name.\n// We use a tolerant definition based on the set of strings defined by\n// html.spec.whatwg.org/multipage/parsing.html#before-attribute-name-state\n// and html.spec.whatwg.org/multipage/parsing.html#attribute-name-state .\n// The characters accepted are ones which can be appended to the attribute\n// name buffer without triggering a parse error:\n// * unexpected-equals-sign-before-attribute-name\n// * unexpected-null-character\n// * unexpected-character-in-attribute-name\n// We exclude the empty string because it's impossible to get to the after\n// attribute name state with an empty attribute name buffer.\nvar VALID_HTML_ATTRIBUTE_NAME = /^[^\\0\\t\\n\\f\\r /<=>]+$/;\n\n// Ignore the _recursing flag; it's there for recursive\n// invocation as a guard against this exploit:\n// https://github.com/fb55/htmlparser2/issues/105\n\nfunction sanitizeHtml(html, options, _recursing) {\n var result = '';\n\n function Frame(tag, attribs) {\n var that = this;\n this.tag = tag;\n this.attribs = attribs || {};\n this.tagPosition = result.length;\n this.text = ''; // Node inner text\n\n this.updateParentNodeText = function () {\n if (stack.length) {\n var parentFrame = stack[stack.length - 1];\n parentFrame.text += that.text;\n }\n };\n }\n\n if (!options) {\n options = sanitizeHtml.defaults;\n options.parser = htmlParserDefaults;\n } else {\n options = extend(sanitizeHtml.defaults, options);\n if (options.parser) {\n options.parser = extend(htmlParserDefaults, options.parser);\n } else {\n options.parser = htmlParserDefaults;\n }\n }\n\n // Tags that contain something other than HTML, or where discarding\n // the text when the tag is disallowed makes sense for other reasons.\n // If we are not allowing these tags, we should drop their content too.\n // For other tags you would drop the tag but keep its content.\n var nonTextTagsArray = options.nonTextTags || ['script', 'style', 'textarea'];\n var allowedAttributesMap;\n var allowedAttributesGlobMap;\n if (options.allowedAttributes) {\n allowedAttributesMap = {};\n allowedAttributesGlobMap = {};\n each(options.allowedAttributes, function (attributes, tag) {\n allowedAttributesMap[tag] = [];\n var globRegex = [];\n attributes.forEach(function (obj) {\n if (isString(obj) && obj.indexOf('*') >= 0) {\n globRegex.push(quoteRegexp(obj).replace(/\\\\\\*/g, '.*'));\n } else {\n allowedAttributesMap[tag].push(obj);\n }\n });\n allowedAttributesGlobMap[tag] = new RegExp('^(' + globRegex.join('|') + ')$');\n });\n }\n var allowedClassesMap = {};\n each(options.allowedClasses, function (classes, tag) {\n // Implicitly allows the class attribute\n if (allowedAttributesMap) {\n if (!has(allowedAttributesMap, tag)) {\n allowedAttributesMap[tag] = [];\n }\n allowedAttributesMap[tag].push('class');\n }\n\n allowedClassesMap[tag] = classes;\n });\n\n var transformTagsMap = {};\n var transformTagsAll;\n each(options.transformTags, function (transform, tag) {\n var transFun;\n if (typeof transform === 'function') {\n transFun = transform;\n } else if (typeof transform === \"string\") {\n transFun = sanitizeHtml.simpleTransform(transform);\n }\n if (tag === '*') {\n transformTagsAll = transFun;\n } else {\n transformTagsMap[tag] = transFun;\n }\n });\n\n var depth = 0;\n var stack = [];\n var skipMap = {};\n var transformMap = {};\n var skipText = false;\n var skipTextDepth = 0;\n\n var parser = new htmlparser.Parser({\n onopentag: function onopentag(name, attribs) {\n if (skipText) {\n skipTextDepth++;\n return;\n }\n var frame = new Frame(name, attribs);\n stack.push(frame);\n\n var skip = false;\n var hasText = frame.text ? true : false;\n var transformedTag;\n if (has(transformTagsMap, name)) {\n transformedTag = transformTagsMap[name](name, attribs);\n\n frame.attribs = attribs = transformedTag.attribs;\n\n if (transformedTag.text !== undefined) {\n frame.innerText = transformedTag.text;\n }\n\n if (name !== transformedTag.tagName) {\n frame.name = name = transformedTag.tagName;\n transformMap[depth] = transformedTag.tagName;\n }\n }\n if (transformTagsAll) {\n transformedTag = transformTagsAll(name, attribs);\n\n frame.attribs = attribs = transformedTag.attribs;\n if (name !== transformedTag.tagName) {\n frame.name = name = transformedTag.tagName;\n transformMap[depth] = transformedTag.tagName;\n }\n }\n\n if (options.allowedTags && options.allowedTags.indexOf(name) === -1) {\n skip = true;\n if (nonTextTagsArray.indexOf(name) !== -1) {\n skipText = true;\n skipTextDepth = 1;\n }\n skipMap[depth] = true;\n }\n depth++;\n if (skip) {\n // We want the contents but not this tag\n return;\n }\n result += '<' + name;\n if (!allowedAttributesMap || has(allowedAttributesMap, name) || allowedAttributesMap['*']) {\n each(attribs, function (value, a) {\n if (!VALID_HTML_ATTRIBUTE_NAME.test(a)) {\n // This prevents part of an attribute name in the output from being\n // interpreted as the end of an attribute, or end of a tag.\n delete frame.attribs[a];\n return;\n }\n var parsed;\n // check allowedAttributesMap for the element and attribute and modify the value\n // as necessary if there are specific values defined.\n var passedAllowedAttributesMapCheck = false;\n if (!allowedAttributesMap || has(allowedAttributesMap, name) && allowedAttributesMap[name].indexOf(a) !== -1 || allowedAttributesMap['*'] && allowedAttributesMap['*'].indexOf(a) !== -1 || has(allowedAttributesGlobMap, name) && allowedAttributesGlobMap[name].test(a) || allowedAttributesGlobMap['*'] && allowedAttributesGlobMap['*'].test(a)) {\n passedAllowedAttributesMapCheck = true;\n } else if (allowedAttributesMap && allowedAttributesMap[name]) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = allowedAttributesMap[name][Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var o = _step.value;\n\n if (isPlainObject(o) && o.name && o.name === a) {\n passedAllowedAttributesMapCheck = true;\n var newValue = '';\n if (o.multiple === true) {\n // verify the values that are allowed\n var splitStrArray = value.split(' ');\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = splitStrArray[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var s = _step2.value;\n\n if (o.values.indexOf(s) !== -1) {\n if (newValue === '') {\n newValue = s;\n } else {\n newValue += ' ' + s;\n }\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n } else if (o.values.indexOf(value) >= 0) {\n // verified an allowed value matches the entire attribute value\n newValue = value;\n }\n value = newValue;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n if (passedAllowedAttributesMapCheck) {\n if (options.allowedSchemesAppliedToAttributes.indexOf(a) !== -1) {\n if (naughtyHref(name, value)) {\n delete frame.attribs[a];\n return;\n }\n }\n if (name === 'iframe' && a === 'src') {\n var allowed = true;\n try {\n // naughtyHref is in charge of whether protocol relative URLs\n // are cool. We should just accept them\n parsed = url.parse(value, false, true);\n var isRelativeUrl = parsed && parsed.host === null && parsed.protocol === null;\n if (isRelativeUrl) {\n // default value of allowIframeRelativeUrls is true unless allowIframeHostnames specified\n allowed = has(options, \"allowIframeRelativeUrls\") ? options.allowIframeRelativeUrls : !options.allowedIframeHostnames;\n } else if (options.allowedIframeHostnames) {\n allowed = options.allowedIframeHostnames.find(function (hostname) {\n return hostname === parsed.hostname;\n });\n }\n } catch (e) {\n // Unparseable iframe src\n allowed = false;\n }\n if (!allowed) {\n delete frame.attribs[a];\n return;\n }\n }\n if (a === 'srcset') {\n try {\n parsed = srcset.parse(value);\n each(parsed, function (value) {\n if (naughtyHref('srcset', value.url)) {\n value.evil = true;\n }\n });\n parsed = filter(parsed, function (v) {\n return !v.evil;\n });\n if (!parsed.length) {\n delete frame.attribs[a];\n return;\n } else {\n value = srcset.stringify(filter(parsed, function (v) {\n return !v.evil;\n }));\n frame.attribs[a] = value;\n }\n } catch (e) {\n // Unparseable srcset\n delete frame.attribs[a];\n return;\n }\n }\n if (a === 'class') {\n value = filterClasses(value, allowedClassesMap[name]);\n if (!value.length) {\n delete frame.attribs[a];\n return;\n }\n }\n if (a === 'style') {\n try {\n var abstractSyntaxTree = postcss.parse(name + \" {\" + value + \"}\");\n var filteredAST = filterCss(abstractSyntaxTree, options.allowedStyles);\n\n value = stringifyStyleAttributes(filteredAST);\n\n if (value.length === 0) {\n delete frame.attribs[a];\n return;\n }\n } catch (e) {\n delete frame.attribs[a];\n return;\n }\n }\n result += ' ' + a;\n if (value.length) {\n result += '=\"' + escapeHtml(value, true) + '\"';\n }\n } else {\n delete frame.attribs[a];\n }\n });\n }\n if (options.selfClosing.indexOf(name) !== -1) {\n result += \" />\";\n } else {\n result += \">\";\n if (frame.innerText && !hasText && !options.textFilter) {\n result += frame.innerText;\n }\n }\n },\n ontext: function ontext(text) {\n if (skipText) {\n return;\n }\n var lastFrame = stack[stack.length - 1];\n var tag;\n\n if (lastFrame) {\n tag = lastFrame.tag;\n // If inner text was set by transform function then let's use it\n text = lastFrame.innerText !== undefined ? lastFrame.innerText : text;\n }\n\n if (tag === 'script' || tag === 'style') {\n // htmlparser2 gives us these as-is. Escaping them ruins the content. Allowing\n // script tags is, by definition, game over for XSS protection, so if that's\n // your concern, don't allow them. The same is essentially true for style tags\n // which have their own collection of XSS vectors.\n result += text;\n } else {\n var escaped = escapeHtml(text, false);\n if (options.textFilter) {\n result += options.textFilter(escaped);\n } else {\n result += escaped;\n }\n }\n if (stack.length) {\n var frame = stack[stack.length - 1];\n frame.text += text;\n }\n },\n onclosetag: function onclosetag(name) {\n\n if (skipText) {\n skipTextDepth--;\n if (!skipTextDepth) {\n skipText = false;\n } else {\n return;\n }\n }\n\n var frame = stack.pop();\n if (!frame) {\n // Do not crash on bad markup\n return;\n }\n skipText = false;\n depth--;\n if (skipMap[depth]) {\n delete skipMap[depth];\n frame.updateParentNodeText();\n return;\n }\n\n if (transformMap[depth]) {\n name = transformMap[depth];\n delete transformMap[depth];\n }\n\n if (options.exclusiveFilter && options.exclusiveFilter(frame)) {\n result = result.substr(0, frame.tagPosition);\n return;\n }\n\n frame.updateParentNodeText();\n\n if (options.selfClosing.indexOf(name) !== -1) {\n // Already output />\n return;\n }\n\n result += \"\";\n }\n }, options.parser);\n parser.write(html);\n parser.end();\n\n return result;\n\n function escapeHtml(s, quote) {\n if (typeof s !== 'string') {\n s = s + '';\n }\n if (options.parser.decodeEntities) {\n s = s.replace(/&/g, '&').replace(//g, '>');\n if (quote) {\n s = s.replace(/\\\"/g, '"');\n }\n }\n // TODO: this is inadequate because it will pass `&0;`. This approach\n // will not work, each & must be considered with regard to whether it\n // is followed by a 100% syntactically valid entity or not, and escaped\n // if it is not. If this bothers you, don't set parser.decodeEntities\n // to false. (The default is true.)\n s = s.replace(/&(?![a-zA-Z0-9#]{1,20};)/g, '&') // Match ampersands not part of existing HTML entity\n .replace(//g, '>');\n if (quote) {\n s = s.replace(/\\\"/g, '"');\n }\n return s;\n }\n\n function naughtyHref(name, href) {\n // Browsers ignore character codes of 32 (space) and below in a surprising\n // number of situations. Start reading here:\n // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet#Embedded_tab\n href = href.replace(/[\\x00-\\x20]+/g, '');\n // Clobber any comments in URLs, which the browser might\n // interpret inside an XML data island, allowing\n // a javascript: URL to be snuck through\n href = href.replace(/<\\!\\-\\-.*?\\-\\-\\>/g, '');\n // Case insensitive so we don't get faked out by JAVASCRIPT #1\n var matches = href.match(/^([a-zA-Z]+)\\:/);\n if (!matches) {\n // Protocol-relative URL starting with any combination of '/' and '\\'\n if (href.match(/^[\\/\\\\]{2}/)) {\n return !options.allowProtocolRelative;\n }\n\n // No scheme\n return false;\n }\n var scheme = matches[1].toLowerCase();\n\n if (has(options.allowedSchemesByTag, name)) {\n return options.allowedSchemesByTag[name].indexOf(scheme) === -1;\n }\n\n return !options.allowedSchemes || options.allowedSchemes.indexOf(scheme) === -1;\n }\n\n /**\n * Filters user input css properties by whitelisted regex attributes.\n *\n * @param {object} abstractSyntaxTree - Object representation of CSS attributes.\n * @property {array[Declaration]} abstractSyntaxTree.nodes[0] - Each object cointains prop and value key, i.e { prop: 'color', value: 'red' }.\n * @param {object} allowedStyles - Keys are properties (i.e color), value is list of permitted regex rules (i.e /green/i).\n * @return {object} - Abstract Syntax Tree with filtered style attributes.\n */\n function filterCss(abstractSyntaxTree, allowedStyles) {\n if (!allowedStyles) {\n return abstractSyntaxTree;\n }\n\n var filteredAST = cloneDeep(abstractSyntaxTree);\n var astRules = abstractSyntaxTree.nodes[0];\n var selectedRule;\n\n // Merge global and tag-specific styles into new AST.\n if (allowedStyles[astRules.selector] && allowedStyles['*']) {\n selectedRule = mergeWith(cloneDeep(allowedStyles[astRules.selector]), allowedStyles['*'], function (objValue, srcValue) {\n if (Array.isArray(objValue)) {\n return objValue.concat(srcValue);\n }\n });\n } else {\n selectedRule = allowedStyles[astRules.selector] || allowedStyles['*'];\n }\n\n if (selectedRule) {\n filteredAST.nodes[0].nodes = astRules.nodes.reduce(filterDeclarations(selectedRule), []);\n }\n\n return filteredAST;\n }\n\n /**\n * Extracts the style attribues from an AbstractSyntaxTree and formats those\n * values in the inline style attribute format.\n *\n * @param {AbstractSyntaxTree} filteredAST\n * @return {string} - Example: \"color:yellow;text-align:center;font-family:helvetica;\"\n */\n function stringifyStyleAttributes(filteredAST) {\n return filteredAST.nodes[0].nodes.reduce(function (extractedAttributes, attributeObject) {\n extractedAttributes.push(attributeObject.prop + ':' + attributeObject.value);\n return extractedAttributes;\n }, []).join(';');\n }\n\n /**\n * Filters the existing attributes for the given property. Discards any attributes\n * which don't match the whitelist.\n *\n * @param {object} selectedRule - Example: { color: red, font-family: helvetica }\n * @param {array} allowedDeclarationsList - List of declarations which pass whitelisting.\n * @param {object} attributeObject - Object representing the current css property.\n * @property {string} attributeObject.type - Typically 'declaration'.\n * @property {string} attributeObject.prop - The CSS property, i.e 'color'.\n * @property {string} attributeObject.value - The corresponding value to the css property, i.e 'red'.\n * @return {function} - When used in Array.reduce, will return an array of Declaration objects\n */\n function filterDeclarations(selectedRule) {\n return function (allowedDeclarationsList, attributeObject) {\n // If this property is whitelisted...\n if (selectedRule.hasOwnProperty(attributeObject.prop)) {\n var matchesRegex = selectedRule[attributeObject.prop].some(function (regularExpression) {\n return regularExpression.test(attributeObject.value);\n });\n\n if (matchesRegex) {\n allowedDeclarationsList.push(attributeObject);\n }\n }\n return allowedDeclarationsList;\n };\n }\n\n function filterClasses(classes, allowed) {\n if (!allowed) {\n // The class attribute is allowed without filtering on this tag\n return classes;\n }\n classes = classes.split(/\\s+/);\n return classes.filter(function (clss) {\n return allowed.indexOf(clss) !== -1;\n }).join(' ');\n }\n}\n\n// Defaults are accessible to you so that you can use them as a starting point\n// programmatically if you wish\n\nvar htmlParserDefaults = {\n decodeEntities: true\n};\nsanitizeHtml.defaults = {\n allowedTags: ['h3', 'h4', 'h5', 'h6', 'blockquote', 'p', 'a', 'ul', 'ol', 'nl', 'li', 'b', 'i', 'strong', 'em', 'strike', 'code', 'hr', 'br', 'div', 'table', 'thead', 'caption', 'tbody', 'tr', 'th', 'td', 'pre', 'iframe'],\n allowedAttributes: {\n a: ['href', 'name', 'target'],\n // We don't currently allow img itself by default, but this\n // would make sense if we did. You could add srcset here,\n // and if you do the URL is checked for safety\n img: ['src']\n },\n // Lots of these won't come up by default because we don't allow them\n selfClosing: ['img', 'br', 'hr', 'area', 'base', 'basefont', 'input', 'link', 'meta'],\n // URL schemes we permit\n allowedSchemes: ['http', 'https', 'ftp', 'mailto'],\n allowedSchemesByTag: {},\n allowedSchemesAppliedToAttributes: ['href', 'src', 'cite'],\n allowProtocolRelative: true\n};\n\nsanitizeHtml.simpleTransform = function (newTagName, newAttribs, merge) {\n merge = merge === undefined ? true : merge;\n newAttribs = newAttribs || {};\n\n return function (tagName, attribs) {\n var attrib;\n if (merge) {\n for (attrib in newAttribs) {\n attribs[attrib] = newAttribs[attrib];\n }\n } else {\n attribs = newAttribs;\n }\n\n return {\n tagName: newTagName,\n attribs: attribs\n };\n };\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * Represents a CSS declaration.\n *\n * @extends Node\n *\n * @example\n * const root = postcss.parse('a { color: black }')\n * const decl = root.first.first\n * decl.type //=> 'decl'\n * decl.toString() //=> ' color: black'\n */\nvar Declaration =\n/*#__PURE__*/\nfunction (_Node) {\n _inheritsLoose(Declaration, _Node);\n\n function Declaration(defaults) {\n var _this;\n\n _this = _Node.call(this, defaults) || this;\n _this.type = 'decl';\n return _this;\n }\n /**\n * @memberof Declaration#\n * @member {string} prop The declaration’s property name.\n *\n * @example\n * const root = postcss.parse('a { color: black }')\n * const decl = root.first.first\n * decl.prop //=> 'color'\n */\n\n /**\n * @memberof Declaration#\n * @member {string} value The declaration’s value.\n *\n * @example\n * const root = postcss.parse('a { color: black }')\n * const decl = root.first.first\n * decl.value //=> 'black'\n */\n\n /**\n * @memberof Declaration#\n * @member {boolean} important `true` if the declaration\n * has an !important annotation.\n *\n * @example\n * const root = postcss.parse('a { color: black !important; color: red }')\n * root.first.first.important //=> true\n * root.first.last.important //=> undefined\n */\n\n /**\n * @memberof Declaration#\n * @member {object} raws Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node. It also stores `*`\n * and `_` symbols before the declaration (IE hack).\n * * `between`: the symbols between the property and value\n * for declarations.\n * * `important`: the content of the important statement,\n * if it is not just `!important`.\n *\n * PostCSS cleans declaration from comments and extra spaces,\n * but it stores origin content in raws properties.\n * As such, if you don’t change a declaration’s value,\n * PostCSS will use the raw value with comments.\n *\n * @example\n * const root = postcss.parse('a {\\n color:black\\n}')\n * root.first.first.raws //=> { before: '\\n ', between: ':' }\n */\n\n\n return Declaration;\n}(_node.default);\n\nvar _default = Declaration;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRlY2xhcmF0aW9uLmVzNiJdLCJuYW1lcyI6WyJEZWNsYXJhdGlvbiIsImRlZmF1bHRzIiwidHlwZSIsIk5vZGUiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7OztBQUVBOzs7Ozs7Ozs7OztJQVdNQSxXOzs7OztBQUNKLHVCQUFhQyxRQUFiLEVBQXVCO0FBQUE7O0FBQ3JCLDZCQUFNQSxRQUFOO0FBQ0EsVUFBS0MsSUFBTCxHQUFZLE1BQVo7QUFGcUI7QUFHdEI7QUFFRDs7Ozs7Ozs7OztBQVVBOzs7Ozs7Ozs7O0FBVUE7Ozs7Ozs7Ozs7O0FBV0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXJDd0JDLGE7O2VBK0RYSCxXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE5vZGUgZnJvbSAnLi9ub2RlJ1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBDU1MgZGVjbGFyYXRpb24uXG4gKlxuICogQGV4dGVuZHMgTm9kZVxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7IGNvbG9yOiBibGFjayB9JylcbiAqIGNvbnN0IGRlY2wgPSByb290LmZpcnN0LmZpcnN0XG4gKiBkZWNsLnR5cGUgICAgICAgLy89PiAnZGVjbCdcbiAqIGRlY2wudG9TdHJpbmcoKSAvLz0+ICcgY29sb3I6IGJsYWNrJ1xuICovXG5jbGFzcyBEZWNsYXJhdGlvbiBleHRlbmRzIE5vZGUge1xuICBjb25zdHJ1Y3RvciAoZGVmYXVsdHMpIHtcbiAgICBzdXBlcihkZWZhdWx0cylcbiAgICB0aGlzLnR5cGUgPSAnZGVjbCdcbiAgfVxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgRGVjbGFyYXRpb24jXG4gICAqIEBtZW1iZXIge3N0cmluZ30gcHJvcCBUaGUgZGVjbGFyYXRpb27igJlzIHByb3BlcnR5IG5hbWUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhIHsgY29sb3I6IGJsYWNrIH0nKVxuICAgKiBjb25zdCBkZWNsID0gcm9vdC5maXJzdC5maXJzdFxuICAgKiBkZWNsLnByb3AgLy89PiAnY29sb3InXG4gICAqL1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgRGVjbGFyYXRpb24jXG4gICAqIEBtZW1iZXIge3N0cmluZ30gdmFsdWUgVGhlIGRlY2xhcmF0aW9u4oCZcyB2YWx1ZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2EgeyBjb2xvcjogYmxhY2sgfScpXG4gICAqIGNvbnN0IGRlY2wgPSByb290LmZpcnN0LmZpcnN0XG4gICAqIGRlY2wudmFsdWUgLy89PiAnYmxhY2snXG4gICAqL1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgRGVjbGFyYXRpb24jXG4gICAqIEBtZW1iZXIge2Jvb2xlYW59IGltcG9ydGFudCBgdHJ1ZWAgaWYgdGhlIGRlY2xhcmF0aW9uXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXMgYW4gIWltcG9ydGFudCBhbm5vdGF0aW9uLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7IGNvbG9yOiBibGFjayAhaW1wb3J0YW50OyBjb2xvcjogcmVkIH0nKVxuICAgKiByb290LmZpcnN0LmZpcnN0LmltcG9ydGFudCAvLz0+IHRydWVcbiAgICogcm9vdC5maXJzdC5sYXN0LmltcG9ydGFudCAgLy89PiB1bmRlZmluZWRcbiAgICovXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBEZWNsYXJhdGlvbiNcbiAgICogQG1lbWJlciB7b2JqZWN0fSByYXdzIEluZm9ybWF0aW9uIHRvIGdlbmVyYXRlIGJ5dGUtdG8tYnl0ZSBlcXVhbFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgbm9kZSBzdHJpbmcgYXMgaXQgd2FzIGluIHRoZSBvcmlnaW4gaW5wdXQuXG4gICAqXG4gICAqIEV2ZXJ5IHBhcnNlciBzYXZlcyBpdHMgb3duIHByb3BlcnRpZXMsXG4gICAqIGJ1dCB0aGUgZGVmYXVsdCBDU1MgcGFyc2VyIHVzZXM6XG4gICAqXG4gICAqICogYGJlZm9yZWA6IHRoZSBzcGFjZSBzeW1ib2xzIGJlZm9yZSB0aGUgbm9kZS4gSXQgYWxzbyBzdG9yZXMgYCpgXG4gICAqICAgYW5kIGBfYCBzeW1ib2xzIGJlZm9yZSB0aGUgZGVjbGFyYXRpb24gKElFIGhhY2spLlxuICAgKiAqIGBiZXR3ZWVuYDogdGhlIHN5bWJvbHMgYmV0d2VlbiB0aGUgcHJvcGVydHkgYW5kIHZhbHVlXG4gICAqICAgZm9yIGRlY2xhcmF0aW9ucy5cbiAgICogKiBgaW1wb3J0YW50YDogdGhlIGNvbnRlbnQgb2YgdGhlIGltcG9ydGFudCBzdGF0ZW1lbnQsXG4gICAqICAgaWYgaXQgaXMgbm90IGp1c3QgYCFpbXBvcnRhbnRgLlxuICAgKlxuICAgKiBQb3N0Q1NTIGNsZWFucyBkZWNsYXJhdGlvbiBmcm9tIGNvbW1lbnRzIGFuZCBleHRyYSBzcGFjZXMsXG4gICAqIGJ1dCBpdCBzdG9yZXMgb3JpZ2luIGNvbnRlbnQgaW4gcmF3cyBwcm9wZXJ0aWVzLlxuICAgKiBBcyBzdWNoLCBpZiB5b3UgZG9u4oCZdCBjaGFuZ2UgYSBkZWNsYXJhdGlvbuKAmXMgdmFsdWUsXG4gICAqIFBvc3RDU1Mgd2lsbCB1c2UgdGhlIHJhdyB2YWx1ZSB3aXRoIGNvbW1lbnRzLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7XFxuICBjb2xvcjpibGFja1xcbn0nKVxuICAgKiByb290LmZpcnN0LmZpcnN0LnJhd3MgLy89PiB7IGJlZm9yZTogJ1xcbiAgJywgYmV0d2VlbjogJzonIH1cbiAgICovXG59XG5cbmV4cG9ydCBkZWZhdWx0IERlY2xhcmF0aW9uXG4iXSwiZmlsZSI6ImRlY2xhcmF0aW9uLmpzIn0=\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _cssSyntaxError = _interopRequireDefault(require(\"./css-syntax-error\"));\n\nvar _stringifier = _interopRequireDefault(require(\"./stringifier\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction cloneNode(obj, parent) {\n var cloned = new obj.constructor();\n\n for (var i in obj) {\n if (!obj.hasOwnProperty(i)) continue;\n var value = obj[i];\n var type = typeof value;\n\n if (i === 'parent' && type === 'object') {\n if (parent) cloned[i] = parent;\n } else if (i === 'source') {\n cloned[i] = value;\n } else if (value instanceof Array) {\n cloned[i] = value.map(function (j) {\n return cloneNode(j, cloned);\n });\n } else {\n if (type === 'object' && value !== null) value = cloneNode(value);\n cloned[i] = value;\n }\n }\n\n return cloned;\n}\n/**\n * All node classes inherit the following common methods.\n *\n * @abstract\n */\n\n\nvar Node =\n/*#__PURE__*/\nfunction () {\n /**\n * @param {object} [defaults] Value for node properties.\n */\n function Node(defaults) {\n if (defaults === void 0) {\n defaults = {};\n }\n\n this.raws = {};\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof defaults !== 'object' && typeof defaults !== 'undefined') {\n throw new Error('PostCSS nodes constructor accepts object, not ' + JSON.stringify(defaults));\n }\n }\n\n for (var name in defaults) {\n this[name] = defaults[name];\n }\n }\n /**\n * Returns a `CssSyntaxError` instance containing the original position\n * of the node in the source, showing line and column numbers and also\n * a small excerpt to facilitate debugging.\n *\n * If present, an input source map will be used to get the original position\n * of the source, even from a previous compilation step\n * (e.g., from Sass compilation).\n *\n * This method produces very useful error messages.\n *\n * @param {string} message Error description.\n * @param {object} [opts] Options.\n * @param {string} opts.plugin Plugin name that created this error.\n * PostCSS will set it automatically.\n * @param {string} opts.word A word inside a node’s string that should\n * be highlighted as the source of the error.\n * @param {number} opts.index An index inside a node’s string that should\n * be highlighted as the source of the error.\n *\n * @return {CssSyntaxError} Error object to throw it.\n *\n * @example\n * if (!variables[name]) {\n * throw decl.error('Unknown variable ' + name, { word: name })\n * // CssSyntaxError: postcss-vars:a.sass:4:3: Unknown variable $black\n * // color: $black\n * // a\n * // ^\n * // background: white\n * }\n */\n\n\n var _proto = Node.prototype;\n\n _proto.error = function error(message, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n if (this.source) {\n var pos = this.positionBy(opts);\n return this.source.input.error(message, pos.line, pos.column, opts);\n }\n\n return new _cssSyntaxError.default(message);\n }\n /**\n * This method is provided as a convenience wrapper for {@link Result#warn}.\n *\n * @param {Result} result The {@link Result} instance\n * that will receive the warning.\n * @param {string} text Warning message.\n * @param {object} [opts] Options\n * @param {string} opts.plugin Plugin name that created this warning.\n * PostCSS will set it automatically.\n * @param {string} opts.word A word inside a node’s string that should\n * be highlighted as the source of the warning.\n * @param {number} opts.index An index inside a node’s string that should\n * be highlighted as the source of the warning.\n *\n * @return {Warning} Created warning object.\n *\n * @example\n * const plugin = postcss.plugin('postcss-deprecated', () => {\n * return (root, result) => {\n * root.walkDecls('bad', decl => {\n * decl.warn(result, 'Deprecated property bad')\n * })\n * }\n * })\n */\n ;\n\n _proto.warn = function warn(result, text, opts) {\n var data = {\n node: this\n };\n\n for (var i in opts) {\n data[i] = opts[i];\n }\n\n return result.warn(text, data);\n }\n /**\n * Removes the node from its parent and cleans the parent properties\n * from the node and its children.\n *\n * @example\n * if (decl.prop.match(/^-webkit-/)) {\n * decl.remove()\n * }\n *\n * @return {Node} Node to make calls chain.\n */\n ;\n\n _proto.remove = function remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n\n this.parent = undefined;\n return this;\n }\n /**\n * Returns a CSS string representing the node.\n *\n * @param {stringifier|syntax} [stringifier] A syntax to use\n * in string generation.\n *\n * @return {string} CSS string of this node.\n *\n * @example\n * postcss.rule({ selector: 'a' }).toString() //=> \"a {}\"\n */\n ;\n\n _proto.toString = function toString(stringifier) {\n if (stringifier === void 0) {\n stringifier = _stringify.default;\n }\n\n if (stringifier.stringify) stringifier = stringifier.stringify;\n var result = '';\n stringifier(this, function (i) {\n result += i;\n });\n return result;\n }\n /**\n * Returns an exact clone of the node.\n *\n * The resulting cloned node and its (cloned) children will retain\n * code style properties.\n *\n * @param {object} [overrides] New properties to override in the clone.\n *\n * @example\n * decl.raws.before //=> \"\\n \"\n * const cloned = decl.clone({ prop: '-moz-' + decl.prop })\n * cloned.raws.before //=> \"\\n \"\n * cloned.toString() //=> -moz-transform: scale(0)\n *\n * @return {Node} Clone of the node.\n */\n ;\n\n _proto.clone = function clone(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n\n var cloned = cloneNode(this);\n\n for (var name in overrides) {\n cloned[name] = overrides[name];\n }\n\n return cloned;\n }\n /**\n * Shortcut to clone the node and insert the resulting cloned node\n * before the current node.\n *\n * @param {object} [overrides] Mew properties to override in the clone.\n *\n * @example\n * decl.cloneBefore({ prop: '-moz-' + decl.prop })\n *\n * @return {Node} New node\n */\n ;\n\n _proto.cloneBefore = function cloneBefore(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n\n var cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n /**\n * Shortcut to clone the node and insert the resulting cloned node\n * after the current node.\n *\n * @param {object} [overrides] New properties to override in the clone.\n *\n * @return {Node} New node.\n */\n ;\n\n _proto.cloneAfter = function cloneAfter(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n\n var cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n /**\n * Inserts node(s) before the current node and removes the current node.\n *\n * @param {...Node} nodes Mode(s) to replace current one.\n *\n * @example\n * if (atrule.name === 'mixin') {\n * atrule.replaceWith(mixinRules[atrule.params])\n * }\n *\n * @return {Node} Current node to methods chain.\n */\n ;\n\n _proto.replaceWith = function replaceWith() {\n if (this.parent) {\n for (var _len = arguments.length, nodes = new Array(_len), _key = 0; _key < _len; _key++) {\n nodes[_key] = arguments[_key];\n }\n\n for (var _i = 0, _nodes = nodes; _i < _nodes.length; _i++) {\n var node = _nodes[_i];\n this.parent.insertBefore(this, node);\n }\n\n this.remove();\n }\n\n return this;\n }\n /**\n * Returns the next child of the node’s parent.\n * Returns `undefined` if the current node is the last child.\n *\n * @return {Node|undefined} Next node.\n *\n * @example\n * if (comment.text === 'delete next') {\n * const next = comment.next()\n * if (next) {\n * next.remove()\n * }\n * }\n */\n ;\n\n _proto.next = function next() {\n if (!this.parent) return undefined;\n var index = this.parent.index(this);\n return this.parent.nodes[index + 1];\n }\n /**\n * Returns the previous child of the node’s parent.\n * Returns `undefined` if the current node is the first child.\n *\n * @return {Node|undefined} Previous node.\n *\n * @example\n * const annotation = decl.prev()\n * if (annotation.type === 'comment') {\n * readAnnotation(annotation.text)\n * }\n */\n ;\n\n _proto.prev = function prev() {\n if (!this.parent) return undefined;\n var index = this.parent.index(this);\n return this.parent.nodes[index - 1];\n }\n /**\n * Insert new node before current node to current node’s parent.\n *\n * Just alias for `node.parent.insertBefore(node, add)`.\n *\n * @param {Node|object|string|Node[]} add New node.\n *\n * @return {Node} This node for methods chain.\n *\n * @example\n * decl.before('content: \"\"')\n */\n ;\n\n _proto.before = function before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n /**\n * Insert new node after current node to current node’s parent.\n *\n * Just alias for `node.parent.insertAfter(node, add)`.\n *\n * @param {Node|object|string|Node[]} add New node.\n *\n * @return {Node} This node for methods chain.\n *\n * @example\n * decl.after('color: black')\n */\n ;\n\n _proto.after = function after(add) {\n this.parent.insertAfter(this, add);\n return this;\n };\n\n _proto.toJSON = function toJSON() {\n var fixed = {};\n\n for (var name in this) {\n if (!this.hasOwnProperty(name)) continue;\n if (name === 'parent') continue;\n var value = this[name];\n\n if (value instanceof Array) {\n fixed[name] = value.map(function (i) {\n if (typeof i === 'object' && i.toJSON) {\n return i.toJSON();\n } else {\n return i;\n }\n });\n } else if (typeof value === 'object' && value.toJSON) {\n fixed[name] = value.toJSON();\n } else {\n fixed[name] = value;\n }\n }\n\n return fixed;\n }\n /**\n * Returns a {@link Node#raws} value. If the node is missing\n * the code style property (because the node was manually built or cloned),\n * PostCSS will try to autodetect the code style property by looking\n * at other nodes in the tree.\n *\n * @param {string} prop Name of code style property.\n * @param {string} [defaultType] Name of default value, it can be missed\n * if the value is the same as prop.\n *\n * @example\n * const root = postcss.parse('a { background: white }')\n * root.nodes[0].append({ prop: 'color', value: 'black' })\n * root.nodes[0].nodes[1].raws.before //=> undefined\n * root.nodes[0].nodes[1].raw('before') //=> ' '\n *\n * @return {string} Code style value.\n */\n ;\n\n _proto.raw = function raw(prop, defaultType) {\n var str = new _stringifier.default();\n return str.raw(this, prop, defaultType);\n }\n /**\n * Finds the Root instance of the node’s tree.\n *\n * @example\n * root.nodes[0].nodes[0].root() === root\n *\n * @return {Root} Root parent.\n */\n ;\n\n _proto.root = function root() {\n var result = this;\n\n while (result.parent) {\n result = result.parent;\n }\n\n return result;\n }\n /**\n * Clear the code style properties for the node and its children.\n *\n * @param {boolean} [keepBetween] Keep the raws.between symbols.\n *\n * @return {undefined}\n *\n * @example\n * node.raws.before //=> ' '\n * node.cleanRaws()\n * node.raws.before //=> undefined\n */\n ;\n\n _proto.cleanRaws = function cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n };\n\n _proto.positionInside = function positionInside(index) {\n var string = this.toString();\n var column = this.source.start.column;\n var line = this.source.start.line;\n\n for (var i = 0; i < index; i++) {\n if (string[i] === '\\n') {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n\n return {\n line: line,\n column: column\n };\n };\n\n _proto.positionBy = function positionBy(opts) {\n var pos = this.source.start;\n\n if (opts.index) {\n pos = this.positionInside(opts.index);\n } else if (opts.word) {\n var index = this.toString().indexOf(opts.word);\n if (index !== -1) pos = this.positionInside(index);\n }\n\n return pos;\n }\n /**\n * @memberof Node#\n * @member {string} type String representing the node’s type.\n * Possible values are `root`, `atrule`, `rule`,\n * `decl`, or `comment`.\n *\n * @example\n * postcss.decl({ prop: 'color', value: 'black' }).type //=> 'decl'\n */\n\n /**\n * @memberof Node#\n * @member {Container} parent The node’s parent node.\n *\n * @example\n * root.nodes[0].parent === root\n */\n\n /**\n * @memberof Node#\n * @member {source} source The input source of the node.\n *\n * The property is used in source map generation.\n *\n * If you create a node manually (e.g., with `postcss.decl()`),\n * that node will not have a `source` property and will be absent\n * from the source map. For this reason, the plugin developer should\n * consider cloning nodes to create new ones (in which case the new node’s\n * source will reference the original, cloned node) or setting\n * the `source` property manually.\n *\n * ```js\n * // Bad\n * const prefixed = postcss.decl({\n * prop: '-moz-' + decl.prop,\n * value: decl.value\n * })\n *\n * // Good\n * const prefixed = decl.clone({ prop: '-moz-' + decl.prop })\n * ```\n *\n * ```js\n * if (atrule.name === 'add-link') {\n * const rule = postcss.rule({ selector: 'a', source: atrule.source })\n * atrule.parent.insertBefore(atrule, rule)\n * }\n * ```\n *\n * @example\n * decl.source.input.from //=> '/home/ai/a.sass'\n * decl.source.start //=> { line: 10, column: 2 }\n * decl.source.end //=> { line: 10, column: 12 }\n */\n\n /**\n * @memberof Node#\n * @member {object} raws Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node. It also stores `*`\n * and `_` symbols before the declaration (IE hack).\n * * `after`: the space symbols after the last child of the node\n * to the end of the node.\n * * `between`: the symbols between the property and value\n * for declarations, selector and `{` for rules, or last parameter\n * and `{` for at-rules.\n * * `semicolon`: contains true if the last child has\n * an (optional) semicolon.\n * * `afterName`: the space between the at-rule name and its parameters.\n * * `left`: the space symbols between `/*` and the comment’s text.\n * * `right`: the space symbols between the comment’s text\n * and */.\n * * `important`: the content of the important statement,\n * if it is not just `!important`.\n *\n * PostCSS cleans selectors, declaration values and at-rule parameters\n * from comments and extra spaces, but it stores origin content in raws\n * properties. As such, if you don’t change a declaration’s value,\n * PostCSS will use the raw value with comments.\n *\n * @example\n * const root = postcss.parse('a {\\n color:black\\n}')\n * root.first.first.raws //=> { before: '\\n ', between: ':' }\n */\n ;\n\n return Node;\n}();\n\nvar _default = Node;\n/**\n * @typedef {object} position\n * @property {number} line Source line in file.\n * @property {number} column Source column in file.\n */\n\n/**\n * @typedef {object} source\n * @property {Input} input {@link Input} with input file\n * @property {position} start The starting position of the node’s source.\n * @property {position} end The ending position of the node’s source.\n */\n\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGUuZXM2Il0sIm5hbWVzIjpbImNsb25lTm9kZSIsIm9iaiIsInBhcmVudCIsImNsb25lZCIsImNvbnN0cnVjdG9yIiwiaSIsImhhc093blByb3BlcnR5IiwidmFsdWUiLCJ0eXBlIiwiQXJyYXkiLCJtYXAiLCJqIiwiTm9kZSIsImRlZmF1bHRzIiwicmF3cyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsIm5hbWUiLCJlcnJvciIsIm1lc3NhZ2UiLCJvcHRzIiwic291cmNlIiwicG9zIiwicG9zaXRpb25CeSIsImlucHV0IiwibGluZSIsImNvbHVtbiIsIkNzc1N5bnRheEVycm9yIiwid2FybiIsInJlc3VsdCIsInRleHQiLCJkYXRhIiwibm9kZSIsInJlbW92ZSIsInJlbW92ZUNoaWxkIiwidW5kZWZpbmVkIiwidG9TdHJpbmciLCJzdHJpbmdpZmllciIsImNsb25lIiwib3ZlcnJpZGVzIiwiY2xvbmVCZWZvcmUiLCJpbnNlcnRCZWZvcmUiLCJjbG9uZUFmdGVyIiwiaW5zZXJ0QWZ0ZXIiLCJyZXBsYWNlV2l0aCIsIm5vZGVzIiwibmV4dCIsImluZGV4IiwicHJldiIsImJlZm9yZSIsImFkZCIsImFmdGVyIiwidG9KU09OIiwiZml4ZWQiLCJyYXciLCJwcm9wIiwiZGVmYXVsdFR5cGUiLCJzdHIiLCJTdHJpbmdpZmllciIsInJvb3QiLCJjbGVhblJhd3MiLCJrZWVwQmV0d2VlbiIsImJldHdlZW4iLCJwb3NpdGlvbkluc2lkZSIsInN0cmluZyIsInN0YXJ0Iiwid29yZCIsImluZGV4T2YiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7Ozs7QUFFQSxTQUFTQSxTQUFULENBQW9CQyxHQUFwQixFQUF5QkMsTUFBekIsRUFBaUM7QUFDL0IsTUFBSUMsTUFBTSxHQUFHLElBQUlGLEdBQUcsQ0FBQ0csV0FBUixFQUFiOztBQUVBLE9BQUssSUFBSUMsQ0FBVCxJQUFjSixHQUFkLEVBQW1C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Li9jc3Mtc3ludGF4LWVycm9yJ1xuaW1wb3J0IFN0cmluZ2lmaWVyIGZyb20gJy4vc3RyaW5naWZpZXInXG5pbXBvcnQgc3RyaW5naWZ5IGZyb20gJy4vc3RyaW5naWZ5J1xuXG5mdW5jdGlvbiBjbG9uZU5vZGUgKG9iaiwgcGFyZW50KSB7XG4gIGxldCBjbG9uZWQgPSBuZXcgb2JqLmNvbnN0cnVjdG9yKClcblxuICBmb3IgKGxldCBpIGluIG9iaikge1xuICAgIGlmICghb2JqLmhhc093blByb3BlcnR5KGkpKSBjb250aW51ZVxuICAgIGxldCB2YWx1ZSA9IG9ialtpXVxuICAgIGxldCB0eXBlID0gdHlwZW9mIHZhbHVlXG5cbiAgICBpZiAoaSA9PT0gJ3BhcmVudCcgJiYgdHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChwYXJlbnQpIGNsb25lZFtpXSA9IHBhcmVudFxuICAgIH0gZWxzZSBpZiAoaSA9PT0gJ3NvdXJjZScpIHtcbiAgICAgIGNsb25lZFtpXSA9IHZhbHVlXG4gICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBjbG9uZWRbaV0gPSB2YWx1ZS5tYXAoaiA9PiBjbG9uZU5vZGUoaiwgY2xvbmVkKSlcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHR5cGUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsKSB2YWx1ZSA9IGNsb25lTm9kZSh2YWx1ZSlcbiAgICAgIGNsb25lZFtpXSA9IHZhbHVlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNsb25lZFxufVxuXG4vKipcbiAqIEFsbCBub2RlIGNsYXNzZXMgaW5oZXJpdCB0aGUgZm9sbG93aW5nIGNvbW1vbiBtZXRob2RzLlxuICpcbiAqIEBhYnN0cmFjdFxuICovXG5jbGFzcyBOb2RlIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbZGVmYXVsdHNdIFZhbHVlIGZvciBub2RlIHByb3BlcnRpZXMuXG4gICAqL1xuICBjb25zdHJ1Y3RvciAoZGVmYXVsdHMgPSB7IH0pIHtcbiAgICB0aGlzLnJhd3MgPSB7IH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKHR5cGVvZiBkZWZhdWx0cyAhPT0gJ29iamVjdCcgJiYgdHlwZW9mIGRlZmF1bHRzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1Bvc3RDU1Mgbm9kZXMgY29uc3RydWN0b3IgYWNjZXB0cyBvYmplY3QsIG5vdCAnICtcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShkZWZhdWx0cylcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGxldCBuYW1lIGluIGRlZmF1bHRzKSB7XG4gICAgICB0aGlzW25hbWVdID0gZGVmYXVsdHNbbmFtZV1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGBDc3NTeW50YXhFcnJvcmAgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgb3JpZ2luYWwgcG9zaXRpb25cbiAgICogb2YgdGhlIG5vZGUgaW4gdGhlIHNvdXJjZSwgc2hvd2luZyBsaW5lIGFuZCBjb2x1bW4gbnVtYmVycyBhbmQgYWxzb1xuICAgKiBhIHNtYWxsIGV4Y2VycHQgdG8gZmFjaWxpdGF0ZSBkZWJ1Z2dpbmcuXG4gICAqXG4gICAqIElmIHByZXNlbnQsIGFuIGlucHV0IHNvdXJjZSBtYXAgd2lsbCBiZSB1c2VkIHRvIGdldCB0aGUgb3JpZ2luYWwgcG9zaXRpb25cbiAgICogb2YgdGhlIHNvdXJjZSwgZXZlbiBmcm9tIGEgcHJldmlvdXMgY29tcGlsYXRpb24gc3RlcFxuICAgKiAoZS5nLiwgZnJvbSBTYXNzIGNvbXBpbGF0aW9uKS5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgcHJvZHVjZXMgdmVyeSB1c2VmdWwgZXJyb3IgbWVzc2FnZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlICAgICBFcnJvciBkZXNjcmlwdGlvbi5cbiAgICogQHBhcmFtIHtvYmplY3R9IFtvcHRzXSAgICAgIE9wdGlvbnMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLnBsdWdpbiBQbHVnaW4gbmFtZSB0aGF0IGNyZWF0ZWQgdGhpcyBlcnJvci5cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3RDU1Mgd2lsbCBzZXQgaXQgYXV0b21hdGljYWxseS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMud29yZCAgIEEgd29yZCBpbnNpZGUgYSBub2Rl4oCZcyBzdHJpbmcgdGhhdCBzaG91bGRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGhpZ2hsaWdodGVkIGFzIHRoZSBzb3VyY2Ugb2YgdGhlIGVycm9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0gb3B0cy5pbmRleCAgQW4gaW5kZXggaW5zaWRlIGEgbm9kZeKAmXMgc3RyaW5nIHRoYXQgc2hvdWxkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBoaWdobGlnaHRlZCBhcyB0aGUgc291cmNlIG9mIHRoZSBlcnJvci5cbiAgICpcbiAgICogQHJldHVybiB7Q3NzU3ludGF4RXJyb3J9IEVycm9yIG9iamVjdCB0byB0aHJvdyBpdC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogaWYgKCF2YXJpYWJsZXNbbmFtZV0pIHtcbiAgICogICB0aHJvdyBkZWNsLmVycm9yKCdVbmtub3duIHZhcmlhYmxlICcgKyBuYW1lLCB7IHdvcmQ6IG5hbWUgfSlcbiAgICogICAvLyBDc3NTeW50YXhFcnJvcjogcG9zdGNzcy12YXJzOmEuc2Fzczo0OjM6IFVua25vd24gdmFyaWFibGUgJGJsYWNrXG4gICAqICAgLy8gICBjb2xvcjogJGJsYWNrXG4gICAqICAgLy8gYVxuICAgKiAgIC8vICAgICAgICAgIF5cbiAgICogICAvLyAgIGJhY2tncm91bmQ6IHdoaXRlXG4gICAqIH1cbiAgICovXG4gIGVycm9yIChtZXNzYWdlLCBvcHRzID0geyB9KSB7XG4gICAgaWYgKHRoaXMuc291cmNlKSB7XG4gICAgICBsZXQgcG9zID0gdGhpcy5wb3NpdGlvbkJ5KG9wdHMpXG4gICAgICByZXR1cm4gdGhpcy5zb3VyY2UuaW5wdXQuZXJyb3IobWVzc2FnZSwgcG9zLmxpbmUsIHBvcy5jb2x1bW4sIG9wdHMpXG4gICAgfVxuICAgIHJldHVybiBuZXcgQ3NzU3ludGF4RXJyb3IobWVzc2FnZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIHdyYXBwZXIgZm9yIHtAbGluayBSZXN1bHQjd2Fybn0uXG4gICAqXG4gICAqIEBwYXJhbSB7UmVzdWx0fSByZXN1bHQgICAgICBUaGUge0BsaW5rIFJlc3VsdH0gaW5zdGFuY2VcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgd2lsbCByZWNlaXZlIHRoZSB3YXJuaW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAgICAgICAgV2FybmluZyBtZXNzYWdlLlxuICAgKiBAcGFyYW0ge29iamVjdH0gW29wdHNdICAgICAgT3B0aW9uc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5wbHVnaW4gUGx1Z2luIG5hbWUgdGhhdCBjcmVhdGVkIHRoaXMgd2FybmluZy5cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3RDU1Mgd2lsbCBzZXQgaXQgYXV0b21hdGljYWxseS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMud29yZCAgIEEgd29yZCBpbnNpZGUgYSBub2Rl4oCZcyBzdHJpbmcgdGhhdCBzaG91bGRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGhpZ2hsaWdodGVkIGFzIHRoZSBzb3VyY2Ugb2YgdGhlIHdhcm5pbmcuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRzLmluZGV4ICBBbiBpbmRleCBpbnNpZGUgYSBub2Rl4oCZcyBzdHJpbmcgdGhhdCBzaG91bGRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGhpZ2hsaWdodGVkIGFzIHRoZSBzb3VyY2Ugb2YgdGhlIHdhcm5pbmcuXG4gICAqXG4gICAqIEByZXR1cm4ge1dhcm5pbmd9IENyZWF0ZWQgd2FybmluZyBvYmplY3QuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHBsdWdpbiA9IHBvc3Rjc3MucGx1Z2luKCdwb3N0Y3NzLWRlcHJlY2F0ZWQnLCAoKSA9PiB7XG4gICAqICAgcmV0dXJuIChyb290LCByZXN1bHQpID0+IHtcbiAgICogICAgIHJvb3Qud2Fsa0RlY2xzKCdiYWQnLCBkZWNsID0+IHtcbiAgICogICAgICAgZGVjbC53YXJuKHJlc3VsdCwgJ0RlcHJlY2F0ZWQgcHJvcGVydHkgYmFkJylcbiAgICogICAgIH0pXG4gICAqICAgfVxuICAgKiB9KVxuICAgKi9cbiAgd2FybiAocmVzdWx0LCB0ZXh0LCBvcHRzKSB7XG4gICAgbGV0IGRhdGEgPSB7IG5vZGU6IHRoaXMgfVxuICAgIGZvciAobGV0IGkgaW4gb3B0cykgZGF0YVtpXSA9IG9wdHNbaV1cbiAgICByZXR1cm4gcmVzdWx0Lndhcm4odGV4dCwgZGF0YSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBub2RlIGZyb20gaXRzIHBhcmVudCBhbmQgY2xlYW5zIHRoZSBwYXJlbnQgcHJvcGVydGllc1xuICAgKiBmcm9tIHRoZSBub2RlIGFuZCBpdHMgY2hpbGRyZW4uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGlmIChkZWNsLnByb3AubWF0Y2goL14td2Via2l0LS8pKSB7XG4gICAqICAgZGVjbC5yZW1vdmUoKVxuICAgKiB9XG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV9IE5vZGUgdG8gbWFrZSBjYWxscyBjaGFpbi5cbiAgICovXG4gIHJlbW92ZSAoKSB7XG4gICAgaWYgKHRoaXMucGFyZW50KSB7XG4gICAgICB0aGlzLnBhcmVudC5yZW1vdmVDaGlsZCh0aGlzKVxuICAgIH1cbiAgICB0aGlzLnBhcmVudCA9IHVuZGVmaW5lZFxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIENTUyBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBub2RlLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ2lmaWVyfHN5bnRheH0gW3N0cmluZ2lmaWVyXSBBIHN5bnRheCB0byB1c2VcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gc3RyaW5nIGdlbmVyYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ30gQ1NTIHN0cmluZyBvZiB0aGlzIG5vZGUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHBvc3Rjc3MucnVsZSh7IHNlbGVjdG9yOiAnYScgfSkudG9TdHJpbmcoKSAvLz0+IFwiYSB7fVwiXG4gICAqL1xuICB0b1N0cmluZyAoc3RyaW5naWZpZXIgPSBzdHJpbmdpZnkpIHtcbiAgICBpZiAoc3RyaW5naWZpZXIuc3RyaW5naWZ5KSBzdHJpbmdpZmllciA9IHN0cmluZ2lmaWVyLnN0cmluZ2lmeVxuICAgIGxldCByZXN1bHQgPSAnJ1xuICAgIHN0cmluZ2lmaWVyKHRoaXMsIGkgPT4ge1xuICAgICAgcmVzdWx0ICs9IGlcbiAgICB9KVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGV4YWN0IGNsb25lIG9mIHRoZSBub2RlLlxuICAgKlxuICAgKiBUaGUgcmVzdWx0aW5nIGNsb25lZCBub2RlIGFuZCBpdHMgKGNsb25lZCkgY2hpbGRyZW4gd2lsbCByZXRhaW5cbiAgICogY29kZSBzdHlsZSBwcm9wZXJ0aWVzLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gW292ZXJyaWRlc10gTmV3IHByb3BlcnRpZXMgdG8gb3ZlcnJpZGUgaW4gdGhlIGNsb25lLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBkZWNsLnJhd3MuYmVmb3JlICAgIC8vPT4gXCJcXG4gIFwiXG4gICAqIGNvbnN0IGNsb25lZCA9IGRlY2wuY2xvbmUoeyBwcm9wOiAnLW1vei0nICsgZGVjbC5wcm9wIH0pXG4gICAqIGNsb25lZC5yYXdzLmJlZm9yZSAgLy89PiBcIlxcbiAgXCJcbiAgICogY2xvbmVkLnRvU3RyaW5nKCkgICAvLz0+IC1tb3otdHJhbnNmb3JtOiBzY2FsZSgwKVxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBDbG9uZSBvZiB0aGUgbm9kZS5cbiAgICovXG4gIGNsb25lIChvdmVycmlkZXMgPSB7IH0pIHtcbiAgICBsZXQgY2xvbmVkID0gY2xvbmVOb2RlKHRoaXMpXG4gICAgZm9yIChsZXQgbmFtZSBpbiBvdmVycmlkZXMpIHtcbiAgICAgIGNsb25lZFtuYW1lXSA9IG92ZXJyaWRlc1tuYW1lXVxuICAgIH1cbiAgICByZXR1cm4gY2xvbmVkXG4gIH1cblxuICAvKipcbiAgICogU2hvcnRjdXQgdG8gY2xvbmUgdGhlIG5vZGUgYW5kIGluc2VydCB0aGUgcmVzdWx0aW5nIGNsb25lZCBub2RlXG4gICAqIGJlZm9yZSB0aGUgY3VycmVudCBub2RlLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gW292ZXJyaWRlc10gTWV3IHByb3BlcnRpZXMgdG8gb3ZlcnJpZGUgaW4gdGhlIGNsb25lLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBkZWNsLmNsb25lQmVmb3JlKHsgcHJvcDogJy1tb3otJyArIGRlY2wucHJvcCB9KVxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBOZXcgbm9kZVxuICAgKi9cbiAgY2xvbmVCZWZvcmUgKG92ZXJyaWRlcyA9IHsgfSkge1xuICAgIGxldCBjbG9uZWQgPSB0aGlzLmNsb25lKG92ZXJyaWRlcylcbiAgICB0aGlzLnBhcmVudC5pbnNlcnRCZWZvcmUodGhpcywgY2xvbmVkKVxuICAgIHJldHVybiBjbG9uZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG9ydGN1dCB0byBjbG9uZSB0aGUgbm9kZSBhbmQgaW5zZXJ0IHRoZSByZXN1bHRpbmcgY2xvbmVkIG5vZGVcbiAgICogYWZ0ZXIgdGhlIGN1cnJlbnQgbm9kZS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IFtvdmVycmlkZXNdIE5ldyBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIGluIHRoZSBjbG9uZS5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gTmV3IG5vZGUuXG4gICAqL1xuICBjbG9uZUFmdGVyIChvdmVycmlkZXMgPSB7IH0pIHtcbiAgICBsZXQgY2xvbmVkID0gdGhpcy5jbG9uZShvdmVycmlkZXMpXG4gICAgdGhpcy5wYXJlbnQuaW5zZXJ0QWZ0ZXIodGhpcywgY2xvbmVkKVxuICAgIHJldHVybiBjbG9uZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnNlcnRzIG5vZGUocykgYmVmb3JlIHRoZSBjdXJyZW50IG5vZGUgYW5kIHJlbW92ZXMgdGhlIGN1cnJlbnQgbm9kZS5cbiAgICpcbiAgICogQHBhcmFtIHsuLi5Ob2RlfSBub2RlcyBNb2RlKHMpIHRvIHJlcGxhY2UgY3VycmVudCBvbmUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGlmIChhdHJ1bGUubmFtZSA9PT0gJ21peGluJykge1xuICAgKiAgIGF0cnVsZS5yZXBsYWNlV2l0aChtaXhpblJ1bGVzW2F0cnVsZS5wYXJhbXNdKVxuICAgKiB9XG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV9IEN1cnJlbnQgbm9kZSB0byBtZXRob2RzIGNoYWluLlxuICAgKi9cbiAgcmVwbGFjZVdpdGggKC4uLm5vZGVzKSB7XG4gICAgaWYgKHRoaXMucGFyZW50KSB7XG4gICAgICBmb3IgKGxldCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICAgIHRoaXMucGFyZW50Lmluc2VydEJlZm9yZSh0aGlzLCBub2RlKVxuICAgICAgfVxuXG4gICAgICB0aGlzLnJlbW92ZSgpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBuZXh0IGNoaWxkIG9mIHRoZSBub2Rl4oCZcyBwYXJlbnQuXG4gICAqIFJldHVybnMgYHVuZGVmaW5lZGAgaWYgdGhlIGN1cnJlbnQgbm9kZSBpcyB0aGUgbGFzdCBjaGlsZC5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZXx1bmRlZmluZWR9IE5leHQgbm9kZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogaWYgKGNvbW1lbnQudGV4dCA9PT0gJ2RlbGV0ZSBuZXh0Jykge1xuICAgKiAgIGNvbnN0IG5leHQgPSBjb21tZW50Lm5leHQoKVxuICAgKiAgIGlmIChuZXh0KSB7XG4gICAqICAgICBuZXh0LnJlbW92ZSgpXG4gICAqICAgfVxuICAgKiB9XG4gICAqL1xuICBuZXh0ICgpIHtcbiAgICBpZiAoIXRoaXMucGFyZW50KSByZXR1cm4gdW5kZWZpbmVkXG4gICAgbGV0IGluZGV4ID0gdGhpcy5wYXJlbnQuaW5kZXgodGhpcylcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQubm9kZXNbaW5kZXggKyAxXVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHByZXZpb3VzIGNoaWxkIG9mIHRoZSBub2Rl4oCZcyBwYXJlbnQuXG4gICAqIFJldHVybnMgYHVuZGVmaW5lZGAgaWYgdGhlIGN1cnJlbnQgbm9kZSBpcyB0aGUgZmlyc3QgY2hpbGQuXG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV8dW5kZWZpbmVkfSBQcmV2aW91cyBub2RlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBhbm5vdGF0aW9uID0gZGVjbC5wcmV2KClcbiAgICogaWYgKGFubm90YXRpb24udHlwZSA9PT0gJ2NvbW1lbnQnKSB7XG4gICAqICAgcmVhZEFubm90YXRpb24oYW5ub3RhdGlvbi50ZXh0KVxuICAgKiB9XG4gICAqL1xuICBwcmV2ICgpIHtcbiAgICBpZiAoIXRoaXMucGFyZW50KSByZXR1cm4gdW5kZWZpbmVkXG4gICAgbGV0IGluZGV4ID0gdGhpcy5wYXJlbnQuaW5kZXgodGhpcylcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQubm9kZXNbaW5kZXggLSAxXVxuICB9XG5cbiAgLyoqXG4gICAqIEluc2VydCBuZXcgbm9kZSBiZWZvcmUgY3VycmVudCBub2RlIHRvIGN1cnJlbnQgbm9kZeKAmXMgcGFyZW50LlxuICAgKlxuICAgKiBKdXN0IGFsaWFzIGZvciBgbm9kZS5wYXJlbnQuaW5zZXJ0QmVmb3JlKG5vZGUsIGFkZClgLlxuICAgKlxuICAgKiBAcGFyYW0ge05vZGV8b2JqZWN0fHN0cmluZ3xOb2RlW119IGFkZCBOZXcgbm9kZS5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gVGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBkZWNsLmJlZm9yZSgnY29udGVudDogXCJcIicpXG4gICAqL1xuICBiZWZvcmUgKGFkZCkge1xuICAgIHRoaXMucGFyZW50Lmluc2VydEJlZm9yZSh0aGlzLCBhZGQpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnNlcnQgbmV3IG5vZGUgYWZ0ZXIgY3VycmVudCBub2RlIHRvIGN1cnJlbnQgbm9kZeKAmXMgcGFyZW50LlxuICAgKlxuICAgKiBKdXN0IGFsaWFzIGZvciBgbm9kZS5wYXJlbnQuaW5zZXJ0QWZ0ZXIobm9kZSwgYWRkKWAuXG4gICAqXG4gICAqIEBwYXJhbSB7Tm9kZXxvYmplY3R8c3RyaW5nfE5vZGVbXX0gYWRkIE5ldyBub2RlLlxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBUaGlzIG5vZGUgZm9yIG1ldGhvZHMgY2hhaW4uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGRlY2wuYWZ0ZXIoJ2NvbG9yOiBibGFjaycpXG4gICAqL1xuICBhZnRlciAoYWRkKSB7XG4gICAgdGhpcy5wYXJlbnQuaW5zZXJ0QWZ0ZXIodGhpcywgYWRkKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICB0b0pTT04gKCkge1xuICAgIGxldCBmaXhlZCA9IHsgfVxuXG4gICAgZm9yIChsZXQgbmFtZSBpbiB0aGlzKSB7XG4gICAgICBpZiAoIXRoaXMuaGFzT3duUHJvcGVydHkobmFtZSkpIGNvbnRpbnVlXG4gICAgICBpZiAobmFtZSA9PT0gJ3BhcmVudCcpIGNvbnRpbnVlXG4gICAgICBsZXQgdmFsdWUgPSB0aGlzW25hbWVdXG5cbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIGZpeGVkW25hbWVdID0gdmFsdWUubWFwKGkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgaSA9PT0gJ29iamVjdCcgJiYgaS50b0pTT04pIHtcbiAgICAgICAgICAgIHJldHVybiBpLnRvSlNPTigpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlLnRvSlNPTikge1xuICAgICAgICBmaXhlZFtuYW1lXSA9IHZhbHVlLnRvSlNPTigpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaXhlZFtuYW1lXSA9IHZhbHVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpeGVkXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHtAbGluayBOb2RlI3Jhd3N9IHZhbHVlLiBJZiB0aGUgbm9kZSBpcyBtaXNzaW5nXG4gICAqIHRoZSBjb2RlIHN0eWxlIHByb3BlcnR5IChiZWNhdXNlIHRoZSBub2RlIHdhcyBtYW51YWxseSBidWlsdCBvciBjbG9uZWQpLFxuICAgKiBQb3N0Q1NTIHdpbGwgdHJ5IHRvIGF1dG9kZXRlY3QgdGhlIGNvZGUgc3R5bGUgcHJvcGVydHkgYnkgbG9va2luZ1xuICAgKiBhdCBvdGhlciBub2RlcyBpbiB0aGUgdHJlZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHByb3AgICAgICAgICAgTmFtZSBvZiBjb2RlIHN0eWxlIHByb3BlcnR5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2RlZmF1bHRUeXBlXSBOYW1lIG9mIGRlZmF1bHQgdmFsdWUsIGl0IGNhbiBiZSBtaXNzZWRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGhlIHZhbHVlIGlzIHRoZSBzYW1lIGFzIHByb3AuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhIHsgYmFja2dyb3VuZDogd2hpdGUgfScpXG4gICAqIHJvb3Qubm9kZXNbMF0uYXBwZW5kKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdibGFjaycgfSlcbiAgICogcm9vdC5ub2Rlc1swXS5ub2Rlc1sxXS5yYXdzLmJlZm9yZSAgIC8vPT4gdW5kZWZpbmVkXG4gICAqIHJvb3Qubm9kZXNbMF0ubm9kZXNbMV0ucmF3KCdiZWZvcmUnKSAvLz0+ICcgJ1xuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IENvZGUgc3R5bGUgdmFsdWUuXG4gICAqL1xuICByYXcgKHByb3AsIGRlZmF1bHRUeXBlKSB7XG4gICAgbGV0IHN0ciA9IG5ldyBTdHJpbmdpZmllcigpXG4gICAgcmV0dXJuIHN0ci5yYXcodGhpcywgcHJvcCwgZGVmYXVsdFR5cGUpXG4gIH1cblxuICAvKipcbiAgICogRmluZHMgdGhlIFJvb3QgaW5zdGFuY2Ugb2YgdGhlIG5vZGXigJlzIHRyZWUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJvb3Qubm9kZXNbMF0ubm9kZXNbMF0ucm9vdCgpID09PSByb290XG4gICAqXG4gICAqIEByZXR1cm4ge1Jvb3R9IFJvb3QgcGFyZW50LlxuICAgKi9cbiAgcm9vdCAoKSB7XG4gICAgbGV0IHJlc3VsdCA9IHRoaXNcbiAgICB3aGlsZSAocmVzdWx0LnBhcmVudCkgcmVzdWx0ID0gcmVzdWx0LnBhcmVudFxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciB0aGUgY29kZSBzdHlsZSBwcm9wZXJ0aWVzIGZvciB0aGUgbm9kZSBhbmQgaXRzIGNoaWxkcmVuLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtrZWVwQmV0d2Vlbl0gS2VlcCB0aGUgcmF3cy5iZXR3ZWVuIHN5bWJvbHMuXG4gICAqXG4gICAqIEByZXR1cm4ge3VuZGVmaW5lZH1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogbm9kZS5yYXdzLmJlZm9yZSAgLy89PiAnICdcbiAgICogbm9kZS5jbGVhblJhd3MoKVxuICAgKiBub2RlLnJhd3MuYmVmb3JlICAvLz0+IHVuZGVmaW5lZFxuICAgKi9cbiAgY2xlYW5SYXdzIChrZWVwQmV0d2Vlbikge1xuICAgIGRlbGV0ZSB0aGlzLnJhd3MuYmVmb3JlXG4gICAgZGVsZXRlIHRoaXMucmF3cy5hZnRlclxuICAgIGlmICgha2VlcEJldHdlZW4pIGRlbGV0ZSB0aGlzLnJhd3MuYmV0d2VlblxuICB9XG5cbiAgcG9zaXRpb25JbnNpZGUgKGluZGV4KSB7XG4gICAgbGV0IHN0cmluZyA9IHRoaXMudG9TdHJpbmcoKVxuICAgIGxldCBjb2x1bW4gPSB0aGlzLnNvdXJjZS5zdGFydC5jb2x1bW5cbiAgICBsZXQgbGluZSA9IHRoaXMuc291cmNlLnN0YXJ0LmxpbmVcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5kZXg7IGkrKykge1xuICAgICAgaWYgKHN0cmluZ1tpXSA9PT0gJ1xcbicpIHtcbiAgICAgICAgY29sdW1uID0gMVxuICAgICAgICBsaW5lICs9IDFcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbHVtbiArPSAxXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgbGluZSwgY29sdW1uIH1cbiAgfVxuXG4gIHBvc2l0aW9uQnkgKG9wdHMpIHtcbiAgICBsZXQgcG9zID0gdGhpcy5zb3VyY2Uuc3RhcnRcbiAgICBpZiAob3B0cy5pbmRleCkge1xuICAgICAgcG9zID0gdGhpcy5wb3NpdGlvbkluc2lkZShvcHRzLmluZGV4KVxuICAgIH0gZWxzZSBpZiAob3B0cy53b3JkKSB7XG4gICAgICBsZXQgaW5kZXggPSB0aGlzLnRvU3RyaW5nKCkuaW5kZXhPZihvcHRzLndvcmQpXG4gICAgICBpZiAoaW5kZXggIT09IC0xKSBwb3MgPSB0aGlzLnBvc2l0aW9uSW5zaWRlKGluZGV4KVxuICAgIH1cbiAgICByZXR1cm4gcG9zXG4gIH1cblxuICAvKipcbiAgICogQG1lbWJlcm9mIE5vZGUjXG4gICAqIEBtZW1iZXIge3N0cmluZ30gdHlwZSBTdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBub2Rl4oCZcyB0eXBlLlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGUgdmFsdWVzIGFyZSBgcm9vdGAsIGBhdHJ1bGVgLCBgcnVsZWAsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICBgZGVjbGAsIG9yIGBjb21tZW50YC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcG9zdGNzcy5kZWNsKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdibGFjaycgfSkudHlwZSAvLz0+ICdkZWNsJ1xuICAgKi9cblxuICAvKipcbiAgICogQG1lbWJlcm9mIE5vZGUjXG4gICAqIEBtZW1iZXIge0NvbnRhaW5lcn0gcGFyZW50IFRoZSBub2Rl4oCZcyBwYXJlbnQgbm9kZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcm9vdC5ub2Rlc1swXS5wYXJlbnQgPT09IHJvb3RcbiAgICovXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBOb2RlI1xuICAgKiBAbWVtYmVyIHtzb3VyY2V9IHNvdXJjZSBUaGUgaW5wdXQgc291cmNlIG9mIHRoZSBub2RlLlxuICAgKlxuICAgKiBUaGUgcHJvcGVydHkgaXMgdXNlZCBpbiBzb3VyY2UgbWFwIGdlbmVyYXRpb24uXG4gICAqXG4gICAqIElmIHlvdSBjcmVhdGUgYSBub2RlIG1hbnVhbGx5IChlLmcuLCB3aXRoIGBwb3N0Y3NzLmRlY2woKWApLFxuICAgKiB0aGF0IG5vZGUgd2lsbCBub3QgaGF2ZSBhIGBzb3VyY2VgIHByb3BlcnR5IGFuZCB3aWxsIGJlIGFic2VudFxuICAgKiBmcm9tIHRoZSBzb3VyY2UgbWFwLiBGb3IgdGhpcyByZWFzb24sIHRoZSBwbHVnaW4gZGV2ZWxvcGVyIHNob3VsZFxuICAgKiBjb25zaWRlciBjbG9uaW5nIG5vZGVzIHRvIGNyZWF0ZSBuZXcgb25lcyAoaW4gd2hpY2ggY2FzZSB0aGUgbmV3IG5vZGXigJlzXG4gICAqIHNvdXJjZSB3aWxsIHJlZmVyZW5jZSB0aGUgb3JpZ2luYWwsIGNsb25lZCBub2RlKSBvciBzZXR0aW5nXG4gICAqIHRoZSBgc291cmNlYCBwcm9wZXJ0eSBtYW51YWxseS5cbiAgICpcbiAgICogYGBganNcbiAgICogLy8gQmFkXG4gICAqIGNvbnN0IHByZWZpeGVkID0gcG9zdGNzcy5kZWNsKHtcbiAgICogICBwcm9wOiAnLW1vei0nICsgZGVjbC5wcm9wLFxuICAgKiAgIHZhbHVlOiBkZWNsLnZhbHVlXG4gICAqIH0pXG4gICAqXG4gICAqIC8vIEdvb2RcbiAgICogY29uc3QgcHJlZml4ZWQgPSBkZWNsLmNsb25lKHsgcHJvcDogJy1tb3otJyArIGRlY2wucHJvcCB9KVxuICAgKiBgYGBcbiAgICpcbiAgICogYGBganNcbiAgICogaWYgKGF0cnVsZS5uYW1lID09PSAnYWRkLWxpbmsnKSB7XG4gICAqICAgY29uc3QgcnVsZSA9IHBvc3Rjc3MucnVsZSh7IHNlbGVjdG9yOiAnYScsIHNvdXJjZTogYXRydWxlLnNvdXJjZSB9KVxuICAgKiAgIGF0cnVsZS5wYXJlbnQuaW5zZXJ0QmVmb3JlKGF0cnVsZSwgcnVsZSlcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZGVjbC5zb3VyY2UuaW5wdXQuZnJvbSAvLz0+ICcvaG9tZS9haS9hLnNhc3MnXG4gICAqIGRlY2wuc291cmNlLnN0YXJ0ICAgICAgLy89PiB7IGxpbmU6IDEwLCBjb2x1bW46IDIgfVxuICAgKiBkZWNsLnNvdXJjZS5lbmQgICAgICAgIC8vPT4geyBsaW5lOiAxMCwgY29sdW1uOiAxMiB9XG4gICAqL1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgTm9kZSNcbiAgICogQG1lbWJlciB7b2JqZWN0fSByYXdzIEluZm9ybWF0aW9uIHRvIGdlbmVyYXRlIGJ5dGUtdG8tYnl0ZSBlcXVhbFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgbm9kZSBzdHJpbmcgYXMgaXQgd2FzIGluIHRoZSBvcmlnaW4gaW5wdXQuXG4gICAqXG4gICAqIEV2ZXJ5IHBhcnNlciBzYXZlcyBpdHMgb3duIHByb3BlcnRpZXMsXG4gICAqIGJ1dCB0aGUgZGVmYXVsdCBDU1MgcGFyc2VyIHVzZXM6XG4gICAqXG4gICAqICogYGJlZm9yZWA6IHRoZSBzcGFjZSBzeW1ib2xzIGJlZm9yZSB0aGUgbm9kZS4gSXQgYWxzbyBzdG9yZXMgYCpgXG4gICAqICAgYW5kIGBfYCBzeW1ib2xzIGJlZm9yZSB0aGUgZGVjbGFyYXRpb24gKElFIGhhY2spLlxuICAgKiAqIGBhZnRlcmA6IHRoZSBzcGFjZSBzeW1ib2xzIGFmdGVyIHRoZSBsYXN0IGNoaWxkIG9mIHRoZSBub2RlXG4gICAqICAgdG8gdGhlIGVuZCBvZiB0aGUgbm9kZS5cbiAgICogKiBgYmV0d2VlbmA6IHRoZSBzeW1ib2xzIGJldHdlZW4gdGhlIHByb3BlcnR5IGFuZCB2YWx1ZVxuICAgKiAgIGZvciBkZWNsYXJhdGlvbnMsIHNlbGVjdG9yIGFuZCBge2AgZm9yIHJ1bGVzLCBvciBsYXN0IHBhcmFtZXRlclxuICAgKiAgIGFuZCBge2AgZm9yIGF0LXJ1bGVzLlxuICAgKiAqIGBzZW1pY29sb25gOiBjb250YWlucyB0cnVlIGlmIHRoZSBsYXN0IGNoaWxkIGhhc1xuICAgKiAgIGFuIChvcHRpb25hbCkgc2VtaWNvbG9uLlxuICAgKiAqIGBhZnRlck5hbWVgOiB0aGUgc3BhY2UgYmV0d2VlbiB0aGUgYXQtcnVsZSBuYW1lIGFuZCBpdHMgcGFyYW1ldGVycy5cbiAgICogKiBgbGVmdGA6IHRoZSBzcGFjZSBzeW1ib2xzIGJldHdlZW4gYC8qYCBhbmQgdGhlIGNvbW1lbnTigJlzIHRleHQuXG4gICAqICogYHJpZ2h0YDogdGhlIHNwYWNlIHN5bWJvbHMgYmV0d2VlbiB0aGUgY29tbWVudOKAmXMgdGV4dFxuICAgKiAgIGFuZCA8Y29kZT4qJiM0Nzs8L2NvZGU+LlxuICAgKiAqIGBpbXBvcnRhbnRgOiB0aGUgY29udGVudCBvZiB0aGUgaW1wb3J0YW50IHN0YXRlbWVudCxcbiAgICogICBpZiBpdCBpcyBub3QganVzdCBgIWltcG9ydGFudGAuXG4gICAqXG4gICAqIFBvc3RDU1MgY2xlYW5zIHNlbGVjdG9ycywgZGVjbGFyYXRpb24gdmFsdWVzIGFuZCBhdC1ydWxlIHBhcmFtZXRlcnNcbiAgICogZnJvbSBjb21tZW50cyBhbmQgZXh0cmEgc3BhY2VzLCBidXQgaXQgc3RvcmVzIG9yaWdpbiBjb250ZW50IGluIHJhd3NcbiAgICogcHJvcGVydGllcy4gQXMgc3VjaCwgaWYgeW91IGRvbuKAmXQgY2hhbmdlIGEgZGVjbGFyYXRpb27igJlzIHZhbHVlLFxuICAgKiBQb3N0Q1NTIHdpbGwgdXNlIHRoZSByYXcgdmFsdWUgd2l0aCBjb21tZW50cy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2Ege1xcbiAgY29sb3I6YmxhY2tcXG59JylcbiAgICogcm9vdC5maXJzdC5maXJzdC5yYXdzIC8vPT4geyBiZWZvcmU6ICdcXG4gICcsIGJldHdlZW46ICc6JyB9XG4gICAqL1xufVxuXG5leHBvcnQgZGVmYXVsdCBOb2RlXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gcG9zaXRpb25cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBsaW5lICAgU291cmNlIGxpbmUgaW4gZmlsZS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBjb2x1bW4gU291cmNlIGNvbHVtbiBpbiBmaWxlLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gc291cmNlXG4gKiBAcHJvcGVydHkge0lucHV0fSBpbnB1dCAgICB7QGxpbmsgSW5wdXR9IHdpdGggaW5wdXQgZmlsZVxuICogQHByb3BlcnR5IHtwb3NpdGlvbn0gc3RhcnQgVGhlIHN0YXJ0aW5nIHBvc2l0aW9uIG9mIHRoZSBub2Rl4oCZcyBzb3VyY2UuXG4gKiBAcHJvcGVydHkge3Bvc2l0aW9ufSBlbmQgICBUaGUgZW5kaW5nIHBvc2l0aW9uIG9mIHRoZSBub2Rl4oCZcyBzb3VyY2UuXG4gKi9cbiJdLCJmaWxlIjoibm9kZS5qcyJ9\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _stringifier = _interopRequireDefault(require(\"./stringifier\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringify(node, builder) {\n var str = new _stringifier.default(builder);\n str.stringify(node);\n}\n\nvar _default = stringify;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0cmluZ2lmeS5lczYiXSwibmFtZXMiOlsic3RyaW5naWZ5Iiwibm9kZSIsImJ1aWxkZXIiLCJzdHIiLCJTdHJpbmdpZmllciJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7OztBQUVBLFNBQVNBLFNBQVQsQ0FBb0JDLElBQXBCLEVBQTBCQyxPQUExQixFQUFtQztBQUNqQyxNQUFJQyxHQUFHLEdBQUcsSUFBSUMsb0JBQUosQ0FBZ0JGLE9BQWhCLENBQVY7QUFDQUMsRUFBQUEsR0FBRyxDQUFDSCxTQUFKLENBQWNDLElBQWQ7QUFDRDs7ZUFFY0QsUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTdHJpbmdpZmllciBmcm9tICcuL3N0cmluZ2lmaWVyJ1xuXG5mdW5jdGlvbiBzdHJpbmdpZnkgKG5vZGUsIGJ1aWxkZXIpIHtcbiAgbGV0IHN0ciA9IG5ldyBTdHJpbmdpZmllcihidWlsZGVyKVxuICBzdHIuc3RyaW5naWZ5KG5vZGUpXG59XG5cbmV4cG9ydCBkZWZhdWx0IHN0cmluZ2lmeVxuIl0sImZpbGUiOiJzdHJpbmdpZnkuanMifQ==\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _parser = _interopRequireDefault(require(\"./parser\"));\n\nvar _input = _interopRequireDefault(require(\"./input\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(css, opts) {\n var input = new _input.default(css, opts);\n var parser = new _parser.default(input);\n\n try {\n parser.parse();\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n if (e.name === 'CssSyntaxError' && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e.message += '\\nYou tried to parse SCSS with ' + 'the standard CSS parser; ' + 'try again with the postcss-scss parser';\n } else if (/\\.sass/i.test(opts.from)) {\n e.message += '\\nYou tried to parse Sass with ' + 'the standard CSS parser; ' + 'try again with the postcss-sass parser';\n } else if (/\\.less$/i.test(opts.from)) {\n e.message += '\\nYou tried to parse Less with ' + 'the standard CSS parser; ' + 'try again with the postcss-less parser';\n }\n }\n }\n\n throw e;\n }\n\n return parser.root;\n}\n\nvar _default = parse;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlLmVzNiJdLCJuYW1lcyI6WyJwYXJzZSIsImNzcyIsIm9wdHMiLCJpbnB1dCIsIklucHV0IiwicGFyc2VyIiwiUGFyc2VyIiwiZSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIm1lc3NhZ2UiLCJyb290Il0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUNBOzs7O0FBRUEsU0FBU0EsS0FBVCxDQUFnQkMsR0FBaEIsRUFBcUJDLElBQXJCLEVBQTJCO0FBQ3pCLE1BQUlDLEtBQUssR0FBRyxJQUFJQyxjQUFKLENBQVVILEdBQVYsRUFBZUMsSUFBZixDQUFaO0FBQ0EsTUFBSUcsTUFBTSxHQUFHLElBQUlDLGVBQUosQ0FBV0gsS0FBWCxDQUFiOztBQUNBLE1BQUk7QUFDRkUsSUFBQUEsTUFBTSxDQUFDTCxLQUFQO0FBQ0QsR0FGRCxDQUVFLE9BQU9PLENBQVAsRUFBVTtBQUNWLFFBQUlDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxRQUFaLEtBQXlCLFlBQTdCLEVBQTJDO0FBQ3pDLFVBQUlILENBQUMsQ0FBQ0ksSUFBRixLQUFXLGdCQUFYLElBQStCVCxJQUEvQixJQUF1Q0EsSUFBSSxDQUFDVSxJQUFoRCxFQUFzRDtBQUNwRCxZQUFJLFdBQVdDLElBQVgsQ0FBZ0JYLElBQUksQ0FBQ1UsSUFBckIsQ0FBSixFQUFnQztBQUM5QkwsVUFBQUEsQ0FBQyxDQUFDTyxPQUFGLElBQWEsb0NBQ0EsMkJBREEsR0FFQSx3Q0FGYjtBQUdELFNBSkQsTUFJTyxJQUFJLFVBQVVELElBQVYsQ0FBZVgsSUFBSSxDQUFDVSxJQUFwQixDQUFKLEVBQStCO0FBQ3BDTCxVQUFBQSxDQUFDLENBQUNPLE9BQUYsSUFBYSxvQ0FDQSwyQkFEQSxHQUVBLHdDQUZiO0FBR0QsU0FKTSxNQUlBLElBQUksV0FBV0QsSUFBWCxDQUFnQlgsSUFBSSxDQUFDVSxJQUFyQixDQUFKLEVBQWdDO0FBQ3JDTCxVQUFBQSxDQUFDLENBQUNPLE9BQUYsSUFBYSxvQ0FDQSwyQkFEQSxHQUVBLHdDQUZiO0FBR0Q7QUFDRjtBQUNGOztBQUNELFVBQU1QLENBQU47QUFDRDs7QUFFRCxTQUFPRixNQUFNLENBQUNVLElBQWQ7QUFDRDs7ZUFFY2YsSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQYXJzZXIgZnJvbSAnLi9wYXJzZXInXG5pbXBvcnQgSW5wdXQgZnJvbSAnLi9pbnB1dCdcblxuZnVuY3Rpb24gcGFyc2UgKGNzcywgb3B0cykge1xuICBsZXQgaW5wdXQgPSBuZXcgSW5wdXQoY3NzLCBvcHRzKVxuICBsZXQgcGFyc2VyID0gbmV3IFBhcnNlcihpbnB1dClcbiAgdHJ5IHtcbiAgICBwYXJzZXIucGFyc2UoKVxuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChlLm5hbWUgPT09ICdDc3NTeW50YXhFcnJvcicgJiYgb3B0cyAmJiBvcHRzLmZyb20pIHtcbiAgICAgICAgaWYgKC9cXC5zY3NzJC9pLnRlc3Qob3B0cy5mcm9tKSkge1xuICAgICAgICAgIGUubWVzc2FnZSArPSAnXFxuWW91IHRyaWVkIHRvIHBhcnNlIFNDU1Mgd2l0aCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzdGFuZGFyZCBDU1MgcGFyc2VyOyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgJ3RyeSBhZ2FpbiB3aXRoIHRoZSBwb3N0Y3NzLXNjc3MgcGFyc2VyJ1xuICAgICAgICB9IGVsc2UgaWYgKC9cXC5zYXNzL2kudGVzdChvcHRzLmZyb20pKSB7XG4gICAgICAgICAgZS5tZXNzYWdlICs9ICdcXG5Zb3UgdHJpZWQgdG8gcGFyc2UgU2FzcyB3aXRoICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAndGhlIHN0YW5kYXJkIENTUyBwYXJzZXI7ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAndHJ5IGFnYWluIHdpdGggdGhlIHBvc3Rjc3Mtc2FzcyBwYXJzZXInXG4gICAgICAgIH0gZWxzZSBpZiAoL1xcLmxlc3MkL2kudGVzdChvcHRzLmZyb20pKSB7XG4gICAgICAgICAgZS5tZXNzYWdlICs9ICdcXG5Zb3UgdHJpZWQgdG8gcGFyc2UgTGVzcyB3aXRoICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAndGhlIHN0YW5kYXJkIENTUyBwYXJzZXI7ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAndHJ5IGFnYWluIHdpdGggdGhlIHBvc3Rjc3MtbGVzcyBwYXJzZXInXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgZVxuICB9XG5cbiAgcmV0dXJuIHBhcnNlci5yb290XG59XG5cbmV4cG9ydCBkZWZhdWx0IHBhcnNlXG4iXSwiZmlsZSI6InBhcnNlLmpzIn0=\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * Represents a comment between declarations or statements (rule and at-rules).\n *\n * Comments inside selectors, at-rule parameters, or declaration values\n * will be stored in the `raws` properties explained above.\n *\n * @extends Node\n */\nvar Comment =\n/*#__PURE__*/\nfunction (_Node) {\n _inheritsLoose(Comment, _Node);\n\n function Comment(defaults) {\n var _this;\n\n _this = _Node.call(this, defaults) || this;\n _this.type = 'comment';\n return _this;\n }\n /**\n * @memberof Comment#\n * @member {string} text The comment’s text.\n */\n\n /**\n * @memberof Comment#\n * @member {object} raws Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node.\n * * `left`: the space symbols between `/*` and the comment’s text.\n * * `right`: the space symbols between the comment’s text.\n */\n\n\n return Comment;\n}(_node.default);\n\nvar _default = Comment;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbW1lbnQuZXM2Il0sIm5hbWVzIjpbIkNvbW1lbnQiLCJkZWZhdWx0cyIsInR5cGUiLCJOb2RlIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7QUFFQTs7Ozs7Ozs7SUFRTUEsTzs7Ozs7QUFDSixtQkFBYUMsUUFBYixFQUF1QjtBQUFBOztBQUNyQiw2QkFBTUEsUUFBTjtBQUNBLFVBQUtDLElBQUwsR0FBWSxTQUFaO0FBRnFCO0FBR3RCO0FBRUQ7Ozs7O0FBS0E7Ozs7Ozs7Ozs7Ozs7OztFQVhvQkMsYTs7ZUF5QlBILE8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTm9kZSBmcm9tICcuL25vZGUnXG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGNvbW1lbnQgYmV0d2VlbiBkZWNsYXJhdGlvbnMgb3Igc3RhdGVtZW50cyAocnVsZSBhbmQgYXQtcnVsZXMpLlxuICpcbiAqIENvbW1lbnRzIGluc2lkZSBzZWxlY3RvcnMsIGF0LXJ1bGUgcGFyYW1ldGVycywgb3IgZGVjbGFyYXRpb24gdmFsdWVzXG4gKiB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgYHJhd3NgIHByb3BlcnRpZXMgZXhwbGFpbmVkIGFib3ZlLlxuICpcbiAqIEBleHRlbmRzIE5vZGVcbiAqL1xuY2xhc3MgQ29tbWVudCBleHRlbmRzIE5vZGUge1xuICBjb25zdHJ1Y3RvciAoZGVmYXVsdHMpIHtcbiAgICBzdXBlcihkZWZhdWx0cylcbiAgICB0aGlzLnR5cGUgPSAnY29tbWVudCdcbiAgfVxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgQ29tbWVudCNcbiAgICogQG1lbWJlciB7c3RyaW5nfSB0ZXh0IFRoZSBjb21tZW504oCZcyB0ZXh0LlxuICAgKi9cblxuICAvKipcbiAgICogQG1lbWJlcm9mIENvbW1lbnQjXG4gICAqIEBtZW1iZXIge29iamVjdH0gcmF3cyBJbmZvcm1hdGlvbiB0byBnZW5lcmF0ZSBieXRlLXRvLWJ5dGUgZXF1YWxcbiAgICogICAgICAgICAgICAgICAgICAgICAgIG5vZGUgc3RyaW5nIGFzIGl0IHdhcyBpbiB0aGUgb3JpZ2luIGlucHV0LlxuICAgKlxuICAgKiBFdmVyeSBwYXJzZXIgc2F2ZXMgaXRzIG93biBwcm9wZXJ0aWVzLFxuICAgKiBidXQgdGhlIGRlZmF1bHQgQ1NTIHBhcnNlciB1c2VzOlxuICAgKlxuICAgKiAqIGBiZWZvcmVgOiB0aGUgc3BhY2Ugc3ltYm9scyBiZWZvcmUgdGhlIG5vZGUuXG4gICAqICogYGxlZnRgOiB0aGUgc3BhY2Ugc3ltYm9scyBiZXR3ZWVuIGAvKmAgYW5kIHRoZSBjb21tZW504oCZcyB0ZXh0LlxuICAgKiAqIGByaWdodGA6IHRoZSBzcGFjZSBzeW1ib2xzIGJldHdlZW4gdGhlIGNvbW1lbnTigJlzIHRleHQuXG4gICAqL1xufVxuXG5leHBvcnQgZGVmYXVsdCBDb21tZW50XG4iXSwiZmlsZSI6ImNvbW1lbnQuanMifQ==\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * Represents an at-rule.\n *\n * If it’s followed in the CSS by a {} block, this node will have\n * a nodes property representing its children.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('@charset \"UTF-8\"; @media print {}')\n *\n * const charset = root.first\n * charset.type //=> 'atrule'\n * charset.nodes //=> undefined\n *\n * const media = root.last\n * media.nodes //=> []\n */\nvar AtRule =\n/*#__PURE__*/\nfunction (_Container) {\n _inheritsLoose(AtRule, _Container);\n\n function AtRule(defaults) {\n var _this;\n\n _this = _Container.call(this, defaults) || this;\n _this.type = 'atrule';\n return _this;\n }\n\n var _proto = AtRule.prototype;\n\n _proto.append = function append() {\n var _Container$prototype$;\n\n if (!this.nodes) this.nodes = [];\n\n for (var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++) {\n children[_key] = arguments[_key];\n }\n\n return (_Container$prototype$ = _Container.prototype.append).call.apply(_Container$prototype$, [this].concat(children));\n };\n\n _proto.prepend = function prepend() {\n var _Container$prototype$2;\n\n if (!this.nodes) this.nodes = [];\n\n for (var _len2 = arguments.length, children = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n children[_key2] = arguments[_key2];\n }\n\n return (_Container$prototype$2 = _Container.prototype.prepend).call.apply(_Container$prototype$2, [this].concat(children));\n }\n /**\n * @memberof AtRule#\n * @member {string} name The at-rule’s name immediately follows the `@`.\n *\n * @example\n * const root = postcss.parse('@media print {}')\n * media.name //=> 'media'\n * const media = root.first\n */\n\n /**\n * @memberof AtRule#\n * @member {string} params The at-rule’s parameters, the values\n * that follow the at-rule’s name but precede\n * any {} block.\n *\n * @example\n * const root = postcss.parse('@media print, screen {}')\n * const media = root.first\n * media.params //=> 'print, screen'\n */\n\n /**\n * @memberof AtRule#\n * @member {object} raws Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node. It also stores `*`\n * and `_` symbols before the declaration (IE hack).\n * * `after`: the space symbols after the last child of the node\n * to the end of the node.\n * * `between`: the symbols between the property and value\n * for declarations, selector and `{` for rules, or last parameter\n * and `{` for at-rules.\n * * `semicolon`: contains true if the last child has\n * an (optional) semicolon.\n * * `afterName`: the space between the at-rule name and its parameters.\n *\n * PostCSS cleans at-rule parameters from comments and extra spaces,\n * but it stores origin content in raws properties.\n * As such, if you don’t change a declaration’s value,\n * PostCSS will use the raw value with comments.\n *\n * @example\n * const root = postcss.parse(' @media\\nprint {\\n}')\n * root.first.first.raws //=> { before: ' ',\n * // between: ' ',\n * // afterName: '\\n',\n * // after: '\\n' }\n */\n ;\n\n return AtRule;\n}(_container.default);\n\nvar _default = AtRule;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF0LXJ1bGUuZXM2Il0sIm5hbWVzIjpbIkF0UnVsZSIsImRlZmF1bHRzIiwidHlwZSIsImFwcGVuZCIsIm5vZGVzIiwiY2hpbGRyZW4iLCJwcmVwZW5kIiwiQ29udGFpbmVyIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBa0JNQSxNOzs7OztBQUNKLGtCQUFhQyxRQUFiLEVBQXVCO0FBQUE7O0FBQ3JCLGtDQUFNQSxRQUFOO0FBQ0EsVUFBS0MsSUFBTCxHQUFZLFFBQVo7QUFGcUI7QUFHdEI7Ozs7U0FFREMsTSxHQUFBLGtCQUFxQjtBQUFBOztBQUNuQixRQUFJLENBQUMsS0FBS0MsS0FBVixFQUFpQixLQUFLQSxLQUFMLEdBQWEsRUFBYjs7QUFERSxzQ0FBVkMsUUFBVTtBQUFWQSxNQUFBQSxRQUFVO0FBQUE7O0FBRW5CLHlEQUFhRixNQUFiLGtEQUF1QkUsUUFBdkI7QUFDRCxHOztTQUVEQyxPLEdBQUEsbUJBQXNCO0FBQUE7O0FBQ3BCLFFBQUksQ0FBQyxLQUFLRixLQUFWLEVBQWlCLEtBQUtBLEtBQUwsR0FBYSxFQUFiOztBQURHLHVDQUFWQyxRQUFVO0FBQVZBLE1BQUFBLFFBQVU7QUFBQTs7QUFFcEIsMERBQWFDLE9BQWIsbURBQXdCRCxRQUF4QjtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7QUFVQTs7Ozs7Ozs7Ozs7O0FBWUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF0Q21CRSxrQjs7ZUF1RU5QLE0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29udGFpbmVyIGZyb20gJy4vY29udGFpbmVyJ1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gYXQtcnVsZS5cbiAqXG4gKiBJZiBpdOKAmXMgZm9sbG93ZWQgaW4gdGhlIENTUyBieSBhIHt9IGJsb2NrLCB0aGlzIG5vZGUgd2lsbCBoYXZlXG4gKiBhIG5vZGVzIHByb3BlcnR5IHJlcHJlc2VudGluZyBpdHMgY2hpbGRyZW4uXG4gKlxuICogQGV4dGVuZHMgQ29udGFpbmVyXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdAY2hhcnNldCBcIlVURi04XCI7IEBtZWRpYSBwcmludCB7fScpXG4gKlxuICogY29uc3QgY2hhcnNldCA9IHJvb3QuZmlyc3RcbiAqIGNoYXJzZXQudHlwZSAgLy89PiAnYXRydWxlJ1xuICogY2hhcnNldC5ub2RlcyAvLz0+IHVuZGVmaW5lZFxuICpcbiAqIGNvbnN0IG1lZGlhID0gcm9vdC5sYXN0XG4gKiBtZWRpYS5ub2RlcyAgIC8vPT4gW11cbiAqL1xuY2xhc3MgQXRSdWxlIGV4dGVuZHMgQ29udGFpbmVyIHtcbiAgY29uc3RydWN0b3IgKGRlZmF1bHRzKSB7XG4gICAgc3VwZXIoZGVmYXVsdHMpXG4gICAgdGhpcy50eXBlID0gJ2F0cnVsZSdcbiAgfVxuXG4gIGFwcGVuZCAoLi4uY2hpbGRyZW4pIHtcbiAgICBpZiAoIXRoaXMubm9kZXMpIHRoaXMubm9kZXMgPSBbXVxuICAgIHJldHVybiBzdXBlci5hcHBlbmQoLi4uY2hpbGRyZW4pXG4gIH1cblxuICBwcmVwZW5kICguLi5jaGlsZHJlbikge1xuICAgIGlmICghdGhpcy5ub2RlcykgdGhpcy5ub2RlcyA9IFtdXG4gICAgcmV0dXJuIHN1cGVyLnByZXBlbmQoLi4uY2hpbGRyZW4pXG4gIH1cblxuICAvKipcbiAgICogQG1lbWJlcm9mIEF0UnVsZSNcbiAgICogQG1lbWJlciB7c3RyaW5nfSBuYW1lIFRoZSBhdC1ydWxl4oCZcyBuYW1lIGltbWVkaWF0ZWx5IGZvbGxvd3MgdGhlIGBAYC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCAgPSBwb3N0Y3NzLnBhcnNlKCdAbWVkaWEgcHJpbnQge30nKVxuICAgKiBtZWRpYS5uYW1lIC8vPT4gJ21lZGlhJ1xuICAgKiBjb25zdCBtZWRpYSA9IHJvb3QuZmlyc3RcbiAgICovXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBBdFJ1bGUjXG4gICAqIEBtZW1iZXIge3N0cmluZ30gcGFyYW1zIFRoZSBhdC1ydWxl4oCZcyBwYXJhbWV0ZXJzLCB0aGUgdmFsdWVzXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgZm9sbG93IHRoZSBhdC1ydWxl4oCZcyBuYW1lIGJ1dCBwcmVjZWRlXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgIGFueSB7fSBibG9jay5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCAgPSBwb3N0Y3NzLnBhcnNlKCdAbWVkaWEgcHJpbnQsIHNjcmVlbiB7fScpXG4gICAqIGNvbnN0IG1lZGlhID0gcm9vdC5maXJzdFxuICAgKiBtZWRpYS5wYXJhbXMgLy89PiAncHJpbnQsIHNjcmVlbidcbiAgICovXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBBdFJ1bGUjXG4gICAqIEBtZW1iZXIge29iamVjdH0gcmF3cyBJbmZvcm1hdGlvbiB0byBnZW5lcmF0ZSBieXRlLXRvLWJ5dGUgZXF1YWxcbiAgICogICAgICAgICAgICAgICAgICAgICAgICBub2RlIHN0cmluZyBhcyBpdCB3YXMgaW4gdGhlIG9yaWdpbiBpbnB1dC5cbiAgICpcbiAgICogRXZlcnkgcGFyc2VyIHNhdmVzIGl0cyBvd24gcHJvcGVydGllcyxcbiAgICogYnV0IHRoZSBkZWZhdWx0IENTUyBwYXJzZXIgdXNlczpcbiAgICpcbiAgICogKiBgYmVmb3JlYDogdGhlIHNwYWNlIHN5bWJvbHMgYmVmb3JlIHRoZSBub2RlLiBJdCBhbHNvIHN0b3JlcyBgKmBcbiAgICogICBhbmQgYF9gIHN5bWJvbHMgYmVmb3JlIHRoZSBkZWNsYXJhdGlvbiAoSUUgaGFjaykuXG4gICAqICogYGFmdGVyYDogdGhlIHNwYWNlIHN5bWJvbHMgYWZ0ZXIgdGhlIGxhc3QgY2hpbGQgb2YgdGhlIG5vZGVcbiAgICogICB0byB0aGUgZW5kIG9mIHRoZSBub2RlLlxuICAgKiAqIGBiZXR3ZWVuYDogdGhlIHN5bWJvbHMgYmV0d2VlbiB0aGUgcHJvcGVydHkgYW5kIHZhbHVlXG4gICAqICAgZm9yIGRlY2xhcmF0aW9ucywgc2VsZWN0b3IgYW5kIGB7YCBmb3IgcnVsZXMsIG9yIGxhc3QgcGFyYW1ldGVyXG4gICAqICAgYW5kIGB7YCBmb3IgYXQtcnVsZXMuXG4gICAqICogYHNlbWljb2xvbmA6IGNvbnRhaW5zIHRydWUgaWYgdGhlIGxhc3QgY2hpbGQgaGFzXG4gICAqICAgYW4gKG9wdGlvbmFsKSBzZW1pY29sb24uXG4gICAqICogYGFmdGVyTmFtZWA6IHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBhdC1ydWxlIG5hbWUgYW5kIGl0cyBwYXJhbWV0ZXJzLlxuICAgKlxuICAgKiBQb3N0Q1NTIGNsZWFucyBhdC1ydWxlIHBhcmFtZXRlcnMgZnJvbSBjb21tZW50cyBhbmQgZXh0cmEgc3BhY2VzLFxuICAgKiBidXQgaXQgc3RvcmVzIG9yaWdpbiBjb250ZW50IGluIHJhd3MgcHJvcGVydGllcy5cbiAgICogQXMgc3VjaCwgaWYgeW91IGRvbuKAmXQgY2hhbmdlIGEgZGVjbGFyYXRpb27igJlzIHZhbHVlLFxuICAgKiBQb3N0Q1NTIHdpbGwgdXNlIHRoZSByYXcgdmFsdWUgd2l0aCBjb21tZW50cy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJyAgQG1lZGlhXFxucHJpbnQge1xcbn0nKVxuICAgKiByb290LmZpcnN0LmZpcnN0LnJhd3MgLy89PiB7IGJlZm9yZTogJyAgJyxcbiAgICogICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBiZXR3ZWVuOiAnICcsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgYWZ0ZXJOYW1lOiAnXFxuJyxcbiAgICogICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBhZnRlcjogJ1xcbicgfVxuICAgKi9cbn1cblxuZXhwb3J0IGRlZmF1bHQgQXRSdWxlXG4iXSwiZmlsZSI6ImF0LXJ1bGUuanMifQ==\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _declaration = _interopRequireDefault(require(\"./declaration\"));\n\nvar _comment = _interopRequireDefault(require(\"./comment\"));\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction cleanSource(nodes) {\n return nodes.map(function (i) {\n if (i.nodes) i.nodes = cleanSource(i.nodes);\n delete i.source;\n return i;\n });\n}\n/**\n * The {@link Root}, {@link AtRule}, and {@link Rule} container nodes\n * inherit some common methods to help work with their children.\n *\n * Note that all containers can store any content. If you write a rule inside\n * a rule, PostCSS will parse it.\n *\n * @extends Node\n * @abstract\n */\n\n\nvar Container =\n/*#__PURE__*/\nfunction (_Node) {\n _inheritsLoose(Container, _Node);\n\n function Container() {\n return _Node.apply(this, arguments) || this;\n }\n\n var _proto = Container.prototype;\n\n _proto.push = function push(child) {\n child.parent = this;\n this.nodes.push(child);\n return this;\n }\n /**\n * Iterates through the container’s immediate children,\n * calling `callback` for each child.\n *\n * Returning `false` in the callback will break iteration.\n *\n * This method only iterates through the container’s immediate children.\n * If you need to recursively iterate through all the container’s descendant\n * nodes, use {@link Container#walk}.\n *\n * Unlike the for `{}`-cycle or `Array#forEach` this iterator is safe\n * if you are mutating the array of child nodes during iteration.\n * PostCSS will adjust the current index to match the mutations.\n *\n * @param {childIterator} callback Iterator receives each node and index.\n *\n * @return {false|undefined} Returns `false` if iteration was broke.\n *\n * @example\n * const root = postcss.parse('a { color: black; z-index: 1 }')\n * const rule = root.first\n *\n * for (const decl of rule.nodes) {\n * decl.cloneBefore({ prop: '-webkit-' + decl.prop })\n * // Cycle will be infinite, because cloneBefore moves the current node\n * // to the next index\n * }\n *\n * rule.each(decl => {\n * decl.cloneBefore({ prop: '-webkit-' + decl.prop })\n * // Will be executed only for color and z-index\n * })\n */\n ;\n\n _proto.each = function each(callback) {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n var id = this.lastEach;\n this.indexes[id] = 0;\n if (!this.nodes) return undefined;\n var index, result;\n\n while (this.indexes[id] < this.nodes.length) {\n index = this.indexes[id];\n result = callback(this.nodes[index], index);\n if (result === false) break;\n this.indexes[id] += 1;\n }\n\n delete this.indexes[id];\n return result;\n }\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each node.\n *\n * Like container.each(), this method is safe to use\n * if you are mutating arrays during iteration.\n *\n * If you only need to iterate through the container’s immediate children,\n * use {@link Container#each}.\n *\n * @param {childIterator} callback Iterator receives each node and index.\n *\n * @return {false|undefined} Returns `false` if iteration was broke.\n *\n * @example\n * root.walk(node => {\n * // Traverses all descendant nodes.\n * })\n */\n ;\n\n _proto.walk = function walk(callback) {\n return this.each(function (child, i) {\n var result;\n\n try {\n result = callback(child, i);\n } catch (e) {\n e.postcssNode = child;\n\n if (e.stack && child.source && /\\n\\s{4}at /.test(e.stack)) {\n var s = child.source;\n e.stack = e.stack.replace(/\\n\\s{4}at /, \"$&\" + s.input.from + \":\" + s.start.line + \":\" + s.start.column + \"$&\");\n }\n\n throw e;\n }\n\n if (result !== false && child.walk) {\n result = child.walk(callback);\n }\n\n return result;\n });\n }\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each declaration node.\n *\n * If you pass a filter, iteration will only happen over declarations\n * with matching properties.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {string|RegExp} [prop] String or regular expression\n * to filter declarations by property name.\n * @param {childIterator} callback Iterator receives each node and index.\n *\n * @return {false|undefined} Returns `false` if iteration was broke.\n *\n * @example\n * root.walkDecls(decl => {\n * checkPropertySupport(decl.prop)\n * })\n *\n * root.walkDecls('border-radius', decl => {\n * decl.remove()\n * })\n *\n * root.walkDecls(/^background/, decl => {\n * decl.value = takeFirstColorFromGradient(decl.value)\n * })\n */\n ;\n\n _proto.walkDecls = function walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk(function (child, i) {\n if (child.type === 'decl') {\n return callback(child, i);\n }\n });\n }\n\n if (prop instanceof RegExp) {\n return this.walk(function (child, i) {\n if (child.type === 'decl' && prop.test(child.prop)) {\n return callback(child, i);\n }\n });\n }\n\n return this.walk(function (child, i) {\n if (child.type === 'decl' && child.prop === prop) {\n return callback(child, i);\n }\n });\n }\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each rule node.\n *\n * If you pass a filter, iteration will only happen over rules\n * with matching selectors.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {string|RegExp} [selector] String or regular expression\n * to filter rules by selector.\n * @param {childIterator} callback Iterator receives each node and index.\n *\n * @return {false|undefined} returns `false` if iteration was broke.\n *\n * @example\n * const selectors = []\n * root.walkRules(rule => {\n * selectors.push(rule.selector)\n * })\n * console.log(`Your CSS uses ${ selectors.length } selectors`)\n */\n ;\n\n _proto.walkRules = function walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk(function (child, i) {\n if (child.type === 'rule') {\n return callback(child, i);\n }\n });\n }\n\n if (selector instanceof RegExp) {\n return this.walk(function (child, i) {\n if (child.type === 'rule' && selector.test(child.selector)) {\n return callback(child, i);\n }\n });\n }\n\n return this.walk(function (child, i) {\n if (child.type === 'rule' && child.selector === selector) {\n return callback(child, i);\n }\n });\n }\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each at-rule node.\n *\n * If you pass a filter, iteration will only happen over at-rules\n * that have matching names.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {string|RegExp} [name] String or regular expression\n * to filter at-rules by name.\n * @param {childIterator} callback Iterator receives each node and index.\n *\n * @return {false|undefined} Returns `false` if iteration was broke.\n *\n * @example\n * root.walkAtRules(rule => {\n * if (isOld(rule.name)) rule.remove()\n * })\n *\n * let first = false\n * root.walkAtRules('charset', rule => {\n * if (!first) {\n * first = true\n * } else {\n * rule.remove()\n * }\n * })\n */\n ;\n\n _proto.walkAtRules = function walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk(function (child, i) {\n if (child.type === 'atrule') {\n return callback(child, i);\n }\n });\n }\n\n if (name instanceof RegExp) {\n return this.walk(function (child, i) {\n if (child.type === 'atrule' && name.test(child.name)) {\n return callback(child, i);\n }\n });\n }\n\n return this.walk(function (child, i) {\n if (child.type === 'atrule' && child.name === name) {\n return callback(child, i);\n }\n });\n }\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each comment node.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {childIterator} callback Iterator receives each node and index.\n *\n * @return {false|undefined} Returns `false` if iteration was broke.\n *\n * @example\n * root.walkComments(comment => {\n * comment.remove()\n * })\n */\n ;\n\n _proto.walkComments = function walkComments(callback) {\n return this.walk(function (child, i) {\n if (child.type === 'comment') {\n return callback(child, i);\n }\n });\n }\n /**\n * Inserts new nodes to the end of the container.\n *\n * @param {...(Node|object|string|Node[])} children New nodes.\n *\n * @return {Node} This node for methods chain.\n *\n * @example\n * const decl1 = postcss.decl({ prop: 'color', value: 'black' })\n * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' })\n * rule.append(decl1, decl2)\n *\n * root.append({ name: 'charset', params: '\"UTF-8\"' }) // at-rule\n * root.append({ selector: 'a' }) // rule\n * rule.append({ prop: 'color', value: 'black' }) // declaration\n * rule.append({ text: 'Comment' }) // comment\n *\n * root.append('a {}')\n * root.first.append('color: black; z-index: 1')\n */\n ;\n\n _proto.append = function append() {\n for (var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++) {\n children[_key] = arguments[_key];\n }\n\n for (var _i = 0, _children = children; _i < _children.length; _i++) {\n var child = _children[_i];\n var nodes = this.normalize(child, this.last);\n\n for (var _iterator = nodes, _isArray = Array.isArray(_iterator), _i2 = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i2 >= _iterator.length) break;\n _ref = _iterator[_i2++];\n } else {\n _i2 = _iterator.next();\n if (_i2.done) break;\n _ref = _i2.value;\n }\n\n var node = _ref;\n this.nodes.push(node);\n }\n }\n\n return this;\n }\n /**\n * Inserts new nodes to the start of the container.\n *\n * @param {...(Node|object|string|Node[])} children New nodes.\n *\n * @return {Node} This node for methods chain.\n *\n * @example\n * const decl1 = postcss.decl({ prop: 'color', value: 'black' })\n * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' })\n * rule.prepend(decl1, decl2)\n *\n * root.append({ name: 'charset', params: '\"UTF-8\"' }) // at-rule\n * root.append({ selector: 'a' }) // rule\n * rule.append({ prop: 'color', value: 'black' }) // declaration\n * rule.append({ text: 'Comment' }) // comment\n *\n * root.append('a {}')\n * root.first.append('color: black; z-index: 1')\n */\n ;\n\n _proto.prepend = function prepend() {\n for (var _len2 = arguments.length, children = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n children[_key2] = arguments[_key2];\n }\n\n children = children.reverse();\n\n for (var _iterator2 = children, _isArray2 = Array.isArray(_iterator2), _i3 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n var _ref2;\n\n if (_isArray2) {\n if (_i3 >= _iterator2.length) break;\n _ref2 = _iterator2[_i3++];\n } else {\n _i3 = _iterator2.next();\n if (_i3.done) break;\n _ref2 = _i3.value;\n }\n\n var child = _ref2;\n var nodes = this.normalize(child, this.first, 'prepend').reverse();\n\n for (var _iterator3 = nodes, _isArray3 = Array.isArray(_iterator3), _i4 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {\n var _ref3;\n\n if (_isArray3) {\n if (_i4 >= _iterator3.length) break;\n _ref3 = _iterator3[_i4++];\n } else {\n _i4 = _iterator3.next();\n if (_i4.done) break;\n _ref3 = _i4.value;\n }\n\n var node = _ref3;\n this.nodes.unshift(node);\n }\n\n for (var id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n\n return this;\n };\n\n _proto.cleanRaws = function cleanRaws(keepBetween) {\n _Node.prototype.cleanRaws.call(this, keepBetween);\n\n if (this.nodes) {\n for (var _iterator4 = this.nodes, _isArray4 = Array.isArray(_iterator4), _i5 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {\n var _ref4;\n\n if (_isArray4) {\n if (_i5 >= _iterator4.length) break;\n _ref4 = _iterator4[_i5++];\n } else {\n _i5 = _iterator4.next();\n if (_i5.done) break;\n _ref4 = _i5.value;\n }\n\n var node = _ref4;\n node.cleanRaws(keepBetween);\n }\n }\n }\n /**\n * Insert new node before old node within the container.\n *\n * @param {Node|number} exist Child or child’s index.\n * @param {Node|object|string|Node[]} add New node.\n *\n * @return {Node} This node for methods chain.\n *\n * @example\n * rule.insertBefore(decl, decl.clone({ prop: '-webkit-' + decl.prop }))\n */\n ;\n\n _proto.insertBefore = function insertBefore(exist, add) {\n exist = this.index(exist);\n var type = exist === 0 ? 'prepend' : false;\n var nodes = this.normalize(add, this.nodes[exist], type).reverse();\n\n for (var _iterator5 = nodes, _isArray5 = Array.isArray(_iterator5), _i6 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {\n var _ref5;\n\n if (_isArray5) {\n if (_i6 >= _iterator5.length) break;\n _ref5 = _iterator5[_i6++];\n } else {\n _i6 = _iterator5.next();\n if (_i6.done) break;\n _ref5 = _i6.value;\n }\n\n var node = _ref5;\n this.nodes.splice(exist, 0, node);\n }\n\n var index;\n\n for (var id in this.indexes) {\n index = this.indexes[id];\n\n if (exist <= index) {\n this.indexes[id] = index + nodes.length;\n }\n }\n\n return this;\n }\n /**\n * Insert new node after old node within the container.\n *\n * @param {Node|number} exist Child or child’s index.\n * @param {Node|object|string|Node[]} add New node.\n *\n * @return {Node} This node for methods chain.\n */\n ;\n\n _proto.insertAfter = function insertAfter(exist, add) {\n exist = this.index(exist);\n var nodes = this.normalize(add, this.nodes[exist]).reverse();\n\n for (var _iterator6 = nodes, _isArray6 = Array.isArray(_iterator6), _i7 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {\n var _ref6;\n\n if (_isArray6) {\n if (_i7 >= _iterator6.length) break;\n _ref6 = _iterator6[_i7++];\n } else {\n _i7 = _iterator6.next();\n if (_i7.done) break;\n _ref6 = _i7.value;\n }\n\n var node = _ref6;\n this.nodes.splice(exist + 1, 0, node);\n }\n\n var index;\n\n for (var id in this.indexes) {\n index = this.indexes[id];\n\n if (exist < index) {\n this.indexes[id] = index + nodes.length;\n }\n }\n\n return this;\n }\n /**\n * Removes node from the container and cleans the parent properties\n * from the node and its children.\n *\n * @param {Node|number} child Child or child’s index.\n *\n * @return {Node} This node for methods chain\n *\n * @example\n * rule.nodes.length //=> 5\n * rule.removeChild(decl)\n * rule.nodes.length //=> 4\n * decl.parent //=> undefined\n */\n ;\n\n _proto.removeChild = function removeChild(child) {\n child = this.index(child);\n this.nodes[child].parent = undefined;\n this.nodes.splice(child, 1);\n var index;\n\n for (var id in this.indexes) {\n index = this.indexes[id];\n\n if (index >= child) {\n this.indexes[id] = index - 1;\n }\n }\n\n return this;\n }\n /**\n * Removes all children from the container\n * and cleans their parent properties.\n *\n * @return {Node} This node for methods chain.\n *\n * @example\n * rule.removeAll()\n * rule.nodes.length //=> 0\n */\n ;\n\n _proto.removeAll = function removeAll() {\n for (var _iterator7 = this.nodes, _isArray7 = Array.isArray(_iterator7), _i8 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {\n var _ref7;\n\n if (_isArray7) {\n if (_i8 >= _iterator7.length) break;\n _ref7 = _iterator7[_i8++];\n } else {\n _i8 = _iterator7.next();\n if (_i8.done) break;\n _ref7 = _i8.value;\n }\n\n var node = _ref7;\n node.parent = undefined;\n }\n\n this.nodes = [];\n return this;\n }\n /**\n * Passes all declaration values within the container that match pattern\n * through callback, replacing those values with the returned result\n * of callback.\n *\n * This method is useful if you are using a custom unit or function\n * and need to iterate through all values.\n *\n * @param {string|RegExp} pattern Replace pattern.\n * @param {object} opts Options to speed up the search.\n * @param {string|string[]} opts.props An array of property names.\n * @param {string} opts.fast String that’s used to narrow down\n * values and speed up the regexp search.\n * @param {function|string} callback String to replace pattern or callback\n * that returns a new value. The callback\n * will receive the same arguments\n * as those passed to a function parameter\n * of `String#replace`.\n *\n * @return {Node} This node for methods chain.\n *\n * @example\n * root.replaceValues(/\\d+rem/, { fast: 'rem' }, string => {\n * return 15 * parseInt(string) + 'px'\n * })\n */\n ;\n\n _proto.replaceValues = function replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n\n this.walkDecls(function (decl) {\n if (opts.props && opts.props.indexOf(decl.prop) === -1) return;\n if (opts.fast && decl.value.indexOf(opts.fast) === -1) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n return this;\n }\n /**\n * Returns `true` if callback returns `true`\n * for all of the container’s children.\n *\n * @param {childCondition} condition Iterator returns true or false.\n *\n * @return {boolean} Is every child pass condition.\n *\n * @example\n * const noPrefixes = rule.every(i => i.prop[0] !== '-')\n */\n ;\n\n _proto.every = function every(condition) {\n return this.nodes.every(condition);\n }\n /**\n * Returns `true` if callback returns `true` for (at least) one\n * of the container’s children.\n *\n * @param {childCondition} condition Iterator returns true or false.\n *\n * @return {boolean} Is some child pass condition.\n *\n * @example\n * const hasPrefix = rule.some(i => i.prop[0] === '-')\n */\n ;\n\n _proto.some = function some(condition) {\n return this.nodes.some(condition);\n }\n /**\n * Returns a `child`’s index within the {@link Container#nodes} array.\n *\n * @param {Node} child Child of the current container.\n *\n * @return {number} Child index.\n *\n * @example\n * rule.index( rule.nodes[2] ) //=> 2\n */\n ;\n\n _proto.index = function index(child) {\n if (typeof child === 'number') {\n return child;\n }\n\n return this.nodes.indexOf(child);\n }\n /**\n * The container’s first child.\n *\n * @type {Node}\n *\n * @example\n * rule.first === rules.nodes[0]\n */\n ;\n\n _proto.normalize = function normalize(nodes, sample) {\n var _this = this;\n\n if (typeof nodes === 'string') {\n var parse = require('./parse');\n\n nodes = cleanSource(parse(nodes).nodes);\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n\n for (var _iterator8 = nodes, _isArray8 = Array.isArray(_iterator8), _i9 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) {\n var _ref8;\n\n if (_isArray8) {\n if (_i9 >= _iterator8.length) break;\n _ref8 = _iterator8[_i9++];\n } else {\n _i9 = _iterator8.next();\n if (_i9.done) break;\n _ref8 = _i9.value;\n }\n\n var i = _ref8;\n if (i.parent) i.parent.removeChild(i, 'ignore');\n }\n } else if (nodes.type === 'root') {\n nodes = nodes.nodes.slice(0);\n\n for (var _iterator9 = nodes, _isArray9 = Array.isArray(_iterator9), _i10 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) {\n var _ref9;\n\n if (_isArray9) {\n if (_i10 >= _iterator9.length) break;\n _ref9 = _iterator9[_i10++];\n } else {\n _i10 = _iterator9.next();\n if (_i10.done) break;\n _ref9 = _i10.value;\n }\n\n var _i11 = _ref9;\n if (_i11.parent) _i11.parent.removeChild(_i11, 'ignore');\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === 'undefined') {\n throw new Error('Value field is missed in node creation');\n } else if (typeof nodes.value !== 'string') {\n nodes.value = String(nodes.value);\n }\n\n nodes = [new _declaration.default(nodes)];\n } else if (nodes.selector) {\n var Rule = require('./rule');\n\n nodes = [new Rule(nodes)];\n } else if (nodes.name) {\n var AtRule = require('./at-rule');\n\n nodes = [new AtRule(nodes)];\n } else if (nodes.text) {\n nodes = [new _comment.default(nodes)];\n } else {\n throw new Error('Unknown node type in node creation');\n }\n\n var processed = nodes.map(function (i) {\n if (i.parent) i.parent.removeChild(i);\n\n if (typeof i.raws.before === 'undefined') {\n if (sample && typeof sample.raws.before !== 'undefined') {\n i.raws.before = sample.raws.before.replace(/[^\\s]/g, '');\n }\n }\n\n i.parent = _this;\n return i;\n });\n return processed;\n }\n /**\n * @memberof Container#\n * @member {Node[]} nodes An array containing the container’s children.\n *\n * @example\n * const root = postcss.parse('a { color: black }')\n * root.nodes.length //=> 1\n * root.nodes[0].selector //=> 'a'\n * root.nodes[0].nodes[0].prop //=> 'color'\n */\n ;\n\n _createClass(Container, [{\n key: \"first\",\n get: function get() {\n if (!this.nodes) return undefined;\n return this.nodes[0];\n }\n /**\n * The container’s last child.\n *\n * @type {Node}\n *\n * @example\n * rule.last === rule.nodes[rule.nodes.length - 1]\n */\n\n }, {\n key: \"last\",\n get: function get() {\n if (!this.nodes) return undefined;\n return this.nodes[this.nodes.length - 1];\n }\n }]);\n\n return Container;\n}(_node.default);\n\nvar _default = Container;\n/**\n * @callback childCondition\n * @param {Node} node Container child.\n * @param {number} index Child index.\n * @param {Node[]} nodes All container children.\n * @return {boolean}\n */\n\n/**\n * @callback childIterator\n * @param {Node} node Container child.\n * @param {number} index Child index.\n * @return {false|undefined} Returning `false` will break iteration.\n */\n\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbnRhaW5lci5lczYiXSwibmFtZXMiOlsiY2xlYW5Tb3VyY2UiLCJub2RlcyIsIm1hcCIsImkiLCJzb3VyY2UiLCJDb250YWluZXIiLCJwdXNoIiwiY2hpbGQiLCJwYXJlbnQiLCJlYWNoIiwiY2FsbGJhY2siLCJsYXN0RWFjaCIsImluZGV4ZXMiLCJpZCIsInVuZGVmaW5lZCIsImluZGV4IiwicmVzdWx0IiwibGVuZ3RoIiwid2FsayIsImUiLCJwb3N0Y3NzTm9kZSIsInN0YWNrIiwidGVzdCIsInMiLCJyZXBsYWNlIiwiaW5wdXQiLCJmcm9tIiwic3RhcnQiLCJsaW5lIiwiY29sdW1uIiwid2Fsa0RlY2xzIiwicHJvcCIsInR5cGUiLCJSZWdFeHAiLCJ3YWxrUnVsZXMiLCJzZWxlY3RvciIsIndhbGtBdFJ1bGVzIiwibmFtZSIsIndhbGtDb21tZW50cyIsImFwcGVuZCIsImNoaWxkcmVuIiwibm9ybWFsaXplIiwibGFzdCIsIm5vZGUiLCJwcmVwZW5kIiwicmV2ZXJzZSIsImZpcnN0IiwidW5zaGlmdCIsImNsZWFuUmF3cyIsImtlZXBCZXR3ZWVuIiwiaW5zZXJ0QmVmb3JlIiwiZXhpc3QiLCJhZGQiLCJzcGxpY2UiLCJpbnNlcnRBZnRlciIsInJlbW92ZUNoaWxkIiwicmVtb3ZlQWxsIiwicmVwbGFjZVZhbHVlcyIsInBhdHRlcm4iLCJvcHRzIiwiZGVjbCIsInByb3BzIiwiaW5kZXhPZiIsImZhc3QiLCJ2YWx1ZSIsImV2ZXJ5IiwiY29uZGl0aW9uIiwic29tZSIsInNhbXBsZSIsInBhcnNlIiwicmVxdWlyZSIsIkFycmF5IiwiaXNBcnJheSIsInNsaWNlIiwiRXJyb3IiLCJTdHJpbmciLCJEZWNsYXJhdGlvbiIsIlJ1bGUiLCJBdFJ1bGUiLCJ0ZXh0IiwiQ29tbWVudCIsInByb2Nlc3NlZCIsInJhd3MiLCJiZWZvcmUiLCJOb2RlIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUNBOztBQUNBOzs7Ozs7Ozs7O0FBRUEsU0FBU0EsV0FBVCxDQUFz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QVA7QUFDakIsYUFBTyxLQUFLYixLQUFMLENBQVcsQ0FBWCxDQUFQO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7d0JBUVk7QUFDVixVQUFJLENBQUMsS0FBS0EsS0FBVixFQUFpQixPQUFPYSxTQUFQO0FBQ2pCLGFBQU8sS0FBS2IsS0FBTCxDQUFXLEtBQUtBLEtBQUwsQ0FBV2dCLE1BQVgsR0FBb0IsQ0FBL0IsQ0FBUDtBQUNEOzs7O0VBaGpCcUJtRSxhOztlQSttQlQvRSxTO0FBRWY7Ozs7Ozs7O0FBUUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGVjbGFyYXRpb24gZnJvbSAnLi9kZWNsYXJhdGlvbidcbmltcG9ydCBDb21tZW50IGZyb20gJy4vY29tbWVudCdcbmltcG9ydCBOb2RlIGZyb20gJy4vbm9kZSdcblxuZnVuY3Rpb24gY2xlYW5Tb3VyY2UgKG5vZGVzKSB7XG4gIHJldHVybiBub2Rlcy5tYXAoaSA9PiB7XG4gICAgaWYgKGkubm9kZXMpIGkubm9kZXMgPSBjbGVhblNvdXJjZShpLm5vZGVzKVxuICAgIGRlbGV0ZSBpLnNvdXJjZVxuICAgIHJldHVybiBpXG4gIH0pXG59XG5cbi8qKlxuICogVGhlIHtAbGluayBSb290fSwge0BsaW5rIEF0UnVsZX0sIGFuZCB7QGxpbmsgUnVsZX0gY29udGFpbmVyIG5vZGVzXG4gKiBpbmhlcml0IHNvbWUgY29tbW9uIG1ldGhvZHMgdG8gaGVscCB3b3JrIHdpdGggdGhlaXIgY2hpbGRyZW4uXG4gKlxuICogTm90ZSB0aGF0IGFsbCBjb250YWluZXJzIGNhbiBzdG9yZSBhbnkgY29udGVudC4gSWYgeW91IHdyaXRlIGEgcnVsZSBpbnNpZGVcbiAqIGEgcnVsZSwgUG9zdENTUyB3aWxsIHBhcnNlIGl0LlxuICpcbiAqIEBleHRlbmRzIE5vZGVcbiAqIEBhYnN0cmFjdFxuICovXG5jbGFzcyBDb250YWluZXIgZXh0ZW5kcyBOb2RlIHtcbiAgcHVzaCAoY2hpbGQpIHtcbiAgICBjaGlsZC5wYXJlbnQgPSB0aGlzXG4gICAgdGhpcy5ub2Rlcy5wdXNoKGNoaWxkKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogSXRlcmF0ZXMgdGhyb3VnaCB0aGUgY29udGFpbmVy4oCZcyBpbW1lZGlhdGUgY2hpbGRyZW4sXG4gICAqIGNhbGxpbmcgYGNhbGxiYWNrYCBmb3IgZWFjaCBjaGlsZC5cbiAgICpcbiAgICogUmV0dXJuaW5nIGBmYWxzZWAgaW4gdGhlIGNhbGxiYWNrIHdpbGwgYnJlYWsgaXRlcmF0aW9uLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBvbmx5IGl0ZXJhdGVzIHRocm91Z2ggdGhlIGNvbnRhaW5lcuKAmXMgaW1tZWRpYXRlIGNoaWxkcmVuLlxuICAgKiBJZiB5b3UgbmVlZCB0byByZWN1cnNpdmVseSBpdGVyYXRlIHRocm91Z2ggYWxsIHRoZSBjb250YWluZXLigJlzIGRlc2NlbmRhbnRcbiAgICogbm9kZXMsIHVzZSB7QGxpbmsgQ29udGFpbmVyI3dhbGt9LlxuICAgKlxuICAgKiBVbmxpa2UgdGhlIGZvciBge31gLWN5Y2xlIG9yIGBBcnJheSNmb3JFYWNoYCB0aGlzIGl0ZXJhdG9yIGlzIHNhZmVcbiAgICogaWYgeW91IGFyZSBtdXRhdGluZyB0aGUgYXJyYXkgb2YgY2hpbGQgbm9kZXMgZHVyaW5nIGl0ZXJhdGlvbi5cbiAgICogUG9zdENTUyB3aWxsIGFkanVzdCB0aGUgY3VycmVudCBpbmRleCB0byBtYXRjaCB0aGUgbXV0YXRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0ge2NoaWxkSXRlcmF0b3J9IGNhbGxiYWNrIEl0ZXJhdG9yIHJlY2VpdmVzIGVhY2ggbm9kZSBhbmQgaW5kZXguXG4gICAqXG4gICAqIEByZXR1cm4ge2ZhbHNlfHVuZGVmaW5lZH0gUmV0dXJucyBgZmFsc2VgIGlmIGl0ZXJhdGlvbiB3YXMgYnJva2UuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhIHsgY29sb3I6IGJsYWNrOyB6LWluZGV4OiAxIH0nKVxuICAgKiBjb25zdCBydWxlID0gcm9vdC5maXJzdFxuICAgKlxuICAgKiBmb3IgKGNvbnN0IGRlY2wgb2YgcnVsZS5ub2Rlcykge1xuICAgKiAgIGRlY2wuY2xvbmVCZWZvcmUoeyBwcm9wOiAnLXdlYmtpdC0nICsgZGVjbC5wcm9wIH0pXG4gICAqICAgLy8gQ3ljbGUgd2lsbCBiZSBpbmZpbml0ZSwgYmVjYXVzZSBjbG9uZUJlZm9yZSBtb3ZlcyB0aGUgY3VycmVudCBub2RlXG4gICAqICAgLy8gdG8gdGhlIG5leHQgaW5kZXhcbiAgICogfVxuICAgKlxuICAgKiBydWxlLmVhY2goZGVjbCA9PiB7XG4gICAqICAgZGVjbC5jbG9uZUJlZm9yZSh7IHByb3A6ICctd2Via2l0LScgKyBkZWNsLnByb3AgfSlcbiAgICogICAvLyBXaWxsIGJlIGV4ZWN1dGVkIG9ubHkgZm9yIGNvbG9yIGFuZCB6LWluZGV4XG4gICAqIH0pXG4gICAqL1xuICBlYWNoIChjYWxsYmFjaykge1xuICAgIGlmICghdGhpcy5sYXN0RWFjaCkgdGhpcy5sYXN0RWFjaCA9IDBcbiAgICBpZiAoIXRoaXMuaW5kZXhlcykgdGhpcy5pbmRleGVzID0geyB9XG5cbiAgICB0aGlzLmxhc3RFYWNoICs9IDFcbiAgICBsZXQgaWQgPSB0aGlzLmxhc3RFYWNoXG4gICAgdGhpcy5pbmRleGVzW2lkXSA9IDBcblxuICAgIGlmICghdGhpcy5ub2RlcykgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgbGV0IGluZGV4LCByZXN1bHRcbiAgICB3aGlsZSAodGhpcy5pbmRleGVzW2lkXSA8IHRoaXMubm9kZXMubGVuZ3RoKSB7XG4gICAgICBpbmRleCA9IHRoaXMuaW5kZXhlc1tpZF1cbiAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKHRoaXMubm9kZXNbaW5kZXhdLCBpbmRleClcbiAgICAgIGlmIChyZXN1bHQgPT09IGZhbHNlKSBicmVha1xuXG4gICAgICB0aGlzLmluZGV4ZXNbaWRdICs9IDFcbiAgICB9XG5cbiAgICBkZWxldGUgdGhpcy5pbmRleGVzW2lkXVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgLyoqXG4gICAqIFRyYXZlcnNlcyB0aGUgY29udGFpbmVy4oCZcyBkZXNjZW5kYW50IG5vZGVzLCBjYWxsaW5nIGNhbGxiYWNrXG4gICAqIGZvciBlYWNoIG5vZGUuXG4gICAqXG4gICAqIExpa2UgY29udGFpbmVyLmVhY2goKSwgdGhpcyBtZXRob2QgaXMgc2FmZSB0byB1c2VcbiAgICogaWYgeW91IGFyZSBtdXRhdGluZyBhcnJheXMgZHVyaW5nIGl0ZXJhdGlvbi5cbiAgICpcbiAgICogSWYgeW91IG9ubHkgbmVlZCB0byBpdGVyYXRlIHRocm91Z2ggdGhlIGNvbnRhaW5lcuKAmXMgaW1tZWRpYXRlIGNoaWxkcmVuLFxuICAgKiB1c2Uge0BsaW5rIENvbnRhaW5lciNlYWNofS5cbiAgICpcbiAgICogQHBhcmFtIHtjaGlsZEl0ZXJhdG9yfSBjYWxsYmFjayBJdGVyYXRvciByZWNlaXZlcyBlYWNoIG5vZGUgYW5kIGluZGV4LlxuICAgKlxuICAgKiBAcmV0dXJuIHtmYWxzZXx1bmRlZmluZWR9IFJldHVybnMgYGZhbHNlYCBpZiBpdGVyYXRpb24gd2FzIGJyb2tlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiByb290LndhbGsobm9kZSA9PiB7XG4gICAqICAgLy8gVHJhdmVyc2VzIGFsbCBkZXNjZW5kYW50IG5vZGVzLlxuICAgKiB9KVxuICAgKi9cbiAgd2FsayAoY2FsbGJhY2spIHtcbiAgICByZXR1cm4gdGhpcy5lYWNoKChjaGlsZCwgaSkgPT4ge1xuICAgICAgbGV0IHJlc3VsdFxuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0ID0gY2FsbGJhY2soY2hpbGQsIGkpXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGUucG9zdGNzc05vZGUgPSBjaGlsZFxuICAgICAgICBpZiAoZS5zdGFjayAmJiBjaGlsZC5zb3VyY2UgJiYgL1xcblxcc3s0fWF0IC8udGVzdChlLnN0YWNrKSkge1xuICAgICAgICAgIGxldCBzID0gY2hpbGQuc291cmNlXG4gICAgICAgICAgZS5zdGFjayA9IGUuc3RhY2sucmVwbGFjZSgvXFxuXFxzezR9YXQgLyxcbiAgICAgICAgICAgIGAkJiR7IHMuaW5wdXQuZnJvbSB9OiR7IHMuc3RhcnQubGluZSB9OiR7IHMuc3RhcnQuY29sdW1uIH0kJmApXG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZVxuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdCAhPT0gZmFsc2UgJiYgY2hpbGQud2Fsaykge1xuICAgICAgICByZXN1bHQgPSBjaGlsZC53YWxrKGNhbGxiYWNrKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogVHJhdmVyc2VzIHRoZSBjb250YWluZXLigJlzIGRlc2NlbmRhbnQgbm9kZXMsIGNhbGxpbmcgY2FsbGJhY2tcbiAgICogZm9yIGVhY2ggZGVjbGFyYXRpb24gbm9kZS5cbiAgICpcbiAgICogSWYgeW91IHBhc3MgYSBmaWx0ZXIsIGl0ZXJhdGlvbiB3aWxsIG9ubHkgaGFwcGVuIG92ZXIgZGVjbGFyYXRpb25zXG4gICAqIHdpdGggbWF0Y2hpbmcgcHJvcGVydGllcy5cbiAgICpcbiAgICogTGlrZSB7QGxpbmsgQ29udGFpbmVyI2VhY2h9LCB0aGlzIG1ldGhvZCBpcyBzYWZlXG4gICAqIHRvIHVzZSBpZiB5b3UgYXJlIG11dGF0aW5nIGFycmF5cyBkdXJpbmcgaXRlcmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ3xSZWdFeHB9IFtwcm9wXSAgIFN0cmluZyBvciByZWd1bGFyIGV4cHJlc3Npb25cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBmaWx0ZXIgZGVjbGFyYXRpb25zIGJ5IHByb3BlcnR5IG5hbWUuXG4gICAqIEBwYXJhbSB7Y2hpbGRJdGVyYXRvcn0gY2FsbGJhY2sgSXRlcmF0b3IgcmVjZWl2ZXMgZWFjaCBub2RlIGFuZCBpbmRleC5cbiAgICpcbiAgICogQHJldHVybiB7ZmFsc2V8dW5kZWZpbmVkfSBSZXR1cm5zIGBmYWxzZWAgaWYgaXRlcmF0aW9uIHdhcyBicm9rZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcm9vdC53YWxrRGVjbHMoZGVjbCA9PiB7XG4gICAqICAgY2hlY2tQcm9wZXJ0eVN1cHBvcnQoZGVjbC5wcm9wKVxuICAgKiB9KVxuICAgKlxuICAgKiByb290LndhbGtEZWNscygnYm9yZGVyLXJhZGl1cycsIGRlY2wgPT4ge1xuICAgKiAgIGRlY2wucmVtb3ZlKClcbiAgICogfSlcbiAgICpcbiAgICogcm9vdC53YWxrRGVjbHMoL15iYWNrZ3JvdW5kLywgZGVjbCA9PiB7XG4gICAqICAgZGVjbC52YWx1ZSA9IHRha2VGaXJzdENvbG9yRnJvbUdyYWRpZW50KGRlY2wudmFsdWUpXG4gICAqIH0pXG4gICAqL1xuICB3YWxrRGVjbHMgKHByb3AsIGNhbGxiYWNrKSB7XG4gICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2sgPSBwcm9wXG4gICAgICByZXR1cm4gdGhpcy53YWxrKChjaGlsZCwgaSkgPT4ge1xuICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ2RlY2wnKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAocHJvcCBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgcmV0dXJuIHRoaXMud2FsaygoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdkZWNsJyAmJiBwcm9wLnRlc3QoY2hpbGQucHJvcCkpIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soY2hpbGQsIGkpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiB0aGlzLndhbGsoKGNoaWxkLCBpKSA9PiB7XG4gICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ2RlY2wnICYmIGNoaWxkLnByb3AgPT09IHByb3ApIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogVHJhdmVyc2VzIHRoZSBjb250YWluZXLigJlzIGRlc2NlbmRhbnQgbm9kZXMsIGNhbGxpbmcgY2FsbGJhY2tcbiAgICogZm9yIGVhY2ggcnVsZSBub2RlLlxuICAgKlxuICAgKiBJZiB5b3UgcGFzcyBhIGZpbHRlciwgaXRlcmF0aW9uIHdpbGwgb25seSBoYXBwZW4gb3ZlciBydWxlc1xuICAgKiB3aXRoIG1hdGNoaW5nIHNlbGVjdG9ycy5cbiAgICpcbiAgICogTGlrZSB7QGxpbmsgQ29udGFpbmVyI2VhY2h9LCB0aGlzIG1ldGhvZCBpcyBzYWZlXG4gICAqIHRvIHVzZSBpZiB5b3UgYXJlIG11dGF0aW5nIGFycmF5cyBkdXJpbmcgaXRlcmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ3xSZWdFeHB9IFtzZWxlY3Rvcl0gU3RyaW5nIG9yIHJlZ3VsYXIgZXhwcmVzc2lvblxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZmlsdGVyIHJ1bGVzIGJ5IHNlbGVjdG9yLlxuICAgKiBAcGFyYW0ge2NoaWxkSXRlcmF0b3J9IGNhbGxiYWNrICAgSXRlcmF0b3IgcmVjZWl2ZXMgZWFjaCBub2RlIGFuZCBpbmRleC5cbiAgICpcbiAgICogQHJldHVybiB7ZmFsc2V8dW5kZWZpbmVkfSByZXR1cm5zIGBmYWxzZWAgaWYgaXRlcmF0aW9uIHdhcyBicm9rZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgc2VsZWN0b3JzID0gW11cbiAgICogcm9vdC53YWxrUnVsZXMocnVsZSA9PiB7XG4gICAqICAgc2VsZWN0b3JzLnB1c2gocnVsZS5zZWxlY3RvcilcbiAgICogfSlcbiAgICogY29uc29sZS5sb2coYFlvdXIgQ1NTIHVzZXMgJHsgc2VsZWN0b3JzLmxlbmd0aCB9IHNlbGVjdG9yc2ApXG4gICAqL1xuICB3YWxrUnVsZXMgKHNlbGVjdG9yLCBjYWxsYmFjaykge1xuICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgIGNhbGxiYWNrID0gc2VsZWN0b3JcblxuICAgICAgcmV0dXJuIHRoaXMud2FsaygoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdydWxlJykge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKHNlbGVjdG9yIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICByZXR1cm4gdGhpcy53YWxrKChjaGlsZCwgaSkgPT4ge1xuICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ3J1bGUnICYmIHNlbGVjdG9yLnRlc3QoY2hpbGQuc2VsZWN0b3IpKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy53YWxrKChjaGlsZCwgaSkgPT4ge1xuICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdydWxlJyAmJiBjaGlsZC5zZWxlY3RvciA9PT0gc2VsZWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogVHJhdmVyc2VzIHRoZSBjb250YWluZXLigJlzIGRlc2NlbmRhbnQgbm9kZXMsIGNhbGxpbmcgY2FsbGJhY2tcbiAgICogZm9yIGVhY2ggYXQtcnVsZSBub2RlLlxuICAgKlxuICAgKiBJZiB5b3UgcGFzcyBhIGZpbHRlciwgaXRlcmF0aW9uIHdpbGwgb25seSBoYXBwZW4gb3ZlciBhdC1ydWxlc1xuICAgKiB0aGF0IGhhdmUgbWF0Y2hpbmcgbmFtZXMuXG4gICAqXG4gICAqIExpa2Uge0BsaW5rIENvbnRhaW5lciNlYWNofSwgdGhpcyBtZXRob2QgaXMgc2FmZVxuICAgKiB0byB1c2UgaWYgeW91IGFyZSBtdXRhdGluZyBhcnJheXMgZHVyaW5nIGl0ZXJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd8UmVnRXhwfSBbbmFtZV0gICBTdHJpbmcgb3IgcmVndWxhciBleHByZXNzaW9uXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZmlsdGVyIGF0LXJ1bGVzIGJ5IG5hbWUuXG4gICAqIEBwYXJhbSB7Y2hpbGRJdGVyYXRvcn0gY2FsbGJhY2sgSXRlcmF0b3IgcmVjZWl2ZXMgZWFjaCBub2RlIGFuZCBpbmRleC5cbiAgICpcbiAgICogQHJldHVybiB7ZmFsc2V8dW5kZWZpbmVkfSBSZXR1cm5zIGBmYWxzZWAgaWYgaXRlcmF0aW9uIHdhcyBicm9rZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcm9vdC53YWxrQXRSdWxlcyhydWxlID0+IHtcbiAgICogICBpZiAoaXNPbGQocnVsZS5uYW1lKSkgcnVsZS5yZW1vdmUoKVxuICAgKiB9KVxuICAgKlxuICAgKiBsZXQgZmlyc3QgPSBmYWxzZVxuICAgKiByb290LndhbGtBdFJ1bGVzKCdjaGFyc2V0JywgcnVsZSA9PiB7XG4gICAqICAgaWYgKCFmaXJzdCkge1xuICAgKiAgICAgZmlyc3QgPSB0cnVlXG4gICAqICAgfSBlbHNlIHtcbiAgICogICAgIHJ1bGUucmVtb3ZlKClcbiAgICogICB9XG4gICAqIH0pXG4gICAqL1xuICB3YWxrQXRSdWxlcyAobmFtZSwgY2FsbGJhY2spIHtcbiAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICBjYWxsYmFjayA9IG5hbWVcbiAgICAgIHJldHVybiB0aGlzLndhbGsoKGNoaWxkLCBpKSA9PiB7XG4gICAgICAgIGlmIChjaGlsZC50eXBlID09PSAnYXRydWxlJykge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKG5hbWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgIHJldHVybiB0aGlzLndhbGsoKGNoaWxkLCBpKSA9PiB7XG4gICAgICAgIGlmIChjaGlsZC50eXBlID09PSAnYXRydWxlJyAmJiBuYW1lLnRlc3QoY2hpbGQubmFtZSkpIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soY2hpbGQsIGkpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiB0aGlzLndhbGsoKGNoaWxkLCBpKSA9PiB7XG4gICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ2F0cnVsZScgJiYgY2hpbGQubmFtZSA9PT0gbmFtZSkge1xuICAgICAgICByZXR1cm4gY2FsbGJhY2soY2hpbGQsIGkpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmF2ZXJzZXMgdGhlIGNvbnRhaW5lcuKAmXMgZGVzY2VuZGFudCBub2RlcywgY2FsbGluZyBjYWxsYmFja1xuICAgKiBmb3IgZWFjaCBjb21tZW50IG5vZGUuXG4gICAqXG4gICAqIExpa2Uge0BsaW5rIENvbnRhaW5lciNlYWNofSwgdGhpcyBtZXRob2QgaXMgc2FmZVxuICAgKiB0byB1c2UgaWYgeW91IGFyZSBtdXRhdGluZyBhcnJheXMgZHVyaW5nIGl0ZXJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtjaGlsZEl0ZXJhdG9yfSBjYWxsYmFjayBJdGVyYXRvciByZWNlaXZlcyBlYWNoIG5vZGUgYW5kIGluZGV4LlxuICAgKlxuICAgKiBAcmV0dXJuIHtmYWxzZXx1bmRlZmluZWR9IFJldHVybnMgYGZhbHNlYCBpZiBpdGVyYXRpb24gd2FzIGJyb2tlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiByb290LndhbGtDb21tZW50cyhjb21tZW50ID0+IHtcbiAgICogICBjb21tZW50LnJlbW92ZSgpXG4gICAqIH0pXG4gICAqL1xuICB3YWxrQ29tbWVudHMgKGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHRoaXMud2FsaygoY2hpbGQsIGkpID0+IHtcbiAgICAgIGlmIChjaGlsZC50eXBlID09PSAnY29tbWVudCcpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogSW5zZXJ0cyBuZXcgbm9kZXMgdG8gdGhlIGVuZCBvZiB0aGUgY29udGFpbmVyLlxuICAgKlxuICAgKiBAcGFyYW0gey4uLihOb2RlfG9iamVjdHxzdHJpbmd8Tm9kZVtdKX0gY2hpbGRyZW4gTmV3IG5vZGVzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBUaGlzIG5vZGUgZm9yIG1ldGhvZHMgY2hhaW4uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IGRlY2wxID0gcG9zdGNzcy5kZWNsKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdibGFjaycgfSlcbiAgICogY29uc3QgZGVjbDIgPSBwb3N0Y3NzLmRlY2woeyBwcm9wOiAnYmFja2dyb3VuZC1jb2xvcicsIHZhbHVlOiAnd2hpdGUnIH0pXG4gICAqIHJ1bGUuYXBwZW5kKGRlY2wxLCBkZWNsMilcbiAgICpcbiAgICogcm9vdC5hcHBlbmQoeyBuYW1lOiAnY2hhcnNldCcsIHBhcmFtczogJ1wiVVRGLThcIicgfSkgIC8vIGF0LXJ1bGVcbiAgICogcm9vdC5hcHBlbmQoeyBzZWxlY3RvcjogJ2EnIH0pICAgICAgICAgICAgICAgICAgICAgICAvLyBydWxlXG4gICAqIHJ1bGUuYXBwZW5kKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdibGFjaycgfSkgICAgICAgLy8gZGVjbGFyYXRpb25cbiAgICogcnVsZS5hcHBlbmQoeyB0ZXh0OiAnQ29tbWVudCcgfSkgICAgICAgICAgICAgICAgICAgICAvLyBjb21tZW50XG4gICAqXG4gICAqIHJvb3QuYXBwZW5kKCdhIHt9JylcbiAgICogcm9vdC5maXJzdC5hcHBlbmQoJ2NvbG9yOiBibGFjazsgei1pbmRleDogMScpXG4gICAqL1xuICBhcHBlbmQgKC4uLmNoaWxkcmVuKSB7XG4gICAgZm9yIChsZXQgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgIGxldCBub2RlcyA9IHRoaXMubm9ybWFsaXplKGNoaWxkLCB0aGlzLmxhc3QpXG4gICAgICBmb3IgKGxldCBub2RlIG9mIG5vZGVzKSB0aGlzLm5vZGVzLnB1c2gobm9kZSlcbiAgICB9XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnNlcnRzIG5ldyBub2RlcyB0byB0aGUgc3RhcnQgb2YgdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogQHBhcmFtIHsuLi4oTm9kZXxvYmplY3R8c3RyaW5nfE5vZGVbXSl9IGNoaWxkcmVuIE5ldyBub2Rlcy5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gVGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBkZWNsMSA9IHBvc3Rjc3MuZGVjbCh7IHByb3A6ICdjb2xvcicsIHZhbHVlOiAnYmxhY2snIH0pXG4gICAqIGNvbnN0IGRlY2wyID0gcG9zdGNzcy5kZWNsKHsgcHJvcDogJ2JhY2tncm91bmQtY29sb3InLCB2YWx1ZTogJ3doaXRlJyB9KVxuICAgKiBydWxlLnByZXBlbmQoZGVjbDEsIGRlY2wyKVxuICAgKlxuICAgKiByb290LmFwcGVuZCh7IG5hbWU6ICdjaGFyc2V0JywgcGFyYW1zOiAnXCJVVEYtOFwiJyB9KSAgLy8gYXQtcnVsZVxuICAgKiByb290LmFwcGVuZCh7IHNlbGVjdG9yOiAnYScgfSkgICAgICAgICAgICAgICAgICAgICAgIC8vIHJ1bGVcbiAgICogcnVsZS5hcHBlbmQoeyBwcm9wOiAnY29sb3InLCB2YWx1ZTogJ2JsYWNrJyB9KSAgICAgICAvLyBkZWNsYXJhdGlvblxuICAgKiBydWxlLmFwcGVuZCh7IHRleHQ6ICdDb21tZW50JyB9KSAgICAgICAgICAgICAgICAgICAgIC8vIGNvbW1lbnRcbiAgICpcbiAgICogcm9vdC5hcHBlbmQoJ2Ege30nKVxuICAgKiByb290LmZpcnN0LmFwcGVuZCgnY29sb3I6IGJsYWNrOyB6LWluZGV4OiAxJylcbiAgICovXG4gIHByZXBlbmQgKC4uLmNoaWxkcmVuKSB7XG4gICAgY2hpbGRyZW4gPSBjaGlsZHJlbi5yZXZlcnNlKClcbiAgICBmb3IgKGxldCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgICAgbGV0IG5vZGVzID0gdGhpcy5ub3JtYWxpemUoY2hpbGQsIHRoaXMuZmlyc3QsICdwcmVwZW5kJykucmV2ZXJzZSgpXG4gICAgICBmb3IgKGxldCBub2RlIG9mIG5vZGVzKSB0aGlzLm5vZGVzLnVuc2hpZnQobm9kZSlcbiAgICAgIGZvciAobGV0IGlkIGluIHRoaXMuaW5kZXhlcykge1xuICAgICAgICB0aGlzLmluZGV4ZXNbaWRdID0gdGhpcy5pbmRleGVzW2lkXSArIG5vZGVzLmxlbmd0aFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgY2xlYW5SYXdzIChrZWVwQmV0d2Vlbikge1xuICAgIHN1cGVyLmNsZWFuUmF3cyhrZWVwQmV0d2VlbilcbiAgICBpZiAodGhpcy5ub2Rlcykge1xuICAgICAgZm9yIChsZXQgbm9kZSBvZiB0aGlzLm5vZGVzKSBub2RlLmNsZWFuUmF3cyhrZWVwQmV0d2VlbilcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5zZXJ0IG5ldyBub2RlIGJlZm9yZSBvbGQgbm9kZSB3aXRoaW4gdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogQHBhcmFtIHtOb2RlfG51bWJlcn0gZXhpc3QgICAgICAgICAgICAgQ2hpbGQgb3IgY2hpbGTigJlzIGluZGV4LlxuICAgKiBAcGFyYW0ge05vZGV8b2JqZWN0fHN0cmluZ3xOb2RlW119IGFkZCBOZXcgbm9kZS5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gVGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBydWxlLmluc2VydEJlZm9yZShkZWNsLCBkZWNsLmNsb25lKHsgcHJvcDogJy13ZWJraXQtJyArIGRlY2wucHJvcCB9KSlcbiAgICovXG4gIGluc2VydEJlZm9yZSAoZXhpc3QsIGFkZCkge1xuICAgIGV4aXN0ID0gdGhpcy5pbmRleChleGlzdClcblxuICAgIGxldCB0eXBlID0gZXhpc3QgPT09IDAgPyAncHJlcGVuZCcgOiBmYWxzZVxuICAgIGxldCBub2RlcyA9IHRoaXMubm9ybWFsaXplKGFkZCwgdGhpcy5ub2Rlc1tleGlzdF0sIHR5cGUpLnJldmVyc2UoKVxuICAgIGZvciAobGV0IG5vZGUgb2Ygbm9kZXMpIHRoaXMubm9kZXMuc3BsaWNlKGV4aXN0LCAwLCBub2RlKVxuXG4gICAgbGV0IGluZGV4XG4gICAgZm9yIChsZXQgaWQgaW4gdGhpcy5pbmRleGVzKSB7XG4gICAgICBpbmRleCA9IHRoaXMuaW5kZXhlc1tpZF1cbiAgICAgIGlmIChleGlzdCA8PSBpbmRleCkge1xuICAgICAgICB0aGlzLmluZGV4ZXNbaWRdID0gaW5kZXggKyBub2Rlcy5sZW5ndGhcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEluc2VydCBuZXcgbm9kZSBhZnRlciBvbGQgbm9kZSB3aXRoaW4gdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogQHBhcmFtIHtOb2RlfG51bWJlcn0gZXhpc3QgICAgICAgICAgICAgQ2hpbGQgb3IgY2hpbGTigJlzIGluZGV4LlxuICAgKiBAcGFyYW0ge05vZGV8b2JqZWN0fHN0cmluZ3xOb2RlW119IGFkZCBOZXcgbm9kZS5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gVGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluLlxuICAgKi9cbiAgaW5zZXJ0QWZ0ZXIgKGV4aXN0LCBhZGQpIHtcbiAgICBleGlzdCA9IHRoaXMuaW5kZXgoZXhpc3QpXG5cbiAgICBsZXQgbm9kZXMgPSB0aGlzLm5vcm1hbGl6ZShhZGQsIHRoaXMubm9kZXNbZXhpc3RdKS5yZXZlcnNlKClcbiAgICBmb3IgKGxldCBub2RlIG9mIG5vZGVzKSB0aGlzLm5vZGVzLnNwbGljZShleGlzdCArIDEsIDAsIG5vZGUpXG5cbiAgICBsZXQgaW5kZXhcbiAgICBmb3IgKGxldCBpZCBpbiB0aGlzLmluZGV4ZXMpIHtcbiAgICAgIGluZGV4ID0gdGhpcy5pbmRleGVzW2lkXVxuICAgICAgaWYgKGV4aXN0IDwgaW5kZXgpIHtcbiAgICAgICAgdGhpcy5pbmRleGVzW2lkXSA9IGluZGV4ICsgbm9kZXMubGVuZ3RoXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIG5vZGUgZnJvbSB0aGUgY29udGFpbmVyIGFuZCBjbGVhbnMgdGhlIHBhcmVudCBwcm9wZXJ0aWVzXG4gICAqIGZyb20gdGhlIG5vZGUgYW5kIGl0cyBjaGlsZHJlbi5cbiAgICpcbiAgICogQHBhcmFtIHtOb2RlfG51bWJlcn0gY2hpbGQgQ2hpbGQgb3IgY2hpbGTigJlzIGluZGV4LlxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBUaGlzIG5vZGUgZm9yIG1ldGhvZHMgY2hhaW5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcnVsZS5ub2Rlcy5sZW5ndGggIC8vPT4gNVxuICAgKiBydWxlLnJlbW92ZUNoaWxkKGRlY2wpXG4gICAqIHJ1bGUubm9kZXMubGVuZ3RoICAvLz0+IDRcbiAgICogZGVjbC5wYXJlbnQgICAgICAgIC8vPT4gdW5kZWZpbmVkXG4gICAqL1xuICByZW1vdmVDaGlsZCAoY2hpbGQpIHtcbiAgICBjaGlsZCA9IHRoaXMuaW5kZXgoY2hpbGQpXG4gICAgdGhpcy5ub2Rlc1tjaGlsZF0ucGFyZW50ID0gdW5kZWZpbmVkXG4gICAgdGhpcy5ub2Rlcy5zcGxpY2UoY2hpbGQsIDEpXG5cbiAgICBsZXQgaW5kZXhcbiAgICBmb3IgKGxldCBpZCBpbiB0aGlzLmluZGV4ZXMpIHtcbiAgICAgIGluZGV4ID0gdGhpcy5pbmRleGVzW2lkXVxuICAgICAgaWYgKGluZGV4ID49IGNoaWxkKSB7XG4gICAgICAgIHRoaXMuaW5kZXhlc1tpZF0gPSBpbmRleCAtIDFcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYWxsIGNoaWxkcmVuIGZyb20gdGhlIGNvbnRhaW5lclxuICAgKiBhbmQgY2xlYW5zIHRoZWlyIHBhcmVudCBwcm9wZXJ0aWVzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBUaGlzIG5vZGUgZm9yIG1ldGhvZHMgY2hhaW4uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJ1bGUucmVtb3ZlQWxsKClcbiAgICogcnVsZS5ub2Rlcy5sZW5ndGggLy89PiAwXG4gICAqL1xuICByZW1vdmVBbGwgKCkge1xuICAgIGZvciAobGV0IG5vZGUgb2YgdGhpcy5ub2Rlcykgbm9kZS5wYXJlbnQgPSB1bmRlZmluZWRcbiAgICB0aGlzLm5vZGVzID0gW11cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIFBhc3NlcyBhbGwgZGVjbGFyYXRpb24gdmFsdWVzIHdpdGhpbiB0aGUgY29udGFpbmVyIHRoYXQgbWF0Y2ggcGF0dGVyblxuICAgKiB0aHJvdWdoIGNhbGxiYWNrLCByZXBsYWNpbmcgdGhvc2UgdmFsdWVzIHdpdGggdGhlIHJldHVybmVkIHJlc3VsdFxuICAgKiBvZiBjYWxsYmFjay5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgaXMgdXNlZnVsIGlmIHlvdSBhcmUgdXNpbmcgYSBjdXN0b20gdW5pdCBvciBmdW5jdGlvblxuICAgKiBhbmQgbmVlZCB0byBpdGVyYXRlIHRocm91Z2ggYWxsIHZhbHVlcy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd8UmVnRXhwfSBwYXR0ZXJuICAgICAgUmVwbGFjZSBwYXR0ZXJuLlxuICAgKiBAcGFyYW0ge29iamVjdH0gb3B0cyAgICAgICAgICAgICAgICBPcHRpb25zIHRvIHNwZWVkIHVwIHRoZSBzZWFyY2guXG4gICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBvcHRzLnByb3BzIEFuIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5mYXN0ICAgICAgICAgICBTdHJpbmcgdGhhdOKAmXMgdXNlZCB0byBuYXJyb3cgZG93blxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgYW5kIHNwZWVkIHVwIHRoZSByZWdleHAgc2VhcmNoLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufHN0cmluZ30gY2FsbGJhY2sgICBTdHJpbmcgdG8gcmVwbGFjZSBwYXR0ZXJuIG9yIGNhbGxiYWNrXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgcmV0dXJucyBhIG5ldyB2YWx1ZS4gVGhlIGNhbGxiYWNrXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgcmVjZWl2ZSB0aGUgc2FtZSBhcmd1bWVudHNcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgdGhvc2UgcGFzc2VkIHRvIGEgZnVuY3Rpb24gcGFyYW1ldGVyXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGBTdHJpbmcjcmVwbGFjZWAuXG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV9IFRoaXMgbm9kZSBmb3IgbWV0aG9kcyBjaGFpbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcm9vdC5yZXBsYWNlVmFsdWVzKC9cXGQrcmVtLywgeyBmYXN0OiAncmVtJyB9LCBzdHJpbmcgPT4ge1xuICAgKiAgIHJldHVybiAxNSAqIHBhcnNlSW50KHN0cmluZykgKyAncHgnXG4gICAqIH0pXG4gICAqL1xuICByZXBsYWNlVmFsdWVzIChwYXR0ZXJuLCBvcHRzLCBjYWxsYmFjaykge1xuICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgIGNhbGxiYWNrID0gb3B0c1xuICAgICAgb3B0cyA9IHsgfVxuICAgIH1cblxuICAgIHRoaXMud2Fsa0RlY2xzKGRlY2wgPT4ge1xuICAgICAgaWYgKG9wdHMucHJvcHMgJiYgb3B0cy5wcm9wcy5pbmRleE9mKGRlY2wucHJvcCkgPT09IC0xKSByZXR1cm5cbiAgICAgIGlmIChvcHRzLmZhc3QgJiYgZGVjbC52YWx1ZS5pbmRleE9mKG9wdHMuZmFzdCkgPT09IC0xKSByZXR1cm5cblxuICAgICAgZGVjbC52YWx1ZSA9IGRlY2wudmFsdWUucmVwbGFjZShwYXR0ZXJuLCBjYWxsYmFjaylcbiAgICB9KVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGB0cnVlYCBpZiBjYWxsYmFjayByZXR1cm5zIGB0cnVlYFxuICAgKiBmb3IgYWxsIG9mIHRoZSBjb250YWluZXLigJlzIGNoaWxkcmVuLlxuICAgKlxuICAgKiBAcGFyYW0ge2NoaWxkQ29uZGl0aW9ufSBjb25kaXRpb24gSXRlcmF0b3IgcmV0dXJucyB0cnVlIG9yIGZhbHNlLlxuICAgKlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBJcyBldmVyeSBjaGlsZCBwYXNzIGNvbmRpdGlvbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgbm9QcmVmaXhlcyA9IHJ1bGUuZXZlcnkoaSA9PiBpLnByb3BbMF0gIT09ICctJylcbiAgICovXG4gIGV2ZXJ5IChjb25kaXRpb24pIHtcbiAgICByZXR1cm4gdGhpcy5ub2Rlcy5ldmVyeShjb25kaXRpb24pXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBgdHJ1ZWAgaWYgY2FsbGJhY2sgcmV0dXJucyBgdHJ1ZWAgZm9yIChhdCBsZWFzdCkgb25lXG4gICAqIG9mIHRoZSBjb250YWluZXLigJlzIGNoaWxkcmVuLlxuICAgKlxuICAgKiBAcGFyYW0ge2NoaWxkQ29uZGl0aW9ufSBjb25kaXRpb24gSXRlcmF0b3IgcmV0dXJucyB0cnVlIG9yIGZhbHNlLlxuICAgKlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBJcyBzb21lIGNoaWxkIHBhc3MgY29uZGl0aW9uLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBoYXNQcmVmaXggPSBydWxlLnNvbWUoaSA9PiBpLnByb3BbMF0gPT09ICctJylcbiAgICovXG4gIHNvbWUgKGNvbmRpdGlvbikge1xuICAgIHJldHVybiB0aGlzLm5vZGVzLnNvbWUoY29uZGl0aW9uKVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBgY2hpbGRg4oCZcyBpbmRleCB3aXRoaW4gdGhlIHtAbGluayBDb250YWluZXIjbm9kZXN9IGFycmF5LlxuICAgKlxuICAgKiBAcGFyYW0ge05vZGV9IGNoaWxkIENoaWxkIG9mIHRoZSBjdXJyZW50IGNvbnRhaW5lci5cbiAgICpcbiAgICogQHJldHVybiB7bnVtYmVyfSBDaGlsZCBpbmRleC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcnVsZS5pbmRleCggcnVsZS5ub2Rlc1syXSApIC8vPT4gMlxuICAgKi9cbiAgaW5kZXggKGNoaWxkKSB7XG4gICAgaWYgKHR5cGVvZiBjaGlsZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBjaGlsZFxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5ub2Rlcy5pbmRleE9mKGNoaWxkKVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjb250YWluZXLigJlzIGZpcnN0IGNoaWxkLlxuICAgKlxuICAgKiBAdHlwZSB7Tm9kZX1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcnVsZS5maXJzdCA9PT0gcnVsZXMubm9kZXNbMF1cbiAgICovXG4gIGdldCBmaXJzdCAoKSB7XG4gICAgaWYgKCF0aGlzLm5vZGVzKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgcmV0dXJuIHRoaXMubm9kZXNbMF1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY29udGFpbmVy4oCZcyBsYXN0IGNoaWxkLlxuICAgKlxuICAgKiBAdHlwZSB7Tm9kZX1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcnVsZS5sYXN0ID09PSBydWxlLm5vZGVzW3J1bGUubm9kZXMubGVuZ3RoIC0gMV1cbiAgICovXG4gIGdldCBsYXN0ICgpIHtcbiAgICBpZiAoIXRoaXMubm9kZXMpIHJldHVybiB1bmRlZmluZWRcbiAgICByZXR1cm4gdGhpcy5ub2Rlc1t0aGlzLm5vZGVzLmxlbmd0aCAtIDFdXG4gIH1cblxuICBub3JtYWxpemUgKG5vZGVzLCBzYW1wbGUpIHtcbiAgICBpZiAodHlwZW9mIG5vZGVzID09PSAnc3RyaW5nJykge1xuICAgICAgbGV0IHBhcnNlID0gcmVxdWlyZSgnLi9wYXJzZScpXG4gICAgICBub2RlcyA9IGNsZWFuU291cmNlKHBhcnNlKG5vZGVzKS5ub2RlcylcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobm9kZXMpKSB7XG4gICAgICBub2RlcyA9IG5vZGVzLnNsaWNlKDApXG4gICAgICBmb3IgKGxldCBpIG9mIG5vZGVzKSB7XG4gICAgICAgIGlmIChpLnBhcmVudCkgaS5wYXJlbnQucmVtb3ZlQ2hpbGQoaSwgJ2lnbm9yZScpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChub2Rlcy50eXBlID09PSAncm9vdCcpIHtcbiAgICAgIG5vZGVzID0gbm9kZXMubm9kZXMuc2xpY2UoMClcbiAgICAgIGZvciAobGV0IGkgb2Ygbm9kZXMpIHtcbiAgICAgICAgaWYgKGkucGFyZW50KSBpLnBhcmVudC5yZW1vdmVDaGlsZChpLCAnaWdub3JlJylcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5vZGVzLnR5cGUpIHtcbiAgICAgIG5vZGVzID0gW25vZGVzXVxuICAgIH0gZWxzZSBpZiAobm9kZXMucHJvcCkge1xuICAgICAgaWYgKHR5cGVvZiBub2Rlcy52YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdWYWx1ZSBmaWVsZCBpcyBtaXNzZWQgaW4gbm9kZSBjcmVhdGlvbicpXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBub2Rlcy52YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgbm9kZXMudmFsdWUgPSBTdHJpbmcobm9kZXMudmFsdWUpXG4gICAgICB9XG4gICAgICBub2RlcyA9IFtuZXcgRGVjbGFyYXRpb24obm9kZXMpXVxuICAgIH0gZWxzZSBpZiAobm9kZXMuc2VsZWN0b3IpIHtcbiAgICAgIGxldCBSdWxlID0gcmVxdWlyZSgnLi9ydWxlJylcbiAgICAgIG5vZGVzID0gW25ldyBSdWxlKG5vZGVzKV1cbiAgICB9IGVsc2UgaWYgKG5vZGVzLm5hbWUpIHtcbiAgICAgIGxldCBBdFJ1bGUgPSByZXF1aXJlKCcuL2F0LXJ1bGUnKVxuICAgICAgbm9kZXMgPSBbbmV3IEF0UnVsZShub2RlcyldXG4gICAgfSBlbHNlIGlmIChub2Rlcy50ZXh0KSB7XG4gICAgICBub2RlcyA9IFtuZXcgQ29tbWVudChub2RlcyldXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBub2RlIHR5cGUgaW4gbm9kZSBjcmVhdGlvbicpXG4gICAgfVxuXG4gICAgbGV0IHByb2Nlc3NlZCA9IG5vZGVzLm1hcChpID0+IHtcbiAgICAgIGlmIChpLnBhcmVudCkgaS5wYXJlbnQucmVtb3ZlQ2hpbGQoaSlcbiAgICAgIGlmICh0eXBlb2YgaS5yYXdzLmJlZm9yZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgaWYgKHNhbXBsZSAmJiB0eXBlb2Ygc2FtcGxlLnJhd3MuYmVmb3JlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIGkucmF3cy5iZWZvcmUgPSBzYW1wbGUucmF3cy5iZWZvcmUucmVwbGFjZSgvW15cXHNdL2csICcnKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpLnBhcmVudCA9IHRoaXNcbiAgICAgIHJldHVybiBpXG4gICAgfSlcblxuICAgIHJldHVybiBwcm9jZXNzZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgQ29udGFpbmVyI1xuICAgKiBAbWVtYmVyIHtOb2RlW119IG5vZGVzIEFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGNvbnRhaW5lcuKAmXMgY2hpbGRyZW4uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhIHsgY29sb3I6IGJsYWNrIH0nKVxuICAgKiByb290Lm5vZGVzLmxlbmd0aCAgICAgICAgICAgLy89PiAxXG4gICAqIHJvb3Qubm9kZXNbMF0uc2VsZWN0b3IgICAgICAvLz0+ICdhJ1xuICAgKiByb290Lm5vZGVzWzBdLm5vZGVzWzBdLnByb3AgLy89PiAnY29sb3InXG4gICAqL1xufVxuXG5leHBvcnQgZGVmYXVsdCBDb250YWluZXJcblxuLyoqXG4gKiBAY2FsbGJhY2sgY2hpbGRDb25kaXRpb25cbiAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAgICBDb250YWluZXIgY2hpbGQuXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXggQ2hpbGQgaW5kZXguXG4gKiBAcGFyYW0ge05vZGVbXX0gbm9kZXMgQWxsIGNvbnRhaW5lciBjaGlsZHJlbi5cbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cblxuLyoqXG4gKiBAY2FsbGJhY2sgY2hpbGRJdGVyYXRvclxuICogQHBhcmFtIHtOb2RlfSBub2RlICAgIENvbnRhaW5lciBjaGlsZC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBDaGlsZCBpbmRleC5cbiAqIEByZXR1cm4ge2ZhbHNlfHVuZGVmaW5lZH0gUmV0dXJuaW5nIGBmYWxzZWAgd2lsbCBicmVhayBpdGVyYXRpb24uXG4gKi9cbiJdLCJmaWxlIjoiY29udGFpbmVyLmpzIn0=\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nvar _list = _interopRequireDefault(require(\"./list\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * Represents a CSS rule: a selector followed by a declaration block.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('a{}')\n * const rule = root.first\n * rule.type //=> 'rule'\n * rule.toString() //=> 'a{}'\n */\nvar Rule =\n/*#__PURE__*/\nfunction (_Container) {\n _inheritsLoose(Rule, _Container);\n\n function Rule(defaults) {\n var _this;\n\n _this = _Container.call(this, defaults) || this;\n _this.type = 'rule';\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n /**\n * An array containing the rule’s individual selectors.\n * Groups of selectors are split at commas.\n *\n * @type {string[]}\n *\n * @example\n * const root = postcss.parse('a, b { }')\n * const rule = root.first\n *\n * rule.selector //=> 'a, b'\n * rule.selectors //=> ['a', 'b']\n *\n * rule.selectors = ['a', 'strong']\n * rule.selector //=> 'a, strong'\n */\n\n\n _createClass(Rule, [{\n key: \"selectors\",\n get: function get() {\n return _list.default.comma(this.selector);\n },\n set: function set(values) {\n var match = this.selector ? this.selector.match(/,\\s*/) : null;\n var sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen');\n this.selector = values.join(sep);\n }\n /**\n * @memberof Rule#\n * @member {string} selector The rule’s full selector represented\n * as a string.\n *\n * @example\n * const root = postcss.parse('a, b { }')\n * const rule = root.first\n * rule.selector //=> 'a, b'\n */\n\n /**\n * @memberof Rule#\n * @member {object} raws Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node. It also stores `*`\n * and `_` symbols before the declaration (IE hack).\n * * `after`: the space symbols after the last child of the node\n * to the end of the node.\n * * `between`: the symbols between the property and value\n * for declarations, selector and `{` for rules, or last parameter\n * and `{` for at-rules.\n * * `semicolon`: contains `true` if the last child has\n * an (optional) semicolon.\n * * `ownSemicolon`: contains `true` if there is semicolon after rule.\n *\n * PostCSS cleans selectors from comments and extra spaces,\n * but it stores origin content in raws properties.\n * As such, if you don’t change a declaration’s value,\n * PostCSS will use the raw value with comments.\n *\n * @example\n * const root = postcss.parse('a {\\n color:black\\n}')\n * root.first.first.raws //=> { before: '', between: ' ', after: '\\n' }\n */\n\n }]);\n\n return Rule;\n}(_container.default);\n\nvar _default = Rule;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGUuZXM2Il0sIm5hbWVzIjpbIlJ1bGUiLCJkZWZhdWx0cyIsInR5cGUiLCJub2RlcyIsImxpc3QiLCJjb21tYSIsInNlbGVjdG9yIiwidmFsdWVzIiwibWF0Y2giLCJzZXAiLCJyYXciLCJqb2luIiwiQ29udGFpbmVyIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUNBOzs7Ozs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7O0lBV01BLEk7Ozs7O0FBQ0osZ0JBQWFDLFFBQWIsRUFBdUI7QUFBQTs7QUFDckIsa0NBQU1BLFFBQU47QUFDQSxVQUFLQyxJQUFMLEdBQVksTUFBWjtBQUNBLFFBQUksQ0FBQyxNQUFLQyxLQUFWLEVBQWlCLE1BQUtBLEtBQUwsR0FBYSxFQUFiO0FBSEk7QUFJdEI7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7d0JBZ0JpQjtBQUNmLGFBQU9DLGNBQUtDLEtBQUwsQ0FBVyxLQUFLQyxRQUFoQixDQUFQO0FBQ0QsSztzQkFFY0MsTSxFQUFRO0FBQ3JCLFVBQUlDLEtBQUssR0FBRyxLQUFLRixRQUFMLEdBQWdCLEtBQUtBLFFBQUwsQ0FBY0UsS0FBZCxDQUFvQixNQUFwQixDQUFoQixHQUE4QyxJQUExRDtBQUNBLFVBQUlDLEdBQUcsR0FBR0QsS0FBSyxHQUFHQSxLQUFLLENBQUMsQ0FBRCxDQUFSLEdBQWMsTUFBTSxLQUFLRSxHQUFMLENBQVMsU0FBVCxFQUFvQixZQUFwQixDQUFuQztBQUNBLFdBQUtKLFFBQUwsR0FBZ0JDLE1BQU0sQ0FBQ0ksSUFBUCxDQUFZRixHQUFaLENBQWhCO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7QUFXQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE1Q2lCRyxrQjs7ZUEwRUpaLEkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29udGFpbmVyIGZyb20gJy4vY29udGFpbmVyJ1xuaW1wb3J0IGxpc3QgZnJvbSAnLi9saXN0J1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBDU1MgcnVsZTogYSBzZWxlY3RvciBmb2xsb3dlZCBieSBhIGRlY2xhcmF0aW9uIGJsb2NrLlxuICpcbiAqIEBleHRlbmRzIENvbnRhaW5lclxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYXt9JylcbiAqIGNvbnN0IHJ1bGUgPSByb290LmZpcnN0XG4gKiBydWxlLnR5cGUgICAgICAgLy89PiAncnVsZSdcbiAqIHJ1bGUudG9TdHJpbmcoKSAvLz0+ICdhe30nXG4gKi9cbmNsYXNzIFJ1bGUgZXh0ZW5kcyBDb250YWluZXIge1xuICBjb25zdHJ1Y3RvciAoZGVmYXVsdHMpIHtcbiAgICBzdXBlcihkZWZhdWx0cylcbiAgICB0aGlzLnR5cGUgPSAncnVsZSdcbiAgICBpZiAoIXRoaXMubm9kZXMpIHRoaXMubm9kZXMgPSBbXVxuICB9XG5cbiAgLyoqXG4gICAqIEFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIHJ1bGXigJlzIGluZGl2aWR1YWwgc2VsZWN0b3JzLlxuICAgKiBHcm91cHMgb2Ygc2VsZWN0b3JzIGFyZSBzcGxpdCBhdCBjb21tYXMuXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmdbXX1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2EsIGIgeyB9JylcbiAgICogY29uc3QgcnVsZSA9IHJvb3QuZmlyc3RcbiAgICpcbiAgICogcnVsZS5zZWxlY3RvciAgLy89PiAnYSwgYidcbiAgICogcnVsZS5zZWxlY3RvcnMgLy89PiBbJ2EnLCAnYiddXG4gICAqXG4gICAqIHJ1bGUuc2VsZWN0b3JzID0gWydhJywgJ3N0cm9uZyddXG4gICAqIHJ1bGUuc2VsZWN0b3IgLy89PiAnYSwgc3Ryb25nJ1xuICAgKi9cbiAgZ2V0IHNlbGVjdG9ycyAoKSB7XG4gICAgcmV0dXJuIGxpc3QuY29tbWEodGhpcy5zZWxlY3RvcilcbiAgfVxuXG4gIHNldCBzZWxlY3RvcnMgKHZhbHVlcykge1xuICAgIGxldCBtYXRjaCA9IHRoaXMuc2VsZWN0b3IgPyB0aGlzLnNlbGVjdG9yLm1hdGNoKC8sXFxzKi8pIDogbnVsbFxuICAgIGxldCBzZXAgPSBtYXRjaCA/IG1hdGNoWzBdIDogJywnICsgdGhpcy5yYXcoJ2JldHdlZW4nLCAnYmVmb3JlT3BlbicpXG4gICAgdGhpcy5zZWxlY3RvciA9IHZhbHVlcy5qb2luKHNlcClcbiAgfVxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgUnVsZSNcbiAgICogQG1lbWJlciB7c3RyaW5nfSBzZWxlY3RvciBUaGUgcnVsZeKAmXMgZnVsbCBzZWxlY3RvciByZXByZXNlbnRlZFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIGEgc3RyaW5nLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSwgYiB7IH0nKVxuICAgKiBjb25zdCBydWxlID0gcm9vdC5maXJzdFxuICAgKiBydWxlLnNlbGVjdG9yIC8vPT4gJ2EsIGInXG4gICAqL1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgUnVsZSNcbiAgICogQG1lbWJlciB7b2JqZWN0fSByYXdzIEluZm9ybWF0aW9uIHRvIGdlbmVyYXRlIGJ5dGUtdG8tYnl0ZSBlcXVhbFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgbm9kZSBzdHJpbmcgYXMgaXQgd2FzIGluIHRoZSBvcmlnaW4gaW5wdXQuXG4gICAqXG4gICAqIEV2ZXJ5IHBhcnNlciBzYXZlcyBpdHMgb3duIHByb3BlcnRpZXMsXG4gICAqIGJ1dCB0aGUgZGVmYXVsdCBDU1MgcGFyc2VyIHVzZXM6XG4gICAqXG4gICAqICogYGJlZm9yZWA6IHRoZSBzcGFjZSBzeW1ib2xzIGJlZm9yZSB0aGUgbm9kZS4gSXQgYWxzbyBzdG9yZXMgYCpgXG4gICAqICAgYW5kIGBfYCBzeW1ib2xzIGJlZm9yZSB0aGUgZGVjbGFyYXRpb24gKElFIGhhY2spLlxuICAgKiAqIGBhZnRlcmA6IHRoZSBzcGFjZSBzeW1ib2xzIGFmdGVyIHRoZSBsYXN0IGNoaWxkIG9mIHRoZSBub2RlXG4gICAqICAgdG8gdGhlIGVuZCBvZiB0aGUgbm9kZS5cbiAgICogKiBgYmV0d2VlbmA6IHRoZSBzeW1ib2xzIGJldHdlZW4gdGhlIHByb3BlcnR5IGFuZCB2YWx1ZVxuICAgKiAgIGZvciBkZWNsYXJhdGlvbnMsIHNlbGVjdG9yIGFuZCBge2AgZm9yIHJ1bGVzLCBvciBsYXN0IHBhcmFtZXRlclxuICAgKiAgIGFuZCBge2AgZm9yIGF0LXJ1bGVzLlxuICAgKiAqIGBzZW1pY29sb25gOiBjb250YWlucyBgdHJ1ZWAgaWYgdGhlIGxhc3QgY2hpbGQgaGFzXG4gICAqICAgYW4gKG9wdGlvbmFsKSBzZW1pY29sb24uXG4gICAqICogYG93blNlbWljb2xvbmA6IGNvbnRhaW5zIGB0cnVlYCBpZiB0aGVyZSBpcyBzZW1pY29sb24gYWZ0ZXIgcnVsZS5cbiAgICpcbiAgICogUG9zdENTUyBjbGVhbnMgc2VsZWN0b3JzIGZyb20gY29tbWVudHMgYW5kIGV4dHJhIHNwYWNlcyxcbiAgICogYnV0IGl0IHN0b3JlcyBvcmlnaW4gY29udGVudCBpbiByYXdzIHByb3BlcnRpZXMuXG4gICAqIEFzIHN1Y2gsIGlmIHlvdSBkb27igJl0IGNoYW5nZSBhIGRlY2xhcmF0aW9u4oCZcyB2YWx1ZSxcbiAgICogUG9zdENTUyB3aWxsIHVzZSB0aGUgcmF3IHZhbHVlIHdpdGggY29tbWVudHMuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhIHtcXG4gIGNvbG9yOmJsYWNrXFxufScpXG4gICAqIHJvb3QuZmlyc3QuZmlyc3QucmF3cyAvLz0+IHsgYmVmb3JlOiAnJywgYmV0d2VlbjogJyAnLCBhZnRlcjogJ1xcbicgfVxuICAgKi9cbn1cblxuZXhwb3J0IGRlZmF1bHQgUnVsZVxuIl0sImZpbGUiOiJydWxlLmpzIn0=\n","module.exports = { \"default\": require(\"core-js/library/fn/number/max-safe-integer\"), __esModule: true };","'use strict';\n\nvar _shouldHideEvent = require('./shouldHideEvent');\n\nvar _shouldHideEvent2 = _interopRequireDefault(_shouldHideEvent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MatrixClientPeg = require('./MatrixClientPeg');\n\nvar sdk = require('./index');\n\nmodule.exports = {\n /**\n * Returns true iff this event arriving in a room should affect the room's\n * count of unread messages\n */\n eventTriggersUnreadCount: function eventTriggersUnreadCount(ev) {\n if (ev.sender && ev.sender.userId == MatrixClientPeg.get().credentials.userId) {\n return false;\n } else if (ev.getType() == 'm.room.member') {\n return false;\n } else if (ev.getType() == 'm.room.third_party_invite') {\n return false;\n } else if (ev.getType() == 'm.call.answer' || ev.getType() == 'm.call.hangup') {\n return false;\n } else if (ev.getType() == 'm.room.message' && ev.getContent().msgtype == 'm.notify') {\n return false;\n } else if (ev.getType() == 'm.room.aliases' || ev.getType() == 'm.room.canonical_alias') {\n return false;\n }\n var EventTile = sdk.getComponent('rooms.EventTile');\n return EventTile.haveTileForEvent(ev);\n },\n\n doesRoomHaveUnreadMessages: function doesRoomHaveUnreadMessages(room) {\n var myUserId = MatrixClientPeg.get().credentials.userId;\n\n // get the most recent read receipt sent by our account.\n // N.B. this is NOT a read marker (RM, aka \"read up to marker\"),\n // despite the name of the method :((\n var readUpToId = room.getEventReadUpTo(myUserId);\n\n // as we don't send RRs for our own messages, make sure we special case that\n // if *we* sent the last message into the room, we consider it not unread!\n // Should fix: https://github.com/vector-im/riot-web/issues/3263\n // https://github.com/vector-im/riot-web/issues/2427\n // ...and possibly some of the others at\n // https://github.com/vector-im/riot-web/issues/3363\n if (room.timeline.length && room.timeline[room.timeline.length - 1].sender && room.timeline[room.timeline.length - 1].sender.userId === myUserId) {\n return false;\n }\n\n // this just looks at whatever history we have, which if we've only just started\n // up probably won't be very much, so if the last couple of events are ones that\n // don't count, we don't know if there are any events that do count between where\n // we have and the read receipt. We could fetch more history to try & find out,\n // but currently we just guess.\n\n // Loop through messages, starting with the most recent...\n for (var i = room.timeline.length - 1; i >= 0; --i) {\n var ev = room.timeline[i];\n\n if (ev.getId() == readUpToId) {\n // If we've read up to this event, there's nothing more recent\n // that counts and we can stop looking because the user's read\n // this and everything before.\n return false;\n } else if (!(0, _shouldHideEvent2.default)(ev) && this.eventTriggersUnreadCount(ev)) {\n // We've found a message that counts before we hit\n // the user's read receipt, so this room is definitely unread.\n return true;\n }\n }\n // If we got here, we didn't find a message that counted but didn't find\n // the user's read receipt either, so we guess and say that the room is\n // unread on the theory that false positives are better than false\n // negatives here.\n return true;\n }\n};\n//# sourceMappingURL=Unread.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getHostingLink = getHostingLink;\n\nvar _url = require('url');\n\nvar _url2 = _interopRequireDefault(_url);\n\nvar _qs = require('qs');\n\nvar _qs2 = _interopRequireDefault(_qs);\n\nvar _SdkConfig = require('../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction getHostingLink(campaign) {\n var hostingLink = _SdkConfig2.default.get().hosting_signup_link;\n if (!hostingLink) return null;\n if (!campaign) return hostingLink;\n\n if (_MatrixClientPeg2.default.get().getDomain() !== 'matrix.org') return null;\n\n try {\n var hostingUrl = _url2.default.parse(hostingLink);\n var params = _qs2.default.parse(hostingUrl.query);\n params.utm_campaign = campaign;\n hostingUrl.search = undefined;\n hostingUrl.query = params;\n return hostingUrl.format();\n } catch (e) {\n return hostingLink;\n }\n}\n//# sourceMappingURL=HostingLink.js.map","'use strict';\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n merge: merge\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PermalinkParts = undefined;\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Interface for classes that actually produce permalinks (strings).\n * TODO: Convert this to a real TypeScript interface\n */\nvar PermalinkConstructor = function () {\n function PermalinkConstructor() {\n (0, _classCallCheck3.default)(this, PermalinkConstructor);\n }\n\n (0, _createClass3.default)(PermalinkConstructor, [{\n key: \"forEvent\",\n value: function forEvent(roomId, eventId, serverCandidates) {\n throw new Error(\"Not implemented\");\n }\n }, {\n key: \"forRoom\",\n value: function forRoom(roomIdOrAlias, serverCandidates) {\n throw new Error(\"Not implemented\");\n }\n }, {\n key: \"forGroup\",\n value: function forGroup(groupId) {\n throw new Error(\"Not implemented\");\n }\n }, {\n key: \"forUser\",\n value: function forUser(userId) {\n throw new Error(\"Not implemented\");\n }\n }, {\n key: \"forEntity\",\n value: function forEntity(entityId) {\n throw new Error(\"Not implemented\");\n }\n }, {\n key: \"isPermalinkHost\",\n value: function isPermalinkHost(host) {\n throw new Error(\"Not implemented\");\n }\n }, {\n key: \"parsePermalink\",\n value: function parsePermalink(fullUrl) {\n throw new Error(\"Not implemented\");\n }\n }]);\n return PermalinkConstructor;\n}();\n\n// Inspired by/Borrowed with permission from the matrix-bot-sdk:\n// https://github.com/turt2live/matrix-js-bot-sdk/blob/7c4665c9a25c2c8e0fe4e509f2616505b5b66a1c/src/Permalinks.ts#L1-L6\n\n\nexports.default = PermalinkConstructor;\n\nvar PermalinkParts = exports.PermalinkParts = function () {\n function PermalinkParts(roomIdOrAlias, eventId, userId, groupId, viaServers) {\n (0, _classCallCheck3.default)(this, PermalinkParts);\n\n this.roomIdOrAlias = roomIdOrAlias;\n this.eventId = eventId;\n this.groupId = groupId;\n this.userId = userId;\n this.viaServers = viaServers;\n }\n\n (0, _createClass3.default)(PermalinkParts, null, [{\n key: \"forUser\",\n value: function forUser(userId) {\n return new PermalinkParts(null, null, userId, null, null);\n }\n }, {\n key: \"forGroup\",\n value: function forGroup(groupId) {\n return new PermalinkParts(null, null, null, groupId, null);\n }\n }, {\n key: \"forRoom\",\n value: function forRoom(roomIdOrAlias, viaServers) {\n return new PermalinkParts(roomIdOrAlias, null, null, null, viaServers || []);\n }\n }, {\n key: \"forEvent\",\n value: function forEvent(roomId, eventId, viaServers) {\n return new PermalinkParts(roomId, eventId, null, null, viaServers || []);\n }\n }]);\n return PermalinkParts;\n}();\n//# sourceMappingURL=PermalinkConstructor.js.map","\"use strict\";\n\nvar _SpecPermalinkConstructor = require(\"./utils/permalinks/SpecPermalinkConstructor\");\n\nvar _Permalinks = require(\"./utils/permalinks/Permalinks\");\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction matrixLinkify(linkify) {\n // Text tokens\n var TT = linkify.scanner.TOKENS;\n // Multi tokens\n var MT = linkify.parser.TOKENS;\n var MultiToken = MT.Base;\n var S_START = linkify.parser.start;\n\n if (TT.UNDERSCORE === undefined) {\n throw new Error(\"linkify-matrix requires linkifyjs 2.1.1: this version is too old.\");\n }\n\n var ROOMALIAS = function ROOMALIAS(value) {\n MultiToken.call(this, value);\n this.type = 'roomalias';\n this.isLink = true;\n };\n ROOMALIAS.prototype = new MultiToken();\n\n var S_HASH = S_START.jump(TT.POUND);\n var S_HASH_NAME = new linkify.parser.State();\n var S_HASH_NAME_COLON = new linkify.parser.State();\n var S_HASH_NAME_COLON_DOMAIN = new linkify.parser.State();\n var S_HASH_NAME_COLON_DOMAIN_DOT = new linkify.parser.State();\n var S_ROOMALIAS = new linkify.parser.State(ROOMALIAS);\n var S_ROOMALIAS_COLON = new linkify.parser.State();\n var S_ROOMALIAS_COLON_NUM = new linkify.parser.State(ROOMALIAS);\n\n var roomnameTokens = [TT.DOT, TT.PLUS, TT.NUM, TT.DOMAIN, TT.TLD, TT.UNDERSCORE, TT.POUND,\n\n // because 'localhost' is tokenised to the localhost token,\n // usernames @localhost:foo.com are otherwise not matched!\n TT.LOCALHOST];\n\n S_HASH.on(roomnameTokens, S_HASH_NAME);\n S_HASH_NAME.on(roomnameTokens, S_HASH_NAME);\n S_HASH_NAME.on(TT.DOMAIN, S_HASH_NAME);\n\n S_HASH_NAME.on(TT.COLON, S_HASH_NAME_COLON);\n\n S_HASH_NAME_COLON.on(TT.DOMAIN, S_HASH_NAME_COLON_DOMAIN);\n S_HASH_NAME_COLON.on(TT.LOCALHOST, S_ROOMALIAS); // accept #foo:localhost\n S_HASH_NAME_COLON.on(TT.TLD, S_ROOMALIAS); // accept #foo:com (mostly for (TLD|DOMAIN)+ mixing)\n S_HASH_NAME_COLON_DOMAIN.on(TT.DOT, S_HASH_NAME_COLON_DOMAIN_DOT);\n S_HASH_NAME_COLON_DOMAIN_DOT.on(TT.DOMAIN, S_HASH_NAME_COLON_DOMAIN);\n S_HASH_NAME_COLON_DOMAIN_DOT.on(TT.TLD, S_ROOMALIAS);\n\n S_ROOMALIAS.on(TT.DOT, S_HASH_NAME_COLON_DOMAIN_DOT); // accept repeated TLDs (e.g .org.uk)\n S_ROOMALIAS.on(TT.COLON, S_ROOMALIAS_COLON); // do not accept trailing `:`\n S_ROOMALIAS_COLON.on(TT.NUM, S_ROOMALIAS_COLON_NUM); // but do accept :NUM (port specifier)\n\n\n var USERID = function USERID(value) {\n MultiToken.call(this, value);\n this.type = 'userid';\n this.isLink = true;\n };\n USERID.prototype = new MultiToken();\n\n var S_AT = S_START.jump(TT.AT);\n var S_AT_NAME = new linkify.parser.State();\n var S_AT_NAME_COLON = new linkify.parser.State();\n var S_AT_NAME_COLON_DOMAIN = new linkify.parser.State();\n var S_AT_NAME_COLON_DOMAIN_DOT = new linkify.parser.State();\n var S_USERID = new linkify.parser.State(USERID);\n var S_USERID_COLON = new linkify.parser.State();\n var S_USERID_COLON_NUM = new linkify.parser.State(USERID);\n\n var usernameTokens = [TT.DOT, TT.UNDERSCORE, TT.PLUS, TT.NUM, TT.DOMAIN, TT.TLD,\n\n // as in roomnameTokens\n TT.LOCALHOST];\n\n S_AT.on(usernameTokens, S_AT_NAME);\n S_AT_NAME.on(usernameTokens, S_AT_NAME);\n S_AT_NAME.on(TT.DOMAIN, S_AT_NAME);\n\n S_AT_NAME.on(TT.COLON, S_AT_NAME_COLON);\n\n S_AT_NAME_COLON.on(TT.DOMAIN, S_AT_NAME_COLON_DOMAIN);\n S_AT_NAME_COLON.on(TT.LOCALHOST, S_USERID); // accept @foo:localhost\n S_AT_NAME_COLON.on(TT.TLD, S_USERID); // accept @foo:com (mostly for (TLD|DOMAIN)+ mixing)\n S_AT_NAME_COLON_DOMAIN.on(TT.DOT, S_AT_NAME_COLON_DOMAIN_DOT);\n S_AT_NAME_COLON_DOMAIN_DOT.on(TT.DOMAIN, S_AT_NAME_COLON_DOMAIN);\n S_AT_NAME_COLON_DOMAIN_DOT.on(TT.TLD, S_USERID);\n\n S_USERID.on(TT.DOT, S_AT_NAME_COLON_DOMAIN_DOT); // accept repeated TLDs (e.g .org.uk)\n S_USERID.on(TT.COLON, S_USERID_COLON); // do not accept trailing `:`\n S_USERID_COLON.on(TT.NUM, S_USERID_COLON_NUM); // but do accept :NUM (port specifier)\n\n\n var GROUPID = function GROUPID(value) {\n MultiToken.call(this, value);\n this.type = 'groupid';\n this.isLink = true;\n };\n GROUPID.prototype = new MultiToken();\n\n var S_PLUS = S_START.jump(TT.PLUS);\n var S_PLUS_NAME = new linkify.parser.State();\n var S_PLUS_NAME_COLON = new linkify.parser.State();\n var S_PLUS_NAME_COLON_DOMAIN = new linkify.parser.State();\n var S_PLUS_NAME_COLON_DOMAIN_DOT = new linkify.parser.State();\n var S_GROUPID = new linkify.parser.State(GROUPID);\n var S_GROUPID_COLON = new linkify.parser.State();\n var S_GROUPID_COLON_NUM = new linkify.parser.State(GROUPID);\n\n var groupIdTokens = [TT.DOT, TT.UNDERSCORE, TT.PLUS, TT.NUM, TT.DOMAIN, TT.TLD,\n\n // as in roomnameTokens\n TT.LOCALHOST];\n\n S_PLUS.on(groupIdTokens, S_PLUS_NAME);\n S_PLUS_NAME.on(groupIdTokens, S_PLUS_NAME);\n S_PLUS_NAME.on(TT.DOMAIN, S_PLUS_NAME);\n\n S_PLUS_NAME.on(TT.COLON, S_PLUS_NAME_COLON);\n\n S_PLUS_NAME_COLON.on(TT.DOMAIN, S_PLUS_NAME_COLON_DOMAIN);\n S_PLUS_NAME_COLON.on(TT.LOCALHOST, S_GROUPID); // accept +foo:localhost\n S_PLUS_NAME_COLON.on(TT.TLD, S_GROUPID); // accept +foo:com (mostly for (TLD|DOMAIN)+ mixing)\n S_PLUS_NAME_COLON_DOMAIN.on(TT.DOT, S_PLUS_NAME_COLON_DOMAIN_DOT);\n S_PLUS_NAME_COLON_DOMAIN_DOT.on(TT.DOMAIN, S_PLUS_NAME_COLON_DOMAIN);\n S_PLUS_NAME_COLON_DOMAIN_DOT.on(TT.TLD, S_GROUPID);\n\n S_GROUPID.on(TT.DOT, S_PLUS_NAME_COLON_DOMAIN_DOT); // accept repeated TLDs (e.g .org.uk)\n S_GROUPID.on(TT.COLON, S_GROUPID_COLON); // do not accept trailing `:`\n S_GROUPID_COLON.on(TT.NUM, S_GROUPID_COLON_NUM); // but do accept :NUM (port specifier)\n}\n\n// stubs, overwritten in MatrixChat's componentDidMount\nmatrixLinkify.onUserClick = function (e, userId) {\n e.preventDefault();\n};\nmatrixLinkify.onAliasClick = function (e, roomAlias) {\n e.preventDefault();\n};\nmatrixLinkify.onGroupClick = function (e, groupId) {\n e.preventDefault();\n};\n\nvar escapeRegExp = function escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n};\n\n// Recognise URLs from both our local vector and official vector as vector.\n// anyone else really should be using matrix.to.\nmatrixLinkify.VECTOR_URL_PATTERN = \"^(?:https?://)?(?:\" + escapeRegExp(window.location.host + window.location.pathname) + \"|\" + \"(?:www\\\\.)?(?:riot|vector)\\\\.im/(?:app|beta|staging|develop)/\" + \")(#.*)\";\n\nmatrixLinkify.MATRIXTO_URL_PATTERN = \"^(?:https?://)?(?:www\\\\.)?matrix\\\\.to/#/(([#@!+]).*)\";\nmatrixLinkify.MATRIXTO_MD_LINK_PATTERN = '\\\\[([^\\\\]]*)\\\\]\\\\((?:https?://)?(?:www\\\\.)?matrix\\\\.to/#/([#@!+][^\\\\)]*)\\\\)';\nmatrixLinkify.MATRIXTO_BASE_URL = _SpecPermalinkConstructor.baseUrl;\n\nmatrixLinkify.options = {\n events: function events(href, type) {\n switch (type) {\n case \"userid\":\n return {\n click: function click(e) {\n matrixLinkify.onUserClick(e, href);\n }\n };\n case \"roomalias\":\n return {\n click: function click(e) {\n matrixLinkify.onAliasClick(e, href);\n }\n };\n case \"groupid\":\n return {\n click: function click(e) {\n matrixLinkify.onGroupClick(e, href);\n }\n };\n }\n },\n\n formatHref: function formatHref(href, type) {\n switch (type) {\n case 'roomalias':\n case 'userid':\n case 'groupid':\n default:\n {\n return (0, _Permalinks.tryTransformPermalinkToLocalHref)(href);\n }\n }\n },\n\n linkAttributes: {\n rel: 'noopener'\n },\n\n target: function target(href, type) {\n if (type === 'url') {\n var transformed = (0, _Permalinks.tryTransformPermalinkToLocalHref)(href);\n if (transformed !== href || href.match(matrixLinkify.VECTOR_URL_PATTERN)) {\n return null;\n } else {\n return '_blank';\n }\n }\n return null;\n }\n};\n\nmodule.exports = matrixLinkify;\n//# sourceMappingURL=linkify-matrix.js.map","var hljs = require('./highlight');\n\nhljs.registerLanguage('1c', require('./languages/1c'));\nhljs.registerLanguage('abnf', require('./languages/abnf'));\nhljs.registerLanguage('accesslog', require('./languages/accesslog'));\nhljs.registerLanguage('actionscript', require('./languages/actionscript'));\nhljs.registerLanguage('ada', require('./languages/ada'));\nhljs.registerLanguage('angelscript', require('./languages/angelscript'));\nhljs.registerLanguage('apache', require('./languages/apache'));\nhljs.registerLanguage('applescript', require('./languages/applescript'));\nhljs.registerLanguage('arcade', require('./languages/arcade'));\nhljs.registerLanguage('cpp', require('./languages/cpp'));\nhljs.registerLanguage('arduino', require('./languages/arduino'));\nhljs.registerLanguage('armasm', require('./languages/armasm'));\nhljs.registerLanguage('xml', require('./languages/xml'));\nhljs.registerLanguage('asciidoc', require('./languages/asciidoc'));\nhljs.registerLanguage('aspectj', require('./languages/aspectj'));\nhljs.registerLanguage('autohotkey', require('./languages/autohotkey'));\nhljs.registerLanguage('autoit', require('./languages/autoit'));\nhljs.registerLanguage('avrasm', require('./languages/avrasm'));\nhljs.registerLanguage('awk', require('./languages/awk'));\nhljs.registerLanguage('axapta', require('./languages/axapta'));\nhljs.registerLanguage('bash', require('./languages/bash'));\nhljs.registerLanguage('basic', require('./languages/basic'));\nhljs.registerLanguage('bnf', require('./languages/bnf'));\nhljs.registerLanguage('brainfuck', require('./languages/brainfuck'));\nhljs.registerLanguage('cal', require('./languages/cal'));\nhljs.registerLanguage('capnproto', require('./languages/capnproto'));\nhljs.registerLanguage('ceylon', require('./languages/ceylon'));\nhljs.registerLanguage('clean', require('./languages/clean'));\nhljs.registerLanguage('clojure', require('./languages/clojure'));\nhljs.registerLanguage('clojure-repl', require('./languages/clojure-repl'));\nhljs.registerLanguage('cmake', require('./languages/cmake'));\nhljs.registerLanguage('coffeescript', require('./languages/coffeescript'));\nhljs.registerLanguage('coq', require('./languages/coq'));\nhljs.registerLanguage('cos', require('./languages/cos'));\nhljs.registerLanguage('crmsh', require('./languages/crmsh'));\nhljs.registerLanguage('crystal', require('./languages/crystal'));\nhljs.registerLanguage('cs', require('./languages/cs'));\nhljs.registerLanguage('csp', require('./languages/csp'));\nhljs.registerLanguage('css', require('./languages/css'));\nhljs.registerLanguage('d', require('./languages/d'));\nhljs.registerLanguage('markdown', require('./languages/markdown'));\nhljs.registerLanguage('dart', require('./languages/dart'));\nhljs.registerLanguage('delphi', require('./languages/delphi'));\nhljs.registerLanguage('diff', require('./languages/diff'));\nhljs.registerLanguage('django', require('./languages/django'));\nhljs.registerLanguage('dns', require('./languages/dns'));\nhljs.registerLanguage('dockerfile', require('./languages/dockerfile'));\nhljs.registerLanguage('dos', require('./languages/dos'));\nhljs.registerLanguage('dsconfig', require('./languages/dsconfig'));\nhljs.registerLanguage('dts', require('./languages/dts'));\nhljs.registerLanguage('dust', require('./languages/dust'));\nhljs.registerLanguage('ebnf', require('./languages/ebnf'));\nhljs.registerLanguage('elixir', require('./languages/elixir'));\nhljs.registerLanguage('elm', require('./languages/elm'));\nhljs.registerLanguage('ruby', require('./languages/ruby'));\nhljs.registerLanguage('erb', require('./languages/erb'));\nhljs.registerLanguage('erlang-repl', require('./languages/erlang-repl'));\nhljs.registerLanguage('erlang', require('./languages/erlang'));\nhljs.registerLanguage('excel', require('./languages/excel'));\nhljs.registerLanguage('fix', require('./languages/fix'));\nhljs.registerLanguage('flix', require('./languages/flix'));\nhljs.registerLanguage('fortran', require('./languages/fortran'));\nhljs.registerLanguage('fsharp', require('./languages/fsharp'));\nhljs.registerLanguage('gams', require('./languages/gams'));\nhljs.registerLanguage('gauss', require('./languages/gauss'));\nhljs.registerLanguage('gcode', require('./languages/gcode'));\nhljs.registerLanguage('gherkin', require('./languages/gherkin'));\nhljs.registerLanguage('glsl', require('./languages/glsl'));\nhljs.registerLanguage('gml', require('./languages/gml'));\nhljs.registerLanguage('go', require('./languages/go'));\nhljs.registerLanguage('golo', require('./languages/golo'));\nhljs.registerLanguage('gradle', require('./languages/gradle'));\nhljs.registerLanguage('groovy', require('./languages/groovy'));\nhljs.registerLanguage('haml', require('./languages/haml'));\nhljs.registerLanguage('handlebars', require('./languages/handlebars'));\nhljs.registerLanguage('haskell', require('./languages/haskell'));\nhljs.registerLanguage('haxe', require('./languages/haxe'));\nhljs.registerLanguage('hsp', require('./languages/hsp'));\nhljs.registerLanguage('htmlbars', require('./languages/htmlbars'));\nhljs.registerLanguage('http', require('./languages/http'));\nhljs.registerLanguage('hy', require('./languages/hy'));\nhljs.registerLanguage('inform7', require('./languages/inform7'));\nhljs.registerLanguage('ini', require('./languages/ini'));\nhljs.registerLanguage('irpf90', require('./languages/irpf90'));\nhljs.registerLanguage('isbl', require('./languages/isbl'));\nhljs.registerLanguage('java', require('./languages/java'));\nhljs.registerLanguage('javascript', require('./languages/javascript'));\nhljs.registerLanguage('jboss-cli', require('./languages/jboss-cli'));\nhljs.registerLanguage('json', require('./languages/json'));\nhljs.registerLanguage('julia', require('./languages/julia'));\nhljs.registerLanguage('julia-repl', require('./languages/julia-repl'));\nhljs.registerLanguage('kotlin', require('./languages/kotlin'));\nhljs.registerLanguage('lasso', require('./languages/lasso'));\nhljs.registerLanguage('ldif', require('./languages/ldif'));\nhljs.registerLanguage('leaf', require('./languages/leaf'));\nhljs.registerLanguage('less', require('./languages/less'));\nhljs.registerLanguage('lisp', require('./languages/lisp'));\nhljs.registerLanguage('livecodeserver', require('./languages/livecodeserver'));\nhljs.registerLanguage('livescript', require('./languages/livescript'));\nhljs.registerLanguage('llvm', require('./languages/llvm'));\nhljs.registerLanguage('lsl', require('./languages/lsl'));\nhljs.registerLanguage('lua', require('./languages/lua'));\nhljs.registerLanguage('makefile', require('./languages/makefile'));\nhljs.registerLanguage('mathematica', require('./languages/mathematica'));\nhljs.registerLanguage('matlab', require('./languages/matlab'));\nhljs.registerLanguage('maxima', require('./languages/maxima'));\nhljs.registerLanguage('mel', require('./languages/mel'));\nhljs.registerLanguage('mercury', require('./languages/mercury'));\nhljs.registerLanguage('mipsasm', require('./languages/mipsasm'));\nhljs.registerLanguage('mizar', require('./languages/mizar'));\nhljs.registerLanguage('perl', require('./languages/perl'));\nhljs.registerLanguage('mojolicious', require('./languages/mojolicious'));\nhljs.registerLanguage('monkey', require('./languages/monkey'));\nhljs.registerLanguage('moonscript', require('./languages/moonscript'));\nhljs.registerLanguage('n1ql', require('./languages/n1ql'));\nhljs.registerLanguage('nginx', require('./languages/nginx'));\nhljs.registerLanguage('nimrod', require('./languages/nimrod'));\nhljs.registerLanguage('nix', require('./languages/nix'));\nhljs.registerLanguage('nsis', require('./languages/nsis'));\nhljs.registerLanguage('objectivec', require('./languages/objectivec'));\nhljs.registerLanguage('ocaml', require('./languages/ocaml'));\nhljs.registerLanguage('openscad', require('./languages/openscad'));\nhljs.registerLanguage('oxygene', require('./languages/oxygene'));\nhljs.registerLanguage('parser3', require('./languages/parser3'));\nhljs.registerLanguage('pf', require('./languages/pf'));\nhljs.registerLanguage('pgsql', require('./languages/pgsql'));\nhljs.registerLanguage('php', require('./languages/php'));\nhljs.registerLanguage('plaintext', require('./languages/plaintext'));\nhljs.registerLanguage('pony', require('./languages/pony'));\nhljs.registerLanguage('powershell', require('./languages/powershell'));\nhljs.registerLanguage('processing', require('./languages/processing'));\nhljs.registerLanguage('profile', require('./languages/profile'));\nhljs.registerLanguage('prolog', require('./languages/prolog'));\nhljs.registerLanguage('properties', require('./languages/properties'));\nhljs.registerLanguage('protobuf', require('./languages/protobuf'));\nhljs.registerLanguage('puppet', require('./languages/puppet'));\nhljs.registerLanguage('purebasic', require('./languages/purebasic'));\nhljs.registerLanguage('python', require('./languages/python'));\nhljs.registerLanguage('q', require('./languages/q'));\nhljs.registerLanguage('qml', require('./languages/qml'));\nhljs.registerLanguage('r', require('./languages/r'));\nhljs.registerLanguage('reasonml', require('./languages/reasonml'));\nhljs.registerLanguage('rib', require('./languages/rib'));\nhljs.registerLanguage('roboconf', require('./languages/roboconf'));\nhljs.registerLanguage('routeros', require('./languages/routeros'));\nhljs.registerLanguage('rsl', require('./languages/rsl'));\nhljs.registerLanguage('ruleslanguage', require('./languages/ruleslanguage'));\nhljs.registerLanguage('rust', require('./languages/rust'));\nhljs.registerLanguage('sas', require('./languages/sas'));\nhljs.registerLanguage('scala', require('./languages/scala'));\nhljs.registerLanguage('scheme', require('./languages/scheme'));\nhljs.registerLanguage('scilab', require('./languages/scilab'));\nhljs.registerLanguage('scss', require('./languages/scss'));\nhljs.registerLanguage('shell', require('./languages/shell'));\nhljs.registerLanguage('smali', require('./languages/smali'));\nhljs.registerLanguage('smalltalk', require('./languages/smalltalk'));\nhljs.registerLanguage('sml', require('./languages/sml'));\nhljs.registerLanguage('sqf', require('./languages/sqf'));\nhljs.registerLanguage('sql', require('./languages/sql'));\nhljs.registerLanguage('stan', require('./languages/stan'));\nhljs.registerLanguage('stata', require('./languages/stata'));\nhljs.registerLanguage('step21', require('./languages/step21'));\nhljs.registerLanguage('stylus', require('./languages/stylus'));\nhljs.registerLanguage('subunit', require('./languages/subunit'));\nhljs.registerLanguage('swift', require('./languages/swift'));\nhljs.registerLanguage('taggerscript', require('./languages/taggerscript'));\nhljs.registerLanguage('yaml', require('./languages/yaml'));\nhljs.registerLanguage('tap', require('./languages/tap'));\nhljs.registerLanguage('tcl', require('./languages/tcl'));\nhljs.registerLanguage('tex', require('./languages/tex'));\nhljs.registerLanguage('thrift', require('./languages/thrift'));\nhljs.registerLanguage('tp', require('./languages/tp'));\nhljs.registerLanguage('twig', require('./languages/twig'));\nhljs.registerLanguage('typescript', require('./languages/typescript'));\nhljs.registerLanguage('vala', require('./languages/vala'));\nhljs.registerLanguage('vbnet', require('./languages/vbnet'));\nhljs.registerLanguage('vbscript', require('./languages/vbscript'));\nhljs.registerLanguage('vbscript-html', require('./languages/vbscript-html'));\nhljs.registerLanguage('verilog', require('./languages/verilog'));\nhljs.registerLanguage('vhdl', require('./languages/vhdl'));\nhljs.registerLanguage('vim', require('./languages/vim'));\nhljs.registerLanguage('x86asm', require('./languages/x86asm'));\nhljs.registerLanguage('xl', require('./languages/xl'));\nhljs.registerLanguage('xquery', require('./languages/xquery'));\nhljs.registerLanguage('zephir', require('./languages/zephir'));\n\nmodule.exports = hljs;","'use strict';\n\nexports.__esModule = true;\nexports.tokenize = exports.test = exports.scanner = exports.parser = exports.options = exports.inherits = exports.find = undefined;\n\nvar _class = require('./linkify/utils/class');\n\nvar _options = require('./linkify/utils/options');\n\nvar options = _interopRequireWildcard(_options);\n\nvar _scanner = require('./linkify/core/scanner');\n\nvar scanner = _interopRequireWildcard(_scanner);\n\nvar _parser = require('./linkify/core/parser');\n\nvar parser = _interopRequireWildcard(_parser);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nif (!Array.isArray) {\n\tArray.isArray = function (arg) {\n\t\treturn Object.prototype.toString.call(arg) === '[object Array]';\n\t};\n}\n\n/**\n\tConverts a string into tokens that represent linkable and non-linkable bits\n\t@method tokenize\n\t@param {String} str\n\t@return {Array} tokens\n*/\nvar tokenize = function tokenize(str) {\n\treturn parser.run(scanner.run(str));\n};\n\n/**\n\tReturns a list of linkable items in the given string.\n*/\nvar find = function find(str) {\n\tvar type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\tvar tokens = tokenize(str);\n\tvar filtered = [];\n\n\tfor (var i = 0; i < tokens.length; i++) {\n\t\tvar token = tokens[i];\n\t\tif (token.isLink && (!type || token.type === type)) {\n\t\t\tfiltered.push(token.toObject());\n\t\t}\n\t}\n\n\treturn filtered;\n};\n\n/**\n\tIs the given string valid linkable text of some sort\n\tNote that this does not trim the text for you.\n\n\tOptionally pass in a second `type` param, which is the type of link to test\n\tfor.\n\n\tFor example,\n\n\t\ttest(str, 'email');\n\n\tWill return `true` if str is a valid email.\n*/\nvar test = function test(str) {\n\tvar type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\tvar tokens = tokenize(str);\n\treturn tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].type === type);\n};\n\n// Scanner and parser provide states and tokens for the lexicographic stage\n// (will be used to add additional link types)\nexports.find = find;\nexports.inherits = _class.inherits;\nexports.options = options;\nexports.parser = parser;\nexports.scanner = scanner;\nexports.test = test;\nexports.tokenize = tokenize;","'use strict';\n\nexports.__esModule = true;\nexports.AMPERSAND = exports.CLOSEPAREN = exports.CLOSEANGLEBRACKET = exports.CLOSEBRACKET = exports.CLOSEBRACE = exports.OPENPAREN = exports.OPENANGLEBRACKET = exports.OPENBRACKET = exports.OPENBRACE = exports.WS = exports.TLD = exports.SYM = exports.UNDERSCORE = exports.SLASH = exports.MAILTO = exports.PROTOCOL = exports.QUERY = exports.POUND = exports.PLUS = exports.NUM = exports.NL = exports.LOCALHOST = exports.PUNCTUATION = exports.DOT = exports.COLON = exports.AT = exports.DOMAIN = exports.Base = undefined;\n\nvar _createTokenClass = require('./create-token-class');\n\nvar _class = require('../../utils/class');\n\n/******************************************************************************\n\tText Tokens\n\tTokens composed of strings\n******************************************************************************/\n\n/**\n\tAbstract class used for manufacturing text tokens.\n\tPass in the value this token represents\n\n\t@class TextToken\n\t@abstract\n*/\nvar TextToken = (0, _createTokenClass.createTokenClass)();\nTextToken.prototype = {\n\ttoString: function toString() {\n\t\treturn this.v + '';\n\t}\n};\n\nfunction inheritsToken(value) {\n\tvar props = value ? { v: value } : {};\n\treturn (0, _class.inherits)(TextToken, (0, _createTokenClass.createTokenClass)(), props);\n}\n\n/**\n\tA valid domain token\n\t@class DOMAIN\n\t@extends TextToken\n*/\nvar DOMAIN = inheritsToken();\n\n/**\n\t@class AT\n\t@extends TextToken\n*/\nvar AT = inheritsToken('@');\n\n/**\n\tRepresents a single colon `:` character\n\n\t@class COLON\n\t@extends TextToken\n*/\nvar COLON = inheritsToken(':');\n\n/**\n\t@class DOT\n\t@extends TextToken\n*/\nvar DOT = inheritsToken('.');\n\n/**\n\tA character class that can surround the URL, but which the URL cannot begin\n\tor end with. Does not include certain English punctuation like parentheses.\n\n\t@class PUNCTUATION\n\t@extends TextToken\n*/\nvar PUNCTUATION = inheritsToken();\n\n/**\n\tThe word localhost (by itself)\n\t@class LOCALHOST\n\t@extends TextToken\n*/\nvar LOCALHOST = inheritsToken();\n\n/**\n\tNewline token\n\t@class NL\n\t@extends TextToken\n*/\nvar NL = inheritsToken('\\n');\n\n/**\n\t@class NUM\n\t@extends TextToken\n*/\nvar NUM = inheritsToken();\n\n/**\n\t@class PLUS\n\t@extends TextToken\n*/\nvar PLUS = inheritsToken('+');\n\n/**\n\t@class POUND\n\t@extends TextToken\n*/\nvar POUND = inheritsToken('#');\n\n/**\n\tRepresents a web URL protocol. Supported types include\n\n\t* `http:`\n\t* `https:`\n\t* `ftp:`\n\t* `ftps:`\n\n\t@class PROTOCOL\n\t@extends TextToken\n*/\nvar PROTOCOL = inheritsToken();\n\n/**\n\tRepresents the start of the email URI protocol\n\n\t@class MAILTO\n\t@extends TextToken\n*/\nvar MAILTO = inheritsToken('mailto:');\n\n/**\n\t@class QUERY\n\t@extends TextToken\n*/\nvar QUERY = inheritsToken('?');\n\n/**\n\t@class SLASH\n\t@extends TextToken\n*/\nvar SLASH = inheritsToken('/');\n\n/**\n\t@class UNDERSCORE\n\t@extends TextToken\n*/\nvar UNDERSCORE = inheritsToken('_');\n\n/**\n\tOne ore more non-whitespace symbol.\n\t@class SYM\n\t@extends TextToken\n*/\nvar SYM = inheritsToken();\n\n/**\n\t@class TLD\n\t@extends TextToken\n*/\nvar TLD = inheritsToken();\n\n/**\n\tRepresents a string of consecutive whitespace characters\n\n\t@class WS\n\t@extends TextToken\n*/\nvar WS = inheritsToken();\n\n/**\n\tOpening/closing bracket classes\n*/\n\nvar OPENBRACE = inheritsToken('{');\nvar OPENBRACKET = inheritsToken('[');\nvar OPENANGLEBRACKET = inheritsToken('<');\nvar OPENPAREN = inheritsToken('(');\nvar CLOSEBRACE = inheritsToken('}');\nvar CLOSEBRACKET = inheritsToken(']');\nvar CLOSEANGLEBRACKET = inheritsToken('>');\nvar CLOSEPAREN = inheritsToken(')');\n\nvar AMPERSAND = inheritsToken('&');\n\nexports.Base = TextToken;\nexports.DOMAIN = DOMAIN;\nexports.AT = AT;\nexports.COLON = COLON;\nexports.DOT = DOT;\nexports.PUNCTUATION = PUNCTUATION;\nexports.LOCALHOST = LOCALHOST;\nexports.NL = NL;\nexports.NUM = NUM;\nexports.PLUS = PLUS;\nexports.POUND = POUND;\nexports.QUERY = QUERY;\nexports.PROTOCOL = PROTOCOL;\nexports.MAILTO = MAILTO;\nexports.SLASH = SLASH;\nexports.UNDERSCORE = UNDERSCORE;\nexports.SYM = SYM;\nexports.TLD = TLD;\nexports.WS = WS;\nexports.OPENBRACE = OPENBRACE;\nexports.OPENBRACKET = OPENBRACKET;\nexports.OPENANGLEBRACKET = OPENANGLEBRACKET;\nexports.OPENPAREN = OPENPAREN;\nexports.CLOSEBRACE = CLOSEBRACE;\nexports.CLOSEBRACKET = CLOSEBRACKET;\nexports.CLOSEANGLEBRACKET = CLOSEANGLEBRACKET;\nexports.CLOSEPAREN = CLOSEPAREN;\nexports.AMPERSAND = AMPERSAND;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _Analytics = require('../../../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar HeaderButton = function (_React$Component) {\n (0, _inherits3.default)(HeaderButton, _React$Component);\n\n function HeaderButton() {\n (0, _classCallCheck3.default)(this, HeaderButton);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (HeaderButton.__proto__ || (0, _getPrototypeOf2.default)(HeaderButton)).call(this));\n\n _this.onClick = _this.onClick.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(HeaderButton, [{\n key: 'onClick',\n value: function onClick(ev) {\n _Analytics2.default.trackEvent.apply(_Analytics2.default, (0, _toConsumableArray3.default)(this.props.analytics));\n this.props.onClick();\n }\n }, {\n key: 'render',\n value: function render() {\n var classes = (0, _classnames2.default)((0, _defineProperty3.default)({\n mx_RightPanel_headerButton: true,\n mx_RightPanel_headerButton_highlight: this.props.isHighlighted\n }, 'mx_RightPanel_' + this.props.name, true));\n\n return _react2.default.createElement(_AccessibleButton2.default, {\n 'aria-selected': this.props.isHighlighted,\n role: 'tab',\n title: this.props.title,\n className: classes,\n onClick: this.onClick });\n }\n }]);\n return HeaderButton;\n}(_react2.default.Component); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n Copyright 2017 New Vector Ltd\n Copyright 2018 New Vector Ltd\n Copyright 2019 The Matrix.org Foundation C.I.C.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = HeaderButton;\n\n\nHeaderButton.propTypes = {\n // Whether this button is highlighted\n isHighlighted: _propTypes2.default.bool.isRequired,\n // click handler\n onClick: _propTypes2.default.func.isRequired,\n // The badge to display above the icon\n badge: _propTypes2.default.node,\n // The parameters to track the click event\n analytics: _propTypes2.default.arrayOf(_propTypes2.default.string).isRequired,\n\n // Button name\n name: _propTypes2.default.string.isRequired,\n // Button title\n title: _propTypes2.default.string.isRequired\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=HeaderButton.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar HeaderButtons = function (_React$Component) {\n (0, _inherits3.default)(HeaderButtons, _React$Component);\n\n function HeaderButtons(props, initialPhase) {\n (0, _classCallCheck3.default)(this, HeaderButtons);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (HeaderButtons.__proto__ || (0, _getPrototypeOf2.default)(HeaderButtons)).call(this, props));\n\n _this.state = {\n phase: props.collapsedRhs ? null : initialPhase,\n isUserPrivilegedInGroup: null\n };\n _this.onAction = _this.onAction.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(HeaderButtons, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _dispatcher2.default.unregister(this.dispatcherRef);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (!prevProps.collapsedRhs && this.props.collapsedRhs) {\n this.setState({\n phase: null\n });\n }\n }\n }, {\n key: 'setPhase',\n value: function setPhase(phase, extras) {\n if (this.props.collapsedRhs) {\n _dispatcher2.default.dispatch({\n action: 'show_right_panel'\n });\n }\n _dispatcher2.default.dispatch((0, _assign2.default)({\n action: 'view_right_panel_phase',\n phase: phase\n }, extras));\n }\n }, {\n key: 'togglePhase',\n value: function togglePhase(phase) {\n var validPhases = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [phase];\n\n if (validPhases.includes(this.state.phase)) {\n _dispatcher2.default.dispatch({\n action: 'hide_right_panel'\n });\n } else {\n this.setPhase(phase);\n }\n }\n }, {\n key: 'isPhase',\n value: function isPhase(phases) {\n if (this.props.collapsedRhs) {\n return false;\n }\n if (Array.isArray(phases)) {\n return phases.includes(this.state.phase);\n } else {\n return phases === this.state.phase;\n }\n }\n }, {\n key: 'onAction',\n value: function onAction(payload) {\n if (payload.action === \"view_right_panel_phase\") {\n this.setState({\n phase: payload.phase\n });\n }\n }\n }, {\n key: 'render',\n value: function render() {\n // inline style as this will be swapped around in future commits\n return _react2.default.createElement(\n 'div',\n { className: 'mx_HeaderButtons', role: 'tablist' },\n this.renderButtons()\n );\n }\n }]);\n return HeaderButtons;\n}(_react2.default.Component); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n Copyright 2017 New Vector Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = HeaderButtons;\n\n\nHeaderButtons.propTypes = {\n collapsedRhs: _propTypes2.default.bool\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=HeaderButtons.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _ResizeHandle = require('../views/elements/ResizeHandle');\n\nvar _ResizeHandle2 = _interopRequireDefault(_ResizeHandle);\n\nvar _resizer = require('../../resizer');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MainSplit = function (_React$Component) {\n (0, _inherits3.default)(MainSplit, _React$Component);\n\n function MainSplit(props) {\n (0, _classCallCheck3.default)(this, MainSplit);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (MainSplit.__proto__ || (0, _getPrototypeOf2.default)(MainSplit)).call(this, props));\n\n _this._setResizeContainerRef = _this._setResizeContainerRef.bind(_this);\n _this._onResized = _this._onResized.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(MainSplit, [{\n key: '_onResized',\n value: function _onResized(size) {\n window.localStorage.setItem(\"mx_rhs_size\", size);\n if (this.props.resizeNotifier) {\n this.props.resizeNotifier.notifyRightHandleResized();\n }\n }\n }, {\n key: '_createResizer',\n value: function _createResizer() {\n var classNames = {\n handle: \"mx_ResizeHandle\",\n vertical: \"mx_ResizeHandle_vertical\",\n reverse: \"mx_ResizeHandle_reverse\"\n };\n var resizer = new _resizer.Resizer(this.resizeContainer, _resizer.FixedDistributor, { onResized: this._onResized });\n resizer.setClassNames(classNames);\n var rhsSize = window.localStorage.getItem(\"mx_rhs_size\");\n if (rhsSize !== null) {\n rhsSize = parseInt(rhsSize, 10);\n } else {\n rhsSize = 350;\n }\n resizer.forHandleAt(0).resize(rhsSize);\n\n resizer.attach();\n this.resizer = resizer;\n }\n }, {\n key: '_setResizeContainerRef',\n value: function _setResizeContainerRef(div) {\n this.resizeContainer = div;\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (this.props.panel && !this.props.collapsedRhs) {\n this._createResizer();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this.resizer) {\n this.resizer.detach();\n this.resizer = null;\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n var wasExpanded = !this.props.collapsedRhs && prevProps.collapsedRhs;\n var wasCollapsed = this.props.collapsedRhs && !prevProps.collapsedRhs;\n var wasPanelSet = this.props.panel && !prevProps.panel;\n var wasPanelCleared = !this.props.panel && prevProps.panel;\n\n if (wasExpanded || wasPanelSet) {\n this._createResizer();\n } else if (wasCollapsed || wasPanelCleared) {\n this.resizer.detach();\n this.resizer = null;\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var bodyView = _react2.default.Children.only(this.props.children);\n var panelView = this.props.panel;\n\n if (this.props.collapsedRhs || !panelView) {\n return bodyView;\n } else {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MainSplit', ref: this._setResizeContainerRef },\n bodyView,\n _react2.default.createElement(_ResizeHandle2.default, { reverse: true }),\n panelView\n );\n }\n }\n }]);\n return MainSplit;\n}(_react2.default.Component); /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = MainSplit;\nmodule.exports = exports['default'];\n//# sourceMappingURL=MainSplit.js.map","\"use strict\";\n\nvar _fixed = require(\"./distributors/fixed\");\n\nvar _fixed2 = _interopRequireDefault(_fixed);\n\nvar _collapse = require(\"./distributors/collapse\");\n\nvar _collapse2 = _interopRequireDefault(_collapse);\n\nvar _roomsublist = require(\"./distributors/roomsublist\");\n\nvar _roomsublist2 = _interopRequireDefault(_roomsublist);\n\nvar _resizer = require(\"./resizer\");\n\nvar _resizer2 = _interopRequireDefault(_resizer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = {\n Resizer: _resizer2.default,\n FixedDistributor: _fixed2.default,\n CollapseDistributor: _collapse2.default,\n RoomSubListDistributor: _roomsublist2.default\n};\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _item = require(\"../item\");\n\nvar _item2 = _interopRequireDefault(_item);\n\nvar _sizer = require(\"../sizer\");\n\nvar _sizer2 = _interopRequireDefault(_sizer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\ndistributors translate a moving cursor into\nCSS/DOM changes by calling the sizer\n\nthey have two methods:\n `resize` receives then new item size\n `resizeFromContainerOffset` receives resize handle location\n within the container bounding box. For internal use.\n This method usually ends up calling `resize` once the start offset is subtracted.\n*/\n/*\nCopyright 2019 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar FixedDistributor = function () {\n (0, _createClass3.default)(FixedDistributor, null, [{\n key: \"createItem\",\n value: function createItem(resizeHandle, resizer, sizer) {\n return new _item2.default(resizeHandle, resizer, sizer);\n }\n }, {\n key: \"createSizer\",\n value: function createSizer(containerElement, vertical, reverse) {\n return new _sizer2.default(containerElement, vertical, reverse);\n }\n }]);\n\n function FixedDistributor(item) {\n (0, _classCallCheck3.default)(this, FixedDistributor);\n\n this.item = item;\n this.beforeOffset = item.offset();\n }\n\n (0, _createClass3.default)(FixedDistributor, [{\n key: \"resize\",\n value: function resize(size) {\n this.item.setSize(size);\n }\n }, {\n key: \"resizeFromContainerOffset\",\n value: function resizeFromContainerOffset(offset) {\n this.resize(offset - this.beforeOffset);\n }\n }, {\n key: \"start\",\n value: function start() {}\n }, {\n key: \"finish\",\n value: function finish() {}\n }]);\n return FixedDistributor;\n}();\n\nexports.default = FixedDistributor;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=fixed.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _from = require(\"babel-runtime/core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar ResizeItem = function () {\n function ResizeItem(handle, resizer, sizer) {\n (0, _classCallCheck3.default)(this, ResizeItem);\n\n var id = handle.getAttribute(\"data-id\");\n var reverse = resizer.isReverseResizeHandle(handle);\n var domNode = reverse ? handle.nextElementSibling : handle.previousElementSibling;\n\n this.domNode = domNode;\n this.id = id;\n this.reverse = reverse;\n this.resizer = resizer;\n this.sizer = sizer;\n }\n\n (0, _createClass3.default)(ResizeItem, [{\n key: \"_copyWith\",\n value: function _copyWith(handle, resizer, sizer) {\n var Ctor = this.constructor;\n return new Ctor(handle, resizer, sizer);\n }\n }, {\n key: \"_advance\",\n value: function _advance(forwards) {\n // opposite direction from fromResizeHandle to get back to handle\n var handle = this.reverse ? this.domNode.previousElementSibling : this.domNode.nextElementSibling;\n var moveNext = forwards !== this.reverse; // xor\n // iterate at least once to avoid infinite loop\n do {\n if (moveNext) {\n handle = handle.nextElementSibling;\n } else {\n handle = handle.previousElementSibling;\n }\n } while (handle && !this.resizer.isResizeHandle(handle));\n\n if (handle) {\n var nextHandle = this._copyWith(handle, this.resizer, this.sizer);\n nextHandle.reverse = this.reverse;\n return nextHandle;\n }\n }\n }, {\n key: \"next\",\n value: function next() {\n return this._advance(true);\n }\n }, {\n key: \"previous\",\n value: function previous() {\n return this._advance(false);\n }\n }, {\n key: \"size\",\n value: function size() {\n return this.sizer.getItemSize(this.domNode);\n }\n }, {\n key: \"offset\",\n value: function offset() {\n return this.sizer.getItemOffset(this.domNode);\n }\n }, {\n key: \"setSize\",\n value: function setSize(size) {\n this.sizer.setItemSize(this.domNode, size);\n var callback = this.resizer.config.onResized;\n if (callback) {\n callback(size, this.id, this.domNode);\n }\n }\n }, {\n key: \"clearSize\",\n value: function clearSize() {\n this.sizer.clearItemSize(this.domNode);\n var callback = this.resizer.config.onResized;\n if (callback) {\n callback(null, this.id, this.domNode);\n }\n }\n }, {\n key: \"first\",\n value: function first() {\n var _this = this;\n\n var firstHandle = (0, _from2.default)(this.domNode.parentElement.children).find(function (el) {\n return _this.resizer.isResizeHandle(el);\n });\n if (firstHandle) {\n return this._copyWith(firstHandle, this.resizer, this.sizer);\n }\n }\n }, {\n key: \"last\",\n value: function last() {\n var _this2 = this;\n\n var lastHandle = (0, _from2.default)(this.domNode.parentElement.children).reverse().find(function (el) {\n return _this2.resizer.isResizeHandle(el);\n });\n if (lastHandle) {\n return this._copyWith(lastHandle, this.resizer, this.sizer);\n }\n }\n }]);\n return ResizeItem;\n}();\n\nexports.default = ResizeItem;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=item.js.map","module.exports = \"img/icons-create-room.817ede2.svg\";","module.exports = \"img/external-link.a8d3e9b.svg\";","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (lowerBound, upperBound) {\n return function (value) {\n return value <= upperBound && value >= lowerBound;\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _isVisibleThroughFrame = require('./is-visible-through-frame');\n\nvar _isVisibleThroughFrame2 = _interopRequireDefault(_isVisibleThroughFrame);\n\nvar _spacing = require('../spacing');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var target = _ref.target,\n destination = _ref.destination,\n viewport = _ref.viewport;\n\n var displacement = destination.viewport.frameScroll.diff.displacement;\n var withScroll = (0, _spacing.offset)(target, displacement);\n\n if (!destination.viewport.clipped) {\n return false;\n }\n\n var isVisibleInDroppable = (0, _isVisibleThroughFrame2.default)(destination.viewport.clipped)(withScroll);\n\n var isVisibleInViewport = (0, _isVisibleThroughFrame2.default)(viewport)(withScroll);\n\n return isVisibleInDroppable && isVisibleInViewport;\n};","'use strict';\n\nexports.__esModule = true;\nexports.defaultMemoize = defaultMemoize;\nexports.createSelectorCreator = createSelectorCreator;\nexports.createStructuredSelector = createStructuredSelector;\nfunction defaultEqualityCheck(a, b) {\n return a === b;\n}\n\nfunction areArgumentsShallowlyEqual(equalityCheck, prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n\n // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n var length = prev.length;\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction defaultMemoize(func) {\n var equalityCheck = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultEqualityCheck;\n\n var lastArgs = null;\n var lastResult = null;\n // we reference arguments instead of spreading them for performance reasons\n return function () {\n if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) {\n // apply arguments instead of spreading for performance.\n lastResult = func.apply(null, arguments);\n }\n\n lastArgs = arguments;\n return lastResult;\n };\n}\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep;\n }).join(', ');\n throw new Error('Selector creators expect all input-selectors to be functions, ' + ('instead received the following types: [' + dependencyTypes + ']'));\n }\n\n return dependencies;\n}\n\nfunction createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptions = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptions[_key - 1] = arguments[_key];\n }\n\n return function () {\n for (var _len2 = arguments.length, funcs = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var recomputations = 0;\n var resultFunc = funcs.pop();\n var dependencies = getDependencies(funcs);\n\n var memoizedResultFunc = memoize.apply(undefined, [function () {\n recomputations++;\n // apply arguments instead of spreading for performance.\n return resultFunc.apply(null, arguments);\n }].concat(memoizeOptions));\n\n // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n var selector = defaultMemoize(function () {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n params.push(dependencies[i].apply(null, arguments));\n }\n\n // apply arguments instead of spreading for performance.\n return memoizedResultFunc.apply(null, params);\n });\n\n selector.resultFunc = resultFunc;\n selector.recomputations = function () {\n return recomputations;\n };\n selector.resetRecomputations = function () {\n return recomputations = 0;\n };\n return selector;\n };\n}\n\nvar createSelector = exports.createSelector = createSelectorCreator(defaultMemoize);\n\nfunction createStructuredSelector(selectors) {\n var selectorCreator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createSelector;\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + ('where each property is a selector, instead received a ' + typeof selectors));\n }\n var objectKeys = Object.keys(selectors);\n return selectorCreator(objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n};","\n\n// currently used to initiate the velocity style object to 0\n'use strict';\n\nexports.__esModule = true;\nexports['default'] = mapToZero;\n\nfunction mapToZero(obj) {\n var ret = {};\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n ret[key] = 0;\n }\n }\n return ret;\n}\n\nmodule.exports = exports['default'];","\n\n// stepper is used a lot. Saves allocation to return the same array wrapper.\n// This is fine and danger-free against mutations because the callsite\n// immediately destructures it and gets the numbers inside without passing the\n\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = stepper;\n\nvar reusedTuple = [0, 0];\n\nfunction stepper(secondPerFrame, x, v, destX, k, b, precision) {\n // Spring stiffness, in kg / s^2\n\n // for animations, destX is really spring length (spring at rest). initial\n // position is considered as the stretched/compressed position of a spring\n var Fspring = -k * (x - destX);\n\n // Damping, in kg / s\n var Fdamper = -b * v;\n\n // usually we put mass here, but for animation purposes, specifying mass is a\n // bit redundant. you could simply adjust k and b accordingly\n // let a = (Fspring + Fdamper) / mass;\n var a = Fspring + Fdamper;\n\n var newV = v + a * secondPerFrame;\n var newX = x + newV * secondPerFrame;\n\n if (Math.abs(newV) < precision && Math.abs(newX - destX) < precision) {\n reusedTuple[0] = destX;\n reusedTuple[1] = 0;\n return reusedTuple;\n }\n\n reusedTuple[0] = newX;\n reusedTuple[1] = newV;\n return reusedTuple;\n}\n\nmodule.exports = exports[\"default\"];\n// array reference around.","// Generated by CoffeeScript 1.7.1\n(function() {\n var getNanoSeconds, hrtime, loadTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - loadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n loadTime = getNanoSeconds();\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","\n\n// usage assumption: currentStyle values have already been rendered but it says\n// nothing of whether currentStyle is stale (see unreadPropStyle)\n'use strict';\n\nexports.__esModule = true;\nexports['default'] = shouldStopAnimation;\n\nfunction shouldStopAnimation(currentStyle, style, currentVelocity) {\n for (var key in style) {\n if (!Object.prototype.hasOwnProperty.call(style, key)) {\n continue;\n }\n\n if (currentVelocity[key] !== 0) {\n return false;\n }\n\n var styleValue = typeof style[key] === 'number' ? style[key] : style[key].val;\n // stepper will have already taken care of rounding precision errors, so\n // won't have such thing as 0.9999 !=== 1\n if (currentStyle[key] !== styleValue) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _rafSchd = require('raf-schd');\n\nvar _rafSchd2 = _interopRequireDefault(_rafSchd);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (callbacks, isDraggingFn) {\n var ifDragging = function ifDragging(fn) {\n if (isDraggingFn()) {\n fn();\n }\n };\n\n var memoizedMove = (0, _memoizeOne2.default)(function (x, y) {\n var point = { x: x, y: y };\n callbacks.onMove(point);\n });\n\n var move = (0, _rafSchd2.default)(function (point) {\n ifDragging(function () {\n return memoizedMove(point.x, point.y);\n });\n });\n\n var moveForward = (0, _rafSchd2.default)(function () {\n ifDragging(callbacks.onMoveForward);\n });\n\n var moveBackward = (0, _rafSchd2.default)(function () {\n ifDragging(callbacks.onMoveBackward);\n });\n\n var crossAxisMoveForward = (0, _rafSchd2.default)(function () {\n ifDragging(callbacks.onCrossAxisMoveForward);\n });\n\n var crossAxisMoveBackward = (0, _rafSchd2.default)(function () {\n ifDragging(callbacks.onCrossAxisMoveBackward);\n });\n\n var windowScrollMove = (0, _rafSchd2.default)(function () {\n ifDragging(callbacks.onWindowScroll);\n });\n\n return {\n move: move,\n moveForward: moveForward,\n moveBackward: moveBackward,\n crossAxisMoveForward: crossAxisMoveForward,\n crossAxisMoveBackward: crossAxisMoveBackward,\n windowScrollMove: windowScrollMove\n };\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (ref) {\n return ref ? ref.ownerDocument.defaultView : window;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar tab = exports.tab = 9;\nvar enter = exports.enter = 13;\nvar escape = exports.escape = 27;\nvar space = exports.space = 32;\nvar arrowLeft = exports.arrowLeft = 37;\nvar arrowUp = exports.arrowUp = 38;\nvar arrowRight = exports.arrowRight = 39;\nvar arrowDown = exports.arrowDown = 40;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.asyncAction = asyncAction;\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Create an action thunk that will dispatch actions indicating the current\n * status of the Promise returned by fn.\n *\n * @param {string} id the id to give the dispatched actions. This is given a\n * suffix determining whether it is pending, successful or\n * a failure.\n * @param {function} fn a function that returns a Promise.\n * @param {function?} pendingFn a function that returns an object to assign\n * to the `request` key of the ${id}.pending\n * payload.\n * @returns {function} an action thunk - a function that uses its single\n * argument as a dispatch function to dispatch the\n * following actions:\n * `${id}.pending` and either\n * `${id}.success` or\n * `${id}.failure`.\n *\n * The shape of each are:\n * { action: '${id}.pending', request }\n * { action: '${id}.success', result }\n * { action: '${id}.failure', err }\n *\n * where `request` is returned by `pendingFn` and\n * result is the result of the promise returned by\n * `fn`.\n */\nfunction asyncAction(id, fn, pendingFn) {\n return function (dispatch) {\n dispatch({\n action: id + '.pending',\n request: typeof pendingFn === 'function' ? pendingFn() : undefined\n });\n fn().then(function (result) {\n dispatch({ action: id + '.success', result: result });\n }).catch(function (err) {\n dispatch({ action: id + '.failure', err: err });\n });\n };\n}\n//# sourceMappingURL=actionCreators.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.startAnyRegistrationFlow = exports.SAFE_LOCALPART_REGEX = undefined;\n\nvar _bluebird = require('bluebird');\n\n/**\n * Starts either the ILAG or full registration flow, depending\n * on what the HS supports\n *\n * @param {object} options\n * @param {bool} options.go_home_on_cancel\n * If true, goes to the home page if the user cancels the action\n * @param {bool} options.go_welcome_on_cancel\n * If true, goes to the welcome page if the user cancels the action\n */\nvar startAnyRegistrationFlow = exports.startAnyRegistrationFlow = function () {\n var _ref = (0, _bluebird.method)(function (options) {\n if (options === undefined) options = {};\n // look for an ILAG compatible flow. We define this as one\n // which has only dummy or recaptcha flows. In practice it\n // would support any stage InteractiveAuth supports, just not\n // ones like email & msisdn which require the user to supply\n // the relevant details in advance. We err on the side of\n // caution though.\n\n // XXX: ILAG is disabled for now,\n // see https://github.com/vector-im/riot-web/issues/8222\n\n // const flows = await _getRegistrationFlows();\n // const hasIlagFlow = flows.some((flow) => {\n // return flow.stages.every((stage) => {\n // return ['m.login.dummy', 'm.login.recaptcha', 'm.login.terms'].includes(stage);\n // });\n // });\n\n // if (hasIlagFlow) {\n // dis.dispatch({\n // action: 'view_set_mxid',\n // go_home_on_cancel: options.go_home_on_cancel,\n // });\n //} else {\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n _Modal2.default.createTrackedDialog('Registration required', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Registration Required\"),\n description: (0, _languageHandler._t)(\"You need to register to do this. Would you like to register now?\"),\n button: (0, _languageHandler._t)(\"Register\"),\n onFinished: function onFinished(proceed) {\n if (proceed) {\n _dispatcher2.default.dispatch({ action: 'start_registration' });\n } else if (options.go_home_on_cancel) {\n _dispatcher2.default.dispatch({ action: 'view_home_page' });\n } else if (options.go_welcome_on_cancel) {\n _dispatcher2.default.dispatch({ action: 'view_welcome_page' });\n }\n }\n });\n //}\n });\n\n return function startAnyRegistrationFlow(_x) {\n return _ref.apply(this, arguments);\n };\n}();\n\n// async function _getRegistrationFlows() {\n// try {\n// await MatrixClientPeg.get().register(\n// null,\n// null,\n// undefined,\n// {},\n// {},\n// );\n// console.log(\"Register request succeeded when it should have returned 401!\");\n// } catch (e) {\n// if (e.httpStatus === 401) {\n// return e.data.flows;\n// }\n// throw e;\n// }\n// throw new Error(\"Register request succeeded when it should have returned 401!\");\n// }\n\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// import MatrixClientPeg from './MatrixClientPeg';\n\n// Regex for what a \"safe\" or \"Matrix-looking\" localpart would be.\n// TODO: Update as needed for https://github.com/matrix-org/matrix-doc/issues/1514\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Utility code for registering with a homeserver\n * Note that this is currently *not* used by the actual\n * registration code.\n */\n\nvar SAFE_LOCALPART_REGEX = exports.SAFE_LOCALPART_REGEX = /^[a-z0-9=_\\-./]+$/;\n//# sourceMappingURL=Registration.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TabbedView = exports.Tab = undefined;\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _react = require(\"react\");\n\nvar React = _interopRequireWildcard(_react);\n\nvar _languageHandler = require(\"../../languageHandler\");\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require(\"../../index\");\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Represents a tab for the TabbedView.\n */\n/*\nCopyright 2017 Travis Ralston\nCopyright 2019 New Vector Ltd\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar Tab =\n/**\n * Creates a new tab.\n * @param {string} tabLabel The untranslated tab label.\n * @param {string} tabIconClass The class for the tab icon. This should be a simple mask.\n * @param {string} tabJsx The JSX for the tab container.\n */\nexports.Tab = function Tab(tabLabel, tabIconClass, tabJsx) {\n (0, _classCallCheck3.default)(this, Tab);\n\n this.label = tabLabel;\n this.icon = tabIconClass;\n this.body = tabJsx;\n};\n\nvar TabbedView = exports.TabbedView = function (_React$Component) {\n (0, _inherits3.default)(TabbedView, _React$Component);\n\n function TabbedView() {\n (0, _classCallCheck3.default)(this, TabbedView);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (TabbedView.__proto__ || (0, _getPrototypeOf2.default)(TabbedView)).call(this));\n\n _this.state = {\n activeTabIndex: 0\n };\n return _this;\n }\n\n (0, _createClass3.default)(TabbedView, [{\n key: \"_getActiveTabIndex\",\n value: function _getActiveTabIndex() {\n if (!this.state || !this.state.activeTabIndex) return 0;\n return this.state.activeTabIndex;\n }\n\n /**\n * Shows the given tab\n * @param {Tab} tab the tab to show\n * @private\n */\n\n }, {\n key: \"_setActiveTab\",\n value: function _setActiveTab(tab) {\n var idx = this.props.tabs.indexOf(tab);\n if (idx !== -1) {\n this.setState({ activeTabIndex: idx });\n } else {\n console.error(\"Could not find tab \" + tab.label + \" in tabs\");\n }\n }\n }, {\n key: \"_renderTabLabel\",\n value: function _renderTabLabel(tab) {\n var _this2 = this;\n\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n\n var classes = \"mx_TabbedView_tabLabel \";\n\n var idx = this.props.tabs.indexOf(tab);\n if (idx === this._getActiveTabIndex()) classes += \"mx_TabbedView_tabLabel_active\";\n\n var tabIcon = null;\n if (tab.icon) {\n tabIcon = React.createElement(\"span\", { className: \"mx_TabbedView_maskedIcon \" + tab.icon });\n }\n\n var onClickHandler = function onClickHandler() {\n return _this2._setActiveTab(tab);\n };\n\n var label = (0, _languageHandler._t)(tab.label);\n return React.createElement(\n AccessibleButton,\n { className: classes, key: \"tab_label_\" + tab.label, onClick: onClickHandler },\n tabIcon,\n React.createElement(\n \"span\",\n { className: \"mx_TabbedView_tabLabel_text\" },\n label\n )\n );\n }\n }, {\n key: \"_renderTabPanel\",\n value: function _renderTabPanel(tab) {\n return React.createElement(\n \"div\",\n { className: \"mx_TabbedView_tabPanel\", key: \"mx_tabpanel_\" + tab.label },\n React.createElement(\n \"div\",\n { className: \"mx_TabbedView_tabPanelContent\" },\n tab.body\n )\n );\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var labels = this.props.tabs.map(function (tab) {\n return _this3._renderTabLabel(tab);\n });\n var panel = this._renderTabPanel(this.props.tabs[this._getActiveTabIndex()]);\n\n return React.createElement(\n \"div\",\n { className: \"mx_TabbedView\" },\n React.createElement(\n \"div\",\n { className: \"mx_TabbedView_tabLabels\" },\n labels\n ),\n panel\n );\n }\n }]);\n return TabbedView;\n}(React.Component);\n\nTabbedView.propTypes = {\n // The tabs to show\n tabs: _propTypes2.default.arrayOf(_propTypes2.default.instanceOf(Tab)).isRequired\n};\n//# sourceMappingURL=TabbedView.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _highlight = require('highlight.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SyntaxHighlight = function (_React$Component) {\n (0, _inherits3.default)(SyntaxHighlight, _React$Component);\n\n function SyntaxHighlight(props, context) {\n (0, _classCallCheck3.default)(this, SyntaxHighlight);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (SyntaxHighlight.__proto__ || (0, _getPrototypeOf2.default)(SyntaxHighlight)).call(this, props, context));\n\n _this._ref = _this._ref.bind(_this);\n return _this;\n }\n\n // componentDidUpdate used here for reusability\n // componentWillReceiveProps fires too early to call highlightBlock on.\n\n\n (0, _createClass3.default)(SyntaxHighlight, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n if (this._el) (0, _highlight.highlightBlock)(this._el);\n }\n\n // call componentDidUpdate because _ref is fired on initial render\n // which does not fire componentDidUpdate\n\n }, {\n key: '_ref',\n value: function _ref(el) {\n this._el = el;\n this.componentDidUpdate();\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n className = _props.className,\n children = _props.children;\n\n\n return _react2.default.createElement(\n 'pre',\n { className: className + ' mx_SyntaxHighlight', ref: this._ref },\n _react2.default.createElement(\n 'code',\n null,\n children\n )\n );\n }\n }]);\n return SyntaxHighlight;\n}(_react2.default.Component); /*\n Copyright 2017 Michael Telatynski <7t3chguy@gmail.com>\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nSyntaxHighlight.propTypes = {\n className: _propTypes2.default.string,\n children: _propTypes2.default.node\n};\nexports.default = SyntaxHighlight;\nmodule.exports = exports['default'];\n//# sourceMappingURL=SyntaxHighlight.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TYPES = exports.ADVANCED = exports.PREMIUM = exports.FREE = undefined;\n\nvar _values = require('babel-runtime/core-js/object/values');\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nexports.getTypeFromServerConfig = getTypeFromServerConfig;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _AutoDiscoveryUtils = require('../../../utils/AutoDiscoveryUtils');\n\nvar _TypeUtils = require('../../../utils/TypeUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MODULAR_URL = 'https://modular.im/?utm_source=riot-web&utm_medium=web&utm_campaign=riot-web-authentication'; /*\n Copyright 2019 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar FREE = exports.FREE = 'Free';\nvar PREMIUM = exports.PREMIUM = 'Premium';\nvar ADVANCED = exports.ADVANCED = 'Advanced';\n\nvar TYPES = exports.TYPES = {\n FREE: {\n id: FREE,\n label: function label() {\n return (0, _languageHandler._t)('Free');\n },\n logo: function logo() {\n return _react2.default.createElement('img', { src: require('../../../../res/img/matrix-org-bw-logo.svg') });\n },\n description: function description() {\n return (0, _languageHandler._t)('Join millions for free on the largest public server');\n },\n serverConfig: (0, _TypeUtils.makeType)(_AutoDiscoveryUtils.ValidatedServerConfig, {\n hsUrl: \"https://matrix.org\",\n hsName: \"matrix.org\",\n hsNameIsDifferent: false,\n isUrl: \"https://vector.im\"\n })\n },\n PREMIUM: {\n id: PREMIUM,\n label: function label() {\n return (0, _languageHandler._t)('Premium');\n },\n logo: function logo() {\n return _react2.default.createElement('img', { src: require('../../../../res/img/modular-bw-logo.svg') });\n },\n description: function description() {\n return (0, _languageHandler._t)('Premium hosting for organisations Learn more', {}, {\n a: function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: MODULAR_URL, target: '_blank', rel: 'noopener' },\n sub\n );\n }\n });\n },\n identityServerUrl: \"https://vector.im\"\n },\n ADVANCED: {\n id: ADVANCED,\n label: function label() {\n return (0, _languageHandler._t)('Advanced');\n },\n logo: function logo() {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('img', { src: require('../../../../res/img/feather-customised/globe.svg') }),\n (0, _languageHandler._t)('Other')\n );\n },\n description: function description() {\n return (0, _languageHandler._t)('Find other public servers or use a custom server');\n }\n }\n};\n\nfunction getTypeFromServerConfig(config) {\n var hsUrl = config.hsUrl;\n\n if (!hsUrl) {\n return null;\n } else if (hsUrl === TYPES.FREE.serverConfig.hsUrl) {\n return FREE;\n } else if (new URL(hsUrl).hostname.endsWith('.modular.im')) {\n // This is an unlikely case to reach, as Modular defaults to hiding the\n // server type selector.\n return PREMIUM;\n } else {\n return ADVANCED;\n }\n}\n\nvar ServerTypeSelector = function (_React$PureComponent) {\n (0, _inherits3.default)(ServerTypeSelector, _React$PureComponent);\n\n function ServerTypeSelector(props) {\n (0, _classCallCheck3.default)(this, ServerTypeSelector);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (ServerTypeSelector.__proto__ || (0, _getPrototypeOf2.default)(ServerTypeSelector)).call(this, props));\n\n _this.onClick = function (e) {\n e.stopPropagation();\n var type = e.currentTarget.dataset.id;\n _this.updateSelectedType(type);\n };\n\n var selected = props.selected;\n\n\n _this.state = {\n selected: selected\n };\n return _this;\n }\n\n (0, _createClass3.default)(ServerTypeSelector, [{\n key: 'updateSelectedType',\n value: function updateSelectedType(type) {\n if (this.state.selected === type) {\n return;\n }\n this.setState({\n selected: type\n });\n if (this.props.onChange) {\n this.props.onChange(type);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n\n var serverTypes = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _values2.default)(TYPES)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var type = _step.value;\n var id = type.id,\n label = type.label,\n logo = type.logo,\n description = type.description;\n\n var classes = (0, _classnames2.default)(\"mx_ServerTypeSelector_type\", 'mx_ServerTypeSelector_type_' + id, {\n \"mx_ServerTypeSelector_type_selected\": id === this.state.selected\n });\n\n serverTypes.push(_react2.default.createElement(\n 'div',\n { className: classes, key: id },\n _react2.default.createElement(\n 'div',\n { className: 'mx_ServerTypeSelector_label' },\n label()\n ),\n _react2.default.createElement(\n AccessibleButton,\n { onClick: this.onClick, 'data-id': id },\n _react2.default.createElement(\n 'div',\n { className: 'mx_ServerTypeSelector_logo' },\n logo()\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_ServerTypeSelector_description' },\n description()\n )\n )\n ));\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_ServerTypeSelector' },\n serverTypes\n );\n }\n }]);\n return ServerTypeSelector;\n}(_react2.default.PureComponent);\n\nServerTypeSelector.propTypes = {\n // The default selected type.\n selected: _propTypes2.default.string,\n // Handler called when the selected type changes.\n onChange: _propTypes2.default.func.isRequired\n};\nexports.default = ServerTypeSelector;\n//# sourceMappingURL=ServerTypeSelector.js.map","module.exports = \"img/icon_context_delete.f02c798.svg\";","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getDefaultIdentityServerUrl = getDefaultIdentityServerUrl;\nexports.useDefaultIdentityServer = useDefaultIdentityServer;\n\nvar _SdkConfig = require('../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction getDefaultIdentityServerUrl() {\n return _SdkConfig2.default.get()['validated_server_config']['isUrl'];\n}\n\nfunction useDefaultIdentityServer() {\n var url = getDefaultIdentityServerUrl();\n // Account data change will update localstorage, client, etc through dispatcher\n _MatrixClientPeg2.default.get().setAccountData(\"m.identity_server\", {\n base_url: url\n });\n}\n//# sourceMappingURL=IdentityServerUtils.js.map","/*! VelocityJS.org (1.5.2). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */\r\n\r\n/*************************\r\n Velocity jQuery Shim\r\n *************************/\r\n\r\n/*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */\r\n\r\n/* This file contains the jQuery functions that Velocity relies on, thereby removing Velocity's dependency on a full copy of jQuery, and allowing it to work in any environment. */\r\n/* These shimmed functions are only used if jQuery isn't present. If both this shim and jQuery are loaded, Velocity defaults to jQuery proper. */\r\n/* Browser support: Using this shim instead of jQuery proper removes support for IE8. */\r\n\r\n(function(window) {\r\n\t\"use strict\";\r\n\t/***************\r\n\t Setup\r\n\t ***************/\r\n\r\n\t/* If jQuery is already loaded, there's no point in loading this shim. */\r\n\tif (window.jQuery) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t/* jQuery base. */\r\n\tvar $ = function(selector, context) {\r\n\t\treturn new $.fn.init(selector, context);\r\n\t};\r\n\r\n\t/********************\r\n\t Private Methods\r\n\t ********************/\r\n\r\n\t/* jQuery */\r\n\t$.isWindow = function(obj) {\r\n\t\t/* jshint eqeqeq: false */\r\n\t\treturn obj && obj === obj.window;\r\n\t};\r\n\r\n\t/* jQuery */\r\n\t$.type = function(obj) {\r\n\t\tif (!obj) {\r\n\t\t\treturn obj + \"\";\r\n\t\t}\r\n\r\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\r\n\t\t\t\tclass2type[toString.call(obj)] || \"object\" :\r\n\t\t\t\ttypeof obj;\r\n\t};\r\n\r\n\t/* jQuery */\r\n\t$.isArray = Array.isArray || function(obj) {\r\n\t\treturn $.type(obj) === \"array\";\r\n\t};\r\n\r\n\t/* jQuery */\r\n\tfunction isArraylike(obj) {\r\n\t\tvar length = obj.length,\r\n\t\t\t\ttype = $.type(obj);\r\n\r\n\t\tif (type === \"function\" || $.isWindow(obj)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (obj.nodeType === 1 && length) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn type === \"array\" || length === 0 || typeof length === \"number\" && length > 0 && (length - 1) in obj;\r\n\t}\r\n\r\n\t/***************\r\n\t $ Methods\r\n\t ***************/\r\n\r\n\t/* jQuery: Support removed for IE<9. */\r\n\t$.isPlainObject = function(obj) {\r\n\t\tvar key;\r\n\r\n\t\tif (!obj || $.type(obj) !== \"object\" || obj.nodeType || $.isWindow(obj)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tif (obj.constructor &&\r\n\t\t\t\t\t!hasOwn.call(obj, \"constructor\") &&\r\n\t\t\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\")) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfor (key in obj) {\r\n\t\t}\r\n\r\n\t\treturn key === undefined || hasOwn.call(obj, key);\r\n\t};\r\n\r\n\t/* jQuery */\r\n\t$.each = function(obj, callback, args) {\r\n\t\tvar value,\r\n\t\t\t\ti = 0,\r\n\t\t\t\tlength = obj.length,\r\n\t\t\t\tisArray = isArraylike(obj);\r\n\r\n\t\tif (args) {\r\n\t\t\tif (isArray) {\r\n\t\t\t\tfor (; i < length; i++) {\r\n\t\t\t\t\tvalue = callback.apply(obj[i], args);\r\n\r\n\t\t\t\t\tif (value === false) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfor (i in obj) {\r\n\t\t\t\t\tif (!obj.hasOwnProperty(i)) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvalue = callback.apply(obj[i], args);\r\n\r\n\t\t\t\t\tif (value === false) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\tif (isArray) {\r\n\t\t\t\tfor (; i < length; i++) {\r\n\t\t\t\t\tvalue = callback.call(obj[i], i, obj[i]);\r\n\r\n\t\t\t\t\tif (value === false) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfor (i in obj) {\r\n\t\t\t\t\tif (!obj.hasOwnProperty(i)) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvalue = callback.call(obj[i], i, obj[i]);\r\n\r\n\t\t\t\t\tif (value === false) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn obj;\r\n\t};\r\n\r\n\t/* Custom */\r\n\t$.data = function(node, key, value) {\r\n\t\t/* $.getData() */\r\n\t\tif (value === undefined) {\r\n\t\t\tvar getId = node[$.expando],\r\n\t\t\t\t\tstore = getId && cache[getId];\r\n\r\n\t\t\tif (key === undefined) {\r\n\t\t\t\treturn store;\r\n\t\t\t} else if (store) {\r\n\t\t\t\tif (key in store) {\r\n\t\t\t\t\treturn store[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t/* $.setData() */\r\n\t\t} else if (key !== undefined) {\r\n\t\t\tvar setId = node[$.expando] || (node[$.expando] = ++$.uuid);\r\n\r\n\t\t\tcache[setId] = cache[setId] || {};\r\n\t\t\tcache[setId][key] = value;\r\n\r\n\t\t\treturn value;\r\n\t\t}\r\n\t};\r\n\r\n\t/* Custom */\r\n\t$.removeData = function(node, keys) {\r\n\t\tvar id = node[$.expando],\r\n\t\t\t\tstore = id && cache[id];\r\n\r\n\t\tif (store) {\r\n\t\t\t// Cleanup the entire store if no keys are provided.\r\n\t\t\tif (!keys) {\r\n\t\t\t\tdelete cache[id];\r\n\t\t\t} else {\r\n\t\t\t\t$.each(keys, function(_, key) {\r\n\t\t\t\t\tdelete store[key];\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t/* jQuery */\r\n\t$.extend = function() {\r\n\t\tvar src, copyIsArray, copy, name, options, clone,\r\n\t\t\t\ttarget = arguments[0] || {},\r\n\t\t\t\ti = 1,\r\n\t\t\t\tlength = arguments.length,\r\n\t\t\t\tdeep = false;\r\n\r\n\t\tif (typeof target === \"boolean\") {\r\n\t\t\tdeep = target;\r\n\r\n\t\t\ttarget = arguments[i] || {};\r\n\t\t\ti++;\r\n\t\t}\r\n\r\n\t\tif (typeof target !== \"object\" && $.type(target) !== \"function\") {\r\n\t\t\ttarget = {};\r\n\t\t}\r\n\r\n\t\tif (i === length) {\r\n\t\t\ttarget = this;\r\n\t\t\ti--;\r\n\t\t}\r\n\r\n\t\tfor (; i < length; i++) {\r\n\t\t\tif ((options = arguments[i])) {\r\n\t\t\t\tfor (name in options) {\r\n\t\t\t\t\tif (!options.hasOwnProperty(name)) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tsrc = target[name];\r\n\t\t\t\t\tcopy = options[name];\r\n\r\n\t\t\t\t\tif (target === copy) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (deep && copy && ($.isPlainObject(copy) || (copyIsArray = $.isArray(copy)))) {\r\n\t\t\t\t\t\tif (copyIsArray) {\r\n\t\t\t\t\t\t\tcopyIsArray = false;\r\n\t\t\t\t\t\t\tclone = src && $.isArray(src) ? src : [];\r\n\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tclone = src && $.isPlainObject(src) ? src : {};\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\ttarget[name] = $.extend(deep, clone, copy);\r\n\r\n\t\t\t\t\t} else if (copy !== undefined) {\r\n\t\t\t\t\t\ttarget[name] = copy;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn target;\r\n\t};\r\n\r\n\t/* jQuery 1.4.3 */\r\n\t$.queue = function(elem, type, data) {\r\n\t\tfunction $makeArray(arr, results) {\r\n\t\t\tvar ret = results || [];\r\n\r\n\t\t\tif (arr) {\r\n\t\t\t\tif (isArraylike(Object(arr))) {\r\n\t\t\t\t\t/* $.merge */\r\n\t\t\t\t\t(function(first, second) {\r\n\t\t\t\t\t\tvar len = +second.length,\r\n\t\t\t\t\t\t\t\tj = 0,\r\n\t\t\t\t\t\t\t\ti = first.length;\r\n\r\n\t\t\t\t\t\twhile (j < len) {\r\n\t\t\t\t\t\t\tfirst[i++] = second[j++];\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (len !== len) {\r\n\t\t\t\t\t\t\twhile (second[j] !== undefined) {\r\n\t\t\t\t\t\t\t\tfirst[i++] = second[j++];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfirst.length = i;\r\n\r\n\t\t\t\t\t\treturn first;\r\n\t\t\t\t\t})(ret, typeof arr === \"string\" ? [arr] : arr);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t[].push.call(ret, arr);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn ret;\r\n\t\t}\r\n\r\n\t\tif (!elem) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttype = (type || \"fx\") + \"queue\";\r\n\r\n\t\tvar q = $.data(elem, type);\r\n\r\n\t\tif (!data) {\r\n\t\t\treturn q || [];\r\n\t\t}\r\n\r\n\t\tif (!q || $.isArray(data)) {\r\n\t\t\tq = $.data(elem, type, $makeArray(data));\r\n\t\t} else {\r\n\t\t\tq.push(data);\r\n\t\t}\r\n\r\n\t\treturn q;\r\n\t};\r\n\r\n\t/* jQuery 1.4.3 */\r\n\t$.dequeue = function(elems, type) {\r\n\t\t/* Custom: Embed element iteration. */\r\n\t\t$.each(elems.nodeType ? [elems] : elems, function(i, elem) {\r\n\t\t\ttype = type || \"fx\";\r\n\r\n\t\t\tvar queue = $.queue(elem, type),\r\n\t\t\t\t\tfn = queue.shift();\r\n\r\n\t\t\tif (fn === \"inprogress\") {\r\n\t\t\t\tfn = queue.shift();\r\n\t\t\t}\r\n\r\n\t\t\tif (fn) {\r\n\t\t\t\tif (type === \"fx\") {\r\n\t\t\t\t\tqueue.unshift(\"inprogress\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfn.call(elem, function() {\r\n\t\t\t\t\t$.dequeue(elem, type);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\t/******************\r\n\t $.fn Methods\r\n\t ******************/\r\n\r\n\t/* jQuery */\r\n\t$.fn = $.prototype = {\r\n\t\tinit: function(selector) {\r\n\t\t\t/* Just return the element wrapped inside an array; don't proceed with the actual jQuery node wrapping process. */\r\n\t\t\tif (selector.nodeType) {\r\n\t\t\t\tthis[0] = selector;\r\n\r\n\t\t\t\treturn this;\r\n\t\t\t} else {\r\n\t\t\t\tthrow new Error(\"Not a DOM node.\");\r\n\t\t\t}\r\n\t\t},\r\n\t\toffset: function() {\r\n\t\t\t/* jQuery altered code: Dropped disconnected DOM node checking. */\r\n\t\t\tvar box = this[0].getBoundingClientRect ? this[0].getBoundingClientRect() : {top: 0, left: 0};\r\n\r\n\t\t\treturn {\r\n\t\t\t\ttop: box.top + (window.pageYOffset || document.scrollTop || 0) - (document.clientTop || 0),\r\n\t\t\t\tleft: box.left + (window.pageXOffset || document.scrollLeft || 0) - (document.clientLeft || 0)\r\n\t\t\t};\r\n\t\t},\r\n\t\tposition: function() {\r\n\t\t\t/* jQuery */\r\n\t\t\tfunction offsetParentFn(elem) {\r\n\t\t\t\tvar offsetParent = elem.offsetParent;\r\n\r\n\t\t\t\twhile (offsetParent && (offsetParent.nodeName.toLowerCase() !== \"html\" && offsetParent.style && offsetParent.style.position.toLowerCase() === \"static\")) {\r\n\t\t\t\t\toffsetParent = offsetParent.offsetParent;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn offsetParent || document;\r\n\t\t\t}\r\n\r\n\t\t\t/* Zepto */\r\n\t\t\tvar elem = this[0],\r\n\t\t\t\t\toffsetParent = offsetParentFn(elem),\r\n\t\t\t\t\toffset = this.offset(),\r\n\t\t\t\t\tparentOffset = /^(?:body|html)$/i.test(offsetParent.nodeName) ? {top: 0, left: 0} : $(offsetParent).offset();\r\n\r\n\t\t\toffset.top -= parseFloat(elem.style.marginTop) || 0;\r\n\t\t\toffset.left -= parseFloat(elem.style.marginLeft) || 0;\r\n\r\n\t\t\tif (offsetParent.style) {\r\n\t\t\t\tparentOffset.top += parseFloat(offsetParent.style.borderTopWidth) || 0;\r\n\t\t\t\tparentOffset.left += parseFloat(offsetParent.style.borderLeftWidth) || 0;\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\ttop: offset.top - parentOffset.top,\r\n\t\t\t\tleft: offset.left - parentOffset.left\r\n\t\t\t};\r\n\t\t}\r\n\t};\r\n\r\n\t/**********************\r\n\t Private Variables\r\n\t **********************/\r\n\r\n\t/* For $.data() */\r\n\tvar cache = {};\r\n\t$.expando = \"velocity\" + (new Date().getTime());\r\n\t$.uuid = 0;\r\n\r\n\t/* For $.queue() */\r\n\tvar class2type = {},\r\n\t\t\thasOwn = class2type.hasOwnProperty,\r\n\t\t\ttoString = class2type.toString;\r\n\r\n\tvar types = \"Boolean Number String Function Array Date RegExp Object Error\".split(\" \");\r\n\tfor (var i = 0; i < types.length; i++) {\r\n\t\tclass2type[\"[object \" + types[i] + \"]\"] = types[i].toLowerCase();\r\n\t}\r\n\r\n\t/* Makes $(node) possible, without having to call init. */\r\n\t$.fn.init.prototype = $.fn;\r\n\r\n\t/* Globalize Velocity onto the window, and assign its Utilities property. */\r\n\twindow.Velocity = {Utilities: $};\r\n})(window);\r\n\r\n/******************\r\n Velocity.js\r\n ******************/\r\n\r\n(function(factory) {\r\n\t\"use strict\";\r\n\t/* CommonJS module. */\r\n\tif (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n\t\tmodule.exports = factory();\r\n\t\t/* AMD module. */\r\n\t} else if (typeof define === \"function\" && define.amd) {\r\n\t\tdefine(factory);\r\n\t\t/* Browser globals. */\r\n\t} else {\r\n\t\tfactory();\r\n\t}\r\n}(function() {\r\n\t\"use strict\";\r\n\treturn function(global, window, document, undefined) {\r\n\r\n\t\t/***************\r\n\t\t Summary\r\n\t\t ***************/\r\n\r\n\t\t/*\r\n\t\t - CSS: CSS stack that works independently from the rest of Velocity.\r\n\t\t - animate(): Core animation method that iterates over the targeted elements and queues the incoming call onto each element individually.\r\n\t\t - Pre-Queueing: Prepare the element for animation by instantiating its data cache and processing the call's options.\r\n\t\t - Queueing: The logic that runs once the call has reached its point of execution in the element's $.queue() stack.\r\n\t\t Most logic is placed here to avoid risking it becoming stale (if the element's properties have changed).\r\n\t\t - Pushing: Consolidation of the tween data followed by its push onto the global in-progress calls container.\r\n\t\t - tick(): The single requestAnimationFrame loop responsible for tweening all in-progress calls.\r\n\t\t - completeCall(): Handles the cleanup process for each Velocity call.\r\n\t\t */\r\n\r\n\t\t/*********************\r\n\t\t Helper Functions\r\n\t\t *********************/\r\n\r\n\t\t/* IE detection. Gist: https://gist.github.com/julianshapiro/9098609 */\r\n\t\tvar IE = (function() {\r\n\t\t\tif (document.documentMode) {\r\n\t\t\t\treturn document.documentMode;\r\n\t\t\t} else {\r\n\t\t\t\tfor (var i = 7; i > 4; i--) {\r\n\t\t\t\t\tvar div = document.createElement(\"div\");\r\n\r\n\t\t\t\t\tdiv.innerHTML = \"\";\r\n\r\n\t\t\t\t\tif (div.getElementsByTagName(\"span\").length) {\r\n\t\t\t\t\t\tdiv = null;\r\n\r\n\t\t\t\t\t\treturn i;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn undefined;\r\n\t\t})();\r\n\r\n\t\t/* rAF shim. Gist: https://gist.github.com/julianshapiro/9497513 */\r\n\t\tvar rAFShim = (function() {\r\n\t\t\tvar timeLast = 0;\r\n\r\n\t\t\treturn window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function(callback) {\r\n\t\t\t\tvar timeCurrent = (new Date()).getTime(),\r\n\t\t\t\t\t\ttimeDelta;\r\n\r\n\t\t\t\t/* Dynamically set delay on a per-tick basis to match 60fps. */\r\n\t\t\t\t/* Technique by Erik Moller. MIT license: https://gist.github.com/paulirish/1579671 */\r\n\t\t\t\ttimeDelta = Math.max(0, 16 - (timeCurrent - timeLast));\r\n\t\t\t\ttimeLast = timeCurrent + timeDelta;\r\n\r\n\t\t\t\treturn setTimeout(function() {\r\n\t\t\t\t\tcallback(timeCurrent + timeDelta);\r\n\t\t\t\t}, timeDelta);\r\n\t\t\t};\r\n\t\t})();\r\n\r\n\t\tvar performance = (function() {\r\n\t\t\tvar perf = window.performance || {};\r\n\r\n\t\t\tif (typeof perf.now !== \"function\") {\r\n\t\t\t\tvar nowOffset = perf.timing && perf.timing.navigationStart ? perf.timing.navigationStart : (new Date()).getTime();\r\n\r\n\t\t\t\tperf.now = function() {\r\n\t\t\t\t\treturn (new Date()).getTime() - nowOffset;\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\treturn perf;\r\n\t\t})();\r\n\r\n\t\t/* Array compacting. Copyright Lo-Dash. MIT License: https://github.com/lodash/lodash/blob/master/LICENSE.txt */\r\n\t\tfunction compactSparseArray(array) {\r\n\t\t\tvar index = -1,\r\n\t\t\t\t\tlength = array ? array.length : 0,\r\n\t\t\t\t\tresult = [];\r\n\r\n\t\t\twhile (++index < length) {\r\n\t\t\t\tvar value = array[index];\r\n\r\n\t\t\t\tif (value) {\r\n\t\t\t\t\tresult.push(value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Shim for \"fixing\" IE's lack of support (IE < 9) for applying slice\r\n\t\t * on host objects like NamedNodeMap, NodeList, and HTMLCollection\r\n\t\t * (technically, since host objects have been implementation-dependent,\r\n\t\t * at least before ES2015, IE hasn't needed to work this way).\r\n\t\t * Also works on strings, fixes IE < 9 to allow an explicit undefined\r\n\t\t * for the 2nd argument (as in Firefox), and prevents errors when\r\n\t\t * called on other DOM objects.\r\n\t\t */\r\n\t\tvar _slice = (function() {\r\n\t\t\tvar slice = Array.prototype.slice;\r\n\r\n\t\t\ttry {\r\n\t\t\t\t// Can't be used with DOM elements in IE < 9\r\n\t\t\t\tslice.call(document.documentElement);\r\n\t\t\t\treturn slice;\r\n\t\t\t} catch (e) { // Fails in IE < 9\r\n\r\n\t\t\t\t// This will work for genuine arrays, array-like objects, \r\n\t\t\t\t// NamedNodeMap (attributes, entities, notations),\r\n\t\t\t\t// NodeList (e.g., getElementsByTagName), HTMLCollection (e.g., childNodes),\r\n\t\t\t\t// and will not fail on other DOM objects (as do DOM elements in IE < 9)\r\n\t\t\t\treturn function(begin, end) {\r\n\t\t\t\t\tvar len = this.length;\r\n\r\n\t\t\t\t\tif (typeof begin !== \"number\") {\r\n\t\t\t\t\t\tbegin = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// IE < 9 gets unhappy with an undefined end argument\r\n\t\t\t\t\tif (typeof end !== \"number\") {\r\n\t\t\t\t\t\tend = len;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// For native Array objects, we use the native slice function\r\n\t\t\t\t\tif (this.slice) {\r\n\t\t\t\t\t\treturn slice.call(this, begin, end);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// For array like object we handle it ourselves.\r\n\t\t\t\t\tvar i,\r\n\t\t\t\t\t\t\tcloned = [],\r\n\t\t\t\t\t\t\t// Handle negative value for \"begin\"\r\n\t\t\t\t\t\t\tstart = (begin >= 0) ? begin : Math.max(0, len + begin),\r\n\t\t\t\t\t\t\t// Handle negative value for \"end\"\r\n\t\t\t\t\t\t\tupTo = end < 0 ? len + end : Math.min(end, len),\r\n\t\t\t\t\t\t\t// Actual expected size of the slice\r\n\t\t\t\t\t\t\tsize = upTo - start;\r\n\r\n\t\t\t\t\tif (size > 0) {\r\n\t\t\t\t\t\tcloned = new Array(size);\r\n\t\t\t\t\t\tif (this.charAt) {\r\n\t\t\t\t\t\t\tfor (i = 0; i < size; i++) {\r\n\t\t\t\t\t\t\t\tcloned[i] = this.charAt(start + i);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tfor (i = 0; i < size; i++) {\r\n\t\t\t\t\t\t\t\tcloned[i] = this[start + i];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn cloned;\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t})();\r\n\r\n\t\t/* .indexOf doesn't exist in IE<9 */\r\n\t\tvar _inArray = (function() {\r\n\t\t\tif (Array.prototype.includes) {\r\n\t\t\t\treturn function(arr, val) {\r\n\t\t\t\t\treturn arr.includes(val);\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\tif (Array.prototype.indexOf) {\r\n\t\t\t\treturn function(arr, val) {\r\n\t\t\t\t\treturn arr.indexOf(val) >= 0;\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\treturn function(arr, val) {\r\n\t\t\t\tfor (var i = 0; i < arr.length; i++) {\r\n\t\t\t\t\tif (arr[i] === val) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tfunction sanitizeElements(elements) {\r\n\t\t\t/* Unwrap jQuery/Zepto objects. */\r\n\t\t\tif (Type.isWrapped(elements)) {\r\n\t\t\t\telements = _slice.call(elements);\r\n\t\t\t\t/* Wrap a single element in an array so that $.each() can iterate with the element instead of its node's children. */\r\n\t\t\t} else if (Type.isNode(elements)) {\r\n\t\t\t\telements = [elements];\r\n\t\t\t}\r\n\r\n\t\t\treturn elements;\r\n\t\t}\r\n\r\n\t\tvar Type = {\r\n\t\t\tisNumber: function(variable) {\r\n\t\t\t\treturn (typeof variable === \"number\");\r\n\t\t\t},\r\n\t\t\tisString: function(variable) {\r\n\t\t\t\treturn (typeof variable === \"string\");\r\n\t\t\t},\r\n\t\t\tisArray: Array.isArray || function(variable) {\r\n\t\t\t\treturn Object.prototype.toString.call(variable) === \"[object Array]\";\r\n\t\t\t},\r\n\t\t\tisFunction: function(variable) {\r\n\t\t\t\treturn Object.prototype.toString.call(variable) === \"[object Function]\";\r\n\t\t\t},\r\n\t\t\tisNode: function(variable) {\r\n\t\t\t\treturn variable && variable.nodeType;\r\n\t\t\t},\r\n\t\t\t/* Determine if variable is an array-like wrapped jQuery, Zepto or similar element, or even a NodeList etc. */\r\n\t\t\t/* NOTE: HTMLFormElements also have a length. */\r\n\t\t\tisWrapped: function(variable) {\r\n\t\t\t\treturn variable\r\n\t\t\t\t\t\t&& variable !== window\r\n\t\t\t\t\t\t&& Type.isNumber(variable.length)\r\n\t\t\t\t\t\t&& !Type.isString(variable)\r\n\t\t\t\t\t\t&& !Type.isFunction(variable)\r\n\t\t\t\t\t\t&& !Type.isNode(variable)\r\n\t\t\t\t\t\t&& (variable.length === 0 || Type.isNode(variable[0]));\r\n\t\t\t},\r\n\t\t\tisSVG: function(variable) {\r\n\t\t\t\treturn window.SVGElement && (variable instanceof window.SVGElement);\r\n\t\t\t},\r\n\t\t\tisEmptyObject: function(variable) {\r\n\t\t\t\tfor (var name in variable) {\r\n\t\t\t\t\tif (variable.hasOwnProperty(name)) {\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/*****************\r\n\t\t Dependencies\r\n\t\t *****************/\r\n\r\n\t\tvar $,\r\n\t\t\t\tisJQuery = false;\r\n\r\n\t\tif (global.fn && global.fn.jquery) {\r\n\t\t\t$ = global;\r\n\t\t\tisJQuery = true;\r\n\t\t} else {\r\n\t\t\t$ = window.Velocity.Utilities;\r\n\t\t}\r\n\r\n\t\tif (IE <= 8 && !isJQuery) {\r\n\t\t\tthrow new Error(\"Velocity: IE8 and below require jQuery to be loaded before Velocity.\");\r\n\t\t} else if (IE <= 7) {\r\n\t\t\t/* Revert to jQuery's $.animate(), and lose Velocity's extra features. */\r\n\t\t\tjQuery.fn.velocity = jQuery.fn.animate;\r\n\r\n\t\t\t/* Now that $.fn.velocity is aliased, abort this Velocity declaration. */\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t/*****************\r\n\t\t Constants\r\n\t\t *****************/\r\n\r\n\t\tvar DURATION_DEFAULT = 400,\r\n\t\t\t\tEASING_DEFAULT = \"swing\";\r\n\r\n\t\t/*************\r\n\t\t State\r\n\t\t *************/\r\n\r\n\t\tvar Velocity = {\r\n\t\t\t/* Container for page-wide Velocity state data. */\r\n\t\t\tState: {\r\n\t\t\t\t/* Detect mobile devices to determine if mobileHA should be turned on. */\r\n\t\t\t\tisMobile: /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(window.navigator.userAgent),\r\n\t\t\t\t/* The mobileHA option's behavior changes on older Android devices (Gingerbread, versions 2.3.3-2.3.7). */\r\n\t\t\t\tisAndroid: /Android/i.test(window.navigator.userAgent),\r\n\t\t\t\tisGingerbread: /Android 2\\.3\\.[3-7]/i.test(window.navigator.userAgent),\r\n\t\t\t\tisChrome: window.chrome,\r\n\t\t\t\tisFirefox: /Firefox/i.test(window.navigator.userAgent),\r\n\t\t\t\t/* Create a cached element for re-use when checking for CSS property prefixes. */\r\n\t\t\t\tprefixElement: document.createElement(\"div\"),\r\n\t\t\t\t/* Cache every prefix match to avoid repeating lookups. */\r\n\t\t\t\tprefixMatches: {},\r\n\t\t\t\t/* Cache the anchor used for animating window scrolling. */\r\n\t\t\t\tscrollAnchor: null,\r\n\t\t\t\t/* Cache the browser-specific property names associated with the scroll anchor. */\r\n\t\t\t\tscrollPropertyLeft: null,\r\n\t\t\t\tscrollPropertyTop: null,\r\n\t\t\t\t/* Keep track of whether our RAF tick is running. */\r\n\t\t\t\tisTicking: false,\r\n\t\t\t\t/* Container for every in-progress call to Velocity. */\r\n\t\t\t\tcalls: [],\r\n\t\t\t\tdelayedElements: {\r\n\t\t\t\t\tcount: 0\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t/* Velocity's custom CSS stack. Made global for unit testing. */\r\n\t\t\tCSS: {/* Defined below. */},\r\n\t\t\t/* A shim of the jQuery utility functions used by Velocity -- provided by Velocity's optional jQuery shim. */\r\n\t\t\tUtilities: $,\r\n\t\t\t/* Container for the user's custom animation redirects that are referenced by name in place of the properties map argument. */\r\n\t\t\tRedirects: {/* Manually registered by the user. */},\r\n\t\t\tEasings: {/* Defined below. */},\r\n\t\t\t/* Attempt to use ES6 Promises by default. Users can override this with a third-party promises library. */\r\n\t\t\tPromise: window.Promise,\r\n\t\t\t/* Velocity option defaults, which can be overriden by the user. */\r\n\t\t\tdefaults: {\r\n\t\t\t\tqueue: \"\",\r\n\t\t\t\tduration: DURATION_DEFAULT,\r\n\t\t\t\teasing: EASING_DEFAULT,\r\n\t\t\t\tbegin: undefined,\r\n\t\t\t\tcomplete: undefined,\r\n\t\t\t\tprogress: undefined,\r\n\t\t\t\tdisplay: undefined,\r\n\t\t\t\tvisibility: undefined,\r\n\t\t\t\tloop: false,\r\n\t\t\t\tdelay: false,\r\n\t\t\t\tmobileHA: true,\r\n\t\t\t\t/* Advanced: Set to false to prevent property values from being cached between consecutive Velocity-initiated chain calls. */\r\n\t\t\t\t_cacheValues: true,\r\n\t\t\t\t/* Advanced: Set to false if the promise should always resolve on empty element lists. */\r\n\t\t\t\tpromiseRejectEmpty: true\r\n\t\t\t},\r\n\t\t\t/* A design goal of Velocity is to cache data wherever possible in order to avoid DOM requerying. Accordingly, each element has a data cache. */\r\n\t\t\tinit: function(element) {\r\n\t\t\t\t$.data(element, \"velocity\", {\r\n\t\t\t\t\t/* Store whether this is an SVG element, since its properties are retrieved and updated differently than standard HTML elements. */\r\n\t\t\t\t\tisSVG: Type.isSVG(element),\r\n\t\t\t\t\t/* Keep track of whether the element is currently being animated by Velocity.\r\n\t\t\t\t\t This is used to ensure that property values are not transferred between non-consecutive (stale) calls. */\r\n\t\t\t\t\tisAnimating: false,\r\n\t\t\t\t\t/* A reference to the element's live computedStyle object. Learn more here: https://developer.mozilla.org/en/docs/Web/API/window.getComputedStyle */\r\n\t\t\t\t\tcomputedStyle: null,\r\n\t\t\t\t\t/* Tween data is cached for each animation on the element so that data can be passed across calls --\r\n\t\t\t\t\t in particular, end values are used as subsequent start values in consecutive Velocity calls. */\r\n\t\t\t\t\ttweensContainer: null,\r\n\t\t\t\t\t/* The full root property values of each CSS hook being animated on this element are cached so that:\r\n\t\t\t\t\t 1) Concurrently-animating hooks sharing the same root can have their root values' merged into one while tweening.\r\n\t\t\t\t\t 2) Post-hook-injection root values can be transferred over to consecutively chained Velocity calls as starting root values. */\r\n\t\t\t\t\trootPropertyValueCache: {},\r\n\t\t\t\t\t/* A cache for transform updates, which must be manually flushed via CSS.flushTransformCache(). */\r\n\t\t\t\t\ttransformCache: {}\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\t/* A parallel to jQuery's $.css(), used for getting/setting Velocity's hooked CSS properties. */\r\n\t\t\thook: null, /* Defined below. */\r\n\t\t\t/* Velocity-wide animation time remapping for testing purposes. */\r\n\t\t\tmock: false,\r\n\t\t\tversion: {major: 1, minor: 5, patch: 2},\r\n\t\t\t/* Set to 1 or 2 (most verbose) to output debug info to console. */\r\n\t\t\tdebug: false,\r\n\t\t\t/* Use rAF high resolution timestamp when available */\r\n\t\t\ttimestamp: true,\r\n\t\t\t/* Pause all animations */\r\n\t\t\tpauseAll: function(queueName) {\r\n\t\t\t\tvar currentTime = (new Date()).getTime();\r\n\r\n\t\t\t\t$.each(Velocity.State.calls, function(i, activeCall) {\r\n\r\n\t\t\t\t\tif (activeCall) {\r\n\r\n\t\t\t\t\t\t/* If we have a queueName and this call is not on that queue, skip */\r\n\t\t\t\t\t\tif (queueName !== undefined && ((activeCall[2].queue !== queueName) || (activeCall[2].queue === false))) {\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Set call to paused */\r\n\t\t\t\t\t\tactiveCall[5] = {\r\n\t\t\t\t\t\t\tresume: false\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t/* Pause timers on any currently delayed calls */\r\n\t\t\t\t$.each(Velocity.State.delayedElements, function(k, element) {\r\n\t\t\t\t\tif (!element) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tpauseDelayOnElement(element, currentTime);\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\t/* Resume all animations */\r\n\t\t\tresumeAll: function(queueName) {\r\n\t\t\t\tvar currentTime = (new Date()).getTime();\r\n\r\n\t\t\t\t$.each(Velocity.State.calls, function(i, activeCall) {\r\n\r\n\t\t\t\t\tif (activeCall) {\r\n\r\n\t\t\t\t\t\t/* If we have a queueName and this call is not on that queue, skip */\r\n\t\t\t\t\t\tif (queueName !== undefined && ((activeCall[2].queue !== queueName) || (activeCall[2].queue === false))) {\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Set call to resumed if it was paused */\r\n\t\t\t\t\t\tif (activeCall[5]) {\r\n\t\t\t\t\t\t\tactiveCall[5].resume = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\t/* Resume timers on any currently delayed calls */\r\n\t\t\t\t$.each(Velocity.State.delayedElements, function(k, element) {\r\n\t\t\t\t\tif (!element) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tresumeDelayOnElement(element, currentTime);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/* Retrieve the appropriate scroll anchor and property name for the browser: https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollY */\r\n\t\tif (window.pageYOffset !== undefined) {\r\n\t\t\tVelocity.State.scrollAnchor = window;\r\n\t\t\tVelocity.State.scrollPropertyLeft = \"pageXOffset\";\r\n\t\t\tVelocity.State.scrollPropertyTop = \"pageYOffset\";\r\n\t\t} else {\r\n\t\t\tVelocity.State.scrollAnchor = document.documentElement || document.body.parentNode || document.body;\r\n\t\t\tVelocity.State.scrollPropertyLeft = \"scrollLeft\";\r\n\t\t\tVelocity.State.scrollPropertyTop = \"scrollTop\";\r\n\t\t}\r\n\r\n\t\t/* Shorthand alias for jQuery's $.data() utility. */\r\n\t\tfunction Data(element) {\r\n\t\t\t/* Hardcode a reference to the plugin name. */\r\n\t\t\tvar response = $.data(element, \"velocity\");\r\n\r\n\t\t\t/* jQuery <=1.4.2 returns null instead of undefined when no match is found. We normalize this behavior. */\r\n\t\t\treturn response === null ? undefined : response;\r\n\t\t}\r\n\r\n\t\t/**************\r\n\t\t Delay Timer\r\n\t\t **************/\r\n\r\n\t\tfunction pauseDelayOnElement(element, currentTime) {\r\n\t\t\t/* Check for any delay timers, and pause the set timeouts (while preserving time data)\r\n\t\t\t to be resumed when the \"resume\" command is issued */\r\n\t\t\tvar data = Data(element);\r\n\t\t\tif (data && data.delayTimer && !data.delayPaused) {\r\n\t\t\t\tdata.delayRemaining = data.delay - currentTime + data.delayBegin;\r\n\t\t\t\tdata.delayPaused = true;\r\n\t\t\t\tclearTimeout(data.delayTimer.setTimeout);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction resumeDelayOnElement(element, currentTime) {\r\n\t\t\t/* Check for any paused timers and resume */\r\n\t\t\tvar data = Data(element);\r\n\t\t\tif (data && data.delayTimer && data.delayPaused) {\r\n\t\t\t\t/* If the element was mid-delay, re initiate the timeout with the remaining delay */\r\n\t\t\t\tdata.delayPaused = false;\r\n\t\t\t\tdata.delayTimer.setTimeout = setTimeout(data.delayTimer.next, data.delayRemaining);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\r\n\t\t/**************\r\n\t\t Easing\r\n\t\t **************/\r\n\r\n\t\t/* Step easing generator. */\r\n\t\tfunction generateStep(steps) {\r\n\t\t\treturn function(p) {\r\n\t\t\t\treturn Math.round(p * steps) * (1 / steps);\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\t/* Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License */\r\n\t\tfunction generateBezier(mX1, mY1, mX2, mY2) {\r\n\t\t\tvar NEWTON_ITERATIONS = 4,\r\n\t\t\t\t\tNEWTON_MIN_SLOPE = 0.001,\r\n\t\t\t\t\tSUBDIVISION_PRECISION = 0.0000001,\r\n\t\t\t\t\tSUBDIVISION_MAX_ITERATIONS = 10,\r\n\t\t\t\t\tkSplineTableSize = 11,\r\n\t\t\t\t\tkSampleStepSize = 1.0 / (kSplineTableSize - 1.0),\r\n\t\t\t\t\tfloat32ArraySupported = \"Float32Array\" in window;\r\n\r\n\t\t\t/* Must contain four arguments. */\r\n\t\t\tif (arguments.length !== 4) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t/* Arguments must be numbers. */\r\n\t\t\tfor (var i = 0; i < 4; ++i) {\r\n\t\t\t\tif (typeof arguments[i] !== \"number\" || isNaN(arguments[i]) || !isFinite(arguments[i])) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/* X values must be in the [0, 1] range. */\r\n\t\t\tmX1 = Math.min(mX1, 1);\r\n\t\t\tmX2 = Math.min(mX2, 1);\r\n\t\t\tmX1 = Math.max(mX1, 0);\r\n\t\t\tmX2 = Math.max(mX2, 0);\r\n\r\n\t\t\tvar mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\r\n\r\n\t\t\tfunction A(aA1, aA2) {\r\n\t\t\t\treturn 1.0 - 3.0 * aA2 + 3.0 * aA1;\r\n\t\t\t}\r\n\t\t\tfunction B(aA1, aA2) {\r\n\t\t\t\treturn 3.0 * aA2 - 6.0 * aA1;\r\n\t\t\t}\r\n\t\t\tfunction C(aA1) {\r\n\t\t\t\treturn 3.0 * aA1;\r\n\t\t\t}\r\n\r\n\t\t\tfunction calcBezier(aT, aA1, aA2) {\r\n\t\t\t\treturn ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\r\n\t\t\t}\r\n\r\n\t\t\tfunction getSlope(aT, aA1, aA2) {\r\n\t\t\t\treturn 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\r\n\t\t\t}\r\n\r\n\t\t\tfunction newtonRaphsonIterate(aX, aGuessT) {\r\n\t\t\t\tfor (var i = 0; i < NEWTON_ITERATIONS; ++i) {\r\n\t\t\t\t\tvar currentSlope = getSlope(aGuessT, mX1, mX2);\r\n\r\n\t\t\t\t\tif (currentSlope === 0.0) {\r\n\t\t\t\t\t\treturn aGuessT;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar currentX = calcBezier(aGuessT, mX1, mX2) - aX;\r\n\t\t\t\t\taGuessT -= currentX / currentSlope;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn aGuessT;\r\n\t\t\t}\r\n\r\n\t\t\tfunction calcSampleValues() {\r\n\t\t\t\tfor (var i = 0; i < kSplineTableSize; ++i) {\r\n\t\t\t\t\tmSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction binarySubdivide(aX, aA, aB) {\r\n\t\t\t\tvar currentX, currentT, i = 0;\r\n\r\n\t\t\t\tdo {\r\n\t\t\t\t\tcurrentT = aA + (aB - aA) / 2.0;\r\n\t\t\t\t\tcurrentX = calcBezier(currentT, mX1, mX2) - aX;\r\n\t\t\t\t\tif (currentX > 0.0) {\r\n\t\t\t\t\t\taB = currentT;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\taA = currentT;\r\n\t\t\t\t\t}\r\n\t\t\t\t} while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\r\n\r\n\t\t\t\treturn currentT;\r\n\t\t\t}\r\n\r\n\t\t\tfunction getTForX(aX) {\r\n\t\t\t\tvar intervalStart = 0.0,\r\n\t\t\t\t\t\tcurrentSample = 1,\r\n\t\t\t\t\t\tlastSample = kSplineTableSize - 1;\r\n\r\n\t\t\t\tfor (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\r\n\t\t\t\t\tintervalStart += kSampleStepSize;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t--currentSample;\r\n\r\n\t\t\t\tvar dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]),\r\n\t\t\t\t\t\tguessForT = intervalStart + dist * kSampleStepSize,\r\n\t\t\t\t\t\tinitialSlope = getSlope(guessForT, mX1, mX2);\r\n\r\n\t\t\t\tif (initialSlope >= NEWTON_MIN_SLOPE) {\r\n\t\t\t\t\treturn newtonRaphsonIterate(aX, guessForT);\r\n\t\t\t\t} else if (initialSlope === 0.0) {\r\n\t\t\t\t\treturn guessForT;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar _precomputed = false;\r\n\r\n\t\t\tfunction precompute() {\r\n\t\t\t\t_precomputed = true;\r\n\t\t\t\tif (mX1 !== mY1 || mX2 !== mY2) {\r\n\t\t\t\t\tcalcSampleValues();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar f = function(aX) {\r\n\t\t\t\tif (!_precomputed) {\r\n\t\t\t\t\tprecompute();\r\n\t\t\t\t}\r\n\t\t\t\tif (mX1 === mY1 && mX2 === mY2) {\r\n\t\t\t\t\treturn aX;\r\n\t\t\t\t}\r\n\t\t\t\tif (aX === 0) {\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t}\r\n\t\t\t\tif (aX === 1) {\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn calcBezier(getTForX(aX), mY1, mY2);\r\n\t\t\t};\r\n\r\n\t\t\tf.getControlPoints = function() {\r\n\t\t\t\treturn [{x: mX1, y: mY1}, {x: mX2, y: mY2}];\r\n\t\t\t};\r\n\r\n\t\t\tvar str = \"generateBezier(\" + [mX1, mY1, mX2, mY2] + \")\";\r\n\t\t\tf.toString = function() {\r\n\t\t\t\treturn str;\r\n\t\t\t};\r\n\r\n\t\t\treturn f;\r\n\t\t}\r\n\r\n\t\t/* Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */\r\n\t\t/* Given a tension, friction, and duration, a simulation at 60FPS will first run without a defined duration in order to calculate the full path. A second pass\r\n\t\t then adjusts the time delta -- using the relation between actual time and duration -- to calculate the path for the duration-constrained animation. */\r\n\t\tvar generateSpringRK4 = (function() {\r\n\t\t\tfunction springAccelerationForState(state) {\r\n\t\t\t\treturn (-state.tension * state.x) - (state.friction * state.v);\r\n\t\t\t}\r\n\r\n\t\t\tfunction springEvaluateStateWithDerivative(initialState, dt, derivative) {\r\n\t\t\t\tvar state = {\r\n\t\t\t\t\tx: initialState.x + derivative.dx * dt,\r\n\t\t\t\t\tv: initialState.v + derivative.dv * dt,\r\n\t\t\t\t\ttension: initialState.tension,\r\n\t\t\t\t\tfriction: initialState.friction\r\n\t\t\t\t};\r\n\r\n\t\t\t\treturn {dx: state.v, dv: springAccelerationForState(state)};\r\n\t\t\t}\r\n\r\n\t\t\tfunction springIntegrateState(state, dt) {\r\n\t\t\t\tvar a = {\r\n\t\t\t\t\tdx: state.v,\r\n\t\t\t\t\tdv: springAccelerationForState(state)\r\n\t\t\t\t},\r\n\t\t\t\t\t\tb = springEvaluateStateWithDerivative(state, dt * 0.5, a),\r\n\t\t\t\t\t\tc = springEvaluateStateWithDerivative(state, dt * 0.5, b),\r\n\t\t\t\t\t\td = springEvaluateStateWithDerivative(state, dt, c),\r\n\t\t\t\t\t\tdxdt = 1.0 / 6.0 * (a.dx + 2.0 * (b.dx + c.dx) + d.dx),\r\n\t\t\t\t\t\tdvdt = 1.0 / 6.0 * (a.dv + 2.0 * (b.dv + c.dv) + d.dv);\r\n\r\n\t\t\t\tstate.x = state.x + dxdt * dt;\r\n\t\t\t\tstate.v = state.v + dvdt * dt;\r\n\r\n\t\t\t\treturn state;\r\n\t\t\t}\r\n\r\n\t\t\treturn function springRK4Factory(tension, friction, duration) {\r\n\r\n\t\t\t\tvar initState = {\r\n\t\t\t\t\tx: -1,\r\n\t\t\t\t\tv: 0,\r\n\t\t\t\t\ttension: null,\r\n\t\t\t\t\tfriction: null\r\n\t\t\t\t},\r\n\t\t\t\t\t\tpath = [0],\r\n\t\t\t\t\t\ttime_lapsed = 0,\r\n\t\t\t\t\t\ttolerance = 1 / 10000,\r\n\t\t\t\t\t\tDT = 16 / 1000,\r\n\t\t\t\t\t\thave_duration, dt, last_state;\r\n\r\n\t\t\t\ttension = parseFloat(tension) || 500;\r\n\t\t\t\tfriction = parseFloat(friction) || 20;\r\n\t\t\t\tduration = duration || null;\r\n\r\n\t\t\t\tinitState.tension = tension;\r\n\t\t\t\tinitState.friction = friction;\r\n\r\n\t\t\t\thave_duration = duration !== null;\r\n\r\n\t\t\t\t/* Calculate the actual time it takes for this animation to complete with the provided conditions. */\r\n\t\t\t\tif (have_duration) {\r\n\t\t\t\t\t/* Run the simulation without a duration. */\r\n\t\t\t\t\ttime_lapsed = springRK4Factory(tension, friction);\r\n\t\t\t\t\t/* Compute the adjusted time delta. */\r\n\t\t\t\t\tdt = time_lapsed / duration * DT;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdt = DT;\r\n\t\t\t\t}\r\n\r\n\t\t\t\twhile (true) {\r\n\t\t\t\t\t/* Next/step function .*/\r\n\t\t\t\t\tlast_state = springIntegrateState(last_state || initState, dt);\r\n\t\t\t\t\t/* Store the position. */\r\n\t\t\t\t\tpath.push(1 + last_state.x);\r\n\t\t\t\t\ttime_lapsed += 16;\r\n\t\t\t\t\t/* If the change threshold is reached, break. */\r\n\t\t\t\t\tif (!(Math.abs(last_state.x) > tolerance && Math.abs(last_state.v) > tolerance)) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* If duration is not defined, return the actual time required for completing this animation. Otherwise, return a closure that holds the\r\n\t\t\t\t computed path and returns a snapshot of the position according to a given percentComplete. */\r\n\t\t\t\treturn !have_duration ? time_lapsed : function(percentComplete) {\r\n\t\t\t\t\treturn path[ (percentComplete * (path.length - 1)) | 0 ];\r\n\t\t\t\t};\r\n\t\t\t};\r\n\t\t}());\r\n\r\n\t\t/* jQuery easings. */\r\n\t\tVelocity.Easings = {\r\n\t\t\tlinear: function(p) {\r\n\t\t\t\treturn p;\r\n\t\t\t},\r\n\t\t\tswing: function(p) {\r\n\t\t\t\treturn 0.5 - Math.cos(p * Math.PI) / 2;\r\n\t\t\t},\r\n\t\t\t/* Bonus \"spring\" easing, which is a less exaggerated version of easeInOutElastic. */\r\n\t\t\tspring: function(p) {\r\n\t\t\t\treturn 1 - (Math.cos(p * 4.5 * Math.PI) * Math.exp(-p * 6));\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/* CSS3 and Robert Penner easings. */\r\n\t\t$.each(\r\n\t\t\t\t[\r\n\t\t\t\t\t[\"ease\", [0.25, 0.1, 0.25, 1.0]],\r\n\t\t\t\t\t[\"ease-in\", [0.42, 0.0, 1.00, 1.0]],\r\n\t\t\t\t\t[\"ease-out\", [0.00, 0.0, 0.58, 1.0]],\r\n\t\t\t\t\t[\"ease-in-out\", [0.42, 0.0, 0.58, 1.0]],\r\n\t\t\t\t\t[\"easeInSine\", [0.47, 0, 0.745, 0.715]],\r\n\t\t\t\t\t[\"easeOutSine\", [0.39, 0.575, 0.565, 1]],\r\n\t\t\t\t\t[\"easeInOutSine\", [0.445, 0.05, 0.55, 0.95]],\r\n\t\t\t\t\t[\"easeInQuad\", [0.55, 0.085, 0.68, 0.53]],\r\n\t\t\t\t\t[\"easeOutQuad\", [0.25, 0.46, 0.45, 0.94]],\r\n\t\t\t\t\t[\"easeInOutQuad\", [0.455, 0.03, 0.515, 0.955]],\r\n\t\t\t\t\t[\"easeInCubic\", [0.55, 0.055, 0.675, 0.19]],\r\n\t\t\t\t\t[\"easeOutCubic\", [0.215, 0.61, 0.355, 1]],\r\n\t\t\t\t\t[\"easeInOutCubic\", [0.645, 0.045, 0.355, 1]],\r\n\t\t\t\t\t[\"easeInQuart\", [0.895, 0.03, 0.685, 0.22]],\r\n\t\t\t\t\t[\"easeOutQuart\", [0.165, 0.84, 0.44, 1]],\r\n\t\t\t\t\t[\"easeInOutQuart\", [0.77, 0, 0.175, 1]],\r\n\t\t\t\t\t[\"easeInQuint\", [0.755, 0.05, 0.855, 0.06]],\r\n\t\t\t\t\t[\"easeOutQuint\", [0.23, 1, 0.32, 1]],\r\n\t\t\t\t\t[\"easeInOutQuint\", [0.86, 0, 0.07, 1]],\r\n\t\t\t\t\t[\"easeInExpo\", [0.95, 0.05, 0.795, 0.035]],\r\n\t\t\t\t\t[\"easeOutExpo\", [0.19, 1, 0.22, 1]],\r\n\t\t\t\t\t[\"easeInOutExpo\", [1, 0, 0, 1]],\r\n\t\t\t\t\t[\"easeInCirc\", [0.6, 0.04, 0.98, 0.335]],\r\n\t\t\t\t\t[\"easeOutCirc\", [0.075, 0.82, 0.165, 1]],\r\n\t\t\t\t\t[\"easeInOutCirc\", [0.785, 0.135, 0.15, 0.86]]\r\n\t\t\t\t], function(i, easingArray) {\r\n\t\t\tVelocity.Easings[easingArray[0]] = generateBezier.apply(null, easingArray[1]);\r\n\t\t});\r\n\r\n\t\t/* Determine the appropriate easing type given an easing input. */\r\n\t\tfunction getEasing(value, duration) {\r\n\t\t\tvar easing = value;\r\n\r\n\t\t\t/* The easing option can either be a string that references a pre-registered easing,\r\n\t\t\t or it can be a two-/four-item array of integers to be converted into a bezier/spring function. */\r\n\t\t\tif (Type.isString(value)) {\r\n\t\t\t\t/* Ensure that the easing has been assigned to jQuery's Velocity.Easings object. */\r\n\t\t\t\tif (!Velocity.Easings[value]) {\r\n\t\t\t\t\teasing = false;\r\n\t\t\t\t}\r\n\t\t\t} else if (Type.isArray(value) && value.length === 1) {\r\n\t\t\t\teasing = generateStep.apply(null, value);\r\n\t\t\t} else if (Type.isArray(value) && value.length === 2) {\r\n\t\t\t\t/* springRK4 must be passed the animation's duration. */\r\n\t\t\t\t/* Note: If the springRK4 array contains non-numbers, generateSpringRK4() returns an easing\r\n\t\t\t\t function generated with default tension and friction values. */\r\n\t\t\t\teasing = generateSpringRK4.apply(null, value.concat([duration]));\r\n\t\t\t} else if (Type.isArray(value) && value.length === 4) {\r\n\t\t\t\t/* Note: If the bezier array contains non-numbers, generateBezier() returns false. */\r\n\t\t\t\teasing = generateBezier.apply(null, value);\r\n\t\t\t} else {\r\n\t\t\t\teasing = false;\r\n\t\t\t}\r\n\r\n\t\t\t/* Revert to the Velocity-wide default easing type, or fall back to \"swing\" (which is also jQuery's default)\r\n\t\t\t if the Velocity-wide default has been incorrectly modified. */\r\n\t\t\tif (easing === false) {\r\n\t\t\t\tif (Velocity.Easings[Velocity.defaults.easing]) {\r\n\t\t\t\t\teasing = Velocity.defaults.easing;\r\n\t\t\t\t} else {\r\n\t\t\t\t\teasing = EASING_DEFAULT;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn easing;\r\n\t\t}\r\n\r\n\t\t/*****************\r\n\t\t CSS Stack\r\n\t\t *****************/\r\n\r\n\t\t/* The CSS object is a highly condensed and performant CSS stack that fully replaces jQuery's.\r\n\t\t It handles the validation, getting, and setting of both standard CSS properties and CSS property hooks. */\r\n\t\t/* Note: A \"CSS\" shorthand is aliased so that our code is easier to read. */\r\n\t\tvar CSS = Velocity.CSS = {\r\n\t\t\t/*************\r\n\t\t\t RegEx\r\n\t\t\t *************/\r\n\r\n\t\t\tRegEx: {\r\n\t\t\t\tisHex: /^#([A-f\\d]{3}){1,2}$/i,\r\n\t\t\t\t/* Unwrap a property value's surrounding text, e.g. \"rgba(4, 3, 2, 1)\" ==> \"4, 3, 2, 1\" and \"rect(4px 3px 2px 1px)\" ==> \"4px 3px 2px 1px\". */\r\n\t\t\t\tvalueUnwrap: /^[A-z]+\\((.*)\\)$/i,\r\n\t\t\t\twrappedValueAlreadyExtracted: /[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,\r\n\t\t\t\t/* Split a multi-value property into an array of subvalues, e.g. \"rgba(4, 3, 2, 1) 4px 3px 2px 1px\" ==> [ \"rgba(4, 3, 2, 1)\", \"4px\", \"3px\", \"2px\", \"1px\" ]. */\r\n\t\t\t\tvalueSplit: /([A-z]+\\(.+\\))|(([A-z0-9#-.]+?)(?=\\s|$))/ig\r\n\t\t\t},\r\n\t\t\t/************\r\n\t\t\t Lists\r\n\t\t\t ************/\r\n\r\n\t\t\tLists: {\r\n\t\t\t\tcolors: [\"fill\", \"stroke\", \"stopColor\", \"color\", \"backgroundColor\", \"borderColor\", \"borderTopColor\", \"borderRightColor\", \"borderBottomColor\", \"borderLeftColor\", \"outlineColor\"],\r\n\t\t\t\ttransformsBase: [\"translateX\", \"translateY\", \"scale\", \"scaleX\", \"scaleY\", \"skewX\", \"skewY\", \"rotateZ\"],\r\n\t\t\t\ttransforms3D: [\"transformPerspective\", \"translateZ\", \"scaleZ\", \"rotateX\", \"rotateY\"],\r\n\t\t\t\tunits: [\r\n\t\t\t\t\t\"%\", // relative\r\n\t\t\t\t\t\"em\", \"ex\", \"ch\", \"rem\", // font relative\r\n\t\t\t\t\t\"vw\", \"vh\", \"vmin\", \"vmax\", // viewport relative\r\n\t\t\t\t\t\"cm\", \"mm\", \"Q\", \"in\", \"pc\", \"pt\", \"px\", // absolute lengths\r\n\t\t\t\t\t\"deg\", \"grad\", \"rad\", \"turn\", // angles\r\n\t\t\t\t\t\"s\", \"ms\" // time\r\n\t\t\t\t],\r\n\t\t\t\tcolorNames: {\r\n\t\t\t\t\t\"aliceblue\": \"240,248,255\",\r\n\t\t\t\t\t\"antiquewhite\": \"250,235,215\",\r\n\t\t\t\t\t\"aquamarine\": \"127,255,212\",\r\n\t\t\t\t\t\"aqua\": \"0,255,255\",\r\n\t\t\t\t\t\"azure\": \"240,255,255\",\r\n\t\t\t\t\t\"beige\": \"245,245,220\",\r\n\t\t\t\t\t\"bisque\": \"255,228,196\",\r\n\t\t\t\t\t\"black\": \"0,0,0\",\r\n\t\t\t\t\t\"blanchedalmond\": \"255,235,205\",\r\n\t\t\t\t\t\"blueviolet\": \"138,43,226\",\r\n\t\t\t\t\t\"blue\": \"0,0,255\",\r\n\t\t\t\t\t\"brown\": \"165,42,42\",\r\n\t\t\t\t\t\"burlywood\": \"222,184,135\",\r\n\t\t\t\t\t\"cadetblue\": \"95,158,160\",\r\n\t\t\t\t\t\"chartreuse\": \"127,255,0\",\r\n\t\t\t\t\t\"chocolate\": \"210,105,30\",\r\n\t\t\t\t\t\"coral\": \"255,127,80\",\r\n\t\t\t\t\t\"cornflowerblue\": \"100,149,237\",\r\n\t\t\t\t\t\"cornsilk\": \"255,248,220\",\r\n\t\t\t\t\t\"crimson\": \"220,20,60\",\r\n\t\t\t\t\t\"cyan\": \"0,255,255\",\r\n\t\t\t\t\t\"darkblue\": \"0,0,139\",\r\n\t\t\t\t\t\"darkcyan\": \"0,139,139\",\r\n\t\t\t\t\t\"darkgoldenrod\": \"184,134,11\",\r\n\t\t\t\t\t\"darkgray\": \"169,169,169\",\r\n\t\t\t\t\t\"darkgrey\": \"169,169,169\",\r\n\t\t\t\t\t\"darkgreen\": \"0,100,0\",\r\n\t\t\t\t\t\"darkkhaki\": \"189,183,107\",\r\n\t\t\t\t\t\"darkmagenta\": \"139,0,139\",\r\n\t\t\t\t\t\"darkolivegreen\": \"85,107,47\",\r\n\t\t\t\t\t\"darkorange\": \"255,140,0\",\r\n\t\t\t\t\t\"darkorchid\": \"153,50,204\",\r\n\t\t\t\t\t\"darkred\": \"139,0,0\",\r\n\t\t\t\t\t\"darksalmon\": \"233,150,122\",\r\n\t\t\t\t\t\"darkseagreen\": \"143,188,143\",\r\n\t\t\t\t\t\"darkslateblue\": \"72,61,139\",\r\n\t\t\t\t\t\"darkslategray\": \"47,79,79\",\r\n\t\t\t\t\t\"darkturquoise\": \"0,206,209\",\r\n\t\t\t\t\t\"darkviolet\": \"148,0,211\",\r\n\t\t\t\t\t\"deeppink\": \"255,20,147\",\r\n\t\t\t\t\t\"deepskyblue\": \"0,191,255\",\r\n\t\t\t\t\t\"dimgray\": \"105,105,105\",\r\n\t\t\t\t\t\"dimgrey\": \"105,105,105\",\r\n\t\t\t\t\t\"dodgerblue\": \"30,144,255\",\r\n\t\t\t\t\t\"firebrick\": \"178,34,34\",\r\n\t\t\t\t\t\"floralwhite\": \"255,250,240\",\r\n\t\t\t\t\t\"forestgreen\": \"34,139,34\",\r\n\t\t\t\t\t\"fuchsia\": \"255,0,255\",\r\n\t\t\t\t\t\"gainsboro\": \"220,220,220\",\r\n\t\t\t\t\t\"ghostwhite\": \"248,248,255\",\r\n\t\t\t\t\t\"gold\": \"255,215,0\",\r\n\t\t\t\t\t\"goldenrod\": \"218,165,32\",\r\n\t\t\t\t\t\"gray\": \"128,128,128\",\r\n\t\t\t\t\t\"grey\": \"128,128,128\",\r\n\t\t\t\t\t\"greenyellow\": \"173,255,47\",\r\n\t\t\t\t\t\"green\": \"0,128,0\",\r\n\t\t\t\t\t\"honeydew\": \"240,255,240\",\r\n\t\t\t\t\t\"hotpink\": \"255,105,180\",\r\n\t\t\t\t\t\"indianred\": \"205,92,92\",\r\n\t\t\t\t\t\"indigo\": \"75,0,130\",\r\n\t\t\t\t\t\"ivory\": \"255,255,240\",\r\n\t\t\t\t\t\"khaki\": \"240,230,140\",\r\n\t\t\t\t\t\"lavenderblush\": \"255,240,245\",\r\n\t\t\t\t\t\"lavender\": \"230,230,250\",\r\n\t\t\t\t\t\"lawngreen\": \"124,252,0\",\r\n\t\t\t\t\t\"lemonchiffon\": \"255,250,205\",\r\n\t\t\t\t\t\"lightblue\": \"173,216,230\",\r\n\t\t\t\t\t\"lightcoral\": \"240,128,128\",\r\n\t\t\t\t\t\"lightcyan\": \"224,255,255\",\r\n\t\t\t\t\t\"lightgoldenrodyellow\": \"250,250,210\",\r\n\t\t\t\t\t\"lightgray\": \"211,211,211\",\r\n\t\t\t\t\t\"lightgrey\": \"211,211,211\",\r\n\t\t\t\t\t\"lightgreen\": \"144,238,144\",\r\n\t\t\t\t\t\"lightpink\": \"255,182,193\",\r\n\t\t\t\t\t\"lightsalmon\": \"255,160,122\",\r\n\t\t\t\t\t\"lightseagreen\": \"32,178,170\",\r\n\t\t\t\t\t\"lightskyblue\": \"135,206,250\",\r\n\t\t\t\t\t\"lightslategray\": \"119,136,153\",\r\n\t\t\t\t\t\"lightsteelblue\": \"176,196,222\",\r\n\t\t\t\t\t\"lightyellow\": \"255,255,224\",\r\n\t\t\t\t\t\"limegreen\": \"50,205,50\",\r\n\t\t\t\t\t\"lime\": \"0,255,0\",\r\n\t\t\t\t\t\"linen\": \"250,240,230\",\r\n\t\t\t\t\t\"magenta\": \"255,0,255\",\r\n\t\t\t\t\t\"maroon\": \"128,0,0\",\r\n\t\t\t\t\t\"mediumaquamarine\": \"102,205,170\",\r\n\t\t\t\t\t\"mediumblue\": \"0,0,205\",\r\n\t\t\t\t\t\"mediumorchid\": \"186,85,211\",\r\n\t\t\t\t\t\"mediumpurple\": \"147,112,219\",\r\n\t\t\t\t\t\"mediumseagreen\": \"60,179,113\",\r\n\t\t\t\t\t\"mediumslateblue\": \"123,104,238\",\r\n\t\t\t\t\t\"mediumspringgreen\": \"0,250,154\",\r\n\t\t\t\t\t\"mediumturquoise\": \"72,209,204\",\r\n\t\t\t\t\t\"mediumvioletred\": \"199,21,133\",\r\n\t\t\t\t\t\"midnightblue\": \"25,25,112\",\r\n\t\t\t\t\t\"mintcream\": \"245,255,250\",\r\n\t\t\t\t\t\"mistyrose\": \"255,228,225\",\r\n\t\t\t\t\t\"moccasin\": \"255,228,181\",\r\n\t\t\t\t\t\"navajowhite\": \"255,222,173\",\r\n\t\t\t\t\t\"navy\": \"0,0,128\",\r\n\t\t\t\t\t\"oldlace\": \"253,245,230\",\r\n\t\t\t\t\t\"olivedrab\": \"107,142,35\",\r\n\t\t\t\t\t\"olive\": \"128,128,0\",\r\n\t\t\t\t\t\"orangered\": \"255,69,0\",\r\n\t\t\t\t\t\"orange\": \"255,165,0\",\r\n\t\t\t\t\t\"orchid\": \"218,112,214\",\r\n\t\t\t\t\t\"palegoldenrod\": \"238,232,170\",\r\n\t\t\t\t\t\"palegreen\": \"152,251,152\",\r\n\t\t\t\t\t\"paleturquoise\": \"175,238,238\",\r\n\t\t\t\t\t\"palevioletred\": \"219,112,147\",\r\n\t\t\t\t\t\"papayawhip\": \"255,239,213\",\r\n\t\t\t\t\t\"peachpuff\": \"255,218,185\",\r\n\t\t\t\t\t\"peru\": \"205,133,63\",\r\n\t\t\t\t\t\"pink\": \"255,192,203\",\r\n\t\t\t\t\t\"plum\": \"221,160,221\",\r\n\t\t\t\t\t\"powderblue\": \"176,224,230\",\r\n\t\t\t\t\t\"purple\": \"128,0,128\",\r\n\t\t\t\t\t\"red\": \"255,0,0\",\r\n\t\t\t\t\t\"rosybrown\": \"188,143,143\",\r\n\t\t\t\t\t\"royalblue\": \"65,105,225\",\r\n\t\t\t\t\t\"saddlebrown\": \"139,69,19\",\r\n\t\t\t\t\t\"salmon\": \"250,128,114\",\r\n\t\t\t\t\t\"sandybrown\": \"244,164,96\",\r\n\t\t\t\t\t\"seagreen\": \"46,139,87\",\r\n\t\t\t\t\t\"seashell\": \"255,245,238\",\r\n\t\t\t\t\t\"sienna\": \"160,82,45\",\r\n\t\t\t\t\t\"silver\": \"192,192,192\",\r\n\t\t\t\t\t\"skyblue\": \"135,206,235\",\r\n\t\t\t\t\t\"slateblue\": \"106,90,205\",\r\n\t\t\t\t\t\"slategray\": \"112,128,144\",\r\n\t\t\t\t\t\"snow\": \"255,250,250\",\r\n\t\t\t\t\t\"springgreen\": \"0,255,127\",\r\n\t\t\t\t\t\"steelblue\": \"70,130,180\",\r\n\t\t\t\t\t\"tan\": \"210,180,140\",\r\n\t\t\t\t\t\"teal\": \"0,128,128\",\r\n\t\t\t\t\t\"thistle\": \"216,191,216\",\r\n\t\t\t\t\t\"tomato\": \"255,99,71\",\r\n\t\t\t\t\t\"turquoise\": \"64,224,208\",\r\n\t\t\t\t\t\"violet\": \"238,130,238\",\r\n\t\t\t\t\t\"wheat\": \"245,222,179\",\r\n\t\t\t\t\t\"whitesmoke\": \"245,245,245\",\r\n\t\t\t\t\t\"white\": \"255,255,255\",\r\n\t\t\t\t\t\"yellowgreen\": \"154,205,50\",\r\n\t\t\t\t\t\"yellow\": \"255,255,0\"\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t/************\r\n\t\t\t Hooks\r\n\t\t\t ************/\r\n\r\n\t\t\t/* Hooks allow a subproperty (e.g. \"boxShadowBlur\") of a compound-value CSS property\r\n\t\t\t (e.g. \"boxShadow: X Y Blur Spread Color\") to be animated as if it were a discrete property. */\r\n\t\t\t/* Note: Beyond enabling fine-grained property animation, hooking is necessary since Velocity only\r\n\t\t\t tweens properties with single numeric values; unlike CSS transitions, Velocity does not interpolate compound-values. */\r\n\t\t\tHooks: {\r\n\t\t\t\t/********************\r\n\t\t\t\t Registration\r\n\t\t\t\t ********************/\r\n\r\n\t\t\t\t/* Templates are a concise way of indicating which subproperties must be individually registered for each compound-value CSS property. */\r\n\t\t\t\t/* Each template consists of the compound-value's base name, its constituent subproperty names, and those subproperties' default values. */\r\n\t\t\t\ttemplates: {\r\n\t\t\t\t\t\"textShadow\": [\"Color X Y Blur\", \"black 0px 0px 0px\"],\r\n\t\t\t\t\t\"boxShadow\": [\"Color X Y Blur Spread\", \"black 0px 0px 0px 0px\"],\r\n\t\t\t\t\t\"clip\": [\"Top Right Bottom Left\", \"0px 0px 0px 0px\"],\r\n\t\t\t\t\t\"backgroundPosition\": [\"X Y\", \"0% 0%\"],\r\n\t\t\t\t\t\"transformOrigin\": [\"X Y Z\", \"50% 50% 0px\"],\r\n\t\t\t\t\t\"perspectiveOrigin\": [\"X Y\", \"50% 50%\"]\r\n\t\t\t\t},\r\n\t\t\t\t/* A \"registered\" hook is one that has been converted from its template form into a live,\r\n\t\t\t\t tweenable property. It contains data to associate it with its root property. */\r\n\t\t\t\tregistered: {\r\n\t\t\t\t\t/* Note: A registered hook looks like this ==> textShadowBlur: [ \"textShadow\", 3 ],\r\n\t\t\t\t\t which consists of the subproperty's name, the associated root property's name,\r\n\t\t\t\t\t and the subproperty's position in the root's value. */\r\n\t\t\t\t},\r\n\t\t\t\t/* Convert the templates into individual hooks then append them to the registered object above. */\r\n\t\t\t\tregister: function() {\r\n\t\t\t\t\t/* Color hooks registration: Colors are defaulted to white -- as opposed to black -- since colors that are\r\n\t\t\t\t\t currently set to \"transparent\" default to their respective template below when color-animated,\r\n\t\t\t\t\t and white is typically a closer match to transparent than black is. An exception is made for text (\"color\"),\r\n\t\t\t\t\t which is almost always set closer to black than white. */\r\n\t\t\t\t\tfor (var i = 0; i < CSS.Lists.colors.length; i++) {\r\n\t\t\t\t\t\tvar rgbComponents = (CSS.Lists.colors[i] === \"color\") ? \"0 0 0 1\" : \"255 255 255 1\";\r\n\t\t\t\t\t\tCSS.Hooks.templates[CSS.Lists.colors[i]] = [\"Red Green Blue Alpha\", rgbComponents];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar rootProperty,\r\n\t\t\t\t\t\t\thookTemplate,\r\n\t\t\t\t\t\t\thookNames;\r\n\r\n\t\t\t\t\t/* In IE, color values inside compound-value properties are positioned at the end the value instead of at the beginning.\r\n\t\t\t\t\t Thus, we re-arrange the templates accordingly. */\r\n\t\t\t\t\tif (IE) {\r\n\t\t\t\t\t\tfor (rootProperty in CSS.Hooks.templates) {\r\n\t\t\t\t\t\t\tif (!CSS.Hooks.templates.hasOwnProperty(rootProperty)) {\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\thookTemplate = CSS.Hooks.templates[rootProperty];\r\n\t\t\t\t\t\t\thookNames = hookTemplate[0].split(\" \");\r\n\r\n\t\t\t\t\t\t\tvar defaultValues = hookTemplate[1].match(CSS.RegEx.valueSplit);\r\n\r\n\t\t\t\t\t\t\tif (hookNames[0] === \"Color\") {\r\n\t\t\t\t\t\t\t\t/* Reposition both the hook's name and its default value to the end of their respective strings. */\r\n\t\t\t\t\t\t\t\thookNames.push(hookNames.shift());\r\n\t\t\t\t\t\t\t\tdefaultValues.push(defaultValues.shift());\r\n\r\n\t\t\t\t\t\t\t\t/* Replace the existing template for the hook's root property. */\r\n\t\t\t\t\t\t\t\tCSS.Hooks.templates[rootProperty] = [hookNames.join(\" \"), defaultValues.join(\" \")];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* Hook registration. */\r\n\t\t\t\t\tfor (rootProperty in CSS.Hooks.templates) {\r\n\t\t\t\t\t\tif (!CSS.Hooks.templates.hasOwnProperty(rootProperty)) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\thookTemplate = CSS.Hooks.templates[rootProperty];\r\n\t\t\t\t\t\thookNames = hookTemplate[0].split(\" \");\r\n\r\n\t\t\t\t\t\tfor (var j in hookNames) {\r\n\t\t\t\t\t\t\tif (!hookNames.hasOwnProperty(j)) {\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tvar fullHookName = rootProperty + hookNames[j],\r\n\t\t\t\t\t\t\t\t\thookPosition = j;\r\n\r\n\t\t\t\t\t\t\t/* For each hook, register its full name (e.g. textShadowBlur) with its root property (e.g. textShadow)\r\n\t\t\t\t\t\t\t and the hook's position in its template's default value string. */\r\n\t\t\t\t\t\t\tCSS.Hooks.registered[fullHookName] = [rootProperty, hookPosition];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t/*****************************\r\n\t\t\t\t Injection and Extraction\r\n\t\t\t\t *****************************/\r\n\r\n\t\t\t\t/* Look up the root property associated with the hook (e.g. return \"textShadow\" for \"textShadowBlur\"). */\r\n\t\t\t\t/* Since a hook cannot be set directly (the browser won't recognize it), style updating for hooks is routed through the hook's root property. */\r\n\t\t\t\tgetRoot: function(property) {\r\n\t\t\t\t\tvar hookData = CSS.Hooks.registered[property];\r\n\r\n\t\t\t\t\tif (hookData) {\r\n\t\t\t\t\t\treturn hookData[0];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t/* If there was no hook match, return the property name untouched. */\r\n\t\t\t\t\t\treturn property;\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tgetUnit: function(str, start) {\r\n\t\t\t\t\tvar unit = (str.substr(start || 0, 5).match(/^[a-z%]+/) || [])[0] || \"\";\r\n\r\n\t\t\t\t\tif (unit && _inArray(CSS.Lists.units, unit)) {\r\n\t\t\t\t\t\treturn unit;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn \"\";\r\n\t\t\t\t},\r\n\t\t\t\tfixColors: function(str) {\r\n\t\t\t\t\treturn str.replace(/(rgba?\\(\\s*)?(\\b[a-z]+\\b)/g, function($0, $1, $2) {\r\n\t\t\t\t\t\tif (CSS.Lists.colorNames.hasOwnProperty($2)) {\r\n\t\t\t\t\t\t\treturn ($1 ? $1 : \"rgba(\") + CSS.Lists.colorNames[$2] + ($1 ? \"\" : \",1)\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn $1 + $2;\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\t/* Convert any rootPropertyValue, null or otherwise, into a space-delimited list of hook values so that\r\n\t\t\t\t the targeted hook can be injected or extracted at its standard position. */\r\n\t\t\t\tcleanRootPropertyValue: function(rootProperty, rootPropertyValue) {\r\n\t\t\t\t\t/* If the rootPropertyValue is wrapped with \"rgb()\", \"clip()\", etc., remove the wrapping to normalize the value before manipulation. */\r\n\t\t\t\t\tif (CSS.RegEx.valueUnwrap.test(rootPropertyValue)) {\r\n\t\t\t\t\t\trootPropertyValue = rootPropertyValue.match(CSS.RegEx.valueUnwrap)[1];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* If rootPropertyValue is a CSS null-value (from which there's inherently no hook value to extract),\r\n\t\t\t\t\t default to the root's default value as defined in CSS.Hooks.templates. */\r\n\t\t\t\t\t/* Note: CSS null-values include \"none\", \"auto\", and \"transparent\". They must be converted into their\r\n\t\t\t\t\t zero-values (e.g. textShadow: \"none\" ==> textShadow: \"0px 0px 0px black\") for hook manipulation to proceed. */\r\n\t\t\t\t\tif (CSS.Values.isCSSNullValue(rootPropertyValue)) {\r\n\t\t\t\t\t\trootPropertyValue = CSS.Hooks.templates[rootProperty][1];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn rootPropertyValue;\r\n\t\t\t\t},\r\n\t\t\t\t/* Extracted the hook's value from its root property's value. This is used to get the starting value of an animating hook. */\r\n\t\t\t\textractValue: function(fullHookName, rootPropertyValue) {\r\n\t\t\t\t\tvar hookData = CSS.Hooks.registered[fullHookName];\r\n\r\n\t\t\t\t\tif (hookData) {\r\n\t\t\t\t\t\tvar hookRoot = hookData[0],\r\n\t\t\t\t\t\t\t\thookPosition = hookData[1];\r\n\r\n\t\t\t\t\t\trootPropertyValue = CSS.Hooks.cleanRootPropertyValue(hookRoot, rootPropertyValue);\r\n\r\n\t\t\t\t\t\t/* Split rootPropertyValue into its constituent hook values then grab the desired hook at its standard position. */\r\n\t\t\t\t\t\treturn rootPropertyValue.toString().match(CSS.RegEx.valueSplit)[hookPosition];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t/* If the provided fullHookName isn't a registered hook, return the rootPropertyValue that was passed in. */\r\n\t\t\t\t\t\treturn rootPropertyValue;\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t/* Inject the hook's value into its root property's value. This is used to piece back together the root property\r\n\t\t\t\t once Velocity has updated one of its individually hooked values through tweening. */\r\n\t\t\t\tinjectValue: function(fullHookName, hookValue, rootPropertyValue) {\r\n\t\t\t\t\tvar hookData = CSS.Hooks.registered[fullHookName];\r\n\r\n\t\t\t\t\tif (hookData) {\r\n\t\t\t\t\t\tvar hookRoot = hookData[0],\r\n\t\t\t\t\t\t\t\thookPosition = hookData[1],\r\n\t\t\t\t\t\t\t\trootPropertyValueParts,\r\n\t\t\t\t\t\t\t\trootPropertyValueUpdated;\r\n\r\n\t\t\t\t\t\trootPropertyValue = CSS.Hooks.cleanRootPropertyValue(hookRoot, rootPropertyValue);\r\n\r\n\t\t\t\t\t\t/* Split rootPropertyValue into its individual hook values, replace the targeted value with hookValue,\r\n\t\t\t\t\t\t then reconstruct the rootPropertyValue string. */\r\n\t\t\t\t\t\trootPropertyValueParts = rootPropertyValue.toString().match(CSS.RegEx.valueSplit);\r\n\t\t\t\t\t\trootPropertyValueParts[hookPosition] = hookValue;\r\n\t\t\t\t\t\trootPropertyValueUpdated = rootPropertyValueParts.join(\" \");\r\n\r\n\t\t\t\t\t\treturn rootPropertyValueUpdated;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t/* If the provided fullHookName isn't a registered hook, return the rootPropertyValue that was passed in. */\r\n\t\t\t\t\t\treturn rootPropertyValue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t/*******************\r\n\t\t\t Normalizations\r\n\t\t\t *******************/\r\n\r\n\t\t\t/* Normalizations standardize CSS property manipulation by pollyfilling browser-specific implementations (e.g. opacity)\r\n\t\t\t and reformatting special properties (e.g. clip, rgba) to look like standard ones. */\r\n\t\t\tNormalizations: {\r\n\t\t\t\t/* Normalizations are passed a normalization target (either the property's name, its extracted value, or its injected value),\r\n\t\t\t\t the targeted element (which may need to be queried), and the targeted property value. */\r\n\t\t\t\tregistered: {\r\n\t\t\t\t\tclip: function(type, element, propertyValue) {\r\n\t\t\t\t\t\tswitch (type) {\r\n\t\t\t\t\t\t\tcase \"name\":\r\n\t\t\t\t\t\t\t\treturn \"clip\";\r\n\t\t\t\t\t\t\t\t/* Clip needs to be unwrapped and stripped of its commas during extraction. */\r\n\t\t\t\t\t\t\tcase \"extract\":\r\n\t\t\t\t\t\t\t\tvar extracted;\r\n\r\n\t\t\t\t\t\t\t\t/* If Velocity also extracted this value, skip extraction. */\r\n\t\t\t\t\t\t\t\tif (CSS.RegEx.wrappedValueAlreadyExtracted.test(propertyValue)) {\r\n\t\t\t\t\t\t\t\t\textracted = propertyValue;\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t/* Remove the \"rect()\" wrapper. */\r\n\t\t\t\t\t\t\t\t\textracted = propertyValue.toString().match(CSS.RegEx.valueUnwrap);\r\n\r\n\t\t\t\t\t\t\t\t\t/* Strip off commas. */\r\n\t\t\t\t\t\t\t\t\textracted = extracted ? extracted[1].replace(/,(\\s+)?/g, \" \") : propertyValue;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\treturn extracted;\r\n\t\t\t\t\t\t\t\t/* Clip needs to be re-wrapped during injection. */\r\n\t\t\t\t\t\t\tcase \"inject\":\r\n\t\t\t\t\t\t\t\treturn \"rect(\" + propertyValue + \")\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tblur: function(type, element, propertyValue) {\r\n\t\t\t\t\t\tswitch (type) {\r\n\t\t\t\t\t\t\tcase \"name\":\r\n\t\t\t\t\t\t\t\treturn Velocity.State.isFirefox ? \"filter\" : \"-webkit-filter\";\r\n\t\t\t\t\t\t\tcase \"extract\":\r\n\t\t\t\t\t\t\t\tvar extracted = parseFloat(propertyValue);\r\n\r\n\t\t\t\t\t\t\t\t/* If extracted is NaN, meaning the value isn't already extracted. */\r\n\t\t\t\t\t\t\t\tif (!(extracted || extracted === 0)) {\r\n\t\t\t\t\t\t\t\t\tvar blurComponent = propertyValue.toString().match(/blur\\(([0-9]+[A-z]+)\\)/i);\r\n\r\n\t\t\t\t\t\t\t\t\t/* If the filter string had a blur component, return just the blur value and unit type. */\r\n\t\t\t\t\t\t\t\t\tif (blurComponent) {\r\n\t\t\t\t\t\t\t\t\t\textracted = blurComponent[1];\r\n\t\t\t\t\t\t\t\t\t\t/* If the component doesn't exist, default blur to 0. */\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\textracted = 0;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\treturn extracted;\r\n\t\t\t\t\t\t\t\t/* Blur needs to be re-wrapped during injection. */\r\n\t\t\t\t\t\t\tcase \"inject\":\r\n\t\t\t\t\t\t\t\t/* For the blur effect to be fully de-applied, it needs to be set to \"none\" instead of 0. */\r\n\t\t\t\t\t\t\t\tif (!parseFloat(propertyValue)) {\r\n\t\t\t\t\t\t\t\t\treturn \"none\";\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\treturn \"blur(\" + propertyValue + \")\";\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t/* <=IE8 do not support the standard opacity property. They use filter:alpha(opacity=INT) instead. */\r\n\t\t\t\t\topacity: function(type, element, propertyValue) {\r\n\t\t\t\t\t\tif (IE <= 8) {\r\n\t\t\t\t\t\t\tswitch (type) {\r\n\t\t\t\t\t\t\t\tcase \"name\":\r\n\t\t\t\t\t\t\t\t\treturn \"filter\";\r\n\t\t\t\t\t\t\t\tcase \"extract\":\r\n\t\t\t\t\t\t\t\t\t/* <=IE8 return a \"filter\" value of \"alpha(opacity=\\d{1,3})\".\r\n\t\t\t\t\t\t\t\t\t Extract the value and convert it to a decimal value to match the standard CSS opacity property's formatting. */\r\n\t\t\t\t\t\t\t\t\tvar extracted = propertyValue.toString().match(/alpha\\(opacity=(.*)\\)/i);\r\n\r\n\t\t\t\t\t\t\t\t\tif (extracted) {\r\n\t\t\t\t\t\t\t\t\t\t/* Convert to decimal value. */\r\n\t\t\t\t\t\t\t\t\t\tpropertyValue = extracted[1] / 100;\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t/* When extracting opacity, default to 1 since a null value means opacity hasn't been set. */\r\n\t\t\t\t\t\t\t\t\t\tpropertyValue = 1;\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn propertyValue;\r\n\t\t\t\t\t\t\t\tcase \"inject\":\r\n\t\t\t\t\t\t\t\t\t/* Opacified elements are required to have their zoom property set to a non-zero value. */\r\n\t\t\t\t\t\t\t\t\telement.style.zoom = 1;\r\n\r\n\t\t\t\t\t\t\t\t\t/* Setting the filter property on elements with certain font property combinations can result in a\r\n\t\t\t\t\t\t\t\t\t highly unappealing ultra-bolding effect. There's no way to remedy this throughout a tween, but dropping the\r\n\t\t\t\t\t\t\t\t\t value altogether (when opacity hits 1) at leasts ensures that the glitch is gone post-tweening. */\r\n\t\t\t\t\t\t\t\t\tif (parseFloat(propertyValue) >= 1) {\r\n\t\t\t\t\t\t\t\t\t\treturn \"\";\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t/* As per the filter property's spec, convert the decimal value to a whole number and wrap the value. */\r\n\t\t\t\t\t\t\t\t\t\treturn \"alpha(opacity=\" + parseInt(parseFloat(propertyValue) * 100, 10) + \")\";\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t/* With all other browsers, normalization is not required; return the same values that were passed in. */\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tswitch (type) {\r\n\t\t\t\t\t\t\t\tcase \"name\":\r\n\t\t\t\t\t\t\t\t\treturn \"opacity\";\r\n\t\t\t\t\t\t\t\tcase \"extract\":\r\n\t\t\t\t\t\t\t\t\treturn propertyValue;\r\n\t\t\t\t\t\t\t\tcase \"inject\":\r\n\t\t\t\t\t\t\t\t\treturn propertyValue;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t/*****************************\r\n\t\t\t\t Batched Registrations\r\n\t\t\t\t *****************************/\r\n\r\n\t\t\t\t/* Note: Batched normalizations extend the CSS.Normalizations.registered object. */\r\n\t\t\t\tregister: function() {\r\n\r\n\t\t\t\t\t/*****************\r\n\t\t\t\t\t Transforms\r\n\t\t\t\t\t *****************/\r\n\r\n\t\t\t\t\t/* Transforms are the subproperties contained by the CSS \"transform\" property. Transforms must undergo normalization\r\n\t\t\t\t\t so that they can be referenced in a properties map by their individual names. */\r\n\t\t\t\t\t/* Note: When transforms are \"set\", they are actually assigned to a per-element transformCache. When all transform\r\n\t\t\t\t\t setting is complete complete, CSS.flushTransformCache() must be manually called to flush the values to the DOM.\r\n\t\t\t\t\t Transform setting is batched in this way to improve performance: the transform style only needs to be updated\r\n\t\t\t\t\t once when multiple transform subproperties are being animated simultaneously. */\r\n\t\t\t\t\t/* Note: IE9 and Android Gingerbread have support for 2D -- but not 3D -- transforms. Since animating unsupported\r\n\t\t\t\t\t transform properties results in the browser ignoring the *entire* transform string, we prevent these 3D values\r\n\t\t\t\t\t from being normalized for these browsers so that tweening skips these properties altogether\r\n\t\t\t\t\t (since it will ignore them as being unsupported by the browser.) */\r\n\t\t\t\t\tif ((!IE || IE > 9) && !Velocity.State.isGingerbread) {\r\n\t\t\t\t\t\t/* Note: Since the standalone CSS \"perspective\" property and the CSS transform \"perspective\" subproperty\r\n\t\t\t\t\t\t share the same name, the latter is given a unique token within Velocity: \"transformPerspective\". */\r\n\t\t\t\t\t\tCSS.Lists.transformsBase = CSS.Lists.transformsBase.concat(CSS.Lists.transforms3D);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfor (var i = 0; i < CSS.Lists.transformsBase.length; i++) {\r\n\t\t\t\t\t\t/* Wrap the dynamically generated normalization function in a new scope so that transformName's value is\r\n\t\t\t\t\t\t paired with its respective function. (Otherwise, all functions would take the final for loop's transformName.) */\r\n\t\t\t\t\t\t(function() {\r\n\t\t\t\t\t\t\tvar transformName = CSS.Lists.transformsBase[i];\r\n\r\n\t\t\t\t\t\t\tCSS.Normalizations.registered[transformName] = function(type, element, propertyValue) {\r\n\t\t\t\t\t\t\t\tswitch (type) {\r\n\t\t\t\t\t\t\t\t\t/* The normalized property name is the parent \"transform\" property -- the property that is actually set in CSS. */\r\n\t\t\t\t\t\t\t\t\tcase \"name\":\r\n\t\t\t\t\t\t\t\t\t\treturn \"transform\";\r\n\t\t\t\t\t\t\t\t\t\t/* Transform values are cached onto a per-element transformCache object. */\r\n\t\t\t\t\t\t\t\t\tcase \"extract\":\r\n\t\t\t\t\t\t\t\t\t\t/* If this transform has yet to be assigned a value, return its null value. */\r\n\t\t\t\t\t\t\t\t\t\tif (Data(element) === undefined || Data(element).transformCache[transformName] === undefined) {\r\n\t\t\t\t\t\t\t\t\t\t\t/* Scale CSS.Lists.transformsBase default to 1 whereas all other transform properties default to 0. */\r\n\t\t\t\t\t\t\t\t\t\t\treturn /^scale/i.test(transformName) ? 1 : 0;\r\n\t\t\t\t\t\t\t\t\t\t\t/* When transform values are set, they are wrapped in parentheses as per the CSS spec.\r\n\t\t\t\t\t\t\t\t\t\t\t Thus, when extracting their values (for tween calculations), we strip off the parentheses. */\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\treturn Data(element).transformCache[transformName].replace(/[()]/g, \"\");\r\n\t\t\t\t\t\t\t\t\tcase \"inject\":\r\n\t\t\t\t\t\t\t\t\t\tvar invalid = false;\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* If an individual transform property contains an unsupported unit type, the browser ignores the *entire* transform property.\r\n\t\t\t\t\t\t\t\t\t\t Thus, protect users from themselves by skipping setting for transform values supplied with invalid unit types. */\r\n\t\t\t\t\t\t\t\t\t\t/* Switch on the base transform type; ignore the axis by removing the last letter from the transform's name. */\r\n\t\t\t\t\t\t\t\t\t\tswitch (transformName.substr(0, transformName.length - 1)) {\r\n\t\t\t\t\t\t\t\t\t\t\t/* Whitelist unit types for each transform. */\r\n\t\t\t\t\t\t\t\t\t\t\tcase \"translate\":\r\n\t\t\t\t\t\t\t\t\t\t\t\tinvalid = !/(%|px|em|rem|vw|vh|\\d)$/i.test(propertyValue);\r\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t\t/* Since an axis-free \"scale\" property is supported as well, a little hack is used here to detect it by chopping off its last letter. */\r\n\t\t\t\t\t\t\t\t\t\t\tcase \"scal\":\r\n\t\t\t\t\t\t\t\t\t\t\tcase \"scale\":\r\n\t\t\t\t\t\t\t\t\t\t\t\t/* Chrome on Android has a bug in which scaled elements blur if their initial scale\r\n\t\t\t\t\t\t\t\t\t\t\t\t value is below 1 (which can happen with forcefeeding). Thus, we detect a yet-unset scale property\r\n\t\t\t\t\t\t\t\t\t\t\t\t and ensure that its first value is always 1. More info: http://stackoverflow.com/questions/10417890/css3-animations-with-transform-causes-blurred-elements-on-webkit/10417962#10417962 */\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (Velocity.State.isAndroid && Data(element).transformCache[transformName] === undefined && propertyValue < 1) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tpropertyValue = 1;\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\tinvalid = !/(\\d)$/i.test(propertyValue);\r\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\tcase \"skew\":\r\n\t\t\t\t\t\t\t\t\t\t\t\tinvalid = !/(deg|\\d)$/i.test(propertyValue);\r\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\tcase \"rotate\":\r\n\t\t\t\t\t\t\t\t\t\t\t\tinvalid = !/(deg|\\d)$/i.test(propertyValue);\r\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (!invalid) {\r\n\t\t\t\t\t\t\t\t\t\t\t/* As per the CSS spec, wrap the value in parentheses. */\r\n\t\t\t\t\t\t\t\t\t\t\tData(element).transformCache[transformName] = \"(\" + propertyValue + \")\";\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* Although the value is set on the transformCache object, return the newly-updated value for the calling code to process as normal. */\r\n\t\t\t\t\t\t\t\t\t\treturn Data(element).transformCache[transformName];\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t})();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/*************\r\n\t\t\t\t\t Colors\r\n\t\t\t\t\t *************/\r\n\r\n\t\t\t\t\t/* Since Velocity only animates a single numeric value per property, color animation is achieved by hooking the individual RGBA components of CSS color properties.\r\n\t\t\t\t\t Accordingly, color values must be normalized (e.g. \"#ff0000\", \"red\", and \"rgb(255, 0, 0)\" ==> \"255 0 0 1\") so that their components can be injected/extracted by CSS.Hooks logic. */\r\n\t\t\t\t\tfor (var j = 0; j < CSS.Lists.colors.length; j++) {\r\n\t\t\t\t\t\t/* Wrap the dynamically generated normalization function in a new scope so that colorName's value is paired with its respective function.\r\n\t\t\t\t\t\t (Otherwise, all functions would take the final for loop's colorName.) */\r\n\t\t\t\t\t\t(function() {\r\n\t\t\t\t\t\t\tvar colorName = CSS.Lists.colors[j];\r\n\r\n\t\t\t\t\t\t\t/* Note: In IE<=8, which support rgb but not rgba, color properties are reverted to rgb by stripping off the alpha component. */\r\n\t\t\t\t\t\t\tCSS.Normalizations.registered[colorName] = function(type, element, propertyValue) {\r\n\t\t\t\t\t\t\t\tswitch (type) {\r\n\t\t\t\t\t\t\t\t\tcase \"name\":\r\n\t\t\t\t\t\t\t\t\t\treturn colorName;\r\n\t\t\t\t\t\t\t\t\t\t/* Convert all color values into the rgb format. (Old IE can return hex values and color names instead of rgb/rgba.) */\r\n\t\t\t\t\t\t\t\t\tcase \"extract\":\r\n\t\t\t\t\t\t\t\t\t\tvar extracted;\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* If the color is already in its hookable form (e.g. \"255 255 255 1\") due to having been previously extracted, skip extraction. */\r\n\t\t\t\t\t\t\t\t\t\tif (CSS.RegEx.wrappedValueAlreadyExtracted.test(propertyValue)) {\r\n\t\t\t\t\t\t\t\t\t\t\textracted = propertyValue;\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\tvar converted,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolorNames = {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tblack: \"rgb(0, 0, 0)\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tblue: \"rgb(0, 0, 255)\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgray: \"rgb(128, 128, 128)\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgreen: \"rgb(0, 128, 0)\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tred: \"rgb(255, 0, 0)\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\twhite: \"rgb(255, 255, 255)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t/* Convert color names to rgb. */\r\n\t\t\t\t\t\t\t\t\t\t\tif (/^[A-z]+$/i.test(propertyValue)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (colorNames[propertyValue] !== undefined) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconverted = colorNames[propertyValue];\r\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t/* If an unmatched color name is provided, default to black. */\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconverted = colorNames.black;\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t/* Convert hex values to rgb. */\r\n\t\t\t\t\t\t\t\t\t\t\t} else if (CSS.RegEx.isHex.test(propertyValue)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tconverted = \"rgb(\" + CSS.Values.hexToRgb(propertyValue).join(\" \") + \")\";\r\n\t\t\t\t\t\t\t\t\t\t\t\t/* If the provided color doesn't match any of the accepted color formats, default to black. */\r\n\t\t\t\t\t\t\t\t\t\t\t} else if (!(/^rgba?\\(/i.test(propertyValue))) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tconverted = colorNames.black;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t/* Remove the surrounding \"rgb/rgba()\" string then replace commas with spaces and strip\r\n\t\t\t\t\t\t\t\t\t\t\t repeated spaces (in case the value included spaces to begin with). */\r\n\t\t\t\t\t\t\t\t\t\t\textracted = (converted || propertyValue).toString().match(CSS.RegEx.valueUnwrap)[1].replace(/,(\\s+)?/g, \" \");\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* So long as this isn't <=IE8, add a fourth (alpha) component if it's missing and default it to 1 (visible). */\r\n\t\t\t\t\t\t\t\t\t\tif ((!IE || IE > 8) && extracted.split(\" \").length === 3) {\r\n\t\t\t\t\t\t\t\t\t\t\textracted += \" 1\";\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\treturn extracted;\r\n\t\t\t\t\t\t\t\t\tcase \"inject\":\r\n\t\t\t\t\t\t\t\t\t\t/* If we have a pattern then it might already have the right values */\r\n\t\t\t\t\t\t\t\t\t\tif (/^rgb/.test(propertyValue)) {\r\n\t\t\t\t\t\t\t\t\t\t\treturn propertyValue;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* If this is IE<=8 and an alpha component exists, strip it off. */\r\n\t\t\t\t\t\t\t\t\t\tif (IE <= 8) {\r\n\t\t\t\t\t\t\t\t\t\t\tif (propertyValue.split(\" \").length === 4) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tpropertyValue = propertyValue.split(/\\s+/).slice(0, 3).join(\" \");\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t/* Otherwise, add a fourth (alpha) component if it's missing and default it to 1 (visible). */\r\n\t\t\t\t\t\t\t\t\t\t} else if (propertyValue.split(\" \").length === 3) {\r\n\t\t\t\t\t\t\t\t\t\t\tpropertyValue += \" 1\";\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* Re-insert the browser-appropriate wrapper(\"rgb/rgba()\"), insert commas, and strip off decimal units\r\n\t\t\t\t\t\t\t\t\t\t on all values but the fourth (R, G, and B only accept whole numbers). */\r\n\t\t\t\t\t\t\t\t\t\treturn (IE <= 8 ? \"rgb\" : \"rgba\") + \"(\" + propertyValue.replace(/\\s+/g, \",\").replace(/\\.(\\d)+(?=,)/g, \"\") + \")\";\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t})();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/**************\r\n\t\t\t\t\t Dimensions\r\n\t\t\t\t\t **************/\r\n\t\t\t\t\tfunction augmentDimension(name, element, wantInner) {\r\n\t\t\t\t\t\tvar isBorderBox = CSS.getPropertyValue(element, \"boxSizing\").toString().toLowerCase() === \"border-box\";\r\n\r\n\t\t\t\t\t\tif (isBorderBox === (wantInner || false)) {\r\n\t\t\t\t\t\t\t/* in box-sizing mode, the CSS width / height accessors already give the outerWidth / outerHeight. */\r\n\t\t\t\t\t\t\tvar i,\r\n\t\t\t\t\t\t\t\t\tvalue,\r\n\t\t\t\t\t\t\t\t\taugment = 0,\r\n\t\t\t\t\t\t\t\t\tsides = name === \"width\" ? [\"Left\", \"Right\"] : [\"Top\", \"Bottom\"],\r\n\t\t\t\t\t\t\t\t\tfields = [\"padding\" + sides[0], \"padding\" + sides[1], \"border\" + sides[0] + \"Width\", \"border\" + sides[1] + \"Width\"];\r\n\r\n\t\t\t\t\t\t\tfor (i = 0; i < fields.length; i++) {\r\n\t\t\t\t\t\t\t\tvalue = parseFloat(CSS.getPropertyValue(element, fields[i]));\r\n\t\t\t\t\t\t\t\tif (!isNaN(value)) {\r\n\t\t\t\t\t\t\t\t\taugment += value;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn wantInner ? -augment : augment;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfunction getDimension(name, wantInner) {\r\n\t\t\t\t\t\treturn function(type, element, propertyValue) {\r\n\t\t\t\t\t\t\tswitch (type) {\r\n\t\t\t\t\t\t\t\tcase \"name\":\r\n\t\t\t\t\t\t\t\t\treturn name;\r\n\t\t\t\t\t\t\t\tcase \"extract\":\r\n\t\t\t\t\t\t\t\t\treturn parseFloat(propertyValue) + augmentDimension(name, element, wantInner);\r\n\t\t\t\t\t\t\t\tcase \"inject\":\r\n\t\t\t\t\t\t\t\t\treturn (parseFloat(propertyValue) - augmentDimension(name, element, wantInner)) + \"px\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t\tCSS.Normalizations.registered.innerWidth = getDimension(\"width\", true);\r\n\t\t\t\t\tCSS.Normalizations.registered.innerHeight = getDimension(\"height\", true);\r\n\t\t\t\t\tCSS.Normalizations.registered.outerWidth = getDimension(\"width\");\r\n\t\t\t\t\tCSS.Normalizations.registered.outerHeight = getDimension(\"height\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t/************************\r\n\t\t\t CSS Property Names\r\n\t\t\t ************************/\r\n\r\n\t\t\tNames: {\r\n\t\t\t\t/* Camelcase a property name into its JavaScript notation (e.g. \"background-color\" ==> \"backgroundColor\").\r\n\t\t\t\t Camelcasing is used to normalize property names between and across calls. */\r\n\t\t\t\tcamelCase: function(property) {\r\n\t\t\t\t\treturn property.replace(/-(\\w)/g, function(match, subMatch) {\r\n\t\t\t\t\t\treturn subMatch.toUpperCase();\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\t/* For SVG elements, some properties (namely, dimensional ones) are GET/SET via the element's HTML attributes (instead of via CSS styles). */\r\n\t\t\t\tSVGAttribute: function(property) {\r\n\t\t\t\t\tvar SVGAttributes = \"width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2\";\r\n\r\n\t\t\t\t\t/* Certain browsers require an SVG transform to be applied as an attribute. (Otherwise, application via CSS is preferable due to 3D support.) */\r\n\t\t\t\t\tif (IE || (Velocity.State.isAndroid && !Velocity.State.isChrome)) {\r\n\t\t\t\t\t\tSVGAttributes += \"|transform\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn new RegExp(\"^(\" + SVGAttributes + \")$\", \"i\").test(property);\r\n\t\t\t\t},\r\n\t\t\t\t/* Determine whether a property should be set with a vendor prefix. */\r\n\t\t\t\t/* If a prefixed version of the property exists, return it. Otherwise, return the original property name.\r\n\t\t\t\t If the property is not at all supported by the browser, return a false flag. */\r\n\t\t\t\tprefixCheck: function(property) {\r\n\t\t\t\t\t/* If this property has already been checked, return the cached value. */\r\n\t\t\t\t\tif (Velocity.State.prefixMatches[property]) {\r\n\t\t\t\t\t\treturn [Velocity.State.prefixMatches[property], true];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar vendors = [\"\", \"Webkit\", \"Moz\", \"ms\", \"O\"];\r\n\r\n\t\t\t\t\t\tfor (var i = 0, vendorsLength = vendors.length; i < vendorsLength; i++) {\r\n\t\t\t\t\t\t\tvar propertyPrefixed;\r\n\r\n\t\t\t\t\t\t\tif (i === 0) {\r\n\t\t\t\t\t\t\t\tpropertyPrefixed = property;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t/* Capitalize the first letter of the property to conform to JavaScript vendor prefix notation (e.g. webkitFilter). */\r\n\t\t\t\t\t\t\t\tpropertyPrefixed = vendors[i] + property.replace(/^\\w/, function(match) {\r\n\t\t\t\t\t\t\t\t\treturn match.toUpperCase();\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* Check if the browser supports this property as prefixed. */\r\n\t\t\t\t\t\t\tif (Type.isString(Velocity.State.prefixElement.style[propertyPrefixed])) {\r\n\t\t\t\t\t\t\t\t/* Cache the match. */\r\n\t\t\t\t\t\t\t\tVelocity.State.prefixMatches[property] = propertyPrefixed;\r\n\r\n\t\t\t\t\t\t\t\treturn [propertyPrefixed, true];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* If the browser doesn't support this property in any form, include a false flag so that the caller can decide how to proceed. */\r\n\t\t\t\t\t\treturn [property, false];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t/************************\r\n\t\t\t CSS Property Values\r\n\t\t\t ************************/\r\n\r\n\t\t\tValues: {\r\n\t\t\t\t/* Hex to RGB conversion. Copyright Tim Down: http://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb */\r\n\t\t\t\thexToRgb: function(hex) {\r\n\t\t\t\t\tvar shortformRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i,\r\n\t\t\t\t\t\t\tlongformRegex = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i,\r\n\t\t\t\t\t\t\trgbParts;\r\n\r\n\t\t\t\t\thex = hex.replace(shortformRegex, function(m, r, g, b) {\r\n\t\t\t\t\t\treturn r + r + g + g + b + b;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\trgbParts = longformRegex.exec(hex);\r\n\r\n\t\t\t\t\treturn rgbParts ? [parseInt(rgbParts[1], 16), parseInt(rgbParts[2], 16), parseInt(rgbParts[3], 16)] : [0, 0, 0];\r\n\t\t\t\t},\r\n\t\t\t\tisCSSNullValue: function(value) {\r\n\t\t\t\t\t/* The browser defaults CSS values that have not been set to either 0 or one of several possible null-value strings.\r\n\t\t\t\t\t Thus, we check for both falsiness and these special strings. */\r\n\t\t\t\t\t/* Null-value checking is performed to default the special strings to 0 (for the sake of tweening) or their hook\r\n\t\t\t\t\t templates as defined as CSS.Hooks (for the sake of hook injection/extraction). */\r\n\t\t\t\t\t/* Note: Chrome returns \"rgba(0, 0, 0, 0)\" for an undefined color whereas IE returns \"transparent\". */\r\n\t\t\t\t\treturn (!value || /^(none|auto|transparent|(rgba\\(0, ?0, ?0, ?0\\)))$/i.test(value));\r\n\t\t\t\t},\r\n\t\t\t\t/* Retrieve a property's default unit type. Used for assigning a unit type when one is not supplied by the user. */\r\n\t\t\t\tgetUnitType: function(property) {\r\n\t\t\t\t\tif (/^(rotate|skew)/i.test(property)) {\r\n\t\t\t\t\t\treturn \"deg\";\r\n\t\t\t\t\t} else if (/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(property)) {\r\n\t\t\t\t\t\t/* The above properties are unitless. */\r\n\t\t\t\t\t\treturn \"\";\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t/* Default to px for all other properties. */\r\n\t\t\t\t\t\treturn \"px\";\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t/* HTML elements default to an associated display type when they're not set to display:none. */\r\n\t\t\t\t/* Note: This function is used for correctly setting the non-\"none\" display value in certain Velocity redirects, such as fadeIn/Out. */\r\n\t\t\t\tgetDisplayType: function(element) {\r\n\t\t\t\t\tvar tagName = element && element.tagName.toString().toLowerCase();\r\n\r\n\t\t\t\t\tif (/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(tagName)) {\r\n\t\t\t\t\t\treturn \"inline\";\r\n\t\t\t\t\t} else if (/^(li)$/i.test(tagName)) {\r\n\t\t\t\t\t\treturn \"list-item\";\r\n\t\t\t\t\t} else if (/^(tr)$/i.test(tagName)) {\r\n\t\t\t\t\t\treturn \"table-row\";\r\n\t\t\t\t\t} else if (/^(table)$/i.test(tagName)) {\r\n\t\t\t\t\t\treturn \"table\";\r\n\t\t\t\t\t} else if (/^(tbody)$/i.test(tagName)) {\r\n\t\t\t\t\t\treturn \"table-row-group\";\r\n\t\t\t\t\t\t/* Default to \"block\" when no match is found. */\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn \"block\";\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t/* The class add/remove functions are used to temporarily apply a \"velocity-animating\" class to elements while they're animating. */\r\n\t\t\t\taddClass: function(element, className) {\r\n\t\t\t\t\tif (element) {\r\n\t\t\t\t\t\tif (element.classList) {\r\n\t\t\t\t\t\t\telement.classList.add(className);\r\n\t\t\t\t\t\t} else if (Type.isString(element.className)) {\r\n\t\t\t\t\t\t\t// Element.className is around 15% faster then set/getAttribute\r\n\t\t\t\t\t\t\telement.className += (element.className.length ? \" \" : \"\") + className;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// Work around for IE strict mode animating SVG - and anything else that doesn't behave correctly - the same way jQuery does it\r\n\t\t\t\t\t\t\tvar currentClass = element.getAttribute(IE <= 7 ? \"className\" : \"class\") || \"\";\r\n\r\n\t\t\t\t\t\t\telement.setAttribute(\"class\", currentClass + (currentClass ? \" \" : \"\") + className);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tremoveClass: function(element, className) {\r\n\t\t\t\t\tif (element) {\r\n\t\t\t\t\t\tif (element.classList) {\r\n\t\t\t\t\t\t\telement.classList.remove(className);\r\n\t\t\t\t\t\t} else if (Type.isString(element.className)) {\r\n\t\t\t\t\t\t\t// Element.className is around 15% faster then set/getAttribute\r\n\t\t\t\t\t\t\t// TODO: Need some jsperf tests on performance - can we get rid of the regex and maybe use split / array manipulation?\r\n\t\t\t\t\t\t\telement.className = element.className.toString().replace(new RegExp(\"(^|\\\\s)\" + className.split(\" \").join(\"|\") + \"(\\\\s|$)\", \"gi\"), \" \");\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// Work around for IE strict mode animating SVG - and anything else that doesn't behave correctly - the same way jQuery does it\r\n\t\t\t\t\t\t\tvar currentClass = element.getAttribute(IE <= 7 ? \"className\" : \"class\") || \"\";\r\n\r\n\t\t\t\t\t\t\telement.setAttribute(\"class\", currentClass.replace(new RegExp(\"(^|\\s)\" + className.split(\" \").join(\"|\") + \"(\\s|$)\", \"gi\"), \" \"));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t/****************************\r\n\t\t\t Style Getting & Setting\r\n\t\t\t ****************************/\r\n\r\n\t\t\t/* The singular getPropertyValue, which routes the logic for all normalizations, hooks, and standard CSS properties. */\r\n\t\t\tgetPropertyValue: function(element, property, rootPropertyValue, forceStyleLookup) {\r\n\t\t\t\t/* Get an element's computed property value. */\r\n\t\t\t\t/* Note: Retrieving the value of a CSS property cannot simply be performed by checking an element's\r\n\t\t\t\t style attribute (which only reflects user-defined values). Instead, the browser must be queried for a property's\r\n\t\t\t\t *computed* value. You can read more about getComputedStyle here: https://developer.mozilla.org/en/docs/Web/API/window.getComputedStyle */\r\n\t\t\t\tfunction computePropertyValue(element, property) {\r\n\t\t\t\t\t/* When box-sizing isn't set to border-box, height and width style values are incorrectly computed when an\r\n\t\t\t\t\t element's scrollbars are visible (which expands the element's dimensions). Thus, we defer to the more accurate\r\n\t\t\t\t\t offsetHeight/Width property, which includes the total dimensions for interior, border, padding, and scrollbar.\r\n\t\t\t\t\t We subtract border and padding to get the sum of interior + scrollbar. */\r\n\t\t\t\t\tvar computedValue = 0;\r\n\r\n\t\t\t\t\t/* IE<=8 doesn't support window.getComputedStyle, thus we defer to jQuery, which has an extensive array\r\n\t\t\t\t\t of hacks to accurately retrieve IE8 property values. Re-implementing that logic here is not worth bloating the\r\n\t\t\t\t\t codebase for a dying browser. The performance repercussions of using jQuery here are minimal since\r\n\t\t\t\t\t Velocity is optimized to rarely (and sometimes never) query the DOM. Further, the $.css() codepath isn't that slow. */\r\n\t\t\t\t\tif (IE <= 8) {\r\n\t\t\t\t\t\tcomputedValue = $.css(element, property); /* GET */\r\n\t\t\t\t\t\t/* All other browsers support getComputedStyle. The returned live object reference is cached onto its\r\n\t\t\t\t\t\t associated element so that it does not need to be refetched upon every GET. */\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t/* Browsers do not return height and width values for elements that are set to display:\"none\". Thus, we temporarily\r\n\t\t\t\t\t\t toggle display to the element type's default value. */\r\n\t\t\t\t\t\tvar toggleDisplay = false;\r\n\r\n\t\t\t\t\t\tif (/^(width|height)$/.test(property) && CSS.getPropertyValue(element, \"display\") === 0) {\r\n\t\t\t\t\t\t\ttoggleDisplay = true;\r\n\t\t\t\t\t\t\tCSS.setPropertyValue(element, \"display\", CSS.Values.getDisplayType(element));\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tvar revertDisplay = function() {\r\n\t\t\t\t\t\t\tif (toggleDisplay) {\r\n\t\t\t\t\t\t\t\tCSS.setPropertyValue(element, \"display\", \"none\");\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tif (!forceStyleLookup) {\r\n\t\t\t\t\t\t\tif (property === \"height\" && CSS.getPropertyValue(element, \"boxSizing\").toString().toLowerCase() !== \"border-box\") {\r\n\t\t\t\t\t\t\t\tvar contentBoxHeight = element.offsetHeight - (parseFloat(CSS.getPropertyValue(element, \"borderTopWidth\")) || 0) - (parseFloat(CSS.getPropertyValue(element, \"borderBottomWidth\")) || 0) - (parseFloat(CSS.getPropertyValue(element, \"paddingTop\")) || 0) - (parseFloat(CSS.getPropertyValue(element, \"paddingBottom\")) || 0);\r\n\t\t\t\t\t\t\t\trevertDisplay();\r\n\r\n\t\t\t\t\t\t\t\treturn contentBoxHeight;\r\n\t\t\t\t\t\t\t} else if (property === \"width\" && CSS.getPropertyValue(element, \"boxSizing\").toString().toLowerCase() !== \"border-box\") {\r\n\t\t\t\t\t\t\t\tvar contentBoxWidth = element.offsetWidth - (parseFloat(CSS.getPropertyValue(element, \"borderLeftWidth\")) || 0) - (parseFloat(CSS.getPropertyValue(element, \"borderRightWidth\")) || 0) - (parseFloat(CSS.getPropertyValue(element, \"paddingLeft\")) || 0) - (parseFloat(CSS.getPropertyValue(element, \"paddingRight\")) || 0);\r\n\t\t\t\t\t\t\t\trevertDisplay();\r\n\r\n\t\t\t\t\t\t\t\treturn contentBoxWidth;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tvar computedStyle;\r\n\r\n\t\t\t\t\t\t/* For elements that Velocity hasn't been called on directly (e.g. when Velocity queries the DOM on behalf\r\n\t\t\t\t\t\t of a parent of an element its animating), perform a direct getComputedStyle lookup since the object isn't cached. */\r\n\t\t\t\t\t\tif (Data(element) === undefined) {\r\n\t\t\t\t\t\t\tcomputedStyle = window.getComputedStyle(element, null); /* GET */\r\n\t\t\t\t\t\t\t/* If the computedStyle object has yet to be cached, do so now. */\r\n\t\t\t\t\t\t} else if (!Data(element).computedStyle) {\r\n\t\t\t\t\t\t\tcomputedStyle = Data(element).computedStyle = window.getComputedStyle(element, null); /* GET */\r\n\t\t\t\t\t\t\t/* If computedStyle is cached, use it. */\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tcomputedStyle = Data(element).computedStyle;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* IE and Firefox do not return a value for the generic borderColor -- they only return individual values for each border side's color.\r\n\t\t\t\t\t\t Also, in all browsers, when border colors aren't all the same, a compound value is returned that Velocity isn't setup to parse.\r\n\t\t\t\t\t\t So, as a polyfill for querying individual border side colors, we just return the top border's color and animate all borders from that value. */\r\n\t\t\t\t\t\tif (property === \"borderColor\") {\r\n\t\t\t\t\t\t\tproperty = \"borderTopColor\";\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* IE9 has a bug in which the \"filter\" property must be accessed from computedStyle using the getPropertyValue method\r\n\t\t\t\t\t\t instead of a direct property lookup. The getPropertyValue method is slower than a direct lookup, which is why we avoid it by default. */\r\n\t\t\t\t\t\tif (IE === 9 && property === \"filter\") {\r\n\t\t\t\t\t\t\tcomputedValue = computedStyle.getPropertyValue(property); /* GET */\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tcomputedValue = computedStyle[property];\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Fall back to the property's style value (if defined) when computedValue returns nothing,\r\n\t\t\t\t\t\t which can happen when the element hasn't been painted. */\r\n\t\t\t\t\t\tif (computedValue === \"\" || computedValue === null) {\r\n\t\t\t\t\t\t\tcomputedValue = element.style[property];\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trevertDisplay();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* For top, right, bottom, and left (TRBL) values that are set to \"auto\" on elements of \"fixed\" or \"absolute\" position,\r\n\t\t\t\t\t defer to jQuery for converting \"auto\" to a numeric value. (For elements with a \"static\" or \"relative\" position, \"auto\" has the same\r\n\t\t\t\t\t effect as being set to 0, so no conversion is necessary.) */\r\n\t\t\t\t\t/* An example of why numeric conversion is necessary: When an element with \"position:absolute\" has an untouched \"left\"\r\n\t\t\t\t\t property, which reverts to \"auto\", left's value is 0 relative to its parent element, but is often non-zero relative\r\n\t\t\t\t\t to its *containing* (not parent) element, which is the nearest \"position:relative\" ancestor or the viewport (and always the viewport in the case of \"position:fixed\"). */\r\n\t\t\t\t\tif (computedValue === \"auto\" && /^(top|right|bottom|left)$/i.test(property)) {\r\n\t\t\t\t\t\tvar position = computePropertyValue(element, \"position\"); /* GET */\r\n\r\n\t\t\t\t\t\t/* For absolute positioning, jQuery's $.position() only returns values for top and left;\r\n\t\t\t\t\t\t right and bottom will have their \"auto\" value reverted to 0. */\r\n\t\t\t\t\t\t/* Note: A jQuery object must be created here since jQuery doesn't have a low-level alias for $.position().\r\n\t\t\t\t\t\t Not a big deal since we're currently in a GET batch anyway. */\r\n\t\t\t\t\t\tif (position === \"fixed\" || (position === \"absolute\" && /top|left/i.test(property))) {\r\n\t\t\t\t\t\t\t/* Note: jQuery strips the pixel unit from its returned values; we re-add it here to conform with computePropertyValue's behavior. */\r\n\t\t\t\t\t\t\tcomputedValue = $(element).position()[property] + \"px\"; /* GET */\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn computedValue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar propertyValue;\r\n\r\n\t\t\t\t/* If this is a hooked property (e.g. \"clipLeft\" instead of the root property of \"clip\"),\r\n\t\t\t\t extract the hook's value from a normalized rootPropertyValue using CSS.Hooks.extractValue(). */\r\n\t\t\t\tif (CSS.Hooks.registered[property]) {\r\n\t\t\t\t\tvar hook = property,\r\n\t\t\t\t\t\t\thookRoot = CSS.Hooks.getRoot(hook);\r\n\r\n\t\t\t\t\t/* If a cached rootPropertyValue wasn't passed in (which Velocity always attempts to do in order to avoid requerying the DOM),\r\n\t\t\t\t\t query the DOM for the root property's value. */\r\n\t\t\t\t\tif (rootPropertyValue === undefined) {\r\n\t\t\t\t\t\t/* Since the browser is now being directly queried, use the official post-prefixing property name for this lookup. */\r\n\t\t\t\t\t\trootPropertyValue = CSS.getPropertyValue(element, CSS.Names.prefixCheck(hookRoot)[0]); /* GET */\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* If this root has a normalization registered, peform the associated normalization extraction. */\r\n\t\t\t\t\tif (CSS.Normalizations.registered[hookRoot]) {\r\n\t\t\t\t\t\trootPropertyValue = CSS.Normalizations.registered[hookRoot](\"extract\", element, rootPropertyValue);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* Extract the hook's value. */\r\n\t\t\t\t\tpropertyValue = CSS.Hooks.extractValue(hook, rootPropertyValue);\r\n\r\n\t\t\t\t\t/* If this is a normalized property (e.g. \"opacity\" becomes \"filter\" in <=IE8) or \"translateX\" becomes \"transform\"),\r\n\t\t\t\t\t normalize the property's name and value, and handle the special case of transforms. */\r\n\t\t\t\t\t/* Note: Normalizing a property is mutually exclusive from hooking a property since hook-extracted values are strictly\r\n\t\t\t\t\t numerical and therefore do not require normalization extraction. */\r\n\t\t\t\t} else if (CSS.Normalizations.registered[property]) {\r\n\t\t\t\t\tvar normalizedPropertyName,\r\n\t\t\t\t\t\t\tnormalizedPropertyValue;\r\n\r\n\t\t\t\t\tnormalizedPropertyName = CSS.Normalizations.registered[property](\"name\", element);\r\n\r\n\t\t\t\t\t/* Transform values are calculated via normalization extraction (see below), which checks against the element's transformCache.\r\n\t\t\t\t\t At no point do transform GETs ever actually query the DOM; initial stylesheet values are never processed.\r\n\t\t\t\t\t This is because parsing 3D transform matrices is not always accurate and would bloat our codebase;\r\n\t\t\t\t\t thus, normalization extraction defaults initial transform values to their zero-values (e.g. 1 for scaleX and 0 for translateX). */\r\n\t\t\t\t\tif (normalizedPropertyName !== \"transform\") {\r\n\t\t\t\t\t\tnormalizedPropertyValue = computePropertyValue(element, CSS.Names.prefixCheck(normalizedPropertyName)[0]); /* GET */\r\n\r\n\t\t\t\t\t\t/* If the value is a CSS null-value and this property has a hook template, use that zero-value template so that hooks can be extracted from it. */\r\n\t\t\t\t\t\tif (CSS.Values.isCSSNullValue(normalizedPropertyValue) && CSS.Hooks.templates[property]) {\r\n\t\t\t\t\t\t\tnormalizedPropertyValue = CSS.Hooks.templates[property][1];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tpropertyValue = CSS.Normalizations.registered[property](\"extract\", element, normalizedPropertyValue);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* If a (numeric) value wasn't produced via hook extraction or normalization, query the DOM. */\r\n\t\t\t\tif (!/^[\\d-]/.test(propertyValue)) {\r\n\t\t\t\t\t/* For SVG elements, dimensional properties (which SVGAttribute() detects) are tweened via\r\n\t\t\t\t\t their HTML attribute values instead of their CSS style values. */\r\n\t\t\t\t\tvar data = Data(element);\r\n\r\n\t\t\t\t\tif (data && data.isSVG && CSS.Names.SVGAttribute(property)) {\r\n\t\t\t\t\t\t/* Since the height/width attribute values must be set manually, they don't reflect computed values.\r\n\t\t\t\t\t\t Thus, we use use getBBox() to ensure we always get values for elements with undefined height/width attributes. */\r\n\t\t\t\t\t\tif (/^(height|width)$/i.test(property)) {\r\n\t\t\t\t\t\t\t/* Firefox throws an error if .getBBox() is called on an SVG that isn't attached to the DOM. */\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\tpropertyValue = element.getBBox()[property];\r\n\t\t\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\t\t\tpropertyValue = 0;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t/* Otherwise, access the attribute value directly. */\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tpropertyValue = element.getAttribute(property);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tpropertyValue = computePropertyValue(element, CSS.Names.prefixCheck(property)[0]); /* GET */\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Since property lookups are for animation purposes (which entails computing the numeric delta between start and end values),\r\n\t\t\t\t convert CSS null-values to an integer of value 0. */\r\n\t\t\t\tif (CSS.Values.isCSSNullValue(propertyValue)) {\r\n\t\t\t\t\tpropertyValue = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (Velocity.debug >= 2) {\r\n\t\t\t\t\tconsole.log(\"Get \" + property + \": \" + propertyValue);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn propertyValue;\r\n\t\t\t},\r\n\t\t\t/* The singular setPropertyValue, which routes the logic for all normalizations, hooks, and standard CSS properties. */\r\n\t\t\tsetPropertyValue: function(element, property, propertyValue, rootPropertyValue, scrollData) {\r\n\t\t\t\tvar propertyName = property;\r\n\r\n\t\t\t\t/* In order to be subjected to call options and element queueing, scroll animation is routed through Velocity as if it were a standard CSS property. */\r\n\t\t\t\tif (property === \"scroll\") {\r\n\t\t\t\t\t/* If a container option is present, scroll the container instead of the browser window. */\r\n\t\t\t\t\tif (scrollData.container) {\r\n\t\t\t\t\t\tscrollData.container[\"scroll\" + scrollData.direction] = propertyValue;\r\n\t\t\t\t\t\t/* Otherwise, Velocity defaults to scrolling the browser window. */\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (scrollData.direction === \"Left\") {\r\n\t\t\t\t\t\t\twindow.scrollTo(propertyValue, scrollData.alternateValue);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\twindow.scrollTo(scrollData.alternateValue, propertyValue);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t/* Transforms (translateX, rotateZ, etc.) are applied to a per-element transformCache object, which is manually flushed via flushTransformCache().\r\n\t\t\t\t\t Thus, for now, we merely cache transforms being SET. */\r\n\t\t\t\t\tif (CSS.Normalizations.registered[property] && CSS.Normalizations.registered[property](\"name\", element) === \"transform\") {\r\n\t\t\t\t\t\t/* Perform a normalization injection. */\r\n\t\t\t\t\t\t/* Note: The normalization logic handles the transformCache updating. */\r\n\t\t\t\t\t\tCSS.Normalizations.registered[property](\"inject\", element, propertyValue);\r\n\r\n\t\t\t\t\t\tpropertyName = \"transform\";\r\n\t\t\t\t\t\tpropertyValue = Data(element).transformCache[property];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t/* Inject hooks. */\r\n\t\t\t\t\t\tif (CSS.Hooks.registered[property]) {\r\n\t\t\t\t\t\t\tvar hookName = property,\r\n\t\t\t\t\t\t\t\t\thookRoot = CSS.Hooks.getRoot(property);\r\n\r\n\t\t\t\t\t\t\t/* If a cached rootPropertyValue was not provided, query the DOM for the hookRoot's current value. */\r\n\t\t\t\t\t\t\trootPropertyValue = rootPropertyValue || CSS.getPropertyValue(element, hookRoot); /* GET */\r\n\r\n\t\t\t\t\t\t\tpropertyValue = CSS.Hooks.injectValue(hookName, propertyValue, rootPropertyValue);\r\n\t\t\t\t\t\t\tproperty = hookRoot;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Normalize names and values. */\r\n\t\t\t\t\t\tif (CSS.Normalizations.registered[property]) {\r\n\t\t\t\t\t\t\tpropertyValue = CSS.Normalizations.registered[property](\"inject\", element, propertyValue);\r\n\t\t\t\t\t\t\tproperty = CSS.Normalizations.registered[property](\"name\", element);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Assign the appropriate vendor prefix before performing an official style update. */\r\n\t\t\t\t\t\tpropertyName = CSS.Names.prefixCheck(property)[0];\r\n\r\n\t\t\t\t\t\t/* A try/catch is used for IE<=8, which throws an error when \"invalid\" CSS values are set, e.g. a negative width.\r\n\t\t\t\t\t\t Try/catch is avoided for other browsers since it incurs a performance overhead. */\r\n\t\t\t\t\t\tif (IE <= 8) {\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\telement.style[propertyName] = propertyValue;\r\n\t\t\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\t\t\tif (Velocity.debug) {\r\n\t\t\t\t\t\t\t\t\tconsole.log(\"Browser does not support [\" + propertyValue + \"] for [\" + propertyName + \"]\");\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t/* SVG elements have their dimensional properties (width, height, x, y, cx, etc.) applied directly as attributes instead of as styles. */\r\n\t\t\t\t\t\t\t/* Note: IE8 does not support SVG elements, so it's okay that we skip it for SVG animation. */\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tvar data = Data(element);\r\n\r\n\t\t\t\t\t\t\tif (data && data.isSVG && CSS.Names.SVGAttribute(property)) {\r\n\t\t\t\t\t\t\t\t/* Note: For SVG attributes, vendor-prefixed property names are never used. */\r\n\t\t\t\t\t\t\t\t/* Note: Not all CSS properties can be animated via attributes, but the browser won't throw an error for unsupported properties. */\r\n\t\t\t\t\t\t\t\telement.setAttribute(property, propertyValue);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\telement.style[propertyName] = propertyValue;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (Velocity.debug >= 2) {\r\n\t\t\t\t\t\t\tconsole.log(\"Set \" + property + \" (\" + propertyName + \"): \" + propertyValue);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Return the normalized property name and value in case the caller wants to know how these values were modified before being applied to the DOM. */\r\n\t\t\t\treturn [propertyName, propertyValue];\r\n\t\t\t},\r\n\t\t\t/* To increase performance by batching transform updates into a single SET, transforms are not directly applied to an element until flushTransformCache() is called. */\r\n\t\t\t/* Note: Velocity applies transform properties in the same order that they are chronogically introduced to the element's CSS styles. */\r\n\t\t\tflushTransformCache: function(element) {\r\n\t\t\t\tvar transformString = \"\",\r\n\t\t\t\t\t\tdata = Data(element);\r\n\r\n\t\t\t\t/* Certain browsers require that SVG transforms be applied as an attribute. However, the SVG transform attribute takes a modified version of CSS's transform string\r\n\t\t\t\t (units are dropped and, except for skewX/Y, subproperties are merged into their master property -- e.g. scaleX and scaleY are merged into scale(X Y). */\r\n\t\t\t\tif ((IE || (Velocity.State.isAndroid && !Velocity.State.isChrome)) && data && data.isSVG) {\r\n\t\t\t\t\t/* Since transform values are stored in their parentheses-wrapped form, we use a helper function to strip out their numeric values.\r\n\t\t\t\t\t Further, SVG transform properties only take unitless (representing pixels) values, so it's okay that parseFloat() strips the unit suffixed to the float value. */\r\n\t\t\t\t\tvar getTransformFloat = function(transformProperty) {\r\n\t\t\t\t\t\treturn parseFloat(CSS.getPropertyValue(element, transformProperty));\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t/* Create an object to organize all the transforms that we'll apply to the SVG element. To keep the logic simple,\r\n\t\t\t\t\t we process *all* transform properties -- even those that may not be explicitly applied (since they default to their zero-values anyway). */\r\n\t\t\t\t\tvar SVGTransforms = {\r\n\t\t\t\t\t\ttranslate: [getTransformFloat(\"translateX\"), getTransformFloat(\"translateY\")],\r\n\t\t\t\t\t\tskewX: [getTransformFloat(\"skewX\")], skewY: [getTransformFloat(\"skewY\")],\r\n\t\t\t\t\t\t/* If the scale property is set (non-1), use that value for the scaleX and scaleY values\r\n\t\t\t\t\t\t (this behavior mimics the result of animating all these properties at once on HTML elements). */\r\n\t\t\t\t\t\tscale: getTransformFloat(\"scale\") !== 1 ? [getTransformFloat(\"scale\"), getTransformFloat(\"scale\")] : [getTransformFloat(\"scaleX\"), getTransformFloat(\"scaleY\")],\r\n\t\t\t\t\t\t/* Note: SVG's rotate transform takes three values: rotation degrees followed by the X and Y values\r\n\t\t\t\t\t\t defining the rotation's origin point. We ignore the origin values (default them to 0). */\r\n\t\t\t\t\t\trotate: [getTransformFloat(\"rotateZ\"), 0, 0]\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t/* Iterate through the transform properties in the user-defined property map order.\r\n\t\t\t\t\t (This mimics the behavior of non-SVG transform animation.) */\r\n\t\t\t\t\t$.each(Data(element).transformCache, function(transformName) {\r\n\t\t\t\t\t\t/* Except for with skewX/Y, revert the axis-specific transform subproperties to their axis-free master\r\n\t\t\t\t\t\t properties so that they match up with SVG's accepted transform properties. */\r\n\t\t\t\t\t\tif (/^translate/i.test(transformName)) {\r\n\t\t\t\t\t\t\ttransformName = \"translate\";\r\n\t\t\t\t\t\t} else if (/^scale/i.test(transformName)) {\r\n\t\t\t\t\t\t\ttransformName = \"scale\";\r\n\t\t\t\t\t\t} else if (/^rotate/i.test(transformName)) {\r\n\t\t\t\t\t\t\ttransformName = \"rotate\";\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Check that we haven't yet deleted the property from the SVGTransforms container. */\r\n\t\t\t\t\t\tif (SVGTransforms[transformName]) {\r\n\t\t\t\t\t\t\t/* Append the transform property in the SVG-supported transform format. As per the spec, surround the space-delimited values in parentheses. */\r\n\t\t\t\t\t\t\ttransformString += transformName + \"(\" + SVGTransforms[transformName].join(\" \") + \")\" + \" \";\r\n\r\n\t\t\t\t\t\t\t/* After processing an SVG transform property, delete it from the SVGTransforms container so we don't\r\n\t\t\t\t\t\t\t re-insert the same master property if we encounter another one of its axis-specific properties. */\r\n\t\t\t\t\t\t\tdelete SVGTransforms[transformName];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar transformValue,\r\n\t\t\t\t\t\t\tperspective;\r\n\r\n\t\t\t\t\t/* Transform properties are stored as members of the transformCache object. Concatenate all the members into a string. */\r\n\t\t\t\t\t$.each(Data(element).transformCache, function(transformName) {\r\n\t\t\t\t\t\ttransformValue = Data(element).transformCache[transformName];\r\n\r\n\t\t\t\t\t\t/* Transform's perspective subproperty must be set first in order to take effect. Store it temporarily. */\r\n\t\t\t\t\t\tif (transformName === \"transformPerspective\") {\r\n\t\t\t\t\t\t\tperspective = transformValue;\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* IE9 only supports one rotation type, rotateZ, which it refers to as \"rotate\". */\r\n\t\t\t\t\t\tif (IE === 9 && transformName === \"rotateZ\") {\r\n\t\t\t\t\t\t\ttransformName = \"rotate\";\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\ttransformString += transformName + transformValue + \" \";\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t/* If present, set the perspective subproperty first. */\r\n\t\t\t\t\tif (perspective) {\r\n\t\t\t\t\t\ttransformString = \"perspective\" + perspective + \" \" + transformString;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tCSS.setPropertyValue(element, \"transform\", transformString);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/* Register hooks and normalizations. */\r\n\t\tCSS.Hooks.register();\r\n\t\tCSS.Normalizations.register();\r\n\r\n\t\t/* Allow hook setting in the same fashion as jQuery's $.css(). */\r\n\t\tVelocity.hook = function(elements, arg2, arg3) {\r\n\t\t\tvar value;\r\n\r\n\t\t\telements = sanitizeElements(elements);\r\n\r\n\t\t\t$.each(elements, function(i, element) {\r\n\t\t\t\t/* Initialize Velocity's per-element data cache if this element hasn't previously been animated. */\r\n\t\t\t\tif (Data(element) === undefined) {\r\n\t\t\t\t\tVelocity.init(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Get property value. If an element set was passed in, only return the value for the first element. */\r\n\t\t\t\tif (arg3 === undefined) {\r\n\t\t\t\t\tif (value === undefined) {\r\n\t\t\t\t\t\tvalue = CSS.getPropertyValue(element, arg2);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t/* Set property value. */\r\n\t\t\t\t} else {\r\n\t\t\t\t\t/* sPV returns an array of the normalized propertyName/propertyValue pair used to update the DOM. */\r\n\t\t\t\t\tvar adjustedSet = CSS.setPropertyValue(element, arg2, arg3);\r\n\r\n\t\t\t\t\t/* Transform properties don't automatically set. They have to be flushed to the DOM. */\r\n\t\t\t\t\tif (adjustedSet[0] === \"transform\") {\r\n\t\t\t\t\t\tVelocity.CSS.flushTransformCache(element);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvalue = adjustedSet;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn value;\r\n\t\t};\r\n\r\n\t\t/*****************\r\n\t\t Animation\r\n\t\t *****************/\r\n\r\n\t\tvar animate = function() {\r\n\t\t\tvar opts;\r\n\r\n\t\t\t/******************\r\n\t\t\t Call Chain\r\n\t\t\t ******************/\r\n\r\n\t\t\t/* Logic for determining what to return to the call stack when exiting out of Velocity. */\r\n\t\t\tfunction getChain() {\r\n\t\t\t\t/* If we are using the utility function, attempt to return this call's promise. If no promise library was detected,\r\n\t\t\t\t default to null instead of returning the targeted elements so that utility function's return value is standardized. */\r\n\t\t\t\tif (isUtility) {\r\n\t\t\t\t\treturn promiseData.promise || null;\r\n\t\t\t\t\t/* Otherwise, if we're using $.fn, return the jQuery-/Zepto-wrapped element set. */\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn elementsWrapped;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/*************************\r\n\t\t\t Arguments Assignment\r\n\t\t\t *************************/\r\n\r\n\t\t\t/* To allow for expressive CoffeeScript code, Velocity supports an alternative syntax in which \"elements\" (or \"e\"), \"properties\" (or \"p\"), and \"options\" (or \"o\")\r\n\t\t\t objects are defined on a container object that's passed in as Velocity's sole argument. */\r\n\t\t\t/* Note: Some browsers automatically populate arguments with a \"properties\" object. We detect it by checking for its default \"names\" property. */\r\n\t\t\tvar syntacticSugar = (arguments[0] && (arguments[0].p || (($.isPlainObject(arguments[0].properties) && !arguments[0].properties.names) || Type.isString(arguments[0].properties)))),\r\n\t\t\t\t\t/* Whether Velocity was called via the utility function (as opposed to on a jQuery/Zepto object). */\r\n\t\t\t\t\tisUtility,\r\n\t\t\t\t\t/* When Velocity is called via the utility function ($.Velocity()/Velocity()), elements are explicitly\r\n\t\t\t\t\t passed in as the first parameter. Thus, argument positioning varies. We normalize them here. */\r\n\t\t\t\t\telementsWrapped,\r\n\t\t\t\t\targumentIndex;\r\n\r\n\t\t\tvar elements,\r\n\t\t\t\t\tpropertiesMap,\r\n\t\t\t\t\toptions;\r\n\r\n\t\t\t/* Detect jQuery/Zepto elements being animated via the $.fn method. */\r\n\t\t\tif (Type.isWrapped(this)) {\r\n\t\t\t\tisUtility = false;\r\n\r\n\t\t\t\targumentIndex = 0;\r\n\t\t\t\telements = this;\r\n\t\t\t\telementsWrapped = this;\r\n\t\t\t\t/* Otherwise, raw elements are being animated via the utility function. */\r\n\t\t\t} else {\r\n\t\t\t\tisUtility = true;\r\n\r\n\t\t\t\targumentIndex = 1;\r\n\t\t\t\telements = syntacticSugar ? (arguments[0].elements || arguments[0].e) : arguments[0];\r\n\t\t\t}\r\n\r\n\t\t\t/***************\r\n\t\t\t Promises\r\n\t\t\t ***************/\r\n\r\n\t\t\tvar promiseData = {\r\n\t\t\t\tpromise: null,\r\n\t\t\t\tresolver: null,\r\n\t\t\t\trejecter: null\r\n\t\t\t};\r\n\r\n\t\t\t/* If this call was made via the utility function (which is the default method of invocation when jQuery/Zepto are not being used), and if\r\n\t\t\t promise support was detected, create a promise object for this call and store references to its resolver and rejecter methods. The resolve\r\n\t\t\t method is used when a call completes naturally or is prematurely stopped by the user. In both cases, completeCall() handles the associated\r\n\t\t\t call cleanup and promise resolving logic. The reject method is used when an invalid set of arguments is passed into a Velocity call. */\r\n\t\t\t/* Note: Velocity employs a call-based queueing architecture, which means that stopping an animating element actually stops the full call that\r\n\t\t\t triggered it -- not that one element exclusively. Similarly, there is one promise per call, and all elements targeted by a Velocity call are\r\n\t\t\t grouped together for the purposes of resolving and rejecting a promise. */\r\n\t\t\tif (isUtility && Velocity.Promise) {\r\n\t\t\t\tpromiseData.promise = new Velocity.Promise(function(resolve, reject) {\r\n\t\t\t\t\tpromiseData.resolver = resolve;\r\n\t\t\t\t\tpromiseData.rejecter = reject;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (syntacticSugar) {\r\n\t\t\t\tpropertiesMap = arguments[0].properties || arguments[0].p;\r\n\t\t\t\toptions = arguments[0].options || arguments[0].o;\r\n\t\t\t} else {\r\n\t\t\t\tpropertiesMap = arguments[argumentIndex];\r\n\t\t\t\toptions = arguments[argumentIndex + 1];\r\n\t\t\t}\r\n\r\n\t\t\telements = sanitizeElements(elements);\r\n\r\n\t\t\tif (!elements) {\r\n\t\t\t\tif (promiseData.promise) {\r\n\t\t\t\t\tif (!propertiesMap || !options || options.promiseRejectEmpty !== false) {\r\n\t\t\t\t\t\tpromiseData.rejecter();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tpromiseData.resolver();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t/* The length of the element set (in the form of a nodeList or an array of elements) is defaulted to 1 in case a\r\n\t\t\t single raw DOM element is passed in (which doesn't contain a length property). */\r\n\t\t\tvar elementsLength = elements.length,\r\n\t\t\t\t\telementsIndex = 0;\r\n\r\n\t\t\t/***************************\r\n\t\t\t Argument Overloading\r\n\t\t\t ***************************/\r\n\r\n\t\t\t/* Support is included for jQuery's argument overloading: $.animate(propertyMap [, duration] [, easing] [, complete]).\r\n\t\t\t Overloading is detected by checking for the absence of an object being passed into options. */\r\n\t\t\t/* Note: The stop/finish/pause/resume actions do not accept animation options, and are therefore excluded from this check. */\r\n\t\t\tif (!/^(stop|finish|finishAll|pause|resume)$/i.test(propertiesMap) && !$.isPlainObject(options)) {\r\n\t\t\t\t/* The utility function shifts all arguments one position to the right, so we adjust for that offset. */\r\n\t\t\t\tvar startingArgumentPosition = argumentIndex + 1;\r\n\r\n\t\t\t\toptions = {};\r\n\r\n\t\t\t\t/* Iterate through all options arguments */\r\n\t\t\t\tfor (var i = startingArgumentPosition; i < arguments.length; i++) {\r\n\t\t\t\t\t/* Treat a number as a duration. Parse it out. */\r\n\t\t\t\t\t/* Note: The following RegEx will return true if passed an array with a number as its first item.\r\n\t\t\t\t\t Thus, arrays are skipped from this check. */\r\n\t\t\t\t\tif (!Type.isArray(arguments[i]) && (/^(fast|normal|slow)$/i.test(arguments[i]) || /^\\d/.test(arguments[i]))) {\r\n\t\t\t\t\t\toptions.duration = arguments[i];\r\n\t\t\t\t\t\t/* Treat strings and arrays as easings. */\r\n\t\t\t\t\t} else if (Type.isString(arguments[i]) || Type.isArray(arguments[i])) {\r\n\t\t\t\t\t\toptions.easing = arguments[i];\r\n\t\t\t\t\t\t/* Treat a function as a complete callback. */\r\n\t\t\t\t\t} else if (Type.isFunction(arguments[i])) {\r\n\t\t\t\t\t\toptions.complete = arguments[i];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/*********************\r\n\t\t\t Action Detection\r\n\t\t\t *********************/\r\n\r\n\t\t\t/* Velocity's behavior is categorized into \"actions\": Elements can either be specially scrolled into view,\r\n\t\t\t or they can be started, stopped, paused, resumed, or reversed . If a literal or referenced properties map is passed in as Velocity's\r\n\t\t\t first argument, the associated action is \"start\". Alternatively, \"scroll\", \"reverse\", \"pause\", \"resume\" or \"stop\" can be passed in \r\n\t\t\t instead of a properties map. */\r\n\t\t\tvar action;\r\n\r\n\t\t\tswitch (propertiesMap) {\r\n\t\t\t\tcase \"scroll\":\r\n\t\t\t\t\taction = \"scroll\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"reverse\":\r\n\t\t\t\t\taction = \"reverse\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"pause\":\r\n\r\n\t\t\t\t\t/*******************\r\n\t\t\t\t\t Action: Pause\r\n\t\t\t\t\t *******************/\r\n\r\n\t\t\t\t\tvar currentTime = (new Date()).getTime();\r\n\r\n\t\t\t\t\t/* Handle delay timers */\r\n\t\t\t\t\t$.each(elements, function(i, element) {\r\n\t\t\t\t\t\tpauseDelayOnElement(element, currentTime);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t/* Pause and Resume are call-wide (not on a per element basis). Thus, calling pause or resume on a \r\n\t\t\t\t\t single element will cause any calls that containt tweens for that element to be paused/resumed\r\n\t\t\t\t\t as well. */\r\n\r\n\t\t\t\t\t/* Iterate through all calls and pause any that contain any of our elements */\r\n\t\t\t\t\t$.each(Velocity.State.calls, function(i, activeCall) {\r\n\r\n\t\t\t\t\t\tvar found = false;\r\n\t\t\t\t\t\t/* Inactive calls are set to false by the logic inside completeCall(). Skip them. */\r\n\t\t\t\t\t\tif (activeCall) {\r\n\t\t\t\t\t\t\t/* Iterate through the active call's targeted elements. */\r\n\t\t\t\t\t\t\t$.each(activeCall[1], function(k, activeElement) {\r\n\t\t\t\t\t\t\t\tvar queueName = (options === undefined) ? \"\" : options;\r\n\r\n\t\t\t\t\t\t\t\tif (queueName !== true && (activeCall[2].queue !== queueName) && !(options === undefined && activeCall[2].queue === false)) {\r\n\t\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t/* Iterate through the calls targeted by the stop command. */\r\n\t\t\t\t\t\t\t\t$.each(elements, function(l, element) {\r\n\t\t\t\t\t\t\t\t\t/* Check that this call was applied to the target element. */\r\n\t\t\t\t\t\t\t\t\tif (element === activeElement) {\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* Set call to paused */\r\n\t\t\t\t\t\t\t\t\t\tactiveCall[5] = {\r\n\t\t\t\t\t\t\t\t\t\t\tresume: false\r\n\t\t\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* Once we match an element, we can bounce out to the next call entirely */\r\n\t\t\t\t\t\t\t\t\t\tfound = true;\r\n\t\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t/* Proceed to check next call if we have already matched */\r\n\t\t\t\t\t\t\t\tif (found) {\r\n\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t/* Since pause creates no new tweens, exit out of Velocity. */\r\n\t\t\t\t\treturn getChain();\r\n\r\n\t\t\t\tcase \"resume\":\r\n\r\n\t\t\t\t\t/*******************\r\n\t\t\t\t\t Action: Resume\r\n\t\t\t\t\t *******************/\r\n\r\n\t\t\t\t\t/* Handle delay timers */\r\n\t\t\t\t\t$.each(elements, function(i, element) {\r\n\t\t\t\t\t\tresumeDelayOnElement(element, currentTime);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t/* Pause and Resume are call-wide (not on a per elemnt basis). Thus, calling pause or resume on a \r\n\t\t\t\t\t single element will cause any calls that containt tweens for that element to be paused/resumed\r\n\t\t\t\t\t as well. */\r\n\r\n\t\t\t\t\t/* Iterate through all calls and pause any that contain any of our elements */\r\n\t\t\t\t\t$.each(Velocity.State.calls, function(i, activeCall) {\r\n\t\t\t\t\t\tvar found = false;\r\n\t\t\t\t\t\t/* Inactive calls are set to false by the logic inside completeCall(). Skip them. */\r\n\t\t\t\t\t\tif (activeCall) {\r\n\t\t\t\t\t\t\t/* Iterate through the active call's targeted elements. */\r\n\t\t\t\t\t\t\t$.each(activeCall[1], function(k, activeElement) {\r\n\t\t\t\t\t\t\t\tvar queueName = (options === undefined) ? \"\" : options;\r\n\r\n\t\t\t\t\t\t\t\tif (queueName !== true && (activeCall[2].queue !== queueName) && !(options === undefined && activeCall[2].queue === false)) {\r\n\t\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t/* Skip any calls that have never been paused */\r\n\t\t\t\t\t\t\t\tif (!activeCall[5]) {\r\n\t\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t/* Iterate through the calls targeted by the stop command. */\r\n\t\t\t\t\t\t\t\t$.each(elements, function(l, element) {\r\n\t\t\t\t\t\t\t\t\t/* Check that this call was applied to the target element. */\r\n\t\t\t\t\t\t\t\t\tif (element === activeElement) {\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* Flag a pause object to be resumed, which will occur during the next tick. In\r\n\t\t\t\t\t\t\t\t\t\t addition, the pause object will at that time be deleted */\r\n\t\t\t\t\t\t\t\t\t\tactiveCall[5].resume = true;\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* Once we match an element, we can bounce out to the next call entirely */\r\n\t\t\t\t\t\t\t\t\t\tfound = true;\r\n\t\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t/* Proceed to check next call if we have already matched */\r\n\t\t\t\t\t\t\t\tif (found) {\r\n\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t/* Since resume creates no new tweens, exit out of Velocity. */\r\n\t\t\t\t\treturn getChain();\r\n\r\n\t\t\t\tcase \"finish\":\r\n\t\t\t\tcase \"finishAll\":\r\n\t\t\t\tcase \"stop\":\r\n\t\t\t\t\t/*******************\r\n\t\t\t\t\t Action: Stop\r\n\t\t\t\t\t *******************/\r\n\r\n\t\t\t\t\t/* Clear the currently-active delay on each targeted element. */\r\n\t\t\t\t\t$.each(elements, function(i, element) {\r\n\t\t\t\t\t\tif (Data(element) && Data(element).delayTimer) {\r\n\t\t\t\t\t\t\t/* Stop the timer from triggering its cached next() function. */\r\n\t\t\t\t\t\t\tclearTimeout(Data(element).delayTimer.setTimeout);\r\n\r\n\t\t\t\t\t\t\t/* Manually call the next() function so that the subsequent queue items can progress. */\r\n\t\t\t\t\t\t\tif (Data(element).delayTimer.next) {\r\n\t\t\t\t\t\t\t\tData(element).delayTimer.next();\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tdelete Data(element).delayTimer;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* If we want to finish everything in the queue, we have to iterate through it\r\n\t\t\t\t\t\t and call each function. This will make them active calls below, which will\r\n\t\t\t\t\t\t cause them to be applied via the duration setting. */\r\n\t\t\t\t\t\tif (propertiesMap === \"finishAll\" && (options === true || Type.isString(options))) {\r\n\t\t\t\t\t\t\t/* Iterate through the items in the element's queue. */\r\n\t\t\t\t\t\t\t$.each($.queue(element, Type.isString(options) ? options : \"\"), function(_, item) {\r\n\t\t\t\t\t\t\t\t/* The queue array can contain an \"inprogress\" string, which we skip. */\r\n\t\t\t\t\t\t\t\tif (Type.isFunction(item)) {\r\n\t\t\t\t\t\t\t\t\titem();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t/* Clearing the $.queue() array is achieved by resetting it to []. */\r\n\t\t\t\t\t\t\t$.queue(element, Type.isString(options) ? options : \"\", []);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tvar callsToStop = [];\r\n\r\n\t\t\t\t\t/* When the stop action is triggered, the elements' currently active call is immediately stopped. The active call might have\r\n\t\t\t\t\t been applied to multiple elements, in which case all of the call's elements will be stopped. When an element\r\n\t\t\t\t\t is stopped, the next item in its animation queue is immediately triggered. */\r\n\t\t\t\t\t/* An additional argument may be passed in to clear an element's remaining queued calls. Either true (which defaults to the \"fx\" queue)\r\n\t\t\t\t\t or a custom queue string can be passed in. */\r\n\t\t\t\t\t/* Note: The stop command runs prior to Velocity's Queueing phase since its behavior is intended to take effect *immediately*,\r\n\t\t\t\t\t regardless of the element's current queue state. */\r\n\r\n\t\t\t\t\t/* Iterate through every active call. */\r\n\t\t\t\t\t$.each(Velocity.State.calls, function(i, activeCall) {\r\n\t\t\t\t\t\t/* Inactive calls are set to false by the logic inside completeCall(). Skip them. */\r\n\t\t\t\t\t\tif (activeCall) {\r\n\t\t\t\t\t\t\t/* Iterate through the active call's targeted elements. */\r\n\t\t\t\t\t\t\t$.each(activeCall[1], function(k, activeElement) {\r\n\t\t\t\t\t\t\t\t/* If true was passed in as a secondary argument, clear absolutely all calls on this element. Otherwise, only\r\n\t\t\t\t\t\t\t\t clear calls associated with the relevant queue. */\r\n\t\t\t\t\t\t\t\t/* Call stopping logic works as follows:\r\n\t\t\t\t\t\t\t\t - options === true --> stop current default queue calls (and queue:false calls), including remaining queued ones.\r\n\t\t\t\t\t\t\t\t - options === undefined --> stop current queue:\"\" call and all queue:false calls.\r\n\t\t\t\t\t\t\t\t - options === false --> stop only queue:false calls.\r\n\t\t\t\t\t\t\t\t - options === \"custom\" --> stop current queue:\"custom\" call, including remaining queued ones (there is no functionality to only clear the currently-running queue:\"custom\" call). */\r\n\t\t\t\t\t\t\t\tvar queueName = (options === undefined) ? \"\" : options;\r\n\r\n\t\t\t\t\t\t\t\tif (queueName !== true && (activeCall[2].queue !== queueName) && !(options === undefined && activeCall[2].queue === false)) {\r\n\t\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t/* Iterate through the calls targeted by the stop command. */\r\n\t\t\t\t\t\t\t\t$.each(elements, function(l, element) {\r\n\t\t\t\t\t\t\t\t\t/* Check that this call was applied to the target element. */\r\n\t\t\t\t\t\t\t\t\tif (element === activeElement) {\r\n\t\t\t\t\t\t\t\t\t\t/* Optionally clear the remaining queued calls. If we're doing \"finishAll\" this won't find anything,\r\n\t\t\t\t\t\t\t\t\t\t due to the queue-clearing above. */\r\n\t\t\t\t\t\t\t\t\t\tif (options === true || Type.isString(options)) {\r\n\t\t\t\t\t\t\t\t\t\t\t/* Iterate through the items in the element's queue. */\r\n\t\t\t\t\t\t\t\t\t\t\t$.each($.queue(element, Type.isString(options) ? options : \"\"), function(_, item) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t/* The queue array can contain an \"inprogress\" string, which we skip. */\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (Type.isFunction(item)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t/* Pass the item's callback a flag indicating that we want to abort from the queue call.\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t (Specifically, the queue will resolve the call's associated promise then abort.) */\r\n\t\t\t\t\t\t\t\t\t\t\t\t\titem(null, true);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t/* Clearing the $.queue() array is achieved by resetting it to []. */\r\n\t\t\t\t\t\t\t\t\t\t\t$.queue(element, Type.isString(options) ? options : \"\", []);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (propertiesMap === \"stop\") {\r\n\t\t\t\t\t\t\t\t\t\t\t/* Since \"reverse\" uses cached start values (the previous call's endValues), these values must be\r\n\t\t\t\t\t\t\t\t\t\t\t changed to reflect the final value that the elements were actually tweened to. */\r\n\t\t\t\t\t\t\t\t\t\t\t/* Note: If only queue:false/queue:\"custom\" animations are currently running on an element, it won't have a tweensContainer\r\n\t\t\t\t\t\t\t\t\t\t\t object. Also, queue:false/queue:\"custom\" animations can't be reversed. */\r\n\t\t\t\t\t\t\t\t\t\t\tvar data = Data(element);\r\n\t\t\t\t\t\t\t\t\t\t\tif (data && data.tweensContainer && (queueName === true || queueName === \"\")) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t$.each(data.tweensContainer, function(m, activeTween) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tactiveTween.endValue = activeTween.currentValue;\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tcallsToStop.push(i);\r\n\t\t\t\t\t\t\t\t\t\t} else if (propertiesMap === \"finish\" || propertiesMap === \"finishAll\") {\r\n\t\t\t\t\t\t\t\t\t\t\t/* To get active tweens to finish immediately, we forcefully shorten their durations to 1ms so that\r\n\t\t\t\t\t\t\t\t\t\t\t they finish upon the next rAf tick then proceed with normal call completion logic. */\r\n\t\t\t\t\t\t\t\t\t\t\tactiveCall[2].duration = 1;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t/* Prematurely call completeCall() on each matched active call. Pass an additional flag for \"stop\" to indicate\r\n\t\t\t\t\t that the complete callback and display:none setting should be skipped since we're completing prematurely. */\r\n\t\t\t\t\tif (propertiesMap === \"stop\") {\r\n\t\t\t\t\t\t$.each(callsToStop, function(i, j) {\r\n\t\t\t\t\t\t\tcompleteCall(j, true);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif (promiseData.promise) {\r\n\t\t\t\t\t\t\t/* Immediately resolve the promise associated with this stop call since stop runs synchronously. */\r\n\t\t\t\t\t\t\tpromiseData.resolver(elements);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* Since we're stopping, and not proceeding with queueing, exit out of Velocity. */\r\n\t\t\t\t\treturn getChain();\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\t/* Treat a non-empty plain object as a literal properties map. */\r\n\t\t\t\t\tif ($.isPlainObject(propertiesMap) && !Type.isEmptyObject(propertiesMap)) {\r\n\t\t\t\t\t\taction = \"start\";\r\n\r\n\t\t\t\t\t\t/****************\r\n\t\t\t\t\t\t Redirects\r\n\t\t\t\t\t\t ****************/\r\n\r\n\t\t\t\t\t\t/* Check if a string matches a registered redirect (see Redirects above). */\r\n\t\t\t\t\t} else if (Type.isString(propertiesMap) && Velocity.Redirects[propertiesMap]) {\r\n\t\t\t\t\t\topts = $.extend({}, options);\r\n\r\n\t\t\t\t\t\tvar durationOriginal = opts.duration,\r\n\t\t\t\t\t\t\t\tdelayOriginal = opts.delay || 0;\r\n\r\n\t\t\t\t\t\t/* If the backwards option was passed in, reverse the element set so that elements animate from the last to the first. */\r\n\t\t\t\t\t\tif (opts.backwards === true) {\r\n\t\t\t\t\t\t\telements = $.extend(true, [], elements).reverse();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Individually trigger the redirect for each element in the set to prevent users from having to handle iteration logic in their redirect. */\r\n\t\t\t\t\t\t$.each(elements, function(elementIndex, element) {\r\n\t\t\t\t\t\t\t/* If the stagger option was passed in, successively delay each element by the stagger value (in ms). Retain the original delay value. */\r\n\t\t\t\t\t\t\tif (parseFloat(opts.stagger)) {\r\n\t\t\t\t\t\t\t\topts.delay = delayOriginal + (parseFloat(opts.stagger) * elementIndex);\r\n\t\t\t\t\t\t\t} else if (Type.isFunction(opts.stagger)) {\r\n\t\t\t\t\t\t\t\topts.delay = delayOriginal + opts.stagger.call(element, elementIndex, elementsLength);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* If the drag option was passed in, successively increase/decrease (depending on the presense of opts.backwards)\r\n\t\t\t\t\t\t\t the duration of each element's animation, using floors to prevent producing very short durations. */\r\n\t\t\t\t\t\t\tif (opts.drag) {\r\n\t\t\t\t\t\t\t\t/* Default the duration of UI pack effects (callouts and transitions) to 1000ms instead of the usual default duration of 400ms. */\r\n\t\t\t\t\t\t\t\topts.duration = parseFloat(durationOriginal) || (/^(callout|transition)/.test(propertiesMap) ? 1000 : DURATION_DEFAULT);\r\n\r\n\t\t\t\t\t\t\t\t/* For each element, take the greater duration of: A) animation completion percentage relative to the original duration,\r\n\t\t\t\t\t\t\t\t B) 75% of the original duration, or C) a 200ms fallback (in case duration is already set to a low value).\r\n\t\t\t\t\t\t\t\t The end result is a baseline of 75% of the redirect's duration that increases/decreases as the end of the element set is approached. */\r\n\t\t\t\t\t\t\t\topts.duration = Math.max(opts.duration * (opts.backwards ? 1 - elementIndex / elementsLength : (elementIndex + 1) / elementsLength), opts.duration * 0.75, 200);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* Pass in the call's opts object so that the redirect can optionally extend it. It defaults to an empty object instead of null to\r\n\t\t\t\t\t\t\t reduce the opts checking logic required inside the redirect. */\r\n\t\t\t\t\t\t\tVelocity.Redirects[propertiesMap].call(element, element, opts || {}, elementIndex, elementsLength, elements, promiseData.promise ? promiseData : undefined);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t/* Since the animation logic resides within the redirect's own code, abort the remainder of this call.\r\n\t\t\t\t\t\t (The performance overhead up to this point is virtually non-existant.) */\r\n\t\t\t\t\t\t/* Note: The jQuery call chain is kept intact by returning the complete element set. */\r\n\t\t\t\t\t\treturn getChain();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar abortError = \"Velocity: First argument (\" + propertiesMap + \") was not a property map, a known action, or a registered redirect. Aborting.\";\r\n\r\n\t\t\t\t\t\tif (promiseData.promise) {\r\n\t\t\t\t\t\t\tpromiseData.rejecter(new Error(abortError));\r\n\t\t\t\t\t\t} else if (window.console) {\r\n\t\t\t\t\t\t\tconsole.log(abortError);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn getChain();\r\n\t\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/**************************\r\n\t\t\t Call-Wide Variables\r\n\t\t\t **************************/\r\n\r\n\t\t\t/* A container for CSS unit conversion ratios (e.g. %, rem, and em ==> px) that is used to cache ratios across all elements\r\n\t\t\t being animated in a single Velocity call. Calculating unit ratios necessitates DOM querying and updating, and is therefore\r\n\t\t\t avoided (via caching) wherever possible. This container is call-wide instead of page-wide to avoid the risk of using stale\r\n\t\t\t conversion metrics across Velocity animations that are not immediately consecutively chained. */\r\n\t\t\tvar callUnitConversionData = {\r\n\t\t\t\tlastParent: null,\r\n\t\t\t\tlastPosition: null,\r\n\t\t\t\tlastFontSize: null,\r\n\t\t\t\tlastPercentToPxWidth: null,\r\n\t\t\t\tlastPercentToPxHeight: null,\r\n\t\t\t\tlastEmToPx: null,\r\n\t\t\t\tremToPx: null,\r\n\t\t\t\tvwToPx: null,\r\n\t\t\t\tvhToPx: null\r\n\t\t\t};\r\n\r\n\t\t\t/* A container for all the ensuing tween data and metadata associated with this call. This container gets pushed to the page-wide\r\n\t\t\t Velocity.State.calls array that is processed during animation ticking. */\r\n\t\t\tvar call = [];\r\n\r\n\t\t\t/************************\r\n\t\t\t Element Processing\r\n\t\t\t ************************/\r\n\r\n\t\t\t/* Element processing consists of three parts -- data processing that cannot go stale and data processing that *can* go stale (i.e. third-party style modifications):\r\n\t\t\t 1) Pre-Queueing: Element-wide variables, including the element's data storage, are instantiated. Call options are prepared. If triggered, the Stop action is executed.\r\n\t\t\t 2) Queueing: The logic that runs once this call has reached its point of execution in the element's $.queue() stack. Most logic is placed here to avoid risking it becoming stale.\r\n\t\t\t 3) Pushing: Consolidation of the tween data followed by its push onto the global in-progress calls container.\r\n\t\t\t `elementArrayIndex` allows passing index of the element in the original array to value functions.\r\n\t\t\t If `elementsIndex` were used instead the index would be determined by the elements' per-element queue.\r\n\t\t\t */\r\n\t\t\tfunction processElement(element, elementArrayIndex) {\r\n\r\n\t\t\t\t/*************************\r\n\t\t\t\t Part I: Pre-Queueing\r\n\t\t\t\t *************************/\r\n\r\n\t\t\t\t/***************************\r\n\t\t\t\t Element-Wide Variables\r\n\t\t\t\t ***************************/\r\n\r\n\t\t\t\tvar /* The runtime opts object is the extension of the current call's options and Velocity's page-wide option defaults. */\r\n\t\t\t\t\t\topts = $.extend({}, Velocity.defaults, options),\r\n\t\t\t\t\t\t/* A container for the processed data associated with each property in the propertyMap.\r\n\t\t\t\t\t\t (Each property in the map produces its own \"tween\".) */\r\n\t\t\t\t\t\ttweensContainer = {},\r\n\t\t\t\t\t\telementUnitConversionData;\r\n\r\n\t\t\t\t/******************\r\n\t\t\t\t Element Init\r\n\t\t\t\t ******************/\r\n\r\n\t\t\t\tif (Data(element) === undefined) {\r\n\t\t\t\t\tVelocity.init(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/******************\r\n\t\t\t\t Option: Delay\r\n\t\t\t\t ******************/\r\n\r\n\t\t\t\t/* Since queue:false doesn't respect the item's existing queue, we avoid injecting its delay here (it's set later on). */\r\n\t\t\t\t/* Note: Velocity rolls its own delay function since jQuery doesn't have a utility alias for $.fn.delay()\r\n\t\t\t\t (and thus requires jQuery element creation, which we avoid since its overhead includes DOM querying). */\r\n\t\t\t\tif (parseFloat(opts.delay) && opts.queue !== false) {\r\n\t\t\t\t\t$.queue(element, opts.queue, function(next, clearQueue) {\r\n\t\t\t\t\t\tif (clearQueue === true) {\r\n\t\t\t\t\t\t\t/* Do not continue with animation queueing. */\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* This is a flag used to indicate to the upcoming completeCall() function that this queue entry was initiated by Velocity. See completeCall() for further details. */\r\n\t\t\t\t\t\tVelocity.velocityQueueEntryFlag = true;\r\n\r\n\t\t\t\t\t\t/* The ensuing queue item (which is assigned to the \"next\" argument that $.queue() automatically passes in) will be triggered after a setTimeout delay.\r\n\t\t\t\t\t\t The setTimeout is stored so that it can be subjected to clearTimeout() if this animation is prematurely stopped via Velocity's \"stop\" command, and\r\n\t\t\t\t\t\t delayBegin/delayTime is used to ensure we can \"pause\" and \"resume\" a tween that is still mid-delay. */\r\n\r\n\t\t\t\t\t\t/* Temporarily store delayed elements to facilite access for global pause/resume */\r\n\t\t\t\t\t\tvar callIndex = Velocity.State.delayedElements.count++;\r\n\t\t\t\t\t\tVelocity.State.delayedElements[callIndex] = element;\r\n\r\n\t\t\t\t\t\tvar delayComplete = (function(index) {\r\n\t\t\t\t\t\t\treturn function() {\r\n\t\t\t\t\t\t\t\t/* Clear the temporary element */\r\n\t\t\t\t\t\t\t\tVelocity.State.delayedElements[index] = false;\r\n\r\n\t\t\t\t\t\t\t\t/* Finally, issue the call */\r\n\t\t\t\t\t\t\t\tnext();\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t})(callIndex);\r\n\r\n\r\n\t\t\t\t\t\tData(element).delayBegin = (new Date()).getTime();\r\n\t\t\t\t\t\tData(element).delay = parseFloat(opts.delay);\r\n\t\t\t\t\t\tData(element).delayTimer = {\r\n\t\t\t\t\t\t\tsetTimeout: setTimeout(next, parseFloat(opts.delay)),\r\n\t\t\t\t\t\t\tnext: delayComplete\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/*********************\r\n\t\t\t\t Option: Duration\r\n\t\t\t\t *********************/\r\n\r\n\t\t\t\t/* Support for jQuery's named durations. */\r\n\t\t\t\tswitch (opts.duration.toString().toLowerCase()) {\r\n\t\t\t\t\tcase \"fast\":\r\n\t\t\t\t\t\topts.duration = 200;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"normal\":\r\n\t\t\t\t\t\topts.duration = DURATION_DEFAULT;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"slow\":\r\n\t\t\t\t\t\topts.duration = 600;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t/* Remove the potential \"ms\" suffix and default to 1 if the user is attempting to set a duration of 0 (in order to produce an immediate style change). */\r\n\t\t\t\t\t\topts.duration = parseFloat(opts.duration) || 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/************************\r\n\t\t\t\t Global Option: Mock\r\n\t\t\t\t ************************/\r\n\r\n\t\t\t\tif (Velocity.mock !== false) {\r\n\t\t\t\t\t/* In mock mode, all animations are forced to 1ms so that they occur immediately upon the next rAF tick.\r\n\t\t\t\t\t Alternatively, a multiplier can be passed in to time remap all delays and durations. */\r\n\t\t\t\t\tif (Velocity.mock === true) {\r\n\t\t\t\t\t\topts.duration = opts.delay = 1;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\topts.duration *= parseFloat(Velocity.mock) || 1;\r\n\t\t\t\t\t\topts.delay *= parseFloat(Velocity.mock) || 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/*******************\r\n\t\t\t\t Option: Easing\r\n\t\t\t\t *******************/\r\n\r\n\t\t\t\topts.easing = getEasing(opts.easing, opts.duration);\r\n\r\n\t\t\t\t/**********************\r\n\t\t\t\t Option: Callbacks\r\n\t\t\t\t **********************/\r\n\r\n\t\t\t\t/* Callbacks must functions. Otherwise, default to null. */\r\n\t\t\t\tif (opts.begin && !Type.isFunction(opts.begin)) {\r\n\t\t\t\t\topts.begin = null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (opts.progress && !Type.isFunction(opts.progress)) {\r\n\t\t\t\t\topts.progress = null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (opts.complete && !Type.isFunction(opts.complete)) {\r\n\t\t\t\t\topts.complete = null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/*********************************\r\n\t\t\t\t Option: Display & Visibility\r\n\t\t\t\t *********************************/\r\n\r\n\t\t\t\t/* Refer to Velocity's documentation (VelocityJS.org/#displayAndVisibility) for a description of the display and visibility options' behavior. */\r\n\t\t\t\t/* Note: We strictly check for undefined instead of falsiness because display accepts an empty string value. */\r\n\t\t\t\tif (opts.display !== undefined && opts.display !== null) {\r\n\t\t\t\t\topts.display = opts.display.toString().toLowerCase();\r\n\r\n\t\t\t\t\t/* Users can pass in a special \"auto\" value to instruct Velocity to set the element to its default display value. */\r\n\t\t\t\t\tif (opts.display === \"auto\") {\r\n\t\t\t\t\t\topts.display = Velocity.CSS.Values.getDisplayType(element);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (opts.visibility !== undefined && opts.visibility !== null) {\r\n\t\t\t\t\topts.visibility = opts.visibility.toString().toLowerCase();\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/**********************\r\n\t\t\t\t Option: mobileHA\r\n\t\t\t\t **********************/\r\n\r\n\t\t\t\t/* When set to true, and if this is a mobile device, mobileHA automatically enables hardware acceleration (via a null transform hack)\r\n\t\t\t\t on animating elements. HA is removed from the element at the completion of its animation. */\r\n\t\t\t\t/* Note: Android Gingerbread doesn't support HA. If a null transform hack (mobileHA) is in fact set, it will prevent other tranform subproperties from taking effect. */\r\n\t\t\t\t/* Note: You can read more about the use of mobileHA in Velocity's documentation: VelocityJS.org/#mobileHA. */\r\n\t\t\t\topts.mobileHA = (opts.mobileHA && Velocity.State.isMobile && !Velocity.State.isGingerbread);\r\n\r\n\t\t\t\t/***********************\r\n\t\t\t\t Part II: Queueing\r\n\t\t\t\t ***********************/\r\n\r\n\t\t\t\t/* When a set of elements is targeted by a Velocity call, the set is broken up and each element has the current Velocity call individually queued onto it.\r\n\t\t\t\t In this way, each element's existing queue is respected; some elements may already be animating and accordingly should not have this current Velocity call triggered immediately. */\r\n\t\t\t\t/* In each queue, tween data is processed for each animating property then pushed onto the call-wide calls array. When the last element in the set has had its tweens processed,\r\n\t\t\t\t the call array is pushed to Velocity.State.calls for live processing by the requestAnimationFrame tick. */\r\n\t\t\t\tfunction buildQueue(next) {\r\n\t\t\t\t\tvar data, lastTweensContainer;\r\n\r\n\t\t\t\t\t/*******************\r\n\t\t\t\t\t Option: Begin\r\n\t\t\t\t\t *******************/\r\n\r\n\t\t\t\t\t/* The begin callback is fired once per call -- not once per elemenet -- and is passed the full raw DOM element set as both its context and its first argument. */\r\n\t\t\t\t\tif (opts.begin && elementsIndex === 0) {\r\n\t\t\t\t\t\t/* We throw callbacks in a setTimeout so that thrown errors don't halt the execution of Velocity itself. */\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\topts.begin.call(elements, elements);\r\n\t\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\t\tthrow error;\r\n\t\t\t\t\t\t\t}, 1);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/*****************************************\r\n\t\t\t\t\t Tween Data Construction (for Scroll)\r\n\t\t\t\t\t *****************************************/\r\n\r\n\t\t\t\t\t/* Note: In order to be subjected to chaining and animation options, scroll's tweening is routed through Velocity as if it were a standard CSS property animation. */\r\n\t\t\t\t\tif (action === \"scroll\") {\r\n\t\t\t\t\t\t/* The scroll action uniquely takes an optional \"offset\" option -- specified in pixels -- that offsets the targeted scroll position. */\r\n\t\t\t\t\t\tvar scrollDirection = (/^x$/i.test(opts.axis) ? \"Left\" : \"Top\"),\r\n\t\t\t\t\t\t\t\tscrollOffset = parseFloat(opts.offset) || 0,\r\n\t\t\t\t\t\t\t\tscrollPositionCurrent,\r\n\t\t\t\t\t\t\t\tscrollPositionCurrentAlternate,\r\n\t\t\t\t\t\t\t\tscrollPositionEnd;\r\n\r\n\t\t\t\t\t\t/* Scroll also uniquely takes an optional \"container\" option, which indicates the parent element that should be scrolled --\r\n\t\t\t\t\t\t as opposed to the browser window itself. This is useful for scrolling toward an element that's inside an overflowing parent element. */\r\n\t\t\t\t\t\tif (opts.container) {\r\n\t\t\t\t\t\t\t/* Ensure that either a jQuery object or a raw DOM element was passed in. */\r\n\t\t\t\t\t\t\tif (Type.isWrapped(opts.container) || Type.isNode(opts.container)) {\r\n\t\t\t\t\t\t\t\t/* Extract the raw DOM element from the jQuery wrapper. */\r\n\t\t\t\t\t\t\t\topts.container = opts.container[0] || opts.container;\r\n\t\t\t\t\t\t\t\t/* Note: Unlike other properties in Velocity, the browser's scroll position is never cached since it so frequently changes\r\n\t\t\t\t\t\t\t\t (due to the user's natural interaction with the page). */\r\n\t\t\t\t\t\t\t\tscrollPositionCurrent = opts.container[\"scroll\" + scrollDirection]; /* GET */\r\n\r\n\t\t\t\t\t\t\t\t/* $.position() values are relative to the container's currently viewable area (without taking into account the container's true dimensions\r\n\t\t\t\t\t\t\t\t -- say, for example, if the container was not overflowing). Thus, the scroll end value is the sum of the child element's position *and*\r\n\t\t\t\t\t\t\t\t the scroll container's current scroll position. */\r\n\t\t\t\t\t\t\t\tscrollPositionEnd = (scrollPositionCurrent + $(element).position()[scrollDirection.toLowerCase()]) + scrollOffset; /* GET */\r\n\t\t\t\t\t\t\t\t/* If a value other than a jQuery object or a raw DOM element was passed in, default to null so that this option is ignored. */\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\topts.container = null;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t/* If the window itself is being scrolled -- not a containing element -- perform a live scroll position lookup using\r\n\t\t\t\t\t\t\t the appropriate cached property names (which differ based on browser type). */\r\n\t\t\t\t\t\t\tscrollPositionCurrent = Velocity.State.scrollAnchor[Velocity.State[\"scrollProperty\" + scrollDirection]]; /* GET */\r\n\t\t\t\t\t\t\t/* When scrolling the browser window, cache the alternate axis's current value since window.scrollTo() doesn't let us change only one value at a time. */\r\n\t\t\t\t\t\t\tscrollPositionCurrentAlternate = Velocity.State.scrollAnchor[Velocity.State[\"scrollProperty\" + (scrollDirection === \"Left\" ? \"Top\" : \"Left\")]]; /* GET */\r\n\r\n\t\t\t\t\t\t\t/* Unlike $.position(), $.offset() values are relative to the browser window's true dimensions -- not merely its currently viewable area --\r\n\t\t\t\t\t\t\t and therefore end values do not need to be compounded onto current values. */\r\n\t\t\t\t\t\t\tscrollPositionEnd = $(element).offset()[scrollDirection.toLowerCase()] + scrollOffset; /* GET */\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Since there's only one format that scroll's associated tweensContainer can take, we create it manually. */\r\n\t\t\t\t\t\ttweensContainer = {\r\n\t\t\t\t\t\t\tscroll: {\r\n\t\t\t\t\t\t\t\trootPropertyValue: false,\r\n\t\t\t\t\t\t\t\tstartValue: scrollPositionCurrent,\r\n\t\t\t\t\t\t\t\tcurrentValue: scrollPositionCurrent,\r\n\t\t\t\t\t\t\t\tendValue: scrollPositionEnd,\r\n\t\t\t\t\t\t\t\tunitType: \"\",\r\n\t\t\t\t\t\t\t\teasing: opts.easing,\r\n\t\t\t\t\t\t\t\tscrollData: {\r\n\t\t\t\t\t\t\t\t\tcontainer: opts.container,\r\n\t\t\t\t\t\t\t\t\tdirection: scrollDirection,\r\n\t\t\t\t\t\t\t\t\talternateValue: scrollPositionCurrentAlternate\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\telement: element\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tif (Velocity.debug) {\r\n\t\t\t\t\t\t\tconsole.log(\"tweensContainer (scroll): \", tweensContainer.scroll, element);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/******************************************\r\n\t\t\t\t\t\t Tween Data Construction (for Reverse)\r\n\t\t\t\t\t\t ******************************************/\r\n\r\n\t\t\t\t\t\t/* Reverse acts like a \"start\" action in that a property map is animated toward. The only difference is\r\n\t\t\t\t\t\t that the property map used for reverse is the inverse of the map used in the previous call. Thus, we manipulate\r\n\t\t\t\t\t\t the previous call to construct our new map: use the previous map's end values as our new map's start values. Copy over all other data. */\r\n\t\t\t\t\t\t/* Note: Reverse can be directly called via the \"reverse\" parameter, or it can be indirectly triggered via the loop option. (Loops are composed of multiple reverses.) */\r\n\t\t\t\t\t\t/* Note: Reverse calls do not need to be consecutively chained onto a currently-animating element in order to operate on cached values;\r\n\t\t\t\t\t\t there is no harm to reverse being called on a potentially stale data cache since reverse's behavior is simply defined\r\n\t\t\t\t\t\t as reverting to the element's values as they were prior to the previous *Velocity* call. */\r\n\t\t\t\t\t} else if (action === \"reverse\") {\r\n\t\t\t\t\t\tdata = Data(element);\r\n\r\n\t\t\t\t\t\t/* Abort if there is no prior animation data to reverse to. */\r\n\t\t\t\t\t\tif (!data) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!data.tweensContainer) {\r\n\t\t\t\t\t\t\t/* Dequeue the element so that this queue entry releases itself immediately, allowing subsequent queue entries to run. */\r\n\t\t\t\t\t\t\t$.dequeue(element, opts.queue);\r\n\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t/*********************\r\n\t\t\t\t\t\t\t Options Parsing\r\n\t\t\t\t\t\t\t *********************/\r\n\r\n\t\t\t\t\t\t\t/* If the element was hidden via the display option in the previous call,\r\n\t\t\t\t\t\t\t revert display to \"auto\" prior to reversal so that the element is visible again. */\r\n\t\t\t\t\t\t\tif (data.opts.display === \"none\") {\r\n\t\t\t\t\t\t\t\tdata.opts.display = \"auto\";\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (data.opts.visibility === \"hidden\") {\r\n\t\t\t\t\t\t\t\tdata.opts.visibility = \"visible\";\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* If the loop option was set in the previous call, disable it so that \"reverse\" calls aren't recursively generated.\r\n\t\t\t\t\t\t\t Further, remove the previous call's callback options; typically, users do not want these to be refired. */\r\n\t\t\t\t\t\t\tdata.opts.loop = false;\r\n\t\t\t\t\t\t\tdata.opts.begin = null;\r\n\t\t\t\t\t\t\tdata.opts.complete = null;\r\n\r\n\t\t\t\t\t\t\t/* Since we're extending an opts object that has already been extended with the defaults options object,\r\n\t\t\t\t\t\t\t we remove non-explicitly-defined properties that are auto-assigned values. */\r\n\t\t\t\t\t\t\tif (!options.easing) {\r\n\t\t\t\t\t\t\t\tdelete opts.easing;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (!options.duration) {\r\n\t\t\t\t\t\t\t\tdelete opts.duration;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* The opts object used for reversal is an extension of the options object optionally passed into this\r\n\t\t\t\t\t\t\t reverse call plus the options used in the previous Velocity call. */\r\n\t\t\t\t\t\t\topts = $.extend({}, data.opts, opts);\r\n\r\n\t\t\t\t\t\t\t/*************************************\r\n\t\t\t\t\t\t\t Tweens Container Reconstruction\r\n\t\t\t\t\t\t\t *************************************/\r\n\r\n\t\t\t\t\t\t\t/* Create a deepy copy (indicated via the true flag) of the previous call's tweensContainer. */\r\n\t\t\t\t\t\t\tlastTweensContainer = $.extend(true, {}, data ? data.tweensContainer : null);\r\n\r\n\t\t\t\t\t\t\t/* Manipulate the previous tweensContainer by replacing its end values and currentValues with its start values. */\r\n\t\t\t\t\t\t\tfor (var lastTween in lastTweensContainer) {\r\n\t\t\t\t\t\t\t\t/* In addition to tween data, tweensContainers contain an element property that we ignore here. */\r\n\t\t\t\t\t\t\t\tif (lastTweensContainer.hasOwnProperty(lastTween) && lastTween !== \"element\") {\r\n\t\t\t\t\t\t\t\t\tvar lastStartValue = lastTweensContainer[lastTween].startValue;\r\n\r\n\t\t\t\t\t\t\t\t\tlastTweensContainer[lastTween].startValue = lastTweensContainer[lastTween].currentValue = lastTweensContainer[lastTween].endValue;\r\n\t\t\t\t\t\t\t\t\tlastTweensContainer[lastTween].endValue = lastStartValue;\r\n\r\n\t\t\t\t\t\t\t\t\t/* Easing is the only option that embeds into the individual tween data (since it can be defined on a per-property basis).\r\n\t\t\t\t\t\t\t\t\t Accordingly, every property's easing value must be updated when an options object is passed in with a reverse call.\r\n\t\t\t\t\t\t\t\t\t The side effect of this extensibility is that all per-property easing values are forcefully reset to the new value. */\r\n\t\t\t\t\t\t\t\t\tif (!Type.isEmptyObject(options)) {\r\n\t\t\t\t\t\t\t\t\t\tlastTweensContainer[lastTween].easing = opts.easing;\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tif (Velocity.debug) {\r\n\t\t\t\t\t\t\t\t\t\tconsole.log(\"reverse tweensContainer (\" + lastTween + \"): \" + JSON.stringify(lastTweensContainer[lastTween]), element);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\ttweensContainer = lastTweensContainer;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/*****************************************\r\n\t\t\t\t\t\t Tween Data Construction (for Start)\r\n\t\t\t\t\t\t *****************************************/\r\n\r\n\t\t\t\t\t} else if (action === \"start\") {\r\n\r\n\t\t\t\t\t\t/*************************\r\n\t\t\t\t\t\t Value Transferring\r\n\t\t\t\t\t\t *************************/\r\n\r\n\t\t\t\t\t\t/* If this queue entry follows a previous Velocity-initiated queue entry *and* if this entry was created\r\n\t\t\t\t\t\t while the element was in the process of being animated by Velocity, then this current call is safe to use\r\n\t\t\t\t\t\t the end values from the prior call as its start values. Velocity attempts to perform this value transfer\r\n\t\t\t\t\t\t process whenever possible in order to avoid requerying the DOM. */\r\n\t\t\t\t\t\t/* If values aren't transferred from a prior call and start values were not forcefed by the user (more on this below),\r\n\t\t\t\t\t\t then the DOM is queried for the element's current values as a last resort. */\r\n\t\t\t\t\t\t/* Note: Conversely, animation reversal (and looping) *always* perform inter-call value transfers; they never requery the DOM. */\r\n\r\n\t\t\t\t\t\tdata = Data(element);\r\n\r\n\t\t\t\t\t\t/* The per-element isAnimating flag is used to indicate whether it's safe (i.e. the data isn't stale)\r\n\t\t\t\t\t\t to transfer over end values to use as start values. If it's set to true and there is a previous\r\n\t\t\t\t\t\t Velocity call to pull values from, do so. */\r\n\t\t\t\t\t\tif (data && data.tweensContainer && data.isAnimating === true) {\r\n\t\t\t\t\t\t\tlastTweensContainer = data.tweensContainer;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/***************************\r\n\t\t\t\t\t\t Tween Data Calculation\r\n\t\t\t\t\t\t ***************************/\r\n\r\n\t\t\t\t\t\t/* This function parses property data and defaults endValue, easing, and startValue as appropriate. */\r\n\t\t\t\t\t\t/* Property map values can either take the form of 1) a single value representing the end value,\r\n\t\t\t\t\t\t or 2) an array in the form of [ endValue, [, easing] [, startValue] ].\r\n\t\t\t\t\t\t The optional third parameter is a forcefed startValue to be used instead of querying the DOM for\r\n\t\t\t\t\t\t the element's current value. Read Velocity's docmentation to learn more about forcefeeding: VelocityJS.org/#forcefeeding */\r\n\t\t\t\t\t\tvar parsePropertyValue = function(valueData, skipResolvingEasing) {\r\n\t\t\t\t\t\t\tvar endValue, easing, startValue;\r\n\r\n\t\t\t\t\t\t\t/* If we have a function as the main argument then resolve it first, in case it returns an array that needs to be split */\r\n\t\t\t\t\t\t\tif (Type.isFunction(valueData)) {\r\n\t\t\t\t\t\t\t\tvalueData = valueData.call(element, elementArrayIndex, elementsLength);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* Handle the array format, which can be structured as one of three potential overloads:\r\n\t\t\t\t\t\t\t A) [ endValue, easing, startValue ], B) [ endValue, easing ], or C) [ endValue, startValue ] */\r\n\t\t\t\t\t\t\tif (Type.isArray(valueData)) {\r\n\t\t\t\t\t\t\t\t/* endValue is always the first item in the array. Don't bother validating endValue's value now\r\n\t\t\t\t\t\t\t\t since the ensuing property cycling logic does that. */\r\n\t\t\t\t\t\t\t\tendValue = valueData[0];\r\n\r\n\t\t\t\t\t\t\t\t/* Two-item array format: If the second item is a number, function, or hex string, treat it as a\r\n\t\t\t\t\t\t\t\t start value since easings can only be non-hex strings or arrays. */\r\n\t\t\t\t\t\t\t\tif ((!Type.isArray(valueData[1]) && /^[\\d-]/.test(valueData[1])) || Type.isFunction(valueData[1]) || CSS.RegEx.isHex.test(valueData[1])) {\r\n\t\t\t\t\t\t\t\t\tstartValue = valueData[1];\r\n\t\t\t\t\t\t\t\t\t/* Two or three-item array: If the second item is a non-hex string easing name or an array, treat it as an easing. */\r\n\t\t\t\t\t\t\t\t} else if ((Type.isString(valueData[1]) && !CSS.RegEx.isHex.test(valueData[1]) && Velocity.Easings[valueData[1]]) || Type.isArray(valueData[1])) {\r\n\t\t\t\t\t\t\t\t\teasing = skipResolvingEasing ? valueData[1] : getEasing(valueData[1], opts.duration);\r\n\r\n\t\t\t\t\t\t\t\t\t/* Don't bother validating startValue's value now since the ensuing property cycling logic inherently does that. */\r\n\t\t\t\t\t\t\t\t\tstartValue = valueData[2];\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tstartValue = valueData[1] || valueData[2];\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t/* Handle the single-value format. */\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tendValue = valueData;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* Default to the call's easing if a per-property easing type was not defined. */\r\n\t\t\t\t\t\t\tif (!skipResolvingEasing) {\r\n\t\t\t\t\t\t\t\teasing = easing || opts.easing;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* If functions were passed in as values, pass the function the current element as its context,\r\n\t\t\t\t\t\t\t plus the element's index and the element set's size as arguments. Then, assign the returned value. */\r\n\t\t\t\t\t\t\tif (Type.isFunction(endValue)) {\r\n\t\t\t\t\t\t\t\tendValue = endValue.call(element, elementArrayIndex, elementsLength);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (Type.isFunction(startValue)) {\r\n\t\t\t\t\t\t\t\tstartValue = startValue.call(element, elementArrayIndex, elementsLength);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* Allow startValue to be left as undefined to indicate to the ensuing code that its value was not forcefed. */\r\n\t\t\t\t\t\t\treturn [endValue || 0, easing, startValue];\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tvar fixPropertyValue = function(property, valueData) {\r\n\t\t\t\t\t\t\t/* In case this property is a hook, there are circumstances where we will intend to work on the hook's root property and not the hooked subproperty. */\r\n\t\t\t\t\t\t\tvar rootProperty = CSS.Hooks.getRoot(property),\r\n\t\t\t\t\t\t\t\t\trootPropertyValue = false,\r\n\t\t\t\t\t\t\t\t\t/* Parse out endValue, easing, and startValue from the property's data. */\r\n\t\t\t\t\t\t\t\t\tendValue = valueData[0],\r\n\t\t\t\t\t\t\t\t\teasing = valueData[1],\r\n\t\t\t\t\t\t\t\t\tstartValue = valueData[2],\r\n\t\t\t\t\t\t\t\t\tpattern;\r\n\r\n\t\t\t\t\t\t\t/**************************\r\n\t\t\t\t\t\t\t Start Value Sourcing\r\n\t\t\t\t\t\t\t **************************/\r\n\r\n\t\t\t\t\t\t\t/* Other than for the dummy tween property, properties that are not supported by the browser (and do not have an associated normalization) will\r\n\t\t\t\t\t\t\t inherently produce no style changes when set, so they are skipped in order to decrease animation tick overhead.\r\n\t\t\t\t\t\t\t Property support is determined via prefixCheck(), which returns a false flag when no supported is detected. */\r\n\t\t\t\t\t\t\t/* Note: Since SVG elements have some of their properties directly applied as HTML attributes,\r\n\t\t\t\t\t\t\t there is no way to check for their explicit browser support, and so we skip skip this check for them. */\r\n\t\t\t\t\t\t\tif ((!data || !data.isSVG) && rootProperty !== \"tween\" && CSS.Names.prefixCheck(rootProperty)[1] === false && CSS.Normalizations.registered[rootProperty] === undefined) {\r\n\t\t\t\t\t\t\t\tif (Velocity.debug) {\r\n\t\t\t\t\t\t\t\t\tconsole.log(\"Skipping [\" + rootProperty + \"] due to a lack of browser support.\");\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* If the display option is being set to a non-\"none\" (e.g. \"block\") and opacity (filter on IE<=8) is being\r\n\t\t\t\t\t\t\t animated to an endValue of non-zero, the user's intention is to fade in from invisible, thus we forcefeed opacity\r\n\t\t\t\t\t\t\t a startValue of 0 if its startValue hasn't already been sourced by value transferring or prior forcefeeding. */\r\n\t\t\t\t\t\t\tif (((opts.display !== undefined && opts.display !== null && opts.display !== \"none\") || (opts.visibility !== undefined && opts.visibility !== \"hidden\")) && /opacity|filter/.test(property) && !startValue && endValue !== 0) {\r\n\t\t\t\t\t\t\t\tstartValue = 0;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* If values have been transferred from the previous Velocity call, extract the endValue and rootPropertyValue\r\n\t\t\t\t\t\t\t for all of the current call's properties that were *also* animated in the previous call. */\r\n\t\t\t\t\t\t\t/* Note: Value transferring can optionally be disabled by the user via the _cacheValues option. */\r\n\t\t\t\t\t\t\tif (opts._cacheValues && lastTweensContainer && lastTweensContainer[property]) {\r\n\t\t\t\t\t\t\t\tif (startValue === undefined) {\r\n\t\t\t\t\t\t\t\t\tstartValue = lastTweensContainer[property].endValue + lastTweensContainer[property].unitType;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t/* The previous call's rootPropertyValue is extracted from the element's data cache since that's the\r\n\t\t\t\t\t\t\t\t instance of rootPropertyValue that gets freshly updated by the tweening process, whereas the rootPropertyValue\r\n\t\t\t\t\t\t\t\t attached to the incoming lastTweensContainer is equal to the root property's value prior to any tweening. */\r\n\t\t\t\t\t\t\t\trootPropertyValue = data.rootPropertyValueCache[rootProperty];\r\n\t\t\t\t\t\t\t\t/* If values were not transferred from a previous Velocity call, query the DOM as needed. */\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t/* Handle hooked properties. */\r\n\t\t\t\t\t\t\t\tif (CSS.Hooks.registered[property]) {\r\n\t\t\t\t\t\t\t\t\tif (startValue === undefined) {\r\n\t\t\t\t\t\t\t\t\t\trootPropertyValue = CSS.getPropertyValue(element, rootProperty); /* GET */\r\n\t\t\t\t\t\t\t\t\t\t/* Note: The following getPropertyValue() call does not actually trigger a DOM query;\r\n\t\t\t\t\t\t\t\t\t\t getPropertyValue() will extract the hook from rootPropertyValue. */\r\n\t\t\t\t\t\t\t\t\t\tstartValue = CSS.getPropertyValue(element, property, rootPropertyValue);\r\n\t\t\t\t\t\t\t\t\t\t/* If startValue is already defined via forcefeeding, do not query the DOM for the root property's value;\r\n\t\t\t\t\t\t\t\t\t\t just grab rootProperty's zero-value template from CSS.Hooks. This overwrites the element's actual\r\n\t\t\t\t\t\t\t\t\t\t root property value (if one is set), but this is acceptable since the primary reason users forcefeed is\r\n\t\t\t\t\t\t\t\t\t\t to avoid DOM queries, and thus we likewise avoid querying the DOM for the root property's value. */\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t/* Grab this hook's zero-value template, e.g. \"0px 0px 0px black\". */\r\n\t\t\t\t\t\t\t\t\t\trootPropertyValue = CSS.Hooks.templates[rootProperty][1];\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t/* Handle non-hooked properties that haven't already been defined via forcefeeding. */\r\n\t\t\t\t\t\t\t\t} else if (startValue === undefined) {\r\n\t\t\t\t\t\t\t\t\tstartValue = CSS.getPropertyValue(element, property); /* GET */\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/**************************\r\n\t\t\t\t\t\t\t Value Data Extraction\r\n\t\t\t\t\t\t\t **************************/\r\n\r\n\t\t\t\t\t\t\tvar separatedValue,\r\n\t\t\t\t\t\t\t\t\tendValueUnitType,\r\n\t\t\t\t\t\t\t\t\tstartValueUnitType,\r\n\t\t\t\t\t\t\t\t\toperator = false;\r\n\r\n\t\t\t\t\t\t\t/* Separates a property value into its numeric value and its unit type. */\r\n\t\t\t\t\t\t\tvar separateValue = function(property, value) {\r\n\t\t\t\t\t\t\t\tvar unitType,\r\n\t\t\t\t\t\t\t\t\t\tnumericValue;\r\n\r\n\t\t\t\t\t\t\t\tnumericValue = (value || \"0\")\r\n\t\t\t\t\t\t\t\t\t\t.toString()\r\n\t\t\t\t\t\t\t\t\t\t.toLowerCase()\r\n\t\t\t\t\t\t\t\t\t\t/* Match the unit type at the end of the value. */\r\n\t\t\t\t\t\t\t\t\t\t.replace(/[%A-z]+$/, function(match) {\r\n\t\t\t\t\t\t\t\t\t\t\t/* Grab the unit type. */\r\n\t\t\t\t\t\t\t\t\t\t\tunitType = match;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t/* Strip the unit type off of value. */\r\n\t\t\t\t\t\t\t\t\t\t\treturn \"\";\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t/* If no unit type was supplied, assign one that is appropriate for this property (e.g. \"deg\" for rotateZ or \"px\" for width). */\r\n\t\t\t\t\t\t\t\tif (!unitType) {\r\n\t\t\t\t\t\t\t\t\tunitType = CSS.Values.getUnitType(property);\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\treturn [numericValue, unitType];\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\tif (startValue !== endValue && Type.isString(startValue) && Type.isString(endValue)) {\r\n\t\t\t\t\t\t\t\tpattern = \"\";\r\n\t\t\t\t\t\t\t\tvar iStart = 0, // index in startValue\r\n\t\t\t\t\t\t\t\t\t\tiEnd = 0, // index in endValue\r\n\t\t\t\t\t\t\t\t\t\taStart = [], // array of startValue numbers\r\n\t\t\t\t\t\t\t\t\t\taEnd = [], // array of endValue numbers\r\n\t\t\t\t\t\t\t\t\t\tinCalc = 0, // Keep track of being inside a \"calc()\" so we don't duplicate it\r\n\t\t\t\t\t\t\t\t\t\tinRGB = 0, // Keep track of being inside an RGB as we can't use fractional values\r\n\t\t\t\t\t\t\t\t\t\tinRGBA = 0; // Keep track of being inside an RGBA as we must pass fractional for the alpha channel\r\n\r\n\t\t\t\t\t\t\t\tstartValue = CSS.Hooks.fixColors(startValue);\r\n\t\t\t\t\t\t\t\tendValue = CSS.Hooks.fixColors(endValue);\r\n\t\t\t\t\t\t\t\twhile (iStart < startValue.length && iEnd < endValue.length) {\r\n\t\t\t\t\t\t\t\t\tvar cStart = startValue[iStart],\r\n\t\t\t\t\t\t\t\t\t\t\tcEnd = endValue[iEnd];\r\n\r\n\t\t\t\t\t\t\t\t\tif (/[\\d\\.-]/.test(cStart) && /[\\d\\.-]/.test(cEnd)) {\r\n\t\t\t\t\t\t\t\t\t\tvar tStart = cStart, // temporary character buffer\r\n\t\t\t\t\t\t\t\t\t\t\t\ttEnd = cEnd, // temporary character buffer\r\n\t\t\t\t\t\t\t\t\t\t\t\tdotStart = \".\", // Make sure we can only ever match a single dot in a decimal\r\n\t\t\t\t\t\t\t\t\t\t\t\tdotEnd = \".\"; // Make sure we can only ever match a single dot in a decimal\r\n\r\n\t\t\t\t\t\t\t\t\t\twhile (++iStart < startValue.length) {\r\n\t\t\t\t\t\t\t\t\t\t\tcStart = startValue[iStart];\r\n\t\t\t\t\t\t\t\t\t\t\tif (cStart === dotStart) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tdotStart = \"..\"; // Can never match two characters\r\n\t\t\t\t\t\t\t\t\t\t\t} else if (!/\\d/.test(cStart)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\ttStart += cStart;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\twhile (++iEnd < endValue.length) {\r\n\t\t\t\t\t\t\t\t\t\t\tcEnd = endValue[iEnd];\r\n\t\t\t\t\t\t\t\t\t\t\tif (cEnd === dotEnd) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tdotEnd = \"..\"; // Can never match two characters\r\n\t\t\t\t\t\t\t\t\t\t\t} else if (!/\\d/.test(cEnd)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\ttEnd += cEnd;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tvar uStart = CSS.Hooks.getUnit(startValue, iStart), // temporary unit type\r\n\t\t\t\t\t\t\t\t\t\t\t\tuEnd = CSS.Hooks.getUnit(endValue, iEnd); // temporary unit type\r\n\r\n\t\t\t\t\t\t\t\t\t\tiStart += uStart.length;\r\n\t\t\t\t\t\t\t\t\t\tiEnd += uEnd.length;\r\n\t\t\t\t\t\t\t\t\t\tif (uStart === uEnd) {\r\n\t\t\t\t\t\t\t\t\t\t\t// Same units\r\n\t\t\t\t\t\t\t\t\t\t\tif (tStart === tEnd) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t// Same numbers, so just copy over\r\n\t\t\t\t\t\t\t\t\t\t\t\tpattern += tStart + uStart;\r\n\t\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t// Different numbers, so store them\r\n\t\t\t\t\t\t\t\t\t\t\t\tpattern += \"{\" + aStart.length + (inRGB ? \"!\" : \"\") + \"}\" + uStart;\r\n\t\t\t\t\t\t\t\t\t\t\t\taStart.push(parseFloat(tStart));\r\n\t\t\t\t\t\t\t\t\t\t\t\taEnd.push(parseFloat(tEnd));\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t// Different units, so put into a \"calc(from + to)\" and animate each side to/from zero\r\n\t\t\t\t\t\t\t\t\t\t\tvar nStart = parseFloat(tStart),\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tnEnd = parseFloat(tEnd);\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tpattern += (inCalc < 5 ? \"calc\" : \"\") + \"(\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t+ (nStart ? \"{\" + aStart.length + (inRGB ? \"!\" : \"\") + \"}\" : \"0\") + uStart\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t+ \" + \"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t+ (nEnd ? \"{\" + (aStart.length + (nStart ? 1 : 0)) + (inRGB ? \"!\" : \"\") + \"}\" : \"0\") + uEnd\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t+ \")\";\r\n\t\t\t\t\t\t\t\t\t\t\tif (nStart) {\r\n\t\t\t\t\t\t\t\t\t\t\t\taStart.push(nStart);\r\n\t\t\t\t\t\t\t\t\t\t\t\taEnd.push(0);\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tif (nEnd) {\r\n\t\t\t\t\t\t\t\t\t\t\t\taStart.push(0);\r\n\t\t\t\t\t\t\t\t\t\t\t\taEnd.push(nEnd);\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t} else if (cStart === cEnd) {\r\n\t\t\t\t\t\t\t\t\t\tpattern += cStart;\r\n\t\t\t\t\t\t\t\t\t\tiStart++;\r\n\t\t\t\t\t\t\t\t\t\tiEnd++;\r\n\t\t\t\t\t\t\t\t\t\t// Keep track of being inside a calc()\r\n\t\t\t\t\t\t\t\t\t\tif (inCalc === 0 && cStart === \"c\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inCalc === 1 && cStart === \"a\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inCalc === 2 && cStart === \"l\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inCalc === 3 && cStart === \"c\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inCalc >= 4 && cStart === \"(\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\t\t\t\tinCalc++;\r\n\t\t\t\t\t\t\t\t\t\t} else if ((inCalc && inCalc < 5)\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inCalc >= 4 && cStart === \")\" && --inCalc < 5) {\r\n\t\t\t\t\t\t\t\t\t\t\tinCalc = 0;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t// Keep track of being inside an rgb() / rgba()\r\n\t\t\t\t\t\t\t\t\t\tif (inRGB === 0 && cStart === \"r\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inRGB === 1 && cStart === \"g\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inRGB === 2 && cStart === \"b\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inRGB === 3 && cStart === \"a\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inRGB >= 3 && cStart === \"(\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\t\t\t\tif (inRGB === 3 && cStart === \"a\") {\r\n\t\t\t\t\t\t\t\t\t\t\t\tinRGBA = 1;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tinRGB++;\r\n\t\t\t\t\t\t\t\t\t\t} else if (inRGBA && cStart === \",\") {\r\n\t\t\t\t\t\t\t\t\t\t\tif (++inRGBA > 3) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tinRGB = inRGBA = 0;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t} else if ((inRGBA && inRGB < (inRGBA ? 5 : 4))\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inRGB >= (inRGBA ? 4 : 3) && cStart === \")\" && --inRGB < (inRGBA ? 5 : 4)) {\r\n\t\t\t\t\t\t\t\t\t\t\tinRGB = inRGBA = 0;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\tinCalc = 0;\r\n\t\t\t\t\t\t\t\t\t\t// TODO: changing units, fixing colours\r\n\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (iStart !== startValue.length || iEnd !== endValue.length) {\r\n\t\t\t\t\t\t\t\t\tif (Velocity.debug) {\r\n\t\t\t\t\t\t\t\t\t\tconsole.error(\"Trying to pattern match mis-matched strings [\\\"\" + endValue + \"\\\", \\\"\" + startValue + \"\\\"]\");\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tpattern = undefined;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (pattern) {\r\n\t\t\t\t\t\t\t\t\tif (aStart.length) {\r\n\t\t\t\t\t\t\t\t\t\tif (Velocity.debug) {\r\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Pattern found \\\"\" + pattern + \"\\\" -> \", aStart, aEnd, \"[\" + startValue + \",\" + endValue + \"]\");\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tstartValue = aStart;\r\n\t\t\t\t\t\t\t\t\t\tendValue = aEnd;\r\n\t\t\t\t\t\t\t\t\t\tendValueUnitType = startValueUnitType = \"\";\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\tpattern = undefined;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (!pattern) {\r\n\t\t\t\t\t\t\t\t/* Separate startValue. */\r\n\t\t\t\t\t\t\t\tseparatedValue = separateValue(property, startValue);\r\n\t\t\t\t\t\t\t\tstartValue = separatedValue[0];\r\n\t\t\t\t\t\t\t\tstartValueUnitType = separatedValue[1];\r\n\r\n\t\t\t\t\t\t\t\t/* Separate endValue, and extract a value operator (e.g. \"+=\", \"-=\") if one exists. */\r\n\t\t\t\t\t\t\t\tseparatedValue = separateValue(property, endValue);\r\n\t\t\t\t\t\t\t\tendValue = separatedValue[0].replace(/^([+-\\/*])=/, function(match, subMatch) {\r\n\t\t\t\t\t\t\t\t\toperator = subMatch;\r\n\r\n\t\t\t\t\t\t\t\t\t/* Strip the operator off of the value. */\r\n\t\t\t\t\t\t\t\t\treturn \"\";\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\tendValueUnitType = separatedValue[1];\r\n\r\n\t\t\t\t\t\t\t\t/* Parse float values from endValue and startValue. Default to 0 if NaN is returned. */\r\n\t\t\t\t\t\t\t\tstartValue = parseFloat(startValue) || 0;\r\n\t\t\t\t\t\t\t\tendValue = parseFloat(endValue) || 0;\r\n\r\n\t\t\t\t\t\t\t\t/***************************************\r\n\t\t\t\t\t\t\t\t Property-Specific Value Conversion\r\n\t\t\t\t\t\t\t\t ***************************************/\r\n\r\n\t\t\t\t\t\t\t\t/* Custom support for properties that don't actually accept the % unit type, but where pollyfilling is trivial and relatively foolproof. */\r\n\t\t\t\t\t\t\t\tif (endValueUnitType === \"%\") {\r\n\t\t\t\t\t\t\t\t\t/* A %-value fontSize/lineHeight is relative to the parent's fontSize (as opposed to the parent's dimensions),\r\n\t\t\t\t\t\t\t\t\t which is identical to the em unit's behavior, so we piggyback off of that. */\r\n\t\t\t\t\t\t\t\t\tif (/^(fontSize|lineHeight)$/.test(property)) {\r\n\t\t\t\t\t\t\t\t\t\t/* Convert % into an em decimal value. */\r\n\t\t\t\t\t\t\t\t\t\tendValue = endValue / 100;\r\n\t\t\t\t\t\t\t\t\t\tendValueUnitType = \"em\";\r\n\t\t\t\t\t\t\t\t\t\t/* For scaleX and scaleY, convert the value into its decimal format and strip off the unit type. */\r\n\t\t\t\t\t\t\t\t\t} else if (/^scale/.test(property)) {\r\n\t\t\t\t\t\t\t\t\t\tendValue = endValue / 100;\r\n\t\t\t\t\t\t\t\t\t\tendValueUnitType = \"\";\r\n\t\t\t\t\t\t\t\t\t\t/* For RGB components, take the defined percentage of 255 and strip off the unit type. */\r\n\t\t\t\t\t\t\t\t\t} else if (/(Red|Green|Blue)$/i.test(property)) {\r\n\t\t\t\t\t\t\t\t\t\tendValue = (endValue / 100) * 255;\r\n\t\t\t\t\t\t\t\t\t\tendValueUnitType = \"\";\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/***************************\r\n\t\t\t\t\t\t\t Unit Ratio Calculation\r\n\t\t\t\t\t\t\t ***************************/\r\n\r\n\t\t\t\t\t\t\t/* When queried, the browser returns (most) CSS property values in pixels. Therefore, if an endValue with a unit type of\r\n\t\t\t\t\t\t\t %, em, or rem is animated toward, startValue must be converted from pixels into the same unit type as endValue in order\r\n\t\t\t\t\t\t\t for value manipulation logic (increment/decrement) to proceed. Further, if the startValue was forcefed or transferred\r\n\t\t\t\t\t\t\t from a previous call, startValue may also not be in pixels. Unit conversion logic therefore consists of two steps:\r\n\t\t\t\t\t\t\t 1) Calculating the ratio of %/em/rem/vh/vw relative to pixels\r\n\t\t\t\t\t\t\t 2) Converting startValue into the same unit of measurement as endValue based on these ratios. */\r\n\t\t\t\t\t\t\t/* Unit conversion ratios are calculated by inserting a sibling node next to the target node, copying over its position property,\r\n\t\t\t\t\t\t\t setting values with the target unit type then comparing the returned pixel value. */\r\n\t\t\t\t\t\t\t/* Note: Even if only one of these unit types is being animated, all unit ratios are calculated at once since the overhead\r\n\t\t\t\t\t\t\t of batching the SETs and GETs together upfront outweights the potential overhead\r\n\t\t\t\t\t\t\t of layout thrashing caused by re-querying for uncalculated ratios for subsequently-processed properties. */\r\n\t\t\t\t\t\t\t/* Todo: Shift this logic into the calls' first tick instance so that it's synced with RAF. */\r\n\t\t\t\t\t\t\tvar calculateUnitRatios = function() {\r\n\r\n\t\t\t\t\t\t\t\t/************************\r\n\t\t\t\t\t\t\t\t Same Ratio Checks\r\n\t\t\t\t\t\t\t\t ************************/\r\n\r\n\t\t\t\t\t\t\t\t/* The properties below are used to determine whether the element differs sufficiently from this call's\r\n\t\t\t\t\t\t\t\t previously iterated element to also differ in its unit conversion ratios. If the properties match up with those\r\n\t\t\t\t\t\t\t\t of the prior element, the prior element's conversion ratios are used. Like most optimizations in Velocity,\r\n\t\t\t\t\t\t\t\t this is done to minimize DOM querying. */\r\n\t\t\t\t\t\t\t\tvar sameRatioIndicators = {\r\n\t\t\t\t\t\t\t\t\tmyParent: element.parentNode || document.body, /* GET */\r\n\t\t\t\t\t\t\t\t\tposition: CSS.getPropertyValue(element, \"position\"), /* GET */\r\n\t\t\t\t\t\t\t\t\tfontSize: CSS.getPropertyValue(element, \"fontSize\") /* GET */\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t/* Determine if the same % ratio can be used. % is based on the element's position value and its parent's width and height dimensions. */\r\n\t\t\t\t\t\t\t\t\t\tsamePercentRatio = ((sameRatioIndicators.position === callUnitConversionData.lastPosition) && (sameRatioIndicators.myParent === callUnitConversionData.lastParent)),\r\n\t\t\t\t\t\t\t\t\t\t/* Determine if the same em ratio can be used. em is relative to the element's fontSize. */\r\n\t\t\t\t\t\t\t\t\t\tsameEmRatio = (sameRatioIndicators.fontSize === callUnitConversionData.lastFontSize);\r\n\r\n\t\t\t\t\t\t\t\t/* Store these ratio indicators call-wide for the next element to compare against. */\r\n\t\t\t\t\t\t\t\tcallUnitConversionData.lastParent = sameRatioIndicators.myParent;\r\n\t\t\t\t\t\t\t\tcallUnitConversionData.lastPosition = sameRatioIndicators.position;\r\n\t\t\t\t\t\t\t\tcallUnitConversionData.lastFontSize = sameRatioIndicators.fontSize;\r\n\r\n\t\t\t\t\t\t\t\t/***************************\r\n\t\t\t\t\t\t\t\t Element-Specific Units\r\n\t\t\t\t\t\t\t\t ***************************/\r\n\r\n\t\t\t\t\t\t\t\t/* Note: IE8 rounds to the nearest pixel when returning CSS values, thus we perform conversions using a measurement\r\n\t\t\t\t\t\t\t\t of 100 (instead of 1) to give our ratios a precision of at least 2 decimal values. */\r\n\t\t\t\t\t\t\t\tvar measurement = 100,\r\n\t\t\t\t\t\t\t\t\t\tunitRatios = {};\r\n\r\n\t\t\t\t\t\t\t\tif (!sameEmRatio || !samePercentRatio) {\r\n\t\t\t\t\t\t\t\t\tvar dummy = data && data.isSVG ? document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\") : document.createElement(\"div\");\r\n\r\n\t\t\t\t\t\t\t\t\tVelocity.init(dummy);\r\n\t\t\t\t\t\t\t\t\tsameRatioIndicators.myParent.appendChild(dummy);\r\n\r\n\t\t\t\t\t\t\t\t\t/* To accurately and consistently calculate conversion ratios, the element's cascaded overflow and box-sizing are stripped.\r\n\t\t\t\t\t\t\t\t\t Similarly, since width/height can be artificially constrained by their min-/max- equivalents, these are controlled for as well. */\r\n\t\t\t\t\t\t\t\t\t/* Note: Overflow must be also be controlled for per-axis since the overflow property overwrites its per-axis values. */\r\n\t\t\t\t\t\t\t\t\t$.each([\"overflow\", \"overflowX\", \"overflowY\"], function(i, property) {\r\n\t\t\t\t\t\t\t\t\t\tVelocity.CSS.setPropertyValue(dummy, property, \"hidden\");\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\tVelocity.CSS.setPropertyValue(dummy, \"position\", sameRatioIndicators.position);\r\n\t\t\t\t\t\t\t\t\tVelocity.CSS.setPropertyValue(dummy, \"fontSize\", sameRatioIndicators.fontSize);\r\n\t\t\t\t\t\t\t\t\tVelocity.CSS.setPropertyValue(dummy, \"boxSizing\", \"content-box\");\r\n\r\n\t\t\t\t\t\t\t\t\t/* width and height act as our proxy properties for measuring the horizontal and vertical % ratios. */\r\n\t\t\t\t\t\t\t\t\t$.each([\"minWidth\", \"maxWidth\", \"width\", \"minHeight\", \"maxHeight\", \"height\"], function(i, property) {\r\n\t\t\t\t\t\t\t\t\t\tVelocity.CSS.setPropertyValue(dummy, property, measurement + \"%\");\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t/* paddingLeft arbitrarily acts as our proxy property for the em ratio. */\r\n\t\t\t\t\t\t\t\t\tVelocity.CSS.setPropertyValue(dummy, \"paddingLeft\", measurement + \"em\");\r\n\r\n\t\t\t\t\t\t\t\t\t/* Divide the returned value by the measurement to get the ratio between 1% and 1px. Default to 1 since working with 0 can produce Infinite. */\r\n\t\t\t\t\t\t\t\t\tunitRatios.percentToPxWidth = callUnitConversionData.lastPercentToPxWidth = (parseFloat(CSS.getPropertyValue(dummy, \"width\", null, true)) || 1) / measurement; /* GET */\r\n\t\t\t\t\t\t\t\t\tunitRatios.percentToPxHeight = callUnitConversionData.lastPercentToPxHeight = (parseFloat(CSS.getPropertyValue(dummy, \"height\", null, true)) || 1) / measurement; /* GET */\r\n\t\t\t\t\t\t\t\t\tunitRatios.emToPx = callUnitConversionData.lastEmToPx = (parseFloat(CSS.getPropertyValue(dummy, \"paddingLeft\")) || 1) / measurement; /* GET */\r\n\r\n\t\t\t\t\t\t\t\t\tsameRatioIndicators.myParent.removeChild(dummy);\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tunitRatios.emToPx = callUnitConversionData.lastEmToPx;\r\n\t\t\t\t\t\t\t\t\tunitRatios.percentToPxWidth = callUnitConversionData.lastPercentToPxWidth;\r\n\t\t\t\t\t\t\t\t\tunitRatios.percentToPxHeight = callUnitConversionData.lastPercentToPxHeight;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t/***************************\r\n\t\t\t\t\t\t\t\t Element-Agnostic Units\r\n\t\t\t\t\t\t\t\t ***************************/\r\n\r\n\t\t\t\t\t\t\t\t/* Whereas % and em ratios are determined on a per-element basis, the rem unit only needs to be checked\r\n\t\t\t\t\t\t\t\t once per call since it's exclusively dependant upon document.body's fontSize. If this is the first time\r\n\t\t\t\t\t\t\t\t that calculateUnitRatios() is being run during this call, remToPx will still be set to its default value of null,\r\n\t\t\t\t\t\t\t\t so we calculate it now. */\r\n\t\t\t\t\t\t\t\tif (callUnitConversionData.remToPx === null) {\r\n\t\t\t\t\t\t\t\t\t/* Default to browsers' default fontSize of 16px in the case of 0. */\r\n\t\t\t\t\t\t\t\t\tcallUnitConversionData.remToPx = parseFloat(CSS.getPropertyValue(document.body, \"fontSize\")) || 16; /* GET */\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t/* Similarly, viewport units are %-relative to the window's inner dimensions. */\r\n\t\t\t\t\t\t\t\tif (callUnitConversionData.vwToPx === null) {\r\n\t\t\t\t\t\t\t\t\tcallUnitConversionData.vwToPx = parseFloat(window.innerWidth) / 100; /* GET */\r\n\t\t\t\t\t\t\t\t\tcallUnitConversionData.vhToPx = parseFloat(window.innerHeight) / 100; /* GET */\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tunitRatios.remToPx = callUnitConversionData.remToPx;\r\n\t\t\t\t\t\t\t\tunitRatios.vwToPx = callUnitConversionData.vwToPx;\r\n\t\t\t\t\t\t\t\tunitRatios.vhToPx = callUnitConversionData.vhToPx;\r\n\r\n\t\t\t\t\t\t\t\tif (Velocity.debug >= 1) {\r\n\t\t\t\t\t\t\t\t\tconsole.log(\"Unit ratios: \" + JSON.stringify(unitRatios), element);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\treturn unitRatios;\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t/********************\r\n\t\t\t\t\t\t\t Unit Conversion\r\n\t\t\t\t\t\t\t ********************/\r\n\r\n\t\t\t\t\t\t\t/* The * and / operators, which are not passed in with an associated unit, inherently use startValue's unit. Skip value and unit conversion. */\r\n\t\t\t\t\t\t\tif (/[\\/*]/.test(operator)) {\r\n\t\t\t\t\t\t\t\tendValueUnitType = startValueUnitType;\r\n\t\t\t\t\t\t\t\t/* If startValue and endValue differ in unit type, convert startValue into the same unit type as endValue so that if endValueUnitType\r\n\t\t\t\t\t\t\t\t is a relative unit (%, em, rem), the values set during tweening will continue to be accurately relative even if the metrics they depend\r\n\t\t\t\t\t\t\t\t on are dynamically changing during the course of the animation. Conversely, if we always normalized into px and used px for setting values, the px ratio\r\n\t\t\t\t\t\t\t\t would become stale if the original unit being animated toward was relative and the underlying metrics change during the animation. */\r\n\t\t\t\t\t\t\t\t/* Since 0 is 0 in any unit type, no conversion is necessary when startValue is 0 -- we just start at 0 with endValueUnitType. */\r\n\t\t\t\t\t\t\t} else if ((startValueUnitType !== endValueUnitType) && startValue !== 0) {\r\n\t\t\t\t\t\t\t\t/* Unit conversion is also skipped when endValue is 0, but *startValueUnitType* must be used for tween values to remain accurate. */\r\n\t\t\t\t\t\t\t\t/* Note: Skipping unit conversion here means that if endValueUnitType was originally a relative unit, the animation won't relatively\r\n\t\t\t\t\t\t\t\t match the underlying metrics if they change, but this is acceptable since we're animating toward invisibility instead of toward visibility,\r\n\t\t\t\t\t\t\t\t which remains past the point of the animation's completion. */\r\n\t\t\t\t\t\t\t\tif (endValue === 0) {\r\n\t\t\t\t\t\t\t\t\tendValueUnitType = startValueUnitType;\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t/* By this point, we cannot avoid unit conversion (it's undesirable since it causes layout thrashing).\r\n\t\t\t\t\t\t\t\t\t If we haven't already, we trigger calculateUnitRatios(), which runs once per element per call. */\r\n\t\t\t\t\t\t\t\t\telementUnitConversionData = elementUnitConversionData || calculateUnitRatios();\r\n\r\n\t\t\t\t\t\t\t\t\t/* The following RegEx matches CSS properties that have their % values measured relative to the x-axis. */\r\n\t\t\t\t\t\t\t\t\t/* Note: W3C spec mandates that all of margin and padding's properties (even top and bottom) are %-relative to the *width* of the parent element. */\r\n\t\t\t\t\t\t\t\t\tvar axis = (/margin|padding|left|right|width|text|word|letter/i.test(property) || /X$/.test(property) || property === \"x\") ? \"x\" : \"y\";\r\n\r\n\t\t\t\t\t\t\t\t\t/* In order to avoid generating n^2 bespoke conversion functions, unit conversion is a two-step process:\r\n\t\t\t\t\t\t\t\t\t 1) Convert startValue into pixels. 2) Convert this new pixel value into endValue's unit type. */\r\n\t\t\t\t\t\t\t\t\tswitch (startValueUnitType) {\r\n\t\t\t\t\t\t\t\t\t\tcase \"%\":\r\n\t\t\t\t\t\t\t\t\t\t\t/* Note: translateX and translateY are the only properties that are %-relative to an element's own dimensions -- not its parent's dimensions.\r\n\t\t\t\t\t\t\t\t\t\t\t Velocity does not include a special conversion process to account for this behavior. Therefore, animating translateX/Y from a % value\r\n\t\t\t\t\t\t\t\t\t\t\t to a non-% value will produce an incorrect start value. Fortunately, this sort of cross-unit conversion is rarely done by users in practice. */\r\n\t\t\t\t\t\t\t\t\t\t\tstartValue *= (axis === \"x\" ? elementUnitConversionData.percentToPxWidth : elementUnitConversionData.percentToPxHeight);\r\n\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\t\t\tcase \"px\":\r\n\t\t\t\t\t\t\t\t\t\t\t/* px acts as our midpoint in the unit conversion process; do nothing. */\r\n\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\t\t\t\tstartValue *= elementUnitConversionData[startValueUnitType + \"ToPx\"];\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t/* Invert the px ratios to convert into to the target unit. */\r\n\t\t\t\t\t\t\t\t\tswitch (endValueUnitType) {\r\n\t\t\t\t\t\t\t\t\t\tcase \"%\":\r\n\t\t\t\t\t\t\t\t\t\t\tstartValue *= 1 / (axis === \"x\" ? elementUnitConversionData.percentToPxWidth : elementUnitConversionData.percentToPxHeight);\r\n\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\t\t\tcase \"px\":\r\n\t\t\t\t\t\t\t\t\t\t\t/* startValue is already in px, do nothing; we're done. */\r\n\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\t\t\t\tstartValue *= 1 / elementUnitConversionData[endValueUnitType + \"ToPx\"];\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/*********************\r\n\t\t\t\t\t\t\t Relative Values\r\n\t\t\t\t\t\t\t *********************/\r\n\r\n\t\t\t\t\t\t\t/* Operator logic must be performed last since it requires unit-normalized start and end values. */\r\n\t\t\t\t\t\t\t/* Note: Relative *percent values* do not behave how most people think; while one would expect \"+=50%\"\r\n\t\t\t\t\t\t\t to increase the property 1.5x its current value, it in fact increases the percent units in absolute terms:\r\n\t\t\t\t\t\t\t 50 points is added on top of the current % value. */\r\n\t\t\t\t\t\t\tswitch (operator) {\r\n\t\t\t\t\t\t\t\tcase \"+\":\r\n\t\t\t\t\t\t\t\t\tendValue = startValue + endValue;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\tcase \"-\":\r\n\t\t\t\t\t\t\t\t\tendValue = startValue - endValue;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\tcase \"*\":\r\n\t\t\t\t\t\t\t\t\tendValue = startValue * endValue;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\tcase \"/\":\r\n\t\t\t\t\t\t\t\t\tendValue = startValue / endValue;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/**************************\r\n\t\t\t\t\t\t\t tweensContainer Push\r\n\t\t\t\t\t\t\t **************************/\r\n\r\n\t\t\t\t\t\t\t/* Construct the per-property tween object, and push it to the element's tweensContainer. */\r\n\t\t\t\t\t\t\ttweensContainer[property] = {\r\n\t\t\t\t\t\t\t\trootPropertyValue: rootPropertyValue,\r\n\t\t\t\t\t\t\t\tstartValue: startValue,\r\n\t\t\t\t\t\t\t\tcurrentValue: startValue,\r\n\t\t\t\t\t\t\t\tendValue: endValue,\r\n\t\t\t\t\t\t\t\tunitType: endValueUnitType,\r\n\t\t\t\t\t\t\t\teasing: easing\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\tif (pattern) {\r\n\t\t\t\t\t\t\t\ttweensContainer[property].pattern = pattern;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (Velocity.debug) {\r\n\t\t\t\t\t\t\t\tconsole.log(\"tweensContainer (\" + property + \"): \" + JSON.stringify(tweensContainer[property]), element);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t/* Create a tween out of each property, and append its associated data to tweensContainer. */\r\n\t\t\t\t\t\tfor (var property in propertiesMap) {\r\n\r\n\t\t\t\t\t\t\tif (!propertiesMap.hasOwnProperty(property)) {\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t/* The original property name's format must be used for the parsePropertyValue() lookup,\r\n\t\t\t\t\t\t\t but we then use its camelCase styling to normalize it for manipulation. */\r\n\t\t\t\t\t\t\tvar propertyName = CSS.Names.camelCase(property),\r\n\t\t\t\t\t\t\t\t\tvalueData = parsePropertyValue(propertiesMap[property]);\r\n\r\n\t\t\t\t\t\t\t/* Find shorthand color properties that have been passed a hex string. */\r\n\t\t\t\t\t\t\t/* Would be quicker to use CSS.Lists.colors.includes() if possible */\r\n\t\t\t\t\t\t\tif (_inArray(CSS.Lists.colors, propertyName)) {\r\n\t\t\t\t\t\t\t\t/* Parse the value data for each shorthand. */\r\n\t\t\t\t\t\t\t\tvar endValue = valueData[0],\r\n\t\t\t\t\t\t\t\t\t\teasing = valueData[1],\r\n\t\t\t\t\t\t\t\t\t\tstartValue = valueData[2];\r\n\r\n\t\t\t\t\t\t\t\tif (CSS.RegEx.isHex.test(endValue)) {\r\n\t\t\t\t\t\t\t\t\t/* Convert the hex strings into their RGB component arrays. */\r\n\t\t\t\t\t\t\t\t\tvar colorComponents = [\"Red\", \"Green\", \"Blue\"],\r\n\t\t\t\t\t\t\t\t\t\t\tendValueRGB = CSS.Values.hexToRgb(endValue),\r\n\t\t\t\t\t\t\t\t\t\t\tstartValueRGB = startValue ? CSS.Values.hexToRgb(startValue) : undefined;\r\n\r\n\t\t\t\t\t\t\t\t\t/* Inject the RGB component tweens into propertiesMap. */\r\n\t\t\t\t\t\t\t\t\tfor (var i = 0; i < colorComponents.length; i++) {\r\n\t\t\t\t\t\t\t\t\t\tvar dataArray = [endValueRGB[i]];\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (easing) {\r\n\t\t\t\t\t\t\t\t\t\t\tdataArray.push(easing);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (startValueRGB !== undefined) {\r\n\t\t\t\t\t\t\t\t\t\t\tdataArray.push(startValueRGB[i]);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tfixPropertyValue(propertyName + colorComponents[i], dataArray);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t/* If we have replaced a shortcut color value then don't update the standard property name */\r\n\t\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tfixPropertyValue(propertyName, valueData);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Along with its property data, store a reference to the element itself onto tweensContainer. */\r\n\t\t\t\t\t\ttweensContainer.element = element;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/*****************\r\n\t\t\t\t\t Call Push\r\n\t\t\t\t\t *****************/\r\n\r\n\t\t\t\t\t/* Note: tweensContainer can be empty if all of the properties in this call's property map were skipped due to not\r\n\t\t\t\t\t being supported by the browser. The element property is used for checking that the tweensContainer has been appended to. */\r\n\t\t\t\t\tif (tweensContainer.element) {\r\n\t\t\t\t\t\t/* Apply the \"velocity-animating\" indicator class. */\r\n\t\t\t\t\t\tCSS.Values.addClass(element, \"velocity-animating\");\r\n\r\n\t\t\t\t\t\t/* The call array houses the tweensContainers for each element being animated in the current call. */\r\n\t\t\t\t\t\tcall.push(tweensContainer);\r\n\r\n\t\t\t\t\t\tdata = Data(element);\r\n\r\n\t\t\t\t\t\tif (data) {\r\n\t\t\t\t\t\t\t/* Store the tweensContainer and options if we're working on the default effects queue, so that they can be used by the reverse command. */\r\n\t\t\t\t\t\t\tif (opts.queue === \"\") {\r\n\r\n\t\t\t\t\t\t\t\tdata.tweensContainer = tweensContainer;\r\n\t\t\t\t\t\t\t\tdata.opts = opts;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* Switch on the element's animating flag. */\r\n\t\t\t\t\t\t\tdata.isAnimating = true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Once the final element in this call's element set has been processed, push the call array onto\r\n\t\t\t\t\t\t Velocity.State.calls for the animation tick to immediately begin processing. */\r\n\t\t\t\t\t\tif (elementsIndex === elementsLength - 1) {\r\n\t\t\t\t\t\t\t/* Add the current call plus its associated metadata (the element set and the call's options) onto the global call container.\r\n\t\t\t\t\t\t\t Anything on this call container is subjected to tick() processing. */\r\n\t\t\t\t\t\t\tVelocity.State.calls.push([call, elements, opts, null, promiseData.resolver, null, 0]);\r\n\r\n\t\t\t\t\t\t\t/* If the animation tick isn't running, start it. (Velocity shuts it off when there are no active calls to process.) */\r\n\t\t\t\t\t\t\tif (Velocity.State.isTicking === false) {\r\n\t\t\t\t\t\t\t\tVelocity.State.isTicking = true;\r\n\r\n\t\t\t\t\t\t\t\t/* Start the tick loop. */\r\n\t\t\t\t\t\t\t\ttick();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\telementsIndex++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* When the queue option is set to false, the call skips the element's queue and fires immediately. */\r\n\t\t\t\tif (opts.queue === false) {\r\n\t\t\t\t\t/* Since this buildQueue call doesn't respect the element's existing queue (which is where a delay option would have been appended),\r\n\t\t\t\t\t we manually inject the delay property here with an explicit setTimeout. */\r\n\t\t\t\t\tif (opts.delay) {\r\n\r\n\t\t\t\t\t\t/* Temporarily store delayed elements to facilitate access for global pause/resume */\r\n\t\t\t\t\t\tvar callIndex = Velocity.State.delayedElements.count++;\r\n\t\t\t\t\t\tVelocity.State.delayedElements[callIndex] = element;\r\n\r\n\t\t\t\t\t\tvar delayComplete = (function(index) {\r\n\t\t\t\t\t\t\treturn function() {\r\n\t\t\t\t\t\t\t\t/* Clear the temporary element */\r\n\t\t\t\t\t\t\t\tVelocity.State.delayedElements[index] = false;\r\n\r\n\t\t\t\t\t\t\t\t/* Finally, issue the call */\r\n\t\t\t\t\t\t\t\tbuildQueue();\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t})(callIndex);\r\n\r\n\t\t\t\t\t\tData(element).delayBegin = (new Date()).getTime();\r\n\t\t\t\t\t\tData(element).delay = parseFloat(opts.delay);\r\n\t\t\t\t\t\tData(element).delayTimer = {\r\n\t\t\t\t\t\t\tsetTimeout: setTimeout(buildQueue, parseFloat(opts.delay)),\r\n\t\t\t\t\t\t\tnext: delayComplete\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tbuildQueue();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t/* Otherwise, the call undergoes element queueing as normal. */\r\n\t\t\t\t\t/* Note: To interoperate with jQuery, Velocity uses jQuery's own $.queue() stack for queuing logic. */\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$.queue(element, opts.queue, function(next, clearQueue) {\r\n\t\t\t\t\t\t/* If the clearQueue flag was passed in by the stop command, resolve this call's promise. (Promises can only be resolved once,\r\n\t\t\t\t\t\t so it's fine if this is repeatedly triggered for each element in the associated call.) */\r\n\t\t\t\t\t\tif (clearQueue === true) {\r\n\t\t\t\t\t\t\tif (promiseData.promise) {\r\n\t\t\t\t\t\t\t\tpromiseData.resolver(elements);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* Do not continue with animation queueing. */\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* This flag indicates to the upcoming completeCall() function that this queue entry was initiated by Velocity.\r\n\t\t\t\t\t\t See completeCall() for further details. */\r\n\t\t\t\t\t\tVelocity.velocityQueueEntryFlag = true;\r\n\r\n\t\t\t\t\t\tbuildQueue(next);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/*********************\r\n\t\t\t\t Auto-Dequeuing\r\n\t\t\t\t *********************/\r\n\r\n\t\t\t\t/* As per jQuery's $.queue() behavior, to fire the first non-custom-queue entry on an element, the element\r\n\t\t\t\t must be dequeued if its queue stack consists *solely* of the current call. (This can be determined by checking\r\n\t\t\t\t for the \"inprogress\" item that jQuery prepends to active queue stack arrays.) Regardless, whenever the element's\r\n\t\t\t\t queue is further appended with additional items -- including $.delay()'s or even $.animate() calls, the queue's\r\n\t\t\t\t first entry is automatically fired. This behavior contrasts that of custom queues, which never auto-fire. */\r\n\t\t\t\t/* Note: When an element set is being subjected to a non-parallel Velocity call, the animation will not begin until\r\n\t\t\t\t each one of the elements in the set has reached the end of its individually pre-existing queue chain. */\r\n\t\t\t\t/* Note: Unfortunately, most people don't fully grasp jQuery's powerful, yet quirky, $.queue() function.\r\n\t\t\t\t Lean more here: http://stackoverflow.com/questions/1058158/can-somebody-explain-jquery-queue-to-me */\r\n\t\t\t\tif ((opts.queue === \"\" || opts.queue === \"fx\") && $.queue(element)[0] !== \"inprogress\") {\r\n\t\t\t\t\t$.dequeue(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/**************************\r\n\t\t\t Element Set Iteration\r\n\t\t\t **************************/\r\n\r\n\t\t\t/* If the \"nodeType\" property exists on the elements variable, we're animating a single element.\r\n\t\t\t Place it in an array so that $.each() can iterate over it. */\r\n\t\t\t$.each(elements, function(i, element) {\r\n\t\t\t\t/* Ensure each element in a set has a nodeType (is a real element) to avoid throwing errors. */\r\n\t\t\t\tif (Type.isNode(element)) {\r\n\t\t\t\t\tprocessElement(element, i);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t/******************\r\n\t\t\t Option: Loop\r\n\t\t\t ******************/\r\n\r\n\t\t\t/* The loop option accepts an integer indicating how many times the element should loop between the values in the\r\n\t\t\t current call's properties map and the element's property values prior to this call. */\r\n\t\t\t/* Note: The loop option's logic is performed here -- after element processing -- because the current call needs\r\n\t\t\t to undergo its queue insertion prior to the loop option generating its series of constituent \"reverse\" calls,\r\n\t\t\t which chain after the current call. Two reverse calls (two \"alternations\") constitute one loop. */\r\n\t\t\topts = $.extend({}, Velocity.defaults, options);\r\n\t\t\topts.loop = parseInt(opts.loop, 10);\r\n\t\t\tvar reverseCallsCount = (opts.loop * 2) - 1;\r\n\r\n\t\t\tif (opts.loop) {\r\n\t\t\t\t/* Double the loop count to convert it into its appropriate number of \"reverse\" calls.\r\n\t\t\t\t Subtract 1 from the resulting value since the current call is included in the total alternation count. */\r\n\t\t\t\tfor (var x = 0; x < reverseCallsCount; x++) {\r\n\t\t\t\t\t/* Since the logic for the reverse action occurs inside Queueing and therefore this call's options object\r\n\t\t\t\t\t isn't parsed until then as well, the current call's delay option must be explicitly passed into the reverse\r\n\t\t\t\t\t call so that the delay logic that occurs inside *Pre-Queueing* can process it. */\r\n\t\t\t\t\tvar reverseOptions = {\r\n\t\t\t\t\t\tdelay: opts.delay,\r\n\t\t\t\t\t\tprogress: opts.progress\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t/* If a complete callback was passed into this call, transfer it to the loop redirect's final \"reverse\" call\r\n\t\t\t\t\t so that it's triggered when the entire redirect is complete (and not when the very first animation is complete). */\r\n\t\t\t\t\tif (x === reverseCallsCount - 1) {\r\n\t\t\t\t\t\treverseOptions.display = opts.display;\r\n\t\t\t\t\t\treverseOptions.visibility = opts.visibility;\r\n\t\t\t\t\t\treverseOptions.complete = opts.complete;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tanimate(elements, \"reverse\", reverseOptions);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/***************\r\n\t\t\t Chaining\r\n\t\t\t ***************/\r\n\r\n\t\t\t/* Return the elements back to the call chain, with wrapped elements taking precedence in case Velocity was called via the $.fn. extension. */\r\n\t\t\treturn getChain();\r\n\t\t};\r\n\r\n\t\t/* Turn Velocity into the animation function, extended with the pre-existing Velocity object. */\r\n\t\tVelocity = $.extend(animate, Velocity);\r\n\t\t/* For legacy support, also expose the literal animate method. */\r\n\t\tVelocity.animate = animate;\r\n\r\n\t\t/**************\r\n\t\t Timing\r\n\t\t **************/\r\n\r\n\t\t/* Ticker function. */\r\n\t\tvar ticker = window.requestAnimationFrame || rAFShim;\r\n\r\n\t\t/* Inactive browser tabs pause rAF, which results in all active animations immediately sprinting to their completion states when the tab refocuses.\r\n\t\t To get around this, we dynamically switch rAF to setTimeout (which the browser *doesn't* pause) when the tab loses focus. We skip this for mobile\r\n\t\t devices to avoid wasting battery power on inactive tabs. */\r\n\t\t/* Note: Tab focus detection doesn't work on older versions of IE, but that's okay since they don't support rAF to begin with. */\r\n\t\tif (!Velocity.State.isMobile && document.hidden !== undefined) {\r\n\t\t\tvar updateTicker = function() {\r\n\t\t\t\t/* Reassign the rAF function (which the global tick() function uses) based on the tab's focus state. */\r\n\t\t\t\tif (document.hidden) {\r\n\t\t\t\t\tticker = function(callback) {\r\n\t\t\t\t\t\t/* The tick function needs a truthy first argument in order to pass its internal timestamp check. */\r\n\t\t\t\t\t\treturn setTimeout(function() {\r\n\t\t\t\t\t\t\tcallback(true);\r\n\t\t\t\t\t\t}, 16);\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t/* The rAF loop has been paused by the browser, so we manually restart the tick. */\r\n\t\t\t\t\ttick();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tticker = window.requestAnimationFrame || rAFShim;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\t/* Page could be sitting in the background at this time (i.e. opened as new tab) so making sure we use correct ticker from the start */\r\n\t\t\tupdateTicker();\r\n\r\n\t\t\t/* And then run check again every time visibility changes */\r\n\t\t\tdocument.addEventListener(\"visibilitychange\", updateTicker);\r\n\t\t}\r\n\r\n\t\t/************\r\n\t\t Tick\r\n\t\t ************/\r\n\r\n\t\t/* Note: All calls to Velocity are pushed to the Velocity.State.calls array, which is fully iterated through upon each tick. */\r\n\t\tfunction tick(timestamp) {\r\n\t\t\t/* An empty timestamp argument indicates that this is the first tick occurence since ticking was turned on.\r\n\t\t\t We leverage this metadata to fully ignore the first tick pass since RAF's initial pass is fired whenever\r\n\t\t\t the browser's next tick sync time occurs, which results in the first elements subjected to Velocity\r\n\t\t\t calls being animated out of sync with any elements animated immediately thereafter. In short, we ignore\r\n\t\t\t the first RAF tick pass so that elements being immediately consecutively animated -- instead of simultaneously animated\r\n\t\t\t by the same Velocity call -- are properly batched into the same initial RAF tick and consequently remain in sync thereafter. */\r\n\t\t\tif (timestamp) {\r\n\t\t\t\t/* We normally use RAF's high resolution timestamp but as it can be significantly offset when the browser is\r\n\t\t\t\t under high stress we give the option for choppiness over allowing the browser to drop huge chunks of frames.\r\n\t\t\t\t We use performance.now() and shim it if it doesn't exist for when the tab is hidden. */\r\n\t\t\t\tvar timeCurrent = Velocity.timestamp && timestamp !== true ? timestamp : performance.now();\r\n\r\n\t\t\t\t/********************\r\n\t\t\t\t Call Iteration\r\n\t\t\t\t ********************/\r\n\r\n\t\t\t\tvar callsLength = Velocity.State.calls.length;\r\n\r\n\t\t\t\t/* To speed up iterating over this array, it is compacted (falsey items -- calls that have completed -- are removed)\r\n\t\t\t\t when its length has ballooned to a point that can impact tick performance. This only becomes necessary when animation\r\n\t\t\t\t has been continuous with many elements over a long period of time; whenever all active calls are completed, completeCall() clears Velocity.State.calls. */\r\n\t\t\t\tif (callsLength > 10000) {\r\n\t\t\t\t\tVelocity.State.calls = compactSparseArray(Velocity.State.calls);\r\n\t\t\t\t\tcallsLength = Velocity.State.calls.length;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Iterate through each active call. */\r\n\t\t\t\tfor (var i = 0; i < callsLength; i++) {\r\n\t\t\t\t\t/* When a Velocity call is completed, its Velocity.State.calls entry is set to false. Continue on to the next call. */\r\n\t\t\t\t\tif (!Velocity.State.calls[i]) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/************************\r\n\t\t\t\t\t Call-Wide Variables\r\n\t\t\t\t\t ************************/\r\n\r\n\t\t\t\t\tvar callContainer = Velocity.State.calls[i],\r\n\t\t\t\t\t\t\tcall = callContainer[0],\r\n\t\t\t\t\t\t\topts = callContainer[2],\r\n\t\t\t\t\t\t\ttimeStart = callContainer[3],\r\n\t\t\t\t\t\t\tfirstTick = !timeStart,\r\n\t\t\t\t\t\t\ttweenDummyValue = null,\r\n\t\t\t\t\t\t\tpauseObject = callContainer[5],\r\n\t\t\t\t\t\t\tmillisecondsEllapsed = callContainer[6];\r\n\r\n\r\n\r\n\t\t\t\t\t/* If timeStart is undefined, then this is the first time that this call has been processed by tick().\r\n\t\t\t\t\t We assign timeStart now so that its value is as close to the real animation start time as possible.\r\n\t\t\t\t\t (Conversely, had timeStart been defined when this call was added to Velocity.State.calls, the delay\r\n\t\t\t\t\t between that time and now would cause the first few frames of the tween to be skipped since\r\n\t\t\t\t\t percentComplete is calculated relative to timeStart.) */\r\n\t\t\t\t\t/* Further, subtract 16ms (the approximate resolution of RAF) from the current time value so that the\r\n\t\t\t\t\t first tick iteration isn't wasted by animating at 0% tween completion, which would produce the\r\n\t\t\t\t\t same style value as the element's current value. */\r\n\t\t\t\t\tif (!timeStart) {\r\n\t\t\t\t\t\ttimeStart = Velocity.State.calls[i][3] = timeCurrent - 16;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* If a pause object is present, skip processing unless it has been set to resume */\r\n\t\t\t\t\tif (pauseObject) {\r\n\t\t\t\t\t\tif (pauseObject.resume === true) {\r\n\t\t\t\t\t\t\t/* Update the time start to accomodate the paused completion amount */\r\n\t\t\t\t\t\t\ttimeStart = callContainer[3] = Math.round(timeCurrent - millisecondsEllapsed - 16);\r\n\r\n\t\t\t\t\t\t\t/* Remove pause object after processing */\r\n\t\t\t\t\t\t\tcallContainer[5] = null;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tmillisecondsEllapsed = callContainer[6] = timeCurrent - timeStart;\r\n\r\n\t\t\t\t\t/* The tween's completion percentage is relative to the tween's start time, not the tween's start value\r\n\t\t\t\t\t (which would result in unpredictable tween durations since JavaScript's timers are not particularly accurate).\r\n\t\t\t\t\t Accordingly, we ensure that percentComplete does not exceed 1. */\r\n\t\t\t\t\tvar percentComplete = Math.min((millisecondsEllapsed) / opts.duration, 1);\r\n\r\n\t\t\t\t\t/**********************\r\n\t\t\t\t\t Element Iteration\r\n\t\t\t\t\t **********************/\r\n\r\n\t\t\t\t\t/* For every call, iterate through each of the elements in its set. */\r\n\t\t\t\t\tfor (var j = 0, callLength = call.length; j < callLength; j++) {\r\n\t\t\t\t\t\tvar tweensContainer = call[j],\r\n\t\t\t\t\t\t\t\telement = tweensContainer.element;\r\n\r\n\t\t\t\t\t\t/* Check to see if this element has been deleted midway through the animation by checking for the\r\n\t\t\t\t\t\t continued existence of its data cache. If it's gone, or the element is currently paused, skip animating this element. */\r\n\t\t\t\t\t\tif (!Data(element)) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tvar transformPropertyExists = false;\r\n\r\n\t\t\t\t\t\t/**********************************\r\n\t\t\t\t\t\t Display & Visibility Toggling\r\n\t\t\t\t\t\t **********************************/\r\n\r\n\t\t\t\t\t\t/* If the display option is set to non-\"none\", set it upfront so that the element can become visible before tweening begins.\r\n\t\t\t\t\t\t (Otherwise, display's \"none\" value is set in completeCall() once the animation has completed.) */\r\n\t\t\t\t\t\tif (opts.display !== undefined && opts.display !== null && opts.display !== \"none\") {\r\n\t\t\t\t\t\t\tif (opts.display === \"flex\") {\r\n\t\t\t\t\t\t\t\tvar flexValues = [\"-webkit-box\", \"-moz-box\", \"-ms-flexbox\", \"-webkit-flex\"];\r\n\r\n\t\t\t\t\t\t\t\t$.each(flexValues, function(i, flexValue) {\r\n\t\t\t\t\t\t\t\t\tCSS.setPropertyValue(element, \"display\", flexValue);\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tCSS.setPropertyValue(element, \"display\", opts.display);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Same goes with the visibility option, but its \"none\" equivalent is \"hidden\". */\r\n\t\t\t\t\t\tif (opts.visibility !== undefined && opts.visibility !== \"hidden\") {\r\n\t\t\t\t\t\t\tCSS.setPropertyValue(element, \"visibility\", opts.visibility);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/************************\r\n\t\t\t\t\t\t Property Iteration\r\n\t\t\t\t\t\t ************************/\r\n\r\n\t\t\t\t\t\t/* For every element, iterate through each property. */\r\n\t\t\t\t\t\tfor (var property in tweensContainer) {\r\n\t\t\t\t\t\t\t/* Note: In addition to property tween data, tweensContainer contains a reference to its associated element. */\r\n\t\t\t\t\t\t\tif (tweensContainer.hasOwnProperty(property) && property !== \"element\") {\r\n\t\t\t\t\t\t\t\tvar tween = tweensContainer[property],\r\n\t\t\t\t\t\t\t\t\t\tcurrentValue,\r\n\t\t\t\t\t\t\t\t\t\t/* Easing can either be a pre-genereated function or a string that references a pre-registered easing\r\n\t\t\t\t\t\t\t\t\t\t on the Velocity.Easings object. In either case, return the appropriate easing *function*. */\r\n\t\t\t\t\t\t\t\t\t\teasing = Type.isString(tween.easing) ? Velocity.Easings[tween.easing] : tween.easing;\r\n\r\n\t\t\t\t\t\t\t\t/******************************\r\n\t\t\t\t\t\t\t\t Current Value Calculation\r\n\t\t\t\t\t\t\t\t ******************************/\r\n\r\n\t\t\t\t\t\t\t\tif (Type.isString(tween.pattern)) {\r\n\t\t\t\t\t\t\t\t\tvar patternReplace = percentComplete === 1 ?\r\n\t\t\t\t\t\t\t\t\t\t\tfunction($0, index, round) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tvar result = tween.endValue[index];\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn round ? Math.round(result) : result;\r\n\t\t\t\t\t\t\t\t\t\t\t} :\r\n\t\t\t\t\t\t\t\t\t\t\tfunction($0, index, round) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tvar startValue = tween.startValue[index],\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttweenDelta = tween.endValue[index] - startValue,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresult = startValue + (tweenDelta * easing(percentComplete, opts, tweenDelta));\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn round ? Math.round(result) : result;\r\n\t\t\t\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\t\tcurrentValue = tween.pattern.replace(/{(\\d+)(!)?}/g, patternReplace);\r\n\t\t\t\t\t\t\t\t} else if (percentComplete === 1) {\r\n\t\t\t\t\t\t\t\t\t/* If this is the last tick pass (if we've reached 100% completion for this tween),\r\n\t\t\t\t\t\t\t\t\t ensure that currentValue is explicitly set to its target endValue so that it's not subjected to any rounding. */\r\n\t\t\t\t\t\t\t\t\tcurrentValue = tween.endValue;\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t/* Otherwise, calculate currentValue based on the current delta from startValue. */\r\n\t\t\t\t\t\t\t\t\tvar tweenDelta = tween.endValue - tween.startValue;\r\n\r\n\t\t\t\t\t\t\t\t\tcurrentValue = tween.startValue + (tweenDelta * easing(percentComplete, opts, tweenDelta));\r\n\t\t\t\t\t\t\t\t\t/* If no value change is occurring, don't proceed with DOM updating. */\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (!firstTick && (currentValue === tween.currentValue)) {\r\n\t\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\ttween.currentValue = currentValue;\r\n\r\n\t\t\t\t\t\t\t\t/* If we're tweening a fake 'tween' property in order to log transition values, update the one-per-call variable so that\r\n\t\t\t\t\t\t\t\t it can be passed into the progress callback. */\r\n\t\t\t\t\t\t\t\tif (property === \"tween\") {\r\n\t\t\t\t\t\t\t\t\ttweenDummyValue = currentValue;\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t/******************\r\n\t\t\t\t\t\t\t\t\t Hooks: Part I\r\n\t\t\t\t\t\t\t\t\t ******************/\r\n\t\t\t\t\t\t\t\t\tvar hookRoot;\r\n\r\n\t\t\t\t\t\t\t\t\t/* For hooked properties, the newly-updated rootPropertyValueCache is cached onto the element so that it can be used\r\n\t\t\t\t\t\t\t\t\t for subsequent hooks in this call that are associated with the same root property. If we didn't cache the updated\r\n\t\t\t\t\t\t\t\t\t rootPropertyValue, each subsequent update to the root property in this tick pass would reset the previous hook's\r\n\t\t\t\t\t\t\t\t\t updates to rootPropertyValue prior to injection. A nice performance byproduct of rootPropertyValue caching is that\r\n\t\t\t\t\t\t\t\t\t subsequently chained animations using the same hookRoot but a different hook can use this cached rootPropertyValue. */\r\n\t\t\t\t\t\t\t\t\tif (CSS.Hooks.registered[property]) {\r\n\t\t\t\t\t\t\t\t\t\thookRoot = CSS.Hooks.getRoot(property);\r\n\r\n\t\t\t\t\t\t\t\t\t\tvar rootPropertyValueCache = Data(element).rootPropertyValueCache[hookRoot];\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (rootPropertyValueCache) {\r\n\t\t\t\t\t\t\t\t\t\t\ttween.rootPropertyValue = rootPropertyValueCache;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t/*****************\r\n\t\t\t\t\t\t\t\t\t DOM Update\r\n\t\t\t\t\t\t\t\t\t *****************/\r\n\r\n\t\t\t\t\t\t\t\t\t/* setPropertyValue() returns an array of the property name and property value post any normalization that may have been performed. */\r\n\t\t\t\t\t\t\t\t\t/* Note: To solve an IE<=8 positioning bug, the unit type is dropped when setting a property value of 0. */\r\n\t\t\t\t\t\t\t\t\tvar adjustedSetData = CSS.setPropertyValue(element, /* SET */\r\n\t\t\t\t\t\t\t\t\t\t\tproperty,\r\n\t\t\t\t\t\t\t\t\t\t\ttween.currentValue + (IE < 9 && parseFloat(currentValue) === 0 ? \"\" : tween.unitType),\r\n\t\t\t\t\t\t\t\t\t\t\ttween.rootPropertyValue,\r\n\t\t\t\t\t\t\t\t\t\t\ttween.scrollData);\r\n\r\n\t\t\t\t\t\t\t\t\t/*******************\r\n\t\t\t\t\t\t\t\t\t Hooks: Part II\r\n\t\t\t\t\t\t\t\t\t *******************/\r\n\r\n\t\t\t\t\t\t\t\t\t/* Now that we have the hook's updated rootPropertyValue (the post-processed value provided by adjustedSetData), cache it onto the element. */\r\n\t\t\t\t\t\t\t\t\tif (CSS.Hooks.registered[property]) {\r\n\t\t\t\t\t\t\t\t\t\t/* Since adjustedSetData contains normalized data ready for DOM updating, the rootPropertyValue needs to be re-extracted from its normalized form. ?? */\r\n\t\t\t\t\t\t\t\t\t\tif (CSS.Normalizations.registered[hookRoot]) {\r\n\t\t\t\t\t\t\t\t\t\t\tData(element).rootPropertyValueCache[hookRoot] = CSS.Normalizations.registered[hookRoot](\"extract\", null, adjustedSetData[1]);\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\tData(element).rootPropertyValueCache[hookRoot] = adjustedSetData[1];\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t/***************\r\n\t\t\t\t\t\t\t\t\t Transforms\r\n\t\t\t\t\t\t\t\t\t ***************/\r\n\r\n\t\t\t\t\t\t\t\t\t/* Flag whether a transform property is being animated so that flushTransformCache() can be triggered once this tick pass is complete. */\r\n\t\t\t\t\t\t\t\t\tif (adjustedSetData[0] === \"transform\") {\r\n\t\t\t\t\t\t\t\t\t\ttransformPropertyExists = true;\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/****************\r\n\t\t\t\t\t\t mobileHA\r\n\t\t\t\t\t\t ****************/\r\n\r\n\t\t\t\t\t\t/* If mobileHA is enabled, set the translate3d transform to null to force hardware acceleration.\r\n\t\t\t\t\t\t It's safe to override this property since Velocity doesn't actually support its animation (hooks are used in its place). */\r\n\t\t\t\t\t\tif (opts.mobileHA) {\r\n\t\t\t\t\t\t\t/* Don't set the null transform hack if we've already done so. */\r\n\t\t\t\t\t\t\tif (Data(element).transformCache.translate3d === undefined) {\r\n\t\t\t\t\t\t\t\t/* All entries on the transformCache object are later concatenated into a single transform string via flushTransformCache(). */\r\n\t\t\t\t\t\t\t\tData(element).transformCache.translate3d = \"(0px, 0px, 0px)\";\r\n\r\n\t\t\t\t\t\t\t\ttransformPropertyExists = true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (transformPropertyExists) {\r\n\t\t\t\t\t\t\tCSS.flushTransformCache(element);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* The non-\"none\" display value is only applied to an element once -- when its associated call is first ticked through.\r\n\t\t\t\t\t Accordingly, it's set to false so that it isn't re-processed by this call in the next tick. */\r\n\t\t\t\t\tif (opts.display !== undefined && opts.display !== \"none\") {\r\n\t\t\t\t\t\tVelocity.State.calls[i][2].display = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (opts.visibility !== undefined && opts.visibility !== \"hidden\") {\r\n\t\t\t\t\t\tVelocity.State.calls[i][2].visibility = false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* Pass the elements and the timing data (percentComplete, msRemaining, timeStart, tweenDummyValue) into the progress callback. */\r\n\t\t\t\t\tif (opts.progress) {\r\n\t\t\t\t\t\topts.progress.call(callContainer[1],\r\n\t\t\t\t\t\t\t\tcallContainer[1],\r\n\t\t\t\t\t\t\t\tpercentComplete,\r\n\t\t\t\t\t\t\t\tMath.max(0, (timeStart + opts.duration) - timeCurrent),\r\n\t\t\t\t\t\t\t\ttimeStart,\r\n\t\t\t\t\t\t\t\ttweenDummyValue);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* If this call has finished tweening, pass its index to completeCall() to handle call cleanup. */\r\n\t\t\t\t\tif (percentComplete === 1) {\r\n\t\t\t\t\t\tcompleteCall(i);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/* Note: completeCall() sets the isTicking flag to false when the last call on Velocity.State.calls has completed. */\r\n\t\t\tif (Velocity.State.isTicking) {\r\n\t\t\t\tticker(tick);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/**********************\r\n\t\t Call Completion\r\n\t\t **********************/\r\n\r\n\t\t/* Note: Unlike tick(), which processes all active calls at once, call completion is handled on a per-call basis. */\r\n\t\tfunction completeCall(callIndex, isStopped) {\r\n\t\t\t/* Ensure the call exists. */\r\n\t\t\tif (!Velocity.State.calls[callIndex]) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t/* Pull the metadata from the call. */\r\n\t\t\tvar call = Velocity.State.calls[callIndex][0],\r\n\t\t\t\t\telements = Velocity.State.calls[callIndex][1],\r\n\t\t\t\t\topts = Velocity.State.calls[callIndex][2],\r\n\t\t\t\t\tresolver = Velocity.State.calls[callIndex][4];\r\n\r\n\t\t\tvar remainingCallsExist = false;\r\n\r\n\t\t\t/*************************\r\n\t\t\t Element Finalization\r\n\t\t\t *************************/\r\n\r\n\t\t\tfor (var i = 0, callLength = call.length; i < callLength; i++) {\r\n\t\t\t\tvar element = call[i].element;\r\n\r\n\t\t\t\t/* If the user set display to \"none\" (intending to hide the element), set it now that the animation has completed. */\r\n\t\t\t\t/* Note: display:none isn't set when calls are manually stopped (via Velocity(\"stop\"). */\r\n\t\t\t\t/* Note: Display gets ignored with \"reverse\" calls and infinite loops, since this behavior would be undesirable. */\r\n\t\t\t\tif (!isStopped && !opts.loop) {\r\n\t\t\t\t\tif (opts.display === \"none\") {\r\n\t\t\t\t\t\tCSS.setPropertyValue(element, \"display\", opts.display);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (opts.visibility === \"hidden\") {\r\n\t\t\t\t\t\tCSS.setPropertyValue(element, \"visibility\", opts.visibility);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* If the element's queue is empty (if only the \"inprogress\" item is left at position 0) or if its queue is about to run\r\n\t\t\t\t a non-Velocity-initiated entry, turn off the isAnimating flag. A non-Velocity-initiatied queue entry's logic might alter\r\n\t\t\t\t an element's CSS values and thereby cause Velocity's cached value data to go stale. To detect if a queue entry was initiated by Velocity,\r\n\t\t\t\t we check for the existence of our special Velocity.queueEntryFlag declaration, which minifiers won't rename since the flag\r\n\t\t\t\t is assigned to jQuery's global $ object and thus exists out of Velocity's own scope. */\r\n\t\t\t\tvar data = Data(element);\r\n\r\n\t\t\t\tif (opts.loop !== true && ($.queue(element)[1] === undefined || !/\\.velocityQueueEntryFlag/i.test($.queue(element)[1]))) {\r\n\t\t\t\t\t/* The element may have been deleted. Ensure that its data cache still exists before acting on it. */\r\n\t\t\t\t\tif (data) {\r\n\t\t\t\t\t\tdata.isAnimating = false;\r\n\t\t\t\t\t\t/* Clear the element's rootPropertyValueCache, which will become stale. */\r\n\t\t\t\t\t\tdata.rootPropertyValueCache = {};\r\n\r\n\t\t\t\t\t\tvar transformHAPropertyExists = false;\r\n\t\t\t\t\t\t/* If any 3D transform subproperty is at its default value (regardless of unit type), remove it. */\r\n\t\t\t\t\t\t$.each(CSS.Lists.transforms3D, function(i, transformName) {\r\n\t\t\t\t\t\t\tvar defaultValue = /^scale/.test(transformName) ? 1 : 0,\r\n\t\t\t\t\t\t\t\t\tcurrentValue = data.transformCache[transformName];\r\n\r\n\t\t\t\t\t\t\tif (data.transformCache[transformName] !== undefined && new RegExp(\"^\\\\(\" + defaultValue + \"[^.]\").test(currentValue)) {\r\n\t\t\t\t\t\t\t\ttransformHAPropertyExists = true;\r\n\r\n\t\t\t\t\t\t\t\tdelete data.transformCache[transformName];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t/* Mobile devices have hardware acceleration removed at the end of the animation in order to avoid hogging the GPU's memory. */\r\n\t\t\t\t\t\tif (opts.mobileHA) {\r\n\t\t\t\t\t\t\ttransformHAPropertyExists = true;\r\n\t\t\t\t\t\t\tdelete data.transformCache.translate3d;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Flush the subproperty removals to the DOM. */\r\n\t\t\t\t\t\tif (transformHAPropertyExists) {\r\n\t\t\t\t\t\t\tCSS.flushTransformCache(element);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Remove the \"velocity-animating\" indicator class. */\r\n\t\t\t\t\t\tCSS.Values.removeClass(element, \"velocity-animating\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/*********************\r\n\t\t\t\t Option: Complete\r\n\t\t\t\t *********************/\r\n\r\n\t\t\t\t/* Complete is fired once per call (not once per element) and is passed the full raw DOM element set as both its context and its first argument. */\r\n\t\t\t\t/* Note: Callbacks aren't fired when calls are manually stopped (via Velocity(\"stop\"). */\r\n\t\t\t\tif (!isStopped && opts.complete && !opts.loop && (i === callLength - 1)) {\r\n\t\t\t\t\t/* We throw callbacks in a setTimeout so that thrown errors don't halt the execution of Velocity itself. */\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\topts.complete.call(elements, elements);\r\n\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\tthrow error;\r\n\t\t\t\t\t\t}, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/**********************\r\n\t\t\t\t Promise Resolving\r\n\t\t\t\t **********************/\r\n\r\n\t\t\t\t/* Note: Infinite loops don't return promises. */\r\n\t\t\t\tif (resolver && opts.loop !== true) {\r\n\t\t\t\t\tresolver(elements);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/****************************\r\n\t\t\t\t Option: Loop (Infinite)\r\n\t\t\t\t ****************************/\r\n\r\n\t\t\t\tif (data && opts.loop === true && !isStopped) {\r\n\t\t\t\t\t/* If a rotateX/Y/Z property is being animated by 360 deg with loop:true, swap tween start/end values to enable\r\n\t\t\t\t\t continuous iterative rotation looping. (Otherise, the element would just rotate back and forth.) */\r\n\t\t\t\t\t$.each(data.tweensContainer, function(propertyName, tweenContainer) {\r\n\t\t\t\t\t\tif (/^rotate/.test(propertyName) && ((parseFloat(tweenContainer.startValue) - parseFloat(tweenContainer.endValue)) % 360 === 0)) {\r\n\t\t\t\t\t\t\tvar oldStartValue = tweenContainer.startValue;\r\n\r\n\t\t\t\t\t\t\ttweenContainer.startValue = tweenContainer.endValue;\r\n\t\t\t\t\t\t\ttweenContainer.endValue = oldStartValue;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (/^backgroundPosition/.test(propertyName) && parseFloat(tweenContainer.endValue) === 100 && tweenContainer.unitType === \"%\") {\r\n\t\t\t\t\t\t\ttweenContainer.endValue = 0;\r\n\t\t\t\t\t\t\ttweenContainer.startValue = 100;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tVelocity(element, \"reverse\", {loop: true, delay: opts.delay});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/***************\r\n\t\t\t\t Dequeueing\r\n\t\t\t\t ***************/\r\n\r\n\t\t\t\t/* Fire the next call in the queue so long as this call's queue wasn't set to false (to trigger a parallel animation),\r\n\t\t\t\t which would have already caused the next call to fire. Note: Even if the end of the animation queue has been reached,\r\n\t\t\t\t $.dequeue() must still be called in order to completely clear jQuery's animation queue. */\r\n\t\t\t\tif (opts.queue !== false) {\r\n\t\t\t\t\t$.dequeue(element, opts.queue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/************************\r\n\t\t\t Calls Array Cleanup\r\n\t\t\t ************************/\r\n\r\n\t\t\t/* Since this call is complete, set it to false so that the rAF tick skips it. This array is later compacted via compactSparseArray().\r\n\t\t\t (For performance reasons, the call is set to false instead of being deleted from the array: http://www.html5rocks.com/en/tutorials/speed/v8/) */\r\n\t\t\tVelocity.State.calls[callIndex] = false;\r\n\r\n\t\t\t/* Iterate through the calls array to determine if this was the final in-progress animation.\r\n\t\t\t If so, set a flag to end ticking and clear the calls array. */\r\n\t\t\tfor (var j = 0, callsLength = Velocity.State.calls.length; j < callsLength; j++) {\r\n\t\t\t\tif (Velocity.State.calls[j] !== false) {\r\n\t\t\t\t\tremainingCallsExist = true;\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (remainingCallsExist === false) {\r\n\t\t\t\t/* tick() will detect this flag upon its next iteration and subsequently turn itself off. */\r\n\t\t\t\tVelocity.State.isTicking = false;\r\n\r\n\t\t\t\t/* Clear the calls array so that its length is reset. */\r\n\t\t\t\tdelete Velocity.State.calls;\r\n\t\t\t\tVelocity.State.calls = [];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/******************\r\n\t\t Frameworks\r\n\t\t ******************/\r\n\r\n\t\t/* Both jQuery and Zepto allow their $.fn object to be extended to allow wrapped elements to be subjected to plugin calls.\r\n\t\t If either framework is loaded, register a \"velocity\" extension pointing to Velocity's core animate() method. Velocity\r\n\t\t also registers itself onto a global container (window.jQuery || window.Zepto || window) so that certain features are\r\n\t\t accessible beyond just a per-element scope. This master object contains an .animate() method, which is later assigned to $.fn\r\n\t\t (if jQuery or Zepto are present). Accordingly, Velocity can both act on wrapped DOM elements and stand alone for targeting raw DOM elements. */\r\n\t\tglobal.Velocity = Velocity;\r\n\r\n\t\tif (global !== window) {\r\n\t\t\t/* Assign the element function to Velocity's core animate() method. */\r\n\t\t\tglobal.fn.velocity = animate;\r\n\t\t\t/* Assign the object function's defaults to Velocity's global defaults object. */\r\n\t\t\tglobal.fn.velocity.defaults = Velocity.defaults;\r\n\t\t}\r\n\r\n\t\t/***********************\r\n\t\t Packaged Redirects\r\n\t\t ***********************/\r\n\r\n\t\t/* slideUp, slideDown */\r\n\t\t$.each([\"Down\", \"Up\"], function(i, direction) {\r\n\t\t\tVelocity.Redirects[\"slide\" + direction] = function(element, options, elementsIndex, elementsSize, elements, promiseData) {\r\n\t\t\t\tvar opts = $.extend({}, options),\r\n\t\t\t\t\t\tbegin = opts.begin,\r\n\t\t\t\t\t\tcomplete = opts.complete,\r\n\t\t\t\t\t\tinlineValues = {},\r\n\t\t\t\t\t\tcomputedValues = {height: \"\", marginTop: \"\", marginBottom: \"\", paddingTop: \"\", paddingBottom: \"\"};\r\n\r\n\t\t\t\tif (opts.display === undefined) {\r\n\t\t\t\t\t/* Show the element before slideDown begins and hide the element after slideUp completes. */\r\n\t\t\t\t\t/* Note: Inline elements cannot have dimensions animated, so they're reverted to inline-block. */\r\n\t\t\t\t\topts.display = (direction === \"Down\" ? (Velocity.CSS.Values.getDisplayType(element) === \"inline\" ? \"inline-block\" : \"block\") : \"none\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\topts.begin = function() {\r\n\t\t\t\t\t/* If the user passed in a begin callback, fire it now. */\r\n\t\t\t\t\tif (elementsIndex === 0 && begin) {\r\n\t\t\t\t\t\tbegin.call(elements, elements);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* Cache the elements' original vertical dimensional property values so that we can animate back to them. */\r\n\t\t\t\t\tfor (var property in computedValues) {\r\n\t\t\t\t\t\tif (!computedValues.hasOwnProperty(property)) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tinlineValues[property] = element.style[property];\r\n\r\n\t\t\t\t\t\t/* For slideDown, use forcefeeding to animate all vertical properties from 0. For slideUp,\r\n\t\t\t\t\t\t use forcefeeding to start from computed values and animate down to 0. */\r\n\t\t\t\t\t\tvar propertyValue = CSS.getPropertyValue(element, property);\r\n\t\t\t\t\t\tcomputedValues[property] = (direction === \"Down\") ? [propertyValue, 0] : [0, propertyValue];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* Force vertical overflow content to clip so that sliding works as expected. */\r\n\t\t\t\t\tinlineValues.overflow = element.style.overflow;\r\n\t\t\t\t\telement.style.overflow = \"hidden\";\r\n\t\t\t\t};\r\n\r\n\t\t\t\topts.complete = function() {\r\n\t\t\t\t\t/* Reset element to its pre-slide inline values once its slide animation is complete. */\r\n\t\t\t\t\tfor (var property in inlineValues) {\r\n\t\t\t\t\t\tif (inlineValues.hasOwnProperty(property)) {\r\n\t\t\t\t\t\t\telement.style[property] = inlineValues[property];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* If the user passed in a complete callback, fire it now. */\r\n\t\t\t\t\tif (elementsIndex === elementsSize - 1) {\r\n\t\t\t\t\t\tif (complete) {\r\n\t\t\t\t\t\t\tcomplete.call(elements, elements);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (promiseData) {\r\n\t\t\t\t\t\t\tpromiseData.resolver(elements);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tVelocity(element, computedValues, opts);\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\t/* fadeIn, fadeOut */\r\n\t\t$.each([\"In\", \"Out\"], function(i, direction) {\r\n\t\t\tVelocity.Redirects[\"fade\" + direction] = function(element, options, elementsIndex, elementsSize, elements, promiseData) {\r\n\t\t\t\tvar opts = $.extend({}, options),\r\n\t\t\t\t\t\tcomplete = opts.complete,\r\n\t\t\t\t\t\tpropertiesMap = {opacity: (direction === \"In\") ? 1 : 0};\r\n\r\n\t\t\t\t/* Since redirects are triggered individually for each element in the animated set, avoid repeatedly triggering\r\n\t\t\t\t callbacks by firing them only when the final element has been reached. */\r\n\t\t\t\tif (elementsIndex !== 0) {\r\n\t\t\t\t\topts.begin = null;\r\n\t\t\t\t}\r\n\t\t\t\tif (elementsIndex !== elementsSize - 1) {\r\n\t\t\t\t\topts.complete = null;\r\n\t\t\t\t} else {\r\n\t\t\t\t\topts.complete = function() {\r\n\t\t\t\t\t\tif (complete) {\r\n\t\t\t\t\t\t\tcomplete.call(elements, elements);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (promiseData) {\r\n\t\t\t\t\t\t\tpromiseData.resolver(elements);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* If a display was passed in, use it. Otherwise, default to \"none\" for fadeOut or the element-specific default for fadeIn. */\r\n\t\t\t\t/* Note: We allow users to pass in \"null\" to skip display setting altogether. */\r\n\t\t\t\tif (opts.display === undefined) {\r\n\t\t\t\t\topts.display = (direction === \"In\" ? \"auto\" : \"none\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tVelocity(this, propertiesMap, opts);\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\treturn Velocity;\r\n\t}((window.jQuery || window.Zepto || window), window, (window ? window.document : undefined));\r\n}));\r\n\r\n/******************\r\n Known Issues\r\n ******************/\r\n\r\n/* The CSS spec mandates that the translateX/Y/Z transforms are %-relative to the element itself -- not its parent.\r\n Velocity, however, doesn't make this distinction. Thus, converting to or from the % unit with these subproperties\r\n will produce an inaccurate conversion value. The same issue exists with the cx/cy attributes of SVG circles and ellipses. */\r\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (0, _createReactClass2.default)({\n displayName: 'ErrorDialog',\n propTypes: {\n title: _propTypes2.default.string,\n description: _propTypes2.default.oneOfType([_propTypes2.default.element, _propTypes2.default.string]),\n button: _propTypes2.default.string,\n focus: _propTypes2.default.bool,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n focus: true,\n title: null,\n description: null,\n button: null\n };\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_ErrorDialog', onFinished: this.props.onFinished,\n title: this.props.title || (0, _languageHandler._t)('Error'),\n contentId: 'mx_Dialog_content'\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content', id: 'mx_Dialog_content' },\n this.props.description || (0, _languageHandler._t)('An error has occurred.')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { className: 'mx_Dialog_primary', onClick: this.props.onFinished, autoFocus: this.props.focus },\n this.props.button || (0, _languageHandler._t)('OK')\n )\n )\n );\n }\n}); /*\n Copyright 2015, 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/*\n * Usage:\n * Modal.createTrackedDialog('An Identifier', 'some detail', ErrorDialog, {\n * title: \"some text\", (default: \"Error\")\n * description: \"some more text\",\n * button: \"Button Text\",\n * onFinished: someFunction,\n * focus: true|false (default: true)\n * });\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=ErrorDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _url = require('url');\n\nvar _url2 = _interopRequireDefault(_url);\n\nvar _querystring = require('querystring');\n\nvar _querystring2 = _interopRequireDefault(_querystring);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _WidgetMessaging = require('../../../WidgetMessaging');\n\nvar _WidgetMessaging2 = _interopRequireDefault(_WidgetMessaging);\n\nvar _AccessibleButton = require('./AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _AppPermission = require('./AppPermission');\n\nvar _AppPermission2 = _interopRequireDefault(_AppPermission);\n\nvar _AppWarning = require('./AppWarning');\n\nvar _AppWarning2 = _interopRequireDefault(_AppWarning);\n\nvar _MessageSpinner = require('./MessageSpinner');\n\nvar _MessageSpinner2 = _interopRequireDefault(_MessageSpinner);\n\nvar _WidgetUtils = require('../../../utils/WidgetUtils');\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _ActiveWidgetStore = require('../../../stores/ActiveWidgetStore');\n\nvar _ActiveWidgetStore2 = _interopRequireDefault(_ActiveWidgetStore);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _IntegrationManagers = require('../../../integrations/IntegrationManagers');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ALLOWED_APP_URL_SCHEMES = ['https:', 'http:']; /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n Copyright 2019 Michael Telatynski <7t3chguy@gmail.com>\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar ENABLE_REACT_PERF = false;\n\nvar AppTile = function (_React$Component) {\n (0, _inherits3.default)(AppTile, _React$Component);\n\n function AppTile(props) {\n (0, _classCallCheck3.default)(this, AppTile);\n\n // The key used for PersistedElement\n var _this = (0, _possibleConstructorReturn3.default)(this, (AppTile.__proto__ || (0, _getPrototypeOf2.default)(AppTile)).call(this, props));\n\n _this._persistKey = 'widget_' + _this.props.id;\n\n _this.state = _this._getNewState(props);\n\n _this._onAction = _this._onAction.bind(_this);\n _this._onLoaded = _this._onLoaded.bind(_this);\n _this._onEditClick = _this._onEditClick.bind(_this);\n _this._onDeleteClick = _this._onDeleteClick.bind(_this);\n _this._onCancelClick = _this._onCancelClick.bind(_this);\n _this._onSnapshotClick = _this._onSnapshotClick.bind(_this);\n _this.onClickMenuBar = _this.onClickMenuBar.bind(_this);\n _this._onMinimiseClick = _this._onMinimiseClick.bind(_this);\n _this._grantWidgetPermission = _this._grantWidgetPermission.bind(_this);\n _this._revokeWidgetPermission = _this._revokeWidgetPermission.bind(_this);\n _this._onPopoutWidgetClick = _this._onPopoutWidgetClick.bind(_this);\n _this._onReloadWidgetClick = _this._onReloadWidgetClick.bind(_this);\n return _this;\n }\n\n /**\n * Set initial component state when the App wUrl (widget URL) is being updated.\n * Component props *must* be passed (rather than relying on this.props).\n * @param {Object} newProps The new properties of the component\n * @return {Object} Updated component state to be set with setState\n */\n\n\n (0, _createClass3.default)(AppTile, [{\n key: '_getNewState',\n value: function _getNewState(newProps) {\n var widgetPermissionId = [newProps.room.roomId, encodeURIComponent(newProps.url)].join('_');\n var hasPermissionToLoad = localStorage.getItem(widgetPermissionId);\n\n var PersistedElement = _index2.default.getComponent(\"elements.PersistedElement\");\n return {\n initialising: true, // True while we are mangling the widget URL\n // True while the iframe content is loading\n loading: this.props.waitForIframeLoad && !PersistedElement.isMounted(this._persistKey),\n widgetUrl: this._addWurlParams(newProps.url),\n widgetPermissionId: widgetPermissionId,\n // Assume that widget has permission to load if we are the user who\n // added it to the room, or if explicitly granted by the user\n hasPermissionToLoad: hasPermissionToLoad === 'true' || newProps.userId === newProps.creatorUserId,\n error: null,\n deleting: false,\n widgetPageTitle: newProps.widgetPageTitle\n };\n }\n\n /**\n * Does the widget support a given capability\n * @param {string} capability Capability to check for\n * @return {Boolean} True if capability supported\n */\n\n }, {\n key: '_hasCapability',\n value: function _hasCapability(capability) {\n return _ActiveWidgetStore2.default.widgetHasCapability(this.props.id, capability);\n }\n\n /**\n * Add widget instance specific parameters to pass in wUrl\n * Properties passed to widget instance:\n * - widgetId\n * - origin / parent URL\n * @param {string} urlString Url string to modify\n * @return {string}\n * Url string with parameters appended.\n * If url can not be parsed, it is returned unmodified.\n */\n\n }, {\n key: '_addWurlParams',\n value: function _addWurlParams(urlString) {\n var u = _url2.default.parse(urlString);\n if (!u) {\n console.error(\"_addWurlParams\", \"Invalid URL\", urlString);\n return _url2.default;\n }\n\n var params = _querystring2.default.parse(u.query);\n // Append widget ID to query parameters\n params.widgetId = this.props.id;\n // Append current / parent URL, minus the hash because that will change when\n // we view a different room (ie. may change for persistent widgets)\n params.parentUrl = window.location.href.split('#', 2)[0];\n u.search = undefined;\n u.query = params;\n\n return u.format();\n }\n }, {\n key: 'isMixedContent',\n value: function isMixedContent() {\n var parentContentProtocol = window.location.protocol;\n var u = _url2.default.parse(this.props.url);\n var childContentProtocol = u.protocol;\n if (parentContentProtocol === 'https:' && childContentProtocol !== 'https:') {\n console.warn(\"Refusing to load mixed-content app:\", parentContentProtocol, childContentProtocol, window.location, this.props.url);\n return true;\n }\n return false;\n }\n }, {\n key: 'componentWillMount',\n value: function componentWillMount() {\n // Only fetch IM token on mount if we're showing and have permission to load\n if (this.props.show && this.state.hasPermissionToLoad) {\n this.setScalarToken();\n }\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n // Widget action listeners\n this.dispatcherRef = _dispatcher2.default.register(this._onAction);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n // Widget action listeners\n _dispatcher2.default.unregister(this.dispatcherRef);\n\n // if it's not remaining on screen, get rid of the PersistedElement container\n if (!_ActiveWidgetStore2.default.getWidgetPersistence(this.props.id)) {\n _ActiveWidgetStore2.default.destroyPersistentWidget(this.props.id);\n var PersistedElement = _index2.default.getComponent(\"elements.PersistedElement\");\n PersistedElement.destroyElement(this._persistKey);\n }\n }\n\n /**\n * Adds a scalar token to the widget URL, if required\n * Component initialisation is only complete when this function has resolved\n */\n\n }, {\n key: 'setScalarToken',\n value: function setScalarToken() {\n var _this2 = this;\n\n if (!_WidgetUtils2.default.isScalarUrl(this.props.url)) {\n console.warn('Non-scalar widget, not setting scalar token!', _url2.default);\n this.setState({\n error: null,\n widgetUrl: this._addWurlParams(this.props.url),\n initialising: false\n });\n return;\n }\n\n var managers = _IntegrationManagers.IntegrationManagers.sharedInstance();\n if (!managers.hasManager()) {\n console.warn(\"No integration manager - not setting scalar token\", _url2.default);\n this.setState({\n error: null,\n widgetUrl: this._addWurlParams(this.props.url),\n initialising: false\n });\n return;\n }\n\n // TODO: Pick the right manager for the widget\n\n // Fetch the token before loading the iframe as we need it to mangle the URL\n if (!this._scalarClient) {\n this._scalarClient = managers.getPrimaryManager().getScalarClient();\n }\n this._scalarClient.getScalarToken().done(function (token) {\n // Append scalar_token as a query param if not already present\n _this2._scalarClient.scalarToken = token;\n var u = _url2.default.parse(_this2._addWurlParams(_this2.props.url));\n var params = _querystring2.default.parse(u.query);\n if (!params.scalar_token) {\n params.scalar_token = encodeURIComponent(token);\n // u.search must be set to undefined, so that u.format() uses query parameters - https://nodejs.org/docs/latest/api/url.html#url_url_format_url_options\n u.search = undefined;\n u.query = params;\n }\n\n _this2.setState({\n error: null,\n widgetUrl: u.format(),\n initialising: false\n });\n\n // Fetch page title from remote content if not already set\n if (!_this2.state.widgetPageTitle && params.url) {\n _this2._fetchWidgetTitle(params.url);\n }\n }, function (err) {\n console.error(\"Failed to get scalar_token\", err);\n _this2.setState({\n error: err.message,\n initialising: false\n });\n });\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if (nextProps.url !== this.props.url) {\n this._getNewState(nextProps);\n // Fetch IM token for new URL if we're showing and have permission to load\n if (this.props.show && this.state.hasPermissionToLoad) {\n this.setScalarToken();\n }\n } else if (nextProps.show && !this.props.show) {\n if (this.props.waitForIframeLoad) {\n this.setState({\n loading: true\n });\n }\n // Fetch IM token now that we're showing if we already have permission to load\n if (this.state.hasPermissionToLoad) {\n this.setScalarToken();\n }\n } else if (nextProps.widgetPageTitle !== this.props.widgetPageTitle) {\n this.setState({\n widgetPageTitle: nextProps.widgetPageTitle\n });\n }\n }\n }, {\n key: '_canUserModify',\n value: function _canUserModify() {\n // User widgets should always be modifiable by their creator\n if (this.props.userWidget && _MatrixClientPeg2.default.get().credentials.userId === this.props.creatorUserId) {\n return true;\n }\n // Check if the current user can modify widgets in the current room\n return _WidgetUtils2.default.canUserModifyWidgets(this.props.room.roomId);\n }\n }, {\n key: '_onEditClick',\n value: function _onEditClick(e) {\n console.log(\"Edit widget ID \", this.props.id);\n if (this.props.onEditClick) {\n this.props.onEditClick();\n } else {\n // TODO: Open the right manager for the widget\n if (_SettingsStore2.default.isFeatureEnabled(\"feature_many_integration_managers\")) {\n _IntegrationManagers.IntegrationManagers.sharedInstance().openAll(this.props.room, 'type_' + this.props.type, this.props.id);\n } else {\n _IntegrationManagers.IntegrationManagers.sharedInstance().getPrimaryManager().open(this.props.room, 'type_' + this.props.type, this.props.id);\n }\n }\n }\n }, {\n key: '_onSnapshotClick',\n value: function _onSnapshotClick(e) {\n console.warn(\"Requesting widget snapshot\");\n _ActiveWidgetStore2.default.getWidgetMessaging(this.props.id).getScreenshot().catch(function (err) {\n console.error(\"Failed to get screenshot\", err);\n }).then(function (screenshot) {\n _dispatcher2.default.dispatch({\n action: 'picture_snapshot',\n file: screenshot\n }, true);\n });\n }\n\n /* If user has permission to modify widgets, delete the widget,\n * otherwise revoke access for the widget to load in the user's browser\n */\n\n }, {\n key: '_onDeleteClick',\n value: function _onDeleteClick() {\n var _this3 = this;\n\n if (this.props.onDeleteClick) {\n this.props.onDeleteClick();\n } else if (this._canUserModify()) {\n // Show delete confirmation dialog\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n _Modal2.default.createTrackedDialog('Delete Widget', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Delete Widget\"),\n description: (0, _languageHandler._t)(\"Deleting a widget removes it for all users in this room.\" + \" Are you sure you want to delete this widget?\"),\n button: (0, _languageHandler._t)(\"Delete widget\"),\n onFinished: function onFinished(confirmed) {\n if (!confirmed) {\n return;\n }\n _this3.setState({ deleting: true });\n\n // HACK: This is a really dirty way to ensure that Jitsi cleans up\n // its hold on the webcam. Without this, the widget holds a media\n // stream open, even after death. See https://github.com/vector-im/riot-web/issues/7351\n if (_this3.refs.appFrame) {\n // In practice we could just do `+= ''` to trick the browser\n // into thinking the URL changed, however I can foresee this\n // being optimized out by a browser. Instead, we'll just point\n // the iframe at a page that is reasonably safe to use in the\n // event the iframe doesn't wink away.\n // This is relative to where the Riot instance is located.\n _this3.refs.appFrame.src = 'about:blank';\n }\n\n _WidgetUtils2.default.setRoomWidget(_this3.props.room.roomId, _this3.props.id).catch(function (e) {\n console.error('Failed to delete widget', e);\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n\n _Modal2.default.createTrackedDialog('Failed to remove widget', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to remove widget'),\n description: (0, _languageHandler._t)('An error ocurred whilst trying to remove the widget from the room')\n });\n }).finally(function () {\n _this3.setState({ deleting: false });\n });\n }\n });\n }\n }\n }, {\n key: '_onCancelClick',\n value: function _onCancelClick() {\n if (this.props.onDeleteClick) {\n this.props.onDeleteClick();\n } else {\n console.log(\"Revoke widget permissions - %s\", this.props.id);\n this._revokeWidgetPermission();\n }\n }\n\n /**\n * Called when widget iframe has finished loading\n */\n\n }, {\n key: '_onLoaded',\n value: function _onLoaded() {\n // Destroy the old widget messaging before starting it back up again. Some widgets\n // have startup routines that run when they are loaded, so we just need to reinitialize\n // the messaging for them.\n _ActiveWidgetStore2.default.delWidgetMessaging(this.props.id);\n this._setupWidgetMessaging();\n\n _ActiveWidgetStore2.default.setRoomId(this.props.id, this.props.room.roomId);\n this.setState({ loading: false });\n }\n }, {\n key: '_setupWidgetMessaging',\n value: function _setupWidgetMessaging() {\n var _this4 = this;\n\n // FIXME: There's probably no reason to do this here: it should probably be done entirely\n // in ActiveWidgetStore.\n var widgetMessaging = new _WidgetMessaging2.default(this.props.id, this.props.url, this.props.userWidget, this.refs.appFrame.contentWindow);\n _ActiveWidgetStore2.default.setWidgetMessaging(this.props.id, widgetMessaging);\n widgetMessaging.getCapabilities().then(function (requestedCapabilities) {\n console.log('Widget ' + _this4.props.id + ' requested capabilities: ' + requestedCapabilities);\n requestedCapabilities = requestedCapabilities || [];\n\n // Allow whitelisted capabilities\n var requestedWhitelistCapabilies = [];\n\n if (_this4.props.whitelistCapabilities && _this4.props.whitelistCapabilities.length > 0) {\n requestedWhitelistCapabilies = requestedCapabilities.filter(function (e) {\n return this.indexOf(e) >= 0;\n }, _this4.props.whitelistCapabilities);\n\n if (requestedWhitelistCapabilies.length > 0) {\n console.warn('Widget ' + _this4.props.id + ' allowing requested, whitelisted properties: ' + requestedWhitelistCapabilies);\n }\n }\n\n // TODO -- Add UI to warn about and optionally allow requested capabilities\n\n _ActiveWidgetStore2.default.setWidgetCapabilities(_this4.props.id, requestedWhitelistCapabilies);\n\n if (_this4.props.onCapabilityRequest) {\n _this4.props.onCapabilityRequest(requestedCapabilities);\n }\n }).catch(function (err) {\n console.log('Failed to get capabilities for widget type ' + _this4.props.type, _this4.props.id, err);\n });\n }\n }, {\n key: '_onAction',\n value: function _onAction(payload) {\n if (payload.widgetId === this.props.id) {\n switch (payload.action) {\n case 'm.sticker':\n if (this._hasCapability('m.sticker')) {\n _dispatcher2.default.dispatch({ action: 'post_sticker_message', data: payload.data });\n } else {\n console.warn('Ignoring sticker message. Invalid capability');\n }\n break;\n }\n }\n }\n\n /**\n * Set remote content title on AppTile\n * @param {string} url Url to check for title\n */\n\n }, {\n key: '_fetchWidgetTitle',\n value: function _fetchWidgetTitle(url) {\n var _this5 = this;\n\n this._scalarClient.getScalarPageTitle(url).then(function (widgetPageTitle) {\n if (widgetPageTitle) {\n _this5.setState({ widgetPageTitle: widgetPageTitle });\n }\n }, function (err) {\n console.error(\"Failed to get page title\", err);\n });\n }\n\n /* TODO -- Store permission in account data so that it is persisted across multiple devices */\n\n }, {\n key: '_grantWidgetPermission',\n value: function _grantWidgetPermission() {\n console.warn('Granting permission to load widget - ', this.state.widgetUrl);\n localStorage.setItem(this.state.widgetPermissionId, true);\n this.setState({ hasPermissionToLoad: true });\n // Now that we have permission, fetch the IM token\n this.setScalarToken();\n }\n }, {\n key: '_revokeWidgetPermission',\n value: function _revokeWidgetPermission() {\n console.warn('Revoking permission to load widget - ', this.state.widgetUrl);\n localStorage.removeItem(this.state.widgetPermissionId);\n this.setState({ hasPermissionToLoad: false });\n\n // Force the widget to be non-persistent\n _ActiveWidgetStore2.default.destroyPersistentWidget(this.props.id);\n var PersistedElement = _index2.default.getComponent(\"elements.PersistedElement\");\n PersistedElement.destroyElement(this._persistKey);\n }\n }, {\n key: 'formatAppTileName',\n value: function formatAppTileName() {\n var appTileName = \"No name\";\n if (this.props.name && this.props.name.trim()) {\n appTileName = this.props.name.trim();\n }\n return appTileName;\n }\n }, {\n key: 'onClickMenuBar',\n value: function onClickMenuBar(ev) {\n ev.preventDefault();\n\n // Ignore clicks on menu bar children\n if (ev.target !== this.refs.menu_bar) {\n return;\n }\n\n // Toggle the view state of the apps drawer\n if (this.props.userWidget) {\n this._onMinimiseClick();\n } else {\n _dispatcher2.default.dispatch({\n action: 'appsDrawer',\n show: !this.props.show\n });\n }\n }\n }, {\n key: '_getSafeUrl',\n value: function _getSafeUrl() {\n var parsedWidgetUrl = _url2.default.parse(this.state.widgetUrl, true);\n if (ENABLE_REACT_PERF) {\n parsedWidgetUrl.search = null;\n parsedWidgetUrl.query.react_perf = true;\n }\n var safeWidgetUrl = '';\n if (ALLOWED_APP_URL_SCHEMES.indexOf(parsedWidgetUrl.protocol) !== -1) {\n safeWidgetUrl = _url2.default.format(parsedWidgetUrl);\n }\n return safeWidgetUrl;\n }\n }, {\n key: '_getTileTitle',\n value: function _getTileTitle() {\n var name = this.formatAppTileName();\n var titleSpacer = _react2.default.createElement(\n 'span',\n null,\n '\\xA0-\\xA0'\n );\n var title = '';\n if (this.state.widgetPageTitle && this.state.widgetPageTitle != this.formatAppTileName()) {\n title = this.state.widgetPageTitle;\n }\n\n return _react2.default.createElement(\n 'span',\n null,\n _react2.default.createElement(\n 'b',\n null,\n name\n ),\n _react2.default.createElement(\n 'span',\n null,\n title ? titleSpacer : '',\n title\n )\n );\n }\n }, {\n key: '_onMinimiseClick',\n value: function _onMinimiseClick(e) {\n if (this.props.onMinimiseClick) {\n this.props.onMinimiseClick();\n }\n }\n }, {\n key: '_onPopoutWidgetClick',\n value: function _onPopoutWidgetClick(e) {\n // Using Object.assign workaround as the following opens in a new window instead of a new tab.\n // window.open(this._getSafeUrl(), '_blank', 'noopener=yes');\n (0, _assign2.default)(document.createElement('a'), { target: '_blank', href: this._getSafeUrl(), rel: 'noopener' }).click();\n }\n }, {\n key: '_onReloadWidgetClick',\n value: function _onReloadWidgetClick(e) {\n // Reload iframe in this way to avoid cross-origin restrictions\n this.refs.appFrame.src = this.refs.appFrame.src;\n }\n }, {\n key: 'render',\n value: function render() {\n var appTileBody = void 0;\n\n // Don't render widget if it is in the process of being deleted\n if (this.state.deleting) {\n return _react2.default.createElement('div', null);\n }\n\n // Note that there is advice saying allow-scripts shouldn't be used with allow-same-origin\n // because that would allow the iframe to prgramatically remove the sandbox attribute, but\n // this would only be for content hosted on the same origin as the riot client: anything\n // hosted on the same origin as the client will get the same access as if you clicked\n // a link to it.\n var sandboxFlags = \"allow-forms allow-popups allow-popups-to-escape-sandbox \" + \"allow-same-origin allow-scripts allow-presentation\";\n\n // Additional iframe feature pemissions\n // (see - https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-permissions-in-cross-origin-iframes and https://wicg.github.io/feature-policy/)\n var iframeFeatures = \"microphone; camera; encrypted-media; autoplay;\";\n\n var appTileBodyClass = 'mx_AppTileBody' + (this.props.miniMode ? '_mini ' : ' ');\n\n if (this.props.show) {\n var loadingElement = _react2.default.createElement(\n 'div',\n { className: 'mx_AppLoading_spinner_fadeIn' },\n _react2.default.createElement(_MessageSpinner2.default, { msg: 'Loading...' })\n );\n if (!this.state.hasPermissionToLoad) {\n var isRoomEncrypted = _MatrixClientPeg2.default.get().isRoomEncrypted(this.props.room.roomId);\n appTileBody = _react2.default.createElement(\n 'div',\n { className: appTileBodyClass },\n _react2.default.createElement(_AppPermission2.default, {\n isRoomEncrypted: isRoomEncrypted,\n url: this.state.widgetUrl,\n onPermissionGranted: this._grantWidgetPermission\n })\n );\n } else if (this.state.initialising) {\n appTileBody = _react2.default.createElement(\n 'div',\n { className: appTileBodyClass + (this.state.loading ? 'mx_AppLoading' : '') },\n loadingElement\n );\n } else {\n if (this.isMixedContent()) {\n appTileBody = _react2.default.createElement(\n 'div',\n { className: appTileBodyClass },\n _react2.default.createElement(_AppWarning2.default, { errorMsg: 'Error - Mixed content' })\n );\n } else {\n appTileBody = _react2.default.createElement(\n 'div',\n { className: appTileBodyClass + (this.state.loading ? 'mx_AppLoading' : '') },\n this.state.loading && loadingElement,\n _react2.default.createElement('iframe', {\n is: true,\n allow: iframeFeatures,\n ref: 'appFrame',\n src: this._getSafeUrl(),\n allowFullScreen: 'true',\n sandbox: sandboxFlags,\n onLoad: this._onLoaded })\n );\n // if the widget would be allowed to remain on screen, we must put it in\n // a PersistedElement from the get-go, otherwise the iframe will be\n // re-mounted later when we do.\n if (this.props.whitelistCapabilities.includes('m.always_on_screen')) {\n var PersistedElement = _index2.default.getComponent(\"elements.PersistedElement\");\n // Also wrap the PersistedElement in a div to fix the height, otherwise\n // AppTile's border is in the wrong place\n appTileBody = _react2.default.createElement(\n 'div',\n { className: 'mx_AppTile_persistedWrapper' },\n _react2.default.createElement(\n PersistedElement,\n { persistKey: this._persistKey },\n appTileBody\n )\n );\n }\n }\n }\n }\n\n // editing is done in scalar\n var canUserModify = this._canUserModify();\n var showEditButton = Boolean(this._scalarClient && canUserModify);\n var showDeleteButton = (this.props.showDelete === undefined || this.props.showDelete) && canUserModify;\n var showCancelButton = (this.props.showCancel === undefined || this.props.showCancel) && !showDeleteButton;\n // Picture snapshot - only show button when apps are maximised.\n var showPictureSnapshotButton = this._hasCapability('m.capability.screenshot') && this.props.show;\n var showMinimiseButton = this.props.showMinimise && this.props.show;\n var showMaximiseButton = this.props.showMinimise && !this.props.show;\n\n var appTileClass = void 0;\n if (this.props.miniMode) {\n appTileClass = 'mx_AppTile_mini';\n } else if (this.props.fullWidth) {\n appTileClass = 'mx_AppTileFullWidth';\n } else {\n appTileClass = 'mx_AppTile';\n }\n\n var menuBarClasses = (0, _classnames2.default)({\n mx_AppTileMenuBar: true,\n mx_AppTileMenuBar_expanded: this.props.show\n });\n\n return _react2.default.createElement(\n 'div',\n { className: appTileClass, id: this.props.id },\n this.props.showMenubar && _react2.default.createElement(\n 'div',\n { ref: 'menu_bar', className: menuBarClasses, onClick: this.onClickMenuBar },\n _react2.default.createElement(\n 'span',\n { className: 'mx_AppTileMenuBarTitle', style: { pointerEvents: this.props.handleMinimisePointerEvents ? 'all' : false } },\n showMinimiseButton && _react2.default.createElement(_AccessibleButton2.default, {\n className: 'mx_AppTileMenuBar_iconButton mx_AppTileMenuBar_iconButton_minimise',\n title: (0, _languageHandler._t)('Minimize apps'),\n onClick: this._onMinimiseClick\n }),\n showMaximiseButton && _react2.default.createElement(_AccessibleButton2.default, {\n className: 'mx_AppTileMenuBar_iconButton mx_AppTileMenuBar_iconButton_maximise',\n title: (0, _languageHandler._t)('Maximize apps'),\n onClick: this._onMinimiseClick\n }),\n this.props.showTitle && this._getTileTitle()\n ),\n _react2.default.createElement(\n 'span',\n { className: 'mx_AppTileMenuBarWidgets' },\n this.props.showReload && _react2.default.createElement(_AccessibleButton2.default, {\n className: 'mx_AppTileMenuBar_iconButton mx_AppTileMenuBar_iconButton_reload',\n title: (0, _languageHandler._t)('Reload widget'),\n onClick: this._onReloadWidgetClick\n }),\n this.props.showPopout && _react2.default.createElement(_AccessibleButton2.default, {\n className: 'mx_AppTileMenuBar_iconButton mx_AppTileMenuBar_iconButton_popout',\n title: (0, _languageHandler._t)('Popout widget'),\n onClick: this._onPopoutWidgetClick\n }),\n showPictureSnapshotButton && _react2.default.createElement(_AccessibleButton2.default, {\n className: 'mx_AppTileMenuBar_iconButton mx_AppTileMenuBar_iconButton_snapshot',\n title: (0, _languageHandler._t)('Picture'),\n onClick: this._onSnapshotClick\n }),\n showEditButton && _react2.default.createElement(_AccessibleButton2.default, {\n className: 'mx_AppTileMenuBar_iconButton mx_AppTileMenuBar_iconButton_edit',\n title: (0, _languageHandler._t)('Edit'),\n onClick: this._onEditClick\n }),\n showDeleteButton && _react2.default.createElement(_AccessibleButton2.default, {\n className: 'mx_AppTileMenuBar_iconButton mx_AppTileMenuBar_iconButton_delete',\n title: (0, _languageHandler._t)('Delete widget'),\n onClick: this._onDeleteClick\n }),\n showCancelButton && _react2.default.createElement(_AccessibleButton2.default, {\n className: 'mx_AppTileMenuBar_iconButton mx_AppTileMenuBar_iconButton_cancel',\n title: (0, _languageHandler._t)('Revoke widget access'),\n onClick: this._onCancelClick\n })\n )\n ),\n appTileBody\n );\n }\n }]);\n return AppTile;\n}(_react2.default.Component);\n\nexports.default = AppTile;\n\n\nAppTile.displayName = 'AppTile';\n\nAppTile.propTypes = {\n id: _propTypes2.default.string.isRequired,\n url: _propTypes2.default.string.isRequired,\n name: _propTypes2.default.string.isRequired,\n room: _propTypes2.default.object.isRequired,\n type: _propTypes2.default.string.isRequired,\n // Specifying 'fullWidth' as true will render the app tile to fill the width of the app drawer continer.\n // This should be set to true when there is only one widget in the app drawer, otherwise it should be false.\n fullWidth: _propTypes2.default.bool,\n // Optional. If set, renders a smaller view of the widget\n miniMode: _propTypes2.default.bool,\n // UserId of the current user\n userId: _propTypes2.default.string.isRequired,\n // UserId of the entity that added / modified the widget\n creatorUserId: _propTypes2.default.string,\n waitForIframeLoad: _propTypes2.default.bool,\n showMenubar: _propTypes2.default.bool,\n // Should the AppTile render itself\n show: _propTypes2.default.bool,\n // Optional onEditClickHandler (overrides default behaviour)\n onEditClick: _propTypes2.default.func,\n // Optional onDeleteClickHandler (overrides default behaviour)\n onDeleteClick: _propTypes2.default.func,\n // Optional onMinimiseClickHandler\n onMinimiseClick: _propTypes2.default.func,\n // Optionally hide the tile title\n showTitle: _propTypes2.default.bool,\n // Optionally hide the tile minimise icon\n showMinimise: _propTypes2.default.bool,\n // Optionally handle minimise button pointer events (default false)\n handleMinimisePointerEvents: _propTypes2.default.bool,\n // Optionally hide the delete icon\n showDelete: _propTypes2.default.bool,\n // Optionally hide the popout widget icon\n showPopout: _propTypes2.default.bool,\n // Optionally show the reload widget icon\n // This is not currently intended for use with production widgets. However\n // it can be useful when developing persistent widgets in order to avoid\n // having to reload all of riot to get new widget content.\n showReload: _propTypes2.default.bool,\n // Widget capabilities to allow by default (without user confirmation)\n // NOTE -- Use with caution. This is intended to aid better integration / UX\n // basic widget capabilities, e.g. injecting sticker message events.\n whitelistCapabilities: _propTypes2.default.array,\n // Optional function to be called on widget capability request\n // Called with an array of the requested capabilities\n onCapabilityRequest: _propTypes2.default.func,\n // Is this an instance of a user widget\n userWidget: _propTypes2.default.bool\n};\n\nAppTile.defaultProps = {\n url: \"\",\n waitForIframeLoad: true,\n showMenubar: true,\n showTitle: true,\n showMinimise: true,\n showDelete: true,\n showPopout: true,\n showReload: false,\n handleMinimisePointerEvents: false,\n whitelistCapabilities: [],\n userWidget: false,\n miniMode: false\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=AppTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.generateCompletionDomId = undefined;\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _get2 = require('babel-runtime/helpers/get');\n\nvar _get3 = _interopRequireDefault(_get2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _flatMap = require('lodash/flatMap');\n\nvar _flatMap2 = _interopRequireDefault(_flatMap);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _Autocompleter = require('../../../autocomplete/Autocompleter');\n\nvar _Autocompleter2 = _interopRequireDefault(_Autocompleter);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar COMPOSER_SELECTED = 0; /*\n Copyright 2016 Aviral Dasgupta\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar generateCompletionDomId = exports.generateCompletionDomId = function generateCompletionDomId(number) {\n return 'mx_Autocomplete_Completion_' + number;\n};\n\nvar Autocomplete = function (_React$Component) {\n (0, _inherits3.default)(Autocomplete, _React$Component);\n\n function Autocomplete(props) {\n (0, _classCallCheck3.default)(this, Autocomplete);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (Autocomplete.__proto__ || (0, _getPrototypeOf2.default)(Autocomplete)).call(this, props));\n\n _this.autocompleter = new _Autocompleter2.default(props.room);\n _this.completionPromise = null;\n _this.hide = _this.hide.bind(_this);\n _this.onCompletionClicked = _this.onCompletionClicked.bind(_this);\n\n _this.state = {\n // list of completionResults, each containing completions\n completions: [],\n\n // array of completions, so we can look up current selection by offset quickly\n completionList: [],\n\n // how far down the completion list we are (THIS IS 1-INDEXED!)\n selectionOffset: COMPOSER_SELECTED,\n\n // whether we should show completions if they're available\n shouldShowCompletions: true,\n\n hide: false,\n\n forceComplete: false\n };\n return _this;\n }\n\n (0, _createClass3.default)(Autocomplete, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this._applyNewProps();\n }\n }, {\n key: '_applyNewProps',\n value: function _applyNewProps(oldQuery, oldRoom) {\n if (oldRoom && this.props.room.roomId !== oldRoom.roomId) {\n this.autocompleter.destroy();\n this.autocompleter = new _Autocompleter2.default(this.props.room);\n }\n\n // Query hasn't changed so don't try to complete it\n if (oldQuery === this.props.query) {\n return;\n }\n\n this.complete(this.props.query, this.props.selection);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.autocompleter.destroy();\n }\n }, {\n key: 'complete',\n value: function complete(query, selection) {\n var _this2 = this;\n\n this.queryRequested = query;\n if (this.debounceCompletionsRequest) {\n clearTimeout(this.debounceCompletionsRequest);\n }\n if (query === \"\") {\n this.setState({\n // Clear displayed completions\n completions: [],\n completionList: [],\n // Reset selected completion\n selectionOffset: COMPOSER_SELECTED,\n // Hide the autocomplete box\n hide: true\n });\n return _bluebird2.default.resolve(null);\n }\n var autocompleteDelay = _SettingsStore2.default.getValue(\"autocompleteDelay\");\n\n // Don't debounce if we are already showing completions\n if (this.state.completions.length > 0 || this.state.forceComplete) {\n autocompleteDelay = 0;\n }\n\n var deferred = _bluebird2.default.defer();\n this.debounceCompletionsRequest = setTimeout(function () {\n _this2.processQuery(query, selection).then(function () {\n deferred.resolve();\n });\n }, autocompleteDelay);\n return deferred.promise;\n }\n }, {\n key: 'processQuery',\n value: function processQuery(query, selection) {\n var _this3 = this;\n\n return this.autocompleter.getCompletions(query, selection, this.state.forceComplete).then(function (completions) {\n // Only ever process the completions for the most recent query being processed\n if (query !== _this3.queryRequested) {\n return;\n }\n _this3.processCompletions(completions);\n });\n }\n }, {\n key: 'processCompletions',\n value: function processCompletions(completions) {\n var completionList = (0, _flatMap2.default)(completions, function (provider) {\n return provider.completions;\n });\n\n // Reset selection when completion list becomes empty.\n var selectionOffset = COMPOSER_SELECTED;\n if (completionList.length > 0) {\n /* If the currently selected completion is still in the completion list,\n try to find it and jump to it. If not, select composer.\n */\n var currentSelection = this.state.selectionOffset === 0 ? null : this.state.completionList[this.state.selectionOffset - 1].completion;\n selectionOffset = completionList.findIndex(function (completion) {\n return completion.completion === currentSelection;\n });\n if (selectionOffset === -1) {\n selectionOffset = COMPOSER_SELECTED;\n } else {\n selectionOffset++; // selectionOffset is 1-indexed!\n }\n }\n\n var hide = this.state.hide;\n // If `completion.command.command` is truthy, then a provider has matched with the query\n var anyMatches = completions.some(function (completion) {\n return !!completion.command.command;\n });\n hide = !anyMatches;\n\n this.setState({\n completions: completions,\n completionList: completionList,\n selectionOffset: selectionOffset,\n hide: hide,\n // Force complete is turned off each time since we can't edit the query in that case\n forceComplete: false\n });\n }\n }, {\n key: 'hasSelection',\n value: function hasSelection() {\n return this.countCompletions() > 0 && this.state.selectionOffset !== 0;\n }\n }, {\n key: 'countCompletions',\n value: function countCompletions() {\n return this.state.completionList.length;\n }\n\n // called from MessageComposerInput\n\n }, {\n key: 'moveSelection',\n value: function moveSelection(delta) {\n var completionCount = this.countCompletions();\n if (completionCount === 0) return; // there are no items to move the selection through\n\n // Note: selectionOffset 0 represents the unsubstituted text, while 1 means first pill selected\n var index = (this.state.selectionOffset + delta + completionCount + 1) % (completionCount + 1);\n this.setSelection(index);\n }\n }, {\n key: 'onEscape',\n value: function onEscape(e) {\n var completionCount = this.countCompletions();\n if (completionCount === 0) {\n // autocomplete is already empty, so don't preventDefault\n return;\n }\n\n e.preventDefault();\n\n // selectionOffset = 0, so we don't end up completing when autocomplete is hidden\n this.hide();\n }\n }, {\n key: 'hide',\n value: function hide() {\n this.setState({ hide: true, selectionOffset: 0, completions: [], completionList: [] });\n }\n }, {\n key: 'forceComplete',\n value: function forceComplete() {\n var _this4 = this;\n\n var done = _bluebird2.default.defer();\n this.setState({\n forceComplete: true,\n hide: false\n }, function () {\n _this4.complete(_this4.props.query, _this4.props.selection).then(function () {\n done.resolve(_this4.countCompletions());\n });\n });\n return done.promise;\n }\n }, {\n key: 'onCompletionClicked',\n value: function onCompletionClicked(selectionOffset) {\n if (this.countCompletions() === 0 || selectionOffset === COMPOSER_SELECTED) {\n return false;\n }\n\n this.props.onConfirm(this.state.completionList[selectionOffset - 1]);\n this.hide();\n\n return true;\n }\n }, {\n key: 'setSelection',\n value: function setSelection(selectionOffset) {\n this.setState({ selectionOffset: selectionOffset, hide: false });\n if (this.props.onSelectionChange) {\n this.props.onSelectionChange(this.state.completionList[selectionOffset - 1], selectionOffset - 1);\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n this._applyNewProps(prevProps.query, prevProps.room);\n // this is the selected completion, so scroll it into view if needed\n var selectedCompletion = this.refs['completion' + this.state.selectionOffset];\n if (selectedCompletion && this.container) {\n var domNode = _reactDom2.default.findDOMNode(selectedCompletion);\n var offsetTop = domNode && domNode.offsetTop;\n if (offsetTop > this.container.scrollTop + this.container.offsetHeight || offsetTop < this.container.scrollTop) {\n this.container.scrollTop = offsetTop - this.container.offsetTop;\n }\n }\n }\n }, {\n key: 'setState',\n value: function setState(state, func) {\n (0, _get3.default)(Autocomplete.prototype.__proto__ || (0, _getPrototypeOf2.default)(Autocomplete.prototype), 'setState', this).call(this, state, func);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this5 = this;\n\n var position = 1;\n var renderedCompletions = this.state.completions.map(function (completionResult, i) {\n var completions = completionResult.completions.map(function (completion, i) {\n var selected = position === _this5.state.selectionOffset;\n var className = (0, _classnames2.default)('mx_Autocomplete_Completion', { selected: selected });\n var componentPosition = position;\n position++;\n\n var onClick = function onClick() {\n _this5.onCompletionClicked(componentPosition);\n };\n\n return _react2.default.cloneElement(completion.component, {\n \"key\": i,\n \"ref\": 'completion' + componentPosition,\n \"id\": generateCompletionDomId(componentPosition - 1), // 0 index the completion IDs\n className: className,\n onClick: onClick,\n \"aria-selected\": selected\n });\n });\n\n return completions.length > 0 ? _react2.default.createElement(\n 'div',\n { key: i, className: 'mx_Autocomplete_ProviderSection' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Autocomplete_provider_name' },\n completionResult.provider.getName()\n ),\n completionResult.provider.renderCompletions(completions)\n ) : null;\n }).filter(function (completion) {\n return !!completion;\n });\n\n return !this.state.hide && renderedCompletions.length > 0 ? _react2.default.createElement(\n 'div',\n { className: 'mx_Autocomplete', ref: function ref(e) {\n return _this5.container = e;\n } },\n renderedCompletions\n ) : null;\n }\n }]);\n return Autocomplete;\n}(_react2.default.Component);\n\nexports.default = Autocomplete;\n\n\nAutocomplete.propTypes = {\n // the query string for which to show autocomplete suggestions\n query: _propTypes2.default.string.isRequired,\n\n // method invoked with range and text content when completion is confirmed\n onConfirm: _propTypes2.default.func.isRequired,\n\n // method invoked when selected (if any) completion changes\n onSelectionChange: _propTypes2.default.func,\n\n // The room in which we're autocompleting\n room: _propTypes2.default.instanceOf(_matrixJsSdk.Room)\n};\n//# sourceMappingURL=Autocomplete.js.map","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","module.exports = /[:=](?:\\'(?:\\-[\\(\\)DO\\[\\]o\\{\\}]|[\\(\\)DO\\[\\]o\\{\\}])|\\{>|\\-[#\\$&\\(-\\*\\/3<>-@B-EJLOPSXZ-\\]cjlopsxz-\\}]|[#\\$&\\(-\\*\\/3<>-@B-EJLOPSXZ-\\]cjlopsxz\\|\\}])|[Oo][:=](?:\\-[\\)\\]\\}]|[\\)\\]\\}])|>[:=](?:\\-[\\(\\)\\/\\[-\\]\\{\\}]|[\\(\\)\\/\\[-\\]\\{\\}])|>0(?:\\-[\\)\\]\\}]|[\\)\\]\\}])|x(?:\\-[\\(D\\[op\\{]|[\\(D\\[op\\{])|8(?:\\-[#\\)D\\]\\}]|[#\\)D\\]\\}])|D(?:\\-[:=Xx]|[:=Xx])|%(?:\\-[\\(\\[\\{]|[\\(\\[\\{])|;(?:\\-[\\)P\\]p\\}]|[\\)P\\]p\\}])|<\\/?3|\\\\[Mm]\\/|X(?:\\-[\\(DOP\\[\\{]|[\\(DOP\\[\\{])|[:=]\\{/;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _model = require('../../../editor/model');\n\nvar _model2 = _interopRequireDefault(_model);\n\nvar _history = require('../../../editor/history');\n\nvar _history2 = _interopRequireDefault(_history);\n\nvar _caret2 = require('../../../editor/caret');\n\nvar _operations = require('../../../editor/operations');\n\nvar _dom = require('../../../editor/dom');\n\nvar _Autocomplete = require('../rooms/Autocomplete');\n\nvar _Autocomplete2 = _interopRequireDefault(_Autocomplete);\n\nvar _parts2 = require('../../../editor/parts');\n\nvar _deserialize = require('../../../editor/deserialize');\n\nvar _render = require('../../../editor/render');\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _TypingStore = require('../../../stores/TypingStore');\n\nvar _TypingStore2 = _interopRequireDefault(_TypingStore);\n\nvar _compact = require('emojibase-data/en/compact.json');\n\nvar _compact2 = _interopRequireDefault(_compact);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _emoticon = require('emojibase-regex/emoticon');\n\nvar _emoticon2 = _interopRequireDefault(_emoticon);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 New Vector Ltd\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar REGEX_EMOTICON_WHITESPACE = new RegExp('(?:^|\\\\s)(' + _emoticon2.default.source + ')\\\\s$');\n\nvar IS_MAC = navigator.platform.indexOf(\"Mac\") !== -1;\n\nfunction ctrlShortcutLabel(key) {\n return (IS_MAC ? \"⌘\" : \"Ctrl\") + \"+\" + key;\n}\n\nfunction cloneSelection(selection) {\n return {\n anchorNode: selection.anchorNode,\n anchorOffset: selection.anchorOffset,\n focusNode: selection.focusNode,\n focusOffset: selection.focusOffset,\n isCollapsed: selection.isCollapsed,\n rangeCount: selection.rangeCount,\n type: selection.type\n };\n}\n\nfunction selectionEquals(a, b) {\n return a.anchorNode === b.anchorNode && a.anchorOffset === b.anchorOffset && a.focusNode === b.focusNode && a.focusOffset === b.focusOffset && a.isCollapsed === b.isCollapsed && a.rangeCount === b.rangeCount && a.type === b.type;\n}\n\nvar BasicMessageEditor = function (_React$Component) {\n (0, _inherits3.default)(BasicMessageEditor, _React$Component);\n\n function BasicMessageEditor(props, context) {\n (0, _classCallCheck3.default)(this, BasicMessageEditor);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (BasicMessageEditor.__proto__ || (0, _getPrototypeOf2.default)(BasicMessageEditor)).call(this, props, context));\n\n _this._replaceEmoticon = function (caretPosition, inputType, diff) {\n var model = _this.props.model;\n\n var range = model.startRange(caretPosition);\n // expand range max 8 characters backwards from caretPosition,\n // as a space to look for an emoticon\n var n = 8;\n range.expandBackwardsWhile(function (index, offset) {\n var part = model.parts[index];\n n -= 1;\n return n >= 0 && (part.type === \"plain\" || part.type === \"pill-candidate\");\n });\n var emoticonMatch = REGEX_EMOTICON_WHITESPACE.exec(range.text);\n if (emoticonMatch) {\n var query = emoticonMatch[1].toLowerCase().replace(\"-\", \"\");\n var data = _compact2.default.find(function (e) {\n return e.emoticon ? e.emoticon.toLowerCase() === query : false;\n });\n if (data) {\n var partCreator = model.partCreator;\n\n var hasPrecedingSpace = emoticonMatch[0][0] === \" \";\n // we need the range to only comprise of the emoticon\n // because we'll replace the whole range with an emoji,\n // so move the start forward to the start of the emoticon.\n // Take + 1 because index is reported without the possible preceding space.\n range.moveStart(emoticonMatch.index + (hasPrecedingSpace ? 1 : 0));\n // this returns the amount of added/removed characters during the replace\n // so the caret position can be adjusted.\n return range.replace([partCreator.plain(data.unicode + \" \")]);\n }\n }\n };\n\n _this._updateEditorState = function (selection, inputType, diff) {\n (0, _render.renderModel)(_this._editorRef, _this.props.model);\n if (selection) {\n // set the caret/selection\n try {\n (0, _caret2.setSelection)(_this._editorRef, _this.props.model, selection);\n } catch (err) {\n console.error(err);\n }\n // if caret selection is a range, take the end position\n var position = selection.end || selection;\n _this._setLastCaretFromPosition(position);\n }\n if (_this.props.placeholder) {\n var isEmpty = _this.props.model.isEmpty;\n\n if (isEmpty) {\n _this._showPlaceholder();\n } else {\n _this._hidePlaceholder();\n }\n }\n _this.setState({ autoComplete: _this.props.model.autoComplete });\n _this.historyManager.tryPush(_this.props.model, selection, inputType, diff);\n _TypingStore2.default.sharedInstance().setSelfTyping(_this.props.room.roomId, !_this.props.model.isEmpty);\n\n if (_this.props.onChange) {\n _this.props.onChange();\n }\n };\n\n _this._onCompositionStart = function (event) {\n _this._isIMEComposing = true;\n // even if the model is empty, the composition text shouldn't be mixed with the placeholder\n _this._hidePlaceholder();\n };\n\n _this._onCompositionEnd = function (event) {\n _this._isIMEComposing = false;\n // some browsers (Chrome) don't fire an input event after ending a composition,\n // so trigger a model update after the composition is done by calling the input handler.\n\n // however, modifying the DOM (caused by the editor model update) from the compositionend handler seems\n // to confuse the IME in Chrome, likely causing https://github.com/vector-im/riot-web/issues/10913 ,\n // so we do it async\n\n // however, doing this async seems to break things in Safari for some reason, so browser sniff.\n\n var ua = navigator.userAgent.toLowerCase();\n var isSafari = ua.includes('safari/') && !ua.includes('chrome/');\n\n if (isSafari) {\n _this._onInput({ inputType: \"insertCompositionText\" });\n } else {\n setTimeout(function () {\n _this._onInput({ inputType: \"insertCompositionText\" });\n }, 0);\n }\n };\n\n _this._onPaste = function (event) {\n var model = _this.props.model;\n var partCreator = model.partCreator;\n\n var text = event.clipboardData.getData(\"text/plain\");\n if (text) {\n _this._modifiedFlag = true;\n var range = (0, _dom.getRangeForSelection)(_this._editorRef, model, document.getSelection());\n var parts = (0, _deserialize.parsePlainTextMessage)(text, partCreator);\n (0, _operations.replaceRangeAndMoveCaret)(range, parts);\n event.preventDefault();\n }\n };\n\n _this._onInput = function (event) {\n // ignore any input while doing IME compositions\n if (_this._isIMEComposing) {\n return;\n }\n _this._modifiedFlag = true;\n var sel = document.getSelection();\n\n var _getCaretOffsetAndTex = (0, _dom.getCaretOffsetAndText)(_this._editorRef, sel),\n caret = _getCaretOffsetAndTex.caret,\n text = _getCaretOffsetAndTex.text;\n\n _this.props.model.update(text, event.inputType, caret);\n };\n\n _this._onBlur = function () {\n document.removeEventListener(\"selectionchange\", _this._onSelectionChange);\n };\n\n _this._onFocus = function () {\n document.addEventListener(\"selectionchange\", _this._onSelectionChange);\n // force to recalculate\n _this._lastSelection = null;\n _this._refreshLastCaretIfNeeded();\n };\n\n _this._onSelectionChange = function () {\n _this._refreshLastCaretIfNeeded();\n var selection = document.getSelection();\n if (_this._hasTextSelected && selection.isCollapsed) {\n _this._hasTextSelected = false;\n if (_this._formatBarRef) {\n _this._formatBarRef.hide();\n }\n } else if (!selection.isCollapsed) {\n _this._hasTextSelected = true;\n if (_this._formatBarRef) {\n var selectionRect = selection.getRangeAt(0).getBoundingClientRect();\n _this._formatBarRef.showAt(selectionRect);\n }\n }\n };\n\n _this._onKeyDown = function (event) {\n var model = _this.props.model;\n var modKey = IS_MAC ? event.metaKey : event.ctrlKey;\n var handled = false;\n // format bold\n if (modKey && event.key === \"b\") {\n _this._onFormatAction(\"bold\");\n handled = true;\n // format italics\n } else if (modKey && event.key === \"i\") {\n _this._onFormatAction(\"italics\");\n handled = true;\n // format quote\n } else if (modKey && event.key === \">\") {\n _this._onFormatAction(\"quote\");\n handled = true;\n // undo\n } else if (modKey && event.key === \"z\") {\n if (_this.historyManager.canUndo()) {\n var _this$historyManager$ = _this.historyManager.undo(_this.props.model),\n parts = _this$historyManager$.parts,\n caret = _this$historyManager$.caret;\n // pass matching inputType so historyManager doesn't push echo\n // when invoked from rerender callback.\n\n\n model.reset(parts, caret, \"historyUndo\");\n }\n handled = true;\n // redo\n } else if (modKey && event.key === \"y\") {\n if (_this.historyManager.canRedo()) {\n var _this$historyManager$2 = _this.historyManager.redo(),\n _parts = _this$historyManager$2.parts,\n _caret = _this$historyManager$2.caret;\n // pass matching inputType so historyManager doesn't push echo\n // when invoked from rerender callback.\n\n\n model.reset(_parts, _caret, \"historyRedo\");\n }\n handled = true;\n // insert newline on Shift+Enter\n } else if (event.key === \"Enter\" && (event.shiftKey || IS_MAC && event.altKey)) {\n _this._insertText(\"\\n\");\n handled = true;\n // autocomplete or enter to send below shouldn't have any modifier keys pressed.\n } else {\n var metaOrAltPressed = event.metaKey || event.altKey;\n var modifierPressed = metaOrAltPressed || event.shiftKey;\n if (model.autoComplete && model.autoComplete.hasCompletions()) {\n var autoComplete = model.autoComplete;\n switch (event.key) {\n case \"ArrowUp\":\n if (!modifierPressed) {\n autoComplete.onUpArrow(event);\n handled = true;\n }\n break;\n case \"ArrowDown\":\n if (!modifierPressed) {\n autoComplete.onDownArrow(event);\n handled = true;\n }\n break;\n case \"Tab\":\n if (!metaOrAltPressed) {\n autoComplete.onTab(event);\n handled = true;\n }\n break;\n case \"Escape\":\n if (!modifierPressed) {\n autoComplete.onEscape(event);\n handled = true;\n }\n break;\n default:\n return; // don't preventDefault on anything else\n }\n } else if (event.key === \"Tab\") {\n _this._tabCompleteName();\n handled = true;\n }\n }\n if (handled) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n _this._onAutoCompleteConfirm = function (completion) {\n _this.props.model.autoComplete.onComponentConfirm(completion);\n };\n\n _this._onAutoCompleteSelectionChange = function (completion, completionIndex) {\n _this.props.model.autoComplete.onComponentSelectionChange(completion);\n _this.setState({ completionIndex: completionIndex });\n };\n\n _this._onFormatAction = function (action) {\n var range = (0, _dom.getRangeForSelection)(_this._editorRef, _this.props.model, document.getSelection());\n if (range.length === 0) {\n return;\n }\n _this.historyManager.ensureLastChangesPushed(_this.props.model);\n switch (action) {\n case \"bold\":\n (0, _operations.toggleInlineFormat)(range, \"**\");\n break;\n case \"italics\":\n (0, _operations.toggleInlineFormat)(range, \"_\");\n break;\n case \"strikethrough\":\n (0, _operations.toggleInlineFormat)(range, \"\", \"\");\n break;\n case \"code\":\n (0, _operations.formatRangeAsCode)(range);\n break;\n case \"quote\":\n (0, _operations.formatRangeAsQuote)(range);\n break;\n }\n };\n\n _this.state = {\n autoComplete: null\n };\n _this._editorRef = null;\n _this._autocompleteRef = null;\n _this._formatBarRef = null;\n _this._modifiedFlag = false;\n _this._isIMEComposing = false;\n _this._hasTextSelected = false;\n return _this;\n }\n\n (0, _createClass3.default)(BasicMessageEditor, [{\n key: '_showPlaceholder',\n value: function _showPlaceholder() {\n this._editorRef.style.setProperty(\"--placeholder\", '\\'' + this.props.placeholder + '\\'');\n this._editorRef.classList.add(\"mx_BasicMessageComposer_inputEmpty\");\n }\n }, {\n key: '_hidePlaceholder',\n value: function _hidePlaceholder() {\n this._editorRef.classList.remove(\"mx_BasicMessageComposer_inputEmpty\");\n this._editorRef.style.removeProperty(\"--placeholder\");\n }\n }, {\n key: 'isComposing',\n value: function isComposing(event) {\n // checking the event.isComposing flag just in case any browser out there\n // emits events related to the composition after compositionend\n // has been fired\n return !!(this._isIMEComposing || event.nativeEvent && event.nativeEvent.isComposing);\n }\n }, {\n key: '_insertText',\n value: function _insertText(textToInsert) {\n var inputType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"insertText\";\n\n var sel = document.getSelection();\n\n var _getCaretOffsetAndTex2 = (0, _dom.getCaretOffsetAndText)(this._editorRef, sel),\n caret = _getCaretOffsetAndTex2.caret,\n text = _getCaretOffsetAndTex2.text;\n\n var newText = text.substr(0, caret.offset) + textToInsert + text.substr(caret.offset);\n caret.offset += textToInsert.length;\n this.props.model.update(newText, inputType, caret);\n this._modifiedFlag = true;\n }\n\n // this is used later to see if we need to recalculate the caret\n // on selectionchange. If it is just a consequence of typing\n // we don't need to. But if the user is navigating the caret without input\n // we need to recalculate it, to be able to know where to insert content after\n // losing focus\n\n }, {\n key: '_setLastCaretFromPosition',\n value: function _setLastCaretFromPosition(position) {\n var model = this.props.model;\n\n this._isCaretAtEnd = position.isAtEnd(model);\n this._lastCaret = position.asOffset(model);\n this._lastSelection = cloneSelection(document.getSelection());\n }\n }, {\n key: '_refreshLastCaretIfNeeded',\n value: function _refreshLastCaretIfNeeded() {\n // XXX: needed when going up and down in editing messages ... not sure why yet\n // because the editors should stop doing this when when blurred ...\n // maybe it's on focus and the _editorRef isn't available yet or something.\n if (!this._editorRef) {\n return;\n }\n var selection = document.getSelection();\n if (!this._lastSelection || !selectionEquals(this._lastSelection, selection)) {\n this._lastSelection = cloneSelection(selection);\n\n var _getCaretOffsetAndTex3 = (0, _dom.getCaretOffsetAndText)(this._editorRef, selection),\n caret = _getCaretOffsetAndTex3.caret,\n text = _getCaretOffsetAndTex3.text;\n\n this._lastCaret = caret;\n this._isCaretAtEnd = caret.offset === text.length;\n }\n return this._lastCaret;\n }\n }, {\n key: 'clearUndoHistory',\n value: function clearUndoHistory() {\n this.historyManager.clear();\n }\n }, {\n key: 'getCaret',\n value: function getCaret() {\n return this._lastCaret;\n }\n }, {\n key: 'isSelectionCollapsed',\n value: function isSelectionCollapsed() {\n return !this._lastSelection || this._lastSelection.isCollapsed;\n }\n }, {\n key: 'isCaretAtStart',\n value: function isCaretAtStart() {\n return this.getCaret().offset === 0;\n }\n }, {\n key: 'isCaretAtEnd',\n value: function isCaretAtEnd() {\n return this._isCaretAtEnd;\n }\n }, {\n key: '_tabCompleteName',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var _this2 = this;\n\n var model, caret, position, range, partCreator;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n _context.next = 3;\n return (0, _bluebird.resolve)(new _promise2.default(function (resolve) {\n return _this2.setState({ showVisualBell: false }, resolve);\n }));\n\n case 3:\n model = this.props.model;\n caret = this.getCaret();\n position = model.positionForOffset(caret.offset, caret.atNodeEnd);\n range = model.startRange(position);\n\n range.expandBackwardsWhile(function (index, offset, part) {\n return part.text[offset] !== \" \" && (part.type === \"plain\" || part.type === \"pill-candidate\" || part.type === \"command\");\n });\n partCreator = model.partCreator;\n // await for auto-complete to be open\n\n _context.next = 11;\n return (0, _bluebird.resolve)(model.transform(function () {\n var addedLen = range.replace([partCreator.pillCandidate(range.text)]);\n return model.positionForOffset(caret.offset + addedLen, true);\n }));\n\n case 11:\n _context.next = 13;\n return (0, _bluebird.resolve)(model.autoComplete.onTab());\n\n case 13:\n if (!model.autoComplete.hasSelection()) {\n this.setState({ showVisualBell: true });\n model.autoComplete.close();\n }\n _context.next = 19;\n break;\n\n case 16:\n _context.prev = 16;\n _context.t0 = _context['catch'](0);\n\n console.error(_context.t0);\n\n case 19:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[0, 16]]);\n }));\n\n function _tabCompleteName() {\n return _ref.apply(this, arguments);\n }\n\n return _tabCompleteName;\n }()\n }, {\n key: 'getEditableRootNode',\n value: function getEditableRootNode() {\n return this._editorRef;\n }\n }, {\n key: 'isModified',\n value: function isModified() {\n return this._modifiedFlag;\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._editorRef.removeEventListener(\"input\", this._onInput, true);\n this._editorRef.removeEventListener(\"compositionstart\", this._onCompositionStart, true);\n this._editorRef.removeEventListener(\"compositionend\", this._onCompositionEnd, true);\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this3 = this;\n\n var model = this.props.model;\n model.setUpdateCallback(this._updateEditorState);\n if (_SettingsStore2.default.getValue('MessageComposerInput.autoReplaceEmoji')) {\n model.setTransformCallback(this._replaceEmoticon);\n }\n var partCreator = model.partCreator;\n // TODO: does this allow us to get rid of EditorStateTransfer?\n // not really, but we could not serialize the parts, and just change the autoCompleter\n partCreator.setAutoCompleteCreator((0, _parts2.autoCompleteCreator)(function () {\n return _this3._autocompleteRef;\n }, function (query) {\n return new _promise2.default(function (resolve) {\n return _this3.setState({ query: query }, resolve);\n });\n }));\n this.historyManager = new _history2.default(partCreator);\n // initial render of model\n this._updateEditorState(this._getInitialCaretPosition());\n // attach input listener by hand so React doesn't proxy the events,\n // as the proxied event doesn't support inputType, which we need.\n this._editorRef.addEventListener(\"input\", this._onInput, true);\n this._editorRef.addEventListener(\"compositionstart\", this._onCompositionStart, true);\n this._editorRef.addEventListener(\"compositionend\", this._onCompositionEnd, true);\n this._editorRef.focus();\n }\n }, {\n key: '_getInitialCaretPosition',\n value: function _getInitialCaretPosition() {\n var caretPosition = void 0;\n if (this.props.initialCaret) {\n // if restoring state from a previous editor,\n // restore caret position from the state\n var caret = this.props.initialCaret;\n caretPosition = this.props.model.positionForOffset(caret.offset, caret.atNodeEnd);\n } else {\n // otherwise, set it at the end\n caretPosition = this.props.model.getPositionAtEnd();\n }\n return caretPosition;\n }\n }, {\n key: 'render',\n value: function render() {\n var _this4 = this;\n\n var autoComplete = void 0;\n if (this.state.autoComplete) {\n var query = this.state.query;\n var queryLen = query.length;\n autoComplete = _react2.default.createElement(\n 'div',\n { className: 'mx_BasicMessageComposer_AutoCompleteWrapper' },\n _react2.default.createElement(_Autocomplete2.default, {\n ref: function ref(_ref2) {\n return _this4._autocompleteRef = _ref2;\n },\n query: query,\n onConfirm: this._onAutoCompleteConfirm,\n onSelectionChange: this._onAutoCompleteSelectionChange,\n selection: { beginning: true, end: queryLen, start: queryLen },\n room: this.props.room\n })\n );\n }\n var classes = (0, _classnames2.default)(\"mx_BasicMessageComposer\", {\n \"mx_BasicMessageComposer_input_error\": this.state.showVisualBell\n });\n\n var MessageComposerFormatBar = _index2.default.getComponent('rooms.MessageComposerFormatBar');\n var shortcuts = {\n bold: ctrlShortcutLabel(\"B\"),\n italics: ctrlShortcutLabel(\"I\"),\n quote: ctrlShortcutLabel(\">\")\n };\n\n var completionIndex = this.state.completionIndex;\n\n\n return _react2.default.createElement(\n 'div',\n { className: classes },\n autoComplete,\n _react2.default.createElement(MessageComposerFormatBar, { ref: function ref(_ref3) {\n return _this4._formatBarRef = _ref3;\n }, onAction: this._onFormatAction, shortcuts: shortcuts }),\n _react2.default.createElement('div', {\n className: 'mx_BasicMessageComposer_input',\n contentEditable: 'true',\n tabIndex: '1',\n onBlur: this._onBlur,\n onFocus: this._onFocus,\n onPaste: this._onPaste,\n onKeyDown: this._onKeyDown,\n ref: function ref(_ref4) {\n return _this4._editorRef = _ref4;\n },\n 'aria-label': this.props.label,\n role: 'textbox',\n 'aria-multiline': 'true',\n 'aria-autocomplete': 'both',\n 'aria-haspopup': 'listbox',\n 'aria-expanded': Boolean(this.state.autoComplete),\n 'aria-activedescendant': completionIndex >= 0 ? (0, _Autocomplete.generateCompletionDomId)(completionIndex) : undefined\n })\n );\n }\n }, {\n key: 'focus',\n value: function focus() {\n this._editorRef.focus();\n }\n }]);\n return BasicMessageEditor;\n}(_react2.default.Component);\n\nBasicMessageEditor.propTypes = {\n onChange: _propTypes2.default.func,\n model: _propTypes2.default.instanceOf(_model2.default).isRequired,\n room: _propTypes2.default.instanceOf(_matrixJsSdk.Room).isRequired,\n placeholder: _propTypes2.default.string,\n label: _propTypes2.default.string, // the aria label\n initialCaret: _propTypes2.default.object // See DocumentPosition in editor/model.js\n};\nexports.default = BasicMessageEditor;\nmodule.exports = exports['default'];\n//# sourceMappingURL=BasicMessageComposer.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _promise = require(\"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _isFinite = require(\"babel-runtime/core-js/number/is-finite\");\n\nvar _isFinite2 = _interopRequireDefault(_isFinite);\n\nvar _toConsumableArray2 = require(\"babel-runtime/helpers/toConsumableArray\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _diff2 = require(\"./diff\");\n\nvar _position = require(\"./position\");\n\nvar _position2 = _interopRequireDefault(_position);\n\nvar _range = require(\"./range\");\n\nvar _range2 = _interopRequireDefault(_range);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @callback ModelCallback\n * @param {DocumentPosition?} caretPosition the position where the caret should be position\n * @param {string?} inputType the inputType of the DOM input event\n * @param {object?} diff an object with `removed` and `added` strings\n */\n\n/**\n* @callback TransformCallback\n* @param {DocumentPosition?} caretPosition the position where the caret should be position\n* @param {string?} inputType the inputType of the DOM input event\n* @param {object?} diff an object with `removed` and `added` strings\n* @return {Number?} addedLen how many characters were added/removed (-) before the caret during the transformation step.\n* This is used to adjust the caret position.\n*/\n\n/**\n * @callback ManualTransformCallback\n * @return the caret position\n */\n\nvar EditorModel = function () {\n function EditorModel(parts, partCreator) {\n var _this = this;\n\n var updateCallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n (0, _classCallCheck3.default)(this, EditorModel);\n\n this._onAutoComplete = function (_ref) {\n var replaceParts = _ref.replaceParts,\n close = _ref.close;\n\n var pos = void 0;\n if (replaceParts) {\n var _parts;\n\n (_parts = _this._parts).splice.apply(_parts, [_this._autoCompletePartIdx, _this._autoCompletePartCount].concat((0, _toConsumableArray3.default)(replaceParts)));\n _this._autoCompletePartCount = replaceParts.length;\n var lastPart = replaceParts[replaceParts.length - 1];\n var lastPartIndex = _this._autoCompletePartIdx + replaceParts.length - 1;\n pos = new _position2.default(lastPartIndex, lastPart.text.length);\n }\n if (close) {\n _this._autoComplete = null;\n _this._autoCompletePartIdx = null;\n _this._autoCompletePartCount = 0;\n }\n // rerender even if editor contents didn't change\n // to make sure the MessageEditor checks\n // model.autoComplete being empty and closes it\n _this._updateCallback(pos);\n };\n\n this._parts = parts;\n this._partCreator = partCreator;\n this._activePartIdx = null;\n this._autoComplete = null;\n this._autoCompletePartIdx = null;\n this._autoCompletePartCount = 0;\n this._transformCallback = null;\n this.setUpdateCallback(updateCallback);\n }\n\n /**\n * Set a callback for the transformation step.\n * While processing an update, right before calling the update callback,\n * a transform callback can be called, which serves to do modifications\n * on the model that can span multiple parts. Also see `startRange()`.\n * @param {TransformCallback} transformCallback\n */\n\n\n (0, _createClass3.default)(EditorModel, [{\n key: \"setTransformCallback\",\n value: function setTransformCallback(transformCallback) {\n this._transformCallback = transformCallback;\n }\n\n /**\n * Set a callback for rerendering the model after it has been updated.\n * @param {ModelCallback} updateCallback\n */\n\n }, {\n key: \"setUpdateCallback\",\n value: function setUpdateCallback(updateCallback) {\n this._updateCallback = updateCallback;\n }\n }, {\n key: \"clone\",\n value: function clone() {\n return new EditorModel(this._parts, this._partCreator, this._updateCallback);\n }\n }, {\n key: \"_insertPart\",\n value: function _insertPart(index, part) {\n this._parts.splice(index, 0, part);\n if (this._activePartIdx >= index) {\n ++this._activePartIdx;\n }\n if (this._autoCompletePartIdx >= index) {\n ++this._autoCompletePartIdx;\n }\n }\n }, {\n key: \"_removePart\",\n value: function _removePart(index) {\n this._parts.splice(index, 1);\n if (index === this._activePartIdx) {\n this._activePartIdx = null;\n } else if (this._activePartIdx > index) {\n --this._activePartIdx;\n }\n if (index === this._autoCompletePartIdx) {\n this._autoCompletePartIdx = null;\n } else if (this._autoCompletePartIdx > index) {\n --this._autoCompletePartIdx;\n }\n }\n }, {\n key: \"_replacePart\",\n value: function _replacePart(index, part) {\n this._parts.splice(index, 1, part);\n }\n }, {\n key: \"getPositionAtEnd\",\n value: function getPositionAtEnd() {\n if (this._parts.length) {\n var index = this._parts.length - 1;\n var part = this._parts[index];\n return new _position2.default(index, part.text.length);\n } else {\n // part index -1, as there are no parts to point at\n return new _position2.default(-1, 0);\n }\n }\n }, {\n key: \"serializeParts\",\n value: function serializeParts() {\n return this._parts.map(function (p) {\n return p.serialize();\n });\n }\n }, {\n key: \"_diff\",\n value: function _diff(newValue, inputType, caret) {\n var previousValue = this.parts.reduce(function (text, p) {\n return text + p.text;\n }, \"\");\n // can't use caret position with drag and drop\n if (inputType === \"deleteByDrag\") {\n return (0, _diff2.diffDeletion)(previousValue, newValue);\n } else {\n return (0, _diff2.diffAtCaret)(previousValue, newValue, caret.offset);\n }\n }\n }, {\n key: \"reset\",\n value: function reset(serializedParts, caret, inputType) {\n var _this2 = this;\n\n this._parts = serializedParts.map(function (p) {\n return _this2._partCreator.deserializePart(p);\n });\n if (!caret) {\n caret = this.getPositionAtEnd();\n }\n // close auto complete if open\n // this would happen when clearing the composer after sending\n // a message with the autocomplete still open\n if (this._autoComplete) {\n this._autoComplete = null;\n this._autoCompletePartIdx = null;\n }\n this._updateCallback(caret, inputType);\n }\n\n /**\n * Inserts the given parts at the given position.\n * Should be run inside a `model.transform()` callback.\n * @param {Part[]} parts the parts to replace the range with\n * @param {DocumentPosition} position the position to start inserting at\n * @return {Number} the amount of characters added\n */\n\n }, {\n key: \"insert\",\n value: function insert(parts, position) {\n var insertIndex = this._splitAt(position);\n var newTextLength = 0;\n for (var i = 0; i < parts.length; ++i) {\n var part = parts[i];\n newTextLength += part.text.length;\n this._insertPart(insertIndex + i, part);\n }\n return newTextLength;\n }\n }, {\n key: \"update\",\n value: function update(newValue, inputType, caret) {\n var diff = this._diff(newValue, inputType, caret);\n var position = this.positionForOffset(diff.at, caret.atNodeEnd);\n var removedOffsetDecrease = 0;\n if (diff.removed) {\n removedOffsetDecrease = this.removeText(position, diff.removed.length);\n }\n var addedLen = 0;\n if (diff.added) {\n addedLen = this._addText(position, diff.added, inputType);\n }\n this._mergeAdjacentParts();\n var caretOffset = diff.at - removedOffsetDecrease + addedLen;\n var newPosition = this.positionForOffset(caretOffset, true);\n var canOpenAutoComplete = inputType !== \"insertFromPaste\" && inputType !== \"insertFromDrop\";\n var acPromise = this._setActivePart(newPosition, canOpenAutoComplete);\n if (this._transformCallback) {\n var transformAddedLen = this._transform(newPosition, inputType, diff);\n newPosition = this.positionForOffset(caretOffset + transformAddedLen, true);\n }\n this._updateCallback(newPosition, inputType, diff);\n return acPromise;\n }\n }, {\n key: \"_transform\",\n value: function _transform(newPosition, inputType, diff) {\n var result = this._transformCallback(newPosition, inputType, diff);\n return (0, _isFinite2.default)(result) ? result : 0;\n }\n }, {\n key: \"_setActivePart\",\n value: function _setActivePart(pos, canOpenAutoComplete) {\n var index = pos.index;\n\n var part = this._parts[index];\n if (part) {\n if (index !== this._activePartIdx) {\n this._activePartIdx = index;\n if (canOpenAutoComplete && this._activePartIdx !== this._autoCompletePartIdx) {\n // else try to create one\n var ac = part.createAutoComplete(this._onAutoComplete);\n if (ac) {\n // make sure that react picks up the difference between both acs\n this._autoComplete = ac;\n this._autoCompletePartIdx = index;\n this._autoCompletePartCount = 1;\n }\n }\n }\n // not _autoComplete, only there if active part is autocomplete part\n if (this.autoComplete) {\n return this.autoComplete.onPartUpdate(part, pos);\n }\n } else {\n this._activePartIdx = null;\n this._autoComplete = null;\n this._autoCompletePartIdx = null;\n this._autoCompletePartCount = 0;\n }\n return _promise2.default.resolve();\n }\n }, {\n key: \"_mergeAdjacentParts\",\n value: function _mergeAdjacentParts() {\n var prevPart = void 0;\n for (var i = 0; i < this._parts.length; ++i) {\n var part = this._parts[i];\n var isEmpty = !part.text.length;\n var isMerged = !isEmpty && prevPart && prevPart.merge(part);\n if (isEmpty || isMerged) {\n // remove empty or merged part\n part = prevPart;\n this._removePart(i);\n //repeat this index, as it's removed now\n --i;\n }\n prevPart = part;\n }\n }\n\n /**\n * removes `len` amount of characters at `pos`.\n * @param {Object} pos\n * @param {Number} len\n * @return {Number} how many characters before pos were also removed,\n * usually because of non-editable parts that can only be removed in their entirety.\n */\n\n }, {\n key: \"removeText\",\n value: function removeText(pos, len) {\n var index = pos.index,\n offset = pos.offset;\n\n var removedOffsetDecrease = 0;\n while (len > 0) {\n // part might be undefined here\n var part = this._parts[index];\n var amount = Math.min(len, part.text.length - offset);\n // don't allow 0 amount deletions\n if (amount) {\n if (part.canEdit) {\n var replaceWith = part.remove(offset, amount);\n if (typeof replaceWith === \"string\") {\n this._replacePart(index, this._partCreator.createDefaultPart(replaceWith));\n }\n part = this._parts[index];\n // remove empty part\n if (!part.text.length) {\n this._removePart(index);\n } else {\n index += 1;\n }\n } else {\n removedOffsetDecrease += offset;\n this._removePart(index);\n }\n } else {\n index += 1;\n }\n len -= amount;\n offset = 0;\n }\n return removedOffsetDecrease;\n }\n // return part index where insertion will insert between at offset\n\n }, {\n key: \"_splitAt\",\n value: function _splitAt(pos) {\n if (pos.index === -1) {\n return 0;\n }\n if (pos.offset === 0) {\n return pos.index;\n }\n var part = this._parts[pos.index];\n if (pos.offset >= part.text.length) {\n return pos.index + 1;\n }\n\n var secondPart = part.split(pos.offset);\n this._insertPart(pos.index + 1, secondPart);\n return pos.index + 1;\n }\n\n /**\n * inserts `str` into the model at `pos`.\n * @param {Object} pos\n * @param {string} str\n * @param {string} inputType the source of the input, see html InputEvent.inputType\n * @param {bool} options.validate Whether characters will be validated by the part.\n * Validating allows the inserted text to be parsed according to the part rules.\n * @return {Number} how far from position (in characters) the insertion ended.\n * This can be more than the length of `str` when crossing non-editable parts, which are skipped.\n */\n\n }, {\n key: \"_addText\",\n value: function _addText(pos, str, inputType) {\n var index = pos.index;\n var offset = pos.offset;\n\n var addLen = str.length;\n var part = this._parts[index];\n if (part) {\n if (part.canEdit) {\n if (part.validateAndInsert(offset, str, inputType)) {\n str = null;\n } else {\n var splitPart = part.split(offset);\n index += 1;\n this._insertPart(index, splitPart);\n }\n } else if (offset !== 0) {\n // not-editable part, caret is not at start,\n // so insert str after this part\n addLen += part.text.length - offset;\n index += 1;\n }\n } else if (index < 0) {\n // if position was not found (index: -1, as happens for empty editor)\n // reset it to insert as first part\n index = 0;\n }\n while (str) {\n var newPart = this._partCreator.createPartForInput(str, index, inputType);\n str = newPart.appendUntilRejected(str, inputType);\n this._insertPart(index, newPart);\n index += 1;\n }\n return addLen;\n }\n }, {\n key: \"positionForOffset\",\n value: function positionForOffset(totalOffset, atPartEnd) {\n var currentOffset = 0;\n var index = this._parts.findIndex(function (part) {\n var partLen = part.text.length;\n if (atPartEnd && currentOffset + partLen >= totalOffset || !atPartEnd && currentOffset + partLen > totalOffset) {\n return true;\n }\n currentOffset += partLen;\n return false;\n });\n if (index === -1) {\n return this.getPositionAtEnd();\n } else {\n return new _position2.default(index, totalOffset - currentOffset);\n }\n }\n\n /**\n * Starts a range, which can span across multiple parts, to find and replace text.\n * @param {DocumentPosition} positionA a boundary of the range\n * @param {DocumentPosition?} positionB the other boundary of the range, optional\n * @return {Range}\n */\n\n }, {\n key: \"startRange\",\n value: function startRange(positionA) {\n var positionB = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : positionA;\n\n return new _range2.default(this, positionA, positionB);\n }\n\n // called from Range.replace\n\n }, {\n key: \"_replaceRange\",\n value: function _replaceRange(startPosition, endPosition, parts) {\n // convert end position to offset, so it is independent of how the document is split into parts\n // which we'll change when splitting up at the start position\n var endOffset = endPosition.asOffset(this);\n var newStartPartIndex = this._splitAt(startPosition);\n // convert it back to position once split at start\n endPosition = endOffset.asPosition(this);\n var newEndPartIndex = this._splitAt(endPosition);\n for (var i = newEndPartIndex - 1; i >= newStartPartIndex; --i) {\n this._removePart(i);\n }\n var insertIdx = newStartPartIndex;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(parts), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var part = _step.value;\n\n this._insertPart(insertIdx, part);\n insertIdx += 1;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n this._mergeAdjacentParts();\n }\n\n /**\n * Performs a transformation not part of an update cycle.\n * Modifying the model should only happen inside a transform call if not part of an update call.\n * @param {ManualTransformCallback} callback to run the transformations in\n * @return {Promise} a promise when auto-complete (if applicable) is done updating\n */\n\n }, {\n key: \"transform\",\n value: function transform(callback) {\n var pos = callback();\n var acPromise = null;\n if (!(pos instanceof _range2.default)) {\n acPromise = this._setActivePart(pos, true);\n } else {\n acPromise = _promise2.default.resolve();\n }\n this._updateCallback(pos);\n return acPromise;\n }\n }, {\n key: \"partCreator\",\n get: function get() {\n return this._partCreator;\n }\n }, {\n key: \"isEmpty\",\n get: function get() {\n return this._parts.reduce(function (len, part) {\n return len + part.text.length;\n }, 0) === 0;\n }\n }, {\n key: \"parts\",\n get: function get() {\n return this._parts;\n }\n }, {\n key: \"autoComplete\",\n get: function get() {\n if (this._activePartIdx === this._autoCompletePartIdx) {\n return this._autoComplete;\n }\n return null;\n }\n }]);\n return EditorModel;\n}(); /*\n Copyright 2019 New Vector Ltd\n Copyright 2019 The Matrix.org Foundation C.I.C.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = EditorModel;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=model.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CARET_NODE_CHAR = undefined;\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nexports.needsCaretNodeBefore = needsCaretNodeBefore;\nexports.needsCaretNodeAfter = needsCaretNodeAfter;\nexports.isCaretNode = isCaretNode;\nexports.renderModel = renderModel;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 New Vector Ltd\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction needsCaretNodeBefore(part, prevPart) {\n var isFirst = !prevPart || prevPart.type === \"newline\";\n return !part.canEdit && (isFirst || !prevPart.canEdit);\n}\n\nfunction needsCaretNodeAfter(part, isLastOfLine) {\n return !part.canEdit && isLastOfLine;\n}\n\nfunction insertAfter(node, nodeToInsert) {\n var next = node.nextSibling;\n if (next) {\n node.parentElement.insertBefore(nodeToInsert, next);\n } else {\n node.parentElement.appendChild(nodeToInsert);\n }\n}\n\n// Use a BOM marker for caret nodes.\n// On a first test, they seem to be filtered out when copying text out of the editor,\n// but this could be platform dependent.\n// As a precautionary measure, I chose the character that slate also uses.\nvar CARET_NODE_CHAR = exports.CARET_NODE_CHAR = \"\\uFEFF\";\n// a caret node is a node that allows the caret to be placed\n// where otherwise it wouldn't be possible\n// (e.g. next to a pill span without adjacent text node)\nfunction createCaretNode() {\n var span = document.createElement(\"span\");\n span.className = \"caretNode\";\n span.appendChild(document.createTextNode(CARET_NODE_CHAR));\n return span;\n}\n\nfunction updateCaretNode(node) {\n // ensure the caret node contains only a zero-width space\n if (node.textContent !== CARET_NODE_CHAR) {\n node.textContent = CARET_NODE_CHAR;\n }\n}\n\nfunction isCaretNode(node) {\n return node && node.tagName === \"SPAN\" && node.className === \"caretNode\";\n}\n\nfunction removeNextSiblings(node) {\n if (!node) {\n return;\n }\n node = node.nextSibling;\n while (node) {\n var removeNode = node;\n node = node.nextSibling;\n removeNode.remove();\n }\n}\n\nfunction removeChildren(parent) {\n var firstChild = parent.firstChild;\n if (firstChild) {\n removeNextSiblings(firstChild);\n firstChild.remove();\n }\n}\n\nfunction reconcileLine(lineContainer, parts) {\n var currentNode = void 0;\n var prevPart = void 0;\n var lastPart = parts[parts.length - 1];\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(parts), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var part = _step.value;\n\n var isFirst = !prevPart;\n currentNode = isFirst ? lineContainer.firstChild : currentNode.nextSibling;\n\n if (needsCaretNodeBefore(part, prevPart)) {\n if (isCaretNode(currentNode)) {\n updateCaretNode(currentNode);\n currentNode = currentNode.nextSibling;\n } else {\n lineContainer.insertBefore(createCaretNode(), currentNode);\n }\n }\n // remove nodes until matching current part\n while (currentNode && !part.canUpdateDOMNode(currentNode)) {\n var nextNode = currentNode.nextSibling;\n lineContainer.removeChild(currentNode);\n currentNode = nextNode;\n }\n // update or insert node for current part\n if (currentNode && part) {\n part.updateDOMNode(currentNode);\n } else if (part) {\n currentNode = part.toDOMNode();\n // hooks up nextSibling for next iteration\n lineContainer.appendChild(currentNode);\n }\n\n if (needsCaretNodeAfter(part, part === lastPart)) {\n if (isCaretNode(currentNode.nextSibling)) {\n currentNode = currentNode.nextSibling;\n updateCaretNode(currentNode);\n } else {\n var caretNode = createCaretNode();\n insertAfter(currentNode, caretNode);\n currentNode = caretNode;\n }\n }\n\n prevPart = part;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n removeNextSiblings(currentNode);\n}\n\nfunction reconcileEmptyLine(lineContainer) {\n // empty div needs to have a BR in it to give it height\n var foundBR = false;\n var partNode = lineContainer.firstChild;\n while (partNode) {\n var nextNode = partNode.nextSibling;\n if (!foundBR && partNode.tagName === \"BR\") {\n foundBR = true;\n } else {\n partNode.remove();\n }\n partNode = nextNode;\n }\n if (!foundBR) {\n lineContainer.appendChild(document.createElement(\"br\"));\n }\n}\n\nfunction renderModel(editor, model) {\n var lines = model.parts.reduce(function (lines, part) {\n if (part.type === \"newline\") {\n lines.push([]);\n } else {\n var lastLine = lines[lines.length - 1];\n lastLine.push(part);\n }\n return lines;\n }, [[]]);\n lines.forEach(function (parts, i) {\n // find first (and remove anything else) div without className\n // (as browsers insert these in contenteditable) line container\n var lineContainer = editor.childNodes[i];\n while (lineContainer && (lineContainer.tagName !== \"DIV\" || !!lineContainer.className)) {\n editor.removeChild(lineContainer);\n lineContainer = editor.childNodes[i];\n }\n if (!lineContainer) {\n lineContainer = document.createElement(\"div\");\n editor.appendChild(lineContainer);\n }\n\n if (parts.length) {\n reconcileLine(lineContainer, parts);\n } else {\n reconcileEmptyLine(lineContainer);\n }\n });\n if (lines.length) {\n removeNextSiblings(editor.children[lines.length - 1]);\n } else {\n removeChildren(editor);\n }\n}\n//# sourceMappingURL=render.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _maxSafeInteger = require(\"babel-runtime/core-js/number/max-safe-integer\");\n\nvar _maxSafeInteger2 = _interopRequireDefault(_maxSafeInteger);\n\nexports.walkDOMDepthFirst = walkDOMDepthFirst;\nexports.getCaretOffsetAndText = getCaretOffsetAndText;\nexports.getRangeForSelection = getRangeForSelection;\n\nvar _render = require(\"./render\");\n\nvar _offset = require(\"./offset\");\n\nvar _offset2 = _interopRequireDefault(_offset);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 New Vector Ltd\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction walkDOMDepthFirst(rootNode, enterNodeCallback, leaveNodeCallback) {\n var node = rootNode.firstChild;\n while (node && node !== rootNode) {\n var shouldDecend = enterNodeCallback(node);\n if (shouldDecend && node.firstChild) {\n node = node.firstChild;\n } else if (node.nextSibling) {\n node = node.nextSibling;\n } else {\n while (!node.nextSibling && node !== rootNode) {\n node = node.parentElement;\n if (node !== rootNode) {\n leaveNodeCallback(node);\n }\n }\n if (node !== rootNode) {\n node = node.nextSibling;\n }\n }\n }\n}\n\nfunction getCaretOffsetAndText(editor, sel) {\n var _getSelectionOffsetAn = getSelectionOffsetAndText(editor, sel.focusNode, sel.focusOffset),\n offset = _getSelectionOffsetAn.offset,\n text = _getSelectionOffsetAn.text;\n\n return { caret: offset, text: text };\n}\n\nfunction tryReduceSelectionToTextNode(selectionNode, selectionOffset) {\n // if selectionNode is an element, the selected location comes after the selectionOffset-th child node,\n // which can point past any childNode, in which case, the end of selectionNode is selected.\n // we try to simplify this to point at a text node with the offset being\n // a character offset within the text node\n // Also see https://developer.mozilla.org/en-US/docs/Web/API/Selection\n while (selectionNode && selectionNode.nodeType === Node.ELEMENT_NODE) {\n var childNodeCount = selectionNode.childNodes.length;\n if (childNodeCount) {\n if (selectionOffset >= childNodeCount) {\n selectionNode = selectionNode.lastChild;\n if (selectionNode.nodeType === Node.TEXT_NODE) {\n selectionOffset = selectionNode.textContent.length;\n } else {\n // this will select the last child node in the next iteration\n selectionOffset = _maxSafeInteger2.default;\n }\n } else {\n selectionNode = selectionNode.childNodes[selectionOffset];\n // this will select the first child node in the next iteration\n selectionOffset = 0;\n }\n } else {\n // here node won't be a text node,\n // but characterOffset should be 0,\n // this happens under some circumstances\n // when the editor is empty.\n // In this case characterOffset=0 is the right thing to do\n break;\n }\n }\n return {\n node: selectionNode,\n characterOffset: selectionOffset\n };\n}\n\nfunction getSelectionOffsetAndText(editor, selectionNode, selectionOffset) {\n var _tryReduceSelectionTo = tryReduceSelectionToTextNode(selectionNode, selectionOffset),\n node = _tryReduceSelectionTo.node,\n characterOffset = _tryReduceSelectionTo.characterOffset;\n\n var _getTextAndOffsetToNo = getTextAndOffsetToNode(editor, node),\n text = _getTextAndOffsetToNo.text,\n offsetToNode = _getTextAndOffsetToNo.offsetToNode;\n\n var offset = getCaret(node, offsetToNode, characterOffset);\n return { offset: offset, text: text };\n}\n\n// gets the caret position details, ignoring and adjusting to\n// the ZWS if you're typing in a caret node\nfunction getCaret(node, offsetToNode, offsetWithinNode) {\n var atNodeEnd = offsetWithinNode === node.textContent.length;\n if (node.nodeType === Node.TEXT_NODE && (0, _render.isCaretNode)(node.parentElement)) {\n var zwsIdx = node.nodeValue.indexOf(_render.CARET_NODE_CHAR);\n if (zwsIdx !== -1 && zwsIdx < offsetWithinNode) {\n offsetWithinNode -= 1;\n }\n // if typing in a caret node, you're either typing before or after the ZWS.\n // In both cases, you should be considered at node end because the ZWS is\n // not included in the text here, and once the model is updated and rerendered,\n // that caret node will be removed.\n atNodeEnd = true;\n }\n return new _offset2.default(offsetToNode + offsetWithinNode, atNodeEnd);\n}\n\n// gets the text of the editor as a string,\n// and the offset in characters where the selectionNode starts in that string\n// all ZWS from caret nodes are filtered out\nfunction getTextAndOffsetToNode(editor, selectionNode) {\n var offsetToNode = 0;\n var foundNode = false;\n var text = \"\";\n\n function enterNodeCallback(node) {\n if (!foundNode) {\n if (node === selectionNode) {\n foundNode = true;\n }\n }\n // usually newlines are entered as new DIV elements,\n // but for example while pasting in some browsers, they are still\n // converted to BRs, so also take these into account when they\n // are not the last element in the DIV.\n if (node.tagName === \"BR\" && node.nextSibling) {\n if (!foundNode) {\n offsetToNode += 1;\n }\n text += \"\\n\";\n }\n var nodeText = node.nodeType === Node.TEXT_NODE && getTextNodeValue(node);\n if (nodeText) {\n if (!foundNode) {\n offsetToNode += nodeText.length;\n }\n text += nodeText;\n }\n return true;\n }\n\n function leaveNodeCallback(node) {\n // if this is not the last DIV (which are only used as line containers atm)\n // we don't just check if there is a nextSibling because sometimes the caret ends up\n // after the last DIV and it creates a newline if you type then,\n // whereas you just want it to be appended to the current line\n if (node.tagName === \"DIV\" && node.nextSibling && node.nextSibling.tagName === \"DIV\") {\n text += \"\\n\";\n if (!foundNode) {\n offsetToNode += 1;\n }\n }\n }\n\n walkDOMDepthFirst(editor, enterNodeCallback, leaveNodeCallback);\n\n return { text: text, offsetToNode: offsetToNode };\n}\n\n// get text value of text node, ignoring ZWS if it's a caret node\nfunction getTextNodeValue(node) {\n var nodeText = node.nodeValue;\n // filter out ZWS for caret nodes\n if ((0, _render.isCaretNode)(node.parentElement)) {\n // typed in the caret node, so there is now something more in it than the ZWS\n // so filter out the ZWS, and take the typed text into account\n if (nodeText.length !== 1) {\n return nodeText.replace(_render.CARET_NODE_CHAR, \"\");\n } else {\n // only contains ZWS, which is ignored, so return emtpy string\n return \"\";\n }\n } else {\n return nodeText;\n }\n}\n\nfunction getRangeForSelection(editor, model, selection) {\n var focusOffset = getSelectionOffsetAndText(editor, selection.focusNode, selection.focusOffset).offset;\n var anchorOffset = getSelectionOffsetAndText(editor, selection.anchorNode, selection.anchorOffset).offset;\n var focusPosition = focusOffset.asPosition(model);\n var anchorPosition = anchorOffset.asPosition(model);\n return model.startRange(focusPosition, anchorPosition);\n}\n//# sourceMappingURL=dom.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CommandPartCreator = exports.PartCreator = exports.PlainPart = undefined;\n\nvar _get2 = require(\"babel-runtime/helpers/get\");\n\nvar _get3 = _interopRequireDefault(_get2);\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.autoCompleteCreator = autoCompleteCreator;\n\nvar _autocomplete = require(\"./autocomplete\");\n\nvar _autocomplete2 = _interopRequireDefault(_autocomplete);\n\nvar _Avatar = require(\"../Avatar\");\n\nvar _Avatar2 = _interopRequireDefault(_Avatar);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 New Vector Ltd\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar BasePart = function () {\n function BasePart() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n (0, _classCallCheck3.default)(this, BasePart);\n\n this._text = text;\n }\n\n (0, _createClass3.default)(BasePart, [{\n key: \"acceptsInsertion\",\n value: function acceptsInsertion(chr, offset, inputType) {\n return true;\n }\n }, {\n key: \"acceptsRemoval\",\n value: function acceptsRemoval(position, chr) {\n return true;\n }\n }, {\n key: \"merge\",\n value: function merge(part) {\n return false;\n }\n }, {\n key: \"split\",\n value: function split(offset) {\n var splitText = this.text.substr(offset);\n this._text = this.text.substr(0, offset);\n return new PlainPart(splitText);\n }\n\n // removes len chars, or returns the plain text this part should be replaced with\n // if the part would become invalid if it removed everything.\n\n }, {\n key: \"remove\",\n value: function remove(offset, len) {\n // validate\n var strWithRemoval = this.text.substr(0, offset) + this.text.substr(offset + len);\n for (var i = offset; i < len + offset; ++i) {\n var chr = this.text.charAt(i);\n if (!this.acceptsRemoval(i, chr)) {\n return strWithRemoval;\n }\n }\n this._text = strWithRemoval;\n }\n\n // append str, returns the remaining string if a character was rejected.\n\n }, {\n key: \"appendUntilRejected\",\n value: function appendUntilRejected(str, inputType) {\n var offset = this.text.length;\n for (var i = 0; i < str.length; ++i) {\n var chr = str.charAt(i);\n if (!this.acceptsInsertion(chr, offset + i, inputType)) {\n this._text = this._text + str.substr(0, i);\n return str.substr(i);\n }\n }\n this._text = this._text + str;\n }\n\n // inserts str at offset if all the characters in str were accepted, otherwise don't do anything\n // return whether the str was accepted or not.\n\n }, {\n key: \"validateAndInsert\",\n value: function validateAndInsert(offset, str, inputType) {\n for (var i = 0; i < str.length; ++i) {\n var chr = str.charAt(i);\n if (!this.acceptsInsertion(chr, offset + i, inputType)) {\n return false;\n }\n }\n var beforeInsert = this._text.substr(0, offset);\n var afterInsert = this._text.substr(offset);\n this._text = beforeInsert + str + afterInsert;\n return true;\n }\n }, {\n key: \"createAutoComplete\",\n value: function createAutoComplete() {}\n }, {\n key: \"trim\",\n value: function trim(len) {\n var remaining = this._text.substr(len);\n this._text = this._text.substr(0, len);\n return remaining;\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return this.type + \"(\" + this.text + \")\";\n }\n }, {\n key: \"serialize\",\n value: function serialize() {\n return { type: this.type, text: this.text };\n }\n }, {\n key: \"text\",\n get: function get() {\n return this._text;\n }\n }, {\n key: \"canEdit\",\n get: function get() {\n return true;\n }\n }]);\n return BasePart;\n}();\n\n// exported for unit tests, should otherwise only be used through PartCreator\n\n\nvar PlainPart = exports.PlainPart = function (_BasePart) {\n (0, _inherits3.default)(PlainPart, _BasePart);\n\n function PlainPart() {\n (0, _classCallCheck3.default)(this, PlainPart);\n return (0, _possibleConstructorReturn3.default)(this, (PlainPart.__proto__ || (0, _getPrototypeOf2.default)(PlainPart)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(PlainPart, [{\n key: \"acceptsInsertion\",\n value: function acceptsInsertion(chr, offset, inputType) {\n if (chr === \"\\n\") {\n return false;\n }\n // when not pasting or dropping text, reject characters that should start a pill candidate\n if (inputType !== \"insertFromPaste\" && inputType !== \"insertFromDrop\") {\n return chr !== \"@\" && chr !== \"#\" && chr !== \":\";\n }\n return true;\n }\n }, {\n key: \"toDOMNode\",\n value: function toDOMNode() {\n return document.createTextNode(this.text);\n }\n }, {\n key: \"merge\",\n value: function merge(part) {\n if (part.type === this.type) {\n this._text = this.text + part.text;\n return true;\n }\n return false;\n }\n }, {\n key: \"updateDOMNode\",\n value: function updateDOMNode(node) {\n if (node.textContent !== this.text) {\n node.textContent = this.text;\n }\n }\n }, {\n key: \"canUpdateDOMNode\",\n value: function canUpdateDOMNode(node) {\n return node.nodeType === Node.TEXT_NODE;\n }\n }, {\n key: \"type\",\n get: function get() {\n return \"plain\";\n }\n }]);\n return PlainPart;\n}(BasePart);\n\nvar PillPart = function (_BasePart2) {\n (0, _inherits3.default)(PillPart, _BasePart2);\n\n function PillPart(resourceId, label) {\n (0, _classCallCheck3.default)(this, PillPart);\n\n var _this2 = (0, _possibleConstructorReturn3.default)(this, (PillPart.__proto__ || (0, _getPrototypeOf2.default)(PillPart)).call(this, label));\n\n _this2.resourceId = resourceId;\n return _this2;\n }\n\n (0, _createClass3.default)(PillPart, [{\n key: \"acceptsInsertion\",\n value: function acceptsInsertion(chr) {\n return chr !== \" \";\n }\n }, {\n key: \"acceptsRemoval\",\n value: function acceptsRemoval(position, chr) {\n return position !== 0; //if you remove initial # or @, pill should become plain\n }\n }, {\n key: \"toDOMNode\",\n value: function toDOMNode() {\n var container = document.createElement(\"span\");\n container.setAttribute(\"spellcheck\", \"false\");\n container.className = this.className;\n container.appendChild(document.createTextNode(this.text));\n this.setAvatar(container);\n return container;\n }\n }, {\n key: \"updateDOMNode\",\n value: function updateDOMNode(node) {\n var textNode = node.childNodes[0];\n if (textNode.textContent !== this.text) {\n textNode.textContent = this.text;\n }\n if (node.className !== this.className) {\n node.className = this.className;\n }\n this.setAvatar(node);\n }\n }, {\n key: \"canUpdateDOMNode\",\n value: function canUpdateDOMNode(node) {\n return node.nodeType === Node.ELEMENT_NODE && node.nodeName === \"SPAN\" && node.childNodes.length === 1 && node.childNodes[0].nodeType === Node.TEXT_NODE;\n }\n\n // helper method for subclasses\n\n }, {\n key: \"_setAvatarVars\",\n value: function _setAvatarVars(node, avatarUrl, initialLetter) {\n var avatarBackground = \"url('\" + avatarUrl + \"')\";\n var avatarLetter = \"'\" + initialLetter + \"'\";\n // check if the value is changing,\n // otherwise the avatars flicker on every keystroke while updating.\n if (node.style.getPropertyValue(\"--avatar-background\") !== avatarBackground) {\n node.style.setProperty(\"--avatar-background\", avatarBackground);\n }\n if (node.style.getPropertyValue(\"--avatar-letter\") !== avatarLetter) {\n node.style.setProperty(\"--avatar-letter\", avatarLetter);\n }\n }\n }, {\n key: \"canEdit\",\n get: function get() {\n return false;\n }\n }]);\n return PillPart;\n}(BasePart);\n\nvar NewlinePart = function (_BasePart3) {\n (0, _inherits3.default)(NewlinePart, _BasePart3);\n\n function NewlinePart() {\n (0, _classCallCheck3.default)(this, NewlinePart);\n return (0, _possibleConstructorReturn3.default)(this, (NewlinePart.__proto__ || (0, _getPrototypeOf2.default)(NewlinePart)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(NewlinePart, [{\n key: \"acceptsInsertion\",\n value: function acceptsInsertion(chr, offset) {\n return offset === 0 && chr === \"\\n\";\n }\n }, {\n key: \"acceptsRemoval\",\n value: function acceptsRemoval(position, chr) {\n return true;\n }\n }, {\n key: \"toDOMNode\",\n value: function toDOMNode() {\n return document.createElement(\"br\");\n }\n }, {\n key: \"merge\",\n value: function merge() {\n return false;\n }\n }, {\n key: \"updateDOMNode\",\n value: function updateDOMNode() {}\n }, {\n key: \"canUpdateDOMNode\",\n value: function canUpdateDOMNode(node) {\n return node.tagName === \"BR\";\n }\n }, {\n key: \"type\",\n get: function get() {\n return \"newline\";\n }\n\n // this makes the cursor skip this part when it is inserted\n // rather than trying to append to it, which is what we want.\n // As a newline can also be only one character, it makes sense\n // as it can only be one character long. This caused #9741.\n\n }, {\n key: \"canEdit\",\n get: function get() {\n return false;\n }\n }]);\n return NewlinePart;\n}(BasePart);\n\nvar RoomPillPart = function (_PillPart) {\n (0, _inherits3.default)(RoomPillPart, _PillPart);\n\n function RoomPillPart(displayAlias, room) {\n (0, _classCallCheck3.default)(this, RoomPillPart);\n\n var _this4 = (0, _possibleConstructorReturn3.default)(this, (RoomPillPart.__proto__ || (0, _getPrototypeOf2.default)(RoomPillPart)).call(this, displayAlias, displayAlias));\n\n _this4._room = room;\n return _this4;\n }\n\n (0, _createClass3.default)(RoomPillPart, [{\n key: \"setAvatar\",\n value: function setAvatar(node) {\n var initialLetter = \"\";\n var avatarUrl = _Avatar2.default.avatarUrlForRoom(this._room, 16 * window.devicePixelRatio, 16 * window.devicePixelRatio);\n if (!avatarUrl) {\n initialLetter = _Avatar2.default.getInitialLetter(this._room.name);\n avatarUrl = \"../../\" + _Avatar2.default.defaultAvatarUrlForString(this._room.roomId);\n }\n this._setAvatarVars(node, avatarUrl, initialLetter);\n }\n }, {\n key: \"type\",\n get: function get() {\n return \"room-pill\";\n }\n }, {\n key: \"className\",\n get: function get() {\n return \"mx_RoomPill mx_Pill\";\n }\n }]);\n return RoomPillPart;\n}(PillPart);\n\nvar AtRoomPillPart = function (_RoomPillPart) {\n (0, _inherits3.default)(AtRoomPillPart, _RoomPillPart);\n\n function AtRoomPillPart() {\n (0, _classCallCheck3.default)(this, AtRoomPillPart);\n return (0, _possibleConstructorReturn3.default)(this, (AtRoomPillPart.__proto__ || (0, _getPrototypeOf2.default)(AtRoomPillPart)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(AtRoomPillPart, [{\n key: \"type\",\n get: function get() {\n return \"at-room-pill\";\n }\n }]);\n return AtRoomPillPart;\n}(RoomPillPart);\n\nvar UserPillPart = function (_PillPart2) {\n (0, _inherits3.default)(UserPillPart, _PillPart2);\n\n function UserPillPart(userId, displayName, member) {\n (0, _classCallCheck3.default)(this, UserPillPart);\n\n var _this6 = (0, _possibleConstructorReturn3.default)(this, (UserPillPart.__proto__ || (0, _getPrototypeOf2.default)(UserPillPart)).call(this, userId, displayName));\n\n _this6._member = member;\n return _this6;\n }\n\n (0, _createClass3.default)(UserPillPart, [{\n key: \"setAvatar\",\n value: function setAvatar(node) {\n if (!this._member) {\n return;\n }\n var name = this._member.name || this._member.userId;\n var defaultAvatarUrl = _Avatar2.default.defaultAvatarUrlForString(this._member.userId);\n var avatarUrl = _Avatar2.default.avatarUrlForMember(this._member, 16 * window.devicePixelRatio, 16 * window.devicePixelRatio);\n var initialLetter = \"\";\n if (avatarUrl === defaultAvatarUrl) {\n // the url from defaultAvatarUrlForString is meant to go in an img element,\n // which has the base of the document. we're using it in css,\n // which has the base of the theme css file, two levels deeper than the document,\n // so go up to the level of the document.\n avatarUrl = \"../../\" + avatarUrl;\n initialLetter = _Avatar2.default.getInitialLetter(name);\n }\n this._setAvatarVars(node, avatarUrl, initialLetter);\n }\n }, {\n key: \"serialize\",\n value: function serialize() {\n var obj = (0, _get3.default)(UserPillPart.prototype.__proto__ || (0, _getPrototypeOf2.default)(UserPillPart.prototype), \"serialize\", this).call(this);\n obj.resourceId = this.resourceId;\n return obj;\n }\n }, {\n key: \"type\",\n get: function get() {\n return \"user-pill\";\n }\n }, {\n key: \"className\",\n get: function get() {\n return \"mx_UserPill mx_Pill\";\n }\n }]);\n return UserPillPart;\n}(PillPart);\n\nvar PillCandidatePart = function (_PlainPart) {\n (0, _inherits3.default)(PillCandidatePart, _PlainPart);\n\n function PillCandidatePart(text, autoCompleteCreator) {\n (0, _classCallCheck3.default)(this, PillCandidatePart);\n\n var _this7 = (0, _possibleConstructorReturn3.default)(this, (PillCandidatePart.__proto__ || (0, _getPrototypeOf2.default)(PillCandidatePart)).call(this, text));\n\n _this7._autoCompleteCreator = autoCompleteCreator;\n return _this7;\n }\n\n (0, _createClass3.default)(PillCandidatePart, [{\n key: \"createAutoComplete\",\n value: function createAutoComplete(updateCallback) {\n return this._autoCompleteCreator.create(updateCallback);\n }\n }, {\n key: \"acceptsInsertion\",\n value: function acceptsInsertion(chr, offset, inputType) {\n if (offset === 0) {\n return true;\n } else {\n return (0, _get3.default)(PillCandidatePart.prototype.__proto__ || (0, _getPrototypeOf2.default)(PillCandidatePart.prototype), \"acceptsInsertion\", this).call(this, chr, offset, inputType);\n }\n }\n }, {\n key: \"merge\",\n value: function merge() {\n return false;\n }\n }, {\n key: \"acceptsRemoval\",\n value: function acceptsRemoval(position, chr) {\n return true;\n }\n }, {\n key: \"type\",\n get: function get() {\n return \"pill-candidate\";\n }\n }]);\n return PillCandidatePart;\n}(PlainPart);\n\nfunction autoCompleteCreator(getAutocompleterComponent, updateQuery) {\n return function (partCreator) {\n return function (updateCallback) {\n return new _autocomplete2.default(updateCallback, getAutocompleterComponent, updateQuery, partCreator);\n };\n };\n}\n\nvar PartCreator = exports.PartCreator = function () {\n function PartCreator(room, client) {\n var autoCompleteCreator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n (0, _classCallCheck3.default)(this, PartCreator);\n\n this._room = room;\n this._client = client;\n // pre-create the creator as an object even without callback so it can already be passed\n // to PillCandidatePart (e.g. while deserializing) and set later on\n this._autoCompleteCreator = { create: autoCompleteCreator && autoCompleteCreator(this) };\n }\n\n (0, _createClass3.default)(PartCreator, [{\n key: \"setAutoCompleteCreator\",\n value: function setAutoCompleteCreator(autoCompleteCreator) {\n this._autoCompleteCreator.create = autoCompleteCreator(this);\n }\n }, {\n key: \"createPartForInput\",\n value: function createPartForInput(input) {\n switch (input[0]) {\n case \"#\":\n case \"@\":\n case \":\":\n return this.pillCandidate(\"\");\n case \"\\n\":\n return new NewlinePart();\n default:\n return new PlainPart();\n }\n }\n }, {\n key: \"createDefaultPart\",\n value: function createDefaultPart(text) {\n return this.plain(text);\n }\n }, {\n key: \"deserializePart\",\n value: function deserializePart(part) {\n switch (part.type) {\n case \"plain\":\n return this.plain(part.text);\n case \"newline\":\n return this.newline();\n case \"at-room-pill\":\n return this.atRoomPill(part.text);\n case \"pill-candidate\":\n return this.pillCandidate(part.text);\n case \"room-pill\":\n return this.roomPill(part.text);\n case \"user-pill\":\n return this.userPill(part.text, part.resourceId);\n }\n }\n }, {\n key: \"plain\",\n value: function plain(text) {\n return new PlainPart(text);\n }\n }, {\n key: \"newline\",\n value: function newline() {\n return new NewlinePart(\"\\n\");\n }\n }, {\n key: \"pillCandidate\",\n value: function pillCandidate(text) {\n return new PillCandidatePart(text, this._autoCompleteCreator);\n }\n }, {\n key: \"roomPill\",\n value: function roomPill(alias) {\n var room = void 0;\n if (alias[0] === '#') {\n room = this._client.getRooms().find(function (r) {\n return r.getAliases().includes(alias);\n });\n } else {\n room = this._client.getRoom(alias);\n }\n return new RoomPillPart(alias, room);\n }\n }, {\n key: \"atRoomPill\",\n value: function atRoomPill(text) {\n return new AtRoomPillPart(text, this._room);\n }\n }, {\n key: \"userPill\",\n value: function userPill(displayName, userId) {\n var member = this._room.getMember(userId);\n return new UserPillPart(userId, displayName, member);\n }\n }, {\n key: \"createMentionParts\",\n value: function createMentionParts(partIndex, displayName, userId) {\n var pill = this.userPill(displayName, userId);\n var postfix = this.plain(partIndex === 0 ? \": \" : \" \");\n return [pill, postfix];\n }\n }]);\n return PartCreator;\n}();\n\n// part creator that support auto complete for /commands,\n// used in SendMessageComposer\n\n\nvar CommandPartCreator = exports.CommandPartCreator = function (_PartCreator) {\n (0, _inherits3.default)(CommandPartCreator, _PartCreator);\n\n function CommandPartCreator() {\n (0, _classCallCheck3.default)(this, CommandPartCreator);\n return (0, _possibleConstructorReturn3.default)(this, (CommandPartCreator.__proto__ || (0, _getPrototypeOf2.default)(CommandPartCreator)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(CommandPartCreator, [{\n key: \"createPartForInput\",\n value: function createPartForInput(text, partIndex) {\n // at beginning and starts with /? create\n if (partIndex === 0 && text[0] === \"/\") {\n // text will be inserted by model, so pass empty string\n return this.command(\"\");\n } else {\n return (0, _get3.default)(CommandPartCreator.prototype.__proto__ || (0, _getPrototypeOf2.default)(CommandPartCreator.prototype), \"createPartForInput\", this).call(this, text, partIndex);\n }\n }\n }, {\n key: \"command\",\n value: function command(text) {\n return new CommandPart(text, this._autoCompleteCreator);\n }\n }, {\n key: \"deserializePart\",\n value: function deserializePart(part) {\n if (part.type === \"command\") {\n return this.command(part.text);\n } else {\n return (0, _get3.default)(CommandPartCreator.prototype.__proto__ || (0, _getPrototypeOf2.default)(CommandPartCreator.prototype), \"deserializePart\", this).call(this, part);\n }\n }\n }]);\n return CommandPartCreator;\n}(PartCreator);\n\nvar CommandPart = function (_PillCandidatePart) {\n (0, _inherits3.default)(CommandPart, _PillCandidatePart);\n\n function CommandPart() {\n (0, _classCallCheck3.default)(this, CommandPart);\n return (0, _possibleConstructorReturn3.default)(this, (CommandPart.__proto__ || (0, _getPrototypeOf2.default)(CommandPart)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(CommandPart, [{\n key: \"type\",\n get: function get() {\n return \"command\";\n }\n }]);\n return CommandPart;\n}(PillCandidatePart);\n//# sourceMappingURL=parts.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = require(\"babel-runtime/helpers/toConsumableArray\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nexports.parsePlainTextMessage = parsePlainTextMessage;\nexports.parseEvent = parseEvent;\n\nvar _dom = require(\"./dom\");\n\nvar _HtmlUtils = require(\"../HtmlUtils\");\n\nvar _Permalinks = require(\"../utils/permalinks/Permalinks\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parseAtRoomMentions(text, partCreator) {\n var ATROOM = \"@room\";\n var parts = [];\n text.split(ATROOM).forEach(function (textPart, i, arr) {\n if (textPart.length) {\n parts.push(partCreator.plain(textPart));\n }\n // it's safe to never append @room after the last textPart\n // as split will report an empty string at the end if\n // `text` ended in @room.\n var isLast = i === arr.length - 1;\n if (!isLast) {\n parts.push(partCreator.atRoomPill(ATROOM));\n }\n });\n return parts;\n} /*\n Copyright 2019 New Vector Ltd\n Copyright 2019 The Matrix.org Foundation C.I.C.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction parseLink(a, partCreator) {\n var href = a.href;\n\n var resourceId = (0, _Permalinks.getPrimaryPermalinkEntity)(href); // The room/user ID\n var prefix = resourceId ? resourceId[0] : undefined; // First character of ID\n switch (prefix) {\n case \"@\":\n return partCreator.userPill(a.textContent, resourceId);\n case \"#\":\n return partCreator.roomPill(resourceId);\n default:\n {\n if (href === a.textContent) {\n return partCreator.plain(a.textContent);\n } else {\n return partCreator.plain(\"[\" + a.textContent + \"](\" + href + \")\");\n }\n }\n }\n}\n\nfunction parseCodeBlock(n, partCreator) {\n var parts = [];\n var preLines = (\"```\\n\" + n.textContent + \"```\").split(\"\\n\");\n preLines.forEach(function (l, i) {\n parts.push(partCreator.plain(l));\n if (i < preLines.length - 1) {\n parts.push(partCreator.newline());\n }\n });\n return parts;\n}\n\nfunction parseHeader(el, partCreator) {\n var depth = parseInt(el.nodeName.substr(1), 10);\n return partCreator.plain(\"#\".repeat(depth) + \" \");\n}\n\nfunction parseElement(n, partCreator, lastNode, state) {\n switch (n.nodeName) {\n case \"H1\":\n case \"H2\":\n case \"H3\":\n case \"H4\":\n case \"H5\":\n case \"H6\":\n return parseHeader(n, partCreator);\n case \"A\":\n return parseLink(n, partCreator);\n case \"BR\":\n return partCreator.newline();\n case \"EM\":\n return partCreator.plain(\"_\" + n.textContent + \"_\");\n case \"STRONG\":\n return partCreator.plain(\"**\" + n.textContent + \"**\");\n case \"PRE\":\n return parseCodeBlock(n, partCreator);\n case \"CODE\":\n return partCreator.plain(\"`\" + n.textContent + \"`\");\n case \"DEL\":\n return partCreator.plain(\"\" + n.textContent + \"\");\n case \"LI\":\n {\n var indent = \" \".repeat(state.listDepth - 1);\n if (n.parentElement.nodeName === \"OL\") {\n return partCreator.plain(indent + \"1. \");\n } else {\n return partCreator.plain(indent + \"- \");\n }\n }\n case \"P\":\n {\n if (lastNode) {\n return partCreator.newline();\n }\n break;\n }\n case \"OL\":\n case \"UL\":\n state.listDepth = (state.listDepth || 0) + 1;\n // es-lint-disable-next-line no-fallthrough\n default:\n // don't textify block nodes we'll decend into\n if (!checkDecendInto(n)) {\n return partCreator.plain(n.textContent);\n }\n }\n}\n\nfunction checkDecendInto(node) {\n switch (node.nodeName) {\n case \"PRE\":\n // a code block is textified in parseCodeBlock\n // as we don't want to preserve markup in it,\n // so no need to decend into it\n return false;\n default:\n return (0, _HtmlUtils.checkBlockNode)(node);\n }\n}\n\nfunction checkIgnored(n) {\n if (n.nodeType === Node.TEXT_NODE) {\n // riot adds \\n text nodes in a lot of places,\n // which should be ignored\n return n.nodeValue === \"\\n\";\n } else if (n.nodeType === Node.ELEMENT_NODE) {\n return n.nodeName === \"MX-REPLY\";\n }\n return true;\n}\n\nvar QUOTE_LINE_PREFIX = \"> \";\nfunction prefixQuoteLines(isFirstNode, parts, partCreator) {\n // a newline (to append a > to) wouldn't be added to parts for the first line\n // if there was no content before the BLOCKQUOTE, so handle that\n if (isFirstNode) {\n parts.splice(0, 0, partCreator.plain(QUOTE_LINE_PREFIX));\n }\n for (var i = 0; i < parts.length; i += 1) {\n if (parts[i].type === \"newline\") {\n parts.splice(i + 1, 0, partCreator.plain(QUOTE_LINE_PREFIX));\n i += 1;\n }\n }\n}\n\nfunction parseHtmlMessage(html, partCreator, isQuotedMessage) {\n // no nodes from parsing here should be inserted in the document,\n // as scripts in event handlers, etc would be executed then.\n // we're only taking text, so that is fine\n var rootNode = new DOMParser().parseFromString(html, \"text/html\").body;\n var parts = [];\n var lastNode = void 0;\n var inQuote = isQuotedMessage;\n var state = {};\n\n function onNodeEnter(n) {\n if (checkIgnored(n)) {\n return false;\n }\n if (n.nodeName === \"BLOCKQUOTE\") {\n inQuote = true;\n }\n\n var newParts = [];\n if (lastNode && ((0, _HtmlUtils.checkBlockNode)(lastNode) || (0, _HtmlUtils.checkBlockNode)(n))) {\n newParts.push(partCreator.newline());\n }\n\n if (n.nodeType === Node.TEXT_NODE) {\n newParts.push.apply(newParts, (0, _toConsumableArray3.default)(parseAtRoomMentions(n.nodeValue, partCreator)));\n } else if (n.nodeType === Node.ELEMENT_NODE) {\n var parseResult = parseElement(n, partCreator, lastNode, state);\n if (parseResult) {\n if (Array.isArray(parseResult)) {\n newParts.push.apply(newParts, (0, _toConsumableArray3.default)(parseResult));\n } else {\n newParts.push(parseResult);\n }\n }\n }\n\n if (newParts.length && inQuote) {\n var isFirstPart = parts.length === 0;\n prefixQuoteLines(isFirstPart, newParts, partCreator);\n }\n\n parts.push.apply(parts, newParts);\n\n var decend = checkDecendInto(n);\n // when not decending (like for PRE), onNodeLeave won't be called to set lastNode\n // so do that here.\n lastNode = decend ? null : n;\n return decend;\n }\n\n function onNodeLeave(n) {\n if (checkIgnored(n)) {\n return;\n }\n switch (n.nodeName) {\n case \"BLOCKQUOTE\":\n inQuote = false;\n break;\n case \"OL\":\n case \"UL\":\n state.listDepth -= 1;\n break;\n }\n lastNode = n;\n }\n\n (0, _dom.walkDOMDepthFirst)(rootNode, onNodeEnter, onNodeLeave);\n\n return parts;\n}\n\nfunction parsePlainTextMessage(body, partCreator, isQuotedMessage) {\n var lines = body.split(\"\\n\");\n var parts = lines.reduce(function (parts, line, i) {\n if (isQuotedMessage) {\n parts.push(partCreator.plain(QUOTE_LINE_PREFIX));\n }\n parts.push.apply(parts, (0, _toConsumableArray3.default)(parseAtRoomMentions(line, partCreator)));\n var isLast = i === lines.length - 1;\n if (!isLast) {\n parts.push(partCreator.newline());\n }\n return parts;\n }, []);\n return parts;\n}\n\nfunction parseEvent(event, partCreator) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref$isQuotedMessage = _ref.isQuotedMessage,\n isQuotedMessage = _ref$isQuotedMessage === undefined ? false : _ref$isQuotedMessage;\n\n var content = event.getContent();\n var parts = void 0;\n if (content.format === \"org.matrix.custom.html\") {\n parts = parseHtmlMessage(content.formatted_body || \"\", partCreator, isQuotedMessage);\n } else {\n parts = parsePlainTextMessage(content.body || \"\", partCreator, isQuotedMessage);\n }\n if (content.msgtype === \"m.emote\") {\n parts.unshift(partCreator.plain(\"/me \"));\n }\n return parts;\n}\n//# sourceMappingURL=deserialize.js.map","\"use strict\";\n\nfunction isContainer(node) {\n switch (node._type) {\n case 'document':\n case 'block_quote':\n case 'list':\n case 'item':\n case 'paragraph':\n case 'heading':\n case 'emph':\n case 'strong':\n case 'link':\n case 'image':\n case 'custom_inline':\n case 'custom_block':\n return true;\n default:\n return false;\n }\n}\n\nvar resumeAt = function(node, entering) {\n this.current = node;\n this.entering = (entering === true);\n};\n\nvar next = function(){\n var cur = this.current;\n var entering = this.entering;\n\n if (cur === null) {\n return null;\n }\n\n var container = isContainer(cur);\n\n if (entering && container) {\n if (cur._firstChild) {\n this.current = cur._firstChild;\n this.entering = true;\n } else {\n // stay on node but exit\n this.entering = false;\n }\n\n } else if (cur === this.root) {\n this.current = null;\n\n } else if (cur._next === null) {\n this.current = cur._parent;\n this.entering = false;\n\n } else {\n this.current = cur._next;\n this.entering = true;\n }\n\n return {entering: entering, node: cur};\n};\n\nvar NodeWalker = function(root) {\n return { current: root,\n root: root,\n entering: true,\n next: next,\n resumeAt: resumeAt };\n};\n\nvar Node = function(nodeType, sourcepos) {\n this._type = nodeType;\n this._parent = null;\n this._firstChild = null;\n this._lastChild = null;\n this._prev = null;\n this._next = null;\n this._sourcepos = sourcepos;\n this._lastLineBlank = false;\n this._open = true;\n this._string_content = null;\n this._literal = null;\n this._listData = {};\n this._info = null;\n this._destination = null;\n this._title = null;\n this._isFenced = false;\n this._fenceChar = null;\n this._fenceLength = 0;\n this._fenceOffset = null;\n this._level = null;\n this._onEnter = null;\n this._onExit = null;\n};\n\nvar proto = Node.prototype;\n\nObject.defineProperty(proto, 'isContainer', {\n get: function () { return isContainer(this); }\n});\n\nObject.defineProperty(proto, 'type', {\n get: function() { return this._type; }\n});\n\nObject.defineProperty(proto, 'firstChild', {\n get: function() { return this._firstChild; }\n});\n\nObject.defineProperty(proto, 'lastChild', {\n get: function() { return this._lastChild; }\n});\n\nObject.defineProperty(proto, 'next', {\n get: function() { return this._next; }\n});\n\nObject.defineProperty(proto, 'prev', {\n get: function() { return this._prev; }\n});\n\nObject.defineProperty(proto, 'parent', {\n get: function() { return this._parent; }\n});\n\nObject.defineProperty(proto, 'sourcepos', {\n get: function() { return this._sourcepos; }\n});\n\nObject.defineProperty(proto, 'literal', {\n get: function() { return this._literal; },\n set: function(s) { this._literal = s; }\n});\n\nObject.defineProperty(proto, 'destination', {\n get: function() { return this._destination; },\n set: function(s) { this._destination = s; }\n});\n\nObject.defineProperty(proto, 'title', {\n get: function() { return this._title; },\n set: function(s) { this._title = s; }\n});\n\nObject.defineProperty(proto, 'info', {\n get: function() { return this._info; },\n set: function(s) { this._info = s; }\n});\n\nObject.defineProperty(proto, 'level', {\n get: function() { return this._level; },\n set: function(s) { this._level = s; }\n});\n\nObject.defineProperty(proto, 'listType', {\n get: function() { return this._listData.type; },\n set: function(t) { this._listData.type = t; }\n});\n\nObject.defineProperty(proto, 'listTight', {\n get: function() { return this._listData.tight; },\n set: function(t) { this._listData.tight = t; }\n});\n\nObject.defineProperty(proto, 'listStart', {\n get: function() { return this._listData.start; },\n set: function(n) { this._listData.start = n; }\n});\n\nObject.defineProperty(proto, 'listDelimiter', {\n get: function() { return this._listData.delimiter; },\n set: function(delim) { this._listData.delimiter = delim; }\n});\n\nObject.defineProperty(proto, 'onEnter', {\n get: function() { return this._onEnter; },\n set: function(s) { this._onEnter = s; }\n});\n\nObject.defineProperty(proto, 'onExit', {\n get: function() { return this._onExit; },\n set: function(s) { this._onExit = s; }\n});\n\nNode.prototype.appendChild = function(child) {\n child.unlink();\n child._parent = this;\n if (this._lastChild) {\n this._lastChild._next = child;\n child._prev = this._lastChild;\n this._lastChild = child;\n } else {\n this._firstChild = child;\n this._lastChild = child;\n }\n};\n\nNode.prototype.prependChild = function(child) {\n child.unlink();\n child._parent = this;\n if (this._firstChild) {\n this._firstChild._prev = child;\n child._next = this._firstChild;\n this._firstChild = child;\n } else {\n this._firstChild = child;\n this._lastChild = child;\n }\n};\n\nNode.prototype.unlink = function() {\n if (this._prev) {\n this._prev._next = this._next;\n } else if (this._parent) {\n this._parent._firstChild = this._next;\n }\n if (this._next) {\n this._next._prev = this._prev;\n } else if (this._parent) {\n this._parent._lastChild = this._prev;\n }\n this._parent = null;\n this._next = null;\n this._prev = null;\n};\n\nNode.prototype.insertAfter = function(sibling) {\n sibling.unlink();\n sibling._next = this._next;\n if (sibling._next) {\n sibling._next._prev = sibling;\n }\n sibling._prev = this;\n this._next = sibling;\n sibling._parent = this._parent;\n if (!sibling._next) {\n sibling._parent._lastChild = sibling;\n }\n};\n\nNode.prototype.insertBefore = function(sibling) {\n sibling.unlink();\n sibling._prev = this._prev;\n if (sibling._prev) {\n sibling._prev._next = sibling;\n }\n sibling._next = this;\n this._prev = sibling;\n sibling._parent = this._parent;\n if (!sibling._prev) {\n sibling._parent._firstChild = sibling;\n }\n};\n\nNode.prototype.walker = function() {\n var walker = new NodeWalker(this);\n return walker;\n};\n\nmodule.exports = Node;\n\n\n/* Example of use of walker:\n\n var walker = w.walker();\n var event;\n\n while (event = walker.next()) {\n console.log(event.entering, event.node.type);\n }\n\n */\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _AppTile = require('../elements/AppTile');\n\nvar _AppTile2 = _interopRequireDefault(_AppTile);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _WidgetUtils = require('../../../utils/WidgetUtils');\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nvar _ActiveWidgetStore = require('../../../stores/ActiveWidgetStore');\n\nvar _ActiveWidgetStore2 = _interopRequireDefault(_ActiveWidgetStore);\n\nvar _PersistedElement = require('../elements/PersistedElement');\n\nvar _PersistedElement2 = _interopRequireDefault(_PersistedElement);\n\nvar _IntegrationManagers = require('../../../integrations/IntegrationManagers');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar widgetType = 'm.stickerpicker';\n\n// This should be below the dialog level (4000), but above the rest of the UI (1000-2000).\n// We sit in a context menu, so this should be given to the context menu.\nvar STICKERPICKER_Z_INDEX = 3500;\n\n// Key to store the widget's AppTile under in PersistedElement\nvar PERSISTED_ELEMENT_KEY = \"stickerPicker\";\n\nvar Stickerpicker = function (_React$Component) {\n (0, _inherits3.default)(Stickerpicker, _React$Component);\n\n function Stickerpicker(props) {\n (0, _classCallCheck3.default)(this, Stickerpicker);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (Stickerpicker.__proto__ || (0, _getPrototypeOf2.default)(Stickerpicker)).call(this, props));\n\n _this._onShowStickersClick = _this._onShowStickersClick.bind(_this);\n _this._onHideStickersClick = _this._onHideStickersClick.bind(_this);\n _this._launchManageIntegrations = _this._launchManageIntegrations.bind(_this);\n _this._removeStickerpickerWidgets = _this._removeStickerpickerWidgets.bind(_this);\n _this._updateWidget = _this._updateWidget.bind(_this);\n _this._onWidgetAction = _this._onWidgetAction.bind(_this);\n _this._onResize = _this._onResize.bind(_this);\n _this._onFinished = _this._onFinished.bind(_this);\n\n _this.popoverWidth = 300;\n _this.popoverHeight = 300;\n\n // This is loaded by _acquireScalarClient on an as-needed basis.\n _this.scalarClient = null;\n\n _this.state = {\n showStickers: false,\n imError: null,\n stickerpickerX: null,\n stickerpickerY: null,\n stickerpickerWidget: null,\n widgetId: null\n };\n return _this;\n }\n\n (0, _createClass3.default)(Stickerpicker, [{\n key: '_acquireScalarClient',\n value: function _acquireScalarClient() {\n var _this2 = this;\n\n if (this.scalarClient) return _promise2.default.resolve(this.scalarClient);\n // TODO: Pick the right manager for the widget\n if (_IntegrationManagers.IntegrationManagers.sharedInstance().hasManager()) {\n this.scalarClient = _IntegrationManagers.IntegrationManagers.sharedInstance().getPrimaryManager().getScalarClient();\n return this.scalarClient.connect().then(function () {\n _this2.forceUpdate();\n return _this2.scalarClient;\n }).catch(function (e) {\n _this2._imError((0, _languageHandler._td)(\"Failed to connect to integrations server\"), e);\n });\n } else {\n this._imError((0, _languageHandler._td)(\"No integrations server is configured to manage stickers with\"));\n }\n }\n }, {\n key: '_removeStickerpickerWidgets',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var _this3 = this;\n\n var scalarClient;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(this._acquireScalarClient());\n\n case 2:\n scalarClient = _context.sent;\n\n console.warn('Removing Stickerpicker widgets');\n if (this.state.widgetId) {\n if (scalarClient) {\n scalarClient.disableWidgetAssets(widgetType, this.state.widgetId).then(function () {\n console.warn('Assets disabled');\n }).catch(function (err) {\n console.error('Failed to disable assets');\n });\n } else {\n console.error(\"Cannot disable assets: no scalar client\");\n }\n } else {\n console.warn('No widget ID specified, not disabling assets');\n }\n\n this.setState({ showStickers: false });\n _WidgetUtils2.default.removeStickerpickerWidgets().then(function () {\n _this3.forceUpdate();\n }).catch(function (e) {\n console.error('Failed to remove sticker picker widget', e);\n });\n\n case 7:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function _removeStickerpickerWidgets() {\n return _ref.apply(this, arguments);\n }\n\n return _removeStickerpickerWidgets;\n }()\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n // Close the sticker picker when the window resizes\n window.addEventListener('resize', this._onResize);\n\n this.dispatcherRef = _dispatcher2.default.register(this._onWidgetAction);\n\n // Track updates to widget state in account data\n _MatrixClientPeg2.default.get().on('accountData', this._updateWidget);\n\n // Initialise widget state from current account data\n this._updateWidget();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n var client = _MatrixClientPeg2.default.get();\n if (client) client.removeListener('accountData', this._updateWidget);\n\n window.removeEventListener('resize', this._onResize);\n if (this.dispatcherRef) {\n _dispatcher2.default.unregister(this.dispatcherRef);\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n this._sendVisibilityToWidget(this.state.showStickers);\n }\n }, {\n key: '_imError',\n value: function _imError(errorMsg, e) {\n console.error(errorMsg, e);\n this.setState({\n showStickers: false,\n imError: (0, _languageHandler._t)(errorMsg)\n });\n }\n }, {\n key: '_updateWidget',\n value: function _updateWidget() {\n var stickerpickerWidget = _WidgetUtils2.default.getStickerpickerWidgets()[0];\n if (!stickerpickerWidget) {\n Stickerpicker.currentWidget = null;\n this.setState({ stickerpickerWidget: null, widgetId: null });\n return;\n }\n\n var currentWidget = Stickerpicker.currentWidget;\n var currentUrl = null;\n if (currentWidget && currentWidget.content && currentWidget.content.url) {\n currentUrl = currentWidget.content.url;\n }\n\n var newUrl = null;\n if (stickerpickerWidget && stickerpickerWidget.content && stickerpickerWidget.content.url) {\n newUrl = stickerpickerWidget.content.url;\n }\n\n if (newUrl !== currentUrl) {\n // Destroy the existing frame so a new one can be created\n _PersistedElement2.default.destroyElement(PERSISTED_ELEMENT_KEY);\n }\n\n Stickerpicker.currentWidget = stickerpickerWidget;\n this.setState({\n stickerpickerWidget: stickerpickerWidget,\n widgetId: stickerpickerWidget ? stickerpickerWidget.id : null\n });\n }\n }, {\n key: '_onWidgetAction',\n value: function _onWidgetAction(payload) {\n switch (payload.action) {\n case \"user_widget_updated\":\n this.forceUpdate();\n break;\n case \"stickerpicker_close\":\n this.setState({ showStickers: false });\n break;\n case \"show_right_panel\":\n case \"hide_right_panel\":\n case \"show_left_panel\":\n case \"hide_left_panel\":\n this.setState({ showStickers: false });\n break;\n }\n }\n }, {\n key: '_defaultStickerpickerContent',\n value: function _defaultStickerpickerContent() {\n return _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this._launchManageIntegrations,\n className: 'mx_Stickers_contentPlaceholder' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"You don't currently have any stickerpacks enabled\")\n ),\n _react2.default.createElement(\n 'p',\n { className: 'mx_Stickers_addLink' },\n (0, _languageHandler._t)(\"Add some now\")\n ),\n _react2.default.createElement('img', { src: require(\"../../../../res/img/stickerpack-placeholder.png\"), alt: '' })\n );\n }\n }, {\n key: '_errorStickerpickerContent',\n value: function _errorStickerpickerContent() {\n return _react2.default.createElement(\n 'div',\n { style: { \"text-align\": \"center\" }, className: 'error' },\n _react2.default.createElement(\n 'p',\n null,\n ' ',\n this.state.imError,\n ' '\n )\n );\n }\n }, {\n key: '_sendVisibilityToWidget',\n value: function _sendVisibilityToWidget(visible) {\n if (!this.state.stickerpickerWidget) return;\n var widgetMessaging = _ActiveWidgetStore2.default.getWidgetMessaging(this.state.stickerpickerWidget.id);\n if (widgetMessaging && visible !== this._prevSentVisibility) {\n widgetMessaging.sendVisibility(visible);\n this._prevSentVisibility = visible;\n }\n }\n }, {\n key: '_getStickerpickerContent',\n value: function _getStickerpickerContent() {\n // Handle Integration Manager errors\n if (this.state._imError) {\n return this._errorStickerpickerContent();\n }\n\n // Stickers\n // TODO - Add support for Stickerpickers from multiple app stores.\n // Render content from multiple stickerpack sources, each within their\n // own iframe, within the stickerpicker UI element.\n var stickerpickerWidget = this.state.stickerpickerWidget;\n var stickersContent = void 0;\n\n // Use a separate ReactDOM tree to render the AppTile separately so that it persists and does\n // not unmount when we (a) close the sticker picker (b) switch rooms. It's properties are still\n // updated.\n var PersistedElement = _index2.default.getComponent(\"elements.PersistedElement\");\n\n // Load stickerpack content\n if (stickerpickerWidget && stickerpickerWidget.content && stickerpickerWidget.content.url) {\n // Set default name\n stickerpickerWidget.content.name = stickerpickerWidget.name || (0, _languageHandler._t)(\"Stickerpack\");\n\n stickersContent = _react2.default.createElement(\n 'div',\n { className: 'mx_Stickers_content_container' },\n _react2.default.createElement(\n 'div',\n {\n id: 'stickersContent',\n className: 'mx_Stickers_content',\n style: {\n border: 'none',\n height: this.popoverHeight,\n width: this.popoverWidth\n }\n },\n _react2.default.createElement(\n PersistedElement,\n { persistKey: PERSISTED_ELEMENT_KEY, style: { zIndex: STICKERPICKER_Z_INDEX } },\n _react2.default.createElement(_AppTile2.default, {\n id: stickerpickerWidget.id,\n url: stickerpickerWidget.content.url,\n name: stickerpickerWidget.content.name,\n room: this.props.room,\n type: stickerpickerWidget.content.type,\n fullWidth: true,\n userId: _MatrixClientPeg2.default.get().credentials.userId,\n creatorUserId: stickerpickerWidget.sender || _MatrixClientPeg2.default.get().credentials.userId,\n waitForIframeLoad: true,\n show: true,\n showMenubar: true,\n onEditClick: this._launchManageIntegrations,\n onDeleteClick: this._removeStickerpickerWidgets,\n showTitle: false,\n showMinimise: true,\n showDelete: false,\n showCancel: false,\n showPopout: false,\n onMinimiseClick: this._onHideStickersClick,\n handleMinimisePointerEvents: true,\n whitelistCapabilities: ['m.sticker', 'visibility'],\n userWidget: true\n })\n )\n )\n );\n } else {\n // Default content to show if stickerpicker widget not added\n stickersContent = this._defaultStickerpickerContent();\n }\n return stickersContent;\n }\n\n /**\n * Show the sticker picker overlay\n * If no stickerpacks have been added, show a link to the integration manager add sticker packs page.\n * @param {Event} e Event that triggered the function\n */\n\n }, {\n key: '_onShowStickersClick',\n value: function _onShowStickersClick(e) {\n // XXX: Simplify by using a context menu that is positioned relative to the sticker picker button\n\n var buttonRect = e.target.getBoundingClientRect();\n\n // The window X and Y offsets are to adjust position when zoomed in to page\n var x = buttonRect.right + window.pageXOffset - 41;\n\n // Amount of horizontal space between the right of menu and the right of the viewport\n // (10 = amount needed to make chevron centrally aligned)\n var rightPad = 10;\n\n // When the sticker picker would be displayed off of the viewport, adjust x\n // (302 = width of context menu, including borders)\n x = Math.min(x, document.body.clientWidth - (302 + rightPad));\n\n // Offset the chevron location, which is relative to the left of the context menu\n // (10 = offset when context menu would not be displayed off viewport)\n // (8 = value required in practice (possibly 10 - 2 where the 2 = context menu borders)\n var stickerPickerChevronOffset = Math.max(10, 8 + window.pageXOffset + buttonRect.left - x);\n\n var y = buttonRect.top + buttonRect.height / 2 + window.pageYOffset - 19;\n\n this.setState({\n showStickers: true,\n stickerPickerX: x,\n stickerPickerY: y,\n stickerPickerChevronOffset: stickerPickerChevronOffset\n });\n }\n\n /**\n * Trigger hiding of the sticker picker overlay\n * @param {Event} ev Event that triggered the function call\n */\n\n }, {\n key: '_onHideStickersClick',\n value: function _onHideStickersClick(ev) {\n this.setState({ showStickers: false });\n }\n\n /**\n * Called when the window is resized\n */\n\n }, {\n key: '_onResize',\n value: function _onResize() {\n this.setState({ showStickers: false });\n }\n\n /**\n * The stickers picker was hidden\n */\n\n }, {\n key: '_onFinished',\n value: function _onFinished() {\n this.setState({ showStickers: false });\n }\n\n /**\n * Launch the integrations manager on the stickers integration page\n */\n\n }, {\n key: '_launchManageIntegrations',\n value: function _launchManageIntegrations() {\n // TODO: Open the right integration manager for the widget\n if (_SettingsStore2.default.isFeatureEnabled(\"feature_many_integration_managers\")) {\n _IntegrationManagers.IntegrationManagers.sharedInstance().openAll(this.props.room, 'type_' + widgetType, this.state.widgetId);\n } else {\n _IntegrationManagers.IntegrationManagers.sharedInstance().getPrimaryManager().open(this.props.room, 'type_' + widgetType, this.state.widgetId);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var ContextualMenu = _index2.default.getComponent('structures.ContextualMenu');\n var GenericElementContextMenu = _index2.default.getComponent('context_menus.GenericElementContextMenu');\n var stickersButton = void 0;\n\n var stickerPicker = _react2.default.createElement(ContextualMenu, {\n elementClass: GenericElementContextMenu,\n chevronOffset: this.state.stickerPickerChevronOffset,\n chevronFace: 'bottom',\n left: this.state.stickerPickerX,\n top: this.state.stickerPickerY,\n menuWidth: this.popoverWidth,\n menuHeight: this.popoverHeight,\n element: this._getStickerpickerContent(),\n onFinished: this._onFinished,\n menuPaddingTop: 0,\n menuPaddingLeft: 0,\n menuPaddingRight: 0,\n zIndex: STICKERPICKER_Z_INDEX\n });\n\n if (this.state.showStickers) {\n // Show hide-stickers button\n stickersButton = _react2.default.createElement(_AccessibleButton2.default, {\n id: 'stickersButton',\n key: 'controls_hide_stickers',\n className: 'mx_MessageComposer_button mx_MessageComposer_stickers mx_Stickers_hideStickers',\n onClick: this._onHideStickersClick,\n title: (0, _languageHandler._t)(\"Hide Stickers\")\n });\n } else {\n // Show show-stickers button\n stickersButton = _react2.default.createElement(_AccessibleButton2.default, {\n id: 'stickersButton',\n key: 'controls_show_stickers',\n className: 'mx_MessageComposer_button mx_MessageComposer_stickers',\n onClick: this._onShowStickersClick,\n title: (0, _languageHandler._t)(\"Show Stickers\")\n });\n }\n return _react2.default.createElement(\n _react2.default.Fragment,\n null,\n stickersButton,\n this.state.showStickers && stickerPicker\n );\n }\n }]);\n return Stickerpicker;\n}(_react2.default.Component);\n\nexports.default = Stickerpicker;\nmodule.exports = exports['default'];\n//# sourceMappingURL=Stickerpicker.js.map","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _RoomViewStore = require('../../../stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _Permalinks = require('../../../utils/permalinks/Permalinks');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction cancelQuoting() {\n _dispatcher2.default.dispatch({\n action: 'reply_to_event',\n event: null\n });\n}\n\nvar ReplyPreview = function (_React$Component) {\n (0, _inherits3.default)(ReplyPreview, _React$Component);\n\n function ReplyPreview(props, context) {\n (0, _classCallCheck3.default)(this, ReplyPreview);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (ReplyPreview.__proto__ || (0, _getPrototypeOf2.default)(ReplyPreview)).call(this, props, context));\n\n _this.unmounted = false;\n\n _this.state = {\n event: _RoomViewStore2.default.getQuotingEvent()\n };\n\n _this._onRoomViewStoreUpdate = _this._onRoomViewStoreUpdate.bind(_this);\n _this._roomStoreToken = _RoomViewStore2.default.addListener(_this._onRoomViewStoreUpdate);\n return _this;\n }\n\n (0, _createClass3.default)(ReplyPreview, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unmounted = true;\n\n // Remove RoomStore listener\n if (this._roomStoreToken) {\n this._roomStoreToken.remove();\n }\n }\n }, {\n key: '_onRoomViewStoreUpdate',\n value: function _onRoomViewStoreUpdate() {\n if (this.unmounted) return;\n\n var event = _RoomViewStore2.default.getQuotingEvent();\n if (this.state.event !== event) {\n this.setState({ event: event });\n }\n }\n }, {\n key: 'render',\n value: function render() {\n if (!this.state.event) return null;\n\n var EventTile = _index2.default.getComponent('rooms.EventTile');\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_ReplyPreview' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_ReplyPreview_section' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_ReplyPreview_header mx_ReplyPreview_title' },\n '💬 ' + (0, _languageHandler._t)('Replying')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_ReplyPreview_header mx_ReplyPreview_cancel' },\n _react2.default.createElement('img', { className: 'mx_filterFlipColor', src: require(\"../../../../res/img/cancel.svg\"), width: '18', height: '18',\n onClick: cancelQuoting })\n ),\n _react2.default.createElement('div', { className: 'mx_ReplyPreview_clear' }),\n _react2.default.createElement(EventTile, { last: true,\n tileShape: 'reply_preview',\n mxEvent: this.state.event,\n permalinkCreator: this.props.permalinkCreator,\n isTwelveHour: _SettingsStore2.default.getValue(\"showTwelveHourTimestamps\") })\n )\n );\n }\n }]);\n return ReplyPreview;\n}(_react2.default.Component);\n\nReplyPreview.propTypes = {\n permalinkCreator: _propTypes2.default.instanceOf(_Permalinks.RoomPermalinkCreator).isRequired\n};\nexports.default = ReplyPreview;\nmodule.exports = exports['default'];\n//# sourceMappingURL=ReplyPreview.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar StandardActions = require('./StandardActions');\nvar NotificationUtils = require('./NotificationUtils');\n\nvar states = {\n /** The push rule is disabled */\n OFF: \"off\",\n\n /** The user will receive push notification for this rule */\n ON: \"on\",\n\n /** The user will receive push notification for this rule with sound and\n highlight if this is legitimate */\n LOUD: \"loud\"\n};\n\nmodule.exports = {\n /**\n * Enum for state of a push rule as defined by the Vector UI.\n * @readonly\n * @enum {string}\n */\n states: states,\n\n /**\n * Convert a PushRuleVectorState to a list of actions\n *\n * @return [object] list of push-rule actions\n */\n actionsFor: function actionsFor(pushRuleVectorState) {\n if (pushRuleVectorState === this.ON) {\n return StandardActions.ACTION_NOTIFY;\n } else if (pushRuleVectorState === this.LOUD) {\n return StandardActions.ACTION_HIGHLIGHT_DEFAULT_SOUND;\n }\n },\n\n /**\n * Convert a pushrule's actions to a PushRuleVectorState.\n *\n * Determines whether a content rule is in the PushRuleVectorState.ON\n * category or in PushRuleVectorState.LOUD, regardless of its enabled\n * state. Returns null if it does not match these categories.\n */\n contentRuleVectorStateKind: function contentRuleVectorStateKind(rule) {\n var decoded = NotificationUtils.decodeActions(rule.actions);\n\n if (!decoded) {\n return null;\n }\n\n // Count tweaks to determine if it is a ON or LOUD rule\n var tweaks = 0;\n if (decoded.sound) {\n tweaks++;\n }\n if (decoded.highlight) {\n tweaks++;\n }\n var stateKind = null;\n switch (tweaks) {\n case 0:\n stateKind = this.ON;\n break;\n case 2:\n stateKind = this.LOUD;\n break;\n }\n return stateKind;\n }\n};\n\nfor (var k in states) {\n module.exports[k] = states[k];\n}\n//# sourceMappingURL=PushRuleVectorState.js.map","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","import isPlainObject from 'lodash-es/isPlainObject';\nimport $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nexport var ActionTypes = {\n INIT: '@@redux/INIT'\n\n /**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n};export default function createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n function getState() {\n return currentState;\n }\n\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected listener to be a function.');\n }\n\n var isSubscribed = true;\n\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n isSubscribed = false;\n\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({ type: ActionTypes.INIT });\n }\n\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object') {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return { unsubscribe: unsubscribe };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n }\n\n // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n dispatch({ type: ActionTypes.INIT });\n\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}","import { ActionTypes } from './createStore';\nimport isPlainObject from 'lodash-es/isPlainObject';\nimport warning from './utils/warning';\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionName = actionType && '\"' + actionType.toString() + '\"' || 'an action';\n\n return 'Given action ' + actionName + ', reducer \"' + key + '\" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state. ' + 'If you want this reducer to hold no value, you can return null instead of undefined.';\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return 'The ' + argumentName + ' has unexpected type of \"' + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + '\". Expected argument to be an object with the following ' + ('keys: \"' + reducerKeys.join('\", \"') + '\"');\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n\n if (unexpectedKeys.length > 0) {\n return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('\"' + unexpectedKeys.join('\", \"') + '\" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('\"' + reducerKeys.join('\", \"') + '\". Unexpected keys will be ignored.');\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, { type: ActionTypes.INIT });\n\n if (typeof initialState === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined. If you don\\'t want to set a value for this reducer, ' + 'you can use null instead of undefined.');\n }\n\n var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');\n if (typeof reducer(undefined, { type: type }) === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined when probed with a random type. ' + ('Don\\'t try to handle ' + ActionTypes.INIT + ' or other actions in \"redux/*\" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined, but can be null.');\n }\n });\n}\n\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\nexport default function combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning('No reducer provided for key \"' + key + '\"');\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n var finalReducerKeys = Object.keys(finalReducers);\n\n var unexpectedKeyCache = void 0;\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError = void 0;\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n return hasChanged ? nextState : state;\n };\n}","function bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(undefined, arguments));\n };\n}\n\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\nexport default function bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?');\n }\n\n var keys = Object.keys(actionCreators);\n var boundActionCreators = {};\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var actionCreator = actionCreators[key];\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n return boundActionCreators;\n}","/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\n\nexport default function compose() {\n for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(undefined, arguments));\n };\n });\n}","var _extends = Object.assign || 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; };\n\nimport compose from './compose';\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\nexport default function applyMiddleware() {\n for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function (reducer, preloadedState, enhancer) {\n var store = createStore(reducer, preloadedState, enhancer);\n var _dispatch = store.dispatch;\n var chain = [];\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch(action) {\n return _dispatch(action);\n }\n };\n chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(undefined, chain)(store.dispatch);\n\n return _extends({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}","import createStore from './createStore';\nimport combineReducers from './combineReducers';\nimport bindActionCreators from './bindActionCreators';\nimport applyMiddleware from './applyMiddleware';\nimport compose from './compose';\nimport warning from './utils/warning';\n\n/*\n* This is a dummy function to check if the function name has been altered by minification.\n* If the function has been minified and NODE_ENV !== 'production', warn the user.\n*/\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \\'production\\'. ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or DefinePlugin for webpack (http://stackoverflow.com/questions/30030031) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { createStore, combineReducers, bindActionCreators, applyMiddleware, compose };","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","/*! https://mths.be/esrever v0.2.0 by @mathias */\n;(function(root) {\n\n\t// Detect free variables `exports`\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code,\n\t// and use it as `root`\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar regexSymbolWithCombiningMarks = /([\\0-\\u02FF\\u0370-\\u1AAF\\u1B00-\\u1DBF\\u1E00-\\u20CF\\u2100-\\uD7FF\\uE000-\\uFE1F\\uFE30-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])([\\u0300-\\u036F\\u1AB0-\\u1AFF\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F]+)/g;\n\tvar regexSurrogatePair = /([\\uD800-\\uDBFF])([\\uDC00-\\uDFFF])/g;\n\n\tvar reverse = function(string) {\n\t\t// Step 1: deal with combining marks and astral symbols (surrogate pairs)\n\t\tstring = string\n\t\t\t// Swap symbols with their combining marks so the combining marks go first\n\t\t\t.replace(regexSymbolWithCombiningMarks, function($0, $1, $2) {\n\t\t\t\t// Reverse the combining marks so they will end up in the same order\n\t\t\t\t// later on (after another round of reversing)\n\t\t\t\treturn reverse($2) + $1;\n\t\t\t})\n\t\t\t// Swap high and low surrogates so the low surrogates go first\n\t\t\t.replace(regexSurrogatePair, '$2$1');\n\t\t// Step 2: reverse the code units in the string\n\t\tvar result = '';\n\t\tvar index = string.length;\n\t\twhile (index--) {\n\t\t\tresult += string.charAt(index);\n\t\t}\n\t\treturn result;\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar esrever = {\n\t\t'version': '0.2.0',\n\t\t'reverse': reverse\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn esrever;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = esrever;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in esrever) {\n\t\t\t\tesrever.hasOwnProperty(key) && (freeExports[key] = esrever[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.esrever = esrever;\n\t}\n\n}(this));\n","var arrayMap = require('./_arrayMap'),\n baseClone = require('./_baseClone'),\n baseUnset = require('./_baseUnset'),\n castPath = require('./_castPath'),\n copyObject = require('./_copyObject'),\n customOmitClone = require('./_customOmitClone'),\n flatRest = require('./_flatRest'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n});\n\nmodule.exports = omit;\n","/**\n * This is a straight rip-off of the React.js ReactPropTypes.js proptype validators,\n * modified to make it possible to validate Immutable.js data.\n * ImmutableTypes.listOf is patterned after React.PropTypes.arrayOf, but for Immutable.List\n * ImmutableTypes.shape is based on React.PropTypes.shape, but for any Immutable.Iterable\n */\n\"use strict\";\n\nvar Immutable = require(\"immutable\");\n\nvar ANONYMOUS = \"<>\";\n\nvar ImmutablePropTypes = {\n listOf: createListOfTypeChecker,\n mapOf: createMapOfTypeChecker,\n orderedMapOf: createOrderedMapOfTypeChecker,\n setOf: createSetOfTypeChecker,\n orderedSetOf: createOrderedSetOfTypeChecker,\n stackOf: createStackOfTypeChecker,\n iterableOf: createIterableOfTypeChecker,\n recordOf: createRecordOfTypeChecker,\n shape: createShapeChecker,\n contains: createShapeChecker,\n mapContains: createMapContainsChecker,\n // Primitive Types\n list: createImmutableTypeChecker(\"List\", Immutable.List.isList),\n map: createImmutableTypeChecker(\"Map\", Immutable.Map.isMap),\n orderedMap: createImmutableTypeChecker(\"OrderedMap\", Immutable.OrderedMap.isOrderedMap),\n set: createImmutableTypeChecker(\"Set\", Immutable.Set.isSet),\n orderedSet: createImmutableTypeChecker(\"OrderedSet\", Immutable.OrderedSet.isOrderedSet),\n stack: createImmutableTypeChecker(\"Stack\", Immutable.Stack.isStack),\n seq: createImmutableTypeChecker(\"Seq\", Immutable.Seq.isSeq),\n record: createImmutableTypeChecker(\"Record\", function (isRecord) {\n return isRecord instanceof Immutable.Record;\n }),\n iterable: createImmutableTypeChecker(\"Iterable\", Immutable.Iterable.isIterable)\n};\n\nfunction getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return \"array\";\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return \"object\";\n }\n if (propValue instanceof Immutable.Iterable) {\n return \"Immutable.\" + propValue.toSource().split(\" \")[0];\n }\n return propType;\n}\n\nfunction createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location, propFullName) {\n for (var _len = arguments.length, rest = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n rest[_key - 6] = arguments[_key];\n }\n\n propFullName = propFullName || propName;\n componentName = componentName || ANONYMOUS;\n if (props[propName] == null) {\n var locationName = location;\n if (isRequired) {\n return new Error(\"Required \" + locationName + \" `\" + propFullName + \"` was not specified in \" + (\"`\" + componentName + \"`.\"));\n }\n } else {\n return validate.apply(undefined, [props, propName, componentName, location, propFullName].concat(rest));\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n}\n\nfunction createImmutableTypeChecker(immutableClassName, immutableClassTypeValidator) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!immutableClassTypeValidator(propValue)) {\n var propType = getPropType(propValue);\n return new Error(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + propType + \"` \" + (\"supplied to `\" + componentName + \"`, expected `\" + immutableClassName + \"`.\"));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createIterableTypeChecker(typeChecker, immutableClassName, immutableClassTypeValidator) {\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var _len = arguments.length, rest = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n rest[_key - 5] = arguments[_key];\n }\n\n var propValue = props[propName];\n if (!immutableClassTypeValidator(propValue)) {\n var locationName = location;\n var propType = getPropType(propValue);\n return new Error(\"Invalid \" + locationName + \" `\" + propFullName + \"` of type \" + (\"`\" + propType + \"` supplied to `\" + componentName + \"`, expected an Immutable.js \" + immutableClassName + \".\"));\n }\n\n if (typeof typeChecker !== \"function\") {\n return new Error(\"Invalid typeChecker supplied to `\" + componentName + \"` \" + (\"for propType `\" + propFullName + \"`, expected a function.\"));\n }\n\n var propValues = propValue.toArray();\n for (var i = 0, len = propValues.length; i < len; i++) {\n var error = typeChecker.apply(undefined, [propValues, i, componentName, location, \"\" + propFullName + \"[\" + i + \"]\"].concat(rest));\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createKeysTypeChecker(typeChecker) {\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var _len = arguments.length, rest = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n rest[_key - 5] = arguments[_key];\n }\n\n var propValue = props[propName];\n if (typeof typeChecker !== \"function\") {\n return new Error(\"Invalid keysTypeChecker (optional second argument) supplied to `\" + componentName + \"` \" + (\"for propType `\" + propFullName + \"`, expected a function.\"));\n }\n\n var keys = propValue.keySeq().toArray();\n for (var i = 0, len = keys.length; i < len; i++) {\n var error = typeChecker.apply(undefined, [keys, i, componentName, location, \"\" + propFullName + \" -> key(\" + keys[i] + \")\"].concat(rest));\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createListOfTypeChecker(typeChecker) {\n return createIterableTypeChecker(typeChecker, \"List\", Immutable.List.isList);\n}\n\nfunction createMapOfTypeCheckerFactory(valuesTypeChecker, keysTypeChecker, immutableClassName, immutableClassTypeValidator) {\n function validate() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return createIterableTypeChecker(valuesTypeChecker, immutableClassName, immutableClassTypeValidator).apply(undefined, args) || keysTypeChecker && createKeysTypeChecker(keysTypeChecker).apply(undefined, args);\n }\n\n return createChainableTypeChecker(validate);\n}\n\nfunction createMapOfTypeChecker(valuesTypeChecker, keysTypeChecker) {\n return createMapOfTypeCheckerFactory(valuesTypeChecker, keysTypeChecker, \"Map\", Immutable.Map.isMap);\n}\n\nfunction createOrderedMapOfTypeChecker(valuesTypeChecker, keysTypeChecker) {\n return createMapOfTypeCheckerFactory(valuesTypeChecker, keysTypeChecker, \"OrderedMap\", Immutable.OrderedMap.isOrderedMap);\n}\n\nfunction createSetOfTypeChecker(typeChecker) {\n return createIterableTypeChecker(typeChecker, \"Set\", Immutable.Set.isSet);\n}\n\nfunction createOrderedSetOfTypeChecker(typeChecker) {\n return createIterableTypeChecker(typeChecker, \"OrderedSet\", Immutable.OrderedSet.isOrderedSet);\n}\n\nfunction createStackOfTypeChecker(typeChecker) {\n return createIterableTypeChecker(typeChecker, \"Stack\", Immutable.Stack.isStack);\n}\n\nfunction createIterableOfTypeChecker(typeChecker) {\n return createIterableTypeChecker(typeChecker, \"Iterable\", Immutable.Iterable.isIterable);\n}\n\nfunction createRecordOfTypeChecker(recordKeys) {\n function validate(props, propName, componentName, location, propFullName) {\n for (var _len = arguments.length, rest = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n rest[_key - 5] = arguments[_key];\n }\n\n var propValue = props[propName];\n if (!(propValue instanceof Immutable.Record)) {\n var propType = getPropType(propValue);\n var locationName = location;\n return new Error(\"Invalid \" + locationName + \" `\" + propFullName + \"` of type `\" + propType + \"` \" + (\"supplied to `\" + componentName + \"`, expected an Immutable.js Record.\"));\n }\n for (var key in recordKeys) {\n var checker = recordKeys[key];\n if (!checker) {\n continue;\n }\n var mutablePropValue = propValue.toObject();\n var error = checker.apply(undefined, [mutablePropValue, key, componentName, location, \"\" + propFullName + \".\" + key].concat(rest));\n if (error) {\n return error;\n }\n }\n }\n return createChainableTypeChecker(validate);\n}\n\n// there is some irony in the fact that shapeTypes is a standard hash and not an immutable collection\nfunction createShapeTypeChecker(shapeTypes) {\n var immutableClassName = arguments[1] === undefined ? \"Iterable\" : arguments[1];\n var immutableClassTypeValidator = arguments[2] === undefined ? Immutable.Iterable.isIterable : arguments[2];\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var _len = arguments.length, rest = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n rest[_key - 5] = arguments[_key];\n }\n\n var propValue = props[propName];\n if (!immutableClassTypeValidator(propValue)) {\n var propType = getPropType(propValue);\n var locationName = location;\n return new Error(\"Invalid \" + locationName + \" `\" + propFullName + \"` of type `\" + propType + \"` \" + (\"supplied to `\" + componentName + \"`, expected an Immutable.js \" + immutableClassName + \".\"));\n }\n var mutablePropValue = propValue.toObject();\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker.apply(undefined, [mutablePropValue, key, componentName, location, \"\" + propFullName + \".\" + key].concat(rest));\n if (error) {\n return error;\n }\n }\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createShapeChecker(shapeTypes) {\n return createShapeTypeChecker(shapeTypes);\n}\n\nfunction createMapContainsChecker(shapeTypes) {\n return createShapeTypeChecker(shapeTypes, \"Map\", Immutable.Map.isMap);\n}\n\nmodule.exports = ImmutablePropTypes;","'use strict';\n\nexports.atob = self.atob.bind(self);\nexports.btoa = self.btoa.bind(self);\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","exports.f = require('./_wks');\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","var $parseInt = require('./_global').parseInt;\nvar $trim = require('./_string-trim').trim;\nvar ws = require('./_string-ws');\nvar hex = /^[-+]?0[xX]/;\n\nmodule.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {\n var string = $trim(String(str), 3);\n return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));\n} : $parseInt;\n","var $parseFloat = require('./_global').parseFloat;\nvar $trim = require('./_string-trim').trim;\n\nmodule.exports = 1 / $parseFloat(require('./_string-ws') + '-0') !== -Infinity ? function parseFloat(str) {\n var string = $trim(String(str), 3);\n var result = $parseFloat(string);\n return result === 0 && string.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","var cof = require('./_cof');\nmodule.exports = function (it, msg) {\n if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);\n return +it;\n};\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","// 20.2.2.20 Math.log1p(x)\nmodule.exports = Math.log1p || function log1p(x) {\n return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);\n};\n","// 20.2.2.16 Math.fround(x)\nvar sign = require('./_math-sign');\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n return n + 1 / EPSILON - 1 / EPSILON;\n};\n\nmodule.exports = Math.fround || function fround(x) {\n var $abs = Math.abs(x);\n var $sign = sign(x);\n var a, result;\n if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n a = (1 + EPSILON32 / EPSILON) * $abs;\n result = a - (a - $abs);\n // eslint-disable-next-line no-self-compare\n if (result > MAX32 || result != result) return $sign * Infinity;\n return $sign * result;\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","var aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar toLength = require('./_to-length');\n\nmodule.exports = function (that, callbackfn, aLen, memo, isRight) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IObject(O);\n var length = toLength(O.length);\n var index = isRight ? length - 1 : 0;\n var i = isRight ? -1 : 1;\n if (aLen < 2) for (;;) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (isRight ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n};\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\n\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n","// 21.2.5.3 get RegExp.prototype.flags()\nif (require('./_descriptors') && /./g.flags != 'g') require('./_object-dp').f(RegExp.prototype, 'flags', {\n configurable: true,\n get: require('./_flags')\n});\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","'use strict';\nvar global = require('./_global');\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar validate = require('./_validate-collection');\nvar NATIVE_WEAK_MAP = require('./_validate-collection');\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length!');\n return length;\n};\n","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar isArray = require('./_is-array');\nvar isObject = require('./_is-object');\nvar toLength = require('./_to-length');\nvar ctx = require('./_ctx');\nvar IS_CONCAT_SPREADABLE = require('./_wks')('isConcatSpreadable');\n\nfunction flattenIntoArray(target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? ctx(mapper, thisArg, 3) : false;\n var element, spreadable;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n spreadable = false;\n if (isObject(element)) {\n spreadable = element[IS_CONCAT_SPREADABLE];\n spreadable = spreadable !== undefined ? !!spreadable : isArray(element);\n }\n\n if (spreadable && depth > 0) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1fffffffffffff) throw TypeError();\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n}\n\nmodule.exports = flattenIntoArray;\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('./_to-length');\nvar repeat = require('./_string-repeat');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, maxLength, fillString, left) {\n var S = String(defined(that));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n if (intMaxLength <= stringLength || fillStr == '') return S;\n var fillLen = intMaxLength - stringLength;\n var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return left ? stringFiller + S : S + stringFiller;\n};\n","var DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || isEnum.call(O, key)) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar classof = require('./_classof');\nvar from = require('./_array-from-iterable');\nmodule.exports = function (NAME) {\n return function toJSON() {\n if (classof(this) != NAME) throw TypeError(NAME + \"#toJSON isn't generic\");\n return from(this);\n };\n};\n","var forOf = require('./_for-of');\n\nmodule.exports = function (iter, ITERATOR) {\n var result = [];\n forOf(iter, false, result.push, result, ITERATOR);\n return result;\n};\n","// https://rwaldron.github.io/proposal-math-extensions/\nmodule.exports = Math.scale || function scale(x, inLow, inHigh, outLow, outHigh) {\n if (\n arguments.length === 0\n // eslint-disable-next-line no-self-compare\n || x != x\n // eslint-disable-next-line no-self-compare\n || inLow != inLow\n // eslint-disable-next-line no-self-compare\n || inHigh != inHigh\n // eslint-disable-next-line no-self-compare\n || outLow != outLow\n // eslint-disable-next-line no-self-compare\n || outHigh != outHigh\n ) return NaN;\n if (x === Infinity || x === -Infinity) return x;\n return (x - inLow) * (outHigh - outLow) / (inHigh - inLow) + outLow;\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/get-own-property-descriptor\"), __esModule: true };","'use strict';\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _CallHandler = require('./CallHandler');\n\nvar _CallHandler2 = _interopRequireDefault(_CallHandler);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// FIXME: this is Riot (Vector) specific code, but will be removed shortly when\n// we switch over to jitsi entirely for video conferencing.\n\n// FIXME: This currently forces Vector to try to hit the matrix.org AS for conferencing.\n// This is bad because it prevents people running their own ASes from being used.\n// This isn't permanent and will be customisable in the future: see the proposal\n// at docs/conferencing.md for more info.\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar USER_PREFIX = \"fs_\";\nvar DOMAIN = \"matrix.org\";\n\nfunction ConferenceCall(matrixClient, groupChatRoomId) {\n this.client = matrixClient;\n this.groupRoomId = groupChatRoomId;\n this.confUserId = module.exports.getConferenceUserIdForRoom(this.groupRoomId);\n}\n\nConferenceCall.prototype.setup = function () {\n var self = this;\n return this._joinConferenceUser().then(function () {\n return self._getConferenceUserRoom();\n }).then(function (room) {\n // return a call for *this* room to be placed. We also tack on\n // confUserId to speed up lookups (else we'd need to loop every room\n // looking for a 1:1 room with this conf user ID!)\n var call = (0, _matrixJsSdk.createNewMatrixCall)(self.client, room.roomId);\n call.confUserId = self.confUserId;\n call.groupRoomId = self.groupRoomId;\n return call;\n });\n};\n\nConferenceCall.prototype._joinConferenceUser = function () {\n // Make sure the conference user is in the group chat room\n var groupRoom = this.client.getRoom(this.groupRoomId);\n if (!groupRoom) {\n return _bluebird2.default.reject(\"Bad group room ID\");\n }\n var member = groupRoom.getMember(this.confUserId);\n if (member && member.membership === \"join\") {\n return _bluebird2.default.resolve();\n }\n return this.client.invite(this.groupRoomId, this.confUserId);\n};\n\nConferenceCall.prototype._getConferenceUserRoom = function () {\n // Use an existing 1:1 with the conference user; else make one\n var rooms = this.client.getRooms();\n var confRoom = null;\n for (var i = 0; i < rooms.length; i++) {\n var confUser = rooms[i].getMember(this.confUserId);\n if (confUser && confUser.membership === \"join\" && rooms[i].getJoinedMemberCount() === 2) {\n confRoom = rooms[i];\n break;\n }\n }\n if (confRoom) {\n return _bluebird2.default.resolve(confRoom);\n }\n return this.client.createRoom({\n preset: \"private_chat\",\n invite: [this.confUserId]\n }).then(function (res) {\n return new _matrixJsSdk.Room(res.room_id, null, _MatrixClientPeg2.default.get().getUserId());\n });\n};\n\n/**\n * Check if this user ID is in fact a conference bot.\n * @param {string} userId The user ID to check.\n * @return {boolean} True if it is a conference bot.\n */\nmodule.exports.isConferenceUser = function (userId) {\n if (userId.indexOf(\"@\" + USER_PREFIX) !== 0) {\n return false;\n }\n var base64part = userId.split(\":\")[0].substring(1 + USER_PREFIX.length);\n if (base64part) {\n var decoded = new Buffer(base64part, \"base64\").toString();\n // ! $STUFF : $STUFF\n return (/^!.+:.+/.test(decoded)\n );\n }\n return false;\n};\n\nmodule.exports.getConferenceUserIdForRoom = function (roomId) {\n // abuse browserify's core node Buffer support (strip padding ='s)\n var base64RoomId = new Buffer(roomId).toString(\"base64\").replace(/=/g, \"\");\n return \"@\" + USER_PREFIX + base64RoomId + \":\" + DOMAIN;\n};\n\nmodule.exports.createNewMatrixCall = function (client, roomId) {\n var confCall = new ConferenceCall(client, roomId);\n return confCall.setup();\n};\n\nmodule.exports.getConferenceCallForRoom = function (roomId) {\n // search for a conference 1:1 call for this group chat room ID\n var activeCall = _CallHandler2.default.getAnyActiveCall();\n if (activeCall && activeCall.confUserId) {\n var thisRoomConfUserId = module.exports.getConferenceUserIdForRoom(roomId);\n if (thisRoomConfUserId === activeCall.confUserId) {\n return activeCall;\n }\n }\n return null;\n};\n\nmodule.exports.ConferenceCall = ConferenceCall;\n\nmodule.exports.slot = 'conference';\n//# sourceMappingURL=VectorConferenceHandler.js.map","/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/** @module ContentHelpers */\n\nmodule.exports = {\n /**\n * Generates the content for a HTML Message event\n * @param {string} body the plaintext body of the message\n * @param {string} htmlBody the HTML representation of the message\n * @returns {{msgtype: string, format: string, body: string, formatted_body: string}}\n */\n makeHtmlMessage: function makeHtmlMessage(body, htmlBody) {\n return {\n msgtype: \"m.text\",\n format: \"org.matrix.custom.html\",\n body: body,\n formatted_body: htmlBody\n };\n },\n\n /**\n * Generates the content for a HTML Notice event\n * @param {string} body the plaintext body of the notice\n * @param {string} htmlBody the HTML representation of the notice\n * @returns {{msgtype: string, format: string, body: string, formatted_body: string}}\n */\n makeHtmlNotice: function makeHtmlNotice(body, htmlBody) {\n return {\n msgtype: \"m.notice\",\n format: \"org.matrix.custom.html\",\n body: body,\n formatted_body: htmlBody\n };\n },\n\n /**\n * Generates the content for a HTML Emote event\n * @param {string} body the plaintext body of the emote\n * @param {string} htmlBody the HTML representation of the emote\n * @returns {{msgtype: string, format: string, body: string, formatted_body: string}}\n */\n makeHtmlEmote: function makeHtmlEmote(body, htmlBody) {\n return {\n msgtype: \"m.emote\",\n format: \"org.matrix.custom.html\",\n body: body,\n formatted_body: htmlBody\n };\n },\n\n /**\n * Generates the content for a Plaintext Message event\n * @param {string} body the plaintext body of the emote\n * @returns {{msgtype: string, body: string}}\n */\n makeTextMessage: function makeTextMessage(body) {\n return {\n msgtype: \"m.text\",\n body: body\n };\n },\n\n /**\n * Generates the content for a Plaintext Notice event\n * @param {string} body the plaintext body of the notice\n * @returns {{msgtype: string, body: string}}\n */\n makeNotice: function makeNotice(body) {\n return {\n msgtype: \"m.notice\",\n body: body\n };\n },\n\n /**\n * Generates the content for a Plaintext Emote event\n * @param {string} body the plaintext body of the emote\n * @returns {{msgtype: string, body: string}}\n */\n makeEmoteMessage: function makeEmoteMessage(body) {\n return {\n msgtype: \"m.emote\",\n body: body\n };\n }\n};\n//# sourceMappingURL=content-helpers.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * This is an internal module. See {@link MemoryStore} for the public class.\n * @module store/memory\n */\n\nvar _assign = require(\"babel-runtime/core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar utils = require(\"../utils\");\nvar User = require(\"../models/user\");\n\n\n/**\n * Construct a new in-memory data store for the Matrix Client.\n * @constructor\n * @param {Object=} opts Config options\n * @param {LocalStorage} opts.localStorage The local storage instance to persist\n * some forms of data such as tokens. Rooms will NOT be stored.\n */\nmodule.exports.MemoryStore = function MemoryStore(opts) {\n opts = opts || {};\n this.rooms = {\n // roomId: Room\n };\n this.groups = {\n // groupId: Group\n };\n this.users = {\n // userId: User\n };\n this.syncToken = null;\n this.filters = {\n // userId: {\n // filterId: Filter\n // }\n };\n this.accountData = {\n // type : content\n };\n this.localStorage = opts.localStorage;\n this._oobMembers = {\n // roomId: [member events]\n };\n this._clientOptions = {};\n};\n\nmodule.exports.MemoryStore.prototype = {\n\n /**\n * Retrieve the token to stream from.\n * @return {string} The token or null.\n */\n getSyncToken: function getSyncToken() {\n return this.syncToken;\n },\n\n /** @return {Promise} whether or not the database was newly created in this session. */\n isNewlyCreated: function isNewlyCreated() {\n return _bluebird2.default.resolve(true);\n },\n\n /**\n * Set the token to stream from.\n * @param {string} token The token to stream from.\n */\n setSyncToken: function setSyncToken(token) {\n this.syncToken = token;\n },\n\n /**\n * Store the given room.\n * @param {Group} group The group to be stored\n */\n storeGroup: function storeGroup(group) {\n this.groups[group.groupId] = group;\n },\n\n /**\n * Retrieve a group by its group ID.\n * @param {string} groupId The group ID.\n * @return {Group} The group or null.\n */\n getGroup: function getGroup(groupId) {\n return this.groups[groupId] || null;\n },\n\n /**\n * Retrieve all known groups.\n * @return {Group[]} A list of groups, which may be empty.\n */\n getGroups: function getGroups() {\n return utils.values(this.groups);\n },\n\n /**\n * Store the given room.\n * @param {Room} room The room to be stored. All properties must be stored.\n */\n storeRoom: function storeRoom(room) {\n this.rooms[room.roomId] = room;\n // add listeners for room member changes so we can keep the room member\n // map up-to-date.\n room.currentState.on(\"RoomState.members\", this._onRoomMember.bind(this));\n // add existing members\n var self = this;\n room.currentState.getMembers().forEach(function (m) {\n self._onRoomMember(null, room.currentState, m);\n });\n },\n\n /**\n * Called when a room member in a room being tracked by this store has been\n * updated.\n * @param {MatrixEvent} event\n * @param {RoomState} state\n * @param {RoomMember} member\n */\n _onRoomMember: function _onRoomMember(event, state, member) {\n if (member.membership === \"invite\") {\n // We do NOT add invited members because people love to typo user IDs\n // which would then show up in these lists (!)\n return;\n }\n\n var user = this.users[member.userId] || new User(member.userId);\n if (member.name) {\n user.setDisplayName(member.name);\n if (member.events.member) {\n user.setRawDisplayName(member.events.member.getDirectionalContent().displayname);\n }\n }\n if (member.events.member && member.events.member.getContent().avatar_url) {\n user.setAvatarUrl(member.events.member.getContent().avatar_url);\n }\n this.users[user.userId] = user;\n },\n\n /**\n * Retrieve a room by its' room ID.\n * @param {string} roomId The room ID.\n * @return {Room} The room or null.\n */\n getRoom: function getRoom(roomId) {\n return this.rooms[roomId] || null;\n },\n\n /**\n * Retrieve all known rooms.\n * @return {Room[]} A list of rooms, which may be empty.\n */\n getRooms: function getRooms() {\n return utils.values(this.rooms);\n },\n\n /**\n * Permanently delete a room.\n * @param {string} roomId\n */\n removeRoom: function removeRoom(roomId) {\n if (this.rooms[roomId]) {\n this.rooms[roomId].removeListener(\"RoomState.members\", this._onRoomMember);\n }\n delete this.rooms[roomId];\n },\n\n /**\n * Retrieve a summary of all the rooms.\n * @return {RoomSummary[]} A summary of each room.\n */\n getRoomSummaries: function getRoomSummaries() {\n return utils.map(utils.values(this.rooms), function (room) {\n return room.summary;\n });\n },\n\n /**\n * Store a User.\n * @param {User} user The user to store.\n */\n storeUser: function storeUser(user) {\n this.users[user.userId] = user;\n },\n\n /**\n * Retrieve a User by its' user ID.\n * @param {string} userId The user ID.\n * @return {User} The user or null.\n */\n getUser: function getUser(userId) {\n return this.users[userId] || null;\n },\n\n /**\n * Retrieve all known users.\n * @return {User[]} A list of users, which may be empty.\n */\n getUsers: function getUsers() {\n return utils.values(this.users);\n },\n\n /**\n * Retrieve scrollback for this room.\n * @param {Room} room The matrix room\n * @param {integer} limit The max number of old events to retrieve.\n * @return {Array} An array of objects which will be at most 'limit'\n * length and at least 0. The objects are the raw event JSON.\n */\n scrollback: function scrollback(room, limit) {\n return [];\n },\n\n /**\n * Store events for a room. The events have already been added to the timeline\n * @param {Room} room The room to store events for.\n * @param {Array} events The events to store.\n * @param {string} token The token associated with these events.\n * @param {boolean} toStart True if these are paginated results.\n */\n storeEvents: function storeEvents(room, events, token, toStart) {\n // no-op because they've already been added to the room instance.\n },\n\n /**\n * Store a filter.\n * @param {Filter} filter\n */\n storeFilter: function storeFilter(filter) {\n if (!filter) {\n return;\n }\n if (!this.filters[filter.userId]) {\n this.filters[filter.userId] = {};\n }\n this.filters[filter.userId][filter.filterId] = filter;\n },\n\n /**\n * Retrieve a filter.\n * @param {string} userId\n * @param {string} filterId\n * @return {?Filter} A filter or null.\n */\n getFilter: function getFilter(userId, filterId) {\n if (!this.filters[userId] || !this.filters[userId][filterId]) {\n return null;\n }\n return this.filters[userId][filterId];\n },\n\n /**\n * Retrieve a filter ID with the given name.\n * @param {string} filterName The filter name.\n * @return {?string} The filter ID or null.\n */\n getFilterIdByName: function getFilterIdByName(filterName) {\n if (!this.localStorage) {\n return null;\n }\n try {\n return this.localStorage.getItem(\"mxjssdk_memory_filter_\" + filterName);\n } catch (e) {}\n return null;\n },\n\n /**\n * Set a filter name to ID mapping.\n * @param {string} filterName\n * @param {string} filterId\n */\n setFilterIdByName: function setFilterIdByName(filterName, filterId) {\n if (!this.localStorage) {\n return;\n }\n try {\n this.localStorage.setItem(\"mxjssdk_memory_filter_\" + filterName, filterId);\n } catch (e) {}\n },\n\n /**\n * Store user-scoped account data events.\n * N.B. that account data only allows a single event per type, so multiple\n * events with the same type will replace each other.\n * @param {Array} events The events to store.\n */\n storeAccountDataEvents: function storeAccountDataEvents(events) {\n var self = this;\n events.forEach(function (event) {\n self.accountData[event.getType()] = event;\n });\n },\n\n /**\n * Get account data event by event type\n * @param {string} eventType The event type being queried\n * @return {?MatrixEvent} the user account_data event of given type, if any\n */\n getAccountData: function getAccountData(eventType) {\n return this.accountData[eventType];\n },\n\n /**\n * setSyncData does nothing as there is no backing data store.\n *\n * @param {Object} syncData The sync data\n * @return {Promise} An immediately resolved promise.\n */\n setSyncData: function setSyncData(syncData) {\n return _bluebird2.default.resolve();\n },\n\n /**\n * We never want to save becase we have nothing to save to.\n *\n * @return {boolean} If the store wants to save\n */\n wantsSave: function wantsSave() {\n return false;\n },\n\n /**\n * Save does nothing as there is no backing data store.\n * @param {bool} force True to force a save (but the memory\n * store still can't save anything)\n */\n save: function save(force) {},\n\n /**\n * Startup does nothing as this store doesn't require starting up.\n * @return {Promise} An immediately resolved promise.\n */\n startup: function startup() {\n return _bluebird2.default.resolve();\n },\n\n /**\n * @return {Promise} Resolves with a sync response to restore the\n * client state to where it was at the last save, or null if there\n * is no saved sync data.\n */\n getSavedSync: function getSavedSync() {\n return _bluebird2.default.resolve(null);\n },\n\n /**\n * @return {Promise} If there is a saved sync, the nextBatch token\n * for this sync, otherwise null.\n */\n getSavedSyncToken: function getSavedSyncToken() {\n return _bluebird2.default.resolve(null);\n },\n\n /**\n * Delete all data from this store.\n * @return {Promise} An immediately resolved promise.\n */\n deleteAllData: function deleteAllData() {\n this.rooms = {\n // roomId: Room\n };\n this.users = {\n // userId: User\n };\n this.syncToken = null;\n this.filters = {\n // userId: {\n // filterId: Filter\n // }\n };\n this.accountData = {\n // type : content\n };\n return _bluebird2.default.resolve();\n },\n\n /**\n * Returns the out-of-band membership events for this room that\n * were previously loaded.\n * @param {string} roomId\n * @returns {event[]} the events, potentially an empty array if OOB loading didn't yield any new members\n * @returns {null} in case the members for this room haven't been stored yet\n */\n getOutOfBandMembers: function getOutOfBandMembers(roomId) {\n return _bluebird2.default.resolve(this._oobMembers[roomId] || null);\n },\n\n /**\n * Stores the out-of-band membership events for this room. Note that\n * it still makes sense to store an empty array as the OOB status for the room is\n * marked as fetched, and getOutOfBandMembers will return an empty array instead of null\n * @param {string} roomId\n * @param {event[]} membershipEvents the membership events to store\n * @returns {Promise} when all members have been stored\n */\n setOutOfBandMembers: function setOutOfBandMembers(roomId, membershipEvents) {\n this._oobMembers[roomId] = membershipEvents;\n return _bluebird2.default.resolve();\n },\n\n clearOutOfBandMembers: function clearOutOfBandMembers() {\n this._oobMembers = {};\n return _bluebird2.default.resolve();\n },\n\n getClientOptions: function getClientOptions() {\n return _bluebird2.default.resolve(this._clientOptions);\n },\n\n storeClientOptions: function storeClientOptions(options) {\n this._clientOptions = (0, _assign2.default)({}, options);\n return _bluebird2.default.resolve();\n }\n};\n//# sourceMappingURL=memory.js.map","\"use strict\";\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _setPrototypeOf = require(\"babel-runtime/core-js/object/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _slicedToArray2 = require(\"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _memory = require(\"./memory\");\n\nvar _utils = require(\"../utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _events = require(\"events\");\n\nvar _indexeddbLocalBackend = require(\"./indexeddb-local-backend.js\");\n\nvar _indexeddbLocalBackend2 = _interopRequireDefault(_indexeddbLocalBackend);\n\nvar _indexeddbRemoteBackend = require(\"./indexeddb-remote-backend.js\");\n\nvar _indexeddbRemoteBackend2 = _interopRequireDefault(_indexeddbRemoteBackend);\n\nvar _user = require(\"../models/user\");\n\nvar _user2 = _interopRequireDefault(_user);\n\nvar _event = require(\"../models/event\");\n\nvar _logger = require(\"../../src/logger\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * This is an internal module. See {@link IndexedDBStore} for the public class.\n * @module store/indexeddb\n */\n\n// If this value is too small we'll be writing very often which will cause\n// noticable stop-the-world pauses. If this value is too big we'll be writing\n// so infrequently that the /sync size gets bigger on reload. Writing more\n// often does not affect the length of the pause since the entire /sync\n// response is persisted each time.\nvar WRITE_DELAY_MS = 1000 * 60 * 5; // once every 5 minutes\n\n\n/**\n * Construct a new Indexed Database store, which extends MemoryStore.\n *\n * This store functions like a MemoryStore except it periodically persists\n * the contents of the store to an IndexedDB backend.\n *\n * All data is still kept in-memory but can be loaded from disk by calling\n * startup(). This can make startup times quicker as a complete\n * sync from the server is not required. This does not reduce memory usage as all\n * the data is eagerly fetched when startup() is called.\n *
\n * let opts = { localStorage: window.localStorage };\n * let store = new IndexedDBStore();\n * await store.startup(); // load from indexed db\n * let client = sdk.createClient({\n *     store: store,\n * });\n * client.startClient();\n * client.on(\"sync\", function(state, prevState, data) {\n *     if (state === \"PREPARED\") {\n *         console.log(\"Started up, now with go faster stripes!\");\n *     }\n * });\n * 
\n *\n * @constructor\n * @extends MemoryStore\n * @param {Object} opts Options object.\n * @param {Object} opts.indexedDB The Indexed DB interface e.g.\n * window.indexedDB\n * @param {string=} opts.dbName Optional database name. The same name must be used\n * to open the same database.\n * @param {string=} opts.workerScript Optional URL to a script to invoke a web\n * worker with to run IndexedDB queries on the web worker. The IndexedDbStoreWorker\n * class is provided for this purpose and requires the application to provide a\n * trivial wrapper script around it.\n * @param {Object=} opts.workerApi The webWorker API object. If omitted, the global Worker\n * object will be used if it exists.\n * @prop {IndexedDBStoreBackend} backend The backend instance. Call through to\n * this API if you need to perform specific indexeddb actions like deleting the\n * database.\n */\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/* eslint-disable babel/no-invalid-this */\n\nvar IndexedDBStore = function IndexedDBStore(opts) {\n _memory.MemoryStore.call(this, opts);\n\n if (!opts.indexedDB) {\n throw new Error('Missing required option: indexedDB');\n }\n\n if (opts.workerScript) {\n // try & find a webworker-compatible API\n var workerApi = opts.workerApi;\n if (!workerApi) {\n // default to the global Worker object (which is where it in a browser)\n workerApi = global.Worker;\n }\n this.backend = new _indexeddbRemoteBackend2.default(opts.workerScript, opts.dbName, workerApi);\n } else {\n this.backend = new _indexeddbLocalBackend2.default(opts.indexedDB, opts.dbName);\n }\n\n this.startedUp = false;\n this._syncTs = 0;\n\n // Records the last-modified-time of each user at the last point we saved\n // the database, such that we can derive the set if users that have been\n // modified since we last saved.\n this._userModifiedMap = {\n // user_id : timestamp\n };\n};\n_utils2.default.inherits(IndexedDBStore, _memory.MemoryStore);\n_utils2.default.extend(IndexedDBStore.prototype, _events.EventEmitter.prototype);\n\nIndexedDBStore.exists = function (indexedDB, dbName) {\n return _indexeddbLocalBackend2.default.exists(indexedDB, dbName);\n};\n\n/**\n * @return {Promise} Resolved when loaded from indexed db.\n */\nIndexedDBStore.prototype.startup = function () {\n var _this = this;\n\n if (this.startedUp) {\n _logger2.default.log(\"IndexedDBStore.startup: already started\");\n return _bluebird2.default.resolve();\n }\n\n _logger2.default.log(\"IndexedDBStore.startup: connecting to backend\");\n return this.backend.connect().then(function () {\n _logger2.default.log(\"IndexedDBStore.startup: loading presence events\");\n return _this.backend.getUserPresenceEvents();\n }).then(function (userPresenceEvents) {\n _logger2.default.log(\"IndexedDBStore.startup: processing presence events\");\n userPresenceEvents.forEach(function (_ref) {\n var _ref2 = (0, _slicedToArray3.default)(_ref, 2),\n userId = _ref2[0],\n rawEvent = _ref2[1];\n\n var u = new _user2.default(userId);\n if (rawEvent) {\n u.setPresenceEvent(new _event.MatrixEvent(rawEvent));\n }\n _this._userModifiedMap[u.userId] = u.getLastModifiedTime();\n _this.storeUser(u);\n });\n });\n};\n\n/**\n * @return {Promise} Resolves with a sync response to restore the\n * client state to where it was at the last save, or null if there\n * is no saved sync data.\n */\nIndexedDBStore.prototype.getSavedSync = degradable(function () {\n return this.backend.getSavedSync();\n}, \"getSavedSync\");\n\n/** @return {Promise} whether or not the database was newly created in this session. */\nIndexedDBStore.prototype.isNewlyCreated = degradable(function () {\n return this.backend.isNewlyCreated();\n}, \"isNewlyCreated\");\n\n/**\n * @return {Promise} If there is a saved sync, the nextBatch token\n * for this sync, otherwise null.\n */\nIndexedDBStore.prototype.getSavedSyncToken = degradable(function () {\n return this.backend.getNextBatchToken();\n}, \"getSavedSyncToken\"),\n\n/**\n * Delete all data from this store.\n * @return {Promise} Resolves if the data was deleted from the database.\n */\nIndexedDBStore.prototype.deleteAllData = degradable(function () {\n _memory.MemoryStore.prototype.deleteAllData.call(this);\n return this.backend.clearDatabase().then(function () {\n _logger2.default.log(\"Deleted indexeddb data.\");\n }, function (err) {\n _logger2.default.error(\"Failed to delete indexeddb data: \" + err);\n throw err;\n });\n});\n\n/**\n * Whether this store would like to save its data\n * Note that obviously whether the store wants to save or\n * not could change between calling this function and calling\n * save().\n *\n * @return {boolean} True if calling save() will actually save\n * (at the time this function is called).\n */\nIndexedDBStore.prototype.wantsSave = function () {\n var now = Date.now();\n return now - this._syncTs > WRITE_DELAY_MS;\n};\n\n/**\n * Possibly write data to the database.\n *\n * @param {bool} force True to force a save to happen\n * @return {Promise} Promise resolves after the write completes\n * (or immediately if no write is performed)\n */\nIndexedDBStore.prototype.save = function (force) {\n if (force || this.wantsSave()) {\n return this._reallySave();\n }\n return _bluebird2.default.resolve();\n};\n\nIndexedDBStore.prototype._reallySave = degradable(function () {\n this._syncTs = Date.now(); // set now to guard against multi-writes\n\n // work out changed users (this doesn't handle deletions but you\n // can't 'delete' users as they are just presence events).\n var userTuples = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(this.getUsers()), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var u = _step.value;\n\n if (this._userModifiedMap[u.userId] === u.getLastModifiedTime()) continue;\n if (!u.events.presence) continue;\n\n userTuples.push([u.userId, u.events.presence.event]);\n\n // note that we've saved this version of the user\n this._userModifiedMap[u.userId] = u.getLastModifiedTime();\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return this.backend.syncToDatabase(userTuples);\n});\n\nIndexedDBStore.prototype.setSyncData = degradable(function (syncData) {\n return this.backend.setSyncData(syncData);\n}, \"setSyncData\");\n\n/**\n * Returns the out-of-band membership events for this room that\n * were previously loaded.\n * @param {string} roomId\n * @returns {event[]} the events, potentially an empty array if OOB loading didn't yield any new members\n * @returns {null} in case the members for this room haven't been stored yet\n */\nIndexedDBStore.prototype.getOutOfBandMembers = degradable(function (roomId) {\n return this.backend.getOutOfBandMembers(roomId);\n}, \"getOutOfBandMembers\");\n\n/**\n * Stores the out-of-band membership events for this room. Note that\n * it still makes sense to store an empty array as the OOB status for the room is\n * marked as fetched, and getOutOfBandMembers will return an empty array instead of null\n * @param {string} roomId\n * @param {event[]} membershipEvents the membership events to store\n * @returns {Promise} when all members have been stored\n */\nIndexedDBStore.prototype.setOutOfBandMembers = degradable(function (roomId, membershipEvents) {\n _memory.MemoryStore.prototype.setOutOfBandMembers.call(this, roomId, membershipEvents);\n return this.backend.setOutOfBandMembers(roomId, membershipEvents);\n}, \"setOutOfBandMembers\");\n\nIndexedDBStore.prototype.clearOutOfBandMembers = degradable(function (roomId) {\n _memory.MemoryStore.prototype.clearOutOfBandMembers.call(this);\n return this.backend.clearOutOfBandMembers(roomId);\n}, \"clearOutOfBandMembers\");\n\nIndexedDBStore.prototype.getClientOptions = degradable(function () {\n return this.backend.getClientOptions();\n}, \"getClientOptions\");\n\nIndexedDBStore.prototype.storeClientOptions = degradable(function (options) {\n _memory.MemoryStore.prototype.storeClientOptions.call(this, options);\n return this.backend.storeClientOptions(options);\n}, \"storeClientOptions\");\n\nmodule.exports.IndexedDBStore = IndexedDBStore;\n\n/**\n * All member functions of `IndexedDBStore` that access the backend use this wrapper to\n * watch for failures after initial store startup, including `QuotaExceededError` as\n * free disk space changes, etc.\n *\n * When IndexedDB fails via any of these paths, we degrade this back to a `MemoryStore`\n * in place so that the current operation and all future ones are in-memory only.\n *\n * @param {Function} func The degradable work to do.\n * @param {String} fallback The method name for fallback.\n * @returns {Function} A wrapped member function.\n */\nfunction degradable(func, fallback) {\n return function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var _MemoryStore$prototyp;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n _context.next = 3;\n return (0, _bluebird.resolve)(func.call.apply(func, [this].concat(args)));\n\n case 3:\n return _context.abrupt(\"return\", _context.sent);\n\n case 6:\n _context.prev = 6;\n _context.t0 = _context[\"catch\"](0);\n\n _logger2.default.error(\"IndexedDBStore failure, degrading to MemoryStore\", _context.t0);\n this.emit(\"degraded\", _context.t0);\n _context.prev = 10;\n\n // We try to delete IndexedDB after degrading since this store is only a\n // cache (the app will still function correctly without the data).\n // It's possible that deleting repair IndexedDB for the next app load,\n // potenially by making a little more space available.\n _logger2.default.log(\"IndexedDBStore trying to delete degraded data\");\n _context.next = 14;\n return (0, _bluebird.resolve)(this.backend.clearDatabase());\n\n case 14:\n _logger2.default.log(\"IndexedDBStore delete after degrading succeeeded\");\n _context.next = 20;\n break;\n\n case 17:\n _context.prev = 17;\n _context.t1 = _context[\"catch\"](10);\n\n _logger2.default.warn(\"IndexedDBStore delete after degrading failed\", _context.t1);\n\n case 20:\n // Degrade the store from being an instance of `IndexedDBStore` to instead be\n // an instance of `MemoryStore` so that future API calls use the memory path\n // directly and skip IndexedDB entirely. This should be safe as\n // `IndexedDBStore` already extends from `MemoryStore`, so we are making the\n // store become its parent type in a way. The mutator methods of\n // `IndexedDBStore` also maintain the state that `MemoryStore` uses (many are\n // not overridden at all).\n (0, _setPrototypeOf2.default)(this, _memory.MemoryStore.prototype);\n\n if (!fallback) {\n _context.next = 25;\n break;\n }\n\n _context.next = 24;\n return (0, _bluebird.resolve)((_MemoryStore$prototyp = _memory.MemoryStore.prototype[fallback]).call.apply(_MemoryStore$prototyp, [this].concat(args)));\n\n case 24:\n return _context.abrupt(\"return\", _context.sent);\n\n case 25:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[0, 6], [10, 17]]);\n }));\n\n return function (_x) {\n return _ref3.apply(this, arguments);\n };\n }();\n}\n//# sourceMappingURL=indexeddb.js.map","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018-2019 New Vector Ltd\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _assign = require(\"babel-runtime/core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _set = require(\"babel-runtime/core-js/set\");\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _typeof2 = require(\"babel-runtime/helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _slicedToArray2 = require(\"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _entries = require(\"babel-runtime/core-js/object/entries\");\n\nvar _entries2 = _interopRequireDefault(_entries);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _setDeviceVerification = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(client, userId, deviceId, verified, blocked, known) {\n var dev;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (client._crypto) {\n _context2.next = 2;\n break;\n }\n\n throw new Error(\"End-to-End encryption disabled\");\n\n case 2:\n _context2.next = 4;\n return (0, _bluebird.resolve)(client._crypto.setDeviceVerification(userId, deviceId, verified, blocked, known));\n\n case 4:\n dev = _context2.sent;\n\n client.emit(\"deviceVerificationChanged\", userId, deviceId, dev);\n\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function _setDeviceVerification(_x5, _x6, _x7, _x8, _x9, _x10) {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/**\n * Request a key verification from another user.\n *\n * @param {string} userId the user to request verification with\n * @param {Array} methods array of verification methods to use. Defaults to\n * all known methods\n * @param {Array} devices array of device IDs to send requests to. Defaults to\n * all devices owned by the user\n *\n * @returns {Promise} resolves to a verifier\n * when the request is accepted by the other user\n */\n\n\nvar _ReEmitter = require(\"./ReEmitter\");\n\nvar _ReEmitter2 = _interopRequireDefault(_ReEmitter);\n\nvar _RoomList = require(\"./crypto/RoomList\");\n\nvar _RoomList2 = _interopRequireDefault(_RoomList);\n\nvar _logger = require(\"../src/logger\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _crypto = require(\"./crypto\");\n\nvar _crypto2 = _interopRequireDefault(_crypto);\n\nvar _recoverykey = require(\"./crypto/recoverykey\");\n\nvar _backup_password = require(\"./crypto/backup_password\");\n\nvar _randomstring = require(\"./randomstring\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PushProcessor = require('./pushprocessor');\n\n/**\n * This is an internal module. See {@link MatrixClient} for the public class.\n * @module client\n */\nvar EventEmitter = require(\"events\").EventEmitter;\n\nvar url = require('url');\n\nvar httpApi = require(\"./http-api\");\nvar MatrixEvent = require(\"./models/event\").MatrixEvent;\nvar EventStatus = require(\"./models/event\").EventStatus;\nvar EventTimeline = require(\"./models/event-timeline\");\nvar SearchResult = require(\"./models/search-result\");\nvar StubStore = require(\"./store/stub\");\nvar webRtcCall = require(\"./webrtc/call\");\nvar utils = require(\"./utils\");\nvar contentRepo = require(\"./content-repo\");\nvar Filter = require(\"./filter\");\nvar SyncApi = require(\"./sync\");\nvar MatrixBaseApis = require(\"./base-apis\");\nvar MatrixError = httpApi.MatrixError;\nvar ContentHelpers = require(\"./content-helpers\");\nvar olmlib = require(\"./crypto/olmlib\");\n\n// Disable warnings for now: we use deprecated bluebird functions\n// and need to migrate, but they spam the console with warnings.\n_bluebird2.default.config({ warnings: false });\n\nvar SCROLLBACK_DELAY_MS = 3000;\nvar CRYPTO_ENABLED = (0, _crypto.isCryptoAvailable)();\nvar CAPABILITIES_CACHE_MS = 21600000; // 6 hours - an arbitrary value\n\nfunction keysFromRecoverySession(sessions, decryptionKey, roomId) {\n var keys = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _entries2.default)(sessions)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _step$value = (0, _slicedToArray3.default)(_step.value, 2),\n sessionId = _step$value[0],\n sessionData = _step$value[1];\n\n try {\n var decrypted = keyFromRecoverySession(sessionData, decryptionKey);\n decrypted.session_id = sessionId;\n decrypted.room_id = roomId;\n keys.push(decrypted);\n } catch (e) {\n _logger2.default.log(\"Failed to decrypt session from backup\");\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return keys;\n}\n\nfunction keyFromRecoverySession(session, decryptionKey) {\n return JSON.parse(decryptionKey.decrypt(session.session_data.ephemeral, session.session_data.mac, session.session_data.ciphertext));\n}\n\n/**\n * Construct a Matrix Client. Only directly construct this if you want to use\n * custom modules. Normally, {@link createClient} should be used\n * as it specifies 'sensible' defaults for these modules.\n * @constructor\n * @extends {external:EventEmitter}\n * @extends {module:base-apis~MatrixBaseApis}\n *\n * @param {Object} opts The configuration options for this client.\n * @param {string} opts.baseUrl Required. The base URL to the client-server\n * HTTP API.\n * @param {string} opts.idBaseUrl Optional. The base identity server URL for\n * identity server requests.\n * @param {Function} opts.request Required. The function to invoke for HTTP\n * requests. The value of this property is typically require(\"request\")\n * as it returns a function which meets the required interface. See\n * {@link requestFunction} for more information.\n *\n * @param {string} opts.accessToken The access_token for this user.\n *\n * @param {string} opts.userId The user ID for this user.\n *\n * @param {IdentityServerProvider} [opts.identityServer]\n * Optional. A provider object with one function `getAccessToken`, which is a\n * callback that returns a Promise of an identity access token to supply\n * with identity requests. If the object is unset, no access token will be\n * supplied.\n * See also https://github.com/vector-im/riot-web/issues/10615 which seeks to\n * replace the previous approach of manual access tokens params with this\n * callback throughout the SDK.\n *\n * @param {Object=} opts.store\n * The data store used for sync data from the homeserver. If not specified,\n * this client will not store any HTTP responses. The `createClient` helper\n * will create a default store if needed.\n *\n * @param {module:store/session/webstorage~WebStorageSessionStore} opts.sessionStore\n * A store to be used for end-to-end crypto session data. Most data has been\n * migrated out of here to `cryptoStore` instead. If not specified,\n * end-to-end crypto will be disabled. The `createClient` helper\n * _will not_ create this store at the moment.\n *\n * @param {module:crypto.store.base~CryptoStore} opts.cryptoStore\n * A store to be used for end-to-end crypto session data. If not specified,\n * end-to-end crypto will be disabled. The `createClient` helper will create\n * a default store if needed.\n *\n * @param {string=} opts.deviceId A unique identifier for this device; used for\n * tracking things like crypto keys and access tokens. If not specified,\n * end-to-end crypto will be disabled.\n *\n * @param {Object} opts.scheduler Optional. The scheduler to use. If not\n * specified, this client will not retry requests on failure. This client\n * will supply its own processing function to\n * {@link module:scheduler~MatrixScheduler#setProcessFunction}.\n *\n * @param {Object} opts.queryParams Optional. Extra query parameters to append\n * to all requests with this client. Useful for application services which require\n * ?user_id=.\n *\n * @param {Number=} opts.localTimeoutMs Optional. The default maximum amount of\n * time to wait before timing out HTTP requests. If not specified, there is no timeout.\n *\n * @param {boolean} [opts.useAuthorizationHeader = false] Set to true to use\n * Authorization header instead of query param to send the access token to the server.\n *\n * @param {boolean} [opts.timelineSupport = false] Set to true to enable\n * improved timeline support ({@link\n * module:client~MatrixClient#getEventTimeline getEventTimeline}). It is\n * disabled by default for compatibility with older clients - in particular to\n * maintain support for back-paginating the live timeline after a '/sync'\n * result with a gap.\n *\n * @param {boolean} [opts.unstableClientRelationAggregation = false]\n * Optional. Set to true to enable client-side aggregation of event relations\n * via `EventTimelineSet#getRelationsForEvent`.\n * This feature is currently unstable and the API may change without notice.\n *\n * @param {Array} [opts.verificationMethods] Optional. The verification method\n * that the application can handle. Each element should be an item from {@link\n * module:crypto~verificationMethods verificationMethods}, or a class that\n * implements the {$link module:crypto/verification/Base verifier interface}.\n *\n * @param {boolean} [opts.forceTURN]\n * Optional. Whether relaying calls through a TURN server should be forced.\n *\n * @param {boolean} [opts.fallbackICEServerAllowed]\n * Optional. Whether to allow a fallback ICE server should be used for negotiating a\n * WebRTC connection if the homeserver doesn't provide any servers. Defaults to false.\n */\nfunction MatrixClient(opts) {\n var _this = this;\n\n opts.baseUrl = utils.ensureNoTrailingSlash(opts.baseUrl);\n opts.idBaseUrl = utils.ensureNoTrailingSlash(opts.idBaseUrl);\n\n MatrixBaseApis.call(this, opts);\n\n this.olmVersion = null; // Populated after initCrypto is done\n\n this.reEmitter = new _ReEmitter2.default(this);\n\n this.store = opts.store || new StubStore();\n\n this.deviceId = opts.deviceId || null;\n\n var userId = opts.userId || null;\n this.credentials = {\n userId: userId\n };\n\n this.scheduler = opts.scheduler;\n if (this.scheduler) {\n var self = this;\n this.scheduler.setProcessFunction(function (eventToSend) {\n var room = self.getRoom(eventToSend.getRoomId());\n if (eventToSend.status !== EventStatus.SENDING) {\n _updatePendingEventStatus(room, eventToSend, EventStatus.SENDING);\n }\n return _sendEventHttpRequest(self, eventToSend);\n });\n }\n this.clientRunning = false;\n\n this.callList = {\n // callId: MatrixCall\n };\n\n // try constructing a MatrixCall to see if we are running in an environment\n // which has WebRTC. If we are, listen for and handle m.call.* events.\n var call = webRtcCall.createNewMatrixCall(this);\n this._supportsVoip = false;\n if (call) {\n setupCallEventHandler(this);\n this._supportsVoip = true;\n }\n this._syncingRetry = null;\n this._syncApi = null;\n this._peekSync = null;\n this._isGuest = false;\n this._ongoingScrollbacks = {};\n this.timelineSupport = Boolean(opts.timelineSupport);\n this.urlPreviewCache = {};\n this._notifTimelineSet = null;\n this.unstableClientRelationAggregation = !!opts.unstableClientRelationAggregation;\n\n this._crypto = null;\n this._cryptoStore = opts.cryptoStore;\n this._sessionStore = opts.sessionStore;\n this._verificationMethods = opts.verificationMethods;\n\n this._forceTURN = opts.forceTURN || false;\n this._fallbackICEServerAllowed = opts.fallbackICEServerAllowed || false;\n\n // List of which rooms have encryption enabled: separate from crypto because\n // we still want to know which rooms are encrypted even if crypto is disabled:\n // we don't want to start sending unencrypted events to them.\n this._roomList = new _RoomList2.default(this._cryptoStore);\n\n // The pushprocessor caches useful things, so keep one and re-use it\n this._pushProcessor = new PushProcessor(this);\n\n // Cache of the server's /versions response\n // TODO: This should expire: https://github.com/matrix-org/matrix-js-sdk/issues/1020\n this._serverVersionsCache = null;\n\n this._cachedCapabilities = null; // { capabilities: {}, lastUpdated: timestamp }\n\n // The SDK doesn't really provide a clean way for events to recalculate the push\n // actions for themselves, so we have to kinda help them out when they are encrypted.\n // We do this so that push rules are correctly executed on events in their decrypted\n // state, such as highlights when the user's name is mentioned.\n this.on(\"Event.decrypted\", function (event) {\n var oldActions = event.getPushActions();\n var actions = _this._pushProcessor.actionsForEvent(event);\n event.setPushActions(actions); // Might as well while we're here\n\n var room = _this.getRoom(event.getRoomId());\n if (!room) return;\n\n var currentCount = room.getUnreadNotificationCount(\"highlight\");\n\n // Ensure the unread counts are kept up to date if the event is encrypted\n // We also want to make sure that the notification count goes up if we already\n // have encrypted events to avoid other code from resetting 'highlight' to zero.\n var oldHighlight = oldActions && oldActions.tweaks ? !!oldActions.tweaks.highlight : false;\n var newHighlight = actions && actions.tweaks ? !!actions.tweaks.highlight : false;\n if (oldHighlight !== newHighlight || currentCount > 0) {\n // TODO: Handle mentions received while the client is offline\n // See also https://github.com/vector-im/riot-web/issues/9069\n if (!room.hasUserReadEvent(_this.getUserId(), event.getId())) {\n var newCount = currentCount;\n if (newHighlight && !oldHighlight) newCount++;\n if (!newHighlight && oldHighlight) newCount--;\n room.setUnreadNotificationCount(\"highlight\", newCount);\n\n // Fix 'Mentions Only' rooms from not having the right badge count\n var totalCount = room.getUnreadNotificationCount('total');\n if (totalCount < newCount) {\n room.setUnreadNotificationCount('total', newCount);\n }\n }\n }\n });\n\n // Like above, we have to listen for read receipts from ourselves in order to\n // correctly handle notification counts on encrypted rooms.\n // This fixes https://github.com/vector-im/riot-web/issues/9421\n this.on(\"Room.receipt\", function (event, room) {\n if (room && _this.isRoomEncrypted(room.roomId)) {\n // Figure out if we've read something or if it's just informational\n var content = event.getContent();\n var isSelf = (0, _keys2.default)(content).filter(function (eid) {\n return (0, _keys2.default)(content[eid]['m.read']).includes(_this.getUserId());\n }).length > 0;\n\n if (!isSelf) return;\n\n // Work backwards to determine how many events are unread. We also set\n // a limit for how back we'll look to avoid spinning CPU for too long.\n // If we hit the limit, we assume the count is unchanged.\n var maxHistory = 20;\n var events = room.getLiveTimeline().getEvents();\n\n var highlightCount = 0;\n\n for (var i = events.length - 1; i >= 0; i--) {\n if (i === events.length - maxHistory) return; // limit reached\n\n var _event = events[i];\n\n if (room.hasUserReadEvent(_this.getUserId(), _event.getId())) {\n // If the user has read the event, then the counting is done.\n break;\n }\n\n highlightCount += _this.getPushActionsForEvent(_event).tweaks.highlight ? 1 : 0;\n }\n\n // Note: we don't need to handle 'total' notifications because the counts\n // will come from the server.\n room.setUnreadNotificationCount(\"highlight\", highlightCount);\n }\n });\n}\nutils.inherits(MatrixClient, EventEmitter);\nutils.extend(MatrixClient.prototype, MatrixBaseApis.prototype);\n\n/**\n * Clear any data out of the persistent stores used by the client.\n *\n * @returns {Promise} Promise which resolves when the stores have been cleared.\n */\nMatrixClient.prototype.clearStores = function () {\n if (this._clientRunning) {\n throw new Error(\"Cannot clear stores while client is running\");\n }\n\n var promises = [];\n\n promises.push(this.store.deleteAllData());\n if (this._cryptoStore) {\n promises.push(this._cryptoStore.deleteAllData());\n }\n return _bluebird2.default.all(promises);\n};\n\n/**\n * Get the user-id of the logged-in user\n *\n * @return {?string} MXID for the logged-in user, or null if not logged in\n */\nMatrixClient.prototype.getUserId = function () {\n if (this.credentials && this.credentials.userId) {\n return this.credentials.userId;\n }\n return null;\n};\n\n/**\n * Get the domain for this client's MXID\n * @return {?string} Domain of this MXID\n */\nMatrixClient.prototype.getDomain = function () {\n if (this.credentials && this.credentials.userId) {\n return this.credentials.userId.replace(/^.*?:/, '');\n }\n return null;\n};\n\n/**\n * Get the local part of the current user ID e.g. \"foo\" in \"@foo:bar\".\n * @return {?string} The user ID localpart or null.\n */\nMatrixClient.prototype.getUserIdLocalpart = function () {\n if (this.credentials && this.credentials.userId) {\n return this.credentials.userId.split(\":\")[0].substring(1);\n }\n return null;\n};\n\n/**\n * Get the device ID of this client\n * @return {?string} device ID\n */\nMatrixClient.prototype.getDeviceId = function () {\n return this.deviceId;\n};\n\n/**\n * Check if the runtime environment supports VoIP calling.\n * @return {boolean} True if VoIP is supported.\n */\nMatrixClient.prototype.supportsVoip = function () {\n return this._supportsVoip;\n};\n\n/**\n * Set whether VoIP calls are forced to use only TURN\n * candidates. This is the same as the forceTURN option\n * when creating the client.\n * @param {bool} forceTURN True to force use of TURN servers\n */\nMatrixClient.prototype.setForceTURN = function (forceTURN) {\n this._forceTURN = forceTURN;\n};\n\n/**\n * Get the current sync state.\n * @return {?string} the sync state, which may be null.\n * @see module:client~MatrixClient#event:\"sync\"\n */\nMatrixClient.prototype.getSyncState = function () {\n if (!this._syncApi) {\n return null;\n }\n return this._syncApi.getSyncState();\n};\n\n/**\n * Returns the additional data object associated with\n * the current sync state, or null if there is no\n * such data.\n * Sync errors, if available, are put in the 'error' key of\n * this object.\n * @return {?Object}\n */\nMatrixClient.prototype.getSyncStateData = function () {\n if (!this._syncApi) {\n return null;\n }\n return this._syncApi.getSyncStateData();\n};\n\n/**\n * Return whether the client is configured for a guest account.\n * @return {boolean} True if this is a guest access_token (or no token is supplied).\n */\nMatrixClient.prototype.isGuest = function () {\n return this._isGuest;\n};\n\n/**\n * Return the provided scheduler, if any.\n * @return {?module:scheduler~MatrixScheduler} The scheduler or null\n */\nMatrixClient.prototype.getScheduler = function () {\n return this.scheduler;\n};\n\n/**\n * Set whether this client is a guest account. This method is experimental\n * and may change without warning.\n * @param {boolean} isGuest True if this is a guest account.\n */\nMatrixClient.prototype.setGuest = function (isGuest) {\n // EXPERIMENTAL:\n // If the token is a macaroon, it should be encoded in it that it is a 'guest'\n // access token, which means that the SDK can determine this entirely without\n // the dev manually flipping this flag.\n this._isGuest = isGuest;\n};\n\n/**\n * Retry a backed off syncing request immediately. This should only be used when\n * the user explicitly attempts to retry their lost connection.\n * @return {boolean} True if this resulted in a request being retried.\n */\nMatrixClient.prototype.retryImmediately = function () {\n return this._syncApi.retryImmediately();\n};\n\n/**\n * Return the global notification EventTimelineSet, if any\n *\n * @return {EventTimelineSet} the globl notification EventTimelineSet\n */\nMatrixClient.prototype.getNotifTimelineSet = function () {\n return this._notifTimelineSet;\n};\n\n/**\n * Set the global notification EventTimelineSet\n *\n * @param {EventTimelineSet} notifTimelineSet\n */\nMatrixClient.prototype.setNotifTimelineSet = function (notifTimelineSet) {\n this._notifTimelineSet = notifTimelineSet;\n};\n\n/**\n * Gets the capabilities of the homeserver. Always returns an object of\n * capability keys and their options, which may be empty.\n * @param {boolean} fresh True to ignore any cached values.\n * @return {module:client.Promise} Resolves to the capabilities of the homeserver\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.getCapabilities = function () {\n var _this2 = this;\n\n var fresh = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var now = new Date().getTime();\n\n if (this._cachedCapabilities && !fresh) {\n if (now < this._cachedCapabilities.expiration) {\n _logger2.default.log(\"Returning cached capabilities\");\n return _bluebird2.default.resolve(this._cachedCapabilities.capabilities);\n }\n }\n\n // We swallow errors because we need a default object anyhow\n return this._http.authedRequest(undefined, \"GET\", \"/capabilities\").catch(function (e) {\n _logger2.default.error(e);\n return null; // otherwise consume the error\n }).then(function (r) {\n if (!r) r = {};\n var capabilities = r[\"capabilities\"] || {};\n\n // If the capabilities missed the cache, cache it for a shorter amount\n // of time to try and refresh them later.\n var cacheMs = (0, _keys2.default)(capabilities).length ? CAPABILITIES_CACHE_MS : 60000 + Math.random() * 5000;\n\n _this2._cachedCapabilities = {\n capabilities: capabilities,\n expiration: now + cacheMs\n };\n\n _logger2.default.log(\"Caching capabilities: \", capabilities);\n return capabilities;\n });\n};\n\n// Crypto bits\n// ===========\n\n/**\n * Initialise support for end-to-end encryption in this client\n *\n * You should call this method after creating the matrixclient, but *before*\n * calling `startClient`, if you want to support end-to-end encryption.\n *\n * It will return a Promise which will resolve when the crypto layer has been\n * successfully initialised.\n */\nMatrixClient.prototype.initCrypto = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var userId, crypto;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if ((0, _crypto.isCryptoAvailable)()) {\n _context.next = 2;\n break;\n }\n\n throw new Error(\"End-to-end encryption not supported in this js-sdk build: did \" + \"you remember to load the olm library?\");\n\n case 2:\n if (!this._crypto) {\n _context.next = 5;\n break;\n }\n\n _logger2.default.warn(\"Attempt to re-initialise e2e encryption on MatrixClient\");\n return _context.abrupt(\"return\");\n\n case 5:\n if (this._sessionStore) {\n _context.next = 7;\n break;\n }\n\n throw new Error(\"Cannot enable encryption: no sessionStore provided\");\n\n case 7:\n if (this._cryptoStore) {\n _context.next = 9;\n break;\n }\n\n throw new Error(\"Cannot enable encryption: no cryptoStore provided\");\n\n case 9:\n\n // initialise the list of encrypted rooms (whether or not crypto is enabled)\n _logger2.default.log(\"Crypto: initialising roomlist...\");\n _context.next = 12;\n return (0, _bluebird.resolve)(this._roomList.init());\n\n case 12:\n userId = this.getUserId();\n\n if (!(userId === null)) {\n _context.next = 15;\n break;\n }\n\n throw new Error(\"Cannot enable encryption on MatrixClient with unknown userId: \" + \"ensure userId is passed in createClient().\");\n\n case 15:\n if (!(this.deviceId === null)) {\n _context.next = 17;\n break;\n }\n\n throw new Error(\"Cannot enable encryption on MatrixClient with unknown deviceId: \" + \"ensure deviceId is passed in createClient().\");\n\n case 17:\n crypto = new _crypto2.default(this, this._sessionStore, userId, this.deviceId, this.store, this._cryptoStore, this._roomList, this._verificationMethods);\n\n\n this.reEmitter.reEmit(crypto, [\"crypto.keyBackupFailed\", \"crypto.keyBackupSessionsRemaining\", \"crypto.roomKeyRequest\", \"crypto.roomKeyRequestCancellation\", \"crypto.warning\"]);\n\n _logger2.default.log(\"Crypto: initialising crypto object...\");\n _context.next = 22;\n return (0, _bluebird.resolve)(crypto.init());\n\n case 22:\n\n this.olmVersion = _crypto2.default.getOlmVersion();\n\n // if crypto initialisation was successful, tell it to attach its event\n // handlers.\n crypto.registerEventHandlers(this);\n this._crypto = crypto;\n\n case 25:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n}));\n\n/**\n * Is end-to-end crypto enabled for this client.\n * @return {boolean} True if end-to-end is enabled.\n */\nMatrixClient.prototype.isCryptoEnabled = function () {\n return this._crypto !== null;\n};\n\n/**\n * Get the Ed25519 key for this device\n *\n * @return {?string} base64-encoded ed25519 key. Null if crypto is\n * disabled.\n */\nMatrixClient.prototype.getDeviceEd25519Key = function () {\n if (!this._crypto) {\n return null;\n }\n return this._crypto.getDeviceEd25519Key();\n};\n\n/**\n * Upload the device keys to the homeserver.\n * @return {object} A promise that will resolve when the keys are uploaded.\n */\nMatrixClient.prototype.uploadKeys = function () {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n\n return this._crypto.uploadDeviceKeys();\n};\n\n/**\n * Download the keys for a list of users and stores the keys in the session\n * store.\n * @param {Array} userIds The users to fetch.\n * @param {bool} forceDownload Always download the keys even if cached.\n *\n * @return {Promise} A promise which resolves to a map userId->deviceId->{@link\n * module:crypto~DeviceInfo|DeviceInfo}.\n */\nMatrixClient.prototype.downloadKeys = function (userIds, forceDownload) {\n if (this._crypto === null) {\n return _bluebird2.default.reject(new Error(\"End-to-end encryption disabled\"));\n }\n return this._crypto.downloadKeys(userIds, forceDownload);\n};\n\n/**\n * Get the stored device keys for a user id\n *\n * @param {string} userId the user to list keys for.\n *\n * @return {Promise} list of devices\n */\nMatrixClient.prototype.getStoredDevicesForUser = function () {\n var _ref2 = (0, _bluebird.method)(function (userId) {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n return this._crypto.getStoredDevicesForUser(userId) || [];\n });\n\n return function (_x2) {\n return _ref2.apply(this, arguments);\n };\n}();\n\n/**\n * Get the stored device key for a user id and device id\n *\n * @param {string} userId the user to list keys for.\n * @param {string} deviceId unique identifier for the device\n *\n * @return {Promise} device or null\n */\nMatrixClient.prototype.getStoredDevice = function () {\n var _ref3 = (0, _bluebird.method)(function (userId, deviceId) {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n return this._crypto.getStoredDevice(userId, deviceId) || null;\n });\n\n return function (_x3, _x4) {\n return _ref3.apply(this, arguments);\n };\n}();\n\n/**\n * Mark the given device as verified\n *\n * @param {string} userId owner of the device\n * @param {string} deviceId unique identifier for the device\n *\n * @param {boolean=} verified whether to mark the device as verified. defaults\n * to 'true'.\n *\n * @returns {Promise}\n *\n * @fires module:client~event:MatrixClient\"deviceVerificationChanged\"\n */\nMatrixClient.prototype.setDeviceVerified = function (userId, deviceId, verified) {\n if (verified === undefined) {\n verified = true;\n }\n var prom = _setDeviceVerification(this, userId, deviceId, verified, null);\n\n // if one of the user's own devices is being marked as verified / unverified,\n // check the key backup status, since whether or not we use this depends on\n // whether it has a signature from a verified device\n if (userId == this.credentials.userId) {\n this._crypto.checkKeyBackup();\n }\n return prom;\n};\n\n/**\n * Mark the given device as blocked/unblocked\n *\n * @param {string} userId owner of the device\n * @param {string} deviceId unique identifier for the device\n *\n * @param {boolean=} blocked whether to mark the device as blocked. defaults\n * to 'true'.\n *\n * @returns {Promise}\n *\n * @fires module:client~event:MatrixClient\"deviceVerificationChanged\"\n */\nMatrixClient.prototype.setDeviceBlocked = function (userId, deviceId, blocked) {\n if (blocked === undefined) {\n blocked = true;\n }\n return _setDeviceVerification(this, userId, deviceId, null, blocked);\n};\n\n/**\n * Mark the given device as known/unknown\n *\n * @param {string} userId owner of the device\n * @param {string} deviceId unique identifier for the device\n *\n * @param {boolean=} known whether to mark the device as known. defaults\n * to 'true'.\n *\n * @returns {Promise}\n *\n * @fires module:client~event:MatrixClient\"deviceVerificationChanged\"\n */\nMatrixClient.prototype.setDeviceKnown = function (userId, deviceId, known) {\n if (known === undefined) {\n known = true;\n }\n return _setDeviceVerification(this, userId, deviceId, null, null, known);\n};\n\nMatrixClient.prototype.requestVerification = function (userId, methods, devices) {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n return this._crypto.requestVerification(userId, methods, devices);\n};\n\n/**\n * Begin a key verification.\n *\n * @param {string} method the verification method to use\n * @param {string} userId the user to verify keys with\n * @param {string} deviceId the device to verify\n *\n * @returns {module:crypto/verification/Base} a verification object\n */\nMatrixClient.prototype.beginKeyVerification = function (method, userId, deviceId) {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n return this._crypto.beginKeyVerification(method, userId, deviceId);\n};\n\n/**\n * Set the global override for whether the client should ever send encrypted\n * messages to unverified devices. This provides the default for rooms which\n * do not specify a value.\n *\n * @param {boolean} value whether to blacklist all unverified devices by default\n */\nMatrixClient.prototype.setGlobalBlacklistUnverifiedDevices = function (value) {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n this._crypto.setGlobalBlacklistUnverifiedDevices(value);\n};\n\n/**\n * @return {boolean} whether to blacklist all unverified devices by default\n */\nMatrixClient.prototype.getGlobalBlacklistUnverifiedDevices = function () {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n return this._crypto.getGlobalBlacklistUnverifiedDevices();\n};\n\n/**\n * Get e2e information on the device that sent an event\n *\n * @param {MatrixEvent} event event to be checked\n *\n * @return {Promise}\n */\nMatrixClient.prototype.getEventSenderDeviceInfo = function () {\n var _ref5 = (0, _bluebird.method)(function (event) {\n if (!this._crypto) {\n return null;\n }\n\n return this._crypto.getEventSenderDeviceInfo(event);\n });\n\n return function (_x11) {\n return _ref5.apply(this, arguments);\n };\n}();\n\n/**\n * Check if the sender of an event is verified\n *\n * @param {MatrixEvent} event event to be checked\n *\n * @return {boolean} true if the sender of this event has been verified using\n * {@link module:client~MatrixClient#setDeviceVerified|setDeviceVerified}.\n */\nMatrixClient.prototype.isEventSenderVerified = function () {\n var _ref6 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(event) {\n var device;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return (0, _bluebird.resolve)(this.getEventSenderDeviceInfo(event));\n\n case 2:\n device = _context3.sent;\n\n if (device) {\n _context3.next = 5;\n break;\n }\n\n return _context3.abrupt(\"return\", false);\n\n case 5:\n return _context3.abrupt(\"return\", device.isVerified());\n\n case 6:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function (_x12) {\n return _ref6.apply(this, arguments);\n };\n}();\n\n/**\n * Cancel a room key request for this event if one is ongoing and resend the\n * request.\n * @param {MatrixEvent} event event of which to cancel and resend the room\n * key request.\n * @return {Promise} A promise that will resolve when the key request is queued\n */\nMatrixClient.prototype.cancelAndResendEventRoomKeyRequest = function (event) {\n return event.cancelAndResendKeyRequest(this._crypto, this.getUserId());\n};\n\n/**\n * Enable end-to-end encryption for a room.\n * @param {string} roomId The room ID to enable encryption in.\n * @param {object} config The encryption config for the room.\n * @return {Promise} A promise that will resolve when encryption is set up.\n */\nMatrixClient.prototype.setRoomEncryption = function (roomId, config) {\n if (!this._crypto) {\n throw new Error(\"End-to-End encryption disabled\");\n }\n return this._crypto.setRoomEncryption(roomId, config);\n};\n\n/**\n * Whether encryption is enabled for a room.\n * @param {string} roomId the room id to query.\n * @return {bool} whether encryption is enabled.\n */\nMatrixClient.prototype.isRoomEncrypted = function (roomId) {\n var room = this.getRoom(roomId);\n if (!room) {\n // we don't know about this room, so can't determine if it should be\n // encrypted. Let's assume not.\n return false;\n }\n\n // if there is an 'm.room.encryption' event in this room, it should be\n // encrypted (independently of whether we actually support encryption)\n var ev = room.currentState.getStateEvents(\"m.room.encryption\", \"\");\n if (ev) {\n return true;\n }\n\n // we don't have an m.room.encrypted event, but that might be because\n // the server is hiding it from us. Check the store to see if it was\n // previously encrypted.\n return this._roomList.isRoomEncrypted(roomId);\n};\n\n/**\n * Forces the current outbound group session to be discarded such\n * that another one will be created next time an event is sent.\n *\n * @param {string} roomId The ID of the room to discard the session for\n *\n * This should not normally be necessary.\n */\nMatrixClient.prototype.forceDiscardSession = function (roomId) {\n if (!this._crypto) {\n throw new Error(\"End-to-End encryption disabled\");\n }\n this._crypto.forceDiscardSession(roomId);\n};\n\n/**\n * Get a list containing all of the room keys\n *\n * This should be encrypted before returning it to the user.\n *\n * @return {module:client.Promise} a promise which resolves to a list of\n * session export objects\n */\nMatrixClient.prototype.exportRoomKeys = function () {\n if (!this._crypto) {\n return _bluebird2.default.reject(new Error(\"End-to-end encryption disabled\"));\n }\n return this._crypto.exportRoomKeys();\n};\n\n/**\n * Import a list of room keys previously exported by exportRoomKeys\n *\n * @param {Object[]} keys a list of session export objects\n *\n * @return {module:client.Promise} a promise which resolves when the keys\n * have been imported\n */\nMatrixClient.prototype.importRoomKeys = function (keys) {\n if (!this._crypto) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n return this._crypto.importRoomKeys(keys);\n};\n\n/**\n * Force a re-check of the local key backup status against\n * what's on the server.\n *\n * @returns {Object} Object with backup info (as returned by\n * getKeyBackupVersion) in backupInfo and\n * trust information (as returned by isKeyBackupTrusted)\n * in trustInfo.\n */\nMatrixClient.prototype.checkKeyBackup = function () {\n return this._crypto.checkKeyBackup();\n};\n\n/**\n * Get information about the current key backup.\n * @returns {Promise} Information object from API or null\n */\nMatrixClient.prototype.getKeyBackupVersion = function () {\n return this._http.authedRequest(undefined, \"GET\", \"/room_keys/version\", undefined, undefined, { prefix: httpApi.PREFIX_UNSTABLE }).then(function (res) {\n if (res.algorithm !== olmlib.MEGOLM_BACKUP_ALGORITHM) {\n var err = \"Unknown backup algorithm: \" + res.algorithm;\n return _bluebird2.default.reject(err);\n } else if (!((0, _typeof3.default)(res.auth_data) === \"object\") || !res.auth_data.public_key) {\n var _err = \"Invalid backup data returned\";\n return _bluebird2.default.reject(_err);\n } else {\n return res;\n }\n }).catch(function (e) {\n if (e.errcode === 'M_NOT_FOUND') {\n return null;\n } else {\n throw e;\n }\n });\n};\n\n/**\n * @param {object} info key backup info dict from getKeyBackupVersion()\n * @return {object} {\n * usable: [bool], // is the backup trusted, true iff there is a sig that is valid & from a trusted device\n * sigs: [\n * valid: [bool],\n * device: [DeviceInfo],\n * ]\n * }\n */\nMatrixClient.prototype.isKeyBackupTrusted = function (info) {\n return this._crypto.isKeyBackupTrusted(info);\n};\n\n/**\n * @returns {bool} true if the client is configured to back up keys to\n * the server, otherwise false.\n */\nMatrixClient.prototype.getKeyBackupEnabled = function () {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n return Boolean(this._crypto.backupKey);\n};\n\n/**\n * Enable backing up of keys, using data previously returned from\n * getKeyBackupVersion.\n *\n * @param {object} info Backup information object as returned by getKeyBackupVersion\n */\nMatrixClient.prototype.enableKeyBackup = function (info) {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n\n this._crypto.backupInfo = info;\n if (this._crypto.backupKey) this._crypto.backupKey.free();\n this._crypto.backupKey = new global.Olm.PkEncryption();\n this._crypto.backupKey.set_recipient_key(info.auth_data.public_key);\n\n this.emit('crypto.keyBackupStatus', true);\n\n // There may be keys left over from a partially completed backup, so\n // schedule a send to check.\n this._crypto.scheduleKeyBackupSend();\n};\n\n/**\n * Disable backing up of keys.\n */\nMatrixClient.prototype.disableKeyBackup = function () {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n\n this._crypto.backupInfo = null;\n if (this._crypto.backupKey) this._crypto.backupKey.free();\n this._crypto.backupKey = null;\n\n this.emit('crypto.keyBackupStatus', false);\n};\n\n/**\n * Set up the data required to create a new backup version. The backup version\n * will not be created and enabled until createKeyBackupVersion is called.\n *\n * @param {string} password Passphrase string that can be entered by the user\n * when restoring the backup as an alternative to entering the recovery key.\n * Optional.\n *\n * @returns {Promise} Object that can be passed to createKeyBackupVersion and\n * additionally has a 'recovery_key' member with the user-facing recovery key string.\n */\nMatrixClient.prototype.prepareKeyBackupVersion = function () {\n var _ref7 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(password) {\n var decryption, publicKey, authData, keyInfo;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (!(this._crypto === null)) {\n _context4.next = 2;\n break;\n }\n\n throw new Error(\"End-to-end encryption disabled\");\n\n case 2:\n decryption = new global.Olm.PkDecryption();\n _context4.prev = 3;\n publicKey = void 0;\n authData = {};\n\n if (!password) {\n _context4.next = 15;\n break;\n }\n\n _context4.next = 9;\n return (0, _bluebird.resolve)((0, _backup_password.keyForNewBackup)(password));\n\n case 9:\n keyInfo = _context4.sent;\n\n publicKey = decryption.init_with_private_key(keyInfo.key);\n authData.private_key_salt = keyInfo.salt;\n authData.private_key_iterations = keyInfo.iterations;\n _context4.next = 16;\n break;\n\n case 15:\n publicKey = decryption.generate_key();\n\n case 16:\n\n authData.public_key = publicKey;\n\n return _context4.abrupt(\"return\", {\n algorithm: olmlib.MEGOLM_BACKUP_ALGORITHM,\n auth_data: authData,\n recovery_key: (0, _recoverykey.encodeRecoveryKey)(decryption.get_private_key())\n });\n\n case 18:\n _context4.prev = 18;\n\n decryption.free();\n return _context4.finish(18);\n\n case 21:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this, [[3,, 18, 21]]);\n }));\n\n return function (_x13) {\n return _ref7.apply(this, arguments);\n };\n}();\n\n/**\n * Create a new key backup version and enable it, using the information return\n * from prepareKeyBackupVersion.\n *\n * @param {object} info Info object from prepareKeyBackupVersion\n * @returns {Promise} Object with 'version' param indicating the version created\n */\nMatrixClient.prototype.createKeyBackupVersion = function (info) {\n var _this3 = this;\n\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n\n var data = {\n algorithm: info.algorithm,\n auth_data: info.auth_data\n };\n return this._crypto._signObject(data.auth_data).then(function () {\n return _this3._http.authedRequest(undefined, \"POST\", \"/room_keys/version\", undefined, data, { prefix: httpApi.PREFIX_UNSTABLE });\n }).then(function (res) {\n _this3.enableKeyBackup({\n algorithm: info.algorithm,\n auth_data: info.auth_data,\n version: res.version\n });\n return res;\n });\n};\n\nMatrixClient.prototype.deleteKeyBackupVersion = function (version) {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n\n // If we're currently backing up to this backup... stop.\n // (We start using it automatically in createKeyBackupVersion\n // so this is symmetrical).\n if (this._crypto.backupInfo && this._crypto.backupInfo.version === version) {\n this.disableKeyBackup();\n }\n\n var path = utils.encodeUri(\"/room_keys/version/$version\", {\n $version: version\n });\n\n return this._http.authedRequest(undefined, \"DELETE\", path, undefined, undefined, { prefix: httpApi.PREFIX_UNSTABLE });\n};\n\nMatrixClient.prototype._makeKeyBackupPath = function (roomId, sessionId, version) {\n var path = void 0;\n if (sessionId !== undefined) {\n path = utils.encodeUri(\"/room_keys/keys/$roomId/$sessionId\", {\n $roomId: roomId,\n $sessionId: sessionId\n });\n } else if (roomId !== undefined) {\n path = utils.encodeUri(\"/room_keys/keys/$roomId\", {\n $roomId: roomId\n });\n } else {\n path = \"/room_keys/keys\";\n }\n var queryData = version === undefined ? undefined : { version: version };\n return {\n path: path,\n queryData: queryData\n };\n};\n\n/**\n * Back up session keys to the homeserver.\n * @param {string} roomId ID of the room that the keys are for Optional.\n * @param {string} sessionId ID of the session that the keys are for Optional.\n * @param {integer} version backup version Optional.\n * @param {object} data Object keys to send\n * @return {module:client.Promise} a promise that will resolve when the keys\n * are uploaded\n */\nMatrixClient.prototype.sendKeyBackup = function (roomId, sessionId, version, data) {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n\n var path = this._makeKeyBackupPath(roomId, sessionId, version);\n return this._http.authedRequest(undefined, \"PUT\", path.path, path.queryData, data, { prefix: httpApi.PREFIX_UNSTABLE });\n};\n\n/**\n * Marks all group sessions as needing to be backed up and schedules them to\n * upload in the background as soon as possible.\n */\nMatrixClient.prototype.scheduleAllGroupSessionsForBackup = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee5() {\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n if (!(this._crypto === null)) {\n _context5.next = 2;\n break;\n }\n\n throw new Error(\"End-to-end encryption disabled\");\n\n case 2:\n _context5.next = 4;\n return (0, _bluebird.resolve)(this._crypto.scheduleAllGroupSessionsForBackup());\n\n case 4:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n}));\n\n/**\n * Marks all group sessions as needing to be backed up without scheduling\n * them to upload in the background.\n * @returns {Promise} Resolves to the number of sessions requiring a backup.\n */\nMatrixClient.prototype.flagAllGroupSessionsForBackup = function () {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n\n return this._crypto.flagAllGroupSessionsForBackup();\n};\n\nMatrixClient.prototype.isValidRecoveryKey = function (recoveryKey) {\n try {\n (0, _recoverykey.decodeRecoveryKey)(recoveryKey);\n return true;\n } catch (e) {\n return false;\n }\n};\n\nMatrixClient.RESTORE_BACKUP_ERROR_BAD_KEY = 'RESTORE_BACKUP_ERROR_BAD_KEY';\n\nMatrixClient.prototype.restoreKeyBackupWithPassword = function () {\n var _ref9 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(password, targetRoomId, targetSessionId, backupInfo) {\n var privKey;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return (0, _bluebird.resolve)((0, _backup_password.keyForExistingBackup)(backupInfo, password));\n\n case 2:\n privKey = _context6.sent;\n return _context6.abrupt(\"return\", this._restoreKeyBackup(privKey, targetRoomId, targetSessionId, backupInfo));\n\n case 4:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n return function (_x14, _x15, _x16, _x17) {\n return _ref9.apply(this, arguments);\n };\n}();\n\nMatrixClient.prototype.restoreKeyBackupWithRecoveryKey = function (recoveryKey, targetRoomId, targetSessionId, backupInfo) {\n var privKey = (0, _recoverykey.decodeRecoveryKey)(recoveryKey);\n return this._restoreKeyBackup(privKey, targetRoomId, targetSessionId, backupInfo);\n};\n\nMatrixClient.prototype._restoreKeyBackup = function (privKey, targetRoomId, targetSessionId, backupInfo) {\n var _this4 = this;\n\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n var totalKeyCount = 0;\n var keys = [];\n\n var path = this._makeKeyBackupPath(targetRoomId, targetSessionId, backupInfo.version);\n\n var decryption = new global.Olm.PkDecryption();\n var backupPubKey = void 0;\n try {\n backupPubKey = decryption.init_with_private_key(privKey);\n } catch (e) {\n decryption.free();\n throw e;\n }\n\n // If the pubkey computed from the private data we've been given\n // doesn't match the one in the auth_data, the user has enetered\n // a different recovery key / the wrong passphrase.\n if (backupPubKey !== backupInfo.auth_data.public_key) {\n return _bluebird2.default.reject({ errcode: MatrixClient.RESTORE_BACKUP_ERROR_BAD_KEY });\n }\n\n return this._http.authedRequest(undefined, \"GET\", path.path, path.queryData, undefined, { prefix: httpApi.PREFIX_UNSTABLE }).then(function (res) {\n if (res.rooms) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)((0, _entries2.default)(res.rooms)), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _step2$value = (0, _slicedToArray3.default)(_step2.value, 2),\n roomId = _step2$value[0],\n roomData = _step2$value[1];\n\n if (!roomData.sessions) continue;\n\n totalKeyCount += (0, _keys2.default)(roomData.sessions).length;\n var roomKeys = keysFromRecoverySession(roomData.sessions, decryption, roomId, roomKeys);\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(roomKeys), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var k = _step3.value;\n\n k.room_id = roomId;\n keys.push(k);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n } else if (res.sessions) {\n totalKeyCount = (0, _keys2.default)(res.sessions).length;\n keys = keysFromRecoverySession(res.sessions, decryption, targetRoomId, keys);\n } else {\n totalKeyCount = 1;\n try {\n var key = keyFromRecoverySession(res, decryption);\n key.room_id = targetRoomId;\n key.session_id = targetSessionId;\n keys.push(key);\n } catch (e) {\n _logger2.default.log(\"Failed to decrypt session from backup\");\n }\n }\n\n return _this4.importRoomKeys(keys);\n }).then(function () {\n return _this4._crypto.setTrustedBackupPubKey(backupPubKey);\n }).then(function () {\n return { total: totalKeyCount, imported: keys.length };\n }).finally(function () {\n decryption.free();\n });\n};\n\nMatrixClient.prototype.deleteKeysFromBackup = function (roomId, sessionId, version) {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n\n var path = this._makeKeyBackupPath(roomId, sessionId, version);\n return this._http.authedRequest(undefined, \"DELETE\", path.path, path.queryData, undefined, { prefix: httpApi.PREFIX_UNSTABLE });\n};\n\n// Group ops\n// =========\n// Operations on groups that come down the sync stream (ie. ones the\n// user is a member of or invited to)\n\n/**\n * Get the group for the given group ID.\n * This function will return a valid group for any group for which a Group event\n * has been emitted.\n * @param {string} groupId The group ID\n * @return {Group} The Group or null if the group is not known or there is no data store.\n */\nMatrixClient.prototype.getGroup = function (groupId) {\n return this.store.getGroup(groupId);\n};\n\n/**\n * Retrieve all known groups.\n * @return {Group[]} A list of groups, or an empty list if there is no data store.\n */\nMatrixClient.prototype.getGroups = function () {\n return this.store.getGroups();\n};\n\n/**\n * Get the config for the media repository.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves with an object containing the config.\n */\nMatrixClient.prototype.getMediaConfig = function (callback) {\n return this._http.authedRequest(callback, \"GET\", \"/config\", undefined, undefined, {\n prefix: httpApi.PREFIX_MEDIA_R0\n });\n};\n\n// Room ops\n// ========\n\n/**\n * Get the room for the given room ID.\n * This function will return a valid room for any room for which a Room event\n * has been emitted. Note in particular that other events, eg. RoomState.members\n * will be emitted for a room before this function will return the given room.\n * @param {string} roomId The room ID\n * @return {Room} The Room or null if it doesn't exist or there is no data store.\n */\nMatrixClient.prototype.getRoom = function (roomId) {\n return this.store.getRoom(roomId);\n};\n\n/**\n * Retrieve all known rooms.\n * @return {Room[]} A list of rooms, or an empty list if there is no data store.\n */\nMatrixClient.prototype.getRooms = function () {\n return this.store.getRooms();\n};\n\n/**\n * Retrieve all rooms that should be displayed to the user\n * This is essentially getRooms() with some rooms filtered out, eg. old versions\n * of rooms that have been replaced or (in future) other rooms that have been\n * marked at the protocol level as not to be displayed to the user.\n * @return {Room[]} A list of rooms, or an empty list if there is no data store.\n */\nMatrixClient.prototype.getVisibleRooms = function () {\n var allRooms = this.store.getRooms();\n\n var replacedRooms = new _set2.default();\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = (0, _getIterator3.default)(allRooms), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var r = _step4.value;\n\n var createEvent = r.currentState.getStateEvents('m.room.create', '');\n // invites are included in this list and we don't know their create events yet\n if (createEvent) {\n var predecessor = createEvent.getContent()['predecessor'];\n if (predecessor && predecessor['room_id']) {\n replacedRooms.add(predecessor['room_id']);\n }\n }\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n return allRooms.filter(function (r) {\n var tombstone = r.currentState.getStateEvents('m.room.tombstone', '');\n if (tombstone && replacedRooms.has(r.roomId)) {\n return false;\n }\n return true;\n });\n};\n\n/**\n * Retrieve a user.\n * @param {string} userId The user ID to retrieve.\n * @return {?User} A user or null if there is no data store or the user does\n * not exist.\n */\nMatrixClient.prototype.getUser = function (userId) {\n return this.store.getUser(userId);\n};\n\n/**\n * Retrieve all known users.\n * @return {User[]} A list of users, or an empty list if there is no data store.\n */\nMatrixClient.prototype.getUsers = function () {\n return this.store.getUsers();\n};\n\n// User Account Data operations\n// ============================\n\n/**\n * Set account data event for the current user.\n * @param {string} eventType The event type\n * @param {Object} contents the contents object for the event\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setAccountData = function (eventType, contents, callback) {\n var path = utils.encodeUri(\"/user/$userId/account_data/$type\", {\n $userId: this.credentials.userId,\n $type: eventType\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, contents);\n};\n\n/**\n * Get account data event of given type for the current user.\n * @param {string} eventType The event type\n * @return {?object} The contents of the given account data event\n */\nMatrixClient.prototype.getAccountData = function (eventType) {\n return this.store.getAccountData(eventType);\n};\n\n/**\n * Gets the users that are ignored by this client\n * @returns {string[]} The array of users that are ignored (empty if none)\n */\nMatrixClient.prototype.getIgnoredUsers = function () {\n var event = this.getAccountData(\"m.ignored_user_list\");\n if (!event || !event.getContent() || !event.getContent()[\"ignored_users\"]) return [];\n return (0, _keys2.default)(event.getContent()[\"ignored_users\"]);\n};\n\n/**\n * Sets the users that the current user should ignore.\n * @param {string[]} userIds the user IDs to ignore\n * @param {module:client.callback} [callback] Optional.\n * @return {module:client.Promise} Resolves: Account data event\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setIgnoredUsers = function (userIds, callback) {\n var content = { ignored_users: {} };\n userIds.map(function (u) {\n return content.ignored_users[u] = {};\n });\n return this.setAccountData(\"m.ignored_user_list\", content, callback);\n};\n\n/**\n * Gets whether or not a specific user is being ignored by this client.\n * @param {string} userId the user ID to check\n * @returns {boolean} true if the user is ignored, false otherwise\n */\nMatrixClient.prototype.isUserIgnored = function (userId) {\n return this.getIgnoredUsers().indexOf(userId) !== -1;\n};\n\n// Room operations\n// ===============\n\n/**\n * Join a room. If you have already joined the room, this will no-op.\n * @param {string} roomIdOrAlias The room ID or room alias to join.\n * @param {Object} opts Options when joining the room.\n * @param {boolean} opts.syncRoom True to do a room initial sync on the resulting\n * room. If false, the returned Room object will have no current state.\n * Default: true.\n * @param {boolean} opts.inviteSignUrl If the caller has a keypair 3pid invite,\n * the signing URL is passed in this parameter.\n * @param {string[]} opts.viaServers The server names to try and join through in\n * addition to those that are automatically chosen.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: Room object.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.joinRoom = function (roomIdOrAlias, opts, callback) {\n // to help people when upgrading..\n if (utils.isFunction(opts)) {\n throw new Error(\"Expected 'opts' object, got function.\");\n }\n opts = opts || {};\n if (opts.syncRoom === undefined) {\n opts.syncRoom = true;\n }\n\n var room = this.getRoom(roomIdOrAlias);\n if (room && room.hasMembershipState(this.credentials.userId, \"join\")) {\n return _bluebird2.default.resolve(room);\n }\n\n var sign_promise = _bluebird2.default.resolve();\n\n if (opts.inviteSignUrl) {\n sign_promise = this._http.requestOtherUrl(undefined, 'POST', opts.inviteSignUrl, { mxid: this.credentials.userId });\n }\n\n var queryString = {};\n if (opts.viaServers) {\n queryString[\"server_name\"] = opts.viaServers;\n }\n\n var reqOpts = { qsStringifyOptions: { arrayFormat: 'repeat' } };\n\n var defer = _bluebird2.default.defer();\n\n var self = this;\n sign_promise.then(function (signed_invite_object) {\n var data = {};\n if (signed_invite_object) {\n data.third_party_signed = signed_invite_object;\n }\n\n var path = utils.encodeUri(\"/join/$roomid\", { $roomid: roomIdOrAlias });\n return self._http.authedRequest(undefined, \"POST\", path, queryString, data, reqOpts);\n }).then(function (res) {\n var roomId = res.room_id;\n var syncApi = new SyncApi(self, self._clientOpts);\n var room = syncApi.createRoom(roomId);\n if (opts.syncRoom) {\n // v2 will do this for us\n // return syncApi.syncRoom(room);\n }\n return _bluebird2.default.resolve(room);\n }).done(function (room) {\n _resolve(callback, defer, room);\n }, function (err) {\n _reject(callback, defer, err);\n });\n return defer.promise;\n};\n\n/**\n * Resend an event.\n * @param {MatrixEvent} event The event to resend.\n * @param {Room} room Optional. The room the event is in. Will update the\n * timeline entry if provided.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.resendEvent = function (event, room) {\n _updatePendingEventStatus(room, event, EventStatus.SENDING);\n return _sendEvent(this, room, event);\n};\n\n/**\n * Cancel a queued or unsent event.\n *\n * @param {MatrixEvent} event Event to cancel\n * @throws Error if the event is not in QUEUED or NOT_SENT state\n */\nMatrixClient.prototype.cancelPendingEvent = function (event) {\n if ([EventStatus.QUEUED, EventStatus.NOT_SENT].indexOf(event.status) < 0) {\n throw new Error(\"cannot cancel an event with status \" + event.status);\n }\n\n // first tell the scheduler to forget about it, if it's queued\n if (this.scheduler) {\n this.scheduler.removeEventFromQueue(event);\n }\n\n // then tell the room about the change of state, which will remove it\n // from the room's list of pending events.\n var room = this.getRoom(event.getRoomId());\n _updatePendingEventStatus(room, event, EventStatus.CANCELLED);\n};\n\n/**\n * @param {string} roomId\n * @param {string} name\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setRoomName = function (roomId, name, callback) {\n return this.sendStateEvent(roomId, \"m.room.name\", { name: name }, undefined, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} topic\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setRoomTopic = function (roomId, topic, callback) {\n return this.sendStateEvent(roomId, \"m.room.topic\", { topic: topic }, undefined, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.getRoomTags = function (roomId, callback) {\n var path = utils.encodeUri(\"/user/$userId/rooms/$roomId/tags/\", {\n $userId: this.credentials.userId,\n $roomId: roomId\n });\n return this._http.authedRequest(callback, \"GET\", path, undefined);\n};\n\n/**\n * @param {string} roomId\n * @param {string} tagName name of room tag to be set\n * @param {object} metadata associated with that tag to be stored\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setRoomTag = function (roomId, tagName, metadata, callback) {\n var path = utils.encodeUri(\"/user/$userId/rooms/$roomId/tags/$tag\", {\n $userId: this.credentials.userId,\n $roomId: roomId,\n $tag: tagName\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, metadata);\n};\n\n/**\n * @param {string} roomId\n * @param {string} tagName name of room tag to be removed\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.deleteRoomTag = function (roomId, tagName, callback) {\n var path = utils.encodeUri(\"/user/$userId/rooms/$roomId/tags/$tag\", {\n $userId: this.credentials.userId,\n $roomId: roomId,\n $tag: tagName\n });\n return this._http.authedRequest(callback, \"DELETE\", path, undefined, undefined);\n};\n\n/**\n * @param {string} roomId\n * @param {string} eventType event type to be set\n * @param {object} content event content\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setRoomAccountData = function (roomId, eventType, content, callback) {\n var path = utils.encodeUri(\"/user/$userId/rooms/$roomId/account_data/$type\", {\n $userId: this.credentials.userId,\n $roomId: roomId,\n $type: eventType\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, content);\n};\n\n/**\n * Set a user's power level.\n * @param {string} roomId\n * @param {string} userId\n * @param {Number} powerLevel\n * @param {MatrixEvent} event\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setPowerLevel = function (roomId, userId, powerLevel, event, callback) {\n var content = {\n users: {}\n };\n if (event && event.getType() === \"m.room.power_levels\") {\n // take a copy of the content to ensure we don't corrupt\n // existing client state with a failed power level change\n content = utils.deepCopy(event.getContent());\n }\n content.users[userId] = powerLevel;\n var path = utils.encodeUri(\"/rooms/$roomId/state/m.room.power_levels\", {\n $roomId: roomId\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, content);\n};\n\n/**\n * @param {string} roomId\n * @param {string} eventType\n * @param {Object} content\n * @param {string} txnId Optional.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendEvent = function (roomId, eventType, content, txnId, callback) {\n return this._sendCompleteEvent(roomId, {\n type: eventType,\n content: content\n }, txnId, callback);\n};\n/**\n * @param {string} roomId\n * @param {object} eventObject An object with the partial structure of an event, to which event_id, user_id, room_id and origin_server_ts will be added.\n * @param {string} txnId the txnId.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype._sendCompleteEvent = function (roomId, eventObject, txnId, callback) {\n if (utils.isFunction(txnId)) {\n callback = txnId;txnId = undefined;\n }\n\n if (!txnId) {\n txnId = this.makeTxnId();\n }\n\n // we always construct a MatrixEvent when sending because the store and\n // scheduler use them. We'll extract the params back out if it turns out\n // the client has no scheduler or store.\n var localEvent = new MatrixEvent((0, _assign2.default)(eventObject, {\n event_id: \"~\" + roomId + \":\" + txnId,\n user_id: this.credentials.userId,\n room_id: roomId,\n origin_server_ts: new Date().getTime()\n }));\n\n var room = this.getRoom(roomId);\n\n // if this is a relation or redaction of an event\n // that hasn't been sent yet (e.g. with a local id starting with a ~)\n // then listen for the remote echo of that event so that by the time\n // this event does get sent, we have the correct event_id\n var targetId = localEvent.getAssociatedId();\n if (targetId && targetId.startsWith(\"~\")) {\n var target = room.getPendingEvents().find(function (e) {\n return e.getId() === targetId;\n });\n target.once(\"Event.localEventIdReplaced\", function () {\n localEvent.updateAssociatedId(target.getId());\n });\n }\n\n var type = localEvent.getType();\n _logger2.default.log(\"sendEvent of type \" + type + \" in \" + roomId + \" with txnId \" + txnId);\n\n localEvent._txnId = txnId;\n localEvent.setStatus(EventStatus.SENDING);\n\n // add this event immediately to the local store as 'sending'.\n if (room) {\n room.addPendingEvent(localEvent, txnId);\n }\n\n // addPendingEvent can change the state to NOT_SENT if it believes\n // that there's other events that have failed. We won't bother to\n // try sending the event if the state has changed as such.\n if (localEvent.status === EventStatus.NOT_SENT) {\n return _bluebird2.default.reject(new Error(\"Event blocked by other events not yet sent\"));\n }\n\n return _sendEvent(this, room, localEvent, callback);\n};\n\n// encrypts the event if necessary\n// adds the event to the queue, or sends it\n// marks the event as sent/unsent\n// returns a promise which resolves with the result of the send request\nfunction _sendEvent(client, room, event, callback) {\n // Add an extra Promise.resolve() to turn synchronous exceptions into promise rejections,\n // so that we can handle synchronous and asynchronous exceptions with the\n // same code path.\n return _bluebird2.default.resolve().then(function () {\n var encryptionPromise = _encryptEventIfNeeded(client, event, room);\n\n if (!encryptionPromise) {\n return null;\n }\n\n _updatePendingEventStatus(room, event, EventStatus.ENCRYPTING);\n return encryptionPromise.then(function () {\n _updatePendingEventStatus(room, event, EventStatus.SENDING);\n });\n }).then(function () {\n var promise = void 0;\n // this event may be queued\n if (client.scheduler) {\n // if this returns a promsie then the scheduler has control now and will\n // resolve/reject when it is done. Internally, the scheduler will invoke\n // processFn which is set to this._sendEventHttpRequest so the same code\n // path is executed regardless.\n promise = client.scheduler.queueEvent(event);\n if (promise && client.scheduler.getQueueForEvent(event).length > 1) {\n // event is processed FIFO so if the length is 2 or more we know\n // this event is stuck behind an earlier event.\n _updatePendingEventStatus(room, event, EventStatus.QUEUED);\n }\n }\n\n if (!promise) {\n promise = _sendEventHttpRequest(client, event);\n }\n return promise;\n }).then(function (res) {\n // the request was sent OK\n if (room) {\n room.updatePendingEvent(event, EventStatus.SENT, res.event_id);\n }\n if (callback) {\n callback(null, res);\n }\n return res;\n }, function (err) {\n // the request failed to send.\n _logger2.default.error(\"Error sending event\", err.stack || err);\n\n try {\n // set the error on the event before we update the status:\n // updating the status emits the event, so the state should be\n // consistent at that point.\n event.error = err;\n _updatePendingEventStatus(room, event, EventStatus.NOT_SENT);\n // also put the event object on the error: the caller will need this\n // to resend or cancel the event\n err.event = event;\n\n if (callback) {\n callback(err);\n }\n } catch (err2) {\n _logger2.default.error(\"Exception in error handler!\", err2.stack || err);\n }\n throw err;\n });\n}\n\n/**\n * Encrypt an event according to the configuration of the room, if necessary.\n *\n * @param {MatrixClient} client\n *\n * @param {module:models/event.MatrixEvent} event event to be sent\n *\n * @param {module:models/room?} room destination room. Null if the destination\n * is not a room we have seen over the sync pipe.\n *\n * @return {module:client.Promise?} Promise which resolves when the event has been\n * encrypted, or null if nothing was needed\n */\n\nfunction _encryptEventIfNeeded(client, event, room) {\n if (event.isEncrypted()) {\n // this event has already been encrypted; this happens if the\n // encryption step succeeded, but the send step failed on the first\n // attempt.\n return null;\n }\n\n if (!client.isRoomEncrypted(event.getRoomId())) {\n // looks like this room isn't encrypted.\n return null;\n }\n\n if (event.getType() === \"m.reaction\") {\n // For reactions, there is a very little gained by encrypting the entire\n // event, as relation data is already kept in the clear. Event\n // encryption for a reaction effectively only obscures the event type,\n // but the purpose is still obvious from the relation data, so nothing\n // is really gained. It also causes quite a few problems, such as:\n // * triggers notifications via default push rules\n // * prevents server-side bundling for reactions\n // The reaction key / content / emoji value does warrant encrypting, but\n // this will be handled separately by encrypting just this value.\n // See https://github.com/matrix-org/matrix-doc/pull/1849#pullrequestreview-248763642\n return null;\n }\n\n if (!client._crypto) {\n throw new Error(\"This room is configured to use encryption, but your client does \" + \"not support encryption.\");\n }\n\n return client._crypto.encryptEvent(event, room);\n}\n/**\n * Returns the eventType that should be used taking encryption into account\n * for a given eventType.\n * @param {MatrixClient} client the client\n * @param {string} roomId the room for the events `eventType` relates to\n * @param {string} eventType the event type\n * @return {string} the event type taking encryption into account\n */\nfunction _getEncryptedIfNeededEventType(client, roomId, eventType) {\n if (eventType === \"m.reaction\") {\n return eventType;\n }\n var isEncrypted = client.isRoomEncrypted(roomId);\n return isEncrypted ? \"m.room.encrypted\" : eventType;\n}\n\nfunction _updatePendingEventStatus(room, event, newStatus) {\n if (room) {\n room.updatePendingEvent(event, newStatus);\n } else {\n event.setStatus(newStatus);\n }\n}\n\nfunction _sendEventHttpRequest(client, event) {\n var txnId = event._txnId ? event._txnId : client.makeTxnId();\n\n var pathParams = {\n $roomId: event.getRoomId(),\n $eventType: event.getWireType(),\n $stateKey: event.getStateKey(),\n $txnId: txnId\n };\n\n var path = void 0;\n\n if (event.isState()) {\n var pathTemplate = \"/rooms/$roomId/state/$eventType\";\n if (event.getStateKey() && event.getStateKey().length > 0) {\n pathTemplate = \"/rooms/$roomId/state/$eventType/$stateKey\";\n }\n path = utils.encodeUri(pathTemplate, pathParams);\n } else if (event.isRedaction()) {\n var _pathTemplate = \"/rooms/$roomId/redact/$redactsEventId/$txnId\";\n path = utils.encodeUri(_pathTemplate, (0, _assign2.default)({\n $redactsEventId: event.event.redacts\n }, pathParams));\n } else {\n path = utils.encodeUri(\"/rooms/$roomId/send/$eventType/$txnId\", pathParams);\n }\n\n return client._http.authedRequest(undefined, \"PUT\", path, undefined, event.getWireContent()).then(function (res) {\n _logger2.default.log(\"Event sent to \" + event.getRoomId() + \" with event id \" + res.event_id);\n return res;\n });\n}\n\n/**\n * @param {string} roomId\n * @param {string} eventId\n * @param {string} [txnId] transaction id. One will be made up if not\n * supplied.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.redactEvent = function (roomId, eventId, txnId, callback) {\n return this._sendCompleteEvent(roomId, {\n type: \"m.room.redaction\",\n content: {},\n redacts: eventId\n }, txnId, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {Object} content\n * @param {string} txnId Optional.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendMessage = function (roomId, content, txnId, callback) {\n if (utils.isFunction(txnId)) {\n callback = txnId;txnId = undefined;\n }\n return this.sendEvent(roomId, \"m.room.message\", content, txnId, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} body\n * @param {string} txnId Optional.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendTextMessage = function (roomId, body, txnId, callback) {\n var content = ContentHelpers.makeTextMessage(body);\n return this.sendMessage(roomId, content, txnId, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} body\n * @param {string} txnId Optional.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendNotice = function (roomId, body, txnId, callback) {\n var content = ContentHelpers.makeNotice(body);\n return this.sendMessage(roomId, content, txnId, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} body\n * @param {string} txnId Optional.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendEmoteMessage = function (roomId, body, txnId, callback) {\n var content = ContentHelpers.makeEmoteMessage(body);\n return this.sendMessage(roomId, content, txnId, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} url\n * @param {Object} info\n * @param {string} text\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendImageMessage = function (roomId, url, info, text, callback) {\n if (utils.isFunction(text)) {\n callback = text;text = undefined;\n }\n if (!text) {\n text = \"Image\";\n }\n var content = {\n msgtype: \"m.image\",\n url: url,\n info: info,\n body: text\n };\n return this.sendMessage(roomId, content, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} url\n * @param {Object} info\n * @param {string} text\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendStickerMessage = function (roomId, url, info, text, callback) {\n if (utils.isFunction(text)) {\n callback = text;text = undefined;\n }\n if (!text) {\n text = \"Sticker\";\n }\n var content = {\n url: url,\n info: info,\n body: text\n };\n return this.sendEvent(roomId, \"m.sticker\", content, callback, undefined);\n};\n\n/**\n * @param {string} roomId\n * @param {string} body\n * @param {string} htmlBody\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendHtmlMessage = function (roomId, body, htmlBody, callback) {\n var content = ContentHelpers.makeHtmlMessage(body, htmlBody);\n return this.sendMessage(roomId, content, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} body\n * @param {string} htmlBody\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendHtmlNotice = function (roomId, body, htmlBody, callback) {\n var content = ContentHelpers.makeHtmlNotice(body, htmlBody);\n return this.sendMessage(roomId, content, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} body\n * @param {string} htmlBody\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendHtmlEmote = function (roomId, body, htmlBody, callback) {\n var content = ContentHelpers.makeHtmlEmote(body, htmlBody);\n return this.sendMessage(roomId, content, callback);\n};\n\n/**\n * Send a receipt.\n * @param {Event} event The event being acknowledged\n * @param {string} receiptType The kind of receipt e.g. \"m.read\"\n * @param {object} opts Additional content to send alongside the receipt.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendReceipt = function (event, receiptType, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n\n if (this.isGuest()) {\n return _bluebird2.default.resolve({}); // guests cannot send receipts so don't bother.\n }\n\n var path = utils.encodeUri(\"/rooms/$roomId/receipt/$receiptType/$eventId\", {\n $roomId: event.getRoomId(),\n $receiptType: receiptType,\n $eventId: event.getId()\n });\n var promise = this._http.authedRequest(callback, \"POST\", path, undefined, opts || {});\n\n var room = this.getRoom(event.getRoomId());\n if (room) {\n room._addLocalEchoReceipt(this.credentials.userId, event, receiptType);\n }\n return promise;\n};\n\n/**\n * Send a read receipt.\n * @param {Event} event The event that has been read.\n * @param {object} opts The options for the read receipt.\n * @param {boolean} opts.hidden True to prevent the receipt from being sent to\n * other users and homeservers. Default false (send to everyone). This\n * property is unstable and may change in the future.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendReadReceipt = function () {\n var _ref10 = (0, _bluebird.method)(function (event, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n if (!opts) opts = {};\n\n var eventId = event.getId();\n var room = this.getRoom(event.getRoomId());\n if (room && room.hasPendingEvent(eventId)) {\n throw new Error(\"Cannot set read receipt to a pending event (\" + eventId + \")\");\n }\n\n var addlContent = {\n \"m.hidden\": Boolean(opts.hidden)\n };\n\n return this.sendReceipt(event, \"m.read\", addlContent, callback);\n });\n\n return function (_x18, _x19, _x20) {\n return _ref10.apply(this, arguments);\n };\n}();\n\n/**\n * Set a marker to indicate the point in a room before which the user has read every\n * event. This can be retrieved from room account data (the event type is `m.fully_read`)\n * and displayed as a horizontal line in the timeline that is visually distinct to the\n * position of the user's own read receipt.\n * @param {string} roomId ID of the room that has been read\n * @param {string} rmEventId ID of the event that has been read\n * @param {string} rrEvent the event tracked by the read receipt. This is here for\n * convenience because the RR and the RM are commonly updated at the same time as each\n * other. The local echo of this receipt will be done if set. Optional.\n * @param {object} opts Options for the read markers\n * @param {object} opts.hidden True to hide the receipt from other users and homeservers.\n * This property is unstable and may change in the future.\n * @return {module:client.Promise} Resolves: the empty object, {}.\n */\nMatrixClient.prototype.setRoomReadMarkers = function () {\n var _ref11 = (0, _bluebird.method)(function (roomId, rmEventId, rrEvent, opts) {\n var room = this.getRoom(roomId);\n if (room && room.hasPendingEvent(rmEventId)) {\n throw new Error(\"Cannot set read marker to a pending event (\" + rmEventId + \")\");\n }\n\n // Add the optional RR update, do local echo like `sendReceipt`\n var rrEventId = void 0;\n if (rrEvent) {\n rrEventId = rrEvent.getId();\n if (room && room.hasPendingEvent(rrEventId)) {\n throw new Error(\"Cannot set read receipt to a pending event (\" + rrEventId + \")\");\n }\n if (room) {\n room._addLocalEchoReceipt(this.credentials.userId, rrEvent, \"m.read\");\n }\n }\n\n return this.setRoomReadMarkersHttpRequest(roomId, rmEventId, rrEventId, opts);\n });\n\n return function (_x21, _x22, _x23, _x24) {\n return _ref11.apply(this, arguments);\n };\n}();\n\n/**\n * Get a preview of the given URL as of (roughly) the given point in time,\n * described as an object with OpenGraph keys and associated values.\n * Attributes may be synthesized where actual OG metadata is lacking.\n * Caches results to prevent hammering the server.\n * @param {string} url The URL to get preview data for\n * @param {Number} ts The preferred point in time that the preview should\n * describe (ms since epoch). The preview returned will either be the most\n * recent one preceding this timestamp if available, or failing that the next\n * most recent available preview.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: Object of OG metadata.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n * May return synthesized attributes if the URL lacked OG meta.\n */\nMatrixClient.prototype.getUrlPreview = function (url, ts, callback) {\n var key = ts + \"_\" + url;\n var og = this.urlPreviewCache[key];\n if (og) {\n return _bluebird2.default.resolve(og);\n }\n\n var self = this;\n return this._http.authedRequest(callback, \"GET\", \"/preview_url\", {\n url: url,\n ts: ts\n }, undefined, {\n prefix: httpApi.PREFIX_MEDIA_R0\n }).then(function (response) {\n // TODO: expire cache occasionally\n self.urlPreviewCache[key] = response;\n return response;\n });\n};\n\n/**\n * @param {string} roomId\n * @param {boolean} isTyping\n * @param {Number} timeoutMs\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendTyping = function (roomId, isTyping, timeoutMs, callback) {\n if (this.isGuest()) {\n return _bluebird2.default.resolve({}); // guests cannot send typing notifications so don't bother.\n }\n\n var path = utils.encodeUri(\"/rooms/$roomId/typing/$userId\", {\n $roomId: roomId,\n $userId: this.credentials.userId\n });\n var data = {\n typing: isTyping\n };\n if (isTyping) {\n data.timeout = timeoutMs ? timeoutMs : 20000;\n }\n return this._http.authedRequest(callback, \"PUT\", path, undefined, data);\n};\n\n/**\n * Determines the history of room upgrades for a given room, as far as the\n * client can see. Returns an array of Rooms where the first entry is the\n * oldest and the last entry is the newest (likely current) room. If the\n * provided room is not found, this returns an empty list. This works in\n * both directions, looking for older and newer rooms of the given room.\n * @param {string} roomId The room ID to search from\n * @param {boolean} verifyLinks If true, the function will only return rooms\n * which can be proven to be linked. For example, rooms which have a create\n * event pointing to an old room which the client is not aware of or doesn't\n * have a matching tombstone would not be returned.\n * @return {Room[]} An array of rooms representing the upgrade\n * history.\n */\nMatrixClient.prototype.getRoomUpgradeHistory = function (roomId) {\n var verifyLinks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var currentRoom = this.getRoom(roomId);\n if (!currentRoom) return [];\n\n var upgradeHistory = [currentRoom];\n\n // Work backwards first, looking at create events.\n var createEvent = currentRoom.currentState.getStateEvents(\"m.room.create\", \"\");\n while (createEvent) {\n _logger2.default.log(\"Looking at \" + createEvent.getId());\n var predecessor = createEvent.getContent()['predecessor'];\n if (predecessor && predecessor['room_id']) {\n _logger2.default.log(\"Looking at predecessor \" + predecessor['room_id']);\n var refRoom = this.getRoom(predecessor['room_id']);\n if (!refRoom) break; // end of the chain\n\n if (verifyLinks) {\n var tombstone = refRoom.currentState.getStateEvents(\"m.room.tombstone\", \"\");\n\n if (!tombstone || tombstone.getContent()['replacement_room'] !== refRoom.roomId) {\n break;\n }\n }\n\n // Insert at the front because we're working backwards from the currentRoom\n upgradeHistory.splice(0, 0, refRoom);\n createEvent = refRoom.currentState.getStateEvents(\"m.room.create\", \"\");\n } else {\n // No further create events to look at\n break;\n }\n }\n\n // Work forwards next, looking at tombstone events\n var tombstoneEvent = currentRoom.currentState.getStateEvents(\"m.room.tombstone\", \"\");\n while (tombstoneEvent) {\n var _refRoom = this.getRoom(tombstoneEvent.getContent()['replacement_room']);\n if (!_refRoom) break; // end of the chain\n if (_refRoom.roomId === currentRoom.roomId) break; // Tombstone is referencing it's own room\n\n if (verifyLinks) {\n createEvent = _refRoom.currentState.getStateEvents(\"m.room.create\", \"\");\n if (!createEvent || !createEvent.getContent()['predecessor']) break;\n\n var _predecessor = createEvent.getContent()['predecessor'];\n if (_predecessor['room_id'] !== currentRoom.roomId) break;\n }\n\n // Push to the end because we're looking forwards\n upgradeHistory.push(_refRoom);\n var roomIds = new _set2.default(upgradeHistory.map(function (ref) {\n return ref.roomId;\n }));\n if (roomIds.size < upgradeHistory.length) {\n // The last room added to the list introduced a previous roomId\n // To avoid recursion, return the last rooms - 1\n return upgradeHistory.slice(0, upgradeHistory.length - 1);\n }\n\n // Set the current room to the reference room so we know where we're at\n currentRoom = _refRoom;\n tombstoneEvent = currentRoom.currentState.getStateEvents(\"m.room.tombstone\", \"\");\n }\n\n return upgradeHistory;\n};\n\n/**\n * @param {string} roomId\n * @param {string} userId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.invite = function (roomId, userId, callback) {\n return _membershipChange(this, roomId, userId, \"invite\", undefined, callback);\n};\n\n/**\n * Invite a user to a room based on their email address.\n * @param {string} roomId The room to invite the user to.\n * @param {string} email The email address to invite.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.inviteByEmail = function (roomId, email, callback) {\n return this.inviteByThreePid(roomId, \"email\", email, callback);\n};\n\n/**\n * Invite a user to a room based on a third-party identifier.\n * @param {string} roomId The room to invite the user to.\n * @param {string} medium The medium to invite the user e.g. \"email\".\n * @param {string} address The address for the specified medium.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.inviteByThreePid = function () {\n var _ref12 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(roomId, medium, address, callback) {\n var path, identityServerUrl, params, identityAccessToken;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n path = utils.encodeUri(\"/rooms/$roomId/invite\", { $roomId: roomId });\n identityServerUrl = this.getIdentityServerUrl(true);\n\n if (identityServerUrl) {\n _context7.next = 4;\n break;\n }\n\n return _context7.abrupt(\"return\", _bluebird2.default.reject(new MatrixError({\n error: \"No supplied identity server URL\",\n errcode: \"ORG.MATRIX.JSSDK_MISSING_PARAM\"\n })));\n\n case 4:\n params = {\n id_server: identityServerUrl,\n medium: medium,\n address: address\n };\n _context7.t0 = this.identityServer && this.identityServer.getAccessToken;\n\n if (!_context7.t0) {\n _context7.next = 10;\n break;\n }\n\n _context7.next = 9;\n return (0, _bluebird.resolve)(this.doesServerAcceptIdentityAccessToken());\n\n case 9:\n _context7.t0 = _context7.sent;\n\n case 10:\n if (!_context7.t0) {\n _context7.next = 15;\n break;\n }\n\n _context7.next = 13;\n return (0, _bluebird.resolve)(this.identityServer.getAccessToken());\n\n case 13:\n identityAccessToken = _context7.sent;\n\n if (identityAccessToken) {\n params.id_access_token = identityAccessToken;\n }\n\n case 15:\n return _context7.abrupt(\"return\", this._http.authedRequest(callback, \"POST\", path, undefined, params));\n\n case 16:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n return function (_x26, _x27, _x28, _x29) {\n return _ref12.apply(this, arguments);\n };\n}();\n\n/**\n * @param {string} roomId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.leave = function (roomId, callback) {\n return _membershipChange(this, roomId, undefined, \"leave\", undefined, callback);\n};\n\n/**\n * Leaves all rooms in the chain of room upgrades based on the given room. By\n * default, this will leave all the previous and upgraded rooms, including the\n * given room. To only leave the given room and any previous rooms, keeping the\n * upgraded (modern) rooms untouched supply `false` to `includeFuture`.\n * @param {string} roomId The room ID to start leaving at\n * @param {boolean} includeFuture If true, the whole chain (past and future) of\n * upgraded rooms will be left.\n * @return {module:client.Promise} Resolves when completed with an object keyed\n * by room ID and value of the error encountered when leaving or null.\n */\nMatrixClient.prototype.leaveRoomChain = function (roomId) {\n var _this5 = this;\n\n var includeFuture = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n var upgradeHistory = this.getRoomUpgradeHistory(roomId);\n\n var eligibleToLeave = upgradeHistory;\n if (!includeFuture) {\n eligibleToLeave = [];\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = (0, _getIterator3.default)(upgradeHistory), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var room = _step5.value;\n\n eligibleToLeave.push(room);\n if (room.roomId === roomId) {\n break;\n }\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n }\n\n var populationResults = {}; // {roomId: Error}\n var promises = [];\n\n var doLeave = function doLeave(roomId) {\n return _this5.leave(roomId).then(function () {\n populationResults[roomId] = null;\n }).catch(function (err) {\n populationResults[roomId] = err;\n return null; // suppress error\n });\n };\n\n var _iteratorNormalCompletion6 = true;\n var _didIteratorError6 = false;\n var _iteratorError6 = undefined;\n\n try {\n for (var _iterator6 = (0, _getIterator3.default)(eligibleToLeave), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n var _room = _step6.value;\n\n promises.push(doLeave(_room.roomId));\n }\n } catch (err) {\n _didIteratorError6 = true;\n _iteratorError6 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion6 && _iterator6.return) {\n _iterator6.return();\n }\n } finally {\n if (_didIteratorError6) {\n throw _iteratorError6;\n }\n }\n }\n\n return _bluebird2.default.all(promises).then(function () {\n return populationResults;\n });\n};\n\n/**\n * @param {string} roomId\n * @param {string} userId\n * @param {string} reason Optional.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.ban = function (roomId, userId, reason, callback) {\n return _membershipChange(this, roomId, userId, \"ban\", reason, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {boolean} deleteRoom True to delete the room from the store on success.\n * Default: true.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.forget = function (roomId, deleteRoom, callback) {\n if (deleteRoom === undefined) {\n deleteRoom = true;\n }\n var promise = _membershipChange(this, roomId, undefined, \"forget\", undefined, callback);\n if (!deleteRoom) {\n return promise;\n }\n var self = this;\n return promise.then(function (response) {\n self.store.removeRoom(roomId);\n self.emit(\"deleteRoom\", roomId);\n return response;\n });\n};\n\n/**\n * @param {string} roomId\n * @param {string} userId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: Object (currently empty)\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.unban = function (roomId, userId, callback) {\n // unbanning != set their state to leave: this used to be\n // the case, but was then changed so that leaving was always\n // a revoking of priviledge, otherwise two people racing to\n // kick / ban someone could end up banning and then un-banning\n // them.\n var path = utils.encodeUri(\"/rooms/$roomId/unban\", {\n $roomId: roomId\n });\n var data = {\n user_id: userId\n };\n return this._http.authedRequest(callback, \"POST\", path, undefined, data);\n};\n\n/**\n * @param {string} roomId\n * @param {string} userId\n * @param {string} reason Optional.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.kick = function (roomId, userId, reason, callback) {\n return _setMembershipState(this, roomId, userId, \"leave\", reason, callback);\n};\n\n/**\n * This is an internal method.\n * @param {MatrixClient} client\n * @param {string} roomId\n * @param {string} userId\n * @param {string} membershipValue\n * @param {string} reason\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nfunction _setMembershipState(client, roomId, userId, membershipValue, reason, callback) {\n if (utils.isFunction(reason)) {\n callback = reason;reason = undefined;\n }\n\n var path = utils.encodeUri(\"/rooms/$roomId/state/m.room.member/$userId\", { $roomId: roomId, $userId: userId });\n\n return client._http.authedRequest(callback, \"PUT\", path, undefined, {\n membership: membershipValue,\n reason: reason\n });\n}\n\n/**\n * This is an internal method.\n * @param {MatrixClient} client\n * @param {string} roomId\n * @param {string} userId\n * @param {string} membership\n * @param {string} reason\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nfunction _membershipChange(client, roomId, userId, membership, reason, callback) {\n if (utils.isFunction(reason)) {\n callback = reason;reason = undefined;\n }\n\n var path = utils.encodeUri(\"/rooms/$room_id/$membership\", {\n $room_id: roomId,\n $membership: membership\n });\n return client._http.authedRequest(callback, \"POST\", path, undefined, {\n user_id: userId, // may be undefined e.g. on leave\n reason: reason\n });\n}\n\n/**\n * Obtain a dict of actions which should be performed for this event according\n * to the push rules for this user. Caches the dict on the event.\n * @param {MatrixEvent} event The event to get push actions for.\n * @return {module:pushprocessor~PushAction} A dict of actions to perform.\n */\nMatrixClient.prototype.getPushActionsForEvent = function (event) {\n if (!event.getPushActions()) {\n event.setPushActions(this._pushProcessor.actionsForEvent(event));\n }\n return event.getPushActions();\n};\n\n// Profile operations\n// ==================\n\n/**\n * @param {string} info The kind of info to set (e.g. 'avatar_url')\n * @param {Object} data The JSON object to set.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setProfileInfo = function (info, data, callback) {\n var path = utils.encodeUri(\"/profile/$userId/$info\", {\n $userId: this.credentials.userId,\n $info: info\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, data);\n};\n\n/**\n * @param {string} name\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setDisplayName = function (name, callback) {\n return this.setProfileInfo(\"displayname\", { displayname: name }, callback);\n};\n\n/**\n * @param {string} url\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setAvatarUrl = function (url, callback) {\n return this.setProfileInfo(\"avatar_url\", { avatar_url: url }, callback);\n};\n\n/**\n * Turn an MXC URL into an HTTP one. This method is experimental and\n * may change.\n * @param {string} mxcUrl The MXC URL\n * @param {Number} width The desired width of the thumbnail.\n * @param {Number} height The desired height of the thumbnail.\n * @param {string} resizeMethod The thumbnail resize method to use, either\n * \"crop\" or \"scale\".\n * @param {Boolean} allowDirectLinks If true, return any non-mxc URLs\n * directly. Fetching such URLs will leak information about the user to\n * anyone they share a room with. If false, will return null for such URLs.\n * @return {?string} the avatar URL or null.\n */\nMatrixClient.prototype.mxcUrlToHttp = function (mxcUrl, width, height, resizeMethod, allowDirectLinks) {\n return contentRepo.getHttpUriForMxc(this.baseUrl, mxcUrl, width, height, resizeMethod, allowDirectLinks);\n};\n\n/**\n * Sets a new status message for the user. The message may be null/falsey\n * to clear the message.\n * @param {string} newMessage The new message to set.\n * @return {module:client.Promise} Resolves: to nothing\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype._unstable_setStatusMessage = function (newMessage) {\n var _this6 = this;\n\n var type = \"im.vector.user_status\";\n return _bluebird2.default.all(this.getRooms().map(function (room) {\n var isJoined = room.getMyMembership() === \"join\";\n var looksLikeDm = room.getInvitedAndJoinedMemberCount() === 2;\n if (!isJoined || !looksLikeDm) {\n return _bluebird2.default.resolve();\n }\n // Check power level separately as it's a bit more expensive.\n var maySend = room.currentState.mayClientSendStateEvent(type, _this6);\n if (!maySend) {\n return _bluebird2.default.resolve();\n }\n return _this6.sendStateEvent(room.roomId, type, {\n status: newMessage\n }, _this6.getUserId());\n }));\n};\n\n/**\n * @param {Object} opts Options to apply\n * @param {string} opts.presence One of \"online\", \"offline\" or \"unavailable\"\n * @param {string} opts.status_msg The status message to attach.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n * @throws If 'presence' isn't a valid presence enum value.\n */\nMatrixClient.prototype.setPresence = function (opts, callback) {\n var path = utils.encodeUri(\"/presence/$userId/status\", {\n $userId: this.credentials.userId\n });\n\n if (typeof opts === \"string\") {\n opts = { presence: opts };\n }\n\n var validStates = [\"offline\", \"online\", \"unavailable\"];\n if (validStates.indexOf(opts.presence) == -1) {\n throw new Error(\"Bad presence value: \" + opts.presence);\n }\n return this._http.authedRequest(callback, \"PUT\", path, undefined, opts);\n};\n\nfunction _presenceList(callback, client, opts, method) {\n var path = utils.encodeUri(\"/presence/list/$userId\", {\n $userId: client.credentials.userId\n });\n return client._http.authedRequest(callback, method, path, undefined, opts);\n}\n\n/**\n* Retrieve current user presence list.\n* @param {module:client.callback} callback Optional.\n* @return {module:client.Promise} Resolves: TODO\n* @return {module:http-api.MatrixError} Rejects: with an error response.\n*/\nMatrixClient.prototype.getPresenceList = function (callback) {\n return _presenceList(callback, this, undefined, \"GET\");\n};\n\n/**\n* Add users to the current user presence list.\n* @param {module:client.callback} callback Optional.\n* @param {string[]} userIds\n* @return {module:client.Promise} Resolves: TODO\n* @return {module:http-api.MatrixError} Rejects: with an error response.\n*/\nMatrixClient.prototype.inviteToPresenceList = function (callback, userIds) {\n var opts = { \"invite\": userIds };\n return _presenceList(callback, this, opts, \"POST\");\n};\n\n/**\n* Drop users from the current user presence list.\n* @param {module:client.callback} callback Optional.\n* @param {string[]} userIds\n* @return {module:client.Promise} Resolves: TODO\n* @return {module:http-api.MatrixError} Rejects: with an error response.\n**/\nMatrixClient.prototype.dropFromPresenceList = function (callback, userIds) {\n var opts = { \"drop\": userIds };\n return _presenceList(callback, this, opts, \"POST\");\n};\n\n/**\n * Retrieve older messages from the given room and put them in the timeline.\n *\n * If this is called multiple times whilst a request is ongoing, the same\n * Promise will be returned. If there was a problem requesting scrollback, there\n * will be a small delay before another request can be made (to prevent tight-looping\n * when there is no connection).\n *\n * @param {Room} room The room to get older messages in.\n * @param {Integer} limit Optional. The maximum number of previous events to\n * pull in. Default: 30.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: Room. If you are at the beginning\n * of the timeline, Room.oldState.paginationToken will be\n * null.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.scrollback = function (room, limit, callback) {\n if (utils.isFunction(limit)) {\n callback = limit;limit = undefined;\n }\n limit = limit || 30;\n var timeToWaitMs = 0;\n\n var info = this._ongoingScrollbacks[room.roomId] || {};\n if (info.promise) {\n return info.promise;\n } else if (info.errorTs) {\n var timeWaitedMs = Date.now() - info.errorTs;\n timeToWaitMs = Math.max(SCROLLBACK_DELAY_MS - timeWaitedMs, 0);\n }\n\n if (room.oldState.paginationToken === null) {\n return _bluebird2.default.resolve(room); // already at the start.\n }\n // attempt to grab more events from the store first\n var numAdded = this.store.scrollback(room, limit).length;\n if (numAdded === limit) {\n // store contained everything we needed.\n return _bluebird2.default.resolve(room);\n }\n // reduce the required number of events appropriately\n limit = limit - numAdded;\n\n var defer = _bluebird2.default.defer();\n info = {\n promise: defer.promise,\n errorTs: null\n };\n var self = this;\n // wait for a time before doing this request\n // (which may be 0 in order not to special case the code paths)\n _bluebird2.default.delay(timeToWaitMs).then(function () {\n return self._createMessagesRequest(room.roomId, room.oldState.paginationToken, limit, 'b');\n }).done(function (res) {\n var matrixEvents = utils.map(res.chunk, _PojoToMatrixEventMapper(self));\n if (res.state) {\n var stateEvents = utils.map(res.state, _PojoToMatrixEventMapper(self));\n room.currentState.setUnknownStateEvents(stateEvents);\n }\n room.addEventsToTimeline(matrixEvents, true, room.getLiveTimeline());\n room.oldState.paginationToken = res.end;\n if (res.chunk.length === 0) {\n room.oldState.paginationToken = null;\n }\n self.store.storeEvents(room, matrixEvents, res.end, true);\n self._ongoingScrollbacks[room.roomId] = null;\n _resolve(callback, defer, room);\n }, function (err) {\n self._ongoingScrollbacks[room.roomId] = {\n errorTs: Date.now()\n };\n _reject(callback, defer, err);\n });\n this._ongoingScrollbacks[room.roomId] = info;\n return defer.promise;\n};\n\n/**\n * Get an EventTimeline for the given event\n *\n *

If the EventTimelineSet object already has the given event in its store, the\n * corresponding timeline will be returned. Otherwise, a /context request is\n * made, and used to construct an EventTimeline.\n *\n * @param {EventTimelineSet} timelineSet The timelineSet to look for the event in\n * @param {string} eventId The ID of the event to look for\n *\n * @return {module:client.Promise} Resolves:\n * {@link module:models/event-timeline~EventTimeline} including the given\n * event\n */\nMatrixClient.prototype.getEventTimeline = function (timelineSet, eventId) {\n // don't allow any timeline support unless it's been enabled.\n if (!this.timelineSupport) {\n throw new Error(\"timeline support is disabled. Set the 'timelineSupport'\" + \" parameter to true when creating MatrixClient to enable\" + \" it.\");\n }\n\n if (timelineSet.getTimelineForEvent(eventId)) {\n return _bluebird2.default.resolve(timelineSet.getTimelineForEvent(eventId));\n }\n\n var path = utils.encodeUri(\"/rooms/$roomId/context/$eventId\", {\n $roomId: timelineSet.room.roomId,\n $eventId: eventId\n });\n\n var params = undefined;\n if (this._clientOpts.lazyLoadMembers) {\n params = { filter: (0, _stringify2.default)(Filter.LAZY_LOADING_MESSAGES_FILTER) };\n }\n\n // TODO: we should implement a backoff (as per scrollback()) to deal more\n // nicely with HTTP errors.\n var self = this;\n var promise = self._http.authedRequest(undefined, \"GET\", path, params).then(function (res) {\n if (!res.event) {\n throw new Error(\"'event' not in '/context' result - homeserver too old?\");\n }\n\n // by the time the request completes, the event might have ended up in\n // the timeline.\n if (timelineSet.getTimelineForEvent(eventId)) {\n return timelineSet.getTimelineForEvent(eventId);\n }\n\n // we start with the last event, since that's the point at which we\n // have known state.\n // events_after is already backwards; events_before is forwards.\n res.events_after.reverse();\n var events = res.events_after.concat([res.event]).concat(res.events_before);\n var matrixEvents = utils.map(events, self.getEventMapper());\n\n var timeline = timelineSet.getTimelineForEvent(matrixEvents[0].getId());\n if (!timeline) {\n timeline = timelineSet.addTimeline();\n timeline.initialiseState(utils.map(res.state, self.getEventMapper()));\n timeline.getState(EventTimeline.FORWARDS).paginationToken = res.end;\n } else {\n var stateEvents = utils.map(res.state, self.getEventMapper());\n timeline.getState(EventTimeline.BACKWARDS).setUnknownStateEvents(stateEvents);\n }\n timelineSet.addEventsToTimeline(matrixEvents, true, timeline, res.start);\n\n // there is no guarantee that the event ended up in \"timeline\" (we\n // might have switched to a neighbouring timeline) - so check the\n // room's index again. On the other hand, there's no guarantee the\n // event ended up anywhere, if it was later redacted, so we just\n // return the timeline we first thought of.\n var tl = timelineSet.getTimelineForEvent(eventId) || timeline;\n return tl;\n });\n return promise;\n};\n\n/**\n * Makes a request to /messages with the appropriate lazy loading filter set.\n * XXX: if we do get rid of scrollback (as it's not used at the moment),\n * we could inline this method again in paginateEventTimeline as that would\n * then be the only call-site\n * @param {string} roomId\n * @param {string} fromToken\n * @param {number} limit the maximum amount of events the retrieve\n * @param {string} dir 'f' or 'b'\n * @param {Filter} timelineFilter the timeline filter to pass\n * @return {Promise}\n */\nMatrixClient.prototype._createMessagesRequest = function (roomId, fromToken, limit, dir) {\n var timelineFilter = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : undefined;\n\n var path = utils.encodeUri(\"/rooms/$roomId/messages\", { $roomId: roomId });\n if (limit === undefined) {\n limit = 30;\n }\n var params = {\n from: fromToken,\n limit: limit,\n dir: dir\n };\n\n var filter = null;\n if (this._clientOpts.lazyLoadMembers) {\n // create a shallow copy of LAZY_LOADING_MESSAGES_FILTER,\n // so the timelineFilter doesn't get written into it below\n filter = (0, _assign2.default)({}, Filter.LAZY_LOADING_MESSAGES_FILTER);\n }\n if (timelineFilter) {\n // XXX: it's horrific that /messages' filter parameter doesn't match\n // /sync's one - see https://matrix.org/jira/browse/SPEC-451\n filter = filter || {};\n (0, _assign2.default)(filter, timelineFilter.getRoomTimelineFilterComponent());\n }\n if (filter) {\n params.filter = (0, _stringify2.default)(filter);\n }\n return this._http.authedRequest(undefined, \"GET\", path, params);\n};\n\n/**\n * Take an EventTimeline, and back/forward-fill results.\n *\n * @param {module:models/event-timeline~EventTimeline} eventTimeline timeline\n * object to be updated\n * @param {Object} [opts]\n * @param {bool} [opts.backwards = false] true to fill backwards,\n * false to go forwards\n * @param {number} [opts.limit = 30] number of events to request\n *\n * @return {module:client.Promise} Resolves to a boolean: false if there are no\n * events and we reached either end of the timeline; else true.\n */\nMatrixClient.prototype.paginateEventTimeline = function (eventTimeline, opts) {\n var isNotifTimeline = eventTimeline.getTimelineSet() === this._notifTimelineSet;\n\n // TODO: we should implement a backoff (as per scrollback()) to deal more\n // nicely with HTTP errors.\n opts = opts || {};\n var backwards = opts.backwards || false;\n\n if (isNotifTimeline) {\n if (!backwards) {\n throw new Error(\"paginateNotifTimeline can only paginate backwards\");\n }\n }\n\n var dir = backwards ? EventTimeline.BACKWARDS : EventTimeline.FORWARDS;\n\n var token = eventTimeline.getPaginationToken(dir);\n if (!token) {\n // no token - no results.\n return _bluebird2.default.resolve(false);\n }\n\n var pendingRequest = eventTimeline._paginationRequests[dir];\n\n if (pendingRequest) {\n // already a request in progress - return the existing promise\n return pendingRequest;\n }\n\n var path = void 0,\n params = void 0,\n promise = void 0;\n var self = this;\n\n if (isNotifTimeline) {\n path = \"/notifications\";\n params = {\n limit: 'limit' in opts ? opts.limit : 30,\n only: 'highlight'\n };\n\n if (token && token !== \"end\") {\n params.from = token;\n }\n\n promise = this._http.authedRequest(undefined, \"GET\", path, params, undefined).then(function (res) {\n var token = res.next_token;\n var matrixEvents = [];\n\n for (var i = 0; i < res.notifications.length; i++) {\n var notification = res.notifications[i];\n var event = self.getEventMapper()(notification.event);\n event.setPushActions(PushProcessor.actionListToActionsObject(notification.actions));\n event.event.room_id = notification.room_id; // XXX: gutwrenching\n matrixEvents[i] = event;\n }\n\n eventTimeline.getTimelineSet().addEventsToTimeline(matrixEvents, backwards, eventTimeline, token);\n\n // if we've hit the end of the timeline, we need to stop trying to\n // paginate. We need to keep the 'forwards' token though, to make sure\n // we can recover from gappy syncs.\n if (backwards && !res.next_token) {\n eventTimeline.setPaginationToken(null, dir);\n }\n return res.next_token ? true : false;\n }).finally(function () {\n eventTimeline._paginationRequests[dir] = null;\n });\n eventTimeline._paginationRequests[dir] = promise;\n } else {\n var room = this.getRoom(eventTimeline.getRoomId());\n if (!room) {\n throw new Error(\"Unknown room \" + eventTimeline.getRoomId());\n }\n\n promise = this._createMessagesRequest(eventTimeline.getRoomId(), token, opts.limit, dir, eventTimeline.getFilter());\n promise.then(function (res) {\n if (res.state) {\n var roomState = eventTimeline.getState(dir);\n var stateEvents = utils.map(res.state, self.getEventMapper());\n roomState.setUnknownStateEvents(stateEvents);\n }\n var token = res.end;\n var matrixEvents = utils.map(res.chunk, self.getEventMapper());\n eventTimeline.getTimelineSet().addEventsToTimeline(matrixEvents, backwards, eventTimeline, token);\n\n // if we've hit the end of the timeline, we need to stop trying to\n // paginate. We need to keep the 'forwards' token though, to make sure\n // we can recover from gappy syncs.\n if (backwards && res.end == res.start) {\n eventTimeline.setPaginationToken(null, dir);\n }\n return res.end != res.start;\n }).finally(function () {\n eventTimeline._paginationRequests[dir] = null;\n });\n eventTimeline._paginationRequests[dir] = promise;\n }\n\n return promise;\n};\n\n/**\n * Reset the notifTimelineSet entirely, paginating in some historical notifs as\n * a starting point for subsequent pagination.\n */\nMatrixClient.prototype.resetNotifTimelineSet = function () {\n if (!this._notifTimelineSet) {\n return;\n }\n\n // FIXME: This thing is a total hack, and results in duplicate events being\n // added to the timeline both from /sync and /notifications, and lots of\n // slow and wasteful processing and pagination. The correct solution is to\n // extend /messages or /search or something to filter on notifications.\n\n // use the fictitious token 'end'. in practice we would ideally give it\n // the oldest backwards pagination token from /sync, but /sync doesn't\n // know about /notifications, so we have no choice but to start paginating\n // from the current point in time. This may well overlap with historical\n // notifs which are then inserted into the timeline by /sync responses.\n this._notifTimelineSet.resetLiveTimeline('end', null);\n\n // we could try to paginate a single event at this point in order to get\n // a more valid pagination token, but it just ends up with an out of order\n // timeline. given what a mess this is and given we're going to have duplicate\n // events anyway, just leave it with the dummy token for now.\n /*\n this.paginateNotifTimeline(this._notifTimelineSet.getLiveTimeline(), {\n backwards: true,\n limit: 1\n });\n */\n};\n\n/**\n * Peek into a room and receive updates about the room. This only works if the\n * history visibility for the room is world_readable.\n * @param {String} roomId The room to attempt to peek into.\n * @return {module:client.Promise} Resolves: Room object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.peekInRoom = function (roomId) {\n if (this._peekSync) {\n this._peekSync.stopPeeking();\n }\n this._peekSync = new SyncApi(this, this._clientOpts);\n return this._peekSync.peek(roomId);\n};\n\n/**\n * Stop any ongoing room peeking.\n */\nMatrixClient.prototype.stopPeeking = function () {\n if (this._peekSync) {\n this._peekSync.stopPeeking();\n this._peekSync = null;\n }\n};\n\n/**\n * Set r/w flags for guest access in a room.\n * @param {string} roomId The room to configure guest access in.\n * @param {Object} opts Options\n * @param {boolean} opts.allowJoin True to allow guests to join this room. This\n * implicitly gives guests write access. If false or not given, guests are\n * explicitly forbidden from joining the room.\n * @param {boolean} opts.allowRead True to set history visibility to\n * be world_readable. This gives guests read access *from this point forward*.\n * If false or not given, history visibility is not modified.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setGuestAccess = function (roomId, opts) {\n var writePromise = this.sendStateEvent(roomId, \"m.room.guest_access\", {\n guest_access: opts.allowJoin ? \"can_join\" : \"forbidden\"\n });\n\n var readPromise = _bluebird2.default.resolve();\n if (opts.allowRead) {\n readPromise = this.sendStateEvent(roomId, \"m.room.history_visibility\", {\n history_visibility: \"world_readable\"\n });\n }\n\n return _bluebird2.default.all([readPromise, writePromise]);\n};\n\n// Registration/Login operations\n// =============================\n\n/**\n * Requests an email verification token for the purposes of registration.\n * This API requests a token from the homeserver.\n * The doesServerRequireIdServerParam() method can be used to determine if\n * the server requires the id_server parameter to be provided.\n *\n * Parameters and return value are as for requestEmailToken\n\n * @param {string} email As requestEmailToken\n * @param {string} clientSecret As requestEmailToken\n * @param {number} sendAttempt As requestEmailToken\n * @param {string} nextLink As requestEmailToken\n * @return {module:client.Promise} Resolves: As requestEmailToken\n */\nMatrixClient.prototype.requestRegisterEmailToken = function (email, clientSecret, sendAttempt, nextLink) {\n return this._requestTokenFromEndpoint(\"/register/email/requestToken\", {\n email: email,\n client_secret: clientSecret,\n send_attempt: sendAttempt,\n next_link: nextLink\n });\n};\n\n/**\n * Requests a text message verification token for the purposes of registration.\n * This API requests a token from the homeserver.\n * The doesServerRequireIdServerParam() method can be used to determine if\n * the server requires the id_server parameter to be provided.\n *\n * @param {string} phoneCountry The ISO 3166-1 alpha-2 code for the country in which\n * phoneNumber should be parsed relative to.\n * @param {string} phoneNumber The phone number, in national or international format\n * @param {string} clientSecret As requestEmailToken\n * @param {number} sendAttempt As requestEmailToken\n * @param {string} nextLink As requestEmailToken\n * @return {module:client.Promise} Resolves: As requestEmailToken\n */\nMatrixClient.prototype.requestRegisterMsisdnToken = function (phoneCountry, phoneNumber, clientSecret, sendAttempt, nextLink) {\n return this._requestTokenFromEndpoint(\"/register/msisdn/requestToken\", {\n country: phoneCountry,\n phone_number: phoneNumber,\n client_secret: clientSecret,\n send_attempt: sendAttempt,\n next_link: nextLink\n });\n};\n\n/**\n * Requests an email verification token for the purposes of adding a\n * third party identifier to an account.\n * This API requests a token from the homeserver.\n * The doesServerRequireIdServerParam() method can be used to determine if\n * the server requires the id_server parameter to be provided.\n * If an account with the given email address already exists and is\n * associated with an account other than the one the user is authed as,\n * it will either send an email to the address informing them of this\n * or return M_THREEPID_IN_USE (which one is up to the Home Server).\n *\n * @param {string} email As requestEmailToken\n * @param {string} clientSecret As requestEmailToken\n * @param {number} sendAttempt As requestEmailToken\n * @param {string} nextLink As requestEmailToken\n * @return {module:client.Promise} Resolves: As requestEmailToken\n */\nMatrixClient.prototype.requestAdd3pidEmailToken = function (email, clientSecret, sendAttempt, nextLink) {\n return this._requestTokenFromEndpoint(\"/account/3pid/email/requestToken\", {\n email: email,\n client_secret: clientSecret,\n send_attempt: sendAttempt,\n next_link: nextLink\n });\n};\n\n/**\n * Requests a text message verification token for the purposes of adding a\n * third party identifier to an account.\n * This API proxies the Identity Server /validate/email/requestToken API,\n * adding specific behaviour for the addition of phone numbers to an\n * account, as requestAdd3pidEmailToken.\n *\n * @param {string} phoneCountry As requestRegisterMsisdnToken\n * @param {string} phoneNumber As requestRegisterMsisdnToken\n * @param {string} clientSecret As requestEmailToken\n * @param {number} sendAttempt As requestEmailToken\n * @param {string} nextLink As requestEmailToken\n * @return {module:client.Promise} Resolves: As requestEmailToken\n */\nMatrixClient.prototype.requestAdd3pidMsisdnToken = function (phoneCountry, phoneNumber, clientSecret, sendAttempt, nextLink) {\n return this._requestTokenFromEndpoint(\"/account/3pid/msisdn/requestToken\", {\n country: phoneCountry,\n phone_number: phoneNumber,\n client_secret: clientSecret,\n send_attempt: sendAttempt,\n next_link: nextLink\n });\n};\n\n/**\n * Requests an email verification token for the purposes of resetting\n * the password on an account.\n * This API proxies the Identity Server /validate/email/requestToken API,\n * adding specific behaviour for the password resetting. Specifically,\n * if no account with the given email address exists, it may either\n * return M_THREEPID_NOT_FOUND or send an email\n * to the address informing them of this (which one is up to the Home Server).\n *\n * requestEmailToken calls the equivalent API directly on the ID server,\n * therefore bypassing the password reset specific logic.\n *\n * @param {string} email As requestEmailToken\n * @param {string} clientSecret As requestEmailToken\n * @param {number} sendAttempt As requestEmailToken\n * @param {string} nextLink As requestEmailToken\n * @param {module:client.callback} callback Optional. As requestEmailToken\n * @return {module:client.Promise} Resolves: As requestEmailToken\n */\nMatrixClient.prototype.requestPasswordEmailToken = function (email, clientSecret, sendAttempt, nextLink) {\n return this._requestTokenFromEndpoint(\"/account/password/email/requestToken\", {\n email: email,\n client_secret: clientSecret,\n send_attempt: sendAttempt,\n next_link: nextLink\n });\n};\n\n/**\n * Requests a text message verification token for the purposes of resetting\n * the password on an account.\n * This API proxies the Identity Server /validate/email/requestToken API,\n * adding specific behaviour for the password resetting, as requestPasswordEmailToken.\n *\n * @param {string} phoneCountry As requestRegisterMsisdnToken\n * @param {string} phoneNumber As requestRegisterMsisdnToken\n * @param {string} clientSecret As requestEmailToken\n * @param {number} sendAttempt As requestEmailToken\n * @param {string} nextLink As requestEmailToken\n * @return {module:client.Promise} Resolves: As requestEmailToken\n */\nMatrixClient.prototype.requestPasswordMsisdnToken = function (phoneCountry, phoneNumber, clientSecret, sendAttempt, nextLink) {\n return this._requestTokenFromEndpoint(\"/account/password/msisdn/requestToken\", {\n country: phoneCountry,\n phone_number: phoneNumber,\n client_secret: clientSecret,\n send_attempt: sendAttempt,\n next_link: nextLink\n });\n};\n\n/**\n * Internal utility function for requesting validation tokens from usage-specific\n * requestToken endpoints.\n *\n * @param {string} endpoint The endpoint to send the request to\n * @param {object} params Parameters for the POST request\n * @return {module:client.Promise} Resolves: As requestEmailToken\n */\nMatrixClient.prototype._requestTokenFromEndpoint = function () {\n var _ref13 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(endpoint, params) {\n var postParams, idServerUrl, identityAccessToken;\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n postParams = (0, _assign2.default)({}, params);\n\n // If the HS supports separate add and bind, then requestToken endpoints\n // don't need an IS as they are all validated by the HS directly.\n\n _context8.next = 3;\n return (0, _bluebird.resolve)(this.doesServerSupportSeparateAddAndBind());\n\n case 3:\n _context8.t0 = !_context8.sent;\n\n if (!_context8.t0) {\n _context8.next = 6;\n break;\n }\n\n _context8.t0 = this.idBaseUrl;\n\n case 6:\n if (!_context8.t0) {\n _context8.next = 21;\n break;\n }\n\n idServerUrl = url.parse(this.idBaseUrl);\n\n if (idServerUrl.host) {\n _context8.next = 10;\n break;\n }\n\n throw new Error(\"Invalid ID server URL: \" + this.idBaseUrl);\n\n case 10:\n postParams.id_server = idServerUrl.host;\n\n _context8.t1 = this.identityServer && this.identityServer.getAccessToken;\n\n if (!_context8.t1) {\n _context8.next = 16;\n break;\n }\n\n _context8.next = 15;\n return (0, _bluebird.resolve)(this.doesServerAcceptIdentityAccessToken());\n\n case 15:\n _context8.t1 = _context8.sent;\n\n case 16:\n if (!_context8.t1) {\n _context8.next = 21;\n break;\n }\n\n _context8.next = 19;\n return (0, _bluebird.resolve)(this.identityServer.getAccessToken());\n\n case 19:\n identityAccessToken = _context8.sent;\n\n if (identityAccessToken) {\n postParams.id_access_token = identityAccessToken;\n }\n\n case 21:\n return _context8.abrupt(\"return\", this._http.request(undefined, \"POST\", endpoint, undefined, postParams));\n\n case 22:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n return function (_x32, _x33) {\n return _ref13.apply(this, arguments);\n };\n}();\n\n// Push operations\n// ===============\n\n/**\n * Get the room-kind push rule associated with a room.\n * @param {string} scope \"global\" or device-specific.\n * @param {string} roomId the id of the room.\n * @return {object} the rule or undefined.\n */\nMatrixClient.prototype.getRoomPushRule = function (scope, roomId) {\n // There can be only room-kind push rule per room\n // and its id is the room id.\n if (this.pushRules) {\n for (var i = 0; i < this.pushRules[scope].room.length; i++) {\n var rule = this.pushRules[scope].room[i];\n if (rule.rule_id === roomId) {\n return rule;\n }\n }\n } else {\n throw new Error(\"SyncApi.sync() must be done before accessing to push rules.\");\n }\n};\n\n/**\n * Set a room-kind muting push rule in a room.\n * The operation also updates MatrixClient.pushRules at the end.\n * @param {string} scope \"global\" or device-specific.\n * @param {string} roomId the id of the room.\n * @param {string} mute the mute state.\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setRoomMutePushRule = function (scope, roomId, mute) {\n var self = this;\n var deferred = void 0,\n hasDontNotifyRule = void 0;\n\n // Get the existing room-kind push rule if any\n var roomPushRule = this.getRoomPushRule(scope, roomId);\n if (roomPushRule) {\n if (0 <= roomPushRule.actions.indexOf(\"dont_notify\")) {\n hasDontNotifyRule = true;\n }\n }\n\n if (!mute) {\n // Remove the rule only if it is a muting rule\n if (hasDontNotifyRule) {\n deferred = this.deletePushRule(scope, \"room\", roomPushRule.rule_id);\n }\n } else {\n if (!roomPushRule) {\n deferred = this.addPushRule(scope, \"room\", roomId, {\n actions: [\"dont_notify\"]\n });\n } else if (!hasDontNotifyRule) {\n // Remove the existing one before setting the mute push rule\n // This is a workaround to SYN-590 (Push rule update fails)\n deferred = _bluebird2.default.defer();\n this.deletePushRule(scope, \"room\", roomPushRule.rule_id).done(function () {\n self.addPushRule(scope, \"room\", roomId, {\n actions: [\"dont_notify\"]\n }).done(function () {\n deferred.resolve();\n }, function (err) {\n deferred.reject(err);\n });\n }, function (err) {\n deferred.reject(err);\n });\n\n deferred = deferred.promise;\n }\n }\n\n if (deferred) {\n // Update this.pushRules when the operation completes\n var ruleRefreshDeferred = _bluebird2.default.defer();\n deferred.done(function () {\n self.getPushRules().done(function (result) {\n self.pushRules = result;\n ruleRefreshDeferred.resolve();\n }, function (err) {\n ruleRefreshDeferred.reject(err);\n });\n }, function (err) {\n // Update it even if the previous operation fails. This can help the\n // app to recover when push settings has been modifed from another client\n self.getPushRules().done(function (result) {\n self.pushRules = result;\n ruleRefreshDeferred.reject(err);\n }, function (err2) {\n ruleRefreshDeferred.reject(err);\n });\n });\n return ruleRefreshDeferred.promise;\n }\n};\n\n// Search\n// ======\n\n/**\n * Perform a server-side search for messages containing the given text.\n * @param {Object} opts Options for the search.\n * @param {string} opts.query The text to query.\n * @param {string=} opts.keys The keys to search on. Defaults to all keys. One\n * of \"content.body\", \"content.name\", \"content.topic\".\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.searchMessageText = function (opts, callback) {\n var roomEvents = {\n search_term: opts.query\n };\n\n if ('keys' in opts) {\n roomEvents.keys = opts.keys;\n }\n\n return this.search({\n body: {\n search_categories: {\n room_events: roomEvents\n }\n }\n }, callback);\n};\n\n/**\n * Perform a server-side search for room events.\n *\n * The returned promise resolves to an object containing the fields:\n *\n * * {number} count: estimate of the number of results\n * * {string} next_batch: token for back-pagination; if undefined, there are\n * no more results\n * * {Array} highlights: a list of words to highlight from the stemming\n * algorithm\n * * {Array} results: a list of results\n *\n * Each entry in the results list is a {module:models/search-result.SearchResult}.\n *\n * @param {Object} opts\n * @param {string} opts.term the term to search for\n * @param {Object} opts.filter a JSON filter object to pass in the request\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.searchRoomEvents = function (opts) {\n // TODO: support groups\n\n var body = {\n search_categories: {\n room_events: {\n search_term: opts.term,\n filter: opts.filter,\n order_by: \"recent\",\n event_context: {\n before_limit: 1,\n after_limit: 1,\n include_profile: true\n }\n }\n }\n };\n\n var searchResults = {\n _query: body,\n results: [],\n highlights: []\n };\n\n return this.search({ body: body }).then(this._processRoomEventsSearch.bind(this, searchResults));\n};\n\n/**\n * Take a result from an earlier searchRoomEvents call, and backfill results.\n *\n * @param {object} searchResults the results object to be updated\n * @return {module:client.Promise} Resolves: updated result object\n * @return {Error} Rejects: with an error response.\n */\nMatrixClient.prototype.backPaginateRoomEventsSearch = function (searchResults) {\n // TODO: we should implement a backoff (as per scrollback()) to deal more\n // nicely with HTTP errors.\n\n if (!searchResults.next_batch) {\n return _bluebird2.default.reject(new Error(\"Cannot backpaginate event search any further\"));\n }\n\n if (searchResults.pendingRequest) {\n // already a request in progress - return the existing promise\n return searchResults.pendingRequest;\n }\n\n var searchOpts = {\n body: searchResults._query,\n next_batch: searchResults.next_batch\n };\n\n var promise = this.search(searchOpts).then(this._processRoomEventsSearch.bind(this, searchResults)).finally(function () {\n searchResults.pendingRequest = null;\n });\n searchResults.pendingRequest = promise;\n\n return promise;\n};\n\n/**\n * helper for searchRoomEvents and backPaginateRoomEventsSearch. Processes the\n * response from the API call and updates the searchResults\n *\n * @param {Object} searchResults\n * @param {Object} response\n * @return {Object} searchResults\n * @private\n */\nMatrixClient.prototype._processRoomEventsSearch = function (searchResults, response) {\n var room_events = response.search_categories.room_events;\n\n searchResults.count = room_events.count;\n searchResults.next_batch = room_events.next_batch;\n\n // combine the highlight list with our existing list; build an object\n // to avoid O(N^2) fail\n var highlights = {};\n room_events.highlights.forEach(function (hl) {\n highlights[hl] = 1;\n });\n searchResults.highlights.forEach(function (hl) {\n highlights[hl] = 1;\n });\n\n // turn it back into a list.\n searchResults.highlights = (0, _keys2.default)(highlights);\n\n // append the new results to our existing results\n for (var i = 0; i < room_events.results.length; i++) {\n var sr = SearchResult.fromJson(room_events.results[i], this.getEventMapper());\n searchResults.results.push(sr);\n }\n return searchResults;\n};\n\n/**\n * Populate the store with rooms the user has left.\n * @return {module:client.Promise} Resolves: TODO - Resolved when the rooms have\n * been added to the data store.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.syncLeftRooms = function () {\n // Guard against multiple calls whilst ongoing and multiple calls post success\n if (this._syncedLeftRooms) {\n return _bluebird2.default.resolve([]); // don't call syncRooms again if it succeeded.\n }\n if (this._syncLeftRoomsPromise) {\n return this._syncLeftRoomsPromise; // return the ongoing request\n }\n var self = this;\n var syncApi = new SyncApi(this, this._clientOpts);\n this._syncLeftRoomsPromise = syncApi.syncLeftRooms();\n\n // cleanup locks\n this._syncLeftRoomsPromise.then(function (res) {\n _logger2.default.log(\"Marking success of sync left room request\");\n self._syncedLeftRooms = true; // flip the bit on success\n }).finally(function () {\n self._syncLeftRoomsPromise = null; // cleanup ongoing request state\n });\n\n return this._syncLeftRoomsPromise;\n};\n\n// Filters\n// =======\n\n/**\n * Create a new filter.\n * @param {Object} content The HTTP body for the request\n * @return {Filter} Resolves to a Filter object.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.createFilter = function (content) {\n var self = this;\n var path = utils.encodeUri(\"/user/$userId/filter\", {\n $userId: this.credentials.userId\n });\n return this._http.authedRequest(undefined, \"POST\", path, undefined, content).then(function (response) {\n // persist the filter\n var filter = Filter.fromJson(self.credentials.userId, response.filter_id, content);\n self.store.storeFilter(filter);\n return filter;\n });\n};\n\n/**\n * Retrieve a filter.\n * @param {string} userId The user ID of the filter owner\n * @param {string} filterId The filter ID to retrieve\n * @param {boolean} allowCached True to allow cached filters to be returned.\n * Default: True.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.getFilter = function (userId, filterId, allowCached) {\n if (allowCached) {\n var filter = this.store.getFilter(userId, filterId);\n if (filter) {\n return _bluebird2.default.resolve(filter);\n }\n }\n\n var self = this;\n var path = utils.encodeUri(\"/user/$userId/filter/$filterId\", {\n $userId: userId,\n $filterId: filterId\n });\n\n return this._http.authedRequest(undefined, \"GET\", path, undefined, undefined).then(function (response) {\n // persist the filter\n var filter = Filter.fromJson(userId, filterId, response);\n self.store.storeFilter(filter);\n return filter;\n });\n};\n\n/**\n * @param {string} filterName\n * @param {Filter} filter\n * @return {Promise} Filter ID\n */\nMatrixClient.prototype.getOrCreateFilter = function (filterName, filter) {\n var filterId = this.store.getFilterIdByName(filterName);\n var promise = _bluebird2.default.resolve();\n var self = this;\n\n if (filterId) {\n // check that the existing filter matches our expectations\n promise = self.getFilter(self.credentials.userId, filterId, true).then(function (existingFilter) {\n var oldDef = existingFilter.getDefinition();\n var newDef = filter.getDefinition();\n\n if (utils.deepCompare(oldDef, newDef)) {\n // super, just use that.\n // debuglog(\"Using existing filter ID %s: %s\", filterId,\n // JSON.stringify(oldDef));\n return _bluebird2.default.resolve(filterId);\n }\n // debuglog(\"Existing filter ID %s: %s; new filter: %s\",\n // filterId, JSON.stringify(oldDef), JSON.stringify(newDef));\n self.store.setFilterIdByName(filterName, undefined);\n return undefined;\n }, function (error) {\n // Synapse currently returns the following when the filter cannot be found:\n // {\n // errcode: \"M_UNKNOWN\",\n // name: \"M_UNKNOWN\",\n // message: \"No row found\",\n // data: Object, httpStatus: 404\n // }\n if (error.httpStatus === 404 && (error.errcode === \"M_UNKNOWN\" || error.errcode === \"M_NOT_FOUND\")) {\n // Clear existing filterId from localStorage\n // if it no longer exists on the server\n self.store.setFilterIdByName(filterName, undefined);\n // Return a undefined value for existingId further down the promise chain\n return undefined;\n } else {\n throw error;\n }\n });\n }\n\n return promise.then(function (existingId) {\n if (existingId) {\n return existingId;\n }\n\n // create a new filter\n return self.createFilter(filter.getDefinition()).then(function (createdFilter) {\n // debuglog(\"Created new filter ID %s: %s\", createdFilter.filterId,\n // JSON.stringify(createdFilter.getDefinition()));\n self.store.setFilterIdByName(filterName, createdFilter.filterId);\n return createdFilter.filterId;\n });\n });\n};\n\n/**\n * Gets a bearer token from the Home Server that the user can\n * present to a third party in order to prove their ownership\n * of the Matrix account they are logged into.\n * @return {module:client.Promise} Resolves: Token object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.getOpenIdToken = function () {\n var path = utils.encodeUri(\"/user/$userId/openid/request_token\", {\n $userId: this.credentials.userId\n });\n\n return this._http.authedRequest(undefined, \"POST\", path, undefined, {});\n};\n\n// VoIP operations\n// ===============\n\n/**\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.turnServer = function (callback) {\n return this._http.authedRequest(callback, \"GET\", \"/voip/turnServer\");\n};\n\n/**\n * Get the TURN servers for this home server.\n * @return {Array} The servers or an empty list.\n */\nMatrixClient.prototype.getTurnServers = function () {\n return this._turnServers || [];\n};\n\n/**\n * Set whether to allow a fallback ICE server should be used for negotiating a\n * WebRTC connection if the homeserver doesn't provide any servers. Defaults to\n * false.\n *\n * @param {boolean} allow\n */\nMatrixClient.prototype.setFallbackICEServerAllowed = function (allow) {\n this._fallbackICEServerAllowed = allow;\n};\n\n/**\n * Get whether to allow a fallback ICE server should be used for negotiating a\n * WebRTC connection if the homeserver doesn't provide any servers. Defaults to\n * false.\n *\n * @returns {boolean}\n */\nMatrixClient.prototype.isFallbackICEServerAllowed = function () {\n return this._fallbackICEServerAllowed;\n};\n\n// Synapse-specific APIs\n// =====================\n\n/**\n * Determines if the current user is an administrator of the Synapse homeserver.\n * Returns false if untrue or the homeserver does not appear to be a Synapse\n * homeserver. This function is implementation specific and may change\n * as a result.\n * @return {boolean} true if the user appears to be a Synapse administrator.\n */\nMatrixClient.prototype.isSynapseAdministrator = function () {\n return this.whoisSynapseUser(this.getUserId()).then(function () {\n return true;\n }).catch(function () {\n return false;\n });\n};\n\n/**\n * Performs a whois lookup on a user using Synapse's administrator API.\n * This function is implementation specific and may change as a\n * result.\n * @param {string} userId the User ID to look up.\n * @return {object} the whois response - see Synapse docs for information.\n */\nMatrixClient.prototype.whoisSynapseUser = function (userId) {\n var path = utils.encodeUri(\"/_synapse/admin/v1/whois/$userId\", { $userId: userId });\n return this._http.authedRequest(undefined, 'GET', path, undefined, undefined, { prefix: '' });\n};\n\n/**\n * Deactivates a user using Synapse's administrator API. This\n * function is implementation specific and may change as a result.\n * @param {string} userId the User ID to deactivate.\n * @return {object} the deactivate response - see Synapse docs for information.\n */\nMatrixClient.prototype.deactivateSynapseUser = function (userId) {\n var path = utils.encodeUri(\"/_synapse/admin/v1/deactivate/$userId\", { $userId: userId });\n return this._http.authedRequest(undefined, 'POST', path, undefined, undefined, { prefix: '' });\n};\n\n// Higher level APIs\n// =================\n\n// TODO: stuff to handle:\n// local echo\n// event dup suppression? - apparently we should still be doing this\n// tracking current display name / avatar per-message\n// pagination\n// re-sending (including persisting pending messages to be sent)\n// - Need a nice way to callback the app for arbitrary events like\n// displayname changes\n// due to ambiguity (or should this be on a chat-specific layer)?\n// reconnect after connectivity outages\n\n\n/**\n * High level helper method to begin syncing and poll for new events. To listen for these\n * events, add a listener for {@link module:client~MatrixClient#event:\"event\"}\n * via {@link module:client~MatrixClient#on}. Alternatively, listen for specific\n * state change events.\n * @param {Object=} opts Options to apply when syncing.\n * @param {Number=} opts.initialSyncLimit The event limit= to apply\n * to initial sync. Default: 8.\n * @param {Boolean=} opts.includeArchivedRooms True to put archived=true\n * on the /initialSync request. Default: false.\n * @param {Boolean=} opts.resolveInvitesToProfiles True to do /profile requests\n * on every invite event if the displayname/avatar_url is not known for this user ID.\n * Default: false.\n *\n * @param {String=} opts.pendingEventOrdering Controls where pending messages\n * appear in a room's timeline. If \"chronological\", messages will appear\n * in the timeline when the call to sendEvent was made. If\n * \"detached\", pending messages will appear in a separate list,\n * accessbile via {@link module:models/room#getPendingEvents}. Default:\n * \"chronological\".\n *\n * @param {Number=} opts.pollTimeout The number of milliseconds to wait on /sync.\n * Default: 30000 (30 seconds).\n *\n * @param {Filter=} opts.filter The filter to apply to /sync calls. This will override\n * the opts.initialSyncLimit, which would normally result in a timeline limit filter.\n *\n * @param {Boolean=} opts.disablePresence True to perform syncing without automatically\n * updating presence.\n * @param {Boolean=} opts.lazyLoadMembers True to not load all membership events during\n * initial sync but fetch them when needed by calling `loadOutOfBandMembers`\n * This will override the filter option at this moment.\n */\nMatrixClient.prototype.startClient = function () {\n var _ref14 = (0, _bluebird.method)(function (opts) {\n var _this7 = this;\n\n if (this.clientRunning) {\n // client is already running.\n return;\n }\n this.clientRunning = true;\n // backwards compat for when 'opts' was 'historyLen'.\n if (typeof opts === \"number\") {\n opts = {\n initialSyncLimit: opts\n };\n }\n\n if (this._crypto) {\n this._crypto.uploadDeviceKeys().done();\n this._crypto.start();\n }\n\n // periodically poll for turn servers if we support voip\n checkTurnServers(this);\n\n if (this._syncApi) {\n // This shouldn't happen since we thought the client was not running\n _logger2.default.error(\"Still have sync object whilst not running: stopping old one\");\n this._syncApi.stop();\n }\n\n // shallow-copy the opts dict before modifying and storing it\n opts = (0, _assign2.default)({}, opts);\n\n opts.crypto = this._crypto;\n opts.canResetEntireTimeline = function (roomId) {\n if (!_this7._canResetTimelineCallback) {\n return false;\n }\n return _this7._canResetTimelineCallback(roomId);\n };\n this._clientOpts = opts;\n this._syncApi = new SyncApi(this, opts);\n this._syncApi.sync();\n });\n\n return function (_x34) {\n return _ref14.apply(this, arguments);\n };\n}();\n\n/**\n * store client options with boolean/string/numeric values\n * to know in the next session what flags the sync data was\n * created with (e.g. lazy loading)\n * @param {object} opts the complete set of client options\n * @return {Promise} for store operation */\nMatrixClient.prototype._storeClientOptions = function () {\n var primTypes = [\"boolean\", \"string\", \"number\"];\n var serializableOpts = (0, _entries2.default)(this._clientOpts).filter(function (_ref15) {\n var _ref16 = (0, _slicedToArray3.default)(_ref15, 2),\n key = _ref16[0],\n value = _ref16[1];\n\n return primTypes.includes(typeof value === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(value));\n }).reduce(function (obj, _ref17) {\n var _ref18 = (0, _slicedToArray3.default)(_ref17, 2),\n key = _ref18[0],\n value = _ref18[1];\n\n obj[key] = value;\n return obj;\n }, {});\n return this.store.storeClientOptions(serializableOpts);\n};\n\n/**\n * High level helper method to stop the client from polling and allow a\n * clean shutdown.\n */\nMatrixClient.prototype.stopClient = function () {\n _logger2.default.log('stopping MatrixClient');\n\n this.clientRunning = false;\n // TODO: f.e. Room => self.store.storeRoom(room) ?\n if (this._syncApi) {\n this._syncApi.stop();\n this._syncApi = null;\n }\n if (this._crypto) {\n this._crypto.stop();\n }\n if (this._peekSync) {\n this._peekSync.stopPeeking();\n }\n global.clearTimeout(this._checkTurnServersTimeoutID);\n};\n\n/**\n * Get the API versions supported by the server, along with any\n * unstable APIs it supports\n * @return {Promise} The server /versions response\n */\nMatrixClient.prototype.getVersions = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee9() {\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n if (!(this._serverVersionsCache === null)) {\n _context9.next = 4;\n break;\n }\n\n _context9.next = 3;\n return (0, _bluebird.resolve)(this._http.request(undefined, // callback\n \"GET\", \"/_matrix/client/versions\", undefined, // queryParams\n undefined, // data\n {\n prefix: ''\n }));\n\n case 3:\n this._serverVersionsCache = _context9.sent;\n\n case 4:\n return _context9.abrupt(\"return\", this._serverVersionsCache);\n\n case 5:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n}));\n\n/**\n * Query the server to see if it support members lazy loading\n * @return {Promise} true if server supports lazy loading\n */\nMatrixClient.prototype.doesServerSupportLazyLoading = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee10() {\n var response, versions, unstableFeatures;\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _context10.next = 2;\n return (0, _bluebird.resolve)(this.getVersions());\n\n case 2:\n response = _context10.sent;\n versions = response[\"versions\"];\n unstableFeatures = response[\"unstable_features\"];\n return _context10.abrupt(\"return\", versions && versions.includes(\"r0.5.0\") || unstableFeatures && unstableFeatures[\"m.lazy_load_members\"]);\n\n case 6:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n}));\n\n/**\n * Query the server to see if the `id_server` parameter is required\n * when registering with an 3pid, adding a 3pid or resetting password.\n * @return {Promise} true if id_server parameter is required\n */\nMatrixClient.prototype.doesServerRequireIdServerParam = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee11() {\n var response, versions, unstableFeatures;\n return _regenerator2.default.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n _context11.next = 2;\n return (0, _bluebird.resolve)(this.getVersions());\n\n case 2:\n response = _context11.sent;\n versions = response[\"versions\"];\n\n // Supporting r0.6.0 is the same as having the flag set to false\n\n if (!(versions && versions.includes(\"r0.6.0\"))) {\n _context11.next = 6;\n break;\n }\n\n return _context11.abrupt(\"return\", false);\n\n case 6:\n unstableFeatures = response[\"unstable_features\"];\n\n if (!(unstableFeatures[\"m.require_identity_server\"] === undefined)) {\n _context11.next = 11;\n break;\n }\n\n return _context11.abrupt(\"return\", true);\n\n case 11:\n return _context11.abrupt(\"return\", unstableFeatures[\"m.require_identity_server\"]);\n\n case 12:\n case \"end\":\n return _context11.stop();\n }\n }\n }, _callee11, this);\n}));\n\n/**\n * Query the server to see if the `id_access_token` parameter can be safely\n * passed to the homeserver. Some homeservers may trigger errors if they are not\n * prepared for the new parameter.\n * @return {Promise} true if id_access_token can be sent\n */\nMatrixClient.prototype.doesServerAcceptIdentityAccessToken = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee12() {\n var response, versions, unstableFeatures;\n return _regenerator2.default.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n _context12.next = 2;\n return (0, _bluebird.resolve)(this.getVersions());\n\n case 2:\n response = _context12.sent;\n versions = response[\"versions\"];\n unstableFeatures = response[\"unstable_features\"];\n return _context12.abrupt(\"return\", versions && versions.includes(\"r0.6.0\") || unstableFeatures && unstableFeatures[\"m.id_access_token\"]);\n\n case 6:\n case \"end\":\n return _context12.stop();\n }\n }\n }, _callee12, this);\n}));\n\n/**\n * Query the server to see if it supports separate 3PID add and bind functions.\n * This affects the sequence of API calls clients should use for these operations,\n * so it's helpful to be able to check for support.\n * @return {Promise} true if separate functions are supported\n */\nMatrixClient.prototype.doesServerSupportSeparateAddAndBind = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee13() {\n var response, versions, unstableFeatures;\n return _regenerator2.default.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n _context13.next = 2;\n return (0, _bluebird.resolve)(this.getVersions());\n\n case 2:\n response = _context13.sent;\n versions = response[\"versions\"];\n unstableFeatures = response[\"unstable_features\"];\n return _context13.abrupt(\"return\", versions && versions.includes(\"r0.6.0\") || unstableFeatures && unstableFeatures[\"m.separate_add_and_bind\"]);\n\n case 6:\n case \"end\":\n return _context13.stop();\n }\n }\n }, _callee13, this);\n}));\n\n/**\n * Get if lazy loading members is being used.\n * @return {boolean} Whether or not members are lazy loaded by this client\n */\nMatrixClient.prototype.hasLazyLoadMembersEnabled = function () {\n return !!this._clientOpts.lazyLoadMembers;\n};\n\n/**\n * Set a function which is called when /sync returns a 'limited' response.\n * It is called with a room ID and returns a boolean. It should return 'true' if the SDK\n * can SAFELY remove events from this room. It may not be safe to remove events if there\n * are other references to the timelines for this room, e.g because the client is\n * actively viewing events in this room.\n * Default: returns false.\n * @param {Function} cb The callback which will be invoked.\n */\nMatrixClient.prototype.setCanResetTimelineCallback = function (cb) {\n this._canResetTimelineCallback = cb;\n};\n\n/**\n * Get the callback set via `setCanResetTimelineCallback`.\n * @return {?Function} The callback or null\n */\nMatrixClient.prototype.getCanResetTimelineCallback = function () {\n return this._canResetTimelineCallback;\n};\n\n/**\n * Returns relations for a given event. Handles encryption transparently,\n * with the caveat that the amount of events returned might be 0, even though you get a nextBatch.\n * When the returned promise resolves, all messages should have finished trying to decrypt.\n * @param {string} roomId the room of the event\n * @param {string} eventId the id of the event\n * @param {string} relationType the rel_type of the relations requested\n * @param {string} eventType the event type of the relations requested\n * @param {Object} opts options with optional values for the request.\n * @param {Object} opts.from the pagination token returned from a previous request as `nextBatch` to return following relations.\n * @return {Object} an object with `events` as `MatrixEvent[]` and optionally `nextBatch` if more relations are available.\n */\nMatrixClient.prototype.relations = function () {\n var _ref24 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee14(roomId, eventId, relationType, eventType) {\n var opts = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n var fetchedEventType, result, mapper, originalEvent, events, allEvents;\n return _regenerator2.default.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n fetchedEventType = _getEncryptedIfNeededEventType(this, roomId, eventType);\n _context14.next = 3;\n return (0, _bluebird.resolve)(this.fetchRelations(roomId, eventId, relationType, fetchedEventType, opts));\n\n case 3:\n result = _context14.sent;\n mapper = this.getEventMapper();\n originalEvent = void 0;\n\n if (result.original_event) {\n originalEvent = mapper(result.original_event);\n }\n events = result.chunk.map(mapper);\n\n if (!(fetchedEventType === \"m.room.encrypted\")) {\n _context14.next = 13;\n break;\n }\n\n allEvents = originalEvent ? events.concat(originalEvent) : events;\n _context14.next = 12;\n return (0, _bluebird.resolve)(_bluebird2.default.all(allEvents.map(function (e) {\n return new _bluebird2.default(function (resolve) {\n return e.once(\"Event.decrypted\", resolve);\n });\n })));\n\n case 12:\n events = events.filter(function (e) {\n return e.getType() === eventType;\n });\n\n case 13:\n return _context14.abrupt(\"return\", {\n originalEvent: originalEvent,\n events: events,\n nextBatch: result.next_batch\n });\n\n case 14:\n case \"end\":\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n return function (_x35, _x36, _x37, _x38, _x39) {\n return _ref24.apply(this, arguments);\n };\n}();\n\nfunction setupCallEventHandler(client) {\n var candidatesByCall = {\n // callId: [Candidate]\n };\n\n // Maintain a buffer of events before the client has synced for the first time.\n // This buffer will be inspected to see if we should send incoming call\n // notifications. It needs to be buffered to correctly determine if an\n // incoming call has had a matching answer/hangup.\n var callEventBuffer = [];\n var isClientPrepared = false;\n client.on(\"sync\", function (state) {\n if (state === \"PREPARED\") {\n isClientPrepared = true;\n var ignoreCallIds = {}; // Set\n // inspect the buffer and mark all calls which have been answered\n // or hung up before passing them to the call event handler.\n for (var i = callEventBuffer.length - 1; i >= 0; i--) {\n var ev = callEventBuffer[i];\n if (ev.getType() === \"m.call.answer\" || ev.getType() === \"m.call.hangup\") {\n ignoreCallIds[ev.getContent().call_id] = \"yep\";\n }\n }\n // now loop through the buffer chronologically and inject them\n callEventBuffer.forEach(function (e) {\n if (ignoreCallIds[e.getContent().call_id]) {\n // This call has previously been ansered or hung up: ignore it\n return;\n }\n callEventHandler(e);\n });\n callEventBuffer = [];\n }\n });\n\n client.on(\"event\", onEvent);\n\n function onEvent(event) {\n if (event.getType().indexOf(\"m.call.\") !== 0) {\n // not a call event\n if (event.isBeingDecrypted() || event.isDecryptionFailure()) {\n // not *yet* a call event, but might become one...\n event.once(\"Event.decrypted\", onEvent);\n }\n return;\n }\n if (!isClientPrepared) {\n callEventBuffer.push(event);\n return;\n }\n callEventHandler(event);\n }\n\n function callEventHandler(event) {\n var content = event.getContent();\n var call = content.call_id ? client.callList[content.call_id] : undefined;\n var i = void 0;\n //console.log(\"RECV %s content=%s\", event.getType(), JSON.stringify(content));\n\n if (event.getType() === \"m.call.invite\") {\n if (event.getSender() === client.credentials.userId) {\n return; // ignore invites you send\n }\n\n if (event.getAge() > content.lifetime) {\n return; // expired call\n }\n\n if (call && call.state === \"ended\") {\n return; // stale/old invite event\n }\n if (call) {\n _logger2.default.log(\"WARN: Already have a MatrixCall with id %s but got an \" + \"invite. Clobbering.\", content.call_id);\n }\n\n call = webRtcCall.createNewMatrixCall(client, event.getRoomId(), {\n forceTURN: client._forceTURN\n });\n if (!call) {\n _logger2.default.log(\"Incoming call ID \" + content.call_id + \" but this client \" + \"doesn't support WebRTC\");\n // don't hang up the call: there could be other clients\n // connected that do support WebRTC and declining the\n // the call on their behalf would be really annoying.\n return;\n }\n\n call.callId = content.call_id;\n call._initWithInvite(event);\n client.callList[call.callId] = call;\n\n // if we stashed candidate events for that call ID, play them back now\n if (candidatesByCall[call.callId]) {\n for (i = 0; i < candidatesByCall[call.callId].length; i++) {\n call._gotRemoteIceCandidate(candidatesByCall[call.callId][i]);\n }\n }\n\n // Were we trying to call that user (room)?\n var existingCall = void 0;\n var existingCalls = utils.values(client.callList);\n for (i = 0; i < existingCalls.length; ++i) {\n var thisCall = existingCalls[i];\n if (call.roomId === thisCall.roomId && thisCall.direction === 'outbound' && [\"wait_local_media\", \"create_offer\", \"invite_sent\"].indexOf(thisCall.state) !== -1) {\n existingCall = thisCall;\n break;\n }\n }\n\n if (existingCall) {\n // If we've only got to wait_local_media or create_offer and\n // we've got an invite, pick the incoming call because we know\n // we haven't sent our invite yet otherwise, pick whichever\n // call has the lowest call ID (by string comparison)\n if (existingCall.state === 'wait_local_media' || existingCall.state === 'create_offer' || existingCall.callId > call.callId) {\n _logger2.default.log(\"Glare detected: answering incoming call \" + call.callId + \" and canceling outgoing call \" + existingCall.callId);\n existingCall._replacedBy(call);\n call.answer();\n } else {\n _logger2.default.log(\"Glare detected: rejecting incoming call \" + call.callId + \" and keeping outgoing call \" + existingCall.callId);\n call.hangup();\n }\n } else {\n client.emit(\"Call.incoming\", call);\n }\n } else if (event.getType() === 'm.call.answer') {\n if (!call) {\n return;\n }\n if (event.getSender() === client.credentials.userId) {\n if (call.state === 'ringing') {\n call._onAnsweredElsewhere(content);\n }\n } else {\n call._receivedAnswer(content);\n }\n } else if (event.getType() === 'm.call.candidates') {\n if (event.getSender() === client.credentials.userId) {\n return;\n }\n if (!call) {\n // store the candidates; we may get a call eventually.\n if (!candidatesByCall[content.call_id]) {\n candidatesByCall[content.call_id] = [];\n }\n candidatesByCall[content.call_id] = candidatesByCall[content.call_id].concat(content.candidates);\n } else {\n for (i = 0; i < content.candidates.length; i++) {\n call._gotRemoteIceCandidate(content.candidates[i]);\n }\n }\n } else if (event.getType() === 'm.call.hangup') {\n // Note that we also observe our own hangups here so we can see\n // if we've already rejected a call that would otherwise be valid\n if (!call) {\n // if not live, store the fact that the call has ended because\n // we're probably getting events backwards so\n // the hangup will come before the invite\n call = webRtcCall.createNewMatrixCall(client, event.getRoomId());\n if (call) {\n call.callId = content.call_id;\n call._initWithHangup(event);\n client.callList[content.call_id] = call;\n }\n } else {\n if (call.state !== 'ended') {\n call._onHangupReceived(content);\n delete client.callList[content.call_id];\n }\n }\n }\n }\n}\n\nfunction checkTurnServers(client) {\n if (!client._supportsVoip) {\n return;\n }\n if (client.isGuest()) {\n return; // guests can't access TURN servers\n }\n\n client.turnServer().done(function (res) {\n if (res.uris) {\n _logger2.default.log(\"Got TURN URIs: \" + res.uris + \" refresh in \" + res.ttl + \" secs\");\n // map the response to a format that can be fed to\n // RTCPeerConnection\n var servers = {\n urls: res.uris,\n username: res.username,\n credential: res.password\n };\n client._turnServers = [servers];\n // re-fetch when we're about to reach the TTL\n client._checkTurnServersTimeoutID = setTimeout(function () {\n checkTurnServers(client);\n }, (res.ttl || 60 * 60) * 1000 * 0.9);\n }\n }, function (err) {\n _logger2.default.error(\"Failed to get TURN URIs\");\n client._checkTurnServersTimeoutID = setTimeout(function () {\n checkTurnServers(client);\n }, 60000);\n });\n}\n\nfunction _reject(callback, defer, err) {\n if (callback) {\n callback(err);\n }\n defer.reject(err);\n}\n\nfunction _resolve(callback, defer, res) {\n if (callback) {\n callback(null, res);\n }\n defer.resolve(res);\n}\n\nfunction _PojoToMatrixEventMapper(client) {\n function mapper(plainOldJsObject) {\n var event = new MatrixEvent(plainOldJsObject);\n if (event.isEncrypted()) {\n client.reEmitter.reEmit(event, [\"Event.decrypted\"]);\n event.attemptDecryption(client._crypto);\n }\n var room = client.getRoom(event.getRoomId());\n if (room) {\n room.reEmitter.reEmit(event, [\"Event.replaced\"]);\n }\n return event;\n }\n return mapper;\n}\n\n/**\n * @return {Function}\n */\nMatrixClient.prototype.getEventMapper = function () {\n return _PojoToMatrixEventMapper(this);\n};\n\n// Identity Server Operations\n// ==========================\n\n/**\n * Generates a random string suitable for use as a client secret. This\n * method is experimental and may change.\n * @return {string} A new client secret\n */\nMatrixClient.prototype.generateClientSecret = function () {\n return (0, _randomstring.randomString)(32);\n};\n\n/** */\nmodule.exports.MatrixClient = MatrixClient;\n/** */\nmodule.exports.CRYPTO_ENABLED = CRYPTO_ENABLED;\n\n// MatrixClient Event JSDocs\n\n/**\n * Fires whenever the SDK receives a new event.\n *

\n * This is only fired for live events received via /sync - it is not fired for\n * events received over context, search, or pagination APIs.\n *\n * @event module:client~MatrixClient#\"event\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @example\n * matrixClient.on(\"event\", function(event){\n * var sender = event.getSender();\n * });\n */\n\n/**\n * Fires whenever the SDK receives a new to-device event.\n * @event module:client~MatrixClient#\"toDeviceEvent\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @example\n * matrixClient.on(\"toDeviceEvent\", function(event){\n * var sender = event.getSender();\n * });\n */\n\n/**\n * Fires whenever the SDK's syncing state is updated. The state can be one of:\n *

    \n *\n *
  • PREPARED: The client has synced with the server at least once and is\n * ready for methods to be called on it. This will be immediately followed by\n * a state of SYNCING. This is the equivalent of \"syncComplete\" in the\n * previous API.
  • \n *\n *
  • CATCHUP: The client has detected the connection to the server might be\n * available again and will now try to do a sync again. As this sync might take\n * a long time (depending how long ago was last synced, and general server\n * performance) the client is put in this mode so the UI can reflect trying\n * to catch up with the server after losing connection.
  • \n *\n *
  • SYNCING : The client is currently polling for new events from the server.\n * This will be called after processing latest events from a sync.
  • \n *\n *
  • ERROR : The client has had a problem syncing with the server. If this is\n * called before PREPARED then there was a problem performing the initial\n * sync. If this is called after PREPARED then there was a problem polling\n * the server for updates. This may be called multiple times even if the state is\n * already ERROR. This is the equivalent of \"syncError\" in the previous\n * API.
  • \n *\n *
  • RECONNECTING: The sync connection has dropped, but not (yet) in a way that\n * should be considered erroneous.\n *
  • \n *\n *
  • STOPPED: The client has stopped syncing with server due to stopClient\n * being called.\n *
  • \n *
\n * State transition diagram:\n *
\n *                                          +---->STOPPED\n *                                          |\n *              +----->PREPARED -------> SYNCING <--+\n *              |                        ^  |  ^    |\n *              |      CATCHUP ----------+  |  |    |\n *              |        ^                  V  |    |\n *   null ------+        |  +------- RECONNECTING   |\n *              |        V  V                       |\n *              +------->ERROR ---------------------+\n *\n * NB: 'null' will never be emitted by this event.\n *\n * 
\n * Transitions:\n *
    \n *\n *
  • null -> PREPARED : Occurs when the initial sync is completed\n * first time. This involves setting up filters and obtaining push rules.\n *\n *
  • null -> ERROR : Occurs when the initial sync failed first time.\n *\n *
  • ERROR -> PREPARED : Occurs when the initial sync succeeds\n * after previously failing.\n *\n *
  • PREPARED -> SYNCING : Occurs immediately after transitioning\n * to PREPARED. Starts listening for live updates rather than catching up.\n *\n *
  • SYNCING -> RECONNECTING : Occurs when the live update fails.\n *\n *
  • RECONNECTING -> RECONNECTING : Can occur if the update calls\n * continue to fail, but the keepalive calls (to /versions) succeed.\n *\n *
  • RECONNECTING -> ERROR : Occurs when the keepalive call also fails\n *\n *
  • ERROR -> SYNCING : Occurs when the client has performed a\n * live update after having previously failed.\n *\n *
  • ERROR -> ERROR : Occurs when the client has failed to keepalive\n * for a second time or more.
  • \n *\n *
  • SYNCING -> SYNCING : Occurs when the client has performed a live\n * update. This is called after processing.
  • \n *\n *
  • * -> STOPPED : Occurs once the client has stopped syncing or\n * trying to sync after stopClient has been called.
  • \n *
\n *\n * @event module:client~MatrixClient#\"sync\"\n *\n * @param {string} state An enum representing the syncing state. One of \"PREPARED\",\n * \"SYNCING\", \"ERROR\", \"STOPPED\".\n *\n * @param {?string} prevState An enum representing the previous syncing state.\n * One of \"PREPARED\", \"SYNCING\", \"ERROR\", \"STOPPED\" or null.\n *\n * @param {?Object} data Data about this transition.\n *\n * @param {MatrixError} data.error The matrix error if state=ERROR.\n *\n * @param {String} data.oldSyncToken The 'since' token passed to /sync.\n * null for the first successful sync since this client was\n * started. Only present if state=PREPARED or\n * state=SYNCING.\n *\n * @param {String} data.nextSyncToken The 'next_batch' result from /sync, which\n * will become the 'since' token for the next call to /sync. Only present if\n * state=PREPARED or state=SYNCING.\n *\n * @param {boolean} data.catchingUp True if we are working our way through a\n * backlog of events after connecting. Only present if state=SYNCING.\n *\n * @example\n * matrixClient.on(\"sync\", function(state, prevState, data) {\n * switch (state) {\n * case \"ERROR\":\n * // update UI to say \"Connection Lost\"\n * break;\n * case \"SYNCING\":\n * // update UI to remove any \"Connection Lost\" message\n * break;\n * case \"PREPARED\":\n * // the client instance is ready to be queried.\n * var rooms = matrixClient.getRooms();\n * break;\n * }\n * });\n */\n\n/**\n* Fires whenever the sdk learns about a new group. This event\n* is experimental and may change.\n* @event module:client~MatrixClient#\"Group\"\n* @param {Group} group The newly created, fully populated group.\n* @example\n* matrixClient.on(\"Group\", function(group){\n* var groupId = group.groupId;\n* });\n*/\n\n/**\n* Fires whenever a new Room is added. This will fire when you are invited to a\n* room, as well as when you join a room. This event is experimental and\n* may change.\n* @event module:client~MatrixClient#\"Room\"\n* @param {Room} room The newly created, fully populated room.\n* @example\n* matrixClient.on(\"Room\", function(room){\n* var roomId = room.roomId;\n* });\n*/\n\n/**\n* Fires whenever a Room is removed. This will fire when you forget a room.\n* This event is experimental and may change.\n* @event module:client~MatrixClient#\"deleteRoom\"\n* @param {string} roomId The deleted room ID.\n* @example\n* matrixClient.on(\"deleteRoom\", function(roomId){\n* // update UI from getRooms()\n* });\n*/\n\n/**\n * Fires whenever an incoming call arrives.\n * @event module:client~MatrixClient#\"Call.incoming\"\n * @param {module:webrtc/call~MatrixCall} call The incoming call.\n * @example\n * matrixClient.on(\"Call.incoming\", function(call){\n * call.answer(); // auto-answer\n * });\n */\n\n/**\n * Fires whenever the login session the JS SDK is using is no\n * longer valid and the user must log in again.\n * NB. This only fires when action is required from the user, not\n * when then login session can be renewed by using a refresh token.\n * @event module:client~MatrixClient#\"Session.logged_out\"\n * @example\n * matrixClient.on(\"Session.logged_out\", function(errorObj){\n * // show the login screen\n * });\n */\n\n/**\n * Fires when the JS SDK receives a M_CONSENT_NOT_GIVEN error in response\n * to a HTTP request.\n * @event module:client~MatrixClient#\"no_consent\"\n * @example\n * matrixClient.on(\"no_consent\", function(message, contentUri) {\n * console.info(message + ' Go to ' + contentUri);\n * });\n */\n\n/**\n * Fires when a device is marked as verified/unverified/blocked/unblocked by\n * {@link module:client~MatrixClient#setDeviceVerified|MatrixClient.setDeviceVerified} or\n * {@link module:client~MatrixClient#setDeviceBlocked|MatrixClient.setDeviceBlocked}.\n *\n * @event module:client~MatrixClient#\"deviceVerificationChanged\"\n * @param {string} userId the owner of the verified device\n * @param {string} deviceId the id of the verified device\n * @param {module:crypto/deviceinfo} deviceInfo updated device information\n */\n\n/**\n * Fires whenever new user-scoped account_data is added.\n * @event module:client~MatrixClient#\"accountData\"\n * @param {MatrixEvent} event The event describing the account_data just added\n * @example\n * matrixClient.on(\"accountData\", function(event){\n * myAccountData[event.type] = event.content;\n * });\n */\n\n/**\n * Fires whenever the status of e2e key backup changes, as returned by getKeyBackupEnabled()\n * @event module:client~MatrixClient#\"crypto.keyBackupStatus\"\n * @param {bool} enabled true if key backup has been enabled, otherwise false\n * @example\n * matrixClient.on(\"crypto.keyBackupStatus\", function(enabled){\n * if (enabled) {\n * [...]\n * }\n * });\n */\n\n/**\n * Fires when we want to suggest to the user that they restore their megolm keys\n * from backup or by cross-signing the device.\n *\n * @event module:client~MatrixClient#\"crypto.suggestKeyRestore\"\n */\n\n/**\n * Fires when a key verification is requested.\n * @event module:client~MatrixClient#\"crypto.verification.request\"\n * @param {object} data\n * @param {MatrixEvent} data.event the original verification request message\n * @param {Array} data.methods the verification methods that can be used\n * @param {Function} data.beginKeyVerification a function to call if a key\n * verification should be performed. The function takes one argument: the\n * name of the key verification method (taken from data.methods) to use.\n * @param {Function} data.cancel a function to call if the key verification is\n * rejected.\n */\n\n/**\n * Fires when a key verification is requested with an unknown method.\n * @event module:client~MatrixClient#\"crypto.verification.request.unknown\"\n * @param {string} userId the user ID who requested the key verification\n * @param {Function} cancel a function that will send a cancellation message to\n * reject the key verification.\n */\n\n/**\n * Fires when a key verification started message is received.\n * @event module:client~MatrixClient#\"crypto.verification.start\"\n * @param {module:crypto/verification/Base} verifier a verifier object to\n * perform the key verification\n */\n\n// EventEmitter JSDocs\n\n/**\n * The {@link https://nodejs.org/api/events.html|EventEmitter} class.\n * @external EventEmitter\n * @see {@link https://nodejs.org/api/events.html}\n */\n\n/**\n * Adds a listener to the end of the listeners array for the specified event.\n * No checks are made to see if the listener has already been added. Multiple\n * calls passing the same combination of event and listener will result in the\n * listener being added multiple times.\n * @function external:EventEmitter#on\n * @param {string} event The event to listen for.\n * @param {Function} listener The function to invoke.\n * @return {EventEmitter} for call chaining.\n */\n\n/**\n * Alias for {@link external:EventEmitter#on}.\n * @function external:EventEmitter#addListener\n * @param {string} event The event to listen for.\n * @param {Function} listener The function to invoke.\n * @return {EventEmitter} for call chaining.\n */\n\n/**\n * Adds a one time listener for the event. This listener is invoked only\n * the next time the event is fired, after which it is removed.\n * @function external:EventEmitter#once\n * @param {string} event The event to listen for.\n * @param {Function} listener The function to invoke.\n * @return {EventEmitter} for call chaining.\n */\n\n/**\n * Remove a listener from the listener array for the specified event.\n * Caution: changes array indices in the listener array behind the\n * listener.\n * @function external:EventEmitter#removeListener\n * @param {string} event The event to listen for.\n * @param {Function} listener The function to invoke.\n * @return {EventEmitter} for call chaining.\n */\n\n/**\n * Removes all listeners, or those of the specified event. It's not a good idea\n * to remove listeners that were added elsewhere in the code, especially when\n * it's on an emitter that you didn't create (e.g. sockets or file streams).\n * @function external:EventEmitter#removeAllListeners\n * @param {string} event Optional. The event to remove listeners for.\n * @return {EventEmitter} for call chaining.\n */\n\n/**\n * Execute each of the listeners in order with the supplied arguments.\n * @function external:EventEmitter#emit\n * @param {string} event The event to emit.\n * @param {Function} listener The function to invoke.\n * @return {boolean} true if event had listeners, false otherwise.\n */\n\n/**\n * By default EventEmitters will print a warning if more than 10 listeners are\n * added for a particular event. This is a useful default which helps finding\n * memory leaks. Obviously not all Emitters should be limited to 10. This\n * function allows that to be increased. Set to zero for unlimited.\n * @function external:EventEmitter#setMaxListeners\n * @param {Number} n The max number of listeners.\n * @return {EventEmitter} for call chaining.\n */\n\n// MatrixClient Callback JSDocs\n\n/**\n * The standard MatrixClient callback interface. Functions which accept this\n * will specify 2 return arguments. These arguments map to the 2 parameters\n * specified in this callback.\n * @callback module:client.callback\n * @param {Object} err The error value, the \"rejected\" value or null.\n * @param {Object} data The data returned, the \"resolved\" value.\n */\n\n/**\n * {@link https://github.com/kriskowal/q|A promise implementation (Q)}. Functions\n * which return this will specify 2 return arguments. These arguments map to the\n * \"onFulfilled\" and \"onRejected\" values of the Promise.\n * @typedef {Object} Promise\n * @static\n * @property {Function} then promise.then(onFulfilled, onRejected, onProgress)\n * @property {Function} catch promise.catch(onRejected)\n * @property {Function} finally promise.finally(callback)\n * @property {Function} done promise.done(onFulfilled, onRejected, onProgress)\n */\n//# sourceMappingURL=client.js.map","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","'use strict';\nvar global = require('./_global');\nvar core = require('./_core');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar meta = require('./_meta');\nvar fails = require('./_fails');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar setToStringTag = require('./_set-to-string-tag');\nvar dP = require('./_object-dp').f;\nvar each = require('./_array-methods')(0);\nvar DESCRIPTORS = require('./_descriptors');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n if (!DESCRIPTORS || typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME, '_c');\n target._c = new Base();\n if (iterable != undefined) forOf(iterable, IS_MAP, target[ADDER], target);\n });\n each('add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON'.split(','), function (KEY) {\n var IS_ADDER = KEY == 'add' || KEY == 'set';\n if (KEY in proto && !(IS_WEAK && KEY == 'clear')) hide(C.prototype, KEY, function (a, b) {\n anInstance(this, C, KEY);\n if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY == 'get' ? undefined : false;\n var result = this._c[KEY](a === 0 ? 0 : a, b);\n return IS_ADDER ? this : result;\n });\n });\n IS_WEAK || dP(C.prototype, 'size', {\n get: function () {\n return this._c.size;\n }\n });\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F, O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar classof = require('./_classof');\nvar from = require('./_array-from-iterable');\nmodule.exports = function (NAME) {\n return function toJSON() {\n if (classof(this) != NAME) throw TypeError(NAME + \"#toJSON isn't generic\");\n return from(this);\n };\n};\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { of: function of() {\n var length = arguments.length;\n var A = new Array(length);\n while (length--) A[length] = arguments[length];\n return new this(A);\n } });\n};\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar ctx = require('./_ctx');\nvar forOf = require('./_for-of');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {\n var mapFn = arguments[1];\n var mapping, A, n, cb;\n aFunction(this);\n mapping = mapFn !== undefined;\n if (mapping) aFunction(mapFn);\n if (source == undefined) return new this();\n A = [];\n if (mapping) {\n n = 0;\n cb = ctx(mapFn, arguments[2], 2);\n forOf(source, false, function (nextItem) {\n A.push(cb(nextItem, n++));\n });\n } else {\n forOf(source, false, A.push, A);\n }\n return new this(A);\n } });\n};\n","var DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || isEnum.call(O, key)) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * @module\n */\n\nvar Reemitter = function () {\n function Reemitter(target) {\n (0, _classCallCheck3.default)(this, Reemitter);\n\n this.target = target;\n\n // We keep one bound event handler for each event name so we know\n // what event is arriving\n this.boundHandlers = {};\n }\n\n (0, _createClass3.default)(Reemitter, [{\n key: \"_handleEvent\",\n value: function _handleEvent(eventName) {\n var _target;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n (_target = this.target).emit.apply(_target, [eventName].concat(args));\n }\n }, {\n key: \"reEmit\",\n value: function reEmit(source, eventNames) {\n // We include the source as the last argument for event handlers which may need it,\n // such as read receipt listeners on the client class which won't have the context\n // of the room.\n var forSource = function forSource(handler) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n handler.apply(undefined, args.concat([source]));\n };\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(eventNames), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var eventName = _step.value;\n\n if (this.boundHandlers[eventName] === undefined) {\n this.boundHandlers[eventName] = this._handleEvent.bind(this, eventName);\n }\n\n var boundHandler = forSource.bind(this, this.boundHandlers[eventName]);\n source.on(eventName, boundHandler);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }]);\n return Reemitter;\n}();\n\nexports.default = Reemitter;\n//# sourceMappingURL=ReEmitter.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _values = require('babel-runtime/core-js/object/values');\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _entries = require('babel-runtime/core-js/object/entries');\n\nvar _entries2 = _interopRequireDefault(_entries);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _logger = require('../../logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _memoryCryptoStore = require('./memory-crypto-store.js');\n\nvar _memoryCryptoStore2 = _interopRequireDefault(_memoryCryptoStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Internal module. Partial localStorage backed storage for e2e.\n * This is not a full crypto store, just the in-memory store with\n * some things backed by localStorage. It exists because indexedDB\n * is broken in Firefox private mode or set to, \"will not remember\n * history\".\n *\n * @module\n */\n\nvar E2E_PREFIX = \"crypto.\"; /*\n Copyright 2017, 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar KEY_END_TO_END_ACCOUNT = E2E_PREFIX + \"account\";\nvar KEY_DEVICE_DATA = E2E_PREFIX + \"device_data\";\nvar KEY_INBOUND_SESSION_PREFIX = E2E_PREFIX + \"inboundgroupsessions/\";\nvar KEY_ROOMS_PREFIX = E2E_PREFIX + \"rooms/\";\nvar KEY_SESSIONS_NEEDING_BACKUP = E2E_PREFIX + \"sessionsneedingbackup\";\n\nfunction keyEndToEndSessions(deviceKey) {\n return E2E_PREFIX + \"sessions/\" + deviceKey;\n}\n\nfunction keyEndToEndInboundGroupSession(senderKey, sessionId) {\n return KEY_INBOUND_SESSION_PREFIX + senderKey + \"/\" + sessionId;\n}\n\nfunction keyEndToEndRoomsPrefix(roomId) {\n return KEY_ROOMS_PREFIX + roomId;\n}\n\n/**\n * @implements {module:crypto/store/base~CryptoStore}\n */\n\nvar LocalStorageCryptoStore = function (_MemoryCryptoStore) {\n (0, _inherits3.default)(LocalStorageCryptoStore, _MemoryCryptoStore);\n\n function LocalStorageCryptoStore(webStore) {\n (0, _classCallCheck3.default)(this, LocalStorageCryptoStore);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (LocalStorageCryptoStore.__proto__ || (0, _getPrototypeOf2.default)(LocalStorageCryptoStore)).call(this));\n\n _this.store = webStore;\n return _this;\n }\n\n (0, _createClass3.default)(LocalStorageCryptoStore, [{\n key: 'countEndToEndSessions',\n\n\n // Olm Sessions\n\n value: function countEndToEndSessions(txn, func) {\n var count = 0;\n for (var i = 0; i < this.store.length; ++i) {\n if (this.store.key(i).startsWith(keyEndToEndSessions(''))) ++count;\n }\n func(count);\n }\n }, {\n key: '_getEndToEndSessions',\n value: function _getEndToEndSessions(deviceKey, txn, func) {\n var sessions = getJsonItem(this.store, keyEndToEndSessions(deviceKey));\n var fixedSessions = {};\n\n // fix up any old sessions to be objects rather than just the base64 pickle\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _entries2.default)(sessions || {})), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _step$value = (0, _slicedToArray3.default)(_step.value, 2),\n sid = _step$value[0],\n val = _step$value[1];\n\n if (typeof val === 'string') {\n fixedSessions[sid] = {\n session: val\n };\n } else {\n fixedSessions[sid] = val;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return fixedSessions;\n }\n }, {\n key: 'getEndToEndSession',\n value: function getEndToEndSession(deviceKey, sessionId, txn, func) {\n var sessions = this._getEndToEndSessions(deviceKey);\n func(sessions[sessionId] || {});\n }\n }, {\n key: 'getEndToEndSessions',\n value: function getEndToEndSessions(deviceKey, txn, func) {\n func(this._getEndToEndSessions(deviceKey) || {});\n }\n }, {\n key: 'getAllEndToEndSessions',\n value: function getAllEndToEndSessions(txn, func) {\n for (var i = 0; i < this.store.length; ++i) {\n if (this.store.key(i).startsWith(keyEndToEndSessions(''))) {\n var deviceKey = this.store.key(i).split('/')[1];\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)((0, _values2.default)(this._getEndToEndSessions(deviceKey))), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var sess = _step2.value;\n\n func(sess);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n }\n }\n }, {\n key: 'storeEndToEndSession',\n value: function storeEndToEndSession(deviceKey, sessionId, sessionInfo, txn) {\n var sessions = this._getEndToEndSessions(deviceKey) || {};\n sessions[sessionId] = sessionInfo;\n setJsonItem(this.store, keyEndToEndSessions(deviceKey), sessions);\n }\n\n // Inbound Group Sessions\n\n }, {\n key: 'getEndToEndInboundGroupSession',\n value: function getEndToEndInboundGroupSession(senderCurve25519Key, sessionId, txn, func) {\n func(getJsonItem(this.store, keyEndToEndInboundGroupSession(senderCurve25519Key, sessionId)));\n }\n }, {\n key: 'getAllEndToEndInboundGroupSessions',\n value: function getAllEndToEndInboundGroupSessions(txn, func) {\n for (var i = 0; i < this.store.length; ++i) {\n var key = this.store.key(i);\n if (key.startsWith(KEY_INBOUND_SESSION_PREFIX)) {\n // we can't use split, as the components we are trying to split out\n // might themselves contain '/' characters. We rely on the\n // senderKey being a (32-byte) curve25519 key, base64-encoded\n // (hence 43 characters long).\n\n func({\n senderKey: key.substr(KEY_INBOUND_SESSION_PREFIX.length, 43),\n sessionId: key.substr(KEY_INBOUND_SESSION_PREFIX.length + 44),\n sessionData: getJsonItem(this.store, key)\n });\n }\n }\n func(null);\n }\n }, {\n key: 'addEndToEndInboundGroupSession',\n value: function addEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {\n var existing = getJsonItem(this.store, keyEndToEndInboundGroupSession(senderCurve25519Key, sessionId));\n if (!existing) {\n this.storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn);\n }\n }\n }, {\n key: 'storeEndToEndInboundGroupSession',\n value: function storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {\n setJsonItem(this.store, keyEndToEndInboundGroupSession(senderCurve25519Key, sessionId), sessionData);\n }\n }, {\n key: 'getEndToEndDeviceData',\n value: function getEndToEndDeviceData(txn, func) {\n func(getJsonItem(this.store, KEY_DEVICE_DATA));\n }\n }, {\n key: 'storeEndToEndDeviceData',\n value: function storeEndToEndDeviceData(deviceData, txn) {\n setJsonItem(this.store, KEY_DEVICE_DATA, deviceData);\n }\n }, {\n key: 'storeEndToEndRoom',\n value: function storeEndToEndRoom(roomId, roomInfo, txn) {\n setJsonItem(this.store, keyEndToEndRoomsPrefix(roomId), roomInfo);\n }\n }, {\n key: 'getEndToEndRooms',\n value: function getEndToEndRooms(txn, func) {\n var result = {};\n var prefix = keyEndToEndRoomsPrefix('');\n\n for (var i = 0; i < this.store.length; ++i) {\n var key = this.store.key(i);\n if (key.startsWith(prefix)) {\n var roomId = key.substr(prefix.length);\n result[roomId] = getJsonItem(this.store, key);\n }\n }\n func(result);\n }\n }, {\n key: 'getSessionsNeedingBackup',\n value: function getSessionsNeedingBackup(limit) {\n var _this2 = this;\n\n var sessionsNeedingBackup = getJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {};\n var sessions = [];\n\n for (var session in sessionsNeedingBackup) {\n if (Object.prototype.hasOwnProperty.call(sessionsNeedingBackup, session)) {\n var _ret = function () {\n // see getAllEndToEndInboundGroupSessions for the magic number explanations\n var senderKey = session.substr(0, 43);\n var sessionId = session.substr(44);\n _this2.getEndToEndInboundGroupSession(senderKey, sessionId, null, function (sessionData) {\n sessions.push({\n senderKey: senderKey,\n sessionId: sessionId,\n sessionData: sessionData\n });\n });\n if (limit && session.length >= limit) {\n return 'break';\n }\n }();\n\n if (_ret === 'break') break;\n }\n }\n return _bluebird2.default.resolve(sessions);\n }\n }, {\n key: 'countSessionsNeedingBackup',\n value: function countSessionsNeedingBackup() {\n var sessionsNeedingBackup = getJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {};\n return _bluebird2.default.resolve((0, _keys2.default)(sessionsNeedingBackup).length);\n }\n }, {\n key: 'unmarkSessionsNeedingBackup',\n value: function unmarkSessionsNeedingBackup(sessions) {\n var sessionsNeedingBackup = getJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {};\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(sessions), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var session = _step3.value;\n\n delete sessionsNeedingBackup[session.senderKey + '/' + session.sessionId];\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n setJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP, sessionsNeedingBackup);\n return _bluebird2.default.resolve();\n }\n }, {\n key: 'markSessionsNeedingBackup',\n value: function markSessionsNeedingBackup(sessions) {\n var sessionsNeedingBackup = getJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {};\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = (0, _getIterator3.default)(sessions), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var session = _step4.value;\n\n sessionsNeedingBackup[session.senderKey + '/' + session.sessionId] = true;\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n setJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP, sessionsNeedingBackup);\n return _bluebird2.default.resolve();\n }\n\n /**\n * Delete all data from this store.\n *\n * @returns {Promise} Promise which resolves when the store has been cleared.\n */\n\n }, {\n key: 'deleteAllData',\n value: function deleteAllData() {\n this.store.removeItem(KEY_END_TO_END_ACCOUNT);\n return _bluebird2.default.resolve();\n }\n\n // Olm account\n\n }, {\n key: 'getAccount',\n value: function getAccount(txn, func) {\n var account = getJsonItem(this.store, KEY_END_TO_END_ACCOUNT);\n func(account);\n }\n }, {\n key: 'storeAccount',\n value: function storeAccount(txn, newData) {\n setJsonItem(this.store, KEY_END_TO_END_ACCOUNT, newData);\n }\n }, {\n key: 'doTxn',\n value: function doTxn(mode, stores, func) {\n return _bluebird2.default.resolve(func(null));\n }\n }], [{\n key: 'exists',\n value: function exists(webStore) {\n var length = webStore.length;\n for (var i = 0; i < length; i++) {\n if (webStore.key(i).startsWith(E2E_PREFIX)) {\n return true;\n }\n }\n return false;\n }\n }]);\n return LocalStorageCryptoStore;\n}(_memoryCryptoStore2.default);\n\nexports.default = LocalStorageCryptoStore;\n\n\nfunction getJsonItem(store, key) {\n try {\n // if the key is absent, store.getItem() returns null, and\n // JSON.parse(null) === null, so this returns null.\n return JSON.parse(store.getItem(key));\n } catch (e) {\n _logger2.default.log(\"Error: Failed to get key %s: %s\", key, e.stack || e);\n _logger2.default.log(e.stack);\n }\n return null;\n}\n\nfunction setJsonItem(store, key, val) {\n store.setItem(key, (0, _stringify2.default)(val));\n}\n//# sourceMappingURL=localStorage-crypto-store.js.map","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _entries = require('babel-runtime/core-js/object/entries');\n\nvar _entries2 = _interopRequireDefault(_entries);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _bluebird = require('bluebird');\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _event = require('../../models/event');\n\nvar _events = require('events');\n\nvar _logger = require('../../logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _Error = require('./Error');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Base class for verification methods.\n * @module crypto/verification/Base\n */\n\nvar timeoutException = new Error(\"Verification timed out\");\n\nvar VerificationBase = function (_EventEmitter) {\n (0, _inherits3.default)(VerificationBase, _EventEmitter);\n\n /**\n * Base class for verification methods.\n *\n *

Once a verifier object is created, the verification can be started by\n * calling the verify() method, which will return a promise that will\n * resolve when the verification is completed, or reject if it could not\n * complete.

\n *\n *

Subclasses must have a NAME class property.

\n *\n * @class\n *\n * @param {module:base-apis~MatrixBaseApis} baseApis base matrix api interface\n *\n * @param {string} userId the user ID that is being verified\n *\n * @param {string} deviceId the device ID that is being verified\n *\n * @param {string} transactionId the transaction ID to be used when sending events\n *\n * @param {object} startEvent the m.key.verification.start event that\n * initiated this verification, if any\n *\n * @param {object} request the key verification request object related to\n * this verification, if any\n *\n * @param {object} parent parent verification for this verification, if any\n */\n function VerificationBase(baseApis, userId, deviceId, transactionId, startEvent, request, parent) {\n (0, _classCallCheck3.default)(this, VerificationBase);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (VerificationBase.__proto__ || (0, _getPrototypeOf2.default)(VerificationBase)).call(this));\n\n _this._baseApis = baseApis;\n _this.userId = userId;\n _this.deviceId = deviceId;\n _this.transactionId = transactionId;\n _this.startEvent = startEvent;\n _this.request = request;\n _this.cancelled = false;\n _this._parent = parent;\n _this._done = false;\n _this._promise = null;\n _this._transactionTimeoutTimer = null;\n\n // At this point, the verification request was received so start the timeout timer.\n _this._resetTimer();\n return _this;\n }\n\n (0, _createClass3.default)(VerificationBase, [{\n key: '_resetTimer',\n value: function _resetTimer() {\n var _this2 = this;\n\n console.log(\"Refreshing/starting the verification transaction timeout timer\");\n if (this._transactionTimeoutTimer !== null) {\n clearTimeout(this._transactionTimeoutTimer);\n }\n this._transactionTimeoutTimer = setTimeout(function () {\n if (!_this2._done && !_this2.cancelled) {\n console.log(\"Triggering verification timeout\");\n _this2.cancel(timeoutException);\n }\n }, 10 * 60 * 1000); // 10 minutes\n }\n }, {\n key: '_endTimer',\n value: function _endTimer() {\n if (this._transactionTimeoutTimer !== null) {\n clearTimeout(this._transactionTimeoutTimer);\n this._transactionTimeoutTimer = null;\n }\n }\n }, {\n key: '_sendToDevice',\n value: function _sendToDevice(type, content) {\n if (this._done) {\n return _promise2.default.reject(new Error(\"Verification is already done\"));\n }\n content.transaction_id = this.transactionId;\n return this._baseApis.sendToDevice(type, (0, _defineProperty3.default)({}, this.userId, (0, _defineProperty3.default)({}, this.deviceId, content)));\n }\n }, {\n key: '_waitForEvent',\n value: function _waitForEvent(type) {\n var _this3 = this;\n\n if (this._done) {\n return _promise2.default.reject(new Error(\"Verification is already done\"));\n }\n this._expectedEvent = type;\n return new _promise2.default(function (resolve, reject) {\n _this3._resolveEvent = resolve;\n _this3._rejectEvent = reject;\n });\n }\n }, {\n key: 'handleEvent',\n value: function handleEvent(e) {\n if (this._done) {\n return;\n } else if (e.getType() === this._expectedEvent) {\n this._expectedEvent = undefined;\n this._rejectEvent = undefined;\n this._resetTimer();\n this._resolveEvent(e);\n } else {\n this._expectedEvent = undefined;\n var exception = new Error(\"Unexpected message: expecting \" + this._expectedEvent + \" but got \" + e.getType());\n if (this._rejectEvent) {\n var reject = this._rejectEvent;\n this._rejectEvent = undefined;\n reject(exception);\n }\n this.cancel(exception);\n }\n }\n }, {\n key: 'done',\n value: function done() {\n this._endTimer(); // always kill the activity timer\n if (!this._done) {\n this._resolve();\n }\n }\n }, {\n key: 'cancel',\n value: function cancel(e) {\n this._endTimer(); // always kill the activity timer\n if (!this._done) {\n this.cancelled = true;\n if (this.userId && this.deviceId && this.transactionId) {\n // send a cancellation to the other user (if it wasn't\n // cancelled by the other user)\n if (e === timeoutException) {\n var timeoutEvent = (0, _Error.newTimeoutError)();\n this._sendToDevice(timeoutEvent.getType(), timeoutEvent.getContent());\n } else if (e instanceof _event.MatrixEvent) {\n var sender = e.getSender();\n if (sender !== this.userId) {\n var content = e.getContent();\n if (e.getType() === \"m.key.verification.cancel\") {\n content.code = content.code || \"m.unknown\";\n content.reason = content.reason || content.body || \"Unknown reason\";\n content.transaction_id = this.transactionId;\n this._sendToDevice(\"m.key.verification.cancel\", content);\n } else {\n this._sendToDevice(\"m.key.verification.cancel\", {\n code: \"m.unknown\",\n reason: content.body || \"Unknown reason\",\n transaction_id: this.transactionId\n });\n }\n }\n } else {\n this._sendToDevice(\"m.key.verification.cancel\", {\n code: \"m.unknown\",\n reason: e.toString(),\n transaction_id: this.transactionId\n });\n }\n }\n if (this._promise !== null) {\n // when we cancel without a promise, we end up with a promise\n // but no reject function. If cancel is called again, we'd error.\n if (this._reject) this._reject(e);\n } else {\n this._promise = _promise2.default.reject(e);\n }\n // Also emit a 'cancel' event that the app can listen for to detect cancellation\n // before calling verify()\n this.emit('cancel', e);\n }\n }\n\n /**\n * Begin the key verification\n *\n * @returns {Promise} Promise which resolves when the verification has\n * completed.\n */\n\n }, {\n key: 'verify',\n value: function verify() {\n var _this4 = this;\n\n if (this._promise) return this._promise;\n\n this._promise = new _promise2.default(function (resolve, reject) {\n _this4._resolve = function () {\n _this4._done = true;\n _this4._endTimer();\n resolve.apply(undefined, arguments);\n };\n _this4._reject = function () {\n _this4._done = true;\n _this4._endTimer();\n reject.apply(undefined, arguments);\n };\n });\n if (this._doVerification && !this._started) {\n this._started = true;\n this._resetTimer(); // restart the timeout\n _promise2.default.resolve(this._doVerification()).then(this.done.bind(this), this.cancel.bind(this));\n }\n return this._promise;\n }\n }, {\n key: '_verifyKeys',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(userId, keys, verifier) {\n var verifiedDevices, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, _step$value, keyId, keyInfo, deviceId, device, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, _deviceId;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n // we try to verify all the keys that we're told about, but we might\n // not know about all of them, so keep track of the keys that we know\n // about, and ignore the rest\n verifiedDevices = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context.prev = 4;\n _iterator = (0, _getIterator3.default)((0, _entries2.default)(keys));\n\n case 6:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context.next = 22;\n break;\n }\n\n _step$value = (0, _slicedToArray3.default)(_step.value, 2), keyId = _step$value[0], keyInfo = _step$value[1];\n deviceId = keyId.split(':', 2)[1];\n _context.next = 11;\n return (0, _bluebird.resolve)(this._baseApis.getStoredDevice(userId, deviceId));\n\n case 11:\n device = _context.sent;\n\n if (device) {\n _context.next = 16;\n break;\n }\n\n _logger2.default.warn('verification: Could not find device ' + deviceId + ' to verify');\n _context.next = 19;\n break;\n\n case 16:\n _context.next = 18;\n return (0, _bluebird.resolve)(verifier(keyId, device, keyInfo));\n\n case 18:\n verifiedDevices.push(deviceId);\n\n case 19:\n _iteratorNormalCompletion = true;\n _context.next = 6;\n break;\n\n case 22:\n _context.next = 28;\n break;\n\n case 24:\n _context.prev = 24;\n _context.t0 = _context['catch'](4);\n _didIteratorError = true;\n _iteratorError = _context.t0;\n\n case 28:\n _context.prev = 28;\n _context.prev = 29;\n\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n\n case 31:\n _context.prev = 31;\n\n if (!_didIteratorError) {\n _context.next = 34;\n break;\n }\n\n throw _iteratorError;\n\n case 34:\n return _context.finish(31);\n\n case 35:\n return _context.finish(28);\n\n case 36:\n if (verifiedDevices.length) {\n _context.next = 38;\n break;\n }\n\n throw new Error(\"No devices could be verified\");\n\n case 38:\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context.prev = 41;\n _iterator2 = (0, _getIterator3.default)(verifiedDevices);\n\n case 43:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context.next = 50;\n break;\n }\n\n _deviceId = _step2.value;\n _context.next = 47;\n return (0, _bluebird.resolve)(this._baseApis.setDeviceVerified(userId, _deviceId));\n\n case 47:\n _iteratorNormalCompletion2 = true;\n _context.next = 43;\n break;\n\n case 50:\n _context.next = 56;\n break;\n\n case 52:\n _context.prev = 52;\n _context.t1 = _context['catch'](41);\n _didIteratorError2 = true;\n _iteratorError2 = _context.t1;\n\n case 56:\n _context.prev = 56;\n _context.prev = 57;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n\n case 59:\n _context.prev = 59;\n\n if (!_didIteratorError2) {\n _context.next = 62;\n break;\n }\n\n throw _iteratorError2;\n\n case 62:\n return _context.finish(59);\n\n case 63:\n return _context.finish(56);\n\n case 64:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[4, 24, 28, 36], [29,, 31, 35], [41, 52, 56, 64], [57,, 59, 63]]);\n }));\n\n function _verifyKeys(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return _verifyKeys;\n }()\n }]);\n return VerificationBase;\n}(_events.EventEmitter);\n\nexports.default = VerificationBase;\n//# sourceMappingURL=Base.js.map","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module models/room-state\n */\n\nvar _isFinite = require(\"babel-runtime/core-js/number/is-finite\");\n\nvar _isFinite2 = _interopRequireDefault(_isFinite);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _values = require(\"babel-runtime/core-js/object/values\");\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _logger = require(\"../../src/logger\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EventEmitter = require(\"events\").EventEmitter;\n\nvar utils = require(\"../utils\");\nvar RoomMember = require(\"./room-member\");\n\n\n// possible statuses for out-of-band member loading\nvar OOB_STATUS_NOTSTARTED = 1;\nvar OOB_STATUS_INPROGRESS = 2;\nvar OOB_STATUS_FINISHED = 3;\n\n/**\n * Construct room state.\n *\n * Room State represents the state of the room at a given point.\n * It can be mutated by adding state events to it.\n * There are two types of room member associated with a state event:\n * normal member objects (accessed via getMember/getMembers) which mutate\n * with the state to represent the current state of that room/user, eg.\n * the object returned by getMember('@bob:example.com') will mutate to\n * get a different display name if Bob later changes his display name\n * in the room.\n * There are also 'sentinel' members (accessed via getSentinelMember).\n * These also represent the state of room members at the point in time\n * represented by the RoomState object, but unlike objects from getMember,\n * sentinel objects will always represent the room state as at the time\n * getSentinelMember was called, so if Bob subsequently changes his display\n * name, a room member object previously acquired with getSentinelMember\n * will still have his old display name. Calling getSentinelMember again\n * after the display name change will return a new RoomMember object\n * with Bob's new display name.\n *\n * @constructor\n * @param {?string} roomId Optional. The ID of the room which has this state.\n * If none is specified it just tracks paginationTokens, useful for notifTimelineSet\n * @param {?object} oobMemberFlags Optional. The state of loading out of bound members.\n * As the timeline might get reset while they are loading, this state needs to be inherited\n * and shared when the room state is cloned for the new timeline.\n * This should only be passed from clone.\n * @prop {Object.} members The room member dictionary, keyed\n * on the user's ID.\n * @prop {Object.>} events The state\n * events dictionary, keyed on the event type and then the state_key value.\n * @prop {string} paginationToken The pagination token for this state.\n */\nfunction RoomState(roomId) {\n var oobMemberFlags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n this.roomId = roomId;\n this.members = {\n // userId: RoomMember\n };\n this.events = {\n // eventType: { stateKey: MatrixEvent }\n };\n this.paginationToken = null;\n\n this._sentinels = {\n // userId: RoomMember\n };\n this._updateModifiedTime();\n\n // stores fuzzy matches to a list of userIDs (applies utils.removeHiddenChars to keys)\n this._displayNameToUserIds = {};\n this._userIdsToDisplayNames = {};\n this._tokenToInvite = {}; // 3pid invite state_key to m.room.member invite\n this._joinedMemberCount = null; // cache of the number of joined members\n // joined members count from summary api\n // once set, we know the server supports the summary api\n // and we should only trust that\n // we could also only trust that before OOB members\n // are loaded but doesn't seem worth the hassle atm\n this._summaryJoinedMemberCount = null;\n // same for invited member count\n this._invitedMemberCount = null;\n this._summaryInvitedMemberCount = null;\n\n if (!oobMemberFlags) {\n oobMemberFlags = {\n status: OOB_STATUS_NOTSTARTED\n };\n }\n this._oobMemberFlags = oobMemberFlags;\n}\nutils.inherits(RoomState, EventEmitter);\n\n/**\n * Returns the number of joined members in this room\n * This method caches the result.\n * @return {integer} The number of members in this room whose membership is 'join'\n */\nRoomState.prototype.getJoinedMemberCount = function () {\n if (this._summaryJoinedMemberCount !== null) {\n return this._summaryJoinedMemberCount;\n }\n if (this._joinedMemberCount === null) {\n this._joinedMemberCount = this.getMembers().reduce(function (count, m) {\n return m.membership === 'join' ? count + 1 : count;\n }, 0);\n }\n return this._joinedMemberCount;\n};\n\n/**\n * Set the joined member count explicitly (like from summary part of the sync response)\n * @param {number} count the amount of joined members\n */\nRoomState.prototype.setJoinedMemberCount = function (count) {\n this._summaryJoinedMemberCount = count;\n};\n/**\n * Returns the number of invited members in this room\n * @return {integer} The number of members in this room whose membership is 'invite'\n */\nRoomState.prototype.getInvitedMemberCount = function () {\n if (this._summaryInvitedMemberCount !== null) {\n return this._summaryInvitedMemberCount;\n }\n if (this._invitedMemberCount === null) {\n this._invitedMemberCount = this.getMembers().reduce(function (count, m) {\n return m.membership === 'invite' ? count + 1 : count;\n }, 0);\n }\n return this._invitedMemberCount;\n};\n\n/**\n * Set the amount of invited members in this room\n * @param {number} count the amount of invited members\n */\nRoomState.prototype.setInvitedMemberCount = function (count) {\n this._summaryInvitedMemberCount = count;\n};\n\n/**\n * Get all RoomMembers in this room.\n * @return {Array} A list of RoomMembers.\n */\nRoomState.prototype.getMembers = function () {\n return utils.values(this.members);\n};\n\n/**\n * Get all RoomMembers in this room, excluding the user IDs provided.\n * @param {Array} excludedIds The user IDs to exclude.\n * @return {Array} A list of RoomMembers.\n */\nRoomState.prototype.getMembersExcept = function (excludedIds) {\n return utils.values(this.members).filter(function (m) {\n return !excludedIds.includes(m.userId);\n });\n};\n\n/**\n * Get a room member by their user ID.\n * @param {string} userId The room member's user ID.\n * @return {RoomMember} The member or null if they do not exist.\n */\nRoomState.prototype.getMember = function (userId) {\n return this.members[userId] || null;\n};\n\n/**\n * Get a room member whose properties will not change with this room state. You\n * typically want this if you want to attach a RoomMember to a MatrixEvent which\n * may no longer be represented correctly by Room.currentState or Room.oldState.\n * The term 'sentinel' refers to the fact that this RoomMember is an unchanging\n * guardian for state at this particular point in time.\n * @param {string} userId The room member's user ID.\n * @return {RoomMember} The member or null if they do not exist.\n */\nRoomState.prototype.getSentinelMember = function (userId) {\n if (!userId) return null;\n var sentinel = this._sentinels[userId];\n\n if (sentinel === undefined) {\n sentinel = new RoomMember(this.roomId, userId);\n var member = this.members[userId];\n if (member) {\n sentinel.setMembershipEvent(member.events.member, this);\n }\n this._sentinels[userId] = sentinel;\n }\n return sentinel;\n};\n\n/**\n * Get state events from the state of the room.\n * @param {string} eventType The event type of the state event.\n * @param {string} stateKey Optional. The state_key of the state event. If\n * this is undefined then all matching state events will be\n * returned.\n * @return {MatrixEvent[]|MatrixEvent} A list of events if state_key was\n * undefined, else a single event (or null if no match found).\n */\nRoomState.prototype.getStateEvents = function (eventType, stateKey) {\n if (!this.events[eventType]) {\n // no match\n return stateKey === undefined ? [] : null;\n }\n if (stateKey === undefined) {\n // return all values\n return utils.values(this.events[eventType]);\n }\n var event = this.events[eventType][stateKey];\n return event ? event : null;\n};\n\n/**\n * Creates a copy of this room state so that mutations to either won't affect the other.\n * @return {RoomState} the copy of the room state\n */\nRoomState.prototype.clone = function () {\n var copy = new RoomState(this.roomId, this._oobMemberFlags);\n\n // Ugly hack: because setStateEvents will mark\n // members as susperseding future out of bound members\n // if loading is in progress (through _oobMemberFlags)\n // since these are not new members, we're merely copying them\n // set the status to not started\n // after copying, we set back the status\n var status = this._oobMemberFlags.status;\n this._oobMemberFlags.status = OOB_STATUS_NOTSTARTED;\n\n (0, _values2.default)(this.events).forEach(function (eventsByStateKey) {\n var eventsForType = (0, _values2.default)(eventsByStateKey);\n copy.setStateEvents(eventsForType);\n });\n\n // Ugly hack: see above\n this._oobMemberFlags.status = status;\n\n if (this._summaryInvitedMemberCount !== null) {\n copy.setInvitedMemberCount(this.getInvitedMemberCount());\n }\n if (this._summaryJoinedMemberCount !== null) {\n copy.setJoinedMemberCount(this.getJoinedMemberCount());\n }\n\n // copy out of band flags if needed\n if (this._oobMemberFlags.status == OOB_STATUS_FINISHED) {\n // copy markOutOfBand flags\n this.getMembers().forEach(function (member) {\n if (member.isOutOfBand()) {\n var copyMember = copy.getMember(member.userId);\n copyMember.markOutOfBand();\n }\n });\n }\n\n return copy;\n};\n\n/**\n * Add previously unknown state events.\n * When lazy loading members while back-paginating,\n * the relevant room state for the timeline chunk at the end\n * of the chunk can be set with this method.\n * @param {MatrixEvent[]} events state events to prepend\n */\nRoomState.prototype.setUnknownStateEvents = function (events) {\n var _this = this;\n\n var unknownStateEvents = events.filter(function (event) {\n return _this.events[event.getType()] === undefined || _this.events[event.getType()][event.getStateKey()] === undefined;\n });\n\n this.setStateEvents(unknownStateEvents);\n};\n\n/**\n * Add an array of one or more state MatrixEvents, overwriting\n * any existing state with the same {type, stateKey} tuple. Will fire\n * \"RoomState.events\" for every event added. May fire \"RoomState.members\"\n * if there are m.room.member events.\n * @param {MatrixEvent[]} stateEvents a list of state events for this room.\n * @fires module:client~MatrixClient#event:\"RoomState.members\"\n * @fires module:client~MatrixClient#event:\"RoomState.newMember\"\n * @fires module:client~MatrixClient#event:\"RoomState.events\"\n */\nRoomState.prototype.setStateEvents = function (stateEvents) {\n var self = this;\n this._updateModifiedTime();\n\n // update the core event dict\n utils.forEach(stateEvents, function (event) {\n if (event.getRoomId() !== self.roomId) {\n return;\n }\n if (!event.isState()) {\n return;\n }\n\n self._setStateEvent(event);\n if (event.getType() === \"m.room.member\") {\n _updateDisplayNameCache(self, event.getStateKey(), event.getContent().displayname);\n _updateThirdPartyTokenCache(self, event);\n }\n self.emit(\"RoomState.events\", event, self);\n });\n\n // update higher level data structures. This needs to be done AFTER the\n // core event dict as these structures may depend on other state events in\n // the given array (e.g. disambiguating display names in one go to do both\n // clashing names rather than progressively which only catches 1 of them).\n utils.forEach(stateEvents, function (event) {\n if (event.getRoomId() !== self.roomId) {\n return;\n }\n if (!event.isState()) {\n return;\n }\n\n if (event.getType() === \"m.room.member\") {\n var userId = event.getStateKey();\n\n // leave events apparently elide the displayname or avatar_url,\n // so let's fake one up so that we don't leak user ids\n // into the timeline\n if (event.getContent().membership === \"leave\" || event.getContent().membership === \"ban\") {\n event.getContent().avatar_url = event.getContent().avatar_url || event.getPrevContent().avatar_url;\n event.getContent().displayname = event.getContent().displayname || event.getPrevContent().displayname;\n }\n\n var member = self._getOrCreateMember(userId, event);\n member.setMembershipEvent(event, self);\n\n self._updateMember(member);\n self.emit(\"RoomState.members\", event, self, member);\n } else if (event.getType() === \"m.room.power_levels\") {\n var members = utils.values(self.members);\n utils.forEach(members, function (member) {\n member.setPowerLevelEvent(event);\n self.emit(\"RoomState.members\", event, self, member);\n });\n\n // assume all our sentinels are now out-of-date\n self._sentinels = {};\n }\n });\n};\n\n/**\n * Looks up a member by the given userId, and if it doesn't exist,\n * create it and emit the `RoomState.newMember` event.\n * This method makes sure the member is added to the members dictionary\n * before emitting, as this is done from setStateEvents and _setOutOfBandMember.\n * @param {string} userId the id of the user to look up\n * @param {MatrixEvent} event the membership event for the (new) member. Used to emit.\n * @fires module:client~MatrixClient#event:\"RoomState.newMember\"\n * @returns {RoomMember} the member, existing or newly created.\n */\nRoomState.prototype._getOrCreateMember = function (userId, event) {\n var member = this.members[userId];\n if (!member) {\n member = new RoomMember(this.roomId, userId);\n // add member to members before emitting any events,\n // as event handlers often lookup the member\n this.members[userId] = member;\n this.emit(\"RoomState.newMember\", event, this, member);\n }\n return member;\n};\n\nRoomState.prototype._setStateEvent = function (event) {\n if (this.events[event.getType()] === undefined) {\n this.events[event.getType()] = {};\n }\n this.events[event.getType()][event.getStateKey()] = event;\n};\n\nRoomState.prototype._updateMember = function (member) {\n // this member may have a power level already, so set it.\n var pwrLvlEvent = this.getStateEvents(\"m.room.power_levels\", \"\");\n if (pwrLvlEvent) {\n member.setPowerLevelEvent(pwrLvlEvent);\n }\n\n // blow away the sentinel which is now outdated\n delete this._sentinels[member.userId];\n\n this.members[member.userId] = member;\n this._joinedMemberCount = null;\n this._invitedMemberCount = null;\n};\n\n/**\n * Get the out-of-band members loading state, whether loading is needed or not.\n * Note that loading might be in progress and hence isn't needed.\n * @return {bool} whether or not the members of this room need to be loaded\n */\nRoomState.prototype.needsOutOfBandMembers = function () {\n return this._oobMemberFlags.status === OOB_STATUS_NOTSTARTED;\n};\n\n/**\n * Mark this room state as waiting for out-of-band members,\n * ensuring it doesn't ask for them to be requested again\n * through needsOutOfBandMembers\n */\nRoomState.prototype.markOutOfBandMembersStarted = function () {\n if (this._oobMemberFlags.status !== OOB_STATUS_NOTSTARTED) {\n return;\n }\n this._oobMemberFlags.status = OOB_STATUS_INPROGRESS;\n};\n\n/**\n * Mark this room state as having failed to fetch out-of-band members\n */\nRoomState.prototype.markOutOfBandMembersFailed = function () {\n if (this._oobMemberFlags.status !== OOB_STATUS_INPROGRESS) {\n return;\n }\n this._oobMemberFlags.status = OOB_STATUS_NOTSTARTED;\n};\n\n/**\n * Clears the loaded out-of-band members\n */\nRoomState.prototype.clearOutOfBandMembers = function () {\n var _this2 = this;\n\n var count = 0;\n (0, _keys2.default)(this.members).forEach(function (userId) {\n var member = _this2.members[userId];\n if (member.isOutOfBand()) {\n ++count;\n delete _this2.members[userId];\n }\n });\n _logger2.default.log(\"LL: RoomState removed \" + count + \" members...\");\n this._oobMemberFlags.status = OOB_STATUS_NOTSTARTED;\n};\n\n/**\n * Sets the loaded out-of-band members.\n * @param {MatrixEvent[]} stateEvents array of membership state events\n */\nRoomState.prototype.setOutOfBandMembers = function (stateEvents) {\n var _this3 = this;\n\n _logger2.default.log(\"LL: RoomState about to set \" + stateEvents.length + \" OOB members ...\");\n if (this._oobMemberFlags.status !== OOB_STATUS_INPROGRESS) {\n return;\n }\n _logger2.default.log(\"LL: RoomState put in OOB_STATUS_FINISHED state ...\");\n this._oobMemberFlags.status = OOB_STATUS_FINISHED;\n stateEvents.forEach(function (e) {\n return _this3._setOutOfBandMember(e);\n });\n};\n\n/**\n * Sets a single out of band member, used by both setOutOfBandMembers and clone\n * @param {MatrixEvent} stateEvent membership state event\n */\nRoomState.prototype._setOutOfBandMember = function (stateEvent) {\n if (stateEvent.getType() !== 'm.room.member') {\n return;\n }\n var userId = stateEvent.getStateKey();\n var existingMember = this.getMember(userId);\n // never replace members received as part of the sync\n if (existingMember && !existingMember.isOutOfBand()) {\n return;\n }\n\n var member = this._getOrCreateMember(userId, stateEvent);\n member.setMembershipEvent(stateEvent, this);\n // needed to know which members need to be stored seperately\n // as they are not part of the sync accumulator\n // this is cleared by setMembershipEvent so when it's updated through /sync\n member.markOutOfBand();\n\n _updateDisplayNameCache(this, member.userId, member.name);\n\n this._setStateEvent(stateEvent);\n this._updateMember(member);\n this.emit(\"RoomState.members\", stateEvent, this, member);\n};\n\n/**\n * Set the current typing event for this room.\n * @param {MatrixEvent} event The typing event\n */\nRoomState.prototype.setTypingEvent = function (event) {\n utils.forEach(utils.values(this.members), function (member) {\n member.setTypingEvent(event);\n });\n};\n\n/**\n * Get the m.room.member event which has the given third party invite token.\n *\n * @param {string} token The token\n * @return {?MatrixEvent} The m.room.member event or null\n */\nRoomState.prototype.getInviteForThreePidToken = function (token) {\n return this._tokenToInvite[token] || null;\n};\n\n/**\n * Update the last modified time to the current time.\n */\nRoomState.prototype._updateModifiedTime = function () {\n this._modified = Date.now();\n};\n\n/**\n * Get the timestamp when this room state was last updated. This timestamp is\n * updated when this object has received new state events.\n * @return {number} The timestamp\n */\nRoomState.prototype.getLastModifiedTime = function () {\n return this._modified;\n};\n\n/**\n * Get user IDs with the specified or similar display names.\n * @param {string} displayName The display name to get user IDs from.\n * @return {string[]} An array of user IDs or an empty array.\n */\nRoomState.prototype.getUserIdsWithDisplayName = function (displayName) {\n return this._displayNameToUserIds[utils.removeHiddenChars(displayName)] || [];\n};\n\n/**\n * Returns true if userId is in room, event is not redacted and either sender of\n * mxEvent or has power level sufficient to redact events other than their own.\n * @param {MatrixEvent} mxEvent The event to test permission for\n * @param {string} userId The user ID of the user to test permission for\n * @return {boolean} true if the given used ID can redact given event\n */\nRoomState.prototype.maySendRedactionForEvent = function (mxEvent, userId) {\n var member = this.getMember(userId);\n if (!member || member.membership === 'leave') return false;\n\n if (mxEvent.status || mxEvent.isRedacted()) return false;\n\n // The user may have been the sender, but they can't redact their own message\n // if redactions are blocked.\n var canRedact = this.maySendEvent(\"m.room.redaction\", userId);\n if (mxEvent.getSender() === userId) return canRedact;\n\n return this._hasSufficientPowerLevelFor('redact', member.powerLevel);\n};\n\n/**\n * Returns true if the given power level is sufficient for action\n * @param {string} action The type of power level to check\n * @param {number} powerLevel The power level of the member\n * @return {boolean} true if the given power level is sufficient\n */\nRoomState.prototype._hasSufficientPowerLevelFor = function (action, powerLevel) {\n var powerLevelsEvent = this.getStateEvents('m.room.power_levels', '');\n\n var powerLevels = {};\n if (powerLevelsEvent) {\n powerLevels = powerLevelsEvent.getContent();\n }\n\n var requiredLevel = 50;\n if (utils.isNumber(powerLevels[action])) {\n requiredLevel = powerLevels[action];\n }\n\n return powerLevel >= requiredLevel;\n};\n\n/**\n * Short-form for maySendEvent('m.room.message', userId)\n * @param {string} userId The user ID of the user to test permission for\n * @return {boolean} true if the given user ID should be permitted to send\n * message events into the given room.\n */\nRoomState.prototype.maySendMessage = function (userId) {\n return this._maySendEventOfType('m.room.message', userId, false);\n};\n\n/**\n * Returns true if the given user ID has permission to send a normal\n * event of type `eventType` into this room.\n * @param {string} eventType The type of event to test\n * @param {string} userId The user ID of the user to test permission for\n * @return {boolean} true if the given user ID should be permitted to send\n * the given type of event into this room,\n * according to the room's state.\n */\nRoomState.prototype.maySendEvent = function (eventType, userId) {\n return this._maySendEventOfType(eventType, userId, false);\n};\n\n/**\n * Returns true if the given MatrixClient has permission to send a state\n * event of type `stateEventType` into this room.\n * @param {string} stateEventType The type of state events to test\n * @param {MatrixClient} cli The client to test permission for\n * @return {boolean} true if the given client should be permitted to send\n * the given type of state event into this room,\n * according to the room's state.\n */\nRoomState.prototype.mayClientSendStateEvent = function (stateEventType, cli) {\n if (cli.isGuest()) {\n return false;\n }\n return this.maySendStateEvent(stateEventType, cli.credentials.userId);\n};\n\n/**\n * Returns true if the given user ID has permission to send a state\n * event of type `stateEventType` into this room.\n * @param {string} stateEventType The type of state events to test\n * @param {string} userId The user ID of the user to test permission for\n * @return {boolean} true if the given user ID should be permitted to send\n * the given type of state event into this room,\n * according to the room's state.\n */\nRoomState.prototype.maySendStateEvent = function (stateEventType, userId) {\n return this._maySendEventOfType(stateEventType, userId, true);\n};\n\n/**\n * Returns true if the given user ID has permission to send a normal or state\n * event of type `eventType` into this room.\n * @param {string} eventType The type of event to test\n * @param {string} userId The user ID of the user to test permission for\n * @param {boolean} state If true, tests if the user may send a state\n event of this type. Otherwise tests whether\n they may send a regular event.\n * @return {boolean} true if the given user ID should be permitted to send\n * the given type of event into this room,\n * according to the room's state.\n */\nRoomState.prototype._maySendEventOfType = function (eventType, userId, state) {\n var power_levels_event = this.getStateEvents('m.room.power_levels', '');\n\n var power_levels = void 0;\n var events_levels = {};\n\n var state_default = 0;\n var events_default = 0;\n var powerLevel = 0;\n if (power_levels_event) {\n power_levels = power_levels_event.getContent();\n events_levels = power_levels.events || {};\n\n if ((0, _isFinite2.default)(power_levels.state_default)) {\n state_default = power_levels.state_default;\n } else {\n state_default = 50;\n }\n\n var userPowerLevel = power_levels.users && power_levels.users[userId];\n if ((0, _isFinite2.default)(userPowerLevel)) {\n powerLevel = userPowerLevel;\n } else if ((0, _isFinite2.default)(power_levels.users_default)) {\n powerLevel = power_levels.users_default;\n }\n\n if ((0, _isFinite2.default)(power_levels.events_default)) {\n events_default = power_levels.events_default;\n }\n }\n\n var required_level = state ? state_default : events_default;\n if ((0, _isFinite2.default)(events_levels[eventType])) {\n required_level = events_levels[eventType];\n }\n return powerLevel >= required_level;\n};\n\n/**\n * Returns true if the given user ID has permission to trigger notification\n * of type `notifLevelKey`\n * @param {string} notifLevelKey The level of notification to test (eg. 'room')\n * @param {string} userId The user ID of the user to test permission for\n * @return {boolean} true if the given user ID has permission to trigger a\n * notification of this type.\n */\nRoomState.prototype.mayTriggerNotifOfType = function (notifLevelKey, userId) {\n var member = this.getMember(userId);\n if (!member) {\n return false;\n }\n\n var powerLevelsEvent = this.getStateEvents('m.room.power_levels', '');\n\n var notifLevel = 50;\n if (powerLevelsEvent && powerLevelsEvent.getContent() && powerLevelsEvent.getContent().notifications && utils.isNumber(powerLevelsEvent.getContent().notifications[notifLevelKey])) {\n notifLevel = powerLevelsEvent.getContent().notifications[notifLevelKey];\n }\n\n return member.powerLevel >= notifLevel;\n};\n\n/**\n * The RoomState class.\n */\nmodule.exports = RoomState;\n\nfunction _updateThirdPartyTokenCache(roomState, memberEvent) {\n if (!memberEvent.getContent().third_party_invite) {\n return;\n }\n var token = (memberEvent.getContent().third_party_invite.signed || {}).token;\n if (!token) {\n return;\n }\n var threePidInvite = roomState.getStateEvents(\"m.room.third_party_invite\", token);\n if (!threePidInvite) {\n return;\n }\n roomState._tokenToInvite[token] = memberEvent;\n}\n\nfunction _updateDisplayNameCache(roomState, userId, displayName) {\n var oldName = roomState._userIdsToDisplayNames[userId];\n delete roomState._userIdsToDisplayNames[userId];\n if (oldName) {\n // Remove the old name from the cache.\n // We clobber the user_id > name lookup but the name -> [user_id] lookup\n // means we need to remove that user ID from that array rather than nuking\n // the lot.\n var strippedOldName = utils.removeHiddenChars(oldName);\n\n var existingUserIds = roomState._displayNameToUserIds[strippedOldName];\n if (existingUserIds) {\n // remove this user ID from this array\n var filteredUserIDs = existingUserIds.filter(function (id) {\n return id !== userId;\n });\n roomState._displayNameToUserIds[strippedOldName] = filteredUserIDs;\n }\n }\n\n roomState._userIdsToDisplayNames[userId] = displayName;\n\n var strippedDisplayname = displayName && utils.removeHiddenChars(displayName);\n // an empty stripped displayname (undefined/'') will be set to MXID in room-member.js\n if (strippedDisplayname) {\n if (!roomState._displayNameToUserIds[strippedDisplayname]) {\n roomState._displayNameToUserIds[strippedDisplayname] = [];\n }\n roomState._displayNameToUserIds[strippedDisplayname].push(userId);\n }\n}\n\n/**\n * Fires whenever the event dictionary in room state is updated.\n * @event module:client~MatrixClient#\"RoomState.events\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {RoomState} state The room state whose RoomState.events dictionary\n * was updated.\n * @example\n * matrixClient.on(\"RoomState.events\", function(event, state){\n * var newStateEvent = event;\n * });\n */\n\n/**\n * Fires whenever a member in the members dictionary is updated in any way.\n * @event module:client~MatrixClient#\"RoomState.members\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {RoomState} state The room state whose RoomState.members dictionary\n * was updated.\n * @param {RoomMember} member The room member that was updated.\n * @example\n * matrixClient.on(\"RoomState.members\", function(event, state, member){\n * var newMembershipState = member.membership;\n * });\n */\n\n/**\n* Fires whenever a member is added to the members dictionary. The RoomMember\n* will not be fully populated yet (e.g. no membership state) but will already\n* be available in the members dictionary.\n* @event module:client~MatrixClient#\"RoomState.newMember\"\n* @param {MatrixEvent} event The matrix event which caused this event to fire.\n* @param {RoomState} state The room state whose RoomState.members dictionary\n* was updated with a new entry.\n* @param {RoomMember} member The room member that was added.\n* @example\n* matrixClient.on(\"RoomState.newMember\", function(event, state, member){\n* // add event listeners on 'member'\n* });\n*/\n//# sourceMappingURL=room-state.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018, 2019 New Vector Ltd\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module models/room\n */\n\nvar _slicedToArray2 = require(\"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _assign = require(\"babel-runtime/core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _isInteger = require(\"babel-runtime/core-js/number/is-integer\");\n\nvar _isInteger2 = _interopRequireDefault(_isInteger);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _promise = require(\"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _logger = require(\"../../src/logger\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _ReEmitter = require(\"../ReEmitter\");\n\nvar _ReEmitter2 = _interopRequireDefault(_ReEmitter);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EventEmitter = require(\"events\").EventEmitter;\n\nvar EventStatus = require(\"./event\").EventStatus;\nvar RoomSummary = require(\"./room-summary\");\nvar RoomMember = require(\"./room-member\");\nvar MatrixEvent = require(\"./event\").MatrixEvent;\nvar utils = require(\"../utils\");\nvar ContentRepo = require(\"../content-repo\");\nvar EventTimeline = require(\"./event-timeline\");\nvar EventTimelineSet = require(\"./event-timeline-set\");\n\n// These constants are used as sane defaults when the homeserver doesn't support\n// the m.room_versions capability. In practice, KNOWN_SAFE_ROOM_VERSION should be\n// the same as the common default room version whereas SAFE_ROOM_VERSIONS are the\n// room versions which are considered okay for people to run without being asked\n// to upgrade (ie: \"stable\"). Eventually, we should remove these when all homeservers\n// return an m.room_versions capability.\nvar KNOWN_SAFE_ROOM_VERSION = '4';\nvar SAFE_ROOM_VERSIONS = ['1', '2', '3', '4'];\n\nfunction synthesizeReceipt(userId, event, receiptType) {\n // console.log(\"synthesizing receipt for \"+event.getId());\n // This is really ugly because JS has no way to express an object literal\n // where the name of a key comes from an expression\n var fakeReceipt = {\n content: {},\n type: \"m.receipt\",\n room_id: event.getRoomId()\n };\n fakeReceipt.content[event.getId()] = {};\n fakeReceipt.content[event.getId()][receiptType] = {};\n fakeReceipt.content[event.getId()][receiptType][userId] = {\n ts: event.getTs()\n };\n return new MatrixEvent(fakeReceipt);\n}\n\n/**\n * Construct a new Room.\n *\n *

For a room, we store an ordered sequence of timelines, which may or may not\n * be continuous. Each timeline lists a series of events, as well as tracking\n * the room state at the start and the end of the timeline. It also tracks\n * forward and backward pagination tokens, as well as containing links to the\n * next timeline in the sequence.\n *\n *

There is one special timeline - the 'live' timeline, which represents the\n * timeline to which events are being added in real-time as they are received\n * from the /sync API. Note that you should not retain references to this\n * timeline - even if it is the current timeline right now, it may not remain\n * so if the server gives us a timeline gap in /sync.\n *\n *

In order that we can find events from their ids later, we also maintain a\n * map from event_id to timeline and index.\n *\n * @constructor\n * @alias module:models/room\n * @param {string} roomId Required. The ID of this room.\n * @param {MatrixClient} client Required. The client, used to lazy load members.\n * @param {string} myUserId Required. The ID of the syncing user.\n * @param {Object=} opts Configuration options\n * @param {*} opts.storageToken Optional. The token which a data store can use\n * to remember the state of the room. What this means is dependent on the store\n * implementation.\n *\n * @param {String=} opts.pendingEventOrdering Controls where pending messages\n * appear in a room's timeline. If \"chronological\", messages will appear\n * in the timeline when the call to sendEvent was made. If\n * \"detached\", pending messages will appear in a separate list,\n * accessbile via {@link module:models/room#getPendingEvents}. Default:\n * \"chronological\".\n * @param {boolean} [opts.timelineSupport = false] Set to true to enable improved\n * timeline support.\n * @param {boolean} [opts.unstableClientRelationAggregation = false]\n * Optional. Set to true to enable client-side aggregation of event relations\n * via `EventTimelineSet#getRelationsForEvent`.\n * This feature is currently unstable and the API may change without notice.\n *\n * @prop {string} roomId The ID of this room.\n * @prop {string} name The human-readable display name for this room.\n * @prop {Array} timeline The live event timeline for this room,\n * with the oldest event at index 0. Present for backwards compatibility -\n * prefer getLiveTimeline().getEvents().\n * @prop {object} tags Dict of room tags; the keys are the tag name and the values\n * are any metadata associated with the tag - e.g. { \"fav\" : { order: 1 } }\n * @prop {object} accountData Dict of per-room account_data events; the keys are the\n * event type and the values are the events.\n * @prop {RoomState} oldState The state of the room at the time of the oldest\n * event in the live timeline. Present for backwards compatibility -\n * prefer getLiveTimeline().getState(EventTimeline.BACKWARDS).\n * @prop {RoomState} currentState The state of the room at the time of the\n * newest event in the timeline. Present for backwards compatibility -\n * prefer getLiveTimeline().getState(EventTimeline.FORWARDS).\n * @prop {RoomSummary} summary The room summary.\n * @prop {*} storageToken A token which a data store can use to remember\n * the state of the room.\n */\nfunction Room(roomId, client, myUserId, opts) {\n opts = opts || {};\n opts.pendingEventOrdering = opts.pendingEventOrdering || \"chronological\";\n\n this.reEmitter = new _ReEmitter2.default(this);\n\n if ([\"chronological\", \"detached\"].indexOf(opts.pendingEventOrdering) === -1) {\n throw new Error(\"opts.pendingEventOrdering MUST be either 'chronological' or \" + \"'detached'. Got: '\" + opts.pendingEventOrdering + \"'\");\n }\n\n this.myUserId = myUserId;\n this.roomId = roomId;\n this.name = roomId;\n this.tags = {\n // $tagName: { $metadata: $value },\n // $tagName: { $metadata: $value },\n };\n this.accountData = {\n // $eventType: $event\n };\n this.summary = null;\n this.storageToken = opts.storageToken;\n this._opts = opts;\n this._txnToEvent = {}; // Pending in-flight requests { string: MatrixEvent }\n // receipts should clobber based on receipt_type and user_id pairs hence\n // the form of this structure. This is sub-optimal for the exposed APIs\n // which pass in an event ID and get back some receipts, so we also store\n // a pre-cached list for this purpose.\n this._receipts = {\n // receipt_type: {\n // user_id: {\n // eventId: ,\n // data: \n // }\n // }\n };\n this._receiptCacheByEventId = {\n // $event_id: [{\n // type: $type,\n // userId: $user_id,\n // data: \n // }]\n };\n // only receipts that came from the server, not synthesized ones\n this._realReceipts = {};\n\n this._notificationCounts = {};\n\n // all our per-room timeline sets. the first one is the unfiltered ones;\n // the subsequent ones are the filtered ones in no particular order.\n this._timelineSets = [new EventTimelineSet(this, opts)];\n this.reEmitter.reEmit(this.getUnfilteredTimelineSet(), [\"Room.timeline\", \"Room.timelineReset\"]);\n\n this._fixUpLegacyTimelineFields();\n\n // any filtered timeline sets we're maintaining for this room\n this._filteredTimelineSets = {\n // filter_id: timelineSet\n };\n\n if (this._opts.pendingEventOrdering == \"detached\") {\n this._pendingEventList = [];\n }\n\n // read by megolm; boolean value - null indicates \"use global value\"\n this._blacklistUnverifiedDevices = null;\n this._selfMembership = null;\n this._summaryHeroes = null;\n // awaited by getEncryptionTargetMembers while room members are loading\n\n this._client = client;\n if (!this._opts.lazyLoadMembers) {\n this._membersPromise = _promise2.default.resolve();\n } else {\n this._membersPromise = null;\n }\n}\n\nutils.inherits(Room, EventEmitter);\n\n/**\n * Gets the version of the room\n * @returns {string} The version of the room, or null if it could not be determined\n */\nRoom.prototype.getVersion = function () {\n var createEvent = this.currentState.getStateEvents(\"m.room.create\", \"\");\n if (!createEvent) {\n _logger2.default.warn(\"Room \" + this.room_id + \" does not have an m.room.create event\");\n return '1';\n }\n var ver = createEvent.getContent()['room_version'];\n if (ver === undefined) return '1';\n return ver;\n};\n\n/**\n * Determines whether this room needs to be upgraded to a new version\n * @returns {string?} What version the room should be upgraded to, or null if\n * the room does not require upgrading at this time.\n * @deprecated Use #getRecommendedVersion() instead\n */\nRoom.prototype.shouldUpgradeToVersion = function () {\n // TODO: Remove this function.\n // This makes assumptions about which versions are safe, and can easily\n // be wrong. Instead, people are encouraged to use getRecommendedVersion\n // which determines a safer value. This function doesn't use that function\n // because this is not async-capable, and to avoid breaking the contract\n // we're deprecating this.\n\n if (!SAFE_ROOM_VERSIONS.includes(this.getVersion())) {\n return KNOWN_SAFE_ROOM_VERSION;\n }\n\n return null;\n};\n\n/**\n * Determines the recommended room version for the room. This returns an\n * object with 3 properties: version as the new version the\n * room should be upgraded to (may be the same as the current version);\n * needsUpgrade to indicate if the room actually can be\n * upgraded (ie: does the current version not match?); and urgent\n * to indicate if the new version patches a vulnerability in a previous\n * version.\n * @returns {Promise<{version: string, needsUpgrade: bool, urgent: bool}>}\n * Resolves to the version the room should be upgraded to.\n */\nRoom.prototype.getRecommendedVersion = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var capabilities, versionCap, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, safeVer, result, caps;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(this._client.getCapabilities());\n\n case 2:\n capabilities = _context.sent;\n versionCap = capabilities[\"m.room_versions\"];\n\n if (versionCap) {\n _context.next = 25;\n break;\n }\n\n versionCap = {\n default: KNOWN_SAFE_ROOM_VERSION,\n available: {}\n };\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context.prev = 9;\n for (_iterator = (0, _getIterator3.default)(SAFE_ROOM_VERSIONS); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n safeVer = _step.value;\n\n versionCap.available[safeVer] = \"stable\";\n }\n _context.next = 17;\n break;\n\n case 13:\n _context.prev = 13;\n _context.t0 = _context[\"catch\"](9);\n _didIteratorError = true;\n _iteratorError = _context.t0;\n\n case 17:\n _context.prev = 17;\n _context.prev = 18;\n\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n\n case 20:\n _context.prev = 20;\n\n if (!_didIteratorError) {\n _context.next = 23;\n break;\n }\n\n throw _iteratorError;\n\n case 23:\n return _context.finish(20);\n\n case 24:\n return _context.finish(17);\n\n case 25:\n result = this._checkVersionAgainstCapability(versionCap);\n\n if (!(result.urgent && result.needsUpgrade)) {\n _context.next = 38;\n break;\n }\n\n // Something doesn't feel right: we shouldn't need to update\n // because the version we're on should be in the protocol's\n // namespace. This usually means that the server was updated\n // before the client was, making us think the newest possible\n // room version is not stable. As a solution, we'll refresh\n // the capability we're using to determine this.\n _logger2.default.warn(\"Refreshing room version capability because the server looks \" + \"to be supporting a newer room version we don't know about.\");\n\n _context.next = 30;\n return (0, _bluebird.resolve)(this._client.getCapabilities(true));\n\n case 30:\n caps = _context.sent;\n\n versionCap = caps[\"m.room_versions\"];\n\n if (versionCap) {\n _context.next = 37;\n break;\n }\n\n _logger2.default.warn(\"No room version capability - assuming upgrade required.\");\n return _context.abrupt(\"return\", result);\n\n case 37:\n result = this._checkVersionAgainstCapability(versionCap);\n\n case 38:\n return _context.abrupt(\"return\", result);\n\n case 39:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[9, 13, 17, 25], [18,, 20, 24]]);\n}));\n\nRoom.prototype._checkVersionAgainstCapability = function (versionCap) {\n var currentVersion = this.getVersion();\n _logger2.default.log(\"[\" + this.roomId + \"] Current version: \" + currentVersion);\n _logger2.default.log(\"[\" + this.roomId + \"] Version capability: \", versionCap);\n\n var result = {\n version: currentVersion,\n needsUpgrade: false,\n urgent: false\n };\n\n // If the room is on the default version then nothing needs to change\n if (currentVersion === versionCap.default) return result;\n\n var stableVersions = (0, _keys2.default)(versionCap.available).filter(function (v) {\n return versionCap.available[v] === 'stable';\n });\n\n // Check if the room is on an unstable version. We determine urgency based\n // off the version being in the Matrix spec namespace or not (if the version\n // is in the current namespace and unstable, the room is probably vulnerable).\n if (!stableVersions.includes(currentVersion)) {\n result.version = versionCap.default;\n result.needsUpgrade = true;\n result.urgent = !!this.getVersion().match(/^[0-9]+[0-9.]*$/g);\n if (result.urgent) {\n _logger2.default.warn(\"URGENT upgrade required on \" + this.roomId);\n } else {\n _logger2.default.warn(\"Non-urgent upgrade required on \" + this.roomId);\n }\n return result;\n }\n\n // The room is on a stable, but non-default, version by this point.\n // No upgrade needed.\n return result;\n};\n\n/**\n * Determines whether the given user is permitted to perform a room upgrade\n * @param {String} userId The ID of the user to test against\n * @returns {bool} True if the given user is permitted to upgrade the room\n */\nRoom.prototype.userMayUpgradeRoom = function (userId) {\n return this.currentState.maySendStateEvent(\"m.room.tombstone\", userId);\n};\n\n/**\n * Get the list of pending sent events for this room\n *\n * @return {module:models/event.MatrixEvent[]} A list of the sent events\n * waiting for remote echo.\n *\n * @throws If opts.pendingEventOrdering was not 'detached'\n */\nRoom.prototype.getPendingEvents = function () {\n if (this._opts.pendingEventOrdering !== \"detached\") {\n throw new Error(\"Cannot call getPendingEvents with pendingEventOrdering == \" + this._opts.pendingEventOrdering);\n }\n\n return this._pendingEventList;\n};\n\n/**\n * Check whether the pending event list contains a given event by ID.\n *\n * @param {string} eventId The event ID to check for.\n * @return {boolean}\n * @throws If opts.pendingEventOrdering was not 'detached'\n */\nRoom.prototype.hasPendingEvent = function (eventId) {\n if (this._opts.pendingEventOrdering !== \"detached\") {\n throw new Error(\"Cannot call hasPendingEvent with pendingEventOrdering == \" + this._opts.pendingEventOrdering);\n }\n\n return this._pendingEventList.some(function (event) {\n return event.getId() === eventId;\n });\n};\n\n/**\n * Get the live unfiltered timeline for this room.\n *\n * @return {module:models/event-timeline~EventTimeline} live timeline\n */\nRoom.prototype.getLiveTimeline = function () {\n return this.getUnfilteredTimelineSet().getLiveTimeline();\n};\n\n/**\n * @param {string} myUserId the user id for the logged in member\n * @return {string} the membership type (join | leave | invite) for the logged in user\n */\nRoom.prototype.getMyMembership = function () {\n return this._selfMembership;\n};\n\n/**\n * If this room is a DM we're invited to,\n * try to find out who invited us\n * @return {string} user id of the inviter\n */\nRoom.prototype.getDMInviter = function () {\n if (this.myUserId) {\n var me = this.getMember(this.myUserId);\n if (me) {\n return me.getDMInviter();\n }\n }\n if (this._selfMembership === \"invite\") {\n // fall back to summary information\n var memberCount = this.getInvitedAndJoinedMemberCount();\n if (memberCount == 2 && this._summaryHeroes.length) {\n return this._summaryHeroes[0];\n }\n }\n};\n\n/**\n * Assuming this room is a DM room, tries to guess with which user.\n * @return {string} user id of the other member (could be syncing user)\n */\nRoom.prototype.guessDMUserId = function () {\n var _this = this;\n\n var me = this.getMember(this.myUserId);\n if (me) {\n var inviterId = me.getDMInviter();\n if (inviterId) {\n return inviterId;\n }\n }\n // remember, we're assuming this room is a DM,\n // so returning the first member we find should be fine\n var hasHeroes = Array.isArray(this._summaryHeroes) && this._summaryHeroes.length;\n if (hasHeroes) {\n return this._summaryHeroes[0];\n }\n var members = this.currentState.getMembers();\n var anyMember = members.find(function (m) {\n return m.userId !== _this.myUserId;\n });\n if (anyMember) {\n return anyMember.userId;\n }\n // it really seems like I'm the only user in the room\n // so I probably created a room with just me in it\n // and marked it as a DM. Ok then\n return this.myUserId;\n};\n\nRoom.prototype.getAvatarFallbackMember = function () {\n var _this2 = this;\n\n var memberCount = this.getInvitedAndJoinedMemberCount();\n if (memberCount > 2) {\n return;\n }\n var hasHeroes = Array.isArray(this._summaryHeroes) && this._summaryHeroes.length;\n if (hasHeroes) {\n var availableMember = this._summaryHeroes.map(function (userId) {\n return _this2.getMember(userId);\n }).find(function (member) {\n return !!member;\n });\n if (availableMember) {\n return availableMember;\n }\n }\n var members = this.currentState.getMembers();\n // could be different than memberCount\n // as this includes left members\n if (members.length <= 2) {\n var _availableMember = members.find(function (m) {\n return m.userId !== _this2.myUserId;\n });\n if (_availableMember) {\n return _availableMember;\n }\n }\n // if all else fails, try falling back to a user,\n // and create a one-off member for it\n if (hasHeroes) {\n var availableUser = this._summaryHeroes.map(function (userId) {\n return _this2._client.getUser(userId);\n }).find(function (user) {\n return !!user;\n });\n if (availableUser) {\n var member = new RoomMember(this.roomId, availableUser.userId);\n member.user = availableUser;\n return member;\n }\n }\n};\n\n/**\n * Sets the membership this room was received as during sync\n * @param {string} membership join | leave | invite\n */\nRoom.prototype.updateMyMembership = function (membership) {\n var prevMembership = this._selfMembership;\n this._selfMembership = membership;\n if (prevMembership !== membership) {\n if (membership === \"leave\") {\n this._cleanupAfterLeaving();\n }\n this.emit(\"Room.myMembership\", this, membership, prevMembership);\n }\n};\n\nRoom.prototype._loadMembersFromServer = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var lastSyncToken, queryString, path, http, response;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n lastSyncToken = this._client.store.getSyncToken();\n queryString = utils.encodeParams({\n not_membership: \"leave\",\n at: lastSyncToken\n });\n path = utils.encodeUri(\"/rooms/$roomId/members?\" + queryString, { $roomId: this.roomId });\n http = this._client._http;\n _context2.next = 6;\n return (0, _bluebird.resolve)(http.authedRequest(undefined, \"GET\", path));\n\n case 6:\n response = _context2.sent;\n return _context2.abrupt(\"return\", response.chunk);\n\n case 8:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n}));\n\nRoom.prototype._loadMembers = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var fromServer, rawMembersEvents, memberEvents;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n // were the members loaded from the server?\n fromServer = false;\n _context3.next = 3;\n return (0, _bluebird.resolve)(this._client.store.getOutOfBandMembers(this.roomId));\n\n case 3:\n rawMembersEvents = _context3.sent;\n\n if (!(rawMembersEvents === null)) {\n _context3.next = 10;\n break;\n }\n\n fromServer = true;\n _context3.next = 8;\n return (0, _bluebird.resolve)(this._loadMembersFromServer());\n\n case 8:\n rawMembersEvents = _context3.sent;\n\n _logger2.default.log(\"LL: got \" + rawMembersEvents.length + \" \" + (\"members from server for room \" + this.roomId));\n\n case 10:\n memberEvents = rawMembersEvents.map(this._client.getEventMapper());\n return _context3.abrupt(\"return\", { memberEvents: memberEvents, fromServer: fromServer });\n\n case 12:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n}));\n\n/**\n * Preloads the member list in case lazy loading\n * of memberships is in use. Can be called multiple times,\n * it will only preload once.\n * @return {Promise} when preloading is done and\n * accessing the members on the room will take\n * all members in the room into account\n */\nRoom.prototype.loadMembersIfNeeded = function () {\n var _this3 = this;\n\n if (this._membersPromise) {\n return this._membersPromise;\n }\n\n // mark the state so that incoming messages while\n // the request is in flight get marked as superseding\n // the OOB members\n this.currentState.markOutOfBandMembersStarted();\n\n var inMemoryUpdate = this._loadMembers().then(function (result) {\n _this3.currentState.setOutOfBandMembers(result.memberEvents);\n // now the members are loaded, start to track the e2e devices if needed\n if (_this3._client.isCryptoEnabled() && _this3._client.isRoomEncrypted(_this3.roomId)) {\n _this3._client._crypto.trackRoomDevices(_this3.roomId);\n }\n return result.fromServer;\n }).catch(function (err) {\n // allow retries on fail\n _this3._membersPromise = null;\n _this3.currentState.markOutOfBandMembersFailed();\n throw err;\n });\n // update members in storage, but don't wait for it\n inMemoryUpdate.then(function (fromServer) {\n if (fromServer) {\n var oobMembers = _this3.currentState.getMembers().filter(function (m) {\n return m.isOutOfBand();\n }).map(function (m) {\n return m.events.member.event;\n });\n _logger2.default.log(\"LL: telling store to write \" + oobMembers.length + (\" members for room \" + _this3.roomId));\n var store = _this3._client.store;\n return store.setOutOfBandMembers(_this3.roomId, oobMembers)\n // swallow any IDB error as we don't want to fail\n // because of this\n .catch(function (err) {\n _logger2.default.log(\"LL: storing OOB room members failed, oh well\", err);\n });\n }\n }).catch(function (err) {\n // as this is not awaited anywhere,\n // at least show the error in the console\n _logger2.default.error(err);\n });\n\n this._membersPromise = inMemoryUpdate;\n\n return this._membersPromise;\n};\n\n/**\n * Removes the lazily loaded members from storage if needed\n */\nRoom.prototype.clearLoadedMembersIfNeeded = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (!(this._opts.lazyLoadMembers && this._membersPromise)) {\n _context4.next = 7;\n break;\n }\n\n _context4.next = 3;\n return (0, _bluebird.resolve)(this.loadMembersIfNeeded());\n\n case 3:\n _context4.next = 5;\n return (0, _bluebird.resolve)(this._client.store.clearOutOfBandMembers(this.roomId));\n\n case 5:\n this.currentState.clearOutOfBandMembers();\n this._membersPromise = null;\n\n case 7:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n}));\n\n/**\n * called when sync receives this room in the leave section\n * to do cleanup after leaving a room. Possibly called multiple times.\n */\nRoom.prototype._cleanupAfterLeaving = function () {\n var _this4 = this;\n\n this.clearLoadedMembersIfNeeded().catch(function (err) {\n _logger2.default.error(\"error after clearing loaded members from \" + (\"room \" + _this4.roomId + \" after leaving\"));\n _logger2.default.log(err);\n });\n};\n\n/**\n * Reset the live timeline of all timelineSets, and start new ones.\n *\n *

This is used when /sync returns a 'limited' timeline.\n *\n * @param {string=} backPaginationToken token for back-paginating the new timeline\n * @param {string=} forwardPaginationToken token for forward-paginating the old live timeline,\n * if absent or null, all timelines are reset, removing old ones (including the previous live\n * timeline which would otherwise be unable to paginate forwards without this token).\n * Removing just the old live timeline whilst preserving previous ones is not supported.\n */\nRoom.prototype.resetLiveTimeline = function (backPaginationToken, forwardPaginationToken) {\n for (var i = 0; i < this._timelineSets.length; i++) {\n this._timelineSets[i].resetLiveTimeline(backPaginationToken, forwardPaginationToken);\n }\n\n this._fixUpLegacyTimelineFields();\n};\n\n/**\n * Fix up this.timeline, this.oldState and this.currentState\n *\n * @private\n */\nRoom.prototype._fixUpLegacyTimelineFields = function () {\n // maintain this.timeline as a reference to the live timeline,\n // and this.oldState and this.currentState as references to the\n // state at the start and end of that timeline. These are more\n // for backwards-compatibility than anything else.\n this.timeline = this.getLiveTimeline().getEvents();\n this.oldState = this.getLiveTimeline().getState(EventTimeline.BACKWARDS);\n this.currentState = this.getLiveTimeline().getState(EventTimeline.FORWARDS);\n};\n\n/**\n * Returns whether there are any devices in the room that are unverified\n *\n * Note: Callers should first check if crypto is enabled on this device. If it is\n * disabled, then we aren't tracking room devices at all, so we can't answer this, and an\n * error will be thrown.\n *\n * @return {bool} the result\n */\nRoom.prototype.hasUnverifiedDevices = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee5() {\n var e2eMembers, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, member, devices;\n\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n if (this._client.isRoomEncrypted(this.roomId)) {\n _context5.next = 2;\n break;\n }\n\n return _context5.abrupt(\"return\", false);\n\n case 2:\n _context5.next = 4;\n return (0, _bluebird.resolve)(this.getEncryptionTargetMembers());\n\n case 4:\n e2eMembers = _context5.sent;\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context5.prev = 8;\n _iterator2 = (0, _getIterator3.default)(e2eMembers);\n\n case 10:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context5.next = 20;\n break;\n }\n\n member = _step2.value;\n _context5.next = 14;\n return (0, _bluebird.resolve)(this._client.getStoredDevicesForUser(member.userId));\n\n case 14:\n devices = _context5.sent;\n\n if (!devices.some(function (device) {\n return device.isUnverified();\n })) {\n _context5.next = 17;\n break;\n }\n\n return _context5.abrupt(\"return\", true);\n\n case 17:\n _iteratorNormalCompletion2 = true;\n _context5.next = 10;\n break;\n\n case 20:\n _context5.next = 26;\n break;\n\n case 22:\n _context5.prev = 22;\n _context5.t0 = _context5[\"catch\"](8);\n _didIteratorError2 = true;\n _iteratorError2 = _context5.t0;\n\n case 26:\n _context5.prev = 26;\n _context5.prev = 27;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n\n case 29:\n _context5.prev = 29;\n\n if (!_didIteratorError2) {\n _context5.next = 32;\n break;\n }\n\n throw _iteratorError2;\n\n case 32:\n return _context5.finish(29);\n\n case 33:\n return _context5.finish(26);\n\n case 34:\n return _context5.abrupt(\"return\", false);\n\n case 35:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5, this, [[8, 22, 26, 34], [27,, 29, 33]]);\n}));\n\n/**\n * Return the timeline sets for this room.\n * @return {EventTimelineSet[]} array of timeline sets for this room\n */\nRoom.prototype.getTimelineSets = function () {\n return this._timelineSets;\n};\n\n/**\n * Helper to return the main unfiltered timeline set for this room\n * @return {EventTimelineSet} room's unfiltered timeline set\n */\nRoom.prototype.getUnfilteredTimelineSet = function () {\n return this._timelineSets[0];\n};\n\n/**\n * Get the timeline which contains the given event from the unfiltered set, if any\n *\n * @param {string} eventId event ID to look for\n * @return {?module:models/event-timeline~EventTimeline} timeline containing\n * the given event, or null if unknown\n */\nRoom.prototype.getTimelineForEvent = function (eventId) {\n return this.getUnfilteredTimelineSet().getTimelineForEvent(eventId);\n};\n\n/**\n * Add a new timeline to this room's unfiltered timeline set\n *\n * @return {module:models/event-timeline~EventTimeline} newly-created timeline\n */\nRoom.prototype.addTimeline = function () {\n return this.getUnfilteredTimelineSet().addTimeline();\n};\n\n/**\n * Get an event which is stored in our unfiltered timeline set\n *\n * @param {string} eventId event ID to look for\n * @return {?module:models/event.MatrixEvent} the given event, or undefined if unknown\n */\nRoom.prototype.findEventById = function (eventId) {\n return this.getUnfilteredTimelineSet().findEventById(eventId);\n};\n\n/**\n * Get one of the notification counts for this room\n * @param {String} type The type of notification count to get. default: 'total'\n * @return {Number} The notification count, or undefined if there is no count\n * for this type.\n */\nRoom.prototype.getUnreadNotificationCount = function (type) {\n type = type || 'total';\n return this._notificationCounts[type];\n};\n\n/**\n * Set one of the notification counts for this room\n * @param {String} type The type of notification count to set.\n * @param {Number} count The new count\n */\nRoom.prototype.setUnreadNotificationCount = function (type, count) {\n this._notificationCounts[type] = count;\n};\n\nRoom.prototype.setSummary = function (summary) {\n var _this5 = this;\n\n var heroes = summary[\"m.heroes\"];\n var joinedCount = summary[\"m.joined_member_count\"];\n var invitedCount = summary[\"m.invited_member_count\"];\n if ((0, _isInteger2.default)(joinedCount)) {\n this.currentState.setJoinedMemberCount(joinedCount);\n }\n if ((0, _isInteger2.default)(invitedCount)) {\n this.currentState.setInvitedMemberCount(invitedCount);\n }\n if (Array.isArray(heroes)) {\n // be cautious about trusting server values,\n // and make sure heroes doesn't contain our own id\n // just to be sure\n this._summaryHeroes = heroes.filter(function (userId) {\n return userId !== _this5.myUserId;\n });\n }\n};\n\n/**\n * Whether to send encrypted messages to devices within this room.\n * @param {Boolean} value true to blacklist unverified devices, null\n * to use the global value for this room.\n */\nRoom.prototype.setBlacklistUnverifiedDevices = function (value) {\n this._blacklistUnverifiedDevices = value;\n};\n\n/**\n * Whether to send encrypted messages to devices within this room.\n * @return {Boolean} true if blacklisting unverified devices, null\n * if the global value should be used for this room.\n */\nRoom.prototype.getBlacklistUnverifiedDevices = function () {\n return this._blacklistUnverifiedDevices;\n};\n\n/**\n * Get the avatar URL for a room if one was set.\n * @param {String} baseUrl The homeserver base URL. See\n * {@link module:client~MatrixClient#getHomeserverUrl}.\n * @param {Number} width The desired width of the thumbnail.\n * @param {Number} height The desired height of the thumbnail.\n * @param {string} resizeMethod The thumbnail resize method to use, either\n * \"crop\" or \"scale\".\n * @param {boolean} allowDefault True to allow an identicon for this room if an\n * avatar URL wasn't explicitly set. Default: true. (Deprecated)\n * @return {?string} the avatar URL or null.\n */\nRoom.prototype.getAvatarUrl = function (baseUrl, width, height, resizeMethod, allowDefault) {\n var roomAvatarEvent = this.currentState.getStateEvents(\"m.room.avatar\", \"\");\n if (allowDefault === undefined) {\n allowDefault = true;\n }\n if (!roomAvatarEvent && !allowDefault) {\n return null;\n }\n\n var mainUrl = roomAvatarEvent ? roomAvatarEvent.getContent().url : null;\n if (mainUrl) {\n return ContentRepo.getHttpUriForMxc(baseUrl, mainUrl, width, height, resizeMethod);\n } else if (allowDefault) {\n return ContentRepo.getIdenticonUri(baseUrl, this.roomId, width, height);\n }\n\n return null;\n};\n\n/**\n * Get the aliases this room has according to the room's state\n * The aliases returned by this function may not necessarily\n * still point to this room.\n * @return {array} The room's alias as an array of strings\n */\nRoom.prototype.getAliases = function () {\n var aliasStrings = [];\n\n var aliasEvents = this.currentState.getStateEvents(\"m.room.aliases\");\n if (aliasEvents) {\n for (var i = 0; i < aliasEvents.length; ++i) {\n var aliasEvent = aliasEvents[i];\n if (utils.isArray(aliasEvent.getContent().aliases)) {\n Array.prototype.push.apply(aliasStrings, aliasEvent.getContent().aliases);\n }\n }\n }\n return aliasStrings;\n};\n\n/**\n * Get this room's canonical alias\n * The alias returned by this function may not necessarily\n * still point to this room.\n * @return {?string} The room's canonical alias, or null if there is none\n */\nRoom.prototype.getCanonicalAlias = function () {\n var canonicalAlias = this.currentState.getStateEvents(\"m.room.canonical_alias\", \"\");\n if (canonicalAlias) {\n return canonicalAlias.getContent().alias;\n }\n return null;\n};\n\n/**\n * Add events to a timeline\n *\n *

Will fire \"Room.timeline\" for each event added.\n *\n * @param {MatrixEvent[]} events A list of events to add.\n *\n * @param {boolean} toStartOfTimeline True to add these events to the start\n * (oldest) instead of the end (newest) of the timeline. If true, the oldest\n * event will be the last element of 'events'.\n *\n * @param {module:models/event-timeline~EventTimeline} timeline timeline to\n * add events to.\n *\n * @param {string=} paginationToken token for the next batch of events\n *\n * @fires module:client~MatrixClient#event:\"Room.timeline\"\n *\n */\nRoom.prototype.addEventsToTimeline = function (events, toStartOfTimeline, timeline, paginationToken) {\n timeline.getTimelineSet().addEventsToTimeline(events, toStartOfTimeline, timeline, paginationToken);\n};\n\n/**\n * Get a member from the current room state.\n * @param {string} userId The user ID of the member.\n * @return {RoomMember} The member or null.\n */\nRoom.prototype.getMember = function (userId) {\n return this.currentState.getMember(userId);\n};\n\n/**\n * Get a list of members whose membership state is \"join\".\n * @return {RoomMember[]} A list of currently joined members.\n */\nRoom.prototype.getJoinedMembers = function () {\n return this.getMembersWithMembership(\"join\");\n};\n\n/**\n * Returns the number of joined members in this room\n * This method caches the result.\n * This is a wrapper around the method of the same name in roomState, returning\n * its result for the room's current state.\n * @return {integer} The number of members in this room whose membership is 'join'\n */\nRoom.prototype.getJoinedMemberCount = function () {\n return this.currentState.getJoinedMemberCount();\n};\n\n/**\n * Returns the number of invited members in this room\n * @return {integer} The number of members in this room whose membership is 'invite'\n */\nRoom.prototype.getInvitedMemberCount = function () {\n return this.currentState.getInvitedMemberCount();\n};\n\n/**\n * Returns the number of invited + joined members in this room\n * @return {integer} The number of members in this room whose membership is 'invite' or 'join'\n */\nRoom.prototype.getInvitedAndJoinedMemberCount = function () {\n return this.getInvitedMemberCount() + this.getJoinedMemberCount();\n};\n\n/**\n * Get a list of members with given membership state.\n * @param {string} membership The membership state.\n * @return {RoomMember[]} A list of members with the given membership state.\n */\nRoom.prototype.getMembersWithMembership = function (membership) {\n return utils.filter(this.currentState.getMembers(), function (m) {\n return m.membership === membership;\n });\n};\n\n/**\n * Get a list of members we should be encrypting for in this room\n * @return {Promise} A list of members who\n * we should encrypt messages for in this room.\n */\nRoom.prototype.getEncryptionTargetMembers = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee6() {\n var members;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return (0, _bluebird.resolve)(this.loadMembersIfNeeded());\n\n case 2:\n members = this.getMembersWithMembership(\"join\");\n\n if (this.shouldEncryptForInvitedMembers()) {\n members = members.concat(this.getMembersWithMembership(\"invite\"));\n }\n return _context6.abrupt(\"return\", members);\n\n case 5:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n}));\n\n/**\n * Determine whether we should encrypt messages for invited users in this room\n * @return {boolean} if we should encrypt messages for invited users\n */\nRoom.prototype.shouldEncryptForInvitedMembers = function () {\n var ev = this.currentState.getStateEvents(\"m.room.history_visibility\", \"\");\n return ev && ev.getContent() && ev.getContent().history_visibility !== \"joined\";\n};\n\n/**\n * Get the default room name (i.e. what a given user would see if the\n * room had no m.room.name)\n * @param {string} userId The userId from whose perspective we want\n * to calculate the default name\n * @return {string} The default room name\n */\nRoom.prototype.getDefaultRoomName = function (userId) {\n return calculateRoomName(this, userId, true);\n};\n\n/**\n* Check if the given user_id has the given membership state.\n* @param {string} userId The user ID to check.\n* @param {string} membership The membership e.g. 'join'\n* @return {boolean} True if this user_id has the given membership state.\n*/\nRoom.prototype.hasMembershipState = function (userId, membership) {\n var member = this.getMember(userId);\n if (!member) {\n return false;\n }\n return member.membership === membership;\n};\n\n/**\n * Add a timelineSet for this room with the given filter\n * @param {Filter} filter The filter to be applied to this timelineSet\n * @return {EventTimelineSet} The timelineSet\n */\nRoom.prototype.getOrCreateFilteredTimelineSet = function (filter) {\n if (this._filteredTimelineSets[filter.filterId]) {\n return this._filteredTimelineSets[filter.filterId];\n }\n var opts = (0, _assign2.default)({ filter: filter }, this._opts);\n var timelineSet = new EventTimelineSet(this, opts);\n this.reEmitter.reEmit(timelineSet, [\"Room.timeline\", \"Room.timelineReset\"]);\n this._filteredTimelineSets[filter.filterId] = timelineSet;\n this._timelineSets.push(timelineSet);\n\n // populate up the new timelineSet with filtered events from our live\n // unfiltered timeline.\n //\n // XXX: This is risky as our timeline\n // may have grown huge and so take a long time to filter.\n // see https://github.com/vector-im/vector-web/issues/2109\n\n var unfilteredLiveTimeline = this.getLiveTimeline();\n\n unfilteredLiveTimeline.getEvents().forEach(function (event) {\n timelineSet.addLiveEvent(event);\n });\n\n // find the earliest unfiltered timeline\n var timeline = unfilteredLiveTimeline;\n while (timeline.getNeighbouringTimeline(EventTimeline.BACKWARDS)) {\n timeline = timeline.getNeighbouringTimeline(EventTimeline.BACKWARDS);\n }\n\n timelineSet.getLiveTimeline().setPaginationToken(timeline.getPaginationToken(EventTimeline.BACKWARDS), EventTimeline.BACKWARDS);\n\n // alternatively, we could try to do something like this to try and re-paginate\n // in the filtered events from nothing, but Mark says it's an abuse of the API\n // to do so:\n //\n // timelineSet.resetLiveTimeline(\n // unfilteredLiveTimeline.getPaginationToken(EventTimeline.FORWARDS)\n // );\n\n return timelineSet;\n};\n\n/**\n * Forget the timelineSet for this room with the given filter\n *\n * @param {Filter} filter the filter whose timelineSet is to be forgotten\n */\nRoom.prototype.removeFilteredTimelineSet = function (filter) {\n var timelineSet = this._filteredTimelineSets[filter.filterId];\n delete this._filteredTimelineSets[filter.filterId];\n var i = this._timelineSets.indexOf(timelineSet);\n if (i > -1) {\n this._timelineSets.splice(i, 1);\n }\n};\n\n/**\n * Add an event to the end of this room's live timelines. Will fire\n * \"Room.timeline\".\n *\n * @param {MatrixEvent} event Event to be added\n * @param {string?} duplicateStrategy 'ignore' or 'replace'\n * @fires module:client~MatrixClient#event:\"Room.timeline\"\n * @private\n */\nRoom.prototype._addLiveEvent = function (event, duplicateStrategy) {\n if (event.isRedaction()) {\n var redactId = event.event.redacts;\n\n // if we know about this event, redact its contents now.\n var redactedEvent = this.getUnfilteredTimelineSet().findEventById(redactId);\n if (redactedEvent) {\n redactedEvent.makeRedacted(event);\n\n // If this is in the current state, replace it with the redacted version\n if (redactedEvent.getStateKey()) {\n var currentStateEvent = this.currentState.getStateEvents(redactedEvent.getType(), redactedEvent.getStateKey());\n if (currentStateEvent.getId() === redactedEvent.getId()) {\n this.currentState.setStateEvents([redactedEvent]);\n }\n }\n\n this.emit(\"Room.redaction\", event, this);\n\n // TODO: we stash user displaynames (among other things) in\n // RoomMember objects which are then attached to other events\n // (in the sender and target fields). We should get those\n // RoomMember objects to update themselves when the events that\n // they are based on are changed.\n }\n\n // FIXME: apply redactions to notification list\n\n // NB: We continue to add the redaction event to the timeline so\n // clients can say \"so and so redacted an event\" if they wish to. Also\n // this may be needed to trigger an update.\n }\n\n if (event.getUnsigned().transaction_id) {\n var existingEvent = this._txnToEvent[event.getUnsigned().transaction_id];\n if (existingEvent) {\n // remote echo of an event we sent earlier\n this._handleRemoteEcho(event, existingEvent);\n return;\n }\n }\n\n // add to our timeline sets\n for (var i = 0; i < this._timelineSets.length; i++) {\n this._timelineSets[i].addLiveEvent(event, duplicateStrategy);\n }\n\n // synthesize and inject implicit read receipts\n // Done after adding the event because otherwise the app would get a read receipt\n // pointing to an event that wasn't yet in the timeline\n // Don't synthesize RR for m.room.redaction as this causes the RR to go missing.\n if (event.sender && event.getType() !== \"m.room.redaction\") {\n this.addReceipt(synthesizeReceipt(event.sender.userId, event, \"m.read\"), true);\n\n // Any live events from a user could be taken as implicit\n // presence information: evidence that they are currently active.\n // ...except in a world where we use 'user.currentlyActive' to reduce\n // presence spam, this isn't very useful - we'll get a transition when\n // they are no longer currently active anyway. So don't bother to\n // reset the lastActiveAgo and lastPresenceTs from the RoomState's user.\n }\n};\n\n/**\n * Add a pending outgoing event to this room.\n *\n *

The event is added to either the pendingEventList, or the live timeline,\n * depending on the setting of opts.pendingEventOrdering.\n *\n *

This is an internal method, intended for use by MatrixClient.\n *\n * @param {module:models/event.MatrixEvent} event The event to add.\n *\n * @param {string} txnId Transaction id for this outgoing event\n *\n * @fires module:client~MatrixClient#event:\"Room.localEchoUpdated\"\n *\n * @throws if the event doesn't have status SENDING, or we aren't given a\n * unique transaction id.\n */\nRoom.prototype.addPendingEvent = function (event, txnId) {\n if (event.status !== EventStatus.SENDING) {\n throw new Error(\"addPendingEvent called on an event with status \" + event.status);\n }\n\n if (this._txnToEvent[txnId]) {\n throw new Error(\"addPendingEvent called on an event with known txnId \" + txnId);\n }\n\n // call setEventMetadata to set up event.sender etc\n // as event is shared over all timelineSets, we set up its metadata based\n // on the unfiltered timelineSet.\n EventTimeline.setEventMetadata(event, this.getLiveTimeline().getState(EventTimeline.FORWARDS), false);\n\n this._txnToEvent[txnId] = event;\n\n if (this._opts.pendingEventOrdering == \"detached\") {\n if (this._pendingEventList.some(function (e) {\n return e.status === EventStatus.NOT_SENT;\n })) {\n _logger2.default.warn(\"Setting event as NOT_SENT due to messages in the same state\");\n event.setStatus(EventStatus.NOT_SENT);\n }\n this._pendingEventList.push(event);\n\n if (event.isRelation()) {\n // For pending events, add them to the relations collection immediately.\n // (The alternate case below already covers this as part of adding to\n // the timeline set.)\n this._aggregateNonLiveRelation(event);\n }\n\n if (event.isRedaction()) {\n var redactId = event.event.redacts;\n var redactedEvent = this._pendingEventList && this._pendingEventList.find(function (e) {\n return e.getId() === redactId;\n });\n if (!redactedEvent) {\n redactedEvent = this.getUnfilteredTimelineSet().findEventById(redactId);\n }\n if (redactedEvent) {\n redactedEvent.markLocallyRedacted(event);\n this.emit(\"Room.redaction\", event, this);\n }\n }\n } else {\n for (var i = 0; i < this._timelineSets.length; i++) {\n var timelineSet = this._timelineSets[i];\n if (timelineSet.getFilter()) {\n if (timelineSet.getFilter().filterRoomTimeline([event]).length) {\n timelineSet.addEventToTimeline(event, timelineSet.getLiveTimeline(), false);\n }\n } else {\n timelineSet.addEventToTimeline(event, timelineSet.getLiveTimeline(), false);\n }\n }\n }\n\n this.emit(\"Room.localEchoUpdated\", event, this, null, null);\n};\n/**\n * Used to aggregate the local echo for a relation, and also\n * for re-applying a relation after it's redaction has been cancelled,\n * as the local echo for the redaction of the relation would have\n * un-aggregated the relation. Note that this is different from regular messages,\n * which are just kept detached for their local echo.\n *\n * Also note that live events are aggregated in the live EventTimelineSet.\n * @param {module:models/event.MatrixEvent} event the relation event that needs to be aggregated.\n */\nRoom.prototype._aggregateNonLiveRelation = function (event) {\n // TODO: We should consider whether this means it would be a better\n // design to lift the relations handling up to the room instead.\n for (var i = 0; i < this._timelineSets.length; i++) {\n var timelineSet = this._timelineSets[i];\n if (timelineSet.getFilter()) {\n if (timelineSet.getFilter().filterRoomTimeline([event]).length) {\n timelineSet.aggregateRelations(event);\n }\n } else {\n timelineSet.aggregateRelations(event);\n }\n }\n};\n\n/**\n * Deal with the echo of a message we sent.\n *\n *

We move the event to the live timeline if it isn't there already, and\n * update it.\n *\n * @param {module:models/event.MatrixEvent} remoteEvent The event received from\n * /sync\n * @param {module:models/event.MatrixEvent} localEvent The local echo, which\n * should be either in the _pendingEventList or the timeline.\n *\n * @fires module:client~MatrixClient#event:\"Room.localEchoUpdated\"\n * @private\n */\nRoom.prototype._handleRemoteEcho = function (remoteEvent, localEvent) {\n var oldEventId = localEvent.getId();\n var newEventId = remoteEvent.getId();\n var oldStatus = localEvent.status;\n\n // no longer pending\n delete this._txnToEvent[remoteEvent.getUnsigned().transaction_id];\n\n // if it's in the pending list, remove it\n if (this._pendingEventList) {\n utils.removeElement(this._pendingEventList, function (ev) {\n return ev.getId() == oldEventId;\n }, false);\n }\n\n // replace the event source (this will preserve the plaintext payload if\n // any, which is good, because we don't want to try decoding it again).\n localEvent.handleRemoteEcho(remoteEvent.event);\n\n for (var i = 0; i < this._timelineSets.length; i++) {\n var timelineSet = this._timelineSets[i];\n\n // if it's already in the timeline, update the timeline map. If it's not, add it.\n timelineSet.handleRemoteEcho(localEvent, oldEventId, newEventId);\n }\n\n this.emit(\"Room.localEchoUpdated\", localEvent, this, oldEventId, oldStatus);\n};\n\n/* a map from current event status to a list of allowed next statuses\n */\nvar ALLOWED_TRANSITIONS = {};\n\nALLOWED_TRANSITIONS[EventStatus.ENCRYPTING] = [EventStatus.SENDING, EventStatus.NOT_SENT];\n\nALLOWED_TRANSITIONS[EventStatus.SENDING] = [EventStatus.ENCRYPTING, EventStatus.QUEUED, EventStatus.NOT_SENT, EventStatus.SENT];\n\nALLOWED_TRANSITIONS[EventStatus.QUEUED] = [EventStatus.SENDING, EventStatus.CANCELLED];\n\nALLOWED_TRANSITIONS[EventStatus.SENT] = [];\n\nALLOWED_TRANSITIONS[EventStatus.NOT_SENT] = [EventStatus.SENDING, EventStatus.QUEUED, EventStatus.CANCELLED];\n\nALLOWED_TRANSITIONS[EventStatus.CANCELLED] = [];\n\n/**\n * Update the status / event id on a pending event, to reflect its transmission\n * progress.\n *\n *

This is an internal method.\n *\n * @param {MatrixEvent} event local echo event\n * @param {EventStatus} newStatus status to assign\n * @param {string} newEventId new event id to assign. Ignored unless\n * newStatus == EventStatus.SENT.\n * @fires module:client~MatrixClient#event:\"Room.localEchoUpdated\"\n */\nRoom.prototype.updatePendingEvent = function (event, newStatus, newEventId) {\n _logger2.default.log(\"setting pendingEvent status to \" + newStatus + \" in \" + event.getRoomId());\n\n // if the message was sent, we expect an event id\n if (newStatus == EventStatus.SENT && !newEventId) {\n throw new Error(\"updatePendingEvent called with status=SENT, \" + \"but no new event id\");\n }\n\n // SENT races against /sync, so we have to special-case it.\n if (newStatus == EventStatus.SENT) {\n var timeline = this.getUnfilteredTimelineSet().eventIdToTimeline(newEventId);\n if (timeline) {\n // we've already received the event via the event stream.\n // nothing more to do here.\n return;\n }\n }\n\n var oldStatus = event.status;\n var oldEventId = event.getId();\n\n if (!oldStatus) {\n throw new Error(\"updatePendingEventStatus called on an event which is \" + \"not a local echo.\");\n }\n\n var allowed = ALLOWED_TRANSITIONS[oldStatus];\n if (!allowed || allowed.indexOf(newStatus) < 0) {\n throw new Error(\"Invalid EventStatus transition \" + oldStatus + \"->\" + newStatus);\n }\n\n event.setStatus(newStatus);\n\n if (newStatus == EventStatus.SENT) {\n // update the event id\n event.replaceLocalEventId(newEventId);\n\n // if the event was already in the timeline (which will be the case if\n // opts.pendingEventOrdering==chronological), we need to update the\n // timeline map.\n for (var i = 0; i < this._timelineSets.length; i++) {\n this._timelineSets[i].replaceEventId(oldEventId, newEventId);\n }\n } else if (newStatus == EventStatus.CANCELLED) {\n // remove it from the pending event list, or the timeline.\n if (this._pendingEventList) {\n var idx = this._pendingEventList.findIndex(function (ev) {\n return ev.getId() === oldEventId;\n });\n if (idx !== -1) {\n var _pendingEventList$spl = this._pendingEventList.splice(idx, 1),\n _pendingEventList$spl2 = (0, _slicedToArray3.default)(_pendingEventList$spl, 1),\n removedEvent = _pendingEventList$spl2[0];\n\n if (removedEvent.isRedaction()) {\n this._revertRedactionLocalEcho(removedEvent);\n }\n }\n }\n this.removeEvent(oldEventId);\n }\n\n this.emit(\"Room.localEchoUpdated\", event, this, oldEventId, oldStatus);\n};\n\nRoom.prototype._revertRedactionLocalEcho = function (redactionEvent) {\n var redactId = redactionEvent.event.redacts;\n if (!redactId) {\n return;\n }\n var redactedEvent = this.getUnfilteredTimelineSet().findEventById(redactId);\n if (redactedEvent) {\n redactedEvent.unmarkLocallyRedacted();\n // re-render after undoing redaction\n this.emit(\"Room.redactionCancelled\", redactionEvent, this);\n // reapply relation now redaction failed\n if (redactedEvent.isRelation()) {\n this._aggregateNonLiveRelation(redactedEvent);\n }\n }\n};\n\n/**\n * Add some events to this room. This can include state events, message\n * events and typing notifications. These events are treated as \"live\" so\n * they will go to the end of the timeline.\n *\n * @param {MatrixEvent[]} events A list of events to add.\n *\n * @param {string} duplicateStrategy Optional. Applies to events in the\n * timeline only. If this is 'replace' then if a duplicate is encountered, the\n * event passed to this function will replace the existing event in the\n * timeline. If this is not specified, or is 'ignore', then the event passed to\n * this function will be ignored entirely, preserving the existing event in the\n * timeline. Events are identical based on their event ID only.\n *\n * @throws If duplicateStrategy is not falsey, 'replace' or 'ignore'.\n */\nRoom.prototype.addLiveEvents = function (events, duplicateStrategy) {\n var i = void 0;\n if (duplicateStrategy && [\"replace\", \"ignore\"].indexOf(duplicateStrategy) === -1) {\n throw new Error(\"duplicateStrategy MUST be either 'replace' or 'ignore'\");\n }\n\n // sanity check that the live timeline is still live\n for (i = 0; i < this._timelineSets.length; i++) {\n var liveTimeline = this._timelineSets[i].getLiveTimeline();\n if (liveTimeline.getPaginationToken(EventTimeline.FORWARDS)) {\n throw new Error(\"live timeline \" + i + \" is no longer live - it has a pagination token \" + \"(\" + liveTimeline.getPaginationToken(EventTimeline.FORWARDS) + \")\");\n }\n if (liveTimeline.getNeighbouringTimeline(EventTimeline.FORWARDS)) {\n throw new Error(\"live timeline \" + i + \" is no longer live - \" + \"it has a neighbouring timeline\");\n }\n }\n\n for (i = 0; i < events.length; i++) {\n // TODO: We should have a filter to say \"only add state event\n // types X Y Z to the timeline\".\n this._addLiveEvent(events[i], duplicateStrategy);\n }\n};\n\n/**\n * Adds/handles ephemeral events such as typing notifications and read receipts.\n * @param {MatrixEvent[]} events A list of events to process\n */\nRoom.prototype.addEphemeralEvents = function (events) {\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(events), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var event = _step3.value;\n\n if (event.getType() === 'm.typing') {\n this.currentState.setTypingEvent(event);\n } else if (event.getType() === 'm.receipt') {\n this.addReceipt(event);\n } // else ignore - life is too short for us to care about these events\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n};\n\n/**\n * Removes events from this room.\n * @param {String[]} eventIds A list of eventIds to remove.\n */\nRoom.prototype.removeEvents = function (eventIds) {\n for (var i = 0; i < eventIds.length; ++i) {\n this.removeEvent(eventIds[i]);\n }\n};\n\n/**\n * Removes a single event from this room.\n *\n * @param {String} eventId The id of the event to remove\n *\n * @return {bool} true if the event was removed from any of the room's timeline sets\n */\nRoom.prototype.removeEvent = function (eventId) {\n var removedAny = false;\n for (var i = 0; i < this._timelineSets.length; i++) {\n var removed = this._timelineSets[i].removeEvent(eventId);\n if (removed) {\n if (removed.isRedaction()) {\n this._revertRedactionLocalEcho(removed);\n }\n removedAny = true;\n }\n }\n return removedAny;\n};\n\n/**\n * Recalculate various aspects of the room, including the room name and\n * room summary. Call this any time the room's current state is modified.\n * May fire \"Room.name\" if the room name is updated.\n * @fires module:client~MatrixClient#event:\"Room.name\"\n */\nRoom.prototype.recalculate = function () {\n // set fake stripped state events if this is an invite room so logic remains\n // consistent elsewhere.\n var self = this;\n var membershipEvent = this.currentState.getStateEvents(\"m.room.member\", this.myUserId);\n if (membershipEvent && membershipEvent.getContent().membership === \"invite\") {\n var strippedStateEvents = membershipEvent.event.invite_room_state || [];\n utils.forEach(strippedStateEvents, function (strippedEvent) {\n var existingEvent = self.currentState.getStateEvents(strippedEvent.type, strippedEvent.state_key);\n if (!existingEvent) {\n // set the fake stripped event instead\n self.currentState.setStateEvents([new MatrixEvent({\n type: strippedEvent.type,\n state_key: strippedEvent.state_key,\n content: strippedEvent.content,\n event_id: \"$fake\" + Date.now(),\n room_id: self.roomId,\n user_id: self.myUserId // technically a lie\n })]);\n }\n });\n }\n\n var oldName = this.name;\n this.name = calculateRoomName(this, this.myUserId);\n this.summary = new RoomSummary(this.roomId, {\n title: this.name\n });\n\n if (oldName !== this.name) {\n this.emit(\"Room.name\", this);\n }\n};\n\n/**\n * Get a list of user IDs who have read up to the given event.\n * @param {MatrixEvent} event the event to get read receipts for.\n * @return {String[]} A list of user IDs.\n */\nRoom.prototype.getUsersReadUpTo = function (event) {\n return this.getReceiptsForEvent(event).filter(function (receipt) {\n return receipt.type === \"m.read\";\n }).map(function (receipt) {\n return receipt.userId;\n });\n};\n\n/**\n * Get the ID of the event that a given user has read up to, or null if we\n * have received no read receipts from them.\n * @param {String} userId The user ID to get read receipt event ID for\n * @param {Boolean} ignoreSynthesized If true, return only receipts that have been\n * sent by the server, not implicit ones generated\n * by the JS SDK.\n * @return {String} ID of the latest event that the given user has read, or null.\n */\nRoom.prototype.getEventReadUpTo = function (userId, ignoreSynthesized) {\n var receipts = this._receipts;\n if (ignoreSynthesized) {\n receipts = this._realReceipts;\n }\n\n if (receipts[\"m.read\"] === undefined || receipts[\"m.read\"][userId] === undefined) {\n return null;\n }\n\n return receipts[\"m.read\"][userId].eventId;\n};\n\n/**\n * Determines if the given user has read a particular event ID with the known\n * history of the room. This is not a definitive check as it relies only on\n * what is available to the room at the time of execution.\n * @param {String} userId The user ID to check the read state of.\n * @param {String} eventId The event ID to check if the user read.\n * @returns {Boolean} True if the user has read the event, false otherwise.\n */\nRoom.prototype.hasUserReadEvent = function (userId, eventId) {\n var readUpToId = this.getEventReadUpTo(userId, false);\n if (readUpToId === eventId) return true;\n\n if (this.timeline.length && this.timeline[this.timeline.length - 1].getSender() && this.timeline[this.timeline.length - 1].getSender() === userId) {\n // It doesn't matter where the event is in the timeline, the user has read\n // it because they've sent the latest event.\n return true;\n }\n\n for (var i = this.timeline.length - 1; i >= 0; --i) {\n var ev = this.timeline[i];\n\n // If we encounter the target event first, the user hasn't read it\n // however if we encounter the readUpToId first then the user has read\n // it. These rules apply because we're iterating bottom-up.\n if (ev.getId() === eventId) return false;\n if (ev.getId() === readUpToId) return true;\n }\n\n // We don't know if the user has read it, so assume not.\n return false;\n};\n\n/**\n * Get a list of receipts for the given event.\n * @param {MatrixEvent} event the event to get receipts for\n * @return {Object[]} A list of receipts with a userId, type and data keys or\n * an empty list.\n */\nRoom.prototype.getReceiptsForEvent = function (event) {\n return this._receiptCacheByEventId[event.getId()] || [];\n};\n\n/**\n * Add a receipt event to the room.\n * @param {MatrixEvent} event The m.receipt event.\n * @param {Boolean} fake True if this event is implicit\n */\nRoom.prototype.addReceipt = function (event, fake) {\n // event content looks like:\n // content: {\n // $event_id: {\n // $receipt_type: {\n // $user_id: {\n // ts: $timestamp\n // }\n // }\n // }\n // }\n if (fake === undefined) {\n fake = false;\n }\n if (!fake) {\n this._addReceiptsToStructure(event, this._realReceipts);\n // we don't bother caching real receipts by event ID\n // as there's nothing that would read it.\n }\n this._addReceiptsToStructure(event, this._receipts);\n this._receiptCacheByEventId = this._buildReceiptCache(this._receipts);\n\n // send events after we've regenerated the cache, otherwise things that\n // listened for the event would read from a stale cache\n this.emit(\"Room.receipt\", event, this);\n};\n\n/**\n * Add a receipt event to the room.\n * @param {MatrixEvent} event The m.receipt event.\n * @param {Object} receipts The object to add receipts to\n */\nRoom.prototype._addReceiptsToStructure = function (event, receipts) {\n var self = this;\n utils.keys(event.getContent()).forEach(function (eventId) {\n utils.keys(event.getContent()[eventId]).forEach(function (receiptType) {\n utils.keys(event.getContent()[eventId][receiptType]).forEach(function (userId) {\n var receipt = event.getContent()[eventId][receiptType][userId];\n\n if (!receipts[receiptType]) {\n receipts[receiptType] = {};\n }\n\n var existingReceipt = receipts[receiptType][userId];\n\n if (!existingReceipt) {\n receipts[receiptType][userId] = {};\n } else {\n // we only want to add this receipt if we think it is later\n // than the one we already have. (This is managed\n // server-side, but because we synthesize RRs locally we\n // have to do it here too.)\n var ordering = self.getUnfilteredTimelineSet().compareEventOrdering(existingReceipt.eventId, eventId);\n if (ordering !== null && ordering >= 0) {\n return;\n }\n }\n\n receipts[receiptType][userId] = {\n eventId: eventId,\n data: receipt\n };\n });\n });\n });\n};\n\n/**\n * Build and return a map of receipts by event ID\n * @param {Object} receipts A map of receipts\n * @return {Object} Map of receipts by event ID\n */\nRoom.prototype._buildReceiptCache = function (receipts) {\n var receiptCacheByEventId = {};\n utils.keys(receipts).forEach(function (receiptType) {\n utils.keys(receipts[receiptType]).forEach(function (userId) {\n var receipt = receipts[receiptType][userId];\n if (!receiptCacheByEventId[receipt.eventId]) {\n receiptCacheByEventId[receipt.eventId] = [];\n }\n receiptCacheByEventId[receipt.eventId].push({\n userId: userId,\n type: receiptType,\n data: receipt.data\n });\n });\n });\n return receiptCacheByEventId;\n};\n\n/**\n * Add a temporary local-echo receipt to the room to reflect in the\n * client the fact that we've sent one.\n * @param {string} userId The user ID if the receipt sender\n * @param {MatrixEvent} e The event that is to be acknowledged\n * @param {string} receiptType The type of receipt\n */\nRoom.prototype._addLocalEchoReceipt = function (userId, e, receiptType) {\n this.addReceipt(synthesizeReceipt(userId, e, receiptType), true);\n};\n\n/**\n * Update the room-tag event for the room. The previous one is overwritten.\n * @param {MatrixEvent} event the m.tag event\n */\nRoom.prototype.addTags = function (event) {\n // event content looks like:\n // content: {\n // tags: {\n // $tagName: { $metadata: $value },\n // $tagName: { $metadata: $value },\n // }\n // }\n\n // XXX: do we need to deep copy here?\n this.tags = event.getContent().tags || {};\n\n // XXX: we could do a deep-comparison to see if the tags have really\n // changed - but do we want to bother?\n this.emit(\"Room.tags\", event, this);\n};\n\n/**\n * Update the account_data events for this room, overwriting events of the same type.\n * @param {Array} events an array of account_data events to add\n */\nRoom.prototype.addAccountData = function (events) {\n for (var i = 0; i < events.length; i++) {\n var event = events[i];\n if (event.getType() === \"m.tag\") {\n this.addTags(event);\n }\n this.accountData[event.getType()] = event;\n this.emit(\"Room.accountData\", event, this);\n }\n};\n\n/**\n * Access account_data event of given event type for this room\n * @param {string} type the type of account_data event to be accessed\n * @return {?MatrixEvent} the account_data event in question\n */\nRoom.prototype.getAccountData = function (type) {\n return this.accountData[type];\n};\n\n/**\n * Returns wheter the syncing user has permission to send a message in the room\n * @return {boolean} true if the user should be permitted to send\n * message events into the room.\n */\nRoom.prototype.maySendMessage = function () {\n return this.getMyMembership() === 'join' && this.currentState.maySendEvent('m.room.message', this.myUserId);\n};\n\n/**\n * This is an internal method. Calculates the name of the room from the current\n * room state.\n * @param {Room} room The matrix room.\n * @param {string} userId The client's user ID. Used to filter room members\n * correctly.\n * @param {bool} ignoreRoomNameEvent Return the implicit room name that we'd see if there\n * was no m.room.name event.\n * @return {string} The calculated room name.\n */\nfunction calculateRoomName(room, userId, ignoreRoomNameEvent) {\n if (!ignoreRoomNameEvent) {\n // check for an alias, if any. for now, assume first alias is the\n // official one.\n var mRoomName = room.currentState.getStateEvents(\"m.room.name\", \"\");\n if (mRoomName && mRoomName.getContent() && mRoomName.getContent().name) {\n return mRoomName.getContent().name;\n }\n }\n\n var alias = room.getCanonicalAlias();\n\n if (!alias) {\n var aliases = room.getAliases();\n\n if (aliases.length) {\n alias = aliases[0];\n }\n }\n if (alias) {\n return alias;\n }\n\n var joinedMemberCount = room.currentState.getJoinedMemberCount();\n var invitedMemberCount = room.currentState.getInvitedMemberCount();\n // -1 because these numbers include the syncing user\n var inviteJoinCount = joinedMemberCount + invitedMemberCount - 1;\n\n // get members that are NOT ourselves and are actually in the room.\n var otherNames = null;\n if (room._summaryHeroes) {\n // if we have a summary, the member state events\n // should be in the room state\n otherNames = room._summaryHeroes.map(function (userId) {\n var member = room.getMember(userId);\n return member ? member.name : userId;\n });\n } else {\n var otherMembers = room.currentState.getMembers().filter(function (m) {\n return m.userId !== userId && (m.membership === \"invite\" || m.membership === \"join\");\n });\n // make sure members have stable order\n otherMembers.sort(function (a, b) {\n return a.userId.localeCompare(b.userId);\n });\n // only 5 first members, immitate _summaryHeroes\n otherMembers = otherMembers.slice(0, 5);\n otherNames = otherMembers.map(function (m) {\n return m.name;\n });\n }\n\n if (inviteJoinCount) {\n return memberNamesToRoomName(otherNames, inviteJoinCount);\n }\n\n var myMembership = room.getMyMembership();\n // if I have created a room and invited people throuh\n // 3rd party invites\n if (myMembership == 'join') {\n var thirdPartyInvites = room.currentState.getStateEvents(\"m.room.third_party_invite\");\n\n if (thirdPartyInvites && thirdPartyInvites.length) {\n var thirdPartyNames = thirdPartyInvites.map(function (i) {\n return i.getContent().display_name;\n });\n\n return \"Inviting \" + memberNamesToRoomName(thirdPartyNames);\n }\n }\n // let's try to figure out who was here before\n var leftNames = otherNames;\n // if we didn't have heroes, try finding them in the room state\n if (!leftNames.length) {\n leftNames = room.currentState.getMembers().filter(function (m) {\n return m.userId !== userId && m.membership !== \"invite\" && m.membership !== \"join\";\n }).map(function (m) {\n return m.name;\n });\n }\n if (leftNames.length) {\n return \"Empty room (was \" + memberNamesToRoomName(leftNames) + \")\";\n } else {\n return \"Empty room\";\n }\n}\n\nfunction memberNamesToRoomName(names) {\n var count = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : names.length + 1;\n\n var countWithoutMe = count - 1;\n if (!names.length) {\n return \"Empty room\";\n } else if (names.length === 1 && countWithoutMe <= 1) {\n return names[0];\n } else if (names.length === 2 && countWithoutMe <= 2) {\n return names[0] + \" and \" + names[1];\n } else {\n var plural = countWithoutMe > 1;\n if (plural) {\n return names[0] + \" and \" + countWithoutMe + \" others\";\n } else {\n return names[0] + \" and 1 other\";\n }\n }\n}\n\n/**\n * The Room class.\n */\nmodule.exports = Room;\n\n/**\n * Fires when an event we had previously received is redacted.\n *\n * (Note this is *not* fired when the redaction happens before we receive the\n * event).\n *\n * @event module:client~MatrixClient#\"Room.redaction\"\n * @param {MatrixEvent} event The matrix redaction event\n * @param {Room} room The room containing the redacted event\n */\n\n/**\n * Fires when an event that was previously redacted isn't anymore.\n * This happens when the redaction couldn't be sent and\n * was subsequently cancelled by the user. Redactions have a local echo\n * which is undone in this scenario.\n *\n * @event module:client~MatrixClient#\"Room.redactionCancelled\"\n * @param {MatrixEvent} event The matrix redaction event that was cancelled.\n * @param {Room} room The room containing the unredacted event\n */\n\n/**\n * Fires whenever the name of a room is updated.\n * @event module:client~MatrixClient#\"Room.name\"\n * @param {Room} room The room whose Room.name was updated.\n * @example\n * matrixClient.on(\"Room.name\", function(room){\n * var newName = room.name;\n * });\n */\n\n/**\n * Fires whenever a receipt is received for a room\n * @event module:client~MatrixClient#\"Room.receipt\"\n * @param {event} event The receipt event\n * @param {Room} room The room whose receipts was updated.\n * @example\n * matrixClient.on(\"Room.receipt\", function(event, room){\n * var receiptContent = event.getContent();\n * });\n */\n\n/**\n * Fires whenever a room's tags are updated.\n * @event module:client~MatrixClient#\"Room.tags\"\n * @param {event} event The tags event\n * @param {Room} room The room whose Room.tags was updated.\n * @example\n * matrixClient.on(\"Room.tags\", function(event, room){\n * var newTags = event.getContent().tags;\n * if (newTags[\"favourite\"]) showStar(room);\n * });\n */\n\n/**\n * Fires whenever a room's account_data is updated.\n * @event module:client~MatrixClient#\"Room.accountData\"\n * @param {event} event The account_data event\n * @param {Room} room The room whose account_data was updated.\n * @example\n * matrixClient.on(\"Room.accountData\", function(event, room){\n * if (event.getType() === \"m.room.colorscheme\") {\n * applyColorScheme(event.getContents());\n * }\n * });\n */\n\n/**\n * Fires when the status of a transmitted event is updated.\n *\n *

When an event is first transmitted, a temporary copy of the event is\n * inserted into the timeline, with a temporary event id, and a status of\n * 'SENDING'.\n *\n *

Once the echo comes back from the server, the content of the event\n * (MatrixEvent.event) is replaced by the complete event from the homeserver,\n * thus updating its event id, as well as server-generated fields such as the\n * timestamp. Its status is set to null.\n *\n *

Once the /send request completes, if the remote echo has not already\n * arrived, the event is updated with a new event id and the status is set to\n * 'SENT'. The server-generated fields are of course not updated yet.\n *\n *

If the /send fails, In this case, the event's status is set to\n * 'NOT_SENT'. If it is later resent, the process starts again, setting the\n * status to 'SENDING'. Alternatively, the message may be cancelled, which\n * removes the event from the room, and sets the status to 'CANCELLED'.\n *\n *

This event is raised to reflect each of the transitions above.\n *\n * @event module:client~MatrixClient#\"Room.localEchoUpdated\"\n *\n * @param {MatrixEvent} event The matrix event which has been updated\n *\n * @param {Room} room The room containing the redacted event\n *\n * @param {string} oldEventId The previous event id (the temporary event id,\n * except when updating a successfully-sent event when its echo arrives)\n *\n * @param {EventStatus} oldStatus The previous event status.\n */\n//# sourceMappingURL=room.js.map","module.exports = { \"default\": require(\"core-js/library/fn/number/is-integer\"), __esModule: true };","\"use strict\";\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * @module models/group\n */\nvar EventEmitter = require(\"events\").EventEmitter;\n\nvar utils = require(\"../utils\");\n\n/**\n * Construct a new Group.\n *\n * @param {string} groupId The ID of this group.\n *\n * @prop {string} groupId The ID of this group.\n * @prop {string} name The human-readable display name for this group.\n * @prop {string} avatarUrl The mxc URL for this group's avatar.\n * @prop {string} myMembership The logged in user's membership of this group\n * @prop {Object} inviter Infomation about the user who invited the logged in user\n * to the group, if myMembership is 'invite'.\n * @prop {string} inviter.userId The user ID of the inviter\n */\nfunction Group(groupId) {\n this.groupId = groupId;\n this.name = null;\n this.avatarUrl = null;\n this.myMembership = null;\n this.inviter = null;\n}\nutils.inherits(Group, EventEmitter);\n\nGroup.prototype.setProfile = function (name, avatarUrl) {\n if (this.name === name && this.avatarUrl === avatarUrl) return;\n\n this.name = name || this.groupId;\n this.avatarUrl = avatarUrl;\n\n this.emit(\"Group.profile\", this);\n};\n\nGroup.prototype.setMyMembership = function (membership) {\n if (this.myMembership === membership) return;\n\n this.myMembership = membership;\n\n this.emit(\"Group.myMembership\", this);\n};\n\n/**\n * Sets the 'inviter' property. This does not emit an event (the inviter\n * will only change when the user is revited / reinvited to a room),\n * so set this before setting myMembership.\n * @param {Object} inviter Infomation about who invited us to the room\n */\nGroup.prototype.setInviter = function (inviter) {\n this.inviter = inviter;\n};\n\nmodule.exports = Group;\n\n/**\n * Fires whenever a group's profile information is updated.\n * This means the 'name' and 'avatarUrl' properties.\n * @event module:client~MatrixClient#\"Group.profile\"\n * @param {Group} group The group whose profile was updated.\n * @example\n * matrixClient.on(\"Group.profile\", function(group){\n * var name = group.name;\n * });\n */\n\n/**\n * Fires whenever the logged in user's membership status of\n * the group is updated.\n * @event module:client~MatrixClient#\"Group.myMembership\"\n * @param {Group} group The group in which the user's membership changed\n * @example\n * matrixClient.on(\"Group.myMembership\", function(group){\n * var myMembership = group.myMembership;\n * });\n */\n//# sourceMappingURL=group.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SERVICE_TYPES = undefined;\n\nvar _freeze = require('babel-runtime/core-js/object/freeze');\n\nvar _freeze2 = _interopRequireDefault(_freeze);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar SERVICE_TYPES = exports.SERVICE_TYPES = (0, _freeze2.default)({\n IS: 'SERVICE_TYPE_IS', // An Identity Service\n IM: 'SERVICE_TYPE_IM' // An Integration Manager\n});\n//# sourceMappingURL=service-types.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AutoDiscovery = undefined;\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _logger = require('./logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _url = require('url');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Dev note: Auto discovery is part of the spec.\n// See: https://matrix.org/docs/spec/client_server/r0.4.0.html#server-discovery\n\n/**\n * Description for what an automatically discovered client configuration\n * would look like. Although this is a class, it is recommended that it\n * be treated as an interface definition rather than as a class.\n *\n * Additional properties than those defined here may be present, and\n * should follow the Java package naming convention.\n */\nvar DiscoveredClientConfig = // eslint-disable-line no-unused-vars\n// Dev note: this is basically a copy/paste of the .well-known response\n// object as defined in the spec. It does have additional information,\n// however. Overall, this exists to serve as a place for documentation\n// and not functionality.\n// See https://matrix.org/docs/spec/client_server/r0.4.0.html#get-well-known-matrix-client\n\nfunction DiscoveredClientConfig() {\n (0, _classCallCheck3.default)(this, DiscoveredClientConfig);\n\n /**\n * The homeserver configuration the client should use. This will\n * always be present on the object.\n * @type {{state: string, base_url: string}} The configuration.\n */\n this[\"m.homeserver\"] = {\n /**\n * The lookup result state. If this is anything other than\n * AutoDiscovery.SUCCESS then base_url may be falsey. Additionally,\n * if this is not AutoDiscovery.SUCCESS then the client should\n * assume the other properties in the client config (such as\n * the identity server configuration) are not valid.\n */\n state: AutoDiscovery.PROMPT,\n\n /**\n * If the state is AutoDiscovery.FAIL_ERROR or .FAIL_PROMPT\n * then this will contain a human-readable (English) message\n * for what went wrong. If the state is none of those previously\n * mentioned, this will be falsey.\n */\n error: \"Something went wrong\",\n\n /**\n * The base URL clients should use to talk to the homeserver,\n * particularly for the login process. May be falsey if the\n * state is not AutoDiscovery.SUCCESS.\n */\n base_url: \"https://matrix.org\"\n };\n\n /**\n * The identity server configuration the client should use. This\n * will always be present on teh object.\n * @type {{state: string, base_url: string}} The configuration.\n */\n this[\"m.identity_server\"] = {\n /**\n * The lookup result state. If this is anything other than\n * AutoDiscovery.SUCCESS then base_url may be falsey.\n */\n state: AutoDiscovery.PROMPT,\n\n /**\n * The base URL clients should use for interacting with the\n * identity server. May be falsey if the state is not\n * AutoDiscovery.SUCCESS.\n */\n base_url: \"https://vector.im\"\n };\n};\n\n/**\n * Utilities for automatically discovery resources, such as homeservers\n * for users to log in to.\n */\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/** @module auto-discovery */\n\nvar AutoDiscovery = exports.AutoDiscovery = function () {\n function AutoDiscovery() {\n (0, _classCallCheck3.default)(this, AutoDiscovery);\n }\n\n (0, _createClass3.default)(AutoDiscovery, null, [{\n key: 'fromDiscoveryConfig',\n\n\n /**\n * Validates and verifies client configuration information for purposes\n * of logging in. Such information includes the homeserver URL\n * and identity server URL the client would want. Additional details\n * may also be included, and will be transparently brought into the\n * response object unaltered.\n * @param {string} wellknown The configuration object itself, as returned\n * by the .well-known auto-discovery endpoint.\n * @return {Promise} Resolves to the verified\n * configuration, which may include error states. Rejects on unexpected\n * failure, not when verification fails.\n */\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(wellknown) {\n var clientConfig, hsUrl, hsVersions, isUrl, failingClientConfig, isResponse;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n // Step 1 is to get the config, which is provided to us here.\n\n // We default to an error state to make the first few checks easier to\n // write. We'll update the properties of this object over the duration\n // of this function.\n clientConfig = {\n \"m.homeserver\": {\n state: AutoDiscovery.FAIL_ERROR,\n error: AutoDiscovery.ERROR_INVALID,\n base_url: null\n },\n \"m.identity_server\": {\n // Technically, we don't have a problem with the identity server\n // config at this point.\n state: AutoDiscovery.PROMPT,\n error: null,\n base_url: null\n }\n };\n\n if (!(!wellknown || !wellknown[\"m.homeserver\"])) {\n _context.next = 6;\n break;\n }\n\n _logger2.default.error(\"No m.homeserver key in config\");\n\n clientConfig[\"m.homeserver\"].state = AutoDiscovery.FAIL_PROMPT;\n clientConfig[\"m.homeserver\"].error = AutoDiscovery.ERROR_INVALID;\n\n return _context.abrupt('return', _bluebird2.default.resolve(clientConfig));\n\n case 6:\n if (wellknown[\"m.homeserver\"][\"base_url\"]) {\n _context.next = 11;\n break;\n }\n\n _logger2.default.error(\"No m.homeserver base_url in config\");\n\n clientConfig[\"m.homeserver\"].state = AutoDiscovery.FAIL_PROMPT;\n clientConfig[\"m.homeserver\"].error = AutoDiscovery.ERROR_INVALID_HS_BASE_URL;\n\n return _context.abrupt('return', _bluebird2.default.resolve(clientConfig));\n\n case 11:\n\n // Step 2: Make sure the homeserver URL is valid *looking*. We'll make\n // sure it points to a homeserver in Step 3.\n hsUrl = this._sanitizeWellKnownUrl(wellknown[\"m.homeserver\"][\"base_url\"]);\n\n if (hsUrl) {\n _context.next = 16;\n break;\n }\n\n _logger2.default.error(\"Invalid base_url for m.homeserver\");\n clientConfig[\"m.homeserver\"].error = AutoDiscovery.ERROR_INVALID_HS_BASE_URL;\n return _context.abrupt('return', _bluebird2.default.resolve(clientConfig));\n\n case 16:\n _context.next = 18;\n return (0, _bluebird.resolve)(this._fetchWellKnownObject(hsUrl + '/_matrix/client/versions'));\n\n case 18:\n hsVersions = _context.sent;\n\n if (!(!hsVersions || !hsVersions.raw[\"versions\"])) {\n _context.next = 24;\n break;\n }\n\n _logger2.default.error(\"Invalid /versions response\");\n clientConfig[\"m.homeserver\"].error = AutoDiscovery.ERROR_INVALID_HOMESERVER;\n\n // Supply the base_url to the caller because they may be ignoring liveliness\n // errors, like this one.\n clientConfig[\"m.homeserver\"].base_url = hsUrl;\n\n return _context.abrupt('return', _bluebird2.default.resolve(clientConfig));\n\n case 24:\n\n // Step 4: Now that the homeserver looks valid, update our client config.\n clientConfig[\"m.homeserver\"] = {\n state: AutoDiscovery.SUCCESS,\n error: null,\n base_url: hsUrl\n };\n\n // Step 5: Try to pull out the identity server configuration\n isUrl = \"\";\n\n if (!wellknown[\"m.identity_server\"]) {\n _context.next = 41;\n break;\n }\n\n // We prepare a failing identity server response to save lines later\n // in this branch. Note that we also fail the homeserver check in the\n // object because according to the spec we're supposed to FAIL_ERROR\n // if *anything* goes wrong with the IS validation, including invalid\n // format. This means we're supposed to stop discovery completely.\n failingClientConfig = {\n \"m.homeserver\": {\n state: AutoDiscovery.FAIL_ERROR,\n error: AutoDiscovery.ERROR_INVALID_IS,\n\n // We'll provide the base_url that was previously valid for\n // debugging purposes.\n base_url: clientConfig[\"m.homeserver\"].base_url\n },\n \"m.identity_server\": {\n state: AutoDiscovery.FAIL_ERROR,\n error: AutoDiscovery.ERROR_INVALID_IS,\n base_url: null\n }\n };\n\n // Step 5a: Make sure the URL is valid *looking*. We'll make sure it\n // points to an identity server in Step 5b.\n\n isUrl = this._sanitizeWellKnownUrl(wellknown[\"m.identity_server\"][\"base_url\"]);\n\n if (isUrl) {\n _context.next = 33;\n break;\n }\n\n _logger2.default.error(\"Invalid base_url for m.identity_server\");\n failingClientConfig[\"m.identity_server\"].error = AutoDiscovery.ERROR_INVALID_IS_BASE_URL;\n return _context.abrupt('return', _bluebird2.default.resolve(failingClientConfig));\n\n case 33:\n _context.next = 35;\n return (0, _bluebird.resolve)(this._fetchWellKnownObject(isUrl + '/_matrix/identity/api/v1'));\n\n case 35:\n isResponse = _context.sent;\n\n if (!(!isResponse || !isResponse.raw || isResponse.action !== \"SUCCESS\")) {\n _context.next = 41;\n break;\n }\n\n _logger2.default.error(\"Invalid /api/v1 response\");\n failingClientConfig[\"m.identity_server\"].error = AutoDiscovery.ERROR_INVALID_IDENTITY_SERVER;\n\n // Supply the base_url to the caller because they may be ignoring\n // liveliness errors, like this one.\n failingClientConfig[\"m.identity_server\"].base_url = isUrl;\n\n return _context.abrupt('return', _bluebird2.default.resolve(failingClientConfig));\n\n case 41:\n\n // Step 6: Now that the identity server is valid, or never existed,\n // populate the IS section.\n if (isUrl && isUrl.length > 0) {\n clientConfig[\"m.identity_server\"] = {\n state: AutoDiscovery.SUCCESS,\n error: null,\n base_url: isUrl\n };\n }\n\n // Step 7: Copy any other keys directly into the clientConfig. This is for\n // things like custom configuration of services.\n (0, _keys2.default)(wellknown).map(function (k) {\n if (k === \"m.homeserver\" || k === \"m.identity_server\") {\n // Only copy selected parts of the config to avoid overwriting\n // properties computed by the validation logic above.\n var notProps = [\"error\", \"state\", \"base_url\"];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(wellknown[k])), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var prop = _step.value;\n\n if (notProps.includes(prop)) continue;\n clientConfig[k][prop] = wellknown[k][prop];\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n } else {\n // Just copy the whole thing over otherwise\n clientConfig[k] = wellknown[k];\n }\n });\n\n // Step 8: Give the config to the caller (finally)\n return _context.abrupt('return', _bluebird2.default.resolve(clientConfig));\n\n case 44:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function fromDiscoveryConfig(_x) {\n return _ref.apply(this, arguments);\n }\n\n return fromDiscoveryConfig;\n }()\n\n /**\n * Attempts to automatically discover client configuration information\n * prior to logging in. Such information includes the homeserver URL\n * and identity server URL the client would want. Additional details\n * may also be discovered, and will be transparently included in the\n * response object unaltered.\n * @param {string} domain The homeserver domain to perform discovery\n * on. For example, \"matrix.org\".\n * @return {Promise} Resolves to the discovered\n * configuration, which may include error states. Rejects on unexpected\n * failure, not when discovery fails.\n */\n\n }, {\n key: 'findClientConfig',\n value: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(domain) {\n var clientConfig, wellknown;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!(!domain || typeof domain !== \"string\" || domain.length === 0)) {\n _context2.next = 2;\n break;\n }\n\n throw new Error(\"'domain' must be a string of non-zero length\");\n\n case 2:\n\n // We use a .well-known lookup for all cases. According to the spec, we\n // can do other discovery mechanisms if we want such as custom lookups\n // however we won't bother with that here (mostly because the spec only\n // supports .well-known right now).\n //\n // By using .well-known, we need to ensure we at least pull out a URL\n // for the homeserver. We don't really need an identity server configuration\n // but will return one anyways (with state PROMPT) to make development\n // easier for clients. If we can't get a homeserver URL, all bets are\n // off on the rest of the config and we'll assume it is invalid too.\n\n // We default to an error state to make the first few checks easier to\n // write. We'll update the properties of this object over the duration\n // of this function.\n clientConfig = {\n \"m.homeserver\": {\n state: AutoDiscovery.FAIL_ERROR,\n error: AutoDiscovery.ERROR_INVALID,\n base_url: null\n },\n \"m.identity_server\": {\n // Technically, we don't have a problem with the identity server\n // config at this point.\n state: AutoDiscovery.PROMPT,\n error: null,\n base_url: null\n }\n };\n\n // Step 1: Actually request the .well-known JSON file and make sure it\n // at least has a homeserver definition.\n\n _context2.next = 5;\n return (0, _bluebird.resolve)(this._fetchWellKnownObject('https://' + domain + '/.well-known/matrix/client'));\n\n case 5:\n wellknown = _context2.sent;\n\n if (!(!wellknown || wellknown.action !== \"SUCCESS\")) {\n _context2.next = 11;\n break;\n }\n\n _logger2.default.error(\"No response or error when parsing .well-known\");\n if (wellknown.reason) _logger2.default.error(wellknown.reason);\n if (wellknown.action === \"IGNORE\") {\n clientConfig[\"m.homeserver\"] = {\n state: AutoDiscovery.PROMPT,\n error: null,\n base_url: null\n };\n } else {\n // this can only ever be FAIL_PROMPT at this point.\n clientConfig[\"m.homeserver\"].state = AutoDiscovery.FAIL_PROMPT;\n clientConfig[\"m.homeserver\"].error = AutoDiscovery.ERROR_INVALID;\n }\n return _context2.abrupt('return', _bluebird2.default.resolve(clientConfig));\n\n case 11:\n return _context2.abrupt('return', AutoDiscovery.fromDiscoveryConfig(wellknown.raw));\n\n case 12:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function findClientConfig(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return findClientConfig;\n }()\n\n /**\n * Gets the raw discovery client configuration for the given domain name.\n * Should only be used if there's no validation to be done on the resulting\n * object, otherwise use findClientConfig().\n * @param {string} domain The domain to get the client config for.\n * @returns {Promise} Resolves to the domain's client config. Can\n * be an empty object.\n */\n\n }, {\n key: 'getRawClientConfig',\n value: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(domain) {\n var response;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (!(!domain || typeof domain !== \"string\" || domain.length === 0)) {\n _context3.next = 2;\n break;\n }\n\n throw new Error(\"'domain' must be a string of non-zero length\");\n\n case 2:\n _context3.next = 4;\n return (0, _bluebird.resolve)(this._fetchWellKnownObject('https://' + domain + '/.well-known/matrix/client'));\n\n case 4:\n response = _context3.sent;\n\n if (response) {\n _context3.next = 7;\n break;\n }\n\n return _context3.abrupt('return', {});\n\n case 7:\n return _context3.abrupt('return', response.raw || {});\n\n case 8:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function getRawClientConfig(_x3) {\n return _ref3.apply(this, arguments);\n }\n\n return getRawClientConfig;\n }()\n\n /**\n * Sanitizes a given URL to ensure it is either an HTTP or HTTP URL and\n * is suitable for the requirements laid out by .well-known auto discovery.\n * If valid, the URL will also be stripped of any trailing slashes.\n * @param {string} url The potentially invalid URL to sanitize.\n * @return {string|boolean} The sanitized URL or a falsey value if the URL is invalid.\n * @private\n */\n\n }, {\n key: '_sanitizeWellKnownUrl',\n value: function _sanitizeWellKnownUrl(url) {\n if (!url) return false;\n\n try {\n // We have to try and parse the URL using the NodeJS URL\n // library if we're on NodeJS and use the browser's URL\n // library when we're in a browser. To accomplish this, we\n // try the NodeJS version first and fall back to the browser.\n var parsed = null;\n try {\n if (_url.URL) parsed = new _url.URL(url);else parsed = new URL(url);\n } catch (e) {\n parsed = new URL(url);\n }\n\n if (!parsed || !parsed.hostname) return false;\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") return false;\n\n var port = parsed.port ? ':' + parsed.port : \"\";\n var path = parsed.pathname ? parsed.pathname : \"\";\n var saferUrl = parsed.protocol + '//' + parsed.hostname + port + path;\n if (saferUrl.endsWith(\"/\")) {\n saferUrl = saferUrl.substring(0, saferUrl.length - 1);\n }\n return saferUrl;\n } catch (e) {\n _logger2.default.error(e);\n return false;\n }\n }\n\n /**\n * Fetches a JSON object from a given URL, as expected by all .well-known\n * related lookups. If the server gives a 404 then the `action` will be\n * IGNORE. If the server returns something that isn't JSON, the `action`\n * will be FAIL_PROMPT. For any other failure the `action` will be FAIL_PROMPT.\n *\n * The returned object will be a result of the call in object form with\n * the following properties:\n * raw: The JSON object returned by the server.\n * action: One of SUCCESS, IGNORE, or FAIL_PROMPT.\n * reason: Relatively human readable description of what went wrong.\n * error: The actual Error, if one exists.\n * @param {string} url The URL to fetch a JSON object from.\n * @return {Promise} Resolves to the returned state.\n * @private\n */\n\n }, {\n key: '_fetchWellKnownObject',\n value: function () {\n var _ref4 = (0, _bluebird.method)(function (url) {\n return new _bluebird2.default(function (resolve, reject) {\n var request = require(\"./matrix\").getRequest();\n if (!request) throw new Error(\"No request library available\");\n request({ method: \"GET\", uri: url, timeout: 5000 }, function (err, response, body) {\n if (err || response.statusCode < 200 || response.statusCode >= 300) {\n var action = \"FAIL_PROMPT\";\n var reason = (err ? err.message : null) || \"General failure\";\n if (response.statusCode === 404) {\n action = \"IGNORE\";\n reason = AutoDiscovery.ERROR_MISSING_WELLKNOWN;\n }\n resolve({ raw: {}, action: action, reason: reason, error: err });\n return;\n }\n\n try {\n resolve({ raw: JSON.parse(body), action: \"SUCCESS\" });\n } catch (e) {\n var _reason = AutoDiscovery.ERROR_INVALID;\n if (e.name === \"SyntaxError\") {\n _reason = AutoDiscovery.ERROR_INVALID_JSON;\n }\n resolve({\n raw: {},\n action: \"FAIL_PROMPT\",\n reason: _reason,\n error: e\n });\n }\n });\n });\n });\n\n function _fetchWellKnownObject(_x4) {\n return _ref4.apply(this, arguments);\n }\n\n return _fetchWellKnownObject;\n }()\n }, {\n key: 'ERROR_INVALID',\n\n // Dev note: the constants defined here are related to but not\n // exactly the same as those in the spec. This is to hopefully\n // translate the meaning of the states in the spec, but also\n // support our own if needed.\n\n get: function get() {\n return \"Invalid homeserver discovery response\";\n }\n }, {\n key: 'ERROR_GENERIC_FAILURE',\n get: function get() {\n return \"Failed to get autodiscovery configuration from server\";\n }\n }, {\n key: 'ERROR_INVALID_HS_BASE_URL',\n get: function get() {\n return \"Invalid base_url for m.homeserver\";\n }\n }, {\n key: 'ERROR_INVALID_HOMESERVER',\n get: function get() {\n return \"Homeserver URL does not appear to be a valid Matrix homeserver\";\n }\n }, {\n key: 'ERROR_INVALID_IS_BASE_URL',\n get: function get() {\n return \"Invalid base_url for m.identity_server\";\n }\n }, {\n key: 'ERROR_INVALID_IDENTITY_SERVER',\n get: function get() {\n return \"Identity server URL does not appear to be a valid identity server\";\n }\n }, {\n key: 'ERROR_INVALID_IS',\n get: function get() {\n return \"Invalid identity server discovery response\";\n }\n }, {\n key: 'ERROR_MISSING_WELLKNOWN',\n get: function get() {\n return \"No .well-known JSON file found\";\n }\n }, {\n key: 'ERROR_INVALID_JSON',\n get: function get() {\n return \"Invalid JSON\";\n }\n }, {\n key: 'ALL_ERRORS',\n get: function get() {\n return [AutoDiscovery.ERROR_INVALID, AutoDiscovery.ERROR_GENERIC_FAILURE, AutoDiscovery.ERROR_INVALID_HS_BASE_URL, AutoDiscovery.ERROR_INVALID_HOMESERVER, AutoDiscovery.ERROR_INVALID_IS_BASE_URL, AutoDiscovery.ERROR_INVALID_IDENTITY_SERVER, AutoDiscovery.ERROR_INVALID_IS, AutoDiscovery.ERROR_MISSING_WELLKNOWN, AutoDiscovery.ERROR_INVALID_JSON];\n }\n\n /**\n * The auto discovery failed. The client is expected to communicate\n * the error to the user and refuse logging in.\n * @return {string}\n * @constructor\n */\n\n }, {\n key: 'FAIL_ERROR',\n get: function get() {\n return \"FAIL_ERROR\";\n }\n\n /**\n * The auto discovery failed, however the client may still recover\n * from the problem. The client is recommended to that the same\n * action it would for PROMPT while also warning the user about\n * what went wrong. The client may also treat this the same as\n * a FAIL_ERROR state.\n * @return {string}\n * @constructor\n */\n\n }, {\n key: 'FAIL_PROMPT',\n get: function get() {\n return \"FAIL_PROMPT\";\n }\n\n /**\n * The auto discovery didn't fail but did not find anything of\n * interest. The client is expected to prompt the user for more\n * information, or fail if it prefers.\n * @return {string}\n * @constructor\n */\n\n }, {\n key: 'PROMPT',\n get: function get() {\n return \"PROMPT\";\n }\n\n /**\n * The auto discovery was successful.\n * @return {string}\n * @constructor\n */\n\n }, {\n key: 'SUCCESS',\n get: function get() {\n return \"SUCCESS\";\n }\n }]);\n return AutoDiscovery;\n}();\n//# sourceMappingURL=autodiscovery.js.map","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar util = require('./utils');\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = util.assign(\n {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n }\n },\n Format\n);\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _assign = require(\"babel-runtime/core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nexports.default = createMatrixClient;\n\nvar _matrixJsSdk = require(\"matrix-js-sdk\");\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar localStorage = window.localStorage;\n\n// just *accessing* indexedDB throws an exception in firefox with\n// indexeddb disabled.\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar indexedDB = void 0;\ntry {\n indexedDB = window.indexedDB;\n} catch (e) {}\n\n/**\n * Create a new matrix client, with the persistent stores set up appropriately\n * (using localstorage/indexeddb, etc)\n *\n * @param {Object} opts options to pass to Matrix.createClient. This will be\n * extended with `sessionStore` and `store` members.\n *\n * @property {string} indexedDbWorkerScript Optional URL for a web worker script\n * for IndexedDB store operations. By default, indexeddb ops are done on\n * the main thread.\n *\n * @returns {MatrixClient} the newly-created MatrixClient\n */\nfunction createMatrixClient(opts) {\n var storeOpts = {\n useAuthorizationHeader: true\n };\n\n if (indexedDB && localStorage) {\n storeOpts.store = new _matrixJsSdk2.default.IndexedDBStore({\n indexedDB: indexedDB,\n dbName: \"riot-web-sync\",\n localStorage: localStorage,\n workerScript: createMatrixClient.indexedDbWorkerScript\n });\n }\n\n if (localStorage) {\n storeOpts.sessionStore = new _matrixJsSdk2.default.WebStorageSessionStore(localStorage);\n }\n\n if (indexedDB) {\n storeOpts.cryptoStore = new _matrixJsSdk2.default.IndexedDBCryptoStore(indexedDB, \"matrix-js-sdk:crypto\");\n }\n\n opts = (0, _assign2.default)(storeOpts, opts);\n\n return _matrixJsSdk2.default.createClient(opts);\n}\n\ncreateMatrixClient.indexedDbWorkerScript = null;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=createMatrixClient.js.map","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb, null, ret) },\n function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","\"use strict\";\n\nmodule.exports = {\n __locale: \"en\",\n days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n abbreviated_days: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n abbreviated_months: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n am: 'AM',\n pm: 'PM'\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nexports.levelRoleMap = levelRoleMap;\nexports.textualPowerLevel = textualPowerLevel;\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction levelRoleMap(usersDefault) {\n var _ref;\n\n return _ref = {\n undefined: (0, _languageHandler._t)('Default'),\n 0: (0, _languageHandler._t)('Restricted')\n }, (0, _defineProperty3.default)(_ref, usersDefault, (0, _languageHandler._t)('Default')), (0, _defineProperty3.default)(_ref, 50, (0, _languageHandler._t)('Moderator')), (0, _defineProperty3.default)(_ref, 100, (0, _languageHandler._t)('Admin')), _ref;\n} /*\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nfunction textualPowerLevel(level, usersDefault) {\n var LEVEL_ROLE_MAP = levelRoleMap(usersDefault);\n if (LEVEL_ROLE_MAP[level]) {\n return LEVEL_ROLE_MAP[level] + (level !== undefined ? ' (' + level + ')' : ' (' + usersDefault + ')');\n } else {\n return level;\n }\n}\n//# sourceMappingURL=Roles.js.map","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","module.exports = \"img/chevron-left.82128ee.png\";","module.exports = \"img/fileicon.a04644a.png\";","module.exports = \"img/files.007db3a.png\";","module.exports = \"img/flags/AD.b20917e.png\";","module.exports = \"img/flags/AE.4ff42ac.png\";","module.exports = \"img/flags/AF.e369451.png\";","module.exports = \"img/flags/AG.8ffe9c5.png\";","module.exports = \"img/flags/AI.56a842f.png\";","module.exports = \"img/flags/AL.5420556.png\";","module.exports = \"img/flags/AM.4ea6eb5.png\";","module.exports = \"img/flags/AO.29ccc70.png\";","module.exports = \"img/flags/AQ.a3f4d16.png\";","module.exports = \"img/flags/AR.461d337.png\";","module.exports = \"img/flags/AS.bff1825.png\";","module.exports = \"img/flags/AT.b4d4f35.png\";","module.exports = \"img/flags/AU.e8df0e1.png\";","module.exports = \"img/flags/AW.f35b876.png\";","module.exports = \"img/flags/AX.f8dce94.png\";","module.exports = \"img/flags/AZ.97a37a9.png\";","module.exports = \"img/flags/BA.252eb01.png\";","module.exports = \"img/flags/BB.c7a0d2e.png\";","module.exports = \"img/flags/BD.188e1ec.png\";","module.exports = \"img/flags/BE.09bbba7.png\";","module.exports = \"img/flags/BF.82e7a1d.png\";","module.exports = \"img/flags/BG.cf8a030.png\";","module.exports = \"img/flags/BH.29d16f5.png\";","module.exports = \"img/flags/BI.9d7f420.png\";","module.exports = \"img/flags/BJ.7bd9d4c.png\";","module.exports = \"img/flags/BL.eb77708.png\";","module.exports = \"img/flags/BM.840a1f4.png\";","module.exports = \"img/flags/BN.fec59b5.png\";","module.exports = \"img/flags/BO.64d89dc.png\";","module.exports = \"img/flags/BQ.f9db532.png\";","module.exports = \"img/flags/BR.8e1d47b.png\";","module.exports = \"img/flags/BS.8699015.png\";","module.exports = \"img/flags/BT.e0697c7.png\";","module.exports = \"img/flags/BV.f24fdc2.png\";","module.exports = \"img/flags/BW.9338789.png\";","module.exports = \"img/flags/BY.d4b7a07.png\";","module.exports = \"img/flags/BZ.4730087.png\";","module.exports = \"img/flags/CA.17ef24f.png\";","module.exports = \"img/flags/CC.9b5f975.png\";","module.exports = \"img/flags/CD.3f8ba92.png\";","module.exports = \"img/flags/CF.26f8c8a.png\";","module.exports = \"img/flags/CG.2308cc7.png\";","module.exports = \"img/flags/CH.051b276.png\";","module.exports = \"img/flags/CI.f0a4a32.png\";","module.exports = \"img/flags/CK.de5a831.png\";","module.exports = \"img/flags/CL.7657974.png\";","module.exports = \"img/flags/CM.b53a3f5.png\";","module.exports = \"img/flags/CN.2564087.png\";","module.exports = \"img/flags/CO.84ceb1d.png\";","module.exports = \"img/flags/CR.5fb2f06.png\";","module.exports = \"img/flags/CU.9b6e992.png\";","module.exports = \"img/flags/CV.ae86343.png\";","module.exports = \"img/flags/CW.cb93a9a.png\";","module.exports = \"img/flags/CX.3290541.png\";","module.exports = \"img/flags/CY.a52dad2.png\";","module.exports = \"img/flags/CZ.f8e07d2.png\";","module.exports = \"img/flags/DE.e4790ff.png\";","module.exports = \"img/flags/DJ.9fdcbac.png\";","module.exports = \"img/flags/DK.a30053a.png\";","module.exports = \"img/flags/DM.31eb095.png\";","module.exports = \"img/flags/DO.5dd522e.png\";","module.exports = \"img/flags/DZ.e03620b.png\";","module.exports = \"img/flags/EC.f44b301.png\";","module.exports = \"img/flags/EE.c17ece9.png\";","module.exports = \"img/flags/EG.d92a29b.png\";","module.exports = \"img/flags/EH.821c7e1.png\";","module.exports = \"img/flags/ER.98c02cd.png\";","module.exports = \"img/flags/ES.10d63db.png\";","module.exports = \"img/flags/ET.d8eeaef.png\";","module.exports = \"img/flags/FI.4fb83a3.png\";","module.exports = \"img/flags/FJ.b7f1d1e.png\";","module.exports = \"img/flags/FK.69a3418.png\";","module.exports = \"img/flags/FM.44f247c.png\";","module.exports = \"img/flags/FO.5b948c0.png\";","module.exports = \"img/flags/FR.eb77708.png\";","module.exports = \"img/flags/GA.2d6ac8a.png\";","module.exports = \"img/flags/GB.5a4fec2.png\";","module.exports = \"img/flags/GD.903fe66.png\";","module.exports = \"img/flags/GE.93fd053.png\";","module.exports = \"img/flags/GF.f9cd69e.png\";","module.exports = \"img/flags/GG.4ab8b43.png\";","module.exports = \"img/flags/GH.13ac7cc.png\";","module.exports = \"img/flags/GI.fea07b9.png\";","module.exports = \"img/flags/GL.0581b2c.png\";","module.exports = \"img/flags/GM.5181e38.png\";","module.exports = \"img/flags/GN.81c74d2.png\";","module.exports = \"img/flags/GP.b0fe617.png\";","module.exports = \"img/flags/GQ.08498f9.png\";","module.exports = \"img/flags/GR.f653316.png\";","module.exports = \"img/flags/GS.6e92918.png\";","module.exports = \"img/flags/GT.55c941d.png\";","module.exports = \"img/flags/GU.192f08e.png\";","module.exports = \"img/flags/GW.c92da4e.png\";","module.exports = \"img/flags/GY.1313a7c.png\";","module.exports = \"img/flags/HK.c14d3f7.png\";","module.exports = \"img/flags/HM.e8df0e1.png\";","module.exports = \"img/flags/HN.bdbdaf8.png\";","module.exports = \"img/flags/HR.baf1363.png\";","module.exports = \"img/flags/HT.ad8e6fd.png\";","module.exports = \"img/flags/HU.145d10a.png\";","module.exports = \"img/flags/ID.b0642a8.png\";","module.exports = \"img/flags/IE.a22997c.png\";","module.exports = \"img/flags/IL.b71a8cf.png\";","module.exports = \"img/flags/IM.f912b7a.png\";","module.exports = \"img/flags/IN.5066387.png\";","module.exports = \"img/flags/IO.1498d85.png\";","module.exports = \"img/flags/IQ.793d689.png\";","module.exports = \"img/flags/IR.28848ac.png\";","module.exports = \"img/flags/IS.e6aa918.png\";","module.exports = \"img/flags/IT.36385a9.png\";","module.exports = \"img/flags/JE.cb6a51d.png\";","module.exports = \"img/flags/JM.f82c626.png\";","module.exports = \"img/flags/JO.f226a55.png\";","module.exports = \"img/flags/JP.5702fe2.png\";","module.exports = \"img/flags/KE.bc421f0.png\";","module.exports = \"img/flags/KG.6f69b51.png\";","module.exports = \"img/flags/KH.5989492.png\";","module.exports = \"img/flags/KI.b89fedc.png\";","module.exports = \"img/flags/KM.69cf119.png\";","module.exports = \"img/flags/KN.13ddd2f.png\";","module.exports = \"img/flags/KP.3bd86b3.png\";","module.exports = \"img/flags/KR.7e83001.png\";","module.exports = \"img/flags/KW.8ec6e2c.png\";","module.exports = \"img/flags/KY.ec197b2.png\";","module.exports = \"img/flags/KZ.c105dab.png\";","module.exports = \"img/flags/LA.2856a6d.png\";","module.exports = \"img/flags/LB.18e49e9.png\";","module.exports = \"img/flags/LC.5f0dc5a.png\";","module.exports = \"img/flags/LI.b568bc0.png\";","module.exports = \"img/flags/LK.8205129.png\";","module.exports = \"img/flags/LR.cd565a5.png\";","module.exports = \"img/flags/LS.39647ea.png\";","module.exports = \"img/flags/LT.80eb968.png\";","module.exports = \"img/flags/LU.dd87418.png\";","module.exports = \"img/flags/LV.7ceac79.png\";","module.exports = \"img/flags/LY.1ddc328.png\";","module.exports = \"img/flags/MA.8dec967.png\";","module.exports = \"img/flags/MC.396cd4a.png\";","module.exports = \"img/flags/MD.1abb1cc.png\";","module.exports = \"img/flags/ME.7054be1.png\";","module.exports = \"img/flags/MF.eb77708.png\";","module.exports = \"img/flags/MG.729aba3.png\";","module.exports = \"img/flags/MH.bb4b9d4.png\";","module.exports = \"img/flags/MK.1d50659.png\";","module.exports = \"img/flags/ML.6217ef5.png\";","module.exports = \"img/flags/MM.37c1518.png\";","module.exports = \"img/flags/MN.82de49b.png\";","module.exports = \"img/flags/MO.d4eac94.png\";","module.exports = \"img/flags/MP.9961559.png\";","module.exports = \"img/flags/MQ.8d85548.png\";","module.exports = \"img/flags/MR.b2b167b.png\";","module.exports = \"img/flags/MS.700755b.png\";","module.exports = \"img/flags/MT.32eba2a.png\";","module.exports = \"img/flags/MU.3b57dcb.png\";","module.exports = \"img/flags/MV.c8960c1.png\";","module.exports = \"img/flags/MW.ce384b7.png\";","module.exports = \"img/flags/MX.5ced984.png\";","module.exports = \"img/flags/MY.48c1a0c.png\";","module.exports = \"img/flags/MZ.1ba782c.png\";","module.exports = \"img/flags/NA.72c1ee9.png\";","module.exports = \"img/flags/NC.8482a61.png\";","module.exports = \"img/flags/NE.29cd5f6.png\";","module.exports = \"img/flags/NF.f036025.png\";","module.exports = \"img/flags/NG.c17ec02.png\";","module.exports = \"img/flags/NI.49391ad.png\";","module.exports = \"img/flags/NL.f9db532.png\";","module.exports = \"img/flags/NO.f24fdc2.png\";","module.exports = \"img/flags/NP.e8691fb.png\";","module.exports = \"img/flags/NR.628ddba.png\";","module.exports = \"img/flags/NU.9a77dd2.png\";","module.exports = \"img/flags/NZ.c045ba5.png\";","module.exports = \"img/flags/OM.9bcb720.png\";","module.exports = \"img/flags/PA.ec2529e.png\";","module.exports = \"img/flags/PE.ee275ee.png\";","module.exports = \"img/flags/PF.856b112.png\";","module.exports = \"img/flags/PG.f435b0c.png\";","module.exports = \"img/flags/PH.f787e5e.png\";","module.exports = \"img/flags/PK.721398c.png\";","module.exports = \"img/flags/PL.f6e5ef1.png\";","module.exports = \"img/flags/PM.20673e4.png\";","module.exports = \"img/flags/PN.75cf41b.png\";","module.exports = \"img/flags/PR.a206df0.png\";","module.exports = \"img/flags/PS.575d2cd.png\";","module.exports = \"img/flags/PT.3b96200.png\";","module.exports = \"img/flags/PW.e1f0248.png\";","module.exports = \"img/flags/PY.d2261c0.png\";","module.exports = \"img/flags/QA.8730854.png\";","module.exports = \"img/flags/RE.eb77708.png\";","module.exports = \"img/flags/RO.aa9d7ac.png\";","module.exports = \"img/flags/RS.78abc75.png\";","module.exports = \"img/flags/RU.c95849b.png\";","module.exports = \"img/flags/RW.7ade346.png\";","module.exports = \"img/flags/SA.b02ee99.png\";","module.exports = \"img/flags/SB.5550c69.png\";","module.exports = \"img/flags/SC.efb836f.png\";","module.exports = \"img/flags/SD.38ae49b.png\";","module.exports = \"img/flags/SE.84e7b45.png\";","module.exports = \"img/flags/SG.97e190b.png\";","module.exports = \"img/flags/SH.1f71963.png\";","module.exports = \"img/flags/SI.ff4013b.png\";","module.exports = \"img/flags/SJ.f24fdc2.png\";","module.exports = \"img/flags/SK.af77361.png\";","module.exports = \"img/flags/SL.ff06606.png\";","module.exports = \"img/flags/SM.895a723.png\";","module.exports = \"img/flags/SN.aec5b10.png\";","module.exports = \"img/flags/SO.11ac77a.png\";","module.exports = \"img/flags/SR.3929da9.png\";","module.exports = \"img/flags/SS.ba2b908.png\";","module.exports = \"img/flags/ST.0cf97a4.png\";","module.exports = \"img/flags/SV.155e6a7.png\";","module.exports = \"img/flags/SX.a959e40.png\";","module.exports = \"img/flags/SY.200f38a.png\";","module.exports = \"img/flags/SZ.a3a45f3.png\";","module.exports = \"img/flags/TC.dea8f01.png\";","module.exports = \"img/flags/TD.4b6c185.png\";","module.exports = \"img/flags/TF.eb77708.png\";","module.exports = \"img/flags/TG.4278556.png\";","module.exports = \"img/flags/TH.7d11409.png\";","module.exports = \"img/flags/TJ.b2303cc.png\";","module.exports = \"img/flags/TK.09871f8.png\";","module.exports = \"img/flags/TL.6b8115b.png\";","module.exports = \"img/flags/TM.719b031.png\";","module.exports = \"img/flags/TN.58b2065.png\";","module.exports = \"img/flags/TO.bded0d1.png\";","module.exports = \"img/flags/TR.ebdfbab.png\";","module.exports = \"img/flags/TT.cf3c1a5.png\";","module.exports = \"img/flags/TV.cd17b9f.png\";","module.exports = \"img/flags/TW.946fea0.png\";","module.exports = \"img/flags/TZ.8ccab05.png\";","module.exports = \"img/flags/UA.b463046.png\";","module.exports = \"img/flags/UG.3b301f8.png\";","module.exports = \"img/flags/US.982e6f9.png\";","module.exports = \"img/flags/UY.12e4301.png\";","module.exports = \"img/flags/UZ.cadf94d.png\";","module.exports = \"img/flags/VA.345a700.png\";","module.exports = \"img/flags/VC.9434d08.png\";","module.exports = \"img/flags/VE.1319ff1.png\";","module.exports = \"img/flags/VG.6899896.png\";","module.exports = \"img/flags/VI.3d149d6.png\";","module.exports = \"img/flags/VN.ea2caec.png\";","module.exports = \"img/flags/VU.61e90ff.png\";","module.exports = \"img/flags/WF.12bfd41.png\";","module.exports = \"img/flags/WS.bf46e06.png\";","module.exports = \"img/flags/YE.3a76dc4.png\";","module.exports = \"img/flags/YT.6a918cf.png\";","module.exports = \"img/flags/ZA.1ae8fe0.png\";","module.exports = \"img/flags/ZM.12e45bf.png\";","module.exports = \"img/flags/ZW.e64ce22.png\";","module.exports = \"img/social/email-1.1134895.png\";","module.exports = \"img/social/facebook.d547f79.png\";","module.exports = \"img/social/linkedin.ab157f6.png\";","module.exports = \"img/social/reddit.eeab8e6.png\";","module.exports = \"img/social/twitter-2.6517b36.png\";","module.exports = \"img/stickerpack-placeholder.9c54c13.png\";","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.checkConsistency = undefined;\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar checkConsistency = exports.checkConsistency = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var dataInLocalStorage, dataInCryptoStore, cryptoInited, healthy, results, _results;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n log(\"Checking storage consistency\");\n log('Local storage supported? ' + !!localStorage);\n log('IndexedDB supported? ' + !!indexedDB);\n\n dataInLocalStorage = false;\n dataInCryptoStore = false;\n cryptoInited = false;\n healthy = true;\n\n\n if (localStorage) {\n dataInLocalStorage = localStorage.length > 0;\n log('Local storage contains data? ' + dataInLocalStorage);\n\n cryptoInited = localStorage.getItem(\"mx_crypto_initialised\");\n log('Crypto initialised? ' + cryptoInited);\n } else {\n healthy = false;\n error(\"Local storage cannot be used on this browser\");\n track(\"Local storage disabled\");\n }\n\n if (!(indexedDB && localStorage)) {\n _context.next = 15;\n break;\n }\n\n _context.next = 11;\n return (0, _bluebird.resolve)(checkSyncStore());\n\n case 11:\n results = _context.sent;\n\n if (!results.healthy) {\n healthy = false;\n }\n _context.next = 18;\n break;\n\n case 15:\n healthy = false;\n error(\"Sync store cannot be used on this browser\");\n track(\"Sync store disabled\");\n\n case 18:\n if (!indexedDB) {\n _context.next = 26;\n break;\n }\n\n _context.next = 21;\n return (0, _bluebird.resolve)(checkCryptoStore());\n\n case 21:\n _results = _context.sent;\n\n dataInCryptoStore = _results.exists;\n if (!_results.healthy) {\n healthy = false;\n }\n _context.next = 29;\n break;\n\n case 26:\n healthy = false;\n error(\"Crypto store cannot be used on this browser\");\n track(\"Crypto store disabled\");\n\n case 29:\n\n if (dataInLocalStorage && cryptoInited && !dataInCryptoStore) {\n healthy = false;\n error(\"Data exists in local storage and crypto is marked as initialised \" + \" but no data found in crypto store. \" + \"IndexedDB storage has likely been evicted by the browser!\");\n track(\"Crypto store evicted\");\n }\n\n if (healthy) {\n log(\"Storage consistency checks passed\");\n track(\"Consistency checks passed\");\n } else {\n error(\"Storage consistency checks failed\");\n track(\"Consistency checks failed\");\n }\n\n return _context.abrupt('return', {\n dataInLocalStorage: dataInLocalStorage,\n dataInCryptoStore: dataInCryptoStore,\n cryptoInited: cryptoInited,\n healthy: healthy\n });\n\n case 32:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function checkConsistency() {\n return _ref.apply(this, arguments);\n };\n}();\n\nvar checkSyncStore = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var exists;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n exists = false;\n _context2.prev = 1;\n _context2.next = 4;\n return (0, _bluebird.resolve)(_matrixJsSdk2.default.IndexedDBStore.exists(indexedDB, SYNC_STORE_NAME));\n\n case 4:\n exists = _context2.sent;\n\n log('Sync store using IndexedDB contains data? ' + exists);\n return _context2.abrupt('return', { exists: exists, healthy: true });\n\n case 9:\n _context2.prev = 9;\n _context2.t0 = _context2['catch'](1);\n\n error(\"Sync store using IndexedDB inaccessible\", _context2.t0);\n track(\"Sync store using IndexedDB inaccessible\");\n\n case 13:\n log(\"Sync store using memory only\");\n return _context2.abrupt('return', { exists: exists, healthy: false });\n\n case 15:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this, [[1, 9]]);\n }));\n\n return function checkSyncStore() {\n return _ref2.apply(this, arguments);\n };\n}();\n\nvar checkCryptoStore = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var exists;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n exists = false;\n _context3.prev = 1;\n _context3.next = 4;\n return (0, _bluebird.resolve)(_matrixJsSdk2.default.IndexedDBCryptoStore.exists(indexedDB, CRYPTO_STORE_NAME));\n\n case 4:\n exists = _context3.sent;\n\n log('Crypto store using IndexedDB contains data? ' + exists);\n return _context3.abrupt('return', { exists: exists, healthy: true });\n\n case 9:\n _context3.prev = 9;\n _context3.t0 = _context3['catch'](1);\n\n error(\"Crypto store using IndexedDB inaccessible\", _context3.t0);\n track(\"Crypto store using IndexedDB inaccessible\");\n\n case 13:\n _context3.prev = 13;\n _context3.next = 16;\n return (0, _bluebird.resolve)(_localStorageCryptoStore2.default.exists(localStorage));\n\n case 16:\n exists = _context3.sent;\n\n log('Crypto store using local storage contains data? ' + exists);\n return _context3.abrupt('return', { exists: exists, healthy: true });\n\n case 21:\n _context3.prev = 21;\n _context3.t1 = _context3['catch'](13);\n\n error(\"Crypto store using local storage inaccessible\", _context3.t1);\n track(\"Crypto store using local storage inaccessible\");\n\n case 25:\n log(\"Crypto store using memory only\");\n return _context3.abrupt('return', { exists: exists, healthy: false });\n\n case 27:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this, [[1, 9], [13, 21]]);\n }));\n\n return function checkCryptoStore() {\n return _ref3.apply(this, arguments);\n };\n}();\n\nexports.trackStores = trackStores;\nexports.setCryptoInitialised = setCryptoInitialised;\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nvar _localStorageCryptoStore = require('matrix-js-sdk/lib/crypto/store/localStorage-crypto-store');\n\nvar _localStorageCryptoStore2 = _interopRequireDefault(_localStorageCryptoStore);\n\nvar _Analytics = require('../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar localStorage = window.localStorage;\n\n// just *accessing* indexedDB throws an exception in firefox with\n// indexeddb disabled.\n/*\nCopyright 2019 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar indexedDB = void 0;\ntry {\n indexedDB = window.indexedDB;\n} catch (e) {}\n\n// The JS SDK will add a prefix of \"matrix-js-sdk:\" to the sync store name.\nvar SYNC_STORE_NAME = \"riot-web-sync\";\nvar CRYPTO_STORE_NAME = \"matrix-js-sdk:crypto\";\n\nfunction log(msg) {\n console.log('StorageManager: ' + msg);\n}\n\nfunction error(msg) {\n console.error('StorageManager: ' + msg);\n}\n\nfunction track(action) {\n _Analytics2.default.trackEvent(\"StorageManager\", action);\n}\n\nfunction trackStores(client) {\n if (client.store && client.store.on) {\n client.store.on(\"degraded\", function () {\n track(\"Sync store using IndexedDB degraded to memory\");\n });\n }\n}\n\n/**\n * Sets whether crypto has ever been successfully\n * initialised on this client.\n * StorageManager uses this to determine whether indexeddb\n * has been wiped by the browser: this flag is saved to localStorage\n * and if it is true and not crypto data is found, an error is\n * presented to the user.\n *\n * @param {bool} cryptoInited True if crypto has been set up\n */\nfunction setCryptoInitialised(cryptoInited) {\n localStorage.setItem(\"mx_crypto_initialised\", cryptoInited);\n}\n//# sourceMappingURL=StorageManager.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.IntegrationManagerInstance = exports.KIND_HOMESERVER = exports.KIND_CONFIG = exports.KIND_ACCOUNT = undefined;\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _ScalarAuthClient = require(\"../ScalarAuthClient\");\n\nvar _ScalarAuthClient2 = _interopRequireDefault(_ScalarAuthClient);\n\nvar _index = require(\"../index\");\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Terms = require(\"../Terms\");\n\nvar _Modal = require(\"../Modal\");\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _url = require(\"url\");\n\nvar _url2 = _interopRequireDefault(_url);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar KIND_ACCOUNT = exports.KIND_ACCOUNT = \"account\"; /*\n Copyright 2019 The Matrix.org Foundation C.I.C.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar KIND_CONFIG = exports.KIND_CONFIG = \"config\";\nvar KIND_HOMESERVER = exports.KIND_HOMESERVER = \"homeserver\";\n\nvar IntegrationManagerInstance = exports.IntegrationManagerInstance = function () {\n // only applicable in some cases\n\n function IntegrationManagerInstance(kind, apiUrl, uiUrl) {\n (0, _classCallCheck3.default)(this, IntegrationManagerInstance);\n\n this.kind = kind;\n this.apiUrl = apiUrl;\n this.uiUrl = uiUrl;\n\n // Per the spec: UI URL is optional.\n if (!this.uiUrl) this.uiUrl = this.apiUrl;\n }\n\n (0, _createClass3.default)(IntegrationManagerInstance, [{\n key: \"getScalarClient\",\n value: function getScalarClient() {\n return new _ScalarAuthClient2.default(this.apiUrl, this.uiUrl);\n }\n }, {\n key: \"open\",\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var room = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var screen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var integrationId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var IntegrationsManager, dialog, client, newProps;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n IntegrationsManager = _index2.default.getComponent(\"views.settings.IntegrationsManager\");\n dialog = _Modal2.default.createTrackedDialog('Integration Manager', '', IntegrationsManager, { loading: true }, 'mx_IntegrationsManager');\n client = this.getScalarClient();\n\n client.setTermsInteractionCallback(function (policyInfo, agreedUrls) {\n // To avoid visual glitching of two modals stacking briefly, we customise the\n // terms dialog sizing when it will appear for the integrations manager so that\n // it gets the same basic size as the IM's own modal.\n return (0, _Terms.dialogTermsInteractionCallback)(policyInfo, agreedUrls, 'mx_TermsDialog_forIntegrationsManager');\n });\n\n newProps = {};\n _context.prev = 5;\n _context.next = 8;\n return (0, _bluebird.resolve)(client.connect());\n\n case 8:\n if (!client.hasCredentials()) {\n newProps[\"connected\"] = false;\n } else {\n newProps[\"url\"] = client.getScalarInterfaceUrlForRoom(room, screen, integrationId);\n }\n _context.next = 18;\n break;\n\n case 11:\n _context.prev = 11;\n _context.t0 = _context[\"catch\"](5);\n\n if (!(_context.t0 instanceof _Terms.TermsNotSignedError)) {\n _context.next = 16;\n break;\n }\n\n dialog.close();\n return _context.abrupt(\"return\");\n\n case 16:\n\n console.error(_context.t0);\n newProps[\"connected\"] = false;\n\n case 18:\n\n // Close the old dialog and open a new one\n dialog.close();\n _Modal2.default.createTrackedDialog('Integration Manager', '', IntegrationsManager, newProps, 'mx_IntegrationsManager');\n\n case 20:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[5, 11]]);\n }));\n\n function open(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return open;\n }()\n }, {\n key: \"name\",\n get: function get() {\n var parsed = _url2.default.parse(this.uiUrl);\n return parsed.host;\n }\n }, {\n key: \"trimmedApiUrl\",\n get: function get() {\n var parsed = _url2.default.parse(this.apiUrl);\n parsed.pathname = '';\n parsed.path = '';\n return parsed.format();\n }\n }]);\n return IntegrationManagerInstance;\n}();\n//# sourceMappingURL=IntegrationManagerInstance.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _assign = require(\"babel-runtime/core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nexports.makeType = makeType;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Creates a class of a given type using the objects defined. This\n * is a stopgap function while we don't have TypeScript interfaces.\n * In future, we'd define the `type` as an interface and just cast\n * it instead of cheating like we are here.\n * @param {Type} Type The type of class to construct.\n * @param {*} opts The options (properties) to set on the object.\n * @returns {*} The created object.\n */\nfunction makeType(Type, opts) {\n var c = new Type();\n (0, _assign2.default)(c, opts);\n return c;\n}\n//# sourceMappingURL=TypeUtils.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Timer = require('./utils/Timer');\n\nvar _Timer2 = _interopRequireDefault(_Timer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// important these are larger than the timeouts of timers\n// used with UserActivity.timeWhileActive*,\n// such as READ_MARKER_INVIEW_THRESHOLD_MS (timeWhileActiveRecently),\n// READ_MARKER_OUTOFVIEW_THRESHOLD_MS (timeWhileActiveRecently),\n// READ_RECEIPT_INTERVAL_MS (timeWhileActiveNow) in TimelinePanel\n\n// 'Under a few seconds'. Must be less than 'RECENTLY_ACTIVE_THRESHOLD_MS'\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2019 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar CURRENTLY_ACTIVE_THRESHOLD_MS = 700;\n\n// 'Under a few minutes'.\nvar RECENTLY_ACTIVE_THRESHOLD_MS = 2 * 60 * 1000;\n\n/**\n * This class watches for user activity (moving the mouse or pressing a key)\n * and starts/stops attached timers while the user is active.\n *\n * There are two classes of 'active': 'active now' and 'active recently'\n * see doc on the userActive* functions for what these mean.\n */\n\nvar UserActivity = function () {\n function UserActivity(windowObj, documentObj) {\n (0, _classCallCheck3.default)(this, UserActivity);\n\n this._window = windowObj;\n this._document = documentObj;\n\n this._attachedActiveNowTimers = [];\n this._attachedActiveRecentlyTimers = [];\n this._activeNowTimeout = new _Timer2.default(CURRENTLY_ACTIVE_THRESHOLD_MS);\n this._activeRecentlyTimeout = new _Timer2.default(RECENTLY_ACTIVE_THRESHOLD_MS);\n this._onUserActivity = this._onUserActivity.bind(this);\n this._onWindowBlurred = this._onWindowBlurred.bind(this);\n this._onPageVisibilityChanged = this._onPageVisibilityChanged.bind(this);\n this.lastScreenX = 0;\n this.lastScreenY = 0;\n }\n\n (0, _createClass3.default)(UserActivity, [{\n key: 'timeWhileActiveNow',\n\n\n /**\n * Runs the given timer while the user is 'active now', aborting when the user is no longer\n * considered currently active.\n * See userActiveNow() for what it means for a user to be 'active'.\n * Can be called multiple times with the same already running timer, which is a NO-OP.\n * Can be called before the user becomes active, in which case it is only started\n * later on when the user does become active.\n * @param {Timer} timer the timer to use\n */\n value: function timeWhileActiveNow(timer) {\n this._timeWhile(timer, this._attachedActiveNowTimers);\n if (this.userActiveNow()) {\n timer.start();\n }\n }\n\n /**\n * Runs the given timer while the user is 'active' now or recently,\n * aborting when the user becomes inactive.\n * See userActiveRecently() for what it means for a user to be 'active recently'.\n * Can be called multiple times with the same already running timer, which is a NO-OP.\n * Can be called before the user becomes active, in which case it is only started\n * later on when the user does become active.\n * @param {Timer} timer the timer to use\n */\n\n }, {\n key: 'timeWhileActiveRecently',\n value: function timeWhileActiveRecently(timer) {\n this._timeWhile(timer, this._attachedActiveRecentlyTimers);\n if (this.userActiveRecently()) {\n timer.start();\n }\n }\n }, {\n key: '_timeWhile',\n value: function _timeWhile(timer, attachedTimers) {\n // important this happens first\n var index = attachedTimers.indexOf(timer);\n if (index === -1) {\n attachedTimers.push(timer);\n // remove when done or aborted\n timer.finished().finally(function () {\n var index = attachedTimers.indexOf(timer);\n if (index !== -1) {\n // should never be -1\n attachedTimers.splice(index, 1);\n }\n // as we fork the promise here,\n // avoid unhandled rejection warnings\n }).catch(function (err) {});\n }\n }\n\n /**\n * Start listening to user activity\n */\n\n }, {\n key: 'start',\n value: function start() {\n this._document.addEventListener('mousedown', this._onUserActivity);\n this._document.addEventListener('mousemove', this._onUserActivity);\n this._document.addEventListener('keydown', this._onUserActivity);\n this._document.addEventListener(\"visibilitychange\", this._onPageVisibilityChanged);\n this._window.addEventListener(\"blur\", this._onWindowBlurred);\n this._window.addEventListener(\"focus\", this._onUserActivity);\n // can't use document.scroll here because that's only the document\n // itself being scrolled. Need to use addEventListener's useCapture.\n // also this needs to be the wheel event, not scroll, as scroll is\n // fired when the view scrolls down for a new message.\n this._window.addEventListener('wheel', this._onUserActivity, {\n passive: true, capture: true\n });\n }\n\n /**\n * Stop tracking user activity\n */\n\n }, {\n key: 'stop',\n value: function stop() {\n this._document.removeEventListener('mousedown', this._onUserActivity);\n this._document.removeEventListener('mousemove', this._onUserActivity);\n this._document.removeEventListener('keydown', this._onUserActivity);\n this._window.removeEventListener('wheel', this._onUserActivity, {\n passive: true, capture: true\n });\n\n this._document.removeEventListener(\"visibilitychange\", this._onPageVisibilityChanged);\n this._window.removeEventListener(\"blur\", this._onWindowBlurred);\n this._window.removeEventListener(\"focus\", this._onUserActivity);\n }\n\n /**\n * Return true if the user is currently 'active'\n * A user is 'active' while they are interacting with the app and for a very short (<1s)\n * time after that. This is intended to give a strong indication that the app has the\n * user's attention at any given moment.\n * @returns {boolean} true if user is currently 'active'\n */\n\n }, {\n key: 'userActiveNow',\n value: function userActiveNow() {\n return this._activeNowTimeout.isRunning();\n }\n\n /**\n * Return true if the user is currently active or has been recently\n * A user is 'active recently' for a longer period of time (~2 mins) after\n * they have been 'active' and while the app still has the focus. This is\n * intended to indicate when the app may still have the user's attention\n * (or they may have gone to make tea and left the window focused).\n * @returns {boolean} true if user has been active recently\n */\n\n }, {\n key: 'userActiveRecently',\n value: function userActiveRecently() {\n return this._activeRecentlyTimeout.isRunning();\n }\n }, {\n key: '_onPageVisibilityChanged',\n value: function _onPageVisibilityChanged(e) {\n if (this._document.visibilityState === \"hidden\") {\n this._activeNowTimeout.abort();\n this._activeRecentlyTimeout.abort();\n } else {\n this._onUserActivity(e);\n }\n }\n }, {\n key: '_onWindowBlurred',\n value: function _onWindowBlurred() {\n this._activeNowTimeout.abort();\n this._activeRecentlyTimeout.abort();\n }\n }, {\n key: '_onUserActivity',\n value: function _onUserActivity(event) {\n // ignore anything if the window isn't focused\n if (!this._document.hasFocus()) return;\n\n if (event.screenX && event.type === \"mousemove\") {\n if (event.screenX === this.lastScreenX && event.screenY === this.lastScreenY) {\n // mouse hasn't actually moved\n return;\n }\n this.lastScreenX = event.screenX;\n this.lastScreenY = event.screenY;\n }\n\n _dispatcher2.default.dispatch({ action: 'user_activity' });\n if (!this._activeNowTimeout.isRunning()) {\n this._activeNowTimeout.start();\n _dispatcher2.default.dispatch({ action: 'user_activity_start' });\n\n this._runTimersUntilTimeout(this._attachedActiveNowTimers, this._activeNowTimeout);\n } else {\n this._activeNowTimeout.restart();\n }\n\n if (!this._activeRecentlyTimeout.isRunning()) {\n this._activeRecentlyTimeout.start();\n\n this._runTimersUntilTimeout(this._attachedActiveRecentlyTimers, this._activeRecentlyTimeout);\n } else {\n this._activeRecentlyTimeout.restart();\n }\n }\n }, {\n key: '_runTimersUntilTimeout',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(attachedTimers, timeout) {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n attachedTimers.forEach(function (t) {\n return t.start();\n });\n _context.prev = 1;\n _context.next = 4;\n return (0, _bluebird.resolve)(timeout.finished());\n\n case 4:\n _context.next = 8;\n break;\n\n case 6:\n _context.prev = 6;\n _context.t0 = _context['catch'](1);\n\n case 8:\n attachedTimers.forEach(function (t) {\n return t.abort();\n });\n\n case 9:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[1, 6]]);\n }));\n\n function _runTimersUntilTimeout(_x, _x2) {\n return _ref.apply(this, arguments);\n }\n\n return _runTimersUntilTimeout;\n }()\n }], [{\n key: 'sharedInstance',\n value: function sharedInstance() {\n if (global.mxUserActivity === undefined) {\n global.mxUserActivity = new UserActivity(window, document);\n }\n return global.mxUserActivity;\n }\n }]);\n return UserActivity;\n}();\n\nexports.default = UserActivity;\nmodule.exports = exports['default'];\n//# sourceMappingURL=UserActivity.js.map","// @flow\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\nCopyright 2019 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport BasePlatform from 'matrix-react-sdk/lib/BasePlatform';\nimport { _t } from 'matrix-react-sdk/lib/languageHandler';\nimport dis from 'matrix-react-sdk/lib/dispatcher';\nimport {getVectorConfig} from \"../getconfig\";\n\nimport Favico from 'favico.js';\n\nexport const updateCheckStatusEnum = {\n CHECKING: 'CHECKING',\n ERROR: 'ERROR',\n NOTAVAILABLE: 'NOTAVAILABLE',\n DOWNLOADING: 'DOWNLOADING',\n READY: 'READY',\n};\n\n/**\n * Vector-specific extensions to the BasePlatform template\n */\nexport default class VectorBasePlatform extends BasePlatform {\n constructor() {\n super();\n\n this.showUpdateCheck = false;\n this.startUpdateCheck = this.startUpdateCheck.bind(this);\n this.stopUpdateCheck = this.stopUpdateCheck.bind(this);\n }\n\n async getConfig(): Promise<{}> {\n return getVectorConfig();\n }\n\n getHumanReadableName(): string {\n return 'Vector Base Platform'; // no translation required: only used for analytics\n }\n\n /**\n * Delay creating the `Favico` instance until first use (on the first notification) as\n * it uses canvas, which can trigger a permission prompt in Firefox's resist\n * fingerprinting mode.\n * See https://github.com/vector-im/riot-web/issues/9605.\n */\n get favicon() {\n if (this._favicon) {\n return this._favicon;\n }\n // The 'animations' are really low framerate and look terrible.\n // Also it re-starts the animation every time you set the badge,\n // and we set the state each time, even if the value hasn't changed,\n // so we'd need to fix that if enabling the animation.\n this._favicon = new Favico({ animation: 'none' });\n return this._favicon;\n }\n\n _updateFavicon() {\n try {\n // This needs to be in in a try block as it will throw\n // if there are more than 100 badge count changes in\n // its internal queue\n let bgColor = \"#d00\";\n let notif = this.notificationCount;\n\n if (this.errorDidOccur) {\n notif = notif || \"×\";\n bgColor = \"#f00\";\n }\n\n this.favicon.badge(notif, {\n bgColor: bgColor,\n });\n } catch (e) {\n console.warn(`Failed to set badge count: ${e.message}`);\n }\n }\n\n setNotificationCount(count: number) {\n if (this.notificationCount === count) return;\n super.setNotificationCount(count);\n this._updateFavicon();\n }\n\n setErrorStatus(errorDidOccur: boolean) {\n if (this.errorDidOccur === errorDidOccur) return;\n super.setErrorStatus(errorDidOccur);\n this._updateFavicon();\n }\n\n /**\n * Begin update polling, if applicable\n */\n startUpdater() {\n }\n\n /**\n * Whether we can call checkForUpdate on this platform build\n */\n async canSelfUpdate(): boolean {\n return false;\n }\n\n startUpdateCheck() {\n this.showUpdateCheck = true;\n dis.dispatch({\n action: 'check_updates',\n value: { status: updateCheckStatusEnum.CHECKING },\n });\n }\n\n stopUpdateCheck() {\n this.showUpdateCheck = false;\n dis.dispatch({\n action: 'check_updates',\n value: false,\n });\n }\n\n getUpdateCheckStatusEnum() {\n return updateCheckStatusEnum;\n }\n\n /**\n * Update the currently running app to the latest available\n * version and replace this instance of the app with the\n * new version.\n */\n installUpdate() {\n }\n\n /**\n * Get a sensible default display name for the\n * device Vector is running on\n */\n getDefaultDeviceDisplayName(): string {\n return _t(\"Unknown device\");\n }\n\n /**\n * Migrate account data from a previous origin\n * Used only for the electron app\n */\n async migrateFromOldOrigin() {\n return false;\n }\n}\n","/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2019 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _browserRequest = require('browser-request');\n\nvar _browserRequest2 = _interopRequireDefault(_browserRequest);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _sanitizeHtml = require('sanitize-html');\n\nvar _sanitizeHtml2 = _interopRequireDefault(_sanitizeHtml);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _MatrixClientPeg = require('../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _classnames2 = require('classnames');\n\nvar _classnames3 = _interopRequireDefault(_classnames2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EmbeddedPage = function (_React$PureComponent) {\n (0, _inherits3.default)(EmbeddedPage, _React$PureComponent);\n\n function EmbeddedPage(props) {\n (0, _classCallCheck3.default)(this, EmbeddedPage);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (EmbeddedPage.__proto__ || (0, _getPrototypeOf2.default)(EmbeddedPage)).call(this, props));\n\n _this.onAction = function (payload) {\n // HACK: Workaround for the context's MatrixClient not being set up at render time.\n if (payload.action === 'client_started') {\n _this.forceUpdate();\n }\n };\n\n _this._dispatcherRef = null;\n\n _this.state = {\n page: ''\n };\n return _this;\n }\n\n (0, _createClass3.default)(EmbeddedPage, [{\n key: 'translate',\n value: function translate(s) {\n // default implementation - skins may wish to extend this\n return (0, _sanitizeHtml2.default)((0, _languageHandler._t)(s));\n }\n }, {\n key: 'componentWillMount',\n value: function componentWillMount() {\n var _this2 = this;\n\n this._unmounted = false;\n\n if (!this.props.url) {\n return;\n }\n\n // we use request() to inline the page into the react component\n // so that it can inherit CSS and theming easily rather than mess around\n // with iframes and trying to synchronise document.stylesheets.\n\n (0, _browserRequest2.default)({ method: \"GET\", url: this.props.url }, function (err, response, body) {\n if (_this2._unmounted) {\n return;\n }\n\n if (err || response.status < 200 || response.status >= 300) {\n console.warn('Error loading page: ' + err);\n _this2.setState({ page: (0, _languageHandler._t)(\"Couldn't load page\") });\n return;\n }\n\n body = body.replace(/_t\\(['\"]([\\s\\S]*?)['\"]\\)/mg, function (match, g1) {\n return _this2.translate(g1);\n });\n _this2.setState({ page: body });\n });\n\n this._dispatcherRef = _dispatcher2.default.register(this.onAction);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._unmounted = true;\n if (this._dispatcherRef !== null) _dispatcher2.default.unregister(this._dispatcherRef);\n }\n }, {\n key: 'render',\n value: function render() {\n var _classnames;\n\n // HACK: Workaround for the context's MatrixClient not updating.\n var client = this.context.matrixClient || _MatrixClientPeg2.default.get();\n var isGuest = client ? client.isGuest() : true;\n var className = this.props.className;\n var classes = (0, _classnames3.default)((_classnames = {}, (0, _defineProperty3.default)(_classnames, className, true), (0, _defineProperty3.default)(_classnames, className + '_guest', isGuest), (0, _defineProperty3.default)(_classnames, className + '_loggedIn', !!client), _classnames));\n\n var content = _react2.default.createElement('div', { className: className + '_body',\n dangerouslySetInnerHTML: { __html: this.state.page }\n });\n\n if (this.props.scrollbar) {\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n return _react2.default.createElement(\n GeminiScrollbarWrapper,\n { autoshow: true, className: classes },\n content\n );\n } else {\n return _react2.default.createElement(\n 'div',\n { className: classes },\n content\n );\n }\n }\n }]);\n return EmbeddedPage;\n}(_react2.default.PureComponent);\n\nEmbeddedPage.propTypes = {\n // URL to request embedded page content from\n url: _propTypes2.default.string,\n // Class name prefix to apply for a given instance\n className: _propTypes2.default.string,\n // Whether to wrap the page in a scrollbar\n scrollbar: _propTypes2.default.bool\n};\nEmbeddedPage.contextTypes = {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n};\nexports.default = EmbeddedPage;\nmodule.exports = exports['default'];\n//# sourceMappingURL=EmbeddedPage.js.map","var Tokenizer = require(\"./Tokenizer.js\");\n\n/*\n\tOptions:\n\n\txmlMode: Disables the special behavior for script/style tags (false by default)\n\tlowerCaseAttributeNames: call .toLowerCase for each attribute name (true if xmlMode is `false`)\n\tlowerCaseTags: call .toLowerCase for each tag name (true if xmlMode is `false`)\n*/\n\n/*\n\tCallbacks:\n\n\toncdataend,\n\toncdatastart,\n\tonclosetag,\n\toncomment,\n\toncommentend,\n\tonerror,\n\tonopentag,\n\tonprocessinginstruction,\n\tonreset,\n\tontext\n*/\n\nvar formTags = {\n input: true,\n option: true,\n optgroup: true,\n select: true,\n button: true,\n datalist: true,\n textarea: true\n};\n\nvar openImpliesClose = {\n tr: { tr: true, th: true, td: true },\n th: { th: true },\n td: { thead: true, th: true, td: true },\n body: { head: true, link: true, script: true },\n li: { li: true },\n p: { p: true },\n h1: { p: true },\n h2: { p: true },\n h3: { p: true },\n h4: { p: true },\n h5: { p: true },\n h6: { p: true },\n select: formTags,\n input: formTags,\n output: formTags,\n button: formTags,\n datalist: formTags,\n textarea: formTags,\n option: { option: true },\n optgroup: { optgroup: true }\n};\n\nvar voidElements = {\n __proto__: null,\n area: true,\n base: true,\n basefont: true,\n br: true,\n col: true,\n command: true,\n embed: true,\n frame: true,\n hr: true,\n img: true,\n input: true,\n isindex: true,\n keygen: true,\n link: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true\n};\n\nvar foreignContextElements = {\n __proto__: null,\n math: true,\n svg: true\n};\nvar htmlIntegrationElements = {\n __proto__: null,\n mi: true,\n mo: true,\n mn: true,\n ms: true,\n mtext: true,\n \"annotation-xml\": true,\n foreignObject: true,\n desc: true,\n title: true\n};\n\nvar re_nameEnd = /\\s|\\//;\n\nfunction Parser(cbs, options) {\n this._options = options || {};\n this._cbs = cbs || {};\n\n this._tagname = \"\";\n this._attribname = \"\";\n this._attribvalue = \"\";\n this._attribs = null;\n this._stack = [];\n this._foreignContext = [];\n\n this.startIndex = 0;\n this.endIndex = null;\n\n this._lowerCaseTagNames =\n \"lowerCaseTags\" in this._options\n ? !!this._options.lowerCaseTags\n : !this._options.xmlMode;\n this._lowerCaseAttributeNames =\n \"lowerCaseAttributeNames\" in this._options\n ? !!this._options.lowerCaseAttributeNames\n : !this._options.xmlMode;\n\n if (this._options.Tokenizer) {\n Tokenizer = this._options.Tokenizer;\n }\n this._tokenizer = new Tokenizer(this._options, this);\n\n if (this._cbs.onparserinit) this._cbs.onparserinit(this);\n}\n\nrequire(\"inherits\")(Parser, require(\"events\").EventEmitter);\n\nParser.prototype._updatePosition = function(initialOffset) {\n if (this.endIndex === null) {\n if (this._tokenizer._sectionStart <= initialOffset) {\n this.startIndex = 0;\n } else {\n this.startIndex = this._tokenizer._sectionStart - initialOffset;\n }\n } else this.startIndex = this.endIndex + 1;\n this.endIndex = this._tokenizer.getAbsoluteIndex();\n};\n\n//Tokenizer event handlers\nParser.prototype.ontext = function(data) {\n this._updatePosition(1);\n this.endIndex--;\n\n if (this._cbs.ontext) this._cbs.ontext(data);\n};\n\nParser.prototype.onopentagname = function(name) {\n if (this._lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n\n this._tagname = name;\n\n if (!this._options.xmlMode && name in openImpliesClose) {\n for (\n var el;\n (el = this._stack[this._stack.length - 1]) in\n openImpliesClose[name];\n this.onclosetag(el)\n );\n }\n\n if (this._options.xmlMode || !(name in voidElements)) {\n this._stack.push(name);\n if (name in foreignContextElements) this._foreignContext.push(true);\n else if (name in htmlIntegrationElements)\n this._foreignContext.push(false);\n }\n\n if (this._cbs.onopentagname) this._cbs.onopentagname(name);\n if (this._cbs.onopentag) this._attribs = {};\n};\n\nParser.prototype.onopentagend = function() {\n this._updatePosition(1);\n\n if (this._attribs) {\n if (this._cbs.onopentag)\n this._cbs.onopentag(this._tagname, this._attribs);\n this._attribs = null;\n }\n\n if (\n !this._options.xmlMode &&\n this._cbs.onclosetag &&\n this._tagname in voidElements\n ) {\n this._cbs.onclosetag(this._tagname);\n }\n\n this._tagname = \"\";\n};\n\nParser.prototype.onclosetag = function(name) {\n this._updatePosition(1);\n\n if (this._lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n \n if (name in foreignContextElements || name in htmlIntegrationElements) {\n this._foreignContext.pop();\n }\n\n if (\n this._stack.length &&\n (!(name in voidElements) || this._options.xmlMode)\n ) {\n var pos = this._stack.lastIndexOf(name);\n if (pos !== -1) {\n if (this._cbs.onclosetag) {\n pos = this._stack.length - pos;\n while (pos--) this._cbs.onclosetag(this._stack.pop());\n } else this._stack.length = pos;\n } else if (name === \"p\" && !this._options.xmlMode) {\n this.onopentagname(name);\n this._closeCurrentTag();\n }\n } else if (!this._options.xmlMode && (name === \"br\" || name === \"p\")) {\n this.onopentagname(name);\n this._closeCurrentTag();\n }\n};\n\nParser.prototype.onselfclosingtag = function() {\n if (\n this._options.xmlMode ||\n this._options.recognizeSelfClosing ||\n this._foreignContext[this._foreignContext.length - 1]\n ) {\n this._closeCurrentTag();\n } else {\n this.onopentagend();\n }\n};\n\nParser.prototype._closeCurrentTag = function() {\n var name = this._tagname;\n\n this.onopentagend();\n\n //self-closing tags will be on the top of the stack\n //(cheaper check than in onclosetag)\n if (this._stack[this._stack.length - 1] === name) {\n if (this._cbs.onclosetag) {\n this._cbs.onclosetag(name);\n }\n this._stack.pop();\n \n }\n};\n\nParser.prototype.onattribname = function(name) {\n if (this._lowerCaseAttributeNames) {\n name = name.toLowerCase();\n }\n this._attribname = name;\n};\n\nParser.prototype.onattribdata = function(value) {\n this._attribvalue += value;\n};\n\nParser.prototype.onattribend = function() {\n if (this._cbs.onattribute)\n this._cbs.onattribute(this._attribname, this._attribvalue);\n if (\n this._attribs &&\n !Object.prototype.hasOwnProperty.call(this._attribs, this._attribname)\n ) {\n this._attribs[this._attribname] = this._attribvalue;\n }\n this._attribname = \"\";\n this._attribvalue = \"\";\n};\n\nParser.prototype._getInstructionName = function(value) {\n var idx = value.search(re_nameEnd),\n name = idx < 0 ? value : value.substr(0, idx);\n\n if (this._lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n\n return name;\n};\n\nParser.prototype.ondeclaration = function(value) {\n if (this._cbs.onprocessinginstruction) {\n var name = this._getInstructionName(value);\n this._cbs.onprocessinginstruction(\"!\" + name, \"!\" + value);\n }\n};\n\nParser.prototype.onprocessinginstruction = function(value) {\n if (this._cbs.onprocessinginstruction) {\n var name = this._getInstructionName(value);\n this._cbs.onprocessinginstruction(\"?\" + name, \"?\" + value);\n }\n};\n\nParser.prototype.oncomment = function(value) {\n this._updatePosition(4);\n\n if (this._cbs.oncomment) this._cbs.oncomment(value);\n if (this._cbs.oncommentend) this._cbs.oncommentend();\n};\n\nParser.prototype.oncdata = function(value) {\n this._updatePosition(1);\n\n if (this._options.xmlMode || this._options.recognizeCDATA) {\n if (this._cbs.oncdatastart) this._cbs.oncdatastart();\n if (this._cbs.ontext) this._cbs.ontext(value);\n if (this._cbs.oncdataend) this._cbs.oncdataend();\n } else {\n this.oncomment(\"[CDATA[\" + value + \"]]\");\n }\n};\n\nParser.prototype.onerror = function(err) {\n if (this._cbs.onerror) this._cbs.onerror(err);\n};\n\nParser.prototype.onend = function() {\n if (this._cbs.onclosetag) {\n for (\n var i = this._stack.length;\n i > 0;\n this._cbs.onclosetag(this._stack[--i])\n );\n }\n if (this._cbs.onend) this._cbs.onend();\n};\n\n//Resets the parser to a blank state, ready to parse a new HTML document\nParser.prototype.reset = function() {\n if (this._cbs.onreset) this._cbs.onreset();\n this._tokenizer.reset();\n\n this._tagname = \"\";\n this._attribname = \"\";\n this._attribs = null;\n this._stack = [];\n\n if (this._cbs.onparserinit) this._cbs.onparserinit(this);\n};\n\n//Parses a complete HTML document and pushes it to the handler\nParser.prototype.parseComplete = function(data) {\n this.reset();\n this.end(data);\n};\n\nParser.prototype.write = function(chunk) {\n this._tokenizer.write(chunk);\n};\n\nParser.prototype.end = function(chunk) {\n this._tokenizer.end(chunk);\n};\n\nParser.prototype.pause = function() {\n this._tokenizer.pause();\n};\n\nParser.prototype.resume = function() {\n this._tokenizer.resume();\n};\n\n//alias for backwards compat\nParser.prototype.parseChunk = Parser.prototype.write;\nParser.prototype.done = Parser.prototype.end;\n\nmodule.exports = Parser;\n","module.exports = Tokenizer;\n\nvar decodeCodePoint = require(\"entities/lib/decode_codepoint.js\");\nvar entityMap = require(\"entities/maps/entities.json\");\nvar legacyMap = require(\"entities/maps/legacy.json\");\nvar xmlMap = require(\"entities/maps/xml.json\");\n\nvar i = 0;\n\nvar TEXT = i++;\nvar BEFORE_TAG_NAME = i++; //after <\nvar IN_TAG_NAME = i++;\nvar IN_SELF_CLOSING_TAG = i++;\nvar BEFORE_CLOSING_TAG_NAME = i++;\nvar IN_CLOSING_TAG_NAME = i++;\nvar AFTER_CLOSING_TAG_NAME = i++;\n\n//attributes\nvar BEFORE_ATTRIBUTE_NAME = i++;\nvar IN_ATTRIBUTE_NAME = i++;\nvar AFTER_ATTRIBUTE_NAME = i++;\nvar BEFORE_ATTRIBUTE_VALUE = i++;\nvar IN_ATTRIBUTE_VALUE_DQ = i++; // \"\nvar IN_ATTRIBUTE_VALUE_SQ = i++; // '\nvar IN_ATTRIBUTE_VALUE_NQ = i++;\n\n//declarations\nvar BEFORE_DECLARATION = i++; // !\nvar IN_DECLARATION = i++;\n\n//processing instructions\nvar IN_PROCESSING_INSTRUCTION = i++; // ?\n\n//comments\nvar BEFORE_COMMENT = i++;\nvar IN_COMMENT = i++;\nvar AFTER_COMMENT_1 = i++;\nvar AFTER_COMMENT_2 = i++;\n\n//cdata\nvar BEFORE_CDATA_1 = i++; // [\nvar BEFORE_CDATA_2 = i++; // C\nvar BEFORE_CDATA_3 = i++; // D\nvar BEFORE_CDATA_4 = i++; // A\nvar BEFORE_CDATA_5 = i++; // T\nvar BEFORE_CDATA_6 = i++; // A\nvar IN_CDATA = i++; // [\nvar AFTER_CDATA_1 = i++; // ]\nvar AFTER_CDATA_2 = i++; // ]\n\n//special tags\nvar BEFORE_SPECIAL = i++; //S\nvar BEFORE_SPECIAL_END = i++; //S\n\nvar BEFORE_SCRIPT_1 = i++; //C\nvar BEFORE_SCRIPT_2 = i++; //R\nvar BEFORE_SCRIPT_3 = i++; //I\nvar BEFORE_SCRIPT_4 = i++; //P\nvar BEFORE_SCRIPT_5 = i++; //T\nvar AFTER_SCRIPT_1 = i++; //C\nvar AFTER_SCRIPT_2 = i++; //R\nvar AFTER_SCRIPT_3 = i++; //I\nvar AFTER_SCRIPT_4 = i++; //P\nvar AFTER_SCRIPT_5 = i++; //T\n\nvar BEFORE_STYLE_1 = i++; //T\nvar BEFORE_STYLE_2 = i++; //Y\nvar BEFORE_STYLE_3 = i++; //L\nvar BEFORE_STYLE_4 = i++; //E\nvar AFTER_STYLE_1 = i++; //T\nvar AFTER_STYLE_2 = i++; //Y\nvar AFTER_STYLE_3 = i++; //L\nvar AFTER_STYLE_4 = i++; //E\n\nvar BEFORE_ENTITY = i++; //&\nvar BEFORE_NUMERIC_ENTITY = i++; //#\nvar IN_NAMED_ENTITY = i++;\nvar IN_NUMERIC_ENTITY = i++;\nvar IN_HEX_ENTITY = i++; //X\n\nvar j = 0;\n\nvar SPECIAL_NONE = j++;\nvar SPECIAL_SCRIPT = j++;\nvar SPECIAL_STYLE = j++;\n\nfunction whitespace(c) {\n return c === \" \" || c === \"\\n\" || c === \"\\t\" || c === \"\\f\" || c === \"\\r\";\n}\n\nfunction ifElseState(upper, SUCCESS, FAILURE) {\n var lower = upper.toLowerCase();\n\n if (upper === lower) {\n return function(c) {\n if (c === lower) {\n this._state = SUCCESS;\n } else {\n this._state = FAILURE;\n this._index--;\n }\n };\n } else {\n return function(c) {\n if (c === lower || c === upper) {\n this._state = SUCCESS;\n } else {\n this._state = FAILURE;\n this._index--;\n }\n };\n }\n}\n\nfunction consumeSpecialNameChar(upper, NEXT_STATE) {\n var lower = upper.toLowerCase();\n\n return function(c) {\n if (c === lower || c === upper) {\n this._state = NEXT_STATE;\n } else {\n this._state = IN_TAG_NAME;\n this._index--; //consume the token again\n }\n };\n}\n\nfunction Tokenizer(options, cbs) {\n this._state = TEXT;\n this._buffer = \"\";\n this._sectionStart = 0;\n this._index = 0;\n this._bufferOffset = 0; //chars removed from _buffer\n this._baseState = TEXT;\n this._special = SPECIAL_NONE;\n this._cbs = cbs;\n this._running = true;\n this._ended = false;\n this._xmlMode = !!(options && options.xmlMode);\n this._decodeEntities = !!(options && options.decodeEntities);\n}\n\nTokenizer.prototype._stateText = function(c) {\n if (c === \"<\") {\n if (this._index > this._sectionStart) {\n this._cbs.ontext(this._getSection());\n }\n this._state = BEFORE_TAG_NAME;\n this._sectionStart = this._index;\n } else if (\n this._decodeEntities &&\n this._special === SPECIAL_NONE &&\n c === \"&\"\n ) {\n if (this._index > this._sectionStart) {\n this._cbs.ontext(this._getSection());\n }\n this._baseState = TEXT;\n this._state = BEFORE_ENTITY;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateBeforeTagName = function(c) {\n if (c === \"/\") {\n this._state = BEFORE_CLOSING_TAG_NAME;\n } else if (c === \"<\") {\n this._cbs.ontext(this._getSection());\n this._sectionStart = this._index;\n } else if (c === \">\" || this._special !== SPECIAL_NONE || whitespace(c)) {\n this._state = TEXT;\n } else if (c === \"!\") {\n this._state = BEFORE_DECLARATION;\n this._sectionStart = this._index + 1;\n } else if (c === \"?\") {\n this._state = IN_PROCESSING_INSTRUCTION;\n this._sectionStart = this._index + 1;\n } else {\n this._state =\n !this._xmlMode && (c === \"s\" || c === \"S\")\n ? BEFORE_SPECIAL\n : IN_TAG_NAME;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateInTagName = function(c) {\n if (c === \"/\" || c === \">\" || whitespace(c)) {\n this._emitToken(\"onopentagname\");\n this._state = BEFORE_ATTRIBUTE_NAME;\n this._index--;\n }\n};\n\nTokenizer.prototype._stateBeforeCloseingTagName = function(c) {\n if (whitespace(c));\n else if (c === \">\") {\n this._state = TEXT;\n } else if (this._special !== SPECIAL_NONE) {\n if (c === \"s\" || c === \"S\") {\n this._state = BEFORE_SPECIAL_END;\n } else {\n this._state = TEXT;\n this._index--;\n }\n } else {\n this._state = IN_CLOSING_TAG_NAME;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateInCloseingTagName = function(c) {\n if (c === \">\" || whitespace(c)) {\n this._emitToken(\"onclosetag\");\n this._state = AFTER_CLOSING_TAG_NAME;\n this._index--;\n }\n};\n\nTokenizer.prototype._stateAfterCloseingTagName = function(c) {\n //skip everything until \">\"\n if (c === \">\") {\n this._state = TEXT;\n this._sectionStart = this._index + 1;\n }\n};\n\nTokenizer.prototype._stateBeforeAttributeName = function(c) {\n if (c === \">\") {\n this._cbs.onopentagend();\n this._state = TEXT;\n this._sectionStart = this._index + 1;\n } else if (c === \"/\") {\n this._state = IN_SELF_CLOSING_TAG;\n } else if (!whitespace(c)) {\n this._state = IN_ATTRIBUTE_NAME;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateInSelfClosingTag = function(c) {\n if (c === \">\") {\n this._cbs.onselfclosingtag();\n this._state = TEXT;\n this._sectionStart = this._index + 1;\n } else if (!whitespace(c)) {\n this._state = BEFORE_ATTRIBUTE_NAME;\n this._index--;\n }\n};\n\nTokenizer.prototype._stateInAttributeName = function(c) {\n if (c === \"=\" || c === \"/\" || c === \">\" || whitespace(c)) {\n this._cbs.onattribname(this._getSection());\n this._sectionStart = -1;\n this._state = AFTER_ATTRIBUTE_NAME;\n this._index--;\n }\n};\n\nTokenizer.prototype._stateAfterAttributeName = function(c) {\n if (c === \"=\") {\n this._state = BEFORE_ATTRIBUTE_VALUE;\n } else if (c === \"/\" || c === \">\") {\n this._cbs.onattribend();\n this._state = BEFORE_ATTRIBUTE_NAME;\n this._index--;\n } else if (!whitespace(c)) {\n this._cbs.onattribend();\n this._state = IN_ATTRIBUTE_NAME;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateBeforeAttributeValue = function(c) {\n if (c === '\"') {\n this._state = IN_ATTRIBUTE_VALUE_DQ;\n this._sectionStart = this._index + 1;\n } else if (c === \"'\") {\n this._state = IN_ATTRIBUTE_VALUE_SQ;\n this._sectionStart = this._index + 1;\n } else if (!whitespace(c)) {\n this._state = IN_ATTRIBUTE_VALUE_NQ;\n this._sectionStart = this._index;\n this._index--; //reconsume token\n }\n};\n\nTokenizer.prototype._stateInAttributeValueDoubleQuotes = function(c) {\n if (c === '\"') {\n this._emitToken(\"onattribdata\");\n this._cbs.onattribend();\n this._state = BEFORE_ATTRIBUTE_NAME;\n } else if (this._decodeEntities && c === \"&\") {\n this._emitToken(\"onattribdata\");\n this._baseState = this._state;\n this._state = BEFORE_ENTITY;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateInAttributeValueSingleQuotes = function(c) {\n if (c === \"'\") {\n this._emitToken(\"onattribdata\");\n this._cbs.onattribend();\n this._state = BEFORE_ATTRIBUTE_NAME;\n } else if (this._decodeEntities && c === \"&\") {\n this._emitToken(\"onattribdata\");\n this._baseState = this._state;\n this._state = BEFORE_ENTITY;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateInAttributeValueNoQuotes = function(c) {\n if (whitespace(c) || c === \">\") {\n this._emitToken(\"onattribdata\");\n this._cbs.onattribend();\n this._state = BEFORE_ATTRIBUTE_NAME;\n this._index--;\n } else if (this._decodeEntities && c === \"&\") {\n this._emitToken(\"onattribdata\");\n this._baseState = this._state;\n this._state = BEFORE_ENTITY;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateBeforeDeclaration = function(c) {\n this._state =\n c === \"[\"\n ? BEFORE_CDATA_1\n : c === \"-\"\n ? BEFORE_COMMENT\n : IN_DECLARATION;\n};\n\nTokenizer.prototype._stateInDeclaration = function(c) {\n if (c === \">\") {\n this._cbs.ondeclaration(this._getSection());\n this._state = TEXT;\n this._sectionStart = this._index + 1;\n }\n};\n\nTokenizer.prototype._stateInProcessingInstruction = function(c) {\n if (c === \">\") {\n this._cbs.onprocessinginstruction(this._getSection());\n this._state = TEXT;\n this._sectionStart = this._index + 1;\n }\n};\n\nTokenizer.prototype._stateBeforeComment = function(c) {\n if (c === \"-\") {\n this._state = IN_COMMENT;\n this._sectionStart = this._index + 1;\n } else {\n this._state = IN_DECLARATION;\n }\n};\n\nTokenizer.prototype._stateInComment = function(c) {\n if (c === \"-\") this._state = AFTER_COMMENT_1;\n};\n\nTokenizer.prototype._stateAfterComment1 = function(c) {\n if (c === \"-\") {\n this._state = AFTER_COMMENT_2;\n } else {\n this._state = IN_COMMENT;\n }\n};\n\nTokenizer.prototype._stateAfterComment2 = function(c) {\n if (c === \">\") {\n //remove 2 trailing chars\n this._cbs.oncomment(\n this._buffer.substring(this._sectionStart, this._index - 2)\n );\n this._state = TEXT;\n this._sectionStart = this._index + 1;\n } else if (c !== \"-\") {\n this._state = IN_COMMENT;\n }\n // else: stay in AFTER_COMMENT_2 (`--->`)\n};\n\nTokenizer.prototype._stateBeforeCdata1 = ifElseState(\n \"C\",\n BEFORE_CDATA_2,\n IN_DECLARATION\n);\nTokenizer.prototype._stateBeforeCdata2 = ifElseState(\n \"D\",\n BEFORE_CDATA_3,\n IN_DECLARATION\n);\nTokenizer.prototype._stateBeforeCdata3 = ifElseState(\n \"A\",\n BEFORE_CDATA_4,\n IN_DECLARATION\n);\nTokenizer.prototype._stateBeforeCdata4 = ifElseState(\n \"T\",\n BEFORE_CDATA_5,\n IN_DECLARATION\n);\nTokenizer.prototype._stateBeforeCdata5 = ifElseState(\n \"A\",\n BEFORE_CDATA_6,\n IN_DECLARATION\n);\n\nTokenizer.prototype._stateBeforeCdata6 = function(c) {\n if (c === \"[\") {\n this._state = IN_CDATA;\n this._sectionStart = this._index + 1;\n } else {\n this._state = IN_DECLARATION;\n this._index--;\n }\n};\n\nTokenizer.prototype._stateInCdata = function(c) {\n if (c === \"]\") this._state = AFTER_CDATA_1;\n};\n\nTokenizer.prototype._stateAfterCdata1 = function(c) {\n if (c === \"]\") this._state = AFTER_CDATA_2;\n else this._state = IN_CDATA;\n};\n\nTokenizer.prototype._stateAfterCdata2 = function(c) {\n if (c === \">\") {\n //remove 2 trailing chars\n this._cbs.oncdata(\n this._buffer.substring(this._sectionStart, this._index - 2)\n );\n this._state = TEXT;\n this._sectionStart = this._index + 1;\n } else if (c !== \"]\") {\n this._state = IN_CDATA;\n }\n //else: stay in AFTER_CDATA_2 (`]]]>`)\n};\n\nTokenizer.prototype._stateBeforeSpecial = function(c) {\n if (c === \"c\" || c === \"C\") {\n this._state = BEFORE_SCRIPT_1;\n } else if (c === \"t\" || c === \"T\") {\n this._state = BEFORE_STYLE_1;\n } else {\n this._state = IN_TAG_NAME;\n this._index--; //consume the token again\n }\n};\n\nTokenizer.prototype._stateBeforeSpecialEnd = function(c) {\n if (this._special === SPECIAL_SCRIPT && (c === \"c\" || c === \"C\")) {\n this._state = AFTER_SCRIPT_1;\n } else if (this._special === SPECIAL_STYLE && (c === \"t\" || c === \"T\")) {\n this._state = AFTER_STYLE_1;\n } else this._state = TEXT;\n};\n\nTokenizer.prototype._stateBeforeScript1 = consumeSpecialNameChar(\n \"R\",\n BEFORE_SCRIPT_2\n);\nTokenizer.prototype._stateBeforeScript2 = consumeSpecialNameChar(\n \"I\",\n BEFORE_SCRIPT_3\n);\nTokenizer.prototype._stateBeforeScript3 = consumeSpecialNameChar(\n \"P\",\n BEFORE_SCRIPT_4\n);\nTokenizer.prototype._stateBeforeScript4 = consumeSpecialNameChar(\n \"T\",\n BEFORE_SCRIPT_5\n);\n\nTokenizer.prototype._stateBeforeScript5 = function(c) {\n if (c === \"/\" || c === \">\" || whitespace(c)) {\n this._special = SPECIAL_SCRIPT;\n }\n this._state = IN_TAG_NAME;\n this._index--; //consume the token again\n};\n\nTokenizer.prototype._stateAfterScript1 = ifElseState(\"R\", AFTER_SCRIPT_2, TEXT);\nTokenizer.prototype._stateAfterScript2 = ifElseState(\"I\", AFTER_SCRIPT_3, TEXT);\nTokenizer.prototype._stateAfterScript3 = ifElseState(\"P\", AFTER_SCRIPT_4, TEXT);\nTokenizer.prototype._stateAfterScript4 = ifElseState(\"T\", AFTER_SCRIPT_5, TEXT);\n\nTokenizer.prototype._stateAfterScript5 = function(c) {\n if (c === \">\" || whitespace(c)) {\n this._special = SPECIAL_NONE;\n this._state = IN_CLOSING_TAG_NAME;\n this._sectionStart = this._index - 6;\n this._index--; //reconsume the token\n } else this._state = TEXT;\n};\n\nTokenizer.prototype._stateBeforeStyle1 = consumeSpecialNameChar(\n \"Y\",\n BEFORE_STYLE_2\n);\nTokenizer.prototype._stateBeforeStyle2 = consumeSpecialNameChar(\n \"L\",\n BEFORE_STYLE_3\n);\nTokenizer.prototype._stateBeforeStyle3 = consumeSpecialNameChar(\n \"E\",\n BEFORE_STYLE_4\n);\n\nTokenizer.prototype._stateBeforeStyle4 = function(c) {\n if (c === \"/\" || c === \">\" || whitespace(c)) {\n this._special = SPECIAL_STYLE;\n }\n this._state = IN_TAG_NAME;\n this._index--; //consume the token again\n};\n\nTokenizer.prototype._stateAfterStyle1 = ifElseState(\"Y\", AFTER_STYLE_2, TEXT);\nTokenizer.prototype._stateAfterStyle2 = ifElseState(\"L\", AFTER_STYLE_3, TEXT);\nTokenizer.prototype._stateAfterStyle3 = ifElseState(\"E\", AFTER_STYLE_4, TEXT);\n\nTokenizer.prototype._stateAfterStyle4 = function(c) {\n if (c === \">\" || whitespace(c)) {\n this._special = SPECIAL_NONE;\n this._state = IN_CLOSING_TAG_NAME;\n this._sectionStart = this._index - 5;\n this._index--; //reconsume the token\n } else this._state = TEXT;\n};\n\nTokenizer.prototype._stateBeforeEntity = ifElseState(\n \"#\",\n BEFORE_NUMERIC_ENTITY,\n IN_NAMED_ENTITY\n);\nTokenizer.prototype._stateBeforeNumericEntity = ifElseState(\n \"X\",\n IN_HEX_ENTITY,\n IN_NUMERIC_ENTITY\n);\n\n//for entities terminated with a semicolon\nTokenizer.prototype._parseNamedEntityStrict = function() {\n //offset = 1\n if (this._sectionStart + 1 < this._index) {\n var entity = this._buffer.substring(\n this._sectionStart + 1,\n this._index\n ),\n map = this._xmlMode ? xmlMap : entityMap;\n\n if (map.hasOwnProperty(entity)) {\n this._emitPartial(map[entity]);\n this._sectionStart = this._index + 1;\n }\n }\n};\n\n//parses legacy entities (without trailing semicolon)\nTokenizer.prototype._parseLegacyEntity = function() {\n var start = this._sectionStart + 1,\n limit = this._index - start;\n\n if (limit > 6) limit = 6; //the max length of legacy entities is 6\n\n while (limit >= 2) {\n //the min length of legacy entities is 2\n var entity = this._buffer.substr(start, limit);\n\n if (legacyMap.hasOwnProperty(entity)) {\n this._emitPartial(legacyMap[entity]);\n this._sectionStart += limit + 1;\n return;\n } else {\n limit--;\n }\n }\n};\n\nTokenizer.prototype._stateInNamedEntity = function(c) {\n if (c === \";\") {\n this._parseNamedEntityStrict();\n if (this._sectionStart + 1 < this._index && !this._xmlMode) {\n this._parseLegacyEntity();\n }\n this._state = this._baseState;\n } else if (\n (c < \"a\" || c > \"z\") &&\n (c < \"A\" || c > \"Z\") &&\n (c < \"0\" || c > \"9\")\n ) {\n if (this._xmlMode);\n else if (this._sectionStart + 1 === this._index);\n else if (this._baseState !== TEXT) {\n if (c !== \"=\") {\n this._parseNamedEntityStrict();\n }\n } else {\n this._parseLegacyEntity();\n }\n\n this._state = this._baseState;\n this._index--;\n }\n};\n\nTokenizer.prototype._decodeNumericEntity = function(offset, base) {\n var sectionStart = this._sectionStart + offset;\n\n if (sectionStart !== this._index) {\n //parse entity\n var entity = this._buffer.substring(sectionStart, this._index);\n var parsed = parseInt(entity, base);\n\n this._emitPartial(decodeCodePoint(parsed));\n this._sectionStart = this._index;\n } else {\n this._sectionStart--;\n }\n\n this._state = this._baseState;\n};\n\nTokenizer.prototype._stateInNumericEntity = function(c) {\n if (c === \";\") {\n this._decodeNumericEntity(2, 10);\n this._sectionStart++;\n } else if (c < \"0\" || c > \"9\") {\n if (!this._xmlMode) {\n this._decodeNumericEntity(2, 10);\n } else {\n this._state = this._baseState;\n }\n this._index--;\n }\n};\n\nTokenizer.prototype._stateInHexEntity = function(c) {\n if (c === \";\") {\n this._decodeNumericEntity(3, 16);\n this._sectionStart++;\n } else if (\n (c < \"a\" || c > \"f\") &&\n (c < \"A\" || c > \"F\") &&\n (c < \"0\" || c > \"9\")\n ) {\n if (!this._xmlMode) {\n this._decodeNumericEntity(3, 16);\n } else {\n this._state = this._baseState;\n }\n this._index--;\n }\n};\n\nTokenizer.prototype._cleanup = function() {\n if (this._sectionStart < 0) {\n this._buffer = \"\";\n this._bufferOffset += this._index;\n this._index = 0;\n } else if (this._running) {\n if (this._state === TEXT) {\n if (this._sectionStart !== this._index) {\n this._cbs.ontext(this._buffer.substr(this._sectionStart));\n }\n this._buffer = \"\";\n this._bufferOffset += this._index;\n this._index = 0;\n } else if (this._sectionStart === this._index) {\n //the section just started\n this._buffer = \"\";\n this._bufferOffset += this._index;\n this._index = 0;\n } else {\n //remove everything unnecessary\n this._buffer = this._buffer.substr(this._sectionStart);\n this._index -= this._sectionStart;\n this._bufferOffset += this._sectionStart;\n }\n\n this._sectionStart = 0;\n }\n};\n\n//TODO make events conditional\nTokenizer.prototype.write = function(chunk) {\n if (this._ended) this._cbs.onerror(Error(\".write() after done!\"));\n\n this._buffer += chunk;\n this._parse();\n};\n\nTokenizer.prototype._parse = function() {\n while (this._index < this._buffer.length && this._running) {\n var c = this._buffer.charAt(this._index);\n if (this._state === TEXT) {\n this._stateText(c);\n } else if (this._state === BEFORE_TAG_NAME) {\n this._stateBeforeTagName(c);\n } else if (this._state === IN_TAG_NAME) {\n this._stateInTagName(c);\n } else if (this._state === BEFORE_CLOSING_TAG_NAME) {\n this._stateBeforeCloseingTagName(c);\n } else if (this._state === IN_CLOSING_TAG_NAME) {\n this._stateInCloseingTagName(c);\n } else if (this._state === AFTER_CLOSING_TAG_NAME) {\n this._stateAfterCloseingTagName(c);\n } else if (this._state === IN_SELF_CLOSING_TAG) {\n this._stateInSelfClosingTag(c);\n } else if (this._state === BEFORE_ATTRIBUTE_NAME) {\n\n /*\n\t\t*\tattributes\n\t\t*/\n this._stateBeforeAttributeName(c);\n } else if (this._state === IN_ATTRIBUTE_NAME) {\n this._stateInAttributeName(c);\n } else if (this._state === AFTER_ATTRIBUTE_NAME) {\n this._stateAfterAttributeName(c);\n } else if (this._state === BEFORE_ATTRIBUTE_VALUE) {\n this._stateBeforeAttributeValue(c);\n } else if (this._state === IN_ATTRIBUTE_VALUE_DQ) {\n this._stateInAttributeValueDoubleQuotes(c);\n } else if (this._state === IN_ATTRIBUTE_VALUE_SQ) {\n this._stateInAttributeValueSingleQuotes(c);\n } else if (this._state === IN_ATTRIBUTE_VALUE_NQ) {\n this._stateInAttributeValueNoQuotes(c);\n } else if (this._state === BEFORE_DECLARATION) {\n\n /*\n\t\t*\tdeclarations\n\t\t*/\n this._stateBeforeDeclaration(c);\n } else if (this._state === IN_DECLARATION) {\n this._stateInDeclaration(c);\n } else if (this._state === IN_PROCESSING_INSTRUCTION) {\n\n /*\n\t\t*\tprocessing instructions\n\t\t*/\n this._stateInProcessingInstruction(c);\n } else if (this._state === BEFORE_COMMENT) {\n\n /*\n\t\t*\tcomments\n\t\t*/\n this._stateBeforeComment(c);\n } else if (this._state === IN_COMMENT) {\n this._stateInComment(c);\n } else if (this._state === AFTER_COMMENT_1) {\n this._stateAfterComment1(c);\n } else if (this._state === AFTER_COMMENT_2) {\n this._stateAfterComment2(c);\n } else if (this._state === BEFORE_CDATA_1) {\n\n /*\n\t\t*\tcdata\n\t\t*/\n this._stateBeforeCdata1(c);\n } else if (this._state === BEFORE_CDATA_2) {\n this._stateBeforeCdata2(c);\n } else if (this._state === BEFORE_CDATA_3) {\n this._stateBeforeCdata3(c);\n } else if (this._state === BEFORE_CDATA_4) {\n this._stateBeforeCdata4(c);\n } else if (this._state === BEFORE_CDATA_5) {\n this._stateBeforeCdata5(c);\n } else if (this._state === BEFORE_CDATA_6) {\n this._stateBeforeCdata6(c);\n } else if (this._state === IN_CDATA) {\n this._stateInCdata(c);\n } else if (this._state === AFTER_CDATA_1) {\n this._stateAfterCdata1(c);\n } else if (this._state === AFTER_CDATA_2) {\n this._stateAfterCdata2(c);\n } else if (this._state === BEFORE_SPECIAL) {\n\n /*\n\t\t* special tags\n\t\t*/\n this._stateBeforeSpecial(c);\n } else if (this._state === BEFORE_SPECIAL_END) {\n this._stateBeforeSpecialEnd(c);\n } else if (this._state === BEFORE_SCRIPT_1) {\n\n /*\n\t\t* script\n\t\t*/\n this._stateBeforeScript1(c);\n } else if (this._state === BEFORE_SCRIPT_2) {\n this._stateBeforeScript2(c);\n } else if (this._state === BEFORE_SCRIPT_3) {\n this._stateBeforeScript3(c);\n } else if (this._state === BEFORE_SCRIPT_4) {\n this._stateBeforeScript4(c);\n } else if (this._state === BEFORE_SCRIPT_5) {\n this._stateBeforeScript5(c);\n } else if (this._state === AFTER_SCRIPT_1) {\n this._stateAfterScript1(c);\n } else if (this._state === AFTER_SCRIPT_2) {\n this._stateAfterScript2(c);\n } else if (this._state === AFTER_SCRIPT_3) {\n this._stateAfterScript3(c);\n } else if (this._state === AFTER_SCRIPT_4) {\n this._stateAfterScript4(c);\n } else if (this._state === AFTER_SCRIPT_5) {\n this._stateAfterScript5(c);\n } else if (this._state === BEFORE_STYLE_1) {\n\n /*\n\t\t* style\n\t\t*/\n this._stateBeforeStyle1(c);\n } else if (this._state === BEFORE_STYLE_2) {\n this._stateBeforeStyle2(c);\n } else if (this._state === BEFORE_STYLE_3) {\n this._stateBeforeStyle3(c);\n } else if (this._state === BEFORE_STYLE_4) {\n this._stateBeforeStyle4(c);\n } else if (this._state === AFTER_STYLE_1) {\n this._stateAfterStyle1(c);\n } else if (this._state === AFTER_STYLE_2) {\n this._stateAfterStyle2(c);\n } else if (this._state === AFTER_STYLE_3) {\n this._stateAfterStyle3(c);\n } else if (this._state === AFTER_STYLE_4) {\n this._stateAfterStyle4(c);\n } else if (this._state === BEFORE_ENTITY) {\n\n /*\n\t\t* entities\n\t\t*/\n this._stateBeforeEntity(c);\n } else if (this._state === BEFORE_NUMERIC_ENTITY) {\n this._stateBeforeNumericEntity(c);\n } else if (this._state === IN_NAMED_ENTITY) {\n this._stateInNamedEntity(c);\n } else if (this._state === IN_NUMERIC_ENTITY) {\n this._stateInNumericEntity(c);\n } else if (this._state === IN_HEX_ENTITY) {\n this._stateInHexEntity(c);\n } else {\n this._cbs.onerror(Error(\"unknown _state\"), this._state);\n }\n\n this._index++;\n }\n\n this._cleanup();\n};\n\nTokenizer.prototype.pause = function() {\n this._running = false;\n};\nTokenizer.prototype.resume = function() {\n this._running = true;\n\n if (this._index < this._buffer.length) {\n this._parse();\n }\n if (this._ended) {\n this._finish();\n }\n};\n\nTokenizer.prototype.end = function(chunk) {\n if (this._ended) this._cbs.onerror(Error(\".end() after done!\"));\n if (chunk) this.write(chunk);\n\n this._ended = true;\n\n if (this._running) this._finish();\n};\n\nTokenizer.prototype._finish = function() {\n //if there is remaining data, emit it in a reasonable way\n if (this._sectionStart < this._index) {\n this._handleTrailingData();\n }\n\n this._cbs.onend();\n};\n\nTokenizer.prototype._handleTrailingData = function() {\n var data = this._buffer.substr(this._sectionStart);\n\n if (\n this._state === IN_CDATA ||\n this._state === AFTER_CDATA_1 ||\n this._state === AFTER_CDATA_2\n ) {\n this._cbs.oncdata(data);\n } else if (\n this._state === IN_COMMENT ||\n this._state === AFTER_COMMENT_1 ||\n this._state === AFTER_COMMENT_2\n ) {\n this._cbs.oncomment(data);\n } else if (this._state === IN_NAMED_ENTITY && !this._xmlMode) {\n this._parseLegacyEntity();\n if (this._sectionStart < this._index) {\n this._state = this._baseState;\n this._handleTrailingData();\n }\n } else if (this._state === IN_NUMERIC_ENTITY && !this._xmlMode) {\n this._decodeNumericEntity(2, 10);\n if (this._sectionStart < this._index) {\n this._state = this._baseState;\n this._handleTrailingData();\n }\n } else if (this._state === IN_HEX_ENTITY && !this._xmlMode) {\n this._decodeNumericEntity(3, 16);\n if (this._sectionStart < this._index) {\n this._state = this._baseState;\n this._handleTrailingData();\n }\n } else if (\n this._state !== IN_TAG_NAME &&\n this._state !== BEFORE_ATTRIBUTE_NAME &&\n this._state !== BEFORE_ATTRIBUTE_VALUE &&\n this._state !== AFTER_ATTRIBUTE_NAME &&\n this._state !== IN_ATTRIBUTE_NAME &&\n this._state !== IN_ATTRIBUTE_VALUE_SQ &&\n this._state !== IN_ATTRIBUTE_VALUE_DQ &&\n this._state !== IN_ATTRIBUTE_VALUE_NQ &&\n this._state !== IN_CLOSING_TAG_NAME\n ) {\n this._cbs.ontext(data);\n }\n //else, ignore remaining data\n //TODO add a way to remove current tag\n};\n\nTokenizer.prototype.reset = function() {\n Tokenizer.call(\n this,\n { xmlMode: this._xmlMode, decodeEntities: this._decodeEntities },\n this._cbs\n );\n};\n\nTokenizer.prototype.getAbsoluteIndex = function() {\n return this._bufferOffset + this._index;\n};\n\nTokenizer.prototype._getSection = function() {\n return this._buffer.substring(this._sectionStart, this._index);\n};\n\nTokenizer.prototype._emitToken = function(name) {\n this._cbs[name](this._getSection());\n this._sectionStart = -1;\n};\n\nTokenizer.prototype._emitPartial = function(value) {\n if (this._baseState !== TEXT) {\n this._cbs.onattribdata(value); //TODO implement the new event\n } else {\n this._cbs.ontext(value);\n }\n};\n","var decodeMap = require(\"../maps/decode.json\");\n\nmodule.exports = decodeCodePoint;\n\n// modified version of https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119\nfunction decodeCodePoint(codePoint) {\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return \"\\uFFFD\";\n }\n\n if (codePoint in decodeMap) {\n codePoint = decodeMap[codePoint];\n }\n\n var output = \"\";\n\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n\n output += String.fromCharCode(codePoint);\n return output;\n}\n","var ElementType = require(\"domelementtype\");\n\nvar re_whitespace = /\\s+/g;\nvar NodePrototype = require(\"./lib/node\");\nvar ElementPrototype = require(\"./lib/element\");\n\nfunction DomHandler(callback, options, elementCB){\n\tif(typeof callback === \"object\"){\n\t\telementCB = options;\n\t\toptions = callback;\n\t\tcallback = null;\n\t} else if(typeof options === \"function\"){\n\t\telementCB = options;\n\t\toptions = defaultOpts;\n\t}\n\tthis._callback = callback;\n\tthis._options = options || defaultOpts;\n\tthis._elementCB = elementCB;\n\tthis.dom = [];\n\tthis._done = false;\n\tthis._tagStack = [];\n\tthis._parser = this._parser || null;\n}\n\n//default options\nvar defaultOpts = {\n\tnormalizeWhitespace: false, //Replace all whitespace with single spaces\n\twithStartIndices: false, //Add startIndex properties to nodes\n\twithEndIndices: false, //Add endIndex properties to nodes\n};\n\nDomHandler.prototype.onparserinit = function(parser){\n\tthis._parser = parser;\n};\n\n//Resets the handler back to starting state\nDomHandler.prototype.onreset = function(){\n\tDomHandler.call(this, this._callback, this._options, this._elementCB);\n};\n\n//Signals the handler that parsing is done\nDomHandler.prototype.onend = function(){\n\tif(this._done) return;\n\tthis._done = true;\n\tthis._parser = null;\n\tthis._handleCallback(null);\n};\n\nDomHandler.prototype._handleCallback =\nDomHandler.prototype.onerror = function(error){\n\tif(typeof this._callback === \"function\"){\n\t\tthis._callback(error, this.dom);\n\t} else {\n\t\tif(error) throw error;\n\t}\n};\n\nDomHandler.prototype.onclosetag = function(){\n\t//if(this._tagStack.pop().name !== name) this._handleCallback(Error(\"Tagname didn't match!\"));\n\t\n\tvar elem = this._tagStack.pop();\n\n\tif(this._options.withEndIndices && elem){\n\t\telem.endIndex = this._parser.endIndex;\n\t}\n\n\tif(this._elementCB) this._elementCB(elem);\n};\n\nDomHandler.prototype._createDomElement = function(properties){\n\tif (!this._options.withDomLvl1) return properties;\n\n\tvar element;\n\tif (properties.type === \"tag\") {\n\t\telement = Object.create(ElementPrototype);\n\t} else {\n\t\telement = Object.create(NodePrototype);\n\t}\n\n\tfor (var key in properties) {\n\t\tif (properties.hasOwnProperty(key)) {\n\t\t\telement[key] = properties[key];\n\t\t}\n\t}\n\n\treturn element;\n};\n\nDomHandler.prototype._addDomElement = function(element){\n\tvar parent = this._tagStack[this._tagStack.length - 1];\n\tvar siblings = parent ? parent.children : this.dom;\n\tvar previousSibling = siblings[siblings.length - 1];\n\n\telement.next = null;\n\n\tif(this._options.withStartIndices){\n\t\telement.startIndex = this._parser.startIndex;\n\t}\n\tif(this._options.withEndIndices){\n\t\telement.endIndex = this._parser.endIndex;\n\t}\n\n\tif(previousSibling){\n\t\telement.prev = previousSibling;\n\t\tpreviousSibling.next = element;\n\t} else {\n\t\telement.prev = null;\n\t}\n\n\tsiblings.push(element);\n\telement.parent = parent || null;\n};\n\nDomHandler.prototype.onopentag = function(name, attribs){\n\tvar properties = {\n\t\ttype: name === \"script\" ? ElementType.Script : name === \"style\" ? ElementType.Style : ElementType.Tag,\n\t\tname: name,\n\t\tattribs: attribs,\n\t\tchildren: []\n\t};\n\n\tvar element = this._createDomElement(properties);\n\n\tthis._addDomElement(element);\n\n\tthis._tagStack.push(element);\n};\n\nDomHandler.prototype.ontext = function(data){\n\t//the ignoreWhitespace is officially dropped, but for now,\n\t//it's an alias for normalizeWhitespace\n\tvar normalize = this._options.normalizeWhitespace || this._options.ignoreWhitespace;\n\n\tvar lastTag;\n\n\tif(!this._tagStack.length && this.dom.length && (lastTag = this.dom[this.dom.length-1]).type === ElementType.Text){\n\t\tif(normalize){\n\t\t\tlastTag.data = (lastTag.data + data).replace(re_whitespace, \" \");\n\t\t} else {\n\t\t\tlastTag.data += data;\n\t\t}\n\t} else {\n\t\tif(\n\t\t\tthis._tagStack.length &&\n\t\t\t(lastTag = this._tagStack[this._tagStack.length - 1]) &&\n\t\t\t(lastTag = lastTag.children[lastTag.children.length - 1]) &&\n\t\t\tlastTag.type === ElementType.Text\n\t\t){\n\t\t\tif(normalize){\n\t\t\t\tlastTag.data = (lastTag.data + data).replace(re_whitespace, \" \");\n\t\t\t} else {\n\t\t\t\tlastTag.data += data;\n\t\t\t}\n\t\t} else {\n\t\t\tif(normalize){\n\t\t\t\tdata = data.replace(re_whitespace, \" \");\n\t\t\t}\n\n\t\t\tvar element = this._createDomElement({\n\t\t\t\tdata: data,\n\t\t\t\ttype: ElementType.Text\n\t\t\t});\n\n\t\t\tthis._addDomElement(element);\n\t\t}\n\t}\n};\n\nDomHandler.prototype.oncomment = function(data){\n\tvar lastTag = this._tagStack[this._tagStack.length - 1];\n\n\tif(lastTag && lastTag.type === ElementType.Comment){\n\t\tlastTag.data += data;\n\t\treturn;\n\t}\n\n\tvar properties = {\n\t\tdata: data,\n\t\ttype: ElementType.Comment\n\t};\n\n\tvar element = this._createDomElement(properties);\n\n\tthis._addDomElement(element);\n\tthis._tagStack.push(element);\n};\n\nDomHandler.prototype.oncdatastart = function(){\n\tvar properties = {\n\t\tchildren: [{\n\t\t\tdata: \"\",\n\t\t\ttype: ElementType.Text\n\t\t}],\n\t\ttype: ElementType.CDATA\n\t};\n\n\tvar element = this._createDomElement(properties);\n\n\tthis._addDomElement(element);\n\tthis._tagStack.push(element);\n};\n\nDomHandler.prototype.oncommentend = DomHandler.prototype.oncdataend = function(){\n\tthis._tagStack.pop();\n};\n\nDomHandler.prototype.onprocessinginstruction = function(name, data){\n\tvar element = this._createDomElement({\n\t\tname: name,\n\t\tdata: data,\n\t\ttype: ElementType.Directive\n\t});\n\n\tthis._addDomElement(element);\n};\n\nmodule.exports = DomHandler;\n","// This object will be used as the prototype for Nodes when creating a\n// DOM-Level-1-compliant structure.\nvar NodePrototype = module.exports = {\n\tget firstChild() {\n\t\tvar children = this.children;\n\t\treturn children && children[0] || null;\n\t},\n\tget lastChild() {\n\t\tvar children = this.children;\n\t\treturn children && children[children.length - 1] || null;\n\t},\n\tget nodeType() {\n\t\treturn nodeTypes[this.type] || nodeTypes.element;\n\t}\n};\n\nvar domLvl1 = {\n\ttagName: \"name\",\n\tchildNodes: \"children\",\n\tparentNode: \"parent\",\n\tpreviousSibling: \"prev\",\n\tnextSibling: \"next\",\n\tnodeValue: \"data\"\n};\n\nvar nodeTypes = {\n\telement: 1,\n\ttext: 3,\n\tcdata: 4,\n\tcomment: 8\n};\n\nObject.keys(domLvl1).forEach(function(key) {\n\tvar shorthand = domLvl1[key];\n\tObject.defineProperty(NodePrototype, key, {\n\t\tget: function() {\n\t\t\treturn this[shorthand] || null;\n\t\t},\n\t\tset: function(val) {\n\t\t\tthis[shorthand] = val;\n\t\t\treturn val;\n\t\t}\n\t});\n});\n","var DomUtils = module.exports;\n\n[\n\trequire(\"./lib/stringify\"),\n\trequire(\"./lib/traversal\"),\n\trequire(\"./lib/manipulation\"),\n\trequire(\"./lib/querying\"),\n\trequire(\"./lib/legacy\"),\n\trequire(\"./lib/helpers\")\n].forEach(function(ext){\n\tObject.keys(ext).forEach(function(key){\n\t\tDomUtils[key] = ext[key].bind(DomUtils);\n\t});\n});\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar legacy_json_1 = __importDefault(require(\"./maps/legacy.json\"));\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar decode_codepoint_1 = __importDefault(require(\"./decode_codepoint\"));\nexports.decodeXML = getStrictDecoder(xml_json_1.default);\nexports.decodeHTMLStrict = getStrictDecoder(entities_json_1.default);\nfunction getStrictDecoder(map) {\n var keys = Object.keys(map).join(\"|\");\n var replace = getReplacer(map);\n keys += \"|#[xX][\\\\da-fA-F]+|#\\\\d+\";\n var re = new RegExp(\"&(?:\" + keys + \");\", \"g\");\n return function (str) { return String(str).replace(re, replace); };\n}\nvar sorter = function (a, b) { return (a < b ? 1 : -1); };\nexports.decodeHTML = (function () {\n var legacy = Object.keys(legacy_json_1.default).sort(sorter);\n var keys = Object.keys(entities_json_1.default).sort(sorter);\n for (var i = 0, j = 0; i < keys.length; i++) {\n if (legacy[j] === keys[i]) {\n keys[i] += \";?\";\n j++;\n }\n else {\n keys[i] += \";\";\n }\n }\n var re = new RegExp(\"&(?:\" + keys.join(\"|\") + \"|#[xX][\\\\da-fA-F]+;?|#\\\\d+;?)\", \"g\");\n var replace = getReplacer(entities_json_1.default);\n function replacer(str) {\n if (str.substr(-1) !== \";\")\n str += \";\";\n return replace(str);\n }\n //TODO consider creating a merged map\n return function (str) {\n return String(str).replace(re, replacer);\n };\n})();\nfunction getReplacer(map) {\n return function replace(str) {\n if (str.charAt(1) === \"#\") {\n if (str.charAt(2) === \"X\" || str.charAt(2) === \"x\") {\n return decode_codepoint_1.default(parseInt(str.substr(3), 16));\n }\n return decode_codepoint_1.default(parseInt(str.substr(2), 10));\n }\n return map[str.slice(1, -1)];\n };\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar inverseXML = getInverseObj(xml_json_1.default);\nvar xmlReplacer = getInverseReplacer(inverseXML);\nexports.encodeXML = getInverse(inverseXML, xmlReplacer);\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar inverseHTML = getInverseObj(entities_json_1.default);\nvar htmlReplacer = getInverseReplacer(inverseHTML);\nexports.encodeHTML = getInverse(inverseHTML, htmlReplacer);\nfunction getInverseObj(obj) {\n return Object.keys(obj)\n .sort()\n .reduce(function (inverse, name) {\n inverse[obj[name]] = \"&\" + name + \";\";\n return inverse;\n }, {});\n}\nfunction getInverseReplacer(inverse) {\n var single = [];\n var multiple = [];\n Object.keys(inverse).forEach(function (k) {\n return k.length === 1\n ? // Add value to single array\n single.push(\"\\\\\" + k)\n : // Add value to multiple array\n multiple.push(k);\n });\n //TODO add ranges\n multiple.unshift(\"[\" + single.join(\"\") + \"]\");\n return new RegExp(multiple.join(\"|\"), \"g\");\n}\nvar reNonASCII = /[^\\0-\\x7F]/g;\nvar reAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\nfunction singleCharReplacer(c) {\n return \"&#x\" + c\n .charCodeAt(0)\n .toString(16)\n .toUpperCase() + \";\";\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\nfunction astralReplacer(c, _) {\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n var high = c.charCodeAt(0);\n var low = c.charCodeAt(1);\n var codePoint = (high - 0xd800) * 0x400 + low - 0xdc00 + 0x10000;\n return \"&#x\" + codePoint.toString(16).toUpperCase() + \";\";\n}\nfunction getInverse(inverse, re) {\n return function (data) {\n return data\n .replace(re, function (name) { return inverse[name]; })\n .replace(reAstralSymbols, astralReplacer)\n .replace(reNonASCII, singleCharReplacer);\n };\n}\nvar reXmlChars = getInverseReplacer(inverseXML);\nfunction escape(data) {\n return data\n .replace(reXmlChars, singleCharReplacer)\n .replace(reAstralSymbols, astralReplacer)\n .replace(reNonASCII, singleCharReplacer);\n}\nexports.escape = escape;\n","module.exports = Stream;\n\nvar Parser = require(\"./Parser.js\");\nvar WritableStream = require(\"readable-stream\").Writable;\nvar StringDecoder = require(\"string_decoder\").StringDecoder;\nvar Buffer = require(\"buffer\").Buffer;\n\nfunction Stream(cbs, options) {\n var parser = (this._parser = new Parser(cbs, options));\n var decoder = (this._decoder = new StringDecoder());\n\n WritableStream.call(this, { decodeStrings: false });\n\n this.once(\"finish\", function() {\n parser.end(decoder.end());\n });\n}\n\nrequire(\"inherits\")(Stream, WritableStream);\n\nStream.prototype._write = function(chunk, encoding, cb) {\n if (chunk instanceof Buffer) chunk = this._decoder.write(chunk);\n this._parser.write(chunk);\n cb();\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _supportsColor = _interopRequireDefault(require(\"supports-color\"));\n\nvar _chalk = _interopRequireDefault(require(\"chalk\"));\n\nvar _terminalHighlight = _interopRequireDefault(require(\"./terminal-highlight\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * The CSS parser throws this error for broken CSS.\n *\n * Custom parsers can throw this error for broken custom syntax using\n * the {@link Node#error} method.\n *\n * PostCSS will use the input source map to detect the original error location.\n * If you wrote a Sass file, compiled it to CSS and then parsed it with PostCSS,\n * PostCSS will show the original position in the Sass file.\n *\n * If you need the position in the PostCSS input\n * (e.g., to debug the previous compiler), use `error.input.file`.\n *\n * @example\n * // Catching and checking syntax error\n * try {\n * postcss.parse('a{')\n * } catch (error) {\n * if (error.name === 'CssSyntaxError') {\n * error //=> CssSyntaxError\n * }\n * }\n *\n * @example\n * // Raising error from plugin\n * throw node.error('Unknown variable', { plugin: 'postcss-vars' })\n */\nvar CssSyntaxError =\n/*#__PURE__*/\nfunction (_Error) {\n _inheritsLoose(CssSyntaxError, _Error);\n\n /**\n * @param {string} message Error message.\n * @param {number} [line] Source line of the error.\n * @param {number} [column] Source column of the error.\n * @param {string} [source] Source code of the broken file.\n * @param {string} [file] Absolute path to the broken file.\n * @param {string} [plugin] PostCSS plugin name, if error came from plugin.\n */\n function CssSyntaxError(message, line, column, source, file, plugin) {\n var _this;\n\n _this = _Error.call(this, message) || this;\n /**\n * Always equal to `'CssSyntaxError'`. You should always check error type\n * by `error.name === 'CssSyntaxError'`\n * instead of `error instanceof CssSyntaxError`,\n * because npm could have several PostCSS versions.\n *\n * @type {string}\n *\n * @example\n * if (error.name === 'CssSyntaxError') {\n * error //=> CssSyntaxError\n * }\n */\n\n _this.name = 'CssSyntaxError';\n /**\n * Error message.\n *\n * @type {string}\n *\n * @example\n * error.message //=> 'Unclosed block'\n */\n\n _this.reason = message;\n\n if (file) {\n /**\n * Absolute path to the broken file.\n *\n * @type {string}\n *\n * @example\n * error.file //=> 'a.sass'\n * error.input.file //=> 'a.css'\n */\n _this.file = file;\n }\n\n if (source) {\n /**\n * Source code of the broken file.\n *\n * @type {string}\n *\n * @example\n * error.source //=> 'a { b {} }'\n * error.input.column //=> 'a b { }'\n */\n _this.source = source;\n }\n\n if (plugin) {\n /**\n * Plugin name, if error came from plugin.\n *\n * @type {string}\n *\n * @example\n * error.plugin //=> 'postcss-vars'\n */\n _this.plugin = plugin;\n }\n\n if (typeof line !== 'undefined' && typeof column !== 'undefined') {\n /**\n * Source line of the error.\n *\n * @type {number}\n *\n * @example\n * error.line //=> 2\n * error.input.line //=> 4\n */\n _this.line = line;\n /**\n * Source column of the error.\n *\n * @type {number}\n *\n * @example\n * error.column //=> 1\n * error.input.column //=> 4\n */\n\n _this.column = column;\n }\n\n _this.setMessage();\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_assertThisInitialized(_this), CssSyntaxError);\n }\n\n return _this;\n }\n\n var _proto = CssSyntaxError.prototype;\n\n _proto.setMessage = function setMessage() {\n /**\n * Full error text in the GNU error format\n * with plugin, file, line and column.\n *\n * @type {string}\n *\n * @example\n * error.message //=> 'a.css:1:1: Unclosed block'\n */\n this.message = this.plugin ? this.plugin + ': ' : '';\n this.message += this.file ? this.file : '';\n\n if (typeof this.line !== 'undefined') {\n this.message += ':' + this.line + ':' + this.column;\n }\n\n this.message += ': ' + this.reason;\n }\n /**\n * Returns a few lines of CSS source that caused the error.\n *\n * If the CSS has an input source map without `sourceContent`,\n * this method will return an empty string.\n *\n * @param {boolean} [color] Whether arrow will be colored red by terminal\n * color codes. By default, PostCSS will detect\n * color support by `process.stdout.isTTY`\n * and `process.env.NODE_DISABLE_COLORS`.\n *\n * @example\n * error.showSourceCode() //=> \" 4 | }\n * // 5 | a {\n * // > 6 | bad\n * // | ^\n * // 7 | }\n * // 8 | b {\"\n *\n * @return {string} Few lines of CSS source that caused the error.\n */\n ;\n\n _proto.showSourceCode = function showSourceCode(color) {\n var _this2 = this;\n\n if (!this.source) return '';\n var css = this.source;\n\n if (_terminalHighlight.default) {\n if (typeof color === 'undefined') color = _supportsColor.default.stdout;\n if (color) css = (0, _terminalHighlight.default)(css);\n }\n\n var lines = css.split(/\\r?\\n/);\n var start = Math.max(this.line - 3, 0);\n var end = Math.min(this.line + 2, lines.length);\n var maxWidth = String(end).length;\n\n function mark(text) {\n if (color && _chalk.default.red) {\n return _chalk.default.red.bold(text);\n }\n\n return text;\n }\n\n function aside(text) {\n if (color && _chalk.default.gray) {\n return _chalk.default.gray(text);\n }\n\n return text;\n }\n\n return lines.slice(start, end).map(function (line, index) {\n var number = start + 1 + index;\n var gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | ';\n\n if (number === _this2.line) {\n var spacing = aside(gutter.replace(/\\d/g, ' ')) + line.slice(0, _this2.column - 1).replace(/[^\\t]/g, ' ');\n return mark('>') + aside(gutter) + line + '\\n ' + spacing + mark('^');\n }\n\n return ' ' + aside(gutter) + line;\n }).join('\\n');\n }\n /**\n * Returns error position, message and source code of the broken part.\n *\n * @example\n * error.toString() //=> \"CssSyntaxError: app.css:1:1: Unclosed block\n * // > 1 | a {\n * // | ^\"\n *\n * @return {string} Error position, message and source code.\n */\n ;\n\n _proto.toString = function toString() {\n var code = this.showSourceCode();\n\n if (code) {\n code = '\\n\\n' + code + '\\n';\n }\n\n return this.name + ': ' + this.message + code;\n }\n /**\n * @memberof CssSyntaxError#\n * @member {Input} input Input object with PostCSS internal information\n * about input file. If input has source map\n * from previous tool, PostCSS will use origin\n * (for example, Sass) source. You can use this\n * object to get PostCSS input source.\n *\n * @example\n * error.input.file //=> 'a.css'\n * error.file //=> 'a.sass'\n */\n ;\n\n return CssSyntaxError;\n}(_wrapNativeSuper(Error));\n\nvar _default = CssSyntaxError;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNzcy1zeW50YXgtZXJyb3IuZXM2Il0sIm5hbWVzIjpbIkNzc1N5bnRheEVycm9yIiwibWVzc2FnZSIsImxpbmUiLCJjb2x1bW4iLCJzb3VyY2UiLCJmaWxlIiwicGx1Z2luIiwibmFtZSIsInJlYXNvbiIsInNldE1lc3NhZ2UiLCJFcnJvciIsImNhcHR1cmVTdGFja1RyYWNlIiwic2hvd1NvdXJjZUNvZGUiLCJjb2xvciIsImNzcyIsInRlcm1pbmFsSGlnaGxpZ2h0Iiwic3VwcG9ydHNDb2xvciIsInN0ZG91dCIsImxpbmVzIiwic3BsaXQiLCJzdGFydCIsIk1hdGgiLCJtYXgiLCJlbmQiLCJtaW4iLCJsZW5ndGgiLCJtYXhXaWR0aCIsIlN0cmluZyIsIm1hcmsiLCJ0ZXh0IiwiY2hhbGsiLCJyZWQiLCJib2xkIiwiYXNpZGUiLCJncmF5Iiwic2xpY2UiLCJtYXAiLCJpbmRleCIsIm51bWJlciIsImd1dHRlciIsInNwYWNpbmciLCJyZXBsYWNlIiwiam9pbiIsInRvU3RyaW5nIiwiY29kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBMkJNQSxjOzs7OztBQUNKOzs7Ozs7OztBQVFBLDBCQUFhQyxPQUFiLEVBQXNCQyxJQUF0QixFQUE0QkMsTUFBNUIsRUFBb0NDLE1BQXBDLEVBQTRDQyxJQUE1QyxFQUFrREMsTUFBbEQsRUFBMEQ7QUFBQTs7QUFDeEQsOEJBQU1MLE9BQU47QUFFQTs7Ozs7Ozs7Ozs7Ozs7QUFhQSxVQUFLTSxJQUFMLEdBQVksZ0JBQVo7QUFDQTs7Ozs7Ozs7O0FBUUEsVUFBS0MsTUFBTCxHQUFjUCxPQUFkOztBQUVBLFFBQUlJLElBQUosRUFBVTtBQUNSOzs7Ozs7Ozs7QUFTQSxZQUFLQSxJQUFMLEdBQVlBLElBQVo7QUFDRDs7QUFDRCxRQUFJRCxNQUFKLEVBQVk7QUFDVjs7Ozs7Ozs7O0FBU0EsWUFBS0EsTUFBTCxHQUFj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OztBQUNBLFVBQUlZLE1BQU0sS0FBSyxNQUFJLENBQUNwQyxJQUFwQixFQUEwQjtBQUN4QixZQUFJc0MsT0FBTyxHQUFHUCxLQUFLLENBQUNNLE1BQU0sQ0FBQ0UsT0FBUCxDQUFlLEtBQWYsRUFBc0IsR0FBdEIsQ0FBRCxDQUFMLEdBQ1p2QyxJQUFJLENBQUNpQyxLQUFMLENBQVcsQ0FBWCxFQUFjLE1BQUksQ0FBQ2hDLE1BQUwsR0FBYyxDQUE1QixFQUErQnNDLE9BQS9CLENBQXVDLFFBQXZDLEVBQWlELEdBQWpELENBREY7QUFFQSxlQUFPYixJQUFJLENBQUMsR0FBRCxDQUFKLEdBQVlLLEtBQUssQ0FBQ00sTUFBRCxDQUFqQixHQUE0QnJDLElBQTVCLEdBQW1DLEtBQW5DLEdBQTJDc0MsT0FBM0MsR0FBcURaLElBQUksQ0FBQyxHQUFELENBQWhFO0FBQ0Q7O0FBQ0QsYUFBTyxNQUFNSyxLQUFLLENBQUNNLE1BQUQsQ0FBWCxHQUFzQnJDLElBQTdCO0FBQ0QsS0FUTSxFQVNKd0MsSUFUSSxDQVNDLElBVEQsQ0FBUDtBQVVEO0FBRUQ7Ozs7Ozs7Ozs7OztTQVVBQyxRLEdBQUEsb0JBQVk7QUFDVixRQUFJQyxJQUFJLEdBQUcsS0FBS2hDLGNBQUwsRUFBWDs7QUFDQSxRQUFJZ0MsSUFBSixFQUFVO0FBQ1JBLE1BQUFBLElBQUksR0FBRyxTQUFTQSxJQUFULEdBQWdCLElBQXZCO0FBQ0Q7O0FBQ0QsV0FBTyxLQUFLckMsSUFBTCxHQUFZLElBQVosR0FBbUIsS0FBS04sT0FBeEIsR0FBa0MyQyxJQUF6QztBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7OzttQkF0TTJCbEMsSzs7ZUFvTmRWLGMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3VwcG9ydHNDb2xvciBmcm9tICdzdXBwb3J0cy1jb2xvcidcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsaydcblxuaW1wb3J0IHRlcm1pbmFsSGlnaGxpZ2h0IGZyb20gJy4vdGVybWluYWwtaGlnaGxpZ2h0J1xuXG4vKipcbiAqIFRoZSBDU1MgcGFyc2VyIHRocm93cyB0aGlzIGVycm9yIGZvciBicm9rZW4gQ1NTLlxuICpcbiAqIEN1c3RvbSBwYXJzZXJzIGNhbiB0aHJvdyB0aGlzIGVycm9yIGZvciBicm9rZW4gY3VzdG9tIHN5bnRheCB1c2luZ1xuICogdGhlIHtAbGluayBOb2RlI2Vycm9yfSBtZXRob2QuXG4gKlxuICogUG9zdENTUyB3aWxsIHVzZSB0aGUgaW5wdXQgc291cmNlIG1hcCB0byBkZXRlY3QgdGhlIG9yaWdpbmFsIGVycm9yIGxvY2F0aW9uLlxuICogSWYgeW91IHdyb3RlIGEgU2FzcyBmaWxlLCBjb21waWxlZCBpdCB0byBDU1MgYW5kIHRoZW4gcGFyc2VkIGl0IHdpdGggUG9zdENTUyxcbiAqIFBvc3RDU1Mgd2lsbCBzaG93IHRoZSBvcmlnaW5hbCBwb3NpdGlvbiBpbiB0aGUgU2FzcyBmaWxlLlxuICpcbiAqIElmIHlvdSBuZWVkIHRoZSBwb3NpdGlvbiBpbiB0aGUgUG9zdENTUyBpbnB1dFxuICogKGUuZy4sIHRvIGRlYnVnIHRoZSBwcmV2aW91cyBjb21waWxlciksIHVzZSBgZXJyb3IuaW5wdXQuZmlsZWAuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENhdGNoaW5nIGFuZCBjaGVja2luZyBzeW50YXggZXJyb3JcbiAqIHRyeSB7XG4gKiAgIHBvc3Rjc3MucGFyc2UoJ2F7JylcbiAqIH0gY2F0Y2ggKGVycm9yKSB7XG4gKiAgIGlmIChlcnJvci5uYW1lID09PSAnQ3NzU3ludGF4RXJyb3InKSB7XG4gKiAgICAgZXJyb3IgLy89PiBDc3NTeW50YXhFcnJvclxuICogICB9XG4gKiB9XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJhaXNpbmcgZXJyb3IgZnJvbSBwbHVnaW5cbiAqIHRocm93IG5vZGUuZXJyb3IoJ1Vua25vd24gdmFyaWFibGUnLCB7IHBsdWdpbjogJ3Bvc3Rjc3MtdmFycycgfSlcbiAqL1xuY2xhc3MgQ3NzU3ludGF4RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAgRXJyb3IgbWVzc2FnZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtsaW5lXSAgIFNvdXJjZSBsaW5lIG9mIHRoZSBlcnJvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtjb2x1bW5dIFNvdXJjZSBjb2x1bW4gb2YgdGhlIGVycm9yLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3NvdXJjZV0gU291cmNlIGNvZGUgb2YgdGhlIGJyb2tlbiBmaWxlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2ZpbGVdICAgQWJzb2x1dGUgcGF0aCB0byB0aGUgYnJva2VuIGZpbGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcGx1Z2luXSBQb3N0Q1NTIHBsdWdpbiBuYW1lLCBpZiBlcnJvciBjYW1lIGZyb20gcGx1Z2luLlxuICAgKi9cbiAgY29uc3RydWN0b3IgKG1lc3NhZ2UsIGxpbmUsIGNvbHVtbiwgc291cmNlLCBmaWxlLCBwbHVnaW4pIHtcbiAgICBzdXBlcihtZXNzYWdlKVxuXG4gICAgLyoqXG4gICAgICogQWx3YXlzIGVxdWFsIHRvIGAnQ3NzU3ludGF4RXJyb3InYC4gWW91IHNob3VsZCBhbHdheXMgY2hlY2sgZXJyb3IgdHlwZVxuICAgICAqIGJ5IGBlcnJvci5uYW1lID09PSAnQ3NzU3ludGF4RXJyb3InYFxuICAgICAqIGluc3RlYWQgb2YgYGVycm9yIGluc3RhbmNlb2YgQ3NzU3ludGF4RXJyb3JgLFxuICAgICAqIGJlY2F1c2UgbnBtIGNvdWxkIGhhdmUgc2V2ZXJhbCBQb3N0Q1NTIHZlcnNpb25zLlxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogaWYgKGVycm9yLm5hbWUgPT09ICdDc3NTeW50YXhFcnJvcicpIHtcbiAgICAgKiAgIGVycm9yIC8vPT4gQ3NzU3ludGF4RXJyb3JcbiAgICAgKiB9XG4gICAgICovXG4gICAgdGhpcy5uYW1lID0gJ0Nzc1N5bnRheEVycm9yJ1xuICAgIC8qKlxuICAgICAqIEVycm9yIG1lc3NhZ2UuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBlcnJvci5tZXNzYWdlIC8vPT4gJ1VuY2xvc2VkIGJsb2NrJ1xuICAgICAqL1xuICAgIHRoaXMucmVhc29uID0gbWVzc2FnZVxuXG4gICAgaWYgKGZpbGUpIHtcbiAgICAgIC8qKlxuICAgICAgICogQWJzb2x1dGUgcGF0aCB0byB0aGUgYnJva2VuIGZpbGUuXG4gICAgICAgKlxuICAgICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgICAqXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICogZXJyb3IuZmlsZSAgICAgICAvLz0+ICdhLnNhc3MnXG4gICAgICAgKiBlcnJvci5pbnB1dC5maWxlIC8vPT4gJ2EuY3NzJ1xuICAgICAgICovXG4gICAgICB0aGlzLmZpbGUgPSBmaWxlXG4gICAgfVxuICAgIGlmIChzb3VyY2UpIHtcbiAgICAgIC8qKlxuICAgICAgICogU291cmNlIGNvZGUgb2YgdGhlIGJyb2tlbiBmaWxlLlxuICAgICAgICpcbiAgICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICAgKlxuICAgICAgICogQGV4YW1wbGVcbiAgICAgICAqIGVycm9yLnNvdXJjZSAgICAgICAvLz0+ICdhIHsgYiB7fSB9J1xuICAgICAgICogZXJyb3IuaW5wdXQuY29sdW1uIC8vPT4gJ2EgYiB7IH0nXG4gICAgICAgKi9cbiAgICAgIHRoaXMuc291cmNlID0gc291cmNlXG4gICAgfVxuICAgIGlmIChwbHVnaW4pIHtcbiAgICAgIC8qKlxuICAgICAgICogUGx1Z2luIG5hbWUsIGlmIGVycm9yIGNhbWUgZnJvbSBwbHVnaW4uXG4gICAgICAgKlxuICAgICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgICAqXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICogZXJyb3IucGx1Z2luIC8vPT4gJ3Bvc3Rjc3MtdmFycydcbiAgICAgICAqL1xuICAgICAgdGhpcy5wbHVnaW4gPSBwbHVnaW5cbiAgICB9XG4gICAgaWYgKHR5cGVvZiBsaW5lICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgY29sdW1uICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgLyoqXG4gICAgICAgKiBTb3VyY2UgbGluZSBvZiB0aGUgZXJyb3IuXG4gICAgICAgKlxuICAgICAgICogQHR5cGUge251bWJlcn1cbiAgICAgICAqXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICogZXJyb3IubGluZSAgICAgICAvLz0+IDJcbiAgICAgICAqIGVycm9yLmlucHV0LmxpbmUgLy89PiA0XG4gICAgICAgKi9cbiAgICAgIHRoaXMubGluZSA9IGxpbmVcbiAgICAgIC8qKlxuICAgICAgICogU291cmNlIGNvbHVtbiBvZiB0aGUgZXJyb3IuXG4gICAgICAgKlxuICAgICAgICogQHR5cGUge251bWJlcn1cbiAgICAgICAqXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICogZXJyb3IuY29sdW1uICAgICAgIC8vPT4gMVxuICAgICAgICogZXJyb3IuaW5wdXQuY29sdW1uIC8vPT4gNFxuICAgICAgICovXG4gICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtblxuICAgIH1cblxuICAgIHRoaXMuc2V0TWVzc2FnZSgpXG5cbiAgICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHtcbiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIENzc1N5bnRheEVycm9yKVxuICAgIH1cbiAgfVxuXG4gIHNldE1lc3NhZ2UgKCkge1xuICAgIC8qKlxuICAgICAqIEZ1bGwgZXJyb3IgdGV4dCBpbiB0aGUgR05VIGVycm9yIGZvcm1hdFxuICAgICAqIHdpdGggcGx1Z2luLCBmaWxlLCBsaW5lIGFuZCBjb2x1bW4uXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBlcnJvci5tZXNzYWdlIC8vPT4gJ2EuY3NzOjE6MTogVW5jbG9zZWQgYmxvY2snXG4gICAgICovXG4gICAgdGhpcy5tZXNzYWdlID0gdGhpcy5wbHVnaW4gPyB0aGlzLnBsdWdpbiArICc6ICcgOiAnJ1xuICAgIHRoaXMubWVzc2FnZSArPSB0aGlzLmZpbGUgPyB0aGlzLmZpbGUgOiAnPGNzcyBpbnB1dD4nXG4gICAgaWYgKHR5cGVvZiB0aGlzLmxpbmUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aGlzLm1lc3NhZ2UgKz0gJzonICsgdGhpcy5saW5lICsgJzonICsgdGhpcy5jb2x1bW5cbiAgICB9XG4gICAgdGhpcy5tZXNzYWdlICs9ICc6ICcgKyB0aGlzLnJlYXNvblxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBmZXcgbGluZXMgb2YgQ1NTIHNvdXJjZSB0aGF0IGNhdXNlZCB0aGUgZXJyb3IuXG4gICAqXG4gICAqIElmIHRoZSBDU1MgaGFzIGFuIGlucHV0IHNvdXJjZSBtYXAgd2l0aG91dCBgc291cmNlQ29udGVudGAsXG4gICAqIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIGFuIGVtcHR5IHN0cmluZy5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBbY29sb3JdIFdoZXRoZXIgYXJyb3cgd2lsbCBiZSBjb2xvcmVkIHJlZCBieSB0ZXJtaW5hbFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgY29kZXMuIEJ5IGRlZmF1bHQsIFBvc3RDU1Mgd2lsbCBkZXRlY3RcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yIHN1cHBvcnQgYnkgYHByb2Nlc3Muc3Rkb3V0LmlzVFRZYFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGBwcm9jZXNzLmVudi5OT0RFX0RJU0FCTEVfQ09MT1JTYC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZXJyb3Iuc2hvd1NvdXJjZUNvZGUoKSAvLz0+IFwiICA0IHwgfVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgNSB8IGEge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgID4gNiB8ICAgYmFkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgIHwgICBeXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICA3IHwgfVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgOCB8IGIge1wiXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ30gRmV3IGxpbmVzIG9mIENTUyBzb3VyY2UgdGhhdCBjYXVzZWQgdGhlIGVycm9yLlxuICAgKi9cbiAgc2hvd1NvdXJjZUNvZGUgKGNvbG9yKSB7XG4gICAgaWYgKCF0aGlzLnNvdXJjZSkgcmV0dXJuICcnXG5cbiAgICBsZXQgY3NzID0gdGhpcy5zb3VyY2VcbiAgICBpZiAodGVybWluYWxIaWdobGlnaHQpIHtcbiAgICAgIGlmICh0eXBlb2YgY29sb3IgPT09ICd1bmRlZmluZWQnKSBjb2xvciA9IHN1cHBvcnRzQ29sb3Iuc3Rkb3V0XG4gICAgICBpZiAoY29sb3IpIGNzcyA9IHRlcm1pbmFsSGlnaGxpZ2h0KGNzcylcbiAgICB9XG5cbiAgICBsZXQgbGluZXMgPSBjc3Muc3BsaXQoL1xccj9cXG4vKVxuICAgIGxldCBzdGFydCA9IE1hdGgubWF4KHRoaXMubGluZSAtIDMsIDApXG4gICAgbGV0IGVuZCA9IE1hdGgubWluKHRoaXMubGluZSArIDIsIGxpbmVzLmxlbmd0aClcblxuICAgIGxldCBtYXhXaWR0aCA9IFN0cmluZyhlbmQpLmxlbmd0aFxuXG4gICAgZnVuY3Rpb24gbWFyayAodGV4dCkge1xuICAgICAgaWYgKGNvbG9yICYmIGNoYWxrLnJlZCkge1xuICAgICAgICByZXR1cm4gY2hhbGsucmVkLmJvbGQodGV4dClcbiAgICAgIH1cbiAgICAgIHJldHVybiB0ZXh0XG4gICAgfVxuICAgIGZ1bmN0aW9uIGFzaWRlICh0ZXh0KSB7XG4gICAgICBpZiAoY29sb3IgJiYgY2hhbGsuZ3JheSkge1xuICAgICAgICByZXR1cm4gY2hhbGsuZ3JheSh0ZXh0KVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRleHRcbiAgICB9XG5cbiAgICByZXR1cm4gbGluZXMuc2xpY2Uoc3RhcnQsIGVuZCkubWFwKChsaW5lLCBpbmRleCkgPT4ge1xuICAgICAgbGV0IG51bWJlciA9IHN0YXJ0ICsgMSArIGluZGV4XG4gICAgICBsZXQgZ3V0dGVyID0gJyAnICsgKCcgJyArIG51bWJlcikuc2xpY2UoLW1heFdpZHRoKSArICcgfCAnXG4gICAgICBpZiAobnVtYmVyID09PSB0aGlzLmxpbmUpIHtcbiAgICAgICAgbGV0IHNwYWNpbmcgPSBhc2lkZShndXR0ZXIucmVwbGFjZSgvXFxkL2csICcgJykpICtcbiAgICAgICAgICBsaW5lLnNsaWNlKDAsIHRoaXMuY29sdW1uIC0gMSkucmVwbGFjZSgvW15cXHRdL2csICcgJylcbiAgICAgICAgcmV0dXJuIG1hcmsoJz4nKSArIGFzaWRlKGd1dHRlcikgKyBsaW5lICsgJ1xcbiAnICsgc3BhY2luZyArIG1hcmsoJ14nKVxuICAgICAgfVxuICAgICAgcmV0dXJuICcgJyArIGFzaWRlKGd1dHRlcikgKyBsaW5lXG4gICAgfSkuam9pbignXFxuJylcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGVycm9yIHBvc2l0aW9uLCBtZXNzYWdlIGFuZCBzb3VyY2UgY29kZSBvZiB0aGUgYnJva2VuIHBhcnQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGVycm9yLnRvU3RyaW5nKCkgLy89PiBcIkNzc1N5bnRheEVycm9yOiBhcHAuY3NzOjE6MTogVW5jbG9zZWQgYmxvY2tcbiAgICogICAgICAgICAgICAgICAgICAvLyAgICA+IDEgfCBhIHtcbiAgICogICAgICAgICAgICAgICAgICAvLyAgICAgICAgfCBeXCJcbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nfSBFcnJvciBwb3NpdGlvbiwgbWVzc2FnZSBhbmQgc291cmNlIGNvZGUuXG4gICAqL1xuICB0b1N0cmluZyAoKSB7XG4gICAgbGV0IGNvZGUgPSB0aGlzLnNob3dTb3VyY2VDb2RlKClcbiAgICBpZiAoY29kZSkge1xuICAgICAgY29kZSA9ICdcXG5cXG4nICsgY29kZSArICdcXG4nXG4gICAgfVxuICAgIHJldHVybiB0aGlzLm5hbWUgKyAnOiAnICsgdGhpcy5tZXNzYWdlICsgY29kZVxuICB9XG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBDc3NTeW50YXhFcnJvciNcbiAgICogQG1lbWJlciB7SW5wdXR9IGlucHV0IElucHV0IG9iamVjdCB3aXRoIFBvc3RDU1MgaW50ZXJuYWwgaW5mb3JtYXRpb25cbiAgICogICAgICAgICAgICAgICAgICAgICAgIGFib3V0IGlucHV0IGZpbGUuIElmIGlucHV0IGhhcyBzb3VyY2UgbWFwXG4gICAqICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHByZXZpb3VzIHRvb2wsIFBvc3RDU1Mgd2lsbCB1c2Ugb3JpZ2luXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAoZm9yIGV4YW1wbGUsIFNhc3MpIHNvdXJjZS4gWW91IGNhbiB1c2UgdGhpc1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0IHRvIGdldCBQb3N0Q1NTIGlucHV0IHNvdXJjZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZXJyb3IuaW5wdXQuZmlsZSAvLz0+ICdhLmNzcydcbiAgICogZXJyb3IuZmlsZSAgICAgICAvLz0+ICdhLnNhc3MnXG4gICAqL1xufVxuXG5leHBvcnQgZGVmYXVsdCBDc3NTeW50YXhFcnJvclxuIl0sImZpbGUiOiJjc3Mtc3ludGF4LWVycm9yLmpzIn0=\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar DEFAULT_RAW = {\n colon: ': ',\n indent: ' ',\n beforeDecl: '\\n',\n beforeRule: '\\n',\n beforeOpen: ' ',\n beforeClose: '\\n',\n beforeComment: '\\n',\n after: '\\n',\n emptyBody: '',\n commentLeft: ' ',\n commentRight: ' ',\n semicolon: false\n};\n\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\n\nvar Stringifier =\n/*#__PURE__*/\nfunction () {\n function Stringifier(builder) {\n this.builder = builder;\n }\n\n var _proto = Stringifier.prototype;\n\n _proto.stringify = function stringify(node, semicolon) {\n this[node.type](node, semicolon);\n };\n\n _proto.root = function root(node) {\n this.body(node);\n if (node.raws.after) this.builder(node.raws.after);\n };\n\n _proto.comment = function comment(node) {\n var left = this.raw(node, 'left', 'commentLeft');\n var right = this.raw(node, 'right', 'commentRight');\n this.builder('/*' + left + node.text + right + '*/', node);\n };\n\n _proto.decl = function decl(node, semicolon) {\n var between = this.raw(node, 'between', 'colon');\n var string = node.prop + between + this.rawValue(node, 'value');\n\n if (node.important) {\n string += node.raws.important || ' !important';\n }\n\n if (semicolon) string += ';';\n this.builder(string, node);\n };\n\n _proto.rule = function rule(node) {\n this.block(node, this.rawValue(node, 'selector'));\n\n if (node.raws.ownSemicolon) {\n this.builder(node.raws.ownSemicolon, node, 'end');\n }\n };\n\n _proto.atrule = function atrule(node, semicolon) {\n var name = '@' + node.name;\n var params = node.params ? this.rawValue(node, 'params') : '';\n\n if (typeof node.raws.afterName !== 'undefined') {\n name += node.raws.afterName;\n } else if (params) {\n name += ' ';\n }\n\n if (node.nodes) {\n this.block(node, name + params);\n } else {\n var end = (node.raws.between || '') + (semicolon ? ';' : '');\n this.builder(name + params + end, node);\n }\n };\n\n _proto.body = function body(node) {\n var last = node.nodes.length - 1;\n\n while (last > 0) {\n if (node.nodes[last].type !== 'comment') break;\n last -= 1;\n }\n\n var semicolon = this.raw(node, 'semicolon');\n\n for (var i = 0; i < node.nodes.length; i++) {\n var child = node.nodes[i];\n var before = this.raw(child, 'before');\n if (before) this.builder(before);\n this.stringify(child, last !== i || semicolon);\n }\n };\n\n _proto.block = function block(node, start) {\n var between = this.raw(node, 'between', 'beforeOpen');\n this.builder(start + between + '{', node, 'start');\n var after;\n\n if (node.nodes && node.nodes.length) {\n this.body(node);\n after = this.raw(node, 'after');\n } else {\n after = this.raw(node, 'after', 'emptyBody');\n }\n\n if (after) this.builder(after);\n this.builder('}', node, 'end');\n };\n\n _proto.raw = function raw(node, own, detect) {\n var value;\n if (!detect) detect = own; // Already had\n\n if (own) {\n value = node.raws[own];\n if (typeof value !== 'undefined') return value;\n }\n\n var parent = node.parent; // Hack for first rule in CSS\n\n if (detect === 'before') {\n if (!parent || parent.type === 'root' && parent.first === node) {\n return '';\n }\n } // Floating child without parent\n\n\n if (!parent) return DEFAULT_RAW[detect]; // Detect style by other nodes\n\n var root = node.root();\n if (!root.rawCache) root.rawCache = {};\n\n if (typeof root.rawCache[detect] !== 'undefined') {\n return root.rawCache[detect];\n }\n\n if (detect === 'before' || detect === 'after') {\n return this.beforeAfter(node, detect);\n } else {\n var method = 'raw' + capitalize(detect);\n\n if (this[method]) {\n value = this[method](root, node);\n } else {\n root.walk(function (i) {\n value = i.raws[own];\n if (typeof value !== 'undefined') return false;\n });\n }\n }\n\n if (typeof value === 'undefined') value = DEFAULT_RAW[detect];\n root.rawCache[detect] = value;\n return value;\n };\n\n _proto.rawSemicolon = function rawSemicolon(root) {\n var value;\n root.walk(function (i) {\n if (i.nodes && i.nodes.length && i.last.type === 'decl') {\n value = i.raws.semicolon;\n if (typeof value !== 'undefined') return false;\n }\n });\n return value;\n };\n\n _proto.rawEmptyBody = function rawEmptyBody(root) {\n var value;\n root.walk(function (i) {\n if (i.nodes && i.nodes.length === 0) {\n value = i.raws.after;\n if (typeof value !== 'undefined') return false;\n }\n });\n return value;\n };\n\n _proto.rawIndent = function rawIndent(root) {\n if (root.raws.indent) return root.raws.indent;\n var value;\n root.walk(function (i) {\n var p = i.parent;\n\n if (p && p !== root && p.parent && p.parent === root) {\n if (typeof i.raws.before !== 'undefined') {\n var parts = i.raws.before.split('\\n');\n value = parts[parts.length - 1];\n value = value.replace(/[^\\s]/g, '');\n return false;\n }\n }\n });\n return value;\n };\n\n _proto.rawBeforeComment = function rawBeforeComment(root, node) {\n var value;\n root.walkComments(function (i) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before;\n\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n\n return false;\n }\n });\n\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeDecl');\n } else if (value) {\n value = value.replace(/[^\\s]/g, '');\n }\n\n return value;\n };\n\n _proto.rawBeforeDecl = function rawBeforeDecl(root, node) {\n var value;\n root.walkDecls(function (i) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before;\n\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n\n return false;\n }\n });\n\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeRule');\n } else if (value) {\n value = value.replace(/[^\\s]/g, '');\n }\n\n return value;\n };\n\n _proto.rawBeforeRule = function rawBeforeRule(root) {\n var value;\n root.walk(function (i) {\n if (i.nodes && (i.parent !== root || root.first !== i)) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before;\n\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n\n return false;\n }\n }\n });\n if (value) value = value.replace(/[^\\s]/g, '');\n return value;\n };\n\n _proto.rawBeforeClose = function rawBeforeClose(root) {\n var value;\n root.walk(function (i) {\n if (i.nodes && i.nodes.length > 0) {\n if (typeof i.raws.after !== 'undefined') {\n value = i.raws.after;\n\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n\n return false;\n }\n }\n });\n if (value) value = value.replace(/[^\\s]/g, '');\n return value;\n };\n\n _proto.rawBeforeOpen = function rawBeforeOpen(root) {\n var value;\n root.walk(function (i) {\n if (i.type !== 'decl') {\n value = i.raws.between;\n if (typeof value !== 'undefined') return false;\n }\n });\n return value;\n };\n\n _proto.rawColon = function rawColon(root) {\n var value;\n root.walkDecls(function (i) {\n if (typeof i.raws.between !== 'undefined') {\n value = i.raws.between.replace(/[^\\s:]/g, '');\n return false;\n }\n });\n return value;\n };\n\n _proto.beforeAfter = function beforeAfter(node, detect) {\n var value;\n\n if (node.type === 'decl') {\n value = this.raw(node, null, 'beforeDecl');\n } else if (node.type === 'comment') {\n value = this.raw(node, null, 'beforeComment');\n } else if (detect === 'before') {\n value = this.raw(node, null, 'beforeRule');\n } else {\n value = this.raw(node, null, 'beforeClose');\n }\n\n var buf = node.parent;\n var depth = 0;\n\n while (buf && buf.type !== 'root') {\n depth += 1;\n buf = buf.parent;\n }\n\n if (value.indexOf('\\n') !== -1) {\n var indent = this.raw(node, null, 'indent');\n\n if (indent.length) {\n for (var step = 0; step < depth; step++) {\n value += indent;\n }\n }\n }\n\n return value;\n };\n\n _proto.rawValue = function rawValue(node, prop) {\n var value = node[prop];\n var raw = node.raws[prop];\n\n if (raw && raw.value === value) {\n return raw.raw;\n }\n\n return value;\n };\n\n return Stringifier;\n}();\n\nvar _default = Stringifier;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0cmluZ2lmaWVyLmVzNiJdLCJuYW1lcyI6WyJERUZBVUxUX1JBVyIsImNvbG9uIiwiaW5kZW50IiwiYmVmb3JlRGVjbCIsImJlZm9yZVJ1bGUiLCJiZWZvcmVPcGVuIiwiYmVmb3JlQ2xvc2UiLCJiZWZvcmVDb21tZW50IiwiYWZ0ZXIiLCJlbXB0eUJvZHkiLCJjb21tZW50TGVmdCIsImNvbW1lbnRSaWdodCIsInNlbWljb2xvbiIsImNhcGl0YWxpemUiLCJzdHIiLCJ0b1VwcGVyQ2FzZSIsInNsaWNlIiwiU3RyaW5naWZpZXIiLCJidWlsZGVyIiwic3RyaW5naWZ5Iiwibm9kZSIsInR5cGUiLCJyb290IiwiYm9keSIsInJhd3MiLCJjb21tZW50IiwibGVmdCIsInJhdyIsInJpZ2h0IiwidGV4dCIsImRlY2wiLCJiZXR3ZWVuIiwic3RyaW5nIiwicHJvcCIsInJhd1ZhbHVlIiwiaW1wb3J0YW50IiwicnVsZSIsImJsb2NrIiwib3duU2VtaWNvbG9uIiwiYXRydWxlIiwibmFtZSIsInBhcmFtcyIsImFmdGVyTmFtZSIsIm5vZGVzIiwiZW5kIiwibGFzdCIsImxlbmd0aCIsImkiLCJjaGlsZCIsImJlZm9yZSIsInN0YXJ0Iiwib3duIiwiZGV0ZWN0IiwidmFsdWUiLCJwYXJlbnQiLCJmaXJzdCIsInJhd0NhY2hlIiwiYmVmb3JlQWZ0ZXIiLCJtZXRob2QiLCJ3YWxrIiwicmF3U2VtaWNvbG9uIiwicmF3RW1wdHlCb2R5IiwicmF3SW5kZW50IiwicCIsInBhcnRzIiwic3BsaXQiLCJyZXBsYWNlIiwicmF3QmVmb3JlQ29tbWVudCIsIndhbGtDb21tZW50cyIsImluZGV4T2YiLCJyYXdCZWZvcmVEZWNsIiwid2Fsa0RlY2xzIiwicmF3QmVmb3JlUnVsZSIsInJhd0JlZm9yZUNsb3NlIiwicmF3QmVmb3JlT3BlbiIsInJhd0NvbG9uIiwiYnVmIiwiZGVwdGgiLCJzdGVwIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsSUFBTUEsV0FBVyxHQUFHO0FBQ2xCQyxFQUFB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UjtBQUNEOztBQUVELFFBQUl3RCxHQUFHLEdBQUd4RCxJQUFJLENBQUNrQyxNQUFmO0FBQ0EsUUFBSXVCLEtBQUssR0FBRyxDQUFaOztBQUNBLFdBQU9ELEdBQUcsSUFBSUEsR0FBRyxDQUFDdkQsSUFBSixLQUFhLE1BQTNCLEVBQW1DO0FBQ2pDd0QsTUFBQUEsS0FBSyxJQUFJLENBQVQ7QUFDQUQsTUFBQUEsR0FBRyxHQUFHQSxHQUFHLENBQUN0QixNQUFWO0FBQ0Q7O0FBRUQsUUFBSUQsS0FBSyxDQUFDZ0IsT0FBTixDQUFjLElBQWQsTUFBd0IsQ0FBQyxDQUE3QixFQUFnQztBQUM5QixVQUFJbkUsTUFBTSxHQUFHLEtBQUt5QixHQUFMLENBQVNQLElBQVQsRUFBZSxJQUFmLEVBQXFCLFFBQXJCLENBQWI7O0FBQ0EsVUFBSWxCLE1BQU0sQ0FBQzRDLE1BQVgsRUFBbUI7QUFDakIsYUFBSyxJQUFJZ0MsSUFBSSxHQUFHLENBQWhCLEVBQW1CQSxJQUFJLEdBQUdELEtBQTFCLEVBQWlDQyxJQUFJLEVBQXJDO0FBQXlDekIsVUFBQUEsS0FBSyxJQUFJbkQsTUFBVDtBQUF6QztBQUNEO0FBQ0Y7O0FBRUQsV0FBT21ELEtBQVA7QUFDRCxHOztTQUVEbkIsUSxHQUFBLGtCQUFVZCxJQUFWLEVBQWdCYSxJQUFoQixFQUFzQjtBQUNwQixRQUFJb0IsS0FBSyxHQUFHakMsSUFBSSxDQUFDYSxJQUFELENBQWhCO0FBQ0EsUUFBSU4sR0FBRyxHQUFHUCxJQUFJLENBQUNJLElBQUwsQ0FBVVMsSUFBVixDQUFWOztBQUNBLFFBQUlOLEdBQUcsSUFBSUEsR0FBRyxDQUFDMEIsS0FBSixLQUFjQSxLQUF6QixFQUFnQztBQUM5QixhQUFPMUIsR0FBRyxDQUFDQSxHQUFYO0FBQ0Q7O0FBRUQsV0FBTzBCLEtBQVA7QUFDRCxHOzs7OztlQUdZcEMsVyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IERFRkFVTFRfUkFXID0ge1xuICBjb2xvbjogJzogJyxcbiAgaW5kZW50OiAnICAgICcsXG4gIGJlZm9yZURlY2w6ICdcXG4nLFxuICBiZWZvcmVSdWxlOiAnXFxuJyxcbiAgYmVmb3JlT3BlbjogJyAnLFxuICBiZWZvcmVDbG9zZTogJ1xcbicsXG4gIGJlZm9yZUNvbW1lbnQ6ICdcXG4nLFxuICBhZnRlcjogJ1xcbicsXG4gIGVtcHR5Qm9keTogJycsXG4gIGNvbW1lbnRMZWZ0OiAnICcsXG4gIGNvbW1lbnRSaWdodDogJyAnLFxuICBzZW1pY29sb246IGZhbHNlXG59XG5cbmZ1bmN0aW9uIGNhcGl0YWxpemUgKHN0cikge1xuICByZXR1cm4gc3RyWzBdLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSlcbn1cblxuY2xhc3MgU3RyaW5naWZpZXIge1xuICBjb25zdHJ1Y3RvciAoYnVpbGRlcikge1xuICAgIHRoaXMuYnVpbGRlciA9IGJ1aWxkZXJcbiAgfVxuXG4gIHN0cmluZ2lmeSAobm9kZSwgc2VtaWNvbG9uKSB7XG4gICAgdGhpc1tub2RlLnR5cGVdKG5vZGUsIHNlbWljb2xvbilcbiAgfVxuXG4gIHJvb3QgKG5vZGUpIHtcbiAgICB0aGlzLmJvZHkobm9kZSlcbiAgICBpZiAobm9kZS5yYXdzLmFmdGVyKSB0aGlzLmJ1aWxkZXIobm9kZS5yYXdzLmFmdGVyKVxuICB9XG5cbiAgY29tbWVudCAobm9kZSkge1xuICAgIGxldCBsZWZ0ID0gdGhpcy5yYXcobm9kZSwgJ2xlZnQnLCAnY29tbWVudExlZnQnKVxuICAgIGxldCByaWdodCA9IHRoaXMucmF3KG5vZGUsICdyaWdodCcsICdjb21tZW50UmlnaHQnKVxuICAgIHRoaXMuYnVpbGRlcignLyonICsgbGVmdCArIG5vZGUudGV4dCArIHJpZ2h0ICsgJyovJywgbm9kZSlcbiAgfVxuXG4gIGRlY2wgKG5vZGUsIHNlbWljb2xvbikge1xuICAgIGxldCBiZXR3ZWVuID0gdGhpcy5yYXcobm9kZSwgJ2JldHdlZW4nLCAnY29sb24nKVxuICAgIGxldCBzdHJpbmcgPSBub2RlLnByb3AgKyBiZXR3ZWVuICsgdGhpcy5yYXdWYWx1ZShub2RlLCAndmFsdWUnKVxuXG4gICAgaWYgKG5vZGUuaW1wb3J0YW50KSB7XG4gICAgICBzdHJpbmcgKz0gbm9kZS5yYXdzLmltcG9ydGFudCB8fCAnICFpbXBvcnRhbnQnXG4gICAgfVxuXG4gICAgaWYgKHNlbWljb2xvbikgc3RyaW5nICs9ICc7J1xuICAgIHRoaXMuYnVpbGRlcihzdHJpbmcsIG5vZGUpXG4gIH1cblxuICBydWxlIChub2RlKSB7XG4gICAgdGhpcy5ibG9jayhub2RlLCB0aGlzLnJhd1ZhbHVlKG5vZGUsICdzZWxlY3RvcicpKVxuICAgIGlmIChub2RlLnJhd3Mub3duU2VtaWNvbG9uKSB7XG4gICAgICB0aGlzLmJ1aWxkZXIobm9kZS5yYXdzLm93blNlbWljb2xvbiwgbm9kZSwgJ2VuZCcpXG4gICAgfVxuICB9XG5cbiAgYXRydWxlIChub2RlLCBzZW1pY29sb24pIHtcbiAgICBsZXQgbmFtZSA9ICdAJyArIG5vZGUubmFtZVxuICAgIGxldCBwYXJhbXMgPSBub2RlLnBhcmFtcyA/IHRoaXMucmF3VmFsdWUobm9kZSwgJ3BhcmFtcycpIDogJydcblxuICAgIGlmICh0eXBlb2Ygbm9kZS5yYXdzLmFmdGVyTmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIG5hbWUgKz0gbm9kZS5yYXdzLmFmdGVyTmFtZVxuICAgIH0gZWxzZSBpZiAocGFyYW1zKSB7XG4gICAgICBuYW1lICs9ICcgJ1xuICAgIH1cblxuICAgIGlmIChub2RlLm5vZGVzKSB7XG4gICAgICB0aGlzLmJsb2NrKG5vZGUsIG5hbWUgKyBwYXJhbXMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBlbmQgPSAobm9kZS5yYXdzLmJldHdlZW4gfHwgJycpICsgKHNlbWljb2xvbiA/ICc7JyA6ICcnKVxuICAgICAgdGhpcy5idWlsZGVyKG5hbWUgKyBwYXJhbXMgKyBlbmQsIG5vZGUpXG4gICAgfVxuICB9XG5cbiAgYm9keSAobm9kZSkge1xuICAgIGxldCBsYXN0ID0gbm9kZS5ub2Rlcy5sZW5ndGggLSAxXG4gICAgd2hpbGUgKGxhc3QgPiAwKSB7XG4gICAgICBpZiAobm9kZS5ub2Rlc1tsYXN0XS50eXBlICE9PSAnY29tbWVudCcpIGJyZWFrXG4gICAgICBsYXN0IC09IDFcbiAgICB9XG5cbiAgICBsZXQgc2VtaWNvbG9uID0gdGhpcy5yYXcobm9kZSwgJ3NlbWljb2xvbicpXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLm5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgY2hpbGQgPSBub2RlLm5vZGVzW2ldXG4gICAgICBsZXQgYmVmb3JlID0gdGhpcy5yYXcoY2hpbGQsICdiZWZvcmUnKVxuICAgICAgaWYgKGJlZm9yZSkgdGhpcy5idWlsZGVyKGJlZm9yZSlcbiAgICAgIHRoaXMuc3RyaW5naWZ5KGNoaWxkLCBsYXN0ICE9PSBpIHx8IHNlbWljb2xvbilcbiAgICB9XG4gIH1cblxuICBibG9jayAobm9kZSwgc3RhcnQpIHtcbiAgICBsZXQgYmV0d2VlbiA9IHRoaXMucmF3KG5vZGUsICdiZXR3ZWVuJywgJ2JlZm9yZU9wZW4nKVxuICAgIHRoaXMuYnVpbGRlcihzdGFydCArIGJldHdlZW4gKyAneycsIG5vZGUsICdzdGFydCcpXG5cbiAgICBsZXQgYWZ0ZXJcbiAgICBpZiAobm9kZS5ub2RlcyAmJiBub2RlLm5vZGVzLmxlbmd0aCkge1xuICAgICAgdGhpcy5ib2R5KG5vZGUpXG4gICAgICBhZnRlciA9IHRoaXMucmF3KG5vZGUsICdhZnRlcicpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFmdGVyID0gdGhpcy5yYXcobm9kZSwgJ2FmdGVyJywgJ2VtcHR5Qm9keScpXG4gICAgfVxuXG4gICAgaWYgKGFmdGVyKSB0aGlzLmJ1aWxkZXIoYWZ0ZXIpXG4gICAgdGhpcy5idWlsZGVyKCd9Jywgbm9kZSwgJ2VuZCcpXG4gIH1cblxuICByYXcgKG5vZGUsIG93biwgZGV0ZWN0KSB7XG4gICAgbGV0IHZhbHVlXG4gICAgaWYgKCFkZXRlY3QpIGRldGVjdCA9IG93blxuXG4gICAgLy8gQWxyZWFkeSBoYWRcbiAgICBpZiAob3duKSB7XG4gICAgICB2YWx1ZSA9IG5vZGUucmF3c1tvd25dXG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIHZhbHVlXG4gICAgfVxuXG4gICAgbGV0IHBhcmVudCA9IG5vZGUucGFyZW50XG5cbiAgICAvLyBIYWNrIGZvciBmaXJzdCBydWxlIGluIENTU1xuICAgIGlmIChkZXRlY3QgPT09ICdiZWZvcmUnKSB7XG4gICAgICBpZiAoIXBhcmVudCB8fCAocGFyZW50LnR5cGUgPT09ICdyb290JyAmJiBwYXJlbnQuZmlyc3QgPT09IG5vZGUpKSB7XG4gICAgICAgIHJldHVybiAnJ1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZsb2F0aW5nIGNoaWxkIHdpdGhvdXQgcGFyZW50XG4gICAgaWYgKCFwYXJlbnQpIHJldHVybiBERUZBVUxUX1JBV1tkZXRlY3RdXG5cbiAgICAvLyBEZXRlY3Qgc3R5bGUgYnkgb3RoZXIgbm9kZXNcbiAgICBsZXQgcm9vdCA9IG5vZGUucm9vdCgpXG4gICAgaWYgKCFyb290LnJhd0NhY2hlKSByb290LnJhd0NhY2hlID0geyB9XG4gICAgaWYgKHR5cGVvZiByb290LnJhd0NhY2hlW2RldGVjdF0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gcm9vdC5yYXdDYWNoZVtkZXRlY3RdXG4gICAgfVxuXG4gICAgaWYgKGRldGVjdCA9PT0gJ2JlZm9yZScgfHwgZGV0ZWN0ID09PSAnYWZ0ZXInKSB7XG4gICAgICByZXR1cm4gdGhpcy5iZWZvcmVBZnRlcihub2RlLCBkZXRlY3QpXG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBtZXRob2QgPSAncmF3JyArIGNhcGl0YWxpemUoZGV0ZWN0KVxuICAgICAgaWYgKHRoaXNbbWV0aG9kXSkge1xuICAgICAgICB2YWx1ZSA9IHRoaXNbbWV0aG9kXShyb290LCBub2RlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm9vdC53YWxrKGkgPT4ge1xuICAgICAgICAgIHZhbHVlID0gaS5yYXdzW293bl1cbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIGZhbHNlXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHZhbHVlID0gREVGQVVMVF9SQVdbZGV0ZWN0XVxuXG4gICAgcm9vdC5yYXdDYWNoZVtkZXRlY3RdID0gdmFsdWVcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHJhd1NlbWljb2xvbiAocm9vdCkge1xuICAgIGxldCB2YWx1ZVxuICAgIHJvb3Qud2FsayhpID0+IHtcbiAgICAgIGlmIChpLm5vZGVzICYmIGkubm9kZXMubGVuZ3RoICYmIGkubGFzdC50eXBlID09PSAnZGVjbCcpIHtcbiAgICAgICAgdmFsdWUgPSBpLnJhd3Muc2VtaWNvbG9uXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnKSByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgcmF3RW1wdHlCb2R5IChyb290KSB7XG4gICAgbGV0IHZhbHVlXG4gICAgcm9vdC53YWxrKGkgPT4ge1xuICAgICAgaWYgKGkubm9kZXMgJiYgaS5ub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdmFsdWUgPSBpLnJhd3MuYWZ0ZXJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICByYXdJbmRlbnQgKHJvb3QpIHtcbiAgICBpZiAocm9vdC5yYXdzLmluZGVudCkgcmV0dXJuIHJvb3QucmF3cy5pbmRlbnRcbiAgICBsZXQgdmFsdWVcbiAgICByb290LndhbGsoaSA9PiB7XG4gICAgICBsZXQgcCA9IGkucGFyZW50XG4gICAgICBpZiAocCAmJiBwICE9PSByb290ICYmIHAucGFyZW50ICYmIHAucGFyZW50ID09PSByb290KSB7XG4gICAgICAgIGlmICh0eXBlb2YgaS5yYXdzLmJlZm9yZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBsZXQgcGFydHMgPSBpLnJhd3MuYmVmb3JlLnNwbGl0KCdcXG4nKVxuICAgICAgICAgIHZhbHVlID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV1cbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxzXS9nLCAnJylcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICByYXdCZWZvcmVDb21tZW50IChyb290LCBub2RlKSB7XG4gICAgbGV0IHZhbHVlXG4gICAgcm9vdC53YWxrQ29tbWVudHMoaSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGkucmF3cy5iZWZvcmUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHZhbHVlID0gaS5yYXdzLmJlZm9yZVxuICAgICAgICBpZiAodmFsdWUuaW5kZXhPZignXFxuJykgIT09IC0xKSB7XG4gICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcbl0rJC8sICcnKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0pXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5yYXcobm9kZSwgbnVsbCwgJ2JlZm9yZURlY2wnKVxuICAgIH0gZWxzZSBpZiAodmFsdWUpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvW15cXHNdL2csICcnKVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHJhd0JlZm9yZURlY2wgKHJvb3QsIG5vZGUpIHtcbiAgICBsZXQgdmFsdWVcbiAgICByb290LndhbGtEZWNscyhpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgaS5yYXdzLmJlZm9yZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdmFsdWUgPSBpLnJhd3MuYmVmb3JlXG4gICAgICAgIGlmICh2YWx1ZS5pbmRleE9mKCdcXG4nKSAhPT0gLTEpIHtcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxuXSskLywgJycpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSlcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdmFsdWUgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnYmVmb3JlUnVsZScpXG4gICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcc10vZywgJycpXG4gICAgfVxuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgcmF3QmVmb3JlUnVsZSAocm9vdCkge1xuICAgIGxldCB2YWx1ZVxuICAgIHJvb3Qud2FsayhpID0+IHtcbiAgICAgIGlmIChpLm5vZGVzICYmIChpLnBhcmVudCAhPT0gcm9vdCB8fCByb290LmZpcnN0ICE9PSBpKSkge1xuICAgICAgICBpZiAodHlwZW9mIGkucmF3cy5iZWZvcmUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgdmFsdWUgPSBpLnJhd3MuYmVmb3JlXG4gICAgICAgICAgaWYgKHZhbHVlLmluZGV4T2YoJ1xcbicpICE9PSAtMSkge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcbl0rJC8sICcnKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gICAgaWYgKHZhbHVlKSB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxzXS9nLCAnJylcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHJhd0JlZm9yZUNsb3NlIChyb290KSB7XG4gICAgbGV0IHZhbHVlXG4gICAgcm9vdC53YWxrKGkgPT4ge1xuICAgICAgaWYgKGkubm9kZXMgJiYgaS5ub2Rlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaS5yYXdzLmFmdGVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHZhbHVlID0gaS5yYXdzLmFmdGVyXG4gICAgICAgICAgaWYgKHZhbHVlLmluZGV4T2YoJ1xcbicpICE9PSAtMSkge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcbl0rJC8sICcnKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gICAgaWYgKHZhbHVlKSB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxzXS9nLCAnJylcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHJhd0JlZm9yZU9wZW4gKHJvb3QpIHtcbiAgICBsZXQgdmFsdWVcbiAgICByb290LndhbGsoaSA9PiB7XG4gICAgICBpZiAoaS50eXBlICE9PSAnZGVjbCcpIHtcbiAgICAgICAgdmFsdWUgPSBpLnJhd3MuYmV0d2VlblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHJhd0NvbG9uIChyb290KSB7XG4gICAgbGV0IHZhbHVlXG4gICAgcm9vdC53YWxrRGVjbHMoaSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGkucmF3cy5iZXR3ZWVuICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICB2YWx1ZSA9IGkucmF3cy5iZXR3ZWVuLnJlcGxhY2UoL1teXFxzOl0vZywgJycpXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICBiZWZvcmVBZnRlciAobm9kZSwgZGV0ZWN0KSB7XG4gICAgbGV0IHZhbHVlXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ2RlY2wnKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMucmF3KG5vZGUsIG51bGwsICdiZWZvcmVEZWNsJylcbiAgICB9IGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ2NvbW1lbnQnKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMucmF3KG5vZGUsIG51bGwsICdiZWZvcmVDb21tZW50JylcbiAgICB9IGVsc2UgaWYgKGRldGVjdCA9PT0gJ2JlZm9yZScpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5yYXcobm9kZSwgbnVsbCwgJ2JlZm9yZVJ1bGUnKVxuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHRoaXMucmF3KG5vZGUsIG51bGwsICdiZWZvcmVDbG9zZScpXG4gICAgfVxuXG4gICAgbGV0IGJ1ZiA9IG5vZGUucGFyZW50XG4gICAgbGV0IGRlcHRoID0gMFxuICAgIHdoaWxlIChidWYgJiYgYnVmLnR5cGUgIT09ICdyb290Jykge1xuICAgICAgZGVwdGggKz0gMVxuICAgICAgYnVmID0gYnVmLnBhcmVudFxuICAgIH1cblxuICAgIGlmICh2YWx1ZS5pbmRleE9mKCdcXG4nKSAhPT0gLTEpIHtcbiAgICAgIGxldCBpbmRlbnQgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnaW5kZW50JylcbiAgICAgIGlmIChpbmRlbnQubGVuZ3RoKSB7XG4gICAgICAgIGZvciAobGV0IHN0ZXAgPSAwOyBzdGVwIDwgZGVwdGg7IHN0ZXArKykgdmFsdWUgKz0gaW5kZW50XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICByYXdWYWx1ZSAobm9kZSwgcHJvcCkge1xuICAgIGxldCB2YWx1ZSA9IG5vZGVbcHJvcF1cbiAgICBsZXQgcmF3ID0gbm9kZS5yYXdzW3Byb3BdXG4gICAgaWYgKHJhdyAmJiByYXcudmFsdWUgPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4gcmF3LnJhd1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFN0cmluZ2lmaWVyXG4iXSwiZmlsZSI6InN0cmluZ2lmaWVyLmpzIn0=\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _lazyResult = _interopRequireDefault(require(\"./lazy-result\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Contains plugins to process CSS. Create one `Processor` instance,\n * initialize its plugins, and then use that instance on numerous CSS files.\n *\n * @example\n * const processor = postcss([autoprefixer, precss])\n * processor.process(css1).then(result => console.log(result.css))\n * processor.process(css2).then(result => console.log(result.css))\n */\nvar Processor =\n/*#__PURE__*/\nfunction () {\n /**\n * @param {Array.|Processor} plugins PostCSS plugins.\n * See {@link Processor#use} for plugin format.\n */\n function Processor(plugins) {\n if (plugins === void 0) {\n plugins = [];\n }\n\n /**\n * Current PostCSS version.\n *\n * @type {string}\n *\n * @example\n * if (result.processor.version.split('.')[0] !== '6') {\n * throw new Error('This plugin works only with PostCSS 6')\n * }\n */\n this.version = '7.0.18';\n /**\n * Plugins added to this processor.\n *\n * @type {pluginFunction[]}\n *\n * @example\n * const processor = postcss([autoprefixer, precss])\n * processor.plugins.length //=> 2\n */\n\n this.plugins = this.normalize(plugins);\n }\n /**\n * Adds a plugin to be used as a CSS processor.\n *\n * PostCSS plugin can be in 4 formats:\n * * A plugin created by {@link postcss.plugin} method.\n * * A function. PostCSS will pass the function a @{link Root}\n * as the first argument and current {@link Result} instance\n * as the second.\n * * An object with a `postcss` method. PostCSS will use that method\n * as described in #2.\n * * Another {@link Processor} instance. PostCSS will copy plugins\n * from that instance into this one.\n *\n * Plugins can also be added by passing them as arguments when creating\n * a `postcss` instance (see [`postcss(plugins)`]).\n *\n * Asynchronous plugins should return a `Promise` instance.\n *\n * @param {Plugin|pluginFunction|Processor} plugin PostCSS plugin\n * or {@link Processor}\n * with plugins.\n *\n * @example\n * const processor = postcss()\n * .use(autoprefixer)\n * .use(precss)\n *\n * @return {Processes} Current processor to make methods chain.\n */\n\n\n var _proto = Processor.prototype;\n\n _proto.use = function use(plugin) {\n this.plugins = this.plugins.concat(this.normalize([plugin]));\n return this;\n }\n /**\n * Parses source CSS and returns a {@link LazyResult} Promise proxy.\n * Because some plugins can be asynchronous it doesn’t make\n * any transformations. Transformations will be applied\n * in the {@link LazyResult} methods.\n *\n * @param {string|toString|Result} css String with input CSS or any object\n * with a `toString()` method,\n * like a Buffer. Optionally, send\n * a {@link Result} instance\n * and the processor will take\n * the {@link Root} from it.\n * @param {processOptions} [opts] Options.\n *\n * @return {LazyResult} Promise proxy.\n *\n * @example\n * processor.process(css, { from: 'a.css', to: 'a.out.css' })\n * .then(result => {\n * console.log(result.css)\n * })\n */\n ;\n\n _proto.process = function (_process) {\n function process(_x) {\n return _process.apply(this, arguments);\n }\n\n process.toString = function () {\n return _process.toString();\n };\n\n return process;\n }(function (css, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n if (this.plugins.length === 0 && opts.parser === opts.stringifier) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof console !== 'undefined' && console.warn) {\n console.warn('You did not set any plugins, parser, or stringifier. ' + 'Right now, PostCSS does nothing. Pick plugins for your case ' + 'on https://www.postcss.parts/ and use them in postcss.config.js.');\n }\n }\n }\n\n return new _lazyResult.default(this, css, opts);\n });\n\n _proto.normalize = function normalize(plugins) {\n var normalized = [];\n\n for (var _iterator = plugins, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var i = _ref;\n if (i.postcss) i = i.postcss;\n\n if (typeof i === 'object' && Array.isArray(i.plugins)) {\n normalized = normalized.concat(i.plugins);\n } else if (typeof i === 'function') {\n normalized.push(i);\n } else if (typeof i === 'object' && (i.parse || i.stringify)) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error('PostCSS syntaxes cannot be used as plugins. Instead, please use ' + 'one of the syntax/parser/stringifier options as outlined ' + 'in your PostCSS runner documentation.');\n }\n } else {\n throw new Error(i + ' is not a PostCSS plugin');\n }\n }\n\n return normalized;\n };\n\n return Processor;\n}();\n\nvar _default = Processor;\n/**\n * @callback builder\n * @param {string} part Part of generated CSS connected to this node.\n * @param {Node} node AST node.\n * @param {\"start\"|\"end\"} [type] Node’s part type.\n */\n\n/**\n * @callback parser\n *\n * @param {string|toString} css String with input CSS or any object\n * with toString() method, like a Buffer.\n * @param {processOptions} [opts] Options with only `from` and `map` keys.\n *\n * @return {Root} PostCSS AST\n */\n\n/**\n * @callback stringifier\n *\n * @param {Node} node Start node for stringifing. Usually {@link Root}.\n * @param {builder} builder Function to concatenate CSS from node’s parts\n * or generate string and source map.\n *\n * @return {void}\n */\n\n/**\n * @typedef {object} syntax\n * @property {parser} parse Function to generate AST by string.\n * @property {stringifier} stringify Function to generate string by AST.\n */\n\n/**\n * @typedef {object} toString\n * @property {function} toString\n */\n\n/**\n * @callback pluginFunction\n * @param {Root} root Parsed input CSS.\n * @param {Result} result Result to set warnings or check other plugins.\n */\n\n/**\n * @typedef {object} Plugin\n * @property {function} postcss PostCSS plugin function.\n */\n\n/**\n * @typedef {object} processOptions\n * @property {string} from The path of the CSS source file.\n * You should always set `from`,\n * because it is used in source map\n * generation and syntax error messages.\n * @property {string} to The path where you’ll put the output\n * CSS file. You should always set `to`\n * to generate correct source maps.\n * @property {parser} parser Function to generate AST by string.\n * @property {stringifier} stringifier Class to generate string by AST.\n * @property {syntax} syntax Object with `parse` and `stringify`.\n * @property {object} map Source map options.\n * @property {boolean} map.inline Does source map should\n * be embedded in the output\n * CSS as a base64-encoded\n * comment.\n * @property {string|object|false|function} map.prev Source map content\n * from a previous\n * processing step\n * (for example, Sass).\n * PostCSS will try to find\n * previous map automatically,\n * so you could disable it by\n * `false` value.\n * @property {boolean} map.sourcesContent Does PostCSS should set\n * the origin content to map.\n * @property {string|false} map.annotation Does PostCSS should set\n * annotation comment to map.\n * @property {string} map.from Override `from` in map’s\n * sources`.\n */\n\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByb2Nlc3Nvci5lczYiXSwibmFtZXMiOlsiUHJvY2Vzc29yIiwicGx1Z2lucyIsInZlcnNpb24iLCJub3JtYWxpemUiLCJ1c2UiLCJwbHVnaW4iLCJjb25jYXQiLCJwcm9jZXNzIiwiY3NzIiwib3B0cyIsImxlbmd0aCIsInBhcnNlciIsInN0cmluZ2lmaWVyIiwiZW52IiwiTk9ERV9FTlYiLCJjb25zb2xlIiwid2FybiIsIkxhenlSZXN1bHQiLCJub3JtYWxpemVkIiwiaSIsInBvc3Rjc3MiLCJBcnJheSIsImlzQXJyYXkiLCJwdXNoIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJFcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7OztBQUVBOzs7Ozs7Ozs7SUFTTUEsUzs7O0FBQ0o7Ozs7QUFJQSxxQkFBYUMsT0FBYixFQUEyQjtBQUFBLFFBQWRBLE9BQWM7QUFBZEEsTUFBQUEsT0FBYyxHQUFKLEVBQUk7QUFBQTs7QUFDekI7Ozs7Ozs7Ozs7QUFVQSxTQUFLQyxPQUFMLEdBQWUsUUFBZjtBQUNBOzs7Ozs7Ozs7O0FBU0EsU0FBS0QsT0FBTCxHQUFlLEtBQUtFLFNBQUwsQ0FBZUYsT0FBZixDQUFmO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBNkJBRyxHLEdBQUEsYUFBS0MsTUFBTCxFQUFhO0FBQ1gsU0FBS0osT0FBTCxHQUFlLEtBQUtBLE9BQUwsQ0FBYUssTUFBYixDQUFvQixLQUFLSCxTQUFMLENBQWUsQ0FBQ0UsTUFBRCxDQUFmLENBQXBCLENBQWY7QUFDQSxXQUFPLElBQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FzQkFFLE87Ozs7Ozs7Ozs7SUFBQSxVQUFTQyxHQUFULEVBQWNDLElBQWQsRUFBMEI7QUFBQSxRQUFaQSxJQUFZO0FBQVpBLE1BQUFBLElBQVksR0FBTCxFQUFLO0FBQUE7O0FBQ3hCLFFBQUksS0FBS1IsT0FBTCxDQUFhUyxNQUFiLEtBQXdCLENBQXhCLElBQTZCRCxJQUFJLENBQUNFLE1BQUwsS0FBZ0JGLElBQUksQ0FBQ0csV0FBdEQsRUFBbUU7QUFDakUsVUFBSUwsT0FBTyxDQUFDTSxHQUFSLENBQVlDLFFBQVosS0FBeUIsWUFBN0IsRUFBMkM7QUFDekMsWUFBSSxPQUFPQyxPQUFQLEtBQW1CLFdBQW5CLElBQWtDQSxPQUFPLENBQUNDLElBQTlDLEVBQW9EO0FBQ2xERCxVQUFBQSxPQUFPLENBQUNDLElBQVIsQ0FDRSwwREFDQSw4REFEQSxHQUVBLGtFQUhGO0FBS0Q7QUFDRjtBQUNGOztBQUNELFdBQU8sSUFBSUMsbUJBQUosQ0FBZSxJQUFmLEVBQXFCVCxHQUFyQixFQUEwQkMsSUFBMUIsQ0FBUDtBQUNELEc7O1NBRUROLFMsR0FBQSxtQkFBV0YsT0FBWCxFQUFvQjtBQUNsQixRQUFJaUIsVUFBVSxHQUFHLEVBQWpCOztBQUNBLHlCQUFjakIsT0FBZCxrSEFBdUI7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBLFVBQWRrQixDQUFjO0FBQ3JCLFVBQUlBLENBQUMsQ0FBQ0MsT0FBTixFQUFlRCxDQUFDLEdBQUdBLENBQUMsQ0FBQ0MsT0FBTjs7QUFFZixVQUFJLE9BQU9ELENBQVAsS0FBYSxRQUFiLElBQXlCRSxLQUFLLENBQUNDLE9BQU4sQ0FBY0gsQ0FBQyxDQUFDbEIsT0FBaEIsQ0FBN0IsRUFBdUQ7QUFDckRpQixRQUFBQSxVQUFVLEdBQUdBLFVBQVUsQ0FBQ1osTUFBWCxDQUFrQmEsQ0FBQyxDQUFDbEIsT0FBcEIsQ0FBYjtBQUNELE9BRkQsTUFFTyxJQUFJLE9BQU9rQixDQUFQLEtBQWEsVUFBakIsRUFBNkI7QUFDbENELFFBQUFBLFVBQVUsQ0FBQ0ssSUFBWCxDQUFnQkosQ0FBaEI7QUFDRCxPQUZNLE1BRUEsSUFBSSxPQUFPQSxDQUFQLEtBQWEsUUFBYixLQUEwQkEsQ0FBQyxDQUFDSyxLQUFGLElBQVdMLENBQUMsQ0FBQ00sU0FBdkMsQ0FBSixFQUF1RDtBQUM1RCxZQUFJbEIsT0FBTyxDQUFDTSxHQUFSLENBQVlDLFFBQVosS0FBeUIsWUFBN0IsRUFBMkM7QUFDekMsZ0JBQU0sSUFBSVksS0FBSixDQUNKLHFFQUNBLDJEQURBLEdBRUEsdUNBSEksQ0FBTjtBQUtEO0FBQ0YsT0FSTSxNQVFBO0FBQ0wsY0FBTSxJQUFJQSxLQUFKLENBQVVQLENBQUMsR0FBRywwQkFBZCxDQUFOO0FBQ0Q7QUFDRjs7QUFDRCxXQUFPRCxVQUFQO0FBQ0QsRzs7Ozs7ZUFHWWxCLFM7QUFFZjs7Ozs7OztBQU9BOzs7Ozs7Ozs7O0FBVUE7Ozs7Ozs7Ozs7QUFVQTs7Ozs7O0FBTUE7Ozs7O0FBS0E7Ozs7OztBQU1BOzs7OztBQUtBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExhenlSZXN1bHQgZnJvbSAnLi9sYXp5LXJlc3VsdCdcblxuLyoqXG4gKiBDb250YWlucyBwbHVnaW5zIHRvIHByb2Nlc3MgQ1NTLiBDcmVhdGUgb25lIGBQcm9jZXNzb3JgIGluc3RhbmNlLFxuICogaW5pdGlhbGl6ZSBpdHMgcGx1Z2lucywgYW5kIHRoZW4gdXNlIHRoYXQgaW5zdGFuY2Ugb24gbnVtZXJvdXMgQ1NTIGZpbGVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBwcm9jZXNzb3IgPSBwb3N0Y3NzKFthdXRvcHJlZml4ZXIsIHByZWNzc10pXG4gKiBwcm9jZXNzb3IucHJvY2Vzcyhjc3MxKS50aGVuKHJlc3VsdCA9PiBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKSlcbiAqIHByb2Nlc3Nvci5wcm9jZXNzKGNzczIpLnRoZW4ocmVzdWx0ID0+IGNvbnNvbGUubG9nKHJlc3VsdC5jc3MpKVxuICovXG5jbGFzcyBQcm9jZXNzb3Ige1xuICAvKipcbiAgICogQHBhcmFtIHtBcnJheS48UGx1Z2lufHBsdWdpbkZ1bmN0aW9uPnxQcm9jZXNzb3J9IHBsdWdpbnMgUG9zdENTUyBwbHVnaW5zLlxuICAgKiAgICAgICAgU2VlIHtAbGluayBQcm9jZXNzb3IjdXNlfSBmb3IgcGx1Z2luIGZvcm1hdC5cbiAgICovXG4gIGNvbnN0cnVjdG9yIChwbHVnaW5zID0gW10pIHtcbiAgICAvKipcbiAgICAgKiBDdXJyZW50IFBvc3RDU1MgdmVyc2lvbi5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGlmIChyZXN1bHQucHJvY2Vzc29yLnZlcnNpb24uc3BsaXQoJy4nKVswXSAhPT0gJzYnKSB7XG4gICAgICogICB0aHJvdyBuZXcgRXJyb3IoJ1RoaXMgcGx1Z2luIHdvcmtzIG9ubHkgd2l0aCBQb3N0Q1NTIDYnKVxuICAgICAqIH1cbiAgICAgKi9cbiAgICB0aGlzLnZlcnNpb24gPSAnNy4wLjE4J1xuICAgIC8qKlxuICAgICAqIFBsdWdpbnMgYWRkZWQgdG8gdGhpcyBwcm9jZXNzb3IuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7cGx1Z2luRnVuY3Rpb25bXX1cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3QgcHJvY2Vzc29yID0gcG9zdGNzcyhbYXV0b3ByZWZpeGVyLCBwcmVjc3NdKVxuICAgICAqIHByb2Nlc3Nvci5wbHVnaW5zLmxlbmd0aCAvLz0+IDJcbiAgICAgKi9cbiAgICB0aGlzLnBsdWdpbnMgPSB0aGlzLm5vcm1hbGl6ZShwbHVnaW5zKVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBwbHVnaW4gdG8gYmUgdXNlZCBhcyBhIENTUyBwcm9jZXNzb3IuXG4gICAqXG4gICAqIFBvc3RDU1MgcGx1Z2luIGNhbiBiZSBpbiA0IGZvcm1hdHM6XG4gICAqICogQSBwbHVnaW4gY3JlYXRlZCBieSB7QGxpbmsgcG9zdGNzcy5wbHVnaW59IG1ldGhvZC5cbiAgICogKiBBIGZ1bmN0aW9uLiBQb3N0Q1NTIHdpbGwgcGFzcyB0aGUgZnVuY3Rpb24gYSBAe2xpbmsgUm9vdH1cbiAgICogICBhcyB0aGUgZmlyc3QgYXJndW1lbnQgYW5kIGN1cnJlbnQge0BsaW5rIFJlc3VsdH0gaW5zdGFuY2VcbiAgICogICBhcyB0aGUgc2Vjb25kLlxuICAgKiAqIEFuIG9iamVjdCB3aXRoIGEgYHBvc3Rjc3NgIG1ldGhvZC4gUG9zdENTUyB3aWxsIHVzZSB0aGF0IG1ldGhvZFxuICAgKiAgIGFzIGRlc2NyaWJlZCBpbiAjMi5cbiAgICogKiBBbm90aGVyIHtAbGluayBQcm9jZXNzb3J9IGluc3RhbmNlLiBQb3N0Q1NTIHdpbGwgY29weSBwbHVnaW5zXG4gICAqICAgZnJvbSB0aGF0IGluc3RhbmNlIGludG8gdGhpcyBvbmUuXG4gICAqXG4gICAqIFBsdWdpbnMgY2FuIGFsc28gYmUgYWRkZWQgYnkgcGFzc2luZyB0aGVtIGFzIGFyZ3VtZW50cyB3aGVuIGNyZWF0aW5nXG4gICAqIGEgYHBvc3Rjc3NgIGluc3RhbmNlIChzZWUgW2Bwb3N0Y3NzKHBsdWdpbnMpYF0pLlxuICAgKlxuICAgKiBBc3luY2hyb25vdXMgcGx1Z2lucyBzaG91bGQgcmV0dXJuIGEgYFByb21pc2VgIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge1BsdWdpbnxwbHVnaW5GdW5jdGlvbnxQcm9jZXNzb3J9IHBsdWdpbiBQb3N0Q1NTIHBsdWdpblxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciB7QGxpbmsgUHJvY2Vzc29yfVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBsdWdpbnMuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHByb2Nlc3NvciA9IHBvc3Rjc3MoKVxuICAgKiAgIC51c2UoYXV0b3ByZWZpeGVyKVxuICAgKiAgIC51c2UocHJlY3NzKVxuICAgKlxuICAgKiBAcmV0dXJuIHtQcm9jZXNzZXN9IEN1cnJlbnQgcHJvY2Vzc29yIHRvIG1ha2UgbWV0aG9kcyBjaGFpbi5cbiAgICovXG4gIHVzZSAocGx1Z2luKSB7XG4gICAgdGhpcy5wbHVnaW5zID0gdGhpcy5wbHVnaW5zLmNvbmNhdCh0aGlzLm5vcm1hbGl6ZShbcGx1Z2luXSkpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZXMgc291cmNlIENTUyBhbmQgcmV0dXJucyBhIHtAbGluayBMYXp5UmVzdWx0fSBQcm9taXNlIHByb3h5LlxuICAgKiBCZWNhdXNlIHNvbWUgcGx1Z2lucyBjYW4gYmUgYXN5bmNocm9ub3VzIGl0IGRvZXNu4oCZdCBtYWtlXG4gICAqIGFueSB0cmFuc2Zvcm1hdGlvbnMuIFRyYW5zZm9ybWF0aW9ucyB3aWxsIGJlIGFwcGxpZWRcbiAgICogaW4gdGhlIHtAbGluayBMYXp5UmVzdWx0fSBtZXRob2RzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ3x0b1N0cmluZ3xSZXN1bHR9IGNzcyBTdHJpbmcgd2l0aCBpbnB1dCBDU1Mgb3IgYW55IG9iamVjdFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGEgYHRvU3RyaW5nKClgIG1ldGhvZCxcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlrZSBhIEJ1ZmZlci4gT3B0aW9uYWxseSwgc2VuZFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHtAbGluayBSZXN1bHR9IGluc3RhbmNlXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgcHJvY2Vzc29yIHdpbGwgdGFrZVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUge0BsaW5rIFJvb3R9IGZyb20gaXQuXG4gICAqIEBwYXJhbSB7cHJvY2Vzc09wdGlvbnN9IFtvcHRzXSAgICAgIE9wdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm4ge0xhenlSZXN1bHR9IFByb21pc2UgcHJveHkuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHByb2Nlc3Nvci5wcm9jZXNzKGNzcywgeyBmcm9tOiAnYS5jc3MnLCB0bzogJ2Eub3V0LmNzcycgfSlcbiAgICogICAudGhlbihyZXN1bHQgPT4ge1xuICAgKiAgICAgIGNvbnNvbGUubG9nKHJlc3VsdC5jc3MpXG4gICAqICAgfSlcbiAgICovXG4gIHByb2Nlc3MgKGNzcywgb3B0cyA9IHsgfSkge1xuICAgIGlmICh0aGlzLnBsdWdpbnMubGVuZ3RoID09PSAwICYmIG9wdHMucGFyc2VyID09PSBvcHRzLnN0cmluZ2lmaWVyKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICdZb3UgZGlkIG5vdCBzZXQgYW55IHBsdWdpbnMsIHBhcnNlciwgb3Igc3RyaW5naWZpZXIuICcgK1xuICAgICAgICAgICAgJ1JpZ2h0IG5vdywgUG9zdENTUyBkb2VzIG5vdGhpbmcuIFBpY2sgcGx1Z2lucyBmb3IgeW91ciBjYXNlICcgK1xuICAgICAgICAgICAgJ29uIGh0dHBzOi8vd3d3LnBvc3Rjc3MucGFydHMvIGFuZCB1c2UgdGhlbSBpbiBwb3N0Y3NzLmNvbmZpZy5qcy4nXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgTGF6eVJlc3VsdCh0aGlzLCBjc3MsIG9wdHMpXG4gIH1cblxuICBub3JtYWxpemUgKHBsdWdpbnMpIHtcbiAgICBsZXQgbm9ybWFsaXplZCA9IFtdXG4gICAgZm9yIChsZXQgaSBvZiBwbHVnaW5zKSB7XG4gICAgICBpZiAoaS5wb3N0Y3NzKSBpID0gaS5wb3N0Y3NzXG5cbiAgICAgIGlmICh0eXBlb2YgaSA9PT0gJ29iamVjdCcgJiYgQXJyYXkuaXNBcnJheShpLnBsdWdpbnMpKSB7XG4gICAgICAgIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVkLmNvbmNhdChpLnBsdWdpbnMpXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBpID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIG5vcm1hbGl6ZWQucHVzaChpKVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaSA9PT0gJ29iamVjdCcgJiYgKGkucGFyc2UgfHwgaS5zdHJpbmdpZnkpKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ1Bvc3RDU1Mgc3ludGF4ZXMgY2Fubm90IGJlIHVzZWQgYXMgcGx1Z2lucy4gSW5zdGVhZCwgcGxlYXNlIHVzZSAnICtcbiAgICAgICAgICAgICdvbmUgb2YgdGhlIHN5bnRheC9wYXJzZXIvc3RyaW5naWZpZXIgb3B0aW9ucyBhcyBvdXRsaW5lZCAnICtcbiAgICAgICAgICAgICdpbiB5b3VyIFBvc3RDU1MgcnVubmVyIGRvY3VtZW50YXRpb24uJ1xuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGkgKyAnIGlzIG5vdCBhIFBvc3RDU1MgcGx1Z2luJylcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5vcm1hbGl6ZWRcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcm9jZXNzb3JcblxuLyoqXG4gKiBAY2FsbGJhY2sgYnVpbGRlclxuICogQHBhcmFtIHtzdHJpbmd9IHBhcnQgICAgICAgICAgUGFydCBvZiBnZW5lcmF0ZWQgQ1NTIGNvbm5lY3RlZCB0byB0aGlzIG5vZGUuXG4gKiBAcGFyYW0ge05vZGV9ICAgbm9kZSAgICAgICAgICBBU1Qgbm9kZS5cbiAqIEBwYXJhbSB7XCJzdGFydFwifFwiZW5kXCJ9IFt0eXBlXSBOb2Rl4oCZcyBwYXJ0IHR5cGUuXG4gKi9cblxuLyoqXG4gKiBAY2FsbGJhY2sgcGFyc2VyXG4gKlxuICogQHBhcmFtIHtzdHJpbmd8dG9TdHJpbmd9IGNzcyAgIFN0cmluZyB3aXRoIGlucHV0IENTUyBvciBhbnkgb2JqZWN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB0b1N0cmluZygpIG1ldGhvZCwgbGlrZSBhIEJ1ZmZlci5cbiAqIEBwYXJhbSB7cHJvY2Vzc09wdGlvbnN9IFtvcHRzXSBPcHRpb25zIHdpdGggb25seSBgZnJvbWAgYW5kIGBtYXBgIGtleXMuXG4gKlxuICogQHJldHVybiB7Um9vdH0gUG9zdENTUyBBU1RcbiAqL1xuXG4vKipcbiAqIEBjYWxsYmFjayBzdHJpbmdpZmllclxuICpcbiAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAgICAgICBTdGFydCBub2RlIGZvciBzdHJpbmdpZmluZy4gVXN1YWxseSB7QGxpbmsgUm9vdH0uXG4gKiBAcGFyYW0ge2J1aWxkZXJ9IGJ1aWxkZXIgRnVuY3Rpb24gdG8gY29uY2F0ZW5hdGUgQ1NTIGZyb20gbm9kZeKAmXMgcGFydHNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICBvciBnZW5lcmF0ZSBzdHJpbmcgYW5kIHNvdXJjZSBtYXAuXG4gKlxuICogQHJldHVybiB7dm9pZH1cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHN5bnRheFxuICogQHByb3BlcnR5IHtwYXJzZXJ9IHBhcnNlICAgICAgICAgIEZ1bmN0aW9uIHRvIGdlbmVyYXRlIEFTVCBieSBzdHJpbmcuXG4gKiBAcHJvcGVydHkge3N0cmluZ2lmaWVyfSBzdHJpbmdpZnkgRnVuY3Rpb24gdG8gZ2VuZXJhdGUgc3RyaW5nIGJ5IEFTVC5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHRvU3RyaW5nXG4gKiBAcHJvcGVydHkge2Z1bmN0aW9ufSB0b1N0cmluZ1xuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIHBsdWdpbkZ1bmN0aW9uXG4gKiBAcGFyYW0ge1Jvb3R9IHJvb3QgICAgIFBhcnNlZCBpbnB1dCBDU1MuXG4gKiBAcGFyYW0ge1Jlc3VsdH0gcmVzdWx0IFJlc3VsdCB0byBzZXQgd2FybmluZ3Mgb3IgY2hlY2sgb3RoZXIgcGx1Z2lucy5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFBsdWdpblxuICogQHByb3BlcnR5IHtmdW5jdGlvbn0gcG9zdGNzcyBQb3N0Q1NTIHBsdWdpbiBmdW5jdGlvbi5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHByb2Nlc3NPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZnJvbSAgICAgICAgICAgICBUaGUgcGF0aCBvZiB0aGUgQ1NTIHNvdXJjZSBmaWxlLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBhbHdheXMgc2V0IGBmcm9tYCxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlY2F1c2UgaXQgaXMgdXNlZCBpbiBzb3VyY2UgbWFwXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0aW9uIGFuZCBzeW50YXggZXJyb3IgbWVzc2FnZXMuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdG8gICAgICAgICAgICAgICBUaGUgcGF0aCB3aGVyZSB5b3XigJlsbCBwdXQgdGhlIG91dHB1dFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTIGZpbGUuIFlvdSBzaG91bGQgYWx3YXlzIHNldCBgdG9gXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBnZW5lcmF0ZSBjb3JyZWN0IHNvdXJjZSBtYXBzLlxuICogQHByb3BlcnR5IHtwYXJzZXJ9IHBhcnNlciAgICAgICAgICAgRnVuY3Rpb24gdG8gZ2VuZXJhdGUgQVNUIGJ5IHN0cmluZy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5naWZpZXJ9IHN0cmluZ2lmaWVyIENsYXNzIHRvIGdlbmVyYXRlIHN0cmluZyBieSBBU1QuXG4gKiBAcHJvcGVydHkge3N5bnRheH0gc3ludGF4ICAgICAgICAgICBPYmplY3Qgd2l0aCBgcGFyc2VgIGFuZCBgc3RyaW5naWZ5YC5cbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBtYXAgICAgICAgICAgICAgIFNvdXJjZSBtYXAgb3B0aW9ucy5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gbWFwLmlubGluZSAgICAgICAgICAgICAgICAgICAgRG9lcyBzb3VyY2UgbWFwIHNob3VsZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBlbWJlZGRlZCBpbiB0aGUgb3V0cHV0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyBhcyBhIGJhc2U2NC1lbmNvZGVkXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQuXG4gKiBAcHJvcGVydHkge3N0cmluZ3xvYmplY3R8ZmFsc2V8ZnVuY3Rpb259IG1hcC5wcmV2IFNvdXJjZSBtYXAgY29udGVudFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIGEgcHJldmlvdXNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2luZyBzdGVwXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3IgZXhhbXBsZSwgU2FzcykuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3RDU1Mgd2lsbCB0cnkgdG8gZmluZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyBtYXAgYXV0b21hdGljYWxseSxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc28geW91IGNvdWxkIGRpc2FibGUgaXQgYnlcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGZhbHNlYCB2YWx1ZS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gbWFwLnNvdXJjZXNDb250ZW50ICAgICAgICAgICAgRG9lcyBQb3N0Q1NTIHNob3VsZCBzZXRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG9yaWdpbiBjb250ZW50IHRvIG1hcC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfGZhbHNlfSBtYXAuYW5ub3RhdGlvbiAgICAgICAgICAgRG9lcyBQb3N0Q1NTIHNob3VsZCBzZXRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbiBjb21tZW50IHRvIG1hcC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBtYXAuZnJvbSAgICAgICAgICAgICAgICAgICAgICAgT3ZlcnJpZGUgYGZyb21gIGluIG1hcOKAmXNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlc2AuXG4gKi9cbiJdLCJmaWxlIjoicHJvY2Vzc29yLmpzIn0=\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _mapGenerator = _interopRequireDefault(require(\"./map-generator\"));\n\nvar _stringify2 = _interopRequireDefault(require(\"./stringify\"));\n\nvar _warnOnce = _interopRequireDefault(require(\"./warn-once\"));\n\nvar _result = _interopRequireDefault(require(\"./result\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction isPromise(obj) {\n return typeof obj === 'object' && typeof obj.then === 'function';\n}\n/**\n * A Promise proxy for the result of PostCSS transformations.\n *\n * A `LazyResult` instance is returned by {@link Processor#process}.\n *\n * @example\n * const lazy = postcss([autoprefixer]).process(css)\n */\n\n\nvar LazyResult =\n/*#__PURE__*/\nfunction () {\n function LazyResult(processor, css, opts) {\n this.stringified = false;\n this.processed = false;\n var root;\n\n if (typeof css === 'object' && css !== null && css.type === 'root') {\n root = css;\n } else if (css instanceof LazyResult || css instanceof _result.default) {\n root = css.root;\n\n if (css.map) {\n if (typeof opts.map === 'undefined') opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n var parser = _parse.default;\n if (opts.syntax) parser = opts.syntax.parse;\n if (opts.parser) parser = opts.parser;\n if (parser.parse) parser = parser.parse;\n\n try {\n root = parser(css, opts);\n } catch (error) {\n this.error = error;\n }\n }\n\n this.result = new _result.default(processor, root, opts);\n }\n /**\n * Returns a {@link Processor} instance, which will be used\n * for CSS transformations.\n *\n * @type {Processor}\n */\n\n\n var _proto = LazyResult.prototype;\n\n /**\n * Processes input CSS through synchronous plugins\n * and calls {@link Result#warnings()}.\n *\n * @return {Warning[]} Warnings from plugins.\n */\n _proto.warnings = function warnings() {\n return this.sync().warnings();\n }\n /**\n * Alias for the {@link LazyResult#css} property.\n *\n * @example\n * lazy + '' === lazy.css\n *\n * @return {string} Output CSS.\n */\n ;\n\n _proto.toString = function toString() {\n return this.css;\n }\n /**\n * Processes input CSS through synchronous and asynchronous plugins\n * and calls `onFulfilled` with a Result instance. If a plugin throws\n * an error, the `onRejected` callback will be executed.\n *\n * It implements standard Promise API.\n *\n * @param {onFulfilled} onFulfilled Callback will be executed\n * when all plugins will finish work.\n * @param {onRejected} onRejected Callback will be executed on any error.\n *\n * @return {Promise} Promise API to make queue.\n *\n * @example\n * postcss([autoprefixer]).process(css, { from: cssPath }).then(result => {\n * console.log(result.css)\n * })\n */\n ;\n\n _proto.then = function then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== 'production') {\n if (!('from' in this.opts)) {\n (0, _warnOnce.default)('Without `from` option PostCSS could generate wrong source map ' + 'and will not find Browserslist config. Set it to CSS file path ' + 'or to `undefined` to prevent this warning.');\n }\n }\n\n return this.async().then(onFulfilled, onRejected);\n }\n /**\n * Processes input CSS through synchronous and asynchronous plugins\n * and calls onRejected for each error thrown in any plugin.\n *\n * It implements standard Promise API.\n *\n * @param {onRejected} onRejected Callback will be executed on any error.\n *\n * @return {Promise} Promise API to make queue.\n *\n * @example\n * postcss([autoprefixer]).process(css).then(result => {\n * console.log(result.css)\n * }).catch(error => {\n * console.error(error)\n * })\n */\n ;\n\n _proto.catch = function _catch(onRejected) {\n return this.async().catch(onRejected);\n }\n /**\n * Processes input CSS through synchronous and asynchronous plugins\n * and calls onFinally on any error or when all plugins will finish work.\n *\n * It implements standard Promise API.\n *\n * @param {onFinally} onFinally Callback will be executed on any error or\n * when all plugins will finish work.\n *\n * @return {Promise} Promise API to make queue.\n *\n * @example\n * postcss([autoprefixer]).process(css).finally(() => {\n * console.log('processing ended')\n * })\n */\n ;\n\n _proto.finally = function _finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n };\n\n _proto.handleError = function handleError(error, plugin) {\n try {\n this.error = error;\n\n if (error.name === 'CssSyntaxError' && !error.plugin) {\n error.plugin = plugin.postcssPlugin;\n error.setMessage();\n } else if (plugin.postcssVersion) {\n if (process.env.NODE_ENV !== 'production') {\n var pluginName = plugin.postcssPlugin;\n var pluginVer = plugin.postcssVersion;\n var runtimeVer = this.result.processor.version;\n var a = pluginVer.split('.');\n var b = runtimeVer.split('.');\n\n if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {\n console.error('Unknown error from PostCSS plugin. Your current PostCSS ' + 'version is ' + runtimeVer + ', but ' + pluginName + ' uses ' + pluginVer + '. Perhaps this is the source of the error below.');\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n };\n\n _proto.asyncTick = function asyncTick(resolve, reject) {\n var _this = this;\n\n if (this.plugin >= this.processor.plugins.length) {\n this.processed = true;\n return resolve();\n }\n\n try {\n var plugin = this.processor.plugins[this.plugin];\n var promise = this.run(plugin);\n this.plugin += 1;\n\n if (isPromise(promise)) {\n promise.then(function () {\n _this.asyncTick(resolve, reject);\n }).catch(function (error) {\n _this.handleError(error, plugin);\n\n _this.processed = true;\n reject(error);\n });\n } else {\n this.asyncTick(resolve, reject);\n }\n } catch (error) {\n this.processed = true;\n reject(error);\n }\n };\n\n _proto.async = function async() {\n var _this2 = this;\n\n if (this.processed) {\n return new Promise(function (resolve, reject) {\n if (_this2.error) {\n reject(_this2.error);\n } else {\n resolve(_this2.stringify());\n }\n });\n }\n\n if (this.processing) {\n return this.processing;\n }\n\n this.processing = new Promise(function (resolve, reject) {\n if (_this2.error) return reject(_this2.error);\n _this2.plugin = 0;\n\n _this2.asyncTick(resolve, reject);\n }).then(function () {\n _this2.processed = true;\n return _this2.stringify();\n });\n return this.processing;\n };\n\n _proto.sync = function sync() {\n if (this.processed) return this.result;\n this.processed = true;\n\n if (this.processing) {\n throw new Error('Use process(css).then(cb) to work with async plugins');\n }\n\n if (this.error) throw this.error;\n\n for (var _iterator = this.result.processor.plugins, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var plugin = _ref;\n var promise = this.run(plugin);\n\n if (isPromise(promise)) {\n throw new Error('Use process(css).then(cb) to work with async plugins');\n }\n }\n\n return this.result;\n };\n\n _proto.run = function run(plugin) {\n this.result.lastPlugin = plugin;\n\n try {\n return plugin(this.result.root, this.result);\n } catch (error) {\n this.handleError(error, plugin);\n throw error;\n }\n };\n\n _proto.stringify = function stringify() {\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n var opts = this.result.opts;\n var str = _stringify2.default;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n var map = new _mapGenerator.default(str, this.result.root, this.result.opts);\n var data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n };\n\n _createClass(LazyResult, [{\n key: \"processor\",\n get: function get() {\n return this.result.processor;\n }\n /**\n * Options from the {@link Processor#process} call.\n *\n * @type {processOptions}\n */\n\n }, {\n key: \"opts\",\n get: function get() {\n return this.result.opts;\n }\n /**\n * Processes input CSS through synchronous plugins, converts `Root`\n * to a CSS string and returns {@link Result#css}.\n *\n * This property will only work with synchronous plugins.\n * If the processor contains any asynchronous plugins\n * it will throw an error. This is why this method is only\n * for debug purpose, you should always use {@link LazyResult#then}.\n *\n * @type {string}\n * @see Result#css\n */\n\n }, {\n key: \"css\",\n get: function get() {\n return this.stringify().css;\n }\n /**\n * An alias for the `css` property. Use it with syntaxes\n * that generate non-CSS output.\n *\n * This property will only work with synchronous plugins.\n * If the processor contains any asynchronous plugins\n * it will throw an error. This is why this method is only\n * for debug purpose, you should always use {@link LazyResult#then}.\n *\n * @type {string}\n * @see Result#content\n */\n\n }, {\n key: \"content\",\n get: function get() {\n return this.stringify().content;\n }\n /**\n * Processes input CSS through synchronous plugins\n * and returns {@link Result#map}.\n *\n * This property will only work with synchronous plugins.\n * If the processor contains any asynchronous plugins\n * it will throw an error. This is why this method is only\n * for debug purpose, you should always use {@link LazyResult#then}.\n *\n * @type {SourceMapGenerator}\n * @see Result#map\n */\n\n }, {\n key: \"map\",\n get: function get() {\n return this.stringify().map;\n }\n /**\n * Processes input CSS through synchronous plugins\n * and returns {@link Result#root}.\n *\n * This property will only work with synchronous plugins. If the processor\n * contains any asynchronous plugins it will throw an error.\n *\n * This is why this method is only for debug purpose,\n * you should always use {@link LazyResult#then}.\n *\n * @type {Root}\n * @see Result#root\n */\n\n }, {\n key: \"root\",\n get: function get() {\n return this.sync().root;\n }\n /**\n * Processes input CSS through synchronous plugins\n * and returns {@link Result#messages}.\n *\n * This property will only work with synchronous plugins. If the processor\n * contains any asynchronous plugins it will throw an error.\n *\n * This is why this method is only for debug purpose,\n * you should always use {@link LazyResult#then}.\n *\n * @type {Message[]}\n * @see Result#messages\n */\n\n }, {\n key: \"messages\",\n get: function get() {\n return this.sync().messages;\n }\n }]);\n\n return LazyResult;\n}();\n\nvar _default = LazyResult;\n/**\n * @callback onFulfilled\n * @param {Result} result\n */\n\n/**\n * @callback onRejected\n * @param {Error} error\n */\n\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxhenktcmVzdWx0LmVzNiJdLCJuYW1lcyI6WyJpc1Byb21pc2UiLCJvYmoiLCJ0aGVuIiwiTGF6eVJlc3VsdCIsInByb2Nlc3NvciIsImNzcyIsIm9wdHMiLCJzdHJpbmdpZmllZCIsInByb2Nlc3NlZCIsInJvb3QiLCJ0eXBlIiwiUmVzdWx0IiwibWFwIiwiaW5saW5lIiwicHJldiIsInBhcnNlciIsInBhcnNlIiwic3ludGF4IiwiZXJyb3IiLCJyZXN1bHQiLCJ3YXJuaW5ncyIsInN5bmMiLCJ0b1N0cmluZyIsIm9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImFzeW5jIiwiY2F0Y2giLCJmaW5hbGx5Iiwib25GaW5hbGx5IiwiaGFuZGxlRXJyb3IiLCJwbHVnaW4iLCJuYW1lIiwicG9zdGNzc1BsdWdpbiIsInNldE1lc3NhZ2UiLCJwb3N0Y3NzVmVyc2lvbiIsInBsdWdpbk5hbWUiLCJwbHVnaW5WZXIiLCJydW50aW1lVmVyIiwidmVyc2lvbiIsImEiLCJzcGxpdCIsImIiLCJwYXJzZUludCIsImNvbnNvbGUiLCJlcnIiLCJhc3luY1RpY2siLCJyZXNvbHZlIiwicmVqZWN0IiwicGx1Z2lucyIsImxlbmd0aCIsInByb21pc2UiLCJydW4iLCJQcm9taXNlIiwic3RyaW5naWZ5IiwicHJvY2Vzc2luZyIsIkVycm9yIiwibGFzdFBsdWdpbiIsInN0ciIsInN0cmluZ2lmaWVyIiwiTWFwR2VuZXJhdG9yIiwiZGF0YSIsImdlbmVyYXRlIiwiY29udGVudCIsIm1lc3NhZ2VzIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7OztBQUVBLFNBQVNBLFNBQVQsQ0FBb0JDLEdBQXBCLEVBQXlCO0FBQ3ZCLFNBQU8sT0FBT0EsR0FBUCxLQUFlLFFBQWYsSUFBMkIsT0FBT0EsR0FBRyxDQUFDQyxJQUFYLEtBQW9CLFVBQXREO0FBQ0Q7QUFFRDs7Ozs7Ozs7OztJQVFNQyxV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QUdBLEdBQUcsQ0FBQ0osU0FBVjtBQUVuQixRQUFJNUMsR0FBRyxHQUFHLElBQUlrRCxxQkFBSixDQUFpQkYsR0FBakIsRUFBc0IsS0FBS3pDLE1BQUwsQ0FBWVYsSUFBbEMsRUFBd0MsS0FBS1UsTUFBTCxDQUFZYixJQUFwRCxDQUFWO0FBQ0EsUUFBSXlELElBQUksR0FBR25ELEdBQUcsQ0FBQ29ELFFBQUosRUFBWDtBQUNBLFNBQUs3QyxNQUFMLENBQVlkLEdBQVosR0FBa0IwRCxJQUFJLENBQUMsQ0FBRCxDQUF0QjtBQUNBLFNBQUs1QyxNQUFMLENBQVlQLEdBQVosR0FBa0JtRCxJQUFJLENBQUMsQ0FBRCxDQUF0QjtBQUVBLFdBQU8sS0FBSzVDLE1BQVo7QUFDRCxHOzs7O3dCQWpVZ0I7QUFDZixhQUFPLEtBQUtBLE1BQUwsQ0FBWWYsU0FBbkI7QUFDRDtBQUVEOzs7Ozs7Ozt3QkFLWTtBQUNWLGFBQU8sS0FBS2UsTUFBTCxDQUFZYixJQUFuQjtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozt3QkFZVztBQUNULGFBQU8sS0FBS2tELFNBQUwsR0FBaUJuRCxHQUF4QjtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozt3QkFZZTtBQUNiLGFBQU8sS0FBS21ELFNBQUwsR0FBaUJTLE9BQXhCO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O3dCQVlXO0FBQ1QsYUFBTyxLQUFLVCxTQUFMLEdBQWlCNUMsR0FBeEI7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7O3dCQWFZO0FBQ1YsYUFBTyxLQUFLUyxJQUFMLEdBQVlaLElBQW5CO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozt3QkFhZ0I7QUFDZCxhQUFPLEtBQUtZLElBQUwsR0FBWTZDLFFBQW5CO0FBQ0Q7Ozs7OztlQXVPWS9ELFU7QUFFZjs7Ozs7QUFLQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNYXBHZW5lcmF0b3IgZnJvbSAnLi9tYXAtZ2VuZXJhdG9yJ1xuaW1wb3J0IHN0cmluZ2lmeSBmcm9tICcuL3N0cmluZ2lmeSdcbmltcG9ydCB3YXJuT25jZSBmcm9tICcuL3dhcm4tb25jZSdcbmltcG9ydCBSZXN1bHQgZnJvbSAnLi9yZXN1bHQnXG5pbXBvcnQgcGFyc2UgZnJvbSAnLi9wYXJzZSdcblxuZnVuY3Rpb24gaXNQcm9taXNlIChvYmopIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIHR5cGVvZiBvYmoudGhlbiA9PT0gJ2Z1bmN0aW9uJ1xufVxuXG4vKipcbiAqIEEgUHJvbWlzZSBwcm94eSBmb3IgdGhlIHJlc3VsdCBvZiBQb3N0Q1NTIHRyYW5zZm9ybWF0aW9ucy5cbiAqXG4gKiBBIGBMYXp5UmVzdWx0YCBpbnN0YW5jZSBpcyByZXR1cm5lZCBieSB7QGxpbmsgUHJvY2Vzc29yI3Byb2Nlc3N9LlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBsYXp5ID0gcG9zdGNzcyhbYXV0b3ByZWZpeGVyXSkucHJvY2Vzcyhjc3MpXG4gKi9cbmNsYXNzIExhenlSZXN1bHQge1xuICBjb25zdHJ1Y3RvciAocHJvY2Vzc29yLCBjc3MsIG9wdHMpIHtcbiAgICB0aGlzLnN0cmluZ2lmaWVkID0gZmFsc2VcbiAgICB0aGlzLnByb2Nlc3NlZCA9IGZhbHNlXG5cbiAgICBsZXQgcm9vdFxuICAgIGlmICh0eXBlb2YgY3NzID09PSAnb2JqZWN0JyAmJiBjc3MgIT09IG51bGwgJiYgY3NzLnR5cGUgPT09ICdyb290Jykge1xuICAgICAgcm9vdCA9IGNzc1xuICAgIH0gZWxzZSBpZiAoY3NzIGluc3RhbmNlb2YgTGF6eVJlc3VsdCB8fCBjc3MgaW5zdGFuY2VvZiBSZXN1bHQpIHtcbiAgICAgIHJvb3QgPSBjc3Mucm9vdFxuICAgICAgaWYgKGNzcy5tYXApIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRzLm1hcCA9PT0gJ3VuZGVmaW5lZCcpIG9wdHMubWFwID0geyB9XG4gICAgICAgIGlmICghb3B0cy5tYXAuaW5saW5lKSBvcHRzLm1hcC5pbmxpbmUgPSBmYWxzZVxuICAgICAgICBvcHRzLm1hcC5wcmV2ID0gY3NzLm1hcFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcGFyc2VyID0gcGFyc2VcbiAgICAgIGlmIChvcHRzLnN5bnRheCkgcGFyc2VyID0gb3B0cy5zeW50YXgucGFyc2VcbiAgICAgIGlmIChvcHRzLnBhcnNlcikgcGFyc2VyID0gb3B0cy5wYXJzZXJcbiAgICAgIGlmIChwYXJzZXIucGFyc2UpIHBhcnNlciA9IHBhcnNlci5wYXJzZVxuXG4gICAgICB0cnkge1xuICAgICAgICByb290ID0gcGFyc2VyKGNzcywgb3B0cylcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMuZXJyb3IgPSBlcnJvclxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucmVzdWx0ID0gbmV3IFJlc3VsdChwcm9jZXNzb3IsIHJvb3QsIG9wdHMpXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHtAbGluayBQcm9jZXNzb3J9IGluc3RhbmNlLCB3aGljaCB3aWxsIGJlIHVzZWRcbiAgICogZm9yIENTUyB0cmFuc2Zvcm1hdGlvbnMuXG4gICAqXG4gICAqIEB0eXBlIHtQcm9jZXNzb3J9XG4gICAqL1xuICBnZXQgcHJvY2Vzc29yICgpIHtcbiAgICByZXR1cm4gdGhpcy5yZXN1bHQucHJvY2Vzc29yXG4gIH1cblxuICAvKipcbiAgICogT3B0aW9ucyBmcm9tIHRoZSB7QGxpbmsgUHJvY2Vzc29yI3Byb2Nlc3N9IGNhbGwuXG4gICAqXG4gICAqIEB0eXBlIHtwcm9jZXNzT3B0aW9uc31cbiAgICovXG4gIGdldCBvcHRzICgpIHtcbiAgICByZXR1cm4gdGhpcy5yZXN1bHQub3B0c1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyBpbnB1dCBDU1MgdGhyb3VnaCBzeW5jaHJvbm91cyBwbHVnaW5zLCBjb252ZXJ0cyBgUm9vdGBcbiAgICogdG8gYSBDU1Mgc3RyaW5nIGFuZCByZXR1cm5zIHtAbGluayBSZXN1bHQjY3NzfS5cbiAgICpcbiAgICogVGhpcyBwcm9wZXJ0eSB3aWxsIG9ubHkgd29yayB3aXRoIHN5bmNocm9ub3VzIHBsdWdpbnMuXG4gICAqIElmIHRoZSBwcm9jZXNzb3IgY29udGFpbnMgYW55IGFzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAqIGl0IHdpbGwgdGhyb3cgYW4gZXJyb3IuIFRoaXMgaXMgd2h5IHRoaXMgbWV0aG9kIGlzIG9ubHlcbiAgICogZm9yIGRlYnVnIHB1cnBvc2UsIHlvdSBzaG91bGQgYWx3YXlzIHVzZSB7QGxpbmsgTGF6eVJlc3VsdCN0aGVufS5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQHNlZSBSZXN1bHQjY3NzXG4gICAqL1xuICBnZXQgY3NzICgpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdpZnkoKS5jc3NcbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBhbGlhcyBmb3IgdGhlIGBjc3NgIHByb3BlcnR5LiBVc2UgaXQgd2l0aCBzeW50YXhlc1xuICAgKiB0aGF0IGdlbmVyYXRlIG5vbi1DU1Mgb3V0cHV0LlxuICAgKlxuICAgKiBUaGlzIHByb3BlcnR5IHdpbGwgb25seSB3b3JrIHdpdGggc3luY2hyb25vdXMgcGx1Z2lucy5cbiAgICogSWYgdGhlIHByb2Nlc3NvciBjb250YWlucyBhbnkgYXN5bmNocm9ub3VzIHBsdWdpbnNcbiAgICogaXQgd2lsbCB0aHJvdyBhbiBlcnJvci4gVGhpcyBpcyB3aHkgdGhpcyBtZXRob2QgaXMgb25seVxuICAgKiBmb3IgZGVidWcgcHVycG9zZSwgeW91IHNob3VsZCBhbHdheXMgdXNlIHtAbGluayBMYXp5UmVzdWx0I3RoZW59LlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAc2VlIFJlc3VsdCNjb250ZW50XG4gICAqL1xuICBnZXQgY29udGVudCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5naWZ5KCkuY29udGVudFxuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyBpbnB1dCBDU1MgdGhyb3VnaCBzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAqIGFuZCByZXR1cm5zIHtAbGluayBSZXN1bHQjbWFwfS5cbiAgICpcbiAgICogVGhpcyBwcm9wZXJ0eSB3aWxsIG9ubHkgd29yayB3aXRoIHN5bmNocm9ub3VzIHBsdWdpbnMuXG4gICAqIElmIHRoZSBwcm9jZXNzb3IgY29udGFpbnMgYW55IGFzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAqIGl0IHdpbGwgdGhyb3cgYW4gZXJyb3IuIFRoaXMgaXMgd2h5IHRoaXMgbWV0aG9kIGlzIG9ubHlcbiAgICogZm9yIGRlYnVnIHB1cnBvc2UsIHlvdSBzaG91bGQgYWx3YXlzIHVzZSB7QGxpbmsgTGF6eVJlc3VsdCN0aGVufS5cbiAgICpcbiAgICogQHR5cGUge1NvdXJjZU1hcEdlbmVyYXRvcn1cbiAgICogQHNlZSBSZXN1bHQjbWFwXG4gICAqL1xuICBnZXQgbWFwICgpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdpZnkoKS5tYXBcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzZXMgaW5wdXQgQ1NTIHRocm91Z2ggc3luY2hyb25vdXMgcGx1Z2luc1xuICAgKiBhbmQgcmV0dXJucyB7QGxpbmsgUmVzdWx0I3Jvb3R9LlxuICAgKlxuICAgKiBUaGlzIHByb3BlcnR5IHdpbGwgb25seSB3b3JrIHdpdGggc3luY2hyb25vdXMgcGx1Z2lucy4gSWYgdGhlIHByb2Nlc3NvclxuICAgKiBjb250YWlucyBhbnkgYXN5bmNocm9ub3VzIHBsdWdpbnMgaXQgd2lsbCB0aHJvdyBhbiBlcnJvci5cbiAgICpcbiAgICogVGhpcyBpcyB3aHkgdGhpcyBtZXRob2QgaXMgb25seSBmb3IgZGVidWcgcHVycG9zZSxcbiAgICogeW91IHNob3VsZCBhbHdheXMgdXNlIHtAbGluayBMYXp5UmVzdWx0I3RoZW59LlxuICAgKlxuICAgKiBAdHlwZSB7Um9vdH1cbiAgICogQHNlZSBSZXN1bHQjcm9vdFxuICAgKi9cbiAgZ2V0IHJvb3QgKCkge1xuICAgIHJldHVybiB0aGlzLnN5bmMoKS5yb290XG4gIH1cblxuICAvKipcbiAgICogUHJvY2Vzc2VzIGlucHV0IENTUyB0aHJvdWdoIHN5bmNocm9ub3VzIHBsdWdpbnNcbiAgICogYW5kIHJldHVybnMge0BsaW5rIFJlc3VsdCNtZXNzYWdlc30uXG4gICAqXG4gICAqIFRoaXMgcHJvcGVydHkgd2lsbCBvbmx5IHdvcmsgd2l0aCBzeW5jaHJvbm91cyBwbHVnaW5zLiBJZiB0aGUgcHJvY2Vzc29yXG4gICAqIGNvbnRhaW5zIGFueSBhc3luY2hyb25vdXMgcGx1Z2lucyBpdCB3aWxsIHRocm93IGFuIGVycm9yLlxuICAgKlxuICAgKiBUaGlzIGlzIHdoeSB0aGlzIG1ldGhvZCBpcyBvbmx5IGZvciBkZWJ1ZyBwdXJwb3NlLFxuICAgKiB5b3Ugc2hvdWxkIGFsd2F5cyB1c2Uge0BsaW5rIExhenlSZXN1bHQjdGhlbn0uXG4gICAqXG4gICAqIEB0eXBlIHtNZXNzYWdlW119XG4gICAqIEBzZWUgUmVzdWx0I21lc3NhZ2VzXG4gICAqL1xuICBnZXQgbWVzc2FnZXMgKCkge1xuICAgIHJldHVybiB0aGlzLnN5bmMoKS5tZXNzYWdlc1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyBpbnB1dCBDU1MgdGhyb3VnaCBzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAqIGFuZCBjYWxscyB7QGxpbmsgUmVzdWx0I3dhcm5pbmdzKCl9LlxuICAgKlxuICAgKiBAcmV0dXJuIHtXYXJuaW5nW119IFdhcm5pbmdzIGZyb20gcGx1Z2lucy5cbiAgICovXG4gIHdhcm5pbmdzICgpIHtcbiAgICByZXR1cm4gdGhpcy5zeW5jKCkud2FybmluZ3MoKVxuICB9XG5cbiAgLyoqXG4gICAqIEFsaWFzIGZvciB0aGUge0BsaW5rIExhenlSZXN1bHQjY3NzfSBwcm9wZXJ0eS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogbGF6eSArICcnID09PSBsYXp5LmNzc1xuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IE91dHB1dCBDU1MuXG4gICAqL1xuICB0b1N0cmluZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3NzXG4gIH1cblxuICAvKipcbiAgICogUHJvY2Vzc2VzIGlucHV0IENTUyB0aHJvdWdoIHN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMgcGx1Z2luc1xuICAgKiBhbmQgY2FsbHMgYG9uRnVsZmlsbGVkYCB3aXRoIGEgUmVzdWx0IGluc3RhbmNlLiBJZiBhIHBsdWdpbiB0aHJvd3NcbiAgICogYW4gZXJyb3IsIHRoZSBgb25SZWplY3RlZGAgY2FsbGJhY2sgd2lsbCBiZSBleGVjdXRlZC5cbiAgICpcbiAgICogSXQgaW1wbGVtZW50cyBzdGFuZGFyZCBQcm9taXNlIEFQSS5cbiAgICpcbiAgICogQHBhcmFtIHtvbkZ1bGZpbGxlZH0gb25GdWxmaWxsZWQgQ2FsbGJhY2sgd2lsbCBiZSBleGVjdXRlZFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIGFsbCBwbHVnaW5zIHdpbGwgZmluaXNoIHdvcmsuXG4gICAqIEBwYXJhbSB7b25SZWplY3RlZH0gIG9uUmVqZWN0ZWQgIENhbGxiYWNrIHdpbGwgYmUgZXhlY3V0ZWQgb24gYW55IGVycm9yLlxuICAgKlxuICAgKiBAcmV0dXJuIHtQcm9taXNlfSBQcm9taXNlIEFQSSB0byBtYWtlIHF1ZXVlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBwb3N0Y3NzKFthdXRvcHJlZml4ZXJdKS5wcm9jZXNzKGNzcywgeyBmcm9tOiBjc3NQYXRoIH0pLnRoZW4ocmVzdWx0ID0+IHtcbiAgICogICBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKVxuICAgKiB9KVxuICAgKi9cbiAgdGhlbiAob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKCEoJ2Zyb20nIGluIHRoaXMub3B0cykpIHtcbiAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAgJ1dpdGhvdXQgYGZyb21gIG9wdGlvbiBQb3N0Q1NTIGNvdWxkIGdlbmVyYXRlIHdyb25nIHNvdXJjZSBtYXAgJyArXG4gICAgICAgICAgJ2FuZCB3aWxsIG5vdCBmaW5kIEJyb3dzZXJzbGlzdCBjb25maWcuIFNldCBpdCB0byBDU1MgZmlsZSBwYXRoICcgK1xuICAgICAgICAgICdvciB0byBgdW5kZWZpbmVkYCB0byBwcmV2ZW50IHRoaXMgd2FybmluZy4nXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYXN5bmMoKS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKVxuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyBpbnB1dCBDU1MgdGhyb3VnaCBzeW5jaHJvbm91cyBhbmQgYXN5bmNocm9ub3VzIHBsdWdpbnNcbiAgICogYW5kIGNhbGxzIG9uUmVqZWN0ZWQgZm9yIGVhY2ggZXJyb3IgdGhyb3duIGluIGFueSBwbHVnaW4uXG4gICAqXG4gICAqIEl0IGltcGxlbWVudHMgc3RhbmRhcmQgUHJvbWlzZSBBUEkuXG4gICAqXG4gICAqIEBwYXJhbSB7b25SZWplY3RlZH0gb25SZWplY3RlZCBDYWxsYmFjayB3aWxsIGJlIGV4ZWN1dGVkIG9uIGFueSBlcnJvci5cbiAgICpcbiAgICogQHJldHVybiB7UHJvbWlzZX0gUHJvbWlzZSBBUEkgdG8gbWFrZSBxdWV1ZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcG9zdGNzcyhbYXV0b3ByZWZpeGVyXSkucHJvY2Vzcyhjc3MpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICogICBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKVxuICAgKiB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAqICAgY29uc29sZS5lcnJvcihlcnJvcilcbiAgICogfSlcbiAgICovXG4gIGNhdGNoIChvblJlamVjdGVkKSB7XG4gICAgcmV0dXJuIHRoaXMuYXN5bmMoKS5jYXRjaChvblJlamVjdGVkKVxuICB9XG4gIC8qKlxuICAgKiBQcm9jZXNzZXMgaW5wdXQgQ1NTIHRocm91Z2ggc3luY2hyb25vdXMgYW5kIGFzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAqIGFuZCBjYWxscyBvbkZpbmFsbHkgb24gYW55IGVycm9yIG9yIHdoZW4gYWxsIHBsdWdpbnMgd2lsbCBmaW5pc2ggd29yay5cbiAgICpcbiAgICogSXQgaW1wbGVtZW50cyBzdGFuZGFyZCBQcm9taXNlIEFQSS5cbiAgICpcbiAgICogQHBhcmFtIHtvbkZpbmFsbHl9IG9uRmluYWxseSBDYWxsYmFjayB3aWxsIGJlIGV4ZWN1dGVkIG9uIGFueSBlcnJvciBvclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gYWxsIHBsdWdpbnMgd2lsbCBmaW5pc2ggd29yay5cbiAgICpcbiAgICogQHJldHVybiB7UHJvbWlzZX0gUHJvbWlzZSBBUEkgdG8gbWFrZSBxdWV1ZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcG9zdGNzcyhbYXV0b3ByZWZpeGVyXSkucHJvY2Vzcyhjc3MpLmZpbmFsbHkoKCkgPT4ge1xuICAgKiAgIGNvbnNvbGUubG9nKCdwcm9jZXNzaW5nIGVuZGVkJylcbiAgICogfSlcbiAgICovXG4gIGZpbmFsbHkgKG9uRmluYWxseSkge1xuICAgIHJldHVybiB0aGlzLmFzeW5jKCkudGhlbihvbkZpbmFsbHksIG9uRmluYWxseSlcbiAgfVxuXG4gIGhhbmRsZUVycm9yIChlcnJvciwgcGx1Z2luKSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZXJyb3IgPSBlcnJvclxuICAgICAgaWYgKGVycm9yLm5hbWUgPT09ICdDc3NTeW50YXhFcnJvcicgJiYgIWVycm9yLnBsdWdpbikge1xuICAgICAgICBlcnJvci5wbHVnaW4gPSBwbHVnaW4ucG9zdGNzc1BsdWdpblxuICAgICAgICBlcnJvci5zZXRNZXNzYWdlKClcbiAgICAgIH0gZWxzZSBpZiAocGx1Z2luLnBvc3Rjc3NWZXJzaW9uKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgbGV0IHBsdWdpbk5hbWUgPSBwbHVnaW4ucG9zdGNzc1BsdWdpblxuICAgICAgICAgIGxldCBwbHVnaW5WZXIgPSBwbHVnaW4ucG9zdGNzc1ZlcnNpb25cbiAgICAgICAgICBsZXQgcnVudGltZVZlciA9IHRoaXMucmVzdWx0LnByb2Nlc3Nvci52ZXJzaW9uXG4gICAgICAgICAgbGV0IGEgPSBwbHVnaW5WZXIuc3BsaXQoJy4nKVxuICAgICAgICAgIGxldCBiID0gcnVudGltZVZlci5zcGxpdCgnLicpXG5cbiAgICAgICAgICBpZiAoYVswXSAhPT0gYlswXSB8fCBwYXJzZUludChhWzFdKSA+IHBhcnNlSW50KGJbMV0pKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAnVW5rbm93biBlcnJvciBmcm9tIFBvc3RDU1MgcGx1Z2luLiBZb3VyIGN1cnJlbnQgUG9zdENTUyAnICtcbiAgICAgICAgICAgICAgJ3ZlcnNpb24gaXMgJyArIHJ1bnRpbWVWZXIgKyAnLCBidXQgJyArIHBsdWdpbk5hbWUgKyAnIHVzZXMgJyArXG4gICAgICAgICAgICAgIHBsdWdpblZlciArICcuIFBlcmhhcHMgdGhpcyBpcyB0aGUgc291cmNlIG9mIHRoZSBlcnJvciBiZWxvdy4nXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoY29uc29sZSAmJiBjb25zb2xlLmVycm9yKSBjb25zb2xlLmVycm9yKGVycilcbiAgICB9XG4gIH1cblxuICBhc3luY1RpY2sgKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGlmICh0aGlzLnBsdWdpbiA+PSB0aGlzLnByb2Nlc3Nvci5wbHVnaW5zLmxlbmd0aCkge1xuICAgICAgdGhpcy5wcm9jZXNzZWQgPSB0cnVlXG4gICAgICByZXR1cm4gcmVzb2x2ZSgpXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGxldCBwbHVnaW4gPSB0aGlzLnByb2Nlc3Nvci5wbHVnaW5zW3RoaXMucGx1Z2luXVxuICAgICAgbGV0IHByb21pc2UgPSB0aGlzLnJ1bihwbHVnaW4pXG4gICAgICB0aGlzLnBsdWdpbiArPSAxXG5cbiAgICAgIGlmIChpc1Byb21pc2UocHJvbWlzZSkpIHtcbiAgICAgICAgcHJvbWlzZS50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmFzeW5jVGljayhyZXNvbHZlLCByZWplY3QpXG4gICAgICAgIH0pLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yLCBwbHVnaW4pXG4gICAgICAgICAgdGhpcy5wcm9jZXNzZWQgPSB0cnVlXG4gICAgICAgICAgcmVqZWN0KGVycm9yKVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hc3luY1RpY2socmVzb2x2ZSwgcmVqZWN0KVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLnByb2Nlc3NlZCA9IHRydWVcbiAgICAgIHJlamVjdChlcnJvcilcbiAgICB9XG4gIH1cblxuICBhc3luYyAoKSB7XG4gICAgaWYgKHRoaXMucHJvY2Vzc2VkKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5lcnJvcikge1xuICAgICAgICAgIHJlamVjdCh0aGlzLmVycm9yKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUodGhpcy5zdHJpbmdpZnkoKSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKHRoaXMucHJvY2Vzc2luZykge1xuICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc2luZ1xuICAgIH1cblxuICAgIHRoaXMucHJvY2Vzc2luZyA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICh0aGlzLmVycm9yKSByZXR1cm4gcmVqZWN0KHRoaXMuZXJyb3IpXG4gICAgICB0aGlzLnBsdWdpbiA9IDBcbiAgICAgIHRoaXMuYXN5bmNUaWNrKHJlc29sdmUsIHJlamVjdClcbiAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMucHJvY2Vzc2VkID0gdHJ1ZVxuICAgICAgcmV0dXJuIHRoaXMuc3RyaW5naWZ5KClcbiAgICB9KVxuXG4gICAgcmV0dXJuIHRoaXMucHJvY2Vzc2luZ1xuICB9XG5cbiAgc3luYyAoKSB7XG4gICAgaWYgKHRoaXMucHJvY2Vzc2VkKSByZXR1cm4gdGhpcy5yZXN1bHRcbiAgICB0aGlzLnByb2Nlc3NlZCA9IHRydWVcblxuICAgIGlmICh0aGlzLnByb2Nlc3NpbmcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1VzZSBwcm9jZXNzKGNzcykudGhlbihjYikgdG8gd29yayB3aXRoIGFzeW5jIHBsdWdpbnMnKVxuICAgIH1cblxuICAgIGlmICh0aGlzLmVycm9yKSB0aHJvdyB0aGlzLmVycm9yXG5cbiAgICBmb3IgKGxldCBwbHVnaW4gb2YgdGhpcy5yZXN1bHQucHJvY2Vzc29yLnBsdWdpbnMpIHtcbiAgICAgIGxldCBwcm9taXNlID0gdGhpcy5ydW4ocGx1Z2luKVxuICAgICAgaWYgKGlzUHJvbWlzZShwcm9taXNlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1VzZSBwcm9jZXNzKGNzcykudGhlbihjYikgdG8gd29yayB3aXRoIGFzeW5jIHBsdWdpbnMnKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJlc3VsdFxuICB9XG5cbiAgcnVuIChwbHVnaW4pIHtcbiAgICB0aGlzLnJlc3VsdC5sYXN0UGx1Z2luID0gcGx1Z2luXG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHBsdWdpbih0aGlzLnJlc3VsdC5yb290LCB0aGlzLnJlc3VsdClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvciwgcGx1Z2luKVxuICAgICAgdGhyb3cgZXJyb3JcbiAgICB9XG4gIH1cblxuICBzdHJpbmdpZnkgKCkge1xuICAgIGlmICh0aGlzLnN0cmluZ2lmaWVkKSByZXR1cm4gdGhpcy5yZXN1bHRcbiAgICB0aGlzLnN0cmluZ2lmaWVkID0gdHJ1ZVxuXG4gICAgdGhpcy5zeW5jKClcblxuICAgIGxldCBvcHRzID0gdGhpcy5yZXN1bHQub3B0c1xuICAgIGxldCBzdHIgPSBzdHJpbmdpZnlcbiAgICBpZiAob3B0cy5zeW50YXgpIHN0ciA9IG9wdHMuc3ludGF4LnN0cmluZ2lmeVxuICAgIGlmIChvcHRzLnN0cmluZ2lmaWVyKSBzdHIgPSBvcHRzLnN0cmluZ2lmaWVyXG4gICAgaWYgKHN0ci5zdHJpbmdpZnkpIHN0ciA9IHN0ci5zdHJpbmdpZnlcblxuICAgIGxldCBtYXAgPSBuZXcgTWFwR2VuZXJhdG9yKHN0ciwgdGhpcy5yZXN1bHQucm9vdCwgdGhpcy5yZXN1bHQub3B0cylcbiAgICBsZXQgZGF0YSA9IG1hcC5nZW5lcmF0ZSgpXG4gICAgdGhpcy5yZXN1bHQuY3NzID0gZGF0YVswXVxuICAgIHRoaXMucmVzdWx0Lm1hcCA9IGRhdGFbMV1cblxuICAgIHJldHVybiB0aGlzLnJlc3VsdFxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IExhenlSZXN1bHRcblxuLyoqXG4gKiBAY2FsbGJhY2sgb25GdWxmaWxsZWRcbiAqIEBwYXJhbSB7UmVzdWx0fSByZXN1bHRcbiAqL1xuXG4vKipcbiAqIEBjYWxsYmFjayBvblJlamVjdGVkXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJvclxuICovXG4iXSwiZmlsZSI6ImxhenktcmVzdWx0LmpzIn0=\n","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var sourceRelative = sourceFile;\n if (sourceRoot !== null) {\n sourceRelative = util.relative(sourceRoot, sourceFile);\n }\n\n if (!generator._sources.has(sourceRelative)) {\n generator._sources.add(sourceRelative);\n }\n\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\n/**\n * Contains helpers for safely splitting lists of CSS values,\n * preserving parentheses and quotes.\n *\n * @example\n * const list = postcss.list\n *\n * @namespace list\n */\nvar list = {\n split: function split(string, separators, last) {\n var array = [];\n var current = '';\n var split = false;\n var func = 0;\n var quote = false;\n var escape = false;\n\n for (var i = 0; i < string.length; i++) {\n var letter = string[i];\n\n if (quote) {\n if (escape) {\n escape = false;\n } else if (letter === '\\\\') {\n escape = true;\n } else if (letter === quote) {\n quote = false;\n }\n } else if (letter === '\"' || letter === '\\'') {\n quote = letter;\n } else if (letter === '(') {\n func += 1;\n } else if (letter === ')') {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.indexOf(letter) !== -1) split = true;\n }\n\n if (split) {\n if (current !== '') array.push(current.trim());\n current = '';\n split = false;\n } else {\n current += letter;\n }\n }\n\n if (last || current !== '') array.push(current.trim());\n return array;\n },\n\n /**\n * Safely splits space-separated values (such as those for `background`,\n * `border-radius`, and other shorthand properties).\n *\n * @param {string} string Space-separated values.\n *\n * @return {string[]} Split values.\n *\n * @example\n * postcss.list.space('1px calc(10% + 1px)') //=> ['1px', 'calc(10% + 1px)']\n */\n space: function space(string) {\n var spaces = [' ', '\\n', '\\t'];\n return list.split(string, spaces);\n },\n\n /**\n * Safely splits comma-separated values (such as those for `transition-*`\n * and `background` properties).\n *\n * @param {string} string Comma-separated values.\n *\n * @return {string[]} Split values.\n *\n * @example\n * postcss.list.comma('black, linear-gradient(white, black)')\n * //=> ['black', 'linear-gradient(white, black)']\n */\n comma: function comma(string) {\n return list.split(string, [','], true);\n }\n};\nvar _default = list;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpc3QuZXM2Il0sIm5hbWVzIjpbImxpc3QiLCJzcGxpdCIsInN0cmluZyIsInNlcGFyYXRvcnMiLCJsYXN0IiwiYXJyYXkiLCJjdXJyZW50IiwiZnVuYyIsInF1b3RlIiwiZXNjYXBlIiwiaSIsImxlbmd0aCIsImxldHRlciIsImluZGV4T2YiLCJwdXNoIiwidHJpbSIsInNwYWNlIiwic3BhY2VzIiwiY29tbWEiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7OztBQVNBLElBQUlBLElBQUksR0FBRztBQUVUQyxFQUFBQSxLQUZTLGlCQUVGQyxNQUZFLEVBRU1DLFVBRk4sRUFFa0JDLElBRmxCLEVBRXdCO0FBQy9CLFFBQUlDLEtBQUssR0FBRyxFQUFaO0FBQ0EsUUFBSUMsT0FBTyxHQUFHLEVBQWQ7QUFDQSxRQUFJTCxLQUFLLEdBQUcsS0FBWjtBQUVBLFFBQUlNLElBQUksR0FBRyxDQUFYO0FBQ0EsUUFBSUMsS0FBSyxHQUFHLEtBQVo7QUFDQSxRQUFJQyxNQUFNLEdBQUcsS0FBYjs7QUFFQSxTQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdSLE1BQU0sQ0FBQ1MsTUFBM0IsRUFBbUNELENBQUMsRUFBcEMsRUFBd0M7QUFDdEMsVUFBSUUsTUFBTSxHQUFHVixNQUFNLENBQUNRLENBQUQsQ0FBbkI7O0FBRUEsVUFBSUYsS0FBSixFQUFXO0FBQ1QsWUFBSUMsTUFBSixFQUFZO0FBQ1ZBLFVBQUFBLE1BQU0sR0FBRyxLQUFUO0FBQ0QsU0FGRCxNQUVPLElBQUlHLE1BQU0sS0FBSyxJQUFmLEVBQXFCO0FBQzFCSCxVQUFBQSxNQUFNLEdBQUcsSUFBVDtBQUNELFNBRk0sTUFFQSxJQUFJRyxNQUFNLEtBQUtKLEtBQWYsRUFBc0I7QUFDM0JBLFVBQUFBLEtBQUssR0FBRyxLQUFSO0FBQ0Q7QUFDRixPQVJELE1BUU8sSUFBSUksTUFBTSxLQUFLLEdBQVgsSUFBa0JBLE1BQU0sS0FBSyxJQUFqQyxFQUF1QztBQUM1Q0osUUFBQUEsS0FBSyxHQUFHSSxNQUFSO0FBQ0QsT0FGTSxNQUVBLElBQUlBLE1BQU0sS0FBSyxHQUFmLEVBQW9CO0FBQ3pCTCxRQUFBQSxJQUFJLElBQUksQ0FBUjtBQUNELE9BRk0sTUFFQSxJQUFJSyxNQUFNLEtBQUssR0FBZixFQUFvQjtBQUN6QixZQUFJTCxJQUFJLEdBQUcsQ0FBWCxFQUFjQSxJQUFJLElBQUksQ0FBUjtBQUNmLE9BRk0sTUFFQSxJQUFJQSxJQUFJLEtBQUssQ0FBYixFQUFnQjtBQUNyQixZQUFJSixVQUFVLENBQUNVLE9BQVgsQ0FBbUJELE1BQW5CLE1BQStCLENBQUMsQ0FBcEMsRUFBdUNYLEtBQUssR0FBRyxJQUFSO0FBQ3hDOztBQUVELFVBQUlBLEtBQUosRUFBVztBQUNULFlBQUlLLE9BQU8sS0FBSyxFQUFoQixFQUFvQkQsS0FBSyxDQUFDUyxJQUFOLENBQVdSLE9BQU8sQ0FBQ1MsSUFBUixFQUFYO0FBQ3BCVCxRQUFBQSxPQUFPLEdBQUcsRUFBVjtBQUNBTCxRQUFBQSxLQUFLLEdBQUcsS0FBUjtBQUNELE9BSkQsTUFJTztBQUNMSyxRQUFBQSxPQUFPLElBQUlNLE1BQVg7QUFDRDtBQUNGOztBQUVELFFBQUlSLElBQUksSUFBSUUsT0FBTyxLQUFLLEVBQXhCLEVBQTRCRCxLQUFLLENBQUNTLElBQU4sQ0FBV1IsT0FBTyxDQUFDUyxJQUFSLEVBQVg7QUFDNUIsV0FBT1YsS0FBUDtBQUNELEdBM0NROztBQTZDVDs7Ozs7Ozs7Ozs7QUFXQVcsRUFBQUEsS0F4RFMsaUJBd0RGZCxNQXhERSxFQXdETTtBQUNiLFFBQUllLE1BQU0sR0FBRyxDQUFDLEdBQUQsRUFBTSxJQUFOLEVBQVksSUFBWixDQUFiO0FBQ0EsV0FBT2pCLElBQUksQ0FBQ0MsS0FBTCxDQUFXQyxNQUFYLEVBQW1CZSxNQUFuQixDQUFQO0FBQ0QsR0EzRFE7O0FBNkRUOzs7Ozs7Ozs7Ozs7QUFZQUMsRUFBQUEsS0F6RVMsaUJBeUVGaEIsTUF6RUUsRUF5RU07QUFDYixXQUFPRixJQUFJLENBQUNDLEtBQUwsQ0FBV0MsTUFBWCxFQUFtQixDQUFDLEdBQUQsQ0FBbkIsRUFBMEIsSUFBMUIsQ0FBUDtBQUNEO0FBM0VRLENBQVg7ZUErRWVGLEkiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnRhaW5zIGhlbHBlcnMgZm9yIHNhZmVseSBzcGxpdHRpbmcgbGlzdHMgb2YgQ1NTIHZhbHVlcyxcbiAqIHByZXNlcnZpbmcgcGFyZW50aGVzZXMgYW5kIHF1b3Rlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgbGlzdCA9IHBvc3Rjc3MubGlzdFxuICpcbiAqIEBuYW1lc3BhY2UgbGlzdFxuICovXG5sZXQgbGlzdCA9IHtcblxuICBzcGxpdCAoc3RyaW5nLCBzZXBhcmF0b3JzLCBsYXN0KSB7XG4gICAgbGV0IGFycmF5ID0gW11cbiAgICBsZXQgY3VycmVudCA9ICcnXG4gICAgbGV0IHNwbGl0ID0gZmFsc2VcblxuICAgIGxldCBmdW5jID0gMFxuICAgIGxldCBxdW90ZSA9IGZhbHNlXG4gICAgbGV0IGVzY2FwZSA9IGZhbHNlXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGxldHRlciA9IHN0cmluZ1tpXVxuXG4gICAgICBpZiAocXVvdGUpIHtcbiAgICAgICAgaWYgKGVzY2FwZSkge1xuICAgICAgICAgIGVzY2FwZSA9IGZhbHNlXG4gICAgICAgIH0gZWxzZSBpZiAobGV0dGVyID09PSAnXFxcXCcpIHtcbiAgICAgICAgICBlc2NhcGUgPSB0cnVlXG4gICAgICAgIH0gZWxzZSBpZiAobGV0dGVyID09PSBxdW90ZSkge1xuICAgICAgICAgIHF1b3RlID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChsZXR0ZXIgPT09ICdcIicgfHwgbGV0dGVyID09PSAnXFwnJykge1xuICAgICAgICBxdW90ZSA9IGxldHRlclxuICAgICAgfSBlbHNlIGlmIChsZXR0ZXIgPT09ICcoJykge1xuICAgICAgICBmdW5jICs9IDFcbiAgICAgIH0gZWxzZSBpZiAobGV0dGVyID09PSAnKScpIHtcbiAgICAgICAgaWYgKGZ1bmMgPiAwKSBmdW5jIC09IDFcbiAgICAgIH0gZWxzZSBpZiAoZnVuYyA9PT0gMCkge1xuICAgICAgICBpZiAoc2VwYXJhdG9ycy5pbmRleE9mKGxldHRlcikgIT09IC0xKSBzcGxpdCA9IHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKHNwbGl0KSB7XG4gICAgICAgIGlmIChjdXJyZW50ICE9PSAnJykgYXJyYXkucHVzaChjdXJyZW50LnRyaW0oKSlcbiAgICAgICAgY3VycmVudCA9ICcnXG4gICAgICAgIHNwbGl0ID0gZmFsc2VcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJlbnQgKz0gbGV0dGVyXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGxhc3QgfHwgY3VycmVudCAhPT0gJycpIGFycmF5LnB1c2goY3VycmVudC50cmltKCkpXG4gICAgcmV0dXJuIGFycmF5XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNhZmVseSBzcGxpdHMgc3BhY2Utc2VwYXJhdGVkIHZhbHVlcyAoc3VjaCBhcyB0aG9zZSBmb3IgYGJhY2tncm91bmRgLFxuICAgKiBgYm9yZGVyLXJhZGl1c2AsIGFuZCBvdGhlciBzaG9ydGhhbmQgcHJvcGVydGllcykuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgU3BhY2Utc2VwYXJhdGVkIHZhbHVlcy5cbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nW119IFNwbGl0IHZhbHVlcy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcG9zdGNzcy5saXN0LnNwYWNlKCcxcHggY2FsYygxMCUgKyAxcHgpJykgLy89PiBbJzFweCcsICdjYWxjKDEwJSArIDFweCknXVxuICAgKi9cbiAgc3BhY2UgKHN0cmluZykge1xuICAgIGxldCBzcGFjZXMgPSBbJyAnLCAnXFxuJywgJ1xcdCddXG4gICAgcmV0dXJuIGxpc3Quc3BsaXQoc3RyaW5nLCBzcGFjZXMpXG4gIH0sXG5cbiAgLyoqXG4gICAqIFNhZmVseSBzcGxpdHMgY29tbWEtc2VwYXJhdGVkIHZhbHVlcyAoc3VjaCBhcyB0aG9zZSBmb3IgYHRyYW5zaXRpb24tKmBcbiAgICogYW5kIGBiYWNrZ3JvdW5kYCBwcm9wZXJ0aWVzKS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBDb21tYS1zZXBhcmF0ZWQgdmFsdWVzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gU3BsaXQgdmFsdWVzLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBwb3N0Y3NzLmxpc3QuY29tbWEoJ2JsYWNrLCBsaW5lYXItZ3JhZGllbnQod2hpdGUsIGJsYWNrKScpXG4gICAqIC8vPT4gWydibGFjaycsICdsaW5lYXItZ3JhZGllbnQod2hpdGUsIGJsYWNrKSddXG4gICAqL1xuICBjb21tYSAoc3RyaW5nKSB7XG4gICAgcmV0dXJuIGxpc3Quc3BsaXQoc3RyaW5nLCBbJywnXSwgdHJ1ZSlcbiAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IGxpc3RcbiJdLCJmaWxlIjoibGlzdC5qcyJ9\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * Represents a CSS file and contains all its parsed nodes.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('a{color:black} b{z-index:2}')\n * root.type //=> 'root'\n * root.nodes.length //=> 2\n */\nvar Root =\n/*#__PURE__*/\nfunction (_Container) {\n _inheritsLoose(Root, _Container);\n\n function Root(defaults) {\n var _this;\n\n _this = _Container.call(this, defaults) || this;\n _this.type = 'root';\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n\n var _proto = Root.prototype;\n\n _proto.removeChild = function removeChild(child, ignore) {\n var index = this.index(child);\n\n if (!ignore && index === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index].raws.before;\n }\n\n return _Container.prototype.removeChild.call(this, child);\n };\n\n _proto.normalize = function normalize(child, sample, type) {\n var nodes = _Container.prototype.normalize.call(this, child);\n\n if (sample) {\n if (type === 'prepend') {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (var _iterator = nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var node = _ref;\n node.raws.before = sample.raws.before;\n }\n }\n }\n\n return nodes;\n }\n /**\n * Returns a {@link Result} instance representing the root’s CSS.\n *\n * @param {processOptions} [opts] Options with only `to` and `map` keys.\n *\n * @return {Result} Result with current root’s CSS.\n *\n * @example\n * const root1 = postcss.parse(css1, { from: 'a.css' })\n * const root2 = postcss.parse(css2, { from: 'b.css' })\n * root1.append(root2)\n * const result = root1.toResult({ to: 'all.css', map: true })\n */\n ;\n\n _proto.toResult = function toResult(opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var LazyResult = require('./lazy-result');\n\n var Processor = require('./processor');\n\n var lazy = new LazyResult(new Processor(), this, opts);\n return lazy.stringify();\n }\n /**\n * @memberof Root#\n * @member {object} raws Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `after`: the space symbols after the last child to the end of file.\n * * `semicolon`: is the last child has an (optional) semicolon.\n *\n * @example\n * postcss.parse('a {}\\n').raws //=> { after: '\\n' }\n * postcss.parse('a {}').raws //=> { after: '' }\n */\n ;\n\n return Root;\n}(_container.default);\n\nvar _default = Root;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJvb3QuZXM2Il0sIm5hbWVzIjpbIlJvb3QiLCJkZWZhdWx0cyIsInR5cGUiLCJub2RlcyIsInJlbW92ZUNoaWxkIiwiY2hpbGQiLCJpZ25vcmUiLCJpbmRleCIsImxlbmd0aCIsInJhd3MiLCJiZWZvcmUiLCJub3JtYWxpemUiLCJzYW1wbGUiLCJmaXJzdCIsIm5vZGUiLCJ0b1Jlc3VsdCIsIm9wdHMiLCJMYXp5UmVzdWx0IiwicmVxdWlyZSIsIlByb2Nlc3NvciIsImxhenkiLCJzdHJpbmdpZnkiLCJDb250YWluZXIiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7OztBQUVBOzs7Ozs7Ozs7O0lBVU1BLEk7Ozs7O0FBQ0osZ0JBQWFDLFFBQWIsRUFBdUI7QUFBQTs7QUFDckIsa0NBQU1BLFFBQU47QUFDQSxVQUFLQyxJQUFMLEdBQVksTUFBWjtBQUNBLFFBQUksQ0FBQyxNQUFLQyxLQUFWLEVBQWlCLE1BQUtBLEtBQUwsR0FBYSxFQUFiO0FBSEk7QUFJdEI7Ozs7U0FFREMsVyxHQUFBLHFCQUFhQyxLQUFiLEVBQW9CQyxNQUFwQixFQUE0QjtBQUMxQixRQUFJQyxLQUFLLEdBQUcsS0FBS0EsS0FBTCxDQUFXRixLQUFYLENBQVo7O0FBRUEsUUFBSSxDQUFDQyxNQUFELElBQVdDLEtBQUssS0FBSyxDQUFyQixJQUEwQixLQUFLSixLQUFMLENBQVdLLE1BQVgsR0FBb0IsQ0FBbEQsRUFBcUQ7QUFDbkQsV0FBS0wsS0FBTCxDQUFXLENBQVgsRUFBY00sSUFBZCxDQUFtQkMsTUFBbkIsR0FBNEIsS0FBS1AsS0FBTCxDQUFXSSxLQUFYLEVBQWtCRSxJQUFsQixDQUF1QkMsTUFBbkQ7QUFDRDs7QUFFRCxnQ0FBYU4sV0FBYixZQUF5QkMsS0FBekI7QUFDRCxHOztTQUVETSxTLEdBQUEsbUJBQVdOLEtBQVgsRUFBa0JPLE1BQWxCLEVBQTBCVixJQUExQixFQUFnQztBQUM5QixRQUFJQyxLQUFLLHdCQUFTUSxTQUFULFlBQW1CTixLQUFuQixDQUFUOztBQUVBLFFBQUlPLE1BQUosRUFBWTtBQUNWLFVBQUlWLElBQUksS0FBSyxTQUFiLEVBQXdCO0FBQ3RCLFlBQUksS0FBS0MsS0FBTCxDQUFXSyxNQUFYLEdBQW9CLENBQXhCLEVBQTJCO0FBQ3pCSSxVQUFBQSxNQUFNLENBQUNILElBQVAsQ0FBWUMsTUFBWixHQUFxQixLQUFLUCxLQUFMLENBQVcsQ0FBWCxFQUFjTSxJQUFkLENBQW1CQyxNQUF4QztBQUNELFNBRkQsTUFFTztBQUNMLGlCQUFPRSxNQUFNLENBQUNILElBQVAsQ0FBWUMsTUFBbkI7QUFDRDtBQUNGLE9BTkQsTUFNTyxJQUFJLEtBQUtHLEtBQUwsS0FBZUQsTUFBbkIsRUFBMkI7QUFDaEMsNkJBQWlCVCxLQUFqQixrSEFBd0I7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBLGNBQWZXLElBQWU7QUFDdEJBLFVBQUFBLElBQUksQ0FBQ0wsSUFBTCxDQUFVQyxNQUFWLEdBQW1CRSxNQUFNLENBQUNILElBQVAsQ0FBWUMsTUFBL0I7QUFDRDtBQUNGO0FBQ0Y7O0FBRUQsV0FBT1AsS0FBUDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7OztTQWFBWSxRLEdBQUEsa0JBQVVDLElBQVYsRUFBc0I7QUFBQSxRQUFaQSxJQUFZO0FBQVpBLE1BQUFBLElBQVksR0FBTCxFQUFLO0FBQUE7O0FBQ3BCLFFBQUlDLFVBQVUsR0FBR0MsT0FBTyxDQUFDLGVBQUQsQ0FBeEI7O0FBQ0EsUUFBSUMsU0FBUyxHQUFHRCxPQUFPLENBQUMsYUFBRCxDQUF2Qjs7QUFFQSxRQUFJRSxJQUFJLEdBQUcsSUFBSUgsVUFBSixDQUFlLElBQUlFLFNBQUosRUFBZixFQUFnQyxJQUFoQyxFQUFzQ0gsSUFBdEMsQ0FBWDtBQUNBLFdBQU9JLElBQUksQ0FBQ0MsU0FBTCxFQUFQO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBMURpQkMsa0I7O2VBMkVKdEIsSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb250YWluZXIgZnJvbSAnLi9jb250YWluZXInXG5cbi8qKlxuICogUmVwcmVzZW50cyBhIENTUyBmaWxlIGFuZCBjb250YWlucyBhbGwgaXRzIHBhcnNlZCBub2Rlcy5cbiAqXG4gKiBAZXh0ZW5kcyBDb250YWluZXJcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2F7Y29sb3I6YmxhY2t9IGJ7ei1pbmRleDoyfScpXG4gKiByb290LnR5cGUgICAgICAgICAvLz0+ICdyb290J1xuICogcm9vdC5ub2Rlcy5sZW5ndGggLy89PiAyXG4gKi9cbmNsYXNzIFJvb3QgZXh0ZW5kcyBDb250YWluZXIge1xuICBjb25zdHJ1Y3RvciAoZGVmYXVsdHMpIHtcbiAgICBzdXBlcihkZWZhdWx0cylcbiAgICB0aGlzLnR5cGUgPSAncm9vdCdcbiAgICBpZiAoIXRoaXMubm9kZXMpIHRoaXMubm9kZXMgPSBbXVxuICB9XG5cbiAgcmVtb3ZlQ2hpbGQgKGNoaWxkLCBpZ25vcmUpIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLmluZGV4KGNoaWxkKVxuXG4gICAgaWYgKCFpZ25vcmUgJiYgaW5kZXggPT09IDAgJiYgdGhpcy5ub2Rlcy5sZW5ndGggPiAxKSB7XG4gICAgICB0aGlzLm5vZGVzWzFdLnJhd3MuYmVmb3JlID0gdGhpcy5ub2Rlc1tpbmRleF0ucmF3cy5iZWZvcmVcbiAgICB9XG5cbiAgICByZXR1cm4gc3VwZXIucmVtb3ZlQ2hpbGQoY2hpbGQpXG4gIH1cblxuICBub3JtYWxpemUgKGNoaWxkLCBzYW1wbGUsIHR5cGUpIHtcbiAgICBsZXQgbm9kZXMgPSBzdXBlci5ub3JtYWxpemUoY2hpbGQpXG5cbiAgICBpZiAoc2FtcGxlKSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ3ByZXBlbmQnKSB7XG4gICAgICAgIGlmICh0aGlzLm5vZGVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBzYW1wbGUucmF3cy5iZWZvcmUgPSB0aGlzLm5vZGVzWzFdLnJhd3MuYmVmb3JlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVsZXRlIHNhbXBsZS5yYXdzLmJlZm9yZVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuZmlyc3QgIT09IHNhbXBsZSkge1xuICAgICAgICBmb3IgKGxldCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICAgICAgbm9kZS5yYXdzLmJlZm9yZSA9IHNhbXBsZS5yYXdzLmJlZm9yZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVzXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHtAbGluayBSZXN1bHR9IGluc3RhbmNlIHJlcHJlc2VudGluZyB0aGUgcm9vdOKAmXMgQ1NTLlxuICAgKlxuICAgKiBAcGFyYW0ge3Byb2Nlc3NPcHRpb25zfSBbb3B0c10gT3B0aW9ucyB3aXRoIG9ubHkgYHRvYCBhbmQgYG1hcGAga2V5cy5cbiAgICpcbiAgICogQHJldHVybiB7UmVzdWx0fSBSZXN1bHQgd2l0aCBjdXJyZW50IHJvb3TigJlzIENTUy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdDEgPSBwb3N0Y3NzLnBhcnNlKGNzczEsIHsgZnJvbTogJ2EuY3NzJyB9KVxuICAgKiBjb25zdCByb290MiA9IHBvc3Rjc3MucGFyc2UoY3NzMiwgeyBmcm9tOiAnYi5jc3MnIH0pXG4gICAqIHJvb3QxLmFwcGVuZChyb290MilcbiAgICogY29uc3QgcmVzdWx0ID0gcm9vdDEudG9SZXN1bHQoeyB0bzogJ2FsbC5jc3MnLCBtYXA6IHRydWUgfSlcbiAgICovXG4gIHRvUmVzdWx0IChvcHRzID0geyB9KSB7XG4gICAgbGV0IExhenlSZXN1bHQgPSByZXF1aXJlKCcuL2xhenktcmVzdWx0JylcbiAgICBsZXQgUHJvY2Vzc29yID0gcmVxdWlyZSgnLi9wcm9jZXNzb3InKVxuXG4gICAgbGV0IGxhenkgPSBuZXcgTGF6eVJlc3VsdChuZXcgUHJvY2Vzc29yKCksIHRoaXMsIG9wdHMpXG4gICAgcmV0dXJuIGxhenkuc3RyaW5naWZ5KClcbiAgfVxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgUm9vdCNcbiAgICogQG1lbWJlciB7b2JqZWN0fSByYXdzIEluZm9ybWF0aW9uIHRvIGdlbmVyYXRlIGJ5dGUtdG8tYnl0ZSBlcXVhbFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgbm9kZSBzdHJpbmcgYXMgaXQgd2FzIGluIHRoZSBvcmlnaW4gaW5wdXQuXG4gICAqXG4gICAqIEV2ZXJ5IHBhcnNlciBzYXZlcyBpdHMgb3duIHByb3BlcnRpZXMsXG4gICAqIGJ1dCB0aGUgZGVmYXVsdCBDU1MgcGFyc2VyIHVzZXM6XG4gICAqXG4gICAqICogYGFmdGVyYDogdGhlIHNwYWNlIHN5bWJvbHMgYWZ0ZXIgdGhlIGxhc3QgY2hpbGQgdG8gdGhlIGVuZCBvZiBmaWxlLlxuICAgKiAqIGBzZW1pY29sb25gOiBpcyB0aGUgbGFzdCBjaGlsZCBoYXMgYW4gKG9wdGlvbmFsKSBzZW1pY29sb24uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHBvc3Rjc3MucGFyc2UoJ2Ege31cXG4nKS5yYXdzIC8vPT4geyBhZnRlcjogJ1xcbicgfVxuICAgKiBwb3N0Y3NzLnBhcnNlKCdhIHt9JykucmF3cyAgIC8vPT4geyBhZnRlcjogJycgfVxuICAgKi9cbn1cblxuZXhwb3J0IGRlZmF1bHQgUm9vdFxuIl0sImZpbGUiOiJyb290LmpzIn0=\n","module.exports = { \"default\": require(\"core-js/library/fn/set-immediate\"), __esModule: true };","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.focusCapturedRef = focusCapturedRef;\n/*\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Automatically focuses the captured reference when receiving a non-null\n * object. Useful in scenarios where componentDidMount does not have a\n * useful reference to an element, but one needs to focus the element on\n * first render. Example usage: ref={focusCapturedRef}\n * @param {function} ref The React reference to focus on, if not null\n */\nfunction focusCapturedRef(ref) {\n if (ref) {\n ref.focus();\n }\n}\n//# sourceMappingURL=Accessibility.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _dispatcher = require('../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _RoomNotifs = require('../RoomNotifs');\n\nvar RoomNotifs = _interopRequireWildcard(_RoomNotifs);\n\nvar _RoomListStore = require('./RoomListStore');\n\nvar _RoomListStore2 = _interopRequireDefault(_RoomListStore);\n\nvar _events = require('events');\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _lodash = require('lodash');\n\nvar _SettingsStore = require('../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar STANDARD_TAGS_REGEX = /^(m\\.(favourite|lowpriority|server_notice)|im\\.vector\\.fake\\.(invite|recent|direct|archived))$/;\n\nfunction commonPrefix(a, b) {\n var len = Math.min(a.length, b.length);\n var prefix = void 0;\n for (var i = 0; i < len; ++i) {\n if (a.charAt(i) !== b.charAt(i)) {\n prefix = a.substr(0, i);\n break;\n }\n }\n if (prefix === undefined) {\n prefix = a.substr(0, len);\n }\n var spaceIdx = prefix.indexOf(' ');\n if (spaceIdx !== -1) {\n prefix = prefix.substr(0, spaceIdx + 1);\n }\n if (prefix.length >= 2) {\n return prefix;\n }\n return \"\";\n}\n/**\n * A class for storing application state for ordering tags in the TagPanel.\n */\n\nvar CustomRoomTagStore = function (_EventEmitter) {\n (0, _inherits3.default)(CustomRoomTagStore, _EventEmitter);\n\n function CustomRoomTagStore() {\n (0, _classCallCheck3.default)(this, CustomRoomTagStore);\n\n // Initialise state\n var _this = (0, _possibleConstructorReturn3.default)(this, (CustomRoomTagStore.__proto__ || (0, _getPrototypeOf2.default)(CustomRoomTagStore)).call(this));\n\n _this._state = { tags: {} };\n\n // as RoomListStore gets updated by every timeline event\n // throttle this to only run every 500ms\n _this._getUpdatedTags = (0, _lodash.throttle)(_this._getUpdatedTags, 500, {\n leading: true,\n trailing: true\n });\n _this._roomListStoreToken = _RoomListStore2.default.addListener(function () {\n _this._setState({ tags: _this._getUpdatedTags() });\n });\n _dispatcher2.default.register(function (payload) {\n return _this._onDispatch(payload);\n });\n return _this;\n }\n\n (0, _createClass3.default)(CustomRoomTagStore, [{\n key: 'getTags',\n value: function getTags() {\n return this._state.tags;\n }\n }, {\n key: '_setState',\n value: function _setState(newState) {\n this._state = (0, _assign2.default)(this._state, newState);\n this.emit(\"change\");\n }\n }, {\n key: 'addListener',\n value: function addListener(callback) {\n var _this2 = this;\n\n this.on(\"change\", callback);\n return {\n remove: function remove() {\n _this2.removeListener(\"change\", callback);\n }\n };\n }\n }, {\n key: 'getSortedTags',\n value: function getSortedTags() {\n var _this3 = this;\n\n var roomLists = _RoomListStore2.default.getRoomLists();\n\n var tagNames = (0, _keys2.default)(this._state.tags).sort();\n var prefixes = tagNames.map(function (name, i) {\n var isFirst = i === 0;\n var isLast = i === tagNames.length - 1;\n var backwardsPrefix = !isFirst ? commonPrefix(name, tagNames[i - 1]) : \"\";\n var forwardsPrefix = !isLast ? commonPrefix(name, tagNames[i + 1]) : \"\";\n var longestPrefix = backwardsPrefix.length > forwardsPrefix.length ? backwardsPrefix : forwardsPrefix;\n return longestPrefix;\n });\n return tagNames.map(function (name, i) {\n var notifs = RoomNotifs.aggregateNotificationCount(roomLists[name]);\n var badge = void 0;\n if (notifs.count !== 0) {\n badge = notifs;\n }\n var avatarLetter = name.substr(prefixes[i].length, 1);\n var selected = _this3._state.tags[name];\n return { name: name, avatarLetter: avatarLetter, badge: badge, selected: selected };\n });\n }\n }, {\n key: '_onDispatch',\n value: function _onDispatch(payload) {\n switch (payload.action) {\n case 'select_custom_room_tag':\n {\n var oldTags = this._state.tags;\n if (oldTags.hasOwnProperty(payload.tag)) {\n var tag = {};\n tag[payload.tag] = !oldTags[payload.tag];\n var tags = (0, _assign2.default)({}, oldTags, tag);\n this._setState({ tags: tags });\n }\n }\n break;\n case 'on_client_not_viable':\n case 'on_logged_out':\n {\n // we assume to always have a tags object in the state\n this._state = { tags: {} };\n if (this._roomListStoreToken) {\n this._roomListStoreToken.remove();\n this._roomListStoreToken = null;\n }\n }\n break;\n }\n }\n }, {\n key: '_getUpdatedTags',\n value: function _getUpdatedTags() {\n if (!_SettingsStore2.default.isFeatureEnabled(\"feature_custom_tags\")) {\n return;\n }\n\n var newTagNames = (0, _keys2.default)(_RoomListStore2.default.getRoomLists()).filter(function (tagName) {\n return !tagName.match(STANDARD_TAGS_REGEX);\n }).sort();\n var prevTags = this._state && this._state.tags;\n var newTags = newTagNames.reduce(function (newTags, tagName) {\n newTags[tagName] = prevTags && prevTags[tagName] || false;\n return newTags;\n }, {});\n return newTags;\n }\n }]);\n return CustomRoomTagStore;\n}(_events2.default);\n\nif (global.singletonCustomRoomTagStore === undefined) {\n global.singletonCustomRoomTagStore = new CustomRoomTagStore();\n}\nexports.default = global.singletonCustomRoomTagStore;\nmodule.exports = exports['default'];\n//# sourceMappingURL=CustomRoomTagStore.js.map","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FluxStoreGroup\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * FluxStoreGroup allows you to execute a callback on every dispatch after\n * waiting for each of the given stores.\n */\n\nvar FluxStoreGroup = (function () {\n function FluxStoreGroup(stores, callback) {\n var _this = this;\n\n _classCallCheck(this, FluxStoreGroup);\n\n this._dispatcher = _getUniformDispatcher(stores);\n\n // precompute store tokens\n var storeTokens = stores.map(function (store) {\n return store.getDispatchToken();\n });\n\n // register with the dispatcher\n this._dispatchToken = this._dispatcher.register(function (payload) {\n _this._dispatcher.waitFor(storeTokens);\n callback();\n });\n }\n\n FluxStoreGroup.prototype.release = function release() {\n this._dispatcher.unregister(this._dispatchToken);\n };\n\n return FluxStoreGroup;\n})();\n\nfunction _getUniformDispatcher(stores) {\n !(stores && stores.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Must provide at least one store to FluxStoreGroup') : invariant(false) : undefined;\n var dispatcher = stores[0].getDispatcher();\n if (process.env.NODE_ENV !== 'production') {\n for (var _iterator = stores, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var store = _ref;\n\n !(store.getDispatcher() === dispatcher) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'All stores in a FluxStoreGroup must use the same dispatcher') : invariant(false) : undefined;\n }\n }\n return dispatcher;\n}\n\nmodule.exports = FluxStoreGroup;","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FluxReduceStore\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar FluxStore = require('./FluxStore');\n\nvar abstractMethod = require('./abstractMethod');\nvar invariant = require('fbjs/lib/invariant');\n\nvar FluxReduceStore = (function (_FluxStore) {\n _inherits(FluxReduceStore, _FluxStore);\n\n function FluxReduceStore(dispatcher) {\n _classCallCheck(this, FluxReduceStore);\n\n _FluxStore.call(this, dispatcher);\n this._state = this.getInitialState();\n }\n\n /**\n * Getter that exposes the entire state of this store. If your state is not\n * immutable you should override this and not expose _state directly.\n */\n\n FluxReduceStore.prototype.getState = function getState() {\n return this._state;\n };\n\n /**\n * Constructs the initial state for this store. This is called once during\n * construction of the store.\n */\n\n FluxReduceStore.prototype.getInitialState = function getInitialState() {\n return abstractMethod('FluxReduceStore', 'getInitialState');\n };\n\n /**\n * Used to reduce a stream of actions coming from the dispatcher into a\n * single state object\n */\n\n FluxReduceStore.prototype.reduce = function reduce(state, action) {\n return abstractMethod('FluxReduceStore', 'reduce');\n };\n\n /**\n * Checks if two versions of state are the same. You do not need to override\n * this if your state is immutable.\n */\n\n FluxReduceStore.prototype.areEqual = function areEqual(one, two) {\n return one === two;\n };\n\n /**\n * Use reduce and track _state instead of using __onDispatch\n */\n\n FluxReduceStore.prototype.__invokeOnDispatch = function __invokeOnDispatch(action) {\n this.__changed = false;\n\n // reduce the stream of incoming actions to state, update when necessary\n var startingState = this._state;\n var endingState = this.reduce(startingState, action);\n\n // This means your ending state should never be undefined\n !(endingState !== undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s returned undefined from reduce(...), did you forget to return ' + 'state in the default case? (use null if this was intentional)', this.constructor.name) : invariant(false) : undefined;\n\n if (!this.areEqual(startingState, endingState)) {\n this._state = endingState;\n\n // `__emitChange()` sets `this.__changed` to true and then the actual\n // change will be fired from the emitter at the end of the dispatch, this\n // is required in order to support methods like `hasChanged()`\n this.__emitChange();\n }\n\n if (this.__changed) {\n this.__emitter.emit(this.__changeEvent);\n }\n };\n\n return FluxReduceStore;\n})(FluxStore);\n\nmodule.exports = FluxReduceStore;","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FluxStore\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _require = require('fbemitter');\n\nvar EventEmitter = _require.EventEmitter;\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * This class should be extended by the stores in your application, like so:\n *\n * var FluxStore = require('FluxStore');\n * var MyDispatcher = require('MyDispatcher');\n *\n * var _foo;\n *\n * class MyStore extends FluxStore {\n *\n * getFoo() {\n * return _foo;\n * }\n *\n * __onDispatch = function(action) {\n * switch(action.type) {\n *\n * case 'an-action':\n * changeState(action.someData);\n * this.__emitChange();\n * break;\n *\n * case 'another-action':\n * changeStateAnotherWay(action.otherData);\n * this.__emitChange();\n * break;\n *\n * default:\n * // no op\n * }\n * }\n *\n * }\n *\n * module.exports = new MyStore(MyDispatcher);\n */\n\nvar FluxStore = (function () {\n\n /**\n * @public\n * @param {Dispatcher} dispatcher\n */\n\n function FluxStore(dispatcher) {\n var _this = this;\n\n _classCallCheck(this, FluxStore);\n\n this.__className = this.constructor.name;\n\n this.__changed = false;\n this.__changeEvent = 'change';\n this.__dispatcher = dispatcher;\n this.__emitter = new EventEmitter();\n this._dispatchToken = dispatcher.register(function (payload) {\n _this.__invokeOnDispatch(payload);\n });\n }\n\n /**\n * @public\n * @param {function} callback\n * @return {object} EmitterSubscription that can be used with\n * SubscriptionsHandler or directly used to release the subscription.\n */\n\n FluxStore.prototype.addListener = function addListener(callback) {\n return this.__emitter.addListener(this.__changeEvent, callback);\n };\n\n /**\n * @public\n * @return {Dispatcher} The dispatcher that this store is registered with.\n */\n\n FluxStore.prototype.getDispatcher = function getDispatcher() {\n return this.__dispatcher;\n };\n\n /**\n * @public\n * @return {string} A string the dispatcher uses to identify each store's\n * registered callback. This is used with the dispatcher's waitFor method\n * to declaratively depend on other stores updating themselves first.\n */\n\n FluxStore.prototype.getDispatchToken = function getDispatchToken() {\n return this._dispatchToken;\n };\n\n /**\n * @public\n * @return {boolean} Whether the store has changed during the most recent\n * dispatch.\n */\n\n FluxStore.prototype.hasChanged = function hasChanged() {\n !this.__dispatcher.isDispatching() ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.hasChanged(): Must be invoked while dispatching.', this.__className) : invariant(false) : undefined;\n return this.__changed;\n };\n\n /**\n * @protected\n * Emit an event notifying listeners that the state of the store has changed.\n */\n\n FluxStore.prototype.__emitChange = function __emitChange() {\n !this.__dispatcher.isDispatching() ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.__emitChange(): Must be invoked while dispatching.', this.__className) : invariant(false) : undefined;\n this.__changed = true;\n };\n\n /**\n * This method encapsulates all logic for invoking __onDispatch. It should\n * be used for things like catching changes and emitting them after the\n * subclass has handled a payload.\n *\n * @protected\n * @param {object} payload The data dispatched by the dispatcher, describing\n * something that has happened in the real world: the user clicked, the\n * server responded, time passed, etc.\n */\n\n FluxStore.prototype.__invokeOnDispatch = function __invokeOnDispatch(payload) {\n this.__changed = false;\n this.__onDispatch(payload);\n if (this.__changed) {\n this.__emitter.emit(this.__changeEvent);\n }\n };\n\n /**\n * The callback that will be registered with the dispatcher during\n * instantiation. Subclasses must override this method. This callback is the\n * only way the store receives new data.\n *\n * @protected\n * @override\n * @param {object} payload The data dispatched by the dispatcher, describing\n * something that has happened in the real world: the user clicked, the\n * server responded, time passed, etc.\n */\n\n FluxStore.prototype.__onDispatch = function __onDispatch(payload) {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s has not overridden FluxStore.__onDispatch(), which is required', this.__className) : invariant(false) : undefined;\n };\n\n return FluxStore;\n})();\n\nmodule.exports = FluxStore;\n\n// private\n\n// protected, available to subclasses","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n * \n * @providesModule EmitterSubscription\n * @typechecks\n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar EventSubscription = require('./EventSubscription');\n\n/**\n * EmitterSubscription represents a subscription with listener and context data.\n */\n\nvar EmitterSubscription = (function (_EventSubscription) {\n _inherits(EmitterSubscription, _EventSubscription);\n\n /**\n * @param {EventSubscriptionVendor} subscriber - The subscriber that controls\n * this subscription\n * @param {function} listener - Function to invoke when the specified event is\n * emitted\n * @param {*} context - Optional context object to use when invoking the\n * listener\n */\n\n function EmitterSubscription(subscriber, listener, context) {\n _classCallCheck(this, EmitterSubscription);\n\n _EventSubscription.call(this, subscriber);\n this.listener = listener;\n this.context = context;\n }\n\n return EmitterSubscription;\n})(EventSubscription);\n\nmodule.exports = EmitterSubscription;","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar util = require('./utils');\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = util.assign(\n {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n }\n },\n Format\n);\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.baseUrl = exports.host = undefined;\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _PermalinkConstructor2 = require(\"./PermalinkConstructor\");\n\nvar _PermalinkConstructor3 = _interopRequireDefault(_PermalinkConstructor2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar host = exports.host = \"matrix.to\"; /*\n Copyright 2019 The Matrix.org Foundation C.I.C.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar baseUrl = exports.baseUrl = \"https://\" + host;\n\n/**\n * Generates matrix.to permalinks\n */\n\nvar SpecPermalinkConstructor = function (_PermalinkConstructor) {\n (0, _inherits3.default)(SpecPermalinkConstructor, _PermalinkConstructor);\n\n function SpecPermalinkConstructor() {\n (0, _classCallCheck3.default)(this, SpecPermalinkConstructor);\n return (0, _possibleConstructorReturn3.default)(this, (SpecPermalinkConstructor.__proto__ || (0, _getPrototypeOf2.default)(SpecPermalinkConstructor)).call(this));\n }\n\n (0, _createClass3.default)(SpecPermalinkConstructor, [{\n key: \"forEvent\",\n value: function forEvent(roomId, eventId, serverCandidates) {\n return baseUrl + \"/#/\" + roomId + \"/\" + eventId + this.encodeServerCandidates(serverCandidates);\n }\n }, {\n key: \"forRoom\",\n value: function forRoom(roomIdOrAlias, serverCandidates) {\n return baseUrl + \"/#/\" + roomIdOrAlias + this.encodeServerCandidates(serverCandidates);\n }\n }, {\n key: \"forUser\",\n value: function forUser(userId) {\n return baseUrl + \"/#/\" + userId;\n }\n }, {\n key: \"forGroup\",\n value: function forGroup(groupId) {\n return baseUrl + \"/#/\" + groupId;\n }\n }, {\n key: \"forEntity\",\n value: function forEntity(entityId) {\n return baseUrl + \"/#/\" + entityId;\n }\n }, {\n key: \"isPermalinkHost\",\n value: function isPermalinkHost(testHost) {\n return testHost === host;\n }\n }, {\n key: \"encodeServerCandidates\",\n value: function encodeServerCandidates(candidates) {\n if (!candidates || candidates.length === 0) return '';\n return \"?via=\" + candidates.map(function (c) {\n return encodeURIComponent(c);\n }).join(\"&via=\");\n }\n\n // Heavily inspired by/borrowed from the matrix-bot-sdk (with permission):\n // https://github.com/turt2live/matrix-js-bot-sdk/blob/7c4665c9a25c2c8e0fe4e509f2616505b5b66a1c/src/Permalinks.ts#L33-L61\n\n }, {\n key: \"parsePermalink\",\n value: function parsePermalink(fullUrl) {\n if (!fullUrl || !fullUrl.startsWith(baseUrl)) {\n throw new Error(\"Does not appear to be a permalink\");\n }\n\n var parts = fullUrl.substring((baseUrl + \"/#/\").length).split(\"/\");\n\n var entity = parts[0];\n if (entity[0] === '@') {\n // Probably a user, no further parsing needed.\n return _PermalinkConstructor2.PermalinkParts.forUser(entity);\n } else if (entity[0] === '+') {\n // Probably a group, no further parsing needed.\n return _PermalinkConstructor2.PermalinkParts.forGroup(entity);\n } else if (entity[0] === '#' || entity[0] === '!') {\n if (parts.length === 1) {\n return _PermalinkConstructor2.PermalinkParts.forRoom(entity, []);\n }\n\n // rejoin the rest because v3 events can have slashes (annoyingly)\n var eventIdAndQuery = parts.length > 1 ? parts.slice(1).join('/') : \"\";\n var secondaryParts = eventIdAndQuery.split(\"?\");\n\n var eventId = secondaryParts[0];\n var query = secondaryParts.length > 1 ? secondaryParts[1] : \"\";\n\n var via = query.split(\"via=\").filter(function (p) {\n return !!p;\n });\n\n return _PermalinkConstructor2.PermalinkParts.forEvent(entity, eventId, via);\n } else {\n throw new Error(\"Unknown entity type in permalink\");\n }\n }\n }]);\n return SpecPermalinkConstructor;\n}(_PermalinkConstructor3.default);\n\nexports.default = SpecPermalinkConstructor;\n//# sourceMappingURL=SpecPermalinkConstructor.js.map","'use strict';\n\nexports.__esModule = true;\nexports.stateify = exports.TokenState = exports.CharacterState = undefined;\n\nvar _class = require('../utils/class');\n\nfunction createStateClass() {\n\treturn function (tClass) {\n\t\tthis.j = [];\n\t\tthis.T = tClass || null;\n\t};\n}\n\n/**\n\tA simple state machine that can emit token classes\n\n\tThe `j` property in this class refers to state jumps. It's a\n\tmultidimensional array where for each element:\n\n\t* index [0] is a symbol or class of symbols to transition to.\n\t* index [1] is a State instance which matches\n\n\tThe type of symbol will depend on the target implementation for this class.\n\tIn Linkify, we have a two-stage scanner. Each stage uses this state machine\n\tbut with a slighly different (polymorphic) implementation.\n\n\tThe `T` property refers to the token class.\n\n\tTODO: Can the `on` and `next` methods be combined?\n\n\t@class BaseState\n*/\nvar BaseState = createStateClass();\nBaseState.prototype = {\n\tdefaultTransition: false,\n\n\t/**\n \t@method constructor\n \t@param {Class} tClass Pass in the kind of token to emit if there are\n \t\tno jumps after this state and the state is accepting.\n */\n\n\t/**\n \tOn the given symbol(s), this machine should go to the given state\n \t\t@method on\n \t@param {Array|Mixed} symbol\n \t@param {BaseState} state Note that the type of this state should be the\n \t\tsame as the current instance (i.e., don't pass in a different\n \t\tsubclass)\n */\n\ton: function on(symbol, state) {\n\t\tif (symbol instanceof Array) {\n\t\t\tfor (var i = 0; i < symbol.length; i++) {\n\t\t\t\tthis.j.push([symbol[i], state]);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tthis.j.push([symbol, state]);\n\t\treturn this;\n\t},\n\n\n\t/**\n \tGiven the next item, returns next state for that item\n \t@method next\n \t@param {Mixed} item Should be an instance of the symbols handled by\n \t\tthis particular machine.\n \t@return {State} state Returns false if no jumps are available\n */\n\tnext: function next(item) {\n\t\tfor (var i = 0; i < this.j.length; i++) {\n\t\t\tvar jump = this.j[i];\n\t\t\tvar symbol = jump[0]; // Next item to check for\n\t\t\tvar state = jump[1]; // State to jump to if items match\n\n\t\t\t// compare item with symbol\n\t\t\tif (this.test(item, symbol)) {\n\t\t\t\treturn state;\n\t\t\t}\n\t\t}\n\n\t\t// Nowhere left to jump!\n\t\treturn this.defaultTransition;\n\t},\n\n\n\t/**\n \tDoes this state accept?\n \t`true` only of `this.T` exists\n \t\t@method accepts\n \t@return {Boolean}\n */\n\taccepts: function accepts() {\n\t\treturn !!this.T;\n\t},\n\n\n\t/**\n \tDetermine whether a given item \"symbolizes\" the symbol, where symbol is\n \ta class of items handled by this state machine.\n \t\tThis method should be overriden in extended classes.\n \t\t@method test\n \t@param {Mixed} item Does this item match the given symbol?\n \t@param {Mixed} symbol\n \t@return {Boolean}\n */\n\ttest: function test(item, symbol) {\n\t\treturn item === symbol;\n\t},\n\n\n\t/**\n \tEmit the token for this State (just return it in this case)\n \tIf this emits a token, this instance is an accepting state\n \t@method emit\n \t@return {Class} T\n */\n\temit: function emit() {\n\t\treturn this.T;\n\t}\n};\n\n/**\n\tState machine for string-based input\n\n\t@class CharacterState\n\t@extends BaseState\n*/\nvar CharacterState = (0, _class.inherits)(BaseState, createStateClass(), {\n\t/**\n \tDoes the given character match the given character or regular\n \texpression?\n \t\t@method test\n \t@param {String} char\n \t@param {String|RegExp} charOrRegExp\n \t@return {Boolean}\n */\n\ttest: function test(character, charOrRegExp) {\n\t\treturn character === charOrRegExp || charOrRegExp instanceof RegExp && charOrRegExp.test(character);\n\t}\n});\n\n/**\n\tState machine for input in the form of TextTokens\n\n\t@class TokenState\n\t@extends BaseState\n*/\nvar TokenState = (0, _class.inherits)(BaseState, createStateClass(), {\n\n\t/**\n * Similar to `on`, but returns the state the results in the transition from\n * the given item\n * @method jump\n * @param {Mixed} item\n * @param {Token} [token]\n * @return state\n */\n\tjump: function jump(token) {\n\t\tvar tClass = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\t\tvar state = this.next(new token('')); // dummy temp token\n\t\tif (state === this.defaultTransition) {\n\t\t\t// Make a new state!\n\t\t\tstate = new this.constructor(tClass);\n\t\t\tthis.on(token, state);\n\t\t} else if (tClass) {\n\t\t\tstate.T = tClass;\n\t\t}\n\t\treturn state;\n\t},\n\n\n\t/**\n \tIs the given token an instance of the given token class?\n \t\t@method test\n \t@param {TextToken} token\n \t@param {Class} tokenClass\n \t@return {Boolean}\n */\n\ttest: function test(token, tokenClass) {\n\t\treturn token instanceof tokenClass;\n\t}\n});\n\n/**\n\tGiven a non-empty target string, generates states (if required) for each\n\tconsecutive substring of characters in str starting from the beginning of\n\tthe string. The final state will have a special value, as specified in\n\toptions. All other \"in between\" substrings will have a default end state.\n\n\tThis turns the state machine into a Trie-like data structure (rather than a\n\tintelligently-designed DFA).\n\n\tNote that I haven't really tried these with any strings other than\n\tDOMAIN.\n\n\t@param {String} str\n\t@param {CharacterState} start State to jump from the first character\n\t@param {Class} endToken Token class to emit when the given string has been\n\t\tmatched and no more jumps exist.\n\t@param {Class} defaultToken \"Filler token\", or which token type to emit when\n\t\twe don't have a full match\n\t@return {Array} list of newly-created states\n*/\nfunction stateify(str, start, endToken, defaultToken) {\n\tvar i = 0,\n\t len = str.length,\n\t state = start,\n\t newStates = [],\n\t nextState = void 0;\n\n\t// Find the next state without a jump to the next character\n\twhile (i < len && (nextState = state.next(str[i]))) {\n\t\tstate = nextState;\n\t\ti++;\n\t}\n\n\tif (i >= len) {\n\t\treturn [];\n\t} // no new tokens were added\n\n\twhile (i < len - 1) {\n\t\tnextState = new CharacterState(defaultToken);\n\t\tnewStates.push(nextState);\n\t\tstate.on(str[i], nextState);\n\t\tstate = nextState;\n\t\ti++;\n\t}\n\n\tnextState = new CharacterState(endToken);\n\tnewStates.push(nextState);\n\tstate.on(str[len - 1], nextState);\n\n\treturn newStates;\n}\n\nexports.CharacterState = CharacterState;\nexports.TokenState = TokenState;\nexports.stateify = stateify;","\"use strict\";\n\nexports.__esModule = true;\nfunction createTokenClass() {\n\treturn function (value) {\n\t\tif (value) {\n\t\t\tthis.v = value;\n\t\t}\n\t};\n}\n\nexports.createTokenClass = createTokenClass;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _get2 = require('babel-runtime/helpers/get');\n\nvar _get3 = _interopRequireDefault(_get2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _HeaderButton = require('./HeaderButton');\n\nvar _HeaderButton2 = _interopRequireDefault(_HeaderButton);\n\nvar _HeaderButtons2 = require('./HeaderButtons');\n\nvar _HeaderButtons3 = _interopRequireDefault(_HeaderButtons2);\n\nvar _RightPanel = require('../../structures/RightPanel');\n\nvar _RightPanel2 = _interopRequireDefault(_RightPanel);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar GROUP_PHASES = [_RightPanel2.default.Phase.GroupMemberInfo, _RightPanel2.default.Phase.GroupMemberList]; /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n Copyright 2017 New Vector Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar ROOM_PHASES = [_RightPanel2.default.Phase.GroupRoomList, _RightPanel2.default.Phase.GroupRoomInfo];\n\nvar GroupHeaderButtons = function (_HeaderButtons) {\n (0, _inherits3.default)(GroupHeaderButtons, _HeaderButtons);\n\n function GroupHeaderButtons(props) {\n (0, _classCallCheck3.default)(this, GroupHeaderButtons);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (GroupHeaderButtons.__proto__ || (0, _getPrototypeOf2.default)(GroupHeaderButtons)).call(this, props, _RightPanel2.default.Phase.GroupMemberList));\n\n _this._onMembersClicked = _this._onMembersClicked.bind(_this);\n _this._onRoomsClicked = _this._onRoomsClicked.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(GroupHeaderButtons, [{\n key: 'onAction',\n value: function onAction(payload) {\n (0, _get3.default)(GroupHeaderButtons.prototype.__proto__ || (0, _getPrototypeOf2.default)(GroupHeaderButtons.prototype), 'onAction', this).call(this, payload);\n\n if (payload.action === \"view_user\") {\n if (payload.member) {\n this.setPhase(_RightPanel2.default.Phase.RoomMemberInfo, { member: payload.member });\n } else {\n this.setPhase(_RightPanel2.default.Phase.GroupMemberList);\n }\n } else if (payload.action === \"view_group\") {\n this.setPhase(_RightPanel2.default.Phase.GroupMemberList);\n } else if (payload.action === \"view_group_room\") {\n this.setPhase(_RightPanel2.default.Phase.GroupRoomInfo, { groupRoomId: payload.groupRoomId, groupId: payload.groupId });\n } else if (payload.action === \"view_group_room_list\") {\n this.setPhase(_RightPanel2.default.Phase.GroupRoomList);\n } else if (payload.action === \"view_group_member_list\") {\n this.setPhase(_RightPanel2.default.Phase.GroupMemberList);\n } else if (payload.action === \"view_group_user\") {\n this.setPhase(_RightPanel2.default.Phase.GroupMemberInfo, { member: payload.member });\n }\n }\n }, {\n key: '_onMembersClicked',\n value: function _onMembersClicked() {\n this.togglePhase(_RightPanel2.default.Phase.GroupMemberList, GROUP_PHASES);\n }\n }, {\n key: '_onRoomsClicked',\n value: function _onRoomsClicked() {\n this.togglePhase(_RightPanel2.default.Phase.GroupRoomList, ROOM_PHASES);\n }\n }, {\n key: 'renderButtons',\n value: function renderButtons() {\n return [_react2.default.createElement(_HeaderButton2.default, { key: 'groupMembersButton', name: 'groupMembersButton',\n title: (0, _languageHandler._t)('Members'),\n isHighlighted: this.isPhase(GROUP_PHASES),\n onClick: this._onMembersClicked,\n analytics: ['Right Panel', 'Group Member List Button', 'click']\n }), _react2.default.createElement(_HeaderButton2.default, { key: 'roomsButton', name: 'roomsButton',\n title: (0, _languageHandler._t)('Rooms'),\n isHighlighted: this.isPhase(ROOM_PHASES),\n onClick: this._onRoomsClicked,\n analytics: ['Right Panel', 'Group Room List Button', 'click']\n })];\n }\n }]);\n return GroupHeaderButtons;\n}(_HeaderButtons3.default);\n\nexports.default = GroupHeaderButtons;\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupHeaderButtons.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\nimplements DOM/CSS operations for resizing.\nThe sizer determines what CSS mechanism is used for sizing items, like flexbox, ...\n*/\nvar Sizer = function () {\n function Sizer(container, vertical, reverse) {\n (0, _classCallCheck3.default)(this, Sizer);\n\n this.container = container;\n this.reverse = reverse;\n this.vertical = vertical;\n }\n\n /**\n @param {Element} item the dom element being resized\n @return {number} how far the edge of the item is from the edge of the container\n */\n\n\n (0, _createClass3.default)(Sizer, [{\n key: \"getItemOffset\",\n value: function getItemOffset(item) {\n var offset = (this.vertical ? item.offsetTop : item.offsetLeft) - this._getOffset();\n if (this.reverse) {\n return this.getTotalSize() - (offset + this.getItemSize(item));\n } else {\n return offset;\n }\n }\n\n /**\n @param {Element} item the dom element being resized\n @return {number} the width/height of an item in the container\n */\n\n }, {\n key: \"getItemSize\",\n value: function getItemSize(item) {\n return this.vertical ? item.offsetHeight : item.offsetWidth;\n }\n\n /** @return {number} the width/height of the container */\n\n }, {\n key: \"getTotalSize\",\n value: function getTotalSize() {\n return this.vertical ? this.container.offsetHeight : this.container.offsetWidth;\n }\n\n /** @return {number} container offset to offsetParent */\n\n }, {\n key: \"_getOffset\",\n value: function _getOffset() {\n return this.vertical ? this.container.offsetTop : this.container.offsetLeft;\n }\n }, {\n key: \"setItemSize\",\n value: function setItemSize(item, size) {\n if (this.vertical) {\n item.style.height = Math.round(size) + \"px\";\n } else {\n item.style.width = Math.round(size) + \"px\";\n }\n }\n }, {\n key: \"clearItemSize\",\n value: function clearItemSize(item) {\n if (this.vertical) {\n item.style.height = null;\n } else {\n item.style.width = null;\n }\n }\n\n /**\n @param {MouseEvent} event the mouse event\n @return {number} the distance between the cursor and the edge of the container,\n along the applicable axis (vertical or horizontal)\n */\n\n }, {\n key: \"offsetFromEvent\",\n value: function offsetFromEvent(event) {\n var pos = this.vertical ? event.pageY : event.pageX;\n if (this.reverse) {\n return this._getOffset() + this.getTotalSize() - pos;\n } else {\n return pos - this._getOffset();\n }\n }\n }]);\n return Sizer;\n}();\n\nexports.default = Sizer;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=sizer.js.map","module.exports = \"img/cancel-small.495f44c.svg\";","module.exports = \"img/icons-room-add.bd36e26.svg\";","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require(\"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _AutoHideScrollbar = require(\"./AutoHideScrollbar\");\n\nvar _AutoHideScrollbar2 = _interopRequireDefault(_AutoHideScrollbar);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar IndicatorScrollbar = function (_React$Component) {\n (0, _inherits3.default)(IndicatorScrollbar, _React$Component);\n\n function IndicatorScrollbar(props) {\n (0, _classCallCheck3.default)(this, IndicatorScrollbar);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (IndicatorScrollbar.__proto__ || (0, _getPrototypeOf2.default)(IndicatorScrollbar)).call(this, props));\n\n _this.onMouseWheel = function (e) {\n if (_this.props.verticalScrollsHorizontally && _this._scrollElement) {\n // xyThreshold is the amount of horizontal motion required for the component to\n // ignore the vertical delta in a scroll. Used to stop trackpads from acting in\n // strange ways. Should be positive.\n var xyThreshold = 0;\n\n // yRetention is the factor multiplied by the vertical delta to try and reduce\n // the harshness of the scroll behaviour. Should be a value between 0 and 1.\n var yRetention = 1.0;\n\n // whenever we see horizontal scrolling, assume the user is on a trackpad\n // for at least the next 1 minute.\n var now = new Date().getTime();\n if (Math.abs(e.deltaX) > 0) {\n _this._likelyTrackpadUser = true;\n _this._checkAgainForTrackpad = now + 1 * 60 * 1000;\n } else {\n // if we haven't seen any horizontal scrolling for a while, assume\n // the user might have plugged in a mousewheel\n if (_this._likelyTrackpadUser && now >= _this._checkAgainForTrackpad) {\n _this._likelyTrackpadUser = false;\n }\n }\n\n // don't mess with the horizontal scroll for trackpad users\n // See https://github.com/vector-im/riot-web/issues/10005\n if (_this._likelyTrackpadUser) {\n return;\n }\n\n if (Math.abs(e.deltaX) <= xyThreshold) {\n // we are vertically scrolling.\n // HACK: We increase the amount of scroll to counteract smooth scrolling browsers.\n // Smooth scrolling browsers (Firefox) use the relative area to determine the scroll\n // amount, which means the likely small area of content results in a small amount of\n // movement - not what people expect. We pick arbitrary values for when to apply more\n // scroll, and how much to apply. On Windows 10, Chrome scrolls 100 units whereas\n // Firefox scrolls just 3 due to smooth scrolling.\n\n var additionalScroll = e.deltaY < 0 ? -50 : 50;\n\n // noinspection JSSuspiciousNameCombination\n var val = Math.abs(e.deltaY) < 25 ? e.deltaY + additionalScroll : e.deltaY;\n _this._scrollElement.scrollLeft += val * yRetention;\n }\n }\n };\n\n _this._collectScroller = _this._collectScroller.bind(_this);\n _this._collectScrollerComponent = _this._collectScrollerComponent.bind(_this);\n _this.checkOverflow = _this.checkOverflow.bind(_this);\n _this._scrollElement = null;\n _this._autoHideScrollbar = null;\n _this._likelyTrackpadUser = null;\n _this._checkAgainForTrackpad = 0; // ts in milliseconds to recheck this._likelyTrackpadUser\n\n _this.state = {\n leftIndicatorOffset: 0,\n rightIndicatorOffset: 0\n };\n return _this;\n }\n\n (0, _createClass3.default)(IndicatorScrollbar, [{\n key: \"moveToOrigin\",\n value: function moveToOrigin() {\n if (!this._scrollElement) return;\n\n this._scrollElement.scrollLeft = 0;\n this._scrollElement.scrollTop = 0;\n }\n }, {\n key: \"_collectScroller\",\n value: function _collectScroller(scroller) {\n if (scroller && !this._scrollElement) {\n this._scrollElement = scroller;\n this._scrollElement.addEventListener(\"scroll\", this.checkOverflow);\n this.checkOverflow();\n }\n }\n }, {\n key: \"_collectScrollerComponent\",\n value: function _collectScrollerComponent(autoHideScrollbar) {\n this._autoHideScrollbar = autoHideScrollbar;\n }\n }, {\n key: \"checkOverflow\",\n value: function checkOverflow() {\n var hasTopOverflow = this._scrollElement.scrollTop > 0;\n var hasBottomOverflow = this._scrollElement.scrollHeight > this._scrollElement.scrollTop + this._scrollElement.clientHeight;\n var hasLeftOverflow = this._scrollElement.scrollLeft > 0;\n var hasRightOverflow = this._scrollElement.scrollWidth > this._scrollElement.scrollLeft + this._scrollElement.clientWidth;\n\n if (hasTopOverflow) {\n this._scrollElement.classList.add(\"mx_IndicatorScrollbar_topOverflow\");\n } else {\n this._scrollElement.classList.remove(\"mx_IndicatorScrollbar_topOverflow\");\n }\n if (hasBottomOverflow) {\n this._scrollElement.classList.add(\"mx_IndicatorScrollbar_bottomOverflow\");\n } else {\n this._scrollElement.classList.remove(\"mx_IndicatorScrollbar_bottomOverflow\");\n }\n if (hasLeftOverflow) {\n this._scrollElement.classList.add(\"mx_IndicatorScrollbar_leftOverflow\");\n } else {\n this._scrollElement.classList.remove(\"mx_IndicatorScrollbar_leftOverflow\");\n }\n if (hasRightOverflow) {\n this._scrollElement.classList.add(\"mx_IndicatorScrollbar_rightOverflow\");\n } else {\n this._scrollElement.classList.remove(\"mx_IndicatorScrollbar_rightOverflow\");\n }\n\n if (this._autoHideScrollbar) {\n this._autoHideScrollbar.checkOverflow();\n }\n\n if (this.props.trackHorizontalOverflow) {\n this.setState({\n // Offset from absolute position of the container\n leftIndicatorOffset: hasLeftOverflow ? this._scrollElement.scrollLeft + \"px\" : '0',\n\n // Negative because we're coming from the right\n rightIndicatorOffset: hasRightOverflow ? \"-\" + this._scrollElement.scrollLeft + \"px\" : '0'\n });\n }\n }\n }, {\n key: \"getScrollTop\",\n value: function getScrollTop() {\n return this._autoHideScrollbar.getScrollTop();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this._scrollElement) {\n this._scrollElement.removeEventListener(\"scroll\", this.checkOverflow);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var leftIndicatorStyle = { left: this.state.leftIndicatorOffset };\n var rightIndicatorStyle = { right: this.state.rightIndicatorOffset };\n var leftOverflowIndicator = this.props.trackHorizontalOverflow ? _react2.default.createElement(\"div\", { className: \"mx_IndicatorScrollbar_leftOverflowIndicator\", style: leftIndicatorStyle }) : null;\n var rightOverflowIndicator = this.props.trackHorizontalOverflow ? _react2.default.createElement(\"div\", { className: \"mx_IndicatorScrollbar_rightOverflowIndicator\", style: rightIndicatorStyle }) : null;\n\n return _react2.default.createElement(\n _AutoHideScrollbar2.default,\n (0, _extends3.default)({\n ref: this._collectScrollerComponent,\n wrappedRef: this._collectScroller,\n onWheel: this.onMouseWheel\n }, this.props),\n leftOverflowIndicator,\n this.props.children,\n rightOverflowIndicator\n );\n }\n }]);\n return IndicatorScrollbar;\n}(_react2.default.Component); /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nIndicatorScrollbar.propTypes = {\n // If true, the scrollbar will append mx_IndicatorScrollbar_leftOverflowIndicator\n // and mx_IndicatorScrollbar_rightOverflowIndicator elements to the list for positioning\n // by the parent element.\n trackHorizontalOverflow: _propTypes2.default.bool,\n\n // If true, when the user tries to use their mouse wheel in the component it will\n // scroll horizontally rather than vertically. This should only be used on components\n // with no vertical scroll opportunity.\n verticalScrollsHorizontally: _propTypes2.default.bool\n};\nexports.default = IndicatorScrollbar;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=IndicatorScrollbar.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FallbackAuthEntry = exports.MsisdnAuthEntry = exports.EmailIdentityAuthEntry = exports.TermsAuthEntry = exports.RecaptchaAuthEntry = exports.PasswordAuthEntry = undefined;\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nexports.getEntryComponentForLoginType = getEntryComponentForLoginType;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _url = require('url');\n\nvar _url2 = _interopRequireDefault(_url);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* This file contains a collection of components which are used by the\n * InteractiveAuth to prompt the user to enter the information needed\n * for an auth stage. (The intention is that they could also be used for other\n * components, such as the registration flow).\n *\n * Call getEntryComponentForLoginType() to get a component suitable for a\n * particular login type. Each component requires the same properties:\n *\n * matrixClient: A matrix client. May be a different one to the one\n * currently being used generally (eg. to register with\n * one HS whilst beign a guest on another).\n * loginType: the login type of the auth stage being attempted\n * authSessionId: session id from the server\n * clientSecret: The client secret in use for ID server auth sessions\n * stageParams: params from the server for the stage being attempted\n * errorText: error message from a previous attempt to authenticate\n * submitAuthDict: a function which will be called with the new auth dict\n * busy: a boolean indicating whether the auth logic is doing something\n * the user needs to wait for.\n * inputs: Object of inputs provided by the user, as in js-sdk\n * interactive-auth\n * stageState: Stage-specific object used for communicating state information\n * to the UI from the state-specific auth logic.\n * Defined keys for stages are:\n * m.login.email.identity:\n * * emailSid: string representing the sid of the active\n * verification session from the ID server, or\n * null if no session is active.\n * fail: a function which should be called with an error object if an\n * error occurred during the auth stage. This will cause the auth\n * session to be failed and the process to go back to the start.\n * setEmailSid: m.login.email.identity only: a function to be called with the\n * email sid after a token is requested.\n *\n * Each component may also provide the following functions (beyond the standard React ones):\n * focus: set the input focus appropriately in the form.\n */\n\n/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar PasswordAuthEntry = exports.PasswordAuthEntry = (0, _createReactClass2.default)({\n displayName: 'PasswordAuthEntry',\n\n statics: {\n LOGIN_TYPE: \"m.login.password\"\n },\n\n propTypes: {\n matrixClient: _propTypes2.default.object.isRequired,\n submitAuthDict: _propTypes2.default.func.isRequired,\n errorText: _propTypes2.default.string,\n // is the auth logic currently waiting for something to\n // happen?\n busy: _propTypes2.default.bool\n },\n\n getInitialState: function getInitialState() {\n return {\n password: \"\"\n };\n },\n\n _onSubmit: function _onSubmit(e) {\n e.preventDefault();\n if (this.props.busy) return;\n\n this.props.submitAuthDict({\n type: PasswordAuthEntry.LOGIN_TYPE,\n // TODO: Remove `user` once servers support proper UIA\n // See https://github.com/vector-im/riot-web/issues/10312\n user: this.props.matrixClient.credentials.userId,\n identifier: {\n type: \"m.id.user\",\n user: this.props.matrixClient.credentials.userId\n },\n password: this.state.password\n });\n },\n\n _onPasswordFieldChange: function _onPasswordFieldChange(ev) {\n // enable the submit button iff the password is non-empty\n this.setState({\n password: ev.target.value\n });\n },\n\n render: function render() {\n var passwordBoxClass = (0, _classnames2.default)({\n \"error\": this.props.errorText\n });\n\n var submitButtonOrSpinner = void 0;\n if (this.props.busy) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n submitButtonOrSpinner = _react2.default.createElement(Loader, null);\n } else {\n submitButtonOrSpinner = _react2.default.createElement('input', { type: 'submit',\n className: 'mx_Dialog_primary',\n disabled: !this.state.password\n });\n }\n\n var errorSection = void 0;\n if (this.props.errorText) {\n errorSection = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n this.props.errorText\n );\n }\n\n var Field = _index2.default.getComponent('elements.Field');\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"To continue, please enter your password.\")\n ),\n _react2.default.createElement(\n 'form',\n { onSubmit: this._onSubmit, className: 'mx_InteractiveAuthEntryComponents_passwordSection' },\n _react2.default.createElement(Field, {\n id: 'mx_InteractiveAuthEntryComponents_password',\n className: passwordBoxClass,\n type: 'password',\n name: 'passwordField',\n label: (0, _languageHandler._t)('Password'),\n autoFocus: true,\n value: this.state.password,\n onChange: this._onPasswordFieldChange\n }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_button_row' },\n submitButtonOrSpinner\n )\n ),\n errorSection\n );\n }\n});\n\nvar RecaptchaAuthEntry = exports.RecaptchaAuthEntry = (0, _createReactClass2.default)({\n displayName: 'RecaptchaAuthEntry',\n\n statics: {\n LOGIN_TYPE: \"m.login.recaptcha\"\n },\n\n propTypes: {\n submitAuthDict: _propTypes2.default.func.isRequired,\n stageParams: _propTypes2.default.object.isRequired,\n errorText: _propTypes2.default.string,\n busy: _propTypes2.default.bool\n },\n\n _onCaptchaResponse: function _onCaptchaResponse(response) {\n this.props.submitAuthDict({\n type: RecaptchaAuthEntry.LOGIN_TYPE,\n response: response\n });\n },\n\n render: function render() {\n if (this.props.busy) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(Loader, null);\n }\n\n var CaptchaForm = _index2.default.getComponent(\"views.auth.CaptchaForm\");\n var sitePublicKey = this.props.stageParams.public_key;\n\n var errorSection = void 0;\n if (this.props.errorText) {\n errorSection = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n this.props.errorText\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(CaptchaForm, { sitePublicKey: sitePublicKey,\n onCaptchaResponse: this._onCaptchaResponse\n }),\n errorSection\n );\n }\n});\n\nvar TermsAuthEntry = exports.TermsAuthEntry = (0, _createReactClass2.default)({\n displayName: 'TermsAuthEntry',\n\n statics: {\n LOGIN_TYPE: \"m.login.terms\"\n },\n\n propTypes: {\n submitAuthDict: _propTypes2.default.func.isRequired,\n stageParams: _propTypes2.default.object.isRequired,\n errorText: _propTypes2.default.string,\n busy: _propTypes2.default.bool,\n showContinue: _propTypes2.default.bool\n },\n\n componentWillMount: function componentWillMount() {\n // example stageParams:\n //\n // {\n // \"policies\": {\n // \"privacy_policy\": {\n // \"version\": \"1.0\",\n // \"en\": {\n // \"name\": \"Privacy Policy\",\n // \"url\": \"https://example.org/privacy-1.0-en.html\",\n // },\n // \"fr\": {\n // \"name\": \"Politique de confidentialité\",\n // \"url\": \"https://example.org/privacy-1.0-fr.html\",\n // },\n // },\n // \"other_policy\": { ... },\n // }\n // }\n\n var allPolicies = this.props.stageParams.policies || {};\n var prefLang = _SettingsStore2.default.getValue(\"language\");\n var initToggles = {};\n var pickedPolicies = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(allPolicies)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var policyId = _step.value;\n\n var policy = allPolicies[policyId];\n\n // Pick a language based on the user's language, falling back to english,\n // and finally to the first language available. If there's still no policy\n // available then the homeserver isn't respecting the spec.\n var langPolicy = policy[prefLang];\n if (!langPolicy) langPolicy = policy[\"en\"];\n if (!langPolicy) {\n // last resort\n var firstLang = (0, _keys2.default)(policy).find(function (e) {\n return e !== \"version\";\n });\n langPolicy = policy[firstLang];\n }\n if (!langPolicy) throw new Error(\"Failed to find a policy to show the user\");\n\n initToggles[policyId] = false;\n\n langPolicy.id = policyId;\n pickedPolicies.push(langPolicy);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n this.setState({\n \"toggledPolicies\": initToggles,\n \"policies\": pickedPolicies\n });\n },\n\n tryContinue: function tryContinue() {\n this._trySubmit();\n },\n\n _togglePolicy: function _togglePolicy(policyId) {\n var newToggles = {};\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(this.state.policies), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var policy = _step2.value;\n\n var checked = this.state.toggledPolicies[policy.id];\n if (policy.id === policyId) checked = !checked;\n\n newToggles[policy.id] = checked;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n this.setState({ \"toggledPolicies\": newToggles });\n },\n\n _trySubmit: function _trySubmit() {\n var allChecked = true;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(this.state.policies), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var policy = _step3.value;\n\n var checked = this.state.toggledPolicies[policy.id];\n allChecked = allChecked && checked;\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n if (allChecked) this.props.submitAuthDict({ type: TermsAuthEntry.LOGIN_TYPE });else this.setState({ errorText: (0, _languageHandler._t)(\"Please review and accept all of the homeserver's policies\") });\n },\n\n render: function render() {\n var _this = this;\n\n if (this.props.busy) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(Loader, null);\n }\n\n var checkboxes = [];\n var allChecked = true;\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n var _loop = function _loop() {\n var policy = _step4.value;\n\n var checked = _this.state.toggledPolicies[policy.id];\n allChecked = allChecked && checked;\n\n checkboxes.push(_react2.default.createElement(\n 'label',\n { key: \"policy_checkbox_\" + policy.id, className: 'mx_InteractiveAuthEntryComponents_termsPolicy' },\n _react2.default.createElement('input', { type: 'checkbox', onClick: function onClick() {\n return _this._togglePolicy(policy.id);\n }, checked: checked }),\n _react2.default.createElement(\n 'a',\n { href: policy.url, target: '_blank', rel: 'noopener' },\n policy.name\n )\n ));\n };\n\n for (var _iterator4 = (0, _getIterator3.default)(this.state.policies), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n _loop();\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n var errorSection = void 0;\n if (this.props.errorText || this.state.errorText) {\n errorSection = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n this.props.errorText || this.state.errorText\n );\n }\n\n var submitButton = void 0;\n if (this.props.showContinue !== false) {\n // XXX: button classes\n submitButton = _react2.default.createElement(\n 'button',\n { className: 'mx_InteractiveAuthEntryComponents_termsSubmit mx_GeneralButton',\n onClick: this._trySubmit, disabled: !allChecked },\n (0, _languageHandler._t)(\"Accept\")\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Please review and accept the policies of this homeserver:\")\n ),\n checkboxes,\n errorSection,\n submitButton\n );\n }\n});\n\nvar EmailIdentityAuthEntry = exports.EmailIdentityAuthEntry = (0, _createReactClass2.default)({\n displayName: 'EmailIdentityAuthEntry',\n\n statics: {\n LOGIN_TYPE: \"m.login.email.identity\"\n },\n\n propTypes: {\n matrixClient: _propTypes2.default.object.isRequired,\n submitAuthDict: _propTypes2.default.func.isRequired,\n authSessionId: _propTypes2.default.string.isRequired,\n clientSecret: _propTypes2.default.string.isRequired,\n inputs: _propTypes2.default.object.isRequired,\n stageState: _propTypes2.default.object.isRequired,\n fail: _propTypes2.default.func.isRequired,\n setEmailSid: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n requestingToken: false\n };\n },\n\n render: function render() {\n var _this2 = this;\n\n if (this.state.requestingToken) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(Loader, null);\n } else {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"An email has been sent to %(emailAddress)s\", { emailAddress: function emailAddress(sub) {\n return _react2.default.createElement(\n 'i',\n null,\n _this2.props.inputs.emailAddress\n );\n } })\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Please check your email to continue registration.\")\n )\n );\n }\n }\n});\n\nvar MsisdnAuthEntry = exports.MsisdnAuthEntry = (0, _createReactClass2.default)({\n displayName: 'MsisdnAuthEntry',\n\n statics: {\n LOGIN_TYPE: \"m.login.msisdn\"\n },\n\n propTypes: {\n inputs: _propTypes2.default.shape({\n phoneCountry: _propTypes2.default.string,\n phoneNumber: _propTypes2.default.string\n }),\n fail: _propTypes2.default.func,\n clientSecret: _propTypes2.default.func,\n submitAuthDict: _propTypes2.default.func.isRequired,\n matrixClient: _propTypes2.default.object\n },\n\n getInitialState: function getInitialState() {\n return {\n token: '',\n requestingToken: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this3 = this;\n\n this._submitUrl = null;\n this._sid = null;\n this._msisdn = null;\n this._tokenBox = null;\n\n this.setState({ requestingToken: true });\n this._requestMsisdnToken().catch(function (e) {\n _this3.props.fail(e);\n }).finally(function () {\n _this3.setState({ requestingToken: false });\n }).done();\n },\n\n /*\n * Requests a verification token by SMS.\n */\n _requestMsisdnToken: function _requestMsisdnToken() {\n var _this4 = this;\n\n return this.props.matrixClient.requestRegisterMsisdnToken(this.props.inputs.phoneCountry, this.props.inputs.phoneNumber, this.props.clientSecret, 1 // TODO: Multiple send attempts?\n ).then(function (result) {\n _this4._submitUrl = result.submit_url;\n _this4._sid = result.sid;\n _this4._msisdn = result.msisdn;\n });\n },\n\n _onTokenChange: function _onTokenChange(e) {\n this.setState({\n token: e.target.value\n });\n },\n\n _onFormSubmit: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(e) {\n var result, creds, idServerParsedUrl;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n e.preventDefault();\n\n if (!(this.state.token == '')) {\n _context.next = 3;\n break;\n }\n\n return _context.abrupt('return');\n\n case 3:\n\n this.setState({\n errorText: null\n });\n\n _context.prev = 4;\n result = void 0;\n\n if (!this._submitUrl) {\n _context.next = 12;\n break;\n }\n\n _context.next = 9;\n return (0, _bluebird.resolve)(this.props.matrixClient.submitMsisdnTokenOtherUrl(this._submitUrl, this._sid, this.props.clientSecret, this.state.token));\n\n case 9:\n result = _context.sent;\n _context.next = 15;\n break;\n\n case 12:\n _context.next = 14;\n return (0, _bluebird.resolve)(this.props.matrixClient.submitMsisdnToken(this._sid, this.props.clientSecret, this.state.token));\n\n case 14:\n result = _context.sent;\n\n case 15:\n if (!result.success) {\n _context.next = 25;\n break;\n }\n\n creds = {\n sid: this._sid,\n client_secret: this.props.clientSecret\n };\n _context.next = 19;\n return (0, _bluebird.resolve)(this.props.matrixClient.doesServerRequireIdServerParam());\n\n case 19:\n if (!_context.sent) {\n _context.next = 22;\n break;\n }\n\n idServerParsedUrl = _url2.default.parse(this.props.matrixClient.getIdentityServerUrl());\n\n creds.id_server = idServerParsedUrl.host;\n\n case 22:\n this.props.submitAuthDict({\n type: MsisdnAuthEntry.LOGIN_TYPE,\n // TODO: Remove `threepid_creds` once servers support proper UIA\n // See https://github.com/vector-im/riot-web/issues/10312\n threepid_creds: creds,\n threepidCreds: creds\n });\n _context.next = 26;\n break;\n\n case 25:\n this.setState({\n errorText: (0, _languageHandler._t)(\"Token incorrect\")\n });\n\n case 26:\n _context.next = 32;\n break;\n\n case 28:\n _context.prev = 28;\n _context.t0 = _context['catch'](4);\n\n this.props.fail(_context.t0);\n console.log(\"Failed to submit msisdn token\");\n\n case 32:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[4, 28]]);\n }));\n\n function _onFormSubmit(_x) {\n return _ref.apply(this, arguments);\n }\n\n return _onFormSubmit;\n }(),\n\n render: function render() {\n if (this.state.requestingToken) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(Loader, null);\n } else {\n var enableSubmit = Boolean(this.state.token);\n var submitClasses = (0, _classnames2.default)({\n mx_InteractiveAuthEntryComponents_msisdnSubmit: true,\n mx_GeneralButton: true\n });\n var errorSection = void 0;\n if (this.state.errorText) {\n errorSection = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n this.state.errorText\n );\n }\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"A text message has been sent to %(msisdn)s\", { msisdn: _react2.default.createElement(\n 'i',\n null,\n this._msisdn\n ) })\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Please enter the code it contains:\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_InteractiveAuthEntryComponents_msisdnWrapper' },\n _react2.default.createElement(\n 'form',\n { onSubmit: this._onFormSubmit },\n _react2.default.createElement('input', { type: 'text',\n className: 'mx_InteractiveAuthEntryComponents_msisdnEntry',\n value: this.state.token,\n onChange: this._onTokenChange,\n 'aria-label': (0, _languageHandler._t)(\"Code\")\n }),\n _react2.default.createElement('br', null),\n _react2.default.createElement('input', { type: 'submit', value: (0, _languageHandler._t)(\"Submit\"),\n className: submitClasses,\n disabled: !enableSubmit\n })\n ),\n errorSection\n )\n );\n }\n }\n});\n\nvar FallbackAuthEntry = exports.FallbackAuthEntry = (0, _createReactClass2.default)({\n displayName: 'FallbackAuthEntry',\n\n propTypes: {\n matrixClient: _propTypes2.default.object.isRequired,\n authSessionId: _propTypes2.default.string.isRequired,\n loginType: _propTypes2.default.string.isRequired,\n submitAuthDict: _propTypes2.default.func.isRequired,\n errorText: _propTypes2.default.string\n },\n\n componentWillMount: function componentWillMount() {\n // we have to make the user click a button, as browsers will block\n // the popup if we open it immediately.\n this._popupWindow = null;\n window.addEventListener(\"message\", this._onReceiveMessage);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n window.removeEventListener(\"message\", this._onReceiveMessage);\n if (this._popupWindow) {\n this._popupWindow.close();\n }\n },\n\n focus: function focus() {\n if (this.refs.fallbackButton) {\n this.refs.fallbackButton.focus();\n }\n },\n\n _onShowFallbackClick: function _onShowFallbackClick() {\n var url = this.props.matrixClient.getFallbackAuthUrl(this.props.loginType, this.props.authSessionId);\n this._popupWindow = window.open(url);\n },\n\n _onReceiveMessage: function _onReceiveMessage(event) {\n if (event.data === \"authDone\" && event.origin === this.props.matrixClient.getHomeserverUrl()) {\n this.props.submitAuthDict({});\n }\n },\n\n render: function render() {\n var errorSection = void 0;\n if (this.props.errorText) {\n errorSection = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n this.props.errorText\n );\n }\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'a',\n { ref: 'fallbackButton', onClick: this._onShowFallbackClick },\n (0, _languageHandler._t)(\"Start authentication\")\n ),\n errorSection\n );\n }\n});\n\nvar AuthEntryComponents = [PasswordAuthEntry, RecaptchaAuthEntry, EmailIdentityAuthEntry, MsisdnAuthEntry, TermsAuthEntry];\n\nfunction getEntryComponentForLoginType(loginType) {\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = (0, _getIterator3.default)(AuthEntryComponents), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var c = _step5.value;\n\n if (c.LOGIN_TYPE == loginType) {\n return c;\n }\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n\n return FallbackAuthEntry;\n}\n//# sourceMappingURL=InteractiveAuthEntryComponents.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Modal = require('../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar TagPanelButtons = (0, _createReactClass2.default)({\n displayName: 'TagPanelButtons',\n\n componentWillMount: function componentWillMount() {\n this._dispatcherRef = _dispatcher2.default.register(this._onAction);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n if (this._dispatcherRef) {\n _dispatcher2.default.unregister(this._dispatcherRef);\n this._dispatcherRef = null;\n }\n },\n _onAction: function _onAction(payload) {\n if (payload.action === \"show_redesign_feedback_dialog\") {\n var RedesignFeedbackDialog = _index2.default.getComponent(\"views.dialogs.RedesignFeedbackDialog\");\n _Modal2.default.createTrackedDialog('Report bugs & give feedback', '', RedesignFeedbackDialog);\n }\n },\n render: function render() {\n var GroupsButton = _index2.default.getComponent('elements.GroupsButton');\n var ActionButton = _index2.default.getComponent(\"elements.ActionButton\");\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_TagPanelButtons' },\n _react2.default.createElement(GroupsButton, null),\n _react2.default.createElement(ActionButton, {\n className: 'mx_TagPanelButtons_report', action: 'show_redesign_feedback_dialog',\n label: (0, _languageHandler._t)(\"Report bugs & give feedback\"), tooltip: true })\n );\n }\n});\nexports.default = TagPanelButtons;\nmodule.exports = exports['default'];\n//# sourceMappingURL=TagPanelButtons.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (0, _memoizeOne2.default)(function (displaced) {\n return displaced.reduce(function (map, displacement) {\n map[displacement.draggableId] = displacement;\n return map;\n }, {});\n});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _isWithin = require('../is-within');\n\nvar _isWithin2 = _interopRequireDefault(_isWithin);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (frame) {\n var isWithinVertical = (0, _isWithin2.default)(frame.top, frame.bottom);\n var isWithinHorizontal = (0, _isWithin2.default)(frame.left, frame.right);\n\n return function (subject) {\n var isContained = isWithinVertical(subject.top) && isWithinVertical(subject.bottom) && isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n\n if (isContained) {\n return true;\n }\n\n var isPartiallyVisibleVertically = isWithinVertical(subject.top) || isWithinVertical(subject.bottom);\n var isPartiallyVisibleHorizontally = isWithinHorizontal(subject.left) || isWithinHorizontal(subject.right);\n\n var isPartiallyContained = isPartiallyVisibleVertically && isPartiallyVisibleHorizontally;\n\n if (isPartiallyContained) {\n return true;\n }\n\n var isBiggerVertically = subject.top < frame.top && subject.bottom > frame.bottom;\n var isBiggerHorizontally = subject.left < frame.left && subject.right > frame.right;\n\n var isTargetBiggerThanFrame = isBiggerVertically && isBiggerHorizontally;\n\n if (isTargetBiggerThanFrame) {\n return true;\n }\n\n var isTargetBiggerOnOneAxis = isBiggerVertically && isPartiallyVisibleHorizontally || isBiggerHorizontally && isPartiallyVisibleVertically;\n\n return isTargetBiggerOnOneAxis;\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _position = require('../position');\n\nvar _spacing = require('../spacing');\n\nvar _isPartiallyVisible = require('../visibility/is-partially-visible');\n\nvar _isPartiallyVisible2 = _interopRequireDefault(_isPartiallyVisible);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var draggable = _ref.draggable,\n destination = _ref.destination,\n newCenter = _ref.newCenter,\n viewport = _ref.viewport;\n\n var diff = (0, _position.subtract)(newCenter, draggable.page.withMargin.center);\n var shifted = (0, _spacing.offset)(draggable.page.withMargin, diff);\n\n return (0, _isPartiallyVisible2.default)({\n target: shifted,\n destination: destination,\n viewport: viewport\n });\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.css = exports.physics = undefined;\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar physics = exports.physics = function () {\n var base = {\n stiffness: 1000,\n damping: 60,\n\n precision: 0.99\n };\n\n var standard = (0, _extends3.default)({}, base);\n\n var fast = (0, _extends3.default)({}, base, {\n stiffness: base.stiffness * 2\n });\n\n return { standard: standard, fast: fast };\n}();\n\nvar css = exports.css = {\n outOfTheWay: 'transform 0.2s cubic-bezier(0.2, 0, 0, 1)'\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.lift = exports.dropAnimationFinished = exports.cancel = exports.drop = exports.completeDrop = exports.prepare = exports.clean = exports.crossAxisMoveBackward = exports.crossAxisMoveForward = exports.moveForward = exports.moveBackward = exports.moveByWindowScroll = exports.move = exports.updateDroppableDimensionIsEnabled = exports.updateDroppableDimensionScroll = exports.publishDroppableDimensions = exports.publishDraggableDimensions = exports.completeLift = exports.requestDimensions = undefined;\n\nvar _noImpact = require('./no-impact');\n\nvar _noImpact2 = _interopRequireDefault(_noImpact);\n\nvar _getNewHomeClientCenter = require('./get-new-home-client-center');\n\nvar _getNewHomeClientCenter2 = _interopRequireDefault(_getNewHomeClientCenter);\n\nvar _position = require('./position');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar origin = { x: 0, y: 0 };\n\nvar getScrollDiff = function getScrollDiff(_ref) {\n var initial = _ref.initial,\n current = _ref.current,\n droppable = _ref.droppable;\n\n var windowScrollDiff = (0, _position.subtract)(initial.windowScroll, current.windowScroll);\n\n var droppableScrollDiff = droppable ? droppable.viewport.frameScroll.diff.displacement : origin;\n\n return (0, _position.add)(windowScrollDiff, droppableScrollDiff);\n};\n\nvar requestDimensions = exports.requestDimensions = function requestDimensions(id) {\n return {\n type: 'REQUEST_DIMENSIONS',\n payload: id\n };\n};\n\nvar completeLift = exports.completeLift = function completeLift(id, client, windowScroll, isScrollAllowed) {\n return {\n type: 'COMPLETE_LIFT',\n payload: {\n id: id,\n client: client,\n windowScroll: windowScroll,\n isScrollAllowed: isScrollAllowed\n }\n };\n};\n\nvar publishDraggableDimensions = exports.publishDraggableDimensions = function publishDraggableDimensions(dimensions) {\n return {\n type: 'PUBLISH_DRAGGABLE_DIMENSIONS',\n payload: dimensions\n };\n};\n\nvar publishDroppableDimensions = exports.publishDroppableDimensions = function publishDroppableDimensions(dimensions) {\n return {\n type: 'PUBLISH_DROPPABLE_DIMENSIONS',\n payload: dimensions\n };\n};\n\nvar updateDroppableDimensionScroll = exports.updateDroppableDimensionScroll = function updateDroppableDimensionScroll(id, offset) {\n return {\n type: 'UPDATE_DROPPABLE_DIMENSION_SCROLL',\n payload: {\n id: id,\n offset: offset\n }\n };\n};\n\nvar updateDroppableDimensionIsEnabled = exports.updateDroppableDimensionIsEnabled = function updateDroppableDimensionIsEnabled(id, isEnabled) {\n return {\n type: 'UPDATE_DROPPABLE_DIMENSION_IS_ENABLED',\n payload: {\n id: id,\n isEnabled: isEnabled\n }\n };\n};\n\nvar move = exports.move = function move(id, client, windowScroll) {\n return {\n type: 'MOVE',\n payload: {\n id: id,\n client: client,\n windowScroll: windowScroll\n }\n };\n};\n\nvar moveByWindowScroll = exports.moveByWindowScroll = function moveByWindowScroll(id, windowScroll) {\n return {\n type: 'MOVE_BY_WINDOW_SCROLL',\n payload: {\n id: id,\n windowScroll: windowScroll\n }\n };\n};\n\nvar moveBackward = exports.moveBackward = function moveBackward(id) {\n return {\n type: 'MOVE_BACKWARD',\n payload: id\n };\n};\n\nvar moveForward = exports.moveForward = function moveForward(id) {\n return {\n type: 'MOVE_FORWARD',\n payload: id\n };\n};\n\nvar crossAxisMoveForward = exports.crossAxisMoveForward = function crossAxisMoveForward(id) {\n return {\n type: 'CROSS_AXIS_MOVE_FORWARD',\n payload: id\n };\n};\n\nvar crossAxisMoveBackward = exports.crossAxisMoveBackward = function crossAxisMoveBackward(id) {\n return {\n type: 'CROSS_AXIS_MOVE_BACKWARD',\n payload: id\n };\n};\n\nvar clean = exports.clean = function clean() {\n return {\n type: 'CLEAN',\n payload: null\n };\n};\n\nvar prepare = exports.prepare = function prepare() {\n return {\n type: 'PREPARE',\n payload: null\n };\n};\n\nvar animateDrop = function animateDrop(_ref2) {\n var trigger = _ref2.trigger,\n newHomeOffset = _ref2.newHomeOffset,\n impact = _ref2.impact,\n result = _ref2.result;\n return {\n type: 'DROP_ANIMATE',\n payload: {\n trigger: trigger,\n newHomeOffset: newHomeOffset,\n impact: impact,\n result: result\n }\n };\n};\n\nvar completeDrop = exports.completeDrop = function completeDrop(result) {\n return {\n type: 'DROP_COMPLETE',\n payload: result\n };\n};\n\nvar drop = exports.drop = function drop() {\n return function (dispatch, getState) {\n var state = getState();\n\n if (state.phase === 'PREPARING' || state.phase === 'COLLECTING_INITIAL_DIMENSIONS') {\n dispatch(clean());\n return;\n }\n\n if (state.phase !== 'DRAGGING') {\n console.error('not able to drop in phase: \\'' + state.phase + '\\'');\n dispatch(clean());\n return;\n }\n\n if (!state.drag) {\n console.error('not able to drop when there is invalid drag state', state);\n dispatch(clean());\n return;\n }\n\n var _state$drag = state.drag,\n impact = _state$drag.impact,\n initial = _state$drag.initial,\n current = _state$drag.current;\n\n var descriptor = initial.descriptor;\n var draggable = state.dimension.draggable[initial.descriptor.id];\n var home = state.dimension.droppable[draggable.descriptor.droppableId];\n var destination = impact.destination ? state.dimension.droppable[impact.destination.droppableId] : null;\n\n var source = {\n droppableId: descriptor.droppableId,\n index: descriptor.index\n };\n\n var result = {\n draggableId: descriptor.id,\n type: home.descriptor.type,\n source: source,\n destination: impact.destination\n };\n\n var newCenter = (0, _getNewHomeClientCenter2.default)({\n movement: impact.movement,\n draggable: draggable,\n draggables: state.dimension.draggable,\n destination: destination\n });\n\n var clientOffset = (0, _position.subtract)(newCenter, draggable.client.withMargin.center);\n var scrollDiff = getScrollDiff({\n initial: initial,\n current: current,\n droppable: destination || home\n });\n var newHomeOffset = (0, _position.add)(clientOffset, scrollDiff);\n\n var isAnimationRequired = !(0, _position.isEqual)(current.client.offset, newHomeOffset);\n\n if (!isAnimationRequired) {\n dispatch(completeDrop(result));\n return;\n }\n\n dispatch(animateDrop({\n trigger: 'DROP',\n newHomeOffset: newHomeOffset,\n impact: impact,\n result: result\n }));\n };\n};\n\nvar cancel = exports.cancel = function cancel() {\n return function (dispatch, getState) {\n var state = getState();\n\n if (state.phase !== 'DRAGGING') {\n dispatch(clean());\n return;\n }\n\n if (!state.drag) {\n console.error('invalid drag state', state);\n dispatch(clean());\n return;\n }\n\n var _state$drag2 = state.drag,\n initial = _state$drag2.initial,\n current = _state$drag2.current;\n\n var descriptor = initial.descriptor;\n var home = state.dimension.droppable[descriptor.droppableId];\n\n var source = {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n };\n\n var result = {\n draggableId: descriptor.id,\n type: home.descriptor.type,\n source: source,\n\n destination: null\n };\n\n var isAnimationRequired = !(0, _position.isEqual)(current.client.offset, origin);\n\n if (!isAnimationRequired) {\n dispatch(completeDrop(result));\n return;\n }\n\n var scrollDiff = getScrollDiff({ initial: initial, current: current, droppable: home });\n\n dispatch(animateDrop({\n trigger: 'CANCEL',\n newHomeOffset: scrollDiff,\n impact: _noImpact2.default,\n result: result\n }));\n };\n};\n\nvar dropAnimationFinished = exports.dropAnimationFinished = function dropAnimationFinished() {\n return function (dispatch, getState) {\n var state = getState();\n\n if (state.phase !== 'DROP_ANIMATING') {\n console.error('cannot end drop that is no longer animating', state);\n dispatch(clean());\n return;\n }\n\n if (!state.drop || !state.drop.pending) {\n console.error('cannot end drop that has no pending state', state);\n dispatch(clean());\n return;\n }\n\n dispatch(completeDrop(state.drop.pending.result));\n };\n};\n\nvar lift = exports.lift = function lift(id, client, windowScroll, isScrollAllowed) {\n return function (dispatch, getState) {\n var initial = getState();\n\n if (initial.phase === 'DROP_ANIMATING') {\n if (!initial.drop || !initial.drop.pending) {\n console.error('cannot flush drop animation if there is no pending');\n dispatch(clean());\n } else {\n dispatch(completeDrop(initial.drop.pending.result));\n }\n }\n\n dispatch(prepare());\n\n setTimeout(function () {\n var state = getState();\n\n if (state.phase !== 'PREPARING') {\n return;\n }\n\n dispatch(requestDimensions(id));\n\n setTimeout(function () {\n var newState = getState();\n\n if (newState.phase !== 'COLLECTING_INITIAL_DIMENSIONS') {\n return;\n }\n\n dispatch(completeLift(id, client, windowScroll, isScrollAllowed));\n });\n });\n };\n};","\n\nexport default (function (fn) {\n var lastArgs = [];\n var frameId = null;\n\n var wrapperFn = function wrapperFn() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n lastArgs = args;\n\n if (frameId) {\n return frameId;\n }\n\n frameId = requestAnimationFrame(function () {\n frameId = null;\n fn.apply(undefined, lastArgs);\n });\n\n return frameId;\n };\n\n wrapperFn.cancel = function () {\n if (!frameId) {\n return;\n }\n\n cancelAnimationFrame(frameId);\n frameId = null;\n };\n\n var resultFn = wrapperFn;\n\n return resultFn;\n});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _placeholder = require('./placeholder');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_placeholder).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = {\n noWobble: { stiffness: 170, damping: 26 }, // the default, if nothing provided\n gentle: { stiffness: 120, damping: 14 },\n wobbly: { stiffness: 180, damping: 12 },\n stiff: { stiffness: 210, damping: 20 }\n};\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keyCodes = require('../../key-codes');\n\nvar keyCodes = _interopRequireWildcard(_keyCodes);\n\nvar _stopEvent = require('./stop-event');\n\nvar _stopEvent2 = _interopRequireDefault(_stopEvent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar blocked = [keyCodes.enter, keyCodes.tab];\n\nexports.default = function (event) {\n if (blocked.indexOf(event.keyCode) >= 0) {\n (0, _stopEvent2.default)(event);\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getArea = require('../state/get-area');\n\nvar _getArea2 = _interopRequireDefault(_getArea);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (el) {\n return (0, _getArea2.default)(el.getBoundingClientRect()).center;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/** The types of page which can be shown by the LoggedInView */\nexports.default = {\n HomePage: \"home_page\",\n RoomView: \"room_view\",\n RoomDirectory: \"room_directory\",\n UserView: \"user_view\",\n GroupView: \"group_view\",\n MyGroups: \"my_groups\"\n};\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=PageTypes.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar Matrix = _interopRequireWildcard(_matrixJsSdk);\n\nvar _SettingsStore = require('./settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n Copyright 2017 Michael Telatynski <7t3chguy@gmail.com>\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nexports.default = {\n hasAnyLabeledDevices: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var devices;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(navigator.mediaDevices.enumerateDevices());\n\n case 2:\n devices = _context.sent;\n return _context.abrupt('return', devices.some(function (d) {\n return !!d.label;\n }));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function hasAnyLabeledDevices() {\n return _ref.apply(this, arguments);\n }\n\n return hasAnyLabeledDevices;\n }(),\n\n getDevices: function getDevices() {\n // Only needed for Electron atm, though should work in modern browsers\n // once permission has been granted to the webapp\n return navigator.mediaDevices.enumerateDevices().then(function (devices) {\n var audiooutput = [];\n var audioinput = [];\n var videoinput = [];\n\n devices.forEach(function (device) {\n switch (device.kind) {\n case 'audiooutput':\n audiooutput.push(device);break;\n case 'audioinput':\n audioinput.push(device);break;\n case 'videoinput':\n videoinput.push(device);break;\n }\n });\n\n // console.log(\"Loaded WebRTC Devices\", mediaDevices);\n return {\n audiooutput: audiooutput,\n audioinput: audioinput,\n videoinput: videoinput\n };\n }, function (error) {\n console.log('Unable to refresh WebRTC Devices: ', error);\n });\n },\n\n loadDevices: function loadDevices() {\n var audioOutDeviceId = _SettingsStore2.default.getValue(\"webrtc_audiooutput\");\n var audioDeviceId = _SettingsStore2.default.getValue(\"webrtc_audioinput\");\n var videoDeviceId = _SettingsStore2.default.getValue(\"webrtc_videoinput\");\n\n Matrix.setMatrixCallAudioOutput(audioOutDeviceId);\n Matrix.setMatrixCallAudioInput(audioDeviceId);\n Matrix.setMatrixCallVideoInput(videoDeviceId);\n },\n\n setAudioOutput: function setAudioOutput(deviceId) {\n _SettingsStore2.default.setValue(\"webrtc_audiooutput\", null, _SettingsStore.SettingLevel.DEVICE, deviceId);\n Matrix.setMatrixCallAudioOutput(deviceId);\n },\n\n setAudioInput: function setAudioInput(deviceId) {\n _SettingsStore2.default.setValue(\"webrtc_audioinput\", null, _SettingsStore.SettingLevel.DEVICE, deviceId);\n Matrix.setMatrixCallAudioInput(deviceId);\n },\n\n setVideoInput: function setVideoInput(deviceId) {\n _SettingsStore2.default.setValue(\"webrtc_videoinput\", null, _SettingsStore.SettingLevel.DEVICE, deviceId);\n Matrix.setMatrixCallVideoInput(deviceId);\n },\n\n getAudioOutput: function getAudioOutput() {\n return _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.DEVICE, \"webrtc_audiooutput\");\n },\n\n getAudioInput: function getAudioInput() {\n return _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.DEVICE, \"webrtc_audioinput\");\n },\n\n getVideoInput: function getVideoInput() {\n return _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.DEVICE, \"webrtc_videoinput\");\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=CallMediaHandler.js.map","'use strict';\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _dispatcher = require('../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _utils = require('flux/utils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar INITIAL_STATE = {\n cachedPassword: localStorage.getItem('mx_pass')\n};\n\n/**\n * A class for storing application state to do with the session. This is a simple flux\n * store that listens for actions and updates its state accordingly, informing any\n * listeners (views) of state changes.\n *\n * Usage:\n * ```\n * sessionStore.addListener(() => {\n * this.setState({ cachedPassword: sessionStore.getCachedPassword() })\n * })\n * ```\n */\n\nvar SessionStore = function (_Store) {\n (0, _inherits3.default)(SessionStore, _Store);\n\n function SessionStore() {\n (0, _classCallCheck3.default)(this, SessionStore);\n\n // Initialise state\n var _this = (0, _possibleConstructorReturn3.default)(this, (SessionStore.__proto__ || (0, _getPrototypeOf2.default)(SessionStore)).call(this, _dispatcher2.default));\n\n _this._state = INITIAL_STATE;\n return _this;\n }\n\n (0, _createClass3.default)(SessionStore, [{\n key: '_update',\n value: function _update() {\n // Persist state to localStorage\n if (this._state.cachedPassword) {\n localStorage.setItem('mx_pass', this._state.cachedPassword);\n } else {\n localStorage.removeItem('mx_pass', this._state.cachedPassword);\n }\n\n this.__emitChange();\n }\n }, {\n key: '_setState',\n value: function _setState(newState) {\n this._state = (0, _assign2.default)(this._state, newState);\n this._update();\n }\n }, {\n key: '__onDispatch',\n value: function __onDispatch(payload) {\n switch (payload.action) {\n case 'cached_password':\n this._setState({\n cachedPassword: payload.cachedPassword\n });\n break;\n case 'password_changed':\n this._setState({\n cachedPassword: null\n });\n break;\n case 'on_client_not_viable':\n case 'on_logged_out':\n this._setState({\n cachedPassword: null\n });\n break;\n }\n }\n }, {\n key: 'getCachedPassword',\n value: function getCachedPassword() {\n return this._state.cachedPassword;\n }\n }]);\n return SessionStore;\n}(_utils.Store);\n\nvar singletonSessionStore = null;\nif (!singletonSessionStore) {\n singletonSessionStore = new SessionStore();\n}\nmodule.exports = singletonSessionStore;\n//# sourceMappingURL=SessionStore.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getHomePageUrl = getHomePageUrl;\n/*\nCopyright 2019 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction getHomePageUrl(appConfig) {\n var pagesConfig = appConfig.embeddedPages;\n var pageUrl = null;\n if (pagesConfig) {\n pageUrl = pagesConfig.homeUrl;\n }\n if (!pageUrl) {\n // This is a deprecated config option for the home page\n // (despite the name, given we also now have a welcome\n // page, which is not the same).\n pageUrl = appConfig.welcomePageUrl;\n }\n\n return pageUrl;\n}\n//# sourceMappingURL=pages.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _Analytics = require('../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _actionCreators = require('./actionCreators');\n\nvar _TagOrderStore = require('../stores/TagOrderStore');\n\nvar _TagOrderStore2 = _interopRequireDefault(_TagOrderStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TagOrderActions = {};\n\n/**\n * Creates an action thunk that will do an asynchronous request to\n * move a tag in TagOrderStore to destinationIx.\n *\n * @param {MatrixClient} matrixClient the matrix client to set the\n * account data on.\n * @param {string} tag the tag to move.\n * @param {number} destinationIx the new position of the tag.\n * @returns {function} an action thunk that will dispatch actions\n * indicating the status of the request.\n * @see asyncAction\n */\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nTagOrderActions.moveTag = function (matrixClient, tag, destinationIx) {\n // Only commit tags if the state is ready, i.e. not null\n var tags = _TagOrderStore2.default.getOrderedTags();\n var removedTags = _TagOrderStore2.default.getRemovedTagsAccountData() || [];\n if (!tags) {\n return;\n }\n\n tags = tags.filter(function (t) {\n return t !== tag;\n });\n tags = [].concat((0, _toConsumableArray3.default)(tags.slice(0, destinationIx)), [tag], (0, _toConsumableArray3.default)(tags.slice(destinationIx)));\n\n removedTags = removedTags.filter(function (t) {\n return t !== tag;\n });\n\n var storeId = _TagOrderStore2.default.getStoreId();\n\n return (0, _actionCreators.asyncAction)('TagOrderActions.moveTag', function () {\n _Analytics2.default.trackEvent('TagOrderActions', 'commitTagOrdering');\n return matrixClient.setAccountData('im.vector.web.tag_ordering', { tags: tags, removedTags: removedTags, _storeId: storeId });\n }, function () {\n // For an optimistic update\n return { tags: tags, removedTags: removedTags };\n });\n};\n\n/**\n * Creates an action thunk that will do an asynchronous request to\n * label a tag as removed in im.vector.web.tag_ordering account data.\n *\n * The reason this is implemented with new state `removedTags` is that\n * we incrementally and initially populate `tags` with groups that\n * have been joined. If we remove a group from `tags`, it will just\n * get added (as it looks like a group we've recently joined).\n *\n * NB: If we ever support adding of tags (which is planned), we should\n * take special care to remove the tag from `removedTags` when we add\n * it.\n *\n * @param {MatrixClient} matrixClient the matrix client to set the\n * account data on.\n * @param {string} tag the tag to remove.\n * @returns {function} an action thunk that will dispatch actions\n * indicating the status of the request.\n * @see asyncAction\n */\nTagOrderActions.removeTag = function (matrixClient, tag) {\n // Don't change tags, just removedTags\n var tags = _TagOrderStore2.default.getOrderedTags();\n var removedTags = _TagOrderStore2.default.getRemovedTagsAccountData() || [];\n\n if (removedTags.includes(tag)) {\n // Return a thunk that doesn't do anything, we don't even need\n // an asynchronous action here, the tag is already removed.\n return function () {};\n }\n\n removedTags.push(tag);\n\n var storeId = _TagOrderStore2.default.getStoreId();\n\n return (0, _actionCreators.asyncAction)('TagOrderActions.removeTag', function () {\n _Analytics2.default.trackEvent('TagOrderActions', 'removeTag');\n return matrixClient.setAccountData('im.vector.web.tag_ordering', { tags: tags, removedTags: removedTags, _storeId: storeId });\n }, function () {\n // For an optimistic update\n return { removedTags: removedTags };\n });\n};\n\nexports.default = TagOrderActions;\nmodule.exports = exports['default'];\n//# sourceMappingURL=TagOrderActions.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _actionCreators = require('./actionCreators');\n\nvar _RoomListStore = require('../stores/RoomListStore');\n\nvar _RoomListStore2 = _interopRequireDefault(_RoomListStore);\n\nvar _Modal = require('../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _Rooms = require('../Rooms');\n\nvar Rooms = _interopRequireWildcard(_Rooms);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar RoomListActions = {};\n\n/**\n * Creates an action thunk that will do an asynchronous request to\n * tag room.\n *\n * @param {MatrixClient} matrixClient the matrix client to set the\n * account data on.\n * @param {Room} room the room to tag.\n * @param {string} oldTag the tag to remove (unless oldTag ==== newTag)\n * @param {string} newTag the tag with which to tag the room.\n * @param {?number} oldIndex the previous position of the room in the\n * list of rooms.\n * @param {?number} newIndex the new position of the room in the list\n * of rooms.\n * @returns {function} an action thunk.\n * @see asyncAction\n */\nRoomListActions.tagRoom = function (matrixClient, room, oldTag, newTag, oldIndex, newIndex) {\n var metaData = null;\n\n // Is the tag ordered manually?\n if (newTag && !newTag.match(/^(m\\.lowpriority|im\\.vector\\.fake\\.(invite|recent|direct|archived))$/)) {\n var lists = _RoomListStore2.default.getRoomLists();\n var newList = [].concat((0, _toConsumableArray3.default)(lists[newTag]));\n\n newList.sort(function (a, b) {\n return a.tags[newTag].order - b.tags[newTag].order;\n });\n\n // If the room was moved \"down\" (increasing index) in the same list we\n // need to use the orders of the tiles with indices shifted by +1\n var offset = newTag === oldTag && oldIndex < newIndex ? 1 : 0;\n\n var indexBefore = offset + newIndex - 1;\n var indexAfter = offset + newIndex;\n\n var prevOrder = indexBefore <= 0 ? 0 : newList[indexBefore].tags[newTag].order;\n var nextOrder = indexAfter >= newList.length ? 1 : newList[indexAfter].tags[newTag].order;\n\n metaData = {\n order: (prevOrder + nextOrder) / 2.0\n };\n }\n\n return (0, _actionCreators.asyncAction)('RoomListActions.tagRoom', function () {\n var promises = [];\n var roomId = room.roomId;\n\n // Evil hack to get DMs behaving\n if (oldTag === undefined && newTag === 'im.vector.fake.direct' || oldTag === 'im.vector.fake.direct' && newTag === undefined) {\n return Rooms.guessAndSetDMRoom(room, newTag === 'im.vector.fake.direct').catch(function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to set direct chat tag \" + err);\n _Modal2.default.createTrackedDialog('Failed to set direct chat tag', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to set direct chat tag'),\n description: err && err.message ? err.message : (0, _languageHandler._t)('Operation failed')\n });\n });\n }\n\n var hasChangedSubLists = oldTag !== newTag;\n\n // More evilness: We will still be dealing with moving to favourites/low prio,\n // but we avoid ever doing a request with 'im.vector.fake.direct`.\n //\n // if we moved lists, remove the old tag\n if (oldTag && oldTag !== 'im.vector.fake.direct' && hasChangedSubLists) {\n var promiseToDelete = matrixClient.deleteRoomTag(roomId, oldTag).catch(function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to remove tag \" + oldTag + \" from room: \" + err);\n _Modal2.default.createTrackedDialog('Failed to remove tag from room', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to remove tag %(tagName)s from room', { tagName: oldTag }),\n description: err && err.message ? err.message : (0, _languageHandler._t)('Operation failed')\n });\n });\n\n promises.push(promiseToDelete);\n }\n\n // if we moved lists or the ordering changed, add the new tag\n if (newTag && newTag !== 'im.vector.fake.direct' && (hasChangedSubLists || metaData)) {\n // metaData is the body of the PUT to set the tag, so it must\n // at least be an empty object.\n metaData = metaData || {};\n\n var promiseToAdd = matrixClient.setRoomTag(roomId, newTag, metaData).catch(function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to add tag \" + newTag + \" to room: \" + err);\n _Modal2.default.createTrackedDialog('Failed to add tag to room', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to add tag %(tagName)s to room', { tagName: newTag }),\n description: err && err.message ? err.message : (0, _languageHandler._t)('Operation failed')\n });\n\n throw err;\n });\n\n promises.push(promiseToAdd);\n }\n\n return _promise2.default.all(promises);\n }, function () {\n // For an optimistic update\n return {\n room: room, oldTag: oldTag, newTag: newTag, metaData: metaData\n };\n });\n};\n\nexports.default = RoomListActions;\nmodule.exports = exports['default'];\n//# sourceMappingURL=RoomListActions.js.map","module.exports = \"img/icons-groups.29180b0.svg\";","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nexports.instanceForInstanceId = instanceForInstanceId;\nexports.protocolNameForInstanceId = protocolNameForInstanceId;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Find a protocol 'instance' with a given instance_id\n// in the supplied protocols dict\nfunction instanceForInstanceId(protocols, instance_id) {\n if (!instance_id) return null;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(protocols)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var proto = _step.value;\n\n if (!protocols[proto].instances && protocols[proto].instances instanceof Array) continue;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(protocols[proto].instances), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var instance = _step2.value;\n\n if (instance.instance_id == instance_id) return instance;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\n\n// given an instance_id, return the name of the protocol for\n// that instance ID in the supplied protocols dict\nfunction protocolNameForInstanceId(protocols, instance_id) {\n if (!instance_id) return null;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)((0, _keys2.default)(protocols)), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var proto = _step3.value;\n\n if (!protocols[proto].instances && protocols[proto].instances instanceof Array) continue;\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = (0, _getIterator3.default)(protocols[proto].instances), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var instance = _step4.value;\n\n if (instance.instance_id == instance_id) return proto;\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n}\n//# sourceMappingURL=DirectoryUtils.js.map","module.exports = \"img/e2e/warning.a0cb4f2.svg\";","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Unread = require('../../Unread');\n\nvar _Unread2 = _interopRequireDefault(_Unread);\n\nvar _RoomNotifs = require('../../RoomNotifs');\n\nvar RoomNotifs = _interopRequireWildcard(_RoomNotifs);\n\nvar _FormattingUtils = require('../../utils/FormattingUtils');\n\nvar FormattingUtils = _interopRequireWildcard(_FormattingUtils);\n\nvar _IndicatorScrollbar = require('./IndicatorScrollbar');\n\nvar _IndicatorScrollbar2 = _interopRequireDefault(_IndicatorScrollbar);\n\nvar _Keyboard = require('../../Keyboard');\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _RoomTile = require('../views/rooms/RoomTile');\n\nvar _RoomTile2 = _interopRequireDefault(_RoomTile);\n\nvar _LazyRenderList = require('../views/elements/LazyRenderList');\n\nvar _LazyRenderList2 = _interopRequireDefault(_LazyRenderList);\n\nvar _languageHandler = require('../../languageHandler');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// turn this on for drop & drag console debugging galore\nvar debug = false; /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n Copyright 2018, 2019 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar RoomSubList = (0, _createReactClass2.default)({\n displayName: 'RoomSubList',\n\n debug: debug,\n\n propTypes: {\n list: _propTypes2.default.arrayOf(_propTypes2.default.object).isRequired,\n label: _propTypes2.default.string.isRequired,\n tagName: _propTypes2.default.string,\n addRoomLabel: _propTypes2.default.string,\n\n order: _propTypes2.default.string.isRequired,\n\n // passed through to RoomTile and used to highlight room with `!` regardless of notifications count\n isInvite: _propTypes2.default.bool,\n\n startAsHidden: _propTypes2.default.bool,\n showSpinner: _propTypes2.default.bool, // true to show a spinner if 0 elements when expanded\n collapsed: _propTypes2.default.bool.isRequired, // is LeftPanel collapsed?\n onHeaderClick: _propTypes2.default.func,\n incomingCall: _propTypes2.default.object,\n isFiltered: _propTypes2.default.bool,\n headerItems: _propTypes2.default.node, // content shown in the sublist header\n extraTiles: _propTypes2.default.arrayOf(_propTypes2.default.node) // extra elements added beneath tiles\n },\n\n getInitialState: function getInitialState() {\n return {\n hidden: this.props.startAsHidden || false,\n // some values to get LazyRenderList starting\n scrollerHeight: 800,\n scrollTop: 0\n };\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onHeaderClick: function onHeaderClick() {}, // NOP\n extraTiles: [],\n isInvite: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n _dispatcher2.default.unregister(this.dispatcherRef);\n },\n\n // The header is collapsable if it is hidden or not stuck\n // The dataset elements are added in the RoomList _initAndPositionStickyHeaders method\n isCollapsableOnClick: function isCollapsableOnClick() {\n var stuck = this.refs.header.dataset.stuck;\n if (!this.props.forceExpand && (this.state.hidden || stuck === undefined || stuck === \"none\")) {\n return true;\n } else {\n return false;\n }\n },\n\n onAction: function onAction(payload) {\n // XXX: Previously RoomList would forceUpdate whenever on_room_read is dispatched,\n // but this is no longer true, so we must do it here (and can apply the small\n // optimisation of checking that we care about the room being read).\n //\n // Ultimately we need to transition to a state pushing flow where something\n // explicitly notifies the components concerned that the notif count for a room\n // has change (e.g. a Flux store).\n if (payload.action === 'on_room_read' && this.props.list.some(function (r) {\n return r.roomId === payload.roomId;\n })) {\n this.forceUpdate();\n }\n },\n\n onClick: function onClick(ev) {\n var _this = this;\n\n if (this.isCollapsableOnClick()) {\n // The header isCollapsable, so the click is to be interpreted as collapse and truncation logic\n var isHidden = !this.state.hidden;\n this.setState({ hidden: isHidden }, function () {\n _this.props.onHeaderClick(isHidden);\n });\n } else {\n // The header is stuck, so the click is to be interpreted as a scroll to the header\n this.props.onHeaderClick(this.state.hidden, this.refs.header.dataset.originalPosition);\n }\n },\n\n onRoomTileClick: function onRoomTileClick(roomId, ev) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: roomId,\n clear_search: ev && (ev.keyCode === _Keyboard.KeyCode.ENTER || ev.keyCode === _Keyboard.KeyCode.SPACE)\n });\n },\n\n\n _updateSubListCount: function _updateSubListCount() {\n // Force an update by setting the state to the current state\n // Doing it this way rather than using forceUpdate(), so that the shouldComponentUpdate()\n // method is honoured\n this.setState(this.state);\n },\n\n makeRoomTile: function makeRoomTile(room) {\n return _react2.default.createElement(_RoomTile2.default, {\n room: room,\n roomSubList: this,\n tagName: this.props.tagName,\n key: room.roomId,\n collapsed: this.props.collapsed || false,\n unread: _Unread2.default.doesRoomHaveUnreadMessages(room),\n highlight: this.props.isInvite || RoomNotifs.getUnreadNotificationCount(room, 'highlight') > 0,\n notificationCount: RoomNotifs.getUnreadNotificationCount(room),\n isInvite: this.props.isInvite,\n refreshSubList: this._updateSubListCount,\n incomingCall: null,\n onClick: this.onRoomTileClick\n });\n },\n\n _onNotifBadgeClick: function _onNotifBadgeClick(e) {\n // prevent the roomsublist collapsing\n e.preventDefault();\n e.stopPropagation();\n var room = this.props.list.find(function (room) {\n return RoomNotifs.getRoomHasBadge(room);\n });\n if (room) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: room.roomId\n });\n }\n },\n\n _onInviteBadgeClick: function _onInviteBadgeClick(e) {\n // prevent the roomsublist collapsing\n e.preventDefault();\n e.stopPropagation();\n // switch to first room in sortedList as that'll be the top of the list for the user\n if (this.props.list && this.props.list.length > 0) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: this.props.list[0].roomId\n });\n } else if (this.props.extraTiles && this.props.extraTiles.length > 0) {\n // Group Invites are different in that they are all extra tiles and not rooms\n // XXX: this is a horrible special case because Group Invite sublist is a hack\n if (this.props.extraTiles[0].props && this.props.extraTiles[0].props.group instanceof _matrixJsSdk.Group) {\n _dispatcher2.default.dispatch({\n action: 'view_group',\n group_id: this.props.extraTiles[0].props.group.groupId\n });\n }\n }\n },\n\n _getHeaderJsx: function _getHeaderJsx(isCollapsed) {\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n var AccessibleTooltipButton = _index2.default.getComponent('elements.AccessibleTooltipButton');\n var subListNotifications = !this.props.isInvite ? RoomNotifs.aggregateNotificationCount(this.props.list) : { count: 0, highlight: true };\n var subListNotifCount = subListNotifications.count;\n var subListNotifHighlight = subListNotifications.highlight;\n\n var badge = void 0;\n if (!this.props.collapsed) {\n var badgeClasses = (0, _classnames2.default)({\n 'mx_RoomSubList_badge': true,\n 'mx_RoomSubList_badgeHighlight': subListNotifHighlight\n });\n if (subListNotifCount > 0) {\n badge = _react2.default.createElement(\n 'div',\n { className: badgeClasses, onClick: this._onNotifBadgeClick },\n FormattingUtils.formatCount(subListNotifCount)\n );\n } else if (this.props.isInvite && this.props.list.length) {\n // no notifications but highlight anyway because this is an invite badge\n badge = _react2.default.createElement(\n 'div',\n { className: badgeClasses, onClick: this._onInviteBadgeClick },\n this.props.list.length\n );\n }\n }\n\n // When collapsed, allow a long hover on the header to show user\n // the full tag name and room count\n var title = void 0;\n if (this.props.collapsed) {\n title = this.props.label;\n }\n\n var incomingCall = void 0;\n if (this.props.incomingCall) {\n // We can assume that if we have an incoming call then it is for this list\n var IncomingCallBox = _index2.default.getComponent(\"voip.IncomingCallBox\");\n incomingCall = _react2.default.createElement(IncomingCallBox, { className: 'mx_RoomSubList_incomingCall', incomingCall: this.props.incomingCall });\n }\n\n var addRoomButton = void 0;\n if (this.props.onAddRoom) {\n addRoomButton = _react2.default.createElement(AccessibleTooltipButton, {\n onClick: this.props.onAddRoom,\n className: 'mx_RoomSubList_addRoom',\n title: this.props.addRoomLabel || (0, _languageHandler._t)(\"Add room\")\n });\n }\n\n var len = this.props.list.length + this.props.extraTiles.length;\n var chevron = void 0;\n if (len) {\n var chevronClasses = (0, _classnames2.default)({\n 'mx_RoomSubList_chevron': true,\n 'mx_RoomSubList_chevronRight': isCollapsed,\n 'mx_RoomSubList_chevronDown': !isCollapsed\n });\n chevron = _react2.default.createElement('div', { className: chevronClasses });\n }\n\n var tabindex = this.props.isFiltered ? \"0\" : \"-1\";\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSubList_labelContainer', title: title, ref: 'header' },\n _react2.default.createElement(\n AccessibleButton,\n { onClick: this.onClick, className: 'mx_RoomSubList_label', tabIndex: tabindex, 'aria-expanded': !isCollapsed },\n chevron,\n _react2.default.createElement(\n 'span',\n null,\n this.props.label\n ),\n incomingCall\n ),\n badge,\n addRoomButton\n );\n },\n\n checkOverflow: function checkOverflow() {\n if (this.refs.scroller) {\n this.refs.scroller.checkOverflow();\n }\n },\n\n setHeight: function setHeight(height) {\n if (this.refs.subList) {\n this.refs.subList.style.height = height + 'px';\n }\n this._updateLazyRenderHeight(height);\n },\n\n _updateLazyRenderHeight: function _updateLazyRenderHeight(height) {\n this.setState({ scrollerHeight: height });\n },\n\n _onScroll: function _onScroll() {\n this.setState({ scrollTop: this.refs.scroller.getScrollTop() });\n },\n\n _canUseLazyListRendering: function _canUseLazyListRendering() {\n // for now disable lazy rendering as they are already rendered tiles\n // not rooms like props.list we pass to LazyRenderList\n return !this.props.extraTiles || !this.props.extraTiles.length;\n },\n\n\n render: function render() {\n var _this2 = this;\n\n var len = this.props.list.length + this.props.extraTiles.length;\n var isCollapsed = this.state.hidden && !this.props.forceExpand;\n if (len) {\n var subListClasses = (0, _classnames2.default)({\n \"mx_RoomSubList\": true,\n \"mx_RoomSubList_hidden\": isCollapsed,\n \"mx_RoomSubList_nonEmpty\": len && !isCollapsed\n });\n\n if (isCollapsed) {\n return _react2.default.createElement(\n 'div',\n { ref: 'subList', className: subListClasses, role: 'group', 'aria-label': this.props.label },\n this._getHeaderJsx(isCollapsed)\n );\n } else if (this._canUseLazyListRendering()) {\n return _react2.default.createElement(\n 'div',\n { ref: 'subList', className: subListClasses, role: 'group', 'aria-label': this.props.label },\n this._getHeaderJsx(isCollapsed),\n _react2.default.createElement(\n _IndicatorScrollbar2.default,\n { ref: 'scroller', className: 'mx_RoomSubList_scroll', onScroll: this._onScroll },\n _react2.default.createElement(_LazyRenderList2.default, {\n scrollTop: this.state.scrollTop,\n height: this.state.scrollerHeight,\n renderItem: this.makeRoomTile,\n itemHeight: 34,\n items: this.props.list })\n )\n );\n } else {\n var roomTiles = this.props.list.map(function (r) {\n return _this2.makeRoomTile(r);\n });\n var tiles = roomTiles.concat(this.props.extraTiles);\n return _react2.default.createElement(\n 'div',\n { ref: 'subList', className: subListClasses, role: 'group', 'aria-label': this.props.label },\n this._getHeaderJsx(isCollapsed),\n _react2.default.createElement(\n _IndicatorScrollbar2.default,\n { ref: 'scroller', className: 'mx_RoomSubList_scroll', onScroll: this._onScroll },\n tiles\n )\n );\n }\n } else {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n var content = void 0;\n if (this.props.showSpinner && !isCollapsed) {\n content = _react2.default.createElement(Loader, null);\n }\n\n return _react2.default.createElement(\n 'div',\n { ref: 'subList', className: 'mx_RoomSubList', role: 'group', 'aria-label': this.props.label },\n this._getHeaderJsx(isCollapsed),\n content\n );\n }\n }\n});\n\nmodule.exports = RoomSubList;\n//# sourceMappingURL=RoomSubList.js.map","'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _DMRoomMap = require('../../../utils/DMRoomMap');\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ContextualMenu = require('../../structures/ContextualMenu');\n\nvar _RoomNotifs = require('../../../RoomNotifs');\n\nvar RoomNotifs = _interopRequireWildcard(_RoomNotifs);\n\nvar _FormattingUtils = require('../../../utils/FormattingUtils');\n\nvar FormattingUtils = _interopRequireWildcard(_FormattingUtils);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _ActiveRoomObserver = require('../../../ActiveRoomObserver');\n\nvar _ActiveRoomObserver2 = _interopRequireDefault(_ActiveRoomObserver);\n\nvar _RoomViewStore = require('../../../stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\nCopyright 2018 Michael Telatynski <7t3chguy@gmail.com>\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = (0, _createReactClass2.default)({\n displayName: 'RoomTile',\n\n propTypes: {\n onClick: _propTypes2.default.func,\n\n room: _propTypes2.default.object.isRequired,\n collapsed: _propTypes2.default.bool.isRequired,\n unread: _propTypes2.default.bool.isRequired,\n highlight: _propTypes2.default.bool.isRequired,\n // If true, apply mx_RoomTile_transparent class\n transparent: _propTypes2.default.bool,\n isInvite: _propTypes2.default.bool.isRequired,\n incomingCall: _propTypes2.default.object\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n isDragging: false\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n hover: false,\n badgeHover: false,\n menuDisplayed: false,\n roomName: this.props.room.name,\n notifState: RoomNotifs.getRoomNotifsState(this.props.room.roomId),\n notificationCount: this.props.room.getUnreadNotificationCount(),\n selected: this.props.room.roomId === _RoomViewStore2.default.getRoomId(),\n statusMessage: this._getStatusMessage()\n };\n },\n\n _isDirectMessageRoom: function _isDirectMessageRoom(roomId) {\n var dmRooms = _DMRoomMap2.default.shared().getUserIdForRoomId(roomId);\n return Boolean(dmRooms);\n },\n\n _shouldShowStatusMessage: function _shouldShowStatusMessage() {\n if (!_SettingsStore2.default.isFeatureEnabled(\"feature_custom_status\")) {\n return false;\n }\n var isInvite = this.props.room.getMyMembership() === \"invite\";\n var isJoined = this.props.room.getMyMembership() === \"join\";\n var looksLikeDm = this.props.room.getInvitedAndJoinedMemberCount() === 2;\n return !isInvite && isJoined && looksLikeDm;\n },\n _getStatusMessageUser: function _getStatusMessageUser() {\n if (!_MatrixClientPeg2.default.get()) return null; // We've probably been logged out\n\n var selfId = _MatrixClientPeg2.default.get().getUserId();\n var otherMember = this.props.room.currentState.getMembersExcept([selfId])[0];\n if (!otherMember) {\n return null;\n }\n return otherMember.user;\n },\n _getStatusMessage: function _getStatusMessage() {\n var statusUser = this._getStatusMessageUser();\n if (!statusUser) {\n return \"\";\n }\n return statusUser._unstable_statusMessage;\n },\n\n\n onRoomName: function onRoomName(room) {\n if (room !== this.props.room) return;\n this.setState({\n roomName: this.props.room.name\n });\n },\n\n onAccountData: function onAccountData(accountDataEvent) {\n if (accountDataEvent.getType() === 'm.push_rules') {\n this.setState({\n notifState: RoomNotifs.getRoomNotifsState(this.props.room.roomId)\n });\n }\n },\n\n onAction: function onAction(payload) {\n switch (payload.action) {\n // XXX: slight hack in order to zero the notification count when a room\n // is read. Ideally this state would be given to this via props (as we\n // do with `unread`). This is still better than forceUpdating the entire\n // RoomList when a room is read.\n case 'on_room_read':\n if (payload.roomId !== this.props.room.roomId) break;\n this.setState({\n notificationCount: this.props.room.getUnreadNotificationCount()\n });\n break;\n // RoomTiles are one of the few components that may show custom status and\n // also remain on screen while in Settings toggling the feature. This ensures\n // you can clearly see the status hide and show when toggling the feature.\n case 'feature_custom_status_changed':\n this.forceUpdate();\n break;\n }\n },\n\n _onActiveRoomChange: function _onActiveRoomChange() {\n this.setState({\n selected: this.props.room.roomId === _RoomViewStore2.default.getRoomId()\n });\n },\n\n componentWillMount: function componentWillMount() {\n _MatrixClientPeg2.default.get().on(\"accountData\", this.onAccountData);\n _MatrixClientPeg2.default.get().on(\"Room.name\", this.onRoomName);\n _ActiveRoomObserver2.default.addListener(this.props.room.roomId, this._onActiveRoomChange);\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n\n if (this._shouldShowStatusMessage()) {\n var statusUser = this._getStatusMessageUser();\n if (statusUser) {\n statusUser.on(\"User._unstable_statusMessage\", this._onStatusMessageCommitted);\n }\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n var cli = _MatrixClientPeg2.default.get();\n if (cli) {\n _MatrixClientPeg2.default.get().removeListener(\"accountData\", this.onAccountData);\n _MatrixClientPeg2.default.get().removeListener(\"Room.name\", this.onRoomName);\n }\n _ActiveRoomObserver2.default.removeListener(this.props.room.roomId, this._onActiveRoomChange);\n _dispatcher2.default.unregister(this.dispatcherRef);\n\n if (this._shouldShowStatusMessage()) {\n var statusUser = this._getStatusMessageUser();\n if (statusUser) {\n statusUser.removeListener(\"User._unstable_statusMessage\", this._onStatusMessageCommitted);\n }\n }\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(props) {\n // XXX: This could be a lot better - this makes the assumption that\n // the notification count may have changed when the properties of\n // the room tile change.\n this.setState({\n notificationCount: this.props.room.getUnreadNotificationCount()\n });\n },\n\n // Do a simple shallow comparison of props and state to avoid unnecessary\n // renders. The assumption made here is that only state and props are used\n // in rendering this component and children.\n //\n // RoomList is frequently made to forceUpdate, so this decreases number of\n // RoomTile renderings.\n shouldComponentUpdate: function shouldComponentUpdate(newProps, newState) {\n var _this = this;\n\n if ((0, _keys2.default)(newProps).some(function (k) {\n return newProps[k] !== _this.props[k];\n })) {\n return true;\n }\n if ((0, _keys2.default)(newState).some(function (k) {\n return newState[k] !== _this.state[k];\n })) {\n return true;\n }\n return false;\n },\n\n _onStatusMessageCommitted: function _onStatusMessageCommitted() {\n // The status message `User` object has observed a message change.\n this.setState({\n statusMessage: this._getStatusMessage()\n });\n },\n\n\n onClick: function onClick(ev) {\n if (this.props.onClick) {\n this.props.onClick(this.props.room.roomId, ev);\n }\n },\n\n onMouseEnter: function onMouseEnter() {\n this.setState({ hover: true });\n this.badgeOnMouseEnter();\n },\n\n onMouseLeave: function onMouseLeave() {\n this.setState({ hover: false });\n this.badgeOnMouseLeave();\n },\n\n _showContextMenu: function _showContextMenu(x, y, chevronOffset) {\n var _this2 = this;\n\n var RoomTileContextMenu = _index2.default.getComponent('context_menus.RoomTileContextMenu');\n\n (0, _ContextualMenu.createMenu)(RoomTileContextMenu, {\n chevronOffset: chevronOffset,\n left: x,\n top: y,\n room: this.props.room,\n onFinished: function onFinished() {\n _this2.setState({ menuDisplayed: false });\n _this2.props.refreshSubList();\n }\n });\n this.setState({ menuDisplayed: true });\n },\n\n onContextMenu: function onContextMenu(e) {\n // Prevent the RoomTile onClick event firing as well\n e.preventDefault();\n // Only allow non-guests to access the context menu\n if (_MatrixClientPeg2.default.get().isGuest()) return;\n\n var chevronOffset = 12;\n this._showContextMenu(e.clientX, e.clientY - (chevronOffset + 8), chevronOffset);\n },\n\n badgeOnMouseEnter: function badgeOnMouseEnter() {\n // Only allow non-guests to access the context menu\n // and only change it if it needs to change\n if (!_MatrixClientPeg2.default.get().isGuest() && !this.state.badgeHover) {\n this.setState({ badgeHover: true });\n }\n },\n\n badgeOnMouseLeave: function badgeOnMouseLeave() {\n this.setState({ badgeHover: false });\n },\n\n onOpenMenu: function onOpenMenu(e) {\n // Prevent the RoomTile onClick event firing as well\n e.stopPropagation();\n // Only allow non-guests to access the context menu\n if (_MatrixClientPeg2.default.get().isGuest()) return;\n\n // If the badge is clicked, then no longer show tooltip\n if (this.props.collapsed) {\n this.setState({ hover: false });\n }\n\n var elementRect = e.target.getBoundingClientRect();\n\n // The window X and Y offsets are to adjust position when zoomed in to page\n var x = elementRect.right + window.pageXOffset + 3;\n var chevronOffset = 12;\n var y = elementRect.top + elementRect.height / 2 + window.pageYOffset;\n y = y - (chevronOffset + 8); // where 8 is half the height of the chevron\n\n this._showContextMenu(x, y, chevronOffset);\n },\n\n render: function render() {\n var isInvite = this.props.room.getMyMembership() === \"invite\";\n var notificationCount = this.props.notificationCount;\n // var highlightCount = this.props.room.getUnreadNotificationCount(\"highlight\");\n\n var notifBadges = notificationCount > 0 && RoomNotifs.shouldShowNotifBadge(this.state.notifState);\n var mentionBadges = this.props.highlight && RoomNotifs.shouldShowMentionBadge(this.state.notifState);\n var badges = notifBadges || mentionBadges;\n\n var subtext = null;\n if (this._shouldShowStatusMessage()) {\n subtext = this.state.statusMessage;\n }\n\n var classes = (0, _classnames2.default)({\n 'mx_RoomTile': true,\n 'mx_RoomTile_selected': this.state.selected,\n 'mx_RoomTile_unread': this.props.unread,\n 'mx_RoomTile_unreadNotify': notifBadges,\n 'mx_RoomTile_highlight': mentionBadges,\n 'mx_RoomTile_invited': isInvite,\n 'mx_RoomTile_menuDisplayed': this.state.menuDisplayed,\n 'mx_RoomTile_noBadges': !badges,\n 'mx_RoomTile_transparent': this.props.transparent,\n 'mx_RoomTile_hasSubtext': subtext && !this.props.collapsed\n });\n\n var avatarClasses = (0, _classnames2.default)({\n 'mx_RoomTile_avatar': true\n });\n\n var badgeClasses = (0, _classnames2.default)({\n 'mx_RoomTile_badge': true,\n 'mx_RoomTile_badgeButton': this.state.badgeHover || this.state.menuDisplayed\n });\n\n var name = this.state.roomName;\n if (name == undefined || name == null) name = '';\n name = name.replace(\":\", ':\\u200B'); // add a zero-width space to allow linewrapping after the colon\n\n\n var badge = void 0;\n if (badges) {\n var limitedCount = FormattingUtils.formatCount(notificationCount);\n var badgeContent = notificationCount ? limitedCount : '!';\n badge = _react2.default.createElement(\n 'div',\n { className: badgeClasses },\n badgeContent\n );\n }\n\n var label = void 0;\n var subtextLabel = void 0;\n var tooltip = void 0;\n if (!this.props.collapsed) {\n var nameClasses = (0, _classnames2.default)({\n 'mx_RoomTile_name': true,\n 'mx_RoomTile_invite': this.props.isInvite,\n 'mx_RoomTile_badgeShown': badges || this.state.badgeHover || this.state.menuDisplayed\n });\n\n subtextLabel = subtext ? _react2.default.createElement(\n 'span',\n { className: 'mx_RoomTile_subtext' },\n subtext\n ) : null;\n label = _react2.default.createElement(\n 'div',\n { title: name, className: nameClasses, dir: 'auto' },\n name\n );\n } else if (this.state.hover) {\n var Tooltip = _index2.default.getComponent(\"elements.Tooltip\");\n tooltip = _react2.default.createElement(Tooltip, { className: 'mx_RoomTile_tooltip', label: this.props.room.name, dir: 'auto' });\n }\n\n //var incomingCallBox;\n //if (this.props.incomingCall) {\n // var IncomingCallBox = sdk.getComponent(\"voip.IncomingCallBox\");\n // incomingCallBox = ;\n //}\n\n var contextMenuButton = void 0;\n if (!_MatrixClientPeg2.default.get().isGuest()) {\n contextMenuButton = _react2.default.createElement(_AccessibleButton2.default, { className: 'mx_RoomTile_menuButton', onClick: this.onOpenMenu });\n }\n\n var RoomAvatar = _index2.default.getComponent('avatars.RoomAvatar');\n\n var ariaLabel = name;\n\n var dmIndicator = void 0;\n if (this._isDirectMessageRoom(this.props.room.roomId)) {\n dmIndicator = _react2.default.createElement('img', {\n src: require(\"../../../../res/img/icon_person.svg\"),\n className: 'mx_RoomTile_dm',\n width: '11',\n height: '13',\n alt: 'dm'\n });\n }\n\n // The following labels are written in such a fashion to increase screen reader efficiency (speed).\n if (notifBadges && mentionBadges && !isInvite) {\n ariaLabel += \" \" + (0, _languageHandler._t)(\"%(count)s unread messages including mentions.\", {\n count: notificationCount\n });\n } else if (notifBadges) {\n ariaLabel += \" \" + (0, _languageHandler._t)(\"%(count)s unread messages.\", { count: notificationCount });\n } else if (mentionBadges && !isInvite) {\n ariaLabel += \" \" + (0, _languageHandler._t)(\"Unread mentions.\");\n }\n\n return _react2.default.createElement(\n _AccessibleButton2.default,\n { tabIndex: '0',\n className: classes,\n onClick: this.onClick,\n onMouseEnter: this.onMouseEnter,\n onMouseLeave: this.onMouseLeave,\n onContextMenu: this.onContextMenu,\n 'aria-label': ariaLabel,\n role: 'option'\n },\n _react2.default.createElement(\n 'div',\n { className: avatarClasses },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTile_avatar_container' },\n _react2.default.createElement(RoomAvatar, { room: this.props.room, width: 24, height: 24 }),\n dmIndicator\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTile_nameContainer' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTile_labelContainer' },\n label,\n subtextLabel\n ),\n contextMenuButton,\n badge\n ),\n tooltip\n );\n }\n});\n//# sourceMappingURL=RoomTile.js.map","module.exports = \"img/icon_person.6a32066.svg\";","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar OVERFLOW_ITEMS = 20; /*\n Copyright 2019 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar OVERFLOW_MARGIN = 5;\n\nvar ItemRange = function () {\n function ItemRange(topCount, renderCount, bottomCount) {\n (0, _classCallCheck3.default)(this, ItemRange);\n\n this.topCount = topCount;\n this.renderCount = renderCount;\n this.bottomCount = bottomCount;\n }\n\n (0, _createClass3.default)(ItemRange, [{\n key: \"contains\",\n value: function contains(range) {\n return range.topCount >= this.topCount && range.topCount + range.renderCount <= this.topCount + this.renderCount;\n }\n }, {\n key: \"expand\",\n value: function expand(amount) {\n var topGrow = Math.min(amount, this.topCount);\n var bottomGrow = Math.min(amount, this.bottomCount);\n return new ItemRange(this.topCount - topGrow, this.renderCount + topGrow + bottomGrow, this.bottomCount - bottomGrow);\n }\n }]);\n return ItemRange;\n}();\n\nvar LazyRenderList = function (_React$Component) {\n (0, _inherits3.default)(LazyRenderList, _React$Component);\n\n function LazyRenderList(props) {\n (0, _classCallCheck3.default)(this, LazyRenderList);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (LazyRenderList.__proto__ || (0, _getPrototypeOf2.default)(LazyRenderList)).call(this, props));\n\n var renderRange = LazyRenderList.getVisibleRangeFromProps(props).expand(OVERFLOW_ITEMS);\n _this.state = { renderRange: renderRange };\n return _this;\n }\n\n (0, _createClass3.default)(LazyRenderList, [{\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(props) {\n var state = this.state;\n var range = LazyRenderList.getVisibleRangeFromProps(props);\n var intersectRange = range.expand(OVERFLOW_MARGIN);\n\n var prevSize = this.props.items ? this.props.items.length : 0;\n var listHasChangedSize = props.items.length !== prevSize;\n // only update renderRange if the list has shrunk/grown and we need to adjust padding or\n // if the new range isn't contained by the old anymore\n if (listHasChangedSize || !state.renderRange || !state.renderRange.contains(intersectRange)) {\n this.setState({ renderRange: range.expand(OVERFLOW_ITEMS) });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _props = this.props,\n itemHeight = _props.itemHeight,\n items = _props.items,\n renderItem = _props.renderItem;\n var renderRange = this.state.renderRange;\n\n var paddingTop = renderRange.topCount * itemHeight;\n var paddingBottom = renderRange.bottomCount * itemHeight;\n var renderedItems = (items || []).slice(renderRange.topCount, renderRange.topCount + renderRange.renderCount);\n\n return _react2.default.createElement(\n \"div\",\n { style: { paddingTop: paddingTop + \"px\", paddingBottom: paddingBottom + \"px\" } },\n renderedItems.map(renderItem)\n );\n }\n }], [{\n key: \"getVisibleRangeFromProps\",\n value: function getVisibleRangeFromProps(props) {\n var items = props.items,\n itemHeight = props.itemHeight,\n scrollTop = props.scrollTop,\n height = props.height;\n\n var length = items ? items.length : 0;\n var topCount = Math.max(0, Math.floor(scrollTop / itemHeight));\n var itemsAfterTop = length - topCount;\n var renderCount = Math.min(Math.ceil(height / itemHeight), itemsAfterTop);\n var bottomCount = itemsAfterTop - renderCount;\n return new ItemRange(topCount, renderCount, bottomCount);\n }\n }]);\n return LazyRenderList;\n}(_react2.default.Component);\n\nexports.default = LazyRenderList;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=LazyRenderList.js.map","'use strict';\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _shouldHideEvent = require('../../shouldHideEvent');\n\nvar _shouldHideEvent2 = _interopRequireDefault(_shouldHideEvent);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _Permalinks = require('../../utils/permalinks/Permalinks');\n\nvar _MatrixClientPeg = require('../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _ContentMessages = require('../../ContentMessages');\n\nvar _ContentMessages2 = _interopRequireDefault(_ContentMessages);\n\nvar _Modal = require('../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _CallHandler = require('../../CallHandler');\n\nvar _CallHandler2 = _interopRequireDefault(_CallHandler);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Tinter = require('../../Tinter');\n\nvar _Tinter2 = _interopRequireDefault(_Tinter);\n\nvar _ratelimitedfunc = require('../../ratelimitedfunc');\n\nvar _ratelimitedfunc2 = _interopRequireDefault(_ratelimitedfunc);\n\nvar _ObjectUtils = require('../../ObjectUtils');\n\nvar _ObjectUtils2 = _interopRequireDefault(_ObjectUtils);\n\nvar _Rooms = require('../../Rooms');\n\nvar Rooms = _interopRequireWildcard(_Rooms);\n\nvar _Keyboard = require('../../Keyboard');\n\nvar _MainSplit = require('./MainSplit');\n\nvar _MainSplit2 = _interopRequireDefault(_MainSplit);\n\nvar _RightPanel = require('./RightPanel');\n\nvar _RightPanel2 = _interopRequireDefault(_RightPanel);\n\nvar _RoomViewStore = require('../../stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _RoomScrollStateStore = require('../../stores/RoomScrollStateStore');\n\nvar _RoomScrollStateStore2 = _interopRequireDefault(_RoomScrollStateStore);\n\nvar _WidgetEchoStore = require('../../stores/WidgetEchoStore');\n\nvar _WidgetEchoStore2 = _interopRequireDefault(_WidgetEchoStore);\n\nvar _SettingsStore = require('../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _WidgetUtils = require('../../utils/WidgetUtils');\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nvar _AccessibleButton = require('../views/elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DEBUG = false; /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n Copyright 2018, 2019 New Vector Ltd\n Copyright 2019 The Matrix.org Foundation C.I.C.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n// TODO: This component is enormous! There's several things which could stand-alone:\n// - Search results component\n// - Drag and drop\n\nvar debuglog = function debuglog() {};\n\nvar BROWSER_SUPPORTS_SANDBOX = 'sandbox' in document.createElement('iframe');\n\nif (DEBUG) {\n // using bind means that we get to keep useful line numbers in the console\n debuglog = console.log.bind(console);\n}\n\nvar RoomContext = _propTypes2.default.shape({\n canReact: _propTypes2.default.bool.isRequired,\n canReply: _propTypes2.default.bool.isRequired,\n room: _propTypes2.default.instanceOf(_matrixJsSdk.Room)\n});\n\nmodule.exports = (0, _createReactClass2.default)({\n displayName: 'RoomView',\n propTypes: {\n ConferenceHandler: _propTypes2.default.any,\n\n // Called with the credentials of a registered user (if they were a ROU that\n // transitioned to PWLU)\n onRegistered: _propTypes2.default.func,\n\n // An object representing a third party invite to join this room\n // Fields:\n // * inviteSignUrl (string) The URL used to join this room from an email invite\n // (given as part of the link in the invite email)\n // * invitedEmail (string) The email address that was invited to this room\n thirdPartyInvite: _propTypes2.default.object,\n\n // Any data about the room that would normally come from the homeserver\n // but has been passed out-of-band, eg. the room name and avatar URL\n // from an email invite (a workaround for the fact that we can't\n // get this information from the HS using an email invite).\n // Fields:\n // * name (string) The room's name\n // * avatarUrl (string) The mxc:// avatar URL for the room\n // * inviterName (string) The display name of the person who\n // * invited us to the room\n oobData: _propTypes2.default.object,\n\n // is the RightPanel collapsed?\n collapsedRhs: _propTypes2.default.bool,\n\n // Servers the RoomView can use to try and assist joins\n viaServers: _propTypes2.default.arrayOf(_propTypes2.default.string)\n },\n\n getInitialState: function getInitialState() {\n var llMembers = _MatrixClientPeg2.default.get().hasLazyLoadMembersEnabled();\n return {\n room: null,\n roomId: null,\n roomLoading: true,\n peekLoading: false,\n shouldPeek: true,\n\n // Media limits for uploading.\n mediaConfig: undefined,\n\n // used to trigger a rerender in TimelinePanel once the members are loaded,\n // so RR are rendered again (now with the members available), ...\n membersLoaded: !llMembers,\n // The event to be scrolled to initially\n initialEventId: null,\n // The offset in pixels from the event with which to scroll vertically\n initialEventPixelOffset: null,\n // Whether to highlight the event scrolled to\n isInitialEventHighlighted: null,\n\n forwardingEvent: null,\n numUnreadMessages: 0,\n draggingFile: false,\n searching: false,\n searchResults: null,\n callState: null,\n guestsCanJoin: false,\n canPeek: false,\n showApps: false,\n isAlone: false,\n isPeeking: false,\n showingPinned: false,\n\n // error object, as from the matrix client/server API\n // If we failed to load information about the room,\n // store the error here.\n roomLoadError: null,\n\n // Have we sent a request to join the room that we're waiting to complete?\n joining: false,\n\n // this is true if we are fully scrolled-down, and are looking at\n // the end of the live timeline. It has the effect of hiding the\n // 'scroll to bottom' knob, among a couple of other things.\n atEndOfLiveTimeline: true,\n atEndOfLiveTimelineInit: false, // used by componentDidUpdate to avoid unnecessary checks\n\n showTopUnreadMessagesBar: false,\n\n auxPanelMaxHeight: undefined,\n\n statusBarVisible: false,\n\n // We load this later by asking the js-sdk to suggest a version for us.\n // This object is the result of Room#getRecommendedVersion()\n upgradeRecommendation: null,\n\n canReact: false,\n canReply: false\n };\n },\n\n childContextTypes: {\n room: RoomContext\n },\n\n getChildContext: function getChildContext() {\n var _state = this.state,\n canReact = _state.canReact,\n canReply = _state.canReply,\n room = _state.room;\n\n return {\n room: {\n canReact: canReact,\n canReply: canReply,\n room: room\n }\n };\n },\n\n componentWillMount: function componentWillMount() {\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n _MatrixClientPeg2.default.get().on(\"Room\", this.onRoom);\n _MatrixClientPeg2.default.get().on(\"Room.timeline\", this.onRoomTimeline);\n _MatrixClientPeg2.default.get().on(\"Room.name\", this.onRoomName);\n _MatrixClientPeg2.default.get().on(\"Room.accountData\", this.onRoomAccountData);\n _MatrixClientPeg2.default.get().on(\"RoomState.events\", this.onRoomStateEvents);\n _MatrixClientPeg2.default.get().on(\"RoomState.members\", this.onRoomStateMember);\n _MatrixClientPeg2.default.get().on(\"Room.myMembership\", this.onMyMembership);\n _MatrixClientPeg2.default.get().on(\"accountData\", this.onAccountData);\n _MatrixClientPeg2.default.get().on(\"crypto.keyBackupStatus\", this.onKeyBackupStatus);\n _MatrixClientPeg2.default.get().on(\"deviceVerificationChanged\", this.onDeviceVerificationChanged);\n // Start listening for RoomViewStore updates\n this._roomStoreToken = _RoomViewStore2.default.addListener(this._onRoomViewStoreUpdate);\n this._onRoomViewStoreUpdate(true);\n\n _WidgetEchoStore2.default.on('update', this._onWidgetEchoStoreUpdate);\n },\n\n _onRoomViewStoreUpdate: function _onRoomViewStoreUpdate(initial) {\n if (this.unmounted) {\n return;\n }\n\n if (!initial && this.state.roomId !== _RoomViewStore2.default.getRoomId()) {\n // RoomView explicitly does not support changing what room\n // is being viewed: instead it should just be re-mounted when\n // switching rooms. Therefore, if the room ID changes, we\n // ignore this. We either need to do this or add code to handle\n // saving the scroll position (otherwise we end up saving the\n // scroll position against the wrong room).\n\n // Given that doing the setState here would cause a bunch of\n // unnecessary work, we just ignore the change since we know\n // that if the current room ID has changed from what we thought\n // it was, it means we're about to be unmounted.\n return;\n }\n\n var newState = {\n roomId: _RoomViewStore2.default.getRoomId(),\n roomAlias: _RoomViewStore2.default.getRoomAlias(),\n roomLoading: _RoomViewStore2.default.isRoomLoading(),\n roomLoadError: _RoomViewStore2.default.getRoomLoadError(),\n joining: _RoomViewStore2.default.isJoining(),\n initialEventId: _RoomViewStore2.default.getInitialEventId(),\n isInitialEventHighlighted: _RoomViewStore2.default.isInitialEventHighlighted(),\n forwardingEvent: _RoomViewStore2.default.getForwardingEvent(),\n shouldPeek: _RoomViewStore2.default.shouldPeek(),\n showingPinned: _SettingsStore2.default.getValue(\"PinnedEvents.isOpen\", _RoomViewStore2.default.getRoomId())\n };\n\n // Temporary logging to diagnose https://github.com/vector-im/riot-web/issues/4307\n console.log('RVS update:', newState.roomId, newState.roomAlias, 'loading?', newState.roomLoading, 'joining?', newState.joining, 'initial?', initial, 'shouldPeek?', newState.shouldPeek);\n\n // NB: This does assume that the roomID will not change for the lifetime of\n // the RoomView instance\n if (initial) {\n newState.room = _MatrixClientPeg2.default.get().getRoom(newState.roomId);\n if (newState.room) {\n newState.showApps = this._shouldShowApps(newState.room);\n this._onRoomLoaded(newState.room);\n }\n }\n\n if (this.state.roomId === null && newState.roomId !== null) {\n // Get the scroll state for the new room\n\n // If an event ID wasn't specified, default to the one saved for this room\n // in the scroll state store. Assume initialEventPixelOffset should be set.\n if (!newState.initialEventId) {\n var roomScrollState = _RoomScrollStateStore2.default.getScrollState(newState.roomId);\n if (roomScrollState) {\n newState.initialEventId = roomScrollState.focussedEvent;\n newState.initialEventPixelOffset = roomScrollState.pixelOffset;\n }\n }\n }\n\n // Clear the search results when clicking a search result (which changes the\n // currently scrolled to event, this.state.initialEventId).\n if (this.state.initialEventId !== newState.initialEventId) {\n newState.searchResults = null;\n }\n\n this.setState(newState);\n // At this point, newState.roomId could be null (e.g. the alias might not\n // have been resolved yet) so anything called here must handle this case.\n\n // We pass the new state into this function for it to read: it needs to\n // observe the new state but we don't want to put it in the setState\n // callback because this would prevent the setStates from being batched,\n // ie. cause it to render RoomView twice rather than the once that is necessary.\n if (initial) {\n this._setupRoom(newState.room, newState.roomId, newState.joining, newState.shouldPeek);\n }\n },\n\n _getRoomId: function _getRoomId() {\n // According to `_onRoomViewStoreUpdate`, `state.roomId` can be null\n // if we have a room alias we haven't resolved yet. To work around this,\n // first we'll try the room object if it's there, and then fallback to\n // the bare room ID. (We may want to update `state.roomId` after\n // resolving aliases, so we could always trust it.)\n return this.state.room ? this.state.room.roomId : this.state.roomId;\n },\n\n\n _getPermalinkCreatorForRoom: function _getPermalinkCreatorForRoom(room) {\n if (!this._permalinkCreators) this._permalinkCreators = {};\n if (this._permalinkCreators[room.roomId]) return this._permalinkCreators[room.roomId];\n\n this._permalinkCreators[room.roomId] = new _Permalinks.RoomPermalinkCreator(room);\n if (this.state.room && room.roomId === this.state.room.roomId) {\n // We want to watch for changes in the creator for the primary room in the view, but\n // don't need to do so for search results.\n this._permalinkCreators[room.roomId].start();\n } else {\n this._permalinkCreators[room.roomId].load();\n }\n return this._permalinkCreators[room.roomId];\n },\n\n _stopAllPermalinkCreators: function _stopAllPermalinkCreators() {\n if (!this._permalinkCreators) return;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(this._permalinkCreators)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var roomId = _step.value;\n\n this._permalinkCreators[roomId].stop();\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n },\n\n _onWidgetEchoStoreUpdate: function _onWidgetEchoStoreUpdate() {\n this.setState({\n showApps: this._shouldShowApps(this.state.room)\n });\n },\n\n _setupRoom: function _setupRoom(room, roomId, joining, shouldPeek) {\n var _this = this;\n\n // if this is an unknown room then we're in one of three states:\n // - This is a room we can peek into (search engine) (we can /peek)\n // - This is a room we can publicly join or were invited to. (we can /join)\n // - This is a room we cannot join at all. (no action can help us)\n // We can't try to /join because this may implicitly accept invites (!)\n // We can /peek though. If it fails then we present the join UI. If it\n // succeeds then great, show the preview (but we still may be able to /join!).\n // Note that peeking works by room ID and room ID only, as opposed to joining\n // which must be by alias or invite wherever possible (peeking currently does\n // not work over federation).\n\n // NB. We peek if we have never seen the room before (i.e. js-sdk does not know\n // about it). We don't peek in the historical case where we were joined but are\n // now not joined because the js-sdk peeking API will clobber our historical room,\n // making it impossible to indicate a newly joined room.\n if (!joining && roomId) {\n if (this.props.autoJoin) {\n this.onJoinButtonClicked();\n } else if (!room && shouldPeek) {\n console.log(\"Attempting to peek into room %s\", roomId);\n this.setState({\n peekLoading: true,\n isPeeking: true // this will change to false if peeking fails\n });\n _MatrixClientPeg2.default.get().peekInRoom(roomId).then(function (room) {\n if (_this.unmounted) {\n return;\n }\n _this.setState({\n room: room,\n peekLoading: false\n });\n _this._onRoomLoaded(room);\n }, function (err) {\n if (_this.unmounted) {\n return;\n }\n\n // Stop peeking if anything went wrong\n _this.setState({\n isPeeking: false\n });\n\n // This won't necessarily be a MatrixError, but we duck-type\n // here and say if it's got an 'errcode' key with the right value,\n // it means we can't peek.\n if (err.errcode == \"M_GUEST_ACCESS_FORBIDDEN\") {\n // This is fine: the room just isn't peekable (we assume).\n _this.setState({\n peekLoading: false\n });\n } else {\n throw err;\n }\n });\n } else if (room) {\n //viewing a previously joined room, try to lazy load members\n\n // Stop peeking because we have joined this room previously\n _MatrixClientPeg2.default.get().stopPeeking();\n this.setState({ isPeeking: false });\n }\n }\n },\n\n _shouldShowApps: function _shouldShowApps(room) {\n if (!BROWSER_SUPPORTS_SANDBOX) return false;\n\n // Check if user has previously chosen to hide the app drawer for this\n // room. If so, do not show apps\n var hideWidgetDrawer = localStorage.getItem(room.roomId + \"_hide_widget_drawer\");\n\n if (hideWidgetDrawer === \"true\") {\n return false;\n }\n\n var widgets = _WidgetEchoStore2.default.getEchoedRoomWidgets(room.roomId, _WidgetUtils2.default.getRoomWidgets(room));\n\n return widgets.length > 0 || _WidgetEchoStore2.default.roomHasPendingWidgets(room.roomId, _WidgetUtils2.default.getRoomWidgets(room));\n },\n\n componentDidMount: function componentDidMount() {\n var call = this._getCallForRoom();\n var callState = call ? call.call_state : \"ended\";\n this.setState({\n callState: callState\n });\n\n this._updateConfCallNotification();\n\n window.addEventListener('beforeunload', this.onPageUnload);\n if (this.props.resizeNotifier) {\n this.props.resizeNotifier.on(\"middlePanelResized\", this.onResize);\n }\n this.onResize();\n\n document.addEventListener(\"keydown\", this.onKeyDown);\n\n // XXX: EVIL HACK to autofocus inviting on empty rooms.\n // We use the setTimeout to avoid racing with focus_composer.\n if (this.state.room && this.state.room.getJoinedMemberCount() == 1 && this.state.room.getLiveTimeline() && this.state.room.getLiveTimeline().getEvents() && this.state.room.getLiveTimeline().getEvents().length <= 6) {\n var inviteBox = document.getElementById(\"mx_SearchableEntityList_query\");\n setTimeout(function () {\n if (inviteBox) {\n inviteBox.focus();\n }\n }, 50);\n }\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n return !_ObjectUtils2.default.shallowEqual(this.props, nextProps) || !_ObjectUtils2.default.shallowEqual(this.state, nextState);\n },\n\n componentDidUpdate: function componentDidUpdate() {\n if (this.refs.roomView) {\n var roomView = _reactDom2.default.findDOMNode(this.refs.roomView);\n if (!roomView.ondrop) {\n roomView.addEventListener('drop', this.onDrop);\n roomView.addEventListener('dragover', this.onDragOver);\n roomView.addEventListener('dragleave', this.onDragLeaveOrEnd);\n roomView.addEventListener('dragend', this.onDragLeaveOrEnd);\n }\n }\n\n // Note: We check the ref here with a flag because componentDidMount, despite\n // documentation, does not define our messagePanel ref. It looks like our spinner\n // in render() prevents the ref from being set on first mount, so we try and\n // catch the messagePanel when it does mount. Because we only want the ref once,\n // we use a boolean flag to avoid duplicate work.\n if (this.refs.messagePanel && !this.state.atEndOfLiveTimelineInit) {\n this.setState({\n atEndOfLiveTimelineInit: true,\n atEndOfLiveTimeline: this.refs.messagePanel.isAtEndOfLiveTimeline()\n });\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n // set a boolean to say we've been unmounted, which any pending\n // promises can use to throw away their results.\n //\n // (We could use isMounted, but facebook have deprecated that.)\n this.unmounted = true;\n\n // update the scroll map before we get unmounted\n if (this.state.roomId) {\n _RoomScrollStateStore2.default.setScrollState(this.state.roomId, this._getScrollState());\n }\n\n // stop tracking room changes to format permalinks\n this._stopAllPermalinkCreators();\n\n if (this.refs.roomView) {\n // disconnect the D&D event listeners from the room view. This\n // is really just for hygiene - we're going to be\n // deleted anyway, so it doesn't matter if the event listeners\n // don't get cleaned up.\n var roomView = _reactDom2.default.findDOMNode(this.refs.roomView);\n roomView.removeEventListener('drop', this.onDrop);\n roomView.removeEventListener('dragover', this.onDragOver);\n roomView.removeEventListener('dragleave', this.onDragLeaveOrEnd);\n roomView.removeEventListener('dragend', this.onDragLeaveOrEnd);\n }\n _dispatcher2.default.unregister(this.dispatcherRef);\n if (_MatrixClientPeg2.default.get()) {\n _MatrixClientPeg2.default.get().removeListener(\"Room\", this.onRoom);\n _MatrixClientPeg2.default.get().removeListener(\"Room.timeline\", this.onRoomTimeline);\n _MatrixClientPeg2.default.get().removeListener(\"Room.name\", this.onRoomName);\n _MatrixClientPeg2.default.get().removeListener(\"Room.accountData\", this.onRoomAccountData);\n _MatrixClientPeg2.default.get().removeListener(\"Room.myMembership\", this.onMyMembership);\n _MatrixClientPeg2.default.get().removeListener(\"RoomState.members\", this.onRoomStateMember);\n _MatrixClientPeg2.default.get().removeListener(\"accountData\", this.onAccountData);\n _MatrixClientPeg2.default.get().removeListener(\"crypto.keyBackupStatus\", this.onKeyBackupStatus);\n _MatrixClientPeg2.default.get().removeListener(\"deviceVerificationChanged\", this.onDeviceVerificationChanged);\n }\n\n window.removeEventListener('beforeunload', this.onPageUnload);\n if (this.props.resizeNotifier) {\n this.props.resizeNotifier.removeListener(\"middlePanelResized\", this.onResize);\n }\n\n document.removeEventListener(\"keydown\", this.onKeyDown);\n\n // Remove RoomStore listener\n if (this._roomStoreToken) {\n this._roomStoreToken.remove();\n }\n\n _WidgetEchoStore2.default.removeListener('update', this._onWidgetEchoStoreUpdate);\n\n // cancel any pending calls to the rate_limited_funcs\n this._updateRoomMembers.cancelPendingCall();\n\n // no need to do this as Dir & Settings are now overlays. It just burnt CPU.\n // console.log(\"Tinter.tint from RoomView.unmount\");\n // Tinter.tint(); // reset colourscheme\n },\n\n onPageUnload: function onPageUnload(event) {\n if (_ContentMessages2.default.sharedInstance().getCurrentUploads().length > 0) {\n return event.returnValue = (0, _languageHandler._t)(\"You seem to be uploading files, are you sure you want to quit?\");\n } else if (this._getCallForRoom() && this.state.callState !== 'ended') {\n return event.returnValue = (0, _languageHandler._t)(\"You seem to be in a call, are you sure you want to quit?\");\n }\n },\n\n\n onKeyDown: function onKeyDown(ev) {\n var handled = false;\n var ctrlCmdOnly = (0, _Keyboard.isOnlyCtrlOrCmdKeyEvent)(ev);\n\n switch (ev.keyCode) {\n case _Keyboard.KeyCode.KEY_D:\n if (ctrlCmdOnly) {\n this.onMuteAudioClick();\n handled = true;\n }\n break;\n\n case _Keyboard.KeyCode.KEY_E:\n if (ctrlCmdOnly) {\n this.onMuteVideoClick();\n handled = true;\n }\n break;\n }\n\n if (handled) {\n ev.stopPropagation();\n ev.preventDefault();\n }\n },\n\n onAction: function onAction(payload) {\n switch (payload.action) {\n case 'message_send_failed':\n case 'message_sent':\n this._checkIfAlone(this.state.room);\n break;\n case 'post_sticker_message':\n this.injectSticker(payload.data.content.url, payload.data.content.info, payload.data.description || payload.data.name);\n break;\n case 'picture_snapshot':\n _ContentMessages2.default.sharedInstance().sendContentListToRoom([payload.file], this.state.room.roomId, _MatrixClientPeg2.default.get());\n break;\n case 'notifier_enabled':\n case 'upload_started':\n case 'upload_finished':\n case 'upload_canceled':\n this.forceUpdate();\n break;\n case 'call_state':\n // don't filter out payloads for room IDs other than props.room because\n // we may be interested in the conf 1:1 room\n\n if (!payload.room_id) {\n return;\n }\n\n var call = this._getCallForRoom();\n var callState;\n\n if (call) {\n callState = call.call_state;\n } else {\n callState = \"ended\";\n }\n\n // possibly remove the conf call notification if we're now in\n // the conf\n this._updateConfCallNotification();\n\n this.setState({\n callState: callState\n });\n\n break;\n case 'appsDrawer':\n this.setState({\n showApps: payload.show\n });\n break;\n case 'reply_to_event':\n if (this.state.searchResults && payload.event.getRoomId() === this.state.roomId && !this.unmounted) {\n this.onCancelSearchClick();\n }\n break;\n }\n },\n\n onRoomTimeline: function onRoomTimeline(ev, room, toStartOfTimeline, removed, data) {\n if (this.unmounted) return;\n\n // ignore events for other rooms\n if (!room) return;\n if (!this.state.room || room.roomId != this.state.room.roomId) return;\n\n // ignore events from filtered timelines\n if (data.timeline.getTimelineSet() !== room.getUnfilteredTimelineSet()) return;\n\n if (ev.getType() === \"org.matrix.room.preview_urls\") {\n this._updatePreviewUrlVisibility(room);\n }\n\n if (ev.getType() === \"m.room.encryption\") {\n this._updateE2EStatus(room);\n }\n\n // ignore anything but real-time updates at the end of the room:\n // updates from pagination will happen when the paginate completes.\n if (toStartOfTimeline || !data || !data.liveEvent) return;\n\n // no point handling anything while we're waiting for the join to finish:\n // we'll only be showing a spinner.\n if (this.state.joining) return;\n\n if (ev.getSender() !== _MatrixClientPeg2.default.get().credentials.userId) {\n // update unread count when scrolled up\n if (!this.state.searchResults && this.state.atEndOfLiveTimeline) {\n // no change\n } else if (!(0, _shouldHideEvent2.default)(ev)) {\n this.setState(function (state, props) {\n return { numUnreadMessages: state.numUnreadMessages + 1 };\n });\n }\n }\n },\n\n onRoomName: function onRoomName(room) {\n if (this.state.room && room.roomId == this.state.room.roomId) {\n this.forceUpdate();\n }\n },\n\n onRoomRecoveryReminderDontAskAgain: function onRoomRecoveryReminderDontAskAgain() {\n // Called when the option to not ask again is set:\n // force an update to hide the recovery reminder\n this.forceUpdate();\n },\n\n onKeyBackupStatus: function onKeyBackupStatus() {\n // Key backup status changes affect whether the in-room recovery\n // reminder is displayed.\n this.forceUpdate();\n },\n\n\n canResetTimeline: function canResetTimeline() {\n if (!this.refs.messagePanel) {\n return true;\n }\n return this.refs.messagePanel.canResetTimeline();\n },\n\n // called when state.room is first initialised (either at initial load,\n // after a successful peek, or after we join the room).\n _onRoomLoaded: function _onRoomLoaded(room) {\n this._calculatePeekRules(room);\n this._updatePreviewUrlVisibility(room);\n this._loadMembersIfJoined(room);\n this._calculateRecommendedVersion(room);\n this._updateE2EStatus(room);\n this._updatePermissions(room);\n },\n\n _calculateRecommendedVersion: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(room) {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.t0 = this;\n _context.next = 3;\n return (0, _bluebird.resolve)(room.getRecommendedVersion());\n\n case 3:\n _context.t1 = _context.sent;\n _context.t2 = {\n upgradeRecommendation: _context.t1\n };\n\n _context.t0.setState.call(_context.t0, _context.t2);\n\n case 6:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function _calculateRecommendedVersion(_x) {\n return _ref.apply(this, arguments);\n }\n\n return _calculateRecommendedVersion;\n }(),\n\n _loadMembersIfJoined: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(room) {\n var cli, errorMessage;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n // lazy load members if enabled\n cli = _MatrixClientPeg2.default.get();\n\n if (!cli.hasLazyLoadMembersEnabled()) {\n _context2.next = 14;\n break;\n }\n\n if (!(room && room.getMyMembership() === 'join')) {\n _context2.next = 14;\n break;\n }\n\n _context2.prev = 3;\n _context2.next = 6;\n return (0, _bluebird.resolve)(room.loadMembersIfNeeded());\n\n case 6:\n if (!this.unmounted) {\n this.setState({ membersLoaded: true });\n }\n _context2.next = 14;\n break;\n\n case 9:\n _context2.prev = 9;\n _context2.t0 = _context2['catch'](3);\n errorMessage = 'Fetching room members for ' + room.roomId + ' failed.' + \" Room members will appear incomplete.\";\n\n console.error(errorMessage);\n console.error(_context2.t0);\n\n case 14:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this, [[3, 9]]);\n }));\n\n function _loadMembersIfJoined(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return _loadMembersIfJoined;\n }(),\n\n _calculatePeekRules: function _calculatePeekRules(room) {\n var guestAccessEvent = room.currentState.getStateEvents(\"m.room.guest_access\", \"\");\n if (guestAccessEvent && guestAccessEvent.getContent().guest_access === \"can_join\") {\n this.setState({\n guestsCanJoin: true\n });\n }\n\n var historyVisibility = room.currentState.getStateEvents(\"m.room.history_visibility\", \"\");\n if (historyVisibility && historyVisibility.getContent().history_visibility === \"world_readable\") {\n this.setState({\n canPeek: true\n });\n }\n },\n\n _updatePreviewUrlVisibility: function _updatePreviewUrlVisibility(_ref3) {\n var roomId = _ref3.roomId;\n\n // URL Previews in E2EE rooms can be a privacy leak so use a different setting which is per-room explicit\n var key = _MatrixClientPeg2.default.get().isRoomEncrypted(roomId) ? 'urlPreviewsEnabled_e2ee' : 'urlPreviewsEnabled';\n this.setState({\n showUrlPreview: _SettingsStore2.default.getValue(key, roomId)\n });\n },\n\n onRoom: function onRoom(room) {\n var _this2 = this;\n\n if (!room || room.roomId !== this.state.roomId) {\n return;\n }\n this.setState({\n room: room\n }, function () {\n _this2._onRoomLoaded(room);\n });\n },\n\n onDeviceVerificationChanged: function onDeviceVerificationChanged(userId, device) {\n var room = this.state.room;\n if (!room.currentState.getMember(userId)) {\n return;\n }\n this._updateE2EStatus(room);\n },\n\n _updateE2EStatus: function _updateE2EStatus(room) {\n var _this3 = this;\n\n if (!_MatrixClientPeg2.default.get().isRoomEncrypted(room.roomId)) {\n return;\n }\n if (!_MatrixClientPeg2.default.get().isCryptoEnabled()) {\n // If crypto is not currently enabled, we aren't tracking devices at all,\n // so we don't know what the answer is. Let's error on the safe side and show\n // a warning for this case.\n this.setState({\n e2eStatus: \"warning\"\n });\n return;\n }\n room.hasUnverifiedDevices().then(function (hasUnverifiedDevices) {\n _this3.setState({\n e2eStatus: hasUnverifiedDevices ? \"warning\" : \"verified\"\n });\n });\n },\n\n updateTint: function updateTint() {\n var room = this.state.room;\n if (!room) return;\n\n console.log(\"Tinter.tint from updateTint\");\n var colorScheme = _SettingsStore2.default.getValue(\"roomColor\", room.roomId);\n _Tinter2.default.tint(colorScheme.primary_color, colorScheme.secondary_color);\n },\n\n onAccountData: function onAccountData(event) {\n var type = event.getType();\n if ((type === \"org.matrix.preview_urls\" || type === \"im.vector.web.settings\") && this.state.room) {\n // non-e2ee url previews are stored in legacy event type `org.matrix.room.preview_urls`\n this._updatePreviewUrlVisibility(this.state.room);\n }\n },\n\n onRoomAccountData: function onRoomAccountData(event, room) {\n if (room.roomId == this.state.roomId) {\n var type = event.getType();\n if (type === \"org.matrix.room.color_scheme\") {\n var colorScheme = event.getContent();\n // XXX: we should validate the event\n console.log(\"Tinter.tint from onRoomAccountData\");\n _Tinter2.default.tint(colorScheme.primary_color, colorScheme.secondary_color);\n } else if (type === \"org.matrix.room.preview_urls\" || type === \"im.vector.web.settings\") {\n // non-e2ee url previews are stored in legacy event type `org.matrix.room.preview_urls`\n this._updatePreviewUrlVisibility(room);\n }\n }\n },\n\n onRoomStateEvents: function onRoomStateEvents(ev, state) {\n // ignore if we don't have a room yet\n if (!this.state.room || this.state.room.roomId !== state.roomId) {\n return;\n }\n\n this._updatePermissions(this.state.room);\n },\n\n onRoomStateMember: function onRoomStateMember(ev, state, member) {\n // ignore if we don't have a room yet\n if (!this.state.room) {\n return;\n }\n\n // ignore members in other rooms\n if (member.roomId !== this.state.room.roomId) {\n return;\n }\n\n this._updateRoomMembers(member);\n },\n\n onMyMembership: function onMyMembership(room, membership, oldMembership) {\n if (room.roomId === this.state.roomId) {\n this.forceUpdate();\n this._loadMembersIfJoined(room);\n this._updatePermissions(room);\n }\n },\n\n _updatePermissions: function _updatePermissions(room) {\n if (room) {\n var me = _MatrixClientPeg2.default.get().getUserId();\n var canReact = room.getMyMembership() === \"join\" && room.currentState.maySendEvent(\"m.reaction\", me);\n var canReply = room.maySendMessage();\n\n this.setState({ canReact: canReact, canReply: canReply });\n }\n },\n\n // rate limited because a power level change will emit an event for every\n // member in the room.\n _updateRoomMembers: new _ratelimitedfunc2.default(function (dueToMember) {\n // a member state changed in this room\n // refresh the conf call notification state\n this._updateConfCallNotification();\n this._updateDMState();\n\n var memberCountInfluence = 0;\n if (dueToMember && dueToMember.membership === \"invite\" && this.state.room.getInvitedMemberCount() === 0) {\n // A member got invited, but the room hasn't detected that change yet. Influence the member\n // count by 1 to counteract this.\n memberCountInfluence = 1;\n }\n this._checkIfAlone(this.state.room, memberCountInfluence);\n\n this._updateE2EStatus(this.state.room);\n }, 500),\n\n _checkIfAlone: function _checkIfAlone(room, countInfluence) {\n var warnedAboutLonelyRoom = false;\n if (localStorage) {\n warnedAboutLonelyRoom = localStorage.getItem('mx_user_alone_warned_' + this.state.room.roomId);\n }\n if (warnedAboutLonelyRoom) {\n if (this.state.isAlone) this.setState({ isAlone: false });\n return;\n }\n\n var joinedOrInvitedMemberCount = room.getJoinedMemberCount() + room.getInvitedMemberCount();\n if (countInfluence) joinedOrInvitedMemberCount += countInfluence;\n this.setState({ isAlone: joinedOrInvitedMemberCount === 1 });\n },\n\n _updateConfCallNotification: function _updateConfCallNotification() {\n var room = this.state.room;\n if (!room || !this.props.ConferenceHandler) {\n return;\n }\n var confMember = room.getMember(this.props.ConferenceHandler.getConferenceUserIdForRoom(room.roomId));\n\n if (!confMember) {\n return;\n }\n var confCall = this.props.ConferenceHandler.getConferenceCallForRoom(confMember.roomId);\n\n // A conf call notification should be displayed if there is an ongoing\n // conf call but this cilent isn't a part of it.\n this.setState({\n displayConfCallNotification: (!confCall || confCall.call_state === \"ended\") && confMember.membership === \"join\"\n });\n },\n\n _updateDMState: function _updateDMState() {\n var room = this.state.room;\n if (room.getMyMembership() != \"join\") {\n return;\n }\n var dmInviter = room.getDMInviter();\n if (dmInviter) {\n Rooms.setDMRoom(room.roomId, dmInviter);\n }\n },\n\n\n onSearchResultsFillRequest: function onSearchResultsFillRequest(backwards) {\n if (!backwards) {\n return _bluebird2.default.resolve(false);\n }\n\n if (this.state.searchResults.next_batch) {\n debuglog(\"requesting more search results\");\n var searchPromise = _MatrixClientPeg2.default.get().backPaginateRoomEventsSearch(this.state.searchResults);\n return this._handleSearchResult(searchPromise);\n } else {\n debuglog(\"no more search results\");\n return _bluebird2.default.resolve(false);\n }\n },\n\n onInviteButtonClick: function onInviteButtonClick() {\n // call AddressPickerDialog\n _dispatcher2.default.dispatch({\n action: 'view_invite',\n roomId: this.state.room.roomId\n });\n this.setState({ isAlone: false }); // there's a good chance they'll invite someone\n },\n\n onStopAloneWarningClick: function onStopAloneWarningClick() {\n if (localStorage) {\n localStorage.setItem('mx_user_alone_warned_' + this.state.room.roomId, true);\n }\n this.setState({ isAlone: false });\n },\n\n onJoinButtonClicked: function onJoinButtonClicked(ev) {\n var _this4 = this;\n\n var cli = _MatrixClientPeg2.default.get();\n\n // If the user is a ROU, allow them to transition to a PWLU\n if (cli && cli.isGuest()) {\n // Join this room once the user has registered and logged in\n // (If we failed to peek, we may not have a valid room object.)\n _dispatcher2.default.dispatch({\n action: 'do_after_sync_prepared',\n deferred_action: {\n action: 'view_room',\n room_id: this._getRoomId()\n }\n });\n\n // Don't peek whilst registering otherwise getPendingEventList complains\n // Do this by indicating our intention to join\n\n // XXX: ILAG is disabled for now,\n // see https://github.com/vector-im/riot-web/issues/8222\n _dispatcher2.default.dispatch({ action: 'require_registration' });\n // dis.dispatch({\n // action: 'will_join',\n // });\n\n // const SetMxIdDialog = sdk.getComponent('views.dialogs.SetMxIdDialog');\n // const close = Modal.createTrackedDialog('Set MXID', '', SetMxIdDialog, {\n // homeserverUrl: cli.getHomeserverUrl(),\n // onFinished: (submitted, credentials) => {\n // if (submitted) {\n // this.props.onRegistered(credentials);\n // } else {\n // dis.dispatch({\n // action: 'cancel_after_sync_prepared',\n // });\n // dis.dispatch({\n // action: 'cancel_join',\n // });\n // }\n // },\n // onDifferentServerClicked: (ev) => {\n // dis.dispatch({action: 'start_registration'});\n // close();\n // },\n // onLoginClick: (ev) => {\n // dis.dispatch({action: 'start_login'});\n // close();\n // },\n // }).close;\n // return;\n } else {\n _bluebird2.default.resolve().then(function () {\n var signUrl = _this4.props.thirdPartyInvite ? _this4.props.thirdPartyInvite.inviteSignUrl : undefined;\n _dispatcher2.default.dispatch({\n action: 'join_room',\n opts: { inviteSignUrl: signUrl, viaServers: _this4.props.viaServers }\n });\n return _bluebird2.default.resolve();\n });\n }\n },\n\n onMessageListScroll: function onMessageListScroll(ev) {\n if (this.refs.messagePanel.isAtEndOfLiveTimeline()) {\n this.setState({\n numUnreadMessages: 0,\n atEndOfLiveTimeline: true\n });\n } else {\n this.setState({\n atEndOfLiveTimeline: false\n });\n }\n this._updateTopUnreadMessagesBar();\n },\n\n onDragOver: function onDragOver(ev) {\n ev.stopPropagation();\n ev.preventDefault();\n\n ev.dataTransfer.dropEffect = 'none';\n\n var items = [].concat((0, _toConsumableArray3.default)(ev.dataTransfer.items));\n if (items.length >= 1) {\n var isDraggingFiles = items.every(function (item) {\n return item.kind == 'file';\n });\n\n if (isDraggingFiles) {\n this.setState({ draggingFile: true });\n ev.dataTransfer.dropEffect = 'copy';\n }\n }\n },\n\n onDrop: function onDrop(ev) {\n ev.stopPropagation();\n ev.preventDefault();\n _ContentMessages2.default.sharedInstance().sendContentListToRoom(ev.dataTransfer.files, this.state.room.roomId, _MatrixClientPeg2.default.get());\n this.setState({ draggingFile: false });\n _dispatcher2.default.dispatch({ action: 'focus_composer' });\n },\n\n onDragLeaveOrEnd: function onDragLeaveOrEnd(ev) {\n ev.stopPropagation();\n ev.preventDefault();\n this.setState({ draggingFile: false });\n },\n\n injectSticker: function injectSticker(url, info, text) {\n if (_MatrixClientPeg2.default.get().isGuest()) {\n _dispatcher2.default.dispatch({ action: 'require_registration' });\n return;\n }\n\n _ContentMessages2.default.sharedInstance().sendStickerContentToRoom(url, this.state.room.roomId, info, text, _MatrixClientPeg2.default.get()).done(undefined, function (error) {\n if (error.name === \"UnknownDeviceError\") {\n // Let the staus bar handle this\n return;\n }\n });\n },\n\n onSearch: function onSearch(term, scope) {\n this.setState({\n searchTerm: term,\n searchScope: scope,\n searchResults: {},\n searchHighlights: []\n });\n\n // if we already have a search panel, we need to tell it to forget\n // about its scroll state.\n if (this.refs.searchResultsPanel) {\n this.refs.searchResultsPanel.resetScrollState();\n }\n\n // make sure that we don't end up showing results from\n // an aborted search by keeping a unique id.\n //\n // todo: should cancel any previous search requests.\n this.searchId = new Date().getTime();\n\n var filter = void 0;\n if (scope === \"Room\") {\n filter = {\n // XXX: it's unintuitive that the filter for searching doesn't have the same shape as the v2 filter API :(\n rooms: [this.state.room.roomId]\n };\n }\n\n debuglog(\"sending search request\");\n\n var searchPromise = _MatrixClientPeg2.default.get().searchRoomEvents({\n filter: filter,\n term: term\n });\n this._handleSearchResult(searchPromise).done();\n },\n\n _handleSearchResult: function _handleSearchResult(searchPromise) {\n var self = this;\n\n // keep a record of the current search id, so that if the search terms\n // change before we get a response, we can ignore the results.\n var localSearchId = this.searchId;\n\n this.setState({\n searchInProgress: true\n });\n\n return searchPromise.then(function (results) {\n debuglog(\"search complete\");\n if (self.unmounted || !self.state.searching || self.searchId != localSearchId) {\n console.error(\"Discarding stale search results\");\n return;\n }\n\n // postgres on synapse returns us precise details of the strings\n // which actually got matched for highlighting.\n //\n // In either case, we want to highlight the literal search term\n // whether it was used by the search engine or not.\n\n var highlights = results.highlights;\n if (highlights.indexOf(self.state.searchTerm) < 0) {\n highlights = highlights.concat(self.state.searchTerm);\n }\n\n // For overlapping highlights,\n // favour longer (more specific) terms first\n highlights = highlights.sort(function (a, b) {\n return b.length - a.length;\n });\n\n self.setState({\n searchHighlights: highlights,\n searchResults: results\n });\n }, function (error) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Search failed: \" + error);\n _Modal2.default.createTrackedDialog('Search failed', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Search failed\"),\n description: error && error.message ? error.message : (0, _languageHandler._t)(\"Server may be unavailable, overloaded, or search timed out :(\")\n });\n }).finally(function () {\n self.setState({\n searchInProgress: false\n });\n });\n },\n\n getSearchResultTiles: function getSearchResultTiles() {\n var _this5 = this;\n\n var EventTile = _index2.default.getComponent('rooms.EventTile');\n var SearchResultTile = _index2.default.getComponent('rooms.SearchResultTile');\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n\n var cli = _MatrixClientPeg2.default.get();\n\n // XXX: todo: merge overlapping results somehow?\n // XXX: why doesn't searching on name work?\n\n var ret = [];\n\n if (this.state.searchInProgress) {\n ret.push(_react2.default.createElement(\n 'li',\n { key: 'search-spinner' },\n _react2.default.createElement(Spinner, null)\n ));\n }\n\n if (!this.state.searchResults.next_batch) {\n if (this.state.searchResults.results.length == 0) {\n ret.push(_react2.default.createElement(\n 'li',\n { key: 'search-top-marker' },\n _react2.default.createElement(\n 'h2',\n { className: 'mx_RoomView_topMarker' },\n (0, _languageHandler._t)(\"No results\")\n )\n ));\n } else {\n ret.push(_react2.default.createElement(\n 'li',\n { key: 'search-top-marker' },\n _react2.default.createElement(\n 'h2',\n { className: 'mx_RoomView_topMarker' },\n (0, _languageHandler._t)(\"No more results\")\n )\n ));\n }\n }\n\n // once dynamic content in the search results load, make the scrollPanel check\n // the scroll offsets.\n var onHeightChanged = function onHeightChanged() {\n var scrollPanel = _this5.refs.searchResultsPanel;\n if (scrollPanel) {\n scrollPanel.checkScroll();\n }\n };\n\n var lastRoomId = void 0;\n\n for (var i = this.state.searchResults.results.length - 1; i >= 0; i--) {\n var result = this.state.searchResults.results[i];\n\n var mxEv = result.context.getEvent();\n var roomId = mxEv.getRoomId();\n var room = cli.getRoom(roomId);\n\n if (!EventTile.haveTileForEvent(mxEv)) {\n // XXX: can this ever happen? It will make the result count\n // not match the displayed count.\n continue;\n }\n\n if (this.state.searchScope === 'All') {\n if (roomId != lastRoomId) {\n\n // XXX: if we've left the room, we might not know about\n // it. We should tell the js sdk to go and find out about\n // it. But that's not an issue currently, as synapse only\n // returns results for rooms we're joined to.\n var roomName = room ? room.name : (0, _languageHandler._t)(\"Unknown room %(roomId)s\", { roomId: roomId });\n\n ret.push(_react2.default.createElement(\n 'li',\n { key: mxEv.getId() + \"-room\" },\n _react2.default.createElement(\n 'h2',\n null,\n (0, _languageHandler._t)(\"Room\"),\n ': ',\n roomName\n )\n ));\n lastRoomId = roomId;\n }\n }\n\n var resultLink = \"#/room/\" + roomId + \"/\" + mxEv.getId();\n\n ret.push(_react2.default.createElement(SearchResultTile, { key: mxEv.getId(),\n searchResult: result,\n searchHighlights: this.state.searchHighlights,\n resultLink: resultLink,\n permalinkCreator: this._getPermalinkCreatorForRoom(room),\n onHeightChanged: onHeightChanged }));\n }\n return ret;\n },\n\n onPinnedClick: function onPinnedClick() {\n var nowShowingPinned = !this.state.showingPinned;\n var roomId = this.state.room.roomId;\n this.setState({ showingPinned: nowShowingPinned, searching: false });\n _SettingsStore2.default.setValue(\"PinnedEvents.isOpen\", roomId, _SettingsStore.SettingLevel.ROOM_DEVICE, nowShowingPinned);\n },\n\n onSettingsClick: function onSettingsClick() {\n _dispatcher2.default.dispatch({ action: 'open_room_settings' });\n },\n\n onCancelClick: function onCancelClick() {\n console.log(\"updateTint from onCancelClick\");\n this.updateTint();\n if (this.state.forwardingEvent) {\n _dispatcher2.default.dispatch({\n action: 'forward_event',\n event: null\n });\n }\n _dispatcher2.default.dispatch({ action: 'focus_composer' });\n },\n\n onLeaveClick: function onLeaveClick() {\n _dispatcher2.default.dispatch({\n action: 'leave_room',\n room_id: this.state.room.roomId\n });\n },\n\n onForgetClick: function onForgetClick() {\n _MatrixClientPeg2.default.get().forget(this.state.room.roomId).done(function () {\n _dispatcher2.default.dispatch({ action: 'view_next_room' });\n }, function (err) {\n var errCode = err.errcode || (0, _languageHandler._t)(\"unknown error code\");\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to forget room', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Failed to forget room %(errCode)s\", { errCode: errCode })\n });\n });\n },\n\n onRejectButtonClicked: function onRejectButtonClicked(ev) {\n var self = this;\n this.setState({\n rejecting: true\n });\n _MatrixClientPeg2.default.get().leave(this.state.roomId).done(function () {\n _dispatcher2.default.dispatch({ action: 'view_next_room' });\n self.setState({\n rejecting: false\n });\n }, function (error) {\n console.error(\"Failed to reject invite: %s\", error);\n\n var msg = error.message ? error.message : (0, _stringify2.default)(error);\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to reject invite', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to reject invite\"),\n description: msg\n });\n\n self.setState({\n rejecting: false,\n rejectError: error\n });\n });\n },\n\n onRejectThreepidInviteButtonClicked: function onRejectThreepidInviteButtonClicked(ev) {\n // We can reject 3pid invites in the same way that we accept them,\n // using /leave rather than /join. In the short term though, we\n // just ignore them.\n // https://github.com/vector-im/vector-web/issues/1134\n _dispatcher2.default.dispatch({\n action: 'view_room_directory'\n });\n },\n\n onSearchClick: function onSearchClick() {\n this.setState({\n searching: !this.state.searching,\n showingPinned: false\n });\n },\n\n onCancelSearchClick: function onCancelSearchClick() {\n this.setState({\n searching: false,\n searchResults: null\n });\n },\n\n // jump down to the bottom of this room, where new events are arriving\n jumpToLiveTimeline: function jumpToLiveTimeline() {\n this.refs.messagePanel.jumpToLiveTimeline();\n _dispatcher2.default.dispatch({ action: 'focus_composer' });\n },\n\n // jump up to wherever our read marker is\n jumpToReadMarker: function jumpToReadMarker() {\n this.refs.messagePanel.jumpToReadMarker();\n },\n\n // update the read marker to match the read-receipt\n forgetReadMarker: function forgetReadMarker(ev) {\n ev.stopPropagation();\n this.refs.messagePanel.forgetReadMarker();\n },\n\n // decide whether or not the top 'unread messages' bar should be shown\n _updateTopUnreadMessagesBar: function _updateTopUnreadMessagesBar() {\n if (!this.refs.messagePanel) {\n return;\n }\n\n var showBar = this.refs.messagePanel.canJumpToReadMarker();\n if (this.state.showTopUnreadMessagesBar != showBar) {\n this.setState({ showTopUnreadMessagesBar: showBar });\n }\n },\n\n // get the current scroll position of the room, so that it can be\n // restored when we switch back to it.\n //\n _getScrollState: function _getScrollState() {\n var messagePanel = this.refs.messagePanel;\n if (!messagePanel) return null;\n\n // if we're following the live timeline, we want to return null; that\n // means that, if we switch back, we will jump to the read-up-to mark.\n //\n // That should be more intuitive than slavishly preserving the current\n // scroll state, in the case where the room advances in the meantime\n // (particularly in the case that the user reads some stuff on another\n // device).\n //\n if (this.state.atEndOfLiveTimeline) {\n return null;\n }\n\n var scrollState = messagePanel.getScrollState();\n\n // getScrollState on TimelinePanel *may* return null, so guard against that\n if (!scrollState || scrollState.stuckAtBottom) {\n // we don't really expect to be in this state, but it will\n // occasionally happen when no scroll state has been set on the\n // messagePanel (ie, we didn't have an initial event (so it's\n // probably a new room), there has been no user-initiated scroll, and\n // no read-receipts have arrived to update the scroll position).\n //\n // Return null, which will cause us to scroll to last unread on\n // reload.\n return null;\n }\n\n return {\n focussedEvent: scrollState.trackedScrollToken,\n pixelOffset: scrollState.pixelOffset\n };\n },\n\n onResize: function onResize() {\n // It seems flexbox doesn't give us a way to constrain the auxPanel height to have\n // a minimum of the height of the video element, whilst also capping it from pushing out the page\n // so we have to do it via JS instead. In this implementation we cap the height by putting\n // a maxHeight on the underlying remote video tag.\n\n // header + footer + status + give us at least 120px of scrollback at all times.\n var auxPanelMaxHeight = window.innerHeight - (83 + // height of RoomHeader\n 36 + // height of the status area\n 72 + // minimum height of the message compmoser\n 120); // amount of desired scrollback\n\n // XXX: this is a bit of a hack and might possibly cause the video to push out the page anyway\n // but it's better than the video going missing entirely\n if (auxPanelMaxHeight < 50) auxPanelMaxHeight = 50;\n\n this.setState({ auxPanelMaxHeight: auxPanelMaxHeight });\n },\n\n onFullscreenClick: function onFullscreenClick() {\n _dispatcher2.default.dispatch({\n action: 'video_fullscreen',\n fullscreen: true\n }, true);\n },\n\n onMuteAudioClick: function onMuteAudioClick() {\n var call = this._getCallForRoom();\n if (!call) {\n return;\n }\n var newState = !call.isMicrophoneMuted();\n call.setMicrophoneMuted(newState);\n this.forceUpdate(); // TODO: just update the voip buttons\n },\n\n onMuteVideoClick: function onMuteVideoClick() {\n var call = this._getCallForRoom();\n if (!call) {\n return;\n }\n var newState = !call.isLocalVideoMuted();\n call.setLocalVideoMuted(newState);\n this.forceUpdate(); // TODO: just update the voip buttons\n },\n\n onStatusBarVisible: function onStatusBarVisible() {\n if (this.unmounted) return;\n this.setState({\n statusBarVisible: true\n });\n },\n\n onStatusBarHidden: function onStatusBarHidden() {\n // This is currently not desired as it is annoying if it keeps expanding and collapsing\n if (this.unmounted) return;\n this.setState({\n statusBarVisible: false\n });\n },\n\n /**\n * called by the parent component when PageUp/Down/etc is pressed.\n *\n * We pass it down to the scroll panel.\n */\n handleScrollKey: function handleScrollKey(ev) {\n var panel = void 0;\n if (this.refs.searchResultsPanel) {\n panel = this.refs.searchResultsPanel;\n } else if (this.refs.messagePanel) {\n panel = this.refs.messagePanel;\n }\n\n if (panel) {\n panel.handleScrollKey(ev);\n }\n },\n\n /**\n * get any current call for this room\n */\n _getCallForRoom: function _getCallForRoom() {\n if (!this.state.room) {\n return null;\n }\n return _CallHandler2.default.getCallForRoom(this.state.room.roomId);\n },\n\n // this has to be a proper method rather than an unnamed function,\n // otherwise react calls it with null on each update.\n _gatherTimelinePanelRef: function _gatherTimelinePanelRef(r) {\n this.refs.messagePanel = r;\n if (r) {\n console.log(\"updateTint from RoomView._gatherTimelinePanelRef\");\n this.updateTint();\n }\n },\n\n _getOldRoom: function _getOldRoom() {\n var createEvent = this.state.room.currentState.getStateEvents(\"m.room.create\", \"\");\n if (!createEvent || !createEvent.getContent()['predecessor']) return null;\n\n return _MatrixClientPeg2.default.get().getRoom(createEvent.getContent()['predecessor']['room_id']);\n },\n\n _getHiddenHighlightCount: function _getHiddenHighlightCount() {\n var oldRoom = this._getOldRoom();\n if (!oldRoom) return 0;\n return oldRoom.getUnreadNotificationCount('highlight');\n },\n\n _onHiddenHighlightsClick: function _onHiddenHighlightsClick() {\n var oldRoom = this._getOldRoom();\n if (!oldRoom) return;\n _dispatcher2.default.dispatch({ action: \"view_room\", room_id: oldRoom.roomId });\n },\n\n render: function render() {\n var RoomHeader = _index2.default.getComponent('rooms.RoomHeader');\n var ForwardMessage = _index2.default.getComponent(\"rooms.ForwardMessage\");\n var AuxPanel = _index2.default.getComponent(\"rooms.AuxPanel\");\n var SearchBar = _index2.default.getComponent(\"rooms.SearchBar\");\n var PinnedEventsPanel = _index2.default.getComponent(\"rooms.PinnedEventsPanel\");\n var ScrollPanel = _index2.default.getComponent(\"structures.ScrollPanel\");\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n var RoomPreviewBar = _index2.default.getComponent(\"rooms.RoomPreviewBar\");\n var TimelinePanel = _index2.default.getComponent(\"structures.TimelinePanel\");\n var RoomUpgradeWarningBar = _index2.default.getComponent(\"rooms.RoomUpgradeWarningBar\");\n var RoomRecoveryReminder = _index2.default.getComponent(\"rooms.RoomRecoveryReminder\");\n var ErrorBoundary = _index2.default.getComponent(\"elements.ErrorBoundary\");\n\n if (!this.state.room) {\n var loading = this.state.roomLoading || this.state.peekLoading;\n if (loading) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomView' },\n _react2.default.createElement(\n ErrorBoundary,\n null,\n _react2.default.createElement(RoomPreviewBar, {\n canPreview: false,\n previewLoading: this.state.peekLoading,\n error: this.state.roomLoadError,\n loading: loading,\n joining: this.state.joining,\n oobData: this.props.oobData\n })\n )\n );\n } else {\n var inviterName = undefined;\n if (this.props.oobData) {\n inviterName = this.props.oobData.inviterName;\n }\n var invitedEmail = undefined;\n if (this.props.thirdPartyInvite) {\n invitedEmail = this.props.thirdPartyInvite.invitedEmail;\n }\n\n // We have no room object for this room, only the ID.\n // We've got to this room by following a link, possibly a third party invite.\n var roomAlias = this.state.roomAlias;\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomView' },\n _react2.default.createElement(\n ErrorBoundary,\n null,\n _react2.default.createElement(RoomPreviewBar, { onJoinClick: this.onJoinButtonClicked,\n onForgetClick: this.onForgetClick,\n onRejectClick: this.onRejectThreepidInviteButtonClicked,\n canPreview: false, error: this.state.roomLoadError,\n roomAlias: roomAlias,\n joining: this.state.joining,\n inviterName: inviterName,\n invitedEmail: invitedEmail,\n oobData: this.props.oobData,\n signUrl: this.props.thirdPartyInvite ? this.props.thirdPartyInvite.inviteSignUrl : null,\n room: this.state.room\n })\n )\n );\n }\n }\n\n var myMembership = this.state.room.getMyMembership();\n if (myMembership == 'invite') {\n if (this.state.joining || this.state.rejecting) {\n return _react2.default.createElement(\n ErrorBoundary,\n null,\n _react2.default.createElement(RoomPreviewBar, {\n canPreview: false,\n error: this.state.roomLoadError,\n joining: this.state.joining,\n rejecting: this.state.rejecting\n })\n );\n } else {\n var myUserId = _MatrixClientPeg2.default.get().credentials.userId;\n var myMember = this.state.room.getMember(myUserId);\n var inviteEvent = myMember.events.member;\n var inviterName = inviteEvent.sender ? inviteEvent.sender.name : inviteEvent.getSender();\n\n // We deliberately don't try to peek into invites, even if we have permission to peek\n // as they could be a spam vector.\n // XXX: in future we could give the option of a 'Preview' button which lets them view anyway.\n\n // We have a regular invite for this room.\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomView' },\n _react2.default.createElement(\n ErrorBoundary,\n null,\n _react2.default.createElement(RoomPreviewBar, { onJoinClick: this.onJoinButtonClicked,\n onForgetClick: this.onForgetClick,\n onRejectClick: this.onRejectButtonClicked,\n inviterName: inviterName,\n canPreview: false,\n joining: this.state.joining,\n room: this.state.room\n })\n )\n );\n }\n }\n\n // We have successfully loaded this room, and are not previewing.\n // Display the \"normal\" room view.\n\n var call = this._getCallForRoom();\n var inCall = false;\n if (call && this.state.callState !== 'ended' && this.state.callState !== 'ringing') {\n inCall = true;\n }\n\n var scrollheader_classes = (0, _classnames2.default)({\n mx_RoomView_scrollheader: true\n });\n\n var statusBar = void 0;\n var isStatusAreaExpanded = true;\n\n if (_ContentMessages2.default.sharedInstance().getCurrentUploads().length > 0) {\n var UploadBar = _index2.default.getComponent('structures.UploadBar');\n statusBar = _react2.default.createElement(UploadBar, { room: this.state.room });\n } else if (!this.state.searchResults) {\n var RoomStatusBar = _index2.default.getComponent('structures.RoomStatusBar');\n isStatusAreaExpanded = this.state.statusBarVisible;\n statusBar = _react2.default.createElement(RoomStatusBar, {\n room: this.state.room,\n sentMessageAndIsAlone: this.state.isAlone,\n hasActiveCall: inCall,\n isPeeking: myMembership !== \"join\",\n onInviteClick: this.onInviteButtonClick,\n onStopWarningClick: this.onStopAloneWarningClick,\n onVisible: this.onStatusBarVisible,\n onHidden: this.onStatusBarHidden\n });\n }\n\n var roomVersionRecommendation = this.state.upgradeRecommendation;\n var showRoomUpgradeBar = roomVersionRecommendation && roomVersionRecommendation.needsUpgrade && this.state.room.userMayUpgradeRoom(_MatrixClientPeg2.default.get().credentials.userId);\n\n var showRoomRecoveryReminder = _SettingsStore2.default.getValue(\"showRoomRecoveryReminder\") && _MatrixClientPeg2.default.get().isRoomEncrypted(this.state.room.roomId) && !_MatrixClientPeg2.default.get().getKeyBackupEnabled();\n\n var hiddenHighlightCount = this._getHiddenHighlightCount();\n\n var aux = null;\n var previewBar = void 0;\n var hideCancel = false;\n var hideRightPanel = false;\n if (this.state.forwardingEvent !== null) {\n aux = _react2.default.createElement(ForwardMessage, { onCancelClick: this.onCancelClick });\n } else if (this.state.searching) {\n hideCancel = true; // has own cancel\n aux = _react2.default.createElement(SearchBar, { ref: 'search_bar', searchInProgress: this.state.searchInProgress, onCancelClick: this.onCancelSearchClick, onSearch: this.onSearch });\n } else if (showRoomUpgradeBar) {\n aux = _react2.default.createElement(RoomUpgradeWarningBar, { room: this.state.room, recommendation: roomVersionRecommendation });\n hideCancel = true;\n } else if (showRoomRecoveryReminder) {\n aux = _react2.default.createElement(RoomRecoveryReminder, { onDontAskAgainSet: this.onRoomRecoveryReminderDontAskAgain });\n hideCancel = true;\n } else if (this.state.showingPinned) {\n hideCancel = true; // has own cancel\n aux = _react2.default.createElement(PinnedEventsPanel, { room: this.state.room, onCancelClick: this.onPinnedClick });\n } else if (myMembership !== \"join\") {\n // We do have a room object for this room, but we're not currently in it.\n // We may have a 3rd party invite to it.\n var inviterName = undefined;\n if (this.props.oobData) {\n inviterName = this.props.oobData.inviterName;\n }\n var invitedEmail = undefined;\n if (this.props.thirdPartyInvite) {\n invitedEmail = this.props.thirdPartyInvite.invitedEmail;\n }\n hideCancel = true;\n previewBar = _react2.default.createElement(RoomPreviewBar, { onJoinClick: this.onJoinButtonClicked,\n onForgetClick: this.onForgetClick,\n onRejectClick: this.onRejectThreepidInviteButtonClicked,\n joining: this.state.joining,\n inviterName: inviterName,\n invitedEmail: invitedEmail,\n oobData: this.props.oobData,\n canPreview: this.state.canPeek,\n room: this.state.room\n });\n if (!this.state.canPeek) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomView' },\n previewBar\n );\n } else {\n hideRightPanel = true;\n }\n } else if (hiddenHighlightCount > 0) {\n aux = _react2.default.createElement(\n _AccessibleButton2.default,\n { element: 'div', className: 'mx_RoomView_auxPanel_hiddenHighlights',\n onClick: this._onHiddenHighlightsClick },\n (0, _languageHandler._t)(\"You have %(count)s unread notifications in a prior version of this room.\", { count: hiddenHighlightCount })\n );\n }\n\n var auxPanel = _react2.default.createElement(\n AuxPanel,\n { ref: 'auxPanel', room: this.state.room,\n fullHeight: false,\n userId: _MatrixClientPeg2.default.get().credentials.userId,\n conferenceHandler: this.props.ConferenceHandler,\n draggingFile: this.state.draggingFile,\n displayConfCallNotification: this.state.displayConfCallNotification,\n maxHeight: this.state.auxPanelMaxHeight,\n showApps: this.state.showApps,\n hideAppsDrawer: false },\n aux\n );\n\n var messageComposer = void 0;var searchInfo = void 0;\n var canSpeak =\n // joined and not showing search results\n myMembership === 'join' && !this.state.searchResults;\n if (canSpeak) {\n if (_SettingsStore2.default.isFeatureEnabled(\"feature_cider_composer\")) {\n var MessageComposer = _index2.default.getComponent('rooms.MessageComposer');\n messageComposer = _react2.default.createElement(MessageComposer, {\n room: this.state.room,\n callState: this.state.callState,\n disabled: this.props.disabled,\n showApps: this.state.showApps,\n e2eStatus: this.state.e2eStatus,\n permalinkCreator: this._getPermalinkCreatorForRoom(this.state.room)\n });\n } else {\n var SlateMessageComposer = _index2.default.getComponent('rooms.SlateMessageComposer');\n messageComposer = _react2.default.createElement(SlateMessageComposer, {\n room: this.state.room,\n callState: this.state.callState,\n disabled: this.props.disabled,\n showApps: this.state.showApps,\n e2eStatus: this.state.e2eStatus,\n permalinkCreator: this._getPermalinkCreatorForRoom(this.state.room)\n });\n }\n }\n\n // TODO: Why aren't we storing the term/scope/count in this format\n // in this.state if this is what RoomHeader desires?\n if (this.state.searchResults) {\n searchInfo = {\n searchTerm: this.state.searchTerm,\n searchScope: this.state.searchScope,\n searchCount: this.state.searchResults.count\n };\n }\n\n if (inCall) {\n var zoomButton = void 0;var voiceMuteButton = void 0;var videoMuteButton = void 0;\n\n if (call.type === \"video\") {\n zoomButton = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomView_voipButton', onClick: this.onFullscreenClick, title: (0, _languageHandler._t)(\"Fill screen\") },\n _react2.default.createElement(TintableSvg, { src: require(\"../../../res/img/fullscreen.svg\"), width: '29', height: '22', style: { marginTop: 1, marginRight: 4 } })\n );\n\n videoMuteButton = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomView_voipButton', onClick: this.onMuteVideoClick },\n _react2.default.createElement(TintableSvg, { src: call.isLocalVideoMuted() ? require(\"../../../res/img/video-unmute.svg\") : require(\"../../../res/img/video-mute.svg\"),\n alt: call.isLocalVideoMuted() ? (0, _languageHandler._t)(\"Click to unmute video\") : (0, _languageHandler._t)(\"Click to mute video\"),\n width: '31', height: '27' })\n );\n }\n voiceMuteButton = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomView_voipButton', onClick: this.onMuteAudioClick },\n _react2.default.createElement(TintableSvg, { src: call.isMicrophoneMuted() ? require(\"../../../res/img/voice-unmute.svg\") : require(\"../../../res/img/voice-mute.svg\"),\n alt: call.isMicrophoneMuted() ? (0, _languageHandler._t)(\"Click to unmute audio\") : (0, _languageHandler._t)(\"Click to mute audio\"),\n width: '21', height: '26' })\n );\n\n // wrap the existing status bar into a 'callStatusBar' which adds more knobs.\n statusBar = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomView_callStatusBar' },\n voiceMuteButton,\n videoMuteButton,\n zoomButton,\n statusBar,\n _react2.default.createElement(TintableSvg, { className: 'mx_RoomView_voipChevron', src: require(\"../../../res/img/voip-chevron.svg\"), width: '22', height: '17' })\n );\n }\n\n // if we have search results, we keep the messagepanel (so that it preserves its\n // scroll state), but hide it.\n var searchResultsPanel = void 0;\n var hideMessagePanel = false;\n\n if (this.state.searchResults) {\n // show searching spinner\n if (this.state.searchResults.results === undefined) {\n searchResultsPanel = _react2.default.createElement('div', { className: 'mx_RoomView_messagePanel mx_RoomView_messagePanelSearchSpinner' });\n } else {\n searchResultsPanel = _react2.default.createElement(\n ScrollPanel,\n { ref: 'searchResultsPanel',\n className: 'mx_RoomView_messagePanel mx_RoomView_searchResultsPanel',\n onFillRequest: this.onSearchResultsFillRequest,\n resizeNotifier: this.props.resizeNotifier\n },\n _react2.default.createElement('li', { className: scrollheader_classes }),\n this.getSearchResultTiles()\n );\n }\n hideMessagePanel = true;\n }\n\n var shouldHighlight = this.state.isInitialEventHighlighted;\n var highlightedEventId = null;\n if (this.state.forwardingEvent) {\n highlightedEventId = this.state.forwardingEvent.getId();\n } else if (shouldHighlight) {\n highlightedEventId = this.state.initialEventId;\n }\n\n // console.log(\"ShowUrlPreview for %s is %s\", this.state.room.roomId, this.state.showUrlPreview);\n var messagePanel = _react2.default.createElement(TimelinePanel, { ref: this._gatherTimelinePanelRef,\n timelineSet: this.state.room.getUnfilteredTimelineSet(),\n showReadReceipts: _SettingsStore2.default.getValue('showReadReceipts'),\n manageReadReceipts: !this.state.isPeeking,\n manageReadMarkers: !this.state.isPeeking,\n hidden: hideMessagePanel,\n highlightedEventId: highlightedEventId,\n eventId: this.state.initialEventId,\n eventPixelOffset: this.state.initialEventPixelOffset,\n onScroll: this.onMessageListScroll,\n onReadMarkerUpdated: this._updateTopUnreadMessagesBar,\n showUrlPreview: this.state.showUrlPreview,\n className: 'mx_RoomView_messagePanel',\n membersLoaded: this.state.membersLoaded,\n permalinkCreator: this._getPermalinkCreatorForRoom(this.state.room),\n resizeNotifier: this.props.resizeNotifier,\n showReactions: true\n });\n\n var topUnreadMessagesBar = null;\n if (this.state.showTopUnreadMessagesBar) {\n var TopUnreadMessagesBar = _index2.default.getComponent('rooms.TopUnreadMessagesBar');\n topUnreadMessagesBar = _react2.default.createElement(TopUnreadMessagesBar, {\n onScrollUpClick: this.jumpToReadMarker,\n onCloseClick: this.forgetReadMarker\n });\n }\n var jumpToBottom = void 0;\n if (!this.state.atEndOfLiveTimeline) {\n var JumpToBottomButton = _index2.default.getComponent('rooms.JumpToBottomButton');\n jumpToBottom = _react2.default.createElement(JumpToBottomButton, {\n numUnreadMessages: this.state.numUnreadMessages,\n onScrollToBottomClick: this.jumpToLiveTimeline\n });\n }\n var statusBarAreaClass = (0, _classnames2.default)(\"mx_RoomView_statusArea\", {\n \"mx_RoomView_statusArea_expanded\": isStatusAreaExpanded\n });\n\n var fadableSectionClasses = (0, _classnames2.default)(\"mx_RoomView_body\", \"mx_fadable\", {\n \"mx_fadable_faded\": this.props.disabled\n });\n\n var rightPanel = !hideRightPanel && this.state.room && _react2.default.createElement(_RightPanel2.default, { roomId: this.state.room.roomId, resizeNotifier: this.props.resizeNotifier });\n var collapsedRhs = hideRightPanel || this.props.collapsedRhs;\n\n return _react2.default.createElement(\n 'main',\n { className: \"mx_RoomView\" + (inCall ? \" mx_RoomView_inCall\" : \"\"), ref: 'roomView' },\n _react2.default.createElement(\n ErrorBoundary,\n null,\n _react2.default.createElement(RoomHeader, { ref: 'header', room: this.state.room, searchInfo: searchInfo,\n oobData: this.props.oobData,\n inRoom: myMembership === 'join',\n collapsedRhs: collapsedRhs,\n onSearchClick: this.onSearchClick,\n onSettingsClick: this.onSettingsClick,\n onPinnedClick: this.onPinnedClick,\n onCancelClick: aux && !hideCancel ? this.onCancelClick : null,\n onForgetClick: myMembership === \"leave\" ? this.onForgetClick : null,\n onLeaveClick: myMembership === \"join\" ? this.onLeaveClick : null,\n e2eStatus: this.state.e2eStatus\n }),\n _react2.default.createElement(\n _MainSplit2.default,\n {\n panel: rightPanel,\n collapsedRhs: collapsedRhs,\n resizeNotifier: this.props.resizeNotifier\n },\n _react2.default.createElement(\n 'div',\n { className: fadableSectionClasses },\n auxPanel,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomView_timeline' },\n topUnreadMessagesBar,\n jumpToBottom,\n messagePanel,\n searchResultsPanel\n ),\n _react2.default.createElement(\n 'div',\n { className: statusBarAreaClass },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomView_statusAreaBox' },\n _react2.default.createElement('div', { className: 'mx_RoomView_statusAreaBox_line' }),\n statusBar\n )\n ),\n previewBar,\n messageComposer\n )\n )\n )\n );\n }\n});\n\nmodule.exports.RoomContext = RoomContext;\n//# sourceMappingURL=RoomView.js.map","/**\n * Encrypt an attachment.\n * @param {ArrayBuffer} plaintextBuffer The attachment data buffer.\n * @return {Promise} A promise that resolves with an object when the attachment is encrypted.\n * The object has a \"data\" key with an ArrayBuffer of encrypted data and an \"info\" key\n * with an object containing the info needed to decrypt the data.\n */\nfunction encryptAttachment(plaintextBuffer) {\n var cryptoKey; // The AES key object.\n var exportedKey; // The AES key exported as JWK.\n var ciphertextBuffer; // ArrayBuffer of encrypted data.\n var sha256Buffer; // ArrayBuffer of digest.\n var ivArray; // Uint8Array of AES IV\n // Generate an IV where the first 8 bytes are random and the high 8 bytes\n // are zero. We set the counter low bits to 0 since it makes it unlikely\n // that the 64 bit counter will overflow.\n ivArray = new Uint8Array(16);\n window.crypto.getRandomValues(ivArray.subarray(0,8));\n // Load the encryption key.\n return window.crypto.subtle.generateKey(\n {\"name\": \"AES-CTR\", length: 256}, true, [\"encrypt\", \"decrypt\"]\n ).then(function(generateKeyResult) {\n cryptoKey = generateKeyResult;\n // Export the Key as JWK.\n return window.crypto.subtle.exportKey(\"jwk\", cryptoKey);\n }).then(function(exportKeyResult) {\n exportedKey = exportKeyResult;\n // Encrypt the input ArrayBuffer.\n // Use half of the iv as the counter by setting the \"length\" to 64.\n return window.crypto.subtle.encrypt(\n {name: \"AES-CTR\", counter: ivArray, length: 64}, cryptoKey, plaintextBuffer\n );\n }).then(function(encryptResult) {\n ciphertextBuffer = encryptResult;\n // SHA-256 the encrypted data.\n return window.crypto.subtle.digest(\"SHA-256\", ciphertextBuffer);\n }).then(function (digestResult) {\n sha256Buffer = digestResult;\n\n return {\n data: ciphertextBuffer,\n info: {\n v: \"v2\",\n key: exportedKey,\n iv: encodeBase64(ivArray),\n hashes: {\n sha256: encodeBase64(new Uint8Array(sha256Buffer)),\n },\n },\n };\n });\n}\n\n/**\n * Decrypt an attachment.\n * @param {ArrayBuffer} ciphertextBuffer The encrypted attachment data buffer.\n * @param {Object} info The information needed to decrypt the attachment.\n * @param {Object} info.key AES-CTR JWK key object.\n * @param {string} info.iv Base64 encoded 16 byte AES-CTR IV.\n * @param {string} info.hashes.sha256 Base64 encoded SHA-256 hash of the ciphertext.\n * @return {Promise} A promise that resolves with an ArrayBuffer when the attachment is decrypted.\n */\nfunction decryptAttachment(ciphertextBuffer, info) {\n\n if (info === undefined || info.key === undefined || info.iv === undefined\n || info.hashes === undefined || info.hashes.sha256 === undefined) {\n throw new Error(\"Invalid info. Missing info.key, info.iv or info.hashes.sha256 key\");\n }\n\n var cryptoKey; // The AES key object.\n var ivArray = decodeBase64(info.iv);\n var expectedSha256base64 = info.hashes.sha256;\n // Load the AES from the \"key\" key of the info object.\n return window.crypto.subtle.importKey(\n \"jwk\", info.key, {\"name\": \"AES-CTR\"}, false, [\"encrypt\", \"decrypt\"]\n ).then(function (importKeyResult) {\n cryptoKey = importKeyResult;\n // Check the sha256 hash\n return window.crypto.subtle.digest(\"SHA-256\", ciphertextBuffer);\n }).then(function (digestResult) {\n if (encodeBase64(new Uint8Array(digestResult)) != expectedSha256base64) {\n throw new Error(\"Mismatched SHA-256 digest\");\n }\n var counterLength;\n if (info.v == \"v1\" || info.v == \"v2\") {\n // Version 1 and 2 use a 64 bit counter.\n counterLength = 64;\n } else {\n // Version 0 uses a 128 bit counter.\n counterLength = 128;\n }\n return window.crypto.subtle.decrypt(\n {name: \"AES-CTR\", counter: ivArray, length: counterLength}, cryptoKey, ciphertextBuffer\n );\n });\n}\n\n/**\n * Encode a typed array of uint8 as base64.\n * @param {Uint8Array} uint8Array The data to encode.\n * @return {string} The base64 without padding.\n */\nfunction encodeBase64(uint8Array) {\n // Misinterpt the Uint8Array as Latin-1.\n // window.btoa expects a unicode string with codepoints in the range 0-255.\n var latin1String = String.fromCharCode.apply(null, uint8Array);\n // Use the builtin base64 encoder.\n var paddedBase64 = window.btoa(latin1String);\n // Calculate the unpadded length.\n var inputLength = uint8Array.length;\n var outputLength = 4 * Math.floor((inputLength + 2) / 3) + (inputLength + 2) % 3 - 2;\n // Return the unpadded base64.\n return paddedBase64.slice(0, outputLength);\n}\n\n/**\n * Decode a base64 string to a typed array of uint8.\n * This will decode unpadded base64, but will also accept base64 with padding.\n * @param {string} base64 The unpadded base64 to decode.\n * @return {Uint8Array} The decoded data.\n */\nfunction decodeBase64(base64) {\n // Pad the base64 up to the next multiple of 4.\n var paddedBase64 = base64 + \"===\".slice(0, (4 - base64.length % 4) % 4);\n // Decode the base64 as a misinterpreted Latin-1 string.\n // window.atob returns a unicode string with codepoints in the range 0-255.\n var latin1String = window.atob(paddedBase64);\n // Encode the string as a Uint8Array as Latin-1.\n var uint8Array = new Uint8Array(latin1String.length);\n for (var i = 0; i < latin1String.length; i++) {\n uint8Array[i] = latin1String.charCodeAt(i);\n }\n return uint8Array;\n}\n\ntry {\n exports.encryptAttachment = encryptAttachment;\n exports.decryptAttachment = decryptAttachment;\n}\ncatch (e) {\n // Ignore unknown variable \"exports\" errors when this is loaded directly into a browser\n // This means that we can test it without having to use browserify.\n // The intention is that the library is used using browserify.\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Used while editing, to pass the event, and to preserve editor state\n * from one editor instance to another when remounting the editor\n * upon receiving the remote echo for an unsent event.\n */\nvar EditorStateTransfer = function () {\n function EditorStateTransfer(event) {\n (0, _classCallCheck3.default)(this, EditorStateTransfer);\n\n this._event = event;\n this._serializedParts = null;\n this.caret = null;\n }\n\n (0, _createClass3.default)(EditorStateTransfer, [{\n key: \"setEditorState\",\n value: function setEditorState(caret, serializedParts) {\n this._caret = caret;\n this._serializedParts = serializedParts;\n }\n }, {\n key: \"hasEditorState\",\n value: function hasEditorState() {\n return !!this._serializedParts;\n }\n }, {\n key: \"getSerializedParts\",\n value: function getSerializedParts() {\n return this._serializedParts;\n }\n }, {\n key: \"getCaret\",\n value: function getCaret() {\n return this._caret;\n }\n }, {\n key: \"getEvent\",\n value: function getEvent() {\n return this._event;\n }\n }]);\n return EditorStateTransfer;\n}();\n\nexports.default = EditorStateTransfer;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=EditorStateTransfer.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TopLeftMenu = undefined;\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _LogoutDialog = require('../dialogs/LogoutDialog');\n\nvar _LogoutDialog2 = _interopRequireDefault(_LogoutDialog);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _HostingLink = require('../../../utils/HostingLink');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018, 2019 New Vector Ltd\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar TopLeftMenu = exports.TopLeftMenu = function (_React$Component) {\n (0, _inherits3.default)(TopLeftMenu, _React$Component);\n\n function TopLeftMenu() {\n (0, _classCallCheck3.default)(this, TopLeftMenu);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (TopLeftMenu.__proto__ || (0, _getPrototypeOf2.default)(TopLeftMenu)).call(this));\n\n _this.viewHomePage = _this.viewHomePage.bind(_this);\n _this.openSettings = _this.openSettings.bind(_this);\n _this.signIn = _this.signIn.bind(_this);\n _this.signOut = _this.signOut.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(TopLeftMenu, [{\n key: 'hasHomePage',\n value: function hasHomePage() {\n var config = _SdkConfig2.default.get();\n var pagesConfig = config.embeddedPages;\n if (pagesConfig && pagesConfig.homeUrl) {\n return true;\n }\n // This is a deprecated config option for the home page\n // (despite the name, given we also now have a welcome\n // page, which is not the same).\n return !!config.welcomePageUrl;\n }\n }, {\n key: 'render',\n value: function render() {\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n\n var isGuest = _MatrixClientPeg2.default.get().isGuest();\n\n var hostingSignupLink = (0, _HostingLink.getHostingLink)('user-context-menu');\n var hostingSignup = null;\n if (hostingSignupLink) {\n hostingSignup = _react2.default.createElement(\n 'div',\n { className: 'mx_TopLeftMenu_upgradeLink' },\n (0, _languageHandler._t)(\"Upgrade to your own domain\", {}, {\n a: function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: hostingSignupLink, target: '_blank', rel: 'noopener', tabIndex: '0' },\n sub\n );\n }\n }),\n _react2.default.createElement(\n 'a',\n { href: hostingSignupLink, target: '_blank', rel: 'noopener', 'aria-hidden': true },\n _react2.default.createElement('img', { src: require(\"../../../../res/img/external-link.svg\"), width: '11', height: '10', alt: '' })\n )\n );\n }\n\n var homePageItem = null;\n if (this.hasHomePage()) {\n homePageItem = _react2.default.createElement(\n AccessibleButton,\n { element: 'li', className: 'mx_TopLeftMenu_icon_home', onClick: this.viewHomePage },\n (0, _languageHandler._t)(\"Home\")\n );\n }\n\n var signInOutItem = void 0;\n if (isGuest) {\n signInOutItem = _react2.default.createElement(\n AccessibleButton,\n { element: 'li', className: 'mx_TopLeftMenu_icon_signin', onClick: this.signIn },\n (0, _languageHandler._t)(\"Sign in\")\n );\n } else {\n signInOutItem = _react2.default.createElement(\n AccessibleButton,\n { element: 'li', className: 'mx_TopLeftMenu_icon_signout', onClick: this.signOut },\n (0, _languageHandler._t)(\"Sign out\")\n );\n }\n\n var settingsItem = _react2.default.createElement(\n AccessibleButton,\n { element: 'li', className: 'mx_TopLeftMenu_icon_settings', onClick: this.openSettings },\n (0, _languageHandler._t)(\"Settings\")\n );\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_TopLeftMenu mx_HiddenFocusable', tabIndex: 0, ref: this.props.containerRef },\n _react2.default.createElement(\n 'div',\n { className: 'mx_TopLeftMenu_section_noIcon', 'aria-readonly': true },\n _react2.default.createElement(\n 'div',\n null,\n this.props.displayName\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_TopLeftMenu_greyedText', 'aria-hidden': true },\n this.props.userId\n ),\n hostingSignup\n ),\n _react2.default.createElement(\n 'ul',\n { className: 'mx_TopLeftMenu_section_withIcon' },\n homePageItem,\n settingsItem,\n signInOutItem\n )\n );\n }\n }, {\n key: 'viewHomePage',\n value: function viewHomePage() {\n _dispatcher2.default.dispatch({ action: 'view_home_page' });\n this.closeMenu();\n }\n }, {\n key: 'openSettings',\n value: function openSettings() {\n _dispatcher2.default.dispatch({ action: 'view_user_settings' });\n this.closeMenu();\n }\n }, {\n key: 'signIn',\n value: function signIn() {\n _dispatcher2.default.dispatch({ action: 'start_login' });\n this.closeMenu();\n }\n }, {\n key: 'signOut',\n value: function signOut() {\n _Modal2.default.createTrackedDialog('Logout E2E Export', '', _LogoutDialog2.default);\n this.closeMenu();\n }\n }, {\n key: 'closeMenu',\n value: function closeMenu() {\n if (this.props.onFinished) this.props.onFinished();\n }\n }]);\n return TopLeftMenu;\n}(_react2.default.Component);\n\nTopLeftMenu.propTypes = {\n displayName: _propTypes2.default.string.isRequired,\n userId: _propTypes2.default.string.isRequired,\n onFinished: _propTypes2.default.func,\n\n // Optional function to collect a reference to the container\n // of this component directly.\n containerRef: _propTypes2.default.func\n};\n//# sourceMappingURL=TopLeftMenu.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LogoutDialog = function (_React$Component) {\n (0, _inherits3.default)(LogoutDialog, _React$Component);\n\n function LogoutDialog() {\n (0, _classCallCheck3.default)(this, LogoutDialog);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (LogoutDialog.__proto__ || (0, _getPrototypeOf2.default)(LogoutDialog)).call(this));\n\n _this.defaultProps = {\n onFinished: function onFinished() {}\n };\n\n _this._onSettingsLinkClick = _this._onSettingsLinkClick.bind(_this);\n _this._onExportE2eKeysClicked = _this._onExportE2eKeysClicked.bind(_this);\n _this._onFinished = _this._onFinished.bind(_this);\n _this._onSetRecoveryMethodClick = _this._onSetRecoveryMethodClick.bind(_this);\n _this._onLogoutConfirm = _this._onLogoutConfirm.bind(_this);\n\n var lowBandwidth = _SettingsStore2.default.getValue(\"lowBandwidth\");\n var shouldLoadBackupStatus = !lowBandwidth && !_MatrixClientPeg2.default.get().getKeyBackupEnabled();\n\n _this.state = {\n shouldLoadBackupStatus: shouldLoadBackupStatus,\n loading: shouldLoadBackupStatus,\n backupInfo: null,\n error: null\n };\n\n if (shouldLoadBackupStatus) {\n _this._loadBackupStatus();\n }\n return _this;\n }\n\n (0, _createClass3.default)(LogoutDialog, [{\n key: '_loadBackupStatus',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var backupInfo;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n _context.next = 3;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get().getKeyBackupVersion());\n\n case 3:\n backupInfo = _context.sent;\n\n this.setState({\n loading: false,\n backupInfo: backupInfo\n });\n _context.next = 11;\n break;\n\n case 7:\n _context.prev = 7;\n _context.t0 = _context['catch'](0);\n\n console.log(\"Unable to fetch key backup status\", _context.t0);\n this.setState({\n loading: false,\n error: _context.t0\n });\n\n case 11:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[0, 7]]);\n }));\n\n function _loadBackupStatus() {\n return _ref.apply(this, arguments);\n }\n\n return _loadBackupStatus;\n }()\n }, {\n key: '_onSettingsLinkClick',\n value: function _onSettingsLinkClick() {\n // close dialog\n this.props.onFinished();\n }\n }, {\n key: '_onExportE2eKeysClicked',\n value: function _onExportE2eKeysClicked() {\n _Modal2.default.createTrackedDialogAsync('Export E2E Keys', '', import('../../../async-components/views/dialogs/ExportE2eKeysDialog'), {\n matrixClient: _MatrixClientPeg2.default.get()\n });\n }\n }, {\n key: '_onFinished',\n value: function _onFinished(confirmed) {\n if (confirmed) {\n _dispatcher2.default.dispatch({ action: 'logout' });\n }\n // close dialog\n this.props.onFinished();\n }\n }, {\n key: '_onSetRecoveryMethodClick',\n value: function _onSetRecoveryMethodClick() {\n if (this.state.backupInfo) {\n // A key backup exists for this account, but the creating device is not\n // verified, so restore the backup which will give us the keys from it and\n // allow us to trust it (ie. upload keys to it)\n var RestoreKeyBackupDialog = _index2.default.getComponent('dialogs.keybackup.RestoreKeyBackupDialog');\n _Modal2.default.createTrackedDialog('Restore Backup', '', RestoreKeyBackupDialog, {});\n } else {\n _Modal2.default.createTrackedDialogAsync(\"Key Backup\", \"Key Backup\", import(\"../../../async-components/views/dialogs/keybackup/CreateKeyBackupDialog\"));\n }\n\n // close dialog\n this.props.onFinished();\n }\n }, {\n key: '_onLogoutConfirm',\n value: function _onLogoutConfirm() {\n _dispatcher2.default.dispatch({ action: 'logout' });\n\n // close dialog\n this.props.onFinished();\n }\n }, {\n key: 'render',\n value: function render() {\n if (this.state.shouldLoadBackupStatus) {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n\n var description = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Encrypted messages are secured with end-to-end encryption. \" + \"Only you and the recipient(s) have the keys to read these messages.\")\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Back up your keys before signing out to avoid losing them.\")\n )\n );\n\n var dialogContent = void 0;\n if (this.state.loading) {\n var Spinner = _index2.default.getComponent('views.elements.Spinner');\n\n dialogContent = _react2.default.createElement(Spinner, null);\n } else {\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n var setupButtonCaption = void 0;\n if (this.state.backupInfo) {\n setupButtonCaption = (0, _languageHandler._t)(\"Connect this device to Key Backup\");\n } else {\n // if there's an error fetching the backup info, we'll just assume there's\n // no backup for the purpose of the button caption\n setupButtonCaption = (0, _languageHandler._t)(\"Start using Key Backup\");\n }\n\n dialogContent = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content', id: 'mx_Dialog_content' },\n description\n ),\n _react2.default.createElement(\n DialogButtons,\n { primaryButton: setupButtonCaption,\n hasCancel: false,\n onPrimaryButtonClick: this._onSetRecoveryMethodClick,\n focus: true\n },\n _react2.default.createElement(\n 'button',\n { onClick: this._onLogoutConfirm },\n (0, _languageHandler._t)(\"I don't want my encrypted messages\")\n )\n ),\n _react2.default.createElement(\n 'details',\n null,\n _react2.default.createElement(\n 'summary',\n null,\n (0, _languageHandler._t)(\"Advanced\")\n ),\n _react2.default.createElement(\n 'p',\n null,\n _react2.default.createElement(\n 'button',\n { onClick: this._onExportE2eKeysClicked },\n (0, _languageHandler._t)(\"Manually export keys\")\n )\n )\n )\n );\n }\n // Not quite a standard question dialog as the primary button cancels\n // the action and does something else instead, whilst non-default button\n // confirms the action.\n return _react2.default.createElement(\n BaseDialog,\n {\n title: (0, _languageHandler._t)(\"You'll lose access to your encrypted messages\"),\n contentId: 'mx_Dialog_content',\n hasCancel: true,\n onFinished: this._onFinished\n },\n dialogContent\n );\n } else {\n var QuestionDialog = _index2.default.getComponent('views.dialogs.QuestionDialog');\n return _react2.default.createElement(QuestionDialog, {\n hasCancelButton: true,\n title: (0, _languageHandler._t)(\"Sign out\"),\n description: (0, _languageHandler._t)(\"Are you sure you want to sign out?\"),\n button: (0, _languageHandler._t)(\"Sign out\"),\n onFinished: this._onFinished\n });\n }\n }\n }]);\n return LogoutDialog;\n}(_react2.default.Component); /*\n Copyright 2018, 2019 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = LogoutDialog;\nmodule.exports = exports['default'];\n//# sourceMappingURL=LogoutDialog.js.map","'use strict';\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _set = require('babel-runtime/core-js/set');\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _from = require('babel-runtime/core-js/array/from');\n\nvar _from2 = _interopRequireDefault(_from);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _Avatar = require('../../../Avatar');\n\nvar _Avatar2 = _interopRequireDefault(_Avatar);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = (0, _createReactClass2.default)({\n displayName: 'BaseAvatar',\n\n propTypes: {\n name: _propTypes2.default.string.isRequired, // The name (first initial used as default)\n idName: _propTypes2.default.string, // ID for generating hash colours\n title: _propTypes2.default.string, // onHover title text\n url: _propTypes2.default.string, // highest priority of them all, shortcut to set in urls[0]\n urls: _propTypes2.default.array, // [highest_priority, ... , lowest_priority]\n width: _propTypes2.default.number,\n height: _propTypes2.default.number,\n // XXX resizeMethod not actually used.\n resizeMethod: _propTypes2.default.string,\n defaultToInitialLetter: _propTypes2.default.bool // true to add default url\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n width: 40,\n height: 40,\n resizeMethod: 'crop',\n defaultToInitialLetter: true\n };\n },\n\n getInitialState: function getInitialState() {\n return this._getState(this.props);\n },\n\n componentWillMount: function componentWillMount() {\n this.unmounted = false;\n this.context.matrixClient.on('sync', this.onClientSync);\n },\n componentWillUnmount: function componentWillUnmount() {\n this.unmounted = true;\n this.context.matrixClient.removeListener('sync', this.onClientSync);\n },\n\n\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n // work out if we need to call setState (if the image URLs array has changed)\n var newState = this._getState(nextProps);\n var newImageUrls = newState.imageUrls;\n var oldImageUrls = this.state.imageUrls;\n if (newImageUrls.length !== oldImageUrls.length) {\n this.setState(newState); // detected a new entry\n } else {\n // check each one to see if they are the same\n for (var i = 0; i < newImageUrls.length; i++) {\n if (oldImageUrls[i] !== newImageUrls[i]) {\n this.setState(newState); // detected a diff\n break;\n }\n }\n }\n },\n\n onClientSync: function onClientSync(syncState, prevState) {\n if (this.unmounted) return;\n\n // Consider the client reconnected if there is no error with syncing.\n // This means the state could be RECONNECTING, SYNCING, PREPARED or CATCHUP.\n var reconnected = syncState !== \"ERROR\" && prevState !== syncState;\n if (reconnected &&\n // Did we fall back?\n this.state.urlsIndex > 0) {\n // Start from the highest priority URL again\n this.setState({\n urlsIndex: 0\n });\n }\n },\n\n _getState: function _getState(props) {\n // work out the full set of urls to try to load. This is formed like so:\n // imageUrls: [ props.url, props.urls, default image ]\n\n var urls = [];\n if (!_SettingsStore2.default.getValue(\"lowBandwidth\")) {\n urls = props.urls || [];\n\n if (props.url) {\n urls.unshift(props.url); // put in urls[0]\n }\n }\n\n var defaultImageUrl = null;\n if (props.defaultToInitialLetter) {\n defaultImageUrl = _Avatar2.default.defaultAvatarUrlForString(props.idName || props.name);\n urls.push(defaultImageUrl); // lowest priority\n }\n\n // deduplicate URLs\n urls = (0, _from2.default)(new _set2.default(urls));\n\n return {\n imageUrls: urls,\n defaultImageUrl: defaultImageUrl,\n urlsIndex: 0\n };\n },\n\n onError: function onError(ev) {\n var nextIndex = this.state.urlsIndex + 1;\n if (nextIndex < this.state.imageUrls.length) {\n // try the next one\n this.setState({\n urlsIndex: nextIndex\n });\n }\n },\n\n render: function render() {\n var imageUrl = this.state.imageUrls[this.state.urlsIndex];\n\n var _props = this.props,\n name = _props.name,\n idName = _props.idName,\n title = _props.title,\n url = _props.url,\n urls = _props.urls,\n width = _props.width,\n height = _props.height,\n resizeMethod = _props.resizeMethod,\n defaultToInitialLetter = _props.defaultToInitialLetter,\n onClick = _props.onClick,\n otherProps = (0, _objectWithoutProperties3.default)(_props, ['name', 'idName', 'title', 'url', 'urls', 'width', 'height', 'resizeMethod', 'defaultToInitialLetter', 'onClick']);\n\n\n if (imageUrl === this.state.defaultImageUrl) {\n var initialLetter = _Avatar2.default.getInitialLetter(name);\n var textNode = _react2.default.createElement(\n 'span',\n { className: 'mx_BaseAvatar_initial', 'aria-hidden': 'true',\n style: { fontSize: width * 0.65 + \"px\",\n width: width + \"px\",\n lineHeight: height + \"px\" }\n },\n initialLetter\n );\n var imgNode = _react2.default.createElement('img', { className: 'mx_BaseAvatar_image', src: imageUrl,\n alt: '', title: title, onError: this.onError,\n width: width, height: height, 'aria-hidden': 'true' });\n if (onClick != null) {\n return _react2.default.createElement(\n _AccessibleButton2.default,\n (0, _extends3.default)({ element: 'span', className: 'mx_BaseAvatar',\n onClick: onClick }, otherProps),\n textNode,\n imgNode\n );\n } else {\n return _react2.default.createElement(\n 'span',\n (0, _extends3.default)({ className: 'mx_BaseAvatar' }, otherProps),\n textNode,\n imgNode\n );\n }\n }\n if (onClick != null) {\n return _react2.default.createElement(_AccessibleButton2.default, (0, _extends3.default)({ className: 'mx_BaseAvatar mx_BaseAvatar_image',\n element: 'img',\n src: imageUrl,\n onClick: onClick,\n onError: this.onError,\n width: width, height: height,\n title: title, alt: ''\n }, otherProps));\n } else {\n return _react2.default.createElement('img', (0, _extends3.default)({ className: 'mx_BaseAvatar mx_BaseAvatar_image', src: imageUrl,\n onError: this.onError,\n width: width, height: height,\n title: title, alt: ''\n }, otherProps));\n }\n }\n}); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2018 New Vector Ltd\n Copyright 2019 Michael Telatynski <7t3chguy@gmail.com>\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=BaseAvatar.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _phonenumber = require('../../../phonenumber');\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar COUNTRIES_BY_ISO2 = {}; /*\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar _iteratorNormalCompletion = true;\nvar _didIteratorError = false;\nvar _iteratorError = undefined;\n\ntry {\n for (var _iterator = (0, _getIterator3.default)(_phonenumber.COUNTRIES), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var c = _step.value;\n\n COUNTRIES_BY_ISO2[c.iso2] = c;\n }\n} catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n} finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n}\n\nfunction countryMatchesSearchQuery(query, country) {\n // Remove '+' if present (when searching for a prefix)\n if (query[0] === '+') {\n query = query.slice(1);\n }\n\n if (country.name.toUpperCase().indexOf(query.toUpperCase()) == 0) return true;\n if (country.iso2 == query.toUpperCase()) return true;\n if (country.prefix.indexOf(query) !== -1) return true;\n return false;\n}\n\nvar CountryDropdown = function (_React$Component) {\n (0, _inherits3.default)(CountryDropdown, _React$Component);\n\n function CountryDropdown(props) {\n (0, _classCallCheck3.default)(this, CountryDropdown);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (CountryDropdown.__proto__ || (0, _getPrototypeOf2.default)(CountryDropdown)).call(this, props));\n\n _this._onSearchChange = _this._onSearchChange.bind(_this);\n _this._onOptionChange = _this._onOptionChange.bind(_this);\n _this._getShortOption = _this._getShortOption.bind(_this);\n\n var defaultCountry = _phonenumber.COUNTRIES[0];\n var defaultCountryCode = _SdkConfig2.default.get()[\"defaultCountryCode\"];\n if (defaultCountryCode) {\n var country = _phonenumber.COUNTRIES.find(function (c) {\n return c.iso2 === defaultCountryCode.toUpperCase();\n });\n if (country) defaultCountry = country;\n }\n\n _this.state = {\n searchQuery: '',\n defaultCountry: defaultCountry\n };\n return _this;\n }\n\n (0, _createClass3.default)(CountryDropdown, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n if (!this.props.value) {\n // If no value is given, we start with the default\n // country selected, but our parent component\n // doesn't know this, therefore we do this.\n this.props.onOptionChange(this.state.defaultCountry);\n }\n }\n }, {\n key: '_onSearchChange',\n value: function _onSearchChange(search) {\n this.setState({\n searchQuery: search\n });\n }\n }, {\n key: '_onOptionChange',\n value: function _onOptionChange(iso2) {\n this.props.onOptionChange(COUNTRIES_BY_ISO2[iso2]);\n }\n }, {\n key: '_flagImgForIso2',\n value: function _flagImgForIso2(iso2) {\n return _react2.default.createElement('img', { src: require('../../../../res/img/flags/' + iso2 + '.png') });\n }\n }, {\n key: '_getShortOption',\n value: function _getShortOption(iso2) {\n if (!this.props.isSmall) {\n return undefined;\n }\n var countryPrefix = void 0;\n if (this.props.showPrefix) {\n countryPrefix = '+' + COUNTRIES_BY_ISO2[iso2].prefix;\n }\n return _react2.default.createElement(\n 'span',\n { className: 'mx_CountryDropdown_shortOption' },\n this._flagImgForIso2(iso2),\n countryPrefix\n );\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var Dropdown = _index2.default.getComponent('elements.Dropdown');\n\n var displayedCountries = void 0;\n if (this.state.searchQuery) {\n displayedCountries = _phonenumber.COUNTRIES.filter(countryMatchesSearchQuery.bind(this, this.state.searchQuery));\n if (this.state.searchQuery.length == 2 && COUNTRIES_BY_ISO2[this.state.searchQuery.toUpperCase()]) {\n // exact ISO2 country name match: make the first result the matches ISO2\n var matched = COUNTRIES_BY_ISO2[this.state.searchQuery.toUpperCase()];\n displayedCountries = displayedCountries.filter(function (c) {\n return c.iso2 != matched.iso2;\n });\n displayedCountries.unshift(matched);\n }\n } else {\n displayedCountries = _phonenumber.COUNTRIES;\n }\n\n var options = displayedCountries.map(function (country) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_CountryDropdown_option', key: country.iso2 },\n _this2._flagImgForIso2(country.iso2),\n country.name,\n ' (+',\n country.prefix,\n ')'\n );\n });\n\n // default value here too, otherwise we need to handle null / undefined\n // values between mounting and the initial value propgating\n var value = this.props.value || this.state.defaultCountry.iso2;\n\n return _react2.default.createElement(\n Dropdown,\n { className: this.props.className + \" mx_CountryDropdown\",\n onOptionChange: this._onOptionChange, onSearchChange: this._onSearchChange,\n menuWidth: 298, getShortOption: this._getShortOption,\n value: value, searchEnabled: true, disabled: this.props.disabled\n },\n options\n );\n }\n }]);\n return CountryDropdown;\n}(_react2.default.Component);\n\nexports.default = CountryDropdown;\n\n\nCountryDropdown.propTypes = {\n className: _propTypes2.default.string,\n isSmall: _propTypes2.default.bool,\n // if isSmall, show +44 in the selected value\n showPrefix: _propTypes2.default.bool,\n onOptionChange: _propTypes2.default.func.isRequired,\n value: _propTypes2.default.string,\n disabled: _propTypes2.default.bool\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=CountryDropdown.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.looksValid = looksValid;\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar PHONE_NUMBER_REGEXP = /^[0-9 -.]+$/;\n\n/*\n * Do basic validation to determine if the given input could be\n * a valid phone number.\n *\n * @param {String} phoneNumber The string to validate. This could be\n * either an international format number (MSISDN or e.164) or\n * a national-format number.\n * @return True if the number could be a valid phone number, otherwise false.\n */\nfunction looksValid(phoneNumber) {\n return PHONE_NUMBER_REGEXP.test(phoneNumber);\n}\n\nvar COUNTRIES = exports.COUNTRIES = [{\n \"iso2\": \"GB\",\n \"name\": \"United Kingdom\",\n \"prefix\": \"44\"\n}, {\n \"iso2\": \"US\",\n \"name\": \"United States\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"AF\",\n \"name\": \"Afghanistan\",\n \"prefix\": \"93\"\n}, {\n \"iso2\": \"AX\",\n \"name\": \"\\xC5land Islands\",\n \"prefix\": \"358\"\n}, {\n \"iso2\": \"AL\",\n \"name\": \"Albania\",\n \"prefix\": \"355\"\n}, {\n \"iso2\": \"DZ\",\n \"name\": \"Algeria\",\n \"prefix\": \"213\"\n}, {\n \"iso2\": \"AS\",\n \"name\": \"American Samoa\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"AD\",\n \"name\": \"Andorra\",\n \"prefix\": \"376\"\n}, {\n \"iso2\": \"AO\",\n \"name\": \"Angola\",\n \"prefix\": \"244\"\n}, {\n \"iso2\": \"AI\",\n \"name\": \"Anguilla\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"AQ\",\n \"name\": \"Antarctica\",\n \"prefix\": \"672\"\n}, {\n \"iso2\": \"AG\",\n \"name\": \"Antigua & Barbuda\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"AR\",\n \"name\": \"Argentina\",\n \"prefix\": \"54\"\n}, {\n \"iso2\": \"AM\",\n \"name\": \"Armenia\",\n \"prefix\": \"374\"\n}, {\n \"iso2\": \"AW\",\n \"name\": \"Aruba\",\n \"prefix\": \"297\"\n}, {\n \"iso2\": \"AU\",\n \"name\": \"Australia\",\n \"prefix\": \"61\"\n}, {\n \"iso2\": \"AT\",\n \"name\": \"Austria\",\n \"prefix\": \"43\"\n}, {\n \"iso2\": \"AZ\",\n \"name\": \"Azerbaijan\",\n \"prefix\": \"994\"\n}, {\n \"iso2\": \"BS\",\n \"name\": \"Bahamas\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"BH\",\n \"name\": \"Bahrain\",\n \"prefix\": \"973\"\n}, {\n \"iso2\": \"BD\",\n \"name\": \"Bangladesh\",\n \"prefix\": \"880\"\n}, {\n \"iso2\": \"BB\",\n \"name\": \"Barbados\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"BY\",\n \"name\": \"Belarus\",\n \"prefix\": \"375\"\n}, {\n \"iso2\": \"BE\",\n \"name\": \"Belgium\",\n \"prefix\": \"32\"\n}, {\n \"iso2\": \"BZ\",\n \"name\": \"Belize\",\n \"prefix\": \"501\"\n}, {\n \"iso2\": \"BJ\",\n \"name\": \"Benin\",\n \"prefix\": \"229\"\n}, {\n \"iso2\": \"BM\",\n \"name\": \"Bermuda\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"BT\",\n \"name\": \"Bhutan\",\n \"prefix\": \"975\"\n}, {\n \"iso2\": \"BO\",\n \"name\": \"Bolivia\",\n \"prefix\": \"591\"\n}, {\n \"iso2\": \"BA\",\n \"name\": \"Bosnia\",\n \"prefix\": \"387\"\n}, {\n \"iso2\": \"BW\",\n \"name\": \"Botswana\",\n \"prefix\": \"267\"\n}, {\n \"iso2\": \"BV\",\n \"name\": \"Bouvet Island\",\n \"prefix\": \"47\"\n}, {\n \"iso2\": \"BR\",\n \"name\": \"Brazil\",\n \"prefix\": \"55\"\n}, {\n \"iso2\": \"IO\",\n \"name\": \"British Indian Ocean Territory\",\n \"prefix\": \"246\"\n}, {\n \"iso2\": \"VG\",\n \"name\": \"British Virgin Islands\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"BN\",\n \"name\": \"Brunei\",\n \"prefix\": \"673\"\n}, {\n \"iso2\": \"BG\",\n \"name\": \"Bulgaria\",\n \"prefix\": \"359\"\n}, {\n \"iso2\": \"BF\",\n \"name\": \"Burkina Faso\",\n \"prefix\": \"226\"\n}, {\n \"iso2\": \"BI\",\n \"name\": \"Burundi\",\n \"prefix\": \"257\"\n}, {\n \"iso2\": \"KH\",\n \"name\": \"Cambodia\",\n \"prefix\": \"855\"\n}, {\n \"iso2\": \"CM\",\n \"name\": \"Cameroon\",\n \"prefix\": \"237\"\n}, {\n \"iso2\": \"CA\",\n \"name\": \"Canada\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"CV\",\n \"name\": \"Cape Verde\",\n \"prefix\": \"238\"\n}, {\n \"iso2\": \"BQ\",\n \"name\": \"Caribbean Netherlands\",\n \"prefix\": \"599\"\n}, {\n \"iso2\": \"KY\",\n \"name\": \"Cayman Islands\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"CF\",\n \"name\": \"Central African Republic\",\n \"prefix\": \"236\"\n}, {\n \"iso2\": \"TD\",\n \"name\": \"Chad\",\n \"prefix\": \"235\"\n}, {\n \"iso2\": \"CL\",\n \"name\": \"Chile\",\n \"prefix\": \"56\"\n}, {\n \"iso2\": \"CN\",\n \"name\": \"China\",\n \"prefix\": \"86\"\n}, {\n \"iso2\": \"CX\",\n \"name\": \"Christmas Island\",\n \"prefix\": \"61\"\n}, {\n \"iso2\": \"CC\",\n \"name\": \"Cocos (Keeling) Islands\",\n \"prefix\": \"61\"\n}, {\n \"iso2\": \"CO\",\n \"name\": \"Colombia\",\n \"prefix\": \"57\"\n}, {\n \"iso2\": \"KM\",\n \"name\": \"Comoros\",\n \"prefix\": \"269\"\n}, {\n \"iso2\": \"CG\",\n \"name\": \"Congo - Brazzaville\",\n \"prefix\": \"242\"\n}, {\n \"iso2\": \"CD\",\n \"name\": \"Congo - Kinshasa\",\n \"prefix\": \"243\"\n}, {\n \"iso2\": \"CK\",\n \"name\": \"Cook Islands\",\n \"prefix\": \"682\"\n}, {\n \"iso2\": \"CR\",\n \"name\": \"Costa Rica\",\n \"prefix\": \"506\"\n}, {\n \"iso2\": \"HR\",\n \"name\": \"Croatia\",\n \"prefix\": \"385\"\n}, {\n \"iso2\": \"CU\",\n \"name\": \"Cuba\",\n \"prefix\": \"53\"\n}, {\n \"iso2\": \"CW\",\n \"name\": \"Cura\\xE7ao\",\n \"prefix\": \"599\"\n}, {\n \"iso2\": \"CY\",\n \"name\": \"Cyprus\",\n \"prefix\": \"357\"\n}, {\n \"iso2\": \"CZ\",\n \"name\": \"Czech Republic\",\n \"prefix\": \"420\"\n}, {\n \"iso2\": \"CI\",\n \"name\": \"C\\xF4te d\\u2019Ivoire\",\n \"prefix\": \"225\"\n}, {\n \"iso2\": \"DK\",\n \"name\": \"Denmark\",\n \"prefix\": \"45\"\n}, {\n \"iso2\": \"DJ\",\n \"name\": \"Djibouti\",\n \"prefix\": \"253\"\n}, {\n \"iso2\": \"DM\",\n \"name\": \"Dominica\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"DO\",\n \"name\": \"Dominican Republic\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"EC\",\n \"name\": \"Ecuador\",\n \"prefix\": \"593\"\n}, {\n \"iso2\": \"EG\",\n \"name\": \"Egypt\",\n \"prefix\": \"20\"\n}, {\n \"iso2\": \"SV\",\n \"name\": \"El Salvador\",\n \"prefix\": \"503\"\n}, {\n \"iso2\": \"GQ\",\n \"name\": \"Equatorial Guinea\",\n \"prefix\": \"240\"\n}, {\n \"iso2\": \"ER\",\n \"name\": \"Eritrea\",\n \"prefix\": \"291\"\n}, {\n \"iso2\": \"EE\",\n \"name\": \"Estonia\",\n \"prefix\": \"372\"\n}, {\n \"iso2\": \"ET\",\n \"name\": \"Ethiopia\",\n \"prefix\": \"251\"\n}, {\n \"iso2\": \"FK\",\n \"name\": \"Falkland Islands\",\n \"prefix\": \"500\"\n}, {\n \"iso2\": \"FO\",\n \"name\": \"Faroe Islands\",\n \"prefix\": \"298\"\n}, {\n \"iso2\": \"FJ\",\n \"name\": \"Fiji\",\n \"prefix\": \"679\"\n}, {\n \"iso2\": \"FI\",\n \"name\": \"Finland\",\n \"prefix\": \"358\"\n}, {\n \"iso2\": \"FR\",\n \"name\": \"France\",\n \"prefix\": \"33\"\n}, {\n \"iso2\": \"GF\",\n \"name\": \"French Guiana\",\n \"prefix\": \"594\"\n}, {\n \"iso2\": \"PF\",\n \"name\": \"French Polynesia\",\n \"prefix\": \"689\"\n}, {\n \"iso2\": \"TF\",\n \"name\": \"French Southern Territories\",\n \"prefix\": \"262\"\n}, {\n \"iso2\": \"GA\",\n \"name\": \"Gabon\",\n \"prefix\": \"241\"\n}, {\n \"iso2\": \"GM\",\n \"name\": \"Gambia\",\n \"prefix\": \"220\"\n}, {\n \"iso2\": \"GE\",\n \"name\": \"Georgia\",\n \"prefix\": \"995\"\n}, {\n \"iso2\": \"DE\",\n \"name\": \"Germany\",\n \"prefix\": \"49\"\n}, {\n \"iso2\": \"GH\",\n \"name\": \"Ghana\",\n \"prefix\": \"233\"\n}, {\n \"iso2\": \"GI\",\n \"name\": \"Gibraltar\",\n \"prefix\": \"350\"\n}, {\n \"iso2\": \"GR\",\n \"name\": \"Greece\",\n \"prefix\": \"30\"\n}, {\n \"iso2\": \"GL\",\n \"name\": \"Greenland\",\n \"prefix\": \"299\"\n}, {\n \"iso2\": \"GD\",\n \"name\": \"Grenada\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"GP\",\n \"name\": \"Guadeloupe\",\n \"prefix\": \"590\"\n}, {\n \"iso2\": \"GU\",\n \"name\": \"Guam\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"GT\",\n \"name\": \"Guatemala\",\n \"prefix\": \"502\"\n}, {\n \"iso2\": \"GG\",\n \"name\": \"Guernsey\",\n \"prefix\": \"44\"\n}, {\n \"iso2\": \"GN\",\n \"name\": \"Guinea\",\n \"prefix\": \"224\"\n}, {\n \"iso2\": \"GW\",\n \"name\": \"Guinea-Bissau\",\n \"prefix\": \"245\"\n}, {\n \"iso2\": \"GY\",\n \"name\": \"Guyana\",\n \"prefix\": \"592\"\n}, {\n \"iso2\": \"HT\",\n \"name\": \"Haiti\",\n \"prefix\": \"509\"\n}, {\n \"iso2\": \"HM\",\n \"name\": \"Heard & McDonald Islands\",\n \"prefix\": \"672\"\n}, {\n \"iso2\": \"HN\",\n \"name\": \"Honduras\",\n \"prefix\": \"504\"\n}, {\n \"iso2\": \"HK\",\n \"name\": \"Hong Kong\",\n \"prefix\": \"852\"\n}, {\n \"iso2\": \"HU\",\n \"name\": \"Hungary\",\n \"prefix\": \"36\"\n}, {\n \"iso2\": \"IS\",\n \"name\": \"Iceland\",\n \"prefix\": \"354\"\n}, {\n \"iso2\": \"IN\",\n \"name\": \"India\",\n \"prefix\": \"91\"\n}, {\n \"iso2\": \"ID\",\n \"name\": \"Indonesia\",\n \"prefix\": \"62\"\n}, {\n \"iso2\": \"IR\",\n \"name\": \"Iran\",\n \"prefix\": \"98\"\n}, {\n \"iso2\": \"IQ\",\n \"name\": \"Iraq\",\n \"prefix\": \"964\"\n}, {\n \"iso2\": \"IE\",\n \"name\": \"Ireland\",\n \"prefix\": \"353\"\n}, {\n \"iso2\": \"IM\",\n \"name\": \"Isle of Man\",\n \"prefix\": \"44\"\n}, {\n \"iso2\": \"IL\",\n \"name\": \"Israel\",\n \"prefix\": \"972\"\n}, {\n \"iso2\": \"IT\",\n \"name\": \"Italy\",\n \"prefix\": \"39\"\n}, {\n \"iso2\": \"JM\",\n \"name\": \"Jamaica\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"JP\",\n \"name\": \"Japan\",\n \"prefix\": \"81\"\n}, {\n \"iso2\": \"JE\",\n \"name\": \"Jersey\",\n \"prefix\": \"44\"\n}, {\n \"iso2\": \"JO\",\n \"name\": \"Jordan\",\n \"prefix\": \"962\"\n}, {\n \"iso2\": \"KZ\",\n \"name\": \"Kazakhstan\",\n \"prefix\": \"7\"\n}, {\n \"iso2\": \"KE\",\n \"name\": \"Kenya\",\n \"prefix\": \"254\"\n}, {\n \"iso2\": \"KI\",\n \"name\": \"Kiribati\",\n \"prefix\": \"686\"\n}, {\n \"iso2\": \"KW\",\n \"name\": \"Kuwait\",\n \"prefix\": \"965\"\n}, {\n \"iso2\": \"KG\",\n \"name\": \"Kyrgyzstan\",\n \"prefix\": \"996\"\n}, {\n \"iso2\": \"LA\",\n \"name\": \"Laos\",\n \"prefix\": \"856\"\n}, {\n \"iso2\": \"LV\",\n \"name\": \"Latvia\",\n \"prefix\": \"371\"\n}, {\n \"iso2\": \"LB\",\n \"name\": \"Lebanon\",\n \"prefix\": \"961\"\n}, {\n \"iso2\": \"LS\",\n \"name\": \"Lesotho\",\n \"prefix\": \"266\"\n}, {\n \"iso2\": \"LR\",\n \"name\": \"Liberia\",\n \"prefix\": \"231\"\n}, {\n \"iso2\": \"LY\",\n \"name\": \"Libya\",\n \"prefix\": \"218\"\n}, {\n \"iso2\": \"LI\",\n \"name\": \"Liechtenstein\",\n \"prefix\": \"423\"\n}, {\n \"iso2\": \"LT\",\n \"name\": \"Lithuania\",\n \"prefix\": \"370\"\n}, {\n \"iso2\": \"LU\",\n \"name\": \"Luxembourg\",\n \"prefix\": \"352\"\n}, {\n \"iso2\": \"MO\",\n \"name\": \"Macau\",\n \"prefix\": \"853\"\n}, {\n \"iso2\": \"MK\",\n \"name\": \"Macedonia\",\n \"prefix\": \"389\"\n}, {\n \"iso2\": \"MG\",\n \"name\": \"Madagascar\",\n \"prefix\": \"261\"\n}, {\n \"iso2\": \"MW\",\n \"name\": \"Malawi\",\n \"prefix\": \"265\"\n}, {\n \"iso2\": \"MY\",\n \"name\": \"Malaysia\",\n \"prefix\": \"60\"\n}, {\n \"iso2\": \"MV\",\n \"name\": \"Maldives\",\n \"prefix\": \"960\"\n}, {\n \"iso2\": \"ML\",\n \"name\": \"Mali\",\n \"prefix\": \"223\"\n}, {\n \"iso2\": \"MT\",\n \"name\": \"Malta\",\n \"prefix\": \"356\"\n}, {\n \"iso2\": \"MH\",\n \"name\": \"Marshall Islands\",\n \"prefix\": \"692\"\n}, {\n \"iso2\": \"MQ\",\n \"name\": \"Martinique\",\n \"prefix\": \"596\"\n}, {\n \"iso2\": \"MR\",\n \"name\": \"Mauritania\",\n \"prefix\": \"222\"\n}, {\n \"iso2\": \"MU\",\n \"name\": \"Mauritius\",\n \"prefix\": \"230\"\n}, {\n \"iso2\": \"YT\",\n \"name\": \"Mayotte\",\n \"prefix\": \"262\"\n}, {\n \"iso2\": \"MX\",\n \"name\": \"Mexico\",\n \"prefix\": \"52\"\n}, {\n \"iso2\": \"FM\",\n \"name\": \"Micronesia\",\n \"prefix\": \"691\"\n}, {\n \"iso2\": \"MD\",\n \"name\": \"Moldova\",\n \"prefix\": \"373\"\n}, {\n \"iso2\": \"MC\",\n \"name\": \"Monaco\",\n \"prefix\": \"377\"\n}, {\n \"iso2\": \"MN\",\n \"name\": \"Mongolia\",\n \"prefix\": \"976\"\n}, {\n \"iso2\": \"ME\",\n \"name\": \"Montenegro\",\n \"prefix\": \"382\"\n}, {\n \"iso2\": \"MS\",\n \"name\": \"Montserrat\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"MA\",\n \"name\": \"Morocco\",\n \"prefix\": \"212\"\n}, {\n \"iso2\": \"MZ\",\n \"name\": \"Mozambique\",\n \"prefix\": \"258\"\n}, {\n \"iso2\": \"MM\",\n \"name\": \"Myanmar\",\n \"prefix\": \"95\"\n}, {\n \"iso2\": \"NA\",\n \"name\": \"Namibia\",\n \"prefix\": \"264\"\n}, {\n \"iso2\": \"NR\",\n \"name\": \"Nauru\",\n \"prefix\": \"674\"\n}, {\n \"iso2\": \"NP\",\n \"name\": \"Nepal\",\n \"prefix\": \"977\"\n}, {\n \"iso2\": \"NL\",\n \"name\": \"Netherlands\",\n \"prefix\": \"31\"\n}, {\n \"iso2\": \"NC\",\n \"name\": \"New Caledonia\",\n \"prefix\": \"687\"\n}, {\n \"iso2\": \"NZ\",\n \"name\": \"New Zealand\",\n \"prefix\": \"64\"\n}, {\n \"iso2\": \"NI\",\n \"name\": \"Nicaragua\",\n \"prefix\": \"505\"\n}, {\n \"iso2\": \"NE\",\n \"name\": \"Niger\",\n \"prefix\": \"227\"\n}, {\n \"iso2\": \"NG\",\n \"name\": \"Nigeria\",\n \"prefix\": \"234\"\n}, {\n \"iso2\": \"NU\",\n \"name\": \"Niue\",\n \"prefix\": \"683\"\n}, {\n \"iso2\": \"NF\",\n \"name\": \"Norfolk Island\",\n \"prefix\": \"672\"\n}, {\n \"iso2\": \"KP\",\n \"name\": \"North Korea\",\n \"prefix\": \"850\"\n}, {\n \"iso2\": \"MP\",\n \"name\": \"Northern Mariana Islands\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"NO\",\n \"name\": \"Norway\",\n \"prefix\": \"47\"\n}, {\n \"iso2\": \"OM\",\n \"name\": \"Oman\",\n \"prefix\": \"968\"\n}, {\n \"iso2\": \"PK\",\n \"name\": \"Pakistan\",\n \"prefix\": \"92\"\n}, {\n \"iso2\": \"PW\",\n \"name\": \"Palau\",\n \"prefix\": \"680\"\n}, {\n \"iso2\": \"PS\",\n \"name\": \"Palestine\",\n \"prefix\": \"970\"\n}, {\n \"iso2\": \"PA\",\n \"name\": \"Panama\",\n \"prefix\": \"507\"\n}, {\n \"iso2\": \"PG\",\n \"name\": \"Papua New Guinea\",\n \"prefix\": \"675\"\n}, {\n \"iso2\": \"PY\",\n \"name\": \"Paraguay\",\n \"prefix\": \"595\"\n}, {\n \"iso2\": \"PE\",\n \"name\": \"Peru\",\n \"prefix\": \"51\"\n}, {\n \"iso2\": \"PH\",\n \"name\": \"Philippines\",\n \"prefix\": \"63\"\n}, {\n \"iso2\": \"PN\",\n \"name\": \"Pitcairn Islands\",\n \"prefix\": \"870\"\n}, {\n \"iso2\": \"PL\",\n \"name\": \"Poland\",\n \"prefix\": \"48\"\n}, {\n \"iso2\": \"PT\",\n \"name\": \"Portugal\",\n \"prefix\": \"351\"\n}, {\n \"iso2\": \"PR\",\n \"name\": \"Puerto Rico\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"QA\",\n \"name\": \"Qatar\",\n \"prefix\": \"974\"\n}, {\n \"iso2\": \"RO\",\n \"name\": \"Romania\",\n \"prefix\": \"40\"\n}, {\n \"iso2\": \"RU\",\n \"name\": \"Russia\",\n \"prefix\": \"7\"\n}, {\n \"iso2\": \"RW\",\n \"name\": \"Rwanda\",\n \"prefix\": \"250\"\n}, {\n \"iso2\": \"RE\",\n \"name\": \"R\\xE9union\",\n \"prefix\": \"262\"\n}, {\n \"iso2\": \"WS\",\n \"name\": \"Samoa\",\n \"prefix\": \"685\"\n}, {\n \"iso2\": \"SM\",\n \"name\": \"San Marino\",\n \"prefix\": \"378\"\n}, {\n \"iso2\": \"SA\",\n \"name\": \"Saudi Arabia\",\n \"prefix\": \"966\"\n}, {\n \"iso2\": \"SN\",\n \"name\": \"Senegal\",\n \"prefix\": \"221\"\n}, {\n \"iso2\": \"RS\",\n \"name\": \"Serbia\",\n \"prefix\": \"381 p\"\n}, {\n \"iso2\": \"SC\",\n \"name\": \"Seychelles\",\n \"prefix\": \"248\"\n}, {\n \"iso2\": \"SL\",\n \"name\": \"Sierra Leone\",\n \"prefix\": \"232\"\n}, {\n \"iso2\": \"SG\",\n \"name\": \"Singapore\",\n \"prefix\": \"65\"\n}, {\n \"iso2\": \"SX\",\n \"name\": \"Sint Maarten\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"SK\",\n \"name\": \"Slovakia\",\n \"prefix\": \"421\"\n}, {\n \"iso2\": \"SI\",\n \"name\": \"Slovenia\",\n \"prefix\": \"386\"\n}, {\n \"iso2\": \"SB\",\n \"name\": \"Solomon Islands\",\n \"prefix\": \"677\"\n}, {\n \"iso2\": \"SO\",\n \"name\": \"Somalia\",\n \"prefix\": \"252\"\n}, {\n \"iso2\": \"ZA\",\n \"name\": \"South Africa\",\n \"prefix\": \"27\"\n}, {\n \"iso2\": \"GS\",\n \"name\": \"South Georgia & South Sandwich Islands\",\n \"prefix\": \"500\"\n}, {\n \"iso2\": \"KR\",\n \"name\": \"South Korea\",\n \"prefix\": \"82\"\n}, {\n \"iso2\": \"SS\",\n \"name\": \"South Sudan\",\n \"prefix\": \"211\"\n}, {\n \"iso2\": \"ES\",\n \"name\": \"Spain\",\n \"prefix\": \"34\"\n}, {\n \"iso2\": \"LK\",\n \"name\": \"Sri Lanka\",\n \"prefix\": \"94\"\n}, {\n \"iso2\": \"BL\",\n \"name\": \"St. Barth\\xE9lemy\",\n \"prefix\": \"590\"\n}, {\n \"iso2\": \"SH\",\n \"name\": \"St. Helena\",\n \"prefix\": \"290 n\"\n}, {\n \"iso2\": \"KN\",\n \"name\": \"St. Kitts & Nevis\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"LC\",\n \"name\": \"St. Lucia\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"MF\",\n \"name\": \"St. Martin\",\n \"prefix\": \"590\"\n}, {\n \"iso2\": \"PM\",\n \"name\": \"St. Pierre & Miquelon\",\n \"prefix\": \"508\"\n}, {\n \"iso2\": \"VC\",\n \"name\": \"St. Vincent & Grenadines\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"SD\",\n \"name\": \"Sudan\",\n \"prefix\": \"249\"\n}, {\n \"iso2\": \"SR\",\n \"name\": \"Suriname\",\n \"prefix\": \"597\"\n}, {\n \"iso2\": \"SJ\",\n \"name\": \"Svalbard & Jan Mayen\",\n \"prefix\": \"47\"\n}, {\n \"iso2\": \"SZ\",\n \"name\": \"Swaziland\",\n \"prefix\": \"268\"\n}, {\n \"iso2\": \"SE\",\n \"name\": \"Sweden\",\n \"prefix\": \"46\"\n}, {\n \"iso2\": \"CH\",\n \"name\": \"Switzerland\",\n \"prefix\": \"41\"\n}, {\n \"iso2\": \"SY\",\n \"name\": \"Syria\",\n \"prefix\": \"963\"\n}, {\n \"iso2\": \"ST\",\n \"name\": \"S\\xE3o Tom\\xE9 & Pr\\xEDncipe\",\n \"prefix\": \"239\"\n}, {\n \"iso2\": \"TW\",\n \"name\": \"Taiwan\",\n \"prefix\": \"886\"\n}, {\n \"iso2\": \"TJ\",\n \"name\": \"Tajikistan\",\n \"prefix\": \"992\"\n}, {\n \"iso2\": \"TZ\",\n \"name\": \"Tanzania\",\n \"prefix\": \"255\"\n}, {\n \"iso2\": \"TH\",\n \"name\": \"Thailand\",\n \"prefix\": \"66\"\n}, {\n \"iso2\": \"TL\",\n \"name\": \"Timor-Leste\",\n \"prefix\": \"670\"\n}, {\n \"iso2\": \"TG\",\n \"name\": \"Togo\",\n \"prefix\": \"228\"\n}, {\n \"iso2\": \"TK\",\n \"name\": \"Tokelau\",\n \"prefix\": \"690\"\n}, {\n \"iso2\": \"TO\",\n \"name\": \"Tonga\",\n \"prefix\": \"676\"\n}, {\n \"iso2\": \"TT\",\n \"name\": \"Trinidad & Tobago\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"TN\",\n \"name\": \"Tunisia\",\n \"prefix\": \"216\"\n}, {\n \"iso2\": \"TR\",\n \"name\": \"Turkey\",\n \"prefix\": \"90\"\n}, {\n \"iso2\": \"TM\",\n \"name\": \"Turkmenistan\",\n \"prefix\": \"993\"\n}, {\n \"iso2\": \"TC\",\n \"name\": \"Turks & Caicos Islands\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"TV\",\n \"name\": \"Tuvalu\",\n \"prefix\": \"688\"\n}, {\n \"iso2\": \"VI\",\n \"name\": \"U.S. Virgin Islands\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"UG\",\n \"name\": \"Uganda\",\n \"prefix\": \"256\"\n}, {\n \"iso2\": \"UA\",\n \"name\": \"Ukraine\",\n \"prefix\": \"380\"\n}, {\n \"iso2\": \"AE\",\n \"name\": \"United Arab Emirates\",\n \"prefix\": \"971\"\n}, {\n \"iso2\": \"UY\",\n \"name\": \"Uruguay\",\n \"prefix\": \"598\"\n}, {\n \"iso2\": \"UZ\",\n \"name\": \"Uzbekistan\",\n \"prefix\": \"998\"\n}, {\n \"iso2\": \"VU\",\n \"name\": \"Vanuatu\",\n \"prefix\": \"678\"\n}, {\n \"iso2\": \"VA\",\n \"name\": \"Vatican City\",\n \"prefix\": \"39\"\n}, {\n \"iso2\": \"VE\",\n \"name\": \"Venezuela\",\n \"prefix\": \"58\"\n}, {\n \"iso2\": \"VN\",\n \"name\": \"Vietnam\",\n \"prefix\": \"84\"\n}, {\n \"iso2\": \"WF\",\n \"name\": \"Wallis & Futuna\",\n \"prefix\": \"681\"\n}, {\n \"iso2\": \"EH\",\n \"name\": \"Western Sahara\",\n \"prefix\": \"212\"\n}, {\n \"iso2\": \"YE\",\n \"name\": \"Yemen\",\n \"prefix\": \"967\"\n}, {\n \"iso2\": \"ZM\",\n \"name\": \"Zambia\",\n \"prefix\": \"260\"\n}, {\n \"iso2\": \"ZW\",\n \"name\": \"Zimbabwe\",\n \"prefix\": \"263\"\n}];\n//# sourceMappingURL=phonenumber.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bluebird = require('bluebird');\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _AutoDiscoveryUtils = require('../../../utils/AutoDiscoveryUtils');\n\nvar _AutoDiscoveryUtils2 = _interopRequireDefault(_AutoDiscoveryUtils);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _matrix = require('matrix-js-sdk/lib/matrix');\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n * A pure UI component which displays the HS and IS to use.\n */\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2019 New Vector Ltd\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar ServerConfig = function (_React$PureComponent) {\n (0, _inherits3.default)(ServerConfig, _React$PureComponent);\n\n function ServerConfig(props) {\n var _this2 = this;\n\n (0, _classCallCheck3.default)(this, ServerConfig);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (ServerConfig.__proto__ || (0, _getPrototypeOf2.default)(ServerConfig)).call(this, props));\n\n _this.onHomeserverBlur = function (ev) {\n _this._hsTimeoutId = _this._waitThenInvoke(_this._hsTimeoutId, function () {\n _this.validateServer();\n });\n };\n\n _this.onHomeserverChange = function (ev) {\n var hsUrl = ev.target.value;\n _this.setState({ hsUrl: hsUrl });\n };\n\n _this.onIdentityServerBlur = function (ev) {\n _this._isTimeoutId = _this._waitThenInvoke(_this._isTimeoutId, function () {\n _this.validateServer();\n });\n };\n\n _this.onIdentityServerChange = function (ev) {\n var isUrl = ev.target.value;\n _this.setState({ isUrl: isUrl });\n };\n\n _this.onSubmit = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(ev) {\n var result;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n ev.preventDefault();\n ev.stopPropagation();\n _context.next = 4;\n return (0, _bluebird.resolve)(_this.validateServer());\n\n case 4:\n result = _context.sent;\n\n if (result) {\n _context.next = 7;\n break;\n }\n\n return _context.abrupt('return');\n\n case 7:\n // Do not continue.\n\n if (_this.props.onAfterSubmit) {\n _this.props.onAfterSubmit();\n }\n\n case 8:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this2);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }();\n\n _this.showHelpPopup = function () {\n var CustomServerDialog = _index2.default.getComponent('auth.CustomServerDialog');\n _Modal2.default.createTrackedDialog('Custom Server Dialog', '', CustomServerDialog);\n };\n\n _this.state = {\n busy: false,\n errorText: \"\",\n hsUrl: props.serverConfig.hsUrl,\n isUrl: props.serverConfig.isUrl,\n showIdentityServer: false\n };\n return _this;\n }\n\n (0, _createClass3.default)(ServerConfig, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(newProps) {\n if (newProps.serverConfig.hsUrl === this.state.hsUrl && newProps.serverConfig.isUrl === this.state.isUrl) return;\n\n this.validateAndApplyServer(newProps.serverConfig.hsUrl, newProps.serverConfig.isUrl);\n }\n }, {\n key: 'validateServer',\n value: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var result;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n // TODO: Do we want to support .well-known lookups here?\n // If for some reason someone enters \"matrix.org\" for a URL, we could do a lookup to\n // find their homeserver without demanding they use \"https://matrix.org\"\n result = this.validateAndApplyServer(this.state.hsUrl, this.state.isUrl);\n\n if (result) {\n _context2.next = 3;\n break;\n }\n\n return _context2.abrupt('return', result);\n\n case 3:\n _context2.t0 = this.props.showIdentityServerIfRequiredByHomeserver && !this.state.showIdentityServer;\n\n if (!_context2.t0) {\n _context2.next = 8;\n break;\n }\n\n _context2.next = 7;\n return (0, _bluebird.resolve)(this.isIdentityServerRequiredByHomeserver());\n\n case 7:\n _context2.t0 = _context2.sent;\n\n case 8:\n if (!_context2.t0) {\n _context2.next = 11;\n break;\n }\n\n this.setState({\n showIdentityServer: true\n });\n return _context2.abrupt('return', null);\n\n case 11:\n return _context2.abrupt('return', result);\n\n case 12:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function validateServer() {\n return _ref2.apply(this, arguments);\n }\n\n return validateServer;\n }()\n }, {\n key: 'validateAndApplyServer',\n value: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(hsUrl, isUrl) {\n var defaultConfig, result, stateForError, _result, message;\n\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n // Always try and use the defaults first\n defaultConfig = _SdkConfig2.default.get()[\"validated_server_config\"];\n\n if (!(defaultConfig.hsUrl === hsUrl && defaultConfig.isUrl === isUrl)) {\n _context3.next = 5;\n break;\n }\n\n this.setState({\n hsUrl: defaultConfig.hsUrl,\n isUrl: defaultConfig.isUrl,\n busy: false,\n errorText: \"\"\n });\n this.props.onServerConfigChange(defaultConfig);\n return _context3.abrupt('return', defaultConfig);\n\n case 5:\n\n this.setState({\n hsUrl: hsUrl,\n isUrl: isUrl,\n busy: true,\n errorText: \"\"\n });\n\n _context3.prev = 6;\n _context3.next = 9;\n return (0, _bluebird.resolve)(_AutoDiscoveryUtils2.default.validateServerConfigWithStaticUrls(hsUrl, isUrl));\n\n case 9:\n result = _context3.sent;\n\n this.setState({ busy: false, errorText: \"\" });\n this.props.onServerConfigChange(result);\n return _context3.abrupt('return', result);\n\n case 15:\n _context3.prev = 15;\n _context3.t0 = _context3['catch'](6);\n\n console.error(_context3.t0);\n\n stateForError = _AutoDiscoveryUtils2.default.authComponentStateForError(_context3.t0);\n\n if (stateForError.isFatalError) {\n _context3.next = 28;\n break;\n }\n\n this.setState({\n busy: false\n });\n // carry on anyway\n _context3.next = 23;\n return (0, _bluebird.resolve)(_AutoDiscoveryUtils2.default.validateServerConfigWithStaticUrls(hsUrl, isUrl, true));\n\n case 23:\n _result = _context3.sent;\n\n this.props.onServerConfigChange(_result);\n return _context3.abrupt('return', _result);\n\n case 28:\n message = (0, _languageHandler._t)(\"Unable to validate homeserver/identity server\");\n\n if (_context3.t0.translatedMessage) {\n message = _context3.t0.translatedMessage;\n }\n this.setState({\n busy: false,\n errorText: message\n });\n\n return _context3.abrupt('return', null);\n\n case 32:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this, [[6, 15]]);\n }));\n\n function validateAndApplyServer(_x2, _x3) {\n return _ref3.apply(this, arguments);\n }\n\n return validateAndApplyServer;\n }()\n }, {\n key: 'isIdentityServerRequiredByHomeserver',\n value: function () {\n var _ref4 = (0, _bluebird.method)(function () {\n // XXX: We shouldn't have to create a whole new MatrixClient just to\n // check if the homeserver requires an identity server... Should it be\n // extracted to a static utils function...?\n return (0, _matrix.createClient)({\n baseUrl: this.state.hsUrl\n }).doesServerRequireIdServerParam();\n });\n\n function isIdentityServerRequiredByHomeserver() {\n return _ref4.apply(this, arguments);\n }\n\n return isIdentityServerRequiredByHomeserver;\n }()\n }, {\n key: '_waitThenInvoke',\n value: function _waitThenInvoke(existingTimeoutId, fn) {\n if (existingTimeoutId) {\n clearTimeout(existingTimeoutId);\n }\n return setTimeout(fn.bind(this), this.props.delayTimeMs);\n }\n }, {\n key: '_renderHomeserverSection',\n value: function _renderHomeserverSection() {\n var _this3 = this;\n\n var Field = _index2.default.getComponent('elements.Field');\n return _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"Enter your custom homeserver URL What does this mean?\", {}, {\n a: function a(sub) {\n return _react2.default.createElement(\n 'a',\n { className: 'mx_ServerConfig_help', href: '#', onClick: _this3.showHelpPopup },\n sub\n );\n }\n }),\n _react2.default.createElement(Field, { id: 'mx_ServerConfig_hsUrl',\n label: (0, _languageHandler._t)(\"Homeserver URL\"),\n placeholder: this.props.serverConfig.hsUrl,\n value: this.state.hsUrl,\n onBlur: this.onHomeserverBlur,\n onChange: this.onHomeserverChange,\n disabled: this.state.busy\n })\n );\n }\n }, {\n key: '_renderIdentityServerSection',\n value: function _renderIdentityServerSection() {\n var _this4 = this;\n\n var Field = _index2.default.getComponent('elements.Field');\n var classes = (0, _classnames2.default)({\n \"mx_ServerConfig_identityServer\": true,\n \"mx_ServerConfig_identityServer_shown\": this.state.showIdentityServer\n });\n return _react2.default.createElement(\n 'div',\n { className: classes },\n (0, _languageHandler._t)(\"Enter your custom identity server URL What does this mean?\", {}, {\n a: function a(sub) {\n return _react2.default.createElement(\n 'a',\n { className: 'mx_ServerConfig_help', href: '#', onClick: _this4.showHelpPopup },\n sub\n );\n }\n }),\n _react2.default.createElement(Field, { id: 'mx_ServerConfig_isUrl',\n label: (0, _languageHandler._t)(\"Identity Server URL\"),\n placeholder: this.props.serverConfig.isUrl,\n value: this.state.isUrl || '',\n onBlur: this.onIdentityServerBlur,\n onChange: this.onIdentityServerChange,\n disabled: this.state.busy\n })\n );\n }\n }, {\n key: 'render',\n value: function render() {\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n\n var errorText = this.state.errorText ? _react2.default.createElement(\n 'span',\n { className: 'mx_ServerConfig_error' },\n this.state.errorText\n ) : null;\n\n var submitButton = this.props.submitText ? _react2.default.createElement(\n AccessibleButton,\n {\n element: 'button',\n type: 'submit',\n className: this.props.submitClass,\n onClick: this.onSubmit,\n disabled: this.state.busy },\n this.props.submitText\n ) : null;\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_ServerConfig' },\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Other servers\")\n ),\n errorText,\n this._renderHomeserverSection(),\n this._renderIdentityServerSection(),\n _react2.default.createElement(\n 'form',\n { onSubmit: this.onSubmit, autoComplete: false, action: null },\n submitButton\n )\n );\n }\n }]);\n return ServerConfig;\n}(_react2.default.PureComponent);\n\nServerConfig.propTypes = {\n onServerConfigChange: _propTypes2.default.func.isRequired,\n\n // The current configuration that the user is expecting to change.\n serverConfig: _propTypes2.default.instanceOf(_AutoDiscoveryUtils.ValidatedServerConfig).isRequired,\n\n delayTimeMs: _propTypes2.default.number, // time to wait before invoking onChanged\n\n // Called after the component calls onServerConfigChange\n onAfterSubmit: _propTypes2.default.func,\n\n // Optional text for the submit button. If falsey, no button will be shown.\n submitText: _propTypes2.default.string,\n\n // Optional class for the submit button. Only applies if the submit button\n // is to be rendered.\n submitClass: _propTypes2.default.string,\n\n // Whether the flow this component is embedded in requires an identity\n // server when the homeserver says it will need one. Default false.\n showIdentityServerIfRequiredByHomeserver: _propTypes2.default.bool\n};\nServerConfig.defaultProps = {\n onServerConfigChange: function onServerConfigChange() {},\n delayTimeMs: 0\n};\nexports.default = ServerConfig;\nmodule.exports = exports['default'];\n//# sourceMappingURL=ServerConfig.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar StatusMessageContextMenu = function (_React$Component) {\n (0, _inherits3.default)(StatusMessageContextMenu, _React$Component);\n\n function StatusMessageContextMenu(props, context) {\n (0, _classCallCheck3.default)(this, StatusMessageContextMenu);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (StatusMessageContextMenu.__proto__ || (0, _getPrototypeOf2.default)(StatusMessageContextMenu)).call(this, props, context));\n\n _this._onStatusMessageCommitted = function () {\n // The `User` object has observed a status message change.\n _this.setState({\n message: _this.comittedStatusMessage,\n waiting: false\n });\n };\n\n _this._onClearClick = function (e) {\n _MatrixClientPeg2.default.get()._unstable_setStatusMessage(\"\");\n _this.setState({\n waiting: true\n });\n };\n\n _this._onSubmit = function (e) {\n e.preventDefault();\n _MatrixClientPeg2.default.get()._unstable_setStatusMessage(_this.state.message);\n _this.setState({\n waiting: true\n });\n };\n\n _this._onStatusChange = function (e) {\n // The input field's value was changed.\n _this.setState({\n message: e.target.value\n });\n };\n\n _this.state = {\n message: _this.comittedStatusMessage\n };\n return _this;\n }\n\n (0, _createClass3.default)(StatusMessageContextMenu, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n var user = this.props.user;\n\n if (!user) {\n return;\n }\n user.on(\"User._unstable_statusMessage\", this._onStatusMessageCommitted);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n var user = this.props.user;\n\n if (!user) {\n return;\n }\n user.removeListener(\"User._unstable_statusMessage\", this._onStatusMessageCommitted);\n }\n }, {\n key: 'render',\n value: function render() {\n var Spinner = _index2.default.getComponent('views.elements.Spinner');\n\n var actionButton = void 0;\n if (this.comittedStatusMessage) {\n if (this.state.message === this.comittedStatusMessage) {\n actionButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_StatusMessageContextMenu_clear',\n onClick: this._onClearClick\n },\n _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"Clear status\")\n )\n );\n } else {\n actionButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_StatusMessageContextMenu_submit',\n onClick: this._onSubmit\n },\n _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"Update status\")\n )\n );\n }\n } else {\n actionButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_StatusMessageContextMenu_submit',\n disabled: !this.state.message, onClick: this._onSubmit\n },\n _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"Set status\")\n )\n );\n }\n\n var spinner = null;\n if (this.state.waiting) {\n spinner = _react2.default.createElement(Spinner, { w: '24', h: '24' });\n }\n\n var form = _react2.default.createElement(\n 'form',\n { className: 'mx_StatusMessageContextMenu_form',\n autoComplete: 'off', onSubmit: this._onSubmit\n },\n _react2.default.createElement('input', { type: 'text', className: 'mx_StatusMessageContextMenu_message',\n key: 'message', placeholder: (0, _languageHandler._t)(\"Set a new status...\"),\n autoFocus: true, maxLength: '60', value: this.state.message,\n onChange: this._onStatusChange\n }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_StatusMessageContextMenu_actionContainer' },\n actionButton,\n spinner\n )\n );\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_StatusMessageContextMenu' },\n form\n );\n }\n }, {\n key: 'comittedStatusMessage',\n get: function get() {\n return this.props.user ? this.props.user._unstable_statusMessage : \"\";\n }\n }]);\n return StatusMessageContextMenu;\n}(_react2.default.Component);\n\nStatusMessageContextMenu.propTypes = {\n // js-sdk User object. Not required because it might not exist.\n user: _propTypes2.default.object\n};\nexports.default = StatusMessageContextMenu;\nmodule.exports = exports['default'];\n//# sourceMappingURL=StatusMessageContextMenu.js.map","'use strict';\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Avatar = require('../../../Avatar');\n\nvar _Avatar2 = _interopRequireDefault(_Avatar);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nmodule.exports = (0, _createReactClass2.default)({\n displayName: 'RoomAvatar',\n\n // Room may be left unset here, but if it is,\n // oobData.avatarUrl should be set (else there\n // would be nowhere to get the avatar from)\n propTypes: {\n room: _propTypes2.default.object,\n oobData: _propTypes2.default.object,\n width: _propTypes2.default.number,\n height: _propTypes2.default.number,\n resizeMethod: _propTypes2.default.string,\n viewAvatarOnClick: _propTypes2.default.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n width: 36,\n height: 36,\n resizeMethod: 'crop',\n oobData: {}\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n urls: this.getImageUrls(this.props)\n };\n },\n\n componentWillMount: function componentWillMount() {\n _MatrixClientPeg2.default.get().on(\"RoomState.events\", this.onRoomStateEvents);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n var cli = _MatrixClientPeg2.default.get();\n if (cli) {\n cli.removeListener(\"RoomState.events\", this.onRoomStateEvents);\n }\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n this.setState({\n urls: this.getImageUrls(newProps)\n });\n },\n\n onRoomStateEvents: function onRoomStateEvents(ev) {\n if (!this.props.room || ev.getRoomId() !== this.props.room.roomId || ev.getType() !== 'm.room.avatar') return;\n\n this.setState({\n urls: this.getImageUrls(this.props)\n });\n },\n\n getImageUrls: function getImageUrls(props) {\n return [_matrixJsSdk.ContentRepo.getHttpUriForMxc(_MatrixClientPeg2.default.get().getHomeserverUrl(), props.oobData.avatarUrl, Math.floor(props.width * window.devicePixelRatio), Math.floor(props.height * window.devicePixelRatio), props.resizeMethod), // highest priority\n this.getRoomAvatarUrl(props)].filter(function (url) {\n return url != null && url != \"\";\n });\n },\n\n getRoomAvatarUrl: function getRoomAvatarUrl(props) {\n if (!props.room) return null;\n\n return _Avatar2.default.avatarUrlForRoom(props.room, Math.floor(props.width * window.devicePixelRatio), Math.floor(props.height * window.devicePixelRatio), props.resizeMethod);\n },\n\n onRoomAvatarClick: function onRoomAvatarClick() {\n var avatarUrl = this.props.room.getAvatarUrl(_MatrixClientPeg2.default.get().getHomeserverUrl(), null, null, null, false);\n var ImageView = _index2.default.getComponent(\"elements.ImageView\");\n var params = {\n src: avatarUrl,\n name: this.props.room.name\n };\n\n _Modal2.default.createDialog(ImageView, params, \"mx_Dialog_lightbox\");\n },\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent(\"avatars.BaseAvatar\");\n\n /*eslint no-unused-vars: [\"error\", { \"ignoreRestSiblings\": true }]*/\n var _props = this.props,\n room = _props.room,\n oobData = _props.oobData,\n viewAvatarOnClick = _props.viewAvatarOnClick,\n otherProps = (0, _objectWithoutProperties3.default)(_props, ['room', 'oobData', 'viewAvatarOnClick']);\n\n\n var roomName = room ? room.name : oobData.name;\n\n return _react2.default.createElement(BaseAvatar, (0, _extends3.default)({}, otherProps, { name: roomName,\n idName: room ? room.roomId : null,\n urls: this.state.urls,\n onClick: this.props.viewAvatarOnClick ? this.onRoomAvatarClick : null,\n disabled: !this.state.urls[0] }));\n }\n});\n//# sourceMappingURL=RoomAvatar.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Analytics = require('../../../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Lifecycle = require('../../../Lifecycle');\n\nvar Lifecycle = _interopRequireWildcard(_Lifecycle);\n\nvar _velocityAnimate = require('velocity-animate');\n\nvar _velocityAnimate2 = _interopRequireDefault(_velocityAnimate);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar DeactivateAccountDialog = function (_React$Component) {\n (0, _inherits3.default)(DeactivateAccountDialog, _React$Component);\n\n function DeactivateAccountDialog(props, context) {\n (0, _classCallCheck3.default)(this, DeactivateAccountDialog);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DeactivateAccountDialog.__proto__ || (0, _getPrototypeOf2.default)(DeactivateAccountDialog)).call(this, props, context));\n\n _this._passwordField = null;\n\n _this._onOk = _this._onOk.bind(_this);\n _this._onCancel = _this._onCancel.bind(_this);\n _this._onPasswordFieldChange = _this._onPasswordFieldChange.bind(_this);\n _this._onEraseFieldChange = _this._onEraseFieldChange.bind(_this);\n\n _this.state = {\n password: \"\",\n busy: false,\n shouldErase: false,\n errStr: null\n };\n return _this;\n }\n\n (0, _createClass3.default)(DeactivateAccountDialog, [{\n key: '_onPasswordFieldChange',\n value: function _onPasswordFieldChange(ev) {\n this.setState({\n password: ev.target.value\n });\n }\n }, {\n key: '_onEraseFieldChange',\n value: function _onEraseFieldChange(ev) {\n this.setState({\n shouldErase: ev.target.checked\n });\n }\n }, {\n key: '_onOk',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var auth, errStr;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.setState({ busy: true });\n\n _context.prev = 1;\n\n // This assumes that the HS requires password UI auth\n // for this endpoint. In reality it could be any UI auth.\n auth = {\n type: 'm.login.password',\n // TODO: Remove `user` once servers support proper UIA\n // See https://github.com/vector-im/riot-web/issues/10312\n user: _MatrixClientPeg2.default.get().credentials.userId,\n identifier: {\n type: \"m.id.user\",\n user: _MatrixClientPeg2.default.get().credentials.userId\n },\n password: this.state.password\n };\n _context.next = 5;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get().deactivateAccount(auth, this.state.shouldErase));\n\n case 5:\n _context.next = 13;\n break;\n\n case 7:\n _context.prev = 7;\n _context.t0 = _context['catch'](1);\n errStr = (0, _languageHandler._t)('Unknown error');\n // https://matrix.org/jira/browse/SYN-744\n\n if (_context.t0.httpStatus === 401 || _context.t0.httpStatus === 403) {\n errStr = (0, _languageHandler._t)('Incorrect password');\n (0, _velocityAnimate2.default)(this._passwordField, \"callout.shake\", 300);\n }\n this.setState({\n busy: false,\n errStr: errStr\n });\n return _context.abrupt('return');\n\n case 13:\n\n _Analytics2.default.trackEvent('Account', 'Deactivate Account');\n Lifecycle.onLoggedOut();\n this.props.onFinished(true);\n\n case 16:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[1, 7]]);\n }));\n\n function _onOk() {\n return _ref.apply(this, arguments);\n }\n\n return _onOk;\n }()\n }, {\n key: '_onCancel',\n value: function _onCancel() {\n this.props.onFinished(false);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n var passwordBoxClass = '';\n\n var error = null;\n if (this.state.errStr) {\n error = _react2.default.createElement(\n 'div',\n { className: 'error' },\n this.state.errStr\n );\n passwordBoxClass = 'error';\n }\n\n var okLabel = this.state.busy ? _react2.default.createElement(Loader, null) : (0, _languageHandler._t)('Deactivate Account');\n var okEnabled = this.state.password && !this.state.busy;\n\n var cancelButton = null;\n if (!this.state.busy) {\n cancelButton = _react2.default.createElement(\n 'button',\n { onClick: this._onCancel, autoFocus: true },\n (0, _languageHandler._t)(\"Cancel\")\n );\n }\n\n var Field = _index2.default.getComponent('elements.Field');\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_DeactivateAccountDialog',\n onFinished: this.props.onFinished,\n onEnterPressed: this.onOk,\n titleClass: 'danger',\n title: (0, _languageHandler._t)(\"Deactivate Account\")\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"This will make your account permanently unusable. \" + \"You will not be able to log in, and no one will be able to re-register the same \" + \"user ID. \" + \"This will cause your account to leave all rooms it is participating in, and it \" + \"will remove your account details from your identity server. \" + \"This action is irreversible.\", {}, { b: function b(sub) {\n return _react2.default.createElement(\n 'b',\n null,\n ' ',\n sub,\n ' '\n );\n } })\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Deactivating your account does not by default cause us to forget messages you \" + \"have sent. \" + \"If you would like us to forget your messages, please tick the box below.\", {}, { b: function b(sub) {\n return _react2.default.createElement(\n 'b',\n null,\n ' ',\n sub,\n ' '\n );\n } })\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Message visibility in Matrix is similar to email. \" + \"Our forgetting your messages means that messages you have sent will not be shared \" + \"with any new or unregistered users, but registered users who already have access \" + \"to these messages will still have access to their copy.\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DeactivateAccountDialog_input_section' },\n _react2.default.createElement(\n 'p',\n null,\n _react2.default.createElement(\n 'label',\n { htmlFor: 'mx_DeactivateAccountDialog_erase_account_input' },\n _react2.default.createElement('input', {\n id: 'mx_DeactivateAccountDialog_erase_account_input',\n type: 'checkbox',\n checked: this.state.shouldErase,\n onChange: this._onEraseFieldChange\n }),\n (0, _languageHandler._t)(\"Please forget all messages I have sent when my account is deactivated \" + \"(Warning: this will cause future users to see an incomplete view \" + \"of conversations)\", {}, { b: function b(sub) {\n return _react2.default.createElement(\n 'b',\n null,\n sub\n );\n } })\n )\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"To continue, please enter your password:\")\n ),\n _react2.default.createElement(Field, {\n id: 'mx_DeactivateAccountDialog_password',\n type: 'password',\n label: (0, _languageHandler._t)('Password'),\n onChange: this._onPasswordFieldChange,\n value: this.state.password,\n ref: function ref(e) {\n _this2._passwordField = e;\n },\n className: passwordBoxClass\n })\n ),\n error\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n {\n className: 'mx_Dialog_primary danger',\n onClick: this._onOk,\n disabled: !okEnabled\n },\n okLabel\n ),\n cancelButton\n )\n );\n }\n }]);\n return DeactivateAccountDialog;\n}(_react2.default.Component);\n\nexports.default = DeactivateAccountDialog;\n\n\nDeactivateAccountDialog.propTypes = {\n onFinished: _propTypes2.default.func.isRequired\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=DeactivateAccountDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _ = require('../../../../..');\n\nvar _2 = _interopRequireDefault(_);\n\nvar _AccessibleButton = require('../../../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _Modal = require('../../../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _dispatcher = require('../../../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar AdvancedRoomSettingsTab = function (_React$Component) {\n (0, _inherits3.default)(AdvancedRoomSettingsTab, _React$Component);\n\n function AdvancedRoomSettingsTab() {\n (0, _classCallCheck3.default)(this, AdvancedRoomSettingsTab);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (AdvancedRoomSettingsTab.__proto__ || (0, _getPrototypeOf2.default)(AdvancedRoomSettingsTab)).call(this));\n\n _this._upgradeRoom = function (e) {\n var RoomUpgradeDialog = _2.default.getComponent('dialogs.RoomUpgradeDialog');\n var room = _MatrixClientPeg2.default.get().getRoom(_this.props.roomId);\n _Modal2.default.createTrackedDialog('Upgrade Room Version', '', RoomUpgradeDialog, { room: room });\n };\n\n _this._openDevtools = function (e) {\n var DevtoolsDialog = _2.default.getComponent('dialogs.DevtoolsDialog');\n _Modal2.default.createDialog(DevtoolsDialog, { roomId: _this.props.roomId });\n };\n\n _this._onOldRoomClicked = function (e) {\n e.preventDefault();\n e.stopPropagation();\n\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: _this.state.oldRoomId,\n event_id: _this.state.oldEventId\n });\n _this.props.closeSettingsFn();\n };\n\n _this.state = {\n // This is eventually set to the value of room.getRecommendedVersion()\n upgradeRecommendation: null\n };\n return _this;\n }\n\n (0, _createClass3.default)(AdvancedRoomSettingsTab, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n var _this2 = this;\n\n // we handle lack of this object gracefully later, so don't worry about it failing here.\n var room = _MatrixClientPeg2.default.get().getRoom(this.props.roomId);\n room.getRecommendedVersion().then(function (v) {\n var tombstone = room.currentState.getStateEvents(\"m.room.tombstone\", \"\");\n\n var additionalStateChanges = {};\n var createEvent = room.currentState.getStateEvents(\"m.room.create\", \"\");\n var predecessor = createEvent ? createEvent.getContent().predecessor : null;\n if (predecessor && predecessor.room_id) {\n additionalStateChanges['oldRoomId'] = predecessor.room_id;\n additionalStateChanges['oldEventId'] = predecessor.event_id;\n additionalStateChanges['hasPreviousRoom'] = true;\n }\n\n _this2.setState((0, _extends3.default)({\n upgraded: tombstone && tombstone.getContent().replacement_room,\n upgradeRecommendation: v\n }, additionalStateChanges));\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var client = _MatrixClientPeg2.default.get();\n var room = client.getRoom(this.props.roomId);\n\n var unfederatableSection = void 0;\n var createEvent = room.currentState.getStateEvents('m.room.create', '');\n if (createEvent && createEvent.getContent()['m.federate'] === false) {\n unfederatableSection = _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('This room is not accessible by remote Matrix servers')\n );\n }\n\n var roomUpgradeButton = void 0;\n if (this.state.upgradeRecommendation && this.state.upgradeRecommendation.needsUpgrade && !this.state.upgraded) {\n roomUpgradeButton = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n { className: 'mx_SettingsTab_warningText' },\n (0, _languageHandler._t)(\"Warning: Upgrading a room will not automatically migrate room members \" + \"to the new version of the room. We'll post a link to the new room in the old \" + \"version of the room - room members will have to click this link to join the new room.\", {}, {\n \"b\": function b(sub) {\n return _react2.default.createElement(\n 'b',\n null,\n sub\n );\n },\n \"i\": function i(sub) {\n return _react2.default.createElement(\n 'i',\n null,\n sub\n );\n }\n })\n ),\n _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this._upgradeRoom, kind: 'primary' },\n (0, _languageHandler._t)(\"Upgrade this room to the recommended room version\")\n )\n );\n }\n\n var oldRoomLink = void 0;\n if (this.state.hasPreviousRoom) {\n var name = (0, _languageHandler._t)(\"this room\");\n var _room = _MatrixClientPeg2.default.get().getRoom(this.props.roomId);\n if (_room && _room.name) name = _room.name;\n oldRoomLink = _react2.default.createElement(\n _AccessibleButton2.default,\n { element: 'a', onClick: this._onOldRoomClicked },\n (0, _languageHandler._t)(\"View older messages in %(roomName)s.\", { roomName: name })\n );\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_heading' },\n (0, _languageHandler._t)(\"Advanced\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section mx_SettingsTab_subsectionText' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_SettingsTab_subheading' },\n (0, _languageHandler._t)(\"Room information\")\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"Internal room ID:\")\n ),\n '\\xA0',\n this.props.roomId\n ),\n unfederatableSection\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section mx_SettingsTab_subsectionText' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_SettingsTab_subheading' },\n (0, _languageHandler._t)(\"Room version\")\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"Room version:\")\n ),\n '\\xA0',\n room.getVersion()\n ),\n oldRoomLink,\n roomUpgradeButton\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section mx_SettingsTab_subsectionText' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_SettingsTab_subheading' },\n (0, _languageHandler._t)(\"Developer options\")\n ),\n _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this._openDevtools, kind: 'primary' },\n (0, _languageHandler._t)(\"Open Devtools\")\n )\n )\n );\n }\n }]);\n return AdvancedRoomSettingsTab;\n}(_react2.default.Component);\n\nAdvancedRoomSettingsTab.propTypes = {\n roomId: _propTypes2.default.string.isRequired,\n closeSettingsFn: _propTypes2.default.func.isRequired\n};\nexports.default = AdvancedRoomSettingsTab;\nmodule.exports = exports['default'];\n//# sourceMappingURL=AdvancedRoomSettingsTab.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BannedUser = undefined;\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _ = require('../../../../..');\n\nvar _2 = _interopRequireDefault(_);\n\nvar _AccessibleButton = require('../../../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _Modal = require('../../../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar plEventsToLabels = {\n // These will be translated for us later.\n \"m.room.avatar\": (0, _languageHandler._td)(\"Change room avatar\"),\n \"m.room.name\": (0, _languageHandler._td)(\"Change room name\"),\n \"m.room.canonical_alias\": (0, _languageHandler._td)(\"Change main address for the room\"),\n \"m.room.history_visibility\": (0, _languageHandler._td)(\"Change history visibility\"),\n \"m.room.power_levels\": (0, _languageHandler._td)(\"Change permissions\"),\n \"m.room.topic\": (0, _languageHandler._td)(\"Change topic\"),\n \"m.room.tombstone\": (0, _languageHandler._td)(\"Upgrade the room\"),\n \"m.room.encryption\": (0, _languageHandler._td)(\"Enable room encryption\"),\n\n \"im.vector.modular.widgets\": (0, _languageHandler._td)(\"Modify widgets\")\n}; /*\n Copyright 2019 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar plEventsToShow = {\n // If an event is listed here, it will be shown in the PL settings. Defaults will be calculated.\n \"m.room.avatar\": { isState: true },\n \"m.room.name\": { isState: true },\n \"m.room.canonical_alias\": { isState: true },\n \"m.room.history_visibility\": { isState: true },\n \"m.room.power_levels\": { isState: true },\n \"m.room.topic\": { isState: true },\n \"m.room.tombstone\": { isState: true },\n \"m.room.encryption\": { isState: true },\n\n \"im.vector.modular.widgets\": { isState: true }\n};\n\n// parse a string as an integer; if the input is undefined, or cannot be parsed\n// as an integer, return a default.\nfunction parseIntWithDefault(val, def) {\n var res = parseInt(val);\n return isNaN(res) ? def : res;\n}\n\nvar BannedUser = exports.BannedUser = function (_React$Component) {\n (0, _inherits3.default)(BannedUser, _React$Component);\n\n function BannedUser() {\n var _ref;\n\n var _temp, _this, _ret;\n\n (0, _classCallCheck3.default)(this, BannedUser);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = BannedUser.__proto__ || (0, _getPrototypeOf2.default)(BannedUser)).call.apply(_ref, [this].concat(args))), _this), _this._onUnbanClick = function (e) {\n _MatrixClientPeg2.default.get().unban(_this.props.member.roomId, _this.props.member.userId).then(function () {\n _this.props.onUnbanned();\n }).catch(function (err) {\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to unban: \" + err);\n _Modal2.default.createTrackedDialog('Failed to unban', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error'),\n description: (0, _languageHandler._t)('Failed to unban')\n });\n });\n }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);\n }\n\n (0, _createClass3.default)(BannedUser, [{\n key: 'render',\n value: function render() {\n var unbanButton = void 0;\n\n if (this.props.canUnban) {\n unbanButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { kind: 'danger_sm', onClick: this._onUnbanClick,\n className: 'mx_RolesRoomSettingsTab_unbanBtn' },\n (0, _languageHandler._t)('Unban')\n );\n }\n\n var userId = this.props.member.name === this.props.member.userId ? null : this.props.member.userId;\n return _react2.default.createElement(\n 'li',\n null,\n unbanButton,\n _react2.default.createElement(\n 'span',\n { title: (0, _languageHandler._t)(\"Banned by %(displayName)s\", { displayName: this.props.by }) },\n _react2.default.createElement(\n 'strong',\n null,\n this.props.member.name\n ),\n ' ',\n userId,\n this.props.reason ? \" \" + (0, _languageHandler._t)('Reason') + \": \" + this.props.reason : \"\"\n )\n );\n }\n }]);\n return BannedUser;\n}(_react2.default.Component);\n\nBannedUser.propTypes = {\n canUnban: _propTypes2.default.bool,\n member: _propTypes2.default.object.isRequired, // js-sdk RoomMember\n by: _propTypes2.default.string.isRequired,\n reason: _propTypes2.default.string,\n onUnbanned: _propTypes2.default.func.isRequired\n};\n\nvar RolesRoomSettingsTab = function (_React$Component2) {\n (0, _inherits3.default)(RolesRoomSettingsTab, _React$Component2);\n\n function RolesRoomSettingsTab() {\n var _ref2;\n\n var _temp2, _this2, _ret2;\n\n (0, _classCallCheck3.default)(this, RolesRoomSettingsTab);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _ret2 = (_temp2 = (_this2 = (0, _possibleConstructorReturn3.default)(this, (_ref2 = RolesRoomSettingsTab.__proto__ || (0, _getPrototypeOf2.default)(RolesRoomSettingsTab)).call.apply(_ref2, [this].concat(args))), _this2), _this2._onPowerLevelsChanged = function (value, powerLevelKey) {\n var client = _MatrixClientPeg2.default.get();\n var room = client.getRoom(_this2.props.roomId);\n var plEvent = room.currentState.getStateEvents('m.room.power_levels', '');\n var plContent = plEvent ? plEvent.getContent() || {} : {};\n\n // Clone the power levels just in case\n plContent = (0, _assign2.default)({}, plContent);\n\n var eventsLevelPrefix = \"event_levels_\";\n\n value = parseInt(value);\n\n if (powerLevelKey.startsWith(eventsLevelPrefix)) {\n // deep copy \"events\" object, Object.assign itself won't deep copy\n plContent[\"events\"] = (0, _assign2.default)({}, plContent[\"events\"] || {});\n plContent[\"events\"][powerLevelKey.slice(eventsLevelPrefix.length)] = value;\n } else {\n var keyPath = powerLevelKey.split('.');\n var parentObj = void 0;\n var currentObj = plContent;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(keyPath), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n\n if (!currentObj[key]) {\n currentObj[key] = {};\n }\n parentObj = currentObj;\n currentObj = currentObj[key];\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n parentObj[keyPath[keyPath.length - 1]] = value;\n }\n\n client.sendStateEvent(_this2.props.roomId, \"m.room.power_levels\", plContent).catch(function (e) {\n console.error(e);\n\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Power level requirement change failed', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error changing power level requirement'),\n description: (0, _languageHandler._t)(\"An error occurred changing the room's power level requirements. Ensure you have sufficient \" + \"permissions and try again.\")\n });\n });\n }, _this2._onUserPowerLevelChanged = function (value, powerLevelKey) {\n var client = _MatrixClientPeg2.default.get();\n var room = client.getRoom(_this2.props.roomId);\n var plEvent = room.currentState.getStateEvents('m.room.power_levels', '');\n var plContent = plEvent ? plEvent.getContent() || {} : {};\n\n // Clone the power levels just in case\n plContent = (0, _assign2.default)({}, plContent);\n\n // powerLevelKey should be a user ID\n if (!plContent['users']) plContent['users'] = {};\n plContent['users'][powerLevelKey] = value;\n\n client.sendStateEvent(_this2.props.roomId, \"m.room.power_levels\", plContent).catch(function (e) {\n console.error(e);\n\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Power level change failed', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error changing power level'),\n description: (0, _languageHandler._t)(\"An error occurred changing the user's power level. Ensure you have sufficient \" + \"permissions and try again.\")\n });\n });\n }, _temp2), (0, _possibleConstructorReturn3.default)(_this2, _ret2);\n }\n\n (0, _createClass3.default)(RolesRoomSettingsTab, [{\n key: '_populateDefaultPlEvents',\n value: function _populateDefaultPlEvents(eventsSection, stateLevel, eventsLevel) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)((0, _keys2.default)(plEventsToShow)), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var desiredEvent = _step2.value;\n\n if (!(desiredEvent in eventsSection)) {\n eventsSection[desiredEvent] = plEventsToShow[desiredEvent].isState ? stateLevel : eventsLevel;\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var PowerSelector = _2.default.getComponent('elements.PowerSelector');\n\n var client = _MatrixClientPeg2.default.get();\n var room = client.getRoom(this.props.roomId);\n var plEvent = room.currentState.getStateEvents('m.room.power_levels', '');\n var plContent = plEvent ? plEvent.getContent() || {} : {};\n var canChangeLevels = room.currentState.mayClientSendStateEvent('m.room.power_levels', client);\n\n var powerLevelDescriptors = {\n \"users_default\": {\n desc: (0, _languageHandler._t)('Default role'),\n defaultValue: 0\n },\n \"events_default\": {\n desc: (0, _languageHandler._t)('Send messages'),\n defaultValue: 0\n },\n \"invite\": {\n desc: (0, _languageHandler._t)('Invite users'),\n defaultValue: 50\n },\n \"state_default\": {\n desc: (0, _languageHandler._t)('Change settings'),\n defaultValue: 50\n },\n \"kick\": {\n desc: (0, _languageHandler._t)('Kick users'),\n defaultValue: 50\n },\n \"ban\": {\n desc: (0, _languageHandler._t)('Ban users'),\n defaultValue: 50\n },\n \"redact\": {\n desc: (0, _languageHandler._t)('Remove messages'),\n defaultValue: 50\n },\n \"notifications.room\": {\n desc: (0, _languageHandler._t)('Notify everyone'),\n defaultValue: 50\n }\n };\n\n var eventsLevels = plContent.events || {};\n var userLevels = plContent.users || {};\n var banLevel = parseIntWithDefault(plContent.ban, powerLevelDescriptors.ban.defaultValue);\n var defaultUserLevel = parseIntWithDefault(plContent.users_default, powerLevelDescriptors.users_default.defaultValue);\n\n var currentUserLevel = userLevels[client.getUserId()];\n if (currentUserLevel === undefined) {\n currentUserLevel = defaultUserLevel;\n }\n\n this._populateDefaultPlEvents(eventsLevels, parseIntWithDefault(plContent.state_default, powerLevelDescriptors.state_default.defaultValue), parseIntWithDefault(plContent.events_default, powerLevelDescriptors.events_default.defaultValue));\n\n var privilegedUsersSection = _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('No users have specific privileges in this room')\n );\n var mutedUsersSection = void 0;\n if ((0, _keys2.default)(userLevels).length) {\n var privilegedUsers = [];\n var mutedUsers = [];\n\n (0, _keys2.default)(userLevels).forEach(function (user) {\n var canChange = userLevels[user] < currentUserLevel && canChangeLevels;\n if (userLevels[user] > defaultUserLevel) {\n // privileged\n privilegedUsers.push(_react2.default.createElement(PowerSelector, {\n value: userLevels[user],\n disabled: !canChange,\n label: user,\n key: user,\n powerLevelKey: user // Will be sent as the second parameter to `onChange`\n , onChange: _this3._onUserPowerLevelChanged\n }));\n } else if (userLevels[user] < defaultUserLevel) {\n // muted\n mutedUsers.push(_react2.default.createElement(PowerSelector, {\n value: userLevels[user],\n disabled: !canChange,\n label: user,\n key: user,\n powerLevelKey: user // Will be sent as the second parameter to `onChange`\n , onChange: _this3._onUserPowerLevelChanged\n }));\n }\n });\n\n // comparator for sorting PL users lexicographically on PL descending, MXID ascending. (case-insensitive)\n var comparator = function comparator(a, b) {\n var plDiff = userLevels[b.key] - userLevels[a.key];\n return plDiff !== 0 ? plDiff : a.key.toLocaleLowerCase().localeCompare(b.key.toLocaleLowerCase());\n };\n\n privilegedUsers.sort(comparator);\n mutedUsers.sort(comparator);\n\n if (privilegedUsers.length) {\n privilegedUsersSection = _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section mx_SettingsTab_subsectionText' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_subheading' },\n (0, _languageHandler._t)('Privileged Users')\n ),\n privilegedUsers\n );\n }\n if (mutedUsers.length) {\n mutedUsersSection = _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section mx_SettingsTab_subsectionText' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_subheading' },\n (0, _languageHandler._t)('Muted Users')\n ),\n mutedUsers\n );\n }\n }\n\n var banned = room.getMembersWithMembership(\"ban\");\n var bannedUsersSection = void 0;\n if (banned.length) {\n var canBanUsers = currentUserLevel >= banLevel;\n bannedUsersSection = _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section mx_SettingsTab_subsectionText' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_subheading' },\n (0, _languageHandler._t)('Banned users')\n ),\n _react2.default.createElement(\n 'ul',\n null,\n banned.map(function (member) {\n var banEvent = member.events.member.getContent();\n var sender = room.getMember(member.events.member.getSender());\n var bannedBy = member.events.member.getSender(); // start by falling back to mxid\n if (sender) bannedBy = sender.name;\n return _react2.default.createElement(BannedUser, { key: member.userId, canUnban: canBanUsers,\n member: member, reason: banEvent.reason,\n by: bannedBy, onUnbanned: _this3.forceUpdate });\n })\n )\n );\n }\n\n var powerSelectors = (0, _keys2.default)(powerLevelDescriptors).map(function (key, index) {\n var descriptor = powerLevelDescriptors[key];\n\n var keyPath = key.split('.');\n var currentObj = plContent;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(keyPath), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var prop = _step3.value;\n\n if (currentObj === undefined) {\n break;\n }\n currentObj = currentObj[prop];\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n var value = parseIntWithDefault(currentObj, descriptor.defaultValue);\n return _react2.default.createElement(\n 'div',\n { key: index, className: '' },\n _react2.default.createElement(PowerSelector, {\n label: descriptor.desc,\n value: value,\n usersDefault: defaultUserLevel,\n disabled: !canChangeLevels || currentUserLevel < value,\n powerLevelKey: key // Will be sent as the second parameter to `onChange`\n , onChange: _this3._onPowerLevelsChanged\n })\n );\n });\n\n // hide the power level selector for enabling E2EE if it the room is already encrypted\n if (client.isRoomEncrypted(this.props.roomId)) {\n delete eventsLevels[\"m.room.encryption\"];\n }\n\n var eventPowerSelectors = (0, _keys2.default)(eventsLevels).map(function (eventType, i) {\n var label = plEventsToLabels[eventType];\n if (label) {\n label = (0, _languageHandler._t)(label);\n } else {\n label = (0, _languageHandler._t)(\"Send %(eventType)s events\", { eventType: eventType });\n }\n return _react2.default.createElement(\n 'div',\n { className: '', key: eventType },\n _react2.default.createElement(PowerSelector, {\n label: label,\n value: eventsLevels[eventType],\n usersDefault: defaultUserLevel,\n disabled: !canChangeLevels || currentUserLevel < eventsLevels[eventType],\n powerLevelKey: \"event_levels_\" + eventType,\n onChange: _this3._onPowerLevelsChanged\n })\n );\n });\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab mx_RolesRoomSettingsTab' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_heading' },\n (0, _languageHandler._t)(\"Roles & Permissions\")\n ),\n privilegedUsersSection,\n mutedUsersSection,\n bannedUsersSection,\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section mx_SettingsTab_subsectionText' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_SettingsTab_subheading' },\n (0, _languageHandler._t)(\"Permissions\")\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('Select the roles required to change various parts of the room')\n ),\n powerSelectors,\n eventPowerSelectors\n )\n );\n }\n }]);\n return RolesRoomSettingsTab;\n}(_react2.default.Component);\n\nRolesRoomSettingsTab.propTypes = {\n roomId: _propTypes2.default.string.isRequired\n};\nexports.default = RolesRoomSettingsTab;\n//# sourceMappingURL=RolesRoomSettingsTab.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../../../languageHandler');\n\nvar _RoomProfileSettings = require('../../../room_settings/RoomProfileSettings');\n\nvar _RoomProfileSettings2 = _interopRequireDefault(_RoomProfileSettings);\n\nvar _MatrixClientPeg = require('../../../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _ = require('../../../../..');\n\nvar _2 = _interopRequireDefault(_);\n\nvar _AccessibleButton = require('../../../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _dispatcher = require('../../../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _LabelledToggleSwitch = require('../../../elements/LabelledToggleSwitch');\n\nvar _LabelledToggleSwitch2 = _interopRequireDefault(_LabelledToggleSwitch);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar GeneralRoomSettingsTab = function (_React$Component) {\n (0, _inherits3.default)(GeneralRoomSettingsTab, _React$Component);\n\n function GeneralRoomSettingsTab() {\n (0, _classCallCheck3.default)(this, GeneralRoomSettingsTab);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (GeneralRoomSettingsTab.__proto__ || (0, _getPrototypeOf2.default)(GeneralRoomSettingsTab)).call(this));\n\n _this.onRoomPublishChange = function (e) {\n var valueBefore = _this.state.isRoomPublished;\n var newValue = !valueBefore;\n _this.setState({ isRoomPublished: newValue });\n\n _MatrixClientPeg2.default.get().setRoomDirectoryVisibility(_this.props.roomId, newValue ? 'public' : 'private').catch(function () {\n // Roll back the local echo on the change\n _this.setState({ isRoomPublished: valueBefore });\n });\n };\n\n _this._onLeaveClick = function () {\n _dispatcher2.default.dispatch({\n action: 'leave_room',\n room_id: _this.props.roomId\n });\n };\n\n _this.state = {\n isRoomPublished: false // loaded async\n };\n return _this;\n }\n\n (0, _createClass3.default)(GeneralRoomSettingsTab, [{\n key: 'getChildContext',\n value: function getChildContext() {\n return {\n matrixClient: _MatrixClientPeg2.default.get()\n };\n }\n }, {\n key: 'componentWillMount',\n value: function componentWillMount() {\n var _this2 = this;\n\n _MatrixClientPeg2.default.get().getRoomDirectoryVisibility(this.props.roomId).then(function (result) {\n _this2.setState({ isRoomPublished: result.visibility === 'public' });\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var AliasSettings = _2.default.getComponent(\"room_settings.AliasSettings\");\n var RelatedGroupSettings = _2.default.getComponent(\"room_settings.RelatedGroupSettings\");\n var UrlPreviewSettings = _2.default.getComponent(\"room_settings.UrlPreviewSettings\");\n\n var client = _MatrixClientPeg2.default.get();\n var room = client.getRoom(this.props.roomId);\n\n var canSetAliases = true; // Previously, we arbitrarily only allowed admins to do this\n var canActuallySetAliases = room.currentState.mayClientSendStateEvent(\"m.room.aliases\", client);\n var canSetCanonical = room.currentState.mayClientSendStateEvent(\"m.room.canonical_alias\", client);\n var canonicalAliasEv = room.currentState.getStateEvents(\"m.room.canonical_alias\", '');\n var aliasEvents = room.currentState.getStateEvents(\"m.room.aliases\");\n\n var canChangeGroups = room.currentState.mayClientSendStateEvent(\"m.room.related_groups\", client);\n var groupsEvent = room.currentState.getStateEvents(\"m.room.related_groups\", \"\");\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab mx_GeneralRoomSettingsTab' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_heading' },\n (0, _languageHandler._t)(\"General\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section mx_GeneralRoomSettingsTab_profileSection' },\n _react2.default.createElement(_RoomProfileSettings2.default, { roomId: this.props.roomId })\n ),\n _react2.default.createElement(\n 'span',\n { className: 'mx_SettingsTab_subheading' },\n (0, _languageHandler._t)(\"Room Addresses\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section mx_SettingsTab_subsectionText' },\n _react2.default.createElement(AliasSettings, { roomId: this.props.roomId,\n canSetCanonicalAlias: canSetCanonical, canSetAliases: canSetAliases,\n canonicalAliasEvent: canonicalAliasEv, aliasEvents: aliasEvents })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section' },\n _react2.default.createElement(_LabelledToggleSwitch2.default, { value: this.state.isRoomPublished,\n onChange: this.onRoomPublishChange,\n disabled: !canActuallySetAliases,\n label: (0, _languageHandler._t)(\"Publish this room to the public in %(domain)s's room directory?\", {\n domain: client.getDomain()\n }) })\n ),\n _react2.default.createElement(\n 'span',\n { className: 'mx_SettingsTab_subheading' },\n (0, _languageHandler._t)(\"Flair\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section mx_SettingsTab_subsectionText' },\n _react2.default.createElement(RelatedGroupSettings, { roomId: room.roomId,\n canSetRelatedGroups: canChangeGroups,\n relatedGroupsEvent: groupsEvent })\n ),\n _react2.default.createElement(\n 'span',\n { className: 'mx_SettingsTab_subheading' },\n (0, _languageHandler._t)(\"URL Previews\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section' },\n _react2.default.createElement(UrlPreviewSettings, { room: room })\n ),\n _react2.default.createElement(\n 'span',\n { className: 'mx_SettingsTab_subheading' },\n (0, _languageHandler._t)(\"Leave room\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section' },\n _react2.default.createElement(\n _AccessibleButton2.default,\n { kind: 'danger', onClick: this._onLeaveClick },\n (0, _languageHandler._t)('Leave room')\n )\n )\n );\n }\n }]);\n return GeneralRoomSettingsTab;\n}(_react2.default.Component);\n\nGeneralRoomSettingsTab.childContextTypes = {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n};\nGeneralRoomSettingsTab.propTypes = {\n roomId: _propTypes2.default.string.isRequired\n};\nexports.default = GeneralRoomSettingsTab;\nmodule.exports = exports['default'];\n//# sourceMappingURL=GeneralRoomSettingsTab.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Field = require('../elements/Field');\n\nvar _Field2 = _interopRequireDefault(_Field);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// TODO: Merge with ProfileSettings?\nvar RoomProfileSettings = function (_React$Component) {\n (0, _inherits3.default)(RoomProfileSettings, _React$Component);\n\n function RoomProfileSettings(props) {\n (0, _classCallCheck3.default)(this, RoomProfileSettings);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (RoomProfileSettings.__proto__ || (0, _getPrototypeOf2.default)(RoomProfileSettings)).call(this, props));\n\n _initialiseProps.call(_this);\n\n var client = _MatrixClientPeg2.default.get();\n var room = client.getRoom(props.roomId);\n if (!room) throw new Error(\"Expected a room for ID: \", props.roomId);\n\n var avatarEvent = room.currentState.getStateEvents(\"m.room.avatar\", \"\");\n var avatarUrl = avatarEvent && avatarEvent.getContent() ? avatarEvent.getContent()[\"url\"] : null;\n if (avatarUrl) avatarUrl = client.mxcUrlToHttp(avatarUrl, 96, 96, 'crop', false);\n\n var topicEvent = room.currentState.getStateEvents(\"m.room.topic\", \"\");\n var topic = topicEvent && topicEvent.getContent() ? topicEvent.getContent()['topic'] : '';\n\n var nameEvent = room.currentState.getStateEvents('m.room.name', '');\n var name = nameEvent && nameEvent.getContent() ? nameEvent.getContent()['name'] : '';\n\n _this.state = {\n originalDisplayName: name,\n displayName: name,\n originalAvatarUrl: avatarUrl,\n avatarUrl: avatarUrl,\n avatarFile: null,\n originalTopic: topic,\n topic: topic,\n enableProfileSave: false,\n canSetName: room.currentState.maySendStateEvent('m.room.name', client.getUserId()),\n canSetTopic: room.currentState.maySendStateEvent('m.room.topic', client.getUserId()),\n canSetAvatar: room.currentState.maySendStateEvent('m.room.avatar', client.getUserId())\n };\n return _this;\n }\n\n (0, _createClass3.default)(RoomProfileSettings, [{\n key: 'render',\n value: function render() {\n // TODO: Why is rendering a box with an overlay so complicated? Can the DOM be reduced?\n\n var showOverlayAnyways = true;\n var avatarElement = _react2.default.createElement('div', { className: 'mx_ProfileSettings_avatarPlaceholder' });\n if (this.state.avatarUrl) {\n showOverlayAnyways = false;\n avatarElement = _react2.default.createElement('img', { src: this.state.avatarUrl,\n alt: (0, _languageHandler._t)(\"Room avatar\") });\n }\n\n var avatarOverlayClasses = (0, _classnames2.default)({\n \"mx_ProfileSettings_avatarOverlay\": true,\n \"mx_ProfileSettings_avatarOverlay_show\": showOverlayAnyways\n });\n var avatarHoverElement = _react2.default.createElement(\n 'div',\n { className: avatarOverlayClasses, onClick: this._uploadAvatar },\n _react2.default.createElement(\n 'span',\n { className: 'mx_ProfileSettings_avatarOverlayText' },\n (0, _languageHandler._t)(\"Upload room avatar\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_ProfileSettings_avatarOverlayImgContainer' },\n _react2.default.createElement('div', { className: 'mx_ProfileSettings_avatarOverlayImg' })\n )\n );\n if (!this.state.canSetAvatar) {\n if (!showOverlayAnyways) {\n avatarHoverElement = null;\n } else {\n var disabledOverlayClasses = (0, _classnames2.default)({\n \"mx_ProfileSettings_avatarOverlay\": true,\n \"mx_ProfileSettings_avatarOverlay_show\": true,\n \"mx_ProfileSettings_avatarOverlay_disabled\": true\n });\n avatarHoverElement = _react2.default.createElement(\n 'div',\n { className: disabledOverlayClasses },\n _react2.default.createElement(\n 'span',\n { className: 'mx_ProfileSettings_noAvatarText' },\n (0, _languageHandler._t)(\"No room avatar\")\n )\n );\n }\n }\n\n return _react2.default.createElement(\n 'form',\n { onSubmit: this._saveProfile, autoComplete: false, noValidate: true },\n _react2.default.createElement('input', { type: 'file', ref: 'avatarUpload', className: 'mx_ProfileSettings_avatarUpload',\n onChange: this._onAvatarChanged, accept: 'image/*' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_ProfileSettings_profile' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_ProfileSettings_controls' },\n _react2.default.createElement(_Field2.default, { id: 'profileDisplayName', label: (0, _languageHandler._t)(\"Room Name\"),\n type: 'text', value: this.state.displayName, autoComplete: 'off',\n onChange: this._onDisplayNameChanged, disabled: !this.state.canSetName }),\n _react2.default.createElement(_Field2.default, { id: 'profileTopic', label: (0, _languageHandler._t)(\"Room Topic\"), disabled: !this.state.canSetTopic,\n type: 'text', value: this.state.topic, autoComplete: 'off',\n onChange: this._onTopicChanged, element: 'textarea' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_ProfileSettings_avatar' },\n avatarElement,\n avatarHoverElement\n )\n ),\n _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this._saveProfile, kind: 'primary',\n disabled: !this.state.enableProfileSave },\n (0, _languageHandler._t)(\"Save\")\n )\n );\n }\n }]);\n return RoomProfileSettings;\n}(_react2.default.Component); /*\n Copyright 2019 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nRoomProfileSettings.propTypes = {\n roomId: _propTypes2.default.string.isRequired\n};\n\nvar _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this._uploadAvatar = function (e) {\n e.stopPropagation();\n e.preventDefault();\n\n _this2.refs.avatarUpload.click();\n };\n\n this._saveProfile = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(e) {\n var client, newState, uri;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n e.stopPropagation();\n e.preventDefault();\n\n if (_this2.state.enableProfileSave) {\n _context.next = 4;\n break;\n }\n\n return _context.abrupt('return');\n\n case 4:\n _this2.setState({ enableProfileSave: false });\n\n client = _MatrixClientPeg2.default.get();\n newState = {};\n\n // TODO: What do we do about errors?\n\n if (!(_this2.state.originalDisplayName !== _this2.state.displayName)) {\n _context.next = 11;\n break;\n }\n\n _context.next = 10;\n return (0, _bluebird.resolve)(client.setRoomName(_this2.props.roomId, _this2.state.displayName));\n\n case 10:\n newState.originalDisplayName = _this2.state.displayName;\n\n case 11:\n if (!_this2.state.avatarFile) {\n _context.next = 20;\n break;\n }\n\n _context.next = 14;\n return (0, _bluebird.resolve)(client.uploadContent(_this2.state.avatarFile));\n\n case 14:\n uri = _context.sent;\n _context.next = 17;\n return (0, _bluebird.resolve)(client.sendStateEvent(_this2.props.roomId, 'm.room.avatar', { url: uri }, ''));\n\n case 17:\n newState.avatarUrl = client.mxcUrlToHttp(uri, 96, 96, 'crop', false);\n newState.originalAvatarUrl = newState.avatarUrl;\n newState.avatarFile = null;\n\n case 20:\n if (!(_this2.state.originalTopic !== _this2.state.topic)) {\n _context.next = 24;\n break;\n }\n\n _context.next = 23;\n return (0, _bluebird.resolve)(client.setRoomTopic(_this2.props.roomId, _this2.state.topic));\n\n case 23:\n newState.originalTopic = _this2.state.topic;\n\n case 24:\n\n _this2.setState(newState);\n\n case 25:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this2);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }();\n\n this._onDisplayNameChanged = function (e) {\n _this2.setState({\n displayName: e.target.value,\n enableProfileSave: true\n });\n };\n\n this._onTopicChanged = function (e) {\n _this2.setState({\n topic: e.target.value,\n enableProfileSave: true\n });\n };\n\n this._onAvatarChanged = function (e) {\n if (!e.target.files || !e.target.files.length) {\n _this2.setState({\n avatarUrl: _this2.state.originalAvatarUrl,\n avatarFile: null,\n enableProfileSave: false\n });\n return;\n }\n\n var file = e.target.files[0];\n var reader = new FileReader();\n reader.onload = function (ev) {\n _this2.setState({\n avatarUrl: ev.target.result,\n avatarFile: file,\n enableProfileSave: true\n });\n };\n reader.readAsDataURL(file);\n };\n};\n\nexports.default = RoomProfileSettings;\nmodule.exports = exports['default'];\n//# sourceMappingURL=RoomProfileSettings.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _ = require('../../../../..');\n\nvar _2 = _interopRequireDefault(_);\n\nvar _LabelledToggleSwitch = require('../../../elements/LabelledToggleSwitch');\n\nvar _LabelledToggleSwitch2 = _interopRequireDefault(_LabelledToggleSwitch);\n\nvar _SettingsStore = require('../../../../../settings/SettingsStore');\n\nvar _Modal = require('../../../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _QuestionDialog = require('../../../dialogs/QuestionDialog');\n\nvar _QuestionDialog2 = _interopRequireDefault(_QuestionDialog);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SecurityRoomSettingsTab = function (_React$Component) {\n (0, _inherits3.default)(SecurityRoomSettingsTab, _React$Component);\n\n function SecurityRoomSettingsTab() {\n (0, _classCallCheck3.default)(this, SecurityRoomSettingsTab);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (SecurityRoomSettingsTab.__proto__ || (0, _getPrototypeOf2.default)(SecurityRoomSettingsTab)).call(this));\n\n _this._onStateEvent = function (e) {\n var refreshWhenTypes = ['m.room.join_rules', 'm.room.guest_access', 'm.room.history_visibility', 'm.room.encryption'];\n if (refreshWhenTypes.includes(e.getType())) _this.forceUpdate();\n };\n\n _this._onEncryptionChange = function (e) {\n _Modal2.default.createTrackedDialog('Enable encryption', '', _QuestionDialog2.default, {\n title: (0, _languageHandler._t)('Enable encryption?'),\n description: (0, _languageHandler._t)(\"Once enabled, encryption for a room cannot be disabled. Messages sent in an encrypted \" + \"room cannot be seen by the server, only by the participants of the room. Enabling encryption \" + \"may prevent many bots and bridges from working correctly. Learn more about encryption.\", {}, {\n 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { rel: 'noopener', target: '_blank',\n href: 'https://about.riot.im/help#end-to-end-encryption' },\n sub\n );\n }\n }),\n onFinished: function onFinished(confirm) {\n if (!confirm) {\n _this.setState({ encrypted: false });\n return;\n }\n\n var beforeEncrypted = _this.state.encrypted;\n _this.setState({ encrypted: true });\n _MatrixClientPeg2.default.get().sendStateEvent(_this.props.roomId, \"m.room.encryption\", { algorithm: \"m.megolm.v1.aes-sha2\" }).catch(function (e) {\n console.error(e);\n _this.setState({ encrypted: beforeEncrypted });\n });\n }\n });\n };\n\n _this._fixGuestAccess = function (e) {\n e.preventDefault();\n e.stopPropagation();\n\n var joinRule = \"invite\";\n var guestAccess = \"can_join\";\n\n var beforeJoinRule = _this.state.joinRule;\n var beforeGuestAccess = _this.state.guestAccess;\n _this.setState({ joinRule: joinRule, guestAccess: guestAccess });\n\n var client = _MatrixClientPeg2.default.get();\n client.sendStateEvent(_this.props.roomId, \"m.room.join_rules\", { join_rule: joinRule }, \"\").catch(function (e) {\n console.error(e);\n _this.setState({ joinRule: beforeJoinRule });\n });\n client.sendStateEvent(_this.props.roomId, \"m.room.guest_access\", { guest_access: guestAccess }, \"\").catch(function (e) {\n console.error(e);\n _this.setState({ guestAccess: beforeGuestAccess });\n });\n };\n\n _this._onRoomAccessRadioToggle = function (ev) {\n // join_rule\n // INVITE | PUBLIC\n // ----------------------+----------------\n // guest CAN_JOIN | inv_only | pub_with_guest\n // access ----------------------+----------------\n // FORBIDDEN | inv_only | pub_no_guest\n // ----------------------+----------------\n\n // we always set guests can_join here as it makes no sense to have\n // an invite-only room that guests can't join. If you explicitly\n // invite them, you clearly want them to join, whether they're a\n // guest or not. In practice, guest_access should probably have\n // been implemented as part of the join_rules enum.\n var joinRule = \"invite\";\n var guestAccess = \"can_join\";\n\n switch (ev.target.value) {\n case \"invite_only\":\n // no change - use defaults above\n break;\n case \"public_no_guests\":\n joinRule = \"public\";\n guestAccess = \"forbidden\";\n break;\n case \"public_with_guests\":\n joinRule = \"public\";\n guestAccess = \"can_join\";\n break;\n }\n\n var beforeJoinRule = _this.state.joinRule;\n var beforeGuestAccess = _this.state.guestAccess;\n _this.setState({ joinRule: joinRule, guestAccess: guestAccess });\n\n var client = _MatrixClientPeg2.default.get();\n client.sendStateEvent(_this.props.roomId, \"m.room.join_rules\", { join_rule: joinRule }, \"\").catch(function (e) {\n console.error(e);\n _this.setState({ joinRule: beforeJoinRule });\n });\n client.sendStateEvent(_this.props.roomId, \"m.room.guest_access\", { guest_access: guestAccess }, \"\").catch(function (e) {\n console.error(e);\n _this.setState({ guestAccess: beforeGuestAccess });\n });\n };\n\n _this._onHistoryRadioToggle = function (ev) {\n var beforeHistory = _this.state.history;\n _this.setState({ history: ev.target.value });\n _MatrixClientPeg2.default.get().sendStateEvent(_this.props.roomId, \"m.room.history_visibility\", {\n history_visibility: ev.target.value\n }, \"\").catch(function (e) {\n console.error(e);\n _this.setState({ history: beforeHistory });\n });\n };\n\n _this._updateBlacklistDevicesFlag = function (checked) {\n _MatrixClientPeg2.default.get().getRoom(_this.props.roomId).setBlacklistUnverifiedDevices(checked);\n };\n\n _this.state = {\n joinRule: \"invite\",\n guestAccess: \"can_join\",\n history: \"shared\",\n encrypted: false\n };\n return _this;\n }\n\n (0, _createClass3.default)(SecurityRoomSettingsTab, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n _MatrixClientPeg2.default.get().on(\"RoomState.events\", this._onStateEvent);\n\n var room = _MatrixClientPeg2.default.get().getRoom(this.props.roomId);\n var state = room.currentState;\n\n var joinRule = this._pullContentPropertyFromEvent(state.getStateEvents(\"m.room.join_rules\", \"\"), 'join_rule', 'invite');\n var guestAccess = this._pullContentPropertyFromEvent(state.getStateEvents(\"m.room.guest_access\", \"\"), 'guest_access', 'forbidden');\n var history = this._pullContentPropertyFromEvent(state.getStateEvents(\"m.room.history_visibility\", \"\"), 'history_visibility', 'shared');\n var encrypted = _MatrixClientPeg2.default.get().isRoomEncrypted(this.props.roomId);\n this.setState({ joinRule: joinRule, guestAccess: guestAccess, history: history, encrypted: encrypted });\n }\n }, {\n key: '_pullContentPropertyFromEvent',\n value: function _pullContentPropertyFromEvent(event, key, defaultValue) {\n if (!event || !event.getContent()) return defaultValue;\n return event.getContent()[key] || defaultValue;\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _MatrixClientPeg2.default.get().removeListener(\"RoomState.events\", this._onStateEvent);\n }\n }, {\n key: '_renderRoomAccess',\n value: function _renderRoomAccess() {\n var client = _MatrixClientPeg2.default.get();\n var room = client.getRoom(this.props.roomId);\n var joinRule = this.state.joinRule;\n var guestAccess = this.state.guestAccess;\n var aliasEvents = room.currentState.getStateEvents(\"m.room.aliases\") || [];\n var hasAliases = !!aliasEvents.find(function (ev) {\n return (ev.getContent().aliases || []).length > 0;\n });\n\n var canChangeAccess = room.currentState.mayClientSendStateEvent(\"m.room.join_rules\", client) && room.currentState.mayClientSendStateEvent(\"m.room.guest_access\", client);\n\n var guestWarning = null;\n if (joinRule !== 'public' && guestAccess === 'forbidden') {\n guestWarning = _react2.default.createElement(\n 'div',\n { className: 'mx_SecurityRoomSettingsTab_warning' },\n _react2.default.createElement('img', { src: require(\"../../../../../../res/img/warning.svg\"), width: 15, height: 15 }),\n _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"Guests cannot join this room even if explicitly invited.\"),\n '\\xA0',\n _react2.default.createElement(\n 'a',\n { href: '', onClick: this._fixGuestAccess },\n (0, _languageHandler._t)(\"Click here to fix\")\n )\n )\n );\n }\n\n var aliasWarning = null;\n if (joinRule === 'public' && !hasAliases) {\n aliasWarning = _react2.default.createElement(\n 'div',\n { className: 'mx_SecurityRoomSettingsTab_warning' },\n _react2.default.createElement('img', { src: require(\"../../../../../../res/img/warning.svg\"), width: 15, height: 15 }),\n _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"To link to this room, please add an alias.\")\n )\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n guestWarning,\n aliasWarning,\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio', name: 'roomVis', value: 'invite_only',\n disabled: !canChangeAccess,\n onChange: this._onRoomAccessRadioToggle,\n checked: joinRule !== \"public\" }),\n (0, _languageHandler._t)('Only people who have been invited')\n ),\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio', name: 'roomVis', value: 'public_no_guests',\n disabled: !canChangeAccess,\n onChange: this._onRoomAccessRadioToggle,\n checked: joinRule === \"public\" && guestAccess !== \"can_join\" }),\n (0, _languageHandler._t)('Anyone who knows the room\\'s link, apart from guests')\n ),\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio', name: 'roomVis', value: 'public_with_guests',\n disabled: !canChangeAccess,\n onChange: this._onRoomAccessRadioToggle,\n checked: joinRule === \"public\" && guestAccess === \"can_join\" }),\n (0, _languageHandler._t)(\"Anyone who knows the room's link, including guests\")\n )\n );\n }\n }, {\n key: '_renderHistory',\n value: function _renderHistory() {\n var client = _MatrixClientPeg2.default.get();\n var history = this.state.history;\n var state = client.getRoom(this.props.roomId).currentState;\n var canChangeHistory = state.mayClientSendStateEvent('m.room.history_visibility', client);\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('Changes to who can read history will only apply to future messages in this room. ' + 'The visibility of existing history will be unchanged.')\n ),\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio', name: 'historyVis', value: 'world_readable',\n disabled: !canChangeHistory,\n checked: history === \"world_readable\",\n onChange: this._onHistoryRadioToggle }),\n (0, _languageHandler._t)(\"Anyone\")\n ),\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio', name: 'historyVis', value: 'shared',\n disabled: !canChangeHistory,\n checked: history === \"shared\",\n onChange: this._onHistoryRadioToggle }),\n (0, _languageHandler._t)('Members only (since the point in time of selecting this option)')\n ),\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio', name: 'historyVis', value: 'invited',\n disabled: !canChangeHistory,\n checked: history === \"invited\",\n onChange: this._onHistoryRadioToggle }),\n (0, _languageHandler._t)('Members only (since they were invited)')\n ),\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio', name: 'historyVis', value: 'joined',\n disabled: !canChangeHistory,\n checked: history === \"joined\",\n onChange: this._onHistoryRadioToggle }),\n (0, _languageHandler._t)('Members only (since they joined)')\n )\n );\n }\n }, {\n key: 'render',\n value: function render() {\n var SettingsFlag = _2.default.getComponent(\"elements.SettingsFlag\");\n\n var client = _MatrixClientPeg2.default.get();\n var room = client.getRoom(this.props.roomId);\n var isEncrypted = this.state.encrypted;\n var hasEncryptionPermission = room.currentState.mayClientSendStateEvent(\"m.room.encryption\", client);\n var canEnableEncryption = !isEncrypted && hasEncryptionPermission;\n\n var encryptionSettings = null;\n if (isEncrypted) {\n encryptionSettings = _react2.default.createElement(SettingsFlag, { name: 'blacklistUnverifiedDevices', level: _SettingsStore.SettingLevel.ROOM_DEVICE,\n onChange: this._updateBlacklistDevicesFlag,\n roomId: this.props.roomId });\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab mx_SecurityRoomSettingsTab' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_heading' },\n (0, _languageHandler._t)(\"Security & Privacy\")\n ),\n _react2.default.createElement(\n 'span',\n { className: 'mx_SettingsTab_subheading' },\n (0, _languageHandler._t)(\"Encryption\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section mx_SecurityRoomSettingsTab_encryptionSection' },\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_subsectionText' },\n _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"Once enabled, encryption cannot be disabled.\")\n )\n ),\n _react2.default.createElement(_LabelledToggleSwitch2.default, { value: isEncrypted, onChange: this._onEncryptionChange,\n label: (0, _languageHandler._t)(\"Encrypted\"), disabled: !canEnableEncryption })\n ),\n encryptionSettings\n ),\n _react2.default.createElement(\n 'span',\n { className: 'mx_SettingsTab_subheading' },\n (0, _languageHandler._t)(\"Who can access this room?\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section mx_SettingsTab_subsectionText' },\n this._renderRoomAccess()\n ),\n _react2.default.createElement(\n 'span',\n { className: 'mx_SettingsTab_subheading' },\n (0, _languageHandler._t)(\"Who can read history?\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section mx_SettingsTab_subsectionText' },\n this._renderHistory()\n )\n );\n }\n }]);\n return SecurityRoomSettingsTab;\n}(_react2.default.Component); /*\n Copyright 2019 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nSecurityRoomSettingsTab.propTypes = {\n roomId: _propTypes2.default.string.isRequired\n};\nexports.default = SecurityRoomSettingsTab;\nmodule.exports = exports['default'];\n//# sourceMappingURL=SecurityRoomSettingsTab.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _AccessibleButton = require('../../../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _Notifier = require('../../../../../Notifier');\n\nvar _Notifier2 = _interopRequireDefault(_Notifier);\n\nvar _SettingsStore = require('../../../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar NotificationsSettingsTab = function (_React$Component) {\n (0, _inherits3.default)(NotificationsSettingsTab, _React$Component);\n\n function NotificationsSettingsTab() {\n (0, _classCallCheck3.default)(this, NotificationsSettingsTab);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (NotificationsSettingsTab.__proto__ || (0, _getPrototypeOf2.default)(NotificationsSettingsTab)).call(this));\n\n _this.state = {\n currentSound: \"default\",\n uploadedFile: null\n };\n return _this;\n }\n\n (0, _createClass3.default)(NotificationsSettingsTab, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n var _this2 = this;\n\n _Notifier2.default.getSoundForRoom(this.props.roomId).then(function (soundData) {\n if (!soundData) {\n return;\n }\n _this2.setState({ currentSound: soundData.name || soundData.url });\n });\n }\n }, {\n key: '_triggerUploader',\n value: function () {\n var _ref = (0, _bluebird.method)(function (e) {\n e.stopPropagation();\n e.preventDefault();\n\n this.refs.soundUpload.click();\n });\n\n function _triggerUploader(_x) {\n return _ref.apply(this, arguments);\n }\n\n return _triggerUploader;\n }()\n }, {\n key: '_onSoundUploadChanged',\n value: function () {\n var _ref2 = (0, _bluebird.method)(function (e) {\n if (!e.target.files || !e.target.files.length) {\n this.setState({\n uploadedFile: null\n });\n return;\n }\n\n var file = e.target.files[0];\n this.setState({\n uploadedFile: file\n });\n });\n\n function _onSoundUploadChanged(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return _onSoundUploadChanged;\n }()\n }, {\n key: '_onClickSaveSound',\n value: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(e) {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n e.stopPropagation();\n e.preventDefault();\n\n _context.prev = 2;\n _context.next = 5;\n return (0, _bluebird.resolve)(this._saveSound());\n\n case 5:\n _context.next = 11;\n break;\n\n case 7:\n _context.prev = 7;\n _context.t0 = _context['catch'](2);\n\n console.error('Unable to save notification sound for ' + this.props.roomId);\n console.error(_context.t0);\n\n case 11:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[2, 7]]);\n }));\n\n function _onClickSaveSound(_x3) {\n return _ref3.apply(this, arguments);\n }\n\n return _onClickSaveSound;\n }()\n }, {\n key: '_saveSound',\n value: function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var type, url;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (this.state.uploadedFile) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt('return');\n\n case 2:\n type = this.state.uploadedFile.type;\n\n if (type === \"video/ogg\") {\n // XXX: I've observed browsers allowing users to pick a audio/ogg files,\n // and then calling it a video/ogg. This is a lame hack, but man browsers\n // suck at detecting mimetypes.\n type = \"audio/ogg\";\n }\n\n _context2.next = 6;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get().uploadContent(this.state.uploadedFile, {\n type: type\n }));\n\n case 6:\n url = _context2.sent;\n _context2.next = 9;\n return (0, _bluebird.resolve)(_SettingsStore2.default.setValue(\"notificationSound\", this.props.roomId, _SettingsStore.SettingLevel.ROOM_ACCOUNT, {\n name: this.state.uploadedFile.name,\n type: type,\n size: this.state.uploadedFile.size,\n url: url\n }));\n\n case 9:\n\n this.setState({\n uploadedFile: null,\n currentSound: this.state.uploadedFile.name\n });\n\n case 10:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function _saveSound() {\n return _ref4.apply(this, arguments);\n }\n\n return _saveSound;\n }()\n }, {\n key: '_clearSound',\n value: function _clearSound(e) {\n e.stopPropagation();\n e.preventDefault();\n _SettingsStore2.default.setValue(\"notificationSound\", this.props.roomId, _SettingsStore.SettingLevel.ROOM_ACCOUNT, null);\n\n this.setState({\n currentSound: \"default\"\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var currentUploadedFile = null;\n if (this.state.uploadedFile) {\n currentUploadedFile = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"Uploaded sound\"),\n ': ',\n _react2.default.createElement(\n 'code',\n null,\n this.state.uploadedFile.name\n )\n )\n );\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_heading' },\n (0, _languageHandler._t)(\"Notifications\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section mx_SettingsTab_subsectionText' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_SettingsTab_subheading' },\n (0, _languageHandler._t)(\"Sounds\")\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"Notification sound\"),\n ': ',\n _react2.default.createElement(\n 'code',\n null,\n this.state.currentSound\n )\n ),\n _react2.default.createElement('br', null),\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_NotificationSound_resetSound', disabled: this.state.currentSound == \"default\", onClick: this._clearSound.bind(this), kind: 'primary' },\n (0, _languageHandler._t)(\"Reset\")\n )\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Set a new custom sound\")\n ),\n _react2.default.createElement(\n 'form',\n { autoComplete: false, noValidate: true },\n _react2.default.createElement('input', { ref: 'soundUpload', className: 'mx_NotificationSound_soundUpload', type: 'file', onChange: this._onSoundUploadChanged.bind(this), accept: 'audio/*' })\n ),\n currentUploadedFile,\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_NotificationSound_browse', onClick: this._triggerUploader.bind(this), kind: 'primary' },\n (0, _languageHandler._t)(\"Browse\")\n ),\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_NotificationSound_save', disabled: this.state.uploadedFile == null, onClick: this._onClickSaveSound.bind(this), kind: 'primary' },\n (0, _languageHandler._t)(\"Save\")\n ),\n _react2.default.createElement('br', null)\n )\n )\n );\n }\n }]);\n return NotificationsSettingsTab;\n}(_react2.default.Component);\n\nNotificationsSettingsTab.propTypes = {\n roomId: _propTypes2.default.string.isRequired\n};\nexports.default = NotificationsSettingsTab;\nmodule.exports = exports['default'];\n//# sourceMappingURL=NotificationSettingsTab.js.map","module.exports = {\n\tMODE_NUMBER :\t\t1 << 0,\n\tMODE_ALPHA_NUM : \t1 << 1,\n\tMODE_8BIT_BYTE : \t1 << 2,\n\tMODE_KANJI :\t\t1 << 3\n};\n","module.exports = {\n\tL : 1,\n\tM : 0,\n\tQ : 3,\n\tH : 2\n};\n\n","var math = require('./math');\n\nfunction QRPolynomial(num, shift) {\n\n\tif (num.length == undefined) {\n\t\tthrow new Error(num.length + \"/\" + shift);\n\t}\n\n\tvar offset = 0;\n\n\twhile (offset < num.length && num[offset] == 0) {\n\t\toffset++;\n\t}\n\n\tthis.num = new Array(num.length - offset + shift);\n\tfor (var i = 0; i < num.length - offset; i++) {\n\t\tthis.num[i] = num[i + offset];\n\t}\n}\n\nQRPolynomial.prototype = {\n\n\tget : function(index) {\n\t\treturn this.num[index];\n\t},\n\t\n\tgetLength : function() {\n\t\treturn this.num.length;\n\t},\n\t\n\tmultiply : function(e) {\n\t\n\t\tvar num = new Array(this.getLength() + e.getLength() - 1);\n\t\n\t\tfor (var i = 0; i < this.getLength(); i++) {\n\t\t\tfor (var j = 0; j < e.getLength(); j++) {\n\t\t\t\tnum[i + j] ^= math.gexp(math.glog(this.get(i) ) + math.glog(e.get(j) ) );\n\t\t\t}\n\t\t}\n\t\n\t\treturn new QRPolynomial(num, 0);\n\t},\n\t\n\tmod : function(e) {\n\t\n\t\tif (this.getLength() - e.getLength() < 0) {\n\t\t\treturn this;\n\t\t}\n\t\n\t\tvar ratio = math.glog(this.get(0) ) - math.glog(e.get(0) );\n\t\n\t\tvar num = new Array(this.getLength() );\n\t\t\n\t\tfor (var i = 0; i < this.getLength(); i++) {\n\t\t\tnum[i] = this.get(i);\n\t\t}\n\t\t\n\t\tfor (var i = 0; i < e.getLength(); i++) {\n\t\t\tnum[i] ^= math.gexp(math.glog(e.get(i) ) + ratio);\n\t\t}\n\t\n\t\t// recursive call\n\t\treturn new QRPolynomial(num, 0).mod(e);\n\t}\n};\n\nmodule.exports = QRPolynomial;\n","var QRMath = {\n\n\tglog : function(n) {\n\t\n\t\tif (n < 1) {\n\t\t\tthrow new Error(\"glog(\" + n + \")\");\n\t\t}\n\t\t\n\t\treturn QRMath.LOG_TABLE[n];\n\t},\n\t\n\tgexp : function(n) {\n\t\n\t\twhile (n < 0) {\n\t\t\tn += 255;\n\t\t}\n\t\n\t\twhile (n >= 256) {\n\t\t\tn -= 255;\n\t\t}\n\t\n\t\treturn QRMath.EXP_TABLE[n];\n\t},\n\t\n\tEXP_TABLE : new Array(256),\n\t\n\tLOG_TABLE : new Array(256)\n\n};\n\t\nfor (var i = 0; i < 8; i++) {\n\tQRMath.EXP_TABLE[i] = 1 << i;\n}\nfor (var i = 8; i < 256; i++) {\n\tQRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4]\n\t\t^ QRMath.EXP_TABLE[i - 5]\n\t\t^ QRMath.EXP_TABLE[i - 6]\n\t\t^ QRMath.EXP_TABLE[i - 8];\n}\nfor (var i = 0; i < 255; i++) {\n\tQRMath.LOG_TABLE[QRMath.EXP_TABLE[i] ] = i;\n}\n\nmodule.exports = QRMath;\n","'use strict';\n\nvar _isInteger = require('babel-runtime/core-js/number/is-integer');\n\nvar _isInteger2 = _interopRequireDefault(_isInteger);\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _WidgetUtils = require('./utils/WidgetUtils');\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nvar _RoomViewStore = require('./stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _languageHandler = require('./languageHandler');\n\nvar _IntegrationManagers = require('./integrations/IntegrationManagers');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction sendResponse(event, res) {\n var data = JSON.parse((0, _stringify2.default)(event.data));\n data.response = res;\n event.source.postMessage(data, event.origin);\n} /*\n Copyright 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/*\nListens for incoming postMessage requests from the integrations UI URL. The following API is exposed:\n{\n action: \"invite\" | \"membership_state\" | \"bot_options\" | \"set_bot_options\" | etc... ,\n room_id: $ROOM_ID,\n user_id: $USER_ID\n // additional request fields\n}\n\nThe complete request object is returned to the caller with an additional \"response\" key like so:\n{\n action: \"invite\" | \"membership_state\" | \"bot_options\" | \"set_bot_options\",\n room_id: $ROOM_ID,\n user_id: $USER_ID,\n // additional request fields\n response: { ... }\n}\n\nThe \"action\" determines the format of the request and response. All actions can return an error response.\nAn error response is a \"response\" object which consists of a sole \"error\" key to indicate an error.\nThey look like:\n{\n error: {\n message: \"Unable to invite user into room.\",\n _error: \n }\n}\nThe \"message\" key should be a human-friendly string.\n\nACTIONS\n=======\nAll actions can return an error response instead of the response outlined below.\n\ninvite\n------\nInvites a user into a room.\n\nRequest:\n - room_id is the room to invite the user into.\n - user_id is the user ID to invite.\n - No additional fields.\nResponse:\n{\n success: true\n}\nExample:\n{\n action: \"invite\",\n room_id: \"!foo:bar\",\n user_id: \"@invitee:bar\",\n response: {\n success: true\n }\n}\n\nset_bot_options\n---------------\nSet the m.room.bot.options state event for a bot user.\n\nRequest:\n - room_id is the room to send the state event into.\n - user_id is the user ID of the bot who you're setting options for.\n - \"content\" is an object consisting of the content you wish to set.\nResponse:\n{\n success: true\n}\nExample:\n{\n action: \"set_bot_options\",\n room_id: \"!foo:bar\",\n user_id: \"@bot:bar\",\n content: {\n default_option: \"alpha\"\n },\n response: {\n success: true\n }\n}\n\nget_membership_count\n--------------------\nGet the number of joined users in the room.\n\nRequest:\n - room_id is the room to get the count in.\nResponse:\n78\nExample:\n{\n action: \"get_membership_count\",\n room_id: \"!foo:bar\",\n response: 78\n}\n\ncan_send_event\n--------------\nCheck if the client can send the given event into the given room. If the client\nis unable to do this, an error response is returned instead of 'response: false'.\n\nRequest:\n - room_id is the room to do the check in.\n - event_type is the event type which will be sent.\n - is_state is true if the event to be sent is a state event.\nResponse:\ntrue\nExample:\n{\n action: \"can_send_event\",\n is_state: false,\n event_type: \"m.room.message\",\n room_id: \"!foo:bar\",\n response: true\n}\n\nset_widget\n----------\nSet a new widget in the room. Clobbers based on the ID.\n\nRequest:\n - `room_id` (String) is the room to set the widget in.\n - `widget_id` (String) is the ID of the widget to add (or replace if it already exists).\n It can be an arbitrary UTF8 string and is purely for distinguishing between widgets.\n - `url` (String) is the URL that clients should load in an iframe to run the widget.\n All widgets must have a valid URL. If the URL is `null` (not `undefined`), the\n widget will be removed from the room.\n - `type` (String) is the type of widget, which is provided as a hint for matrix clients so they\n can configure/lay out the widget in different ways. All widgets must have a type.\n - `name` (String) is an optional human-readable string about the widget.\n - `data` (Object) is some optional data about the widget, and can contain arbitrary key/value pairs.\nResponse:\n{\n success: true\n}\nExample:\n{\n action: \"set_widget\",\n room_id: \"!foo:bar\",\n widget_id: \"abc123\",\n url: \"http://widget.url\",\n type: \"example\",\n response: {\n success: true\n }\n}\n\nget_widgets\n-----------\nGet a list of all widgets in the room. The response is an array\nof state events.\n\nRequest:\n - `room_id` (String) is the room to get the widgets in.\nResponse:\n[\n {\n type: \"im.vector.modular.widgets\",\n state_key: \"wid1\",\n content: {\n type: \"grafana\",\n url: \"https://grafanaurl\",\n name: \"dashboard\",\n data: {key: \"val\"}\n }\n room_id: “!foo:bar”,\n sender: \"@alice:localhost\"\n }\n]\nExample:\n{\n action: \"get_widgets\",\n room_id: \"!foo:bar\",\n response: [\n {\n type: \"im.vector.modular.widgets\",\n state_key: \"wid1\",\n content: {\n type: \"grafana\",\n url: \"https://grafanaurl\",\n name: \"dashboard\",\n data: {key: \"val\"}\n }\n room_id: “!foo:bar”,\n sender: \"@alice:localhost\"\n }\n ]\n}\n\n\nmembership_state AND bot_options\n--------------------------------\nGet the content of the \"m.room.member\" or \"m.room.bot.options\" state event respectively.\n\nNB: Whilst this API is basically equivalent to getStateEvent, we specifically do not\n want external entities to be able to query any state event for any room, hence the\n restrictive API outlined here.\n\nRequest:\n - room_id is the room which has the state event.\n - user_id is the state_key parameter which in both cases is a user ID (the member or the bot).\n - No additional fields.\nResponse:\n - The event content. If there is no state event, the \"response\" key should be null.\nExample:\n{\n action: \"membership_state\",\n room_id: \"!foo:bar\",\n user_id: \"@somemember:bar\",\n response: {\n membership: \"join\",\n displayname: \"Bob\",\n avatar_url: null\n }\n}\n*/\n\nfunction sendError(event, msg, nestedError) {\n console.error(\"Action:\" + event.data.action + \" failed with message: \" + msg);\n var data = JSON.parse((0, _stringify2.default)(event.data));\n data.response = {\n error: {\n message: msg\n }\n };\n if (nestedError) {\n data.response.error._error = nestedError;\n }\n event.source.postMessage(data, event.origin);\n}\n\nfunction inviteUser(event, roomId, userId) {\n console.log('Received request to invite ' + userId + ' into room ' + roomId);\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n var room = client.getRoom(roomId);\n if (room) {\n // if they are already invited we can resolve immediately.\n var member = room.getMember(userId);\n if (member && member.membership === \"invite\") {\n sendResponse(event, {\n success: true\n });\n return;\n }\n }\n\n client.invite(roomId, userId).done(function () {\n sendResponse(event, {\n success: true\n });\n }, function (err) {\n sendError(event, (0, _languageHandler._t)('You need to be able to invite users to do that.'), err);\n });\n}\n\nfunction setWidget(event, roomId) {\n var widgetId = event.data.widget_id;\n var widgetType = event.data.type;\n var widgetUrl = event.data.url;\n var widgetName = event.data.name; // optional\n var widgetData = event.data.data; // optional\n var userWidget = event.data.userWidget;\n\n // both adding/removing widgets need these checks\n if (!widgetId || widgetUrl === undefined) {\n sendError(event, (0, _languageHandler._t)(\"Unable to create widget.\"), new Error(\"Missing required widget fields.\"));\n return;\n }\n\n if (widgetUrl !== null) {\n // if url is null it is being deleted, don't need to check name/type/etc\n // check types of fields\n if (widgetName !== undefined && typeof widgetName !== 'string') {\n sendError(event, (0, _languageHandler._t)(\"Unable to create widget.\"), new Error(\"Optional field 'name' must be a string.\"));\n return;\n }\n if (widgetData !== undefined && !(widgetData instanceof Object)) {\n sendError(event, (0, _languageHandler._t)(\"Unable to create widget.\"), new Error(\"Optional field 'data' must be an Object.\"));\n return;\n }\n if (typeof widgetType !== 'string') {\n sendError(event, (0, _languageHandler._t)(\"Unable to create widget.\"), new Error(\"Field 'type' must be a string.\"));\n return;\n }\n if (typeof widgetUrl !== 'string') {\n sendError(event, (0, _languageHandler._t)(\"Unable to create widget.\"), new Error(\"Field 'url' must be a string or null.\"));\n return;\n }\n }\n\n if (userWidget) {\n _WidgetUtils2.default.setUserWidget(widgetId, widgetType, widgetUrl, widgetName, widgetData).then(function () {\n sendResponse(event, {\n success: true\n });\n\n _dispatcher2.default.dispatch({ action: \"user_widget_updated\" });\n }).catch(function (e) {\n sendError(event, (0, _languageHandler._t)('Unable to create widget.'), e);\n });\n } else {\n // Room widget\n if (!roomId) {\n sendError(event, (0, _languageHandler._t)('Missing roomId.'), null);\n }\n _WidgetUtils2.default.setRoomWidget(roomId, widgetId, widgetType, widgetUrl, widgetName, widgetData).then(function () {\n sendResponse(event, {\n success: true\n });\n }, function (err) {\n sendError(event, (0, _languageHandler._t)('Failed to send request.'), err);\n });\n }\n}\n\nfunction getWidgets(event, roomId) {\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n var widgetStateEvents = [];\n\n if (roomId) {\n var room = client.getRoom(roomId);\n if (!room) {\n sendError(event, (0, _languageHandler._t)('This room is not recognised.'));\n return;\n }\n // XXX: This gets the raw event object (I think because we can't\n // send the MatrixEvent over postMessage?)\n widgetStateEvents = _WidgetUtils2.default.getRoomWidgets(room).map(function (ev) {\n return ev.event;\n });\n }\n\n // Add user widgets (not linked to a specific room)\n var userWidgets = _WidgetUtils2.default.getUserWidgetsArray();\n widgetStateEvents = widgetStateEvents.concat(userWidgets);\n\n sendResponse(event, widgetStateEvents);\n}\n\nfunction getRoomEncState(event, roomId) {\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n var room = client.getRoom(roomId);\n if (!room) {\n sendError(event, (0, _languageHandler._t)('This room is not recognised.'));\n return;\n }\n var roomIsEncrypted = _MatrixClientPeg2.default.get().isRoomEncrypted(roomId);\n\n sendResponse(event, roomIsEncrypted);\n}\n\nfunction setPlumbingState(event, roomId, status) {\n if (typeof status !== 'string') {\n throw new Error('Plumbing state status should be a string');\n }\n console.log('Received request to set plumbing state to status \"' + status + '\" in room ' + roomId);\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n client.sendStateEvent(roomId, \"m.room.plumbing\", { status: status }).done(function () {\n sendResponse(event, {\n success: true\n });\n }, function (err) {\n sendError(event, err.message ? err.message : (0, _languageHandler._t)('Failed to send request.'), err);\n });\n}\n\nfunction setBotOptions(event, roomId, userId) {\n console.log('Received request to set options for bot ' + userId + ' in room ' + roomId);\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n client.sendStateEvent(roomId, \"m.room.bot.options\", event.data.content, \"_\" + userId).done(function () {\n sendResponse(event, {\n success: true\n });\n }, function (err) {\n sendError(event, err.message ? err.message : (0, _languageHandler._t)('Failed to send request.'), err);\n });\n}\n\nfunction setBotPower(event, roomId, userId, level) {\n if (!((0, _isInteger2.default)(level) && level >= 0)) {\n sendError(event, (0, _languageHandler._t)('Power level must be positive integer.'));\n return;\n }\n\n console.log('Received request to set power level to ' + level + ' for bot ' + userId + ' in room ' + roomId + '.');\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n\n client.getStateEvent(roomId, \"m.room.power_levels\", \"\").then(function (powerLevels) {\n var powerEvent = new _matrixJsSdk.MatrixEvent({\n type: \"m.room.power_levels\",\n content: powerLevels\n });\n\n client.setPowerLevel(roomId, userId, level, powerEvent).done(function () {\n sendResponse(event, {\n success: true\n });\n }, function (err) {\n sendError(event, err.message ? err.message : (0, _languageHandler._t)('Failed to send request.'), err);\n });\n });\n}\n\nfunction getMembershipState(event, roomId, userId) {\n console.log('membership_state of ' + userId + ' in room ' + roomId + ' requested.');\n returnStateEvent(event, roomId, \"m.room.member\", userId);\n}\n\nfunction getJoinRules(event, roomId) {\n console.log('join_rules of ' + roomId + ' requested.');\n returnStateEvent(event, roomId, \"m.room.join_rules\", \"\");\n}\n\nfunction botOptions(event, roomId, userId) {\n console.log('bot_options of ' + userId + ' in room ' + roomId + ' requested.');\n returnStateEvent(event, roomId, \"m.room.bot.options\", \"_\" + userId);\n}\n\nfunction getMembershipCount(event, roomId) {\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n var room = client.getRoom(roomId);\n if (!room) {\n sendError(event, (0, _languageHandler._t)('This room is not recognised.'));\n return;\n }\n var count = room.getJoinedMemberCount();\n sendResponse(event, count);\n}\n\nfunction canSendEvent(event, roomId) {\n var evType = \"\" + event.data.event_type; // force stringify\n var isState = Boolean(event.data.is_state);\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n var room = client.getRoom(roomId);\n if (!room) {\n sendError(event, (0, _languageHandler._t)('This room is not recognised.'));\n return;\n }\n if (room.getMyMembership() !== \"join\") {\n sendError(event, (0, _languageHandler._t)('You are not in this room.'));\n return;\n }\n var me = client.credentials.userId;\n\n var canSend = false;\n if (isState) {\n canSend = room.currentState.maySendStateEvent(evType, me);\n } else {\n canSend = room.currentState.maySendEvent(evType, me);\n }\n\n if (!canSend) {\n sendError(event, (0, _languageHandler._t)('You do not have permission to do that in this room.'));\n return;\n }\n\n sendResponse(event, true);\n}\n\nfunction returnStateEvent(event, roomId, eventType, stateKey) {\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n var room = client.getRoom(roomId);\n if (!room) {\n sendError(event, (0, _languageHandler._t)('This room is not recognised.'));\n return;\n }\n var stateEvent = room.currentState.getStateEvents(eventType, stateKey);\n if (!stateEvent) {\n sendResponse(event, null);\n return;\n }\n sendResponse(event, stateEvent.getContent());\n}\n\nvar onMessage = function onMessage(event) {\n if (!event.origin) {\n // stupid chrome\n event.origin = event.originalEvent.origin;\n }\n\n // Check that the integrations UI URL starts with the origin of the event\n // This means the URL could contain a path (like /develop) and still be used\n // to validate event origins, which do not specify paths.\n // (See https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage)\n var configUrl = void 0;\n try {\n if (!openManagerUrl) openManagerUrl = _IntegrationManagers.IntegrationManagers.sharedInstance().getPrimaryManager().uiUrl;\n configUrl = new URL(openManagerUrl);\n } catch (e) {\n // No integrations UI URL, ignore silently.\n return;\n }\n var eventOriginUrl = void 0;\n try {\n eventOriginUrl = new URL(event.origin);\n } catch (e) {\n return;\n }\n // TODO -- Scalar postMessage API should be namespaced with event.data.api field\n // Fix following \"if\" statement to respond only to specific API messages.\n if (configUrl.origin !== eventOriginUrl.origin || !event.data.action || event.data.api // Ignore messages with specific API set\n ) {\n // don't log this - debugging APIs and browser add-ons like to spam\n // postMessage which floods the log otherwise\n return;\n }\n\n if (event.data.action === \"close_scalar\") {\n _dispatcher2.default.dispatch({ action: \"close_scalar\" });\n sendResponse(event, null);\n return;\n }\n\n var roomId = event.data.room_id;\n var userId = event.data.user_id;\n\n if (!roomId) {\n // These APIs don't require roomId\n // Get and set user widgets (not associated with a specific room)\n // If roomId is specified, it must be validated, so room-based widgets agreed\n // handled further down.\n if (event.data.action === \"get_widgets\") {\n getWidgets(event, null);\n return;\n } else if (event.data.action === \"set_widget\") {\n setWidget(event, null);\n return;\n } else {\n sendError(event, (0, _languageHandler._t)('Missing room_id in request'));\n return;\n }\n }\n\n if (roomId !== _RoomViewStore2.default.getRoomId()) {\n sendError(event, (0, _languageHandler._t)('Room %(roomId)s not visible', { roomId: roomId }));\n return;\n }\n\n // Get and set room-based widgets\n if (event.data.action === \"get_widgets\") {\n getWidgets(event, roomId);\n return;\n } else if (event.data.action === \"set_widget\") {\n setWidget(event, roomId);\n return;\n }\n\n // These APIs don't require userId\n if (event.data.action === \"join_rules_state\") {\n getJoinRules(event, roomId);\n return;\n } else if (event.data.action === \"set_plumbing_state\") {\n setPlumbingState(event, roomId, event.data.status);\n return;\n } else if (event.data.action === \"get_membership_count\") {\n getMembershipCount(event, roomId);\n return;\n } else if (event.data.action === \"get_room_enc_state\") {\n getRoomEncState(event, roomId);\n return;\n } else if (event.data.action === \"can_send_event\") {\n canSendEvent(event, roomId);\n return;\n }\n\n if (!userId) {\n sendError(event, (0, _languageHandler._t)('Missing user_id in request'));\n return;\n }\n switch (event.data.action) {\n case \"membership_state\":\n getMembershipState(event, roomId, userId);\n break;\n case \"invite\":\n inviteUser(event, roomId, userId);\n break;\n case \"bot_options\":\n botOptions(event, roomId, userId);\n break;\n case \"set_bot_options\":\n setBotOptions(event, roomId, userId);\n break;\n case \"set_bot_power\":\n setBotPower(event, roomId, userId, event.data.level);\n break;\n default:\n console.warn(\"Unhandled postMessage event with action '\" + event.data.action + \"'\");\n break;\n }\n};\n\nvar listenerCount = 0;\nvar openManagerUrl = null;\nmodule.exports = {\n startListening: function startListening() {\n if (listenerCount === 0) {\n window.addEventListener(\"message\", onMessage, false);\n }\n listenerCount += 1;\n },\n\n stopListening: function stopListening() {\n listenerCount -= 1;\n if (listenerCount === 0) {\n window.removeEventListener(\"message\", onMessage);\n }\n if (listenerCount < 0) {\n // Make an error so we get a stack trace\n var e = new Error(\"ScalarMessaging: mismatched startListening / stopListening detected.\" + \" Negative count\");\n console.error(e);\n }\n },\n\n setOpenManagerUrl: function setOpenManagerUrl(url) {\n openManagerUrl = url;\n }\n};\n//# sourceMappingURL=ScalarMessaging.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray2 = require(\"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _entries = require(\"babel-runtime/core-js/object/entries\");\n\nvar _entries2 = _interopRequireDefault(_entries);\n\nvar _promise = require(\"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require(\"../../../../../languageHandler\");\n\nvar languageHandler = _interopRequireWildcard(_languageHandler);\n\nvar _ProfileSettings = require(\"../../ProfileSettings\");\n\nvar _ProfileSettings2 = _interopRequireDefault(_ProfileSettings);\n\nvar _Field = require(\"../../../elements/Field\");\n\nvar _Field2 = _interopRequireDefault(_Field);\n\nvar _SettingsStore = require(\"../../../../../settings/SettingsStore\");\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _LanguageDropdown = require(\"../../../elements/LanguageDropdown\");\n\nvar _LanguageDropdown2 = _interopRequireDefault(_LanguageDropdown);\n\nvar _AccessibleButton = require(\"../../../elements/AccessibleButton\");\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _DeactivateAccountDialog = require(\"../../../dialogs/DeactivateAccountDialog\");\n\nvar _DeactivateAccountDialog2 = _interopRequireDefault(_DeactivateAccountDialog);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _theme = require(\"../../../../../theme\");\n\nvar _PlatformPeg = require(\"../../../../../PlatformPeg\");\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nvar _MatrixClientPeg = require(\"../../../../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _ = require(\"../../../../..\");\n\nvar _2 = _interopRequireDefault(_);\n\nvar _Modal = require(\"../../../../../Modal\");\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _dispatcher = require(\"../../../../../dispatcher\");\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Terms = require(\"../../../../../Terms\");\n\nvar _matrixJsSdk = require(\"matrix-js-sdk\");\n\nvar _IdentityAuthClient = require(\"../../../../../IdentityAuthClient\");\n\nvar _IdentityAuthClient2 = _interopRequireDefault(_IdentityAuthClient);\n\nvar _UrlUtils = require(\"../../../../../utils/UrlUtils\");\n\nvar _boundThreepids = require(\"../../../../../boundThreepids\");\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 New Vector Ltd\nCopyright 2019 The Matrix.org Foundation C.I.C.\nCopyright 2019 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar GeneralUserSettingsTab = function (_React$Component) {\n (0, _inherits3.default)(GeneralUserSettingsTab, _React$Component);\n\n function GeneralUserSettingsTab() {\n (0, _classCallCheck3.default)(this, GeneralUserSettingsTab);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (GeneralUserSettingsTab.__proto__ || (0, _getPrototypeOf2.default)(GeneralUserSettingsTab)).call(this));\n\n _this._onAction = function (payload) {\n if (payload.action === 'id_server_changed') {\n _this.setState({ haveIdServer: Boolean(_MatrixClientPeg2.default.get().getIdentityServerUrl()) });\n _this._getThreepidState();\n }\n };\n\n _this._onEmailsChange = function (emails) {\n _this.setState({ emails: emails });\n };\n\n _this._onMsisdnsChange = function (msisdns) {\n _this.setState({ msisdns: msisdns });\n };\n\n _this._onLanguageChange = function (newLanguage) {\n if (_this.state.language === newLanguage) return;\n\n _SettingsStore2.default.setValue(\"language\", null, _SettingsStore.SettingLevel.DEVICE, newLanguage);\n _this.setState({ language: newLanguage });\n _PlatformPeg2.default.get().reload();\n };\n\n _this._onThemeChange = function (e) {\n var newTheme = e.target.value;\n if (_this.state.theme === newTheme) return;\n\n _SettingsStore2.default.setValue(\"theme\", null, _SettingsStore.SettingLevel.ACCOUNT, newTheme);\n _this.setState({ theme: newTheme });\n _dispatcher2.default.dispatch({ action: 'set_theme', value: newTheme });\n };\n\n _this._onPasswordChangeError = function (err) {\n // TODO: Figure out a design that doesn't involve replacing the current dialog\n var errMsg = err.error || \"\";\n if (err.httpStatus === 403) {\n errMsg = (0, _languageHandler._t)(\"Failed to change password. Is your password correct?\");\n } else if (err.httpStatus) {\n errMsg += \" (HTTP status \" + err.httpStatus + \")\";\n }\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to change password: \" + errMsg);\n _Modal2.default.createTrackedDialog('Failed to change password', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: errMsg\n });\n };\n\n _this._onPasswordChanged = function () {\n // TODO: Figure out a design that doesn't involve replacing the current dialog\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Password changed', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Success\"),\n description: (0, _languageHandler._t)(\"Your password was successfully changed. You will not receive \" + \"push notifications on other devices until you log back in to them\") + \".\"\n });\n };\n\n _this._onDeactivateClicked = function () {\n _Modal2.default.createTrackedDialog('Deactivate Account', '', _DeactivateAccountDialog2.default, {\n onFinished: function onFinished(success) {\n if (success) _this.props.closeSettingsFn();\n }\n });\n };\n\n _this.state = {\n language: languageHandler.getCurrentLanguage(),\n theme: _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.ACCOUNT, \"theme\"),\n haveIdServer: Boolean(_MatrixClientPeg2.default.get().getIdentityServerUrl()),\n serverSupportsSeparateAddAndBind: null,\n idServerHasUnsignedTerms: false,\n requiredPolicyInfo: { // This object is passed along to a component for handling\n hasTerms: false\n // policiesAndServices, // From the startTermsFlow callback\n // agreedUrls, // From the startTermsFlow callback\n // resolve, // Promise resolve function for startTermsFlow callback\n },\n emails: [],\n msisdns: []\n };\n\n _this.dispatcherRef = _dispatcher2.default.register(_this._onAction);\n return _this;\n }\n\n (0, _createClass3.default)(GeneralUserSettingsTab, [{\n key: \"componentWillMount\",\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var cli, serverSupportsSeparateAddAndBind;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n cli = _MatrixClientPeg2.default.get();\n _context.next = 3;\n return (0, _bluebird.resolve)(cli.doesServerSupportSeparateAddAndBind());\n\n case 3:\n serverSupportsSeparateAddAndBind = _context.sent;\n\n this.setState({ serverSupportsSeparateAddAndBind: serverSupportsSeparateAddAndBind });\n\n this._getThreepidState();\n\n case 6:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function componentWillMount() {\n return _ref.apply(this, arguments);\n }\n\n return componentWillMount;\n }()\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n _dispatcher2.default.unregister(this.dispatcherRef);\n }\n }, {\n key: \"_getThreepidState\",\n value: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var cli, threepids;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n cli = _MatrixClientPeg2.default.get();\n\n // Check to see if terms need accepting\n\n this._checkTerms();\n\n // Need to get 3PIDs generally for Account section and possibly also for\n // Discovery (assuming we have an IS and terms are agreed).\n _context2.next = 4;\n return (0, _bluebird.resolve)((0, _boundThreepids.getThreepidsWithBindStatus)(cli));\n\n case 4:\n threepids = _context2.sent;\n\n this.setState({ emails: threepids.filter(function (a) {\n return a.medium === 'email';\n }) });\n this.setState({ msisdns: threepids.filter(function (a) {\n return a.medium === 'msisdn';\n }) });\n\n case 7:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function _getThreepidState() {\n return _ref2.apply(this, arguments);\n }\n\n return _getThreepidState;\n }()\n }, {\n key: \"_checkTerms\",\n value: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var _this2 = this;\n\n var authClient, idAccessToken;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (this.state.haveIdServer) {\n _context3.next = 3;\n break;\n }\n\n this.setState({ idServerHasUnsignedTerms: false });\n return _context3.abrupt(\"return\");\n\n case 3:\n\n // By starting the terms flow we get the logic for checking which terms the user has signed\n // for free. So we might as well use that for our own purposes.\n authClient = new _IdentityAuthClient2.default();\n _context3.next = 6;\n return (0, _bluebird.resolve)(authClient.getAccessToken({ check: false }));\n\n case 6:\n idAccessToken = _context3.sent;\n\n (0, _Terms.startTermsFlow)([new _Terms.Service(_matrixJsSdk.SERVICE_TYPES.IS, _MatrixClientPeg2.default.get().getIdentityServerUrl(), idAccessToken)], function (policiesAndServices, agreedUrls, extraClassNames) {\n return new _promise2.default(function (resolve, reject) {\n _this2.setState({\n idServerName: (0, _UrlUtils.abbreviateUrl)(_MatrixClientPeg2.default.get().getIdentityServerUrl()),\n requiredPolicyInfo: {\n hasTerms: true,\n policiesAndServices: policiesAndServices,\n agreedUrls: agreedUrls,\n resolve: resolve\n }\n });\n });\n }).then(function () {\n // User accepted all terms\n _this2.setState({\n requiredPolicyInfo: {\n hasTerms: false\n }\n });\n });\n\n case 8:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function _checkTerms() {\n return _ref3.apply(this, arguments);\n }\n\n return _checkTerms;\n }()\n }, {\n key: \"_renderProfileSection\",\n value: function _renderProfileSection() {\n return _react2.default.createElement(\n \"div\",\n { className: \"mx_SettingsTab_section\" },\n _react2.default.createElement(\n \"span\",\n { className: \"mx_SettingsTab_subheading\" },\n (0, _languageHandler._t)(\"Profile\")\n ),\n _react2.default.createElement(_ProfileSettings2.default, null)\n );\n }\n }, {\n key: \"_renderAccountSection\",\n value: function _renderAccountSection() {\n var ChangePassword = _2.default.getComponent(\"views.settings.ChangePassword\");\n var EmailAddresses = _2.default.getComponent(\"views.settings.account.EmailAddresses\");\n var PhoneNumbers = _2.default.getComponent(\"views.settings.account.PhoneNumbers\");\n var Spinner = _2.default.getComponent(\"views.elements.Spinner\");\n\n var passwordChangeForm = _react2.default.createElement(ChangePassword, {\n className: \"mx_GeneralUserSettingsTab_changePassword\",\n rowClassName: \"\",\n buttonKind: \"primary\",\n onError: this._onPasswordChangeError,\n onFinished: this._onPasswordChanged });\n\n var threepidSection = null;\n\n // For older homeservers without separate 3PID add and bind methods (MSC2290),\n // we use a combo add with bind option API which requires an identity server to\n // validate 3PID ownership even if we're just adding to the homeserver only.\n // For newer homeservers with separate 3PID add and bind methods (MSC2290),\n // there is no such concern, so we can always show the HS account 3PIDs.\n if (this.state.haveIdServer || this.state.serverSupportsSeparateAddAndBind === true) {\n threepidSection = _react2.default.createElement(\n \"div\",\n null,\n _react2.default.createElement(\n \"span\",\n { className: \"mx_SettingsTab_subheading\" },\n (0, _languageHandler._t)(\"Email addresses\")\n ),\n _react2.default.createElement(EmailAddresses, {\n emails: this.state.emails,\n onEmailsChange: this._onEmailsChange\n }),\n _react2.default.createElement(\n \"span\",\n { className: \"mx_SettingsTab_subheading\" },\n (0, _languageHandler._t)(\"Phone numbers\")\n ),\n _react2.default.createElement(PhoneNumbers, {\n msisdns: this.state.msisdns,\n onMsisdnsChange: this._onMsisdnsChange\n })\n );\n } else if (this.state.serverSupportsSeparateAddAndBind === null) {\n threepidSection = _react2.default.createElement(Spinner, null);\n }\n\n return _react2.default.createElement(\n \"div\",\n { className: \"mx_SettingsTab_section mx_GeneralUserSettingsTab_accountSection\" },\n _react2.default.createElement(\n \"span\",\n { className: \"mx_SettingsTab_subheading\" },\n (0, _languageHandler._t)(\"Account\")\n ),\n _react2.default.createElement(\n \"p\",\n { className: \"mx_SettingsTab_subsectionText\" },\n (0, _languageHandler._t)(\"Set a new account password...\")\n ),\n passwordChangeForm,\n threepidSection\n );\n }\n }, {\n key: \"_renderLanguageSection\",\n value: function _renderLanguageSection() {\n // TODO: Convert to new-styled Field\n return _react2.default.createElement(\n \"div\",\n { className: \"mx_SettingsTab_section\" },\n _react2.default.createElement(\n \"span\",\n { className: \"mx_SettingsTab_subheading\" },\n (0, _languageHandler._t)(\"Language and region\")\n ),\n _react2.default.createElement(_LanguageDropdown2.default, { className: \"mx_GeneralUserSettingsTab_languageInput\",\n onOptionChange: this._onLanguageChange, value: this.state.language })\n );\n }\n }, {\n key: \"_renderThemeSection\",\n value: function _renderThemeSection() {\n var SettingsFlag = _2.default.getComponent(\"views.elements.SettingsFlag\");\n return _react2.default.createElement(\n \"div\",\n { className: \"mx_SettingsTab_section mx_GeneralUserSettingsTab_themeSection\" },\n _react2.default.createElement(\n \"span\",\n { className: \"mx_SettingsTab_subheading\" },\n (0, _languageHandler._t)(\"Theme\")\n ),\n _react2.default.createElement(\n _Field2.default,\n { id: \"theme\", label: (0, _languageHandler._t)(\"Theme\"), element: \"select\",\n value: this.state.theme, onChange: this._onThemeChange },\n (0, _entries2.default)((0, _theme.enumerateThemes)()).map(function (_ref4) {\n var _ref5 = (0, _slicedToArray3.default)(_ref4, 2),\n theme = _ref5[0],\n text = _ref5[1];\n\n return _react2.default.createElement(\n \"option\",\n { key: theme, value: theme },\n text\n );\n })\n ),\n _react2.default.createElement(SettingsFlag, { name: \"useCompactLayout\", level: _SettingsStore.SettingLevel.ACCOUNT })\n );\n }\n }, {\n key: \"_renderDiscoverySection\",\n value: function _renderDiscoverySection() {\n var SetIdServer = _2.default.getComponent(\"views.settings.SetIdServer\");\n\n if (this.state.requiredPolicyInfo.hasTerms) {\n var InlineTermsAgreement = _2.default.getComponent(\"views.terms.InlineTermsAgreement\");\n var intro = _react2.default.createElement(\n \"span\",\n { className: \"mx_SettingsTab_subsectionText\" },\n (0, _languageHandler._t)(\"Agree to the identity server (%(serverName)s) Terms of Service to \" + \"allow yourself to be discoverable by email address or phone number.\", { serverName: this.state.idServerName })\n );\n return _react2.default.createElement(\n \"div\",\n null,\n _react2.default.createElement(InlineTermsAgreement, {\n policiesAndServicePairs: this.state.requiredPolicyInfo.policiesAndServices,\n agreedUrls: this.state.requiredPolicyInfo.agreedUrls,\n onFinished: this.state.requiredPolicyInfo.resolve,\n introElement: intro\n }),\n _react2.default.createElement(SetIdServer, { missingTerms: true })\n );\n }\n\n var EmailAddresses = _2.default.getComponent(\"views.settings.discovery.EmailAddresses\");\n var PhoneNumbers = _2.default.getComponent(\"views.settings.discovery.PhoneNumbers\");\n\n var threepidSection = this.state.haveIdServer ? _react2.default.createElement(\n \"div\",\n { className: \"mx_GeneralUserSettingsTab_discovery\" },\n _react2.default.createElement(\n \"span\",\n { className: \"mx_SettingsTab_subheading\" },\n (0, _languageHandler._t)(\"Email addresses\")\n ),\n _react2.default.createElement(EmailAddresses, { emails: this.state.emails }),\n _react2.default.createElement(\n \"span\",\n { className: \"mx_SettingsTab_subheading\" },\n (0, _languageHandler._t)(\"Phone numbers\")\n ),\n _react2.default.createElement(PhoneNumbers, { msisdns: this.state.msisdns })\n ) : null;\n\n return _react2.default.createElement(\n \"div\",\n { className: \"mx_SettingsTab_section\" },\n threepidSection,\n _react2.default.createElement(SetIdServer, null)\n );\n }\n }, {\n key: \"_renderManagementSection\",\n value: function _renderManagementSection() {\n // TODO: Improve warning text for account deactivation\n return _react2.default.createElement(\n \"div\",\n { className: \"mx_SettingsTab_section\" },\n _react2.default.createElement(\n \"span\",\n { className: \"mx_SettingsTab_subheading\" },\n (0, _languageHandler._t)(\"Account management\")\n ),\n _react2.default.createElement(\n \"span\",\n { className: \"mx_SettingsTab_subsectionText\" },\n (0, _languageHandler._t)(\"Deactivating your account is a permanent action - be careful!\")\n ),\n _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this._onDeactivateClicked, kind: \"danger\" },\n (0, _languageHandler._t)(\"Deactivate Account\")\n )\n );\n }\n }, {\n key: \"_renderIntegrationManagerSection\",\n value: function _renderIntegrationManagerSection() {\n var SetIntegrationManager = _2.default.getComponent(\"views.settings.SetIntegrationManager\");\n\n return _react2.default.createElement(\n \"div\",\n { className: \"mx_SettingsTab_section\" },\n _react2.default.createElement(SetIntegrationManager, null)\n );\n }\n }, {\n key: \"render\",\n value: function render() {\n var discoWarning = this.state.requiredPolicyInfo.hasTerms ? _react2.default.createElement(\"img\", { className: \"mx_GeneralUserSettingsTab_warningIcon\",\n src: require(\"../../../../../../res/img/feather-customised/warning-triangle.svg\"),\n width: \"18\", height: \"18\", alt: (0, _languageHandler._t)(\"Warning\") }) : null;\n\n return _react2.default.createElement(\n \"div\",\n { className: \"mx_SettingsTab\" },\n _react2.default.createElement(\n \"div\",\n { className: \"mx_SettingsTab_heading\" },\n (0, _languageHandler._t)(\"General\")\n ),\n this._renderProfileSection(),\n this._renderAccountSection(),\n this._renderLanguageSection(),\n this._renderThemeSection(),\n _react2.default.createElement(\n \"div\",\n { className: \"mx_SettingsTab_heading\" },\n discoWarning,\n \" \",\n (0, _languageHandler._t)(\"Discovery\")\n ),\n this._renderDiscoverySection(),\n this._renderIntegrationManagerSection() /* Has its own title */,\n _react2.default.createElement(\n \"div\",\n { className: \"mx_SettingsTab_heading\" },\n (0, _languageHandler._t)(\"Deactivate account\")\n ),\n this._renderManagementSection()\n );\n }\n }]);\n return GeneralUserSettingsTab;\n}(_react2.default.Component);\n\nGeneralUserSettingsTab.propTypes = {\n closeSettingsFn: _propTypes2.default.func.isRequired\n};\nexports.default = GeneralUserSettingsTab;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=GeneralUserSettingsTab.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require(\"../../../languageHandler\");\n\nvar _MatrixClientPeg = require(\"../../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Field = require(\"../elements/Field\");\n\nvar _Field2 = _interopRequireDefault(_Field);\n\nvar _AccessibleButton = require(\"../elements/AccessibleButton\");\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _classnames = require(\"classnames\");\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _matrixJsSdk = require(\"matrix-js-sdk\");\n\nvar _HostingLink = require(\"../../../utils/HostingLink\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar ProfileSettings = function (_React$Component) {\n (0, _inherits3.default)(ProfileSettings, _React$Component);\n\n function ProfileSettings() {\n (0, _classCallCheck3.default)(this, ProfileSettings);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (ProfileSettings.__proto__ || (0, _getPrototypeOf2.default)(ProfileSettings)).call(this));\n\n _initialiseProps.call(_this);\n\n var client = _MatrixClientPeg2.default.get();\n var user = client.getUser(client.getUserId());\n if (!user) {\n // XXX: We shouldn't have to do this.\n // There seems to be a condition where the User object won't exist until a room\n // exists on the account. To work around this, we'll just create a temporary User\n // and use that.\n console.warn(\"User object not found - creating one for ProfileSettings\");\n user = new _matrixJsSdk.User(client.getUserId());\n }\n var avatarUrl = user.avatarUrl;\n if (avatarUrl) avatarUrl = client.mxcUrlToHttp(avatarUrl, 96, 96, 'crop', false);\n _this.state = {\n userId: user.userId,\n originalDisplayName: user.displayName,\n displayName: user.displayName,\n originalAvatarUrl: avatarUrl,\n avatarUrl: avatarUrl,\n avatarFile: null,\n enableProfileSave: false\n };\n return _this;\n }\n\n (0, _createClass3.default)(ProfileSettings, [{\n key: \"render\",\n value: function render() {\n // TODO: Why is rendering a box with an overlay so complicated? Can the DOM be reduced?\n\n var showOverlayAnyways = true;\n var avatarElement = _react2.default.createElement(\"div\", { className: \"mx_ProfileSettings_avatarPlaceholder\" });\n if (this.state.avatarUrl) {\n showOverlayAnyways = false;\n avatarElement = _react2.default.createElement(\"img\", { src: this.state.avatarUrl,\n alt: (0, _languageHandler._t)(\"Profile picture\") });\n }\n\n var avatarOverlayClasses = (0, _classnames2.default)({\n \"mx_ProfileSettings_avatarOverlay\": true,\n \"mx_ProfileSettings_avatarOverlay_show\": showOverlayAnyways\n });\n var avatarHoverElement = _react2.default.createElement(\n \"div\",\n { className: avatarOverlayClasses, onClick: this._uploadAvatar },\n _react2.default.createElement(\n \"span\",\n { className: \"mx_ProfileSettings_avatarOverlayText\" },\n (0, _languageHandler._t)(\"Upload profile picture\")\n ),\n _react2.default.createElement(\n \"div\",\n { className: \"mx_ProfileSettings_avatarOverlayImgContainer\" },\n _react2.default.createElement(\"div\", { className: \"mx_ProfileSettings_avatarOverlayImg\" })\n )\n );\n\n var hostingSignupLink = (0, _HostingLink.getHostingLink)('user-settings');\n var hostingSignup = null;\n if (hostingSignupLink) {\n hostingSignup = _react2.default.createElement(\n \"span\",\n { className: \"mx_ProfileSettings_hostingSignup\" },\n (0, _languageHandler._t)(\"Upgrade to your own domain\", {}, {\n a: function a(sub) {\n return _react2.default.createElement(\n \"a\",\n { href: hostingSignupLink, target: \"_blank\", rel: \"noopener\" },\n sub\n );\n }\n }),\n _react2.default.createElement(\n \"a\",\n { href: hostingSignupLink, target: \"_blank\", rel: \"noopener\" },\n _react2.default.createElement(\"img\", { src: require(\"../../../../res/img/external-link.svg\"), width: \"11\", height: \"10\", alt: \"\" })\n )\n );\n }\n\n return _react2.default.createElement(\n \"form\",\n { onSubmit: this._saveProfile, autoComplete: false, noValidate: true },\n _react2.default.createElement(\"input\", { type: \"file\", ref: \"avatarUpload\", className: \"mx_ProfileSettings_avatarUpload\",\n onChange: this._onAvatarChanged, accept: \"image/*\" }),\n _react2.default.createElement(\n \"div\",\n { className: \"mx_ProfileSettings_profile\" },\n _react2.default.createElement(\n \"div\",\n { className: \"mx_ProfileSettings_controls\" },\n _react2.default.createElement(\n \"p\",\n null,\n this.state.userId,\n hostingSignup\n ),\n _react2.default.createElement(_Field2.default, { id: \"profileDisplayName\", label: (0, _languageHandler._t)(\"Display Name\"),\n type: \"text\", value: this.state.displayName, autoComplete: \"off\",\n onChange: this._onDisplayNameChanged })\n ),\n _react2.default.createElement(\n \"div\",\n { className: \"mx_ProfileSettings_avatar\" },\n avatarElement,\n avatarHoverElement\n )\n ),\n _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this._saveProfile, kind: \"primary\",\n disabled: !this.state.enableProfileSave },\n (0, _languageHandler._t)(\"Save\")\n )\n );\n }\n }]);\n return ProfileSettings;\n}(_react2.default.Component);\n\nvar _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this._uploadAvatar = function (e) {\n e.stopPropagation();\n e.preventDefault();\n\n _this2.refs.avatarUpload.click();\n };\n\n this._saveProfile = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(e) {\n var client, newState, uri;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n e.stopPropagation();\n e.preventDefault();\n\n if (_this2.state.enableProfileSave) {\n _context.next = 4;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 4:\n _this2.setState({ enableProfileSave: false });\n\n client = _MatrixClientPeg2.default.get();\n newState = {};\n\n // TODO: What do we do about errors?\n\n if (!(_this2.state.originalDisplayName !== _this2.state.displayName)) {\n _context.next = 11;\n break;\n }\n\n _context.next = 10;\n return (0, _bluebird.resolve)(client.setDisplayName(_this2.state.displayName));\n\n case 10:\n newState.originalDisplayName = _this2.state.displayName;\n\n case 11:\n if (!_this2.state.avatarFile) {\n _context.next = 20;\n break;\n }\n\n _context.next = 14;\n return (0, _bluebird.resolve)(client.uploadContent(_this2.state.avatarFile));\n\n case 14:\n uri = _context.sent;\n _context.next = 17;\n return (0, _bluebird.resolve)(client.setAvatarUrl(uri));\n\n case 17:\n newState.avatarUrl = client.mxcUrlToHttp(uri, 96, 96, 'crop', false);\n newState.originalAvatarUrl = newState.avatarUrl;\n newState.avatarFile = null;\n\n case 20:\n\n _this2.setState(newState);\n\n case 21:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, _this2);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }();\n\n this._onDisplayNameChanged = function (e) {\n _this2.setState({\n displayName: e.target.value,\n enableProfileSave: true\n });\n };\n\n this._onAvatarChanged = function (e) {\n if (!e.target.files || !e.target.files.length) {\n _this2.setState({\n avatarUrl: _this2.state.originalAvatarUrl,\n avatarFile: null,\n enableProfileSave: false\n });\n return;\n }\n\n var file = e.target.files[0];\n var reader = new FileReader();\n reader.onload = function (ev) {\n _this2.setState({\n avatarUrl: ev.target.result,\n avatarFile: file,\n enableProfileSave: true\n });\n };\n reader.readAsDataURL(file);\n };\n};\n\nexports.default = ProfileSettings;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=ProfileSettings.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar languageHandler = _interopRequireWildcard(_languageHandler);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction languageMatchesSearchQuery(query, language) {\n if (language.label.toUpperCase().indexOf(query.toUpperCase()) == 0) return true;\n if (language.value.toUpperCase() == query.toUpperCase()) return true;\n return false;\n} /*\n Copyright 2017 Marcel Radzio (MTRNord)\n Copyright 2017 Vector Creations Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar LanguageDropdown = function (_React$Component) {\n (0, _inherits3.default)(LanguageDropdown, _React$Component);\n\n function LanguageDropdown(props) {\n (0, _classCallCheck3.default)(this, LanguageDropdown);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (LanguageDropdown.__proto__ || (0, _getPrototypeOf2.default)(LanguageDropdown)).call(this, props));\n\n _this._onSearchChange = _this._onSearchChange.bind(_this);\n\n _this.state = {\n searchQuery: '',\n langs: null\n };\n return _this;\n }\n\n (0, _createClass3.default)(LanguageDropdown, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n var _this2 = this;\n\n languageHandler.getAllLanguagesFromJson().then(function (langs) {\n langs.sort(function (a, b) {\n if (a.label < b.label) return -1;\n if (a.label > b.label) return 1;\n return 0;\n });\n _this2.setState({ langs: langs });\n }).catch(function () {\n _this2.setState({ langs: ['en'] });\n }).done();\n\n if (!this.props.value) {\n // If no value is given, we start with the first\n // country selected, but our parent component\n // doesn't know this, therefore we do this.\n var language = _SettingsStore2.default.getValue(\"language\", null, /*excludeDefault:*/true);\n if (language) {\n this.props.onOptionChange(language);\n } else {\n var _language = languageHandler.normalizeLanguageKey(languageHandler.getLanguageFromBrowser());\n this.props.onOptionChange(_language);\n }\n }\n }\n }, {\n key: '_onSearchChange',\n value: function _onSearchChange(search) {\n this.setState({\n searchQuery: search\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n if (this.state.langs === null) {\n var Spinner = _index2.default.getComponent('elements.Spinner');\n return _react2.default.createElement(Spinner, null);\n }\n\n var Dropdown = _index2.default.getComponent('elements.Dropdown');\n\n var displayedLanguages = void 0;\n if (this.state.searchQuery) {\n displayedLanguages = this.state.langs.filter(function (lang) {\n return languageMatchesSearchQuery(_this3.state.searchQuery, lang);\n });\n } else {\n displayedLanguages = this.state.langs;\n }\n\n var options = displayedLanguages.map(function (language) {\n return _react2.default.createElement(\n 'div',\n { key: language.value },\n language.label\n );\n });\n\n // default value here too, otherwise we need to handle null / undefined\n // values between mounting and the initial value propgating\n var language = _SettingsStore2.default.getValue(\"language\", null, /*excludeDefault:*/true);\n var value = null;\n if (language) {\n value = this.props.value || language;\n } else {\n language = navigator.language || navigator.userLanguage;\n value = this.props.value || language;\n }\n\n return _react2.default.createElement(\n Dropdown,\n { className: this.props.className,\n onOptionChange: this.props.onOptionChange, onSearchChange: this._onSearchChange,\n searchEnabled: true, value: value\n },\n options\n );\n }\n }]);\n return LanguageDropdown;\n}(_react2.default.Component);\n\nexports.default = LanguageDropdown;\n\n\nLanguageDropdown.propTypes = {\n className: _propTypes2.default.string,\n onOptionChange: _propTypes2.default.func.isRequired,\n value: _propTypes2.default.string\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=LanguageDropdown.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getThreepidsWithBindStatus = undefined;\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _slicedToArray2 = require(\"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _bluebird = require(\"bluebird\");\n\nvar getThreepidsWithBindStatus = exports.getThreepidsWithBindStatus = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(client, filterMedium) {\n var userId, _ref2, threepids, authClient, identityAccessToken, query, lookupResults, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _loop, _iterator, _step, _ret;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n userId = client.getUserId();\n _context.next = 3;\n return (0, _bluebird.resolve)(client.getThreePids());\n\n case 3:\n _ref2 = _context.sent;\n threepids = _ref2.threepids;\n\n if (filterMedium) {\n threepids = threepids.filter(function (a) {\n return a.medium === filterMedium;\n });\n }\n\n // Check bind status assuming we have an IS and terms are agreed\n\n if (!(threepids.length > 0 && !!client.getIdentityServerUrl())) {\n _context.next = 49;\n break;\n }\n\n _context.prev = 7;\n authClient = new _IdentityAuthClient2.default();\n _context.next = 11;\n return (0, _bluebird.resolve)(authClient.getAccessToken({ check: false }));\n\n case 11:\n identityAccessToken = _context.sent;\n\n\n // Restructure for lookup query\n query = threepids.map(function (_ref3) {\n var medium = _ref3.medium,\n address = _ref3.address;\n return [medium, address];\n });\n _context.next = 15;\n return (0, _bluebird.resolve)(client.bulkLookupThreePids(query, identityAccessToken));\n\n case 15:\n lookupResults = _context.sent;\n\n\n // Record which are already bound\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context.prev = 19;\n\n _loop = function _loop() {\n var _step$value = (0, _slicedToArray3.default)(_step.value, 3),\n medium = _step$value[0],\n address = _step$value[1],\n mxid = _step$value[2];\n\n if (mxid !== userId) {\n return \"continue\";\n }\n if (filterMedium && medium !== filterMedium) {\n return \"continue\";\n }\n var threepid = threepids.find(function (e) {\n return e.medium === medium && e.address === address;\n });\n if (!threepid) return \"continue\";\n threepid.bound = true;\n };\n\n _iterator = (0, _getIterator3.default)(lookupResults.threepids);\n\n case 22:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context.next = 29;\n break;\n }\n\n _ret = _loop();\n\n if (!(_ret === \"continue\")) {\n _context.next = 26;\n break;\n }\n\n return _context.abrupt(\"continue\", 26);\n\n case 26:\n _iteratorNormalCompletion = true;\n _context.next = 22;\n break;\n\n case 29:\n _context.next = 35;\n break;\n\n case 31:\n _context.prev = 31;\n _context.t0 = _context[\"catch\"](19);\n _didIteratorError = true;\n _iteratorError = _context.t0;\n\n case 35:\n _context.prev = 35;\n _context.prev = 36;\n\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n\n case 38:\n _context.prev = 38;\n\n if (!_didIteratorError) {\n _context.next = 41;\n break;\n }\n\n throw _iteratorError;\n\n case 41:\n return _context.finish(38);\n\n case 42:\n return _context.finish(35);\n\n case 43:\n _context.next = 49;\n break;\n\n case 45:\n _context.prev = 45;\n _context.t1 = _context[\"catch\"](7);\n\n if (_context.t1.errcode === \"M_TERMS_NOT_SIGNED\") {\n _context.next = 49;\n break;\n }\n\n throw _context.t1;\n\n case 49:\n return _context.abrupt(\"return\", threepids);\n\n case 50:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[7, 45], [19, 31, 35, 43], [36,, 38, 42]]);\n }));\n\n return function getThreepidsWithBindStatus(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}(); /*\n Copyright 2019 The Matrix.org Foundation C.I.C.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar _IdentityAuthClient = require(\"./IdentityAuthClient\");\n\nvar _IdentityAuthClient2 = _interopRequireDefault(_IdentityAuthClient);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n//# sourceMappingURL=boundThreepids.js.map","module.exports = \"img/feather-customised/warning-triangle.d050a38.svg\";","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LabsSettingToggle = undefined;\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require(\"../../../../../languageHandler\");\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _SettingsStore = require(\"../../../../../settings/SettingsStore\");\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _LabelledToggleSwitch = require(\"../../../elements/LabelledToggleSwitch\");\n\nvar _LabelledToggleSwitch2 = _interopRequireDefault(_LabelledToggleSwitch);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar sdk = require(\"../../../../..\"); /*\n Copyright 2019 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar LabsSettingToggle = exports.LabsSettingToggle = function (_React$Component) {\n (0, _inherits3.default)(LabsSettingToggle, _React$Component);\n\n function LabsSettingToggle() {\n var _ref,\n _this2 = this;\n\n var _temp, _this, _ret;\n\n (0, _classCallCheck3.default)(this, LabsSettingToggle);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = LabsSettingToggle.__proto__ || (0, _getPrototypeOf2.default)(LabsSettingToggle)).call.apply(_ref, [this].concat(args))), _this), _this._onChange = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(checked) {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(_SettingsStore2.default.setFeatureEnabled(_this.props.featureId, checked));\n\n case 2:\n _this.forceUpdate();\n\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, _this2);\n }));\n\n return function (_x) {\n return _ref2.apply(this, arguments);\n };\n }(), _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);\n }\n\n (0, _createClass3.default)(LabsSettingToggle, [{\n key: \"render\",\n value: function render() {\n var label = _SettingsStore2.default.getDisplayName(this.props.featureId);\n var value = _SettingsStore2.default.isFeatureEnabled(this.props.featureId);\n return _react2.default.createElement(_LabelledToggleSwitch2.default, { value: value, label: label, onChange: this._onChange });\n }\n }]);\n return LabsSettingToggle;\n}(_react2.default.Component);\n\nLabsSettingToggle.propTypes = {\n featureId: _propTypes2.default.string.isRequired\n};\n\nvar LabsUserSettingsTab = function (_React$Component2) {\n (0, _inherits3.default)(LabsUserSettingsTab, _React$Component2);\n\n function LabsUserSettingsTab() {\n (0, _classCallCheck3.default)(this, LabsUserSettingsTab);\n return (0, _possibleConstructorReturn3.default)(this, (LabsUserSettingsTab.__proto__ || (0, _getPrototypeOf2.default)(LabsUserSettingsTab)).call(this));\n }\n\n (0, _createClass3.default)(LabsUserSettingsTab, [{\n key: \"render\",\n value: function render() {\n var SettingsFlag = sdk.getComponent(\"views.elements.SettingsFlag\");\n var flags = _SettingsStore2.default.getLabsFeatures().map(function (f) {\n return _react2.default.createElement(LabsSettingToggle, { featureId: f, key: f });\n });\n return _react2.default.createElement(\n \"div\",\n { className: \"mx_SettingsTab\" },\n _react2.default.createElement(\n \"div\",\n { className: \"mx_SettingsTab_heading\" },\n (0, _languageHandler._t)(\"Labs\")\n ),\n _react2.default.createElement(\n \"div\",\n { className: \"mx_SettingsTab_section\" },\n flags,\n _react2.default.createElement(SettingsFlag, { name: \"enableWidgetScreenshots\", level: _SettingsStore.SettingLevel.ACCOUNT }),\n _react2.default.createElement(SettingsFlag, { name: \"showHiddenEventsInTimeline\", level: _SettingsStore.SettingLevel.DEVICE }),\n _react2.default.createElement(SettingsFlag, { name: \"lowBandwidth\", level: _SettingsStore.SettingLevel.DEVICE }),\n _react2.default.createElement(SettingsFlag, { name: \"sendReadReceipts\", level: _SettingsStore.SettingLevel.ACCOUNT })\n )\n );\n }\n }]);\n return LabsUserSettingsTab;\n}(_react2.default.Component);\n\nexports.default = LabsUserSettingsTab;\n//# sourceMappingURL=LabsUserSettingsTab.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.IgnoredUser = undefined;\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../../../languageHandler');\n\nvar _SettingsStore = require('../../../../../settings/SettingsStore');\n\nvar _MatrixClientPeg = require('../../../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _FormattingUtils = require('../../../../../utils/FormattingUtils');\n\nvar FormattingUtils = _interopRequireWildcard(_FormattingUtils);\n\nvar _AccessibleButton = require('../../../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _Analytics = require('../../../../../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _Modal = require('../../../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _ = require('../../../../..');\n\nvar _2 = _interopRequireDefault(_);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar IgnoredUser = exports.IgnoredUser = function (_React$Component) {\n (0, _inherits3.default)(IgnoredUser, _React$Component);\n\n function IgnoredUser() {\n var _ref;\n\n var _temp, _this, _ret;\n\n (0, _classCallCheck3.default)(this, IgnoredUser);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = IgnoredUser.__proto__ || (0, _getPrototypeOf2.default)(IgnoredUser)).call.apply(_ref, [this].concat(args))), _this), _this._onUnignoreClicked = function (e) {\n _this.props.onUnignored(_this.props.userId);\n }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);\n }\n\n (0, _createClass3.default)(IgnoredUser, [{\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_SecurityUserSettingsTab_ignoredUser' },\n _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this._onUnignoreClicked, kind: 'primary_sm' },\n (0, _languageHandler._t)('Unignore')\n ),\n _react2.default.createElement(\n 'span',\n null,\n this.props.userId\n )\n );\n }\n }]);\n return IgnoredUser;\n}(_react2.default.Component); /*\n Copyright 2019 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nIgnoredUser.propTypes = {\n userId: _propTypes2.default.string.isRequired,\n onUnignored: _propTypes2.default.func.isRequired\n};\n\nvar SecurityUserSettingsTab = function (_React$Component2) {\n (0, _inherits3.default)(SecurityUserSettingsTab, _React$Component2);\n\n function SecurityUserSettingsTab() {\n var _this3 = this;\n\n (0, _classCallCheck3.default)(this, SecurityUserSettingsTab);\n\n // Get number of rooms we're invited to\n var _this2 = (0, _possibleConstructorReturn3.default)(this, (SecurityUserSettingsTab.__proto__ || (0, _getPrototypeOf2.default)(SecurityUserSettingsTab)).call(this));\n\n _this2._updateBlacklistDevicesFlag = function (checked) {\n _MatrixClientPeg2.default.get().setGlobalBlacklistUnverifiedDevices(checked);\n };\n\n _this2._updateAnalytics = function (checked) {\n checked ? _Analytics2.default.enable() : _Analytics2.default.disable();\n };\n\n _this2._onExportE2eKeysClicked = function () {\n _Modal2.default.createTrackedDialogAsync('Export E2E Keys', '', import('../../../../../async-components/views/dialogs/ExportE2eKeysDialog'), { matrixClient: _MatrixClientPeg2.default.get() });\n };\n\n _this2._onImportE2eKeysClicked = function () {\n _Modal2.default.createTrackedDialogAsync('Import E2E Keys', '', import('../../../../../async-components/views/dialogs/ImportE2eKeysDialog'), { matrixClient: _MatrixClientPeg2.default.get() });\n };\n\n _this2._onUserUnignored = function () {\n var _ref2 = (0, _bluebird.method)(function (userId) {\n // Don't use this.state to get the ignored user list as it might be\n // ever so slightly outdated. Instead, prefer to get a fresh list and\n // update that.\n var ignoredUsers = _MatrixClientPeg2.default.get().getIgnoredUsers();\n var index = ignoredUsers.indexOf(userId);\n if (index !== -1) {\n ignoredUsers.splice(index, 1);\n _MatrixClientPeg2.default.get().setIgnoredUsers(ignoredUsers);\n }\n _this2.setState({ ignoredUsers: ignoredUsers });\n });\n\n return function (_x) {\n return _ref2.apply(this, arguments);\n };\n }();\n\n _this2._getInvitedRooms = function () {\n return _MatrixClientPeg2.default.get().getRooms().filter(function (r) {\n return r.hasMembershipState(_MatrixClientPeg2.default.get().getUserId(), \"invite\");\n });\n };\n\n _this2._manageInvites = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(accept) {\n var invitedRoomIds, self, cli, action, _loop, i;\n\n return _regenerator2.default.wrap(function _callee2$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _this2.setState({\n managingInvites: true\n });\n\n // Compile array of invitation room ids\n invitedRoomIds = _this2._getInvitedRooms().map(function (room) {\n return room.roomId;\n });\n\n // Execute all acceptances/rejections sequentially\n\n self = _this2;\n cli = _MatrixClientPeg2.default.get();\n action = accept ? cli.joinRoom.bind(cli) : cli.leave.bind(cli);\n _loop = /*#__PURE__*/_regenerator2.default.mark(function _loop(_i) {\n var roomId;\n return _regenerator2.default.wrap(function _loop$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n roomId = invitedRoomIds[_i];\n\n // Accept/reject invite\n\n _context2.next = 3;\n return (0, _bluebird.resolve)(action(roomId).then(function () {\n // No error, update invited rooms button\n _this2.setState({ invitedRoomAmt: self.state.invitedRoomAmt - 1 });\n }, function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(e) {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(e.errcode === \"M_LIMIT_EXCEEDED\")) {\n _context.next = 6;\n break;\n }\n\n _context.next = 3;\n return (0, _bluebird.resolve)(_bluebird2.default.delay(e.retry_after_ms || 2500));\n\n case 3:\n\n // Redo last action\n _i--;\n _context.next = 7;\n break;\n\n case 6:\n // Print out error with joining/leaving room\n console.warn(e);\n\n case 7:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this3);\n }));\n\n return function (_x3) {\n return _ref4.apply(this, arguments);\n };\n }()));\n\n case 3:\n i = _i;\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _loop, _this3);\n });\n i = 0;\n\n case 7:\n if (!(i < invitedRoomIds.length)) {\n _context3.next = 12;\n break;\n }\n\n return _context3.delegateYield(_loop(i), 't0', 9);\n\n case 9:\n i++;\n _context3.next = 7;\n break;\n\n case 12:\n\n _this2.setState({\n managingInvites: false\n });\n\n case 13:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee2, _this3);\n }));\n\n return function (_x2) {\n return _ref3.apply(this, arguments);\n };\n }();\n\n _this2._onAcceptAllInvitesClicked = function (ev) {\n _this2._manageInvites(true);\n };\n\n _this2._onRejectAllInvitesClicked = function (ev) {\n _this2._manageInvites(false);\n };\n\n var invitedRooms = _this2._getInvitedRooms();\n\n _this2.state = {\n ignoredUserIds: _MatrixClientPeg2.default.get().getIgnoredUsers(),\n managingInvites: false,\n invitedRoomAmt: invitedRooms.length\n };\n return _this2;\n }\n\n (0, _createClass3.default)(SecurityUserSettingsTab, [{\n key: '_renderCurrentDeviceInfo',\n value: function _renderCurrentDeviceInfo() {\n var SettingsFlag = _2.default.getComponent('views.elements.SettingsFlag');\n\n var client = _MatrixClientPeg2.default.get();\n var deviceId = client.deviceId;\n var identityKey = client.getDeviceEd25519Key();\n if (!identityKey) {\n identityKey = (0, _languageHandler._t)(\"\");\n } else {\n identityKey = FormattingUtils.formatCryptoKey(identityKey);\n }\n\n var importExportButtons = null;\n if (client.isCryptoEnabled()) {\n importExportButtons = _react2.default.createElement(\n 'div',\n { className: 'mx_SecurityUserSettingsTab_importExportButtons' },\n _react2.default.createElement(\n _AccessibleButton2.default,\n { kind: 'primary', onClick: this._onExportE2eKeysClicked },\n (0, _languageHandler._t)(\"Export E2E room keys\")\n ),\n _react2.default.createElement(\n _AccessibleButton2.default,\n { kind: 'primary', onClick: this._onImportE2eKeysClicked },\n (0, _languageHandler._t)(\"Import E2E room keys\")\n )\n );\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_SettingsTab_subheading' },\n (0, _languageHandler._t)(\"Cryptography\")\n ),\n _react2.default.createElement(\n 'ul',\n { className: 'mx_SettingsTab_subsectionText mx_SecurityUserSettingsTab_deviceInfo' },\n _react2.default.createElement(\n 'li',\n null,\n _react2.default.createElement(\n 'label',\n null,\n (0, _languageHandler._t)(\"Device ID:\")\n ),\n _react2.default.createElement(\n 'span',\n null,\n _react2.default.createElement(\n 'code',\n null,\n deviceId\n )\n )\n ),\n _react2.default.createElement(\n 'li',\n null,\n _react2.default.createElement(\n 'label',\n null,\n (0, _languageHandler._t)(\"Device key:\")\n ),\n _react2.default.createElement(\n 'span',\n null,\n _react2.default.createElement(\n 'code',\n null,\n _react2.default.createElement(\n 'b',\n null,\n identityKey\n )\n )\n )\n )\n ),\n importExportButtons,\n _react2.default.createElement(SettingsFlag, { name: 'blacklistUnverifiedDevices', level: _SettingsStore.SettingLevel.DEVICE,\n onChange: this._updateBlacklistDevicesFlag })\n );\n }\n }, {\n key: '_renderIgnoredUsers',\n value: function _renderIgnoredUsers() {\n var _this4 = this;\n\n if (!this.state.ignoredUserIds || this.state.ignoredUserIds.length === 0) return null;\n\n var userIds = this.state.ignoredUserIds.map(function (u) {\n return _react2.default.createElement(IgnoredUser, { userId: u, onUnignored: _this4._onUserUnignored, key: u });\n });\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_SettingsTab_subheading' },\n (0, _languageHandler._t)('Ignored users')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_subsectionText' },\n userIds\n )\n );\n }\n }, {\n key: '_renderManageInvites',\n value: function _renderManageInvites() {\n if (this.state.invitedRoomAmt === 0) {\n return null;\n }\n\n var invitedRooms = this._getInvitedRooms();\n var InlineSpinner = _2.default.getComponent('elements.InlineSpinner');\n var onClickAccept = this._onAcceptAllInvitesClicked.bind(this, invitedRooms);\n var onClickReject = this._onRejectAllInvitesClicked.bind(this, invitedRooms);\n return _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section mx_SecurityUserSettingsTab_bulkOptions' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_SettingsTab_subheading' },\n (0, _languageHandler._t)('Bulk options')\n ),\n _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: onClickAccept, kind: 'primary', disabled: this.state.managingInvites },\n (0, _languageHandler._t)(\"Accept all %(invitedRooms)s invites\", { invitedRooms: this.state.invitedRoomAmt })\n ),\n _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: onClickReject, kind: 'danger', disabled: this.state.managingInvites },\n (0, _languageHandler._t)(\"Reject all %(invitedRooms)s invites\", { invitedRooms: this.state.invitedRoomAmt })\n ),\n this.state.managingInvites ? _react2.default.createElement(InlineSpinner, null) : _react2.default.createElement('div', null)\n );\n }\n }, {\n key: 'render',\n value: function render() {\n var DevicesPanel = _2.default.getComponent('views.settings.DevicesPanel');\n var SettingsFlag = _2.default.getComponent('views.elements.SettingsFlag');\n\n var KeyBackupPanel = _2.default.getComponent('views.settings.KeyBackupPanel');\n var keyBackup = _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_SettingsTab_subheading' },\n (0, _languageHandler._t)(\"Key backup\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_subsectionText' },\n _react2.default.createElement(KeyBackupPanel, null)\n )\n );\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab mx_SecurityUserSettingsTab' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_heading' },\n (0, _languageHandler._t)(\"Security & Privacy\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_SettingsTab_subheading' },\n (0, _languageHandler._t)(\"Devices\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_subsectionText' },\n (0, _languageHandler._t)(\"A device's public name is visible to people you communicate with\"),\n _react2.default.createElement(DevicesPanel, null)\n )\n ),\n keyBackup,\n this._renderCurrentDeviceInfo(),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_SettingsTab_subheading' },\n (0, _languageHandler._t)(\"Analytics\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_subsectionText' },\n (0, _languageHandler._t)(\"Riot collects anonymous analytics to allow us to improve the application.\"),\n '\\xA0',\n (0, _languageHandler._t)(\"Privacy is important to us, so we don't collect any personal or \" + \"identifiable data for our analytics.\"),\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_SettingsTab_linkBtn', onClick: _Analytics2.default.showDetailsModal },\n (0, _languageHandler._t)(\"Learn more about how we use analytics.\")\n )\n ),\n _react2.default.createElement(SettingsFlag, { name: 'analyticsOptIn', level: _SettingsStore.SettingLevel.DEVICE,\n onChange: this._updateAnalytics })\n ),\n this._renderIgnoredUsers(),\n this._renderManageInvites()\n );\n }\n }]);\n return SecurityUserSettingsTab;\n}(_react2.default.Component);\n\nexports.default = SecurityUserSettingsTab;\n//# sourceMappingURL=SecurityUserSettingsTab.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require(\"../../../../../languageHandler\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar sdk = require(\"../../../../..\");\n\nvar NotificationUserSettingsTab = function (_React$Component) {\n (0, _inherits3.default)(NotificationUserSettingsTab, _React$Component);\n\n function NotificationUserSettingsTab() {\n (0, _classCallCheck3.default)(this, NotificationUserSettingsTab);\n return (0, _possibleConstructorReturn3.default)(this, (NotificationUserSettingsTab.__proto__ || (0, _getPrototypeOf2.default)(NotificationUserSettingsTab)).call(this));\n }\n\n (0, _createClass3.default)(NotificationUserSettingsTab, [{\n key: \"render\",\n value: function render() {\n var Notifications = sdk.getComponent(\"views.settings.Notifications\");\n return _react2.default.createElement(\n \"div\",\n { className: \"mx_SettingsTab mx_NotificationUserSettingsTab\" },\n _react2.default.createElement(\n \"div\",\n { className: \"mx_SettingsTab_heading\" },\n (0, _languageHandler._t)(\"Notifications\")\n ),\n _react2.default.createElement(\n \"div\",\n { className: \"mx_SettingsTab_section mx_SettingsTab_subsectionText\" },\n _react2.default.createElement(Notifications, null)\n )\n );\n }\n }]);\n return NotificationUserSettingsTab;\n}(_react2.default.Component);\n\nexports.default = NotificationUserSettingsTab;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=NotificationUserSettingsTab.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require(\"../../../../../languageHandler\");\n\nvar _SettingsStore = require(\"../../../../../settings/SettingsStore\");\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _LabelledToggleSwitch = require(\"../../../elements/LabelledToggleSwitch\");\n\nvar _LabelledToggleSwitch2 = _interopRequireDefault(_LabelledToggleSwitch);\n\nvar _Field = require(\"../../../elements/Field\");\n\nvar _Field2 = _interopRequireDefault(_Field);\n\nvar _ = require(\"../../../../..\");\n\nvar _2 = _interopRequireDefault(_);\n\nvar _PlatformPeg = require(\"../../../../../PlatformPeg\");\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 New Vector Ltd\nCopyright 2019 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar PreferencesUserSettingsTab = function (_React$Component) {\n (0, _inherits3.default)(PreferencesUserSettingsTab, _React$Component);\n\n function PreferencesUserSettingsTab() {\n (0, _classCallCheck3.default)(this, PreferencesUserSettingsTab);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (PreferencesUserSettingsTab.__proto__ || (0, _getPrototypeOf2.default)(PreferencesUserSettingsTab)).call(this));\n\n _this._onAutoLaunchChange = function (checked) {\n _PlatformPeg2.default.get().setAutoLaunchEnabled(checked).then(function () {\n return _this.setState({ autoLaunch: checked });\n });\n };\n\n _this._onAlwaysShowMenuBarChange = function (checked) {\n _PlatformPeg2.default.get().setAutoHideMenuBarEnabled(!checked).then(function () {\n return _this.setState({ alwaysShowMenuBar: checked });\n });\n };\n\n _this._onMinimizeToTrayChange = function (checked) {\n _PlatformPeg2.default.get().setMinimizeToTrayEnabled(checked).then(function () {\n return _this.setState({ minimizeToTray: checked });\n });\n };\n\n _this._onAutocompleteDelayChange = function (e) {\n _this.setState({ autocompleteDelay: e.target.value });\n _SettingsStore2.default.setValue(\"autocompleteDelay\", null, _SettingsStore.SettingLevel.DEVICE, e.target.value);\n };\n\n _this._onReadMarkerInViewThresholdMs = function (e) {\n _this.setState({ readMarkerInViewThresholdMs: e.target.value });\n _SettingsStore2.default.setValue(\"readMarkerInViewThresholdMs\", null, _SettingsStore.SettingLevel.DEVICE, e.target.value);\n };\n\n _this._onReadMarkerOutOfViewThresholdMs = function (e) {\n _this.setState({ readMarkerOutOfViewThresholdMs: e.target.value });\n _SettingsStore2.default.setValue(\"readMarkerOutOfViewThresholdMs\", null, _SettingsStore.SettingLevel.DEVICE, e.target.value);\n };\n\n _this.state = {\n autoLaunch: false,\n autoLaunchSupported: false,\n alwaysShowMenuBar: true,\n alwaysShowMenuBarSupported: false,\n minimizeToTray: true,\n minimizeToTraySupported: false,\n autocompleteDelay: _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.DEVICE, 'autocompleteDelay').toString(10),\n readMarkerInViewThresholdMs: _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.DEVICE, 'readMarkerInViewThresholdMs').toString(10),\n readMarkerOutOfViewThresholdMs: _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.DEVICE, 'readMarkerOutOfViewThresholdMs').toString(10)\n };\n return _this;\n }\n\n (0, _createClass3.default)(PreferencesUserSettingsTab, [{\n key: \"componentWillMount\",\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var platform, autoLaunchSupported, autoLaunch, alwaysShowMenuBarSupported, alwaysShowMenuBar, minimizeToTraySupported, minimizeToTray;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n platform = _PlatformPeg2.default.get();\n _context.next = 3;\n return (0, _bluebird.resolve)(platform.supportsAutoLaunch());\n\n case 3:\n autoLaunchSupported = _context.sent;\n autoLaunch = false;\n\n if (!autoLaunchSupported) {\n _context.next = 9;\n break;\n }\n\n _context.next = 8;\n return (0, _bluebird.resolve)(platform.getAutoLaunchEnabled());\n\n case 8:\n autoLaunch = _context.sent;\n\n case 9:\n _context.next = 11;\n return (0, _bluebird.resolve)(platform.supportsAutoHideMenuBar());\n\n case 11:\n alwaysShowMenuBarSupported = _context.sent;\n alwaysShowMenuBar = true;\n\n if (!alwaysShowMenuBarSupported) {\n _context.next = 17;\n break;\n }\n\n _context.next = 16;\n return (0, _bluebird.resolve)(platform.getAutoHideMenuBarEnabled());\n\n case 16:\n alwaysShowMenuBar = !_context.sent;\n\n case 17:\n _context.next = 19;\n return (0, _bluebird.resolve)(platform.supportsMinimizeToTray());\n\n case 19:\n minimizeToTraySupported = _context.sent;\n minimizeToTray = true;\n\n if (!minimizeToTraySupported) {\n _context.next = 25;\n break;\n }\n\n _context.next = 24;\n return (0, _bluebird.resolve)(platform.getMinimizeToTrayEnabled());\n\n case 24:\n minimizeToTray = _context.sent;\n\n case 25:\n\n this.setState({\n autoLaunch: autoLaunch,\n autoLaunchSupported: autoLaunchSupported,\n alwaysShowMenuBarSupported: alwaysShowMenuBarSupported,\n alwaysShowMenuBar: alwaysShowMenuBar,\n minimizeToTraySupported: minimizeToTraySupported,\n minimizeToTray: minimizeToTray\n });\n\n case 26:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function componentWillMount() {\n return _ref.apply(this, arguments);\n }\n\n return componentWillMount;\n }()\n }, {\n key: \"_renderGroup\",\n value: function _renderGroup(settingIds) {\n var SettingsFlag = _2.default.getComponent(\"views.elements.SettingsFlag\");\n return settingIds.map(function (i) {\n return _react2.default.createElement(SettingsFlag, { key: i, name: i, level: _SettingsStore.SettingLevel.ACCOUNT });\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var autoLaunchOption = null;\n if (this.state.autoLaunchSupported) {\n autoLaunchOption = _react2.default.createElement(_LabelledToggleSwitch2.default, {\n value: this.state.autoLaunch,\n onChange: this._onAutoLaunchChange,\n label: (0, _languageHandler._t)('Start automatically after system login') });\n }\n\n var autoHideMenuOption = null;\n if (this.state.alwaysShowMenuBarSupported) {\n autoHideMenuOption = _react2.default.createElement(_LabelledToggleSwitch2.default, {\n value: this.state.alwaysShowMenuBar,\n onChange: this._onAlwaysShowMenuBarChange,\n label: (0, _languageHandler._t)('Always show the window menu bar') });\n }\n\n var minimizeToTrayOption = null;\n if (this.state.minimizeToTraySupported) {\n minimizeToTrayOption = _react2.default.createElement(_LabelledToggleSwitch2.default, {\n value: this.state.minimizeToTray,\n onChange: this._onMinimizeToTrayChange,\n label: (0, _languageHandler._t)('Close button should minimize window to tray') });\n }\n\n return _react2.default.createElement(\n \"div\",\n { className: \"mx_SettingsTab mx_PreferencesUserSettingsTab\" },\n _react2.default.createElement(\n \"div\",\n { className: \"mx_SettingsTab_heading\" },\n (0, _languageHandler._t)(\"Preferences\")\n ),\n _react2.default.createElement(\n \"div\",\n { className: \"mx_SettingsTab_section\" },\n _react2.default.createElement(\n \"span\",\n { className: \"mx_SettingsTab_subheading\" },\n (0, _languageHandler._t)(\"Composer\")\n ),\n this._renderGroup(PreferencesUserSettingsTab.COMPOSER_SETTINGS),\n _react2.default.createElement(\n \"span\",\n { className: \"mx_SettingsTab_subheading\" },\n (0, _languageHandler._t)(\"Timeline\")\n ),\n this._renderGroup(PreferencesUserSettingsTab.TIMELINE_SETTINGS),\n _react2.default.createElement(\n \"span\",\n { className: \"mx_SettingsTab_subheading\" },\n (0, _languageHandler._t)(\"Room list\")\n ),\n this._renderGroup(PreferencesUserSettingsTab.ROOM_LIST_SETTINGS),\n _react2.default.createElement(\n \"span\",\n { className: \"mx_SettingsTab_subheading\" },\n (0, _languageHandler._t)(\"Advanced\")\n ),\n this._renderGroup(PreferencesUserSettingsTab.ADVANCED_SETTINGS),\n minimizeToTrayOption,\n autoHideMenuOption,\n autoLaunchOption,\n _react2.default.createElement(_Field2.default, {\n id: \"autocompleteDelay\",\n label: (0, _languageHandler._t)('Autocomplete delay (ms)'),\n type: \"number\",\n value: this.state.autocompleteDelay,\n onChange: this._onAutocompleteDelayChange }),\n _react2.default.createElement(_Field2.default, {\n id: \"readMarkerInViewThresholdMs\",\n label: (0, _languageHandler._t)('Read Marker lifetime (ms)'),\n type: \"number\",\n value: this.state.readMarkerInViewThresholdMs,\n onChange: this._onReadMarkerInViewThresholdMs }),\n _react2.default.createElement(_Field2.default, {\n id: \"readMarkerOutOfViewThresholdMs\",\n label: (0, _languageHandler._t)('Read Marker off-screen lifetime (ms)'),\n type: \"number\",\n value: this.state.readMarkerOutOfViewThresholdMs,\n onChange: this._onReadMarkerOutOfViewThresholdMs })\n )\n );\n }\n }]);\n return PreferencesUserSettingsTab;\n}(_react2.default.Component);\n\nPreferencesUserSettingsTab.COMPOSER_SETTINGS = ['MessageComposerInput.autoReplaceEmoji', 'MessageComposerInput.suggestEmoji', 'sendTypingNotifications'];\nPreferencesUserSettingsTab.TIMELINE_SETTINGS = ['autoplayGifsAndVideos', 'urlPreviewsEnabled', 'TextualBody.enableBigEmoji', 'showReadReceipts', 'showTwelveHourTimestamps', 'alwaysShowTimestamps', 'showRedactions', 'enableSyntaxHighlightLanguageDetection', 'showJoinLeaves', 'showAvatarChanges', 'showDisplaynameChanges', 'showImages'];\nPreferencesUserSettingsTab.ROOM_LIST_SETTINGS = ['RoomList.orderByImportance', 'breadcrumbs'];\nPreferencesUserSettingsTab.ADVANCED_SETTINGS = ['alwaysShowEncryptionIcons', 'Pill.shouldShowPillAvatar', 'TagPanel.enableTagPanel', 'promptBeforeInviteUnknownUsers'];\nexports.default = PreferencesUserSettingsTab;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=PreferencesUserSettingsTab.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require(\"../../../../../languageHandler\");\n\nvar _CallMediaHandler = require(\"../../../../../CallMediaHandler\");\n\nvar _CallMediaHandler2 = _interopRequireDefault(_CallMediaHandler);\n\nvar _Field = require(\"../../../elements/Field\");\n\nvar _Field2 = _interopRequireDefault(_Field);\n\nvar _AccessibleButton = require(\"../../../elements/AccessibleButton\");\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _SettingsStore = require(\"../../../../../settings/SettingsStore\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar Modal = require(\"../../../../../Modal\");\nvar sdk = require(\"../../../../..\");\nvar MatrixClientPeg = require(\"../../../../../MatrixClientPeg\");\n\nvar VoiceUserSettingsTab = function (_React$Component) {\n (0, _inherits3.default)(VoiceUserSettingsTab, _React$Component);\n\n function VoiceUserSettingsTab() {\n var _this2 = this;\n\n (0, _classCallCheck3.default)(this, VoiceUserSettingsTab);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (VoiceUserSettingsTab.__proto__ || (0, _getPrototypeOf2.default)(VoiceUserSettingsTab)).call(this));\n\n _this._refreshMediaDevices = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(stream) {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.t0 = _this;\n _context.next = 3;\n return (0, _bluebird.resolve)(_CallMediaHandler2.default.getDevices());\n\n case 3:\n _context.t1 = _context.sent;\n _context.t2 = _CallMediaHandler2.default.getAudioOutput();\n _context.t3 = _CallMediaHandler2.default.getAudioInput();\n _context.t4 = _CallMediaHandler2.default.getVideoInput();\n _context.t5 = {\n mediaDevices: _context.t1,\n activeAudioOutput: _context.t2,\n activeAudioInput: _context.t3,\n activeVideoInput: _context.t4\n };\n\n _context.t0.setState.call(_context.t0, _context.t5);\n\n if (stream) {\n // kill stream (after we've enumerated the devices, otherwise we'd get empty labels again)\n // so that we don't leave it lingering around with webcam enabled etc\n // as here we called gUM to ask user for permission to their device names only\n stream.getTracks().forEach(function (track) {\n return track.stop();\n });\n }\n\n case 10:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, _this2);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }();\n\n _this._requestMediaPermissions = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var constraints, stream, error, ErrorDialog;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n constraints = void 0;\n stream = void 0;\n error = void 0;\n _context2.prev = 3;\n\n constraints = { video: true, audio: true };\n _context2.next = 7;\n return (0, _bluebird.resolve)(navigator.mediaDevices.getUserMedia(constraints));\n\n case 7:\n stream = _context2.sent;\n _context2.next = 26;\n break;\n\n case 10:\n _context2.prev = 10;\n _context2.t0 = _context2[\"catch\"](3);\n\n if (!(_context2.t0.name === \"NotFoundError\")) {\n _context2.next = 25;\n break;\n }\n\n constraints = { audio: true };\n _context2.prev = 14;\n _context2.next = 17;\n return (0, _bluebird.resolve)(navigator.mediaDevices.getUserMedia(constraints));\n\n case 17:\n stream = _context2.sent;\n _context2.next = 23;\n break;\n\n case 20:\n _context2.prev = 20;\n _context2.t1 = _context2[\"catch\"](14);\n\n error = _context2.t1;\n\n case 23:\n _context2.next = 26;\n break;\n\n case 25:\n error = _context2.t0;\n\n case 26:\n if (error) {\n ErrorDialog = sdk.getComponent('dialogs.ErrorDialog');\n\n Modal.createTrackedDialog('No media permissions', '', ErrorDialog, {\n title: (0, _languageHandler._t)('No media permissions'),\n description: (0, _languageHandler._t)('You may need to manually permit Riot to access your microphone/webcam')\n });\n } else {\n _this._refreshMediaDevices(stream);\n }\n\n case 27:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, _this2, [[3, 10], [14, 20]]);\n }));\n\n _this._setAudioOutput = function (e) {\n _CallMediaHandler2.default.setAudioOutput(e.target.value);\n _this.setState({\n activeAudioOutput: e.target.value\n });\n };\n\n _this._setAudioInput = function (e) {\n _CallMediaHandler2.default.setAudioInput(e.target.value);\n _this.setState({\n activeAudioInput: e.target.value\n });\n };\n\n _this._setVideoInput = function (e) {\n _CallMediaHandler2.default.setVideoInput(e.target.value);\n _this.setState({\n activeVideoInput: e.target.value\n });\n };\n\n _this._changeWebRtcMethod = function (p2p) {\n MatrixClientPeg.get().setForceTURN(!p2p);\n };\n\n _this._changeFallbackICEServerAllowed = function (allow) {\n MatrixClientPeg.get().setFallbackICEServerAllowed(allow);\n };\n\n _this.state = {\n mediaDevices: false,\n activeAudioOutput: null,\n activeAudioInput: null,\n activeVideoInput: null\n };\n return _this;\n }\n\n (0, _createClass3.default)(VoiceUserSettingsTab, [{\n key: \"componentDidMount\",\n value: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var canSeeDeviceLabels;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return (0, _bluebird.resolve)(_CallMediaHandler2.default.hasAnyLabeledDevices());\n\n case 2:\n canSeeDeviceLabels = _context3.sent;\n\n if (canSeeDeviceLabels) {\n this._refreshMediaDevices();\n }\n\n case 4:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function componentDidMount() {\n return _ref3.apply(this, arguments);\n }\n\n return componentDidMount;\n }()\n }, {\n key: \"_renderDeviceOptions\",\n value: function _renderDeviceOptions(devices, category) {\n return devices.map(function (d) {\n return _react2.default.createElement(\n \"option\",\n { key: category + \"-\" + d.deviceId, value: d.deviceId },\n d.label\n );\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var SettingsFlag = sdk.getComponent(\"views.elements.SettingsFlag\");\n\n var requestButton = null;\n var speakerDropdown = null;\n var microphoneDropdown = null;\n var webcamDropdown = null;\n if (this.state.mediaDevices === false) {\n requestButton = _react2.default.createElement(\n \"div\",\n { className: \"mx_VoiceUserSettingsTab_missingMediaPermissions\" },\n _react2.default.createElement(\n \"p\",\n null,\n (0, _languageHandler._t)(\"Missing media permissions, click the button below to request.\")\n ),\n _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this._requestMediaPermissions, kind: \"primary\" },\n (0, _languageHandler._t)(\"Request media permissions\")\n )\n );\n } else if (this.state.mediaDevices) {\n speakerDropdown = _react2.default.createElement(\n \"p\",\n null,\n (0, _languageHandler._t)('No Audio Outputs detected')\n );\n microphoneDropdown = _react2.default.createElement(\n \"p\",\n null,\n (0, _languageHandler._t)('No Microphones detected')\n );\n webcamDropdown = _react2.default.createElement(\n \"p\",\n null,\n (0, _languageHandler._t)('No Webcams detected')\n );\n\n var defaultOption = {\n deviceId: '',\n label: (0, _languageHandler._t)('Default Device')\n };\n var getDefaultDevice = function getDefaultDevice(devices) {\n if (!devices.some(function (i) {\n return i.deviceId === 'default';\n })) {\n devices.unshift(defaultOption);\n return '';\n } else {\n return 'default';\n }\n };\n\n var audioOutputs = this.state.mediaDevices.audiooutput.slice(0);\n if (audioOutputs.length > 0) {\n var defaultDevice = getDefaultDevice(audioOutputs);\n speakerDropdown = _react2.default.createElement(\n _Field2.default,\n { element: \"select\", label: (0, _languageHandler._t)(\"Audio Output\"), id: \"audioOutput\",\n value: this.state.activeAudioOutput || defaultDevice,\n onChange: this._setAudioOutput },\n this._renderDeviceOptions(audioOutputs, 'audioOutput')\n );\n }\n\n var audioInputs = this.state.mediaDevices.audioinput.slice(0);\n if (audioInputs.length > 0) {\n var _defaultDevice = getDefaultDevice(audioInputs);\n microphoneDropdown = _react2.default.createElement(\n _Field2.default,\n { element: \"select\", label: (0, _languageHandler._t)(\"Microphone\"), id: \"audioInput\",\n value: this.state.activeAudioInput || _defaultDevice,\n onChange: this._setAudioInput },\n this._renderDeviceOptions(audioInputs, 'audioInput')\n );\n }\n\n var videoInputs = this.state.mediaDevices.videoinput.slice(0);\n if (videoInputs.length > 0) {\n var _defaultDevice2 = getDefaultDevice(videoInputs);\n webcamDropdown = _react2.default.createElement(\n _Field2.default,\n { element: \"select\", label: (0, _languageHandler._t)(\"Camera\"), id: \"videoInput\",\n value: this.state.activeVideoInput || _defaultDevice2,\n onChange: this._setVideoInput },\n this._renderDeviceOptions(videoInputs, 'videoInput')\n );\n }\n }\n\n return _react2.default.createElement(\n \"div\",\n { className: \"mx_SettingsTab mx_VoiceUserSettingsTab\" },\n _react2.default.createElement(\n \"div\",\n { className: \"mx_SettingsTab_heading\" },\n (0, _languageHandler._t)(\"Voice & Video\")\n ),\n _react2.default.createElement(\n \"div\",\n { className: \"mx_SettingsTab_section\" },\n requestButton,\n speakerDropdown,\n microphoneDropdown,\n webcamDropdown,\n _react2.default.createElement(SettingsFlag, { name: \"VideoView.flipVideoHorizontally\", level: _SettingsStore.SettingLevel.ACCOUNT }),\n _react2.default.createElement(SettingsFlag, {\n name: \"webRtcAllowPeerToPeer\",\n level: _SettingsStore.SettingLevel.DEVICE,\n onChange: this._changeWebRtcMethod\n }),\n _react2.default.createElement(SettingsFlag, {\n name: \"fallbackICEServerAllowed\",\n level: _SettingsStore.SettingLevel.DEVICE,\n onChange: this._changeFallbackICEServerAllowed\n })\n )\n );\n }\n }]);\n return VoiceUserSettingsTab;\n}(_react2.default.Component);\n\nexports.default = VoiceUserSettingsTab;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=VoiceUserSettingsTab.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _AccessibleButton = require('../../../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _SdkConfig = require('../../../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _createRoom = require('../../../../../createRoom');\n\nvar _createRoom2 = _interopRequireDefault(_createRoom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar packageJson = require('../../../../../../package.json'); /*\n Copyright 2019 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar Modal = require(\"../../../../../Modal\");\nvar sdk = require(\"../../../../..\");\nvar PlatformPeg = require(\"../../../../../PlatformPeg\");\n\n// if this looks like a release, use the 'version' from package.json; else use\n// the git sha. Prepend version with v, to look like riot-web version\nvar REACT_SDK_VERSION = 'dist' in packageJson ? packageJson.version : packageJson.gitHead || '';\n\n// Simple method to help prettify GH Release Tags and Commit Hashes.\nvar semVerRegex = /^v?(\\d+\\.\\d+\\.\\d+(?:-rc.+)?)(?:-(?:\\d+-g)?([0-9a-fA-F]+))?(?:-dirty)?$/i;\nvar ghVersionLabel = function ghVersionLabel(repo) {\n var token = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n var match = token.match(semVerRegex);\n var url = void 0;\n if (match && match[1]) {\n // basic semVer string possibly with commit hash\n url = match.length > 1 && match[2] ? 'https://github.com/' + repo + '/commit/' + match[2] : 'https://github.com/' + repo + '/releases/tag/v' + match[1];\n } else {\n url = 'https://github.com/' + repo + '/commit/' + token.split('-')[0];\n }\n return _react2.default.createElement(\n 'a',\n { target: '_blank', rel: 'noopener', href: url },\n token\n );\n};\n\nvar HelpUserSettingsTab = function (_React$Component) {\n (0, _inherits3.default)(HelpUserSettingsTab, _React$Component);\n\n function HelpUserSettingsTab() {\n (0, _classCallCheck3.default)(this, HelpUserSettingsTab);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (HelpUserSettingsTab.__proto__ || (0, _getPrototypeOf2.default)(HelpUserSettingsTab)).call(this));\n\n _this._onClearCacheAndReload = function (e) {\n if (!PlatformPeg.get()) return;\n\n // Dev note: please keep this log line, it's useful when troubleshooting a MatrixClient suddenly\n // stopping in the middle of the logs.\n console.log(\"Clear cache & reload clicked\");\n _MatrixClientPeg2.default.get().stopClient();\n _MatrixClientPeg2.default.get().store.deleteAllData().done(function () {\n PlatformPeg.get().reload();\n });\n };\n\n _this._onBugReport = function (e) {\n var BugReportDialog = sdk.getComponent(\"dialogs.BugReportDialog\");\n if (!BugReportDialog) {\n return;\n }\n Modal.createTrackedDialog('Bug Report Dialog', '', BugReportDialog, {});\n };\n\n _this._onStartBotChat = function (e) {\n _this.props.closeSettingsFn();\n (0, _createRoom2.default)({\n dmUserId: _SdkConfig2.default.get().welcomeUserId,\n andView: true\n });\n };\n\n _this._showSpoiler = function (event) {\n var target = event.target;\n target.innerHTML = target.getAttribute('data-spoiler');\n\n var range = document.createRange();\n range.selectNodeContents(target);\n\n var selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n };\n\n _this.state = {\n vectorVersion: null,\n canUpdate: false\n };\n return _this;\n }\n\n (0, _createClass3.default)(HelpUserSettingsTab, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n var _this2 = this;\n\n PlatformPeg.get().getAppVersion().then(function (ver) {\n return _this2.setState({ vectorVersion: ver });\n }).catch(function (e) {\n console.error(\"Error getting vector version: \", e);\n });\n PlatformPeg.get().canSelfUpdate().then(function (v) {\n return _this2.setState({ canUpdate: v });\n }).catch(function (e) {\n console.error(\"Error getting self updatability: \", e);\n });\n }\n }, {\n key: '_renderLegal',\n value: function _renderLegal() {\n var tocLinks = _SdkConfig2.default.get().terms_and_conditions_links;\n if (!tocLinks) return null;\n\n var legalLinks = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(_SdkConfig2.default.get().terms_and_conditions_links), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var tocEntry = _step.value;\n\n legalLinks.push(_react2.default.createElement(\n 'div',\n { key: tocEntry.url },\n _react2.default.createElement(\n 'a',\n { href: tocEntry.url, rel: 'noopener', target: '_blank' },\n tocEntry.text\n )\n ));\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section mx_HelpUserSettingsTab_versions' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_SettingsTab_subheading' },\n (0, _languageHandler._t)(\"Legal\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_subsectionText' },\n legalLinks\n )\n );\n }\n }, {\n key: '_renderCredits',\n value: function _renderCredits() {\n // Note: This is not translated because it is legal text.\n // Also,   is ugly but necessary.\n return _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_SettingsTab_subheading' },\n (0, _languageHandler._t)(\"Credits\")\n ),\n _react2.default.createElement(\n 'ul',\n null,\n _react2.default.createElement(\n 'li',\n null,\n 'The ',\n _react2.default.createElement(\n 'a',\n { href: 'themes/riot/img/backgrounds/valley.jpg', rel: 'noopener', target: '_blank' },\n 'default cover photo'\n ),\n ' is \\xA9\\xA0',\n _react2.default.createElement(\n 'a',\n { href: 'https://www.flickr.com/golan', rel: 'noopener', target: '_blank' },\n 'Jes\\xFAs Roncero'\n ),\n ' ',\n 'used under the terms of\\xA0',\n _react2.default.createElement(\n 'a',\n { href: 'https://creativecommons.org/licenses/by-sa/4.0/', rel: 'noopener', target: '_blank' },\n 'CC-BY-SA 4.0'\n ),\n '.'\n ),\n _react2.default.createElement(\n 'li',\n null,\n 'The ',\n _react2.default.createElement(\n 'a',\n { href: 'https://github.com/matrix-org/twemoji-colr', rel: 'noopener', target: '_blank' },\n 'twemoji-colr'\n ),\n ' font is \\xA9\\xA0',\n _react2.default.createElement(\n 'a',\n { href: 'https://mozilla.org', rel: 'noopener', target: '_blank' },\n 'Mozilla Foundation'\n ),\n ' ',\n 'used under the terms of\\xA0',\n _react2.default.createElement(\n 'a',\n { href: 'http://www.apache.org/licenses/LICENSE-2.0', rel: 'noopener', target: '_blank' },\n 'Apache 2.0'\n ),\n '.'\n ),\n _react2.default.createElement(\n 'li',\n null,\n 'The ',\n _react2.default.createElement(\n 'a',\n { href: 'https://twemoji.twitter.com/', rel: 'noopener', target: '_blank' },\n 'Twemoji'\n ),\n ' emoji art is \\xA9\\xA0',\n _react2.default.createElement(\n 'a',\n { href: 'https://twemoji.twitter.com/', rel: 'noopener', target: '_blank' },\n 'Twitter, Inc and other contributors'\n ),\n ' used under the terms of\\xA0',\n _react2.default.createElement(\n 'a',\n { href: 'https://creativecommons.org/licenses/by/4.0/', rel: 'noopener', target: '_blank' },\n 'CC-BY 4.0'\n ),\n '.'\n )\n )\n );\n }\n }, {\n key: 'render',\n value: function render() {\n var faqText = (0, _languageHandler._t)('For help with using Riot, click here.', {}, {\n 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: 'https://about.riot.im/need-help/', rel: 'noopener', target: '_blank' },\n sub\n );\n }\n });\n if (_SdkConfig2.default.get().welcomeUserId && (0, _languageHandler.getCurrentLanguage)().startsWith('en')) {\n faqText = _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('For help with using Riot, click here or start a chat with our ' + 'bot using the button below.', {}, {\n 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: 'https://about.riot.im/need-help/', rel: 'noopener',\n target: '_blank' },\n sub\n );\n }\n }),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this._onStartBotChat, kind: 'primary' },\n (0, _languageHandler._t)(\"Chat with Riot Bot\")\n )\n )\n );\n }\n\n var reactSdkVersion = REACT_SDK_VERSION !== '' ? ghVersionLabel('matrix-org/matrix-react-sdk', REACT_SDK_VERSION) : REACT_SDK_VERSION;\n var vectorVersion = this.state.vectorVersion ? ghVersionLabel('vector-im/riot-web', this.state.vectorVersion) : 'unknown';\n\n var olmVersion = _MatrixClientPeg2.default.get().olmVersion;\n olmVersion = olmVersion ? olmVersion[0] + '.' + olmVersion[1] + '.' + olmVersion[2] : '';\n\n var updateButton = null;\n if (this.state.canUpdate) {\n var platform = PlatformPeg.get();\n updateButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: platform.startUpdateCheck, kind: 'primary' },\n (0, _languageHandler._t)('Check for update')\n );\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab mx_HelpUserSettingsTab' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_heading' },\n (0, _languageHandler._t)(\"Help & About\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_SettingsTab_subheading' },\n (0, _languageHandler._t)('Bug reporting')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_subsectionText' },\n (0, _languageHandler._t)(\"If you've submitted a bug via GitHub, debug logs can help \" + \"us track down the problem. Debug logs contain application \" + \"usage data including your username, the IDs or aliases of \" + \"the rooms or groups you have visited and the usernames of \" + \"other users. They do not contain messages.\"),\n _react2.default.createElement(\n 'div',\n { className: 'mx_HelpUserSettingsTab_debugButton' },\n _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this._onBugReport, kind: 'primary' },\n (0, _languageHandler._t)(\"Submit debug logs\")\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_HelpUserSettingsTab_debugButton' },\n _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this._onClearCacheAndReload, kind: 'danger' },\n (0, _languageHandler._t)(\"Clear cache and reload\")\n )\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_SettingsTab_subheading' },\n (0, _languageHandler._t)(\"FAQ\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_subsectionText' },\n faqText\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section mx_HelpUserSettingsTab_versions' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_SettingsTab_subheading' },\n (0, _languageHandler._t)(\"Versions\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_subsectionText' },\n (0, _languageHandler._t)(\"matrix-react-sdk version:\"),\n ' ',\n reactSdkVersion,\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)(\"riot-web version:\"),\n ' ',\n vectorVersion,\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)(\"olm version:\"),\n ' ',\n olmVersion,\n _react2.default.createElement('br', null),\n updateButton\n )\n ),\n this._renderLegal(),\n this._renderCredits(),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_section mx_HelpUserSettingsTab_versions' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_SettingsTab_subheading' },\n (0, _languageHandler._t)(\"Advanced\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_subsectionText' },\n (0, _languageHandler._t)(\"Homeserver is\"),\n ' ',\n _react2.default.createElement(\n 'code',\n null,\n _MatrixClientPeg2.default.get().getHomeserverUrl()\n ),\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)(\"Identity Server is\"),\n ' ',\n _react2.default.createElement(\n 'code',\n null,\n _MatrixClientPeg2.default.get().getIdentityServerUrl()\n ),\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)(\"Access Token:\") + ' ',\n _react2.default.createElement(\n _AccessibleButton2.default,\n { element: 'span', onClick: this._showSpoiler,\n 'data-spoiler': _MatrixClientPeg2.default.get().getAccessToken() },\n '<',\n (0, _languageHandler._t)(\"click to reveal\"),\n '>'\n )\n )\n )\n );\n }\n }]);\n return HelpUserSettingsTab;\n}(_react2.default.Component);\n\nHelpUserSettingsTab.propTypes = {\n closeSettingsFn: _propTypes2.default.func.isRequired\n};\nexports.default = HelpUserSettingsTab;\nmodule.exports = exports['default'];\n//# sourceMappingURL=HelpUserSettingsTab.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require(\"../../../../../languageHandler\");\n\nvar _GroupUserSettings = require(\"../../../groups/GroupUserSettings\");\n\nvar _GroupUserSettings2 = _interopRequireDefault(_GroupUserSettings);\n\nvar _MatrixClientPeg = require(\"../../../../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require(\"matrix-js-sdk\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar FlairUserSettingsTab = function (_React$Component) {\n (0, _inherits3.default)(FlairUserSettingsTab, _React$Component);\n\n function FlairUserSettingsTab() {\n (0, _classCallCheck3.default)(this, FlairUserSettingsTab);\n return (0, _possibleConstructorReturn3.default)(this, (FlairUserSettingsTab.__proto__ || (0, _getPrototypeOf2.default)(FlairUserSettingsTab)).call(this));\n }\n\n (0, _createClass3.default)(FlairUserSettingsTab, [{\n key: \"getChildContext\",\n value: function getChildContext() {\n return {\n matrixClient: _MatrixClientPeg2.default.get()\n };\n }\n }, {\n key: \"render\",\n value: function render() {\n return _react2.default.createElement(\n \"div\",\n { className: \"mx_SettingsTab\" },\n _react2.default.createElement(\n \"span\",\n { className: \"mx_SettingsTab_heading\" },\n (0, _languageHandler._t)(\"Flair\")\n ),\n _react2.default.createElement(\n \"div\",\n { className: \"mx_SettingsTab_section\" },\n _react2.default.createElement(_GroupUserSettings2.default, null)\n )\n );\n }\n }]);\n return FlairUserSettingsTab;\n}(_react2.default.Component);\n\nFlairUserSettingsTab.childContextTypes = {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n};\nexports.default = FlairUserSettingsTab;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=FlairUserSettingsTab.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = (0, _createReactClass2.default)({\n displayName: 'GroupUserSettings',\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getInitialState: function getInitialState() {\n return {\n error: null,\n groups: null\n };\n },\n\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this.context.matrixClient.getJoinedGroups().done(function (result) {\n _this.setState({ groups: result.groups || [], error: null });\n }, function (err) {\n console.error(err);\n _this.setState({ groups: null, error: err });\n });\n },\n\n render: function render() {\n var text = \"\";\n var groupPublicityToggles = null;\n var groups = this.state.groups;\n\n if (this.state.error) {\n text = (0, _languageHandler._t)('Something went wrong when trying to get your communities.');\n } else if (groups === null) {\n text = (0, _languageHandler._t)('Loading...');\n } else if (groups.length > 0) {\n var GroupPublicityToggle = _index2.default.getComponent('groups.GroupPublicityToggle');\n groupPublicityToggles = groups.map(function (groupId, index) {\n return _react2.default.createElement(GroupPublicityToggle, { key: index, groupId: groupId });\n });\n text = (0, _languageHandler._t)('Display your community flair in rooms configured to show it.');\n } else {\n text = (0, _languageHandler._t)(\"You're not currently a member of any communities.\");\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n { className: 'mx_SettingsTab_subsectionText' },\n text\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_SettingsTab_subsectionText' },\n groupPublicityToggles\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupUserSettings.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _LabelledToggleSwitch = require('../elements/LabelledToggleSwitch');\n\nvar _LabelledToggleSwitch2 = _interopRequireDefault(_LabelledToggleSwitch);\n\nvar _WidgetUtils = require('../../../utils/WidgetUtils');\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar WidgetOpenIDPermissionsDialog = function (_React$Component) {\n (0, _inherits3.default)(WidgetOpenIDPermissionsDialog, _React$Component);\n\n function WidgetOpenIDPermissionsDialog() {\n (0, _classCallCheck3.default)(this, WidgetOpenIDPermissionsDialog);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (WidgetOpenIDPermissionsDialog.__proto__ || (0, _getPrototypeOf2.default)(WidgetOpenIDPermissionsDialog)).call(this));\n\n _this._onAllow = function () {\n _this._onPermissionSelection(true);\n };\n\n _this._onDeny = function () {\n _this._onPermissionSelection(false);\n };\n\n _this._onRememberSelectionChange = function (newVal) {\n _this.setState({ rememberSelection: newVal });\n };\n\n _this.state = {\n rememberSelection: false\n };\n return _this;\n }\n\n (0, _createClass3.default)(WidgetOpenIDPermissionsDialog, [{\n key: '_onPermissionSelection',\n value: function _onPermissionSelection(allowed) {\n if (this.state.rememberSelection) {\n console.log('Remembering ' + this.props.widgetId + ' as allowed=' + allowed + ' for OpenID');\n\n var currentValues = _SettingsStore2.default.getValue(\"widgetOpenIDPermissions\");\n if (!currentValues.allow) currentValues.allow = [];\n if (!currentValues.deny) currentValues.deny = [];\n\n var securityKey = _WidgetUtils2.default.getWidgetSecurityKey(this.props.widgetId, this.props.widgetUrl, this.props.isUserWidget);\n (allowed ? currentValues.allow : currentValues.deny).push(securityKey);\n _SettingsStore2.default.setValue(\"widgetOpenIDPermissions\", null, _SettingsStore.SettingLevel.DEVICE, currentValues);\n }\n\n this.props.onFinished(allowed);\n }\n }, {\n key: 'render',\n value: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_WidgetOpenIDPermissionsDialog', hasCancel: true,\n onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)(\"A widget would like to verify your identity\") },\n _react2.default.createElement(\n 'div',\n { className: 'mx_WidgetOpenIDPermissionsDialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"A widget located at %(widgetUrl)s would like to verify your identity. \" + \"By allowing this, the widget will be able to verify your user ID, but not \" + \"perform actions as you.\", {\n widgetUrl: this.props.widgetUrl\n })\n ),\n _react2.default.createElement(_LabelledToggleSwitch2.default, { value: this.state.rememberSelection, toggleInFront: true,\n onChange: this._onRememberSelectionChange,\n label: (0, _languageHandler._t)(\"Remember my selection for this widget\") })\n ),\n _react2.default.createElement(DialogButtons, {\n primaryButton: (0, _languageHandler._t)(\"Allow\"),\n onPrimaryButtonClick: this._onAllow,\n cancelButton: (0, _languageHandler._t)(\"Deny\"),\n onCancel: this._onDeny\n })\n );\n }\n }]);\n return WidgetOpenIDPermissionsDialog;\n}(_react2.default.Component); /*\n Copyright 2019 Travis Ralston\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nWidgetOpenIDPermissionsDialog.propTypes = {\n onFinished: _propTypes2.default.func.isRequired,\n widgetUrl: _propTypes2.default.string.isRequired,\n widgetId: _propTypes2.default.string.isRequired,\n isUserWidget: _propTypes2.default.bool.isRequired\n};\nexports.default = WidgetOpenIDPermissionsDialog;\nmodule.exports = exports['default'];\n//# sourceMappingURL=WidgetOpenIDPermissionsDialog.js.map","module.exports = \"img/network-matrix.464d34e.svg\";","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _url = require('url');\n\nvar _url2 = _interopRequireDefault(_url);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _WidgetUtils = require('../../../utils/WidgetUtils');\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar AppPermission = function (_React$Component) {\n (0, _inherits3.default)(AppPermission, _React$Component);\n\n function AppPermission(props) {\n (0, _classCallCheck3.default)(this, AppPermission);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (AppPermission.__proto__ || (0, _getPrototypeOf2.default)(AppPermission)).call(this, props));\n\n var curlBase = _this.getCurlBase();\n _this.state = { curlBase: curlBase };\n return _this;\n }\n\n // Return string representation of content URL without query parameters\n\n\n (0, _createClass3.default)(AppPermission, [{\n key: 'getCurlBase',\n value: function getCurlBase() {\n var wurl = _url2.default.parse(this.props.url);\n var curl = void 0;\n var curlString = void 0;\n\n var searchParams = new URLSearchParams(wurl.search);\n\n if (_WidgetUtils2.default.isScalarUrl(wurl) && searchParams && searchParams.get('url')) {\n curl = _url2.default.parse(searchParams.get('url'));\n if (curl) {\n curl.search = curl.query = \"\";\n curlString = curl.format();\n }\n }\n if (!curl && wurl) {\n wurl.search = wurl.query = \"\";\n curlString = wurl.format();\n }\n return curlString;\n }\n }, {\n key: 'render',\n value: function render() {\n var e2eWarningText = void 0;\n if (this.props.isRoomEncrypted) {\n e2eWarningText = _react2.default.createElement(\n 'span',\n { className: 'mx_AppPermissionWarningTextLabel' },\n (0, _languageHandler._t)('NOTE: Apps are not end-to-end encrypted')\n );\n }\n var cookieWarning = _react2.default.createElement(\n 'span',\n { className: 'mx_AppPermissionWarningTextLabel' },\n (0, _languageHandler._t)('Warning: This widget might use cookies.')\n );\n return _react2.default.createElement(\n 'div',\n { className: 'mx_AppPermissionWarning' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_AppPermissionWarningImage' },\n _react2.default.createElement('img', { src: require(\"../../../../res/img/feather-customised/warning-triangle.svg\"), alt: (0, _languageHandler._t)('Warning!') })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_AppPermissionWarningText' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_AppPermissionWarningTextLabel' },\n (0, _languageHandler._t)('Do you want to load widget from URL:')\n ),\n _react2.default.createElement(\n 'span',\n { className: 'mx_AppPermissionWarningTextURL',\n title: this.state.curlBase\n },\n this.state.curlBase\n ),\n e2eWarningText,\n cookieWarning\n ),\n _react2.default.createElement('input', {\n className: 'mx_AppPermissionButton',\n type: 'button',\n value: (0, _languageHandler._t)('Allow'),\n onClick: this.props.onPermissionGranted\n })\n );\n }\n }]);\n return AppPermission;\n}(_react2.default.Component); /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018, 2019 New Vector Ltd\n Copyright 2019 The Matrix.org Foundation C.I.C.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = AppPermission;\n\n\nAppPermission.propTypes = {\n isRoomEncrypted: _propTypes2.default.bool,\n url: _propTypes2.default.string.isRequired,\n onPermissionGranted: _propTypes2.default.func.isRequired\n};\nAppPermission.defaultProps = {\n isRoomEncrypted: false,\n onPermissionGranted: function onPermissionGranted() {}\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=AppPermission.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar AppWarning = function AppWarning(props) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_AppPermissionWarning' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_AppPermissionWarningImage' },\n _react2.default.createElement('img', { src: require(\"../../../../res/img/warning.svg\"), alt: '' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_AppPermissionWarningText' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_AppPermissionWarningTextLabel' },\n props.errorMsg\n )\n )\n );\n}; // eslint-disable-line no-unused-vars\n\n\nAppWarning.propTypes = {\n errorMsg: _propTypes2.default.string\n};\nAppWarning.defaultProps = {\n errorMsg: 'Error'\n};\n\nexports.default = AppWarning;\nmodule.exports = exports['default'];\n//# sourceMappingURL=AppWarning.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = (0, _createReactClass2.default)({\n displayName: 'MessageSpinner',\n\n render: function render() {\n var w = this.props.w || 32;\n var h = this.props.h || 32;\n var imgClass = this.props.imgClassName || \"\";\n var msg = this.props.msg || \"Loading...\";\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Spinner' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Spinner_Msg' },\n msg\n ),\n '\\xA0',\n _react2.default.createElement('img', { src: require(\"../../../../res/img/spinner.gif\"), width: w, height: h, className: imgClass })\n );\n }\n});\n//# sourceMappingURL=MessageSpinner.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Keyboard = require('../../../Keyboard');\n\nvar _ContextualMenu = require('../../structures/ContextualMenu');\n\nvar ContextualMenu = _interopRequireWildcard(_ContextualMenu);\n\nvar _FormattingUtils = require('../../../utils/FormattingUtils');\n\nvar FormattingUtils = _interopRequireWildcard(_FormattingUtils);\n\nvar _FlairStore = require('../../../stores/FlairStore');\n\nvar _FlairStore2 = _interopRequireDefault(_FlairStore);\n\nvar _GroupStore = require('../../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nvar _TagOrderStore = require('../../../stores/TagOrderStore');\n\nvar _TagOrderStore2 = _interopRequireDefault(_TagOrderStore);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// A class for a child of TagPanel (possibly wrapped in a DNDTagTile) that represents\n// a thing to click on for the user to filter the visible rooms in the RoomList to:\n// - Rooms that are part of the group\n// - Direct messages with members of the group\n// with the intention that this could be expanded to arbitrary tags in future.\nexports.default = (0, _createReactClass2.default)({\n displayName: 'TagTile',\n\n propTypes: {\n // A string tag such as \"m.favourite\" or a group ID such as \"+groupid:domain.bla\"\n // For now, only group IDs are handled.\n tag: _propTypes2.default.string\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient).isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n // Whether the mouse is over the tile\n hover: false,\n // The profile data of the group if this.props.tag is a group ID\n profile: null\n };\n },\n componentWillMount: function componentWillMount() {\n this.unmounted = false;\n if (this.props.tag[0] === '+') {\n _FlairStore2.default.addListener('updateGroupProfile', this._onFlairStoreUpdated);\n this._onFlairStoreUpdated();\n // New rooms or members may have been added to the group, fetch async\n this._refreshGroup(this.props.tag);\n }\n },\n componentWillUnmount: function componentWillUnmount() {\n this.unmounted = true;\n if (this.props.tag[0] === '+') {\n _FlairStore2.default.removeListener('updateGroupProfile', this._onFlairStoreUpdated);\n }\n },\n _onFlairStoreUpdated: function _onFlairStoreUpdated() {\n var _this = this;\n\n if (this.unmounted) return;\n _FlairStore2.default.getGroupProfileCached(this.context.matrixClient, this.props.tag).then(function (profile) {\n if (_this.unmounted) return;\n _this.setState({ profile: profile });\n }).catch(function (err) {\n console.warn('Could not fetch group profile for ' + _this.props.tag, err);\n });\n },\n _refreshGroup: function _refreshGroup(groupId) {\n _GroupStore2.default.refreshGroupRooms(groupId);\n _GroupStore2.default.refreshGroupMembers(groupId);\n },\n\n\n onClick: function onClick(e) {\n e.preventDefault();\n e.stopPropagation();\n _dispatcher2.default.dispatch({\n action: 'select_tag',\n tag: this.props.tag,\n ctrlOrCmdKey: (0, _Keyboard.isOnlyCtrlOrCmdIgnoreShiftKeyEvent)(e),\n shiftKey: e.shiftKey\n });\n if (this.props.tag[0] === '+') {\n // New rooms or members may have been added to the group, fetch async\n this._refreshGroup(this.props.tag);\n }\n },\n\n _openContextMenu: function _openContextMenu(x, y, chevronOffset) {\n var _this2 = this;\n\n // Hide the (...) immediately\n this.setState({ hover: false });\n\n var TagTileContextMenu = _index2.default.getComponent('context_menus.TagTileContextMenu');\n ContextualMenu.createMenu(TagTileContextMenu, {\n chevronOffset: chevronOffset,\n left: x,\n top: y,\n tag: this.props.tag,\n onFinished: function onFinished() {\n _this2.setState({ menuDisplayed: false });\n }\n });\n this.setState({ menuDisplayed: true });\n },\n\n onContextButtonClick: function onContextButtonClick(e) {\n e.preventDefault();\n e.stopPropagation();\n\n var elementRect = e.target.getBoundingClientRect();\n\n // The window X and Y offsets are to adjust position when zoomed in to page\n var x = elementRect.right + window.pageXOffset + 3;\n var chevronOffset = 12;\n var y = elementRect.top + elementRect.height / 2 + window.pageYOffset;\n y = y - (chevronOffset + 8); // where 8 is half the height of the chevron\n\n this._openContextMenu(x, y, chevronOffset);\n },\n\n onContextMenu: function onContextMenu(e) {\n e.preventDefault();\n\n var chevronOffset = 12;\n this._openContextMenu(e.clientX, e.clientY - (chevronOffset + 8), chevronOffset);\n },\n\n onMouseOver: function onMouseOver() {\n this.setState({ hover: true });\n },\n\n onMouseOut: function onMouseOut() {\n this.setState({ hover: false });\n },\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n var Tooltip = _index2.default.getComponent('elements.Tooltip');\n var profile = this.state.profile || {};\n var name = profile.name || this.props.tag;\n var avatarHeight = 40;\n\n var httpUrl = profile.avatarUrl ? this.context.matrixClient.mxcUrlToHttp(profile.avatarUrl, avatarHeight, avatarHeight, \"crop\") : null;\n\n var className = (0, _classnames2.default)({\n mx_TagTile: true,\n mx_TagTile_selected: this.props.selected\n });\n\n var badge = _TagOrderStore2.default.getGroupBadge(this.props.tag);\n var badgeElement = void 0;\n if (badge && !this.state.hover) {\n var badgeClasses = (0, _classnames2.default)({\n \"mx_TagTile_badge\": true,\n \"mx_TagTile_badgeHighlight\": badge.highlight\n });\n badgeElement = _react2.default.createElement(\n 'div',\n { className: badgeClasses },\n FormattingUtils.formatCount(badge.count)\n );\n }\n\n var tip = this.state.hover ? _react2.default.createElement(Tooltip, { className: 'mx_TagTile_tooltip', label: name }) : _react2.default.createElement('div', null);\n var contextButton = this.state.hover || this.state.menuDisplayed ? _react2.default.createElement(\n 'div',\n { className: 'mx_TagTile_context_button', onClick: this.onContextButtonClick },\n '\\xB7\\xB7\\xB7'\n ) : _react2.default.createElement('div', null);\n return _react2.default.createElement(\n AccessibleButton,\n { className: className, onClick: this.onClick, onContextMenu: this.onContextMenu },\n _react2.default.createElement(\n 'div',\n { className: 'mx_TagTile_avatar', onMouseOver: this.onMouseOver, onMouseOut: this.onMouseOut },\n _react2.default.createElement(BaseAvatar, {\n name: name,\n idName: this.props.tag,\n url: httpUrl,\n width: avatarHeight,\n height: avatarHeight\n }),\n tip,\n contextButton,\n badgeElement\n )\n );\n }\n}); /*\n Copyright 2017 New Vector Ltd.\n Copyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=TagTile.js.map","/*\n Copyright 2017 New Vector Ltd.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _FlairStore = require('../../../stores/FlairStore');\n\nvar _FlairStore2 = _interopRequireDefault(_FlairStore);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar FlairAvatar = function (_React$Component) {\n (0, _inherits3.default)(FlairAvatar, _React$Component);\n\n function FlairAvatar() {\n (0, _classCallCheck3.default)(this, FlairAvatar);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (FlairAvatar.__proto__ || (0, _getPrototypeOf2.default)(FlairAvatar)).call(this));\n\n _this.onClick = _this.onClick.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(FlairAvatar, [{\n key: 'onClick',\n value: function onClick(ev) {\n ev.preventDefault();\n // Don't trigger onClick of parent element\n ev.stopPropagation();\n _dispatcher2.default.dispatch({\n action: 'view_group',\n group_id: this.props.groupProfile.groupId\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var httpUrl = this.context.matrixClient.mxcUrlToHttp(this.props.groupProfile.avatarUrl, 16, 16, 'scale', false);\n var tooltip = this.props.groupProfile.name ? this.props.groupProfile.name + ' (' + this.props.groupProfile.groupId + ')' : this.props.groupProfile.groupId;\n return _react2.default.createElement('img', {\n src: httpUrl,\n width: '16',\n height: '16',\n onClick: this.onClick,\n title: tooltip });\n }\n }]);\n return FlairAvatar;\n}(_react2.default.Component);\n\nFlairAvatar.propTypes = {\n groupProfile: _propTypes2.default.shape({\n groupId: _propTypes2.default.string.isRequired,\n name: _propTypes2.default.string,\n avatarUrl: _propTypes2.default.string.isRequired\n })\n};\n\nFlairAvatar.contextTypes = {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient).isRequired\n};\n\nvar Flair = function (_React$Component2) {\n (0, _inherits3.default)(Flair, _React$Component2);\n\n function Flair() {\n (0, _classCallCheck3.default)(this, Flair);\n\n var _this2 = (0, _possibleConstructorReturn3.default)(this, (Flair.__proto__ || (0, _getPrototypeOf2.default)(Flair)).call(this));\n\n _this2.state = {\n profiles: []\n };\n return _this2;\n }\n\n (0, _createClass3.default)(Flair, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._unmounted = true;\n }\n }, {\n key: 'componentWillMount',\n value: function componentWillMount() {\n this._unmounted = false;\n this._generateAvatars(this.props.groups);\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(newProps) {\n this._generateAvatars(newProps.groups);\n }\n }, {\n key: '_getGroupProfiles',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(groups) {\n var profiles, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, groupId, groupProfile;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n profiles = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context.prev = 4;\n _iterator = (0, _getIterator3.default)(groups);\n\n case 6:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context.next = 22;\n break;\n }\n\n groupId = _step.value;\n groupProfile = null;\n _context.prev = 9;\n _context.next = 12;\n return (0, _bluebird.resolve)(_FlairStore2.default.getGroupProfileCached(this.context.matrixClient, groupId));\n\n case 12:\n groupProfile = _context.sent;\n _context.next = 18;\n break;\n\n case 15:\n _context.prev = 15;\n _context.t0 = _context['catch'](9);\n\n console.error('Could not get profile for group', groupId, _context.t0);\n\n case 18:\n profiles.push(groupProfile);\n\n case 19:\n _iteratorNormalCompletion = true;\n _context.next = 6;\n break;\n\n case 22:\n _context.next = 28;\n break;\n\n case 24:\n _context.prev = 24;\n _context.t1 = _context['catch'](4);\n _didIteratorError = true;\n _iteratorError = _context.t1;\n\n case 28:\n _context.prev = 28;\n _context.prev = 29;\n\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n\n case 31:\n _context.prev = 31;\n\n if (!_didIteratorError) {\n _context.next = 34;\n break;\n }\n\n throw _iteratorError;\n\n case 34:\n return _context.finish(31);\n\n case 35:\n return _context.finish(28);\n\n case 36:\n return _context.abrupt('return', profiles.filter(function (p) {\n return p !== null;\n }));\n\n case 37:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[4, 24, 28, 36], [9, 15], [29,, 31, 35]]);\n }));\n\n function _getGroupProfiles(_x) {\n return _ref.apply(this, arguments);\n }\n\n return _getGroupProfiles;\n }()\n }, {\n key: '_generateAvatars',\n value: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(groups) {\n var profiles;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!(!groups || groups.length === 0)) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt('return');\n\n case 2:\n _context2.next = 4;\n return (0, _bluebird.resolve)(this._getGroupProfiles(groups));\n\n case 4:\n profiles = _context2.sent;\n\n if (!this.unmounted) {\n this.setState({\n profiles: profiles.filter(function (profile) {\n return profile ? profile.avatarUrl : false;\n })\n });\n }\n\n case 6:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function _generateAvatars(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return _generateAvatars;\n }()\n }, {\n key: 'render',\n value: function render() {\n if (this.state.profiles.length === 0) {\n return _react2.default.createElement('span', { className: 'mx_Flair' });\n }\n var avatars = this.state.profiles.map(function (profile, index) {\n return _react2.default.createElement(FlairAvatar, { key: index, groupProfile: profile });\n });\n return _react2.default.createElement(\n 'span',\n { className: 'mx_Flair' },\n avatars\n );\n }\n }]);\n return Flair;\n}(_react2.default.Component);\n\nexports.default = Flair;\n\n\nFlair.propTypes = {\n groups: _propTypes2.default.arrayOf(_propTypes2.default.string)\n};\n\nFlair.contextTypes = {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient).isRequired\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=Flair.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _IntegrationManagers = require('../../../integrations/IntegrationManagers');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar ManageIntegsButton = function (_React$Component) {\n (0, _inherits3.default)(ManageIntegsButton, _React$Component);\n\n function ManageIntegsButton(props) {\n (0, _classCallCheck3.default)(this, ManageIntegsButton);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (ManageIntegsButton.__proto__ || (0, _getPrototypeOf2.default)(ManageIntegsButton)).call(this, props));\n\n _this.onManageIntegrations = function (ev) {\n ev.preventDefault();\n\n var managers = _IntegrationManagers.IntegrationManagers.sharedInstance();\n if (!managers.hasManager()) {\n managers.openNoManagerDialog();\n } else {\n if (_SettingsStore2.default.isFeatureEnabled(\"feature_many_integration_managers\")) {\n managers.openAll(_this.props.room);\n } else {\n managers.getPrimaryManager().open(_this.props.room);\n }\n }\n };\n\n return _this;\n }\n\n (0, _createClass3.default)(ManageIntegsButton, [{\n key: 'render',\n value: function render() {\n var integrationsButton = _react2.default.createElement('div', null);\n if (_IntegrationManagers.IntegrationManagers.sharedInstance().hasManager()) {\n var AccessibleButton = _index2.default.getComponent(\"elements.AccessibleButton\");\n integrationsButton = _react2.default.createElement(AccessibleButton, {\n className: 'mx_RoomHeader_button mx_RoomHeader_manageIntegsButton',\n title: (0, _languageHandler._t)(\"Manage Integrations\"),\n onClick: this.onManageIntegrations\n });\n }\n\n return integrationsButton;\n }\n }]);\n return ManageIntegsButton;\n}(_react2.default.Component);\n\nexports.default = ManageIntegsButton;\n\n\nManageIntegsButton.propTypes = {\n room: _propTypes2.default.object.isRequired\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=ManageIntegsButton.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _resizeObserverPolyfill = require('resize-observer-polyfill');\n\nvar _resizeObserverPolyfill2 = _interopRequireDefault(_resizeObserverPolyfill);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Shamelessly ripped off Modal.js. There's probably a better way\n// of doing reusable widgets like dialog boxes & menus where we go and\n// pass in a custom control as the actual body.\n\nfunction getContainer(containerId) {\n return document.getElementById(containerId);\n} /*\n Copyright 2018 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction getOrCreateContainer(containerId) {\n var container = getContainer(containerId);\n\n if (!container) {\n container = document.createElement(\"div\");\n container.id = containerId;\n document.body.appendChild(container);\n }\n\n return container;\n}\n\n/*\n * Class of component that renders its children in a separate ReactDOM virtual tree\n * in a container element appended to document.body.\n *\n * This prevents the children from being unmounted when the parent of PersistedElement\n * unmounts, allowing them to persist.\n *\n * When PE is unmounted, it hides the children using CSS. When mounted or updated, the\n * children are made visible and are positioned into a div that is given the same\n * bounding rect as the parent of PE.\n */\n\nvar PersistedElement = function (_React$Component) {\n (0, _inherits3.default)(PersistedElement, _React$Component);\n\n function PersistedElement() {\n (0, _classCallCheck3.default)(this, PersistedElement);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (PersistedElement.__proto__ || (0, _getPrototypeOf2.default)(PersistedElement)).call(this));\n\n _this.collectChildContainer = _this.collectChildContainer.bind(_this);\n _this.collectChild = _this.collectChild.bind(_this);\n _this._repositionChild = _this._repositionChild.bind(_this);\n _this._onAction = _this._onAction.bind(_this);\n\n _this.resizeObserver = new _resizeObserverPolyfill2.default(_this._repositionChild);\n // Annoyingly, a resize observer is insufficient, since we also care\n // about when the element moves on the screen without changing its\n // dimensions. Doesn't look like there's a ResizeObserver equivalent\n // for this, so we bodge it by listening for document resize and\n // the timeline_resize action.\n window.addEventListener('resize', _this._repositionChild);\n _this._dispatcherRef = _dispatcher2.default.register(_this._onAction);\n return _this;\n }\n\n /**\n * Removes the DOM elements created when a PersistedElement with the given\n * persistKey was mounted. The DOM elements will be re-added if another\n * PeristedElement is mounted in the future.\n *\n * @param {string} persistKey Key used to uniquely identify this PersistedElement\n */\n\n\n (0, _createClass3.default)(PersistedElement, [{\n key: 'collectChildContainer',\n value: function collectChildContainer(ref) {\n if (this.childContainer) {\n this.resizeObserver.unobserve(this.childContainer);\n }\n this.childContainer = ref;\n if (ref) {\n this.resizeObserver.observe(ref);\n }\n }\n }, {\n key: 'collectChild',\n value: function collectChild(ref) {\n this.child = ref;\n this.updateChild();\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.updateChild();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this.updateChild();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.updateChildVisibility(this.child, false);\n this.resizeObserver.disconnect();\n window.removeEventListener('resize', this._repositionChild);\n _dispatcher2.default.unregister(this._dispatcherRef);\n }\n }, {\n key: '_onAction',\n value: function _onAction(payload) {\n if (payload.action === 'timeline_resize') {\n this._repositionChild();\n }\n }\n }, {\n key: '_repositionChild',\n value: function _repositionChild() {\n this.updateChildPosition(this.child, this.childContainer);\n }\n }, {\n key: 'updateChild',\n value: function updateChild() {\n this.updateChildPosition(this.child, this.childContainer);\n this.updateChildVisibility(this.child, true);\n }\n }, {\n key: 'updateChildVisibility',\n value: function updateChildVisibility(child, visible) {\n if (!child) return;\n child.style.display = visible ? 'block' : 'none';\n }\n }, {\n key: 'updateChildPosition',\n value: function updateChildPosition(child, parent) {\n if (!child || !parent) return;\n\n var parentRect = parent.getBoundingClientRect();\n (0, _assign2.default)(child.style, {\n position: 'absolute',\n top: parentRect.top + 'px',\n left: parentRect.left + 'px',\n width: parentRect.width + 'px',\n height: parentRect.height + 'px'\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var content = _react2.default.createElement(\n 'div',\n { ref: this.collectChild, style: this.props.style },\n this.props.children\n );\n\n _reactDom2.default.render(content, getOrCreateContainer('mx_persistedElement_' + this.props.persistKey));\n\n return _react2.default.createElement('div', { ref: this.collectChildContainer });\n }\n }], [{\n key: 'destroyElement',\n value: function destroyElement(persistKey) {\n var container = getContainer('mx_persistedElement_' + persistKey);\n if (container) {\n container.remove();\n }\n }\n }, {\n key: 'isMounted',\n value: function isMounted(persistKey) {\n return Boolean(getContainer('mx_persistedElement_' + persistKey));\n }\n }]);\n return PersistedElement;\n}(_react2.default.Component);\n\nPersistedElement.propTypes = {\n // Unique identifier for this PersistedElement instance\n // Any PersistedElements with the same persistKey will use\n // the same DOM container.\n persistKey: _propTypes2.default.string.isRequired\n};\nexports.default = PersistedElement;\nmodule.exports = exports['default'];\n//# sourceMappingURL=PersistedElement.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nexports.pillifyLinks = pillifyLinks;\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _SettingsStore = require('../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _pushprocessor = require('matrix-js-sdk/lib/pushprocessor');\n\nvar _pushprocessor2 = _interopRequireDefault(_pushprocessor);\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction pillifyLinks(nodes, mxEvent) {\n var room = _MatrixClientPeg2.default.get().getRoom(mxEvent.getRoomId());\n var shouldShowPillAvatar = _SettingsStore2.default.getValue(\"Pill.shouldShowPillAvatar\");\n var node = nodes[0];\n while (node) {\n var pillified = false;\n\n if (node.tagName === \"A\" && node.getAttribute(\"href\")) {\n var href = node.getAttribute(\"href\");\n\n // If the link is a (localised) matrix.to link, replace it with a pill\n var Pill = _index2.default.getComponent('elements.Pill');\n if (Pill.isMessagePillUrl(href)) {\n var pillContainer = document.createElement('span');\n\n var pill = React.createElement(Pill, {\n url: href,\n inMessage: true,\n room: room,\n shouldShowPillAvatar: shouldShowPillAvatar\n });\n\n _reactDom2.default.render(pill, pillContainer);\n node.parentNode.replaceChild(pillContainer, node);\n // Pills within pills aren't going to go well, so move on\n pillified = true;\n\n // update the current node with one that's now taken its place\n node = pillContainer;\n }\n } else if (node.nodeType === Node.TEXT_NODE &&\n // as applying pills happens outside of react, make sure we're not doubly\n // applying @room pills here, as a rerender with the same content won't touch the DOM\n // to clear the pills from the last run of pillifyLinks\n !node.parentElement.classList.contains(\"mx_AtRoomPill\")) {\n var _Pill = _index2.default.getComponent('elements.Pill');\n\n var currentTextNode = node;\n var roomNotifTextNodes = [];\n\n // Take a textNode and break it up to make all the instances of @room their\n // own textNode, adding those nodes to roomNotifTextNodes\n while (currentTextNode !== null) {\n var roomNotifPos = _Pill.roomNotifPos(currentTextNode.textContent);\n var nextTextNode = null;\n if (roomNotifPos > -1) {\n var roomTextNode = currentTextNode;\n\n if (roomNotifPos > 0) roomTextNode = roomTextNode.splitText(roomNotifPos);\n if (roomTextNode.textContent.length > _Pill.roomNotifLen()) {\n nextTextNode = roomTextNode.splitText(_Pill.roomNotifLen());\n }\n roomNotifTextNodes.push(roomTextNode);\n }\n currentTextNode = nextTextNode;\n }\n\n if (roomNotifTextNodes.length > 0) {\n var pushProcessor = new _pushprocessor2.default(_MatrixClientPeg2.default.get());\n var atRoomRule = pushProcessor.getPushRuleById(\".m.rule.roomnotif\");\n if (atRoomRule && pushProcessor.ruleMatchesEvent(atRoomRule, mxEvent)) {\n // Now replace all those nodes with Pills\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(roomNotifTextNodes), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var roomNotifTextNode = _step.value;\n\n // Set the next node to be processed to the one after the node\n // we're adding now, since we've just inserted nodes into the structure\n // we're iterating over.\n // Note we've checked roomNotifTextNodes.length > 0 so we'll do this at least once\n node = roomNotifTextNode.nextSibling;\n\n var _pillContainer = document.createElement('span');\n var _pill = React.createElement(_Pill, {\n type: _Pill.TYPE_AT_ROOM_MENTION,\n inMessage: true,\n room: room,\n shouldShowPillAvatar: true\n });\n\n _reactDom2.default.render(_pill, _pillContainer);\n roomNotifTextNode.parentNode.replaceChild(_pillContainer, roomNotifTextNode);\n }\n // Nothing else to do for a text node (and we don't need to advance\n // the loop pointer because we did it above)\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n continue;\n }\n }\n }\n\n if (node.childNodes && node.childNodes.length && !pillified) {\n pillifyLinks(node.childNodes, mxEvent);\n }\n\n node = node.nextSibling;\n }\n} /*\n Copyright 2019 The Matrix.org Foundation C.I.C.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=pillify.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.HiddenImagePlaceholder = undefined;\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _MFileBody = require('./MFileBody');\n\nvar _MFileBody2 = _interopRequireDefault(_MFileBody);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _DecryptFile = require('../../../utils/DecryptFile');\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\nCopyright 2018, 2019 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MImageBody = function (_React$Component) {\n (0, _inherits3.default)(MImageBody, _React$Component);\n\n function MImageBody(props) {\n (0, _classCallCheck3.default)(this, MImageBody);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (MImageBody.__proto__ || (0, _getPrototypeOf2.default)(MImageBody)).call(this, props));\n\n _this.onImageError = _this.onImageError.bind(_this);\n _this.onImageLoad = _this.onImageLoad.bind(_this);\n _this.onImageEnter = _this.onImageEnter.bind(_this);\n _this.onImageLeave = _this.onImageLeave.bind(_this);\n _this.onClientSync = _this.onClientSync.bind(_this);\n _this.onClick = _this.onClick.bind(_this);\n _this._isGif = _this._isGif.bind(_this);\n\n _this.state = {\n decryptedUrl: null,\n decryptedThumbnailUrl: null,\n decryptedBlob: null,\n error: null,\n imgError: false,\n imgLoaded: false,\n loadedImageDimensions: null,\n hover: false,\n showImage: _SettingsStore2.default.getValue(\"showImages\")\n };\n return _this;\n }\n\n (0, _createClass3.default)(MImageBody, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n this.unmounted = false;\n this.context.matrixClient.on('sync', this.onClientSync);\n }\n\n // FIXME: factor this out and aplpy it to MVideoBody and MAudioBody too!\n\n }, {\n key: 'onClientSync',\n value: function onClientSync(syncState, prevState) {\n if (this.unmounted) return;\n // Consider the client reconnected if there is no error with syncing.\n // This means the state could be RECONNECTING, SYNCING, PREPARED or CATCHUP.\n var reconnected = syncState !== \"ERROR\" && prevState !== syncState;\n if (reconnected && this.state.imgError) {\n // Load the image again\n this.setState({\n imgError: false\n });\n }\n }\n }, {\n key: 'showImage',\n value: function showImage() {\n localStorage.setItem(\"mx_ShowImage_\" + this.props.mxEvent.getId(), \"true\");\n this.setState({ showImage: true });\n }\n }, {\n key: 'onClick',\n value: function onClick(ev) {\n if (ev.button === 0 && !ev.metaKey) {\n ev.preventDefault();\n if (!this.state.showImage) {\n this.showImage();\n return;\n }\n\n var content = this.props.mxEvent.getContent();\n var httpUrl = this._getContentUrl();\n var ImageView = _index2.default.getComponent(\"elements.ImageView\");\n var params = {\n src: httpUrl,\n name: content.body && content.body.length > 0 ? content.body : (0, _languageHandler._t)('Attachment'),\n mxEvent: this.props.mxEvent\n };\n\n if (content.info) {\n params.width = content.info.w;\n params.height = content.info.h;\n params.fileSize = content.info.size;\n }\n\n _Modal2.default.createDialog(ImageView, params, \"mx_Dialog_lightbox\");\n }\n }\n }, {\n key: '_isGif',\n value: function _isGif() {\n var content = this.props.mxEvent.getContent();\n return content && content.info && content.info.mimetype === \"image/gif\";\n }\n }, {\n key: 'onImageEnter',\n value: function onImageEnter(e) {\n this.setState({ hover: true });\n\n if (!this.state.showImage || !this._isGif() || _SettingsStore2.default.getValue(\"autoplayGifsAndVideos\")) {\n return;\n }\n var imgElement = e.target;\n imgElement.src = this._getContentUrl();\n }\n }, {\n key: 'onImageLeave',\n value: function onImageLeave(e) {\n this.setState({ hover: false });\n\n if (!this.state.showImage || !this._isGif() || _SettingsStore2.default.getValue(\"autoplayGifsAndVideos\")) {\n return;\n }\n var imgElement = e.target;\n imgElement.src = this._getThumbUrl();\n }\n }, {\n key: 'onImageError',\n value: function onImageError() {\n this.setState({\n imgError: true\n });\n }\n }, {\n key: 'onImageLoad',\n value: function onImageLoad() {\n this.props.onHeightChanged();\n\n var loadedImageDimensions = void 0;\n\n if (this.refs.image) {\n var _refs$image = this.refs.image,\n naturalWidth = _refs$image.naturalWidth,\n naturalHeight = _refs$image.naturalHeight;\n // this is only used as a fallback in case content.info.w/h is missing\n\n loadedImageDimensions = { naturalWidth: naturalWidth, naturalHeight: naturalHeight };\n }\n\n this.setState({ imgLoaded: true, loadedImageDimensions: loadedImageDimensions });\n }\n }, {\n key: '_getContentUrl',\n value: function _getContentUrl() {\n var content = this.props.mxEvent.getContent();\n if (content.file !== undefined) {\n return this.state.decryptedUrl;\n } else {\n return this.context.matrixClient.mxcUrlToHttp(content.url);\n }\n }\n }, {\n key: '_getThumbUrl',\n value: function _getThumbUrl() {\n // FIXME: the dharma skin lets images grow as wide as you like, rather than capped to 800x600.\n // So either we need to support custom timeline widths here, or reimpose the cap, otherwise the\n // thumbnail resolution will be unnecessarily reduced.\n // custom timeline widths seems preferable.\n var pixelRatio = window.devicePixelRatio;\n var thumbWidth = Math.round(800 * pixelRatio);\n var thumbHeight = Math.round(600 * pixelRatio);\n\n var content = this.props.mxEvent.getContent();\n if (content.file !== undefined) {\n // Don't use the thumbnail for clients wishing to autoplay gifs.\n if (this.state.decryptedThumbnailUrl) {\n return this.state.decryptedThumbnailUrl;\n }\n return this.state.decryptedUrl;\n } else if (content.info && content.info.mimetype === \"image/svg+xml\" && content.info.thumbnail_url) {\n // special case to return clientside sender-generated thumbnails for SVGs, if any,\n // given we deliberately don't thumbnail them serverside to prevent\n // billion lol attacks and similar\n return this.context.matrixClient.mxcUrlToHttp(content.info.thumbnail_url, thumbWidth, thumbHeight);\n } else {\n // we try to download the correct resolution\n // for hi-res images (like retina screenshots).\n // synapse only supports 800x600 thumbnails for now though,\n // so we'll need to download the original image for this to work\n // well for now. First, let's try a few cases that let us avoid\n // downloading the original, including:\n // - When displaying a GIF, we always want to thumbnail so that we can\n // properly respect the user's GIF autoplay setting (which relies on\n // thumbnailing to produce the static preview image)\n // - On a low DPI device, always thumbnail to save bandwidth\n // - If there's no sizing info in the event, default to thumbnail\n var info = content.info;\n if (this._isGif() || pixelRatio === 1.0 || !info || !info.w || !info.h || !info.size) {\n return this.context.matrixClient.mxcUrlToHttp(content.url, thumbWidth, thumbHeight);\n } else {\n // we should only request thumbnails if the image is bigger than 800x600\n // (or 1600x1200 on retina) otherwise the image in the timeline will just\n // end up resampled and de-retina'd for no good reason.\n // Ideally the server would pregen 1600x1200 thumbnails in order to provide retina\n // thumbnails, but we don't do this currently in synapse for fear of disk space.\n // As a compromise, let's switch to non-retina thumbnails only if the original\n // image is both physically too large and going to be massive to load in the\n // timeline (e.g. >1MB).\n\n var isLargerThanThumbnail = info.w > thumbWidth || info.h > thumbHeight;\n var isLargeFileSize = info.size > 1 * 1024 * 1024;\n\n if (isLargeFileSize && isLargerThanThumbnail) {\n // image is too large physically and bytewise to clutter our timeline so\n // we ask for a thumbnail, despite knowing that it will be max 800x600\n // despite us being retina (as synapse doesn't do 1600x1200 thumbs yet).\n return this.context.matrixClient.mxcUrlToHttp(content.url, thumbWidth, thumbHeight);\n } else {\n // download the original image otherwise, so we can scale it client side\n // to take pixelRatio into account.\n // ( no width/height means we want the original image)\n return this.context.matrixClient.mxcUrlToHttp(content.url);\n }\n }\n }\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n var content = this.props.mxEvent.getContent();\n if (content.file !== undefined && this.state.decryptedUrl === null) {\n var thumbnailPromise = _bluebird2.default.resolve(null);\n if (content.info && content.info.thumbnail_file) {\n thumbnailPromise = (0, _DecryptFile.decryptFile)(content.info.thumbnail_file).then(function (blob) {\n return URL.createObjectURL(blob);\n });\n }\n var decryptedBlob = void 0;\n thumbnailPromise.then(function (thumbnailUrl) {\n return (0, _DecryptFile.decryptFile)(content.file).then(function (blob) {\n decryptedBlob = blob;\n return URL.createObjectURL(blob);\n }).then(function (contentUrl) {\n if (_this2.unmounted) return;\n _this2.setState({\n decryptedUrl: contentUrl,\n decryptedThumbnailUrl: thumbnailUrl,\n decryptedBlob: decryptedBlob\n });\n });\n }).catch(function (err) {\n if (_this2.unmounted) return;\n console.warn(\"Unable to decrypt attachment: \", err);\n // Set a placeholder image when we can't decrypt the image.\n _this2.setState({\n error: err\n });\n }).done();\n }\n\n // Remember that the user wanted to show this particular image\n if (!this.state.showImage && localStorage.getItem(\"mx_ShowImage_\" + this.props.mxEvent.getId()) === \"true\") {\n this.setState({ showImage: true });\n }\n\n this._afterComponentDidMount();\n }\n\n // To be overridden by subclasses (e.g. MStickerBody) for further\n // initialisation after componentDidMount\n\n }, {\n key: '_afterComponentDidMount',\n value: function _afterComponentDidMount() {}\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unmounted = true;\n this.context.matrixClient.removeListener('sync', this.onClientSync);\n this._afterComponentWillUnmount();\n\n if (this.state.decryptedUrl) {\n URL.revokeObjectURL(this.state.decryptedUrl);\n }\n if (this.state.decryptedThumbnailUrl) {\n URL.revokeObjectURL(this.state.decryptedThumbnailUrl);\n }\n }\n\n // To be overridden by subclasses (e.g. MStickerBody) for further\n // cleanup after componentWillUnmount\n\n }, {\n key: '_afterComponentWillUnmount',\n value: function _afterComponentWillUnmount() {}\n }, {\n key: '_messageContent',\n value: function _messageContent(contentUrl, thumbUrl, content) {\n var infoWidth = void 0;\n var infoHeight = void 0;\n\n if (content && content.info && content.info.w && content.info.h) {\n infoWidth = content.info.w;\n infoHeight = content.info.h;\n } else {\n // Whilst the image loads, display nothing.\n //\n // Once loaded, use the loaded image dimensions stored in `loadedImageDimensions`.\n //\n // By doing this, the image \"pops\" into the timeline, but is still restricted\n // by the same width and height logic below.\n if (!this.state.loadedImageDimensions) {\n var imageElement = void 0;\n if (!this.state.showImage) {\n imageElement = _react2.default.createElement(HiddenImagePlaceholder, null);\n } else {\n imageElement = _react2.default.createElement('img', { style: { display: 'none' }, src: thumbUrl, ref: 'image',\n alt: content.body,\n onError: this.onImageError,\n onLoad: this.onImageLoad\n });\n }\n return this.wrapImage(contentUrl, imageElement);\n }\n infoWidth = this.state.loadedImageDimensions.naturalWidth;\n infoHeight = this.state.loadedImageDimensions.naturalHeight;\n }\n\n // The maximum height of the thumbnail as it is rendered as an \n var maxHeight = Math.min(this.props.maxImageHeight || 600, infoHeight);\n // The maximum width of the thumbnail, as dictated by its natural\n // maximum height.\n var maxWidth = infoWidth * maxHeight / infoHeight;\n\n var img = null;\n var placeholder = null;\n var gifLabel = null;\n\n // e2e image hasn't been decrypted yet\n if (content.file !== undefined && this.state.decryptedUrl === null) {\n placeholder = _react2.default.createElement('img', {\n src: require(\"../../../../res/img/spinner.gif\"),\n alt: content.body,\n width: '32',\n height: '32'\n });\n } else if (!this.state.imgLoaded) {\n // Deliberately, getSpinner is left unimplemented here, MStickerBody overides\n placeholder = this.getPlaceholder();\n }\n\n var showPlaceholder = Boolean(placeholder);\n\n if (thumbUrl && !this.state.imgError) {\n // Restrict the width of the thumbnail here, otherwise it will fill the container\n // which has the same width as the timeline\n // mx_MImageBody_thumbnail resizes img to exactly container size\n img = _react2.default.createElement('img', { className: 'mx_MImageBody_thumbnail', src: thumbUrl, ref: 'image',\n style: { maxWidth: maxWidth + \"px\" },\n alt: content.body,\n onError: this.onImageError,\n onLoad: this.onImageLoad,\n onMouseEnter: this.onImageEnter,\n onMouseLeave: this.onImageLeave });\n }\n\n if (!this.state.showImage) {\n img = _react2.default.createElement(HiddenImagePlaceholder, { style: { maxWidth: maxWidth + \"px\" } });\n showPlaceholder = false; // because we're hiding the image, so don't show the sticker icon.\n }\n\n if (this._isGif() && !_SettingsStore2.default.getValue(\"autoplayGifsAndVideos\") && !this.state.hover) {\n gifLabel = _react2.default.createElement(\n 'p',\n { className: 'mx_MImageBody_gifLabel' },\n 'GIF'\n );\n }\n\n var thumbnail = _react2.default.createElement(\n 'div',\n { className: 'mx_MImageBody_thumbnail_container', style: { maxHeight: maxHeight + \"px\" } },\n _react2.default.createElement('div', { style: { paddingBottom: 100 * infoHeight / infoWidth + '%' } }),\n showPlaceholder && _react2.default.createElement(\n 'div',\n { className: 'mx_MImageBody_thumbnail', style: {\n // Constrain width here so that spinner appears central to the loaded thumbnail\n maxWidth: infoWidth + \"px\"\n } },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MImageBody_thumbnail_spinner' },\n placeholder\n )\n ),\n _react2.default.createElement(\n 'div',\n { style: { display: !showPlaceholder ? undefined : 'none' } },\n img,\n gifLabel\n ),\n this.state.hover && this.getTooltip()\n );\n\n return this.wrapImage(contentUrl, thumbnail);\n }\n\n // Overidden by MStickerBody\n\n }, {\n key: 'wrapImage',\n value: function wrapImage(contentUrl, children) {\n return _react2.default.createElement(\n 'a',\n { href: contentUrl, onClick: this.onClick },\n children\n );\n }\n\n // Overidden by MStickerBody\n\n }, {\n key: 'getPlaceholder',\n value: function getPlaceholder() {\n // MImageBody doesn't show a placeholder whilst the image loads, (but it could do)\n return null;\n }\n\n // Overidden by MStickerBody\n\n }, {\n key: 'getTooltip',\n value: function getTooltip() {\n return null;\n }\n\n // Overidden by MStickerBody\n\n }, {\n key: 'getFileBody',\n value: function getFileBody() {\n return _react2.default.createElement(_MFileBody2.default, (0, _extends3.default)({}, this.props, { decryptedBlob: this.state.decryptedBlob }));\n }\n }, {\n key: 'render',\n value: function render() {\n var content = this.props.mxEvent.getContent();\n\n if (this.state.error !== null) {\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MImageBody', ref: 'body' },\n _react2.default.createElement('img', { src: require(\"../../../../res/img/warning.svg\"), width: '16', height: '16' }),\n (0, _languageHandler._t)(\"Error decrypting image\")\n );\n }\n\n var contentUrl = this._getContentUrl();\n var thumbUrl = void 0;\n if (this._isGif() && _SettingsStore2.default.getValue(\"autoplayGifsAndVideos\")) {\n thumbUrl = contentUrl;\n } else {\n thumbUrl = this._getThumbUrl();\n }\n\n var thumbnail = this._messageContent(contentUrl, thumbUrl, content);\n var fileBody = this.getFileBody();\n\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MImageBody', ref: 'body' },\n thumbnail,\n fileBody\n );\n }\n }]);\n return MImageBody;\n}(_react2.default.Component);\n\nMImageBody.propTypes = {\n /* the MatrixEvent to show */\n mxEvent: _propTypes2.default.object.isRequired,\n\n /* called when the image has loaded */\n onHeightChanged: _propTypes2.default.func.isRequired,\n\n /* the maximum image height to use */\n maxImageHeight: _propTypes2.default.number\n};\nMImageBody.contextTypes = {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n};\nexports.default = MImageBody;\n\nvar HiddenImagePlaceholder = exports.HiddenImagePlaceholder = function (_React$PureComponent) {\n (0, _inherits3.default)(HiddenImagePlaceholder, _React$PureComponent);\n\n function HiddenImagePlaceholder() {\n (0, _classCallCheck3.default)(this, HiddenImagePlaceholder);\n return (0, _possibleConstructorReturn3.default)(this, (HiddenImagePlaceholder.__proto__ || (0, _getPrototypeOf2.default)(HiddenImagePlaceholder)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(HiddenImagePlaceholder, [{\n key: 'render',\n value: function render() {\n var className = 'mx_HiddenImagePlaceholder';\n if (this.props.hover) className += ' mx_HiddenImagePlaceholder_hover';\n return _react2.default.createElement(\n 'div',\n { className: className },\n _react2.default.createElement(\n 'div',\n { className: 'mx_HiddenImagePlaceholder_button' },\n _react2.default.createElement('img', { src: require(\"../../../../res/img/feather-customised/eye.svg\"), width: 17, height: 12 }),\n _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"Show image\")\n )\n )\n );\n }\n }]);\n return HiddenImagePlaceholder;\n}(_react2.default.PureComponent);\n\nHiddenImagePlaceholder.propTypes = {\n hover: _propTypes2.default.bool\n};\n//# sourceMappingURL=MImageBody.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = (0, _createReactClass2.default)({\n displayName: 'MessageEvent',\n\n propTypes: {\n /* the MatrixEvent to show */\n mxEvent: _propTypes2.default.object.isRequired,\n\n /* a list of words to highlight */\n highlights: _propTypes2.default.array,\n\n /* link URL for the highlights */\n highlightLink: _propTypes2.default.string,\n\n /* should show URL previews for this event */\n showUrlPreview: _propTypes2.default.bool,\n\n /* callback called when dynamic content in events are loaded */\n onHeightChanged: _propTypes2.default.func,\n\n /* the shape of the tile, used */\n tileShape: _propTypes2.default.string,\n\n /* the maximum image height to use, if the event is an image */\n maxImageHeight: _propTypes2.default.number\n },\n\n getEventTileOps: function getEventTileOps() {\n return this.refs.body && this.refs.body.getEventTileOps ? this.refs.body.getEventTileOps() : null;\n },\n\n render: function render() {\n var UnknownBody = _index2.default.getComponent('messages.UnknownBody');\n\n var bodyTypes = {\n 'm.text': _index2.default.getComponent('messages.TextualBody'),\n 'm.notice': _index2.default.getComponent('messages.TextualBody'),\n 'm.emote': _index2.default.getComponent('messages.TextualBody'),\n 'm.image': _index2.default.getComponent('messages.MImageBody'),\n 'm.file': _index2.default.getComponent('messages.MFileBody'),\n 'm.audio': _index2.default.getComponent('messages.MAudioBody'),\n 'm.video': _index2.default.getComponent('messages.MVideoBody')\n };\n var evTypes = {\n 'm.sticker': _index2.default.getComponent('messages.MStickerBody')\n };\n\n var content = this.props.mxEvent.getContent();\n var type = this.props.mxEvent.getType();\n var msgtype = content.msgtype;\n var BodyType = UnknownBody;\n if (!this.props.mxEvent.isRedacted()) {\n // only resolve BodyType if event is not redacted\n if (type && evTypes[type]) {\n BodyType = evTypes[type];\n } else if (msgtype && bodyTypes[msgtype]) {\n BodyType = bodyTypes[msgtype];\n } else if (content.url) {\n // Fallback to MFileBody if there's a content URL\n BodyType = bodyTypes['m.file'];\n }\n }\n\n return _react2.default.createElement(BodyType, {\n ref: 'body', mxEvent: this.props.mxEvent,\n highlights: this.props.highlights,\n highlightLink: this.props.highlightLink,\n showUrlPreview: this.props.showUrlPreview,\n tileShape: this.props.tileShape,\n maxImageHeight: this.props.maxImageHeight,\n replacingEventId: this.props.replacingEventId,\n editState: this.props.editState,\n onHeightChanged: this.props.onHeightChanged });\n }\n});\n//# sourceMappingURL=MessageEvent.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _get2 = require('babel-runtime/helpers/get');\n\nvar _get3 = _interopRequireDefault(_get2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _HeaderButton = require('./HeaderButton');\n\nvar _HeaderButton2 = _interopRequireDefault(_HeaderButton);\n\nvar _HeaderButtons2 = require('./HeaderButtons');\n\nvar _HeaderButtons3 = _interopRequireDefault(_HeaderButtons2);\n\nvar _RightPanel = require('../../structures/RightPanel');\n\nvar _RightPanel2 = _interopRequireDefault(_RightPanel);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MEMBER_PHASES = [_RightPanel2.default.Phase.RoomMemberList, _RightPanel2.default.Phase.RoomMemberInfo, _RightPanel2.default.Phase.Room3pidMemberInfo]; /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n Copyright 2017 New Vector Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar RoomHeaderButtons = function (_HeaderButtons) {\n (0, _inherits3.default)(RoomHeaderButtons, _HeaderButtons);\n\n function RoomHeaderButtons(props) {\n (0, _classCallCheck3.default)(this, RoomHeaderButtons);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (RoomHeaderButtons.__proto__ || (0, _getPrototypeOf2.default)(RoomHeaderButtons)).call(this, props, _RightPanel2.default.Phase.RoomMemberList));\n\n _this._onMembersClicked = _this._onMembersClicked.bind(_this);\n _this._onFilesClicked = _this._onFilesClicked.bind(_this);\n _this._onNotificationsClicked = _this._onNotificationsClicked.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(RoomHeaderButtons, [{\n key: 'onAction',\n value: function onAction(payload) {\n (0, _get3.default)(RoomHeaderButtons.prototype.__proto__ || (0, _getPrototypeOf2.default)(RoomHeaderButtons.prototype), 'onAction', this).call(this, payload);\n if (payload.action === \"view_user\") {\n if (payload.member) {\n this.setPhase(_RightPanel2.default.Phase.RoomMemberInfo, { member: payload.member });\n } else {\n this.setPhase(_RightPanel2.default.Phase.RoomMemberList);\n }\n } else if (payload.action === \"view_room\" && !this.props.collapsedRhs) {\n this.setPhase(_RightPanel2.default.Phase.RoomMemberList);\n } else if (payload.action === \"view_3pid_invite\") {\n if (payload.event) {\n this.setPhase(_RightPanel2.default.Phase.Room3pidMemberInfo, { event: payload.event });\n } else {\n this.setPhase(_RightPanel2.default.Phase.RoomMemberList);\n }\n }\n }\n }, {\n key: '_onMembersClicked',\n value: function _onMembersClicked() {\n this.togglePhase(_RightPanel2.default.Phase.RoomMemberList, MEMBER_PHASES);\n }\n }, {\n key: '_onFilesClicked',\n value: function _onFilesClicked() {\n this.togglePhase(_RightPanel2.default.Phase.FilePanel);\n }\n }, {\n key: '_onNotificationsClicked',\n value: function _onNotificationsClicked() {\n this.togglePhase(_RightPanel2.default.Phase.NotificationPanel);\n }\n }, {\n key: 'renderButtons',\n value: function renderButtons() {\n return [_react2.default.createElement(_HeaderButton2.default, { key: 'membersButton', name: 'membersButton',\n title: (0, _languageHandler._t)('Members'),\n isHighlighted: this.isPhase(MEMBER_PHASES),\n onClick: this._onMembersClicked,\n analytics: ['Right Panel', 'Member List Button', 'click']\n }), _react2.default.createElement(_HeaderButton2.default, { key: 'filesButton', name: 'filesButton',\n title: (0, _languageHandler._t)('Files'),\n isHighlighted: this.isPhase(_RightPanel2.default.Phase.FilePanel),\n onClick: this._onFilesClicked,\n analytics: ['Right Panel', 'File List Button', 'click']\n }), _react2.default.createElement(_HeaderButton2.default, { key: 'notifsButton', name: 'notifsButton',\n title: (0, _languageHandler._t)('Notifications'),\n isHighlighted: this.isPhase(_RightPanel2.default.Phase.NotificationPanel),\n onClick: this._onNotificationsClicked,\n analytics: ['Right Panel', 'Notification List Button', 'click']\n })];\n }\n }]);\n return RoomHeaderButtons;\n}(_HeaderButtons3.default);\n\nexports.default = RoomHeaderButtons;\nmodule.exports = exports['default'];\n//# sourceMappingURL=RoomHeaderButtons.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _AppTile = require('../elements/AppTile');\n\nvar _AppTile2 = _interopRequireDefault(_AppTile);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ScalarMessaging = require('../../../ScalarMessaging');\n\nvar _ScalarMessaging2 = _interopRequireDefault(_ScalarMessaging);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _WidgetUtils = require('../../../utils/WidgetUtils');\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nvar _WidgetEchoStore = require('../../../stores/WidgetEchoStore');\n\nvar _WidgetEchoStore2 = _interopRequireDefault(_WidgetEchoStore);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _IntegrationManagers = require('../../../integrations/IntegrationManagers');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// The maximum number of widgets that can be added in a room\nvar MAX_WIDGETS = 2; /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = (0, _createReactClass2.default)({\n displayName: 'AppsDrawer',\n\n propTypes: {\n userId: _propTypes2.default.string.isRequired,\n room: _propTypes2.default.object.isRequired,\n showApps: _propTypes2.default.bool, // Should apps be rendered\n hide: _propTypes2.default.bool // If rendered, should apps drawer be visible\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n showApps: true,\n hide: false\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n apps: this._getApps()\n };\n },\n\n componentWillMount: function componentWillMount() {\n _ScalarMessaging2.default.startListening();\n _MatrixClientPeg2.default.get().on('RoomState.events', this.onRoomStateEvents);\n _WidgetEchoStore2.default.on('update', this._updateApps);\n },\n\n componentDidMount: function componentDidMount() {\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n _ScalarMessaging2.default.stopListening();\n if (_MatrixClientPeg2.default.get()) {\n _MatrixClientPeg2.default.get().removeListener('RoomState.events', this.onRoomStateEvents);\n }\n _WidgetEchoStore2.default.removeListener('update', this._updateApps);\n _dispatcher2.default.unregister(this.dispatcherRef);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n // Room has changed probably, update apps\n this._updateApps();\n },\n\n\n onAction: function onAction(action) {\n var hideWidgetKey = this.props.room.roomId + '_hide_widget_drawer';\n switch (action.action) {\n case 'appsDrawer':\n if (action.show) {\n localStorage.removeItem(hideWidgetKey);\n } else {\n // Store hidden state of widget\n // Don't show if previously hidden\n localStorage.setItem(hideWidgetKey, true);\n }\n\n break;\n }\n },\n\n onRoomStateEvents: function onRoomStateEvents(ev, state) {\n if (ev.getRoomId() !== this.props.room.roomId || ev.getType() !== 'im.vector.modular.widgets') {\n return;\n }\n this._updateApps();\n },\n\n _getApps: function _getApps() {\n var widgets = _WidgetEchoStore2.default.getEchoedRoomWidgets(this.props.room.roomId, _WidgetUtils2.default.getRoomWidgets(this.props.room));\n return widgets.map(function (ev) {\n return _WidgetUtils2.default.makeAppConfig(ev.getStateKey(), ev.getContent(), ev.sender);\n });\n },\n\n _updateApps: function _updateApps() {\n var apps = this._getApps();\n this.setState({\n apps: apps\n });\n },\n\n _canUserModify: function _canUserModify() {\n try {\n return _WidgetUtils2.default.canUserModifyWidgets(this.props.room.roomId);\n } catch (err) {\n console.error(err);\n return false;\n }\n },\n\n _launchManageIntegrations: function _launchManageIntegrations() {\n if (_SettingsStore2.default.isFeatureEnabled(\"feature_many_integration_managers\")) {\n _IntegrationManagers.IntegrationManagers.sharedInstance().openAll();\n } else {\n _IntegrationManagers.IntegrationManagers.sharedInstance().getPrimaryManager().open(this.props.room, 'add_integ');\n }\n },\n\n onClickAddWidget: function onClickAddWidget(e) {\n e.preventDefault();\n // Display a warning dialog if the max number of widgets have already been added to the room\n var apps = this._getApps();\n if (apps && apps.length >= MAX_WIDGETS) {\n var ErrorDialog = _index2.default.getComponent('dialogs.ErrorDialog');\n var errorMsg = 'The maximum number of ' + MAX_WIDGETS + ' widgets have already been added to this room.';\n console.error(errorMsg);\n _Modal2.default.createDialog(ErrorDialog, {\n title: (0, _languageHandler._t)('Cannot add any more widgets'),\n description: (0, _languageHandler._t)('The maximum permitted number of widgets have already been added to this room.')\n });\n return;\n }\n this._launchManageIntegrations();\n },\n\n render: function render() {\n var _this = this;\n\n var apps = this.state.apps.map(function (app, index, arr) {\n var capWhitelist = _WidgetUtils2.default.getCapWhitelistForAppTypeInRoomId(app.type, _this.props.room.roomId);\n\n return _react2.default.createElement(_AppTile2.default, {\n key: app.id,\n id: app.id,\n url: app.url,\n name: app.name,\n type: app.type,\n fullWidth: arr.length < 2 ? true : false,\n room: _this.props.room,\n userId: _this.props.userId,\n show: _this.props.showApps,\n creatorUserId: app.creatorUserId,\n widgetPageTitle: app.data && app.data.title ? app.data.title : '',\n waitForIframeLoad: app.waitForIframeLoad,\n whitelistCapabilities: capWhitelist\n });\n });\n\n if (apps.length == 0) {\n return _react2.default.createElement('div', null);\n }\n\n var addWidget = void 0;\n if (this.props.showApps && this._canUserModify()) {\n addWidget = _react2.default.createElement(\n _AccessibleButton2.default,\n {\n onClick: this.onClickAddWidget,\n className: this.state.apps.length < 2 ? 'mx_AddWidget_button mx_AddWidget_button_full_width' : 'mx_AddWidget_button',\n title: (0, _languageHandler._t)('Add a widget') },\n '[+] ',\n (0, _languageHandler._t)('Add a widget')\n );\n }\n\n var spinner = void 0;\n if (apps.length === 0 && _WidgetEchoStore2.default.roomHasPendingWidgets(this.props.room.roomId, _WidgetUtils2.default.getRoomWidgets(this.props.room))) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n spinner = _react2.default.createElement(Loader, null);\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_AppsDrawer' + (this.props.hide ? ' mx_AppsDrawer_hidden' : '') },\n _react2.default.createElement(\n 'div',\n { id: 'apps', className: 'mx_AppsContainer' },\n apps,\n spinner\n ),\n this._canUserModify() && addWidget\n );\n }\n});\n//# sourceMappingURL=AppsDrawer.js.map","var baseFlatten = require('./_baseFlatten'),\n map = require('./map');\n\n/**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n}\n\nmodule.exports = flatMap;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _CommandProvider = require('./CommandProvider');\n\nvar _CommandProvider2 = _interopRequireDefault(_CommandProvider);\n\nvar _CommunityProvider = require('./CommunityProvider');\n\nvar _CommunityProvider2 = _interopRequireDefault(_CommunityProvider);\n\nvar _DuckDuckGoProvider = require('./DuckDuckGoProvider');\n\nvar _DuckDuckGoProvider2 = _interopRequireDefault(_DuckDuckGoProvider);\n\nvar _RoomProvider = require('./RoomProvider');\n\nvar _RoomProvider2 = _interopRequireDefault(_RoomProvider);\n\nvar _UserProvider = require('./UserProvider');\n\nvar _UserProvider2 = _interopRequireDefault(_UserProvider);\n\nvar _EmojiProvider = require('./EmojiProvider');\n\nvar _EmojiProvider2 = _interopRequireDefault(_EmojiProvider);\n\nvar _NotifProvider = require('./NotifProvider');\n\nvar _NotifProvider2 = _interopRequireDefault(_NotifProvider);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar PROVIDERS = [_UserProvider2.default, _RoomProvider2.default, _EmojiProvider2.default, _NotifProvider2.default, _CommandProvider2.default, _CommunityProvider2.default, _DuckDuckGoProvider2.default];\n\n// Providers will get rejected if they take longer than this.\nvar PROVIDER_COMPLETION_TIMEOUT = 3000;\n\nvar Autocompleter = function () {\n function Autocompleter(room) {\n (0, _classCallCheck3.default)(this, Autocompleter);\n\n this.room = room;\n this.providers = PROVIDERS.map(function (Prov) {\n return new Prov(room);\n });\n }\n\n (0, _createClass3.default)(Autocompleter, [{\n key: 'destroy',\n value: function destroy() {\n this.providers.forEach(function (p) {\n p.destroy();\n });\n }\n }, {\n key: 'getCompletions',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(query, selection) {\n var _this = this;\n\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var completionsList;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(_bluebird2.default.all(\n // Array of inspections of promises that might timeout. Instead of allowing a\n // single timeout to reject the Promise.all, reflect each one and once they've all\n // settled, filter for the fulfilled ones\n this.providers.map(function (provider) {\n return provider.getCompletions(query, selection, force).timeout(PROVIDER_COMPLETION_TIMEOUT).reflect();\n })));\n\n case 2:\n completionsList = _context.sent;\n return _context.abrupt('return', completionsList.filter(function (inspection) {\n return inspection.isFulfilled();\n }).map(function (completionsState, i) {\n return {\n completions: completionsState.value(),\n provider: _this.providers[i],\n\n /* the currently matched \"command\" the completer tried to complete\n * we pass this through so that Autocomplete can figure out when to\n * re-show itself once hidden.\n */\n command: _this.providers[i].getCurrentCommand(query, selection, force)\n };\n }));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getCompletions(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return getCompletions;\n }()\n }]);\n return Autocompleter;\n}();\n\nexports.default = Autocompleter;\nmodule.exports = exports['default'];\n//# sourceMappingURL=Autocompleter.js.map","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar DocumentOffset = function () {\n function DocumentOffset(offset, atNodeEnd) {\n (0, _classCallCheck3.default)(this, DocumentOffset);\n\n this.offset = offset;\n this.atNodeEnd = atNodeEnd;\n }\n\n (0, _createClass3.default)(DocumentOffset, [{\n key: \"asPosition\",\n value: function asPosition(model) {\n return model.positionForOffset(this.offset, this.atNodeEnd);\n }\n }, {\n key: \"add\",\n value: function add(delta) {\n var atNodeEnd = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n return new DocumentOffset(this.offset + delta, atNodeEnd);\n }\n }]);\n return DocumentOffset;\n}();\n\nexports.default = DocumentOffset;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=offset.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar Range = function () {\n function Range(model, positionA) {\n var positionB = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : positionA;\n (0, _classCallCheck3.default)(this, Range);\n\n this._model = model;\n var bIsLarger = positionA.compare(positionB) < 0;\n this._start = bIsLarger ? positionA : positionB;\n this._end = bIsLarger ? positionB : positionA;\n }\n\n (0, _createClass3.default)(Range, [{\n key: \"moveStart\",\n value: function moveStart(delta) {\n this._start = this._start.forwardsWhile(this._model, function () {\n delta -= 1;\n return delta >= 0;\n });\n }\n }, {\n key: \"expandBackwardsWhile\",\n value: function expandBackwardsWhile(predicate) {\n this._start = this._start.backwardsWhile(this._model, predicate);\n }\n }, {\n key: \"replace\",\n\n\n /**\n * Splits the model at the range boundaries and replaces with the given parts.\n * Should be run inside a `model.transform()` callback.\n * @param {Part[]} parts the parts to replace the range with\n * @return {Number} the net amount of characters added, can be negative.\n */\n value: function replace(parts) {\n var newLength = parts.reduce(function (sum, part) {\n return sum + part.text.length;\n }, 0);\n var oldLength = 0;\n this._start.iteratePartsBetween(this._end, this._model, function (part, startIdx, endIdx) {\n oldLength += endIdx - startIdx;\n });\n this._model._replaceRange(this._start, this._end, parts);\n return newLength - oldLength;\n }\n\n /**\n * Returns a copy of the (partial) parts within the range.\n * For partial parts, only the text is adjusted to the part that intersects with the range.\n */\n\n }, {\n key: \"model\",\n get: function get() {\n return this._model;\n }\n }, {\n key: \"text\",\n get: function get() {\n var text = \"\";\n this._start.iteratePartsBetween(this._end, this._model, function (part, startIdx, endIdx) {\n var t = part.text.substring(startIdx, endIdx);\n text = text + t;\n });\n return text;\n }\n }, {\n key: \"parts\",\n get: function get() {\n var _this = this;\n\n var parts = [];\n this._start.iteratePartsBetween(this._end, this._model, function (part, startIdx, endIdx) {\n var serializedPart = part.serialize();\n serializedPart.text = part.text.substring(startIdx, endIdx);\n var newPart = _this._model.partCreator.deserializePart(serializedPart);\n parts.push(newPart);\n });\n return parts;\n }\n }, {\n key: \"length\",\n get: function get() {\n var len = 0;\n this._start.iteratePartsBetween(this._end, this._model, function (part, startIdx, endIdx) {\n len += endIdx - startIdx;\n });\n return len;\n }\n }, {\n key: \"start\",\n get: function get() {\n return this._start;\n }\n }, {\n key: \"end\",\n get: function get() {\n return this._end;\n }\n }]);\n return Range;\n}();\n\nexports.default = Range;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=range.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.mdSerialize = mdSerialize;\nexports.htmlSerializeIfNeeded = htmlSerializeIfNeeded;\nexports.textSerialize = textSerialize;\nexports.containsEmote = containsEmote;\nexports.stripEmoteCommand = stripEmoteCommand;\nexports.unescapeMessage = unescapeMessage;\n\nvar _Markdown = require(\"../Markdown\");\n\nvar _Markdown2 = _interopRequireDefault(_Markdown);\n\nvar _Permalinks = require(\"../utils/permalinks/Permalinks\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 New Vector Ltd\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction mdSerialize(model) {\n return model.parts.reduce(function (html, part) {\n switch (part.type) {\n case \"newline\":\n return html + \"\\n\";\n case \"plain\":\n case \"command\":\n case \"pill-candidate\":\n case \"at-room-pill\":\n return html + part.text;\n case \"room-pill\":\n case \"user-pill\":\n return html + (\"[\" + part.text + \"](\" + (0, _Permalinks.makeGenericPermalink)(part.resourceId) + \")\");\n }\n }, \"\");\n}\n\nfunction htmlSerializeIfNeeded(model) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$forceHTML = _ref.forceHTML,\n forceHTML = _ref$forceHTML === undefined ? false : _ref$forceHTML;\n\n var md = mdSerialize(model);\n var parser = new _Markdown2.default(md);\n if (!parser.isPlainText() || forceHTML) {\n return parser.toHTML();\n }\n}\n\nfunction textSerialize(model) {\n return model.parts.reduce(function (text, part) {\n switch (part.type) {\n case \"newline\":\n return text + \"\\n\";\n case \"plain\":\n case \"command\":\n case \"pill-candidate\":\n case \"at-room-pill\":\n return text + part.text;\n case \"room-pill\":\n case \"user-pill\":\n return text + (\"\" + part.text);\n }\n }, \"\");\n}\n\nfunction containsEmote(model) {\n var firstPart = model.parts[0];\n // part type will be \"plain\" while editing,\n // and \"command\" while composing a message.\n return firstPart && (firstPart.type === \"plain\" || firstPart.type === \"command\") && firstPart.text.startsWith(\"/me \");\n}\n\nfunction stripEmoteCommand(model) {\n // trim \"/me \"\n model = model.clone();\n model.removeText({ index: 0, offset: 0 }, 4);\n return model;\n}\n\nfunction unescapeMessage(model) {\n var _model = model,\n parts = _model.parts;\n\n if (parts.length) {\n var firstPart = parts[0];\n // only unescape \\/ to / at start of editor\n if (firstPart.type === \"plain\" && firstPart.text.startsWith(\"\\\\/\")) {\n model = model.clone();\n model.removeText({ index: 0, offset: 0 }, 1);\n }\n }\n return model;\n}\n//# sourceMappingURL=serialize.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _commonmark = require('commonmark');\n\nvar _commonmark2 = _interopRequireDefault(_commonmark);\n\nvar _escape = require('lodash/escape');\n\nvar _escape2 = _interopRequireDefault(_escape);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar ALLOWED_HTML_TAGS = ['sub', 'sup', 'del', 'u'];\n\n// These types of node are definitely text\nvar TEXT_NODES = ['text', 'softbreak', 'linebreak', 'paragraph', 'document'];\n\nfunction is_allowed_html_tag(node) {\n // Regex won't work for tags with attrs, but we only\n // allow anyway.\n var matches = /^<\\/?(.*)>$/.exec(node.literal);\n if (matches && matches.length == 2) {\n var tag = matches[1];\n return ALLOWED_HTML_TAGS.indexOf(tag) > -1;\n }\n return false;\n}\n\nfunction html_if_tag_allowed(node) {\n if (is_allowed_html_tag(node)) {\n this.lit(node.literal);\n return;\n } else {\n this.lit((0, _escape2.default)(node.literal));\n }\n}\n\n/*\n * Returns true if the parse output containing the node\n * comprises multiple block level elements (ie. lines),\n * or false if it is only a single line.\n */\nfunction is_multi_line(node) {\n var par = node;\n while (par.parent) {\n par = par.parent;\n }\n return par.firstChild != par.lastChild;\n}\n\n/**\n * Class that wraps commonmark, adding the ability to see whether\n * a given message actually uses any markdown syntax or whether\n * it's plain text.\n */\n\nvar Markdown = function () {\n function Markdown(input) {\n (0, _classCallCheck3.default)(this, Markdown);\n\n this.input = input;\n\n var parser = new _commonmark2.default.Parser();\n this.parsed = parser.parse(this.input);\n }\n\n (0, _createClass3.default)(Markdown, [{\n key: 'isPlainText',\n value: function isPlainText() {\n var walker = this.parsed.walker();\n\n var ev = void 0;\n while (ev = walker.next()) {\n var node = ev.node;\n if (TEXT_NODES.indexOf(node.type) > -1) {\n // definitely text\n continue;\n } else if (node.type == 'html_inline' || node.type == 'html_block') {\n // if it's an allowed html tag, we need to render it and therefore\n // we will need to use HTML. If it's not allowed, it's not HTML since\n // we'll just be treating it as text.\n if (is_allowed_html_tag(node)) {\n return false;\n }\n } else {\n return false;\n }\n }\n return true;\n }\n }, {\n key: 'toHTML',\n value: function toHTML() {\n var renderer = new _commonmark2.default.HtmlRenderer({\n safe: false,\n\n // Set soft breaks to hard HTML breaks: commonmark\n // puts softbreaks in for multiple lines in a blockquote,\n // so if these are just newline characters then the\n // block quote ends up all on one line\n // (https://github.com/vector-im/riot-web/issues/3154)\n softbreak: '
'\n });\n\n // Trying to strip out the wrapping

causes a lot more complication\n // than it's worth, i think. For instance, this code will go and strip\n // out any

tag (no matter where it is in the tree) which doesn't\n // contain \\n's.\n // On the flip side,

s are quite opionated and restricted on where\n // you can nest them.\n //\n // Let's try sending with

s anyway for now, though.\n\n var real_paragraph = renderer.paragraph;\n\n renderer.paragraph = function (node, entering) {\n // If there is only one top level node, just return the\n // bare text: it's a single line of text and so should be\n // 'inline', rather than unnecessarily wrapped in its own\n // p tag. If, however, we have multiple nodes, each gets\n // its own p tag to keep them as separate paragraphs.\n if (is_multi_line(node)) {\n real_paragraph.call(this, node, entering);\n }\n };\n\n renderer.html_inline = html_if_tag_allowed;\n\n renderer.html_block = function (node) {\n /*\n // as with `paragraph`, we only insert line breaks\n // if there are multiple lines in the markdown.\n const isMultiLine = is_multi_line(node);\n if (isMultiLine) this.cr();\n */\n html_if_tag_allowed.call(this, node);\n /*\n if (isMultiLine) this.cr();\n */\n };\n\n return renderer.render(this.parsed);\n }\n\n /*\n * Render the markdown message to plain text. That is, essentially\n * just remove any backslashes escaping what would otherwise be\n * markdown syntax\n * (to fix https://github.com/vector-im/riot-web/issues/2870).\n *\n * N.B. this does **NOT** render arbitrary MD to plain text - only MD\n * which has no formatting. Otherwise it emits HTML(!).\n */\n\n }, {\n key: 'toPlaintext',\n value: function toPlaintext() {\n var renderer = new _commonmark2.default.HtmlRenderer({ safe: false });\n var real_paragraph = renderer.paragraph;\n\n // The default `out` function only sends the input through an XML\n // escaping function, which causes messages to be entity encoded,\n // which we don't want in this case.\n renderer.out = function (s) {\n // The `lit` function adds a string literal to the output buffer.\n this.lit(s);\n };\n\n renderer.paragraph = function (node, entering) {\n // as with toHTML, only append lines to paragraphs if there are\n // multiple paragraphs\n if (is_multi_line(node)) {\n if (!entering && node.next) {\n this.lit('\\n\\n');\n }\n }\n };\n\n renderer.html_block = function (node) {\n this.lit(node.literal);\n if (is_multi_line(node) && node.next) this.lit('\\n\\n');\n };\n\n return renderer.render(this.parsed);\n }\n }]);\n return Markdown;\n}();\n\nexports.default = Markdown;\nmodule.exports = exports['default'];\n//# sourceMappingURL=Markdown.js.map","var encode = require(\"./lib/encode.js\"),\n decode = require(\"./lib/decode.js\");\n\nexports.decode = function(data, level) {\n return (!level || level <= 0 ? decode.XML : decode.HTML)(data);\n};\n\nexports.decodeStrict = function(data, level) {\n return (!level || level <= 0 ? decode.XML : decode.HTMLStrict)(data);\n};\n\nexports.encode = function(data, level) {\n return (!level || level <= 0 ? encode.XML : encode.HTML)(data);\n};\n\nexports.encodeXML = encode.XML;\n\nexports.encodeHTML4 = exports.encodeHTML5 = exports.encodeHTML = encode.HTML;\n\nexports.decodeXML = exports.decodeXMLStrict = decode.XML;\n\nexports.decodeHTML4 = exports.decodeHTML5 = exports.decodeHTML = decode.HTML;\n\nexports.decodeHTML4Strict = exports.decodeHTML5Strict = exports.decodeHTMLStrict = decode.HTMLStrict;\n\nexports.escape = encode.escape;\n","\"use strict\";\n\nfunction Renderer() {}\n\n/**\n * Walks the AST and calls member methods for each Node type.\n *\n * @param ast {Node} The root of the abstract syntax tree.\n */\nfunction render(ast) {\n var walker = ast.walker()\n , event\n , type;\n\n this.buffer = '';\n this.lastOut = '\\n';\n\n while((event = walker.next())) {\n type = event.node.type;\n if (this[type]) {\n this[type](event.node, event.entering);\n }\n }\n return this.buffer;\n}\n\n/**\n * Concatenate a literal string to the buffer.\n *\n * @param str {String} The string to concatenate.\n */\nfunction lit(str) {\n this.buffer += str;\n this.lastOut = str;\n}\n\n/**\n * Output a newline to the buffer.\n */\nfunction cr() {\n if (this.lastOut !== '\\n') {\n this.lit('\\n');\n }\n}\n\n/**\n * Concatenate a string to the buffer possibly escaping the content.\n *\n * Concrete renderer implementations should override this method.\n *\n * @param str {String} The string to concatenate.\n */\nfunction out(str) {\n this.lit(str);\n}\n\n/**\n * Escape a string for the target renderer.\n *\n * Abstract function that should be implemented by concrete \n * renderer implementations.\n *\n * @param str {String} The string to escape.\n */\nfunction esc(str) {\n return str;\n}\n\nRenderer.prototype.render = render;\nRenderer.prototype.out = out;\nRenderer.prototype.lit = lit;\nRenderer.prototype.cr = cr;\nRenderer.prototype.esc = esc;\n\nmodule.exports = Renderer;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nexports.findReadReceiptFromUserId = findReadReceiptFromUserId;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Given MatrixEvent containing receipts, return the first\n * read receipt from the given user ID, or null if no such\n * receipt exists.\n */\nfunction findReadReceiptFromUserId(receiptEvent, userId) {\n var receiptKeys = (0, _keys2.default)(receiptEvent.getContent());\n for (var i = 0; i < receiptKeys.length; ++i) {\n var rcpt = receiptEvent.getContent()[receiptKeys[i]];\n if (rcpt['m.read'] && rcpt['m.read'][userId]) {\n return rcpt;\n }\n }\n\n return null;\n}\n//# sourceMappingURL=Receipt.js.map","module.exports = \"img/room_replaced.80042bb.svg\";","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.encode = encode;\nexports.decode = decode;\n// to ensure markdown compatability we need to specifically encode some characters\nfunction encode(href) {\n return decodeSafe(href).trim().replace(/ /g, \"%20\").replace(/'/g, \"%27\").replace(/\\(/g, \"%28\").replace(/\\)/g, \"%29\");\n}\n\nfunction decode(href) {\n try {\n return decodeURI(href);\n } catch (e) {\n return decodeSafe(href);\n }\n}\n\n// convert hanging % characters into percentage encoded %25 as decodeURI cannot\n// handle this scenario but users may input 'invalid' urls.\nfunction decodeSafe(uri) {\n var components = uri.split(/(%(?:d0|d1)%.{2})/);\n return components.map(function (component) {\n try {\n return decodeURIComponent(component);\n } catch (e) {\n return component.replace(/%(?!\\d+)/g, \"%25\");\n }\n }).join(\"\");\n}","var baseClamp = require('./_baseClamp'),\n toNumber = require('./toNumber');\n\n/**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\nfunction clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n}\n\nmodule.exports = clamp;\n","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _MessageEvent = require('../messages/MessageEvent');\n\nvar _MessageEvent2 = _interopRequireDefault(_MessageEvent);\n\nvar _MemberAvatar = require('../avatars/MemberAvatar');\n\nvar _MemberAvatar2 = _interopRequireDefault(_MemberAvatar);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _DateUtils = require('../../../DateUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = (0, _createReactClass2.default)({\n displayName: 'PinnedEventTile',\n propTypes: {\n mxRoom: _propTypes2.default.object.isRequired,\n mxEvent: _propTypes2.default.object.isRequired,\n onUnpinned: _propTypes2.default.func\n },\n onTileClicked: function onTileClicked() {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n event_id: this.props.mxEvent.getId(),\n highlighted: true,\n room_id: this.props.mxEvent.getRoomId()\n });\n },\n onUnpinClicked: function onUnpinClicked() {\n var _this = this;\n\n var pinnedEvents = this.props.mxRoom.currentState.getStateEvents(\"m.room.pinned_events\", \"\");\n if (!pinnedEvents || !pinnedEvents.getContent().pinned) {\n // Nothing to do: already unpinned\n if (this.props.onUnpinned) this.props.onUnpinned();\n } else {\n var pinned = pinnedEvents.getContent().pinned;\n var index = pinned.indexOf(this.props.mxEvent.getId());\n if (index !== -1) {\n pinned.splice(index, 1);\n _MatrixClientPeg2.default.get().sendStateEvent(this.props.mxRoom.roomId, 'm.room.pinned_events', { pinned: pinned }, '').then(function () {\n if (_this.props.onUnpinned) _this.props.onUnpinned();\n });\n } else if (this.props.onUnpinned) this.props.onUnpinned();\n }\n },\n _canUnpin: function _canUnpin() {\n return this.props.mxRoom.currentState.mayClientSendStateEvent('m.room.pinned_events', _MatrixClientPeg2.default.get());\n },\n render: function render() {\n var sender = this.props.mxRoom.getMember(this.props.mxEvent.getSender());\n var avatarSize = 40;\n\n var unpinButton = null;\n if (this._canUnpin()) {\n unpinButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this.onUnpinClicked, className: 'mx_PinnedEventTile_unpinButton' },\n _react2.default.createElement('img', { src: require(\"../../../../res/img/cancel-red.svg\"), width: '8', height: '8', alt: (0, _languageHandler._t)('Unpin Message'), title: (0, _languageHandler._t)('Unpin Message') })\n );\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_PinnedEventTile' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_PinnedEventTile_actions' },\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_PinnedEventTile_gotoButton mx_textButton', onClick: this.onTileClicked },\n (0, _languageHandler._t)(\"Jump to message\")\n ),\n unpinButton\n ),\n _react2.default.createElement(\n 'span',\n { className: 'mx_PinnedEventTile_senderAvatar' },\n _react2.default.createElement(_MemberAvatar2.default, { member: sender, width: avatarSize, height: avatarSize })\n ),\n _react2.default.createElement(\n 'span',\n { className: 'mx_PinnedEventTile_sender' },\n sender.name\n ),\n _react2.default.createElement(\n 'span',\n { className: 'mx_PinnedEventTile_timestamp' },\n (0, _DateUtils.formatFullDate)(new Date(this.props.mxEvent.getTs()))\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_PinnedEventTile_message' },\n _react2.default.createElement(_MessageEvent2.default, { mxEvent: this.props.mxEvent, className: 'mx_PinnedEventTile_body', maxImageHeight: 150,\n onHeightChanged: function onHeightChanged() {} // we need to give this, apparently\n })\n )\n );\n }\n});\n//# sourceMappingURL=PinnedEventTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.roomShape = undefined;\nexports.getDisplayAliasForRoom = getDisplayAliasForRoom;\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _HtmlUtils = require('../../../HtmlUtils');\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction getDisplayAliasForRoom(room) {\n return room.canonicalAlias || (room.aliases ? room.aliases[0] : \"\");\n}\n\nvar roomShape = exports.roomShape = _propTypes2.default.shape({\n name: _propTypes2.default.string,\n topic: _propTypes2.default.string,\n roomId: _propTypes2.default.string,\n avatarUrl: _propTypes2.default.string,\n numJoinedMembers: _propTypes2.default.number,\n canonicalAlias: _propTypes2.default.string,\n aliases: _propTypes2.default.arrayOf(_propTypes2.default.string),\n\n worldReadable: _propTypes2.default.bool,\n guestCanJoin: _propTypes2.default.bool\n});\n\nexports.default = (0, _createReactClass2.default)({\n displayName: 'RoomDetailRow',\n\n propTypes: {\n room: roomShape,\n // passes ev, room as args\n onClick: _propTypes2.default.func,\n onMouseDown: _propTypes2.default.func\n },\n\n _linkifyTopic: function _linkifyTopic() {\n if (this.refs.topic) {\n (0, _HtmlUtils.linkifyElement)(this.refs.topic);\n }\n },\n\n componentDidMount: function componentDidMount() {\n this._linkifyTopic();\n },\n\n componentDidUpdate: function componentDidUpdate() {\n this._linkifyTopic();\n },\n\n onClick: function onClick(ev) {\n ev.preventDefault();\n if (this.props.onClick) {\n this.props.onClick(ev, this.props.room);\n }\n },\n\n onTopicClick: function onTopicClick(ev) {\n // When clicking a link in the topic, prevent the event being propagated\n // to `onClick`.\n ev.stopPropagation();\n },\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n\n var room = this.props.room;\n var name = room.name || getDisplayAliasForRoom(room) || (0, _languageHandler._t)('Unnamed room');\n\n var guestRead = room.worldReadable ? _react2.default.createElement(\n 'div',\n { className: 'mx_RoomDirectory_perm' },\n (0, _languageHandler._t)('World readable')\n ) : _react2.default.createElement('div', null);\n var guestJoin = room.guestCanJoin ? _react2.default.createElement(\n 'div',\n { className: 'mx_RoomDirectory_perm' },\n (0, _languageHandler._t)('Guests can join')\n ) : _react2.default.createElement('div', null);\n\n var perms = guestRead || guestJoin ? _react2.default.createElement(\n 'div',\n { className: 'mx_RoomDirectory_perms' },\n guestRead,\n '\\xA0',\n guestJoin\n ) : _react2.default.createElement('div', null);\n\n return _react2.default.createElement(\n 'tr',\n { key: room.roomId, onClick: this.onClick, onMouseDown: this.props.onMouseDown },\n _react2.default.createElement(\n 'td',\n { className: 'mx_RoomDirectory_roomAvatar' },\n _react2.default.createElement(BaseAvatar, { width: 24, height: 24, resizeMethod: 'crop',\n name: name, idName: name,\n url: _matrixJsSdk.ContentRepo.getHttpUriForMxc(_MatrixClientPeg2.default.get().getHomeserverUrl(), room.avatarUrl, 24, 24, \"crop\") })\n ),\n _react2.default.createElement(\n 'td',\n { className: 'mx_RoomDirectory_roomDescription' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomDirectory_name' },\n name\n ),\n '\\xA0',\n perms,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomDirectory_topic', ref: 'topic', onClick: this.onTopicClick },\n room.topic\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomDirectory_alias' },\n getDisplayAliasForRoom(room)\n )\n ),\n _react2.default.createElement(\n 'td',\n { className: 'mx_RoomDirectory_roomMemberCount' },\n room.numJoinedMembers\n )\n );\n }\n});\n//# sourceMappingURL=RoomDetailRow.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CancelButton = CancelButton;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// cancel button which is shared between room header and simple room header\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction CancelButton(props) {\n var onClick = props.onClick;\n\n\n return _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomHeader_cancelButton', onClick: onClick },\n _react2.default.createElement('img', { src: require(\"../../../../res/img/cancel.svg\"), className: 'mx_filterFlipColor',\n width: '18', height: '18', alt: (0, _languageHandler._t)(\"Cancel\") })\n );\n}\n\n/*\n * A stripped-down room header used for things like the user settings\n * and room directory.\n */\nexports.default = (0, _createReactClass2.default)({\n displayName: 'SimpleRoomHeader',\n\n propTypes: {\n title: _propTypes2.default.string,\n onCancelClick: _propTypes2.default.func,\n\n // `src` to a TintableSvg. Optional.\n icon: _propTypes2.default.string\n },\n\n render: function render() {\n var cancelButton = void 0;\n var icon = void 0;\n if (this.props.onCancelClick) {\n cancelButton = _react2.default.createElement(CancelButton, { onClick: this.props.onCancelClick });\n }\n if (this.props.icon) {\n var TintableSvg = _index2.default.getComponent('elements.TintableSvg');\n icon = _react2.default.createElement(TintableSvg, {\n className: 'mx_RoomHeader_icon', src: this.props.icon,\n width: '25', height: '25'\n });\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_wrapper' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_simpleHeader' },\n icon,\n this.props.title,\n cancelButton\n )\n )\n );\n }\n});\n//# sourceMappingURL=SimpleRoomHeader.js.map","module.exports = \"img/button-text-formatting.3818146.svg\";","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar NotificationUtils = require('./NotificationUtils');\n\nvar encodeActions = NotificationUtils.encodeActions;\n\nmodule.exports = {\n ACTION_NOTIFY: encodeActions({ notify: true }),\n ACTION_NOTIFY_DEFAULT_SOUND: encodeActions({ notify: true, sound: \"default\" }),\n ACTION_NOTIFY_RING_SOUND: encodeActions({ notify: true, sound: \"ring\" }),\n ACTION_HIGHLIGHT: encodeActions({ notify: true, highlight: true }),\n ACTION_HIGHLIGHT_DEFAULT_SOUND: encodeActions({ notify: true, sound: \"default\", highlight: true }),\n ACTION_DONT_NOTIFY: encodeActions({ notify: false }),\n ACTION_DISABLED: null\n};\n//# sourceMappingURL=StandardActions.js.map","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import PropTypes from 'prop-types';\nexport var subscriptionShape = PropTypes.shape({\n trySubscribe: PropTypes.func.isRequired,\n tryUnsubscribe: PropTypes.func.isRequired,\n notifyNestedSubs: PropTypes.func.isRequired,\n isSubscribed: PropTypes.func.isRequired\n});\nexport var storeShape = PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n});","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { Component, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport { storeShape, subscriptionShape } from '../utils/PropTypes';\nimport warning from '../utils/warning';\nvar didWarnAboutReceivingStore = false;\n\nfunction warnAboutReceivingStore() {\n if (didWarnAboutReceivingStore) {\n return;\n }\n\n didWarnAboutReceivingStore = true;\n warning(' does not support changing `store` on the fly. ' + 'It is most likely that you see this error because you updated to ' + 'Redux 2.x and React Redux 2.x which no longer hot reload reducers ' + 'automatically. See https://github.com/reduxjs/react-redux/releases/' + 'tag/v2.0.0 for the migration instructions.');\n}\n\nexport function createProvider(storeKey) {\n var _Provider$childContex;\n\n if (storeKey === void 0) {\n storeKey = 'store';\n }\n\n var subscriptionKey = storeKey + \"Subscription\";\n\n var Provider =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[storeKey] = this[storeKey], _ref[subscriptionKey] = null, _ref;\n };\n\n function Provider(props, context) {\n var _this;\n\n _this = _Component.call(this, props, context) || this;\n _this[storeKey] = props.store;\n return _this;\n }\n\n _proto.render = function render() {\n return Children.only(this.props.children);\n };\n\n return Provider;\n }(Component);\n\n if (process.env.NODE_ENV !== 'production') {\n Provider.prototype.componentWillReceiveProps = function (nextProps) {\n if (this[storeKey] !== nextProps.store) {\n warnAboutReceivingStore();\n }\n };\n }\n\n Provider.propTypes = {\n store: storeShape.isRequired,\n children: PropTypes.element.isRequired\n };\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[storeKey] = storeShape.isRequired, _Provider$childContex[subscriptionKey] = subscriptionShape, _Provider$childContex);\n return Provider;\n}\nexport default createProvider();","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","// encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\nvar CLEARED = null;\nvar nullListeners = {\n notify: function notify() {}\n};\n\nfunction createListenerCollection() {\n // the current/next pattern is copied from redux's createStore code.\n // TODO: refactor+expose that code to be reusable here?\n var current = [];\n var next = [];\n return {\n clear: function clear() {\n next = CLEARED;\n current = CLEARED;\n },\n notify: function notify() {\n var listeners = current = next;\n\n for (var i = 0; i < listeners.length; i++) {\n listeners[i]();\n }\n },\n get: function get() {\n return next;\n },\n subscribe: function subscribe(listener) {\n var isSubscribed = true;\n if (next === current) next = current.slice();\n next.push(listener);\n return function unsubscribe() {\n if (!isSubscribed || current === CLEARED) return;\n isSubscribed = false;\n if (next === current) next = current.slice();\n next.splice(next.indexOf(listener), 1);\n };\n }\n };\n}\n\nvar Subscription =\n/*#__PURE__*/\nfunction () {\n function Subscription(store, parentSub, onStateChange) {\n this.store = store;\n this.parentSub = parentSub;\n this.onStateChange = onStateChange;\n this.unsubscribe = null;\n this.listeners = nullListeners;\n }\n\n var _proto = Subscription.prototype;\n\n _proto.addNestedSub = function addNestedSub(listener) {\n this.trySubscribe();\n return this.listeners.subscribe(listener);\n };\n\n _proto.notifyNestedSubs = function notifyNestedSubs() {\n this.listeners.notify();\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.unsubscribe);\n };\n\n _proto.trySubscribe = function trySubscribe() {\n if (!this.unsubscribe) {\n this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.onStateChange) : this.store.subscribe(this.onStateChange);\n this.listeners = createListenerCollection();\n }\n };\n\n _proto.tryUnsubscribe = function tryUnsubscribe() {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n this.listeners.clear();\n this.listeners = nullListeners;\n }\n };\n\n return Subscription;\n}();\n\nexport { Subscription as default };","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport hoistStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport { Component, createElement } from 'react';\nimport { isValidElementType } from 'react-is';\nimport Subscription from '../utils/Subscription';\nimport { storeShape, subscriptionShape } from '../utils/PropTypes';\nvar hotReloadingVersion = 0;\nvar dummyState = {};\n\nfunction noop() {}\n\nfunction makeSelectorStateful(sourceSelector, store) {\n // wrap the selector in an object that tracks its results between runs.\n var selector = {\n run: function runComponentSelector(props) {\n try {\n var nextProps = sourceSelector(store.getState(), props);\n\n if (nextProps !== selector.props || selector.error) {\n selector.shouldComponentUpdate = true;\n selector.props = nextProps;\n selector.error = null;\n }\n } catch (error) {\n selector.shouldComponentUpdate = true;\n selector.error = error;\n }\n }\n };\n return selector;\n}\n\nexport default function connectAdvanced(\n/*\n selectorFactory is a func that is responsible for returning the selector function used to\n compute new props from state, props, and dispatch. For example:\n export default connectAdvanced((dispatch, options) => (state, props) => ({\n thing: state.things[props.thingId],\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n }))(YourComponent)\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n props. Do not use connectAdvanced directly without memoizing results between calls to your\n selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory, // options object:\n_ref) {\n var _contextTypes, _childContextTypes;\n\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\"]);\n\n var subscriptionKey = storeKey + 'Subscription';\n var version = hotReloadingVersion++;\n var contextTypes = (_contextTypes = {}, _contextTypes[storeKey] = storeShape, _contextTypes[subscriptionKey] = subscriptionShape, _contextTypes);\n var childContextTypes = (_childContextTypes = {}, _childContextTypes[subscriptionKey] = subscriptionShape, _childContextTypes);\n return function wrapWithConnect(WrappedComponent) {\n invariant(isValidElementType(WrappedComponent), \"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + JSON.stringify(WrappedComponent)));\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n withRef: withRef,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent // TODO Actually fix our use of componentWillReceiveProps\n\n /* eslint-disable react/no-deprecated */\n\n });\n\n var Connect =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Connect, _Component);\n\n function Connect(props, context) {\n var _this;\n\n _this = _Component.call(this, props, context) || this;\n _this.version = version;\n _this.state = {};\n _this.renderCount = 0;\n _this.store = props[storeKey] || context[storeKey];\n _this.propsMode = Boolean(props[storeKey]);\n _this.setWrappedInstance = _this.setWrappedInstance.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n invariant(_this.store, \"Could not find \\\"\" + storeKey + \"\\\" in either the context or props of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a , \") + (\"or explicitly pass \\\"\" + storeKey + \"\\\" as a prop to \\\"\" + displayName + \"\\\".\"));\n\n _this.initSelector();\n\n _this.initSubscription();\n\n return _this;\n }\n\n var _proto = Connect.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref3;\n\n // If this component received store from props, its subscription should be transparent\n // to any descendants receiving store+subscription from context; it passes along\n // subscription passed to it. Otherwise, it shadows the parent subscription, which allows\n // Connect to control ordering of notifications to flow top-down.\n var subscription = this.propsMode ? null : this.subscription;\n return _ref3 = {}, _ref3[subscriptionKey] = subscription || this.context[subscriptionKey], _ref3;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n if (!shouldHandleStateChanges) return; // componentWillMount fires during server side rendering, but componentDidMount and\n // componentWillUnmount do not. Because of this, trySubscribe happens during ...didMount.\n // Otherwise, unsubscription would never take place during SSR, causing a memory leak.\n // To handle the case where a child component may have triggered a state change by\n // dispatching an action in its componentWillMount, we have to re-run the select and maybe\n // re-render.\n\n this.subscription.trySubscribe();\n this.selector.run(this.props);\n if (this.selector.shouldComponentUpdate) this.forceUpdate();\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n this.selector.run(nextProps);\n };\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate() {\n return this.selector.shouldComponentUpdate;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.subscription) this.subscription.tryUnsubscribe();\n this.subscription = null;\n this.notifyNestedSubs = noop;\n this.store = null;\n this.selector.run = noop;\n this.selector.shouldComponentUpdate = false;\n };\n\n _proto.getWrappedInstance = function getWrappedInstance() {\n invariant(withRef, \"To access the wrapped instance, you need to specify \" + (\"{ withRef: true } in the options argument of the \" + methodName + \"() call.\"));\n return this.wrappedInstance;\n };\n\n _proto.setWrappedInstance = function setWrappedInstance(ref) {\n this.wrappedInstance = ref;\n };\n\n _proto.initSelector = function initSelector() {\n var sourceSelector = selectorFactory(this.store.dispatch, selectorFactoryOptions);\n this.selector = makeSelectorStateful(sourceSelector, this.store);\n this.selector.run(this.props);\n };\n\n _proto.initSubscription = function initSubscription() {\n if (!shouldHandleStateChanges) return; // parentSub's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n var parentSub = (this.propsMode ? this.props : this.context)[subscriptionKey];\n this.subscription = new Subscription(this.store, parentSub, this.onStateChange.bind(this)); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `this.subscription` will then be null. An\n // extra null check every change can be avoided by copying the method onto `this` and then\n // replacing it with a no-op on unmount. This can probably be avoided if Subscription's\n // listeners logic is changed to not call listeners that have been unsubscribed in the\n // middle of the notification loop.\n\n this.notifyNestedSubs = this.subscription.notifyNestedSubs.bind(this.subscription);\n };\n\n _proto.onStateChange = function onStateChange() {\n this.selector.run(this.props);\n\n if (!this.selector.shouldComponentUpdate) {\n this.notifyNestedSubs();\n } else {\n this.componentDidUpdate = this.notifyNestedSubsOnComponentDidUpdate;\n this.setState(dummyState);\n }\n };\n\n _proto.notifyNestedSubsOnComponentDidUpdate = function notifyNestedSubsOnComponentDidUpdate() {\n // `componentDidUpdate` is conditionally implemented when `onStateChange` determines it\n // needs to notify nested subs. Once called, it unimplements itself until further state\n // changes occur. Doing it this way vs having a permanent `componentDidUpdate` that does\n // a boolean check every time avoids an extra method call most of the time, resulting\n // in some perf boost.\n this.componentDidUpdate = undefined;\n this.notifyNestedSubs();\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.subscription) && this.subscription.isSubscribed();\n };\n\n _proto.addExtraProps = function addExtraProps(props) {\n if (!withRef && !renderCountProp && !(this.propsMode && this.subscription)) return props; // make a shallow copy so that fields added don't leak to the original selector.\n // this is especially important for 'ref' since that's a reference back to the component\n // instance. a singleton memoized selector would then be holding a reference to the\n // instance, preventing the instance from being garbage collected, and that would be bad\n\n var withExtras = _extends({}, props);\n\n if (withRef) withExtras.ref = this.setWrappedInstance;\n if (renderCountProp) withExtras[renderCountProp] = this.renderCount++;\n if (this.propsMode && this.subscription) withExtras[subscriptionKey] = this.subscription;\n return withExtras;\n };\n\n _proto.render = function render() {\n var selector = this.selector;\n selector.shouldComponentUpdate = false;\n\n if (selector.error) {\n throw selector.error;\n } else {\n return createElement(WrappedComponent, this.addExtraProps(selector.props));\n }\n };\n\n return Connect;\n }(Component);\n /* eslint-enable react/no-deprecated */\n\n\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = displayName;\n Connect.childContextTypes = childContextTypes;\n Connect.contextTypes = contextTypes;\n Connect.propTypes = contextTypes;\n\n if (process.env.NODE_ENV !== 'production') {\n Connect.prototype.componentWillUpdate = function componentWillUpdate() {\n var _this2 = this;\n\n // We are hot reloading!\n if (this.version !== version) {\n this.version = version;\n this.initSelector(); // If any connected descendants don't hot reload (and resubscribe in the process), their\n // listeners will be lost when we unsubscribe. Unfortunately, by copying over all\n // listeners, this does mean that the old versions of connected descendants will still be\n // notified of state changes; however, their onStateChange function is a no-op so this\n // isn't a huge deal.\n\n var oldListeners = [];\n\n if (this.subscription) {\n oldListeners = this.subscription.listeners.get();\n this.subscription.tryUnsubscribe();\n }\n\n this.initSubscription();\n\n if (shouldHandleStateChanges) {\n this.subscription.trySubscribe();\n oldListeners.forEach(function (listener) {\n return _this2.subscription.listeners.subscribe(listener);\n });\n }\n }\n };\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","var hasOwn = Object.prototype.hasOwnProperty;\n\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwn.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n// \n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n// \n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n// \n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n// \n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n// \n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"]);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\n connect is a facade over connectAdvanced. It turns its args into a compatible\n selectorFactory, which has the signature:\n\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n \n connect passes its args to connectAdvanced as options, which will in turn pass them to\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n selectorFactory returns a final props selector from its mapStateToProps,\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n mergePropsFactories, and pure args.\n\n The resulting final props selector is called by the Connect component instance whenever\n it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"]);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default createConnect();","import Provider, { createProvider } from './components/Provider';\nimport connectAdvanced from './components/connectAdvanced';\nimport connect from './connect/connect';\nexport { Provider, createProvider, connectAdvanced, connect };","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar ReactIs = require('react-is');\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\n\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[ReactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nfunction getStatics(component) {\n if (ReactIs.isMemo(component)) {\n return MEMO_STATICS;\n }\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","'use strict';\n\nvar GROUP_LEFT_TO_RIGHT,\n GROUP_RIGHT_TO_LEFT,\n EXPRESSION_LEFT_TO_RIGHT,\n EXPRESSION_RIGHT_TO_LEFT;\n\n/*\n * Character ranges of left-to-right characters.\n */\n\nGROUP_LEFT_TO_RIGHT = 'A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6' +\n '\\u00F8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF\\u200E\\u2C00-\\uFB1C' +\n '\\uFE00-\\uFE6F\\uFEFD-\\uFFFF';\n\n/*\n * Character ranges of right-to-left characters.\n */\n\nGROUP_RIGHT_TO_LEFT = '\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC';\n\n/*\n * Expression to match a left-to-right string.\n *\n * Matches the start of a string, followed by zero or\n * more non-right-to-left characters, followed by a\n * left-to-right character.\n */\n\nEXPRESSION_LEFT_TO_RIGHT = new RegExp(\n '^[^' + GROUP_RIGHT_TO_LEFT + ']*[' + GROUP_LEFT_TO_RIGHT + ']'\n);\n\n/*\n * Expression to match a right-to-left string.\n *\n * Matches the start of a string, followed by zero or\n * more non-left-to-right characters, followed by a\n * right-to-left character.\n */\n\nEXPRESSION_RIGHT_TO_LEFT = new RegExp(\n '^[^' + GROUP_LEFT_TO_RIGHT + ']*[' + GROUP_RIGHT_TO_LEFT + ']'\n);\n\n/**\n * Detect the direction of text.\n *\n * @param {string} value - value to stringify and check.\n * @return {string} - One of `\"rtl\"`, `\"ltr\"`, or\n * `\"neutral\"`.\n */\nfunction direction(value) {\n value = value.toString();\n\n if (EXPRESSION_RIGHT_TO_LEFT.test(value)) {\n return 'rtl';\n }\n\n if (EXPRESSION_LEFT_TO_RIGHT.test(value)) {\n return 'ltr';\n }\n\n return 'neutral';\n}\n\n/*\n * Expose `direction`.\n */\n\nmodule.exports = direction;\n","function isBackward(selection) {\n var startNode = selection.anchorNode;\n var startOffset = selection.anchorOffset;\n var endNode = selection.focusNode;\n var endOffset = selection.focusOffset;\n\n var position = startNode.compareDocumentPosition(endNode);\n\n return !(position === 4 || (position === 0 && startOffset < endOffset));\n}\n\nmodule.exports = isBackward;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-dom-server.browser.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom-server.browser.development.js');\n}\n","\"use strict\";\n\nrequire(\"core-js/shim\");\n\nrequire(\"regenerator-runtime/runtime\");\n\nrequire(\"core-js/fn/regexp/escape\");\n\nif (global._babelPolyfill) {\n throw new Error(\"only one instance of babel-polyfill is allowed\");\n}\nglobal._babelPolyfill = true;\n\nvar DEFINE_PROPERTY = \"defineProperty\";\nfunction define(O, key, value) {\n O[key] || Object[DEFINE_PROPERTY](O, key, {\n writable: true,\n configurable: true,\n value: value\n });\n}\n\ndefine(String.prototype, \"padLeft\", \"\".padStart);\ndefine(String.prototype, \"padRight\", \"\".padEnd);\n\n\"pop,reverse,shift,keys,values,entries,indexOf,every,some,forEach,map,filter,find,findIndex,includes,join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill\".split(\",\").forEach(function (key) {\n [][key] && define(Array, key, Function.call.bind([][key]));\n});","require('./modules/es6.symbol');\nrequire('./modules/es6.object.create');\nrequire('./modules/es6.object.define-property');\nrequire('./modules/es6.object.define-properties');\nrequire('./modules/es6.object.get-own-property-descriptor');\nrequire('./modules/es6.object.get-prototype-of');\nrequire('./modules/es6.object.keys');\nrequire('./modules/es6.object.get-own-property-names');\nrequire('./modules/es6.object.freeze');\nrequire('./modules/es6.object.seal');\nrequire('./modules/es6.object.prevent-extensions');\nrequire('./modules/es6.object.is-frozen');\nrequire('./modules/es6.object.is-sealed');\nrequire('./modules/es6.object.is-extensible');\nrequire('./modules/es6.object.assign');\nrequire('./modules/es6.object.is');\nrequire('./modules/es6.object.set-prototype-of');\nrequire('./modules/es6.object.to-string');\nrequire('./modules/es6.function.bind');\nrequire('./modules/es6.function.name');\nrequire('./modules/es6.function.has-instance');\nrequire('./modules/es6.parse-int');\nrequire('./modules/es6.parse-float');\nrequire('./modules/es6.number.constructor');\nrequire('./modules/es6.number.to-fixed');\nrequire('./modules/es6.number.to-precision');\nrequire('./modules/es6.number.epsilon');\nrequire('./modules/es6.number.is-finite');\nrequire('./modules/es6.number.is-integer');\nrequire('./modules/es6.number.is-nan');\nrequire('./modules/es6.number.is-safe-integer');\nrequire('./modules/es6.number.max-safe-integer');\nrequire('./modules/es6.number.min-safe-integer');\nrequire('./modules/es6.number.parse-float');\nrequire('./modules/es6.number.parse-int');\nrequire('./modules/es6.math.acosh');\nrequire('./modules/es6.math.asinh');\nrequire('./modules/es6.math.atanh');\nrequire('./modules/es6.math.cbrt');\nrequire('./modules/es6.math.clz32');\nrequire('./modules/es6.math.cosh');\nrequire('./modules/es6.math.expm1');\nrequire('./modules/es6.math.fround');\nrequire('./modules/es6.math.hypot');\nrequire('./modules/es6.math.imul');\nrequire('./modules/es6.math.log10');\nrequire('./modules/es6.math.log1p');\nrequire('./modules/es6.math.log2');\nrequire('./modules/es6.math.sign');\nrequire('./modules/es6.math.sinh');\nrequire('./modules/es6.math.tanh');\nrequire('./modules/es6.math.trunc');\nrequire('./modules/es6.string.from-code-point');\nrequire('./modules/es6.string.raw');\nrequire('./modules/es6.string.trim');\nrequire('./modules/es6.string.iterator');\nrequire('./modules/es6.string.code-point-at');\nrequire('./modules/es6.string.ends-with');\nrequire('./modules/es6.string.includes');\nrequire('./modules/es6.string.repeat');\nrequire('./modules/es6.string.starts-with');\nrequire('./modules/es6.string.anchor');\nrequire('./modules/es6.string.big');\nrequire('./modules/es6.string.blink');\nrequire('./modules/es6.string.bold');\nrequire('./modules/es6.string.fixed');\nrequire('./modules/es6.string.fontcolor');\nrequire('./modules/es6.string.fontsize');\nrequire('./modules/es6.string.italics');\nrequire('./modules/es6.string.link');\nrequire('./modules/es6.string.small');\nrequire('./modules/es6.string.strike');\nrequire('./modules/es6.string.sub');\nrequire('./modules/es6.string.sup');\nrequire('./modules/es6.date.now');\nrequire('./modules/es6.date.to-json');\nrequire('./modules/es6.date.to-iso-string');\nrequire('./modules/es6.date.to-string');\nrequire('./modules/es6.date.to-primitive');\nrequire('./modules/es6.array.is-array');\nrequire('./modules/es6.array.from');\nrequire('./modules/es6.array.of');\nrequire('./modules/es6.array.join');\nrequire('./modules/es6.array.slice');\nrequire('./modules/es6.array.sort');\nrequire('./modules/es6.array.for-each');\nrequire('./modules/es6.array.map');\nrequire('./modules/es6.array.filter');\nrequire('./modules/es6.array.some');\nrequire('./modules/es6.array.every');\nrequire('./modules/es6.array.reduce');\nrequire('./modules/es6.array.reduce-right');\nrequire('./modules/es6.array.index-of');\nrequire('./modules/es6.array.last-index-of');\nrequire('./modules/es6.array.copy-within');\nrequire('./modules/es6.array.fill');\nrequire('./modules/es6.array.find');\nrequire('./modules/es6.array.find-index');\nrequire('./modules/es6.array.species');\nrequire('./modules/es6.array.iterator');\nrequire('./modules/es6.regexp.constructor');\nrequire('./modules/es6.regexp.exec');\nrequire('./modules/es6.regexp.to-string');\nrequire('./modules/es6.regexp.flags');\nrequire('./modules/es6.regexp.match');\nrequire('./modules/es6.regexp.replace');\nrequire('./modules/es6.regexp.search');\nrequire('./modules/es6.regexp.split');\nrequire('./modules/es6.promise');\nrequire('./modules/es6.map');\nrequire('./modules/es6.set');\nrequire('./modules/es6.weak-map');\nrequire('./modules/es6.weak-set');\nrequire('./modules/es6.typed.array-buffer');\nrequire('./modules/es6.typed.data-view');\nrequire('./modules/es6.typed.int8-array');\nrequire('./modules/es6.typed.uint8-array');\nrequire('./modules/es6.typed.uint8-clamped-array');\nrequire('./modules/es6.typed.int16-array');\nrequire('./modules/es6.typed.uint16-array');\nrequire('./modules/es6.typed.int32-array');\nrequire('./modules/es6.typed.uint32-array');\nrequire('./modules/es6.typed.float32-array');\nrequire('./modules/es6.typed.float64-array');\nrequire('./modules/es6.reflect.apply');\nrequire('./modules/es6.reflect.construct');\nrequire('./modules/es6.reflect.define-property');\nrequire('./modules/es6.reflect.delete-property');\nrequire('./modules/es6.reflect.enumerate');\nrequire('./modules/es6.reflect.get');\nrequire('./modules/es6.reflect.get-own-property-descriptor');\nrequire('./modules/es6.reflect.get-prototype-of');\nrequire('./modules/es6.reflect.has');\nrequire('./modules/es6.reflect.is-extensible');\nrequire('./modules/es6.reflect.own-keys');\nrequire('./modules/es6.reflect.prevent-extensions');\nrequire('./modules/es6.reflect.set');\nrequire('./modules/es6.reflect.set-prototype-of');\nrequire('./modules/es7.array.includes');\nrequire('./modules/es7.array.flat-map');\nrequire('./modules/es7.array.flatten');\nrequire('./modules/es7.string.at');\nrequire('./modules/es7.string.pad-start');\nrequire('./modules/es7.string.pad-end');\nrequire('./modules/es7.string.trim-left');\nrequire('./modules/es7.string.trim-right');\nrequire('./modules/es7.string.match-all');\nrequire('./modules/es7.symbol.async-iterator');\nrequire('./modules/es7.symbol.observable');\nrequire('./modules/es7.object.get-own-property-descriptors');\nrequire('./modules/es7.object.values');\nrequire('./modules/es7.object.entries');\nrequire('./modules/es7.object.define-getter');\nrequire('./modules/es7.object.define-setter');\nrequire('./modules/es7.object.lookup-getter');\nrequire('./modules/es7.object.lookup-setter');\nrequire('./modules/es7.map.to-json');\nrequire('./modules/es7.set.to-json');\nrequire('./modules/es7.map.of');\nrequire('./modules/es7.set.of');\nrequire('./modules/es7.weak-map.of');\nrequire('./modules/es7.weak-set.of');\nrequire('./modules/es7.map.from');\nrequire('./modules/es7.set.from');\nrequire('./modules/es7.weak-map.from');\nrequire('./modules/es7.weak-set.from');\nrequire('./modules/es7.global');\nrequire('./modules/es7.system.global');\nrequire('./modules/es7.error.is-error');\nrequire('./modules/es7.math.clamp');\nrequire('./modules/es7.math.deg-per-rad');\nrequire('./modules/es7.math.degrees');\nrequire('./modules/es7.math.fscale');\nrequire('./modules/es7.math.iaddh');\nrequire('./modules/es7.math.isubh');\nrequire('./modules/es7.math.imulh');\nrequire('./modules/es7.math.rad-per-deg');\nrequire('./modules/es7.math.radians');\nrequire('./modules/es7.math.scale');\nrequire('./modules/es7.math.umulh');\nrequire('./modules/es7.math.signbit');\nrequire('./modules/es7.promise.finally');\nrequire('./modules/es7.promise.try');\nrequire('./modules/es7.reflect.define-metadata');\nrequire('./modules/es7.reflect.delete-metadata');\nrequire('./modules/es7.reflect.get-metadata');\nrequire('./modules/es7.reflect.get-metadata-keys');\nrequire('./modules/es7.reflect.get-own-metadata');\nrequire('./modules/es7.reflect.get-own-metadata-keys');\nrequire('./modules/es7.reflect.has-metadata');\nrequire('./modules/es7.reflect.has-own-metadata');\nrequire('./modules/es7.reflect.metadata');\nrequire('./modules/es7.asap');\nrequire('./modules/es7.observable');\nrequire('./modules/web.timers');\nrequire('./modules/web.immediate');\nrequire('./modules/web.dom.iterable');\nmodule.exports = require('./modules/_core');\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","module.exports = require('./_shared')('native-function-to-string', Function.toString);\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","var $export = require('./_export');\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","// 19.1.2.7 Object.getOwnPropertyNames(O)\nrequire('./_object-sap')('getOwnPropertyNames', function () {\n return require('./_object-gopn-ext').f;\n});\n","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n","// 19.1.2.17 Object.seal(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('seal', function ($seal) {\n return function seal(it) {\n return $seal && isObject(it) ? $seal(meta(it)) : it;\n };\n});\n","// 19.1.2.15 Object.preventExtensions(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('preventExtensions', function ($preventExtensions) {\n return function preventExtensions(it) {\n return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n };\n});\n","// 19.1.2.12 Object.isFrozen(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n","// 19.1.2.13 Object.isSealed(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isSealed', function ($isSealed) {\n return function isSealed(it) {\n return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n };\n});\n","// 19.1.2.11 Object.isExtensible(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isExtensible', function ($isExtensible) {\n return function isExtensible(it) {\n return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n };\n});\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","// 19.1.3.10 Object.is(value1, value2)\nvar $export = require('./_export');\n$export($export.S, 'Object', { is: require('./_same-value') });\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","'use strict';\n// 19.1.3.6 Object.prototype.toString()\nvar classof = require('./_classof');\nvar test = {};\ntest[require('./_wks')('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n require('./_redefine')(Object.prototype, 'toString', function toString() {\n return '[object ' + classof(this) + ']';\n }, true);\n}\n","// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = require('./_export');\n\n$export($export.P, 'Function', { bind: require('./_bind') });\n","var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n","'use strict';\nvar isObject = require('./_is-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar HAS_INSTANCE = require('./_wks')('hasInstance');\nvar FunctionProto = Function.prototype;\n// 19.2.3.6 Function.prototype[@@hasInstance](V)\nif (!(HAS_INSTANCE in FunctionProto)) require('./_object-dp').f(FunctionProto, HAS_INSTANCE, { value: function (O) {\n if (typeof this != 'function' || !isObject(O)) return false;\n if (!isObject(this.prototype)) return O instanceof this;\n // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:\n while (O = getPrototypeOf(O)) if (this.prototype === O) return true;\n return false;\n} });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 18.2.5 parseInt(string, radix)\n$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 18.2.4 parseFloat(string)\n$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat });\n","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n if (typeof it == 'string' && it.length > 2) {\n it = TRIM ? it.trim() : $trim(it, 3);\n var first = it.charCodeAt(0);\n var third, radix, maxCode;\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n default: return +it;\n }\n for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n code = digits.charCodeAt(i);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n $Number = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var that = this;\n return that instanceof $Number\n // check on 1..constructor(foo) case\n && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n };\n for (var keys = require('./_descriptors') ? gOPN(Base) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES6 (in case, if modules with ES6 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(Base, key = keys[j]) && !has($Number, key)) {\n dP($Number, key, gOPD(Base, key));\n }\n }\n $Number.prototype = proto;\n proto.constructor = $Number;\n require('./_redefine')(global, NUMBER, $Number);\n}\n","'use strict';\nvar $export = require('./_export');\nvar toInteger = require('./_to-integer');\nvar aNumberValue = require('./_a-number-value');\nvar repeat = require('./_string-repeat');\nvar $toFixed = 1.0.toFixed;\nvar floor = Math.floor;\nvar data = [0, 0, 0, 0, 0, 0];\nvar ERROR = 'Number.toFixed: incorrect invocation!';\nvar ZERO = '0';\n\nvar multiply = function (n, c) {\n var i = -1;\n var c2 = c;\n while (++i < 6) {\n c2 += n * data[i];\n data[i] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\nvar divide = function (n) {\n var i = 6;\n var c = 0;\n while (--i >= 0) {\n c += data[i];\n data[i] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\nvar numToString = function () {\n var i = 6;\n var s = '';\n while (--i >= 0) {\n if (s !== '' || i === 0 || data[i] !== 0) {\n var t = String(data[i]);\n s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;\n }\n } return s;\n};\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\n$export($export.P + $export.F * (!!$toFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !require('./_fails')(function () {\n // V8 ~ Android 4.3-\n $toFixed.call({});\n})), 'Number', {\n toFixed: function toFixed(fractionDigits) {\n var x = aNumberValue(this, ERROR);\n var f = toInteger(fractionDigits);\n var s = '';\n var m = ZERO;\n var e, z, j, k;\n if (f < 0 || f > 20) throw RangeError(ERROR);\n // eslint-disable-next-line no-self-compare\n if (x != x) return 'NaN';\n if (x <= -1e21 || x >= 1e21) return String(x);\n if (x < 0) {\n s = '-';\n x = -x;\n }\n if (x > 1e-21) {\n e = log(x * pow(2, 69, 1)) - 69;\n z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = f;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n m = numToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n m = numToString() + repeat.call(ZERO, f);\n }\n }\n if (f > 0) {\n k = m.length;\n m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));\n } else {\n m = s + m;\n } return m;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $fails = require('./_fails');\nvar aNumberValue = require('./_a-number-value');\nvar $toPrecision = 1.0.toPrecision;\n\n$export($export.P + $export.F * ($fails(function () {\n // IE7-\n return $toPrecision.call(1, undefined) !== '1';\n}) || !$fails(function () {\n // V8 ~ Android 4.3-\n $toPrecision.call({});\n})), 'Number', {\n toPrecision: function toPrecision(precision) {\n var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');\n return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);\n }\n});\n","// 20.1.2.1 Number.EPSILON\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","// 20.1.2.5 Number.isSafeInteger(number)\nvar $export = require('./_export');\nvar isInteger = require('./_is-integer');\nvar abs = Math.abs;\n\n$export($export.S, 'Number', {\n isSafeInteger: function isSafeInteger(number) {\n return isInteger(number) && abs(number) <= 0x1fffffffffffff;\n }\n});\n","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 20.1.2.12 Number.parseFloat(string)\n$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 20.1.2.13 Number.parseInt(string, radix)\n$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });\n","// 20.2.2.3 Math.acosh(x)\nvar $export = require('./_export');\nvar log1p = require('./_math-log1p');\nvar sqrt = Math.sqrt;\nvar $acosh = Math.acosh;\n\n$export($export.S + $export.F * !($acosh\n // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n && Math.floor($acosh(Number.MAX_VALUE)) == 710\n // Tor Browser bug: Math.acosh(Infinity) -> NaN\n && $acosh(Infinity) == Infinity\n), 'Math', {\n acosh: function acosh(x) {\n return (x = +x) < 1 ? NaN : x > 94906265.62425156\n ? Math.log(x) + Math.LN2\n : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n }\n});\n","// 20.2.2.5 Math.asinh(x)\nvar $export = require('./_export');\nvar $asinh = Math.asinh;\n\nfunction asinh(x) {\n return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));\n}\n\n// Tor Browser bug: Math.asinh(0) -> -0\n$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });\n","// 20.2.2.7 Math.atanh(x)\nvar $export = require('./_export');\nvar $atanh = Math.atanh;\n\n// Tor Browser bug: Math.atanh(-0) -> 0\n$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {\n atanh: function atanh(x) {\n return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;\n }\n});\n","// 20.2.2.9 Math.cbrt(x)\nvar $export = require('./_export');\nvar sign = require('./_math-sign');\n\n$export($export.S, 'Math', {\n cbrt: function cbrt(x) {\n return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);\n }\n});\n","// 20.2.2.11 Math.clz32(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n clz32: function clz32(x) {\n return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;\n }\n});\n","// 20.2.2.12 Math.cosh(x)\nvar $export = require('./_export');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n cosh: function cosh(x) {\n return (exp(x = +x) + exp(-x)) / 2;\n }\n});\n","// 20.2.2.14 Math.expm1(x)\nvar $export = require('./_export');\nvar $expm1 = require('./_math-expm1');\n\n$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });\n","// 20.2.2.16 Math.fround(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { fround: require('./_math-fround') });\n","// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])\nvar $export = require('./_export');\nvar abs = Math.abs;\n\n$export($export.S, 'Math', {\n hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * Math.sqrt(sum);\n }\n});\n","// 20.2.2.18 Math.imul(x, y)\nvar $export = require('./_export');\nvar $imul = Math.imul;\n\n// some WebKit versions fails with big numbers, some has wrong arity\n$export($export.S + $export.F * require('./_fails')(function () {\n return $imul(0xffffffff, 5) != -5 || $imul.length != 2;\n}), 'Math', {\n imul: function imul(x, y) {\n var UINT16 = 0xffff;\n var xn = +x;\n var yn = +y;\n var xl = UINT16 & xn;\n var yl = UINT16 & yn;\n return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n }\n});\n","// 20.2.2.21 Math.log10(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log10: function log10(x) {\n return Math.log(x) * Math.LOG10E;\n }\n});\n","// 20.2.2.20 Math.log1p(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { log1p: require('./_math-log1p') });\n","// 20.2.2.22 Math.log2(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log2: function log2(x) {\n return Math.log(x) / Math.LN2;\n }\n});\n","// 20.2.2.28 Math.sign(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { sign: require('./_math-sign') });\n","// 20.2.2.30 Math.sinh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n// V8 near Chromium 38 has a problem with very small numbers\n$export($export.S + $export.F * require('./_fails')(function () {\n return !Math.sinh(-2e-17) != -2e-17;\n}), 'Math', {\n sinh: function sinh(x) {\n return Math.abs(x = +x) < 1\n ? (expm1(x) - expm1(-x)) / 2\n : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);\n }\n});\n","// 20.2.2.33 Math.tanh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n tanh: function tanh(x) {\n var a = expm1(x = +x);\n var b = expm1(-x);\n return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n }\n});\n","// 20.2.2.34 Math.trunc(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n trunc: function trunc(it) {\n return (it > 0 ? Math.floor : Math.ceil)(it);\n }\n});\n","var $export = require('./_export');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n // 21.1.2.2 String.fromCodePoint(...codePoints)\n fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n var res = [];\n var aLen = arguments.length;\n var i = 0;\n var code;\n while (aLen > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n res.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n );\n } return res.join('');\n }\n});\n","var $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\n\n$export($export.S, 'String', {\n // 21.1.2.4 String.raw(callSite, ...substitutions)\n raw: function raw(callSite) {\n var tpl = toIObject(callSite.raw);\n var len = toLength(tpl.length);\n var aLen = arguments.length;\n var res = [];\n var i = 0;\n while (len > i) {\n res.push(String(tpl[i++]));\n if (i < aLen) res.push(String(arguments[i]));\n } return res.join('');\n }\n});\n","'use strict';\n// 21.1.3.25 String.prototype.trim()\nrequire('./_string-trim')('trim', function ($trim) {\n return function trim() {\n return $trim(this, 3);\n };\n});\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar $export = require('./_export');\nvar $at = require('./_string-at')(false);\n$export($export.P, 'String', {\n // 21.1.3.3 String.prototype.codePointAt(pos)\n codePointAt: function codePointAt(pos) {\n return $at(this, pos);\n }\n});\n","// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar ENDS_WITH = 'endsWith';\nvar $endsWith = ''[ENDS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(ENDS_WITH), 'String', {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = context(this, searchString, ENDS_WITH);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);\n var search = String(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $export = require('./_export');\n\n$export($export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: require('./_string-repeat')\n});\n","// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","'use strict';\n// B.2.3.2 String.prototype.anchor(name)\nrequire('./_string-html')('anchor', function (createHTML) {\n return function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n };\n});\n","'use strict';\n// B.2.3.3 String.prototype.big()\nrequire('./_string-html')('big', function (createHTML) {\n return function big() {\n return createHTML(this, 'big', '', '');\n };\n});\n","'use strict';\n// B.2.3.4 String.prototype.blink()\nrequire('./_string-html')('blink', function (createHTML) {\n return function blink() {\n return createHTML(this, 'blink', '', '');\n };\n});\n","'use strict';\n// B.2.3.5 String.prototype.bold()\nrequire('./_string-html')('bold', function (createHTML) {\n return function bold() {\n return createHTML(this, 'b', '', '');\n };\n});\n","'use strict';\n// B.2.3.6 String.prototype.fixed()\nrequire('./_string-html')('fixed', function (createHTML) {\n return function fixed() {\n return createHTML(this, 'tt', '', '');\n };\n});\n","'use strict';\n// B.2.3.7 String.prototype.fontcolor(color)\nrequire('./_string-html')('fontcolor', function (createHTML) {\n return function fontcolor(color) {\n return createHTML(this, 'font', 'color', color);\n };\n});\n","'use strict';\n// B.2.3.8 String.prototype.fontsize(size)\nrequire('./_string-html')('fontsize', function (createHTML) {\n return function fontsize(size) {\n return createHTML(this, 'font', 'size', size);\n };\n});\n","'use strict';\n// B.2.3.9 String.prototype.italics()\nrequire('./_string-html')('italics', function (createHTML) {\n return function italics() {\n return createHTML(this, 'i', '', '');\n };\n});\n","'use strict';\n// B.2.3.10 String.prototype.link(url)\nrequire('./_string-html')('link', function (createHTML) {\n return function link(url) {\n return createHTML(this, 'a', 'href', url);\n };\n});\n","'use strict';\n// B.2.3.11 String.prototype.small()\nrequire('./_string-html')('small', function (createHTML) {\n return function small() {\n return createHTML(this, 'small', '', '');\n };\n});\n","'use strict';\n// B.2.3.12 String.prototype.strike()\nrequire('./_string-html')('strike', function (createHTML) {\n return function strike() {\n return createHTML(this, 'strike', '', '');\n };\n});\n","'use strict';\n// B.2.3.13 String.prototype.sub()\nrequire('./_string-html')('sub', function (createHTML) {\n return function sub() {\n return createHTML(this, 'sub', '', '');\n };\n});\n","'use strict';\n// B.2.3.14 String.prototype.sup()\nrequire('./_string-html')('sup', function (createHTML) {\n return function sup() {\n return createHTML(this, 'sup', '', '');\n };\n});\n","// 20.3.3.1 / 15.9.4.4 Date.now()\nvar $export = require('./_export');\n\n$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\n\n$export($export.P + $export.F * require('./_fails')(function () {\n return new Date(NaN).toJSON() !== null\n || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n}), 'Date', {\n // eslint-disable-next-line no-unused-vars\n toJSON: function toJSON(key) {\n var O = toObject(this);\n var pv = toPrimitive(O);\n return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n }\n});\n","// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar $export = require('./_export');\nvar toISOString = require('./_date-to-iso-string');\n\n// PhantomJS / old WebKit has a broken implementations\n$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {\n toISOString: toISOString\n});\n","'use strict';\n// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar fails = require('./_fails');\nvar getTime = Date.prototype.getTime;\nvar $toISOString = Date.prototype.toISOString;\n\nvar lz = function (num) {\n return num > 9 ? num : '0' + num;\n};\n\n// PhantomJS / old WebKit has a broken implementations\nmodule.exports = (fails(function () {\n return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n $toISOString.call(new Date(NaN));\n})) ? function toISOString() {\n if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');\n var d = this;\n var y = d.getUTCFullYear();\n var m = d.getUTCMilliseconds();\n var s = y < 0 ? '-' : y > 9999 ? '+' : '';\n return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +\n '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +\n 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +\n ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';\n} : $toISOString;\n","var DateProto = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar $toString = DateProto[TO_STRING];\nvar getTime = DateProto.getTime;\nif (new Date(NaN) + '' != INVALID_DATE) {\n require('./_redefine')(DateProto, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? $toString.call(this) : INVALID_DATE;\n });\n}\n","var TO_PRIMITIVE = require('./_wks')('toPrimitive');\nvar proto = Date.prototype;\n\nif (!(TO_PRIMITIVE in proto)) require('./_hide')(proto, TO_PRIMITIVE, require('./_date-to-primitive'));\n","'use strict';\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\nvar NUMBER = 'number';\n\nmodule.exports = function (hint) {\n if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint');\n return toPrimitive(anObject(this), hint != NUMBER);\n};\n","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar createProperty = require('./_create-property');\n\n// WebKit Array.of isn't generic\n$export($export.S + $export.F * require('./_fails')(function () {\n function F() { /* empty */ }\n return !(Array.of.call(F) instanceof F);\n}), 'Array', {\n // 22.1.2.3 Array.of( ...items)\n of: function of(/* ...args */) {\n var index = 0;\n var aLen = arguments.length;\n var result = new (typeof this == 'function' ? this : Array)(aLen);\n while (aLen > index) createProperty(result, index, arguments[index++]);\n result.length = aLen;\n return result;\n }\n});\n","'use strict';\n// 22.1.3.13 Array.prototype.join(separator)\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar arrayJoin = [].join;\n\n// fallback for not array-like strings\n$export($export.P + $export.F * (require('./_iobject') != Object || !require('./_strict-method')(arrayJoin)), 'Array', {\n join: function join(separator) {\n return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar html = require('./_html');\nvar cof = require('./_cof');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar arraySlice = [].slice;\n\n// fallback for not array-like ES3 strings and DOM objects\n$export($export.P + $export.F * require('./_fails')(function () {\n if (html) arraySlice.call(html);\n}), 'Array', {\n slice: function slice(begin, end) {\n var len = toLength(this.length);\n var klass = cof(this);\n end = end === undefined ? len : end;\n if (klass == 'Array') return arraySlice.call(this, begin, end);\n var start = toAbsoluteIndex(begin, len);\n var upTo = toAbsoluteIndex(end, len);\n var size = toLength(upTo - start);\n var cloned = new Array(size);\n var i = 0;\n for (; i < size; i++) cloned[i] = klass == 'String'\n ? this.charAt(start + i)\n : this[start + i];\n return cloned;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n // IE8-\n test.sort(undefined);\n}) || !fails(function () {\n // V8 bug\n test.sort(null);\n // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n // 22.1.3.25 Array.prototype.sort(comparefn)\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? $sort.call(toObject(this))\n : $sort.call(toObject(this), aFunction(comparefn));\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\n});\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $filter = require('./_array-methods')(2);\n\n$export($export.P + $export.F * !require('./_strict-method')([].filter, true), 'Array', {\n // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $some = require('./_array-methods')(3);\n\n$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {\n // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $every = require('./_array-methods')(4);\n\n$export($export.P + $export.F * !require('./_strict-method')([].every, true), 'Array', {\n // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduce, true), 'Array', {\n // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], false);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduceRight, true), 'Array', {\n // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])\n reduceRight: function reduceRight(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], true);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $indexOf = require('./_array-includes')(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? $native.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar $native = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0;\n var O = toIObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;\n return -1;\n }\n});\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { copyWithin: require('./_array-copy-within') });\n\nrequire('./_add-to-unscopables')('copyWithin');\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","require('./_set-species')('Array');\n","var global = require('./_global');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar dP = require('./_object-dp').f;\nvar gOPN = require('./_object-gopn').f;\nvar isRegExp = require('./_is-regexp');\nvar $flags = require('./_flags');\nvar $RegExp = global.RegExp;\nvar Base = $RegExp;\nvar proto = $RegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n// \"new\" creates a new object, old webkit buggy here\nvar CORRECT_NEW = new $RegExp(re1) !== re1;\n\nif (require('./_descriptors') && (!CORRECT_NEW || require('./_fails')(function () {\n re2[require('./_wks')('match')] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';\n}))) {\n $RegExp = function RegExp(p, f) {\n var tiRE = this instanceof $RegExp;\n var piRE = isRegExp(p);\n var fiU = f === undefined;\n return !tiRE && piRE && p.constructor === $RegExp && fiU ? p\n : inheritIfRequired(CORRECT_NEW\n ? new Base(piRE && !fiU ? p.source : p, f)\n : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)\n , tiRE ? this : proto, $RegExp);\n };\n var proxy = function (key) {\n key in $RegExp || dP($RegExp, key, {\n configurable: true,\n get: function () { return Base[key]; },\n set: function (it) { Base[key] = it; }\n });\n };\n for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);\n proto.constructor = $RegExp;\n $RegExp.prototype = proto;\n require('./_redefine')(global, 'RegExp', $RegExp);\n}\n\nrequire('./_set-species')('RegExp');\n","'use strict';\nrequire('./es6.regexp.flags');\nvar anObject = require('./_an-object');\nvar $flags = require('./_flags');\nvar DESCRIPTORS = require('./_descriptors');\nvar TO_STRING = 'toString';\nvar $toString = /./[TO_STRING];\n\nvar define = function (fn) {\n require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);\n};\n\n// 21.2.5.14 RegExp.prototype.toString()\nif (require('./_fails')(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {\n define(function toString() {\n var R = anObject(this);\n return '/'.concat(R.source, '/',\n 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);\n });\n// FF44- RegExp#toString has a wrong name\n} else if ($toString.name != TO_STRING) {\n define(function toString() {\n return $toString.call(this);\n });\n}\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative($match, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n if (!rx.global) return regExpExec(rx, S);\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative($replace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n results.push(result);\n if (!global) break;\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return $replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar sameValue = require('./_same-value');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@search logic\nrequire('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[SEARCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative($search, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","'use strict';\n\nvar isRegExp = require('./_is-regexp');\nvar anObject = require('./_an-object');\nvar speciesConstructor = require('./_species-constructor');\nvar advanceStringIndex = require('./_advance-string-index');\nvar toLength = require('./_to-length');\nvar callRegExpExec = require('./_regexp-exec-abstract');\nvar regexpExec = require('./_regexp-exec');\nvar fails = require('./_fails');\nvar $min = Math.min;\nvar $push = [].push;\nvar $SPLIT = 'split';\nvar LENGTH = 'length';\nvar LAST_INDEX = 'lastIndex';\nvar MAX_UINT32 = 0xffffffff;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return $split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy[LAST_INDEX];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);\n };\n } else {\n internalSplit = $split;\n }\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = defined(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n});\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","'use strict';\nvar weak = require('./_collection-weak');\nvar validate = require('./_validate-collection');\nvar WEAK_SET = 'WeakSet';\n\n// 23.4 WeakSet Objects\nrequire('./_collection')(WEAK_SET, function (get) {\n return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return weak.def(validate(this, WEAK_SET), value, true);\n }\n}, weak, false, true);\n","'use strict';\nvar $export = require('./_export');\nvar $typed = require('./_typed');\nvar buffer = require('./_typed-buffer');\nvar anObject = require('./_an-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar isObject = require('./_is-object');\nvar ArrayBuffer = require('./_global').ArrayBuffer;\nvar speciesConstructor = require('./_species-constructor');\nvar $ArrayBuffer = buffer.ArrayBuffer;\nvar $DataView = buffer.DataView;\nvar $isView = $typed.ABV && ArrayBuffer.isView;\nvar $slice = $ArrayBuffer.prototype.slice;\nvar VIEW = $typed.VIEW;\nvar ARRAY_BUFFER = 'ArrayBuffer';\n\n$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });\n\n$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {\n // 24.1.3.1 ArrayBuffer.isView(arg)\n isView: function isView(it) {\n return $isView && $isView(it) || isObject(it) && VIEW in it;\n }\n});\n\n$export($export.P + $export.U + $export.F * require('./_fails')(function () {\n return !new $ArrayBuffer(2).slice(1, undefined).byteLength;\n}), ARRAY_BUFFER, {\n // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)\n slice: function slice(start, end) {\n if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix\n var len = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, len);\n var fin = toAbsoluteIndex(end === undefined ? len : end, len);\n var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(fin - first));\n var viewS = new $DataView(this);\n var viewT = new $DataView(result);\n var index = 0;\n while (first < fin) {\n viewT.setUint8(index++, viewS.getUint8(first++));\n } return result;\n }\n});\n\nrequire('./_set-species')(ARRAY_BUFFER);\n","var $export = require('./_export');\n$export($export.G + $export.W + $export.F * !require('./_typed').ABV, {\n DataView: require('./_typed-buffer').DataView\n});\n","require('./_typed-array')('Int8', 1, function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n","require('./_typed-array')('Int16', 2, function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint16', 2, function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int32', 4, function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint32', 4, function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float64', 8, function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar rApply = (require('./_global').Reflect || {}).apply;\nvar fApply = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !require('./_fails')(function () {\n rApply(function () { /* empty */ });\n}), 'Reflect', {\n apply: function apply(target, thisArgument, argumentsList) {\n var T = aFunction(target);\n var L = anObject(argumentsList);\n return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n }\n});\n","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)\nvar dP = require('./_object-dp');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\n$export($export.S + $export.F * require('./_fails')(function () {\n // eslint-disable-next-line no-undef\n Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });\n}), 'Reflect', {\n defineProperty: function defineProperty(target, propertyKey, attributes) {\n anObject(target);\n propertyKey = toPrimitive(propertyKey, true);\n anObject(attributes);\n try {\n dP.f(target, propertyKey, attributes);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.4 Reflect.deleteProperty(target, propertyKey)\nvar $export = require('./_export');\nvar gOPD = require('./_object-gopd').f;\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var desc = gOPD(anObject(target), propertyKey);\n return desc && !desc.configurable ? false : delete target[propertyKey];\n }\n});\n","'use strict';\n// 26.1.5 Reflect.enumerate(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar Enumerate = function (iterated) {\n this._t = anObject(iterated); // target\n this._i = 0; // next index\n var keys = this._k = []; // keys\n var key;\n for (key in iterated) keys.push(key);\n};\nrequire('./_iter-create')(Enumerate, 'Object', function () {\n var that = this;\n var keys = that._k;\n var key;\n do {\n if (that._i >= keys.length) return { value: undefined, done: true };\n } while (!((key = keys[that._i++]) in that._t));\n return { value: key, done: false };\n});\n\n$export($export.S, 'Reflect', {\n enumerate: function enumerate(target) {\n return new Enumerate(target);\n }\n});\n","// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n","// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)\nvar gOPD = require('./_object-gopd');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n return gOPD.f(anObject(target), propertyKey);\n }\n});\n","// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = require('./_export');\nvar getProto = require('./_object-gpo');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getPrototypeOf: function getPrototypeOf(target) {\n return getProto(anObject(target));\n }\n});\n","// 26.1.9 Reflect.has(target, propertyKey)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', {\n has: function has(target, propertyKey) {\n return propertyKey in target;\n }\n});\n","// 26.1.10 Reflect.isExtensible(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $isExtensible = Object.isExtensible;\n\n$export($export.S, 'Reflect', {\n isExtensible: function isExtensible(target) {\n anObject(target);\n return $isExtensible ? $isExtensible(target) : true;\n }\n});\n","// 26.1.11 Reflect.ownKeys(target)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', { ownKeys: require('./_own-keys') });\n","// 26.1.12 Reflect.preventExtensions(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $preventExtensions = Object.preventExtensions;\n\n$export($export.S, 'Reflect', {\n preventExtensions: function preventExtensions(target) {\n anObject(target);\n try {\n if ($preventExtensions) $preventExtensions(target);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])\nvar dP = require('./_object-dp');\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar createDesc = require('./_property-desc');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\n\nfunction set(target, propertyKey, V /* , receiver */) {\n var receiver = arguments.length < 4 ? target : arguments[3];\n var ownDesc = gOPD.f(anObject(target), propertyKey);\n var existingDescriptor, proto;\n if (!ownDesc) {\n if (isObject(proto = getPrototypeOf(target))) {\n return set(proto, propertyKey, V, receiver);\n }\n ownDesc = createDesc(0);\n }\n if (has(ownDesc, 'value')) {\n if (ownDesc.writable === false || !isObject(receiver)) return false;\n if (existingDescriptor = gOPD.f(receiver, propertyKey)) {\n if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;\n existingDescriptor.value = V;\n dP.f(receiver, propertyKey, existingDescriptor);\n } else dP.f(receiver, propertyKey, createDesc(0, V));\n return true;\n }\n return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);\n}\n\n$export($export.S, 'Reflect', { set: set });\n","// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = require('./_export');\nvar setProto = require('./_set-proto');\n\nif (setProto) $export($export.S, 'Reflect', {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n setProto.check(target, proto);\n try {\n setProto.set(target, proto);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap\nvar $export = require('./_export');\nvar flattenIntoArray = require('./_flatten-into-array');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar aFunction = require('./_a-function');\nvar arraySpeciesCreate = require('./_array-species-create');\n\n$export($export.P, 'Array', {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen, A;\n aFunction(callbackfn);\n sourceLen = toLength(O.length);\n A = arraySpeciesCreate(O, 0);\n flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments[1]);\n return A;\n }\n});\n\nrequire('./_add-to-unscopables')('flatMap');\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatten\nvar $export = require('./_export');\nvar flattenIntoArray = require('./_flatten-into-array');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar arraySpeciesCreate = require('./_array-species-create');\n\n$export($export.P, 'Array', {\n flatten: function flatten(/* depthArg = 1 */) {\n var depthArg = arguments[0];\n var O = toObject(this);\n var sourceLen = toLength(O.length);\n var A = arraySpeciesCreate(O, 0);\n flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg));\n return A;\n }\n});\n\nrequire('./_add-to-unscopables')('flatten');\n","'use strict';\n// https://github.com/mathiasbynens/String.prototype.at\nvar $export = require('./_export');\nvar $at = require('./_string-at')(true);\n\n$export($export.P, 'String', {\n at: function at(pos) {\n return $at(this, pos);\n }\n});\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\nvar WEBKIT_BUG = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n$export($export.P + $export.F * WEBKIT_BUG, 'String', {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n});\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\nvar WEBKIT_BUG = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n$export($export.P + $export.F * WEBKIT_BUG, 'String', {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n }\n});\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimLeft', function ($trim) {\n return function trimLeft() {\n return $trim(this, 1);\n };\n}, 'trimStart');\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimRight', function ($trim) {\n return function trimRight() {\n return $trim(this, 2);\n };\n}, 'trimEnd');\n","'use strict';\n// https://tc39.github.io/String.prototype.matchAll/\nvar $export = require('./_export');\nvar defined = require('./_defined');\nvar toLength = require('./_to-length');\nvar isRegExp = require('./_is-regexp');\nvar getFlags = require('./_flags');\nvar RegExpProto = RegExp.prototype;\n\nvar $RegExpStringIterator = function (regexp, string) {\n this._r = regexp;\n this._s = string;\n};\n\nrequire('./_iter-create')($RegExpStringIterator, 'RegExp String', function next() {\n var match = this._r.exec(this._s);\n return { value: match, done: match === null };\n});\n\n$export($export.P, 'String', {\n matchAll: function matchAll(regexp) {\n defined(this);\n if (!isRegExp(regexp)) throw TypeError(regexp + ' is not a regexp!');\n var S = String(this);\n var flags = 'flags' in RegExpProto ? String(regexp.flags) : getFlags.call(regexp);\n var rx = new RegExp(regexp.source, ~flags.indexOf('g') ? flags : 'g' + flags);\n rx.lastIndex = toLength(regexp.lastIndex);\n return new $RegExpStringIterator(rx, S);\n }\n});\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar aFunction = require('./_a-function');\nvar $defineProperty = require('./_object-dp');\n\n// B.2.2.2 Object.prototype.__defineGetter__(P, getter)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n __defineGetter__: function __defineGetter__(P, getter) {\n $defineProperty.f(toObject(this), P, { get: aFunction(getter), enumerable: true, configurable: true });\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar aFunction = require('./_a-function');\nvar $defineProperty = require('./_object-dp');\n\n// B.2.2.3 Object.prototype.__defineSetter__(P, setter)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n __defineSetter__: function __defineSetter__(P, setter) {\n $defineProperty.f(toObject(this), P, { set: aFunction(setter), enumerable: true, configurable: true });\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\nvar getPrototypeOf = require('./_object-gpo');\nvar getOwnPropertyDescriptor = require('./_object-gopd').f;\n\n// B.2.2.4 Object.prototype.__lookupGetter__(P)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n __lookupGetter__: function __lookupGetter__(P) {\n var O = toObject(this);\n var K = toPrimitive(P, true);\n var D;\n do {\n if (D = getOwnPropertyDescriptor(O, K)) return D.get;\n } while (O = getPrototypeOf(O));\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\nvar getPrototypeOf = require('./_object-gpo');\nvar getOwnPropertyDescriptor = require('./_object-gopd').f;\n\n// B.2.2.5 Object.prototype.__lookupSetter__(P)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n __lookupSetter__: function __lookupSetter__(P) {\n var O = toObject(this);\n var K = toPrimitive(P, true);\n var D;\n do {\n if (D = getOwnPropertyDescriptor(O, K)) return D.set;\n } while (O = getPrototypeOf(O));\n }\n});\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Map', { toJSON: require('./_collection-to-json')('Map') });\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Set', { toJSON: require('./_collection-to-json')('Set') });\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of\nrequire('./_set-collection-of')('Map');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of\nrequire('./_set-collection-of')('Set');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of\nrequire('./_set-collection-of')('WeakMap');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.of\nrequire('./_set-collection-of')('WeakSet');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from\nrequire('./_set-collection-from')('Map');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from\nrequire('./_set-collection-from')('Set');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from\nrequire('./_set-collection-from')('WeakMap');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.from\nrequire('./_set-collection-from')('WeakSet');\n","// https://github.com/tc39/proposal-global\nvar $export = require('./_export');\n\n$export($export.G, { global: require('./_global') });\n","// https://github.com/tc39/proposal-global\nvar $export = require('./_export');\n\n$export($export.S, 'System', { global: require('./_global') });\n","// https://github.com/ljharb/proposal-is-error\nvar $export = require('./_export');\nvar cof = require('./_cof');\n\n$export($export.S, 'Error', {\n isError: function isError(it) {\n return cof(it) === 'Error';\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n clamp: function clamp(x, lower, upper) {\n return Math.min(upper, Math.max(lower, x));\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { DEG_PER_RAD: Math.PI / 180 });\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\nvar RAD_PER_DEG = 180 / Math.PI;\n\n$export($export.S, 'Math', {\n degrees: function degrees(radians) {\n return radians * RAD_PER_DEG;\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\nvar scale = require('./_math-scale');\nvar fround = require('./_math-fround');\n\n$export($export.S, 'Math', {\n fscale: function fscale(x, inLow, inHigh, outLow, outHigh) {\n return fround(scale(x, inLow, inHigh, outLow, outHigh));\n }\n});\n","// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n iaddh: function iaddh(x0, x1, y0, y1) {\n var $x0 = x0 >>> 0;\n var $x1 = x1 >>> 0;\n var $y0 = y0 >>> 0;\n return $x1 + (y1 >>> 0) + (($x0 & $y0 | ($x0 | $y0) & ~($x0 + $y0 >>> 0)) >>> 31) | 0;\n }\n});\n","// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n isubh: function isubh(x0, x1, y0, y1) {\n var $x0 = x0 >>> 0;\n var $x1 = x1 >>> 0;\n var $y0 = y0 >>> 0;\n return $x1 - (y1 >>> 0) - ((~$x0 & $y0 | ~($x0 ^ $y0) & $x0 - $y0 >>> 0) >>> 31) | 0;\n }\n});\n","// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n imulh: function imulh(u, v) {\n var UINT16 = 0xffff;\n var $u = +u;\n var $v = +v;\n var u0 = $u & UINT16;\n var v0 = $v & UINT16;\n var u1 = $u >> 16;\n var v1 = $v >> 16;\n var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);\n return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >> 16);\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { RAD_PER_DEG: 180 / Math.PI });\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\nvar DEG_PER_RAD = Math.PI / 180;\n\n$export($export.S, 'Math', {\n radians: function radians(degrees) {\n return degrees * DEG_PER_RAD;\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { scale: require('./_math-scale') });\n","// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n umulh: function umulh(u, v) {\n var UINT16 = 0xffff;\n var $u = +u;\n var $v = +v;\n var u0 = $u & UINT16;\n var v0 = $v & UINT16;\n var u1 = $u >>> 16;\n var v1 = $v >>> 16;\n var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);\n return u1 * v1 + (t >>> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >>> 16);\n }\n});\n","// http://jfbastien.github.io/papers/Math.signbit.html\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { signbit: function signbit(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) != x ? x : x == 0 ? 1 / x == Infinity : x > 0;\n} });\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar toMetaKey = metadata.key;\nvar ordinaryDefineOwnMetadata = metadata.set;\n\nmetadata.exp({ defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey) {\n ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar toMetaKey = metadata.key;\nvar getOrCreateMetadataMap = metadata.map;\nvar store = metadata.store;\n\nmetadata.exp({ deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2]);\n var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);\n if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false;\n if (metadataMap.size) return true;\n var targetMetadata = store.get(target);\n targetMetadata['delete'](targetKey);\n return !!targetMetadata.size || store['delete'](target);\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nvar ordinaryGetMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;\n};\n\nmetadata.exp({ getMetadata: function getMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var Set = require('./es6.set');\nvar from = require('./_array-from-iterable');\nvar metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nvar ordinaryMetadataKeys = function (O, P) {\n var oKeys = ordinaryOwnMetadataKeys(O, P);\n var parent = getPrototypeOf(O);\n if (parent === null) return oKeys;\n var pKeys = ordinaryMetadataKeys(parent, P);\n return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;\n};\n\nmetadata.exp({ getMetadataKeys: function getMetadataKeys(target /* , targetKey */) {\n return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) {\n return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nvar ordinaryHasMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return true;\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;\n};\n\nmetadata.exp({ hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var $metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar toMetaKey = $metadata.key;\nvar ordinaryDefineOwnMetadata = $metadata.set;\n\n$metadata.exp({ metadata: function metadata(metadataKey, metadataValue) {\n return function decorator(target, targetKey) {\n ordinaryDefineOwnMetadata(\n metadataKey, metadataValue,\n (targetKey !== undefined ? anObject : aFunction)(target),\n toMetaKey(targetKey)\n );\n };\n} });\n","// https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-09/sept-25.md#510-globalasap-for-enqueuing-a-microtask\nvar $export = require('./_export');\nvar microtask = require('./_microtask')();\nvar process = require('./_global').process;\nvar isNode = require('./_cof')(process) == 'process';\n\n$export($export.G, {\n asap: function asap(fn) {\n var domain = isNode && process.domain;\n microtask(domain ? domain.bind(fn) : fn);\n }\n});\n","'use strict';\n// https://github.com/zenparsing/es-observable\nvar $export = require('./_export');\nvar global = require('./_global');\nvar core = require('./_core');\nvar microtask = require('./_microtask')();\nvar OBSERVABLE = require('./_wks')('observable');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar anInstance = require('./_an-instance');\nvar redefineAll = require('./_redefine-all');\nvar hide = require('./_hide');\nvar forOf = require('./_for-of');\nvar RETURN = forOf.RETURN;\n\nvar getMethod = function (fn) {\n return fn == null ? undefined : aFunction(fn);\n};\n\nvar cleanupSubscription = function (subscription) {\n var cleanup = subscription._c;\n if (cleanup) {\n subscription._c = undefined;\n cleanup();\n }\n};\n\nvar subscriptionClosed = function (subscription) {\n return subscription._o === undefined;\n};\n\nvar closeSubscription = function (subscription) {\n if (!subscriptionClosed(subscription)) {\n subscription._o = undefined;\n cleanupSubscription(subscription);\n }\n};\n\nvar Subscription = function (observer, subscriber) {\n anObject(observer);\n this._c = undefined;\n this._o = observer;\n observer = new SubscriptionObserver(this);\n try {\n var cleanup = subscriber(observer);\n var subscription = cleanup;\n if (cleanup != null) {\n if (typeof cleanup.unsubscribe === 'function') cleanup = function () { subscription.unsubscribe(); };\n else aFunction(cleanup);\n this._c = cleanup;\n }\n } catch (e) {\n observer.error(e);\n return;\n } if (subscriptionClosed(this)) cleanupSubscription(this);\n};\n\nSubscription.prototype = redefineAll({}, {\n unsubscribe: function unsubscribe() { closeSubscription(this); }\n});\n\nvar SubscriptionObserver = function (subscription) {\n this._s = subscription;\n};\n\nSubscriptionObserver.prototype = redefineAll({}, {\n next: function next(value) {\n var subscription = this._s;\n if (!subscriptionClosed(subscription)) {\n var observer = subscription._o;\n try {\n var m = getMethod(observer.next);\n if (m) return m.call(observer, value);\n } catch (e) {\n try {\n closeSubscription(subscription);\n } finally {\n throw e;\n }\n }\n }\n },\n error: function error(value) {\n var subscription = this._s;\n if (subscriptionClosed(subscription)) throw value;\n var observer = subscription._o;\n subscription._o = undefined;\n try {\n var m = getMethod(observer.error);\n if (!m) throw value;\n value = m.call(observer, value);\n } catch (e) {\n try {\n cleanupSubscription(subscription);\n } finally {\n throw e;\n }\n } cleanupSubscription(subscription);\n return value;\n },\n complete: function complete(value) {\n var subscription = this._s;\n if (!subscriptionClosed(subscription)) {\n var observer = subscription._o;\n subscription._o = undefined;\n try {\n var m = getMethod(observer.complete);\n value = m ? m.call(observer, value) : undefined;\n } catch (e) {\n try {\n cleanupSubscription(subscription);\n } finally {\n throw e;\n }\n } cleanupSubscription(subscription);\n return value;\n }\n }\n});\n\nvar $Observable = function Observable(subscriber) {\n anInstance(this, $Observable, 'Observable', '_f')._f = aFunction(subscriber);\n};\n\nredefineAll($Observable.prototype, {\n subscribe: function subscribe(observer) {\n return new Subscription(observer, this._f);\n },\n forEach: function forEach(fn) {\n var that = this;\n return new (core.Promise || global.Promise)(function (resolve, reject) {\n aFunction(fn);\n var subscription = that.subscribe({\n next: function (value) {\n try {\n return fn(value);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n error: reject,\n complete: resolve\n });\n });\n }\n});\n\nredefineAll($Observable, {\n from: function from(x) {\n var C = typeof this === 'function' ? this : $Observable;\n var method = getMethod(anObject(x)[OBSERVABLE]);\n if (method) {\n var observable = anObject(method.call(x));\n return observable.constructor === C ? observable : new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n return new C(function (observer) {\n var done = false;\n microtask(function () {\n if (!done) {\n try {\n if (forOf(x, false, function (it) {\n observer.next(it);\n if (done) return RETURN;\n }) === RETURN) return;\n } catch (e) {\n if (done) throw e;\n observer.error(e);\n return;\n } observer.complete();\n }\n });\n return function () { done = true; };\n });\n },\n of: function of() {\n for (var i = 0, l = arguments.length, items = new Array(l); i < l;) items[i] = arguments[i++];\n return new (typeof this === 'function' ? this : $Observable)(function (observer) {\n var done = false;\n microtask(function () {\n if (!done) {\n for (var j = 0; j < items.length; ++j) {\n observer.next(items[j]);\n if (done) return;\n } observer.complete();\n }\n });\n return function () { done = true; };\n });\n }\n});\n\nhide($Observable.prototype, OBSERVABLE, function () { return this; });\n\n$export($export.G, { Observable: $Observable });\n\nrequire('./_set-species')('Observable');\n","// ie9- setTimeout & setInterval additional parameters fix\nvar global = require('./_global');\nvar $export = require('./_export');\nvar userAgent = require('./_user-agent');\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar wrap = function (set) {\n return function (fn, time /* , ...args */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : false;\n return set(boundArgs ? function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);\n } : fn, time);\n };\n};\n$export($export.G + $export.B + $export.F * MSIE, {\n setTimeout: wrap(global.setTimeout),\n setInterval: wrap(global.setInterval)\n});\n","var $export = require('./_export');\nvar $task = require('./_task');\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n","/**\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * https://raw.github.com/facebook/regenerator/master/LICENSE file. An\n * additional grant of patent rights can be found in the PATENTS file in\n * the same directory.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n if (typeof global.process === \"object\" && global.process.domain) {\n invoke = global.process.domain.bind(invoke);\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // Among the various tricks for obtaining a reference to the global\n // object, this seems to be the most reliable technique that does not\n // use indirect eval (which violates Content Security Policy).\n typeof global === \"object\" ? global :\n typeof window === \"object\" ? window :\n typeof self === \"object\" ? self : this\n);\n","require('../../modules/core.regexp.escape');\nmodule.exports = require('../../modules/_core').RegExp.escape;\n","// https://github.com/benjamingr/RexExp.escape\nvar $export = require('./_export');\nvar $re = require('./_replacer')(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\n$export($export.S, 'RegExp', { escape: function escape(it) { return $re(it); } });\n","module.exports = function (regExp, replace) {\n var replacer = replace === Object(replace) ? function (part) {\n return replace[part];\n } : replace;\n return function (it) {\n return String(it).replace(regExp, replacer);\n };\n};\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018, 2019 New Vector Ltd\nCopyright 2019 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// Require common CSS here; this will make webpack process it into bundle.css.\n// Our own CSS (which is themed) is imported via separate webpack entry points\n// in webpack.config.js\nrequire('gemini-scrollbar/gemini-scrollbar.css');\nrequire('gfm.css/gfm.css');\nrequire('highlight.js/styles/github.css');\nrequire('draft-js/dist/Draft.css');\n\nimport olmWasmPath from 'olm/olm.wasm';\n\nimport './rageshakesetup';\n\nimport React from 'react';\n// add React and ReactPerf to the global namespace, to make them easier to\n// access via the console\nglobal.React = React;\n\nimport './modernizr';\nimport ReactDOM from 'react-dom';\nimport sdk from 'matrix-react-sdk';\nimport PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg';\nsdk.loadSkin(require('../component-index'));\nimport VectorConferenceHandler from 'matrix-react-sdk/lib/VectorConferenceHandler';\nimport Promise from 'bluebird';\nimport * as languageHandler from 'matrix-react-sdk/lib/languageHandler';\nimport {_t, _td, newTranslatableError} from 'matrix-react-sdk/lib/languageHandler';\nimport AutoDiscoveryUtils from 'matrix-react-sdk/lib/utils/AutoDiscoveryUtils';\nimport {AutoDiscovery} from \"matrix-js-sdk/lib/autodiscovery\";\nimport * as Lifecycle from \"matrix-react-sdk/lib/Lifecycle\";\n\nimport url from 'url';\n\nimport {parseQs, parseQsFromFragment} from './url_utils';\n\nimport ElectronPlatform from './platform/ElectronPlatform';\nimport WebPlatform from './platform/WebPlatform';\n\nimport MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg';\nimport SettingsStore from \"matrix-react-sdk/lib/settings/SettingsStore\";\nimport Tinter from 'matrix-react-sdk/lib/Tinter';\nimport SdkConfig from \"matrix-react-sdk/lib/SdkConfig\";\n\nimport Olm from 'olm';\n\nimport CallHandler from 'matrix-react-sdk/lib/CallHandler';\n\nlet lastLocationHashSet = null;\n\n// Disable warnings for now: we use deprecated bluebird functions\n// and need to migrate, but they spam the console with warnings.\nPromise.config({warnings: false});\n\nfunction checkBrowserFeatures(featureList) {\n if (!window.Modernizr) {\n console.error(\"Cannot check features - Modernizr global is missing.\");\n return false;\n }\n let featureComplete = true;\n for (let i = 0; i < featureList.length; i++) {\n if (window.Modernizr[featureList[i]] === undefined) {\n console.error(\n \"Looked for feature '%s' but Modernizr has no results for this. \" +\n \"Has it been configured correctly?\", featureList[i],\n );\n return false;\n }\n if (window.Modernizr[featureList[i]] === false) {\n console.error(\"Browser missing feature: '%s'\", featureList[i]);\n // toggle flag rather than return early so we log all missing features\n // rather than just the first.\n featureComplete = false;\n }\n }\n return featureComplete;\n}\n\n// Parse the given window.location and return parameters that can be used when calling\n// MatrixChat.showScreen(screen, params)\nfunction getScreenFromLocation(location) {\n const fragparts = parseQsFromFragment(location);\n return {\n screen: fragparts.location.substring(1),\n params: fragparts.params,\n };\n}\n\n// Here, we do some crude URL analysis to allow\n// deep-linking.\nfunction routeUrl(location) {\n if (!window.matrixChat) return;\n\n console.log(\"Routing URL \", location.href);\n const s = getScreenFromLocation(location);\n window.matrixChat.showScreen(s.screen, s.params);\n}\n\nfunction onHashChange(ev) {\n if (decodeURIComponent(window.location.hash) === lastLocationHashSet) {\n // we just set this: no need to route it!\n return;\n }\n routeUrl(window.location);\n}\n\n// This will be called whenever the SDK changes screens,\n// so a web page can update the URL bar appropriately.\nfunction onNewScreen(screen) {\n console.log(\"newscreen \"+screen);\n const hash = '#/' + screen;\n lastLocationHashSet = hash;\n window.location.hash = hash;\n}\n\n// We use this to work out what URL the SDK should\n// pass through when registering to allow the user to\n// click back to the client having registered.\n// It's up to us to recognise if we're loaded with\n// this URL and tell MatrixClient to resume registration.\n//\n// If we're in electron, we should never pass through a file:// URL otherwise\n// the identity server will try to 302 the browser to it, which breaks horribly.\n// so in that instance, hardcode to use riot.im/app for now instead.\nfunction makeRegistrationUrl(params) {\n let url;\n if (window.location.protocol === \"vector:\") {\n url = 'https://riot.im/app/#/register';\n } else {\n url = (\n window.location.protocol + '//' +\n window.location.host +\n window.location.pathname +\n '#/register'\n );\n }\n\n const keys = Object.keys(params);\n for (let i = 0; i < keys.length; ++i) {\n if (i === 0) {\n url += '?';\n } else {\n url += '&';\n }\n const k = keys[i];\n url += k + '=' + encodeURIComponent(params[k]);\n }\n return url;\n}\n\nfunction onTokenLoginCompleted() {\n // if we did a token login, we're now left with the token, hs and is\n // url as query params in the url; a little nasty but let's redirect to\n // clear them.\n const parsedUrl = url.parse(window.location.href);\n parsedUrl.search = \"\";\n const formatted = url.format(parsedUrl);\n console.log(\"Redirecting to \" + formatted + \" to drop loginToken \" +\n \"from queryparams\");\n window.location.href = formatted;\n}\n\nasync function loadApp() {\n if (window.vector_indexeddb_worker_script === undefined) {\n // If this is missing, something has probably gone wrong with\n // the bundling. The js-sdk will just fall back to accessing\n // indexeddb directly with no worker script, but we want to\n // make sure the indexeddb script is present, so fail hard.\n throw new Error(\"Missing indexeddb worker script!\");\n }\n MatrixClientPeg.setIndexedDbWorkerScript(window.vector_indexeddb_worker_script);\n CallHandler.setConferenceHandler(VectorConferenceHandler);\n\n window.addEventListener('hashchange', onHashChange);\n\n await loadOlm();\n\n // set the platform for react sdk\n if (window.ipcRenderer) {\n console.log(\"Using Electron platform\");\n const plaf = new ElectronPlatform();\n PlatformPeg.set(plaf);\n\n // Electron only: see if we need to do a one-time data\n // migration\n if (window.localStorage.getItem('mx_user_id') === null) {\n console.log(\"Migrating session from old origin...\");\n await plaf.migrateFromOldOrigin();\n console.log(\"Origin migration complete\");\n }\n } else {\n console.log(\"Using Web platform\");\n PlatformPeg.set(new WebPlatform());\n }\n\n const platform = PlatformPeg.get();\n\n let configJson;\n let configError;\n let configSyntaxError = false;\n try {\n configJson = await platform.getConfig();\n } catch (e) {\n configError = e;\n\n if (e && e.err && e.err instanceof SyntaxError) {\n console.error(\"SyntaxError loading config:\", e);\n configSyntaxError = true;\n configJson = {}; // to prevent errors between here and loading CSS for the error box\n }\n }\n\n // XXX: We call this twice, once here and once in MatrixChat as a prop. We call it here to ensure\n // granular settings are loaded correctly and to avoid duplicating the override logic for the theme.\n SdkConfig.put(configJson);\n\n // Load language after loading config.json so that settingsDefaults.language can be applied\n await loadLanguage();\n\n const fragparts = parseQsFromFragment(window.location);\n const params = parseQs(window.location);\n\n // don't try to redirect to the native apps if we're\n // verifying a 3pid (but after we've loaded the config)\n // or if the user is following a deep link\n // (https://github.com/vector-im/riot-web/issues/7378)\n const preventRedirect = fragparts.params.client_secret || fragparts.location.length > 0;\n\n if (!preventRedirect) {\n const isIos = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n const isAndroid = /Android/.test(navigator.userAgent);\n if (isIos || isAndroid) {\n if (document.cookie.indexOf(\"riot_mobile_redirect_to_guide=false\") === -1) {\n window.location = \"mobile_guide/\";\n return;\n }\n }\n }\n\n // as quickly as we possibly can, set a default theme...\n let a;\n const theme = SettingsStore.getValue(\"theme\");\n for (let i = 0; (a = document.getElementsByTagName(\"link\")[i]); i++) {\n const href = a.getAttribute(\"href\");\n if (!href) continue;\n // shouldn't we be using the 'title' tag rather than the href?\n const match = href.match(/^bundles\\/.*\\/theme-(.*)\\.css$/);\n if (match) {\n if (match[1] === theme) {\n // remove the disabled flag off the stylesheet\n\n // Firefox requires setting the attribute to false, so do\n // that instead of removing it. Related:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1281135\n a.disabled = false;\n\n // in case the Tinter.tint() in MatrixChat fires before the\n // CSS has actually loaded (which in practice happens)...\n\n // This if fixes Tinter.setTheme to not fire on Firefox\n // in case it is the first time loading Riot.\n // `InstallTrigger` is a Object which only exists on Firefox\n // (it is used for their Plugins) and can be used as a\n // feature check.\n // Firefox loads css always before js. This is why we dont use\n // onload or it's EventListener as thoose will never trigger.\n if (typeof InstallTrigger !== 'undefined') {\n Tinter.setTheme(theme);\n } else {\n // FIXME: we should probably block loading the app or even\n // showing a spinner until the theme is loaded, to avoid\n // flashes of unstyled content.\n a.onload = () => {\n Tinter.setTheme(theme);\n };\n }\n } else {\n // Firefox requires this to not be done via `setAttribute`\n // or via HTML.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1281135\n a.disabled = true;\n }\n }\n }\n\n // Now that we've loaded the theme (CSS), display the config syntax error if needed.\n if (configSyntaxError) {\n const errorMessage = (\n

\n

\n {_t(\n \"Your Riot configuration contains invalid JSON. Please correct the problem \" +\n \"and reload the page.\",\n )}\n

\n

\n {_t(\n \"The message from the parser is: %(message)s\",\n {message: configError.err.message || _t(\"Invalid JSON\")},\n )}\n

\n
\n );\n\n const GenericErrorPage = sdk.getComponent(\"structures.GenericErrorPage\");\n window.matrixChat = ReactDOM.render(\n ,\n document.getElementById('matrixchat'),\n );\n return;\n }\n\n const validBrowser = checkBrowserFeatures([\n \"displaytable\", \"flexbox\", \"es5object\", \"es5function\", \"localstorage\",\n \"objectfit\", \"indexeddb\", \"webworkers\",\n ]);\n\n const acceptInvalidBrowser = window.localStorage && window.localStorage.getItem('mx_accepts_unsupported_browser');\n\n const urlWithoutQuery = window.location.protocol + '//' + window.location.host + window.location.pathname;\n console.log(\"Vector starting at \" + urlWithoutQuery);\n if (configError) {\n window.matrixChat = ReactDOM.render(
\n Unable to load config file: please refresh the page to try again.\n
, document.getElementById('matrixchat'));\n } else if (validBrowser || acceptInvalidBrowser) {\n platform.startUpdater();\n\n // Don't bother loading the app until the config is verified\n verifyServerConfig().then((newConfig) => {\n const MatrixChat = sdk.getComponent('structures.MatrixChat');\n window.matrixChat = ReactDOM.render(\n ,\n document.getElementById('matrixchat'),\n );\n }).catch(err => {\n console.error(err);\n\n let errorMessage = err.translatedMessage\n || _t(\"Unexpected error preparing the app. See console for details.\");\n errorMessage = {errorMessage};\n\n // Like the compatibility page, AWOOOOOGA at the user\n const GenericErrorPage = sdk.getComponent(\"structures.GenericErrorPage\");\n window.matrixChat = ReactDOM.render(\n ,\n document.getElementById('matrixchat'),\n );\n });\n } else {\n console.error(\"Browser is missing required features.\");\n // take to a different landing page to AWOOOOOGA at the user\n const CompatibilityPage = sdk.getComponent(\"structures.CompatibilityPage\");\n window.matrixChat = ReactDOM.render(\n ,\n document.getElementById('matrixchat'),\n );\n }\n}\n\nfunction loadOlm() {\n /* Load Olm. We try the WebAssembly version first, and then the legacy,\n * asm.js version if that fails. For this reason we need to wait for this\n * to finish before continuing to load the rest of the app. In future\n * we could somehow pass a promise down to react-sdk and have it wait on\n * that so olm can be loading in parallel with the rest of the app.\n *\n * We also need to tell the Olm js to look for its wasm file at the same\n * level as index.html. It really should be in the same place as the js,\n * ie. in the bundle directory, but as far as I can tell this is\n * completely impossible with webpack. We do, however, use a hashed\n * filename to avoid caching issues.\n */\n return Olm.init({\n locateFile: () => olmWasmPath,\n }).then(() => {\n console.log(\"Using WebAssembly Olm\");\n }).catch((e) => {\n console.log(\"Failed to load Olm: trying legacy version\", e);\n return new Promise((resolve, reject) => {\n const s = document.createElement('script');\n s.src = 'olm_legacy.js'; // XXX: This should be cache-busted too\n s.onload = resolve;\n s.onerror = reject;\n document.body.appendChild(s);\n }).then(() => {\n // Init window.Olm, ie. the one just loaded by the script tag,\n // not 'Olm' which is still the failed wasm version.\n return window.Olm.init();\n }).then(() => {\n console.log(\"Using legacy Olm\");\n }).catch((e) => {\n console.log(\"Both WebAssembly and asm.js Olm failed!\", e);\n });\n });\n}\n\nasync function loadLanguage() {\n const prefLang = SettingsStore.getValue(\"language\", null, /*excludeDefault=*/true);\n let langs = [];\n\n if (!prefLang) {\n languageHandler.getLanguagesFromBrowser().forEach((l) => {\n langs.push(...languageHandler.getNormalizedLanguageKeys(l));\n });\n } else {\n langs = [prefLang];\n }\n try {\n await languageHandler.setLanguage(langs);\n document.documentElement.setAttribute(\"lang\", languageHandler.getCurrentLanguage());\n } catch (e) {\n console.error(\"Unable to set language\", e);\n }\n}\n\nasync function verifyServerConfig() {\n let validatedConfig;\n try {\n console.log(\"Verifying homeserver configuration\");\n\n // Note: the query string may include is_url and hs_url - we only respect these in the\n // context of email validation. Because we don't respect them otherwise, we do not need\n // to parse or consider them here.\n\n // Note: Although we throw all 3 possible configuration options through a .well-known-style\n // verification, we do not care if the servers are online at this point. We do moderately\n // care if they are syntactically correct though, so we shove them through the .well-known\n // validators for that purpose.\n\n const config = SdkConfig.get();\n let wkConfig = config['default_server_config']; // overwritten later under some conditions\n const serverName = config['default_server_name'];\n const hsUrl = config['default_hs_url'];\n const isUrl = config['default_is_url'];\n\n const incompatibleOptions = [wkConfig, serverName, hsUrl].filter(i => !!i);\n if (incompatibleOptions.length > 1) {\n // noinspection ExceptionCaughtLocallyJS\n throw newTranslatableError(_td(\n \"Invalid configuration: can only specify one of default_server_config, default_server_name, \" +\n \"or default_hs_url.\",\n ));\n }\n if (incompatibleOptions.length < 1) {\n // noinspection ExceptionCaughtLocallyJS\n throw newTranslatableError(_td(\"Invalid configuration: no default server specified.\"));\n }\n\n if (hsUrl) {\n console.log(\"Config uses a default_hs_url - constructing a default_server_config using this information\");\n console.warn(\n \"DEPRECATED CONFIG OPTION: In the future, default_hs_url will not be accepted. Please use \" +\n \"default_server_config instead.\",\n );\n\n wkConfig = {\n \"m.homeserver\": {\n \"base_url\": hsUrl,\n },\n };\n if (isUrl) {\n wkConfig[\"m.identity_server\"] = {\n \"base_url\": isUrl,\n };\n }\n }\n\n let discoveryResult = null;\n if (wkConfig) {\n console.log(\"Config uses a default_server_config - validating object\");\n discoveryResult = await AutoDiscovery.fromDiscoveryConfig(wkConfig);\n }\n\n if (serverName) {\n console.log(\"Config uses a default_server_name - doing .well-known lookup\");\n console.warn(\n \"DEPRECATED CONFIG OPTION: In the future, default_server_name will not be accepted. Please \" +\n \"use default_server_config instead.\",\n );\n discoveryResult = await AutoDiscovery.findClientConfig(serverName);\n }\n\n validatedConfig = AutoDiscoveryUtils.buildValidatedConfigFromDiscovery(serverName, discoveryResult, true);\n } catch (e) {\n const {hsUrl, isUrl, userId} = Lifecycle.getLocalStorageSessionVars();\n if (hsUrl && userId) {\n console.error(e);\n console.warn(\"A session was found - suppressing config error and using the session's homeserver\");\n\n console.log(\"Using pre-existing hsUrl and isUrl: \", {hsUrl, isUrl});\n validatedConfig = await AutoDiscoveryUtils.validateServerConfigWithStaticUrls(hsUrl, isUrl, true);\n } else {\n // the user is not logged in, so scream\n throw e;\n }\n }\n\n\n validatedConfig.isDefault = true;\n\n // Just in case we ever have to debug this\n console.log(\"Using homeserver config:\", validatedConfig);\n\n // Add the newly built config to the actual config for use by the app\n console.log(\"Updating SdkConfig with validated discovery information\");\n SdkConfig.add({\"validated_server_config\": validatedConfig});\n\n return SdkConfig.get();\n}\n\nloadApp();\n","module.exports = __webpack_public_path__ + \"olm.219048b.wasm\";","/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/*\n * Separate file that sets up rageshake logging when imported.\n * This is necessary so that rageshake logging is set up before\n * anything else. Webpack puts all import statements at the top\n * of the file before any code, so imports will always be\n * evaluated first. Other imports can cause other code to be\n * evaluated (eg. the loglevel library in js-sdk, which if set\n * up before rageshake causes some js-sdk logging to be missing\n * from the rageshake.)\n */\n\nimport rageshake from \"matrix-react-sdk/lib/rageshake/rageshake\";\nimport SdkConfig from \"matrix-react-sdk/lib/SdkConfig\";\n\nfunction initRageshake() {\n rageshake.init().then(() => {\n console.log(\"Initialised rageshake.\");\n console.log(\"To fix line numbers in Chrome: \" +\n \"Meatball menu → Settings → Blackboxing → Add /rageshake\\\\.js$\");\n\n window.addEventListener('beforeunload', (e) => {\n console.log('riot-web closing');\n // try to flush the logs to indexeddb\n rageshake.flush();\n });\n\n rageshake.cleanup();\n }, (err) => {\n console.error(\"Failed to initialise rageshake: \" + err);\n });\n}\n\ninitRageshake();\n\nglobal.mxSendRageshake = function(text, withLogs) {\n if (withLogs === undefined) withLogs = true;\n if (!text || !text.trim()) {\n console.error(\"Cannot send a rageshake without a message - please tell us what went wrong\");\n return;\n }\n require(['matrix-react-sdk/lib/rageshake/submit-rageshake'], (s) => {\n s(SdkConfig.get().bug_report_endpoint_url, {\n userText: text,\n sendLogs: withLogs,\n progressCallback: console.log.bind(console),\n }).then(() => {\n console.log(\"Bug report sent!\");\n }, (err) => {\n console.error(err);\n });\n });\n};\n","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","/** @license React v16.9.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var h=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113,aa=n?Symbol.for(\"react.suspense_list\"):60120,ba=n?Symbol.for(\"react.memo\"):\n60115,ca=n?Symbol.for(\"react.lazy\"):60116;n&&Symbol.for(\"react.fundamental\");n&&Symbol.for(\"react.responder\");var z=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction A(a){for(var b=a.message,d=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+b,c=1;cP.length&&P.push(a)}\nfunction S(a,b,d,c){var e=typeof a;if(\"undefined\"===e||\"boolean\"===e)a=null;var g=!1;if(null===a)g=!0;else switch(e){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return d(c,a,\"\"===b?\".\"+T(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;kd;d++)if(l=e[d],c=mStyle.style[l],contains(l,\"-\")&&(l=cssToDOM(l)),mStyle.style[l]!==undefined){if(n||is(r,\"undefined\"))return o(),\"pfx\"==t?l:!0;try{mStyle.style[l]=r}catch(u){}if(mStyle.style[l]!=c)return o(),\"pfx\"==t?l:!0}return o(),!1}function fnBind(e,t){return function(){return e.apply(t,arguments)}}function testDOMProps(e,t,r){var n;for(var o in e)if(e[o]in t)return r===!1?e[o]:(n=t[e[o]],is(n,\"function\")?fnBind(n,r||t):n);return!1}function testPropsAll(e,t,r,n,o){var i=e.charAt(0).toUpperCase()+e.slice(1),s=(e+\" \"+cssomPrefixes.join(i+\" \")+i).split(\" \");return is(t,\"string\")||is(t,\"undefined\")?testProps(s,t,n,o):(s=(e+\" \"+domPrefixes.join(i+\" \")+i).split(\" \"),testDOMProps(s,t,r))}function testAllProps(e,t,r){return testPropsAll(e,undefined,undefined,t,r)}var tests=[],ModernizrProto={_version:\"3.3.1\",_config:{classPrefix:\"modernizr_\",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,t){var r=this;setTimeout(function(){t(r[e])},0)},addTest:function(e,t,r){tests.push({name:e,fn:t,options:r})},addAsyncTest:function(e){tests.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=ModernizrProto,Modernizr=new Modernizr;var classes=[],docElement=document.documentElement,isSVG=\"svg\"===docElement.nodeName.toLowerCase(),testStyles=ModernizrProto.testStyles=injectElementWithStyles;testStyles(\"#modernizr{display: table; direction: ltr}#modernizr div{display: table-cell; padding: 10px}\",function(e){var t,r=e.childNodes;t=r[0].offsetLefto;o++){var i=prefixes[o],s=i.toUpperCase()+\"_\"+t;if(s in n)return\"@-\"+i.toLowerCase()+\"-\"+e}return!1};ModernizrProto.atRule=atRule;var prefixed=ModernizrProto.prefixed=function(e,t,r){return 0===e.indexOf(\"@\")?atRule(e):(-1!=e.indexOf(\"-\")&&(e=cssToDOM(e)),t?testPropsAll(e,t,r):testPropsAll(e,\"pfx\"))};Modernizr.addTest(\"objectfit\",!!prefixed(\"objectFit\"),{aliases:[\"object-fit\"]}),Modernizr.addTest(\"localstorage\",function(){var e=\"modernizr\";try{return localStorage.setItem(e,e),localStorage.removeItem(e),!0}catch(t){return!1}}),Modernizr.addTest(\"webworkers\",\"Worker\"in window);var indexeddb;try{indexeddb=prefixed(\"indexedDB\",window)}catch(e){}Modernizr.addTest(\"indexeddb\",!!indexeddb),indexeddb&&Modernizr.addTest(\"indexeddb.deletedatabase\",\"deleteDatabase\"in indexeddb),testRunner(),setClasses(classes),delete ModernizrProto.addTest,delete ModernizrProto.addAsyncTest;for(var i=0;ithis.eventPool.length&&this.eventPool.push(a)}function ib(a){a.eventPool=[];a.getPooled=jb;a.release=kb}var lb=y.extend({data:null}),mb=y.extend({data:null}),nb=[9,13,27,32],ob=Ra&&\"CompositionEvent\"in window,pb=null;Ra&&\"documentMode\"in document&&(pb=document.documentMode);\nvar qb=Ra&&\"TextEvent\"in window&&!pb,sb=Ra&&(!ob||pb&&8=pb),tb=String.fromCharCode(32),ub={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},vb=!1;\nfunction wb(a,b){switch(a){case \"keyup\":return-1!==nb.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function xb(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var yb=!1;function Ab(a,b){switch(a){case \"compositionend\":return xb(b);case \"keypress\":if(32!==b.which)return null;vb=!0;return tb;case \"textInput\":return a=b.data,a===tb&&vb?null:a;default:return null}}\nfunction Bb(a,b){if(yb)return\"compositionend\"===a||!ob&&wb(a,b)?(a=fb(),eb=db=cb=null,yb=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1b}return!1}function D(a,b,c,d,e,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f}var F={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){F[a]=new D(a,0,!1,a,null,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];F[b]=new D(b,1,!1,a[1],null,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){F[a]=new D(a,2,!1,a.toLowerCase(),null,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){F[a]=new D(a,2,!1,a,null,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){F[a]=new D(a,3,!1,a.toLowerCase(),null,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){F[a]=new D(a,3,!0,a,null,!1)});[\"capture\",\"download\"].forEach(function(a){F[a]=new D(a,4,!1,a,null,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){F[a]=new D(a,6,!1,a,null,!1)});[\"rowSpan\",\"start\"].forEach(function(a){F[a]=new D(a,5,!1,a.toLowerCase(),null,!1)});var xc=/[\\-:]([a-z])/g;function yc(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(xc,\nyc);F[b]=new D(b,1,!1,a,null,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(xc,yc);F[b]=new D(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(xc,yc);F[b]=new D(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){F[a]=new D(a,1,!1,a.toLowerCase(),null,!1)});\nF.xlinkHref=new D(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){F[a]=new D(a,1,!1,a.toLowerCase(),null,!0)});\nfunction zc(a,b,c,d){var e=F.hasOwnProperty(b)?F[b]:null;var f=null!==e?0===e.type:d?!1:!(2Od.length&&Od.push(a)}}}var Vd=new (\"function\"===typeof WeakMap?WeakMap:Map);\nfunction Wd(a){var b=Vd.get(a);void 0===b&&(b=new Set,Vd.set(a,b));return b}function Xd(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function Yd(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Zd(a,b){var c=Yd(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Yd(c)}}function $d(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?$d(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction ae(){for(var a=window,b=Xd();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xd(a.document)}return b}function be(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar ce=Ra&&\"documentMode\"in document&&11>=document.documentMode,de={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},ee=null,fe=null,ge=null,he=!1;\nfunction ie(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(he||null==ee||ee!==Xd(c))return null;c=ee;\"selectionStart\"in c&&be(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return ge&&jd(ge,c)?null:(ge=c,a=y.getPooled(de.select,fe,a,b),a.type=\"select\",a.target=ee,Qa(a),a)}\nvar je={eventTypes:de,extractEvents:function(a,b,c,d){var e=d.window===d?d.document:9===d.nodeType?d:d.ownerDocument,f;if(!(f=!e)){a:{e=Wd(e);f=ja.onSelect;for(var h=0;h=b.length))throw t(Error(93));b=b[0]}c=b}null==c&&(c=\"\")}a._wrapperState={initialValue:Ac(c)}}\nfunction pe(a,b){var c=Ac(b.value),d=Ac(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function qe(a){var b=a.textContent;b===a._wrapperState.initialValue&&(a.value=b)}var re={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction se(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function te(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?se(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar ue=void 0,ve=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==re.svg||\"innerHTML\"in a)a.innerHTML=b;else{ue=ue||document.createElement(\"div\");ue.innerHTML=\"\"+b+\"\";for(b=ue.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction we(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar xe={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ye=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(xe).forEach(function(a){ye.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);xe[b]=xe[a]})});function ze(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||xe.hasOwnProperty(a)&&xe[a]?(\"\"+b).trim():b+\"px\"}\nfunction Ae(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=ze(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var Ce=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction De(a,b){if(b){if(Ce[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw t(Error(137),a,\"\");if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw t(Error(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw t(Error(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw t(Error(62),\"\");}}\nfunction Ee(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}\nfunction Fe(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=Wd(a);b=ja[b];for(var d=0;dPe||(a.current=Oe[Pe],Oe[Pe]=null,Pe--)}function J(a,b){Pe++;Oe[Pe]=a.current;a.current=b}var Qe={},L={current:Qe},M={current:!1},Re=Qe;\nfunction Se(a,b){var c=a.type.contextTypes;if(!c)return Qe;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function N(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Te(a){H(M,a);H(L,a)}function Ue(a){H(M,a);H(L,a)}\nfunction Ve(a,b,c){if(L.current!==Qe)throw t(Error(168));J(L,b,a);J(M,c,a)}function We(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw t(Error(108),oc(b)||\"Unknown\",e);return m({},c,d)}function Xe(a){var b=a.stateNode;b=b&&b.__reactInternalMemoizedMergedChildContext||Qe;Re=L.current;J(L,b,a);J(M,M.current,a);return!0}\nfunction Ye(a,b,c){var d=a.stateNode;if(!d)throw t(Error(169));c?(b=We(a,b,Re),d.__reactInternalMemoizedMergedChildContext=b,H(M,a),H(L,a),J(L,b,a)):H(M,a);J(M,c,a)}\nvar Ze=q.unstable_runWithPriority,$e=q.unstable_scheduleCallback,af=q.unstable_cancelCallback,bf=q.unstable_shouldYield,cf=q.unstable_requestPaint,df=q.unstable_now,ef=q.unstable_getCurrentPriorityLevel,ff=q.unstable_ImmediatePriority,hf=q.unstable_UserBlockingPriority,jf=q.unstable_NormalPriority,kf=q.unstable_LowPriority,lf=q.unstable_IdlePriority,mf={},nf=void 0!==cf?cf:function(){},of=null,pf=null,qf=!1,rf=df(),sf=1E4>rf?df:function(){return df()-rf};\nfunction tf(){switch(ef()){case ff:return 99;case hf:return 98;case jf:return 97;case kf:return 96;case lf:return 95;default:throw t(Error(332));}}function uf(a){switch(a){case 99:return ff;case 98:return hf;case 97:return jf;case 96:return kf;case 95:return lf;default:throw t(Error(332));}}function vf(a,b){a=uf(a);return Ze(a,b)}function wf(a,b,c){a=uf(a);return $e(a,b,c)}function xf(a){null===of?(of=[a],pf=$e(ff,yf)):of.push(a);return mf}function O(){null!==pf&&af(pf);yf()}\nfunction yf(){if(!qf&&null!==of){qf=!0;var a=0;try{var b=of;vf(99,function(){for(;a=a?99:250>=a?98:5250>=a?97:95}function Af(a,b){if(a&&a.defaultProps){b=m({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c])}return b}\nfunction Bf(a){var b=a._result;switch(a._status){case 1:return b;case 2:throw b;case 0:throw b;default:a._status=0;b=a._ctor;b=b();b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)});switch(a._status){case 1:return a._result;case 2:throw a._result;}a._result=b;throw b;}}var Cf={current:null},Df=null,Ef=null,Ff=null;function Gf(){Ff=Ef=Df=null}\nfunction Hf(a,b){var c=a.type._context;J(Cf,c._currentValue,a);c._currentValue=b}function If(a){var b=Cf.current;H(Cf,a);a.type._context._currentValue=b}function Jf(a,b){for(;null!==a;){var c=a.alternate;if(a.childExpirationTime=b&&(Lf=!0),a.firstContext=null)}function Mf(a,b){if(Ff!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)Ff=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===Ef){if(null===Df)throw t(Error(308));Ef=b;Df.dependencies={expirationTime:0,firstContext:b,responders:null}}else Ef=Ef.next=b}return a._currentValue}var Nf=!1;\nfunction Of(a){return{baseState:a,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function Pf(a){return{baseState:a.baseState,firstUpdate:a.firstUpdate,lastUpdate:a.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}\nfunction Qf(a,b){return{expirationTime:a,suspenseConfig:b,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function Rf(a,b){null===a.lastUpdate?a.firstUpdate=a.lastUpdate=b:(a.lastUpdate.next=b,a.lastUpdate=b)}\nfunction Sf(a,b){var c=a.alternate;if(null===c){var d=a.updateQueue;var e=null;null===d&&(d=a.updateQueue=Of(a.memoizedState))}else d=a.updateQueue,e=c.updateQueue,null===d?null===e?(d=a.updateQueue=Of(a.memoizedState),e=c.updateQueue=Of(c.memoizedState)):d=a.updateQueue=Pf(e):null===e&&(e=c.updateQueue=Pf(d));null===e||d===e?Rf(d,b):null===d.lastUpdate||null===e.lastUpdate?(Rf(d,b),Rf(e,b)):(Rf(d,b),e.lastUpdate=b)}\nfunction Tf(a,b){var c=a.updateQueue;c=null===c?a.updateQueue=Of(a.memoizedState):Uf(a,c);null===c.lastCapturedUpdate?c.firstCapturedUpdate=c.lastCapturedUpdate=b:(c.lastCapturedUpdate.next=b,c.lastCapturedUpdate=b)}function Uf(a,b){var c=a.alternate;null!==c&&b===c.updateQueue&&(b=a.updateQueue=Pf(b));return b}\nfunction Vf(a,b,c,d,e,f){switch(c.tag){case 1:return a=c.payload,\"function\"===typeof a?a.call(f,d,e):a;case 3:a.effectTag=a.effectTag&-2049|64;case 0:a=c.payload;e=\"function\"===typeof a?a.call(f,d,e):a;if(null===e||void 0===e)break;return m({},d,e);case 2:Nf=!0}return d}\nfunction Wf(a,b,c,d,e){Nf=!1;b=Uf(a,b);for(var f=b.baseState,h=null,g=0,k=b.firstUpdate,l=f;null!==k;){var n=k.expirationTime;nw?(C=n,n=null):C=n.sibling;var p=x(e,n,g[w],k);if(null===p){null===n&&(n=C);break}a&&\nn&&null===p.alternate&&b(e,n);h=f(p,h,w);null===u?l=p:u.sibling=p;u=p;n=C}if(w===g.length)return c(e,n),l;if(null===n){for(;ww?(C=u,u=null):C=u.sibling;var r=x(e,u,p.value,k);if(null===r){null===u&&(u=C);break}a&&u&&null===r.alternate&&b(e,u);h=f(r,h,w);null===n?l=r:n.sibling=r;n=r;u=C}if(p.done)return c(e,u),l;if(null===u){for(;!p.done;w++,p=g.next())p=z(e,p.value,k),null!==p&&(h=f(p,h,w),null===n?l=p:n.sibling=p,n=p);return l}for(u=d(e,u);!p.done;w++,p=g.next())p=v(u,e,w,p.value,k),null!==p&&(a&&null!==\np.alternate&&u.delete(null===p.key?w:p.key),h=f(p,h,w),null===n?l=p:n.sibling=p,n=p);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,g){var k=\"object\"===typeof f&&null!==f&&f.type===ac&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Zb:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){if(7===k.tag?f.type===ac:k.elementType===f.type){c(a,k.sibling);d=e(k,f.type===ac?f.props.children:f.props,g);d.ref=lg(a,k,f);d.return=a;a=d;break a}c(a,\nk);break}else b(a,k);k=k.sibling}f.type===ac?(d=sg(f.props.children,a.mode,g,f.key),d.return=a,a=d):(g=qg(f.type,f.key,f.props,null,a.mode,g),g.ref=lg(a,d,f),g.return=a,a=g)}return h(a);case $b:a:{for(k=f.key;null!==d;){if(d.key===k){if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[],g);d.return=a;a=d;break a}c(a,d);break}else b(a,d);d=d.sibling}d=rg(f,a.mode,g);d.return=a;a=d}return h(a)}if(\"string\"===typeof f||\n\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,g),d.return=a,a=d):(c(a,d),d=pg(f,a.mode,g),d.return=a,a=d),h(a);if(kg(f))return rb(a,d,f,g);if(mc(f))return Be(a,d,f,g);l&&mg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:throw a=a.type,t(Error(152),a.displayName||a.name||\"Component\");}return c(a,d)}}var tg=ng(!0),ug=ng(!1),vg={},wg={current:vg},xg={current:vg},yg={current:vg};function zg(a){if(a===vg)throw t(Error(174));return a}\nfunction Ag(a,b){J(yg,b,a);J(xg,a,a);J(wg,vg,a);var c=b.nodeType;switch(c){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:te(null,\"\");break;default:c=8===c?b.parentNode:b,b=c.namespaceURI||null,c=c.tagName,b=te(b,c)}H(wg,a);J(wg,b,a)}function Bg(a){H(wg,a);H(xg,a);H(yg,a)}function Cg(a){zg(yg.current);var b=zg(wg.current);var c=te(b,a.type);b!==c&&(J(xg,a,a),J(wg,c,a))}function Dg(a){xg.current===a&&(H(wg,a),H(xg,a))}var Eg=1,Fg=1,Gg=2,P={current:0};\nfunction Hg(a){for(var b=a;null!==b;){if(13===b.tag){if(null!==b.memoizedState)return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.effectTag&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}\nvar Ig=0,Jg=2,Kg=4,Lg=8,Mg=16,Ng=32,Og=64,Pg=128,Qg=Xb.ReactCurrentDispatcher,Rg=0,Sg=null,Q=null,Tg=null,Ug=null,R=null,Vg=null,Wg=0,Xg=null,Yg=0,Zg=!1,$g=null,ah=0;function bh(){throw t(Error(321));}function ch(a,b){if(null===b)return!1;for(var c=0;cWg&&(Wg=n)):(Xf(n,k.suspenseConfig),f=k.eagerReducer===a?k.eagerState:a(f,k.action));h=k;k=k.next}while(null!==k&&k!==d);l||(g=h,e=f);hd(f,b.memoizedState)||(Lf=!0);b.memoizedState=f;b.baseUpdate=g;b.baseState=e;c.lastRenderedState=f}return[b.memoizedState,c.dispatch]}\nfunction nh(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};null===Xg?(Xg={lastEffect:null},Xg.lastEffect=a.next=a):(b=Xg.lastEffect,null===b?Xg.lastEffect=a.next=a:(c=b.next,b.next=a,a.next=c,Xg.lastEffect=a));return a}function oh(a,b,c,d){var e=jh();Yg|=a;e.memoizedState=nh(b,c,void 0,void 0===d?null:d)}\nfunction ph(a,b,c,d){var e=kh();d=void 0===d?null:d;var f=void 0;if(null!==Q){var h=Q.memoizedState;f=h.destroy;if(null!==d&&ch(d,h.deps)){nh(Ig,c,f,d);return}}Yg|=a;e.memoizedState=nh(b,c,f,d)}function qh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function rh(){}\nfunction sh(a,b,c){if(!(25>ah))throw t(Error(301));var d=a.alternate;if(a===Sg||null!==d&&d===Sg)if(Zg=!0,a={expirationTime:Rg,suspenseConfig:null,action:c,eagerReducer:null,eagerState:null,next:null},null===$g&&($g=new Map),c=$g.get(b),void 0===c)$g.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}else{var e=cg(),f=$f.suspense;e=dg(e,a,f);f={expirationTime:e,suspenseConfig:f,action:c,eagerReducer:null,eagerState:null,next:null};var h=b.last;if(null===h)f.next=f;else{var g=h.next;null!==g&&\n(f.next=g);h.next=f}b.last=f;if(0===a.expirationTime&&(null===d||0===d.expirationTime)&&(d=b.lastRenderedReducer,null!==d))try{var k=b.lastRenderedState,l=d(k,c);f.eagerReducer=d;f.eagerState=l;if(hd(l,k))return}catch(n){}finally{}eg(a,e)}}\nvar hh={readContext:Mf,useCallback:bh,useContext:bh,useEffect:bh,useImperativeHandle:bh,useLayoutEffect:bh,useMemo:bh,useReducer:bh,useRef:bh,useState:bh,useDebugValue:bh,useResponder:bh},eh={readContext:Mf,useCallback:function(a,b){jh().memoizedState=[a,void 0===b?null:b];return a},useContext:Mf,useEffect:function(a,b){return oh(516,Pg|Og,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return oh(4,Kg|Ng,qh.bind(null,b,a),c)},useLayoutEffect:function(a,b){return oh(4,\nKg|Ng,a,b)},useMemo:function(a,b){var c=jh();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=jh();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=sh.bind(null,Sg,a);return[d.memoizedState,a]},useRef:function(a){var b=jh();a={current:a};return b.memoizedState=a},useState:function(a){var b=jh();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue=\n{last:null,dispatch:null,lastRenderedReducer:lh,lastRenderedState:a};a=a.dispatch=sh.bind(null,Sg,a);return[b.memoizedState,a]},useDebugValue:rh,useResponder:kd},fh={readContext:Mf,useCallback:function(a,b){var c=kh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&ch(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:Mf,useEffect:function(a,b){return ph(516,Pg|Og,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ph(4,Kg|Ng,qh.bind(null,\nb,a),c)},useLayoutEffect:function(a,b){return ph(4,Kg|Ng,a,b)},useMemo:function(a,b){var c=kh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&ch(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:mh,useRef:function(){return kh().memoizedState},useState:function(a){return mh(lh,a)},useDebugValue:rh,useResponder:kd},th=null,uh=null,vh=!1;\nfunction wh(a,b){var c=xh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function yh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction zh(a){if(vh){var b=uh;if(b){var c=b;if(!yh(a,b)){b=Ne(c.nextSibling);if(!b||!yh(a,b)){a.effectTag|=2;vh=!1;th=a;return}wh(th,c)}th=a;uh=Ne(b.firstChild)}else a.effectTag|=2,vh=!1,th=a}}function Ah(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&18!==a.tag;)a=a.return;th=a}\nfunction Bh(a){if(a!==th)return!1;if(!vh)return Ah(a),vh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!Ke(b,a.memoizedProps))for(b=uh;b;)wh(a,b),b=Ne(b.nextSibling);Ah(a);uh=th?Ne(a.stateNode.nextSibling):null;return!0}function Ch(){uh=th=null;vh=!1}var Dh=Xb.ReactCurrentOwner,Lf=!1;function S(a,b,c,d){b.child=null===a?ug(b,null,c,d):tg(b,a.child,c,d)}\nfunction Eh(a,b,c,d,e){c=c.render;var f=b.ref;Kf(b,e);d=dh(a,b,c,d,f,e);if(null!==a&&!Lf)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),Fh(a,b,e);b.effectTag|=1;S(a,b,d,e);return b.child}\nfunction Gh(a,b,c,d,e,f){if(null===a){var h=c.type;if(\"function\"===typeof h&&!Hh(h)&&void 0===h.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=h,Ih(a,b,h,d,e,f);a=qg(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}h=a.child;if(eb)&&Ti.set(a,b)))}}\nfunction Yi(a,b){a.expirationTimee.firstPendingTime&&(e.firstPendingTime=b),a=e.lastPendingTime,0===a||b=b?(wf(97,function(){c._onComplete();return null}),!0):!1}function bj(){if(null!==Ti){var a=Ti;Ti=null;a.forEach(function(a,c){xf(Z.bind(null,c,a))});O()}}function ej(a,b){var c=U;U|=1;try{return a(b)}finally{U=c,U===T&&O()}}function fj(a,b,c,d){var e=U;U|=4;try{return vf(98,a.bind(null,b,c,d))}finally{U=e,U===T&&O()}}\nfunction gj(a,b){var c=U;U&=-2;U|=Bi;try{return a(b)}finally{U=c,U===T&&O()}}\nfunction hj(a,b){a.finishedWork=null;a.finishedExpirationTime=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Me(c));if(null!==V)for(c=V.return;null!==c;){var d=c;switch(d.tag){case 1:var e=d.type.childContextTypes;null!==e&&void 0!==e&&Te(d);break;case 3:Bg(d);Ue(d);break;case 5:Dg(d);break;case 4:Bg(d);break;case 13:H(P,d);break;case 19:H(P,d);break;case 10:If(d)}c=c.return}Ji=a;V=og(a.current,null,b);W=b;X=Ei;Li=Ki=1073741823;Mi=null;Ni=!1}\nfunction Z(a,b,c){if((U&(Ci|Di))!==T)throw t(Error(327));if(a.firstPendingTime component higher in the tree to provide a loading indicator or placeholder to display.\"+\npc(k))}X!==Ii&&(X=Fi);l=bi(l,k);k=g;do{switch(k.tag){case 3:k.effectTag|=2048;k.expirationTime=n;n=ti(k,l,n);Tf(k,n);break a;case 1:if(z=l,h=k.type,g=k.stateNode,0===(k.effectTag&64)&&(\"function\"===typeof h.getDerivedStateFromError||null!==g&&\"function\"===typeof g.componentDidCatch&&(null===xi||!xi.has(g)))){k.effectTag|=2048;k.expirationTime=n;n=wi(k,z,n);Tf(k,n);break a}}k=k.return}while(null!==k)}V=lj(f)}while(1);U=d;Gf();zi.current=e;if(null!==V)return Z.bind(null,a,b)}a.finishedWork=a.current.alternate;\na.finishedExpirationTime=b;if(dj(a,b))return null;Ji=null;switch(X){case Ei:throw t(Error(328));case Fi:return d=a.lastPendingTime,dc&&(c=0),c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>c?4320:1960*yi(c/1960))-c,b=b?b=0:(c=e.busyDelayMs|0,d=sf()-(10*(1073741821-d)-(e.timeoutMs|0||5E3)),b=d<=c?0:c+b-d),10\\x3c/script>\",l=k.removeChild(k.firstChild)):\"string\"===typeof c.is?l=l.createElement(k,{is:c.is}):(l=l.createElement(k),\"select\"===k&&(k=l,c.multiple?k.multiple=!0:c.size&&(k.size=c.size))):l=l.createElementNS(h,k);k=l;k[Fa]=g;k[Ga]=c;c=k;Th(c,b,!1,!1);g=c;var n=d,z=Ee(f,e);switch(f){case \"iframe\":case \"object\":case \"embed\":G(\"load\",\ng);d=e;break;case \"video\":case \"audio\":for(d=0;de.tailExpiration&&1c&&(c=f),g>c&&(c=g),e=e.sibling;d.childExpirationTime=c}if(null!==b)return b;null!==a&&0===(a.effectTag&1024)&&(null===a.firstEffect&&(a.firstEffect=V.firstEffect),null!==V.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=V.firstEffect),a.lastEffect=V.lastEffect),1e?f:e;a.firstPendingTime=e;eI&&(E=I,I=K,K=E),E=Zd(A,K),ua=Zd(A,I),E&&ua&&(1!==r.rangeCount||r.anchorNode!==E.node||r.anchorOffset!==\nE.offset||r.focusNode!==ua.node||r.focusOffset!==ua.offset)&&(p=p.createRange(),p.setStart(E.node,E.offset),r.removeAllRanges(),K>I?(r.addRange(p),r.extend(ua.node,ua.offset)):(p.setEnd(ua.node,ua.offset),r.addRange(p))))));p=[];for(r=A;r=r.parentNode;)1===r.nodeType&&p.push({element:r,left:r.scrollLeft,top:r.scrollTop});\"function\"===typeof A.focus&&A.focus();for(A=0;A=c)return Ph(a,b,c);J(P,P.current&\nEg,b);b=Fh(a,b,c);return null!==b?b.sibling:null}J(P,P.current&Eg,b);break;case 19:d=b.childExpirationTime>=c;if(0!==(a.effectTag&64)){if(d)return Rh(a,b,c);b.effectTag|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null);J(P,P.current,b);if(!d)return null}return Fh(a,b,c)}}else Lf=!1;b.expirationTime=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;e=Se(b,L.current);Kf(b,c);e=dh(null,b,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&\nnull!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;ih();if(N(d)){var f=!0;Xe(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;var h=d.getDerivedStateFromProps;\"function\"===typeof h&&bg(b,d,h,a);e.updater=fg;b.stateNode=e;e._reactInternalFiber=b;jg(b,d,a,c);b=Mh(null,b,d,!0,f,c)}else b.tag=0,S(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;e=Bf(e);b.type=e;f=b.tag=sj(e);\na=Af(e,a);switch(f){case 0:b=Jh(null,b,e,a,c);break;case 1:b=Lh(null,b,e,a,c);break;case 11:b=Eh(null,b,e,a,c);break;case 14:b=Gh(null,b,e,Af(e.type,a),d,c);break;default:throw t(Error(306),e,\"\");}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Af(d,e),Jh(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Af(d,e),Lh(a,b,d,e,c);case 3:Nh(b);d=b.updateQueue;if(null===d)throw t(Error(282));e=b.memoizedState;e=null!==e?e.element:null;Wf(b,d,b.pendingProps,\nnull,c);d=b.memoizedState.element;if(d===e)Ch(),b=Fh(a,b,c);else{e=b.stateNode;if(e=(null===a||null===a.child)&&e.hydrate)uh=Ne(b.stateNode.containerInfo.firstChild),th=b,e=vh=!0;e?(b.effectTag|=2,b.child=ug(b,null,d,c)):(S(a,b,d,c),Ch());b=b.child}return b;case 5:return Cg(b),null===a&&zh(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,h=e.children,Ke(d,e)?h=null:null!==f&&Ke(d,f)&&(b.effectTag|=16),Kh(a,b),b.mode&4&&1!==c&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):\n(S(a,b,h,c),b=b.child),b;case 6:return null===a&&zh(b),null;case 13:return Ph(a,b,c);case 4:return Ag(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=tg(b,null,d,c):S(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Af(d,e),Eh(a,b,d,e,c);case 7:return S(a,b,b.pendingProps,c),b.child;case 8:return S(a,b,b.pendingProps.children,c),b.child;case 12:return S(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;h=b.memoizedProps;\nf=e.value;Hf(b,f);if(null!==h){var g=h.value;f=hd(g,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(g,f):1073741823)|0;if(0===f){if(h.children===e.children&&!M.current){b=Fh(a,b,c);break a}}else for(g=b.child,null!==g&&(g.return=b);null!==g;){var k=g.dependencies;if(null!==k){h=g.child;for(var l=k.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===g.tag&&(l=Qf(c,null),l.tag=2,Sf(g,l));g.expirationTime=b;)c=d,d=d._next;a._next=d;null!==c&&(c._next=a)}return a};\nfunction Hj(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}Jb=ej;Kb=fj;Lb=aj;Mb=function(a,b){var c=U;U|=2;try{return a(b)}finally{U=c,U===T&&O()}};function Ij(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new Dj(a,0,b)}\nfunction Jj(a,b,c,d,e){var f=c._reactRootContainer,h=void 0;if(f){h=f._internalRoot;if(\"function\"===typeof e){var g=e;e=function(){var a=zj(h);g.call(a)}}yj(b,h,a,e)}else{f=c._reactRootContainer=Ij(c,d);h=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=zj(h);k.call(a)}}gj(function(){yj(b,h,a,e)})}return zj(h)}function Kj(a,b){var c=2=G};n=function(){};exports.unstable_forceFrameRate=function(a){0>a||125D&&(D=8.33));F=c}E=a;G=a+D;I.postMessage(null)}};d=function(a){A=a;z||(z=!0,x(function(a){L(a)}))};e=function(a,b){C=v(function(){a(exports.unstable_now())},b)};g=function(){w(C);\nC=-1}}var M=null,N=null,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a,b){var c=a.next;if(c===a)M=null;else{a===M&&(M=c);var f=a.previous;f.next=c;c.previous=f}a.next=a.previous=null;c=a.callback;f=P;var l=O;P=a.priorityLevel;O=a;try{var h=a.expirationTime<=b;switch(P){case 1:var k=c(h);break;case 2:k=c(h);break;case 3:k=c(h);break;case 4:k=c(h);break;case 5:k=c(h)}}catch(Z){throw Z;}finally{P=f,O=l}if(\"function\"===typeof k)if(b=a.expirationTime,a.callback=k,null===M)M=a.next=a.previous=a;else{k=null;h=M;do{if(b<=h.expirationTime){k=h;break}h=h.next}while(h!==\nM);null===k?k=M:k===M&&(M=a);b=k.previous;b.next=k.previous=a;a.next=k;a.previous=b}}function U(a){if(null!==N&&N.startTime<=a){do{var b=N,c=b.next;if(b===c)N=null;else{N=c;var f=b.previous;f.next=c;c.previous=f}b.next=b.previous=null;V(b,b.expirationTime)}while(null!==N&&N.startTime<=a)}}function W(a){S=!1;U(a);R||(null!==M?(R=!0,d(X)):null!==N&&e(W,N.startTime-a))}\nfunction X(a,b){R=!1;S&&(S=!1,g());U(b);Q=!0;try{if(!a)for(;null!==M&&M.expirationTime<=b;)T(M,b),b=exports.unstable_now(),U(b);else if(null!==M){do T(M,b),b=exports.unstable_now(),U(b);while(null!==M&&!m())}if(null!==M)return!0;null!==N&&e(W,N.startTime-b);return!1}finally{Q=!1}}function Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}\nfunction V(a,b){if(null===M)M=a.next=a.previous=a;else{var c=null,f=M;do{if(bf){c=l;if(null===N)N=a.next=a.previous=a;else{b=null;var h=N;do{if(c -1) {\n slot = comp.replaces;\n } else {\n slot = name.substr(0, name.lastIndexOf('.') + 1) + comp.replaces.split('.').pop();\n }\n }\n this.components[slot] = comp;\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.components = null;\n }\n }]);\n return Skinner;\n}();\n\n// We define one Skinner globally, because the intention is\n// very much that it is a singleton. Relying on there only being one\n// copy of the module can be dicey and not work as browserify's\n// behaviour with multiple copies of files etc. is erratic at best.\n// XXX: We can still end up with the same file twice in the resulting\n// JS bundle which is nonideal.\n// See https://derickbailey.com/2016/03/09/creating-a-true-singleton-in-node-js-with-es6-symbols/\n// or https://nodejs.org/api/modules.html#modules_module_caching_caveats\n// (\"Modules are cached based on their resolved filename\")\n\n\nif (global.mxSkinner === undefined) {\n global.mxSkinner = new Skinner();\n}\nmodule.exports = global.mxSkinner;\n//# sourceMappingURL=Skinner.js.map","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","require('../../modules/es6.number.is-finite');\nmodule.exports = require('../../modules/_core').Number.isFinite;\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _logger = require('../../src/logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * An IndexedDB store backend where the actual backend sits in a web\n * worker.\n *\n * Construct a new Indexed Database store backend. This requires a call to\n * connect() before this store can be used.\n * @constructor\n * @param {string} workerScript URL to the worker script\n * @param {string=} dbName Optional database name. The same name must be used\n * to open the same database.\n * @param {Object} workerApi The web worker compatible interface object\n */\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar RemoteIndexedDBStoreBackend = function RemoteIndexedDBStoreBackend(workerScript, dbName, workerApi) {\n this._workerScript = workerScript;\n this._dbName = dbName;\n this._workerApi = workerApi;\n this._worker = null;\n this._nextSeq = 0;\n // The currently in-flight requests to the actual backend\n this._inFlight = {\n // seq: promise,\n };\n // Once we start connecting, we keep the promise and re-use it\n // if we try to connect again\n this._startPromise = null;\n};\n\nRemoteIndexedDBStoreBackend.prototype = {\n /**\n * Attempt to connect to the database. This can fail if the user does not\n * grant permission.\n * @return {Promise} Resolves if successfully connected.\n */\n connect: function connect() {\n var _this = this;\n\n return this._ensureStarted().then(function () {\n return _this._doCmd('connect');\n });\n },\n\n /**\n * Clear the entire database. This should be used when logging out of a client\n * to prevent mixing data between accounts.\n * @return {Promise} Resolved when the database is cleared.\n */\n clearDatabase: function clearDatabase() {\n var _this2 = this;\n\n return this._ensureStarted().then(function () {\n return _this2._doCmd('clearDatabase');\n });\n },\n /** @return {Promise} whether or not the database was newly created in this session. */\n isNewlyCreated: function isNewlyCreated() {\n return this._doCmd('isNewlyCreated');\n },\n /**\n * @return {Promise} Resolves with a sync response to restore the\n * client state to where it was at the last save, or null if there\n * is no saved sync data.\n */\n getSavedSync: function getSavedSync() {\n return this._doCmd('getSavedSync');\n },\n\n getNextBatchToken: function getNextBatchToken() {\n return this._doCmd('getNextBatchToken');\n },\n\n setSyncData: function setSyncData(syncData) {\n return this._doCmd('setSyncData', [syncData]);\n },\n\n syncToDatabase: function syncToDatabase(users) {\n return this._doCmd('syncToDatabase', [users]);\n },\n\n /**\n * Returns the out-of-band membership events for this room that\n * were previously loaded.\n * @param {string} roomId\n * @returns {event[]} the events, potentially an empty array if OOB loading didn't yield any new members\n * @returns {null} in case the members for this room haven't been stored yet\n */\n getOutOfBandMembers: function getOutOfBandMembers(roomId) {\n return this._doCmd('getOutOfBandMembers', [roomId]);\n },\n\n /**\n * Stores the out-of-band membership events for this room. Note that\n * it still makes sense to store an empty array as the OOB status for the room is\n * marked as fetched, and getOutOfBandMembers will return an empty array instead of null\n * @param {string} roomId\n * @param {event[]} membershipEvents the membership events to store\n * @returns {Promise} when all members have been stored\n */\n setOutOfBandMembers: function setOutOfBandMembers(roomId, membershipEvents) {\n return this._doCmd('setOutOfBandMembers', [roomId, membershipEvents]);\n },\n\n clearOutOfBandMembers: function clearOutOfBandMembers(roomId) {\n return this._doCmd('clearOutOfBandMembers', [roomId]);\n },\n\n getClientOptions: function getClientOptions() {\n return this._doCmd('getClientOptions');\n },\n\n storeClientOptions: function storeClientOptions(options) {\n return this._doCmd('storeClientOptions', [options]);\n },\n\n /**\n * Load all user presence events from the database. This is not cached.\n * @return {Promise} A list of presence events in their raw form.\n */\n getUserPresenceEvents: function getUserPresenceEvents() {\n return this._doCmd('getUserPresenceEvents');\n },\n\n _ensureStarted: function _ensureStarted() {\n if (this._startPromise === null) {\n this._worker = new this._workerApi(this._workerScript);\n this._worker.onmessage = this._onWorkerMessage.bind(this);\n\n // tell the worker the db name.\n this._startPromise = this._doCmd('_setupWorker', [this._dbName]).then(function () {\n _logger2.default.log(\"IndexedDB worker is ready\");\n });\n }\n return this._startPromise;\n },\n\n _doCmd: function _doCmd(cmd, args) {\n var _this3 = this;\n\n // wrap in a q so if the postMessage throws,\n // the promise automatically gets rejected\n return _bluebird2.default.resolve().then(function () {\n var seq = _this3._nextSeq++;\n var def = _bluebird2.default.defer();\n\n _this3._inFlight[seq] = def;\n\n _this3._worker.postMessage({\n command: cmd,\n seq: seq,\n args: args\n });\n\n return def.promise;\n });\n },\n\n _onWorkerMessage: function _onWorkerMessage(ev) {\n var msg = ev.data;\n\n if (msg.command == 'cmd_success' || msg.command == 'cmd_fail') {\n if (msg.seq === undefined) {\n _logger2.default.error(\"Got reply from worker with no seq\");\n return;\n }\n\n var def = this._inFlight[msg.seq];\n if (def === undefined) {\n _logger2.default.error(\"Got reply for unknown seq \" + msg.seq);\n return;\n }\n delete this._inFlight[msg.seq];\n\n if (msg.command == 'cmd_success') {\n def.resolve(msg.result);\n } else {\n var error = new Error(msg.error.message);\n error.name = msg.error.name;\n def.reject(error);\n }\n } else {\n _logger2.default.warn(\"Unrecognised message from worker: \" + msg);\n }\n }\n};\n\nexports.default = RemoteIndexedDBStoreBackend;\n//# sourceMappingURL=indexeddb-remote-backend.js.map","/*!\n * content-type\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * RegExp to match *( \";\" parameter ) in RFC 7231 sec 3.1.1.1\n *\n * parameter = token \"=\" ( token / quoted-string )\n * token = 1*tchar\n * tchar = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\"\n * / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n * / DIGIT / ALPHA\n * ; any VCHAR, except delimiters\n * quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE\n * qdtext = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text\n * obs-text = %x80-FF\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n */\nvar PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *(\"(?:[\\u000b\\u0020\\u0021\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\u000b\\u0020-\\u00ff])*\"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g\nvar TEXT_REGEXP = /^[\\u000b\\u0020-\\u007e\\u0080-\\u00ff]+$/\nvar TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * RegExp to match quoted-pair in RFC 7230 sec 3.2.6\n *\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n * obs-text = %x80-FF\n */\nvar QESC_REGEXP = /\\\\([\\u000b\\u0020-\\u00ff])/g\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 7230 sec 3.2.6\n */\nvar QUOTE_REGEXP = /([\\\\\"])/g\n\n/**\n * RegExp to match type in RFC 7231 sec 3.1.1.1\n *\n * media-type = type \"/\" subtype\n * type = token\n * subtype = token\n */\nvar TYPE_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * Module exports.\n * @public\n */\n\nexports.format = format\nexports.parse = parse\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @public\n */\n\nfunction format (obj) {\n if (!obj || typeof obj !== 'object') {\n throw new TypeError('argument obj is required')\n }\n\n var parameters = obj.parameters\n var type = obj.type\n\n if (!type || !TYPE_REGEXP.test(type)) {\n throw new TypeError('invalid type')\n }\n\n var string = type\n\n // append parameters\n if (parameters && typeof parameters === 'object') {\n var param\n var params = Object.keys(parameters).sort()\n\n for (var i = 0; i < params.length; i++) {\n param = params[i]\n\n if (!TOKEN_REGEXP.test(param)) {\n throw new TypeError('invalid parameter name')\n }\n\n string += '; ' + param + '=' + qstring(parameters[param])\n }\n }\n\n return string\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string|object} string\n * @return {Object}\n * @public\n */\n\nfunction parse (string) {\n if (!string) {\n throw new TypeError('argument string is required')\n }\n\n // support req/res-like objects as argument\n var header = typeof string === 'object'\n ? getcontenttype(string)\n : string\n\n if (typeof header !== 'string') {\n throw new TypeError('argument string is required to be a string')\n }\n\n var index = header.indexOf(';')\n var type = index !== -1\n ? header.substr(0, index).trim()\n : header.trim()\n\n if (!TYPE_REGEXP.test(type)) {\n throw new TypeError('invalid media type')\n }\n\n var obj = new ContentType(type.toLowerCase())\n\n // parse parameters\n if (index !== -1) {\n var key\n var match\n var value\n\n PARAM_REGEXP.lastIndex = index\n\n while ((match = PARAM_REGEXP.exec(header))) {\n if (match.index !== index) {\n throw new TypeError('invalid parameter format')\n }\n\n index += match[0].length\n key = match[1].toLowerCase()\n value = match[2]\n\n if (value[0] === '\"') {\n // remove quotes and escapes\n value = value\n .substr(1, value.length - 2)\n .replace(QESC_REGEXP, '$1')\n }\n\n obj.parameters[key] = value\n }\n\n if (index !== header.length) {\n throw new TypeError('invalid parameter format')\n }\n }\n\n return obj\n}\n\n/**\n * Get content-type from req/res objects.\n *\n * @param {object}\n * @return {Object}\n * @private\n */\n\nfunction getcontenttype (obj) {\n var header\n\n if (typeof obj.getHeader === 'function') {\n // res-like\n header = obj.getHeader('content-type')\n } else if (typeof obj.headers === 'object') {\n // req-like\n header = obj.headers && obj.headers['content-type']\n }\n\n if (typeof header !== 'string') {\n throw new TypeError('content-type header is missing from object')\n }\n\n return header\n}\n\n/**\n * Quote a string if necessary.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction qstring (val) {\n var str = String(val)\n\n // no need to quote tokens\n if (TOKEN_REGEXP.test(str)) {\n return str\n }\n\n if (str.length > 0 && !TEXT_REGEXP.test(str)) {\n throw new TypeError('invalid parameter value')\n }\n\n return '\"' + str.replace(QUOTE_REGEXP, '\\\\$1') + '\"'\n}\n\n/**\n * Class to represent a content type.\n * @private\n */\nfunction ContentType (type) {\n this.parameters = Object.create(null)\n this.type = type\n}\n","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/* A re-implementation of the javascript callback functions (setTimeout,\n * clearTimeout; setInterval and clearInterval are not yet implemented) which\n * try to improve handling of large clock jumps (as seen when\n * suspending/resuming the system).\n *\n * In particular, if a timeout would have fired while the system was suspended,\n * it will instead fire as soon as possible after resume.\n */\n\n\"use strict\";\n\nvar _logger = require(\"../src/logger\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// we schedule a callback at least this often, to check if we've missed out on\n// some wall-clock time due to being suspended.\nvar TIMER_CHECK_PERIOD_MS = 1000;\n\n// counter, for making up ids to return from setTimeout\nvar _count = 0;\n\n// the key for our callback with the real global.setTimeout\nvar _realCallbackKey = void 0;\n\n// a sorted list of the callbacks to be run.\n// each is an object with keys [runAt, func, params, key].\nvar _callbackList = [];\n\n// var debuglog = logger.log.bind(logger);\nvar debuglog = function debuglog() {};\n\n/**\n * Replace the function used by this module to get the current time.\n *\n * Intended for use by the unit tests.\n *\n * @param {function} f function which should return a millisecond counter\n *\n * @internal\n */\nmodule.exports.setNow = function (f) {\n _now = f || Date.now;\n};\nvar _now = Date.now;\n\n/**\n * reimplementation of window.setTimeout, which will call the callback if\n * the wallclock time goes past the deadline.\n *\n * @param {function} func callback to be called after a delay\n * @param {Number} delayMs number of milliseconds to delay by\n *\n * @return {Number} an identifier for this callback, which may be passed into\n * clearTimeout later.\n */\nmodule.exports.setTimeout = function (func, delayMs) {\n delayMs = delayMs || 0;\n if (delayMs < 0) {\n delayMs = 0;\n }\n\n var params = Array.prototype.slice.call(arguments, 2);\n var runAt = _now() + delayMs;\n var key = _count++;\n debuglog(\"setTimeout: scheduling cb\", key, \"at\", runAt, \"(delay\", delayMs, \")\");\n var data = {\n runAt: runAt,\n func: func,\n params: params,\n key: key\n };\n\n // figure out where it goes in the list\n var idx = binarySearch(_callbackList, function (el) {\n return el.runAt - runAt;\n });\n\n _callbackList.splice(idx, 0, data);\n _scheduleRealCallback();\n\n return key;\n};\n\n/**\n * reimplementation of window.clearTimeout, which mirrors setTimeout\n *\n * @param {Number} key result from an earlier setTimeout call\n */\nmodule.exports.clearTimeout = function (key) {\n if (_callbackList.length === 0) {\n return;\n }\n\n // remove the element from the list\n var i = void 0;\n for (i = 0; i < _callbackList.length; i++) {\n var cb = _callbackList[i];\n if (cb.key == key) {\n _callbackList.splice(i, 1);\n break;\n }\n }\n\n // iff it was the first one in the list, reschedule our callback.\n if (i === 0) {\n _scheduleRealCallback();\n }\n};\n\n// use the real global.setTimeout to schedule a callback to _runCallbacks.\nfunction _scheduleRealCallback() {\n if (_realCallbackKey) {\n global.clearTimeout(_realCallbackKey);\n }\n\n var first = _callbackList[0];\n\n if (!first) {\n debuglog(\"_scheduleRealCallback: no more callbacks, not rescheduling\");\n return;\n }\n\n var now = _now();\n var delayMs = Math.min(first.runAt - now, TIMER_CHECK_PERIOD_MS);\n\n debuglog(\"_scheduleRealCallback: now:\", now, \"delay:\", delayMs);\n _realCallbackKey = global.setTimeout(_runCallbacks, delayMs);\n}\n\nfunction _runCallbacks() {\n var cb = void 0;\n var now = _now();\n debuglog(\"_runCallbacks: now:\", now);\n\n // get the list of things to call\n var callbacksToRun = [];\n while (true) {\n var first = _callbackList[0];\n if (!first || first.runAt > now) {\n break;\n }\n cb = _callbackList.shift();\n debuglog(\"_runCallbacks: popping\", cb.key);\n callbacksToRun.push(cb);\n }\n\n // reschedule the real callback before running our functions, to\n // keep the codepaths the same whether or not our functions\n // register their own setTimeouts.\n _scheduleRealCallback();\n\n for (var i = 0; i < callbacksToRun.length; i++) {\n cb = callbacksToRun[i];\n try {\n cb.func.apply(global, cb.params);\n } catch (e) {\n _logger2.default.error(\"Uncaught exception in callback function\", e.stack || e);\n }\n }\n}\n\n/* search in a sorted array.\n *\n * returns the index of the last element for which func returns\n * greater than zero, or array.length if no such element exists.\n */\nfunction binarySearch(array, func) {\n // min is inclusive, max exclusive.\n var min = 0,\n max = array.length;\n\n while (min < max) {\n var mid = min + max >> 1;\n var res = func(array[mid]);\n if (res > 0) {\n // the element at 'mid' is too big; set it as the new max.\n max = mid;\n } else {\n // the element at 'mid' is too small. 'min' is inclusive, so +1.\n min = mid + 1;\n }\n }\n // presumably, min==max now.\n return min;\n}\n//# sourceMappingURL=realtime-callbacks.js.map","module.exports = { \"default\": require(\"core-js/library/fn/reflect/get-prototype-of\"), __esModule: true };","require('../../modules/es6.reflect.get-prototype-of');\nmodule.exports = require('../../modules/_core').Reflect.getPrototypeOf;\n","// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = require('./_export');\nvar getProto = require('./_object-gpo');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getPrototypeOf: function getPrototypeOf(target) {\n return getProto(anObject(target));\n }\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/reflect/set-prototype-of\"), __esModule: true };","require('../../modules/es6.reflect.set-prototype-of');\nmodule.exports = require('../../modules/_core').Reflect.setPrototypeOf;\n","// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = require('./_export');\nvar setProto = require('./_set-proto');\n\nif (setProto) $export($export.S, 'Reflect', {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n setProto.check(target, proto);\n try {\n setProto.set(target, proto);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","require('../../modules/es6.reflect.construct');\nmodule.exports = require('../../modules/_core').Reflect.construct;\n","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.set');\nrequire('../modules/es7.set.to-json');\nrequire('../modules/es7.set.of');\nrequire('../modules/es7.set.from');\nmodule.exports = require('../modules/_core').Set;\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Set', { toJSON: require('./_collection-to-json')('Set') });\n","var forOf = require('./_for-of');\n\nmodule.exports = function (iter, ITERATOR) {\n var result = [];\n forOf(iter, false, result.push, result, ITERATOR);\n return result;\n};\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of\nrequire('./_set-collection-of')('Set');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from\nrequire('./_set-collection-from')('Set');\n","require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _indexeddbCryptoStore = require('./store/indexeddb-crypto-store');\n\nvar _indexeddbCryptoStore2 = _interopRequireDefault(_indexeddbCryptoStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @alias module:crypto/RoomList\n */\nvar RoomList = function () {\n function RoomList(cryptoStore) {\n (0, _classCallCheck3.default)(this, RoomList);\n\n this._cryptoStore = cryptoStore;\n\n // Object of roomId -> room e2e info object (body of the m.room.encryption event)\n this._roomEncryption = {};\n }\n\n (0, _createClass3.default)(RoomList, [{\n key: 'init',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var _this = this;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ROOMS], function (txn) {\n _this._cryptoStore.getEndToEndRooms(txn, function (result) {\n _this._roomEncryption = result;\n });\n }));\n\n case 2:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function init() {\n return _ref.apply(this, arguments);\n }\n\n return init;\n }()\n }, {\n key: 'getRoomEncryption',\n value: function getRoomEncryption(roomId) {\n return this._roomEncryption[roomId] || null;\n }\n }, {\n key: 'isRoomEncrypted',\n value: function isRoomEncrypted(roomId) {\n return Boolean(this.getRoomEncryption(roomId));\n }\n }, {\n key: 'setRoomEncryption',\n value: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(roomId, roomInfo) {\n var _this2 = this;\n\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n // important that this happens before calling into the store\n // as it prevents the Crypto::setRoomEncryption from calling\n // this twice for consecutive m.room.encryption events\n this._roomEncryption[roomId] = roomInfo;\n _context2.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ROOMS], function (txn) {\n _this2._cryptoStore.storeEndToEndRoom(roomId, roomInfo, txn);\n }));\n\n case 3:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function setRoomEncryption(_x, _x2) {\n return _ref2.apply(this, arguments);\n }\n\n return setRoomEncryption;\n }()\n }]);\n return RoomList;\n}(); /*\n Copyright 2018, 2019 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/**\n * @module crypto/RoomList\n *\n * Manages the list of encrypted rooms\n */\n\nexports.default = RoomList;\n//# sourceMappingURL=RoomList.js.map","require('../../modules/es7.object.values');\nmodule.exports = require('../../modules/_core').Object.values;\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Backend = exports.VERSION = undefined;\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.upgradeDatabase = upgradeDatabase;\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _logger = require('../../logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _utils = require('../../utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar VERSION = exports.VERSION = 7;\n\n/**\n * Implementation of a CryptoStore which is backed by an existing\n * IndexedDB connection. Generally you want IndexedDBCryptoStore\n * which connects to the database and defers to one of these.\n *\n * @implements {module:crypto/store/base~CryptoStore}\n */\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar Backend = exports.Backend = function () {\n /**\n * @param {IDBDatabase} db\n */\n function Backend(db) {\n var _this = this;\n\n (0, _classCallCheck3.default)(this, Backend);\n\n this._db = db;\n\n // make sure we close the db on `onversionchange` - otherwise\n // attempts to delete the database will block (and subsequent\n // attempts to re-create it will also block).\n db.onversionchange = function (ev) {\n _logger2.default.log('versionchange for indexeddb ' + _this._dbName + ': closing');\n db.close();\n };\n }\n\n /**\n * Look for an existing outgoing room key request, and if none is found,\n * add a new one\n *\n * @param {module:crypto/store/base~OutgoingRoomKeyRequest} request\n *\n * @returns {Promise} resolves to\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}: either the\n * same instance as passed in, or the existing one.\n */\n\n\n (0, _createClass3.default)(Backend, [{\n key: 'getOrAddOutgoingRoomKeyRequest',\n value: function getOrAddOutgoingRoomKeyRequest(request) {\n var requestBody = request.requestBody;\n\n var deferred = _bluebird2.default.defer();\n var txn = this._db.transaction(\"outgoingRoomKeyRequests\", \"readwrite\");\n txn.onerror = deferred.reject;\n\n // first see if we already have an entry for this request.\n this._getOutgoingRoomKeyRequest(txn, requestBody, function (existing) {\n if (existing) {\n // this entry matches the request - return it.\n _logger2.default.log('already have key request outstanding for ' + (requestBody.room_id + ' / ' + requestBody.session_id + ': ') + 'not sending another');\n deferred.resolve(existing);\n return;\n }\n\n // we got to the end of the list without finding a match\n // - add the new request.\n _logger2.default.log('enqueueing key request for ' + requestBody.room_id + ' / ' + requestBody.session_id);\n txn.oncomplete = function () {\n deferred.resolve(request);\n };\n var store = txn.objectStore(\"outgoingRoomKeyRequests\");\n store.add(request);\n });\n\n return deferred.promise;\n }\n\n /**\n * Look for an existing room key request\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * existing request to look for\n *\n * @return {Promise} resolves to the matching\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if\n * not found\n */\n\n }, {\n key: 'getOutgoingRoomKeyRequest',\n value: function getOutgoingRoomKeyRequest(requestBody) {\n var deferred = _bluebird2.default.defer();\n\n var txn = this._db.transaction(\"outgoingRoomKeyRequests\", \"readonly\");\n txn.onerror = deferred.reject;\n\n this._getOutgoingRoomKeyRequest(txn, requestBody, function (existing) {\n deferred.resolve(existing);\n });\n return deferred.promise;\n }\n\n /**\n * look for an existing room key request in the db\n *\n * @private\n * @param {IDBTransaction} txn database transaction\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * existing request to look for\n * @param {Function} callback function to call with the results of the\n * search. Either passed a matching\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if\n * not found.\n */\n\n }, {\n key: '_getOutgoingRoomKeyRequest',\n value: function _getOutgoingRoomKeyRequest(txn, requestBody, callback) {\n var store = txn.objectStore(\"outgoingRoomKeyRequests\");\n\n var idx = store.index(\"session\");\n var cursorReq = idx.openCursor([requestBody.room_id, requestBody.session_id]);\n\n cursorReq.onsuccess = function (ev) {\n var cursor = ev.target.result;\n if (!cursor) {\n // no match found\n callback(null);\n return;\n }\n\n var existing = cursor.value;\n\n if (_utils2.default.deepCompare(existing.requestBody, requestBody)) {\n // got a match\n callback(existing);\n return;\n }\n\n // look at the next entry in the index\n cursor.continue();\n };\n }\n\n /**\n * Look for room key requests by state\n *\n * @param {Array} wantedStates list of acceptable states\n *\n * @return {Promise} resolves to the a\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if\n * there are no pending requests in those states. If there are multiple\n * requests in those states, an arbitrary one is chosen.\n */\n\n }, {\n key: 'getOutgoingRoomKeyRequestByState',\n value: function getOutgoingRoomKeyRequestByState(wantedStates) {\n if (wantedStates.length === 0) {\n return _bluebird2.default.resolve(null);\n }\n\n // this is a bit tortuous because we need to make sure we do the lookup\n // in a single transaction, to avoid having a race with the insertion\n // code.\n\n // index into the wantedStates array\n var stateIndex = 0;\n var result = void 0;\n\n function onsuccess(ev) {\n var cursor = ev.target.result;\n if (cursor) {\n // got a match\n result = cursor.value;\n return;\n }\n\n // try the next state in the list\n stateIndex++;\n if (stateIndex >= wantedStates.length) {\n // no matches\n return;\n }\n\n var wantedState = wantedStates[stateIndex];\n var cursorReq = ev.target.source.openCursor(wantedState);\n cursorReq.onsuccess = onsuccess;\n }\n\n var txn = this._db.transaction(\"outgoingRoomKeyRequests\", \"readonly\");\n var store = txn.objectStore(\"outgoingRoomKeyRequests\");\n\n var wantedState = wantedStates[stateIndex];\n var cursorReq = store.index(\"state\").openCursor(wantedState);\n cursorReq.onsuccess = onsuccess;\n\n return promiseifyTxn(txn).then(function () {\n return result;\n });\n }\n }, {\n key: 'getOutgoingRoomKeyRequestsByTarget',\n value: function getOutgoingRoomKeyRequestsByTarget(userId, deviceId, wantedStates) {\n var stateIndex = 0;\n var results = [];\n\n function onsuccess(ev) {\n var cursor = ev.target.result;\n if (cursor) {\n var keyReq = cursor.value;\n if (keyReq.recipients.includes({ userId: userId, deviceId: deviceId })) {\n results.push(keyReq);\n }\n cursor.continue();\n } else {\n // try the next state in the list\n stateIndex++;\n if (stateIndex >= wantedStates.length) {\n // no matches\n return;\n }\n\n var _wantedState = wantedStates[stateIndex];\n var _cursorReq = ev.target.source.openCursor(_wantedState);\n _cursorReq.onsuccess = onsuccess;\n }\n }\n\n var txn = this._db.transaction(\"outgoingRoomKeyRequests\", \"readonly\");\n var store = txn.objectStore(\"outgoingRoomKeyRequests\");\n\n var wantedState = wantedStates[stateIndex];\n var cursorReq = store.index(\"state\").openCursor(wantedState);\n cursorReq.onsuccess = onsuccess;\n\n return promiseifyTxn(txn).then(function () {\n return results;\n });\n }\n\n /**\n * Look for an existing room key request by id and state, and update it if\n * found\n *\n * @param {string} requestId ID of request to update\n * @param {number} expectedState state we expect to find the request in\n * @param {Object} updates name/value map of updates to apply\n *\n * @returns {Promise} resolves to\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}\n * updated request, or null if no matching row was found\n */\n\n }, {\n key: 'updateOutgoingRoomKeyRequest',\n value: function updateOutgoingRoomKeyRequest(requestId, expectedState, updates) {\n var result = null;\n\n function onsuccess(ev) {\n var cursor = ev.target.result;\n if (!cursor) {\n return;\n }\n var data = cursor.value;\n if (data.state != expectedState) {\n _logger2.default.warn('Cannot update room key request from ' + expectedState + ' ' + ('as it was already updated to ' + data.state));\n return;\n }\n (0, _assign2.default)(data, updates);\n cursor.update(data);\n result = data;\n }\n\n var txn = this._db.transaction(\"outgoingRoomKeyRequests\", \"readwrite\");\n var cursorReq = txn.objectStore(\"outgoingRoomKeyRequests\").openCursor(requestId);\n cursorReq.onsuccess = onsuccess;\n return promiseifyTxn(txn).then(function () {\n return result;\n });\n }\n\n /**\n * Look for an existing room key request by id and state, and delete it if\n * found\n *\n * @param {string} requestId ID of request to update\n * @param {number} expectedState state we expect to find the request in\n *\n * @returns {Promise} resolves once the operation is completed\n */\n\n }, {\n key: 'deleteOutgoingRoomKeyRequest',\n value: function deleteOutgoingRoomKeyRequest(requestId, expectedState) {\n var txn = this._db.transaction(\"outgoingRoomKeyRequests\", \"readwrite\");\n var cursorReq = txn.objectStore(\"outgoingRoomKeyRequests\").openCursor(requestId);\n cursorReq.onsuccess = function (ev) {\n var cursor = ev.target.result;\n if (!cursor) {\n return;\n }\n var data = cursor.value;\n if (data.state != expectedState) {\n _logger2.default.warn('Cannot delete room key request in state ' + data.state + ' ' + ('(expected ' + expectedState + ')'));\n return;\n }\n cursor.delete();\n };\n return promiseifyTxn(txn);\n }\n\n // Olm Account\n\n }, {\n key: 'getAccount',\n value: function getAccount(txn, func) {\n var objectStore = txn.objectStore(\"account\");\n var getReq = objectStore.get(\"-\");\n getReq.onsuccess = function () {\n try {\n func(getReq.result || null);\n } catch (e) {\n abortWithException(txn, e);\n }\n };\n }\n }, {\n key: 'storeAccount',\n value: function storeAccount(txn, newData) {\n var objectStore = txn.objectStore(\"account\");\n objectStore.put(newData, \"-\");\n }\n\n // Olm Sessions\n\n }, {\n key: 'countEndToEndSessions',\n value: function countEndToEndSessions(txn, func) {\n var objectStore = txn.objectStore(\"sessions\");\n var countReq = objectStore.count();\n countReq.onsuccess = function () {\n func(countReq.result);\n };\n }\n }, {\n key: 'getEndToEndSessions',\n value: function getEndToEndSessions(deviceKey, txn, func) {\n var objectStore = txn.objectStore(\"sessions\");\n var idx = objectStore.index(\"deviceKey\");\n var getReq = idx.openCursor(deviceKey);\n var results = {};\n getReq.onsuccess = function () {\n var cursor = getReq.result;\n if (cursor) {\n results[cursor.value.sessionId] = {\n session: cursor.value.session,\n lastReceivedMessageTs: cursor.value.lastReceivedMessageTs\n };\n cursor.continue();\n } else {\n try {\n func(results);\n } catch (e) {\n abortWithException(txn, e);\n }\n }\n };\n }\n }, {\n key: 'getEndToEndSession',\n value: function getEndToEndSession(deviceKey, sessionId, txn, func) {\n var objectStore = txn.objectStore(\"sessions\");\n var getReq = objectStore.get([deviceKey, sessionId]);\n getReq.onsuccess = function () {\n try {\n if (getReq.result) {\n func({\n session: getReq.result.session,\n lastReceivedMessageTs: getReq.result.lastReceivedMessageTs\n });\n } else {\n func(null);\n }\n } catch (e) {\n abortWithException(txn, e);\n }\n };\n }\n }, {\n key: 'getAllEndToEndSessions',\n value: function getAllEndToEndSessions(txn, func) {\n var objectStore = txn.objectStore(\"sessions\");\n var getReq = objectStore.openCursor();\n getReq.onsuccess = function () {\n var cursor = getReq.result;\n if (cursor) {\n func(cursor.value);\n cursor.continue();\n } else {\n try {\n func(null);\n } catch (e) {\n abortWithException(txn, e);\n }\n }\n };\n }\n }, {\n key: 'storeEndToEndSession',\n value: function storeEndToEndSession(deviceKey, sessionId, sessionInfo, txn) {\n var objectStore = txn.objectStore(\"sessions\");\n objectStore.put({\n deviceKey: deviceKey,\n sessionId: sessionId,\n session: sessionInfo.session,\n lastReceivedMessageTs: sessionInfo.lastReceivedMessageTs\n });\n }\n\n // Inbound group sessions\n\n }, {\n key: 'getEndToEndInboundGroupSession',\n value: function getEndToEndInboundGroupSession(senderCurve25519Key, sessionId, txn, func) {\n var objectStore = txn.objectStore(\"inbound_group_sessions\");\n var getReq = objectStore.get([senderCurve25519Key, sessionId]);\n getReq.onsuccess = function () {\n try {\n if (getReq.result) {\n func(getReq.result.session);\n } else {\n func(null);\n }\n } catch (e) {\n abortWithException(txn, e);\n }\n };\n }\n }, {\n key: 'getAllEndToEndInboundGroupSessions',\n value: function getAllEndToEndInboundGroupSessions(txn, func) {\n var objectStore = txn.objectStore(\"inbound_group_sessions\");\n var getReq = objectStore.openCursor();\n getReq.onsuccess = function () {\n var cursor = getReq.result;\n if (cursor) {\n try {\n func({\n senderKey: cursor.value.senderCurve25519Key,\n sessionId: cursor.value.sessionId,\n sessionData: cursor.value.session\n });\n } catch (e) {\n abortWithException(txn, e);\n }\n cursor.continue();\n } else {\n try {\n func(null);\n } catch (e) {\n abortWithException(txn, e);\n }\n }\n };\n }\n }, {\n key: 'addEndToEndInboundGroupSession',\n value: function addEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {\n var objectStore = txn.objectStore(\"inbound_group_sessions\");\n var addReq = objectStore.add({\n senderCurve25519Key: senderCurve25519Key, sessionId: sessionId, session: sessionData\n });\n addReq.onerror = function (ev) {\n if (addReq.error.name === 'ConstraintError') {\n // This stops the error from triggering the txn's onerror\n ev.stopPropagation();\n // ...and this stops it from aborting the transaction\n ev.preventDefault();\n _logger2.default.log(\"Ignoring duplicate inbound group session: \" + senderCurve25519Key + \" / \" + sessionId);\n } else {\n abortWithException(txn, new Error(\"Failed to add inbound group session: \" + addReq.error));\n }\n };\n }\n }, {\n key: 'storeEndToEndInboundGroupSession',\n value: function storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {\n var objectStore = txn.objectStore(\"inbound_group_sessions\");\n objectStore.put({\n senderCurve25519Key: senderCurve25519Key, sessionId: sessionId, session: sessionData\n });\n }\n }, {\n key: 'getEndToEndDeviceData',\n value: function getEndToEndDeviceData(txn, func) {\n var objectStore = txn.objectStore(\"device_data\");\n var getReq = objectStore.get(\"-\");\n getReq.onsuccess = function () {\n try {\n func(getReq.result || null);\n } catch (e) {\n abortWithException(txn, e);\n }\n };\n }\n }, {\n key: 'storeEndToEndDeviceData',\n value: function storeEndToEndDeviceData(deviceData, txn) {\n var objectStore = txn.objectStore(\"device_data\");\n objectStore.put(deviceData, \"-\");\n }\n }, {\n key: 'storeEndToEndRoom',\n value: function storeEndToEndRoom(roomId, roomInfo, txn) {\n var objectStore = txn.objectStore(\"rooms\");\n objectStore.put(roomInfo, roomId);\n }\n }, {\n key: 'getEndToEndRooms',\n value: function getEndToEndRooms(txn, func) {\n var rooms = {};\n var objectStore = txn.objectStore(\"rooms\");\n var getReq = objectStore.openCursor();\n getReq.onsuccess = function () {\n var cursor = getReq.result;\n if (cursor) {\n rooms[cursor.key] = cursor.value;\n cursor.continue();\n } else {\n try {\n func(rooms);\n } catch (e) {\n abortWithException(txn, e);\n }\n }\n };\n }\n\n // session backups\n\n }, {\n key: 'getSessionsNeedingBackup',\n value: function getSessionsNeedingBackup(limit) {\n var _this2 = this;\n\n return new _bluebird2.default(function (resolve, reject) {\n var sessions = [];\n\n var txn = _this2._db.transaction([\"sessions_needing_backup\", \"inbound_group_sessions\"], \"readonly\");\n txn.onerror = reject;\n txn.oncomplete = function () {\n resolve(sessions);\n };\n var objectStore = txn.objectStore(\"sessions_needing_backup\");\n var sessionStore = txn.objectStore(\"inbound_group_sessions\");\n var getReq = objectStore.openCursor();\n getReq.onsuccess = function () {\n var cursor = getReq.result;\n if (cursor) {\n var sessionGetReq = sessionStore.get(cursor.key);\n sessionGetReq.onsuccess = function () {\n sessions.push({\n senderKey: sessionGetReq.result.senderCurve25519Key,\n sessionId: sessionGetReq.result.sessionId,\n sessionData: sessionGetReq.result.session\n });\n };\n if (!limit || sessions.length < limit) {\n cursor.continue();\n }\n }\n };\n });\n }\n }, {\n key: 'countSessionsNeedingBackup',\n value: function countSessionsNeedingBackup(txn) {\n if (!txn) {\n txn = this._db.transaction(\"sessions_needing_backup\", \"readonly\");\n }\n var objectStore = txn.objectStore(\"sessions_needing_backup\");\n return new _bluebird2.default(function (resolve, reject) {\n var req = objectStore.count();\n req.onerror = reject;\n req.onsuccess = function () {\n return resolve(req.result);\n };\n });\n }\n }, {\n key: 'unmarkSessionsNeedingBackup',\n value: function unmarkSessionsNeedingBackup(sessions, txn) {\n if (!txn) {\n txn = this._db.transaction(\"sessions_needing_backup\", \"readwrite\");\n }\n var objectStore = txn.objectStore(\"sessions_needing_backup\");\n return _bluebird2.default.all(sessions.map(function (session) {\n return new _bluebird2.default(function (resolve, reject) {\n var req = objectStore.delete([session.senderKey, session.sessionId]);\n req.onsuccess = resolve;\n req.onerror = reject;\n });\n }));\n }\n }, {\n key: 'markSessionsNeedingBackup',\n value: function markSessionsNeedingBackup(sessions, txn) {\n if (!txn) {\n txn = this._db.transaction(\"sessions_needing_backup\", \"readwrite\");\n }\n var objectStore = txn.objectStore(\"sessions_needing_backup\");\n return _bluebird2.default.all(sessions.map(function (session) {\n return new _bluebird2.default(function (resolve, reject) {\n var req = objectStore.put({\n senderCurve25519Key: session.senderKey,\n sessionId: session.sessionId\n });\n req.onsuccess = resolve;\n req.onerror = reject;\n });\n }));\n }\n }, {\n key: 'doTxn',\n value: function doTxn(mode, stores, func) {\n var txn = this._db.transaction(stores, mode);\n var promise = promiseifyTxn(txn);\n var result = func(txn);\n return promise.then(function () {\n return result;\n });\n }\n }]);\n return Backend;\n}();\n\nfunction upgradeDatabase(db, oldVersion) {\n _logger2.default.log('Upgrading IndexedDBCryptoStore from version ' + oldVersion + (' to ' + VERSION));\n if (oldVersion < 1) {\n // The database did not previously exist.\n createDatabase(db);\n }\n if (oldVersion < 2) {\n db.createObjectStore(\"account\");\n }\n if (oldVersion < 3) {\n var sessionsStore = db.createObjectStore(\"sessions\", {\n keyPath: [\"deviceKey\", \"sessionId\"]\n });\n sessionsStore.createIndex(\"deviceKey\", \"deviceKey\");\n }\n if (oldVersion < 4) {\n db.createObjectStore(\"inbound_group_sessions\", {\n keyPath: [\"senderCurve25519Key\", \"sessionId\"]\n });\n }\n if (oldVersion < 5) {\n db.createObjectStore(\"device_data\");\n }\n if (oldVersion < 6) {\n db.createObjectStore(\"rooms\");\n }\n if (oldVersion < 7) {\n db.createObjectStore(\"sessions_needing_backup\", {\n keyPath: [\"senderCurve25519Key\", \"sessionId\"]\n });\n }\n // Expand as needed.\n}\n\nfunction createDatabase(db) {\n var outgoingRoomKeyRequestsStore = db.createObjectStore(\"outgoingRoomKeyRequests\", { keyPath: \"requestId\" });\n\n // we assume that the RoomKeyRequestBody will have room_id and session_id\n // properties, to make the index efficient.\n outgoingRoomKeyRequestsStore.createIndex(\"session\", [\"requestBody.room_id\", \"requestBody.session_id\"]);\n\n outgoingRoomKeyRequestsStore.createIndex(\"state\", \"state\");\n}\n\n/*\n * Aborts a transaction with a given exception\n * The transaction promise will be rejected with this exception.\n */\nfunction abortWithException(txn, e) {\n // We cheekily stick our exception onto the transaction object here\n // We could alternatively make the thing we pass back to the app\n // an object containing the transaction and exception.\n txn._mx_abortexception = e;\n try {\n txn.abort();\n } catch (e) {\n // sometimes we won't be able to abort the transaction\n // (ie. if it's aborted or completed)\n }\n}\n\nfunction promiseifyTxn(txn) {\n return new _bluebird2.default(function (resolve, reject) {\n txn.oncomplete = function () {\n if (txn._mx_abortexception !== undefined) {\n reject(txn._mx_abortexception);\n }\n resolve();\n };\n txn.onerror = function (event) {\n if (txn._mx_abortexception !== undefined) {\n reject(txn._mx_abortexception);\n } else {\n _logger2.default.log(\"Error performing indexeddb txn\", event);\n reject(event.target.error);\n }\n };\n txn.onabort = function (event) {\n if (txn._mx_abortexception !== undefined) {\n reject(txn._mx_abortexception);\n } else {\n _logger2.default.log(\"Error performing indexeddb txn\", event);\n reject(event.target.error);\n }\n };\n });\n}\n//# sourceMappingURL=indexeddb-crypto-store-backend.js.map","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.map');\nrequire('../modules/es7.map.to-json');\nrequire('../modules/es7.map.of');\nrequire('../modules/es7.map.from');\nmodule.exports = require('../modules/_core').Map;\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Map', { toJSON: require('./_collection-to-json')('Map') });\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of\nrequire('./_set-collection-of')('Map');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from\nrequire('./_set-collection-from')('Map');\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _logger = require('../logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _utils = require('../utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Internal module. Management of outgoing room key requests.\n *\n * See https://docs.google.com/document/d/1m4gQkcnJkxNuBmb5NoFCIadIY-DyqqNAS3lloE73BlQ\n * for draft documentation on what we're supposed to be implementing here.\n *\n * @module\n */\n\n// delay between deciding we want some keys, and sending out the request, to\n// allow for (a) it turning up anyway, (b) grouping requests together\nvar SEND_KEY_REQUESTS_DELAY_MS = 500;\n\n/** possible states for a room key request\n *\n * The state machine looks like:\n *\n * | (cancellation sent)\n * | .-------------------------------------------------.\n * | | |\n * V V (cancellation requested) |\n * UNSENT -----------------------------+ |\n * | | |\n * | | |\n * | (send successful) | CANCELLATION_PENDING_AND_WILL_RESEND\n * V | Λ\n * SENT | |\n * |-------------------------------- | --------------'\n * | | (cancellation requested with intent\n * | | to resend the original request)\n * | |\n * | (cancellation requested) |\n * V |\n * CANCELLATION_PENDING |\n * | |\n * | (cancellation sent) |\n * V |\n * (deleted) <---------------------------+\n *\n * @enum {number}\n */\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar ROOM_KEY_REQUEST_STATES = {\n /** request not yet sent */\n UNSENT: 0,\n\n /** request sent, awaiting reply */\n SENT: 1,\n\n /** reply received, cancellation not yet sent */\n CANCELLATION_PENDING: 2,\n\n /**\n * Cancellation not yet sent and will transition to UNSENT instead of\n * being deleted once the cancellation has been sent.\n */\n CANCELLATION_PENDING_AND_WILL_RESEND: 3\n};\n\nvar OutgoingRoomKeyRequestManager = function () {\n function OutgoingRoomKeyRequestManager(baseApis, deviceId, cryptoStore) {\n (0, _classCallCheck3.default)(this, OutgoingRoomKeyRequestManager);\n\n this._baseApis = baseApis;\n this._deviceId = deviceId;\n this._cryptoStore = cryptoStore;\n\n // handle for the delayed call to _sendOutgoingRoomKeyRequests. Non-null\n // if the callback has been set, or if it is still running.\n this._sendOutgoingRoomKeyRequestsTimer = null;\n\n // sanity check to ensure that we don't end up with two concurrent runs\n // of _sendOutgoingRoomKeyRequests\n this._sendOutgoingRoomKeyRequestsRunning = false;\n\n this._clientRunning = false;\n }\n\n /**\n * Called when the client is started. Sets background processes running.\n */\n\n\n (0, _createClass3.default)(OutgoingRoomKeyRequestManager, [{\n key: 'start',\n value: function start() {\n this._clientRunning = true;\n\n // set the timer going, to handle any requests which didn't get sent\n // on the previous run of the client.\n this._startTimer();\n }\n\n /**\n * Called when the client is stopped. Stops any running background processes.\n */\n\n }, {\n key: 'stop',\n value: function stop() {\n _logger2.default.log('stopping OutgoingRoomKeyRequestManager');\n // stop the timer on the next run\n this._clientRunning = false;\n }\n\n /**\n * Send off a room key request, if we haven't already done so.\n *\n * The `requestBody` is compared (with a deep-equality check) against\n * previous queued or sent requests and if it matches, no change is made.\n * Otherwise, a request is added to the pending list, and a job is started\n * in the background to send it.\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * @param {Array<{userId: string, deviceId: string}>} recipients\n * @param {boolean} resend whether to resend the key request if there is\n * already one\n *\n * @returns {Promise} resolves when the request has been added to the\n * pending list (or we have established that a similar request already\n * exists)\n */\n\n }, {\n key: 'sendRoomKeyRequest',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(requestBody, recipients) {\n var resend = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var req, state, _state, updatedReq;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(this._cryptoStore.getOutgoingRoomKeyRequest(requestBody));\n\n case 2:\n req = _context.sent;\n\n if (req) {\n _context.next = 8;\n break;\n }\n\n _context.next = 6;\n return (0, _bluebird.resolve)(this._cryptoStore.getOrAddOutgoingRoomKeyRequest({\n requestBody: requestBody,\n recipients: recipients,\n requestId: this._baseApis.makeTxnId(),\n state: ROOM_KEY_REQUEST_STATES.UNSENT\n }));\n\n case 6:\n _context.next = 35;\n break;\n\n case 8:\n _context.t0 = req.state;\n _context.next = _context.t0 === ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND ? 11 : _context.t0 === ROOM_KEY_REQUEST_STATES.UNSENT ? 11 : _context.t0 === ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING ? 12 : _context.t0 === ROOM_KEY_REQUEST_STATES.SENT ? 16 : 34;\n break;\n\n case 11:\n return _context.abrupt('return');\n\n case 12:\n // existing request is about to be cancelled. If we want to\n // resend, then change the state so that it resends after\n // cancelling. Otherwise, just cancel the cancellation.\n state = resend ? ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND : ROOM_KEY_REQUEST_STATES.SENT;\n _context.next = 15;\n return (0, _bluebird.resolve)(this._cryptoStore.updateOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING, {\n state: state,\n cancellationTxnId: this._baseApis.makeTxnId()\n }));\n\n case 15:\n return _context.abrupt('break', 35);\n\n case 16:\n if (!resend) {\n _context.next = 33;\n break;\n }\n\n _state = ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND;\n _context.next = 20;\n return (0, _bluebird.resolve)(this._cryptoStore.updateOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.SENT, {\n state: _state,\n cancellationTxnId: this._baseApis.makeTxnId(),\n // need to use a new transaction ID so that\n // the request gets sent\n requestTxnId: this._baseApis.makeTxnId()\n }));\n\n case 20:\n updatedReq = _context.sent;\n\n if (updatedReq) {\n _context.next = 25;\n break;\n }\n\n _context.next = 24;\n return (0, _bluebird.resolve)(this.sendRoomKeyRequest(requestBody, recipients, resend));\n\n case 24:\n return _context.abrupt('return', _context.sent);\n\n case 25:\n _context.prev = 25;\n _context.next = 28;\n return (0, _bluebird.resolve)(this._sendOutgoingRoomKeyRequestCancellation(updatedReq, true));\n\n case 28:\n _context.next = 33;\n break;\n\n case 30:\n _context.prev = 30;\n _context.t1 = _context['catch'](25);\n\n _logger2.default.error(\"Error sending room key request cancellation;\" + \" will retry later.\", _context.t1);\n\n case 33:\n return _context.abrupt('break', 35);\n\n case 34:\n throw new Error('unhandled state: ' + req.state);\n\n case 35:\n // some of the branches require the timer to be started. Just start it\n // all the time, because it doesn't hurt to start it.\n this._startTimer();\n\n case 36:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[25, 30]]);\n }));\n\n function sendRoomKeyRequest(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return sendRoomKeyRequest;\n }()\n\n /**\n * Cancel room key requests, if any match the given requestBody\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n *\n * @returns {Promise} resolves when the request has been updated in our\n * pending list.\n */\n\n }, {\n key: 'cancelRoomKeyRequest',\n value: function cancelRoomKeyRequest(requestBody) {\n var _this = this;\n\n return this._cryptoStore.getOutgoingRoomKeyRequest(requestBody).then(function (req) {\n if (!req) {\n // no request was made for this key\n return;\n }\n switch (req.state) {\n case ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING:\n case ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND:\n // nothing to do here\n return;\n\n case ROOM_KEY_REQUEST_STATES.UNSENT:\n // just delete it\n\n // FIXME: ghahah we may have attempted to send it, and\n // not yet got a successful response. So the server\n // may have seen it, so we still need to send a cancellation\n // in that case :/\n\n _logger2.default.log('deleting unnecessary room key request for ' + stringifyRequestBody(requestBody));\n return _this._cryptoStore.deleteOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.UNSENT);\n\n case ROOM_KEY_REQUEST_STATES.SENT:\n {\n // send a cancellation.\n return _this._cryptoStore.updateOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.SENT, {\n state: ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING,\n cancellationTxnId: _this._baseApis.makeTxnId()\n }).then(function (updatedReq) {\n if (!updatedReq) {\n // updateOutgoingRoomKeyRequest couldn't find the\n // request in state ROOM_KEY_REQUEST_STATES.SENT,\n // so we must have raced with another tab to mark\n // the request cancelled. There is no point in\n // sending another cancellation since the other tab\n // will do it.\n _logger2.default.log('Tried to cancel room key request for ' + stringifyRequestBody(requestBody) + ' but it was already cancelled in another tab');\n return;\n }\n\n // We don't want to wait for the timer, so we send it\n // immediately. (We might actually end up racing with the timer,\n // but that's ok: even if we make the request twice, we'll do it\n // with the same transaction_id, so only one message will get\n // sent).\n //\n // (We also don't want to wait for the response from the server\n // here, as it will slow down processing of received keys if we\n // do.)\n _this._sendOutgoingRoomKeyRequestCancellation(updatedReq).catch(function (e) {\n _logger2.default.error(\"Error sending room key request cancellation;\" + \" will retry later.\", e);\n _this._startTimer();\n });\n });\n }\n default:\n throw new Error('unhandled state: ' + req.state);\n }\n });\n }\n\n /**\n * Look for room key requests by target device and state\n *\n * @param {string} userId Target user ID\n * @param {string} deviceId Target device ID\n *\n * @return {Promise} resolves to a list of all the\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}\n */\n\n }, {\n key: 'getOutgoingSentRoomKeyRequest',\n value: function getOutgoingSentRoomKeyRequest(userId, deviceId) {\n return this._cryptoStore.getOutgoingRoomKeyRequestsByTarget(userId, deviceId, [ROOM_KEY_REQUEST_STATES.SENT]);\n }\n\n // start the background timer to send queued requests, if the timer isn't\n // already running\n\n }, {\n key: '_startTimer',\n value: function _startTimer() {\n var _this2 = this;\n\n if (this._sendOutgoingRoomKeyRequestsTimer) {\n return;\n }\n\n var startSendingOutgoingRoomKeyRequests = function startSendingOutgoingRoomKeyRequests() {\n if (_this2._sendOutgoingRoomKeyRequestsRunning) {\n throw new Error(\"RoomKeyRequestSend already in progress!\");\n }\n _this2._sendOutgoingRoomKeyRequestsRunning = true;\n\n _this2._sendOutgoingRoomKeyRequests().finally(function () {\n _this2._sendOutgoingRoomKeyRequestsRunning = false;\n }).catch(function (e) {\n // this should only happen if there is an indexeddb error,\n // in which case we're a bit stuffed anyway.\n _logger2.default.warn('error in OutgoingRoomKeyRequestManager: ' + e);\n });\n };\n\n this._sendOutgoingRoomKeyRequestsTimer = global.setTimeout(startSendingOutgoingRoomKeyRequests, SEND_KEY_REQUESTS_DELAY_MS);\n }\n\n // look for and send any queued requests. Runs itself recursively until\n // there are no more requests, or there is an error (in which case, the\n // timer will be restarted before the promise resolves).\n\n }, {\n key: '_sendOutgoingRoomKeyRequests',\n value: function _sendOutgoingRoomKeyRequests() {\n var _this3 = this;\n\n if (!this._clientRunning) {\n this._sendOutgoingRoomKeyRequestsTimer = null;\n return _bluebird2.default.resolve();\n }\n\n _logger2.default.log(\"Looking for queued outgoing room key requests\");\n\n return this._cryptoStore.getOutgoingRoomKeyRequestByState([ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING, ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND, ROOM_KEY_REQUEST_STATES.UNSENT]).then(function (req) {\n if (!req) {\n _logger2.default.log(\"No more outgoing room key requests\");\n _this3._sendOutgoingRoomKeyRequestsTimer = null;\n return;\n }\n\n var prom = void 0;\n switch (req.state) {\n case ROOM_KEY_REQUEST_STATES.UNSENT:\n prom = _this3._sendOutgoingRoomKeyRequest(req);\n break;\n case ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING:\n prom = _this3._sendOutgoingRoomKeyRequestCancellation(req);\n break;\n case ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND:\n prom = _this3._sendOutgoingRoomKeyRequestCancellation(req, true);\n break;\n }\n\n return prom.then(function () {\n // go around the loop again\n return _this3._sendOutgoingRoomKeyRequests();\n }).catch(function (e) {\n _logger2.default.error(\"Error sending room key request; will retry later.\", e);\n _this3._sendOutgoingRoomKeyRequestsTimer = null;\n _this3._startTimer();\n });\n });\n }\n\n // given a RoomKeyRequest, send it and update the request record\n\n }, {\n key: '_sendOutgoingRoomKeyRequest',\n value: function _sendOutgoingRoomKeyRequest(req) {\n var _this4 = this;\n\n _logger2.default.log('Requesting keys for ' + stringifyRequestBody(req.requestBody) + (' from ' + stringifyRecipientList(req.recipients)) + ('(id ' + req.requestId + ')'));\n\n var requestMessage = {\n action: \"request\",\n requesting_device_id: this._deviceId,\n request_id: req.requestId,\n body: req.requestBody\n };\n\n return this._sendMessageToDevices(requestMessage, req.recipients, req.requestTxnId || req.requestId).then(function () {\n return _this4._cryptoStore.updateOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.UNSENT, { state: ROOM_KEY_REQUEST_STATES.SENT });\n });\n }\n\n // Given a RoomKeyRequest, cancel it and delete the request record unless\n // andResend is set, in which case transition to UNSENT.\n\n }, {\n key: '_sendOutgoingRoomKeyRequestCancellation',\n value: function _sendOutgoingRoomKeyRequestCancellation(req, andResend) {\n var _this5 = this;\n\n _logger2.default.log('Sending cancellation for key request for ' + (stringifyRequestBody(req.requestBody) + ' to ') + (stringifyRecipientList(req.recipients) + ' ') + ('(cancellation id ' + req.cancellationTxnId + ')'));\n\n var requestMessage = {\n action: \"request_cancellation\",\n requesting_device_id: this._deviceId,\n request_id: req.requestId\n };\n\n return this._sendMessageToDevices(requestMessage, req.recipients, req.cancellationTxnId).then(function () {\n if (andResend) {\n // We want to resend, so transition to UNSENT\n return _this5._cryptoStore.updateOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND, { state: ROOM_KEY_REQUEST_STATES.UNSENT });\n }\n return _this5._cryptoStore.deleteOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING);\n });\n }\n\n // send a RoomKeyRequest to a list of recipients\n\n }, {\n key: '_sendMessageToDevices',\n value: function _sendMessageToDevices(message, recipients, txnId) {\n var contentMap = {};\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(recipients), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var recip = _step.value;\n\n if (!contentMap[recip.userId]) {\n contentMap[recip.userId] = {};\n }\n contentMap[recip.userId][recip.deviceId] = message;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return this._baseApis.sendToDevice('m.room_key_request', contentMap, txnId);\n }\n }]);\n return OutgoingRoomKeyRequestManager;\n}();\n\nexports.default = OutgoingRoomKeyRequestManager;\n\n\nfunction stringifyRequestBody(requestBody) {\n // we assume that the request is for megolm keys, which are identified by\n // room id and session id\n return requestBody.room_id + \" / \" + requestBody.session_id;\n}\n\nfunction stringifyRecipientList(recipients) {\n return '[' + _utils2.default.map(recipients, function (r) {\n return r.userId + ':' + r.deviceId;\n }).join(\",\") + ']';\n}\n//# sourceMappingURL=OutgoingRoomKeyRequestManager.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ScanQRCode = exports.ShowQRCode = undefined;\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _slicedToArray2 = require(\"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _promise = require(\"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _Base3 = require(\"./Base\");\n\nvar _Base4 = _interopRequireDefault(_Base3);\n\nvar _Error = require(\"./Error\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * QR code key verification.\n * @module crypto/verification/QRCode\n */\n\nvar MATRIXTO_REGEXP = /^(?:https?:\\/\\/)?(?:www\\.)?matrix\\.to\\/#\\/([#@!+][^?]+)\\?(.+)$/;\nvar KEY_REGEXP = /^key_([^:]+:.+)$/;\n\nvar newQRCodeError = (0, _Error.errorFactory)(\"m.qr_code.invalid\", \"Invalid QR code\");\n\n/**\n * @class crypto/verification/QRCode/ShowQRCode\n * @extends {module:crypto/verification/Base}\n */\n\nvar ShowQRCode = exports.ShowQRCode = function (_Base) {\n (0, _inherits3.default)(ShowQRCode, _Base);\n\n function ShowQRCode() {\n (0, _classCallCheck3.default)(this, ShowQRCode);\n return (0, _possibleConstructorReturn3.default)(this, (ShowQRCode.__proto__ || (0, _getPrototypeOf2.default)(ShowQRCode)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(ShowQRCode, [{\n key: \"_doVerification\",\n value: function _doVerification() {\n if (!this._done) {\n var url = \"https://matrix.to/#/\" + this._baseApis.getUserId() + \"?device=\" + encodeURIComponent(this._baseApis.deviceId) + \"&action=verify&key_ed25519%3A\" + encodeURIComponent(this._baseApis.deviceId) + \"=\" + encodeURIComponent(this._baseApis.getDeviceEd25519Key());\n this.emit(\"show_qr_code\", {\n url: url\n });\n }\n }\n }]);\n return ShowQRCode;\n}(_Base4.default);\n\nShowQRCode.NAME = \"m.qr_code.show.v1\";\n\n/**\n * @class crypto/verification/QRCode/ScanQRCode\n * @extends {module:crypto/verification/Base}\n */\n\nvar ScanQRCode = exports.ScanQRCode = function (_Base2) {\n (0, _inherits3.default)(ScanQRCode, _Base2);\n\n function ScanQRCode() {\n (0, _classCallCheck3.default)(this, ScanQRCode);\n return (0, _possibleConstructorReturn3.default)(this, (ScanQRCode.__proto__ || (0, _getPrototypeOf2.default)(ScanQRCode)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(ScanQRCode, [{\n key: \"_doVerification\",\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var _this3 = this;\n\n var code, match, deviceId, keys, userId, params, action, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, _step$value, name, value, keyMatch;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(new _promise2.default(function (resolve, reject) {\n _this3.emit(\"scan\", {\n done: resolve,\n cancel: function cancel() {\n return reject((0, _Error.newUserCancelledError)());\n }\n });\n }));\n\n case 2:\n code = _context.sent;\n match = code.match(MATRIXTO_REGEXP);\n deviceId = void 0;\n keys = {};\n\n if (match) {\n _context.next = 8;\n break;\n }\n\n throw newQRCodeError();\n\n case 8:\n userId = match[1];\n params = match[2].split(\"&\").map(function (x) {\n return x.split(\"=\", 2).map(decodeURIComponent);\n });\n action = void 0;\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context.prev = 14;\n\n for (_iterator = (0, _getIterator3.default)(params); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n _step$value = (0, _slicedToArray3.default)(_step.value, 2), name = _step$value[0], value = _step$value[1];\n\n if (name === \"device\") {\n deviceId = value;\n } else if (name === \"action\") {\n action = value;\n } else {\n keyMatch = name.match(KEY_REGEXP);\n\n if (keyMatch) {\n keys[keyMatch[1]] = value;\n }\n }\n }\n _context.next = 22;\n break;\n\n case 18:\n _context.prev = 18;\n _context.t0 = _context[\"catch\"](14);\n _didIteratorError = true;\n _iteratorError = _context.t0;\n\n case 22:\n _context.prev = 22;\n _context.prev = 23;\n\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n\n case 25:\n _context.prev = 25;\n\n if (!_didIteratorError) {\n _context.next = 28;\n break;\n }\n\n throw _iteratorError;\n\n case 28:\n return _context.finish(25);\n\n case 29:\n return _context.finish(22);\n\n case 30:\n if (!(!deviceId || action !== \"verify\" || (0, _keys2.default)(keys).length === 0)) {\n _context.next = 32;\n break;\n }\n\n throw newQRCodeError();\n\n case 32:\n if (this.userId) {\n _context.next = 37;\n break;\n }\n\n _context.next = 35;\n return (0, _bluebird.resolve)(new _promise2.default(function (resolve, reject) {\n _this3.emit(\"confirm_user_id\", {\n userId: userId,\n confirm: resolve,\n cancel: function cancel() {\n return reject((0, _Error.newUserMismatchError)());\n }\n });\n }));\n\n case 35:\n _context.next = 39;\n break;\n\n case 37:\n if (!(this.userId !== userId)) {\n _context.next = 39;\n break;\n }\n\n throw (0, _Error.newUserMismatchError)({\n expected: this.userId,\n actual: userId\n });\n\n case 39:\n _context.next = 41;\n return (0, _bluebird.resolve)(this._verifyKeys(userId, keys, function (keyId, device, key) {\n if (device.keys[keyId] !== key) {\n throw (0, _Error.newKeyMismatchError)();\n }\n }));\n\n case 41:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[14, 18, 22, 30], [23,, 25, 29]]);\n }));\n\n function _doVerification() {\n return _ref.apply(this, arguments);\n }\n\n return _doVerification;\n }()\n }], [{\n key: \"factory\",\n value: function factory() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return new (Function.prototype.bind.apply(ScanQRCode, [null].concat(args)))();\n }\n }]);\n return ScanQRCode;\n}(_Base4.default);\n\nScanQRCode.NAME = \"m.qr_code.scan.v1\";\n//# sourceMappingURL=QRCode.js.map","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.promise');\nrequire('../modules/es7.promise.finally');\nrequire('../modules/es7.promise.try');\nmodule.exports = require('../modules/_core').Promise;\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _set = require('babel-runtime/core-js/set');\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _Base2 = require('./Base');\n\nvar _Base3 = _interopRequireDefault(_Base2);\n\nvar _anotherJson = require('another-json');\n\nvar _anotherJson2 = _interopRequireDefault(_anotherJson);\n\nvar _Error = require('./Error');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EVENTS = [\"m.key.verification.accept\", \"m.key.verification.key\", \"m.key.verification.mac\"]; /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/**\n * Short Authentication String (SAS) verification.\n * @module crypto/verification/SAS\n */\n\nvar olmutil = void 0;\n\nvar newMismatchedSASError = (0, _Error.errorFactory)(\"m.mismatched_sas\", \"Mismatched short authentication string\");\n\nvar newMismatchedCommitmentError = (0, _Error.errorFactory)(\"m.mismatched_commitment\", \"Mismatched commitment\");\n\nfunction generateDecimalSas(sasBytes) {\n /**\n * +--------+--------+--------+--------+--------+\n * | Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 |\n * +--------+--------+--------+--------+--------+\n * bits: 87654321 87654321 87654321 87654321 87654321\n * \\____________/\\_____________/\\____________/\n * 1st number 2nd number 3rd number\n */\n return [(sasBytes[0] << 5 | sasBytes[1] >> 3) + 1000, ((sasBytes[1] & 0x7) << 10 | sasBytes[2] << 2 | sasBytes[3] >> 6) + 1000, ((sasBytes[3] & 0x3f) << 7 | sasBytes[4] >> 1) + 1000];\n}\n\nvar emojiMapping = [[\"🐶\", \"dog\"], // 0\n[\"🐱\", \"cat\"], // 1\n[\"🦁\", \"lion\"], // 2\n[\"🐎\", \"horse\"], // 3\n[\"🦄\", \"unicorn\"], // 4\n[\"🐷\", \"pig\"], // 5\n[\"🐘\", \"elephant\"], // 6\n[\"🐰\", \"rabbit\"], // 7\n[\"🐼\", \"panda\"], // 8\n[\"🐓\", \"rooster\"], // 9\n[\"🐧\", \"penguin\"], // 10\n[\"🐢\", \"turtle\"], // 11\n[\"🐟\", \"fish\"], // 12\n[\"🐙\", \"octopus\"], // 13\n[\"🦋\", \"butterfly\"], // 14\n[\"🌷\", \"flower\"], // 15\n[\"🌳\", \"tree\"], // 16\n[\"🌵\", \"cactus\"], // 17\n[\"🍄\", \"mushroom\"], // 18\n[\"🌏\", \"globe\"], // 19\n[\"🌙\", \"moon\"], // 20\n[\"☁️\", \"cloud\"], // 21\n[\"🔥\", \"fire\"], // 22\n[\"🍌\", \"banana\"], // 23\n[\"🍎\", \"apple\"], // 24\n[\"🍓\", \"strawberry\"], // 25\n[\"🌽\", \"corn\"], // 26\n[\"🍕\", \"pizza\"], // 27\n[\"🎂\", \"cake\"], // 28\n[\"❤️\", \"heart\"], // 29\n[\"🙂\", \"smiley\"], // 30\n[\"🤖\", \"robot\"], // 31\n[\"🎩\", \"hat\"], // 32\n[\"👓\", \"glasses\"], // 33\n[\"🔧\", \"spanner\"], // 34\n[\"🎅\", \"santa\"], // 35\n[\"👍\", \"thumbs up\"], // 36\n[\"☂️\", \"umbrella\"], // 37\n[\"⌛\", \"hourglass\"], // 38\n[\"⏰\", \"clock\"], // 39\n[\"🎁\", \"gift\"], // 40\n[\"💡\", \"light bulb\"], // 41\n[\"📕\", \"book\"], // 42\n[\"✏️\", \"pencil\"], // 43\n[\"📎\", \"paperclip\"], // 44\n[\"✂️\", \"scissors\"], // 45\n[\"🔒\", \"padlock\"], // 46\n[\"🔑\", \"key\"], // 47\n[\"🔨\", \"hammer\"], // 48\n[\"☎️\", \"telephone\"], // 49\n[\"🏁\", \"flag\"], // 50\n[\"🚂\", \"train\"], // 51\n[\"🚲\", \"bicycle\"], // 52\n[\"✈️\", \"aeroplane\"], // 53\n[\"🚀\", \"rocket\"], // 54\n[\"🏆\", \"trophy\"], // 55\n[\"⚽\", \"ball\"], // 56\n[\"🎸\", \"guitar\"], // 57\n[\"🎺\", \"trumpet\"], // 58\n[\"🔔\", \"bell\"], // 59\n[\"⚓️\", \"anchor\"], // 60\n[\"🎧\", \"headphones\"], // 61\n[\"📁\", \"folder\"], // 62\n[\"📌\", \"pin\"]];\n\nfunction generateEmojiSas(sasBytes) {\n var emojis = [\n // just like base64 encoding\n sasBytes[0] >> 2, (sasBytes[0] & 0x3) << 4 | sasBytes[1] >> 4, (sasBytes[1] & 0xf) << 2 | sasBytes[2] >> 6, sasBytes[2] & 0x3f, sasBytes[3] >> 2, (sasBytes[3] & 0x3) << 4 | sasBytes[4] >> 4, (sasBytes[4] & 0xf) << 2 | sasBytes[5] >> 6];\n\n return emojis.map(function (num) {\n return emojiMapping[num];\n });\n}\n\nvar sasGenerators = {\n decimal: generateDecimalSas,\n emoji: generateEmojiSas\n};\n\nfunction generateSas(sasBytes, methods) {\n var sas = {};\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(methods), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var method = _step.value;\n\n if (method in sasGenerators) {\n sas[method] = sasGenerators[method](sasBytes);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return sas;\n}\n\nvar macMethods = {\n \"hkdf-hmac-sha256\": \"calculate_mac\",\n \"hmac-sha256\": \"calculate_mac_long_kdf\"\n};\n\n/* lists of algorithms/methods that are supported. The key agreement, hashes,\n * and MAC lists should be sorted in order of preference (most preferred\n * first).\n */\nvar KEY_AGREEMENT_LIST = [\"curve25519\"];\nvar HASHES_LIST = [\"sha256\"];\nvar MAC_LIST = [\"hkdf-hmac-sha256\", \"hmac-sha256\"];\nvar SAS_LIST = (0, _keys2.default)(sasGenerators);\n\nvar KEY_AGREEMENT_SET = new _set2.default(KEY_AGREEMENT_LIST);\nvar HASHES_SET = new _set2.default(HASHES_LIST);\nvar MAC_SET = new _set2.default(MAC_LIST);\nvar SAS_SET = new _set2.default(SAS_LIST);\n\nfunction intersection(anArray, aSet) {\n return anArray instanceof Array ? anArray.filter(function (x) {\n return aSet.has(x);\n }) : [];\n}\n\n/**\n * @alias module:crypto/verification/SAS\n * @extends {module:crypto/verification/Base}\n */\n\nvar SAS = function (_Base) {\n (0, _inherits3.default)(SAS, _Base);\n\n function SAS() {\n (0, _classCallCheck3.default)(this, SAS);\n return (0, _possibleConstructorReturn3.default)(this, (SAS.__proto__ || (0, _getPrototypeOf2.default)(SAS)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(SAS, [{\n key: '_doVerification',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(global.Olm.init());\n\n case 2:\n olmutil = olmutil || new global.Olm.Utility();\n\n // make sure user's keys are downloaded\n _context.next = 5;\n return (0, _bluebird.resolve)(this._baseApis.downloadKeys([this.userId]));\n\n case 5:\n if (!this.startEvent) {\n _context.next = 11;\n break;\n }\n\n _context.next = 8;\n return (0, _bluebird.resolve)(this._doRespondVerification());\n\n case 8:\n return _context.abrupt('return', _context.sent);\n\n case 11:\n _context.next = 13;\n return (0, _bluebird.resolve)(this._doSendVerification());\n\n case 13:\n return _context.abrupt('return', _context.sent);\n\n case 14:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function _doVerification() {\n return _ref.apply(this, arguments);\n }\n\n return _doVerification;\n }()\n }, {\n key: '_doSendVerification',\n value: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var _this2 = this;\n\n var initialMessage, e, content, sasMethods, macMethod, hashCommitment, olmSAS, commitmentStr, sasInfo, sasBytes, verifySAS, _ref3, _ref4;\n\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n initialMessage = {\n method: SAS.NAME,\n from_device: this._baseApis.deviceId,\n key_agreement_protocols: KEY_AGREEMENT_LIST,\n hashes: HASHES_LIST,\n message_authentication_codes: MAC_LIST,\n // FIXME: allow app to specify what SAS methods can be used\n short_authentication_string: SAS_LIST,\n transaction_id: this.transactionId\n };\n\n this._sendToDevice(\"m.key.verification.start\", initialMessage);\n\n _context2.next = 4;\n return (0, _bluebird.resolve)(this._waitForEvent(\"m.key.verification.accept\"));\n\n case 4:\n e = _context2.sent;\n content = e.getContent();\n sasMethods = intersection(content.short_authentication_string, SAS_SET);\n\n if (KEY_AGREEMENT_SET.has(content.key_agreement_protocol) && HASHES_SET.has(content.hash) && MAC_SET.has(content.message_authentication_code) && sasMethods.length) {\n _context2.next = 9;\n break;\n }\n\n throw (0, _Error.newUnknownMethodError)();\n\n case 9:\n if (!(typeof content.commitment !== \"string\")) {\n _context2.next = 11;\n break;\n }\n\n throw (0, _Error.newInvalidMessageError)();\n\n case 11:\n macMethod = content.message_authentication_code;\n hashCommitment = content.commitment;\n olmSAS = new global.Olm.SAS();\n _context2.prev = 14;\n\n this._sendToDevice(\"m.key.verification.key\", {\n key: olmSAS.get_pubkey()\n });\n\n _context2.next = 18;\n return (0, _bluebird.resolve)(this._waitForEvent(\"m.key.verification.key\"));\n\n case 18:\n e = _context2.sent;\n\n // FIXME: make sure event is properly formed\n content = e.getContent();\n commitmentStr = content.key + _anotherJson2.default.stringify(initialMessage);\n // TODO: use selected hash function (when we support multiple)\n\n if (!(olmutil.sha256(commitmentStr) !== hashCommitment)) {\n _context2.next = 23;\n break;\n }\n\n throw newMismatchedCommitmentError();\n\n case 23:\n olmSAS.set_their_key(content.key);\n\n sasInfo = \"MATRIX_KEY_VERIFICATION_SAS\" + this._baseApis.getUserId() + this._baseApis.deviceId + this.userId + this.deviceId + this.transactionId;\n sasBytes = olmSAS.generate_bytes(sasInfo, 6);\n verifySAS = new _promise2.default(function (resolve, reject) {\n _this2.emit(\"show_sas\", {\n sas: generateSas(sasBytes, sasMethods),\n confirm: function confirm() {\n _this2._sendMAC(olmSAS, macMethod);\n resolve();\n },\n cancel: function cancel() {\n return reject((0, _Error.newUserCancelledError)());\n },\n mismatch: function mismatch() {\n return reject(newMismatchedSASError());\n }\n });\n });\n _context2.next = 29;\n return (0, _bluebird.resolve)(_promise2.default.all([this._waitForEvent(\"m.key.verification.mac\"), verifySAS]));\n\n case 29:\n _ref3 = _context2.sent;\n _ref4 = (0, _slicedToArray3.default)(_ref3, 1);\n e = _ref4[0];\n\n content = e.getContent();\n _context2.next = 35;\n return (0, _bluebird.resolve)(this._checkMAC(olmSAS, content, macMethod));\n\n case 35:\n _context2.prev = 35;\n\n olmSAS.free();\n return _context2.finish(35);\n\n case 38:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this, [[14,, 35, 38]]);\n }));\n\n function _doSendVerification() {\n return _ref2.apply(this, arguments);\n }\n\n return _doSendVerification;\n }()\n }, {\n key: '_doRespondVerification',\n value: function () {\n var _ref5 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var _this3 = this;\n\n var content, keyAgreement, hashMethod, macMethod, sasMethods, olmSAS, commitmentStr, e, sasInfo, sasBytes, verifySAS, _ref6, _ref7;\n\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n content = this.startEvent.getContent();\n // Note: we intersect using our pre-made lists, rather than the sets,\n // so that the result will be in our order of preference. Then\n // fetching the first element from the array will give our preferred\n // method out of the ones offered by the other party.\n\n keyAgreement = intersection(KEY_AGREEMENT_LIST, new _set2.default(content.key_agreement_protocols))[0];\n hashMethod = intersection(HASHES_LIST, new _set2.default(content.hashes))[0];\n macMethod = intersection(MAC_LIST, new _set2.default(content.message_authentication_codes))[0];\n // FIXME: allow app to specify what SAS methods can be used\n\n sasMethods = intersection(content.short_authentication_string, SAS_SET);\n\n if (keyAgreement !== undefined && hashMethod !== undefined && macMethod !== undefined && sasMethods.length) {\n _context3.next = 7;\n break;\n }\n\n throw (0, _Error.newUnknownMethodError)();\n\n case 7:\n olmSAS = new global.Olm.SAS();\n _context3.prev = 8;\n commitmentStr = olmSAS.get_pubkey() + _anotherJson2.default.stringify(content);\n\n this._sendToDevice(\"m.key.verification.accept\", {\n key_agreement_protocol: keyAgreement,\n hash: hashMethod,\n message_authentication_code: macMethod,\n short_authentication_string: sasMethods,\n // TODO: use selected hash function (when we support multiple)\n commitment: olmutil.sha256(commitmentStr)\n });\n\n _context3.next = 13;\n return (0, _bluebird.resolve)(this._waitForEvent(\"m.key.verification.key\"));\n\n case 13:\n e = _context3.sent;\n\n // FIXME: make sure event is properly formed\n content = e.getContent();\n olmSAS.set_their_key(content.key);\n this._sendToDevice(\"m.key.verification.key\", {\n key: olmSAS.get_pubkey()\n });\n\n sasInfo = \"MATRIX_KEY_VERIFICATION_SAS\" + this.userId + this.deviceId + this._baseApis.getUserId() + this._baseApis.deviceId + this.transactionId;\n sasBytes = olmSAS.generate_bytes(sasInfo, 6);\n verifySAS = new _promise2.default(function (resolve, reject) {\n _this3.emit(\"show_sas\", {\n sas: generateSas(sasBytes, sasMethods),\n confirm: function confirm() {\n _this3._sendMAC(olmSAS, macMethod);\n resolve();\n },\n cancel: function cancel() {\n return reject((0, _Error.newUserCancelledError)());\n },\n mismatch: function mismatch() {\n return reject(newMismatchedSASError());\n }\n });\n });\n _context3.next = 22;\n return (0, _bluebird.resolve)(_promise2.default.all([this._waitForEvent(\"m.key.verification.mac\"), verifySAS]));\n\n case 22:\n _ref6 = _context3.sent;\n _ref7 = (0, _slicedToArray3.default)(_ref6, 1);\n e = _ref7[0];\n\n content = e.getContent();\n _context3.next = 28;\n return (0, _bluebird.resolve)(this._checkMAC(olmSAS, content, macMethod));\n\n case 28:\n _context3.prev = 28;\n\n olmSAS.free();\n return _context3.finish(28);\n\n case 31:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this, [[8,, 28, 31]]);\n }));\n\n function _doRespondVerification() {\n return _ref5.apply(this, arguments);\n }\n\n return _doRespondVerification;\n }()\n }, {\n key: '_sendMAC',\n value: function _sendMAC(olmSAS, method) {\n var keyId = 'ed25519:' + this._baseApis.deviceId;\n var mac = {};\n var baseInfo = \"MATRIX_KEY_VERIFICATION_MAC\" + this._baseApis.getUserId() + this._baseApis.deviceId + this.userId + this.deviceId + this.transactionId;\n\n mac[keyId] = olmSAS[macMethods[method]](this._baseApis.getDeviceEd25519Key(), baseInfo + keyId);\n var keys = olmSAS[macMethods[method]](keyId, baseInfo + \"KEY_IDS\");\n this._sendToDevice(\"m.key.verification.mac\", { mac: mac, keys: keys });\n }\n }, {\n key: '_checkMAC',\n value: function () {\n var _ref8 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(olmSAS, content, method) {\n var baseInfo;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n baseInfo = \"MATRIX_KEY_VERIFICATION_MAC\" + this.userId + this.deviceId + this._baseApis.getUserId() + this._baseApis.deviceId + this.transactionId;\n\n if (!(content.keys !== olmSAS[macMethods[method]]((0, _keys2.default)(content.mac).sort().join(\",\"), baseInfo + \"KEY_IDS\"))) {\n _context4.next = 3;\n break;\n }\n\n throw (0, _Error.newKeyMismatchError)();\n\n case 3:\n _context4.next = 5;\n return (0, _bluebird.resolve)(this._verifyKeys(this.userId, content.mac, function (keyId, device, keyInfo) {\n if (keyInfo !== olmSAS[macMethods[method]](device.keys[keyId], baseInfo + keyId)) {\n throw (0, _Error.newKeyMismatchError)();\n }\n }));\n\n case 5:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function _checkMAC(_x, _x2, _x3) {\n return _ref8.apply(this, arguments);\n }\n\n return _checkMAC;\n }()\n }, {\n key: 'events',\n get: function get() {\n return EVENTS;\n }\n }]);\n return SAS;\n}(_Base3.default);\n\nexports.default = SAS;\n\n\nSAS.NAME = \"m.sas.v1\";\n//# sourceMappingURL=SAS.js.map","'use strict';\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _initialiseAccount = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(cryptoStore, pickleKey, account) {\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return (0, _bluebird.resolve)(cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ACCOUNT], function (txn) {\n cryptoStore.getAccount(txn, function (pickledAccount) {\n if (pickledAccount !== null) {\n account.unpickle(pickleKey, pickledAccount);\n } else {\n account.create();\n pickledAccount = account.pickle(pickleKey);\n cryptoStore.storeAccount(txn, pickledAccount);\n }\n });\n }));\n\n case 2:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function _initialiseAccount(_x, _x2, _x3) {\n return _ref2.apply(this, arguments);\n };\n}();\n\n/**\n * @return {array} The version of Olm.\n */\n\n\nvar _logger = require('../logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _indexeddbCryptoStore = require('./store/indexeddb-crypto-store');\n\nvar _indexeddbCryptoStore2 = _interopRequireDefault(_indexeddbCryptoStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// The maximum size of an event is 65K, and we base64 the content, so this is a\n// reasonable approximation to the biggest plaintext we can encrypt.\n/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017, 2019 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MAX_PLAINTEXT_LENGTH = 65536 * 3 / 4;\n\nfunction checkPayloadLength(payloadString) {\n if (payloadString === undefined) {\n throw new Error(\"payloadString undefined\");\n }\n\n if (payloadString.length > MAX_PLAINTEXT_LENGTH) {\n // might as well fail early here rather than letting the olm library throw\n // a cryptic memory allocation error.\n //\n // Note that even if we manage to do the encryption, the message send may fail,\n // because by the time we've wrapped the ciphertext in the event object, it may\n // exceed 65K. But at least we won't just fail with \"abort()\" in that case.\n throw new Error(\"Message too long (\" + payloadString.length + \" bytes). \" + \"The maximum for an encrypted message is \" + MAX_PLAINTEXT_LENGTH + \" bytes.\");\n }\n}\n\n/**\n * The type of object we use for importing and exporting megolm session data.\n *\n * @typedef {Object} module:crypto/OlmDevice.MegolmSessionData\n * @property {String} sender_key Sender's Curve25519 device key\n * @property {String[]} forwarding_curve25519_key_chain Devices which forwarded\n * this session to us (normally empty).\n * @property {Object} sender_claimed_keys Other keys the sender claims.\n * @property {String} room_id Room this session is used in\n * @property {String} session_id Unique id for the session\n * @property {String} session_key Base64'ed key data\n */\n\n/**\n * Manages the olm cryptography functions. Each OlmDevice has a single\n * OlmAccount and a number of OlmSessions.\n *\n * Accounts and sessions are kept pickled in the cryptoStore.\n *\n * @constructor\n * @alias module:crypto/OlmDevice\n *\n * @param {Object} cryptoStore A store for crypto data\n *\n * @property {string} deviceCurve25519Key Curve25519 key for the account\n * @property {string} deviceEd25519Key Ed25519 key for the account\n */\nfunction OlmDevice(cryptoStore) {\n this._cryptoStore = cryptoStore;\n this._pickleKey = \"DEFAULT_KEY\";\n\n // don't know these until we load the account from storage in init()\n this.deviceCurve25519Key = null;\n this.deviceEd25519Key = null;\n this._maxOneTimeKeys = null;\n\n // we don't bother stashing outboundgroupsessions in the cryptoStore -\n // instead we keep them here.\n this._outboundGroupSessionStore = {};\n\n // Store a set of decrypted message indexes for each group session.\n // This partially mitigates a replay attack where a MITM resends a group\n // message into the room.\n //\n // When we decrypt a message and the message index matches a previously\n // decrypted message, one possible cause of that is that we are decrypting\n // the same event, and may not indicate an actual replay attack. For\n // example, this could happen if we receive events, forget about them, and\n // then re-fetch them when we backfill. So we store the event ID and\n // timestamp corresponding to each message index when we first decrypt it,\n // and compare these against the event ID and timestamp every time we use\n // that same index. If they match, then we're probably decrypting the same\n // event and we don't consider it a replay attack.\n //\n // Keys are strings of form \"||\"\n // Values are objects of the form \"{id: , timestamp: }\"\n this._inboundGroupSessionMessageIndexes = {};\n\n // Keep track of sessions that we're starting, so that we don't start\n // multiple sessions for the same device at the same time.\n this._sessionsInProgress = {};\n}\n\n/**\n * Initialise the OlmAccount. This must be called before any other operations\n * on the OlmDevice.\n *\n * Attempts to load the OlmAccount from the crypto store, or creates one if none is\n * found.\n *\n * Reads the device keys from the OlmAccount object.\n */\nOlmDevice.prototype.init = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var e2eKeys, account;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n e2eKeys = void 0;\n account = new global.Olm.Account();\n _context.prev = 2;\n _context.next = 5;\n return (0, _bluebird.resolve)(_initialiseAccount(this._cryptoStore, this._pickleKey, account));\n\n case 5:\n e2eKeys = JSON.parse(account.identity_keys());\n\n this._maxOneTimeKeys = account.max_number_of_one_time_keys();\n\n case 7:\n _context.prev = 7;\n\n account.free();\n return _context.finish(7);\n\n case 10:\n\n this.deviceCurve25519Key = e2eKeys.curve25519;\n this.deviceEd25519Key = e2eKeys.ed25519;\n\n case 12:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[2,, 7, 10]]);\n}));\n\nOlmDevice.getOlmVersion = function () {\n return global.Olm.get_library_version();\n};\n\n/**\n * extract our OlmAccount from the crypto store and call the given function\n * with the account object\n * The `account` object is useable only within the callback passed to this\n * function and will be freed as soon the callback returns. It is *not*\n * useable for the rest of the lifetime of the transaction.\n * This function requires a live transaction object from cryptoStore.doTxn()\n * and therefore may only be called in a doTxn() callback.\n *\n * @param {*} txn Opaque transaction object from cryptoStore.doTxn()\n * @param {function} func\n * @private\n */\nOlmDevice.prototype._getAccount = function (txn, func) {\n var _this = this;\n\n this._cryptoStore.getAccount(txn, function (pickledAccount) {\n var account = new global.Olm.Account();\n try {\n account.unpickle(_this._pickleKey, pickledAccount);\n func(account);\n } finally {\n account.free();\n }\n });\n};\n\n/*\n * Saves an account to the crypto store.\n * This function requires a live transaction object from cryptoStore.doTxn()\n * and therefore may only be called in a doTxn() callback.\n *\n * @param {*} txn Opaque transaction object from cryptoStore.doTxn()\n * @param {object} Olm.Account object\n * @private\n */\nOlmDevice.prototype._storeAccount = function (txn, account) {\n this._cryptoStore.storeAccount(txn, account.pickle(this._pickleKey));\n};\n\n/**\n * extract an OlmSession from the session store and call the given function\n * The session is useable only within the callback passed to this\n * function and will be freed as soon the callback returns. It is *not*\n * useable for the rest of the lifetime of the transaction.\n *\n * @param {string} deviceKey\n * @param {string} sessionId\n * @param {*} txn Opaque transaction object from cryptoStore.doTxn()\n * @param {function} func\n * @private\n */\nOlmDevice.prototype._getSession = function (deviceKey, sessionId, txn, func) {\n var _this2 = this;\n\n this._cryptoStore.getEndToEndSession(deviceKey, sessionId, txn, function (sessionInfo) {\n _this2._unpickleSession(sessionInfo, func);\n });\n};\n\n/**\n * Creates a session object from a session pickle and executes the given\n * function with it. The session object is destroyed once the function\n * returns.\n *\n * @param {object} sessionInfo\n * @param {function} func\n * @private\n */\nOlmDevice.prototype._unpickleSession = function (sessionInfo, func) {\n var session = new global.Olm.Session();\n try {\n session.unpickle(this._pickleKey, sessionInfo.session);\n var unpickledSessInfo = (0, _assign2.default)({}, sessionInfo, { session: session });\n\n func(unpickledSessInfo);\n } finally {\n session.free();\n }\n};\n\n/**\n * store our OlmSession in the session store\n *\n * @param {string} deviceKey\n * @param {object} sessionInfo {session: OlmSession, lastReceivedMessageTs: int}\n * @param {*} txn Opaque transaction object from cryptoStore.doTxn()\n * @private\n */\nOlmDevice.prototype._saveSession = function (deviceKey, sessionInfo, txn) {\n var sessionId = sessionInfo.session.session_id();\n var pickledSessionInfo = (0, _assign2.default)(sessionInfo, {\n session: sessionInfo.session.pickle(this._pickleKey)\n });\n this._cryptoStore.storeEndToEndSession(deviceKey, sessionId, pickledSessionInfo, txn);\n};\n\n/**\n * get an OlmUtility and call the given function\n *\n * @param {function} func\n * @return {object} result of func\n * @private\n */\nOlmDevice.prototype._getUtility = function (func) {\n var utility = new global.Olm.Utility();\n try {\n return func(utility);\n } finally {\n utility.free();\n }\n};\n\n/**\n * Signs a message with the ed25519 key for this account.\n *\n * @param {string} message message to be signed\n * @return {Promise} base64-encoded signature\n */\nOlmDevice.prototype.sign = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(message) {\n var _this3 = this;\n\n var result;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n result = void 0;\n _context3.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_ACCOUNT], function (txn) {\n _this3._getAccount(txn, function (account) {\n result = account.sign(message);\n });\n }));\n\n case 3:\n return _context3.abrupt('return', result);\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function (_x4) {\n return _ref3.apply(this, arguments);\n };\n}();\n\n/**\n * Get the current (unused, unpublished) one-time keys for this account.\n *\n * @return {object} one time keys; an object with the single property\n * curve25519, which is itself an object mapping key id to Curve25519\n * key.\n */\nOlmDevice.prototype.getOneTimeKeys = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {\n var _this4 = this;\n\n var result;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n result = void 0;\n _context4.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_ACCOUNT], function (txn) {\n _this4._getAccount(txn, function (account) {\n result = JSON.parse(account.one_time_keys());\n });\n }));\n\n case 3:\n return _context4.abrupt('return', result);\n\n case 4:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n}));\n\n/**\n * Get the maximum number of one-time keys we can store.\n *\n * @return {number} number of keys\n */\nOlmDevice.prototype.maxNumberOfOneTimeKeys = function () {\n return this._maxOneTimeKeys;\n};\n\n/**\n * Marks all of the one-time keys as published.\n */\nOlmDevice.prototype.markKeysAsPublished = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee5() {\n var _this5 = this;\n\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ACCOUNT], function (txn) {\n _this5._getAccount(txn, function (account) {\n account.mark_keys_as_published();\n _this5._storeAccount(txn, account);\n });\n }));\n\n case 2:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this);\n}));\n\n/**\n * Generate some new one-time keys\n *\n * @param {number} numKeys number of keys to generate\n * @return {Promise} Resolved once the account is saved back having generated the keys\n */\nOlmDevice.prototype.generateOneTimeKeys = function (numKeys) {\n var _this6 = this;\n\n return this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ACCOUNT], function (txn) {\n _this6._getAccount(txn, function (account) {\n account.generate_one_time_keys(numKeys);\n _this6._storeAccount(txn, account);\n });\n });\n};\n\n/**\n * Generate a new outbound session\n *\n * The new session will be stored in the cryptoStore.\n *\n * @param {string} theirIdentityKey remote user's Curve25519 identity key\n * @param {string} theirOneTimeKey remote user's one-time Curve25519 key\n * @return {string} sessionId for the outbound session.\n */\nOlmDevice.prototype.createOutboundSession = function () {\n var _ref6 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(theirIdentityKey, theirOneTimeKey) {\n var _this7 = this;\n\n var newSessionId;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n newSessionId = void 0;\n _context6.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ACCOUNT, _indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n _this7._getAccount(txn, function (account) {\n var session = new global.Olm.Session();\n try {\n session.create_outbound(account, theirIdentityKey, theirOneTimeKey);\n newSessionId = session.session_id();\n _this7._storeAccount(txn, account);\n var sessionInfo = {\n session: session,\n // Pretend we've received a message at this point, otherwise\n // if we try to send a message to the device, it won't use\n // this session\n lastReceivedMessageTs: Date.now()\n };\n _this7._saveSession(theirIdentityKey, sessionInfo, txn);\n } finally {\n session.free();\n }\n });\n }));\n\n case 3:\n return _context6.abrupt('return', newSessionId);\n\n case 4:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n return function (_x5, _x6) {\n return _ref6.apply(this, arguments);\n };\n}();\n\n/**\n * Generate a new inbound session, given an incoming message\n *\n * @param {string} theirDeviceIdentityKey remote user's Curve25519 identity key\n * @param {number} messageType messageType field from the received message (must be 0)\n * @param {string} ciphertext base64-encoded body from the received message\n *\n * @return {{payload: string, session_id: string}} decrypted payload, and\n * session id of new session\n *\n * @raises {Error} if the received message was not valid (for instance, it\n * didn't use a valid one-time key).\n */\nOlmDevice.prototype.createInboundSession = function () {\n var _ref7 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(theirDeviceIdentityKey, messageType, ciphertext) {\n var _this8 = this;\n\n var result;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n if (!(messageType !== 0)) {\n _context7.next = 2;\n break;\n }\n\n throw new Error(\"Need messageType == 0 to create inbound session\");\n\n case 2:\n result = void 0;\n _context7.next = 5;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ACCOUNT, _indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n _this8._getAccount(txn, function (account) {\n var session = new global.Olm.Session();\n try {\n session.create_inbound_from(account, theirDeviceIdentityKey, ciphertext);\n account.remove_one_time_keys(session);\n _this8._storeAccount(txn, account);\n\n var payloadString = session.decrypt(messageType, ciphertext);\n\n var sessionInfo = {\n session: session,\n // this counts as a received message: set last received message time\n // to now\n lastReceivedMessageTs: Date.now()\n };\n _this8._saveSession(theirDeviceIdentityKey, sessionInfo, txn);\n\n result = {\n payload: payloadString,\n session_id: session.session_id()\n };\n } finally {\n session.free();\n }\n });\n }));\n\n case 5:\n return _context7.abrupt('return', result);\n\n case 6:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n return function (_x7, _x8, _x9) {\n return _ref7.apply(this, arguments);\n };\n}();\n\n/**\n * Get a list of known session IDs for the given device\n *\n * @param {string} theirDeviceIdentityKey Curve25519 identity key for the\n * remote device\n * @return {Promise} a list of known session ids for the device\n */\nOlmDevice.prototype.getSessionIdsForDevice = function () {\n var _ref8 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(theirDeviceIdentityKey) {\n var _this9 = this;\n\n var sessionIds;\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n if (!this._sessionsInProgress[theirDeviceIdentityKey]) {\n _context8.next = 9;\n break;\n }\n\n _logger2.default.log(\"waiting for session to be created\");\n _context8.prev = 2;\n _context8.next = 5;\n return (0, _bluebird.resolve)(this._sessionsInProgress[theirDeviceIdentityKey]);\n\n case 5:\n _context8.next = 9;\n break;\n\n case 7:\n _context8.prev = 7;\n _context8.t0 = _context8['catch'](2);\n\n case 9:\n sessionIds = void 0;\n _context8.next = 12;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n _this9._cryptoStore.getEndToEndSessions(theirDeviceIdentityKey, txn, function (sessions) {\n sessionIds = (0, _keys2.default)(sessions);\n });\n }));\n\n case 12:\n return _context8.abrupt('return', sessionIds);\n\n case 13:\n case 'end':\n return _context8.stop();\n }\n }\n }, _callee8, this, [[2, 7]]);\n }));\n\n return function (_x10) {\n return _ref8.apply(this, arguments);\n };\n}();\n\n/**\n * Get the right olm session id for encrypting messages to the given identity key\n *\n * @param {string} theirDeviceIdentityKey Curve25519 identity key for the\n * remote device\n * @param {boolean} nowait Don't wait for an in-progress session to complete.\n * This should only be set to true of the calling function is the function\n * that marked the session as being in-progress.\n * @return {Promise} session id, or null if no established session\n */\nOlmDevice.prototype.getSessionIdForDevice = function () {\n var _ref9 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(theirDeviceIdentityKey, nowait) {\n var sessionInfos, idxOfBest, i, thisSessInfo, thisLastReceived, bestSessInfo, bestLastReceived;\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _context9.next = 2;\n return (0, _bluebird.resolve)(this.getSessionInfoForDevice(theirDeviceIdentityKey, nowait));\n\n case 2:\n sessionInfos = _context9.sent;\n\n if (!(sessionInfos.length === 0)) {\n _context9.next = 5;\n break;\n }\n\n return _context9.abrupt('return', null);\n\n case 5:\n // Use the session that has most recently received a message\n idxOfBest = 0;\n\n for (i = 1; i < sessionInfos.length; i++) {\n thisSessInfo = sessionInfos[i];\n thisLastReceived = thisSessInfo.lastReceivedMessageTs === undefined ? 0 : thisSessInfo.lastReceivedMessageTs;\n bestSessInfo = sessionInfos[idxOfBest];\n bestLastReceived = bestSessInfo.lastReceivedMessageTs === undefined ? 0 : bestSessInfo.lastReceivedMessageTs;\n\n if (thisLastReceived > bestLastReceived || thisLastReceived === bestLastReceived && thisSessInfo.sessionId < bestSessInfo.sessionId) {\n idxOfBest = i;\n }\n }\n return _context9.abrupt('return', sessionInfos[idxOfBest].sessionId);\n\n case 8:\n case 'end':\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n return function (_x11, _x12) {\n return _ref9.apply(this, arguments);\n };\n}();\n\n/**\n * Get information on the active Olm sessions for a device.\n *

\n * Returns an array, with an entry for each active session. The first entry in\n * the result will be the one used for outgoing messages. Each entry contains\n * the keys 'hasReceivedMessage' (true if the session has received an incoming\n * message and is therefore past the pre-key stage), and 'sessionId'.\n *\n * @param {string} deviceIdentityKey Curve25519 identity key for the device\n * @param {boolean} nowait Don't wait for an in-progress session to complete.\n * This should only be set to true of the calling function is the function\n * that marked the session as being in-progress.\n * @return {Array.<{sessionId: string, hasReceivedMessage: Boolean}>}\n */\nOlmDevice.prototype.getSessionInfoForDevice = function () {\n var _ref10 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(deviceIdentityKey, nowait) {\n var _this10 = this;\n\n var info;\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n if (!(this._sessionsInProgress[deviceIdentityKey] && !nowait)) {\n _context10.next = 9;\n break;\n }\n\n _logger2.default.log(\"waiting for session to be created\");\n _context10.prev = 2;\n _context10.next = 5;\n return (0, _bluebird.resolve)(this._sessionsInProgress[deviceIdentityKey]);\n\n case 5:\n _context10.next = 9;\n break;\n\n case 7:\n _context10.prev = 7;\n _context10.t0 = _context10['catch'](2);\n\n case 9:\n info = [];\n _context10.next = 12;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n _this10._cryptoStore.getEndToEndSessions(deviceIdentityKey, txn, function (sessions) {\n var sessionIds = (0, _keys2.default)(sessions).sort();\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n var _loop = function _loop() {\n var sessionId = _step.value;\n\n _this10._unpickleSession(sessions[sessionId], function (sessInfo) {\n info.push({\n lastReceivedMessageTs: sessInfo.lastReceivedMessageTs,\n hasReceivedMessage: sessInfo.session.has_received_message(),\n sessionId: sessionId\n });\n });\n };\n\n for (var _iterator = (0, _getIterator3.default)(sessionIds), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n _loop();\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n });\n }));\n\n case 12:\n return _context10.abrupt('return', info);\n\n case 13:\n case 'end':\n return _context10.stop();\n }\n }\n }, _callee10, this, [[2, 7]]);\n }));\n\n return function (_x13, _x14) {\n return _ref10.apply(this, arguments);\n };\n}();\n\n/**\n * Encrypt an outgoing message using an existing session\n *\n * @param {string} theirDeviceIdentityKey Curve25519 identity key for the\n * remote device\n * @param {string} sessionId the id of the active session\n * @param {string} payloadString payload to be encrypted and sent\n *\n * @return {Promise} ciphertext\n */\nOlmDevice.prototype.encryptMessage = function () {\n var _ref11 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee11(theirDeviceIdentityKey, sessionId, payloadString) {\n var _this11 = this;\n\n var res;\n return _regenerator2.default.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n checkPayloadLength(payloadString);\n\n res = void 0;\n _context11.next = 4;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n _this11._getSession(theirDeviceIdentityKey, sessionId, txn, function (sessionInfo) {\n res = sessionInfo.session.encrypt(payloadString);\n _this11._saveSession(theirDeviceIdentityKey, sessionInfo, txn);\n });\n }));\n\n case 4:\n return _context11.abrupt('return', res);\n\n case 5:\n case 'end':\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n return function (_x15, _x16, _x17) {\n return _ref11.apply(this, arguments);\n };\n}();\n\n/**\n * Decrypt an incoming message using an existing session\n *\n * @param {string} theirDeviceIdentityKey Curve25519 identity key for the\n * remote device\n * @param {string} sessionId the id of the active session\n * @param {number} messageType messageType field from the received message\n * @param {string} ciphertext base64-encoded body from the received message\n *\n * @return {Promise} decrypted payload.\n */\nOlmDevice.prototype.decryptMessage = function () {\n var _ref12 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee12(theirDeviceIdentityKey, sessionId, messageType, ciphertext) {\n var _this12 = this;\n\n var payloadString;\n return _regenerator2.default.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n payloadString = void 0;\n _context12.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n _this12._getSession(theirDeviceIdentityKey, sessionId, txn, function (sessionInfo) {\n payloadString = sessionInfo.session.decrypt(messageType, ciphertext);\n sessionInfo.lastReceivedMessageTs = Date.now();\n _this12._saveSession(theirDeviceIdentityKey, sessionInfo, txn);\n });\n }));\n\n case 3:\n return _context12.abrupt('return', payloadString);\n\n case 4:\n case 'end':\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n return function (_x18, _x19, _x20, _x21) {\n return _ref12.apply(this, arguments);\n };\n}();\n\n/**\n * Determine if an incoming messages is a prekey message matching an existing session\n *\n * @param {string} theirDeviceIdentityKey Curve25519 identity key for the\n * remote device\n * @param {string} sessionId the id of the active session\n * @param {number} messageType messageType field from the received message\n * @param {string} ciphertext base64-encoded body from the received message\n *\n * @return {Promise} true if the received message is a prekey message which matches\n * the given session.\n */\nOlmDevice.prototype.matchesSession = function () {\n var _ref13 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee13(theirDeviceIdentityKey, sessionId, messageType, ciphertext) {\n var _this13 = this;\n\n var matches;\n return _regenerator2.default.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n if (!(messageType !== 0)) {\n _context13.next = 2;\n break;\n }\n\n return _context13.abrupt('return', false);\n\n case 2:\n matches = void 0;\n _context13.next = 5;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n _this13._getSession(theirDeviceIdentityKey, sessionId, txn, function (sessionInfo) {\n matches = sessionInfo.session.matches_inbound(ciphertext);\n });\n }));\n\n case 5:\n return _context13.abrupt('return', matches);\n\n case 6:\n case 'end':\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n return function (_x22, _x23, _x24, _x25) {\n return _ref13.apply(this, arguments);\n };\n}();\n\n// Outbound group session\n// ======================\n\n/**\n * store an OutboundGroupSession in _outboundGroupSessionStore\n *\n * @param {Olm.OutboundGroupSession} session\n * @private\n */\nOlmDevice.prototype._saveOutboundGroupSession = function (session) {\n var pickledSession = session.pickle(this._pickleKey);\n this._outboundGroupSessionStore[session.session_id()] = pickledSession;\n};\n\n/**\n * extract an OutboundGroupSession from _outboundGroupSessionStore and call the\n * given function\n *\n * @param {string} sessionId\n * @param {function} func\n * @return {object} result of func\n * @private\n */\nOlmDevice.prototype._getOutboundGroupSession = function (sessionId, func) {\n var pickled = this._outboundGroupSessionStore[sessionId];\n if (pickled === undefined) {\n throw new Error(\"Unknown outbound group session \" + sessionId);\n }\n\n var session = new global.Olm.OutboundGroupSession();\n try {\n session.unpickle(this._pickleKey, pickled);\n return func(session);\n } finally {\n session.free();\n }\n};\n\n/**\n * Generate a new outbound group session\n *\n * @return {string} sessionId for the outbound session.\n */\nOlmDevice.prototype.createOutboundGroupSession = function () {\n var session = new global.Olm.OutboundGroupSession();\n try {\n session.create();\n this._saveOutboundGroupSession(session);\n return session.session_id();\n } finally {\n session.free();\n }\n};\n\n/**\n * Encrypt an outgoing message with an outbound group session\n *\n * @param {string} sessionId the id of the outboundgroupsession\n * @param {string} payloadString payload to be encrypted and sent\n *\n * @return {string} ciphertext\n */\nOlmDevice.prototype.encryptGroupMessage = function (sessionId, payloadString) {\n var self = this;\n\n checkPayloadLength(payloadString);\n\n return this._getOutboundGroupSession(sessionId, function (session) {\n var res = session.encrypt(payloadString);\n self._saveOutboundGroupSession(session);\n return res;\n });\n};\n\n/**\n * Get the session keys for an outbound group session\n *\n * @param {string} sessionId the id of the outbound group session\n *\n * @return {{chain_index: number, key: string}} current chain index, and\n * base64-encoded secret key.\n */\nOlmDevice.prototype.getOutboundGroupSessionKey = function (sessionId) {\n return this._getOutboundGroupSession(sessionId, function (session) {\n return {\n chain_index: session.message_index(),\n key: session.session_key()\n };\n });\n};\n\n// Inbound group session\n// =====================\n\n/**\n * data stored in the session store about an inbound group session\n *\n * @typedef {Object} InboundGroupSessionData\n * @property {string} room_Id\n * @property {string} session pickled Olm.InboundGroupSession\n * @property {Object} keysClaimed\n * @property {Array} forwardingCurve25519KeyChain Devices involved in forwarding\n * this session to us (normally empty).\n */\n\n/**\n * Unpickle a session from a sessionData object and invoke the given function.\n * The session is valid only until func returns.\n *\n * @param {Object} sessionData Object describing the session.\n * @param {function(Olm.InboundGroupSession)} func Invoked with the unpickled session\n * @return {*} result of func\n */\nOlmDevice.prototype._unpickleInboundGroupSession = function (sessionData, func) {\n var session = new global.Olm.InboundGroupSession();\n try {\n session.unpickle(this._pickleKey, sessionData.session);\n return func(session);\n } finally {\n session.free();\n }\n};\n\n/**\n * extract an InboundGroupSession from the crypto store and call the given function\n *\n * @param {string} roomId The room ID to extract the session for, or null to fetch\n * sessions for any room.\n * @param {string} senderKey\n * @param {string} sessionId\n * @param {*} txn Opaque transaction object from cryptoStore.doTxn()\n * @param {function(Olm.InboundGroupSession, InboundGroupSessionData)} func\n * function to call.\n *\n * @private\n */\nOlmDevice.prototype._getInboundGroupSession = function (roomId, senderKey, sessionId, txn, func) {\n var _this14 = this;\n\n this._cryptoStore.getEndToEndInboundGroupSession(senderKey, sessionId, txn, function (sessionData) {\n if (sessionData === null) {\n func(null);\n return;\n }\n\n // if we were given a room ID, check that the it matches the original one for the session. This stops\n // the HS pretending a message was targeting a different room.\n if (roomId !== null && roomId !== sessionData.room_id) {\n throw new Error(\"Mismatched room_id for inbound group session (expected \" + sessionData.room_id + \", was \" + roomId + \")\");\n }\n\n _this14._unpickleInboundGroupSession(sessionData, function (session) {\n func(session, sessionData);\n });\n });\n};\n\n/**\n * Add an inbound group session to the session store\n *\n * @param {string} roomId room in which this session will be used\n * @param {string} senderKey base64-encoded curve25519 key of the sender\n * @param {Array} forwardingCurve25519KeyChain Devices involved in forwarding\n * this session to us.\n * @param {string} sessionId session identifier\n * @param {string} sessionKey base64-encoded secret key\n * @param {Object} keysClaimed Other keys the sender claims.\n * @param {boolean} exportFormat true if the megolm keys are in export format\n * (ie, they lack an ed25519 signature)\n */\nOlmDevice.prototype.addInboundGroupSession = function () {\n var _ref14 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee14(roomId, senderKey, forwardingCurve25519KeyChain, sessionId, sessionKey, keysClaimed, exportFormat) {\n var _this15 = this;\n\n return _regenerator2.default.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n _context14.next = 2;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_INBOUND_GROUP_SESSIONS], function (txn) {\n /* if we already have this session, consider updating it */\n _this15._getInboundGroupSession(roomId, senderKey, sessionId, txn, function (existingSession, existingSessionData) {\n // new session.\n var session = new global.Olm.InboundGroupSession();\n try {\n if (exportFormat) {\n session.import_session(sessionKey);\n } else {\n session.create(sessionKey);\n }\n if (sessionId != session.session_id()) {\n throw new Error(\"Mismatched group session ID from senderKey: \" + senderKey);\n }\n\n if (existingSession) {\n _logger2.default.log(\"Update for megolm session \" + senderKey + \"/\" + sessionId);\n if (existingSession.first_known_index() <= session.first_known_index()) {\n // existing session has lower index (i.e. can\n // decrypt more), so keep it\n _logger2.default.log(\"Keeping existing session\");\n return;\n }\n }\n\n var sessionData = {\n room_id: roomId,\n session: session.pickle(_this15._pickleKey),\n keysClaimed: keysClaimed,\n forwardingCurve25519KeyChain: forwardingCurve25519KeyChain\n };\n\n _this15._cryptoStore.storeEndToEndInboundGroupSession(senderKey, sessionId, sessionData, txn);\n } finally {\n session.free();\n }\n });\n }));\n\n case 2:\n case 'end':\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n return function (_x26, _x27, _x28, _x29, _x30, _x31, _x32) {\n return _ref14.apply(this, arguments);\n };\n}();\n\n/**\n * Decrypt a received message with an inbound group session\n *\n * @param {string} roomId room in which the message was received\n * @param {string} senderKey base64-encoded curve25519 key of the sender\n * @param {string} sessionId session identifier\n * @param {string} body base64-encoded body of the encrypted message\n * @param {string} eventId ID of the event being decrypted\n * @param {Number} timestamp timestamp of the event being decrypted\n *\n * @return {null} the sessionId is unknown\n *\n * @return {Promise<{result: string, senderKey: string,\n * forwardingCurve25519KeyChain: Array,\n * keysClaimed: Object}>}\n */\nOlmDevice.prototype.decryptGroupMessage = function () {\n var _ref15 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee15(roomId, senderKey, sessionId, body, eventId, timestamp) {\n var _this16 = this;\n\n var result;\n return _regenerator2.default.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n result = void 0;\n _context15.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_INBOUND_GROUP_SESSIONS], function (txn) {\n _this16._getInboundGroupSession(roomId, senderKey, sessionId, txn, function (session, sessionData) {\n if (session === null) {\n result = null;\n return;\n }\n var res = session.decrypt(body);\n\n var plaintext = res.plaintext;\n if (plaintext === undefined) {\n // Compatibility for older olm versions.\n plaintext = res;\n } else {\n // Check if we have seen this message index before to detect replay attacks.\n // If the event ID and timestamp are specified, and the match the event ID\n // and timestamp from the last time we used this message index, then we\n // don't consider it a replay attack.\n var messageIndexKey = senderKey + \"|\" + sessionId + \"|\" + res.message_index;\n if (messageIndexKey in _this16._inboundGroupSessionMessageIndexes) {\n var msgInfo = _this16._inboundGroupSessionMessageIndexes[messageIndexKey];\n if (msgInfo.id !== eventId || msgInfo.timestamp !== timestamp) {\n throw new Error(\"Duplicate message index, possible replay attack: \" + messageIndexKey);\n }\n }\n _this16._inboundGroupSessionMessageIndexes[messageIndexKey] = {\n id: eventId,\n timestamp: timestamp\n };\n }\n\n sessionData.session = session.pickle(_this16._pickleKey);\n _this16._cryptoStore.storeEndToEndInboundGroupSession(senderKey, sessionId, sessionData, txn);\n result = {\n result: plaintext,\n keysClaimed: sessionData.keysClaimed || {},\n senderKey: senderKey,\n forwardingCurve25519KeyChain: sessionData.forwardingCurve25519KeyChain || []\n };\n });\n }));\n\n case 3:\n return _context15.abrupt('return', result);\n\n case 4:\n case 'end':\n return _context15.stop();\n }\n }\n }, _callee15, this);\n }));\n\n return function (_x33, _x34, _x35, _x36, _x37, _x38) {\n return _ref15.apply(this, arguments);\n };\n}();\n\n/**\n * Determine if we have the keys for a given megolm session\n *\n * @param {string} roomId room in which the message was received\n * @param {string} senderKey base64-encoded curve25519 key of the sender\n * @param {sring} sessionId session identifier\n *\n * @returns {Promise} true if we have the keys to this session\n */\nOlmDevice.prototype.hasInboundSessionKeys = function () {\n var _ref16 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee16(roomId, senderKey, sessionId) {\n var _this17 = this;\n\n var result;\n return _regenerator2.default.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n result = void 0;\n _context16.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_INBOUND_GROUP_SESSIONS], function (txn) {\n _this17._cryptoStore.getEndToEndInboundGroupSession(senderKey, sessionId, txn, function (sessionData) {\n if (sessionData === null) {\n result = false;\n return;\n }\n\n if (roomId !== sessionData.room_id) {\n _logger2.default.warn('requested keys for inbound group session ' + senderKey + '|' + (sessionId + ', with incorrect room_id ') + ('(expected ' + sessionData.room_id + ', ') + ('was ' + roomId + ')'));\n result = false;\n } else {\n result = true;\n }\n });\n }));\n\n case 3:\n return _context16.abrupt('return', result);\n\n case 4:\n case 'end':\n return _context16.stop();\n }\n }\n }, _callee16, this);\n }));\n\n return function (_x39, _x40, _x41) {\n return _ref16.apply(this, arguments);\n };\n}();\n\n/**\n * Extract the keys to a given megolm session, for sharing\n *\n * @param {string} roomId room in which the message was received\n * @param {string} senderKey base64-encoded curve25519 key of the sender\n * @param {string} sessionId session identifier\n * @param {integer} chainIndex The chain index at which to export the session.\n * If omitted, export at the first index we know about.\n *\n * @returns {Promise<{chain_index: number, key: string,\n * forwarding_curve25519_key_chain: Array,\n * sender_claimed_ed25519_key: string\n * }>}\n * details of the session key. The key is a base64-encoded megolm key in\n * export format.\n *\n * @throws Error If the given chain index could not be obtained from the known\n * index (ie. the given chain index is before the first we have).\n */\nOlmDevice.prototype.getInboundGroupSessionKey = function () {\n var _ref17 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee17(roomId, senderKey, sessionId, chainIndex) {\n var _this18 = this;\n\n var result;\n return _regenerator2.default.wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n result = void 0;\n _context17.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_INBOUND_GROUP_SESSIONS], function (txn) {\n _this18._getInboundGroupSession(roomId, senderKey, sessionId, txn, function (session, sessionData) {\n if (session === null) {\n result = null;\n return;\n }\n\n if (chainIndex === undefined) {\n chainIndex = session.first_known_index();\n }\n\n var exportedSession = session.export_session(chainIndex);\n\n var claimedKeys = sessionData.keysClaimed || {};\n var senderEd25519Key = claimedKeys.ed25519 || null;\n\n result = {\n \"chain_index\": chainIndex,\n \"key\": exportedSession,\n \"forwarding_curve25519_key_chain\": sessionData.forwardingCurve25519KeyChain || [],\n \"sender_claimed_ed25519_key\": senderEd25519Key\n };\n });\n }));\n\n case 3:\n return _context17.abrupt('return', result);\n\n case 4:\n case 'end':\n return _context17.stop();\n }\n }\n }, _callee17, this);\n }));\n\n return function (_x42, _x43, _x44, _x45) {\n return _ref17.apply(this, arguments);\n };\n}();\n\n/**\n * Export an inbound group session\n *\n * @param {string} senderKey base64-encoded curve25519 key of the sender\n * @param {string} sessionId session identifier\n * @param {string} sessionData The session object from the store\n * @return {module:crypto/OlmDevice.MegolmSessionData} exported session data\n */\nOlmDevice.prototype.exportInboundGroupSession = function (senderKey, sessionId, sessionData) {\n return this._unpickleInboundGroupSession(sessionData, function (session) {\n var messageIndex = session.first_known_index();\n\n return {\n \"sender_key\": senderKey,\n \"sender_claimed_keys\": sessionData.keysClaimed,\n \"room_id\": sessionData.room_id,\n \"session_id\": sessionId,\n \"session_key\": session.export_session(messageIndex),\n \"forwarding_curve25519_key_chain\": session.forwardingCurve25519KeyChain || [],\n \"first_known_index\": session.first_known_index()\n };\n });\n};\n\n// Utilities\n// =========\n\n/**\n * Verify an ed25519 signature.\n *\n * @param {string} key ed25519 key\n * @param {string} message message which was signed\n * @param {string} signature base64-encoded signature to be checked\n *\n * @raises {Error} if there is a problem with the verification. If the key was\n * too small then the message will be \"OLM.INVALID_BASE64\". If the signature\n * was invalid then the message will be \"OLM.BAD_MESSAGE_MAC\".\n */\nOlmDevice.prototype.verifySignature = function (key, message, signature) {\n this._getUtility(function (util) {\n util.ed25519_verify(key, message, signature);\n });\n};\n\n/** */\nmodule.exports = OlmDevice;\n//# sourceMappingURL=OlmDevice.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module crypto/algorithms\n */\n\nvar base = require(\"./base\");\n\nrequire(\"./olm\");\nrequire(\"./megolm\");\n\n/**\n * @see module:crypto/algorithms/base.ENCRYPTION_CLASSES\n */\nmodule.exports.ENCRYPTION_CLASSES = base.ENCRYPTION_CLASSES;\n\n/**\n * @see module:crypto/algorithms/base.DECRYPTION_CLASSES\n */\nmodule.exports.DECRYPTION_CLASSES = base.DECRYPTION_CLASSES;\n\n/**\n * @see module:crypto/algorithms/base.DecryptionError\n */\nmodule.exports.DecryptionError = base.DecryptionError;\n//# sourceMappingURL=index.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * Defines m.olm encryption/decryption\n *\n * @module crypto/algorithms/olm\n */\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _logger = require('../../logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar utils = require(\"../../utils\");\nvar olmlib = require(\"../olmlib\");\nvar DeviceInfo = require(\"../deviceinfo\");\nvar DeviceVerification = DeviceInfo.DeviceVerification;\n\nvar base = require(\"./base\");\n\n/**\n * Olm encryption implementation\n *\n * @constructor\n * @extends {module:crypto/algorithms/base.EncryptionAlgorithm}\n *\n * @param {object} params parameters, as per\n * {@link module:crypto/algorithms/base.EncryptionAlgorithm}\n */\nfunction OlmEncryption(params) {\n base.EncryptionAlgorithm.call(this, params);\n this._sessionPrepared = false;\n this._prepPromise = null;\n}\nutils.inherits(OlmEncryption, base.EncryptionAlgorithm);\n\n/**\n * @private\n\n * @param {string[]} roomMembers list of currently-joined users in the room\n * @return {module:client.Promise} Promise which resolves when setup is complete\n */\nOlmEncryption.prototype._ensureSession = function (roomMembers) {\n if (this._prepPromise) {\n // prep already in progress\n return this._prepPromise;\n }\n\n if (this._sessionPrepared) {\n // prep already done\n return _bluebird2.default.resolve();\n }\n\n var self = this;\n this._prepPromise = self._crypto.downloadKeys(roomMembers).then(function (res) {\n return self._crypto.ensureOlmSessionsForUsers(roomMembers);\n }).then(function () {\n self._sessionPrepared = true;\n }).finally(function () {\n self._prepPromise = null;\n });\n return this._prepPromise;\n};\n\n/**\n * @inheritdoc\n *\n * @param {module:models/room} room\n * @param {string} eventType\n * @param {object} content plaintext event content\n *\n * @return {module:client.Promise} Promise which resolves to the new event body\n */\nOlmEncryption.prototype.encryptMessage = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(room, eventType, content) {\n var members, users, self, payloadFields, encryptedContent, promises, i, userId, devices, j, deviceInfo, key;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(room.getEncryptionTargetMembers());\n\n case 2:\n members = _context.sent;\n users = utils.map(members, function (u) {\n return u.userId;\n });\n self = this;\n _context.next = 7;\n return (0, _bluebird.resolve)(this._ensureSession(users));\n\n case 7:\n payloadFields = {\n room_id: room.roomId,\n type: eventType,\n content: content\n };\n encryptedContent = {\n algorithm: olmlib.OLM_ALGORITHM,\n sender_key: self._olmDevice.deviceCurve25519Key,\n ciphertext: {}\n };\n promises = [];\n i = 0;\n\n case 11:\n if (!(i < users.length)) {\n _context.next = 29;\n break;\n }\n\n userId = users[i];\n devices = self._crypto.getStoredDevicesForUser(userId);\n j = 0;\n\n case 15:\n if (!(j < devices.length)) {\n _context.next = 26;\n break;\n }\n\n deviceInfo = devices[j];\n key = deviceInfo.getIdentityKey();\n\n if (!(key == self._olmDevice.deviceCurve25519Key)) {\n _context.next = 20;\n break;\n }\n\n return _context.abrupt('continue', 23);\n\n case 20:\n if (!(deviceInfo.verified == DeviceVerification.BLOCKED)) {\n _context.next = 22;\n break;\n }\n\n return _context.abrupt('continue', 23);\n\n case 22:\n\n promises.push(olmlib.encryptMessageForDevice(encryptedContent.ciphertext, self._userId, self._deviceId, self._olmDevice, userId, deviceInfo, payloadFields));\n\n case 23:\n ++j;\n _context.next = 15;\n break;\n\n case 26:\n ++i;\n _context.next = 11;\n break;\n\n case 29:\n _context.next = 31;\n return (0, _bluebird.resolve)(_bluebird2.default.all(promises).return(encryptedContent));\n\n case 31:\n return _context.abrupt('return', _context.sent);\n\n case 32:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function (_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * Olm decryption implementation\n *\n * @constructor\n * @extends {module:crypto/algorithms/base.DecryptionAlgorithm}\n * @param {object} params parameters, as per\n * {@link module:crypto/algorithms/base.DecryptionAlgorithm}\n */\nfunction OlmDecryption(params) {\n base.DecryptionAlgorithm.call(this, params);\n}\nutils.inherits(OlmDecryption, base.DecryptionAlgorithm);\n\n/**\n * @inheritdoc\n *\n * @param {MatrixEvent} event\n *\n * returns a promise which resolves to a\n * {@link module:crypto~EventDecryptionResult} once we have finished\n * decrypting. Rejects with an `algorithms.DecryptionError` if there is a\n * problem decrypting the event.\n */\nOlmDecryption.prototype.decryptEvent = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(event) {\n var content, deviceKey, ciphertext, message, payloadString, payload, claimedKeys;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n content = event.getWireContent();\n deviceKey = content.sender_key;\n ciphertext = content.ciphertext;\n\n if (ciphertext) {\n _context2.next = 5;\n break;\n }\n\n throw new base.DecryptionError(\"OLM_MISSING_CIPHERTEXT\", \"Missing ciphertext\");\n\n case 5:\n if (this._olmDevice.deviceCurve25519Key in ciphertext) {\n _context2.next = 7;\n break;\n }\n\n throw new base.DecryptionError(\"OLM_NOT_INCLUDED_IN_RECIPIENTS\", \"Not included in recipients\");\n\n case 7:\n message = ciphertext[this._olmDevice.deviceCurve25519Key];\n payloadString = void 0;\n _context2.prev = 9;\n _context2.next = 12;\n return (0, _bluebird.resolve)(this._decryptMessage(deviceKey, message));\n\n case 12:\n payloadString = _context2.sent;\n _context2.next = 18;\n break;\n\n case 15:\n _context2.prev = 15;\n _context2.t0 = _context2['catch'](9);\n throw new base.DecryptionError(\"OLM_BAD_ENCRYPTED_MESSAGE\", \"Bad Encrypted Message\", {\n sender: deviceKey,\n err: _context2.t0\n });\n\n case 18:\n payload = JSON.parse(payloadString);\n\n // check that we were the intended recipient, to avoid unknown-key attack\n // https://github.com/vector-im/vector-web/issues/2483\n\n if (!(payload.recipient != this._userId)) {\n _context2.next = 21;\n break;\n }\n\n throw new base.DecryptionError(\"OLM_BAD_RECIPIENT\", \"Message was intented for \" + payload.recipient);\n\n case 21:\n if (!(payload.recipient_keys.ed25519 != this._olmDevice.deviceEd25519Key)) {\n _context2.next = 23;\n break;\n }\n\n throw new base.DecryptionError(\"OLM_BAD_RECIPIENT_KEY\", \"Message not intended for this device\", {\n intended: payload.recipient_keys.ed25519,\n our_key: this._olmDevice.deviceEd25519Key\n });\n\n case 23:\n if (!(payload.sender != event.getSender())) {\n _context2.next = 25;\n break;\n }\n\n throw new base.DecryptionError(\"OLM_FORWARDED_MESSAGE\", \"Message forwarded from \" + payload.sender, {\n reported_sender: event.getSender()\n });\n\n case 25:\n if (!(payload.room_id !== event.getRoomId())) {\n _context2.next = 27;\n break;\n }\n\n throw new base.DecryptionError(\"OLM_BAD_ROOM\", \"Message intended for room \" + payload.room_id, {\n reported_room: event.room_id\n });\n\n case 27:\n claimedKeys = payload.keys || {};\n return _context2.abrupt('return', {\n clearEvent: payload,\n senderCurve25519Key: deviceKey,\n claimedEd25519Key: claimedKeys.ed25519 || null\n });\n\n case 29:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this, [[9, 15]]);\n }));\n\n return function (_x4) {\n return _ref2.apply(this, arguments);\n };\n}();\n\n/**\n * Attempt to decrypt an Olm message\n *\n * @param {string} theirDeviceIdentityKey Curve25519 identity key of the sender\n * @param {object} message message object, with 'type' and 'body' fields\n *\n * @return {string} payload, if decrypted successfully.\n */\nOlmDecryption.prototype._decryptMessage = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(theirDeviceIdentityKey, message) {\n var sessionIds, decryptionErrors, i, sessionId, payload, foundSession, res;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return (0, _bluebird.resolve)(this._olmDevice.getSessionIdsForDevice(theirDeviceIdentityKey));\n\n case 2:\n sessionIds = _context3.sent;\n\n\n // try each session in turn.\n decryptionErrors = {};\n i = 0;\n\n case 5:\n if (!(i < sessionIds.length)) {\n _context3.next = 26;\n break;\n }\n\n sessionId = sessionIds[i];\n _context3.prev = 7;\n _context3.next = 10;\n return (0, _bluebird.resolve)(this._olmDevice.decryptMessage(theirDeviceIdentityKey, sessionId, message.type, message.body));\n\n case 10:\n payload = _context3.sent;\n\n _logger2.default.log(\"Decrypted Olm message from \" + theirDeviceIdentityKey + \" with session \" + sessionId);\n return _context3.abrupt('return', payload);\n\n case 15:\n _context3.prev = 15;\n _context3.t0 = _context3['catch'](7);\n _context3.next = 19;\n return (0, _bluebird.resolve)(this._olmDevice.matchesSession(theirDeviceIdentityKey, sessionId, message.type, message.body));\n\n case 19:\n foundSession = _context3.sent;\n\n if (!foundSession) {\n _context3.next = 22;\n break;\n }\n\n throw new Error(\"Error decrypting prekey message with existing session id \" + sessionId + \": \" + _context3.t0.message);\n\n case 22:\n\n // otherwise it's probably a message for another session; carry on, but\n // keep a record of the error\n decryptionErrors[sessionId] = _context3.t0.message;\n\n case 23:\n i++;\n _context3.next = 5;\n break;\n\n case 26:\n if (!(message.type !== 0)) {\n _context3.next = 30;\n break;\n }\n\n if (!(sessionIds.length === 0)) {\n _context3.next = 29;\n break;\n }\n\n throw new Error(\"No existing sessions\");\n\n case 29:\n throw new Error(\"Error decrypting non-prekey message with existing sessions: \" + (0, _stringify2.default)(decryptionErrors));\n\n case 30:\n\n // prekey message which doesn't match any existing sessions: make a new\n // session.\n\n res = void 0;\n _context3.prev = 31;\n _context3.next = 34;\n return (0, _bluebird.resolve)(this._olmDevice.createInboundSession(theirDeviceIdentityKey, message.type, message.body));\n\n case 34:\n res = _context3.sent;\n _context3.next = 41;\n break;\n\n case 37:\n _context3.prev = 37;\n _context3.t1 = _context3['catch'](31);\n\n decryptionErrors[\"(new)\"] = _context3.t1.message;\n throw new Error(\"Error decrypting prekey message: \" + (0, _stringify2.default)(decryptionErrors));\n\n case 41:\n\n _logger2.default.log(\"created new inbound Olm session ID \" + res.session_id + \" with \" + theirDeviceIdentityKey);\n return _context3.abrupt('return', res.payload);\n\n case 43:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this, [[7, 15], [31, 37]]);\n }));\n\n return function (_x5, _x6) {\n return _ref3.apply(this, arguments);\n };\n}();\n\nbase.registerAlgorithm(olmlib.OLM_ALGORITHM, OlmEncryption, OlmDecryption);\n//# sourceMappingURL=olm.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * Defines m.olm encryption/decryption\n *\n * @module crypto/algorithms/megolm\n */\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _set = require('babel-runtime/core-js/set');\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _logger = require('../../../src/logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar utils = require(\"../../utils\");\nvar olmlib = require(\"../olmlib\");\nvar base = require(\"./base\");\n\n/**\n * @private\n * @constructor\n *\n * @param {string} sessionId\n *\n * @property {string} sessionId\n * @property {Number} useCount number of times this session has been used\n * @property {Number} creationTime when the session was created (ms since the epoch)\n *\n * @property {object} sharedWithDevices\n * devices with which we have shared the session key\n * userId -> {deviceId -> msgindex}\n */\nfunction OutboundSessionInfo(sessionId) {\n this.sessionId = sessionId;\n this.useCount = 0;\n this.creationTime = new Date().getTime();\n this.sharedWithDevices = {};\n}\n\n/**\n * Check if it's time to rotate the session\n *\n * @param {Number} rotationPeriodMsgs\n * @param {Number} rotationPeriodMs\n * @return {Boolean}\n */\nOutboundSessionInfo.prototype.needsRotation = function (rotationPeriodMsgs, rotationPeriodMs) {\n var sessionLifetime = new Date().getTime() - this.creationTime;\n\n if (this.useCount >= rotationPeriodMsgs || sessionLifetime >= rotationPeriodMs) {\n _logger2.default.log(\"Rotating megolm session after \" + this.useCount + \" messages, \" + sessionLifetime + \"ms\");\n return true;\n }\n\n return false;\n};\n\nOutboundSessionInfo.prototype.markSharedWithDevice = function (userId, deviceId, chainIndex) {\n if (!this.sharedWithDevices[userId]) {\n this.sharedWithDevices[userId] = {};\n }\n this.sharedWithDevices[userId][deviceId] = chainIndex;\n};\n\n/**\n * Determine if this session has been shared with devices which it shouldn't\n * have been.\n *\n * @param {Object} devicesInRoom userId -> {deviceId -> object}\n * devices we should shared the session with.\n *\n * @return {Boolean} true if we have shared the session with devices which aren't\n * in devicesInRoom.\n */\nOutboundSessionInfo.prototype.sharedWithTooManyDevices = function (devicesInRoom) {\n for (var userId in this.sharedWithDevices) {\n if (!this.sharedWithDevices.hasOwnProperty(userId)) {\n continue;\n }\n\n if (!devicesInRoom.hasOwnProperty(userId)) {\n _logger2.default.log(\"Starting new session because we shared with \" + userId);\n return true;\n }\n\n for (var deviceId in this.sharedWithDevices[userId]) {\n if (!this.sharedWithDevices[userId].hasOwnProperty(deviceId)) {\n continue;\n }\n\n if (!devicesInRoom[userId].hasOwnProperty(deviceId)) {\n _logger2.default.log(\"Starting new session because we shared with \" + userId + \":\" + deviceId);\n return true;\n }\n }\n }\n};\n\n/**\n * Megolm encryption implementation\n *\n * @constructor\n * @extends {module:crypto/algorithms/base.EncryptionAlgorithm}\n *\n * @param {object} params parameters, as per\n * {@link module:crypto/algorithms/base.EncryptionAlgorithm}\n */\nfunction MegolmEncryption(params) {\n base.EncryptionAlgorithm.call(this, params);\n\n // the most recent attempt to set up a session. This is used to serialise\n // the session setups, so that we have a race-free view of which session we\n // are using, and which devices we have shared the keys with. It resolves\n // with an OutboundSessionInfo (or undefined, for the first message in the\n // room).\n this._setupPromise = _bluebird2.default.resolve();\n\n // Map of outbound sessions by sessions ID. Used if we need a particular\n // session (the session we're currently using to send is always obtained\n // using _setupPromise).\n this._outboundSessions = {};\n\n // default rotation periods\n this._sessionRotationPeriodMsgs = 100;\n this._sessionRotationPeriodMs = 7 * 24 * 3600 * 1000;\n\n if (params.config.rotation_period_ms !== undefined) {\n this._sessionRotationPeriodMs = params.config.rotation_period_ms;\n }\n\n if (params.config.rotation_period_msgs !== undefined) {\n this._sessionRotationPeriodMsgs = params.config.rotation_period_msgs;\n }\n}\nutils.inherits(MegolmEncryption, base.EncryptionAlgorithm);\n\n/**\n * @private\n *\n * @param {Object} devicesInRoom The devices in this room, indexed by user ID\n *\n * @return {module:client.Promise} Promise which resolves to the\n * OutboundSessionInfo when setup is complete.\n */\nMegolmEncryption.prototype._ensureOutboundSession = function (devicesInRoom) {\n\n // takes the previous OutboundSessionInfo, and considers whether to create\n // a new one. Also shares the key with any (new) devices in the room.\n // Updates `session` to hold the final OutboundSessionInfo.\n //\n // returns a promise which resolves once the keyshare is successful.\n var prepareSession = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(oldSession) {\n var shareMap, userId, userDevices, deviceId, deviceInfo, key;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n session = oldSession;\n\n // need to make a brand new session?\n if (session && session.needsRotation(self._sessionRotationPeriodMsgs, self._sessionRotationPeriodMs)) {\n _logger2.default.log(\"Starting new megolm session because we need to rotate.\");\n session = null;\n }\n\n // determine if we have shared with anyone we shouldn't have\n if (session && session.sharedWithTooManyDevices(devicesInRoom)) {\n session = null;\n }\n\n if (session) {\n _context.next = 9;\n break;\n }\n\n _logger2.default.log('Starting new megolm session for room ' + self._roomId);\n _context.next = 7;\n return (0, _bluebird.resolve)(self._prepareNewSession());\n\n case 7:\n session = _context.sent;\n\n self._outboundSessions[session.sessionId] = session;\n\n case 9:\n\n // now check if we need to share with any devices\n shareMap = {};\n _context.t0 = _regenerator2.default.keys(devicesInRoom);\n\n case 11:\n if ((_context.t1 = _context.t0()).done) {\n _context.next = 30;\n break;\n }\n\n userId = _context.t1.value;\n\n if (devicesInRoom.hasOwnProperty(userId)) {\n _context.next = 15;\n break;\n }\n\n return _context.abrupt('continue', 11);\n\n case 15:\n userDevices = devicesInRoom[userId];\n _context.t2 = _regenerator2.default.keys(userDevices);\n\n case 17:\n if ((_context.t3 = _context.t2()).done) {\n _context.next = 28;\n break;\n }\n\n deviceId = _context.t3.value;\n\n if (userDevices.hasOwnProperty(deviceId)) {\n _context.next = 21;\n break;\n }\n\n return _context.abrupt('continue', 17);\n\n case 21:\n deviceInfo = userDevices[deviceId];\n key = deviceInfo.getIdentityKey();\n\n if (!(key == self._olmDevice.deviceCurve25519Key)) {\n _context.next = 25;\n break;\n }\n\n return _context.abrupt('continue', 17);\n\n case 25:\n\n if (!session.sharedWithDevices[userId] || session.sharedWithDevices[userId][deviceId] === undefined) {\n shareMap[userId] = shareMap[userId] || [];\n shareMap[userId].push(deviceInfo);\n }\n _context.next = 17;\n break;\n\n case 28:\n _context.next = 11;\n break;\n\n case 30:\n return _context.abrupt('return', self._shareKeyWithDevices(session, shareMap));\n\n case 31:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function prepareSession(_x) {\n return _ref.apply(this, arguments);\n };\n }();\n\n // helper which returns the session prepared by prepareSession\n\n\n var self = this;\n\n var session = void 0;function returnSession() {\n return session;\n }\n\n // first wait for the previous share to complete\n var prom = this._setupPromise.then(prepareSession);\n\n // _setupPromise resolves to `session` whether or not the share succeeds\n this._setupPromise = prom.then(returnSession, returnSession);\n\n // but we return a promise which only resolves if the share was successful.\n return prom.then(returnSession);\n};\n\n/**\n * @private\n *\n * @return {module:crypto/algorithms/megolm.OutboundSessionInfo} session\n */\nMegolmEncryption.prototype._prepareNewSession = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var sessionId, key;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n sessionId = this._olmDevice.createOutboundGroupSession();\n key = this._olmDevice.getOutboundGroupSessionKey(sessionId);\n _context2.next = 4;\n return (0, _bluebird.resolve)(this._olmDevice.addInboundGroupSession(this._roomId, this._olmDevice.deviceCurve25519Key, [], sessionId, key.key, { ed25519: this._olmDevice.deviceEd25519Key }));\n\n case 4:\n\n if (this._crypto.backupInfo) {\n // don't wait for it to complete\n this._crypto.backupGroupSession(this._roomId, this._olmDevice.deviceCurve25519Key, [], sessionId, key.key).catch(function (e) {\n // This throws if the upload failed, but this is fine\n // since it will have written it to the db and will retry.\n _logger2.default.log(\"Failed to back up group session\", e);\n });\n }\n\n return _context2.abrupt('return', new OutboundSessionInfo(sessionId));\n\n case 6:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n}));\n\n/**\n * @private\n *\n * @param {module:crypto/algorithms/megolm.OutboundSessionInfo} session\n *\n * @param {number} chainIndex current chain index\n *\n * @param {object} devicemap\n * mapping from userId to deviceId to {@link module:crypto~OlmSessionResult}\n *\n * @param {object} devicesByUser\n * map from userid to list of devices\n *\n * @return {array>}\n */\nMegolmEncryption.prototype._splitUserDeviceMap = function (session, chainIndex, devicemap, devicesByUser) {\n var maxToDeviceMessagesPerRequest = 20;\n\n // use an array where the slices of a content map gets stored\n var mapSlices = [];\n var currentSliceId = 0; // start inserting in the first slice\n var entriesInCurrentSlice = 0;\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(devicesByUser)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var userId = _step.value;\n\n var devicesToShareWith = devicesByUser[userId];\n var sessionResults = devicemap[userId];\n\n for (var i = 0; i < devicesToShareWith.length; i++) {\n var deviceInfo = devicesToShareWith[i];\n var deviceId = deviceInfo.deviceId;\n\n var sessionResult = sessionResults[deviceId];\n if (!sessionResult.sessionId) {\n // no session with this device, probably because there\n // were no one-time keys.\n //\n // we could send them a to_device message anyway, as a\n // signal that they have missed out on the key sharing\n // message because of the lack of keys, but there's not\n // much point in that really; it will mostly serve to clog\n // up to_device inboxes.\n\n // mark this device as \"handled\" because we don't want to try\n // to claim a one-time-key for dead devices on every message.\n session.markSharedWithDevice(userId, deviceId, chainIndex);\n\n // ensureOlmSessionsForUsers has already done the logging,\n // so just skip it.\n continue;\n }\n\n _logger2.default.log(\"share keys with device \" + userId + \":\" + deviceId);\n\n if (entriesInCurrentSlice > maxToDeviceMessagesPerRequest) {\n // the current slice is filled up. Start inserting into the next slice\n entriesInCurrentSlice = 0;\n currentSliceId++;\n }\n if (!mapSlices[currentSliceId]) {\n mapSlices[currentSliceId] = [];\n }\n\n mapSlices[currentSliceId].push({\n userId: userId,\n deviceInfo: deviceInfo\n });\n\n entriesInCurrentSlice++;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return mapSlices;\n};\n\n/**\n * @private\n *\n * @param {module:crypto/algorithms/megolm.OutboundSessionInfo} session\n *\n * @param {number} chainIndex current chain index\n *\n * @param {object} userDeviceMap\n * mapping from userId to deviceInfo\n *\n * @param {object} payload fields to include in the encrypted payload\n *\n * @return {module:client.Promise} Promise which resolves once the key sharing\n * for the given userDeviceMap is generated and has been sent.\n */\nMegolmEncryption.prototype._encryptAndSendKeysToDevices = function (session, chainIndex, userDeviceMap, payload) {\n var _this = this;\n\n var encryptedContent = {\n algorithm: olmlib.OLM_ALGORITHM,\n sender_key: this._olmDevice.deviceCurve25519Key,\n ciphertext: {}\n };\n var contentMap = {};\n\n var promises = [];\n for (var i = 0; i < userDeviceMap.length; i++) {\n var val = userDeviceMap[i];\n var userId = val.userId;\n var deviceInfo = val.deviceInfo;\n var deviceId = deviceInfo.deviceId;\n\n if (!contentMap[userId]) {\n contentMap[userId] = {};\n }\n contentMap[userId][deviceId] = encryptedContent;\n\n promises.push(olmlib.encryptMessageForDevice(encryptedContent.ciphertext, this._userId, this._deviceId, this._olmDevice, userId, deviceInfo, payload));\n }\n\n return _bluebird2.default.all(promises).then(function () {\n return _this._baseApis.sendToDevice(\"m.room.encrypted\", contentMap).then(function () {\n // store that we successfully uploaded the keys of the current slice\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)((0, _keys2.default)(contentMap)), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _userId = _step2.value;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)((0, _keys2.default)(contentMap[_userId])), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _deviceId = _step3.value;\n\n session.markSharedWithDevice(_userId, _deviceId, chainIndex);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n });\n });\n};\n\n/**\n * Re-shares a megolm session key with devices if the key has already been\n * sent to them.\n *\n * @param {string} senderKey The key of the originating device for the session\n * @param {string} sessionId ID of the outbound session to share\n * @param {string} userId ID of the user who owns the target device\n * @param {module:crypto/deviceinfo} device The target device\n */\nMegolmEncryption.prototype.reshareKeyWithDevice = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(senderKey, sessionId, userId, device) {\n var obSessionInfo, sentChainIndex, key, payload, encryptedContent;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n obSessionInfo = this._outboundSessions[sessionId];\n\n if (obSessionInfo) {\n _context3.next = 4;\n break;\n }\n\n _logger2.default.debug(\"Session ID \" + sessionId + \" not found: not re-sharing keys\");\n return _context3.abrupt('return');\n\n case 4:\n if (!(obSessionInfo.sharedWithDevices[userId] === undefined)) {\n _context3.next = 7;\n break;\n }\n\n _logger2.default.debug(\"Session ID \" + sessionId + \" never shared with user \" + userId);\n return _context3.abrupt('return');\n\n case 7:\n sentChainIndex = obSessionInfo.sharedWithDevices[userId][device.deviceId];\n\n if (!(sentChainIndex === undefined)) {\n _context3.next = 11;\n break;\n }\n\n _logger2.default.debug(\"Session ID \" + sessionId + \" never shared with device \" + userId + \":\" + device.deviceId);\n return _context3.abrupt('return');\n\n case 11:\n _context3.next = 13;\n return (0, _bluebird.resolve)(this._olmDevice.getInboundGroupSessionKey(this._roomId, senderKey, sessionId, sentChainIndex));\n\n case 13:\n key = _context3.sent;\n\n if (key) {\n _context3.next = 17;\n break;\n }\n\n _logger2.default.warn(\"No outbound session key found for \" + sessionId + \": not re-sharing keys\");\n return _context3.abrupt('return');\n\n case 17:\n _context3.next = 19;\n return (0, _bluebird.resolve)(olmlib.ensureOlmSessionsForDevices(this._olmDevice, this._baseApis, (0, _defineProperty3.default)({}, userId, (0, _defineProperty3.default)({}, device.deviceId, device))));\n\n case 19:\n payload = {\n type: \"m.forwarded_room_key\",\n content: {\n algorithm: olmlib.MEGOLM_ALGORITHM,\n room_id: this._roomId,\n session_id: sessionId,\n session_key: key.key,\n chain_index: key.chain_index,\n sender_key: senderKey,\n sender_claimed_ed25519_key: key.sender_claimed_ed25519_key,\n forwarding_curve25519_key_chain: key.forwarding_curve25519_key_chain\n }\n };\n encryptedContent = {\n algorithm: olmlib.OLM_ALGORITHM,\n sender_key: this._olmDevice.deviceCurve25519Key,\n ciphertext: {}\n };\n _context3.next = 23;\n return (0, _bluebird.resolve)(olmlib.encryptMessageForDevice(encryptedContent.ciphertext, this._userId, this._deviceId, this._olmDevice, userId, device, payload));\n\n case 23:\n _context3.next = 25;\n return (0, _bluebird.resolve)(this._baseApis.sendToDevice(\"m.room.encrypted\", (0, _defineProperty3.default)({}, userId, (0, _defineProperty3.default)({}, device.deviceId, encryptedContent))));\n\n case 25:\n _logger2.default.debug('Re-shared key for session ' + sessionId + ' with ' + userId + ':' + device.deviceId);\n\n case 26:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function (_x2, _x3, _x4, _x5) {\n return _ref3.apply(this, arguments);\n };\n}();\n\n/**\n * @param {module:crypto/algorithms/megolm.OutboundSessionInfo} session\n *\n * @param {object} devicesByUser\n * map from userid to list of devices\n */\nMegolmEncryption.prototype._shareKeyWithDevices = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(session, devicesByUser) {\n var key, payload, devicemap, userDeviceMaps, i;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n key = this._olmDevice.getOutboundGroupSessionKey(session.sessionId);\n payload = {\n type: \"m.room_key\",\n content: {\n algorithm: olmlib.MEGOLM_ALGORITHM,\n room_id: this._roomId,\n session_id: session.sessionId,\n session_key: key.key,\n chain_index: key.chain_index\n }\n };\n _context4.next = 4;\n return (0, _bluebird.resolve)(olmlib.ensureOlmSessionsForDevices(this._olmDevice, this._baseApis, devicesByUser));\n\n case 4:\n devicemap = _context4.sent;\n userDeviceMaps = this._splitUserDeviceMap(session, key.chain_index, devicemap, devicesByUser);\n i = 0;\n\n case 7:\n if (!(i < userDeviceMaps.length)) {\n _context4.next = 21;\n break;\n }\n\n _context4.prev = 8;\n _context4.next = 11;\n return (0, _bluebird.resolve)(this._encryptAndSendKeysToDevices(session, key.chain_index, userDeviceMaps[i], payload));\n\n case 11:\n _logger2.default.log('Completed megolm keyshare in ' + this._roomId + ' ' + ('(slice ' + (i + 1) + '/' + userDeviceMaps.length + ')'));\n _context4.next = 18;\n break;\n\n case 14:\n _context4.prev = 14;\n _context4.t0 = _context4['catch'](8);\n\n _logger2.default.log('megolm keyshare in ' + this._roomId + ' ' + ('(slice ' + (i + 1) + '/' + userDeviceMaps.length + ') failed'));\n\n throw _context4.t0;\n\n case 18:\n i++;\n _context4.next = 7;\n break;\n\n case 21:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this, [[8, 14]]);\n }));\n\n return function (_x6, _x7) {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/**\n * @inheritdoc\n *\n * @param {module:models/room} room\n * @param {string} eventType\n * @param {object} content plaintext event content\n *\n * @return {module:client.Promise} Promise which resolves to the new event body\n */\nMegolmEncryption.prototype.encryptMessage = function (room, eventType, content) {\n var self = this;\n _logger2.default.log('Starting to encrypt event for ' + this._roomId);\n\n return this._getDevicesInRoom(room).then(function (devicesInRoom) {\n // check if any of these devices are not yet known to the user.\n // if so, warn the user so they can verify or ignore.\n self._checkForUnknownDevices(devicesInRoom);\n\n return self._ensureOutboundSession(devicesInRoom);\n }).then(function (session) {\n var payloadJson = {\n room_id: self._roomId,\n type: eventType,\n content: content\n };\n\n var ciphertext = self._olmDevice.encryptGroupMessage(session.sessionId, (0, _stringify2.default)(payloadJson));\n\n var encryptedContent = {\n algorithm: olmlib.MEGOLM_ALGORITHM,\n sender_key: self._olmDevice.deviceCurve25519Key,\n ciphertext: ciphertext,\n session_id: session.sessionId,\n // Include our device ID so that recipients can send us a\n // m.new_device message if they don't have our session key.\n // XXX: Do we still need this now that m.new_device messages\n // no longer exist since #483?\n device_id: self._deviceId\n };\n\n session.useCount++;\n return encryptedContent;\n });\n};\n\n/**\n * Forces the current outbound group session to be discarded such\n * that another one will be created next time an event is sent.\n *\n * This should not normally be necessary.\n */\nMegolmEncryption.prototype.forceDiscardSession = function () {\n this._setupPromise = this._setupPromise.then(function () {\n return null;\n });\n};\n\n/**\n * Checks the devices we're about to send to and see if any are entirely\n * unknown to the user. If so, warn the user, and mark them as known to\n * give the user a chance to go verify them before re-sending this message.\n *\n * @param {Object} devicesInRoom userId -> {deviceId -> object}\n * devices we should shared the session with.\n */\nMegolmEncryption.prototype._checkForUnknownDevices = function (devicesInRoom) {\n var unknownDevices = {};\n\n (0, _keys2.default)(devicesInRoom).forEach(function (userId) {\n (0, _keys2.default)(devicesInRoom[userId]).forEach(function (deviceId) {\n var device = devicesInRoom[userId][deviceId];\n if (device.isUnverified() && !device.isKnown()) {\n if (!unknownDevices[userId]) {\n unknownDevices[userId] = {};\n }\n unknownDevices[userId][deviceId] = device;\n }\n });\n });\n\n if ((0, _keys2.default)(unknownDevices).length) {\n // it'd be kind to pass unknownDevices up to the user in this error\n throw new base.UnknownDeviceError(\"This room contains unknown devices which have not been verified. \" + \"We strongly recommend you verify them before continuing.\", unknownDevices);\n }\n};\n\n/**\n * Get the list of unblocked devices for all users in the room\n *\n * @param {module:models/room} room\n *\n * @return {module:client.Promise} Promise which resolves to a map\n * from userId to deviceId to deviceInfo\n */\nMegolmEncryption.prototype._getDevicesInRoom = function () {\n var _ref5 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(room) {\n var members, roomMembers, isBlacklisting, devices, userId, userDevices, deviceId;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return (0, _bluebird.resolve)(room.getEncryptionTargetMembers());\n\n case 2:\n members = _context5.sent;\n roomMembers = utils.map(members, function (u) {\n return u.userId;\n });\n\n // The global value is treated as a default for when rooms don't specify a value.\n\n isBlacklisting = this._crypto.getGlobalBlacklistUnverifiedDevices();\n\n if (typeof room.getBlacklistUnverifiedDevices() === 'boolean') {\n isBlacklisting = room.getBlacklistUnverifiedDevices();\n }\n\n // We are happy to use a cached version here: we assume that if we already\n // have a list of the user's devices, then we already share an e2e room\n // with them, which means that they will have announced any new devices via\n // device_lists in their /sync response. This cache should then be maintained\n // using all the device_lists changes and left fields.\n // See https://github.com/vector-im/riot-web/issues/2305 for details.\n _context5.next = 8;\n return (0, _bluebird.resolve)(this._crypto.downloadKeys(roomMembers, false));\n\n case 8:\n devices = _context5.sent;\n _context5.t0 = _regenerator2.default.keys(devices);\n\n case 10:\n if ((_context5.t1 = _context5.t0()).done) {\n _context5.next = 25;\n break;\n }\n\n userId = _context5.t1.value;\n\n if (devices.hasOwnProperty(userId)) {\n _context5.next = 14;\n break;\n }\n\n return _context5.abrupt('continue', 10);\n\n case 14:\n userDevices = devices[userId];\n _context5.t2 = _regenerator2.default.keys(userDevices);\n\n case 16:\n if ((_context5.t3 = _context5.t2()).done) {\n _context5.next = 23;\n break;\n }\n\n deviceId = _context5.t3.value;\n\n if (userDevices.hasOwnProperty(deviceId)) {\n _context5.next = 20;\n break;\n }\n\n return _context5.abrupt('continue', 16);\n\n case 20:\n\n if (userDevices[deviceId].isBlocked() || userDevices[deviceId].isUnverified() && isBlacklisting) {\n delete userDevices[deviceId];\n }\n _context5.next = 16;\n break;\n\n case 23:\n _context5.next = 10;\n break;\n\n case 25:\n return _context5.abrupt('return', devices);\n\n case 26:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n return function (_x8) {\n return _ref5.apply(this, arguments);\n };\n}();\n\n/**\n * Megolm decryption implementation\n *\n * @constructor\n * @extends {module:crypto/algorithms/base.DecryptionAlgorithm}\n *\n * @param {object} params parameters, as per\n * {@link module:crypto/algorithms/base.DecryptionAlgorithm}\n */\nfunction MegolmDecryption(params) {\n base.DecryptionAlgorithm.call(this, params);\n\n // events which we couldn't decrypt due to unknown sessions / indexes: map from\n // senderKey|sessionId to Set of MatrixEvents\n this._pendingEvents = {};\n\n // this gets stubbed out by the unit tests.\n this.olmlib = olmlib;\n}\nutils.inherits(MegolmDecryption, base.DecryptionAlgorithm);\n\n/**\n * @inheritdoc\n *\n * @param {MatrixEvent} event\n *\n * returns a promise which resolves to a\n * {@link module:crypto~EventDecryptionResult} once we have finished\n * decrypting, or rejects with an `algorithms.DecryptionError` if there is a\n * problem decrypting the event.\n */\nMegolmDecryption.prototype.decryptEvent = function () {\n var _ref6 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(event) {\n var content, res, errorCode, payload;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n content = event.getWireContent();\n\n if (!(!content.sender_key || !content.session_id || !content.ciphertext)) {\n _context6.next = 3;\n break;\n }\n\n throw new base.DecryptionError(\"MEGOLM_MISSING_FIELDS\", \"Missing fields in input\");\n\n case 3:\n\n // we add the event to the pending list *before* we start decryption.\n //\n // then, if the key turns up while decryption is in progress (and\n // decryption fails), we will schedule a retry.\n // (fixes https://github.com/vector-im/riot-web/issues/5001)\n this._addEventToPendingList(event);\n\n res = void 0;\n _context6.prev = 5;\n _context6.next = 8;\n return (0, _bluebird.resolve)(this._olmDevice.decryptGroupMessage(event.getRoomId(), content.sender_key, content.session_id, content.ciphertext, event.getId(), event.getTs()));\n\n case 8:\n res = _context6.sent;\n _context6.next = 16;\n break;\n\n case 11:\n _context6.prev = 11;\n _context6.t0 = _context6['catch'](5);\n errorCode = \"OLM_DECRYPT_GROUP_MESSAGE_ERROR\";\n\n\n if (_context6.t0 && _context6.t0.message === 'OLM.UNKNOWN_MESSAGE_INDEX') {\n this._requestKeysForEvent(event);\n\n errorCode = 'OLM_UNKNOWN_MESSAGE_INDEX';\n }\n\n throw new base.DecryptionError(errorCode, _context6.t0 ? _context6.t0.toString() : \"Unknown Error: Error is undefined\", {\n session: content.sender_key + '|' + content.session_id\n });\n\n case 16:\n if (!(res === null)) {\n _context6.next = 19;\n break;\n }\n\n // We've got a message for a session we don't have.\n //\n // (XXX: We might actually have received this key since we started\n // decrypting, in which case we'll have scheduled a retry, and this\n // request will be redundant. We could probably check to see if the\n // event is still in the pending list; if not, a retry will have been\n // scheduled, so we needn't send out the request here.)\n this._requestKeysForEvent(event);\n throw new base.DecryptionError(\"MEGOLM_UNKNOWN_INBOUND_SESSION_ID\", \"The sender's device has not sent us the keys for this message.\", {\n session: content.sender_key + '|' + content.session_id\n });\n\n case 19:\n\n // success. We can remove the event from the pending list, if that hasn't\n // already happened.\n this._removeEventFromPendingList(event);\n\n payload = JSON.parse(res.result);\n\n // belt-and-braces check that the room id matches that indicated by the HS\n // (this is somewhat redundant, since the megolm session is scoped to the\n // room, so neither the sender nor a MITM can lie about the room_id).\n\n if (!(payload.room_id !== event.getRoomId())) {\n _context6.next = 23;\n break;\n }\n\n throw new base.DecryptionError(\"MEGOLM_BAD_ROOM\", \"Message intended for room \" + payload.room_id);\n\n case 23:\n return _context6.abrupt('return', {\n clearEvent: payload,\n senderCurve25519Key: res.senderKey,\n claimedEd25519Key: res.keysClaimed.ed25519,\n forwardingCurve25519KeyChain: res.forwardingCurve25519KeyChain\n });\n\n case 24:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, this, [[5, 11]]);\n }));\n\n return function (_x9) {\n return _ref6.apply(this, arguments);\n };\n}();\n\nMegolmDecryption.prototype._requestKeysForEvent = function (event) {\n var wireContent = event.getWireContent();\n\n var recipients = event.getKeyRequestRecipients(this._userId);\n\n this._crypto.requestRoomKey({\n room_id: event.getRoomId(),\n algorithm: wireContent.algorithm,\n sender_key: wireContent.sender_key,\n session_id: wireContent.session_id\n }, recipients);\n};\n\n/**\n * Add an event to the list of those awaiting their session keys.\n *\n * @private\n *\n * @param {module:models/event.MatrixEvent} event\n */\nMegolmDecryption.prototype._addEventToPendingList = function (event) {\n var content = event.getWireContent();\n var k = content.sender_key + \"|\" + content.session_id;\n if (!this._pendingEvents[k]) {\n this._pendingEvents[k] = new _set2.default();\n }\n this._pendingEvents[k].add(event);\n};\n\n/**\n * Remove an event from the list of those awaiting their session keys.\n *\n * @private\n *\n * @param {module:models/event.MatrixEvent} event\n */\nMegolmDecryption.prototype._removeEventFromPendingList = function (event) {\n var content = event.getWireContent();\n var k = content.sender_key + \"|\" + content.session_id;\n if (!this._pendingEvents[k]) {\n return;\n }\n\n this._pendingEvents[k].delete(event);\n if (this._pendingEvents[k].size === 0) {\n delete this._pendingEvents[k];\n }\n};\n\n/**\n * @inheritdoc\n *\n * @param {module:models/event.MatrixEvent} event key event\n */\nMegolmDecryption.prototype.onRoomKeyEvent = function (event) {\n var _this2 = this;\n\n var content = event.getContent();\n var sessionId = content.session_id;\n var senderKey = event.getSenderKey();\n var forwardingKeyChain = [];\n var exportFormat = false;\n var keysClaimed = void 0;\n\n if (!content.room_id || !sessionId || !content.session_key) {\n _logger2.default.error(\"key event is missing fields\");\n return;\n }\n\n if (!senderKey) {\n _logger2.default.error(\"key event has no sender key (not encrypted?)\");\n return;\n }\n\n if (event.getType() == \"m.forwarded_room_key\") {\n exportFormat = true;\n forwardingKeyChain = content.forwarding_curve25519_key_chain;\n if (!utils.isArray(forwardingKeyChain)) {\n forwardingKeyChain = [];\n }\n\n // copy content before we modify it\n forwardingKeyChain = forwardingKeyChain.slice();\n forwardingKeyChain.push(senderKey);\n\n senderKey = content.sender_key;\n if (!senderKey) {\n _logger2.default.error(\"forwarded_room_key event is missing sender_key field\");\n return;\n }\n\n var ed25519Key = content.sender_claimed_ed25519_key;\n if (!ed25519Key) {\n _logger2.default.error('forwarded_room_key_event is missing sender_claimed_ed25519_key field');\n return;\n }\n\n keysClaimed = {\n ed25519: ed25519Key\n };\n } else {\n keysClaimed = event.getKeysClaimed();\n }\n\n _logger2.default.log('Adding key for megolm session ' + senderKey + '|' + sessionId);\n return this._olmDevice.addInboundGroupSession(content.room_id, senderKey, forwardingKeyChain, sessionId, content.session_key, keysClaimed, exportFormat).then(function () {\n // have another go at decrypting events sent with this session.\n _this2._retryDecryption(senderKey, sessionId).then(function (success) {\n // cancel any outstanding room key requests for this session.\n // Only do this if we managed to decrypt every message in the\n // session, because if we didn't, we leave the other key\n // requests in the hopes that someone sends us a key that\n // includes an earlier index.\n if (success) {\n _this2._crypto.cancelRoomKeyRequest({\n algorithm: content.algorithm,\n room_id: content.room_id,\n session_id: content.session_id,\n sender_key: senderKey\n });\n }\n });\n }).then(function () {\n if (_this2._crypto.backupInfo) {\n // don't wait for the keys to be backed up for the server\n _this2._crypto.backupGroupSession(content.room_id, senderKey, forwardingKeyChain, content.session_id, content.session_key, keysClaimed, exportFormat).catch(function (e) {\n // This throws if the upload failed, but this is fine\n // since it will have written it to the db and will retry.\n _logger2.default.log(\"Failed to back up group session\", e);\n });\n }\n }).catch(function (e) {\n _logger2.default.error('Error handling m.room_key_event: ' + e);\n });\n};\n\n/**\n * @inheritdoc\n */\nMegolmDecryption.prototype.hasKeysForKeyRequest = function (keyRequest) {\n var body = keyRequest.requestBody;\n\n return this._olmDevice.hasInboundSessionKeys(body.room_id, body.sender_key, body.session_id\n // TODO: ratchet index\n );\n};\n\n/**\n * @inheritdoc\n */\nMegolmDecryption.prototype.shareKeysWithDevice = function (keyRequest) {\n var _this3 = this;\n\n var userId = keyRequest.userId;\n var deviceId = keyRequest.deviceId;\n var deviceInfo = this._crypto.getStoredDevice(userId, deviceId);\n var body = keyRequest.requestBody;\n\n this.olmlib.ensureOlmSessionsForDevices(this._olmDevice, this._baseApis, (0, _defineProperty3.default)({}, userId, [deviceInfo])).then(function (devicemap) {\n var olmSessionResult = devicemap[userId][deviceId];\n if (!olmSessionResult.sessionId) {\n // no session with this device, probably because there\n // were no one-time keys.\n //\n // ensureOlmSessionsForUsers has already done the logging,\n // so just skip it.\n return null;\n }\n\n _logger2.default.log(\"sharing keys for session \" + body.sender_key + \"|\" + body.session_id + \" with device \" + userId + \":\" + deviceId);\n\n return _this3._buildKeyForwardingMessage(body.room_id, body.sender_key, body.session_id);\n }).then(function (payload) {\n var encryptedContent = {\n algorithm: olmlib.OLM_ALGORITHM,\n sender_key: _this3._olmDevice.deviceCurve25519Key,\n ciphertext: {}\n };\n\n return _this3.olmlib.encryptMessageForDevice(encryptedContent.ciphertext, _this3._userId, _this3._deviceId, _this3._olmDevice, userId, deviceInfo, payload).then(function () {\n var contentMap = (0, _defineProperty3.default)({}, userId, (0, _defineProperty3.default)({}, deviceId, encryptedContent));\n\n // TODO: retries\n return _this3._baseApis.sendToDevice(\"m.room.encrypted\", contentMap);\n });\n }).done();\n};\n\nMegolmDecryption.prototype._buildKeyForwardingMessage = function () {\n var _ref7 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(roomId, senderKey, sessionId) {\n var key;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return (0, _bluebird.resolve)(this._olmDevice.getInboundGroupSessionKey(roomId, senderKey, sessionId));\n\n case 2:\n key = _context7.sent;\n return _context7.abrupt('return', {\n type: \"m.forwarded_room_key\",\n content: {\n algorithm: olmlib.MEGOLM_ALGORITHM,\n room_id: roomId,\n sender_key: senderKey,\n sender_claimed_ed25519_key: key.sender_claimed_ed25519_key,\n session_id: sessionId,\n session_key: key.key,\n chain_index: key.chain_index,\n forwarding_curve25519_key_chain: key.forwarding_curve25519_key_chain\n }\n });\n\n case 4:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n return function (_x10, _x11, _x12) {\n return _ref7.apply(this, arguments);\n };\n}();\n\n/**\n * @inheritdoc\n *\n * @param {module:crypto/OlmDevice.MegolmSessionData} session\n */\nMegolmDecryption.prototype.importRoomKey = function (session) {\n var _this4 = this;\n\n return this._olmDevice.addInboundGroupSession(session.room_id, session.sender_key, session.forwarding_curve25519_key_chain, session.session_id, session.session_key, session.sender_claimed_keys, true).then(function () {\n if (_this4._crypto.backupInfo) {\n // don't wait for it to complete\n _this4._crypto.backupGroupSession(session.room_id, session.sender_key, session.forwarding_curve25519_key_chain, session.session_id, session.session_key, session.sender_claimed_keys, true).catch(function (e) {\n // This throws if the upload failed, but this is fine\n // since it will have written it to the db and will retry.\n _logger2.default.log(\"Failed to back up group session\", e);\n });\n }\n // have another go at decrypting events sent with this session.\n _this4._retryDecryption(session.sender_key, session.session_id);\n });\n};\n\n/**\n * Have another go at decrypting events after we receive a key\n *\n * @private\n * @param {String} senderKey\n * @param {String} sessionId\n *\n * @return {Boolean} whether all messages were successfully decrypted\n */\nMegolmDecryption.prototype._retryDecryption = function () {\n var _ref8 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(senderKey, sessionId) {\n var _this5 = this;\n\n var k, pending;\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n k = senderKey + \"|\" + sessionId;\n pending = this._pendingEvents[k];\n\n if (pending) {\n _context9.next = 4;\n break;\n }\n\n return _context9.abrupt('return', true);\n\n case 4:\n\n delete this._pendingEvents[k];\n\n _context9.next = 7;\n return (0, _bluebird.resolve)(_bluebird2.default.all([].concat((0, _toConsumableArray3.default)(pending)).map(function () {\n var _ref9 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(ev) {\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _context8.prev = 0;\n _context8.next = 3;\n return (0, _bluebird.resolve)(ev.attemptDecryption(_this5._crypto));\n\n case 3:\n _context8.next = 7;\n break;\n\n case 5:\n _context8.prev = 5;\n _context8.t0 = _context8['catch'](0);\n\n case 7:\n case 'end':\n return _context8.stop();\n }\n }\n }, _callee8, _this5, [[0, 5]]);\n }));\n\n return function (_x15) {\n return _ref9.apply(this, arguments);\n };\n }()\n // don't die if something goes wrong\n )));\n\n case 7:\n return _context9.abrupt('return', !this._pendingEvents[k]);\n\n case 8:\n case 'end':\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n return function (_x13, _x14) {\n return _ref8.apply(this, arguments);\n };\n}();\n\nbase.registerAlgorithm(olmlib.MEGOLM_ALGORITHM, MegolmEncryption, MegolmDecryption);\n//# sourceMappingURL=megolm.js.map","/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018, 2019 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module crypto/DeviceList\n *\n * Manages the list of other users' devices\n */\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _entries = require('babel-runtime/core-js/object/entries');\n\nvar _entries2 = _interopRequireDefault(_entries);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _updateStoredDeviceKeysForUser = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(_olmDevice, userId, userStore, userResult) {\n var updated, deviceId, _deviceId, deviceResult;\n\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n updated = false;\n\n // remove any devices in the store which aren't in the response\n\n _context3.t0 = _regenerator2.default.keys(userStore);\n\n case 2:\n if ((_context3.t1 = _context3.t0()).done) {\n _context3.next = 9;\n break;\n }\n\n deviceId = _context3.t1.value;\n\n if (userStore.hasOwnProperty(deviceId)) {\n _context3.next = 6;\n break;\n }\n\n return _context3.abrupt('continue', 2);\n\n case 6:\n\n if (!(deviceId in userResult)) {\n _logger2.default.log(\"Device \" + userId + \":\" + deviceId + \" has been removed\");\n delete userStore[deviceId];\n updated = true;\n }\n _context3.next = 2;\n break;\n\n case 9:\n _context3.t2 = _regenerator2.default.keys(userResult);\n\n case 10:\n if ((_context3.t3 = _context3.t2()).done) {\n _context3.next = 27;\n break;\n }\n\n _deviceId = _context3.t3.value;\n\n if (userResult.hasOwnProperty(_deviceId)) {\n _context3.next = 14;\n break;\n }\n\n return _context3.abrupt('continue', 10);\n\n case 14:\n deviceResult = userResult[_deviceId];\n\n // check that the user_id and device_id in the response object are\n // correct\n\n if (!(deviceResult.user_id !== userId)) {\n _context3.next = 18;\n break;\n }\n\n _logger2.default.warn(\"Mismatched user_id \" + deviceResult.user_id + \" in keys from \" + userId + \":\" + _deviceId);\n return _context3.abrupt('continue', 10);\n\n case 18:\n if (!(deviceResult.device_id !== _deviceId)) {\n _context3.next = 21;\n break;\n }\n\n _logger2.default.warn(\"Mismatched device_id \" + deviceResult.device_id + \" in keys from \" + userId + \":\" + _deviceId);\n return _context3.abrupt('continue', 10);\n\n case 21:\n _context3.next = 23;\n return (0, _bluebird.resolve)(_storeDeviceKeys(_olmDevice, userStore, deviceResult));\n\n case 23:\n if (!_context3.sent) {\n _context3.next = 25;\n break;\n }\n\n updated = true;\n\n case 25:\n _context3.next = 10;\n break;\n\n case 27:\n return _context3.abrupt('return', updated);\n\n case 28:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function _updateStoredDeviceKeysForUser(_x4, _x5, _x6, _x7) {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/*\n * Process a device in a /query response, and add it to the userStore\n *\n * returns (a promise for) true if a change was made, else false\n */\n\n\nvar _storeDeviceKeys = function () {\n var _ref5 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(_olmDevice, userStore, deviceResult) {\n var deviceId, userId, signKeyId, signKey, unsigned, deviceStore;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (deviceResult.keys) {\n _context4.next = 2;\n break;\n }\n\n return _context4.abrupt('return', false);\n\n case 2:\n deviceId = deviceResult.device_id;\n userId = deviceResult.user_id;\n signKeyId = \"ed25519:\" + deviceId;\n signKey = deviceResult.keys[signKeyId];\n\n if (signKey) {\n _context4.next = 9;\n break;\n }\n\n _logger2.default.warn(\"Device \" + userId + \":\" + deviceId + \" has no ed25519 key\");\n return _context4.abrupt('return', false);\n\n case 9:\n unsigned = deviceResult.unsigned || {};\n _context4.prev = 10;\n _context4.next = 13;\n return (0, _bluebird.resolve)(_olmlib2.default.verifySignature(_olmDevice, deviceResult, userId, deviceId, signKey));\n\n case 13:\n _context4.next = 19;\n break;\n\n case 15:\n _context4.prev = 15;\n _context4.t0 = _context4['catch'](10);\n\n _logger2.default.warn(\"Unable to verify signature on device \" + userId + \":\" + deviceId + \":\" + _context4.t0);\n return _context4.abrupt('return', false);\n\n case 19:\n\n // DeviceInfo\n deviceStore = void 0;\n\n if (!(deviceId in userStore)) {\n _context4.next = 27;\n break;\n }\n\n // already have this device.\n deviceStore = userStore[deviceId];\n\n if (!(deviceStore.getFingerprint() != signKey)) {\n _context4.next = 25;\n break;\n }\n\n // this should only happen if the list has been MITMed; we are\n // best off sticking with the original keys.\n //\n // Should we warn the user about it somehow?\n _logger2.default.warn(\"Ed25519 key for device \" + userId + \":\" + deviceId + \" has changed\");\n return _context4.abrupt('return', false);\n\n case 25:\n _context4.next = 28;\n break;\n\n case 27:\n userStore[deviceId] = deviceStore = new _deviceinfo2.default(deviceId);\n\n case 28:\n\n deviceStore.keys = deviceResult.keys || {};\n deviceStore.algorithms = deviceResult.algorithms || [];\n deviceStore.unsigned = unsigned;\n return _context4.abrupt('return', true);\n\n case 32:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this, [[10, 15]]);\n }));\n\n return function _storeDeviceKeys(_x8, _x9, _x10) {\n return _ref5.apply(this, arguments);\n };\n}();\n\nvar _logger = require('../logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _deviceinfo = require('./deviceinfo');\n\nvar _deviceinfo2 = _interopRequireDefault(_deviceinfo);\n\nvar _olmlib = require('./olmlib');\n\nvar _olmlib2 = _interopRequireDefault(_olmlib);\n\nvar _indexeddbCryptoStore = require('./store/indexeddb-crypto-store');\n\nvar _indexeddbCryptoStore2 = _interopRequireDefault(_indexeddbCryptoStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* State transition diagram for DeviceList._deviceTrackingStatus\n *\n * |\n * stopTrackingDeviceList V\n * +---------------------> NOT_TRACKED\n * | |\n * +<--------------------+ | startTrackingDeviceList\n * | | V\n * | +-------------> PENDING_DOWNLOAD <--------------------+-+\n * | | ^ | | |\n * | | restart download | | start download | | invalidateUserDeviceList\n * | | client failed | | | |\n * | | | V | |\n * | +------------ DOWNLOAD_IN_PROGRESS -------------------+ |\n * | | | |\n * +<-------------------+ | download successful |\n * ^ V |\n * +----------------------- UP_TO_DATE ------------------------+\n */\n\n// constants for DeviceList._deviceTrackingStatus\nvar TRACKING_STATUS_NOT_TRACKED = 0;\nvar TRACKING_STATUS_PENDING_DOWNLOAD = 1;\nvar TRACKING_STATUS_DOWNLOAD_IN_PROGRESS = 2;\nvar TRACKING_STATUS_UP_TO_DATE = 3;\n\n/**\n * @alias module:crypto/DeviceList\n */\n\nvar DeviceList = function () {\n function DeviceList(baseApis, cryptoStore, olmDevice) {\n (0, _classCallCheck3.default)(this, DeviceList);\n\n this._cryptoStore = cryptoStore;\n\n // userId -> {\n // deviceId -> {\n // [device info]\n // }\n // }\n this._devices = {};\n\n // map of identity keys to the user who owns it\n this._userByIdentityKey = {};\n\n // which users we are tracking device status for.\n // userId -> TRACKING_STATUS_*\n this._deviceTrackingStatus = {}; // loaded from storage in load()\n\n // The 'next_batch' sync token at the point the data was writen,\n // ie. a token representing the point immediately after the\n // moment represented by the snapshot in the db.\n this._syncToken = null;\n\n this._serialiser = new DeviceListUpdateSerialiser(baseApis, olmDevice, this);\n\n // userId -> promise\n this._keyDownloadsInProgressByUser = {};\n\n // Set whenever changes are made other than setting the sync token\n this._dirty = false;\n\n // Promise resolved when device data is saved\n this._savePromise = null;\n // Function that resolves the save promise\n this._resolveSavePromise = null;\n // The time the save is scheduled for\n this._savePromiseTime = null;\n // The timer used to delay the save\n this._saveTimer = null;\n }\n\n /**\n * Load the device tracking state from storage\n */\n\n\n (0, _createClass3.default)(DeviceList, [{\n key: 'load',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var _this = this;\n\n var _iteratorNormalCompletion3, _didIteratorError3, _iteratorError3, _iterator3, _step3, u;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_DEVICE_DATA], function (txn) {\n _this._cryptoStore.getEndToEndDeviceData(txn, function (deviceData) {\n _this._devices = deviceData ? deviceData.devices : {}, _this._deviceTrackingStatus = deviceData ? deviceData.trackingStatus : {};\n _this._syncToken = deviceData ? deviceData.syncToken : null;\n _this._userByIdentityKey = {};\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(_this._devices)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var user = _step.value;\n\n var userDevices = _this._devices[user];\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)((0, _keys2.default)(userDevices)), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var device = _step2.value;\n\n var idKey = userDevices[device].keys['curve25519:' + device];\n if (idKey !== undefined) {\n _this._userByIdentityKey[idKey] = user;\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n });\n }));\n\n case 2:\n _iteratorNormalCompletion3 = true;\n _didIteratorError3 = false;\n _iteratorError3 = undefined;\n _context.prev = 5;\n\n\n for (_iterator3 = (0, _getIterator3.default)((0, _keys2.default)(this._deviceTrackingStatus)); !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n u = _step3.value;\n\n // if a download was in progress when we got shut down, it isn't any more.\n if (this._deviceTrackingStatus[u] == TRACKING_STATUS_DOWNLOAD_IN_PROGRESS) {\n this._deviceTrackingStatus[u] = TRACKING_STATUS_PENDING_DOWNLOAD;\n }\n }\n _context.next = 13;\n break;\n\n case 9:\n _context.prev = 9;\n _context.t0 = _context['catch'](5);\n _didIteratorError3 = true;\n _iteratorError3 = _context.t0;\n\n case 13:\n _context.prev = 13;\n _context.prev = 14;\n\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n\n case 16:\n _context.prev = 16;\n\n if (!_didIteratorError3) {\n _context.next = 19;\n break;\n }\n\n throw _iteratorError3;\n\n case 19:\n return _context.finish(16);\n\n case 20:\n return _context.finish(13);\n\n case 21:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[5, 9, 13, 21], [14,, 16, 20]]);\n }));\n\n function load() {\n return _ref.apply(this, arguments);\n }\n\n return load;\n }()\n }, {\n key: 'stop',\n value: function stop() {\n if (this._saveTimer !== null) {\n clearTimeout(this._saveTimer);\n }\n }\n\n /**\n * Save the device tracking state to storage, if any changes are\n * pending other than updating the sync token\n *\n * The actual save will be delayed by a short amount of time to\n * aggregate multiple writes to the database.\n *\n * @param {integer} delay Time in ms before which the save actually happens.\n * By default, the save is delayed for a short period in order to batch\n * multiple writes, but this behaviour can be disabled by passing 0.\n *\n * @return {Promise} true if the data was saved, false if\n * it was not (eg. because no changes were pending). The promise\n * will only resolve once the data is saved, so may take some time\n * to resolve.\n */\n\n }, {\n key: 'saveIfDirty',\n value: function () {\n var _ref2 = (0, _bluebird.method)(function (delay) {\n var _this2 = this;\n\n if (!this._dirty) return _bluebird2.default.resolve(false);\n // Delay saves for a bit so we can aggregate multiple saves that happen\n // in quick succession (eg. when a whole room's devices are marked as known)\n if (delay === undefined) delay = 500;\n\n var targetTime = Date.now + delay;\n if (this._savePromiseTime && targetTime < this._savePromiseTime) {\n // There's a save scheduled but for after we would like: cancel\n // it & schedule one for the time we want\n clearTimeout(this._saveTimer);\n this._saveTimer = null;\n this._savePromiseTime = null;\n // (but keep the save promise since whatever called save before\n // will still want to know when the save is done)\n }\n\n var savePromise = this._savePromise;\n if (savePromise === null) {\n savePromise = new _bluebird2.default(function (resolve, reject) {\n _this2._resolveSavePromise = resolve;\n });\n this._savePromise = savePromise;\n }\n\n if (this._saveTimer === null) {\n var resolveSavePromise = this._resolveSavePromise;\n this._savePromiseTime = targetTime;\n this._saveTimer = setTimeout(function () {\n _logger2.default.log('Saving device tracking data at token ' + _this2._syncToken);\n // null out savePromise now (after the delay but before the write),\n // otherwise we could return the existing promise when the save has\n // actually already happened. Likewise for the dirty flag.\n _this2._savePromiseTime = null;\n _this2._saveTimer = null;\n _this2._savePromise = null;\n _this2._resolveSavePromise = null;\n\n _this2._dirty = false;\n _this2._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_DEVICE_DATA], function (txn) {\n _this2._cryptoStore.storeEndToEndDeviceData({\n devices: _this2._devices,\n trackingStatus: _this2._deviceTrackingStatus,\n syncToken: _this2._syncToken\n }, txn);\n }).then(function () {\n resolveSavePromise();\n });\n }, delay);\n }\n return savePromise;\n });\n\n function saveIfDirty(_x) {\n return _ref2.apply(this, arguments);\n }\n\n return saveIfDirty;\n }()\n\n /**\n * Gets the sync token last set with setSyncToken\n *\n * @return {string} The sync token\n */\n\n }, {\n key: 'getSyncToken',\n value: function getSyncToken() {\n return this._syncToken;\n }\n\n /**\n * Sets the sync token that the app will pass as the 'since' to the /sync\n * endpoint next time it syncs.\n * The sync token must always be set after any changes made as a result of\n * data in that sync since setting the sync token to a newer one will mean\n * those changed will not be synced from the server if a new client starts\n * up with that data.\n *\n * @param {string} st The sync token\n */\n\n }, {\n key: 'setSyncToken',\n value: function setSyncToken(st) {\n this._syncToken = st;\n }\n\n /**\n * Ensures up to date keys for a list of users are stored in the session store,\n * downloading and storing them if they're not (or if forceDownload is\n * true).\n * @param {Array} userIds The users to fetch.\n * @param {bool} forceDownload Always download the keys even if cached.\n *\n * @return {Promise} A promise which resolves to a map userId->deviceId->{@link\n * module:crypto/deviceinfo|DeviceInfo}.\n */\n\n }, {\n key: 'downloadKeys',\n value: function downloadKeys(userIds, forceDownload) {\n var _this3 = this;\n\n var usersToDownload = [];\n var promises = [];\n\n userIds.forEach(function (u) {\n var trackingStatus = _this3._deviceTrackingStatus[u];\n if (_this3._keyDownloadsInProgressByUser[u]) {\n // already a key download in progress/queued for this user; its results\n // will be good enough for us.\n _logger2.default.log('downloadKeys: already have a download in progress for ' + (u + ': awaiting its result'));\n promises.push(_this3._keyDownloadsInProgressByUser[u]);\n } else if (forceDownload || trackingStatus != TRACKING_STATUS_UP_TO_DATE) {\n usersToDownload.push(u);\n }\n });\n\n if (usersToDownload.length != 0) {\n _logger2.default.log(\"downloadKeys: downloading for\", usersToDownload);\n var downloadPromise = this._doKeyDownload(usersToDownload);\n promises.push(downloadPromise);\n }\n\n if (promises.length === 0) {\n _logger2.default.log(\"downloadKeys: already have all necessary keys\");\n }\n\n return _bluebird2.default.all(promises).then(function () {\n return _this3._getDevicesFromStore(userIds);\n });\n }\n\n /**\n * Get the stored device keys for a list of user ids\n *\n * @param {string[]} userIds the list of users to list keys for.\n *\n * @return {Object} userId->deviceId->{@link module:crypto/deviceinfo|DeviceInfo}.\n */\n\n }, {\n key: '_getDevicesFromStore',\n value: function _getDevicesFromStore(userIds) {\n var stored = {};\n var self = this;\n userIds.map(function (u) {\n stored[u] = {};\n var devices = self.getStoredDevicesForUser(u) || [];\n devices.map(function (dev) {\n stored[u][dev.deviceId] = dev;\n });\n });\n return stored;\n }\n\n /**\n * Get the stored device keys for a user id\n *\n * @param {string} userId the user to list keys for.\n *\n * @return {module:crypto/deviceinfo[]|null} list of devices, or null if we haven't\n * managed to get a list of devices for this user yet.\n */\n\n }, {\n key: 'getStoredDevicesForUser',\n value: function getStoredDevicesForUser(userId) {\n var devs = this._devices[userId];\n if (!devs) {\n return null;\n }\n var res = [];\n for (var deviceId in devs) {\n if (devs.hasOwnProperty(deviceId)) {\n res.push(_deviceinfo2.default.fromStorage(devs[deviceId], deviceId));\n }\n }\n return res;\n }\n\n /**\n * Get the stored device data for a user, in raw object form\n *\n * @param {string} userId the user to get data for\n *\n * @return {Object} deviceId->{object} devices, or undefined if\n * there is no data for this user.\n */\n\n }, {\n key: 'getRawStoredDevicesForUser',\n value: function getRawStoredDevicesForUser(userId) {\n return this._devices[userId];\n }\n\n /**\n * Get the stored keys for a single device\n *\n * @param {string} userId\n * @param {string} deviceId\n *\n * @return {module:crypto/deviceinfo?} device, or undefined\n * if we don't know about this device\n */\n\n }, {\n key: 'getStoredDevice',\n value: function getStoredDevice(userId, deviceId) {\n var devs = this._devices[userId];\n if (!devs || !devs[deviceId]) {\n return undefined;\n }\n return _deviceinfo2.default.fromStorage(devs[deviceId], deviceId);\n }\n\n /**\n * Find a device by curve25519 identity key\n *\n * @param {string} algorithm encryption algorithm\n * @param {string} senderKey curve25519 key to match\n *\n * @return {module:crypto/deviceinfo?}\n */\n\n }, {\n key: 'getDeviceByIdentityKey',\n value: function getDeviceByIdentityKey(algorithm, senderKey) {\n var userId = this._userByIdentityKey[senderKey];\n if (!userId) {\n return null;\n }\n\n if (algorithm !== _olmlib2.default.OLM_ALGORITHM && algorithm !== _olmlib2.default.MEGOLM_ALGORITHM) {\n // we only deal in olm keys\n return null;\n }\n\n var devices = this._devices[userId];\n if (!devices) {\n return null;\n }\n\n for (var deviceId in devices) {\n if (!devices.hasOwnProperty(deviceId)) {\n continue;\n }\n\n var device = devices[deviceId];\n for (var keyId in device.keys) {\n if (!device.keys.hasOwnProperty(keyId)) {\n continue;\n }\n if (keyId.indexOf(\"curve25519:\") !== 0) {\n continue;\n }\n var deviceKey = device.keys[keyId];\n if (deviceKey == senderKey) {\n return _deviceinfo2.default.fromStorage(device, deviceId);\n }\n }\n }\n\n // doesn't match a known device\n return null;\n }\n\n /**\n * Replaces the list of devices for a user with the given device list\n *\n * @param {string} u The user ID\n * @param {Object} devs New device info for user\n */\n\n }, {\n key: 'storeDevicesForUser',\n value: function storeDevicesForUser(u, devs) {\n // remove previous devices from _userByIdentityKey\n if (this._devices[u] !== undefined) {\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = (0, _getIterator3.default)((0, _entries2.default)(this._devices[u])), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var _step4$value = (0, _slicedToArray3.default)(_step4.value, 2),\n deviceId = _step4$value[0],\n dev = _step4$value[1];\n\n var identityKey = dev.keys['curve25519:' + deviceId];\n\n delete this._userByIdentityKey[identityKey];\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n }\n\n this._devices[u] = devs;\n\n // add new ones\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = (0, _getIterator3.default)((0, _entries2.default)(devs)), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var _step5$value = (0, _slicedToArray3.default)(_step5.value, 2),\n deviceId = _step5$value[0],\n dev = _step5$value[1];\n\n var _identityKey = dev.keys['curve25519:' + deviceId];\n\n this._userByIdentityKey[_identityKey] = u;\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n\n this._dirty = true;\n }\n\n /**\n * flag the given user for device-list tracking, if they are not already.\n *\n * This will mean that a subsequent call to refreshOutdatedDeviceLists()\n * will download the device list for the user, and that subsequent calls to\n * invalidateUserDeviceList will trigger more updates.\n *\n * @param {String} userId\n */\n\n }, {\n key: 'startTrackingDeviceList',\n value: function startTrackingDeviceList(userId) {\n // sanity-check the userId. This is mostly paranoia, but if synapse\n // can't parse the userId we give it as an mxid, it 500s the whole\n // request and we can never update the device lists again (because\n // the broken userId is always 'invalid' and always included in any\n // refresh request).\n // By checking it is at least a string, we can eliminate a class of\n // silly errors.\n if (typeof userId !== 'string') {\n throw new Error('userId must be a string; was ' + userId);\n }\n if (!this._deviceTrackingStatus[userId]) {\n _logger2.default.log('Now tracking device list for ' + userId);\n this._deviceTrackingStatus[userId] = TRACKING_STATUS_PENDING_DOWNLOAD;\n // we don't yet persist the tracking status, since there may be a lot\n // of calls; we save all data together once the sync is done\n this._dirty = true;\n }\n }\n\n /**\n * Mark the given user as no longer being tracked for device-list updates.\n *\n * This won't affect any in-progress downloads, which will still go on to\n * complete; it will just mean that we don't think that we have an up-to-date\n * list for future calls to downloadKeys.\n *\n * @param {String} userId\n */\n\n }, {\n key: 'stopTrackingDeviceList',\n value: function stopTrackingDeviceList(userId) {\n if (this._deviceTrackingStatus[userId]) {\n _logger2.default.log('No longer tracking device list for ' + userId);\n this._deviceTrackingStatus[userId] = TRACKING_STATUS_NOT_TRACKED;\n\n // we don't yet persist the tracking status, since there may be a lot\n // of calls; we save all data together once the sync is done\n this._dirty = true;\n }\n }\n\n /**\n * Set all users we're currently tracking to untracked\n *\n * This will flag each user whose devices we are tracking as in need of an\n * update.\n */\n\n }, {\n key: 'stopTrackingAllDeviceLists',\n value: function stopTrackingAllDeviceLists() {\n var _iteratorNormalCompletion6 = true;\n var _didIteratorError6 = false;\n var _iteratorError6 = undefined;\n\n try {\n for (var _iterator6 = (0, _getIterator3.default)((0, _keys2.default)(this._deviceTrackingStatus)), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n var userId = _step6.value;\n\n this._deviceTrackingStatus[userId] = TRACKING_STATUS_NOT_TRACKED;\n }\n } catch (err) {\n _didIteratorError6 = true;\n _iteratorError6 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion6 && _iterator6.return) {\n _iterator6.return();\n }\n } finally {\n if (_didIteratorError6) {\n throw _iteratorError6;\n }\n }\n }\n\n this._dirty = true;\n }\n\n /**\n * Mark the cached device list for the given user outdated.\n *\n * If we are not tracking this user's devices, we'll do nothing. Otherwise\n * we flag the user as needing an update.\n *\n * This doesn't actually set off an update, so that several users can be\n * batched together. Call refreshOutdatedDeviceLists() for that.\n *\n * @param {String} userId\n */\n\n }, {\n key: 'invalidateUserDeviceList',\n value: function invalidateUserDeviceList(userId) {\n if (this._deviceTrackingStatus[userId]) {\n _logger2.default.log(\"Marking device list outdated for\", userId);\n this._deviceTrackingStatus[userId] = TRACKING_STATUS_PENDING_DOWNLOAD;\n\n // we don't yet persist the tracking status, since there may be a lot\n // of calls; we save all data together once the sync is done\n this._dirty = true;\n }\n }\n\n /**\n * If we have users who have outdated device lists, start key downloads for them\n *\n * @returns {Promise} which completes when the download completes; normally there\n * is no need to wait for this (it's mostly for the unit tests).\n */\n\n }, {\n key: 'refreshOutdatedDeviceLists',\n value: function refreshOutdatedDeviceLists() {\n this.saveIfDirty();\n\n var usersToDownload = [];\n var _iteratorNormalCompletion7 = true;\n var _didIteratorError7 = false;\n var _iteratorError7 = undefined;\n\n try {\n for (var _iterator7 = (0, _getIterator3.default)((0, _keys2.default)(this._deviceTrackingStatus)), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {\n var userId = _step7.value;\n\n var stat = this._deviceTrackingStatus[userId];\n if (stat == TRACKING_STATUS_PENDING_DOWNLOAD) {\n usersToDownload.push(userId);\n }\n }\n } catch (err) {\n _didIteratorError7 = true;\n _iteratorError7 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion7 && _iterator7.return) {\n _iterator7.return();\n }\n } finally {\n if (_didIteratorError7) {\n throw _iteratorError7;\n }\n }\n }\n\n return this._doKeyDownload(usersToDownload);\n }\n\n /**\n * Set the stored device data for a user, in raw object form\n * Used only by internal class DeviceListUpdateSerialiser\n *\n * @param {string} userId the user to get data for\n *\n * @param {Object} devices deviceId->{object} the new devices\n */\n\n }, {\n key: '_setRawStoredDevicesForUser',\n value: function _setRawStoredDevicesForUser(userId, devices) {\n // remove old devices from _userByIdentityKey\n if (this._devices[userId] !== undefined) {\n var _iteratorNormalCompletion8 = true;\n var _didIteratorError8 = false;\n var _iteratorError8 = undefined;\n\n try {\n for (var _iterator8 = (0, _getIterator3.default)((0, _entries2.default)(this._devices[userId])), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {\n var _step8$value = (0, _slicedToArray3.default)(_step8.value, 2),\n deviceId = _step8$value[0],\n dev = _step8$value[1];\n\n var identityKey = dev.keys['curve25519:' + deviceId];\n\n delete this._userByIdentityKey[identityKey];\n }\n } catch (err) {\n _didIteratorError8 = true;\n _iteratorError8 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion8 && _iterator8.return) {\n _iterator8.return();\n }\n } finally {\n if (_didIteratorError8) {\n throw _iteratorError8;\n }\n }\n }\n }\n\n this._devices[userId] = devices;\n\n // add new devices into _userByIdentityKey\n var _iteratorNormalCompletion9 = true;\n var _didIteratorError9 = false;\n var _iteratorError9 = undefined;\n\n try {\n for (var _iterator9 = (0, _getIterator3.default)((0, _entries2.default)(devices)), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {\n var _step9$value = (0, _slicedToArray3.default)(_step9.value, 2),\n deviceId = _step9$value[0],\n dev = _step9$value[1];\n\n var _identityKey2 = dev.keys['curve25519:' + deviceId];\n\n this._userByIdentityKey[_identityKey2] = userId;\n }\n } catch (err) {\n _didIteratorError9 = true;\n _iteratorError9 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion9 && _iterator9.return) {\n _iterator9.return();\n }\n } finally {\n if (_didIteratorError9) {\n throw _iteratorError9;\n }\n }\n }\n }\n\n /**\n * Fire off download update requests for the given users, and update the\n * device list tracking status for them, and the\n * _keyDownloadsInProgressByUser map for them.\n *\n * @param {String[]} users list of userIds\n *\n * @return {module:client.Promise} resolves when all the users listed have\n * been updated. rejects if there was a problem updating any of the\n * users.\n */\n\n }, {\n key: '_doKeyDownload',\n value: function _doKeyDownload(users) {\n var _this4 = this;\n\n if (users.length === 0) {\n // nothing to do\n return _bluebird2.default.resolve();\n }\n\n var prom = this._serialiser.updateDevicesForUsers(users, this._syncToken).then(function () {\n finished(true);\n }, function (e) {\n _logger2.default.error('Error downloading keys for ' + users + \":\", e);\n finished(false);\n throw e;\n });\n\n users.forEach(function (u) {\n _this4._keyDownloadsInProgressByUser[u] = prom;\n var stat = _this4._deviceTrackingStatus[u];\n if (stat == TRACKING_STATUS_PENDING_DOWNLOAD) {\n _this4._deviceTrackingStatus[u] = TRACKING_STATUS_DOWNLOAD_IN_PROGRESS;\n }\n });\n\n var finished = function finished(success) {\n users.forEach(function (u) {\n _this4._dirty = true;\n\n // we may have queued up another download request for this user\n // since we started this request. If that happens, we should\n // ignore the completion of the first one.\n if (_this4._keyDownloadsInProgressByUser[u] !== prom) {\n _logger2.default.log('Another update in the queue for', u, '- not marking up-to-date');\n return;\n }\n delete _this4._keyDownloadsInProgressByUser[u];\n var stat = _this4._deviceTrackingStatus[u];\n if (stat == TRACKING_STATUS_DOWNLOAD_IN_PROGRESS) {\n if (success) {\n // we didn't get any new invalidations since this download started:\n // this user's device list is now up to date.\n _this4._deviceTrackingStatus[u] = TRACKING_STATUS_UP_TO_DATE;\n _logger2.default.log(\"Device list for\", u, \"now up to date\");\n } else {\n _this4._deviceTrackingStatus[u] = TRACKING_STATUS_PENDING_DOWNLOAD;\n }\n }\n });\n _this4.saveIfDirty();\n };\n\n return prom;\n }\n }]);\n return DeviceList;\n}();\n\n/**\n * Serialises updates to device lists\n *\n * Ensures that results from /keys/query are not overwritten if a second call\n * completes *before* an earlier one.\n *\n * It currently does this by ensuring only one call to /keys/query happens at a\n * time (and queuing other requests up).\n */\n\n\nexports.default = DeviceList;\n\nvar DeviceListUpdateSerialiser = function () {\n /*\n * @param {object} baseApis Base API object\n * @param {object} olmDevice The Olm Device\n * @param {object} deviceList The device list object\n */\n function DeviceListUpdateSerialiser(baseApis, olmDevice, deviceList) {\n (0, _classCallCheck3.default)(this, DeviceListUpdateSerialiser);\n\n this._baseApis = baseApis;\n this._olmDevice = olmDevice;\n this._deviceList = deviceList; // the device list to be updated\n\n this._downloadInProgress = false;\n\n // users which are queued for download\n // userId -> true\n this._keyDownloadsQueuedByUser = {};\n\n // deferred which is resolved when the queued users are downloaded.\n //\n // non-null indicates that we have users queued for download.\n this._queuedQueryDeferred = null;\n\n this._syncToken = null; // The sync token we send with the requests\n }\n\n /**\n * Make a key query request for the given users\n *\n * @param {String[]} users list of user ids\n *\n * @param {String} syncToken sync token to pass in the query request, to\n * help the HS give the most recent results\n *\n * @return {module:client.Promise} resolves when all the users listed have\n * been updated. rejects if there was a problem updating any of the\n * users.\n */\n\n\n (0, _createClass3.default)(DeviceListUpdateSerialiser, [{\n key: 'updateDevicesForUsers',\n value: function updateDevicesForUsers(users, syncToken) {\n var _this5 = this;\n\n users.forEach(function (u) {\n _this5._keyDownloadsQueuedByUser[u] = true;\n });\n\n if (!this._queuedQueryDeferred) {\n this._queuedQueryDeferred = _bluebird2.default.defer();\n }\n\n // We always take the new sync token and just use the latest one we've\n // been given, since it just needs to be at least as recent as the\n // sync response the device invalidation message arrived in\n this._syncToken = syncToken;\n\n if (this._downloadInProgress) {\n // just queue up these users\n _logger2.default.log('Queued key download for', users);\n return this._queuedQueryDeferred.promise;\n }\n\n // start a new download.\n return this._doQueuedQueries();\n }\n }, {\n key: '_doQueuedQueries',\n value: function _doQueuedQueries() {\n var _this6 = this;\n\n if (this._downloadInProgress) {\n throw new Error(\"DeviceListUpdateSerialiser._doQueuedQueries called with request active\");\n }\n\n var downloadUsers = (0, _keys2.default)(this._keyDownloadsQueuedByUser);\n this._keyDownloadsQueuedByUser = {};\n var deferred = this._queuedQueryDeferred;\n this._queuedQueryDeferred = null;\n\n _logger2.default.log('Starting key download for', downloadUsers);\n this._downloadInProgress = true;\n\n var opts = {};\n if (this._syncToken) {\n opts.token = this._syncToken;\n }\n\n this._baseApis.downloadKeysForUsers(downloadUsers, opts).then(function (res) {\n var dk = res.device_keys || {};\n\n // do each user in a separate promise, to avoid wedging the CPU\n // (https://github.com/vector-im/riot-web/issues/3158)\n //\n // of course we ought to do this in a web worker or similar, but\n // this serves as an easy solution for now.\n var prom = _bluebird2.default.resolve();\n var _iteratorNormalCompletion10 = true;\n var _didIteratorError10 = false;\n var _iteratorError10 = undefined;\n\n try {\n var _loop = function _loop() {\n var userId = _step10.value;\n\n prom = prom.delay(5).then(function () {\n return _this6._processQueryResponseForUser(userId, dk[userId]);\n });\n };\n\n for (var _iterator10 = (0, _getIterator3.default)(downloadUsers), _step10; !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) {\n _loop();\n }\n } catch (err) {\n _didIteratorError10 = true;\n _iteratorError10 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion10 && _iterator10.return) {\n _iterator10.return();\n }\n } finally {\n if (_didIteratorError10) {\n throw _iteratorError10;\n }\n }\n }\n\n return prom;\n }).done(function () {\n _logger2.default.log('Completed key download for ' + downloadUsers);\n\n _this6._downloadInProgress = false;\n deferred.resolve();\n\n // if we have queued users, fire off another request.\n if (_this6._queuedQueryDeferred) {\n _this6._doQueuedQueries();\n }\n }, function (e) {\n _logger2.default.warn('Error downloading keys for ' + downloadUsers + ':', e);\n _this6._downloadInProgress = false;\n deferred.reject(e);\n });\n\n return deferred.promise;\n }\n }, {\n key: '_processQueryResponseForUser',\n value: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(userId, response) {\n var userStore, devs, storage;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _logger2.default.log('got keys for ' + userId + ':', response);\n\n // map from deviceid -> deviceinfo for this user\n userStore = {};\n devs = this._deviceList.getRawStoredDevicesForUser(userId);\n\n if (devs) {\n (0, _keys2.default)(devs).forEach(function (deviceId) {\n var d = _deviceinfo2.default.fromStorage(devs[deviceId], deviceId);\n userStore[deviceId] = d;\n });\n }\n\n _context2.next = 6;\n return (0, _bluebird.resolve)(_updateStoredDeviceKeysForUser(this._olmDevice, userId, userStore, response || {}));\n\n case 6:\n\n // put the updates into thr object that will be returned as our results\n storage = {};\n\n (0, _keys2.default)(userStore).forEach(function (deviceId) {\n storage[deviceId] = userStore[deviceId].toStorage();\n });\n\n this._deviceList._setRawStoredDevicesForUser(userId, storage);\n\n case 9:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function _processQueryResponseForUser(_x2, _x3) {\n return _ref3.apply(this, arguments);\n }\n\n return _processQueryResponseForUser;\n }()\n }]);\n return DeviceListUpdateSerialiser;\n}();\n//# sourceMappingURL=DeviceList.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nexports.encodeRecoveryKey = encodeRecoveryKey;\nexports.decodeRecoveryKey = decodeRecoveryKey;\n\nvar _bs = require('bs58');\n\nvar _bs2 = _interopRequireDefault(_bs);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// picked arbitrarily but to try & avoid clashing with any bitcoin ones\n// (which are also base58 encoded, but bitcoin's involve a lot more hashing)\nvar OLM_RECOVERY_KEY_PREFIX = [0x8B, 0x01]; /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction encodeRecoveryKey(key) {\n var buf = new Buffer(OLM_RECOVERY_KEY_PREFIX.length + key.length + 1);\n buf.set(OLM_RECOVERY_KEY_PREFIX, 0);\n buf.set(key, OLM_RECOVERY_KEY_PREFIX.length);\n\n var parity = 0;\n for (var i = 0; i < buf.length - 1; ++i) {\n parity ^= buf[i];\n }\n buf[buf.length - 1] = parity;\n var base58key = _bs2.default.encode(buf);\n\n return base58key.match(/.{1,4}/g).join(\" \");\n}\n\nfunction decodeRecoveryKey(recoverykey) {\n var result = _bs2.default.decode(recoverykey.replace(/ /g, ''));\n\n var parity = 0;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(result), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var b = _step.value;\n\n parity ^= b;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (parity !== 0) {\n throw new Error(\"Incorrect parity\");\n }\n\n for (var i = 0; i < OLM_RECOVERY_KEY_PREFIX.length; ++i) {\n if (result[i] !== OLM_RECOVERY_KEY_PREFIX[i]) {\n throw new Error(\"Incorrect prefix\");\n }\n }\n\n if (result.length !== OLM_RECOVERY_KEY_PREFIX.length + global.Olm.PRIVATE_KEY_LENGTH + 1) {\n throw new Error(\"Incorrect length\");\n }\n\n return result.slice(OLM_RECOVERY_KEY_PREFIX.length, OLM_RECOVERY_KEY_PREFIX.length + global.Olm.PRIVATE_KEY_LENGTH);\n}\n//# sourceMappingURL=recoverykey.js.map","var basex = require('base-x')\nvar ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n// @ts-ignore\nvar _Buffer = require('safe-buffer').Buffer\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n BASE_MAP.fill(255)\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (!_Buffer.isBuffer(source)) { throw new TypeError('Expected Buffer') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return _Buffer.alloc(0) }\n var psz = 0\n // Skip leading spaces.\n if (source[psz] === ' ') { return }\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') { return }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = _Buffer.allocUnsafe(zeroes + (size - it4))\n vch.fill(0x00, 0, zeroes)\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.keyForNewBackup = exports.keyForExistingBackup = undefined;\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar keyForExistingBackup = exports.keyForExistingBackup = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(backupData, password) {\n var authData;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (global.Olm) {\n _context.next = 2;\n break;\n }\n\n throw new Error(\"Olm is not available\");\n\n case 2:\n authData = backupData.auth_data;\n\n if (!(!authData.private_key_salt || !authData.private_key_iterations)) {\n _context.next = 5;\n break;\n }\n\n throw new Error(\"Salt and/or iterations not found: \" + \"this backup cannot be restored with a passphrase\");\n\n case 5:\n _context.next = 7;\n return (0, _bluebird.resolve)(deriveKey(password, backupData.auth_data.private_key_salt, backupData.auth_data.private_key_iterations));\n\n case 7:\n return _context.abrupt(\"return\", _context.sent);\n\n case 8:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function keyForExistingBackup(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n\nvar keyForNewBackup = exports.keyForNewBackup = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(password) {\n var salt, key;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (global.Olm) {\n _context2.next = 2;\n break;\n }\n\n throw new Error(\"Olm is not available\");\n\n case 2:\n salt = (0, _randomstring.randomString)(32);\n _context2.next = 5;\n return (0, _bluebird.resolve)(deriveKey(password, salt, DEFAULT_ITERATIONS));\n\n case 5:\n key = _context2.sent;\n return _context2.abrupt(\"return\", { key: key, salt: salt, iterations: DEFAULT_ITERATIONS });\n\n case 7:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function keyForNewBackup(_x3) {\n return _ref2.apply(this, arguments);\n };\n}();\n\nvar deriveKey = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(password, salt, iterations) {\n var subtleCrypto, TextEncoder, key, keybits;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n subtleCrypto = global.crypto.subtle;\n TextEncoder = global.TextEncoder;\n\n if (!(!subtleCrypto || !TextEncoder)) {\n _context3.next = 4;\n break;\n }\n\n throw new Error(\"Password-based backup is not avaiable on this platform\");\n\n case 4:\n _context3.next = 6;\n return (0, _bluebird.resolve)(subtleCrypto.importKey('raw', new TextEncoder().encode(password), { name: 'PBKDF2' }, false, ['deriveBits']));\n\n case 6:\n key = _context3.sent;\n _context3.next = 9;\n return (0, _bluebird.resolve)(subtleCrypto.deriveBits({\n name: 'PBKDF2',\n salt: new TextEncoder().encode(salt),\n iterations: iterations,\n hash: 'SHA-512'\n }, key, global.Olm.PRIVATE_KEY_LENGTH * 8));\n\n case 9:\n keybits = _context3.sent;\n return _context3.abrupt(\"return\", new Uint8Array(keybits));\n\n case 11:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function deriveKey(_x4, _x5, _x6) {\n return _ref3.apply(this, arguments);\n };\n}();\n\nvar _randomstring = require(\"../randomstring\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DEFAULT_ITERATIONS = 500000; /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=backup_password.js.map","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return map(objectKeys(obj), function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (isArray(obj[k])) {\n return map(obj[k], function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n return res;\n};\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module models/search-result\n */\n\nvar EventContext = require(\"./event-context\");\nvar utils = require(\"../utils\");\n\n/**\n * Construct a new SearchResult\n *\n * @param {number} rank where this SearchResult ranks in the results\n * @param {event-context.EventContext} eventContext the matching event and its\n * context\n *\n * @constructor\n */\nfunction SearchResult(rank, eventContext) {\n this.rank = rank;\n this.context = eventContext;\n}\n\n/**\n * Create a SearchResponse from the response to /search\n * @static\n * @param {Object} jsonObj\n * @param {function} eventMapper\n * @return {SearchResult}\n */\n\nSearchResult.fromJson = function (jsonObj, eventMapper) {\n var jsonContext = jsonObj.context || {};\n var events_before = jsonContext.events_before || [];\n var events_after = jsonContext.events_after || [];\n\n var context = new EventContext(eventMapper(jsonObj.result));\n\n context.setPaginateToken(jsonContext.start, true);\n context.addEvents(utils.map(events_before, eventMapper), true);\n context.addEvents(utils.map(events_after, eventMapper), false);\n context.setPaginateToken(jsonContext.end, false);\n\n return new SearchResult(jsonObj.rank, context);\n};\n\n/**\n * The SearchResult class\n */\nmodule.exports = SearchResult;\n//# sourceMappingURL=search-result.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module models/event-context\n */\n\n/**\n * Construct a new EventContext\n *\n * An eventcontext is used for circumstances such as search results, when we\n * have a particular event of interest, and a bunch of events before and after\n * it.\n *\n * It also stores pagination tokens for going backwards and forwards in the\n * timeline.\n *\n * @param {MatrixEvent} ourEvent the event at the centre of this context\n *\n * @constructor\n */\n\nfunction EventContext(ourEvent) {\n this._timeline = [ourEvent];\n this._ourEventIndex = 0;\n this._paginateTokens = { b: null, f: null };\n\n // this is used by MatrixClient to keep track of active requests\n this._paginateRequests = { b: null, f: null };\n}\n\n/**\n * Get the main event of interest\n *\n * This is a convenience function for getTimeline()[getOurEventIndex()].\n *\n * @return {MatrixEvent} The event at the centre of this context.\n */\nEventContext.prototype.getEvent = function () {\n return this._timeline[this._ourEventIndex];\n};\n\n/**\n * Get the list of events in this context\n *\n * @return {Array} An array of MatrixEvents\n */\nEventContext.prototype.getTimeline = function () {\n return this._timeline;\n};\n\n/**\n * Get the index in the timeline of our event\n *\n * @return {Number}\n */\nEventContext.prototype.getOurEventIndex = function () {\n return this._ourEventIndex;\n};\n\n/**\n * Get a pagination token.\n *\n * @param {boolean} backwards true to get the pagination token for going\n * backwards in time\n * @return {string}\n */\nEventContext.prototype.getPaginateToken = function (backwards) {\n return this._paginateTokens[backwards ? 'b' : 'f'];\n};\n\n/**\n * Set a pagination token.\n *\n * Generally this will be used only by the matrix js sdk.\n *\n * @param {string} token pagination token\n * @param {boolean} backwards true to set the pagination token for going\n * backwards in time\n */\nEventContext.prototype.setPaginateToken = function (token, backwards) {\n this._paginateTokens[backwards ? 'b' : 'f'] = token;\n};\n\n/**\n * Add more events to the timeline\n *\n * @param {Array} events new events, in timeline order\n * @param {boolean} atStart true to insert new events at the start\n */\nEventContext.prototype.addEvents = function (events, atStart) {\n // TODO: should we share logic with Room.addEventsToTimeline?\n // Should Room even use EventContext?\n\n if (atStart) {\n this._timeline = events.concat(this._timeline);\n this._ourEventIndex += events.length;\n } else {\n this._timeline = this._timeline.concat(events);\n }\n};\n\n/**\n * The EventContext class\n */\nmodule.exports = EventContext;\n//# sourceMappingURL=event-context.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * This is an internal module.\n * @module store/stub\n */\n\n/**\n * Construct a stub store. This does no-ops on most store methods.\n * @constructor\n */\nfunction StubStore() {\n this.fromToken = null;\n}\n\nStubStore.prototype = {\n\n /** @return {Promise} whether or not the database was newly created in this session. */\n isNewlyCreated: function isNewlyCreated() {\n return _bluebird2.default.resolve(true);\n },\n\n /**\n * Get the sync token.\n * @return {string}\n */\n getSyncToken: function getSyncToken() {\n return this.fromToken;\n },\n\n /**\n * Set the sync token.\n * @param {string} token\n */\n setSyncToken: function setSyncToken(token) {\n this.fromToken = token;\n },\n\n /**\n * No-op.\n * @param {Group} group\n */\n storeGroup: function storeGroup(group) {},\n\n /**\n * No-op.\n * @param {string} groupId\n * @return {null}\n */\n getGroup: function getGroup(groupId) {\n return null;\n },\n\n /**\n * No-op.\n * @return {Array} An empty array.\n */\n getGroups: function getGroups() {\n return [];\n },\n\n /**\n * No-op.\n * @param {Room} room\n */\n storeRoom: function storeRoom(room) {},\n\n /**\n * No-op.\n * @param {string} roomId\n * @return {null}\n */\n getRoom: function getRoom(roomId) {\n return null;\n },\n\n /**\n * No-op.\n * @return {Array} An empty array.\n */\n getRooms: function getRooms() {\n return [];\n },\n\n /**\n * Permanently delete a room.\n * @param {string} roomId\n */\n removeRoom: function removeRoom(roomId) {\n return;\n },\n\n /**\n * No-op.\n * @return {Array} An empty array.\n */\n getRoomSummaries: function getRoomSummaries() {\n return [];\n },\n\n /**\n * No-op.\n * @param {User} user\n */\n storeUser: function storeUser(user) {},\n\n /**\n * No-op.\n * @param {string} userId\n * @return {null}\n */\n getUser: function getUser(userId) {\n return null;\n },\n\n /**\n * No-op.\n * @return {User[]}\n */\n getUsers: function getUsers() {\n return [];\n },\n\n /**\n * No-op.\n * @param {Room} room\n * @param {integer} limit\n * @return {Array}\n */\n scrollback: function scrollback(room, limit) {\n return [];\n },\n\n /**\n * Store events for a room.\n * @param {Room} room The room to store events for.\n * @param {Array} events The events to store.\n * @param {string} token The token associated with these events.\n * @param {boolean} toStart True if these are paginated results.\n */\n storeEvents: function storeEvents(room, events, token, toStart) {},\n\n /**\n * Store a filter.\n * @param {Filter} filter\n */\n storeFilter: function storeFilter(filter) {},\n\n /**\n * Retrieve a filter.\n * @param {string} userId\n * @param {string} filterId\n * @return {?Filter} A filter or null.\n */\n getFilter: function getFilter(userId, filterId) {\n return null;\n },\n\n /**\n * Retrieve a filter ID with the given name.\n * @param {string} filterName The filter name.\n * @return {?string} The filter ID or null.\n */\n getFilterIdByName: function getFilterIdByName(filterName) {\n return null;\n },\n\n /**\n * Set a filter name to ID mapping.\n * @param {string} filterName\n * @param {string} filterId\n */\n setFilterIdByName: function setFilterIdByName(filterName, filterId) {},\n\n /**\n * Store user-scoped account data events\n * @param {Array} events The events to store.\n */\n storeAccountDataEvents: function storeAccountDataEvents(events) {},\n\n /**\n * Get account data event by event type\n * @param {string} eventType The event type being queried\n */\n getAccountData: function getAccountData(eventType) {},\n\n /**\n * setSyncData does nothing as there is no backing data store.\n *\n * @param {Object} syncData The sync data\n * @return {Promise} An immediately resolved promise.\n */\n setSyncData: function setSyncData(syncData) {\n return _bluebird2.default.resolve();\n },\n\n /**\n * We never want to save becase we have nothing to save to.\n *\n * @return {boolean} If the store wants to save\n */\n wantsSave: function wantsSave() {\n return false;\n },\n\n /**\n * Save does nothing as there is no backing data store.\n */\n save: function save() {},\n\n /**\n * Startup does nothing.\n * @return {Promise} An immediately resolved promise.\n */\n startup: function startup() {\n return _bluebird2.default.resolve();\n },\n\n /**\n * @return {Promise} Resolves with a sync response to restore the\n * client state to where it was at the last save, or null if there\n * is no saved sync data.\n */\n getSavedSync: function getSavedSync() {\n return _bluebird2.default.resolve(null);\n },\n\n /**\n * @return {Promise} If there is a saved sync, the nextBatch token\n * for this sync, otherwise null.\n */\n getSavedSyncToken: function getSavedSyncToken() {\n return _bluebird2.default.resolve(null);\n },\n\n /**\n * Delete all data from this store. Does nothing since this store\n * doesn't store anything.\n * @return {Promise} An immediately resolved promise.\n */\n deleteAllData: function deleteAllData() {\n return _bluebird2.default.resolve();\n },\n\n getOutOfBandMembers: function getOutOfBandMembers() {\n return _bluebird2.default.resolve(null);\n },\n\n setOutOfBandMembers: function setOutOfBandMembers() {\n return _bluebird2.default.resolve();\n },\n\n clearOutOfBandMembers: function clearOutOfBandMembers() {\n return _bluebird2.default.resolve();\n },\n\n getClientOptions: function getClientOptions() {\n return _bluebird2.default.resolve();\n },\n\n storeClientOptions: function storeClientOptions() {\n return _bluebird2.default.resolve();\n }\n};\n\n/** Stub Store class. */\nmodule.exports = StubStore;\n//# sourceMappingURL=stub.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module filter-component\n */\n\n/**\n * Checks if a value matches a given field value, which may be a * terminated\n * wildcard pattern.\n * @param {String} actual_value The value to be compared\n * @param {String} filter_value The filter pattern to be compared\n * @return {bool} true if the actual_value matches the filter_value\n */\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _matches_wildcard(actual_value, filter_value) {\n if (filter_value.endsWith(\"*\")) {\n var type_prefix = filter_value.slice(0, -1);\n return actual_value.substr(0, type_prefix.length) === type_prefix;\n } else {\n return actual_value === filter_value;\n }\n}\n\n/**\n * FilterComponent is a section of a Filter definition which defines the\n * types, rooms, senders filters etc to be applied to a particular type of resource.\n * This is all ported over from synapse's Filter object.\n *\n * N.B. that synapse refers to these as 'Filters', and what js-sdk refers to as\n * 'Filters' are referred to as 'FilterCollections'.\n *\n * @constructor\n * @param {Object} filter_json the definition of this filter JSON, e.g. { 'contains_url': true }\n */\nfunction FilterComponent(filter_json) {\n this.filter_json = filter_json;\n\n this.types = filter_json.types || null;\n this.not_types = filter_json.not_types || [];\n\n this.rooms = filter_json.rooms || null;\n this.not_rooms = filter_json.not_rooms || [];\n\n this.senders = filter_json.senders || null;\n this.not_senders = filter_json.not_senders || [];\n\n this.contains_url = filter_json.contains_url || null;\n}\n\n/**\n * Checks with the filter component matches the given event\n * @param {MatrixEvent} event event to be checked against the filter\n * @return {bool} true if the event matches the filter\n */\nFilterComponent.prototype.check = function (event) {\n return this._checkFields(event.getRoomId(), event.getSender(), event.getType(), event.getContent() ? event.getContent().url !== undefined : false);\n};\n\n/**\n * Checks whether the filter component matches the given event fields.\n * @param {String} room_id the room_id for the event being checked\n * @param {String} sender the sender of the event being checked\n * @param {String} event_type the type of the event being checked\n * @param {String} contains_url whether the event contains a content.url field\n * @return {bool} true if the event fields match the filter\n */\nFilterComponent.prototype._checkFields = function (room_id, sender, event_type, contains_url) {\n var literal_keys = {\n \"rooms\": function rooms(v) {\n return room_id === v;\n },\n \"senders\": function senders(v) {\n return sender === v;\n },\n \"types\": function types(v) {\n return _matches_wildcard(event_type, v);\n }\n };\n\n var self = this;\n for (var n = 0; n < (0, _keys2.default)(literal_keys).length; n++) {\n var name = (0, _keys2.default)(literal_keys)[n];\n var match_func = literal_keys[name];\n var not_name = \"not_\" + name;\n var disallowed_values = self[not_name];\n if (disallowed_values.filter(match_func).length > 0) {\n return false;\n }\n\n var allowed_values = self[name];\n if (allowed_values) {\n if (!allowed_values.map(match_func)) {\n return false;\n }\n }\n }\n\n var contains_url_filter = this.filter_json.contains_url;\n if (contains_url_filter !== undefined) {\n if (contains_url_filter !== contains_url) {\n return false;\n }\n }\n\n return true;\n};\n\n/**\n * Filters a list of events down to those which match this filter component\n * @param {MatrixEvent[]} events Events to be checked againt the filter component\n * @return {MatrixEvent[]} events which matched the filter component\n */\nFilterComponent.prototype.filter = function (events) {\n return events.filter(this.check, this);\n};\n\n/**\n * Returns the limit field for a given filter component, providing a default of\n * 10 if none is otherwise specified. Cargo-culted from Synapse.\n * @return {Number} the limit for this filter component.\n */\nFilterComponent.prototype.limit = function () {\n return this.filter_json.limit !== undefined ? this.filter_json.limit : 10;\n};\n\n/** The FilterComponent class */\nmodule.exports = FilterComponent;\n//# sourceMappingURL=filter-component.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/*\n * TODO:\n * This class mainly serves to take all the syncing logic out of client.js and\n * into a separate file. It's all very fluid, and this class gut wrenches a lot\n * of MatrixClient props (e.g. _http). Given we want to support WebSockets as\n * an alternative syncing API, we may want to have a proper syncing interface\n * for HTTP and WS at some point.\n */\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _logger = require(\"../src/logger\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _errors = require(\"./errors\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar User = require(\"./models/user\");\nvar Room = require(\"./models/room\");\nvar Group = require('./models/group');\nvar utils = require(\"./utils\");\nvar Filter = require(\"./filter\");\nvar EventTimeline = require(\"./models/event-timeline\");\nvar PushProcessor = require(\"./pushprocessor\");\n\n\nvar DEBUG = true;\n\n// /sync requests allow you to set a timeout= but the request may continue\n// beyond that and wedge forever, so we need to track how long we are willing\n// to keep open the connection. This constant is *ADDED* to the timeout= value\n// to determine the max time we're willing to wait.\nvar BUFFER_PERIOD_MS = 80 * 1000;\n\n// Number of consecutive failed syncs that will lead to a syncState of ERROR as opposed\n// to RECONNECTING. This is needed to inform the client of server issues when the\n// keepAlive is successful but the server /sync fails.\nvar FAILED_SYNC_ERROR_THRESHOLD = 3;\n\nfunction getFilterName(userId, suffix) {\n // scope this on the user ID because people may login on many accounts\n // and they all need to be stored!\n return \"FILTER_SYNC_\" + userId + (suffix ? \"_\" + suffix : \"\");\n}\n\nfunction debuglog() {\n if (!DEBUG) {\n return;\n }\n _logger2.default.log.apply(_logger2.default, arguments);\n}\n\n/**\n * Internal class - unstable.\n * Construct an entity which is able to sync with a homeserver.\n * @constructor\n * @param {MatrixClient} client The matrix client instance to use.\n * @param {Object} opts Config options\n * @param {module:crypto=} opts.crypto Crypto manager\n * @param {Function=} opts.canResetEntireTimeline A function which is called\n * with a room ID and returns a boolean. It should return 'true' if the SDK can\n * SAFELY remove events from this room. It may not be safe to remove events if\n * there are other references to the timelines for this room.\n * Default: returns false.\n * @param {Boolean=} opts.disablePresence True to perform syncing without automatically\n * updating presence.\n */\nfunction SyncApi(client, opts) {\n this.client = client;\n opts = opts || {};\n opts.initialSyncLimit = opts.initialSyncLimit === undefined ? 8 : opts.initialSyncLimit;\n opts.resolveInvitesToProfiles = opts.resolveInvitesToProfiles || false;\n opts.pollTimeout = opts.pollTimeout || 30 * 1000;\n opts.pendingEventOrdering = opts.pendingEventOrdering || \"chronological\";\n if (!opts.canResetEntireTimeline) {\n opts.canResetEntireTimeline = function (roomId) {\n return false;\n };\n }\n this.opts = opts;\n this._peekRoomId = null;\n this._currentSyncRequest = null;\n this._syncState = null;\n this._syncStateData = null; // additional data (eg. error object for failed sync)\n this._catchingUp = false;\n this._running = false;\n this._keepAliveTimer = null;\n this._connectionReturnedDefer = null;\n this._notifEvents = []; // accumulator of sync events in the current sync response\n this._failedSyncCount = 0; // Number of consecutive failed /sync requests\n this._storeIsInvalid = false; // flag set if the store needs to be cleared before we can start\n\n if (client.getNotifTimelineSet()) {\n client.reEmitter.reEmit(client.getNotifTimelineSet(), [\"Room.timeline\", \"Room.timelineReset\"]);\n }\n}\n\n/**\n * @param {string} roomId\n * @return {Room}\n */\nSyncApi.prototype.createRoom = function (roomId) {\n var client = this.client;\n var timelineSupport = client.timelineSupport,\n unstableClientRelationAggregation = client.unstableClientRelationAggregation;\n\n var room = new Room(roomId, client, client.getUserId(), {\n lazyLoadMembers: this.opts.lazyLoadMembers,\n pendingEventOrdering: this.opts.pendingEventOrdering,\n timelineSupport: timelineSupport,\n unstableClientRelationAggregation: unstableClientRelationAggregation\n });\n client.reEmitter.reEmit(room, [\"Room.name\", \"Room.timeline\", \"Room.redaction\", \"Room.redactionCancelled\", \"Room.receipt\", \"Room.tags\", \"Room.timelineReset\", \"Room.localEchoUpdated\", \"Room.accountData\", \"Room.myMembership\", \"Room.replaceEvent\"]);\n this._registerStateListeners(room);\n return room;\n};\n\n/**\n * @param {string} groupId\n * @return {Group}\n */\nSyncApi.prototype.createGroup = function (groupId) {\n var client = this.client;\n var group = new Group(groupId);\n client.reEmitter.reEmit(group, [\"Group.profile\", \"Group.myMembership\"]);\n client.store.storeGroup(group);\n return group;\n};\n\n/**\n * @param {Room} room\n * @private\n */\nSyncApi.prototype._registerStateListeners = function (room) {\n var client = this.client;\n // we need to also re-emit room state and room member events, so hook it up\n // to the client now. We need to add a listener for RoomState.members in\n // order to hook them correctly. (TODO: find a better way?)\n client.reEmitter.reEmit(room.currentState, [\"RoomState.events\", \"RoomState.members\", \"RoomState.newMember\"]);\n room.currentState.on(\"RoomState.newMember\", function (event, state, member) {\n member.user = client.getUser(member.userId);\n client.reEmitter.reEmit(member, [\"RoomMember.name\", \"RoomMember.typing\", \"RoomMember.powerLevel\", \"RoomMember.membership\"]);\n });\n};\n\n/**\n * @param {Room} room\n * @private\n */\nSyncApi.prototype._deregisterStateListeners = function (room) {\n // could do with a better way of achieving this.\n room.currentState.removeAllListeners(\"RoomState.events\");\n room.currentState.removeAllListeners(\"RoomState.members\");\n room.currentState.removeAllListeners(\"RoomState.newMember\");\n};\n\n/**\n * Sync rooms the user has left.\n * @return {Promise} Resolved when they've been added to the store.\n */\nSyncApi.prototype.syncLeftRooms = function () {\n var client = this.client;\n var self = this;\n\n // grab a filter with limit=1 and include_leave=true\n var filter = new Filter(this.client.credentials.userId);\n filter.setTimelineLimit(1);\n filter.setIncludeLeaveRooms(true);\n\n var localTimeoutMs = this.opts.pollTimeout + BUFFER_PERIOD_MS;\n var qps = {\n timeout: 0 // don't want to block since this is a single isolated req\n };\n\n return client.getOrCreateFilter(getFilterName(client.credentials.userId, \"LEFT_ROOMS\"), filter).then(function (filterId) {\n qps.filter = filterId;\n return client._http.authedRequest(undefined, \"GET\", \"/sync\", qps, undefined, localTimeoutMs);\n }).then(function (data) {\n var leaveRooms = [];\n if (data.rooms && data.rooms.leave) {\n leaveRooms = self._mapSyncResponseToRoomArray(data.rooms.leave);\n }\n var rooms = [];\n leaveRooms.forEach(function (leaveObj) {\n var room = leaveObj.room;\n rooms.push(room);\n if (!leaveObj.isBrandNewRoom) {\n // the intention behind syncLeftRooms is to add in rooms which were\n // *omitted* from the initial /sync. Rooms the user were joined to\n // but then left whilst the app is running will appear in this list\n // and we do not want to bother with them since they will have the\n // current state already (and may get dupe messages if we add\n // yet more timeline events!), so skip them.\n // NB: When we persist rooms to localStorage this will be more\n // complicated...\n return;\n }\n leaveObj.timeline = leaveObj.timeline || {};\n var timelineEvents = self._mapSyncEventsFormat(leaveObj.timeline, room);\n var stateEvents = self._mapSyncEventsFormat(leaveObj.state, room);\n\n // set the back-pagination token. Do this *before* adding any\n // events so that clients can start back-paginating.\n room.getLiveTimeline().setPaginationToken(leaveObj.timeline.prev_batch, EventTimeline.BACKWARDS);\n\n self._processRoomEvents(room, stateEvents, timelineEvents);\n\n room.recalculate();\n client.store.storeRoom(room);\n client.emit(\"Room\", room);\n\n self._processEventsForNotifs(room, timelineEvents);\n });\n return rooms;\n });\n};\n\n/**\n * Peek into a room. This will result in the room in question being synced so it\n * is accessible via getRooms(). Live updates for the room will be provided.\n * @param {string} roomId The room ID to peek into.\n * @return {Promise} A promise which resolves once the room has been added to the\n * store.\n */\nSyncApi.prototype.peek = function (roomId) {\n var self = this;\n var client = this.client;\n this._peekRoomId = roomId;\n return this.client.roomInitialSync(roomId, 20).then(function (response) {\n // make sure things are init'd\n response.messages = response.messages || {};\n response.messages.chunk = response.messages.chunk || [];\n response.state = response.state || [];\n\n var peekRoom = self.createRoom(roomId);\n\n // FIXME: Mostly duplicated from _processRoomEvents but not entirely\n // because \"state\" in this API is at the BEGINNING of the chunk\n var oldStateEvents = utils.map(utils.deepCopy(response.state), client.getEventMapper());\n var stateEvents = utils.map(response.state, client.getEventMapper());\n var messages = utils.map(response.messages.chunk, client.getEventMapper());\n\n // XXX: copypasted from /sync until we kill off this\n // minging v1 API stuff)\n // handle presence events (User objects)\n if (response.presence && utils.isArray(response.presence)) {\n response.presence.map(client.getEventMapper()).forEach(function (presenceEvent) {\n var user = client.store.getUser(presenceEvent.getContent().user_id);\n if (user) {\n user.setPresenceEvent(presenceEvent);\n } else {\n user = createNewUser(client, presenceEvent.getContent().user_id);\n user.setPresenceEvent(presenceEvent);\n client.store.storeUser(user);\n }\n client.emit(\"event\", presenceEvent);\n });\n }\n\n // set the pagination token before adding the events in case people\n // fire off pagination requests in response to the Room.timeline\n // events.\n if (response.messages.start) {\n peekRoom.oldState.paginationToken = response.messages.start;\n }\n\n // set the state of the room to as it was after the timeline executes\n peekRoom.oldState.setStateEvents(oldStateEvents);\n peekRoom.currentState.setStateEvents(stateEvents);\n\n self._resolveInvites(peekRoom);\n peekRoom.recalculate();\n\n // roll backwards to diverge old state. addEventsToTimeline\n // will overwrite the pagination token, so make sure it overwrites\n // it with the right thing.\n peekRoom.addEventsToTimeline(messages.reverse(), true, peekRoom.getLiveTimeline(), response.messages.start);\n\n client.store.storeRoom(peekRoom);\n client.emit(\"Room\", peekRoom);\n\n self._peekPoll(peekRoom);\n return peekRoom;\n });\n};\n\n/**\n * Stop polling for updates in the peeked room. NOPs if there is no room being\n * peeked.\n */\nSyncApi.prototype.stopPeeking = function () {\n this._peekRoomId = null;\n};\n\n/**\n * Do a peek room poll.\n * @param {Room} peekRoom\n * @param {string} token from= token\n */\nSyncApi.prototype._peekPoll = function (peekRoom, token) {\n if (this._peekRoomId !== peekRoom.roomId) {\n debuglog(\"Stopped peeking in room %s\", peekRoom.roomId);\n return;\n }\n\n var self = this;\n // FIXME: gut wrenching; hard-coded timeout values\n this.client._http.authedRequest(undefined, \"GET\", \"/events\", {\n room_id: peekRoom.roomId,\n timeout: 30 * 1000,\n from: token\n }, undefined, 50 * 1000).done(function (res) {\n if (self._peekRoomId !== peekRoom.roomId) {\n debuglog(\"Stopped peeking in room %s\", peekRoom.roomId);\n return;\n }\n // We have a problem that we get presence both from /events and /sync\n // however, /sync only returns presence for users in rooms\n // you're actually joined to.\n // in order to be sure to get presence for all of the users in the\n // peeked room, we handle presence explicitly here. This may result\n // in duplicate presence events firing for some users, which is a\n // performance drain, but such is life.\n // XXX: copypasted from /sync until we can kill this minging v1 stuff.\n\n res.chunk.filter(function (e) {\n return e.type === \"m.presence\";\n }).map(self.client.getEventMapper()).forEach(function (presenceEvent) {\n var user = self.client.store.getUser(presenceEvent.getContent().user_id);\n if (user) {\n user.setPresenceEvent(presenceEvent);\n } else {\n user = createNewUser(self.client, presenceEvent.getContent().user_id);\n user.setPresenceEvent(presenceEvent);\n self.client.store.storeUser(user);\n }\n self.client.emit(\"event\", presenceEvent);\n });\n\n // strip out events which aren't for the given room_id (e.g presence)\n var events = res.chunk.filter(function (e) {\n return e.room_id === peekRoom.roomId;\n }).map(self.client.getEventMapper());\n\n peekRoom.addLiveEvents(events);\n self._peekPoll(peekRoom, res.end);\n }, function (err) {\n _logger2.default.error(\"[%s] Peek poll failed: %s\", peekRoom.roomId, err);\n setTimeout(function () {\n self._peekPoll(peekRoom, token);\n }, 30 * 1000);\n });\n};\n\n/**\n * Returns the current state of this sync object\n * @see module:client~MatrixClient#event:\"sync\"\n * @return {?String}\n */\nSyncApi.prototype.getSyncState = function () {\n return this._syncState;\n};\n\n/**\n * Returns the additional data object associated with\n * the current sync state, or null if there is no\n * such data.\n * Sync errors, if available, are put in the 'error' key of\n * this object.\n * @return {?Object}\n */\nSyncApi.prototype.getSyncStateData = function () {\n return this._syncStateData;\n};\n\nSyncApi.prototype.recoverFromSyncStartupError = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(savedSyncPromise, err) {\n var keepaliveProm;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(savedSyncPromise);\n\n case 2:\n keepaliveProm = this._startKeepAlives();\n\n this._updateSyncState(\"ERROR\", { error: err });\n _context.next = 6;\n return (0, _bluebird.resolve)(keepaliveProm);\n\n case 6:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * Is the lazy loading option different than in previous session?\n * @param {bool} lazyLoadMembers current options for lazy loading\n * @return {bool} whether or not the option has changed compared to the previous session */\nSyncApi.prototype._wasLazyLoadingToggled = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(lazyLoadMembers) {\n var lazyLoadMembersBefore, isStoreNewlyCreated, prevClientOptions;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n lazyLoadMembers = !!lazyLoadMembers;\n // assume it was turned off before\n // if we don't know any better\n lazyLoadMembersBefore = false;\n _context2.next = 4;\n return (0, _bluebird.resolve)(this.client.store.isNewlyCreated());\n\n case 4:\n isStoreNewlyCreated = _context2.sent;\n\n if (isStoreNewlyCreated) {\n _context2.next = 11;\n break;\n }\n\n _context2.next = 8;\n return (0, _bluebird.resolve)(this.client.store.getClientOptions());\n\n case 8:\n prevClientOptions = _context2.sent;\n\n if (prevClientOptions) {\n lazyLoadMembersBefore = !!prevClientOptions.lazyLoadMembers;\n }\n return _context2.abrupt(\"return\", lazyLoadMembersBefore !== lazyLoadMembers);\n\n case 11:\n return _context2.abrupt(\"return\", false);\n\n case 12:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function (_x3) {\n return _ref2.apply(this, arguments);\n };\n}();\n\nSyncApi.prototype._shouldAbortSync = function (error) {\n if (error.errcode === \"M_UNKNOWN_TOKEN\") {\n // The logout already happened, we just need to stop.\n _logger2.default.warn(\"Token no longer valid - assuming logout\");\n this.stop();\n return true;\n }\n return false;\n};\n\n/**\n * Main entry point\n */\nSyncApi.prototype.sync = function () {\n var _this = this;\n\n // We need to do one-off checks before we can begin the /sync loop.\n // These are:\n // 1) We need to get push rules so we can check if events should bing as we get\n // them from /sync.\n // 2) We need to get/create a filter which we can use for /sync.\n // 3) We need to check the lazy loading option matches what was used in the\n // stored sync. If it doesn't, we can't use the stored sync.\n\n var getPushRules = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var result;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.prev = 0;\n\n debuglog(\"Getting push rules...\");\n _context3.next = 4;\n return (0, _bluebird.resolve)(client.getPushRules());\n\n case 4:\n result = _context3.sent;\n\n debuglog(\"Got push rules\");\n\n client.pushRules = result;\n _context3.next = 19;\n break;\n\n case 9:\n _context3.prev = 9;\n _context3.t0 = _context3[\"catch\"](0);\n\n _logger2.default.error(\"Getting push rules failed\", _context3.t0);\n\n if (!self._shouldAbortSync(_context3.t0)) {\n _context3.next = 14;\n break;\n }\n\n return _context3.abrupt(\"return\");\n\n case 14:\n // wait for saved sync to complete before doing anything else,\n // otherwise the sync state will end up being incorrect\n debuglog(\"Waiting for saved sync before retrying push rules...\");\n _context3.next = 17;\n return (0, _bluebird.resolve)(self.recoverFromSyncStartupError(savedSyncPromise, _context3.t0));\n\n case 17:\n getPushRules();\n return _context3.abrupt(\"return\");\n\n case 19:\n checkLazyLoadStatus(); // advance to the next stage\n\n case 20:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this, [[0, 9]]);\n }));\n\n return function getPushRules() {\n return _ref3.apply(this, arguments);\n };\n }();\n\n var getFilter = function () {\n var _ref5 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee5() {\n var filter, filterId;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n debuglog(\"Getting filter...\");\n filter = void 0;\n\n if (self.opts.filter) {\n filter = self.opts.filter;\n } else {\n filter = new Filter(client.credentials.userId);\n filter.setTimelineLimit(self.opts.initialSyncLimit);\n }\n\n filterId = void 0;\n _context5.prev = 4;\n _context5.next = 7;\n return (0, _bluebird.resolve)(client.getOrCreateFilter(getFilterName(client.credentials.userId), filter));\n\n case 7:\n filterId = _context5.sent;\n _context5.next = 20;\n break;\n\n case 10:\n _context5.prev = 10;\n _context5.t0 = _context5[\"catch\"](4);\n\n _logger2.default.error(\"Getting filter failed\", _context5.t0);\n\n if (!self._shouldAbortSync(_context5.t0)) {\n _context5.next = 15;\n break;\n }\n\n return _context5.abrupt(\"return\");\n\n case 15:\n // wait for saved sync to complete before doing anything else,\n // otherwise the sync state will end up being incorrect\n debuglog(\"Waiting for saved sync before retrying filter...\");\n _context5.next = 18;\n return (0, _bluebird.resolve)(self.recoverFromSyncStartupError(savedSyncPromise, _context5.t0));\n\n case 18:\n getFilter();\n return _context5.abrupt(\"return\");\n\n case 20:\n // reset the notifications timeline to prepare it to paginate from\n // the current point in time.\n // The right solution would be to tie /sync pagination tokens into\n // /notifications API somehow.\n client.resetNotifTimelineSet();\n\n if (self._currentSyncRequest === null) {\n // Send this first sync request here so we can then wait for the saved\n // sync data to finish processing before we process the results of this one.\n debuglog(\"Sending first sync request...\");\n self._currentSyncRequest = self._doSyncRequest({ filterId: filterId }, savedSyncToken);\n }\n\n // Now wait for the saved sync to finish...\n debuglog(\"Waiting for saved sync before starting sync processing...\");\n _context5.next = 25;\n return (0, _bluebird.resolve)(savedSyncPromise);\n\n case 25:\n self._sync({ filterId: filterId });\n\n case 26:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5, this, [[4, 10]]);\n }));\n\n return function getFilter() {\n return _ref5.apply(this, arguments);\n };\n }();\n\n var client = this.client;\n var self = this;\n\n this._running = true;\n\n if (global.document) {\n this._onOnlineBound = this._onOnline.bind(this);\n global.document.addEventListener(\"online\", this._onOnlineBound, false);\n }\n\n var savedSyncPromise = _bluebird2.default.resolve();\n var savedSyncToken = null;\n\n var checkLazyLoadStatus = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {\n var supported, shouldClear, reason, error;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n debuglog(\"Checking lazy load status...\");\n if (_this.opts.lazyLoadMembers && client.isGuest()) {\n _this.opts.lazyLoadMembers = false;\n }\n\n if (!_this.opts.lazyLoadMembers) {\n _context4.next = 24;\n break;\n }\n\n debuglog(\"Checking server lazy load support...\");\n _context4.next = 6;\n return (0, _bluebird.resolve)(client.doesServerSupportLazyLoading());\n\n case 6:\n supported = _context4.sent;\n\n if (!supported) {\n _context4.next = 22;\n break;\n }\n\n _context4.prev = 8;\n\n debuglog(\"Creating and storing lazy load sync filter...\");\n _context4.next = 12;\n return (0, _bluebird.resolve)(client.createFilter(Filter.LAZY_LOADING_SYNC_FILTER));\n\n case 12:\n _this.opts.filter = _context4.sent;\n\n debuglog(\"Created and stored lazy load sync filter\");\n _context4.next = 20;\n break;\n\n case 16:\n _context4.prev = 16;\n _context4.t0 = _context4[\"catch\"](8);\n\n _logger2.default.error(\"Creating and storing lazy load sync filter failed\", _context4.t0);\n throw _context4.t0;\n\n case 20:\n _context4.next = 24;\n break;\n\n case 22:\n debuglog(\"LL: lazy loading requested but not supported \" + \"by server, so disabling\");\n _this.opts.lazyLoadMembers = false;\n\n case 24:\n // need to vape the store when enabling LL and wasn't enabled before\n debuglog(\"Checking whether lazy loading has changed in store...\");\n _context4.next = 27;\n return (0, _bluebird.resolve)(_this._wasLazyLoadingToggled(_this.opts.lazyLoadMembers));\n\n case 27:\n shouldClear = _context4.sent;\n\n if (!shouldClear) {\n _context4.next = 35;\n break;\n }\n\n _this._storeIsInvalid = true;\n reason = _errors.InvalidStoreError.TOGGLED_LAZY_LOADING;\n error = new _errors.InvalidStoreError(reason, !!_this.opts.lazyLoadMembers);\n\n _this._updateSyncState(\"ERROR\", { error: error });\n // bail out of the sync loop now: the app needs to respond to this error.\n // we leave the state as 'ERROR' which isn't great since this normally means\n // we're retrying. The client must be stopped before clearing the stores anyway\n // so the app should stop the client, clear the store and start it again.\n _logger2.default.warn(\"InvalidStoreError: store is not usable: stopping sync.\");\n return _context4.abrupt(\"return\");\n\n case 35:\n if (_this.opts.lazyLoadMembers && _this.opts.crypto) {\n _this.opts.crypto.enableLazyLoading();\n }\n _context4.prev = 36;\n\n debuglog(\"Storing client options...\");\n _context4.next = 40;\n return (0, _bluebird.resolve)(_this.client._storeClientOptions());\n\n case 40:\n debuglog(\"Stored client options\");\n _context4.next = 47;\n break;\n\n case 43:\n _context4.prev = 43;\n _context4.t1 = _context4[\"catch\"](36);\n\n _logger2.default.error(\"Storing client options failed\", _context4.t1);\n throw _context4.t1;\n\n case 47:\n\n getFilter(); // Now get the filter and start syncing\n\n case 48:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, _this, [[8, 16], [36, 43]]);\n }));\n\n return function checkLazyLoadStatus() {\n return _ref4.apply(this, arguments);\n };\n }();\n\n if (client.isGuest()) {\n // no push rules for guests, no access to POST filter for guests.\n self._sync({});\n } else {\n // Pull the saved sync token out first, before the worker starts sending\n // all the sync data which could take a while. This will let us send our\n // first incremental sync request before we've processed our saved data.\n debuglog(\"Getting saved sync token...\");\n savedSyncPromise = client.store.getSavedSyncToken().then(function (tok) {\n debuglog(\"Got saved sync token\");\n savedSyncToken = tok;\n debuglog(\"Getting saved sync...\");\n return client.store.getSavedSync();\n }).then(function (savedSync) {\n debuglog(\"Got reply from saved sync, exists? \" + !!savedSync);\n if (savedSync) {\n return self._syncFromCache(savedSync);\n }\n }).catch(function (err) {\n _logger2.default.error(\"Getting saved sync failed\", err);\n });\n // Now start the first incremental sync request: this can also\n // take a while so if we set it going now, we can wait for it\n // to finish while we process our saved sync data.\n getPushRules();\n }\n};\n\n/**\n * Stops the sync object from syncing.\n */\nSyncApi.prototype.stop = function () {\n debuglog(\"SyncApi.stop\");\n if (global.document) {\n global.document.removeEventListener(\"online\", this._onOnlineBound, false);\n this._onOnlineBound = undefined;\n }\n this._running = false;\n if (this._currentSyncRequest) {\n this._currentSyncRequest.abort();\n }\n if (this._keepAliveTimer) {\n clearTimeout(this._keepAliveTimer);\n this._keepAliveTimer = null;\n }\n};\n\n/**\n * Retry a backed off syncing request immediately. This should only be used when\n * the user explicitly attempts to retry their lost connection.\n * @return {boolean} True if this resulted in a request being retried.\n */\nSyncApi.prototype.retryImmediately = function () {\n if (!this._connectionReturnedDefer) {\n return false;\n }\n this._startKeepAlives(0);\n return true;\n};\n/**\n * Process a single set of cached sync data.\n * @param {Object} savedSync a saved sync that was persisted by a store. This\n * should have been acquired via client.store.getSavedSync().\n */\nSyncApi.prototype._syncFromCache = function () {\n var _ref6 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(savedSync) {\n var nextSyncToken, syncEventData, data;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n debuglog(\"sync(): not doing HTTP hit, instead returning stored /sync data\");\n\n nextSyncToken = savedSync.nextBatch;\n\n // Set sync token for future incremental syncing\n\n this.client.store.setSyncToken(nextSyncToken);\n\n // No previous sync, set old token to null\n syncEventData = {\n oldSyncToken: null,\n nextSyncToken: nextSyncToken,\n catchingUp: false\n };\n data = {\n next_batch: nextSyncToken,\n rooms: savedSync.roomsData,\n groups: savedSync.groupsData,\n account_data: {\n events: savedSync.accountData\n }\n };\n _context6.prev = 5;\n _context6.next = 8;\n return (0, _bluebird.resolve)(this._processSyncResponse(syncEventData, data));\n\n case 8:\n _context6.next = 13;\n break;\n\n case 10:\n _context6.prev = 10;\n _context6.t0 = _context6[\"catch\"](5);\n\n _logger2.default.error(\"Error processing cached sync\", _context6.t0.stack || _context6.t0);\n\n case 13:\n\n // Don't emit a prepared if we've bailed because the store is invalid:\n // in this case the client will not be usable until stopped & restarted\n // so this would be useless and misleading.\n if (!this._storeIsInvalid) {\n this._updateSyncState(\"PREPARED\", syncEventData);\n }\n\n case 14:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6, this, [[5, 10]]);\n }));\n\n return function (_x4) {\n return _ref6.apply(this, arguments);\n };\n}();\n\n/**\n * Invoke me to do /sync calls\n * @param {Object} syncOptions\n * @param {string} syncOptions.filterId\n * @param {boolean} syncOptions.hasSyncedBefore\n */\nSyncApi.prototype._sync = function () {\n var _ref7 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(syncOptions) {\n var client, syncToken, data, syncEventData;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n client = this.client;\n\n if (this._running) {\n _context7.next = 6;\n break;\n }\n\n debuglog(\"Sync no longer running: exiting.\");\n if (this._connectionReturnedDefer) {\n this._connectionReturnedDefer.reject();\n this._connectionReturnedDefer = null;\n }\n this._updateSyncState(\"STOPPED\");\n return _context7.abrupt(\"return\");\n\n case 6:\n syncToken = client.store.getSyncToken();\n data = void 0;\n _context7.prev = 8;\n\n //debuglog('Starting sync since=' + syncToken);\n if (this._currentSyncRequest === null) {\n this._currentSyncRequest = this._doSyncRequest(syncOptions, syncToken);\n }\n _context7.next = 12;\n return (0, _bluebird.resolve)(this._currentSyncRequest);\n\n case 12:\n data = _context7.sent;\n _context7.next = 19;\n break;\n\n case 15:\n _context7.prev = 15;\n _context7.t0 = _context7[\"catch\"](8);\n\n this._onSyncError(_context7.t0, syncOptions);\n return _context7.abrupt(\"return\");\n\n case 19:\n _context7.prev = 19;\n\n this._currentSyncRequest = null;\n return _context7.finish(19);\n\n case 22:\n\n //debuglog('Completed sync, next_batch=' + data.next_batch);\n\n // set the sync token NOW *before* processing the events. We do this so\n // if something barfs on an event we can skip it rather than constantly\n // polling with the same token.\n client.store.setSyncToken(data.next_batch);\n\n // Reset after a successful sync\n this._failedSyncCount = 0;\n\n _context7.next = 26;\n return (0, _bluebird.resolve)(client.store.setSyncData(data));\n\n case 26:\n syncEventData = {\n oldSyncToken: syncToken,\n nextSyncToken: data.next_batch,\n catchingUp: this._catchingUp\n };\n\n if (!this.opts.crypto) {\n _context7.next = 30;\n break;\n }\n\n _context7.next = 30;\n return (0, _bluebird.resolve)(this.opts.crypto.onSyncWillProcess(syncEventData));\n\n case 30:\n _context7.prev = 30;\n _context7.next = 33;\n return (0, _bluebird.resolve)(this._processSyncResponse(syncEventData, data));\n\n case 33:\n _context7.next = 39;\n break;\n\n case 35:\n _context7.prev = 35;\n _context7.t1 = _context7[\"catch\"](30);\n\n // log the exception with stack if we have it, else fall back\n // to the plain description\n _logger2.default.error(\"Caught /sync error\", _context7.t1.stack || _context7.t1);\n\n // Emit the exception for client handling\n this.client.emit(\"sync.unexpectedError\", _context7.t1);\n\n case 39:\n\n // update this as it may have changed\n syncEventData.catchingUp = this._catchingUp;\n\n // emit synced events\n if (!syncOptions.hasSyncedBefore) {\n this._updateSyncState(\"PREPARED\", syncEventData);\n syncOptions.hasSyncedBefore = true;\n }\n\n // tell the crypto module to do its processing. It may block (to do a\n // /keys/changes request).\n\n if (!this.opts.crypto) {\n _context7.next = 44;\n break;\n }\n\n _context7.next = 44;\n return (0, _bluebird.resolve)(this.opts.crypto.onSyncCompleted(syncEventData));\n\n case 44:\n\n // keep emitting SYNCING -> SYNCING for clients who want to do bulk updates\n this._updateSyncState(\"SYNCING\", syncEventData);\n\n if (!client.store.wantsSave()) {\n _context7.next = 50;\n break;\n }\n\n if (!this.opts.crypto) {\n _context7.next = 49;\n break;\n }\n\n _context7.next = 49;\n return (0, _bluebird.resolve)(this.opts.crypto.saveDeviceList(0));\n\n case 49:\n\n // tell databases that everything is now in a consistent state and can be saved.\n client.store.save();\n\n case 50:\n\n // Begin next sync\n this._sync(syncOptions);\n\n case 51:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7, this, [[8, 15, 19, 22], [30, 35]]);\n }));\n\n return function (_x5) {\n return _ref7.apply(this, arguments);\n };\n}();\n\nSyncApi.prototype._doSyncRequest = function (syncOptions, syncToken) {\n var qps = this._getSyncParams(syncOptions, syncToken);\n return this.client._http.authedRequest(undefined, \"GET\", \"/sync\", qps, undefined, qps.timeout + BUFFER_PERIOD_MS);\n};\n\nSyncApi.prototype._getSyncParams = function (syncOptions, syncToken) {\n var pollTimeout = this.opts.pollTimeout;\n\n if (this.getSyncState() !== 'SYNCING' || this._catchingUp) {\n // unless we are happily syncing already, we want the server to return\n // as quickly as possible, even if there are no events queued. This\n // serves two purposes:\n //\n // * When the connection dies, we want to know asap when it comes back,\n // so that we can hide the error from the user. (We don't want to\n // have to wait for an event or a timeout).\n //\n // * We want to know if the server has any to_device messages queued up\n // for us. We do that by calling it with a zero timeout until it\n // doesn't give us any more to_device messages.\n this._catchingUp = true;\n pollTimeout = 0;\n }\n\n var filterId = syncOptions.filterId;\n if (this.client.isGuest() && !filterId) {\n filterId = this._getGuestFilter();\n }\n\n var qps = {\n filter: filterId,\n timeout: pollTimeout\n };\n\n if (this.opts.disablePresence) {\n qps.set_presence = \"offline\";\n }\n\n if (syncToken) {\n qps.since = syncToken;\n } else {\n // use a cachebuster for initialsyncs, to make sure that\n // we don't get a stale sync\n // (https://github.com/vector-im/vector-web/issues/1354)\n qps._cacheBuster = Date.now();\n }\n\n if (this.getSyncState() == 'ERROR' || this.getSyncState() == 'RECONNECTING') {\n // we think the connection is dead. If it comes back up, we won't know\n // about it till /sync returns. If the timeout= is high, this could\n // be a long time. Set it to 0 when doing retries so we don't have to wait\n // for an event or a timeout before emiting the SYNCING event.\n qps.timeout = 0;\n }\n\n return qps;\n};\n\nSyncApi.prototype._onSyncError = function (err, syncOptions) {\n var _this2 = this;\n\n if (!this._running) {\n debuglog(\"Sync no longer running: exiting\");\n if (this._connectionReturnedDefer) {\n this._connectionReturnedDefer.reject();\n this._connectionReturnedDefer = null;\n }\n this._updateSyncState(\"STOPPED\");\n return;\n }\n\n _logger2.default.error(\"/sync error %s\", err);\n _logger2.default.error(err);\n\n if (this._shouldAbortSync(err)) {\n return;\n }\n\n this._failedSyncCount++;\n _logger2.default.log('Number of consecutive failed sync requests:', this._failedSyncCount);\n\n debuglog(\"Starting keep-alive\");\n // Note that we do *not* mark the sync connection as\n // lost yet: we only do this if a keepalive poke\n // fails, since long lived HTTP connections will\n // go away sometimes and we shouldn't treat this as\n // erroneous. We set the state to 'reconnecting'\n // instead, so that clients can observe this state\n // if they wish.\n this._startKeepAlives().then(function (connDidFail) {\n // Only emit CATCHUP if we detected a connectivity error: if we didn't,\n // it's quite likely the sync will fail again for the same reason and we\n // want to stay in ERROR rather than keep flip-flopping between ERROR\n // and CATCHUP.\n if (connDidFail && _this2.getSyncState() === 'ERROR') {\n _this2._updateSyncState(\"CATCHUP\", {\n oldSyncToken: null,\n nextSyncToken: null,\n catchingUp: true\n });\n }\n _this2._sync(syncOptions);\n });\n\n this._currentSyncRequest = null;\n // Transition from RECONNECTING to ERROR after a given number of failed syncs\n this._updateSyncState(this._failedSyncCount >= FAILED_SYNC_ERROR_THRESHOLD ? \"ERROR\" : \"RECONNECTING\", { error: err });\n};\n\n/**\n * Process data returned from a sync response and propagate it\n * into the model objects\n *\n * @param {Object} syncEventData Object containing sync tokens associated with this sync\n * @param {Object} data The response from /sync\n */\nSyncApi.prototype._processSyncResponse = function () {\n var _ref8 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(syncEventData, data) {\n var client, self, events, cancelledKeyVerificationTxns, inviteRooms, joinRooms, leaveRooms, currentCount;\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n client = this.client;\n self = this;\n\n // data looks like:\n // {\n // next_batch: $token,\n // presence: { events: [] },\n // account_data: { events: [] },\n // device_lists: { changed: [\"@user:server\", ... ]},\n // to_device: { events: [] },\n // device_one_time_keys_count: { signed_curve25519: 42 },\n // rooms: {\n // invite: {\n // $roomid: {\n // invite_state: { events: [] }\n // }\n // },\n // join: {\n // $roomid: {\n // state: { events: [] },\n // timeline: { events: [], prev_batch: $token, limited: true },\n // ephemeral: { events: [] },\n // summary: {\n // m.heroes: [ $user_id ],\n // m.joined_member_count: $count,\n // m.invited_member_count: $count\n // },\n // account_data: { events: [] },\n // unread_notifications: {\n // highlight_count: 0,\n // notification_count: 0,\n // }\n // }\n // },\n // leave: {\n // $roomid: {\n // state: { events: [] },\n // timeline: { events: [], prev_batch: $token }\n // }\n // }\n // },\n // groups: {\n // invite: {\n // $groupId: {\n // inviter: $inviter,\n // profile: {\n // avatar_url: $avatarUrl,\n // name: $groupName,\n // },\n // },\n // },\n // join: {},\n // leave: {},\n // },\n // }\n\n // TODO-arch:\n // - Each event we pass through needs to be emitted via 'event', can we\n // do this in one place?\n // - The isBrandNewRoom boilerplate is boilerplatey.\n\n // handle presence events (User objects)\n\n if (data.presence && utils.isArray(data.presence.events)) {\n data.presence.events.map(client.getEventMapper()).forEach(function (presenceEvent) {\n var user = client.store.getUser(presenceEvent.getSender());\n if (user) {\n user.setPresenceEvent(presenceEvent);\n } else {\n user = createNewUser(client, presenceEvent.getSender());\n user.setPresenceEvent(presenceEvent);\n client.store.storeUser(user);\n }\n client.emit(\"event\", presenceEvent);\n });\n }\n\n // handle non-room account_data\n if (data.account_data && utils.isArray(data.account_data.events)) {\n events = data.account_data.events.map(client.getEventMapper());\n\n client.store.storeAccountDataEvents(events);\n events.forEach(function (accountDataEvent) {\n // Honour push rules that come down the sync stream but also\n // honour push rules that were previously cached. Base rules\n // will be updated when we recieve push rules via getPushRules\n // (see SyncApi.prototype.sync) before syncing over the network.\n if (accountDataEvent.getType() === 'm.push_rules') {\n var rules = accountDataEvent.getContent();\n client.pushRules = PushProcessor.rewriteDefaultRules(rules);\n }\n client.emit(\"accountData\", accountDataEvent);\n return accountDataEvent;\n });\n }\n\n // handle to-device events\n if (data.to_device && utils.isArray(data.to_device.events) && data.to_device.events.length > 0) {\n cancelledKeyVerificationTxns = [];\n\n data.to_device.events.map(client.getEventMapper()).map(function (toDeviceEvent) {\n // map is a cheap inline forEach\n // We want to flag m.key.verification.start events as cancelled\n // if there's an accompanying m.key.verification.cancel event, so\n // we pull out the transaction IDs from the cancellation events\n // so we can flag the verification events as cancelled in the loop\n // below.\n if (toDeviceEvent.getType() === \"m.key.verification.cancel\") {\n var txnId = toDeviceEvent.getContent()['transaction_id'];\n if (txnId) {\n cancelledKeyVerificationTxns.push(txnId);\n }\n }\n\n // as mentioned above, .map is a cheap inline forEach, so return\n // the unmodified event.\n return toDeviceEvent;\n }).forEach(function (toDeviceEvent) {\n var content = toDeviceEvent.getContent();\n if (toDeviceEvent.getType() == \"m.room.message\" && content.msgtype == \"m.bad.encrypted\") {\n // the mapper already logged a warning.\n _logger2.default.log('Ignoring undecryptable to-device event from ' + toDeviceEvent.getSender());\n return;\n }\n\n if (toDeviceEvent.getType() === \"m.key.verification.start\" || toDeviceEvent.getType() === \"m.key.verification.request\") {\n var txnId = content['transaction_id'];\n if (cancelledKeyVerificationTxns.includes(txnId)) {\n toDeviceEvent.flagCancelled();\n }\n }\n\n client.emit(\"toDeviceEvent\", toDeviceEvent);\n });\n } else {\n // no more to-device events: we can stop polling with a short timeout.\n this._catchingUp = false;\n }\n\n if (data.groups) {\n if (data.groups.invite) {\n this._processGroupSyncEntry(data.groups.invite, 'invite');\n }\n\n if (data.groups.join) {\n this._processGroupSyncEntry(data.groups.join, 'join');\n }\n\n if (data.groups.leave) {\n this._processGroupSyncEntry(data.groups.leave, 'leave');\n }\n }\n\n // the returned json structure is a bit crap, so make it into a\n // nicer form (array) after applying sanity to make sure we don't fail\n // on missing keys (on the off chance)\n inviteRooms = [];\n joinRooms = [];\n leaveRooms = [];\n\n\n if (data.rooms) {\n if (data.rooms.invite) {\n inviteRooms = this._mapSyncResponseToRoomArray(data.rooms.invite);\n }\n if (data.rooms.join) {\n joinRooms = this._mapSyncResponseToRoomArray(data.rooms.join);\n }\n if (data.rooms.leave) {\n leaveRooms = this._mapSyncResponseToRoomArray(data.rooms.leave);\n }\n }\n\n this._notifEvents = [];\n\n // Handle invites\n inviteRooms.forEach(function (inviteObj) {\n var room = inviteObj.room;\n var stateEvents = self._mapSyncEventsFormat(inviteObj.invite_state, room);\n\n self._processRoomEvents(room, stateEvents);\n if (inviteObj.isBrandNewRoom) {\n room.recalculate();\n client.store.storeRoom(room);\n client.emit(\"Room\", room);\n }\n stateEvents.forEach(function (e) {\n client.emit(\"event\", e);\n });\n room.updateMyMembership(\"invite\");\n });\n\n // Handle joins\n _context10.next = 14;\n return (0, _bluebird.resolve)(_bluebird2.default.mapSeries(joinRooms, function () {\n var _ref9 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(joinObj) {\n var processRoomEvent = function () {\n var _ref10 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(e) {\n var user;\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n client.emit(\"event\", e);\n\n if (!(e.isState() && e.getType() == \"m.room.encryption\" && self.opts.crypto)) {\n _context8.next = 4;\n break;\n }\n\n _context8.next = 4;\n return (0, _bluebird.resolve)(self.opts.crypto.onCryptoEvent(e));\n\n case 4:\n if (e.isState() && e.getType() === \"im.vector.user_status\") {\n user = client.store.getUser(e.getStateKey());\n\n if (user) {\n user._unstable_updateStatusMessage(e);\n } else {\n user = createNewUser(client, e.getStateKey());\n user._unstable_updateStatusMessage(e);\n client.store.storeUser(user);\n }\n }\n\n case 5:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n return function processRoomEvent(_x9) {\n return _ref10.apply(this, arguments);\n };\n }();\n\n var room, stateEvents, timelineEvents, ephemeralEvents, accountDataEvents, encrypted, limited, i, eventId;\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n room = joinObj.room;\n stateEvents = self._mapSyncEventsFormat(joinObj.state, room);\n timelineEvents = self._mapSyncEventsFormat(joinObj.timeline, room);\n ephemeralEvents = self._mapSyncEventsFormat(joinObj.ephemeral);\n accountDataEvents = self._mapSyncEventsFormat(joinObj.account_data);\n\n // we do this first so it's correct when any of the events fire\n\n if (joinObj.unread_notifications) {\n room.setUnreadNotificationCount('total', joinObj.unread_notifications.notification_count);\n\n // We track unread notifications ourselves in encrypted rooms, so don't\n // bother setting it here. We trust our calculations better than the\n // server's for this case, and therefore will assume that our non-zero\n // count is accurate.\n encrypted = client.isRoomEncrypted(room.roomId);\n\n if (!encrypted || encrypted && room.getUnreadNotificationCount('highlight') <= 0) {\n room.setUnreadNotificationCount('highlight', joinObj.unread_notifications.highlight_count);\n }\n }\n\n joinObj.timeline = joinObj.timeline || {};\n\n if (!joinObj.isBrandNewRoom) {\n _context9.next = 11;\n break;\n }\n\n // set the back-pagination token. Do this *before* adding any\n // events so that clients can start back-paginating.\n room.getLiveTimeline().setPaginationToken(joinObj.timeline.prev_batch, EventTimeline.BACKWARDS);\n _context9.next = 25;\n break;\n\n case 11:\n if (!joinObj.timeline.limited) {\n _context9.next = 25;\n break;\n }\n\n limited = true;\n\n // we've got a limited sync, so we *probably* have a gap in the\n // timeline, so should reset. But we might have been peeking or\n // paginating and already have some of the events, in which\n // case we just want to append any subsequent events to the end\n // of the existing timeline.\n //\n // This is particularly important in the case that we already have\n // *all* of the events in the timeline - in that case, if we reset\n // the timeline, we'll end up with an entirely empty timeline,\n // which we'll try to paginate but not get any new events (which\n // will stop us linking the empty timeline into the chain).\n //\n\n i = timelineEvents.length - 1;\n\n case 14:\n if (!(i >= 0)) {\n _context9.next = 24;\n break;\n }\n\n eventId = timelineEvents[i].getId();\n\n if (!room.getTimelineForEvent(eventId)) {\n _context9.next = 21;\n break;\n }\n\n debuglog(\"Already have event \" + eventId + \" in limited \" + \"sync - not resetting\");\n limited = false;\n\n // we might still be missing some of the events before i;\n // we don't want to be adding them to the end of the\n // timeline because that would put them out of order.\n timelineEvents.splice(0, i);\n\n // XXX: there's a problem here if the skipped part of the\n // timeline modifies the state set in stateEvents, because\n // we'll end up using the state from stateEvents rather\n // than the later state from timelineEvents. We probably\n // need to wind stateEvents forward over the events we're\n // skipping.\n\n return _context9.abrupt(\"break\", 24);\n\n case 21:\n i--;\n _context9.next = 14;\n break;\n\n case 24:\n\n if (limited) {\n self._deregisterStateListeners(room);\n room.resetLiveTimeline(joinObj.timeline.prev_batch, self.opts.canResetEntireTimeline(room.roomId) ? null : syncEventData.oldSyncToken);\n\n // We have to assume any gap in any timeline is\n // reason to stop incrementally tracking notifications and\n // reset the timeline.\n client.resetNotifTimelineSet();\n\n self._registerStateListeners(room);\n }\n\n case 25:\n\n self._processRoomEvents(room, stateEvents, timelineEvents);\n\n // set summary after processing events,\n // because it will trigger a name calculation\n // which needs the room state to be up to date\n if (joinObj.summary) {\n room.setSummary(joinObj.summary);\n }\n\n // we deliberately don't add ephemeral events to the timeline\n room.addEphemeralEvents(ephemeralEvents);\n\n // we deliberately don't add accountData to the timeline\n room.addAccountData(accountDataEvents);\n\n room.recalculate();\n if (joinObj.isBrandNewRoom) {\n client.store.storeRoom(room);\n client.emit(\"Room\", room);\n }\n\n self._processEventsForNotifs(room, timelineEvents);\n\n _context9.next = 34;\n return (0, _bluebird.resolve)(_bluebird2.default.mapSeries(stateEvents, processRoomEvent));\n\n case 34:\n _context9.next = 36;\n return (0, _bluebird.resolve)(_bluebird2.default.mapSeries(timelineEvents, processRoomEvent));\n\n case 36:\n ephemeralEvents.forEach(function (e) {\n client.emit(\"event\", e);\n });\n accountDataEvents.forEach(function (e) {\n client.emit(\"event\", e);\n });\n\n room.updateMyMembership(\"join\");\n\n case 39:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n return function (_x8) {\n return _ref9.apply(this, arguments);\n };\n }()));\n\n case 14:\n\n // Handle leaves (e.g. kicked rooms)\n leaveRooms.forEach(function (leaveObj) {\n var room = leaveObj.room;\n var stateEvents = self._mapSyncEventsFormat(leaveObj.state, room);\n var timelineEvents = self._mapSyncEventsFormat(leaveObj.timeline, room);\n var accountDataEvents = self._mapSyncEventsFormat(leaveObj.account_data);\n\n self._processRoomEvents(room, stateEvents, timelineEvents);\n room.addAccountData(accountDataEvents);\n\n room.recalculate();\n if (leaveObj.isBrandNewRoom) {\n client.store.storeRoom(room);\n client.emit(\"Room\", room);\n }\n\n self._processEventsForNotifs(room, timelineEvents);\n\n stateEvents.forEach(function (e) {\n client.emit(\"event\", e);\n });\n timelineEvents.forEach(function (e) {\n client.emit(\"event\", e);\n });\n accountDataEvents.forEach(function (e) {\n client.emit(\"event\", e);\n });\n\n room.updateMyMembership(\"leave\");\n });\n\n // update the notification timeline, if appropriate.\n // we only do this for live events, as otherwise we can't order them sanely\n // in the timeline relative to ones paginated in by /notifications.\n // XXX: we could fix this by making EventTimeline support chronological\n // ordering... but it doesn't, right now.\n if (syncEventData.oldSyncToken && this._notifEvents.length) {\n this._notifEvents.sort(function (a, b) {\n return a.getTs() - b.getTs();\n });\n this._notifEvents.forEach(function (event) {\n client.getNotifTimelineSet().addLiveEvent(event);\n });\n }\n\n // Handle device list updates\n\n if (!data.device_lists) {\n _context10.next = 22;\n break;\n }\n\n if (!this.opts.crypto) {\n _context10.next = 22;\n break;\n }\n\n _context10.next = 20;\n return (0, _bluebird.resolve)(this.opts.crypto.handleDeviceListChanges(syncEventData, data.device_lists));\n\n case 20:\n _context10.next = 22;\n break;\n\n case 22:\n\n // Handle one_time_keys_count\n if (this.opts.crypto && data.device_one_time_keys_count) {\n currentCount = data.device_one_time_keys_count.signed_curve25519 || 0;\n\n this.opts.crypto.updateOneTimeKeyCount(currentCount);\n }\n\n case 23:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n return function (_x6, _x7) {\n return _ref8.apply(this, arguments);\n };\n}();\n\n/**\n * Starts polling the connectivity check endpoint\n * @param {number} delay How long to delay until the first poll.\n * defaults to a short, randomised interval (to prevent\n * tightlooping if /versions succeeds but /sync etc. fail).\n * @return {promise} which resolves once the connection returns\n */\nSyncApi.prototype._startKeepAlives = function (delay) {\n if (delay === undefined) {\n delay = 2000 + Math.floor(Math.random() * 5000);\n }\n\n if (this._keepAliveTimer !== null) {\n clearTimeout(this._keepAliveTimer);\n }\n var self = this;\n if (delay > 0) {\n self._keepAliveTimer = setTimeout(self._pokeKeepAlive.bind(self), delay);\n } else {\n self._pokeKeepAlive();\n }\n if (!this._connectionReturnedDefer) {\n this._connectionReturnedDefer = _bluebird2.default.defer();\n }\n return this._connectionReturnedDefer.promise;\n};\n\n/**\n * Make a dummy call to /_matrix/client/versions, to see if the HS is\n * reachable.\n *\n * On failure, schedules a call back to itself. On success, resolves\n * this._connectionReturnedDefer.\n *\n * @param {bool} connDidFail True if a connectivity failure has been detected. Optional.\n */\nSyncApi.prototype._pokeKeepAlive = function (connDidFail) {\n if (connDidFail === undefined) connDidFail = false;\n var self = this;\n function success() {\n clearTimeout(self._keepAliveTimer);\n if (self._connectionReturnedDefer) {\n self._connectionReturnedDefer.resolve(connDidFail);\n self._connectionReturnedDefer = null;\n }\n }\n\n this.client._http.request(undefined, // callback\n \"GET\", \"/_matrix/client/versions\", undefined, // queryParams\n undefined, // data\n {\n prefix: '',\n localTimeoutMs: 15 * 1000\n }).done(function () {\n success();\n }, function (err) {\n if (err.httpStatus == 400 || err.httpStatus == 404) {\n // treat this as a success because the server probably just doesn't\n // support /versions: point is, we're getting a response.\n // We wait a short time though, just in case somehow the server\n // is in a mode where it 400s /versions responses and sync etc.\n // responses fail, this will mean we don't hammer in a loop.\n self._keepAliveTimer = setTimeout(success, 2000);\n } else {\n connDidFail = true;\n self._keepAliveTimer = setTimeout(self._pokeKeepAlive.bind(self, connDidFail), 5000 + Math.floor(Math.random() * 5000));\n // A keepalive has failed, so we emit the\n // error state (whether or not this is the\n // first failure).\n // Note we do this after setting the timer:\n // this lets the unit tests advance the mock\n // clock when they get the error.\n self._updateSyncState(\"ERROR\", { error: err });\n }\n });\n};\n\n/**\n * @param {Object} groupsSection Groups section object, eg. response.groups.invite\n * @param {string} sectionName Which section this is ('invite', 'join' or 'leave')\n */\nSyncApi.prototype._processGroupSyncEntry = function (groupsSection, sectionName) {\n // Processes entries from 'groups' section of the sync stream\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(groupsSection)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var groupId = _step.value;\n\n var groupInfo = groupsSection[groupId];\n var group = this.client.store.getGroup(groupId);\n var isBrandNew = group === null;\n if (group === null) {\n group = this.createGroup(groupId);\n }\n if (groupInfo.profile) {\n group.setProfile(groupInfo.profile.name, groupInfo.profile.avatar_url);\n }\n if (groupInfo.inviter) {\n group.setInviter({ userId: groupInfo.inviter });\n }\n group.setMyMembership(sectionName);\n if (isBrandNew) {\n // Now we've filled in all the fields, emit the Group event\n this.client.emit(\"Group\", group);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n};\n\n/**\n * @param {Object} obj\n * @return {Object[]}\n */\nSyncApi.prototype._mapSyncResponseToRoomArray = function (obj) {\n // Maps { roomid: {stuff}, roomid: {stuff} }\n // to\n // [{stuff+Room+isBrandNewRoom}, {stuff+Room+isBrandNewRoom}]\n var client = this.client;\n var self = this;\n return utils.keys(obj).map(function (roomId) {\n var arrObj = obj[roomId];\n var room = client.store.getRoom(roomId);\n var isBrandNewRoom = false;\n if (!room) {\n room = self.createRoom(roomId);\n isBrandNewRoom = true;\n }\n arrObj.room = room;\n arrObj.isBrandNewRoom = isBrandNewRoom;\n return arrObj;\n });\n};\n\n/**\n * @param {Object} obj\n * @param {Room} room\n * @return {MatrixEvent[]}\n */\nSyncApi.prototype._mapSyncEventsFormat = function (obj, room) {\n if (!obj || !utils.isArray(obj.events)) {\n return [];\n }\n var mapper = this.client.getEventMapper();\n return obj.events.map(function (e) {\n if (room) {\n e.room_id = room.roomId;\n }\n return mapper(e);\n });\n};\n\n/**\n * @param {Room} room\n */\nSyncApi.prototype._resolveInvites = function (room) {\n if (!room || !this.opts.resolveInvitesToProfiles) {\n return;\n }\n var client = this.client;\n // For each invited room member we want to give them a displayname/avatar url\n // if they have one (the m.room.member invites don't contain this).\n room.getMembersWithMembership(\"invite\").forEach(function (member) {\n if (member._requestedProfileInfo) {\n return;\n }\n member._requestedProfileInfo = true;\n // try to get a cached copy first.\n var user = client.getUser(member.userId);\n var promise = void 0;\n if (user) {\n promise = _bluebird2.default.resolve({\n avatar_url: user.avatarUrl,\n displayname: user.displayName\n });\n } else {\n promise = client.getProfileInfo(member.userId);\n }\n promise.done(function (info) {\n // slightly naughty by doctoring the invite event but this means all\n // the code paths remain the same between invite/join display name stuff\n // which is a worthy trade-off for some minor pollution.\n var inviteEvent = member.events.member;\n if (inviteEvent.getContent().membership !== \"invite\") {\n // between resolving and now they have since joined, so don't clobber\n return;\n }\n inviteEvent.getContent().avatar_url = info.avatar_url;\n inviteEvent.getContent().displayname = info.displayname;\n // fire listeners\n member.setMembershipEvent(inviteEvent, room.currentState);\n }, function (err) {\n // OH WELL.\n });\n });\n};\n\n/**\n * @param {Room} room\n * @param {MatrixEvent[]} stateEventList A list of state events. This is the state\n * at the *START* of the timeline list if it is supplied.\n * @param {MatrixEvent[]} [timelineEventList] A list of timeline events. Lower index\n * is earlier in time. Higher index is later.\n */\nSyncApi.prototype._processRoomEvents = function (room, stateEventList, timelineEventList) {\n // If there are no events in the timeline yet, initialise it with\n // the given state events\n var liveTimeline = room.getLiveTimeline();\n var timelineWasEmpty = liveTimeline.getEvents().length == 0;\n if (timelineWasEmpty) {\n // Passing these events into initialiseState will freeze them, so we need\n // to compute and cache the push actions for them now, otherwise sync dies\n // with an attempt to assign to read only property.\n // XXX: This is pretty horrible and is assuming all sorts of behaviour from\n // these functions that it shouldn't be. We should probably either store the\n // push actions cache elsewhere so we can freeze MatrixEvents, or otherwise\n // find some solution where MatrixEvents are immutable but allow for a cache\n // field.\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(stateEventList), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var ev = _step2.value;\n\n this.client.getPushActionsForEvent(ev);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n liveTimeline.initialiseState(stateEventList);\n }\n\n this._resolveInvites(room);\n\n // recalculate the room name at this point as adding events to the timeline\n // may make notifications appear which should have the right name.\n // XXX: This looks suspect: we'll end up recalculating the room once here\n // and then again after adding events (_processSyncResponse calls it after\n // calling us) even if no state events were added. It also means that if\n // one of the room events in timelineEventList is something that needs\n // a recalculation (like m.room.name) we won't recalculate until we've\n // finished adding all the events, which will cause the notification to have\n // the old room name rather than the new one.\n room.recalculate();\n\n // If the timeline wasn't empty, we process the state events here: they're\n // defined as updates to the state before the start of the timeline, so this\n // starts to roll the state forward.\n // XXX: That's what we *should* do, but this can happen if we were previously\n // peeking in a room, in which case we obviously do *not* want to add the\n // state events here onto the end of the timeline. Historically, the js-sdk\n // has just set these new state events on the old and new state. This seems\n // very wrong because there could be events in the timeline that diverge the\n // state, in which case this is going to leave things out of sync. However,\n // for now I think it;s best to behave the same as the code has done previously.\n if (!timelineWasEmpty) {\n // XXX: As above, don't do this...\n //room.addLiveEvents(stateEventList || []);\n // Do this instead...\n room.oldState.setStateEvents(stateEventList || []);\n room.currentState.setStateEvents(stateEventList || []);\n }\n // execute the timeline events. This will continue to diverge the current state\n // if the timeline has any state events in it.\n // This also needs to be done before running push rules on the events as they need\n // to be decorated with sender etc.\n room.addLiveEvents(timelineEventList || []);\n};\n\n/**\n * Takes a list of timelineEvents and adds and adds to _notifEvents\n * as appropriate.\n * This must be called after the room the events belong to has been stored.\n *\n * @param {Room} room\n * @param {MatrixEvent[]} [timelineEventList] A list of timeline events. Lower index\n * is earlier in time. Higher index is later.\n */\nSyncApi.prototype._processEventsForNotifs = function (room, timelineEventList) {\n // gather our notifications into this._notifEvents\n if (this.client.getNotifTimelineSet()) {\n for (var i = 0; i < timelineEventList.length; i++) {\n var pushActions = this.client.getPushActionsForEvent(timelineEventList[i]);\n if (pushActions && pushActions.notify && pushActions.tweaks && pushActions.tweaks.highlight) {\n this._notifEvents.push(timelineEventList[i]);\n }\n }\n }\n};\n\n/**\n * @return {string}\n */\nSyncApi.prototype._getGuestFilter = function () {\n var guestRooms = this.client._guestRooms; // FIXME: horrible gut-wrenching\n if (!guestRooms) {\n return \"{}\";\n }\n // we just need to specify the filter inline if we're a guest because guests\n // can't create filters.\n return (0, _stringify2.default)({\n room: {\n timeline: {\n limit: 20\n }\n }\n });\n};\n\n/**\n * Sets the sync state and emits an event to say so\n * @param {String} newState The new state string\n * @param {Object} data Object of additional data to emit in the event\n */\nSyncApi.prototype._updateSyncState = function (newState, data) {\n var old = this._syncState;\n this._syncState = newState;\n this._syncStateData = data;\n this.client.emit(\"sync\", this._syncState, old, data);\n};\n\n/**\n * Event handler for the 'online' event\n * This event is generally unreliable and precise behaviour\n * varies between browsers, so we poll for connectivity too,\n * but this might help us reconnect a little faster.\n */\nSyncApi.prototype._onOnline = function () {\n debuglog(\"Browser thinks we are back online\");\n this._startKeepAlives(0);\n};\n\nfunction createNewUser(client, userId) {\n var user = new User(userId);\n client.reEmitter.reEmit(user, [\"User.avatarUrl\", \"User.displayName\", \"User.presence\", \"User.currentlyActive\", \"User.lastPresenceTs\"]);\n return user;\n}\n\n/** */\nmodule.exports = SyncApi;\n//# sourceMappingURL=sync.js.map","require('../../modules/es6.number.is-integer');\nmodule.exports = require('../../modules/_core').Number.isInteger;\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module models/room-summary\n */\n\n/**\n * Construct a new Room Summary. A summary can be used for display on a recent\n * list, without having to load the entire room list into memory.\n * @constructor\n * @param {string} roomId Required. The ID of this room.\n * @param {Object} info Optional. The summary info. Additional keys are supported.\n * @param {string} info.title The title of the room (e.g. m.room.name)\n * @param {string} info.desc The description of the room (e.g.\n * m.room.topic)\n * @param {Number} info.numMembers The number of joined users.\n * @param {string[]} info.aliases The list of aliases for this room.\n * @param {Number} info.timestamp The timestamp for this room.\n */\n\nfunction RoomSummary(roomId, info) {\n this.roomId = roomId;\n this.info = info;\n}\n\n/**\n * The RoomSummary class.\n */\nmodule.exports = RoomSummary;\n//# sourceMappingURL=room-summary.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _set = require('babel-runtime/core-js/set');\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _events = require('events');\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _event = require('../../lib/models/event');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A container for relation events that supports easy access to common ways of\n * aggregating such events. Each instance holds events that of a single relation\n * type and event type. All of the events also relate to the same original event.\n *\n * The typical way to get one of these containers is via\n * EventTimelineSet#getRelationsForEvent.\n */\n/*\nCopyright 2019 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar Relations = function (_EventEmitter) {\n (0, _inherits3.default)(Relations, _EventEmitter);\n\n /**\n * @param {String} relationType\n * The type of relation involved, such as \"m.annotation\", \"m.reference\",\n * \"m.replace\", etc.\n * @param {String} eventType\n * The relation event's type, such as \"m.reaction\", etc.\n * @param {?Room} room\n * Room for this container. May be null for non-room cases, such as the\n * notification timeline.\n */\n function Relations(relationType, eventType, room) {\n (0, _classCallCheck3.default)(this, Relations);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (Relations.__proto__ || (0, _getPrototypeOf2.default)(Relations)).call(this));\n\n _this._onEventStatus = function (event, status) {\n if (!event.isSending()) {\n // Sending is done, so we don't need to listen anymore\n event.removeListener(\"Event.status\", _this._onEventStatus);\n return;\n }\n if (status !== _event.EventStatus.CANCELLED) {\n return;\n }\n // Event was cancelled, remove from the collection\n event.removeListener(\"Event.status\", _this._onEventStatus);\n _this._removeEvent(event);\n };\n\n _this._onBeforeRedaction = function (redactedEvent) {\n if (!_this._relations.has(redactedEvent)) {\n return;\n }\n\n _this._relations.delete(redactedEvent);\n\n if (_this.relationType === \"m.annotation\") {\n // Remove the redacted annotation from aggregation by key\n _this._removeAnnotationFromAggregation(redactedEvent);\n } else if (_this.relationType === \"m.replace\" && _this._targetEvent) {\n _this._targetEvent.makeReplaced(_this.getLastReplacement());\n }\n\n redactedEvent.removeListener(\"Event.beforeRedaction\", _this._onBeforeRedaction);\n\n _this.emit(\"Relations.redaction\");\n };\n\n _this.relationType = relationType;\n _this.eventType = eventType;\n _this._relations = new _set2.default();\n _this._annotationsByKey = {};\n _this._annotationsBySender = {};\n _this._sortedAnnotationsByKey = [];\n _this._targetEvent = null;\n return _this;\n }\n\n /**\n * Add relation events to this collection.\n *\n * @param {MatrixEvent} event\n * The new relation event to be added.\n */\n\n\n (0, _createClass3.default)(Relations, [{\n key: 'addEvent',\n value: function addEvent(event) {\n if (this._relations.has(event)) {\n return;\n }\n\n var relation = event.getRelation();\n if (!relation) {\n console.error(\"Event must have relation info\");\n return;\n }\n\n var relationType = relation.rel_type;\n var eventType = event.getType();\n\n if (this.relationType !== relationType || this.eventType !== eventType) {\n console.error(\"Event relation info doesn't match this container\");\n return;\n }\n\n // If the event is in the process of being sent, listen for cancellation\n // so we can remove the event from the collection.\n if (event.isSending()) {\n event.on(\"Event.status\", this._onEventStatus);\n }\n\n this._relations.add(event);\n\n if (this.relationType === \"m.annotation\") {\n this._addAnnotationToAggregation(event);\n } else if (this.relationType === \"m.replace\" && this._targetEvent) {\n this._targetEvent.makeReplaced(this.getLastReplacement());\n }\n\n event.on(\"Event.beforeRedaction\", this._onBeforeRedaction);\n\n this.emit(\"Relations.add\", event);\n }\n\n /**\n * Remove relation event from this collection.\n *\n * @param {MatrixEvent} event\n * The relation event to remove.\n */\n\n }, {\n key: '_removeEvent',\n value: function _removeEvent(event) {\n if (!this._relations.has(event)) {\n return;\n }\n\n var relation = event.getRelation();\n if (!relation) {\n console.error(\"Event must have relation info\");\n return;\n }\n\n var relationType = relation.rel_type;\n var eventType = event.getType();\n\n if (this.relationType !== relationType || this.eventType !== eventType) {\n console.error(\"Event relation info doesn't match this container\");\n return;\n }\n\n this._relations.delete(event);\n\n if (this.relationType === \"m.annotation\") {\n this._removeAnnotationFromAggregation(event);\n } else if (this.relationType === \"m.replace\" && this._targetEvent) {\n this._targetEvent.makeReplaced(this.getLastReplacement());\n }\n\n this.emit(\"Relations.remove\", event);\n }\n\n /**\n * Listens for event status changes to remove cancelled events.\n *\n * @param {MatrixEvent} event The event whose status has changed\n * @param {EventStatus} status The new status\n */\n\n }, {\n key: 'getRelations',\n\n\n /**\n * Get all relation events in this collection.\n *\n * These are currently in the order of insertion to this collection, which\n * won't match timeline order in the case of scrollback.\n * TODO: Tweak `addEvent` to insert correctly for scrollback.\n *\n * @return {Array}\n * Relation events in insertion order.\n */\n value: function getRelations() {\n return [].concat((0, _toConsumableArray3.default)(this._relations));\n }\n }, {\n key: '_addAnnotationToAggregation',\n value: function _addAnnotationToAggregation(event) {\n var _event$getRelation = event.getRelation(),\n key = _event$getRelation.key;\n\n if (!key) {\n return;\n }\n\n var eventsForKey = this._annotationsByKey[key];\n if (!eventsForKey) {\n eventsForKey = this._annotationsByKey[key] = new _set2.default();\n this._sortedAnnotationsByKey.push([key, eventsForKey]);\n }\n // Add the new event to the set for this key\n eventsForKey.add(event);\n // Re-sort the [key, events] pairs in descending order of event count\n this._sortedAnnotationsByKey.sort(function (a, b) {\n var aEvents = a[1];\n var bEvents = b[1];\n return bEvents.size - aEvents.size;\n });\n\n var sender = event.getSender();\n var eventsFromSender = this._annotationsBySender[sender];\n if (!eventsFromSender) {\n eventsFromSender = this._annotationsBySender[sender] = new _set2.default();\n }\n // Add the new event to the set for this sender\n eventsFromSender.add(event);\n }\n }, {\n key: '_removeAnnotationFromAggregation',\n value: function _removeAnnotationFromAggregation(event) {\n var _event$getRelation2 = event.getRelation(),\n key = _event$getRelation2.key;\n\n if (!key) {\n return;\n }\n\n var eventsForKey = this._annotationsByKey[key];\n if (eventsForKey) {\n eventsForKey.delete(event);\n\n // Re-sort the [key, events] pairs in descending order of event count\n this._sortedAnnotationsByKey.sort(function (a, b) {\n var aEvents = a[1];\n var bEvents = b[1];\n return bEvents.size - aEvents.size;\n });\n }\n\n var sender = event.getSender();\n var eventsFromSender = this._annotationsBySender[sender];\n if (eventsFromSender) {\n eventsFromSender.delete(event);\n }\n }\n\n /**\n * For relations that have been redacted, we want to remove them from\n * aggregation data sets and emit an update event.\n *\n * To do so, we listen for `Event.beforeRedaction`, which happens:\n * - after the server accepted the redaction and remote echoed back to us\n * - before the original event has been marked redacted in the client\n *\n * @param {MatrixEvent} redactedEvent\n * The original relation event that is about to be redacted.\n */\n\n }, {\n key: 'getSortedAnnotationsByKey',\n\n\n /**\n * Get all events in this collection grouped by key and sorted by descending\n * event count in each group.\n *\n * This is currently only supported for the annotation relation type.\n *\n * @return {Array}\n * An array of [key, events] pairs sorted by descending event count.\n * The events are stored in a Set (which preserves insertion order).\n */\n value: function getSortedAnnotationsByKey() {\n if (this.relationType !== \"m.annotation\") {\n // Other relation types are not grouped currently.\n return null;\n }\n\n return this._sortedAnnotationsByKey;\n }\n\n /**\n * Get all events in this collection grouped by sender.\n *\n * This is currently only supported for the annotation relation type.\n *\n * @return {Object}\n * An object with each relation sender as a key and the matching Set of\n * events for that sender as a value.\n */\n\n }, {\n key: 'getAnnotationsBySender',\n value: function getAnnotationsBySender() {\n if (this.relationType !== \"m.annotation\") {\n // Other relation types are not grouped currently.\n return null;\n }\n\n return this._annotationsBySender;\n }\n\n /**\n * Returns the most recent (and allowed) m.replace relation, if any.\n *\n * This is currently only supported for the m.replace relation type,\n * once the target event is known, see `addEvent`.\n *\n * @return {MatrixEvent?}\n */\n\n }, {\n key: 'getLastReplacement',\n value: function getLastReplacement() {\n var _this2 = this;\n\n if (this.relationType !== \"m.replace\") {\n // Aggregating on last only makes sense for this relation type\n return null;\n }\n if (!this._targetEvent) {\n // Don't know which replacements to accept yet.\n // This method shouldn't be called before the original\n // event is known anyway.\n return null;\n }\n\n // the all-knowning server tells us that the event at some point had\n // this timestamp for its replacement, so any following replacement should definitely not be less\n var replaceRelation = this._targetEvent.getServerAggregatedRelation(\"m.replace\");\n var minTs = replaceRelation && replaceRelation.origin_server_ts;\n\n return this.getRelations().reduce(function (last, event) {\n if (event.getSender() !== _this2._targetEvent.getSender()) {\n return last;\n }\n if (minTs && minTs > event.getTs()) {\n return last;\n }\n if (last && last.getTs() > event.getTs()) {\n return last;\n }\n return event;\n }, null);\n }\n\n /*\n * @param {MatrixEvent} targetEvent the event the relations are related to.\n */\n\n }, {\n key: 'setTargetEvent',\n value: function setTargetEvent(event) {\n if (this._targetEvent) {\n return;\n }\n this._targetEvent = event;\n if (this.relationType === \"m.replace\") {\n var replacement = this.getLastReplacement();\n // this is the initial update, so only call it if we already have something\n // to not emit Event.replaced needlessly\n if (replacement) {\n this._targetEvent.makeReplaced(replacement);\n }\n }\n }\n }]);\n return Relations;\n}(_events2.default);\n\nexports.default = Relations;\n//# sourceMappingURL=relations.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2019 The Matrix.org Foundation C.I.C.\nCopyright 2019 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * This is an internal module. MatrixBaseApis is currently only meant to be used\n * by {@link client~MatrixClient}.\n *\n * @module base-apis\n */\n\nvar _typeof2 = require('babel-runtime/helpers/typeof');\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _serviceTypes = require('./service-types');\n\nvar _logger = require('./logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar httpApi = require(\"./http-api\");\nvar utils = require(\"./utils\");\nvar PushProcessor = require(\"./pushprocessor\");\n\nfunction termsUrlForService(serviceType, baseUrl) {\n switch (serviceType) {\n case _serviceTypes.SERVICE_TYPES.IS:\n return baseUrl + httpApi.PREFIX_IDENTITY_V2 + '/terms';\n case _serviceTypes.SERVICE_TYPES.IM:\n return baseUrl + '/_matrix/integrations/v1/terms';\n default:\n throw new Error('Unsupported service type');\n }\n}\n\n/**\n * Low-level wrappers for the Matrix APIs\n *\n * @constructor\n *\n * @param {Object} opts Configuration options\n *\n * @param {string} opts.baseUrl Required. The base URL to the client-server\n * HTTP API.\n *\n * @param {string} opts.idBaseUrl Optional. The base identity server URL for\n * identity server requests.\n *\n * @param {Function} opts.request Required. The function to invoke for HTTP\n * requests. The value of this property is typically require(\"request\")\n * as it returns a function which meets the required interface. See\n * {@link requestFunction} for more information.\n *\n * @param {string} opts.accessToken The access_token for this user.\n *\n * @param {IdentityServerProvider} [opts.identityServer]\n * Optional. A provider object with one function `getAccessToken`, which is a\n * callback that returns a Promise of an identity access token to supply\n * with identity requests. If the object is unset, no access token will be\n * supplied.\n * See also https://github.com/vector-im/riot-web/issues/10615 which seeks to\n * replace the previous approach of manual access tokens params with this\n * callback throughout the SDK.\n *\n * @param {Number=} opts.localTimeoutMs Optional. The default maximum amount of\n * time to wait before timing out HTTP requests. If not specified, there is no\n * timeout.\n *\n * @param {Object} opts.queryParams Optional. Extra query parameters to append\n * to all requests with this client. Useful for application services which require\n * ?user_id=.\n *\n * @param {boolean} [opts.useAuthorizationHeader = false] Set to true to use\n * Authorization header instead of query param to send the access token to the server.\n */\nfunction MatrixBaseApis(opts) {\n utils.checkObjectHasKeys(opts, [\"baseUrl\", \"request\"]);\n\n this.baseUrl = opts.baseUrl;\n this.idBaseUrl = opts.idBaseUrl;\n this.identityServer = opts.identityServer;\n\n var httpOpts = {\n baseUrl: opts.baseUrl,\n idBaseUrl: opts.idBaseUrl,\n accessToken: opts.accessToken,\n request: opts.request,\n prefix: httpApi.PREFIX_R0,\n onlyData: true,\n extraParams: opts.queryParams,\n localTimeoutMs: opts.localTimeoutMs,\n useAuthorizationHeader: opts.useAuthorizationHeader\n };\n this._http = new httpApi.MatrixHttpApi(this, httpOpts);\n\n this._txnCtr = 0;\n}\n\n/**\n * Get the Homeserver URL of this client\n * @return {string} Homeserver URL of this client\n */\nMatrixBaseApis.prototype.getHomeserverUrl = function () {\n return this.baseUrl;\n};\n\n/**\n * Get the Identity Server URL of this client\n * @param {boolean} stripProto whether or not to strip the protocol from the URL\n * @return {string} Identity Server URL of this client\n */\nMatrixBaseApis.prototype.getIdentityServerUrl = function () {\n var stripProto = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (stripProto && (this.idBaseUrl.startsWith(\"http://\") || this.idBaseUrl.startsWith(\"https://\"))) {\n return this.idBaseUrl.split(\"://\")[1];\n }\n return this.idBaseUrl;\n};\n\n/**\n * Set the Identity Server URL of this client\n * @param {string} url New Identity Server URL\n */\nMatrixBaseApis.prototype.setIdentityServerUrl = function (url) {\n this.idBaseUrl = utils.ensureNoTrailingSlash(url);\n this._http.setIdBaseUrl(this.idBaseUrl);\n};\n\n/**\n * Get the access token associated with this account.\n * @return {?String} The access_token or null\n */\nMatrixBaseApis.prototype.getAccessToken = function () {\n return this._http.opts.accessToken || null;\n};\n\n/**\n * @return {boolean} true if there is a valid access_token for this client.\n */\nMatrixBaseApis.prototype.isLoggedIn = function () {\n return this._http.opts.accessToken !== undefined;\n};\n\n/**\n * Make up a new transaction id\n *\n * @return {string} a new, unique, transaction id\n */\nMatrixBaseApis.prototype.makeTxnId = function () {\n return \"m\" + new Date().getTime() + \".\" + this._txnCtr++;\n};\n\n// Registration/Login operations\n// =============================\n\n/**\n * Check whether a username is available prior to registration. An error response\n * indicates an invalid/unavailable username.\n * @param {string} username The username to check the availability of.\n * @return {module:client.Promise} Resolves: to `true`.\n */\nMatrixBaseApis.prototype.isUsernameAvailable = function (username) {\n return this._http.authedRequest(undefined, \"GET\", '/register/available', { username: username }).then(function (response) {\n return response.available;\n });\n};\n\n/**\n * @param {string} username\n * @param {string} password\n * @param {string} sessionId\n * @param {Object} auth\n * @param {Object} bindThreepids Set key 'email' to true to bind any email\n * threepid uses during registration in the ID server. Set 'msisdn' to\n * true to bind msisdn.\n * @param {string} guestAccessToken\n * @param {string} inhibitLogin\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.register = function (username, password, sessionId, auth, bindThreepids, guestAccessToken, inhibitLogin, callback) {\n // backwards compat\n if (bindThreepids === true) {\n bindThreepids = { email: true };\n } else if (bindThreepids === null || bindThreepids === undefined) {\n bindThreepids = {};\n }\n if (typeof inhibitLogin === 'function') {\n callback = inhibitLogin;\n inhibitLogin = undefined;\n }\n\n if (auth === undefined || auth === null) {\n auth = {};\n }\n if (sessionId) {\n auth.session = sessionId;\n }\n\n var params = {\n auth: auth\n };\n if (username !== undefined && username !== null) {\n params.username = username;\n }\n if (password !== undefined && password !== null) {\n params.password = password;\n }\n if (bindThreepids.email) {\n params.bind_email = true;\n }\n if (bindThreepids.msisdn) {\n params.bind_msisdn = true;\n }\n if (guestAccessToken !== undefined && guestAccessToken !== null) {\n params.guest_access_token = guestAccessToken;\n }\n if (inhibitLogin !== undefined && inhibitLogin !== null) {\n params.inhibit_login = inhibitLogin;\n }\n // Temporary parameter added to make the register endpoint advertise\n // msisdn flows. This exists because there are clients that break\n // when given stages they don't recognise. This parameter will cease\n // to be necessary once these old clients are gone.\n // Only send it if we send any params at all (the password param is\n // mandatory, so if we send any params, we'll send the password param)\n if (password !== undefined && password !== null) {\n params.x_show_msisdn = true;\n }\n\n return this.registerRequest(params, undefined, callback);\n};\n\n/**\n * Register a guest account.\n * @param {Object=} opts Registration options\n * @param {Object} opts.body JSON HTTP body to provide.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.registerGuest = function (opts, callback) {\n opts = opts || {};\n opts.body = opts.body || {};\n return this.registerRequest(opts.body, \"guest\", callback);\n};\n\n/**\n * @param {Object} data parameters for registration request\n * @param {string=} kind type of user to register. may be \"guest\"\n * @param {module:client.callback=} callback\n * @return {module:client.Promise} Resolves: to the /register response\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.registerRequest = function (data, kind, callback) {\n var params = {};\n if (kind) {\n params.kind = kind;\n }\n\n return this._http.request(callback, \"POST\", \"/register\", params, data);\n};\n\n/**\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.loginFlows = function (callback) {\n return this._http.request(callback, \"GET\", \"/login\");\n};\n\n/**\n * @param {string} loginType\n * @param {Object} data\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.login = function (loginType, data, callback) {\n var _this = this;\n\n var login_data = {\n type: loginType\n };\n\n // merge data into login_data\n utils.extend(login_data, data);\n\n return this._http.authedRequest(function (error, response) {\n if (response && response.access_token && response.user_id) {\n _this._http.opts.accessToken = response.access_token;\n _this.credentials = {\n userId: response.user_id\n };\n }\n\n if (callback) {\n callback(error, response);\n }\n }, \"POST\", \"/login\", undefined, login_data);\n};\n\n/**\n * @param {string} user\n * @param {string} password\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.loginWithPassword = function (user, password, callback) {\n return this.login(\"m.login.password\", {\n user: user,\n password: password\n }, callback);\n};\n\n/**\n * @param {string} relayState URL Callback after SAML2 Authentication\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.loginWithSAML2 = function (relayState, callback) {\n return this.login(\"m.login.saml2\", {\n relay_state: relayState\n }, callback);\n};\n\n/**\n * @param {string} redirectUrl The URL to redirect to after the HS\n * authenticates with CAS.\n * @return {string} The HS URL to hit to begin the CAS login process.\n */\nMatrixBaseApis.prototype.getCasLoginUrl = function (redirectUrl) {\n return this.getSsoLoginUrl(redirectUrl, \"cas\");\n};\n\n/**\n * @param {string} redirectUrl The URL to redirect to after the HS\n * authenticates with the SSO.\n * @param {string} loginType The type of SSO login we are doing (sso or cas).\n * Defaults to 'sso'.\n * @return {string} The HS URL to hit to begin the SSO login process.\n */\nMatrixBaseApis.prototype.getSsoLoginUrl = function (redirectUrl, loginType) {\n if (loginType === undefined) {\n loginType = \"sso\";\n }\n return this._http.getUrl(\"/login/\" + loginType + \"/redirect\", {\n \"redirectUrl\": redirectUrl\n }, httpApi.PREFIX_R0);\n};\n\n/**\n * @param {string} token Login token previously received from homeserver\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.loginWithToken = function (token, callback) {\n return this.login(\"m.login.token\", {\n token: token\n }, callback);\n};\n\n/**\n * Logs out the current session.\n * Obviously, further calls that require authorisation should fail after this\n * method is called. The state of the MatrixClient object is not affected:\n * it is up to the caller to either reset or destroy the MatrixClient after\n * this method succeeds.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: On success, the empty object\n */\nMatrixBaseApis.prototype.logout = function (callback) {\n return this._http.authedRequest(callback, \"POST\", '/logout');\n};\n\n/**\n * Deactivates the logged-in account.\n * Obviously, further calls that require authorisation should fail after this\n * method is called. The state of the MatrixClient object is not affected:\n * it is up to the caller to either reset or destroy the MatrixClient after\n * this method succeeds.\n * @param {object} auth Optional. Auth data to supply for User-Interactive auth.\n * @param {boolean} erase Optional. If set, send as `erase` attribute in the\n * JSON request body, indicating whether the account should be erased. Defaults\n * to false.\n * @return {module:client.Promise} Resolves: On success, the empty object\n */\nMatrixBaseApis.prototype.deactivateAccount = function (auth, erase) {\n if (typeof erase === 'function') {\n throw new Error('deactivateAccount no longer accepts a callback parameter');\n }\n\n var body = {};\n if (auth) {\n body.auth = auth;\n }\n if (erase !== undefined) {\n body.erase = erase;\n }\n\n return this._http.authedRequest(undefined, \"POST\", '/account/deactivate', undefined, body);\n};\n\n/**\n * Get the fallback URL to use for unknown interactive-auth stages.\n *\n * @param {string} loginType the type of stage being attempted\n * @param {string} authSessionId the auth session ID provided by the homeserver\n *\n * @return {string} HS URL to hit to for the fallback interface\n */\nMatrixBaseApis.prototype.getFallbackAuthUrl = function (loginType, authSessionId) {\n var path = utils.encodeUri(\"/auth/$loginType/fallback/web\", {\n $loginType: loginType\n });\n\n return this._http.getUrl(path, {\n session: authSessionId\n }, httpApi.PREFIX_R0);\n};\n\n// Room operations\n// ===============\n\n/**\n * Create a new room.\n * @param {Object} options a list of options to pass to the /createRoom API.\n * @param {string} options.room_alias_name The alias localpart to assign to\n * this room.\n * @param {string} options.visibility Either 'public' or 'private'.\n * @param {string[]} options.invite A list of user IDs to invite to this room.\n * @param {string} options.name The name to give this room.\n * @param {string} options.topic The topic to give this room.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: {room_id: {string},\n * room_alias: {string(opt)}}\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.createRoom = function (options, callback) {\n // valid options include: room_alias_name, visibility, invite\n return this._http.authedRequest(callback, \"POST\", \"/createRoom\", undefined, options);\n};\n/**\n * Fetches relations for a given event\n * @param {string} roomId the room of the event\n * @param {string} eventId the id of the event\n * @param {string} relationType the rel_type of the relations requested\n * @param {string} eventType the event type of the relations requested\n * @param {Object} opts options with optional values for the request.\n * @param {Object} opts.from the pagination token returned from a previous request as `next_batch` to return following relations.\n * @return {Object} the response, with chunk and next_batch.\n */\nMatrixBaseApis.prototype.fetchRelations = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(roomId, eventId, relationType, eventType, opts) {\n var queryParams, queryString, path, response;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n queryParams = {};\n\n if (opts.from) {\n queryParams.from = opts.from;\n }\n queryString = utils.encodeParams(queryParams);\n path = utils.encodeUri(\"/rooms/$roomId/relations/$eventId/$relationType/$eventType?\" + queryString, {\n $roomId: roomId,\n $eventId: eventId,\n $relationType: relationType,\n $eventType: eventType\n });\n _context.next = 6;\n return (0, _bluebird.resolve)(this._http.authedRequest(undefined, \"GET\", path, null, null, {\n prefix: httpApi.PREFIX_UNSTABLE\n }));\n\n case 6:\n response = _context.sent;\n return _context.abrupt('return', response);\n\n case 8:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function (_x2, _x3, _x4, _x5, _x6) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * @param {string} roomId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.roomState = function (roomId, callback) {\n var path = utils.encodeUri(\"/rooms/$roomId/state\", { $roomId: roomId });\n return this._http.authedRequest(callback, \"GET\", path);\n};\n\n/**\n * Get an event in a room by its event id.\n * @param {string} roomId\n * @param {string} eventId\n * @param {module:client.callback} callback Optional.\n *\n * @return {Promise} Resolves to an object containing the event.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.fetchRoomEvent = function (roomId, eventId, callback) {\n var path = utils.encodeUri(\"/rooms/$roomId/event/$eventId\", {\n $roomId: roomId,\n $eventId: eventId\n });\n return this._http.authedRequest(callback, \"GET\", path);\n};\n\n/**\n * @param {string} roomId\n * @param {string} includeMembership the membership type to include in the response\n * @param {string} excludeMembership the membership type to exclude from the response\n * @param {string} atEventId the id of the event for which moment in the timeline the members should be returned for\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: dictionary of userid to profile information\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.members = function (roomId, includeMembership, excludeMembership, atEventId, callback) {\n var queryParams = {};\n if (includeMembership) {\n queryParams.membership = includeMembership;\n }\n if (excludeMembership) {\n queryParams.not_membership = excludeMembership;\n }\n if (atEventId) {\n queryParams.at = atEventId;\n }\n\n var queryString = utils.encodeParams(queryParams);\n\n var path = utils.encodeUri(\"/rooms/$roomId/members?\" + queryString, { $roomId: roomId });\n return this._http.authedRequest(callback, \"GET\", path);\n};\n\n/**\n * Upgrades a room to a new protocol version\n * @param {string} roomId\n * @param {string} newVersion The target version to upgrade to\n * @return {module:client.Promise} Resolves: Object with key 'replacement_room'\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.upgradeRoom = function (roomId, newVersion) {\n var path = utils.encodeUri(\"/rooms/$roomId/upgrade\", { $roomId: roomId });\n return this._http.authedRequest(undefined, \"POST\", path, undefined, { new_version: newVersion });\n};\n\n/**\n * @param {string} groupId\n * @return {module:client.Promise} Resolves: Group summary object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getGroupSummary = function (groupId) {\n var path = utils.encodeUri(\"/groups/$groupId/summary\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"GET\", path);\n};\n\n/**\n * @param {string} groupId\n * @return {module:client.Promise} Resolves: Group profile object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getGroupProfile = function (groupId) {\n var path = utils.encodeUri(\"/groups/$groupId/profile\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"GET\", path);\n};\n\n/**\n * @param {string} groupId\n * @param {Object} profile The group profile object\n * @param {string=} profile.name Name of the group\n * @param {string=} profile.avatar_url MXC avatar URL\n * @param {string=} profile.short_description A short description of the room\n * @param {string=} profile.long_description A longer HTML description of the room\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setGroupProfile = function (groupId, profile) {\n var path = utils.encodeUri(\"/groups/$groupId/profile\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"POST\", path, undefined, profile);\n};\n\n/**\n * @param {string} groupId\n * @param {object} policy The join policy for the group. Must include at\n * least a 'type' field which is 'open' if anyone can join the group\n * the group without prior approval, or 'invite' if an invite is\n * required to join.\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setGroupJoinPolicy = function (groupId, policy) {\n var path = utils.encodeUri(\"/groups/$groupId/settings/m.join_policy\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {\n 'm.join_policy': policy\n });\n};\n\n/**\n * @param {string} groupId\n * @return {module:client.Promise} Resolves: Group users list object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getGroupUsers = function (groupId) {\n var path = utils.encodeUri(\"/groups/$groupId/users\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"GET\", path);\n};\n\n/**\n * @param {string} groupId\n * @return {module:client.Promise} Resolves: Group users list object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getGroupInvitedUsers = function (groupId) {\n var path = utils.encodeUri(\"/groups/$groupId/invited_users\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"GET\", path);\n};\n\n/**\n * @param {string} groupId\n * @return {module:client.Promise} Resolves: Group rooms list object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getGroupRooms = function (groupId) {\n var path = utils.encodeUri(\"/groups/$groupId/rooms\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"GET\", path);\n};\n\n/**\n * @param {string} groupId\n * @param {string} userId\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.inviteUserToGroup = function (groupId, userId) {\n var path = utils.encodeUri(\"/groups/$groupId/admin/users/invite/$userId\", { $groupId: groupId, $userId: userId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @param {string} userId\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.removeUserFromGroup = function (groupId, userId) {\n var path = utils.encodeUri(\"/groups/$groupId/admin/users/remove/$userId\", { $groupId: groupId, $userId: userId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @param {string} userId\n * @param {string} roleId Optional.\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.addUserToGroupSummary = function (groupId, userId, roleId) {\n var path = utils.encodeUri(roleId ? \"/groups/$groupId/summary/$roleId/users/$userId\" : \"/groups/$groupId/summary/users/$userId\", { $groupId: groupId, $roleId: roleId, $userId: userId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @param {string} userId\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.removeUserFromGroupSummary = function (groupId, userId) {\n var path = utils.encodeUri(\"/groups/$groupId/summary/users/$userId\", { $groupId: groupId, $userId: userId });\n return this._http.authedRequest(undefined, \"DELETE\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @param {string} roomId\n * @param {string} categoryId Optional.\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.addRoomToGroupSummary = function (groupId, roomId, categoryId) {\n var path = utils.encodeUri(categoryId ? \"/groups/$groupId/summary/$categoryId/rooms/$roomId\" : \"/groups/$groupId/summary/rooms/$roomId\", { $groupId: groupId, $categoryId: categoryId, $roomId: roomId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @param {string} roomId\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.removeRoomFromGroupSummary = function (groupId, roomId) {\n var path = utils.encodeUri(\"/groups/$groupId/summary/rooms/$roomId\", { $groupId: groupId, $roomId: roomId });\n return this._http.authedRequest(undefined, \"DELETE\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @param {string} roomId\n * @param {bool} isPublic Whether the room-group association is visible to non-members\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.addRoomToGroup = function (groupId, roomId, isPublic) {\n if (isPublic === undefined) {\n isPublic = true;\n }\n var path = utils.encodeUri(\"/groups/$groupId/admin/rooms/$roomId\", { $groupId: groupId, $roomId: roomId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, { \"m.visibility\": { type: isPublic ? \"public\" : \"private\" } });\n};\n\n/**\n * Configure the visibility of a room-group association.\n * @param {string} groupId\n * @param {string} roomId\n * @param {bool} isPublic Whether the room-group association is visible to non-members\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.updateGroupRoomVisibility = function (groupId, roomId, isPublic) {\n // NB: The /config API is generic but there's not much point in exposing this yet as synapse\n // is the only server to implement this. In future we should consider an API that allows\n // arbitrary configuration, i.e. \"config/$configKey\".\n\n var path = utils.encodeUri(\"/groups/$groupId/admin/rooms/$roomId/config/m.visibility\", { $groupId: groupId, $roomId: roomId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, { type: isPublic ? \"public\" : \"private\" });\n};\n\n/**\n * @param {string} groupId\n * @param {string} roomId\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.removeRoomFromGroup = function (groupId, roomId) {\n var path = utils.encodeUri(\"/groups/$groupId/admin/rooms/$roomId\", { $groupId: groupId, $roomId: roomId });\n return this._http.authedRequest(undefined, \"DELETE\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @param {Object} opts Additional options to send alongside the acceptance.\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.acceptGroupInvite = function (groupId) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n var path = utils.encodeUri(\"/groups/$groupId/self/accept_invite\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, opts || {});\n};\n\n/**\n * @param {string} groupId\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.joinGroup = function (groupId) {\n var path = utils.encodeUri(\"/groups/$groupId/self/join\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.leaveGroup = function (groupId) {\n var path = utils.encodeUri(\"/groups/$groupId/self/leave\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {});\n};\n\n/**\n * @return {module:client.Promise} Resolves: The groups to which the user is joined\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getJoinedGroups = function () {\n var path = utils.encodeUri(\"/joined_groups\");\n return this._http.authedRequest(undefined, \"GET\", path);\n};\n\n/**\n * @param {Object} content Request content\n * @param {string} content.localpart The local part of the desired group ID\n * @param {Object} content.profile Group profile object\n * @return {module:client.Promise} Resolves: Object with key group_id: id of the created group\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.createGroup = function (content) {\n var path = utils.encodeUri(\"/create_group\");\n return this._http.authedRequest(undefined, \"POST\", path, undefined, content);\n};\n\n/**\n * @param {string[]} userIds List of user IDs\n * @return {module:client.Promise} Resolves: Object as exmaple below\n *\n * {\n * \"users\": {\n * \"@bob:example.com\": {\n * \"+example:example.com\"\n * }\n * }\n * }\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getPublicisedGroups = function (userIds) {\n var path = utils.encodeUri(\"/publicised_groups\");\n return this._http.authedRequest(undefined, \"POST\", path, undefined, { user_ids: userIds });\n};\n\n/**\n * @param {string} groupId\n * @param {bool} isPublic Whether the user's membership of this group is made public\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setGroupPublicity = function (groupId, isPublic) {\n var path = utils.encodeUri(\"/groups/$groupId/self/update_publicity\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {\n publicise: isPublic\n });\n};\n\n/**\n * Retrieve a state event.\n * @param {string} roomId\n * @param {string} eventType\n * @param {string} stateKey\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getStateEvent = function (roomId, eventType, stateKey, callback) {\n var pathParams = {\n $roomId: roomId,\n $eventType: eventType,\n $stateKey: stateKey\n };\n var path = utils.encodeUri(\"/rooms/$roomId/state/$eventType\", pathParams);\n if (stateKey !== undefined) {\n path = utils.encodeUri(path + \"/$stateKey\", pathParams);\n }\n return this._http.authedRequest(callback, \"GET\", path);\n};\n\n/**\n * @param {string} roomId\n * @param {string} eventType\n * @param {Object} content\n * @param {string} stateKey\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.sendStateEvent = function (roomId, eventType, content, stateKey, callback) {\n var pathParams = {\n $roomId: roomId,\n $eventType: eventType,\n $stateKey: stateKey\n };\n var path = utils.encodeUri(\"/rooms/$roomId/state/$eventType\", pathParams);\n if (stateKey !== undefined) {\n path = utils.encodeUri(path + \"/$stateKey\", pathParams);\n }\n return this._http.authedRequest(callback, \"PUT\", path, undefined, content);\n};\n\n/**\n * @param {string} roomId\n * @param {Number} limit\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.roomInitialSync = function (roomId, limit, callback) {\n if (utils.isFunction(limit)) {\n callback = limit;limit = undefined;\n }\n var path = utils.encodeUri(\"/rooms/$roomId/initialSync\", { $roomId: roomId });\n if (!limit) {\n limit = 30;\n }\n return this._http.authedRequest(callback, \"GET\", path, { limit: limit });\n};\n\n/**\n * Set a marker to indicate the point in a room before which the user has read every\n * event. This can be retrieved from room account data (the event type is `m.fully_read`)\n * and displayed as a horizontal line in the timeline that is visually distinct to the\n * position of the user's own read receipt.\n * @param {string} roomId ID of the room that has been read\n * @param {string} rmEventId ID of the event that has been read\n * @param {string} rrEventId ID of the event tracked by the read receipt. This is here\n * for convenience because the RR and the RM are commonly updated at the same time as\n * each other. Optional.\n * @param {object} opts Options for the read markers.\n * @param {object} opts.hidden True to hide the read receipt from other users. This\n * property is currently unstable and may change in the future.\n * @return {module:client.Promise} Resolves: the empty object, {}.\n */\nMatrixBaseApis.prototype.setRoomReadMarkersHttpRequest = function (roomId, rmEventId, rrEventId, opts) {\n var path = utils.encodeUri(\"/rooms/$roomId/read_markers\", {\n $roomId: roomId\n });\n\n var content = {\n \"m.fully_read\": rmEventId,\n \"m.read\": rrEventId,\n \"m.hidden\": Boolean(opts ? opts.hidden : false)\n };\n\n return this._http.authedRequest(undefined, \"POST\", path, undefined, content);\n};\n\n/**\n * @return {module:client.Promise} Resolves: A list of the user's current rooms\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getJoinedRooms = function () {\n var path = utils.encodeUri(\"/joined_rooms\");\n return this._http.authedRequest(undefined, \"GET\", path);\n};\n\n/**\n * Retrieve membership info. for a room.\n * @param {string} roomId ID of the room to get membership for\n * @return {module:client.Promise} Resolves: A list of currently joined users\n * and their profile data.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getJoinedRoomMembers = function (roomId) {\n var path = utils.encodeUri(\"/rooms/$roomId/joined_members\", {\n $roomId: roomId\n });\n return this._http.authedRequest(undefined, \"GET\", path);\n};\n\n// Room Directory operations\n// =========================\n\n/**\n * @param {Object} options Options for this request\n * @param {string} options.server The remote server to query for the room list.\n * Optional. If unspecified, get the local home\n * server's public room list.\n * @param {number} options.limit Maximum number of entries to return\n * @param {string} options.since Token to paginate from\n * @param {object} options.filter Filter parameters\n * @param {string} options.filter.generic_search_term String to search for\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.publicRooms = function (options, callback) {\n if (typeof options == 'function') {\n callback = options;\n options = {};\n }\n if (options === undefined) {\n options = {};\n }\n\n var query_params = {};\n if (options.server) {\n query_params.server = options.server;\n delete options.server;\n }\n\n if ((0, _keys2.default)(options).length === 0 && (0, _keys2.default)(query_params).length === 0) {\n return this._http.authedRequest(callback, \"GET\", \"/publicRooms\");\n } else {\n return this._http.authedRequest(callback, \"POST\", \"/publicRooms\", query_params, options);\n }\n};\n\n/**\n * Create an alias to room ID mapping.\n * @param {string} alias The room alias to create.\n * @param {string} roomId The room ID to link the alias to.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.createAlias = function (alias, roomId, callback) {\n var path = utils.encodeUri(\"/directory/room/$alias\", {\n $alias: alias\n });\n var data = {\n room_id: roomId\n };\n return this._http.authedRequest(callback, \"PUT\", path, undefined, data);\n};\n\n/**\n * Delete an alias to room ID mapping. This alias must be on your local server\n * and you must have sufficient access to do this operation.\n * @param {string} alias The room alias to delete.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.deleteAlias = function (alias, callback) {\n var path = utils.encodeUri(\"/directory/room/$alias\", {\n $alias: alias\n });\n return this._http.authedRequest(callback, \"DELETE\", path, undefined, undefined);\n};\n\n/**\n * Get room info for the given alias.\n * @param {string} alias The room alias to resolve.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: Object with room_id and servers.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getRoomIdForAlias = function (alias, callback) {\n // TODO: deprecate this or resolveRoomAlias\n var path = utils.encodeUri(\"/directory/room/$alias\", {\n $alias: alias\n });\n return this._http.authedRequest(callback, \"GET\", path);\n};\n\n/**\n * @param {string} roomAlias\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.resolveRoomAlias = function (roomAlias, callback) {\n // TODO: deprecate this or getRoomIdForAlias\n var path = utils.encodeUri(\"/directory/room/$alias\", { $alias: roomAlias });\n return this._http.request(callback, \"GET\", path);\n};\n\n/**\n * Get the visibility of a room in the current HS's room directory\n * @param {string} roomId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getRoomDirectoryVisibility = function (roomId, callback) {\n var path = utils.encodeUri(\"/directory/list/room/$roomId\", {\n $roomId: roomId\n });\n return this._http.authedRequest(callback, \"GET\", path);\n};\n\n/**\n * Set the visbility of a room in the current HS's room directory\n * @param {string} roomId\n * @param {string} visibility \"public\" to make the room visible\n * in the public directory, or \"private\" to make\n * it invisible.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setRoomDirectoryVisibility = function (roomId, visibility, callback) {\n var path = utils.encodeUri(\"/directory/list/room/$roomId\", {\n $roomId: roomId\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, { \"visibility\": visibility });\n};\n\n/**\n * Set the visbility of a room bridged to a 3rd party network in\n * the current HS's room directory.\n * @param {string} networkId the network ID of the 3rd party\n * instance under which this room is published under.\n * @param {string} roomId\n * @param {string} visibility \"public\" to make the room visible\n * in the public directory, or \"private\" to make\n * it invisible.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setRoomDirectoryVisibilityAppService = function (networkId, roomId, visibility, callback) {\n var path = utils.encodeUri(\"/directory/list/appservice/$networkId/$roomId\", {\n $networkId: networkId,\n $roomId: roomId\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, { \"visibility\": visibility });\n};\n\n// User Directory Operations\n// =========================\n\n/**\n * Query the user directory with a term matching user IDs, display names and domains.\n * @param {object} opts options\n * @param {string} opts.term the term with which to search.\n * @param {number} opts.limit the maximum number of results to return. The server will\n * apply a limit if unspecified.\n * @return {module:client.Promise} Resolves: an array of results.\n */\nMatrixBaseApis.prototype.searchUserDirectory = function (opts) {\n var body = {\n search_term: opts.term\n };\n\n if (opts.limit !== undefined) {\n body.limit = opts.limit;\n }\n\n return this._http.authedRequest(undefined, \"POST\", \"/user_directory/search\", undefined, body);\n};\n\n// Media operations\n// ================\n\n/**\n * Upload a file to the media repository on the home server.\n *\n * @param {object} file The object to upload. On a browser, something that\n * can be sent to XMLHttpRequest.send (typically a File). Under node.js,\n * a a Buffer, String or ReadStream.\n *\n * @param {object} opts options object\n *\n * @param {string=} opts.name Name to give the file on the server. Defaults\n * to file.name.\n *\n * @param {boolean=} opts.includeFilename if false will not send the filename,\n * e.g for encrypted file uploads where filename leaks are undesirable.\n * Defaults to true.\n *\n * @param {string=} opts.type Content-type for the upload. Defaults to\n * file.type, or applicaton/octet-stream.\n *\n * @param {boolean=} opts.rawResponse Return the raw body, rather than\n * parsing the JSON. Defaults to false (except on node.js, where it\n * defaults to true for backwards compatibility).\n *\n * @param {boolean=} opts.onlyContentUri Just return the content URI,\n * rather than the whole body. Defaults to false (except on browsers,\n * where it defaults to true for backwards compatibility). Ignored if\n * opts.rawResponse is true.\n *\n * @param {Function=} opts.callback Deprecated. Optional. The callback to\n * invoke on success/failure. See the promise return values for more\n * information.\n *\n * @param {Function=} opts.progressHandler Optional. Called when a chunk of\n * data has been uploaded, with an object containing the fields `loaded`\n * (number of bytes transferred) and `total` (total size, if known).\n *\n * @return {module:client.Promise} Resolves to response object, as\n * determined by this.opts.onlyData, opts.rawResponse, and\n * opts.onlyContentUri. Rejects with an error (usually a MatrixError).\n */\nMatrixBaseApis.prototype.uploadContent = function (file, opts) {\n return this._http.uploadContent(file, opts);\n};\n\n/**\n * Cancel a file upload in progress\n * @param {module:client.Promise} promise The promise returned from uploadContent\n * @return {boolean} true if canceled, otherwise false\n */\nMatrixBaseApis.prototype.cancelUpload = function (promise) {\n return this._http.cancelUpload(promise);\n};\n\n/**\n * Get a list of all file uploads in progress\n * @return {array} Array of objects representing current uploads.\n * Currently in progress is element 0. Keys:\n * - promise: The promise associated with the upload\n * - loaded: Number of bytes uploaded\n * - total: Total number of bytes to upload\n */\nMatrixBaseApis.prototype.getCurrentUploads = function () {\n return this._http.getCurrentUploads();\n};\n\n// Profile operations\n// ==================\n\n/**\n * @param {string} userId\n * @param {string} info The kind of info to retrieve (e.g. 'displayname',\n * 'avatar_url').\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getProfileInfo = function (userId, info, callback) {\n if (utils.isFunction(info)) {\n callback = info;info = undefined;\n }\n\n var path = info ? utils.encodeUri(\"/profile/$userId/$info\", { $userId: userId, $info: info }) : utils.encodeUri(\"/profile/$userId\", { $userId: userId });\n return this._http.authedRequest(callback, \"GET\", path);\n};\n\n// Account operations\n// ==================\n\n/**\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getThreePids = function (callback) {\n var path = \"/account/3pid\";\n return this._http.authedRequest(callback, \"GET\", path, undefined, undefined);\n};\n\n/**\n * Add a 3PID to your homeserver account and optionally bind it to an identity\n * server as well. An identity server is required as part of the `creds` object.\n *\n * This API is deprecated, and you should instead use `addThreePidOnly`\n * for homeservers that support it.\n *\n * @param {Object} creds\n * @param {boolean} bind\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: on success\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.addThreePid = function (creds, bind, callback) {\n var path = \"/account/3pid\";\n var data = {\n 'threePidCreds': creds,\n 'bind': bind\n };\n return this._http.authedRequest(callback, \"POST\", path, null, data);\n};\n\n/**\n * Add a 3PID to your homeserver account. This API does not use an identity\n * server, as the homeserver is expected to handle 3PID ownership validation.\n *\n * You can check whether a homeserver supports this API via\n * `doesServerSupportSeparateAddAndBind`.\n *\n * @param {Object} data A object with 3PID validation data from having called\n * `account/3pid//requestToken` on the homeserver.\n * @return {module:client.Promise} Resolves: on success\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.addThreePidOnly = function (data) {\n var path = \"/account/3pid/add\";\n return this._http.authedRequest(undefined, \"POST\", path, null, data, {\n prefix: httpApi.PREFIX_UNSTABLE\n });\n};\n\n/**\n * Bind a 3PID for discovery onto an identity server via the homeserver. The\n * identity server handles 3PID ownership validation and the homeserver records\n * the new binding to track where all 3PIDs for the account are bound.\n *\n * You can check whether a homeserver supports this API via\n * `doesServerSupportSeparateAddAndBind`.\n *\n * @param {Object} data A object with 3PID validation data from having called\n * `validate//requestToken` on the identity server. It should also\n * contain `id_server` and `id_access_token` fields as well.\n * @return {module:client.Promise} Resolves: on success\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.bindThreePid = function (data) {\n var path = \"/account/3pid/bind\";\n return this._http.authedRequest(undefined, \"POST\", path, null, data, {\n prefix: httpApi.PREFIX_UNSTABLE\n });\n};\n\n/**\n * Unbind a 3PID for discovery on an identity server via the homeserver. The\n * homeserver removes its record of the binding to keep an updated record of\n * where all 3PIDs for the account are bound.\n *\n * @param {string} medium The threepid medium (eg. 'email')\n * @param {string} address The threepid address (eg. 'bob@example.com')\n * this must be as returned by getThreePids.\n * @return {module:client.Promise} Resolves: on success\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.unbindThreePid = function (medium, address) {\n var path = \"/account/3pid/unbind\";\n var data = {\n medium: medium,\n address: address,\n id_server: this.getIdentityServerUrl(true)\n };\n return this._http.authedRequest(undefined, \"POST\", path, null, data, {\n prefix: httpApi.PREFIX_UNSTABLE\n });\n};\n\n/**\n * @param {string} medium The threepid medium (eg. 'email')\n * @param {string} address The threepid address (eg. 'bob@example.com')\n * this must be as returned by getThreePids.\n * @return {module:client.Promise} Resolves: The server response on success\n * (generally the empty JSON object)\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.deleteThreePid = function (medium, address) {\n var path = \"/account/3pid/delete\";\n var data = {\n 'medium': medium,\n 'address': address\n };\n return this._http.authedRequest(undefined, \"POST\", path, null, data);\n};\n\n/**\n * Make a request to change your password.\n * @param {Object} authDict\n * @param {string} newPassword The new desired password.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setPassword = function (authDict, newPassword, callback) {\n var path = \"/account/password\";\n var data = {\n 'auth': authDict,\n 'new_password': newPassword\n };\n\n return this._http.authedRequest(callback, \"POST\", path, null, data);\n};\n\n// Device operations\n// =================\n\n/**\n * Gets all devices recorded for the logged-in user\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getDevices = function () {\n return this._http.authedRequest(undefined, 'GET', \"/devices\", undefined, undefined);\n};\n\n/**\n * Update the given device\n *\n * @param {string} device_id device to update\n * @param {Object} body body of request\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setDeviceDetails = function (device_id, body) {\n var path = utils.encodeUri(\"/devices/$device_id\", {\n $device_id: device_id\n });\n\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, body);\n};\n\n/**\n * Delete the given device\n *\n * @param {string} device_id device to delete\n * @param {object} auth Optional. Auth data to supply for User-Interactive auth.\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.deleteDevice = function (device_id, auth) {\n var path = utils.encodeUri(\"/devices/$device_id\", {\n $device_id: device_id\n });\n\n var body = {};\n\n if (auth) {\n body.auth = auth;\n }\n\n return this._http.authedRequest(undefined, \"DELETE\", path, undefined, body);\n};\n\n/**\n * Delete multiple device\n *\n * @param {string[]} devices IDs of the devices to delete\n * @param {object} auth Optional. Auth data to supply for User-Interactive auth.\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.deleteMultipleDevices = function (devices, auth) {\n var body = { devices: devices };\n\n if (auth) {\n body.auth = auth;\n }\n\n var path = \"/delete_devices\";\n return this._http.authedRequest(undefined, \"POST\", path, undefined, body);\n};\n\n// Push operations\n// ===============\n\n/**\n * Gets all pushers registered for the logged-in user\n *\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: Array of objects representing pushers\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getPushers = function (callback) {\n var path = \"/pushers\";\n return this._http.authedRequest(callback, \"GET\", path, undefined, undefined);\n};\n\n/**\n * Adds a new pusher or updates an existing pusher\n *\n * @param {Object} pusher Object representing a pusher\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: Empty json object on success\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setPusher = function (pusher, callback) {\n var path = \"/pushers/set\";\n return this._http.authedRequest(callback, \"POST\", path, null, pusher);\n};\n\n/**\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getPushRules = function (callback) {\n return this._http.authedRequest(callback, \"GET\", \"/pushrules/\").then(function (rules) {\n return PushProcessor.rewriteDefaultRules(rules);\n });\n};\n\n/**\n * @param {string} scope\n * @param {string} kind\n * @param {string} ruleId\n * @param {Object} body\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.addPushRule = function (scope, kind, ruleId, body, callback) {\n // NB. Scope not uri encoded because devices need the '/'\n var path = utils.encodeUri(\"/pushrules/\" + scope + \"/$kind/$ruleId\", {\n $kind: kind,\n $ruleId: ruleId\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, body);\n};\n\n/**\n * @param {string} scope\n * @param {string} kind\n * @param {string} ruleId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.deletePushRule = function (scope, kind, ruleId, callback) {\n // NB. Scope not uri encoded because devices need the '/'\n var path = utils.encodeUri(\"/pushrules/\" + scope + \"/$kind/$ruleId\", {\n $kind: kind,\n $ruleId: ruleId\n });\n return this._http.authedRequest(callback, \"DELETE\", path);\n};\n\n/**\n * Enable or disable a push notification rule.\n * @param {string} scope\n * @param {string} kind\n * @param {string} ruleId\n * @param {boolean} enabled\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setPushRuleEnabled = function (scope, kind, ruleId, enabled, callback) {\n var path = utils.encodeUri(\"/pushrules/\" + scope + \"/$kind/$ruleId/enabled\", {\n $kind: kind,\n $ruleId: ruleId\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, { \"enabled\": enabled });\n};\n\n/**\n * Set the actions for a push notification rule.\n * @param {string} scope\n * @param {string} kind\n * @param {string} ruleId\n * @param {array} actions\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setPushRuleActions = function (scope, kind, ruleId, actions, callback) {\n var path = utils.encodeUri(\"/pushrules/\" + scope + \"/$kind/$ruleId/actions\", {\n $kind: kind,\n $ruleId: ruleId\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, { \"actions\": actions });\n};\n\n// Search\n// ======\n\n/**\n * Perform a server-side search.\n * @param {Object} opts\n * @param {string} opts.next_batch the batch token to pass in the query string\n * @param {Object} opts.body the JSON object to pass to the request body.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.search = function (opts, callback) {\n var queryparams = {};\n if (opts.next_batch) {\n queryparams.next_batch = opts.next_batch;\n }\n return this._http.authedRequest(callback, \"POST\", \"/search\", queryparams, opts.body);\n};\n\n// Crypto\n// ======\n\n/**\n * Upload keys\n *\n * @param {Object} content body of upload request\n *\n * @param {Object=} opts\n *\n * @param {string=} opts.device_id explicit device_id to use for upload\n * (default is to use the same as that used during auth).\n *\n * @param {module:client.callback=} callback\n *\n * @return {module:client.Promise} Resolves: result object. Rejects: with\n * an error response ({@link module:http-api.MatrixError}).\n */\nMatrixBaseApis.prototype.uploadKeysRequest = function (content, opts, callback) {\n opts = opts || {};\n var deviceId = opts.device_id;\n var path = void 0;\n if (deviceId) {\n path = utils.encodeUri(\"/keys/upload/$deviceId\", {\n $deviceId: deviceId\n });\n } else {\n path = \"/keys/upload\";\n }\n return this._http.authedRequest(callback, \"POST\", path, undefined, content);\n};\n\n/**\n * Download device keys\n *\n * @param {string[]} userIds list of users to get keys for\n *\n * @param {Object=} opts\n *\n * @param {string=} opts.token sync token to pass in the query request, to help\n * the HS give the most recent results\n *\n * @return {module:client.Promise} Resolves: result object. Rejects: with\n * an error response ({@link module:http-api.MatrixError}).\n */\nMatrixBaseApis.prototype.downloadKeysForUsers = function (userIds, opts) {\n if (utils.isFunction(opts)) {\n // opts used to be 'callback'.\n throw new Error('downloadKeysForUsers no longer accepts a callback parameter');\n }\n opts = opts || {};\n\n var content = {\n device_keys: {}\n };\n if ('token' in opts) {\n content.token = opts.token;\n }\n userIds.forEach(function (u) {\n content.device_keys[u] = {};\n });\n\n return this._http.authedRequest(undefined, \"POST\", \"/keys/query\", undefined, content);\n};\n\n/**\n * Claim one-time keys\n *\n * @param {string[]} devices a list of [userId, deviceId] pairs\n *\n * @param {string} [key_algorithm = signed_curve25519] desired key type\n *\n * @return {module:client.Promise} Resolves: result object. Rejects: with\n * an error response ({@link module:http-api.MatrixError}).\n */\nMatrixBaseApis.prototype.claimOneTimeKeys = function (devices, key_algorithm) {\n var queries = {};\n\n if (key_algorithm === undefined) {\n key_algorithm = \"signed_curve25519\";\n }\n\n for (var i = 0; i < devices.length; ++i) {\n var userId = devices[i][0];\n var deviceId = devices[i][1];\n var query = queries[userId] || {};\n queries[userId] = query;\n query[deviceId] = key_algorithm;\n }\n var content = { one_time_keys: queries };\n var path = \"/keys/claim\";\n return this._http.authedRequest(undefined, \"POST\", path, undefined, content);\n};\n\n/**\n * Ask the server for a list of users who have changed their device lists\n * between a pair of sync tokens\n *\n * @param {string} oldToken\n * @param {string} newToken\n *\n * @return {module:client.Promise} Resolves: result object. Rejects: with\n * an error response ({@link module:http-api.MatrixError}).\n */\nMatrixBaseApis.prototype.getKeyChanges = function (oldToken, newToken) {\n var qps = {\n from: oldToken,\n to: newToken\n };\n\n var path = \"/keys/changes\";\n return this._http.authedRequest(undefined, \"GET\", path, qps, undefined);\n};\n\n// Identity Server Operations\n// ==========================\n\n/**\n * Register with an Identity Server using the OpenID token from the user's\n * Homeserver, which can be retrieved via\n * {@link module:client~MatrixClient#getOpenIdToken}.\n *\n * Note that the `/account/register` endpoint (as well as IS authentication in\n * general) was added as part of the v2 API version.\n *\n * @param {object} hsOpenIdToken\n * @return {module:client.Promise} Resolves: with object containing an Identity\n * Server access token.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.registerWithIdentityServer = function (hsOpenIdToken) {\n if (!this.idBaseUrl) {\n throw new Error(\"No Identity Server base URL set\");\n }\n\n var uri = this.idBaseUrl + httpApi.PREFIX_IDENTITY_V2 + \"/account/register\";\n return this._http.requestOtherUrl(undefined, \"POST\", uri, null, hsOpenIdToken);\n};\n\n/**\n * Requests an email verification token directly from an identity server.\n *\n * This API is used as part of binding an email for discovery on an identity\n * server. The validation data that results should be passed to the\n * `bindThreePid` method to complete the binding process.\n *\n * @param {string} email The email address to request a token for\n * @param {string} clientSecret A secret binary string generated by the client.\n * It is recommended this be around 16 ASCII characters.\n * @param {number} sendAttempt If an identity server sees a duplicate request\n * with the same sendAttempt, it will not send another email.\n * To request another email to be sent, use a larger value for\n * the sendAttempt param as was used in the previous request.\n * @param {string} nextLink Optional If specified, the client will be redirected\n * to this link after validation.\n * @param {module:client.callback} callback Optional.\n * @param {string} identityAccessToken The `access_token` field of the identity\n * server `/account/register` response (see {@link registerWithIdentityServer}).\n *\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n * @throws Error if no identity server is set\n */\nMatrixBaseApis.prototype.requestEmailToken = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(email, clientSecret, sendAttempt, nextLink, callback, identityAccessToken) {\n var params, response;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n params = {\n client_secret: clientSecret,\n email: email,\n send_attempt: sendAttempt,\n next_link: nextLink\n };\n _context2.prev = 1;\n _context2.next = 4;\n return (0, _bluebird.resolve)(this._http.idServerRequest(undefined, \"POST\", \"/validate/email/requestToken\", params, httpApi.PREFIX_IDENTITY_V2, identityAccessToken));\n\n case 4:\n response = _context2.sent;\n\n // TODO: Fold callback into above call once v1 path below is removed\n if (callback) callback(null, response);\n return _context2.abrupt('return', response);\n\n case 9:\n _context2.prev = 9;\n _context2.t0 = _context2['catch'](1);\n\n if (!(_context2.t0.cors === \"rejected\" || _context2.t0.httpStatus === 404)) {\n _context2.next = 16;\n break;\n }\n\n // Fall back to deprecated v1 API for now\n // TODO: Remove this path once v2 is only supported version\n // See https://github.com/vector-im/riot-web/issues/10443\n _logger2.default.warn(\"IS doesn't support v2, falling back to deprecated v1\");\n _context2.next = 15;\n return (0, _bluebird.resolve)(this._http.idServerRequest(callback, \"POST\", \"/validate/email/requestToken\", params, httpApi.PREFIX_IDENTITY_V1));\n\n case 15:\n return _context2.abrupt('return', _context2.sent);\n\n case 16:\n if (callback) callback(_context2.t0);\n throw _context2.t0;\n\n case 18:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this, [[1, 9]]);\n }));\n\n return function (_x8, _x9, _x10, _x11, _x12, _x13) {\n return _ref2.apply(this, arguments);\n };\n}();\n\n/**\n * Requests a MSISDN verification token directly from an identity server.\n *\n * This API is used as part of binding a MSISDN for discovery on an identity\n * server. The validation data that results should be passed to the\n * `bindThreePid` method to complete the binding process.\n *\n * @param {string} phoneCountry The ISO 3166-1 alpha-2 code for the country in\n * which phoneNumber should be parsed relative to.\n * @param {string} phoneNumber The phone number, in national or international\n * format\n * @param {string} clientSecret A secret binary string generated by the client.\n * It is recommended this be around 16 ASCII characters.\n * @param {number} sendAttempt If an identity server sees a duplicate request\n * with the same sendAttempt, it will not send another SMS.\n * To request another SMS to be sent, use a larger value for\n * the sendAttempt param as was used in the previous request.\n * @param {string} nextLink Optional If specified, the client will be redirected\n * to this link after validation.\n * @param {module:client.callback} callback Optional.\n * @param {string} identityAccessToken The `access_token` field of the Identity\n * Server `/account/register` response (see {@link registerWithIdentityServer}).\n *\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n * @throws Error if no identity server is set\n */\nMatrixBaseApis.prototype.requestMsisdnToken = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(phoneCountry, phoneNumber, clientSecret, sendAttempt, nextLink, callback, identityAccessToken) {\n var params, response;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n params = {\n client_secret: clientSecret,\n country: phoneCountry,\n phone_number: phoneNumber,\n send_attempt: sendAttempt,\n next_link: nextLink\n };\n _context3.prev = 1;\n _context3.next = 4;\n return (0, _bluebird.resolve)(this._http.idServerRequest(undefined, \"POST\", \"/validate/msisdn/requestToken\", params, httpApi.PREFIX_IDENTITY_V2, identityAccessToken));\n\n case 4:\n response = _context3.sent;\n\n // TODO: Fold callback into above call once v1 path below is removed\n if (callback) callback(null, response);\n return _context3.abrupt('return', response);\n\n case 9:\n _context3.prev = 9;\n _context3.t0 = _context3['catch'](1);\n\n if (!(_context3.t0.cors === \"rejected\" || _context3.t0.httpStatus === 404)) {\n _context3.next = 16;\n break;\n }\n\n // Fall back to deprecated v1 API for now\n // TODO: Remove this path once v2 is only supported version\n // See https://github.com/vector-im/riot-web/issues/10443\n _logger2.default.warn(\"IS doesn't support v2, falling back to deprecated v1\");\n _context3.next = 15;\n return (0, _bluebird.resolve)(this._http.idServerRequest(callback, \"POST\", \"/validate/msisdn/requestToken\", params, httpApi.PREFIX_IDENTITY_V1));\n\n case 15:\n return _context3.abrupt('return', _context3.sent);\n\n case 16:\n if (callback) callback(_context3.t0);\n throw _context3.t0;\n\n case 18:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this, [[1, 9]]);\n }));\n\n return function (_x14, _x15, _x16, _x17, _x18, _x19, _x20) {\n return _ref3.apply(this, arguments);\n };\n}();\n\n/**\n * Submits a MSISDN token to the identity server\n *\n * This is used when submitting the code sent by SMS to a phone number.\n * The ID server has an equivalent API for email but the js-sdk does\n * not expose this, since email is normally validated by the user clicking\n * a link rather than entering a code.\n *\n * @param {string} sid The sid given in the response to requestToken\n * @param {string} clientSecret A secret binary string generated by the client.\n * This must be the same value submitted in the requestToken call.\n * @param {string} msisdnToken The MSISDN token, as enetered by the user.\n * @param {string} identityAccessToken The `access_token` field of the Identity\n * Server `/account/register` response (see {@link registerWithIdentityServer}).\n *\n * @return {module:client.Promise} Resolves: Object, currently with no parameters.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n * @throws Error if No ID server is set\n */\nMatrixBaseApis.prototype.submitMsisdnToken = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(sid, clientSecret, msisdnToken, identityAccessToken) {\n var params;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n params = {\n sid: sid,\n client_secret: clientSecret,\n token: msisdnToken\n };\n _context4.prev = 1;\n _context4.next = 4;\n return (0, _bluebird.resolve)(this._http.idServerRequest(undefined, \"POST\", \"/validate/msisdn/submitToken\", params, httpApi.PREFIX_IDENTITY_V2, identityAccessToken));\n\n case 4:\n return _context4.abrupt('return', _context4.sent);\n\n case 7:\n _context4.prev = 7;\n _context4.t0 = _context4['catch'](1);\n\n if (!(_context4.t0.cors === \"rejected\" || _context4.t0.httpStatus === 404)) {\n _context4.next = 14;\n break;\n }\n\n // Fall back to deprecated v1 API for now\n // TODO: Remove this path once v2 is only supported version\n // See https://github.com/vector-im/riot-web/issues/10443\n _logger2.default.warn(\"IS doesn't support v2, falling back to deprecated v1\");\n _context4.next = 13;\n return (0, _bluebird.resolve)(this._http.idServerRequest(undefined, \"POST\", \"/validate/msisdn/submitToken\", params, httpApi.PREFIX_IDENTITY_V1));\n\n case 13:\n return _context4.abrupt('return', _context4.sent);\n\n case 14:\n throw _context4.t0;\n\n case 15:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this, [[1, 7]]);\n }));\n\n return function (_x21, _x22, _x23, _x24) {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/**\n * Submits a MSISDN token to an arbitrary URL.\n *\n * This is used when submitting the code sent by SMS to a phone number in the\n * newer 3PID flow where the homeserver validates 3PID ownership (as part of\n * `requestAdd3pidMsisdnToken`). The homeserver response may include a\n * `submit_url` to specify where the token should be sent, and this helper can\n * be used to pass the token to this URL.\n *\n * @param {string} url The URL to submit the token to\n * @param {string} sid The sid given in the response to requestToken\n * @param {string} clientSecret A secret binary string generated by the client.\n * This must be the same value submitted in the requestToken call.\n * @param {string} msisdnToken The MSISDN token, as enetered by the user.\n *\n * @return {module:client.Promise} Resolves: Object, currently with no parameters.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.submitMsisdnTokenOtherUrl = function (url, sid, clientSecret, msisdnToken) {\n var params = {\n sid: sid,\n client_secret: clientSecret,\n token: msisdnToken\n };\n\n return this._http.requestOtherUrl(undefined, \"POST\", url, undefined, params);\n};\n\n/**\n * Gets the V2 hashing information from the identity server. Primarily useful for\n * lookups.\n * @param {string} identityAccessToken The access token for the identity server.\n * @returns {Promise} The hashing information for the identity server.\n */\nMatrixBaseApis.prototype.getIdentityHashDetails = function (identityAccessToken) {\n return this._http.idServerRequest(undefined, \"GET\", \"/hash_details\", null, httpApi.PREFIX_IDENTITY_V2, identityAccessToken);\n};\n\n/**\n * Performs a hashed lookup of addresses against the identity server. This is\n * only supported on identity servers which have at least the version 2 API.\n * @param {Array>} addressPairs An array of 2 element arrays.\n * The first element of each pair is the address, the second is the 3PID medium.\n * Eg: [\"email@example.org\", \"email\"]\n * @param {string} identityAccessToken The access token for the identity server.\n * @returns {Promise>} A collection of address mappings to\n * found MXIDs. Results where no user could be found will not be listed.\n */\nMatrixBaseApis.prototype.identityHashedLookup = function () {\n var _ref5 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(addressPairs, // [[\"email@example.org\", \"email\"], [\"10005550000\", \"msisdn\"]]\n identityAccessToken) {\n var params, hashes, localMapping, olmutil, response, foundAddresses, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, hashed, mxid, plainAddress;\n\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n params = {\n // addresses: [\"email@example.org\", \"10005550000\"],\n // algorithm: \"sha256\",\n // pepper: \"abc123\"\n };\n\n // Get hash information first before trying to do a lookup\n\n _context5.next = 3;\n return (0, _bluebird.resolve)(this.getIdentityHashDetails(identityAccessToken));\n\n case 3:\n hashes = _context5.sent;\n\n if (!(!hashes || !hashes['lookup_pepper'] || !hashes['algorithms'])) {\n _context5.next = 6;\n break;\n }\n\n throw new Error(\"Unsupported identity server: bad response\");\n\n case 6:\n\n params['pepper'] = hashes['lookup_pepper'];\n\n localMapping = {\n // hashed identifier => plain text address\n // For use in this function's return format\n };\n\n // When picking an algorithm, we pick the hashed over no hashes\n\n if (!hashes['algorithms'].includes('sha256')) {\n _context5.next = 14;\n break;\n }\n\n // Abuse the olm hashing\n olmutil = new global.Olm.Utility();\n\n params[\"addresses\"] = addressPairs.map(function (p) {\n var addr = p[0].toLowerCase(); // lowercase to get consistent hashes\n var med = p[1].toLowerCase();\n var hashed = olmutil.sha256(addr + ' ' + med + ' ' + params['pepper']).replace(/\\+/g, '-').replace(/\\//g, '_'); // URL-safe base64\n // Map the hash to a known (case-sensitive) address. We use the case\n // sensitive version because the caller might be expecting that.\n localMapping[hashed] = p[0];\n return hashed;\n });\n params[\"algorithm\"] = \"sha256\";\n _context5.next = 20;\n break;\n\n case 14:\n if (!hashes['algorithms'].includes('none')) {\n _context5.next = 19;\n break;\n }\n\n params[\"addresses\"] = addressPairs.map(function (p) {\n var addr = p[0].toLowerCase(); // lowercase to get consistent hashes\n var med = p[1].toLowerCase();\n var unhashed = addr + ' ' + med;\n // Map the unhashed values to a known (case-sensitive) address. We use\n // the case sensitive version because the caller might be expecting that.\n localMapping[unhashed] = p[0];\n return unhashed;\n });\n params[\"algorithm\"] = \"none\";\n _context5.next = 20;\n break;\n\n case 19:\n throw new Error(\"Unsupported identity server: unknown hash algorithm\");\n\n case 20:\n _context5.next = 22;\n return (0, _bluebird.resolve)(this._http.idServerRequest(undefined, \"POST\", \"/lookup\", params, httpApi.PREFIX_IDENTITY_V2, identityAccessToken));\n\n case 22:\n response = _context5.sent;\n\n if (!(!response || !response['mappings'])) {\n _context5.next = 25;\n break;\n }\n\n return _context5.abrupt('return', []);\n\n case 25:\n // no results\n\n foundAddresses = [/* {address: \"plain@example.org\", mxid} */];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context5.prev = 29;\n _iterator = (0, _getIterator3.default)((0, _keys2.default)(response['mappings']));\n\n case 31:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context5.next = 41;\n break;\n }\n\n hashed = _step.value;\n mxid = response['mappings'][hashed];\n plainAddress = localMapping[hashed];\n\n if (plainAddress) {\n _context5.next = 37;\n break;\n }\n\n throw new Error(\"Identity server returned more results than expected\");\n\n case 37:\n\n foundAddresses.push({ address: plainAddress, mxid: mxid });\n\n case 38:\n _iteratorNormalCompletion = true;\n _context5.next = 31;\n break;\n\n case 41:\n _context5.next = 47;\n break;\n\n case 43:\n _context5.prev = 43;\n _context5.t0 = _context5['catch'](29);\n _didIteratorError = true;\n _iteratorError = _context5.t0;\n\n case 47:\n _context5.prev = 47;\n _context5.prev = 48;\n\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n\n case 50:\n _context5.prev = 50;\n\n if (!_didIteratorError) {\n _context5.next = 53;\n break;\n }\n\n throw _iteratorError;\n\n case 53:\n return _context5.finish(50);\n\n case 54:\n return _context5.finish(47);\n\n case 55:\n return _context5.abrupt('return', foundAddresses);\n\n case 56:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this, [[29, 43, 47, 55], [48,, 50, 54]]);\n }));\n\n return function (_x25, _x26) {\n return _ref5.apply(this, arguments);\n };\n}();\n\n/**\n * Looks up the public Matrix ID mapping for a given 3rd party\n * identifier from the Identity Server\n *\n * @param {string} medium The medium of the threepid, eg. 'email'\n * @param {string} address The textual address of the threepid\n * @param {module:client.callback} callback Optional.\n * @param {string} identityAccessToken The `access_token` field of the Identity\n * Server `/account/register` response (see {@link registerWithIdentityServer}).\n *\n * @return {module:client.Promise} Resolves: A threepid mapping\n * object or the empty object if no mapping\n * exists\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.lookupThreePid = function () {\n var _ref6 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(medium, address, callback, identityAccessToken) {\n var response, result, mapping, params;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.prev = 0;\n _context6.next = 3;\n return (0, _bluebird.resolve)(this.identityHashedLookup([[address, medium]], identityAccessToken));\n\n case 3:\n response = _context6.sent;\n result = response.find(function (p) {\n return p.address === address;\n });\n\n if (result) {\n _context6.next = 8;\n break;\n }\n\n // TODO: Fold callback into above call once v1 path below is removed\n if (callback) callback(null, {});\n return _context6.abrupt('return', {});\n\n case 8:\n mapping = {\n address: address,\n medium: medium,\n mxid: result.mxid\n\n // We can't reasonably fill these parameters:\n // not_before\n // not_after\n // ts\n // signatures\n };\n\n // TODO: Fold callback into above call once v1 path below is removed\n\n if (callback) callback(null, mapping);\n return _context6.abrupt('return', mapping);\n\n case 13:\n _context6.prev = 13;\n _context6.t0 = _context6['catch'](0);\n\n if (!(_context6.t0.cors === \"rejected\" || _context6.t0.httpStatus === 404)) {\n _context6.next = 21;\n break;\n }\n\n // Fall back to deprecated v1 API for now\n // TODO: Remove this path once v2 is only supported version\n // See https://github.com/vector-im/riot-web/issues/10443\n params = {\n medium: medium,\n address: address\n };\n\n _logger2.default.warn(\"IS doesn't support v2, falling back to deprecated v1\");\n _context6.next = 20;\n return (0, _bluebird.resolve)(this._http.idServerRequest(callback, \"GET\", \"/lookup\", params, httpApi.PREFIX_IDENTITY_V1));\n\n case 20:\n return _context6.abrupt('return', _context6.sent);\n\n case 21:\n if (callback) callback(_context6.t0, undefined);\n throw _context6.t0;\n\n case 23:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, this, [[0, 13]]);\n }));\n\n return function (_x27, _x28, _x29, _x30) {\n return _ref6.apply(this, arguments);\n };\n}();\n\n/**\n * Looks up the public Matrix ID mappings for multiple 3PIDs.\n *\n * @param {Array.>} query Array of arrays containing\n * [medium, address]\n * @param {string} identityAccessToken The `access_token` field of the Identity\n * Server `/account/register` response (see {@link registerWithIdentityServer}).\n *\n * @return {module:client.Promise} Resolves: Lookup results from IS.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.bulkLookupThreePids = function () {\n var _ref7 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(query, identityAccessToken) {\n var response, v1results, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _loop, _iterator2, _step2, params;\n\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.prev = 0;\n _context7.next = 3;\n return (0, _bluebird.resolve)(this.identityHashedLookup(\n // We have to reverse the query order to get [address, medium] pairs\n query.map(function (p) {\n return [p[1], p[0]];\n }), identityAccessToken));\n\n case 3:\n response = _context7.sent;\n v1results = [];\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context7.prev = 8;\n\n _loop = function _loop() {\n var mapping = _step2.value;\n\n var originalQuery = query.find(function (p) {\n return p[1] === mapping.address;\n });\n if (!originalQuery) {\n throw new Error(\"Identity sever returned unexpected results\");\n }\n\n v1results.push([originalQuery[0], // medium\n mapping.address, mapping.mxid]);\n };\n\n for (_iterator2 = (0, _getIterator3.default)(response); !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n _loop();\n }\n\n _context7.next = 17;\n break;\n\n case 13:\n _context7.prev = 13;\n _context7.t0 = _context7['catch'](8);\n _didIteratorError2 = true;\n _iteratorError2 = _context7.t0;\n\n case 17:\n _context7.prev = 17;\n _context7.prev = 18;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n\n case 20:\n _context7.prev = 20;\n\n if (!_didIteratorError2) {\n _context7.next = 23;\n break;\n }\n\n throw _iteratorError2;\n\n case 23:\n return _context7.finish(20);\n\n case 24:\n return _context7.finish(17);\n\n case 25:\n return _context7.abrupt('return', { threepids: v1results });\n\n case 28:\n _context7.prev = 28;\n _context7.t1 = _context7['catch'](0);\n\n if (!(_context7.t1.cors === \"rejected\" || _context7.t1.httpStatus === 404)) {\n _context7.next = 36;\n break;\n }\n\n // Fall back to deprecated v1 API for now\n // TODO: Remove this path once v2 is only supported version\n // See https://github.com/vector-im/riot-web/issues/10443\n params = {\n threepids: query\n };\n\n _logger2.default.warn(\"IS doesn't support v2, falling back to deprecated v1\");\n _context7.next = 35;\n return (0, _bluebird.resolve)(this._http.idServerRequest(undefined, \"POST\", \"/bulk_lookup\", params, httpApi.PREFIX_IDENTITY_V1, identityAccessToken));\n\n case 35:\n return _context7.abrupt('return', _context7.sent);\n\n case 36:\n throw _context7.t1;\n\n case 37:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee7, this, [[0, 28], [8, 13, 17, 25], [18,, 20, 24]]);\n }));\n\n return function (_x31, _x32) {\n return _ref7.apply(this, arguments);\n };\n}();\n\n/**\n * Get account info from the Identity Server. This is useful as a neutral check\n * to verify that other APIs are likely to approve access by testing that the\n * token is valid, terms have been agreed, etc.\n *\n * @param {string} identityAccessToken The `access_token` field of the Identity\n * Server `/account/register` response (see {@link registerWithIdentityServer}).\n *\n * @return {module:client.Promise} Resolves: an object with account info.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getIdentityAccount = function (identityAccessToken) {\n return this._http.idServerRequest(undefined, \"GET\", \"/account\", undefined, httpApi.PREFIX_IDENTITY_V2, identityAccessToken);\n};\n\n// Direct-to-device messaging\n// ==========================\n\n/**\n * Send an event to a specific list of devices\n *\n * @param {string} eventType type of event to send\n * @param {Object.>} contentMap\n * content to send. Map from user_id to device_id to content object.\n * @param {string=} txnId transaction id. One will be made up if not\n * supplied.\n * @return {module:client.Promise} Resolves to the result object\n */\nMatrixBaseApis.prototype.sendToDevice = function (eventType, contentMap, txnId) {\n var path = utils.encodeUri(\"/sendToDevice/$eventType/$txnId\", {\n $eventType: eventType,\n $txnId: txnId ? txnId : this.makeTxnId()\n });\n\n var body = {\n messages: contentMap\n };\n\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, body);\n};\n\n// Third party Lookup API\n// ======================\n\n/**\n * Get the third party protocols that can be reached using\n * this HS\n * @return {module:client.Promise} Resolves to the result object\n */\nMatrixBaseApis.prototype.getThirdpartyProtocols = function () {\n return this._http.authedRequest(undefined, \"GET\", \"/thirdparty/protocols\", undefined, undefined).then(function (response) {\n // sanity check\n if (!response || (typeof response === 'undefined' ? 'undefined' : (0, _typeof3.default)(response)) !== 'object') {\n throw new Error('/thirdparty/protocols did not return an object: ' + response);\n }\n return response;\n });\n};\n\n/**\n * Get information on how a specific place on a third party protocol\n * may be reached.\n * @param {string} protocol The protocol given in getThirdpartyProtocols()\n * @param {object} params Protocol-specific parameters, as given in the\n * response to getThirdpartyProtocols()\n * @return {module:client.Promise} Resolves to the result object\n */\nMatrixBaseApis.prototype.getThirdpartyLocation = function (protocol, params) {\n var path = utils.encodeUri(\"/thirdparty/location/$protocol\", {\n $protocol: protocol\n });\n\n return this._http.authedRequest(undefined, \"GET\", path, params, undefined);\n};\n\n/**\n * Get information on how a specific user on a third party protocol\n * may be reached.\n * @param {string} protocol The protocol given in getThirdpartyProtocols()\n * @param {object} params Protocol-specific parameters, as given in the\n * response to getThirdpartyProtocols()\n * @return {module:client.Promise} Resolves to the result object\n */\nMatrixBaseApis.prototype.getThirdpartyUser = function (protocol, params) {\n var path = utils.encodeUri(\"/thirdparty/user/$protocol\", {\n $protocol: protocol\n });\n\n return this._http.authedRequest(undefined, \"GET\", path, params, undefined);\n};\n\nMatrixBaseApis.prototype.getTerms = function (serviceType, baseUrl) {\n var url = termsUrlForService(serviceType, baseUrl);\n return this._http.requestOtherUrl(undefined, 'GET', url);\n};\n\nMatrixBaseApis.prototype.agreeToTerms = function (serviceType, baseUrl, accessToken, termsUrls) {\n var url = termsUrlForService(serviceType, baseUrl);\n var headers = {\n Authorization: \"Bearer \" + accessToken\n };\n return this._http.requestOtherUrl(undefined, 'POST', url, null, { user_accepts: termsUrls }, { headers: headers });\n};\n\n/**\n * Reports an event as inappropriate to the server, which may then notify the appropriate people.\n * @param {string} roomId The room in which the event being reported is located.\n * @param {string} eventId The event to report.\n * @param {number} score The score to rate this content as where -100 is most offensive and 0 is inoffensive.\n * @param {string} reason The reason the content is being reported. May be blank.\n * @returns {module:client.Promise} Resolves to an empty object if successful\n */\nMatrixBaseApis.prototype.reportEvent = function (roomId, eventId, score, reason) {\n var path = utils.encodeUri(\"/rooms/$roomId/report/$eventId\", {\n $roomId: roomId,\n $eventId: eventId\n });\n\n return this._http.authedRequest(undefined, \"POST\", path, null, { score: score, reason: reason });\n};\n\n/**\n * MatrixBaseApis object\n */\nmodule.exports = MatrixBaseApis;\n//# sourceMappingURL=base-apis.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * This is an internal module which manages queuing, scheduling and retrying\n * of requests.\n * @module scheduler\n */\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _logger = require(\"../src/logger\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar utils = require(\"./utils\");\n\n\nvar DEBUG = false; // set true to enable console logging.\n\n/**\n * Construct a scheduler for Matrix. Requires\n * {@link module:scheduler~MatrixScheduler#setProcessFunction} to be provided\n * with a way of processing events.\n * @constructor\n * @param {module:scheduler~retryAlgorithm} retryAlgorithm Optional. The retry\n * algorithm to apply when determining when to try to send an event again.\n * Defaults to {@link module:scheduler~MatrixScheduler.RETRY_BACKOFF_RATELIMIT}.\n * @param {module:scheduler~queueAlgorithm} queueAlgorithm Optional. The queuing\n * algorithm to apply when determining which events should be sent before the\n * given event. Defaults to {@link module:scheduler~MatrixScheduler.QUEUE_MESSAGES}.\n */\nfunction MatrixScheduler(retryAlgorithm, queueAlgorithm) {\n this.retryAlgorithm = retryAlgorithm || MatrixScheduler.RETRY_BACKOFF_RATELIMIT;\n this.queueAlgorithm = queueAlgorithm || MatrixScheduler.QUEUE_MESSAGES;\n this._queues = {\n // queueName: [{\n // event: MatrixEvent, // event to send\n // defer: Deferred, // defer to resolve/reject at the END of the retries\n // attempts: Number // number of times we've called processFn\n // }, ...]\n };\n this._activeQueues = [];\n this._procFn = null;\n}\n\n/**\n * Retrieve a queue based on an event. The event provided does not need to be in\n * the queue.\n * @param {MatrixEvent} event An event to get the queue for.\n * @return {?Array} A shallow copy of events in the queue or null.\n * Modifying this array will not modify the list itself. Modifying events in\n * this array will modify the underlying event in the queue.\n * @see MatrixScheduler.removeEventFromQueue To remove an event from the queue.\n */\nMatrixScheduler.prototype.getQueueForEvent = function (event) {\n var name = this.queueAlgorithm(event);\n if (!name || !this._queues[name]) {\n return null;\n }\n return utils.map(this._queues[name], function (obj) {\n return obj.event;\n });\n};\n\n/**\n * Remove this event from the queue. The event is equal to another event if they\n * have the same ID returned from event.getId().\n * @param {MatrixEvent} event The event to remove.\n * @return {boolean} True if this event was removed.\n */\nMatrixScheduler.prototype.removeEventFromQueue = function (event) {\n var name = this.queueAlgorithm(event);\n if (!name || !this._queues[name]) {\n return false;\n }\n var removed = false;\n utils.removeElement(this._queues[name], function (element) {\n if (element.event.getId() === event.getId()) {\n // XXX we should probably reject the promise?\n // https://github.com/matrix-org/matrix-js-sdk/issues/496\n removed = true;\n return true;\n }\n });\n return removed;\n};\n\n/**\n * Set the process function. Required for events in the queue to be processed.\n * If set after events have been added to the queue, this will immediately start\n * processing them.\n * @param {module:scheduler~processFn} fn The function that can process events\n * in the queue.\n */\nMatrixScheduler.prototype.setProcessFunction = function (fn) {\n this._procFn = fn;\n _startProcessingQueues(this);\n};\n\n/**\n * Queue an event if it is required and start processing queues.\n * @param {MatrixEvent} event The event that may be queued.\n * @return {?Promise} A promise if the event was queued, which will be\n * resolved or rejected in due time, else null.\n */\nMatrixScheduler.prototype.queueEvent = function (event) {\n var queueName = this.queueAlgorithm(event);\n if (!queueName) {\n return null;\n }\n // add the event to the queue and make a deferred for it.\n if (!this._queues[queueName]) {\n this._queues[queueName] = [];\n }\n var defer = _bluebird2.default.defer();\n this._queues[queueName].push({\n event: event,\n defer: defer,\n attempts: 0\n });\n debuglog(\"Queue algorithm dumped event %s into queue '%s'\", event.getId(), queueName);\n _startProcessingQueues(this);\n return defer.promise;\n};\n\n/**\n * Retries events up to 4 times using exponential backoff. This produces wait\n * times of 2, 4, 8, and 16 seconds (30s total) after which we give up. If the\n * failure was due to a rate limited request, the time specified in the error is\n * waited before being retried.\n * @param {MatrixEvent} event\n * @param {Number} attempts\n * @param {MatrixError} err\n * @return {Number}\n * @see module:scheduler~retryAlgorithm\n */\nMatrixScheduler.RETRY_BACKOFF_RATELIMIT = function (event, attempts, err) {\n if (err.httpStatus === 400 || err.httpStatus === 403 || err.httpStatus === 401) {\n // client error; no amount of retrying with save you now.\n return -1;\n }\n // we ship with browser-request which returns { cors: rejected } when trying\n // with no connection, so if we match that, give up since they have no conn.\n if (err.cors === \"rejected\") {\n return -1;\n }\n\n if (err.name === \"M_LIMIT_EXCEEDED\") {\n var waitTime = err.data.retry_after_ms;\n if (waitTime) {\n return waitTime;\n }\n }\n if (attempts > 4) {\n return -1; // give up\n }\n return 1000 * Math.pow(2, attempts);\n};\n\n/**\n * Queues m.room.message events and lets other events continue\n * concurrently.\n * @param {MatrixEvent} event\n * @return {string}\n * @see module:scheduler~queueAlgorithm\n */\nMatrixScheduler.QUEUE_MESSAGES = function (event) {\n // enqueue messages or events that associate with another event (redactions and relations)\n if (event.getType() === \"m.room.message\" || event.hasAssocation()) {\n // put these events in the 'message' queue.\n return \"message\";\n }\n // allow all other events continue concurrently.\n return null;\n};\n\nfunction _startProcessingQueues(scheduler) {\n if (!scheduler._procFn) {\n return;\n }\n // for each inactive queue with events in them\n utils.forEach(utils.filter(utils.keys(scheduler._queues), function (queueName) {\n return scheduler._activeQueues.indexOf(queueName) === -1 && scheduler._queues[queueName].length > 0;\n }), function (queueName) {\n // mark the queue as active\n scheduler._activeQueues.push(queueName);\n // begin processing the head of the queue\n debuglog(\"Spinning up queue: '%s'\", queueName);\n _processQueue(scheduler, queueName);\n });\n}\n\nfunction _processQueue(scheduler, queueName) {\n // get head of queue\n var obj = _peekNextEvent(scheduler, queueName);\n if (!obj) {\n // queue is empty. Mark as inactive and stop recursing.\n var index = scheduler._activeQueues.indexOf(queueName);\n if (index >= 0) {\n scheduler._activeQueues.splice(index, 1);\n }\n debuglog(\"Stopping queue '%s' as it is now empty\", queueName);\n return;\n }\n debuglog(\"Queue '%s' has %s pending events\", queueName, scheduler._queues[queueName].length);\n // fire the process function and if it resolves, resolve the deferred. Else\n // invoke the retry algorithm.\n\n // First wait for a resolved promise, so the resolve handlers for\n // the deferred of the previously sent event can run.\n // This way enqueued relations/redactions to enqueued events can receive\n // the remove id of their target before being sent.\n _bluebird2.default.resolve().then(function () {\n return scheduler._procFn(obj.event);\n }).then(function (res) {\n // remove this from the queue\n _removeNextEvent(scheduler, queueName);\n debuglog(\"Queue '%s' sent event %s\", queueName, obj.event.getId());\n obj.defer.resolve(res);\n // keep processing\n _processQueue(scheduler, queueName);\n }, function (err) {\n obj.attempts += 1;\n // ask the retry algorithm when/if we should try again\n var waitTimeMs = scheduler.retryAlgorithm(obj.event, obj.attempts, err);\n debuglog(\"retry(%s) err=%s event_id=%s waitTime=%s\", obj.attempts, err, obj.event.getId(), waitTimeMs);\n if (waitTimeMs === -1) {\n // give up (you quitter!)\n debuglog(\"Queue '%s' giving up on event %s\", queueName, obj.event.getId());\n // remove this from the queue\n _removeNextEvent(scheduler, queueName);\n obj.defer.reject(err);\n // process next event\n _processQueue(scheduler, queueName);\n } else {\n setTimeout(function () {\n _processQueue(scheduler, queueName);\n }, waitTimeMs);\n }\n });\n}\n\nfunction _peekNextEvent(scheduler, queueName) {\n var queue = scheduler._queues[queueName];\n if (!utils.isArray(queue)) {\n return null;\n }\n return queue[0];\n}\n\nfunction _removeNextEvent(scheduler, queueName) {\n var queue = scheduler._queues[queueName];\n if (!utils.isArray(queue)) {\n return null;\n }\n return queue.shift();\n}\n\nfunction debuglog() {\n if (DEBUG) {\n _logger2.default.log.apply(_logger2.default, arguments);\n }\n}\n\n/**\n * The retry algorithm to apply when retrying events. To stop retrying, return\n * -1. If this event was part of a queue, it will be removed from\n * the queue.\n * @callback retryAlgorithm\n * @param {MatrixEvent} event The event being retried.\n * @param {Number} attempts The number of failed attempts. This will always be\n * >= 1.\n * @param {MatrixError} err The most recent error message received when trying\n * to send this event.\n * @return {Number} The number of milliseconds to wait before trying again. If\n * this is 0, the request will be immediately retried. If this is\n * -1, the event will be marked as\n * {@link module:models/event.EventStatus.NOT_SENT} and will not be retried.\n */\n\n/**\n * The queuing algorithm to apply to events. This function must be idempotent as\n * it may be called multiple times with the same event. All queues created are\n * serviced in a FIFO manner. To send the event ASAP, return null\n * which will not put this event in a queue. Events that fail to send that form\n * part of a queue will be removed from the queue and the next event in the\n * queue will be sent.\n * @callback queueAlgorithm\n * @param {MatrixEvent} event The event to be sent.\n * @return {string} The name of the queue to put the event into. If a queue with\n * this name does not exist, it will be created. If this is null,\n * the event is not put into a queue and will be sent concurrently.\n */\n\n/**\n* The function to invoke to process (send) events in the queue.\n* @callback processFn\n* @param {MatrixEvent} event The event to send.\n* @return {Promise} Resolved/rejected depending on the outcome of the request.\n*/\n\n/**\n * The MatrixScheduler class.\n */\nmodule.exports = MatrixScheduler;\n//# sourceMappingURL=scheduler.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module store/session/webstorage\n */\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _logger = require(\"../../logger\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar utils = require(\"../../utils\");\n\n\nvar DEBUG = false; // set true to enable console logging.\nvar E2E_PREFIX = \"session.e2e.\";\n\n/**\n * Construct a web storage session store, capable of storing account keys,\n * session keys and access tokens.\n * @constructor\n * @param {WebStorage} webStore A web storage implementation, e.g.\n * 'window.localStorage' or 'window.sessionStorage' or a custom implementation.\n * @throws if the supplied 'store' does not meet the Storage interface of the\n * WebStorage API.\n */\nfunction WebStorageSessionStore(webStore) {\n this.store = webStore;\n if (!utils.isFunction(webStore.getItem) || !utils.isFunction(webStore.setItem) || !utils.isFunction(webStore.removeItem) || !utils.isFunction(webStore.key) || typeof webStore.length !== 'number') {\n throw new Error(\"Supplied webStore does not meet the WebStorage API interface\");\n }\n}\n\nWebStorageSessionStore.prototype = {\n /**\n * Remove the stored end to end account for the logged-in user.\n */\n removeEndToEndAccount: function removeEndToEndAccount() {\n this.store.removeItem(KEY_END_TO_END_ACCOUNT);\n },\n\n /**\n * Load the end to end account for the logged-in user.\n * Note that the end-to-end account is now stored in the\n * crypto store rather than here: this remains here so\n * old sessions can be migrated out of the session store.\n * @return {?string} Base64 encoded account.\n */\n getEndToEndAccount: function getEndToEndAccount() {\n return this.store.getItem(KEY_END_TO_END_ACCOUNT);\n },\n\n /**\n * Retrieves the known devices for all users.\n * @return {object} A map from user ID to map of device ID to keys for the device.\n */\n getAllEndToEndDevices: function getAllEndToEndDevices() {\n var prefix = keyEndToEndDevicesForUser('');\n var devices = {};\n for (var i = 0; i < this.store.length; ++i) {\n var key = this.store.key(i);\n var userId = key.substr(prefix.length);\n if (key.startsWith(prefix)) devices[userId] = getJsonItem(this.store, key);\n }\n return devices;\n },\n\n getEndToEndDeviceTrackingStatus: function getEndToEndDeviceTrackingStatus() {\n return getJsonItem(this.store, KEY_END_TO_END_DEVICE_LIST_TRACKING_STATUS);\n },\n\n /**\n * Get the sync token corresponding to the device list.\n *\n * @return {String?} token\n */\n getEndToEndDeviceSyncToken: function getEndToEndDeviceSyncToken() {\n return getJsonItem(this.store, KEY_END_TO_END_DEVICE_SYNC_TOKEN);\n },\n\n /**\n * Removes all end to end device data from the store\n */\n removeEndToEndDeviceData: function removeEndToEndDeviceData() {\n removeByPrefix(this.store, keyEndToEndDevicesForUser(''));\n removeByPrefix(this.store, KEY_END_TO_END_DEVICE_LIST_TRACKING_STATUS);\n removeByPrefix(this.store, KEY_END_TO_END_DEVICE_SYNC_TOKEN);\n },\n\n /**\n * Retrieve the end-to-end sessions between the logged-in user and another\n * device.\n * @param {string} deviceKey The public key of the other device.\n * @return {object} A map from sessionId to Base64 end-to-end session.\n */\n getEndToEndSessions: function getEndToEndSessions(deviceKey) {\n return getJsonItem(this.store, keyEndToEndSessions(deviceKey));\n },\n\n /**\n * Retrieve all end-to-end sessions between the logged-in user and other\n * devices.\n * @return {object} A map of {deviceKey -> {sessionId -> session pickle}}\n */\n getAllEndToEndSessions: function getAllEndToEndSessions() {\n var deviceKeys = getKeysWithPrefix(this.store, keyEndToEndSessions(''));\n var results = {};\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(deviceKeys), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var k = _step.value;\n\n var unprefixedKey = k.substr(keyEndToEndSessions('').length);\n results[unprefixedKey] = getJsonItem(this.store, k);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return results;\n },\n\n /**\n * Remove all end-to-end sessions from the store\n * This is used after migrating sessions awat from the sessions store.\n */\n removeAllEndToEndSessions: function removeAllEndToEndSessions() {\n removeByPrefix(this.store, keyEndToEndSessions(''));\n },\n\n /**\n * Retrieve a list of all known inbound group sessions\n *\n * @return {{senderKey: string, sessionId: string}}\n */\n getAllEndToEndInboundGroupSessionKeys: function getAllEndToEndInboundGroupSessionKeys() {\n var prefix = E2E_PREFIX + 'inboundgroupsessions/';\n var result = [];\n for (var i = 0; i < this.store.length; i++) {\n var key = this.store.key(i);\n if (!key.startsWith(prefix)) {\n continue;\n }\n // we can't use split, as the components we are trying to split out\n // might themselves contain '/' characters. We rely on the\n // senderKey being a (32-byte) curve25519 key, base64-encoded\n // (hence 43 characters long).\n\n result.push({\n senderKey: key.substr(prefix.length, 43),\n sessionId: key.substr(prefix.length + 44)\n });\n }\n return result;\n },\n\n getEndToEndInboundGroupSession: function getEndToEndInboundGroupSession(senderKey, sessionId) {\n var key = keyEndToEndInboundGroupSession(senderKey, sessionId);\n return this.store.getItem(key);\n },\n\n removeAllEndToEndInboundGroupSessions: function removeAllEndToEndInboundGroupSessions() {\n removeByPrefix(this.store, E2E_PREFIX + 'inboundgroupsessions/');\n },\n\n /**\n * Get the end-to-end state for all rooms\n * @return {object} roomId -> object with the end-to-end info for the room.\n */\n getAllEndToEndRooms: function getAllEndToEndRooms() {\n var roomKeys = getKeysWithPrefix(this.store, keyEndToEndRoom(''));\n var results = {};\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(roomKeys), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var k = _step2.value;\n\n var unprefixedKey = k.substr(keyEndToEndRoom('').length);\n results[unprefixedKey] = getJsonItem(this.store, k);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return results;\n },\n\n removeAllEndToEndRooms: function removeAllEndToEndRooms() {\n removeByPrefix(this.store, keyEndToEndRoom(''));\n },\n\n setLocalTrustedBackupPubKey: function setLocalTrustedBackupPubKey(pubkey) {\n this.store.setItem(KEY_END_TO_END_TRUSTED_BACKUP_PUBKEY, pubkey);\n },\n\n // XXX: This store is deprecated really, but added this as a temporary\n // thing until cross-signing lands.\n getLocalTrustedBackupPubKey: function getLocalTrustedBackupPubKey() {\n return this.store.getItem(KEY_END_TO_END_TRUSTED_BACKUP_PUBKEY);\n }\n};\n\nvar KEY_END_TO_END_ACCOUNT = E2E_PREFIX + \"account\";\nvar KEY_END_TO_END_DEVICE_SYNC_TOKEN = E2E_PREFIX + \"device_sync_token\";\nvar KEY_END_TO_END_DEVICE_LIST_TRACKING_STATUS = E2E_PREFIX + \"device_tracking\";\nvar KEY_END_TO_END_TRUSTED_BACKUP_PUBKEY = E2E_PREFIX + \"trusted_backup_pubkey\";\n\nfunction keyEndToEndDevicesForUser(userId) {\n return E2E_PREFIX + \"devices/\" + userId;\n}\n\nfunction keyEndToEndSessions(deviceKey) {\n return E2E_PREFIX + \"sessions/\" + deviceKey;\n}\n\nfunction keyEndToEndInboundGroupSession(senderKey, sessionId) {\n return E2E_PREFIX + \"inboundgroupsessions/\" + senderKey + \"/\" + sessionId;\n}\n\nfunction keyEndToEndRoom(roomId) {\n return E2E_PREFIX + \"rooms/\" + roomId;\n}\n\nfunction getJsonItem(store, key) {\n try {\n // if the key is absent, store.getItem() returns null, and\n // JSON.parse(null) === null, so this returns null.\n return JSON.parse(store.getItem(key));\n } catch (e) {\n debuglog(\"Failed to get key %s: %s\", key, e);\n debuglog(e.stack);\n }\n return null;\n}\n\nfunction getKeysWithPrefix(store, prefix) {\n var results = [];\n for (var i = 0; i < store.length; ++i) {\n var key = store.key(i);\n if (key.startsWith(prefix)) results.push(key);\n }\n return results;\n}\n\nfunction removeByPrefix(store, prefix) {\n var toRemove = [];\n for (var i = 0; i < store.length; ++i) {\n var key = store.key(i);\n if (key.startsWith(prefix)) toRemove.push(key);\n }\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(toRemove), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _key = _step3.value;\n\n store.removeItem(_key);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n}\n\nfunction debuglog() {\n if (DEBUG) {\n _logger2.default.log.apply(_logger2.default, arguments);\n }\n}\n\n/** */\nmodule.exports = WebStorageSessionStore;\n//# sourceMappingURL=webstorage.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/** @module timeline-window */\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _logger = require(\"../src/logger\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EventTimeline = require(\"./models/event-timeline\");\n\n/**\n * @private\n */\nvar DEBUG = false;\n\n/**\n * @private\n */\nvar debuglog = DEBUG ? _logger2.default.log.bind(_logger2.default) : function () {};\n\n/**\n * the number of times we ask the server for more events before giving up\n *\n * @private\n */\nvar DEFAULT_PAGINATE_LOOP_LIMIT = 5;\n\n/**\n * Construct a TimelineWindow.\n *\n *

This abstracts the separate timelines in a Matrix {@link\n * module:models/room|Room} into a single iterable thing. It keeps track of\n * the start and endpoints of the window, which can be advanced with the help\n * of pagination requests.\n *\n *

Before the window is useful, it must be initialised by calling {@link\n * module:timeline-window~TimelineWindow#load|load}.\n *\n *

Note that the window will not automatically extend itself when new events\n * are received from /sync; you should arrange to call {@link\n * module:timeline-window~TimelineWindow#paginate|paginate} on {@link\n * module:client~MatrixClient.event:\"Room.timeline\"|Room.timeline} events.\n *\n * @param {MatrixClient} client MatrixClient to be used for context/pagination\n * requests.\n *\n * @param {EventTimelineSet} timelineSet The timelineSet to track\n *\n * @param {Object} [opts] Configuration options for this window\n *\n * @param {number} [opts.windowLimit = 1000] maximum number of events to keep\n * in the window. If more events are retrieved via pagination requests,\n * excess events will be dropped from the other end of the window.\n *\n * @constructor\n */\nfunction TimelineWindow(client, timelineSet, opts) {\n opts = opts || {};\n this._client = client;\n this._timelineSet = timelineSet;\n\n // these will be TimelineIndex objects; they delineate the 'start' and\n // 'end' of the window.\n //\n // _start.index is inclusive; _end.index is exclusive.\n this._start = null;\n this._end = null;\n\n this._eventCount = 0;\n this._windowLimit = opts.windowLimit || 1000;\n}\n\n/**\n * Initialise the window to point at a given event, or the live timeline\n *\n * @param {string} [initialEventId] If given, the window will contain the\n * given event\n * @param {number} [initialWindowSize = 20] Size of the initial window\n *\n * @return {module:client.Promise}\n */\nTimelineWindow.prototype.load = function (initialEventId, initialWindowSize) {\n var self = this;\n initialWindowSize = initialWindowSize || 20;\n\n // given an EventTimeline, find the event we were looking for, and initialise our\n // fields so that the event in question is in the middle of the window.\n var initFields = function initFields(timeline) {\n var eventIndex = void 0;\n\n var events = timeline.getEvents();\n\n if (!initialEventId) {\n // we were looking for the live timeline: initialise to the end\n eventIndex = events.length;\n } else {\n for (var i = 0; i < events.length; i++) {\n if (events[i].getId() == initialEventId) {\n eventIndex = i;\n break;\n }\n }\n\n if (eventIndex === undefined) {\n throw new Error(\"getEventTimeline result didn't include requested event\");\n }\n }\n\n var endIndex = Math.min(events.length, eventIndex + Math.ceil(initialWindowSize / 2));\n var startIndex = Math.max(0, endIndex - initialWindowSize);\n self._start = new TimelineIndex(timeline, startIndex - timeline.getBaseIndex());\n self._end = new TimelineIndex(timeline, endIndex - timeline.getBaseIndex());\n self._eventCount = endIndex - startIndex;\n };\n\n // We avoid delaying the resolution of the promise by a reactor tick if\n // we already have the data we need, which is important to keep room-switching\n // feeling snappy.\n //\n if (initialEventId) {\n var prom = this._client.getEventTimeline(this._timelineSet, initialEventId);\n\n if (prom.isFulfilled()) {\n initFields(prom.value());\n return _bluebird2.default.resolve();\n } else {\n return prom.then(initFields);\n }\n } else {\n var tl = this._timelineSet.getLiveTimeline();\n initFields(tl);\n return _bluebird2.default.resolve();\n }\n};\n\n/**\n * Check if this window can be extended\n *\n *

This returns true if we either have more events, or if we have a\n * pagination token which means we can paginate in that direction. It does not\n * necessarily mean that there are more events available in that direction at\n * this time.\n *\n * @param {string} direction EventTimeline.BACKWARDS to check if we can\n * paginate backwards; EventTimeline.FORWARDS to check if we can go forwards\n *\n * @return {boolean} true if we can paginate in the given direction\n */\nTimelineWindow.prototype.canPaginate = function (direction) {\n var tl = void 0;\n if (direction == EventTimeline.BACKWARDS) {\n tl = this._start;\n } else if (direction == EventTimeline.FORWARDS) {\n tl = this._end;\n } else {\n throw new Error(\"Invalid direction '\" + direction + \"'\");\n }\n\n if (!tl) {\n debuglog(\"TimelineWindow: no timeline yet\");\n return false;\n }\n\n if (direction == EventTimeline.BACKWARDS) {\n if (tl.index > tl.minIndex()) {\n return true;\n }\n } else {\n if (tl.index < tl.maxIndex()) {\n return true;\n }\n }\n\n return Boolean(tl.timeline.getNeighbouringTimeline(direction) || tl.timeline.getPaginationToken(direction));\n};\n\n/**\n * Attempt to extend the window\n *\n * @param {string} direction EventTimeline.BACKWARDS to extend the window\n * backwards (towards older events); EventTimeline.FORWARDS to go forwards.\n *\n * @param {number} size number of events to try to extend by. If fewer than this\n * number are immediately available, then we return immediately rather than\n * making an API call.\n *\n * @param {boolean} [makeRequest = true] whether we should make API calls to\n * fetch further events if we don't have any at all. (This has no effect if\n * the room already knows about additional events in the relevant direction,\n * even if there are fewer than 'size' of them, as we will just return those\n * we already know about.)\n *\n * @param {number} [requestLimit = 5] limit for the number of API requests we\n * should make.\n *\n * @return {module:client.Promise} Resolves to a boolean which is true if more events\n * were successfully retrieved.\n */\nTimelineWindow.prototype.paginate = function (direction, size, makeRequest, requestLimit) {\n // Either wind back the message cap (if there are enough events in the\n // timeline to do so), or fire off a pagination request.\n\n if (makeRequest === undefined) {\n makeRequest = true;\n }\n\n if (requestLimit === undefined) {\n requestLimit = DEFAULT_PAGINATE_LOOP_LIMIT;\n }\n\n var tl = void 0;\n if (direction == EventTimeline.BACKWARDS) {\n tl = this._start;\n } else if (direction == EventTimeline.FORWARDS) {\n tl = this._end;\n } else {\n throw new Error(\"Invalid direction '\" + direction + \"'\");\n }\n\n if (!tl) {\n debuglog(\"TimelineWindow: no timeline yet\");\n return _bluebird2.default.resolve(false);\n }\n\n if (tl.pendingPaginate) {\n return tl.pendingPaginate;\n }\n\n // try moving the cap\n var count = direction == EventTimeline.BACKWARDS ? tl.retreat(size) : tl.advance(size);\n\n if (count) {\n this._eventCount += count;\n debuglog(\"TimelineWindow: increased cap by \" + count + \" (now \" + this._eventCount + \")\");\n // remove some events from the other end, if necessary\n var excess = this._eventCount - this._windowLimit;\n if (excess > 0) {\n this.unpaginate(excess, direction != EventTimeline.BACKWARDS);\n }\n return _bluebird2.default.resolve(true);\n }\n\n if (!makeRequest || requestLimit === 0) {\n // todo: should we return something different to indicate that there\n // might be more events out there, but we haven't found them yet?\n return _bluebird2.default.resolve(false);\n }\n\n // try making a pagination request\n var token = tl.timeline.getPaginationToken(direction);\n if (!token) {\n debuglog(\"TimelineWindow: no token\");\n return _bluebird2.default.resolve(false);\n }\n\n debuglog(\"TimelineWindow: starting request\");\n var self = this;\n\n var prom = this._client.paginateEventTimeline(tl.timeline, {\n backwards: direction == EventTimeline.BACKWARDS,\n limit: size\n }).finally(function () {\n tl.pendingPaginate = null;\n }).then(function (r) {\n debuglog(\"TimelineWindow: request completed with result \" + r);\n if (!r) {\n // end of timeline\n return false;\n }\n\n // recurse to advance the index into the results.\n //\n // If we don't get any new events, we want to make sure we keep asking\n // the server for events for as long as we have a valid pagination\n // token. In particular, we want to know if we've actually hit the\n // start of the timeline, or if we just happened to know about all of\n // the events thanks to https://matrix.org/jira/browse/SYN-645.\n //\n // On the other hand, we necessarily want to wait forever for the\n // server to make its mind up about whether there are other events,\n // because it gives a bad user experience\n // (https://github.com/vector-im/vector-web/issues/1204).\n return self.paginate(direction, size, true, requestLimit - 1);\n });\n tl.pendingPaginate = prom;\n return prom;\n};\n\n/**\n * Remove `delta` events from the start or end of the timeline.\n *\n * @param {number} delta number of events to remove from the timeline\n * @param {boolean} startOfTimeline if events should be removed from the start\n * of the timeline.\n */\nTimelineWindow.prototype.unpaginate = function (delta, startOfTimeline) {\n var tl = startOfTimeline ? this._start : this._end;\n\n // sanity-check the delta\n if (delta > this._eventCount || delta < 0) {\n throw new Error(\"Attemting to unpaginate \" + delta + \" events, but \" + \"only have \" + this._eventCount + \" in the timeline\");\n }\n\n while (delta > 0) {\n var count = startOfTimeline ? tl.advance(delta) : tl.retreat(delta);\n if (count <= 0) {\n // sadness. This shouldn't be possible.\n throw new Error(\"Unable to unpaginate any further, but still have \" + this._eventCount + \" events\");\n }\n\n delta -= count;\n this._eventCount -= count;\n debuglog(\"TimelineWindow.unpaginate: dropped \" + count + \" (now \" + this._eventCount + \")\");\n }\n};\n\n/**\n * Get a list of the events currently in the window\n *\n * @return {MatrixEvent[]} the events in the window\n */\nTimelineWindow.prototype.getEvents = function () {\n if (!this._start) {\n // not yet loaded\n return [];\n }\n\n var result = [];\n\n // iterate through each timeline between this._start and this._end\n // (inclusive).\n var timeline = this._start.timeline;\n while (true) {\n var events = timeline.getEvents();\n\n // For the first timeline in the chain, we want to start at\n // this._start.index. For the last timeline in the chain, we want to\n // stop before this._end.index. Otherwise, we want to copy all of the\n // events in the timeline.\n //\n // (Note that both this._start.index and this._end.index are relative\n // to their respective timelines' BaseIndex).\n //\n var startIndex = 0,\n endIndex = events.length;\n if (timeline === this._start.timeline) {\n startIndex = this._start.index + timeline.getBaseIndex();\n }\n if (timeline === this._end.timeline) {\n endIndex = this._end.index + timeline.getBaseIndex();\n }\n\n for (var i = startIndex; i < endIndex; i++) {\n result.push(events[i]);\n }\n\n // if we're not done, iterate to the next timeline.\n if (timeline === this._end.timeline) {\n break;\n } else {\n timeline = timeline.getNeighbouringTimeline(EventTimeline.FORWARDS);\n }\n }\n\n return result;\n};\n\n/**\n * a thing which contains a timeline reference, and an index into it.\n *\n * @constructor\n * @param {EventTimeline} timeline\n * @param {number} index\n * @private\n */\nfunction TimelineIndex(timeline, index) {\n this.timeline = timeline;\n\n // the indexes are relative to BaseIndex, so could well be negative.\n this.index = index;\n}\n\n/**\n * @return {number} the minimum possible value for the index in the current\n * timeline\n */\nTimelineIndex.prototype.minIndex = function () {\n return this.timeline.getBaseIndex() * -1;\n};\n\n/**\n * @return {number} the maximum possible value for the index in the current\n * timeline (exclusive - ie, it actually returns one more than the index\n * of the last element).\n */\nTimelineIndex.prototype.maxIndex = function () {\n return this.timeline.getEvents().length - this.timeline.getBaseIndex();\n};\n\n/**\n * Try move the index forward, or into the neighbouring timeline\n *\n * @param {number} delta number of events to advance by\n * @return {number} number of events successfully advanced by\n */\nTimelineIndex.prototype.advance = function (delta) {\n if (!delta) {\n return 0;\n }\n\n // first try moving the index in the current timeline. See if there is room\n // to do so.\n var cappedDelta = void 0;\n if (delta < 0) {\n // we want to wind the index backwards.\n //\n // (this.minIndex() - this.index) is a negative number whose magnitude\n // is the amount of room we have to wind back the index in the current\n // timeline. We cap delta to this quantity.\n cappedDelta = Math.max(delta, this.minIndex() - this.index);\n if (cappedDelta < 0) {\n this.index += cappedDelta;\n return cappedDelta;\n }\n } else {\n // we want to wind the index forwards.\n //\n // (this.maxIndex() - this.index) is a (positive) number whose magnitude\n // is the amount of room we have to wind forward the index in the current\n // timeline. We cap delta to this quantity.\n cappedDelta = Math.min(delta, this.maxIndex() - this.index);\n if (cappedDelta > 0) {\n this.index += cappedDelta;\n return cappedDelta;\n }\n }\n\n // the index is already at the start/end of the current timeline.\n //\n // next see if there is a neighbouring timeline to switch to.\n var neighbour = this.timeline.getNeighbouringTimeline(delta < 0 ? EventTimeline.BACKWARDS : EventTimeline.FORWARDS);\n if (neighbour) {\n this.timeline = neighbour;\n if (delta < 0) {\n this.index = this.maxIndex();\n } else {\n this.index = this.minIndex();\n }\n\n debuglog(\"paginate: switched to new neighbour\");\n\n // recurse, using the next timeline\n return this.advance(delta);\n }\n\n return 0;\n};\n\n/**\n * Try move the index backwards, or into the neighbouring timeline\n *\n * @param {number} delta number of events to retreat by\n * @return {number} number of events successfully retreated by\n */\nTimelineIndex.prototype.retreat = function (delta) {\n return this.advance(delta * -1) * -1;\n};\n\n/**\n * The TimelineWindow class.\n */\nmodule.exports.TimelineWindow = TimelineWindow;\n\n/**\n * The TimelineIndex class. exported here for unit testing.\n */\nmodule.exports.TimelineIndex = TimelineIndex;\n//# sourceMappingURL=timeline-window.js.map","/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/** @module interactive-auth */\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _logger = require(\"../src/logger\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar url = require(\"url\");\n\nvar utils = require(\"./utils\");\n\n\nvar EMAIL_STAGE_TYPE = \"m.login.email.identity\";\nvar MSISDN_STAGE_TYPE = \"m.login.msisdn\";\n\n/**\n * Abstracts the logic used to drive the interactive auth process.\n *\n *

Components implementing an interactive auth flow should instantiate one of\n * these, passing in the necessary callbacks to the constructor. They should\n * then call attemptAuth, which will return a promise which will resolve or\n * reject when the interactive-auth process completes.\n *\n *

Meanwhile, calls will be made to the startAuthStage and doRequest\n * callbacks, and information gathered from the user can be submitted with\n * submitAuthDict.\n *\n * @constructor\n * @alias module:interactive-auth\n *\n * @param {object} opts options object\n *\n * @param {object} opts.matrixClient A matrix client to use for the auth process\n *\n * @param {object?} opts.authData error response from the last request. If\n * null, a request will be made with no auth before starting.\n *\n * @param {function(object?): module:client.Promise} opts.doRequest\n * called with the new auth dict to submit the request. Also passes a\n * second deprecated arg which is a flag set to true if this request\n * is a background request. The busyChanged callback should be used\n * instead of the backfround flag. Should return a promise which resolves\n * to the successful response or rejects with a MatrixError.\n *\n * @param {function(bool): module:client.Promise} opts.busyChanged\n * called whenever the interactive auth logic becomes busy submitting\n * information provided by the user or finsihes. After this has been\n * called with true the UI should indicate that a request is in progress\n * until it is called again with false.\n *\n * @param {function(string, object?)} opts.stateUpdated\n * called when the status of the UI auth changes, ie. when the state of\n * an auth stage changes of when the auth flow moves to a new stage.\n * The arguments are: the login type (eg m.login.password); and an object\n * which is either an error or an informational object specific to the\n * login type. If the 'errcode' key is defined, the object is an error,\n * and has keys:\n * errcode: string, the textual error code, eg. M_UNKNOWN\n * error: string, human readable string describing the error\n *\n * The login type specific objects are as follows:\n * m.login.email.identity:\n * * emailSid: string, the sid of the active email auth session\n *\n * @param {object?} opts.inputs Inputs provided by the user and used by different\n * stages of the auto process. The inputs provided will affect what flow is chosen.\n *\n * @param {string?} opts.inputs.emailAddress An email address. If supplied, a flow\n * using email verification will be chosen.\n *\n * @param {string?} opts.inputs.phoneCountry An ISO two letter country code. Gives\n * the country that opts.phoneNumber should be resolved relative to.\n *\n * @param {string?} opts.inputs.phoneNumber A phone number. If supplied, a flow\n * using phone number validation will be chosen.\n *\n * @param {string?} opts.sessionId If resuming an existing interactive auth session,\n * the sessionId of that session.\n *\n * @param {string?} opts.clientSecret If resuming an existing interactive auth session,\n * the client secret for that session\n *\n * @param {string?} opts.emailSid If returning from having completed m.login.email.identity\n * auth, the sid for the email verification session.\n *\n * @param {function?} opts.requestEmailToken A function that takes the email address (string),\n * clientSecret (string), attempt number (int) and sessionId (string) and calls the\n * relevant requestToken function and returns the promise returned by that function.\n * If the resulting promise rejects, the rejection will propagate through to the\n * attemptAuth promise.\n *\n */\nfunction InteractiveAuth(opts) {\n this._matrixClient = opts.matrixClient;\n this._data = opts.authData || {};\n this._requestCallback = opts.doRequest;\n this._busyChangedCallback = opts.busyChanged;\n // startAuthStage included for backwards compat\n this._stateUpdatedCallback = opts.stateUpdated || opts.startAuthStage;\n this._resolveFunc = null;\n this._rejectFunc = null;\n this._inputs = opts.inputs || {};\n this._requestEmailTokenCallback = opts.requestEmailToken;\n\n if (opts.sessionId) this._data.session = opts.sessionId;\n this._clientSecret = opts.clientSecret || this._matrixClient.generateClientSecret();\n this._emailSid = opts.emailSid;\n if (this._emailSid === undefined) this._emailSid = null;\n this._requestingEmailToken = false;\n\n this._chosenFlow = null;\n this._currentStage = null;\n\n // if we are currently trying to submit an auth dict (which includes polling)\n // the promise the will resolve/reject when it completes\n this._submitPromise = null;\n}\n\nInteractiveAuth.prototype = {\n /**\n * begin the authentication process.\n *\n * @return {module:client.Promise} which resolves to the response on success,\n * or rejects with the error on failure. Rejects with NoAuthFlowFoundError if\n * no suitable authentication flow can be found\n */\n attemptAuth: function attemptAuth() {\n var _this = this;\n\n // This promise will be quite long-lived and will resolve when the\n // request is authenticated and completes successfully.\n return new _bluebird2.default(function (resolve, reject) {\n _this._resolveFunc = resolve;\n _this._rejectFunc = reject;\n\n // if we have no flows, try a request (we'll have\n // just a session ID in _data if resuming)\n if (!_this._data.flows) {\n if (_this._busyChangedCallback) _this._busyChangedCallback(true);\n _this._doRequest(_this._data).finally(function () {\n if (_this._busyChangedCallback) _this._busyChangedCallback(false);\n });\n } else {\n _this._startNextAuthStage();\n }\n });\n },\n\n /**\n * Poll to check if the auth session or current stage has been\n * completed out-of-band. If so, the attemptAuth promise will\n * be resolved.\n */\n poll: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var authDict, creds, idServerParsedUrl;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (this._data.session) {\n _context.next = 2;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 2:\n if (!this._submitPromise) {\n _context.next = 4;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 4:\n authDict = {};\n\n if (!(this._currentStage == EMAIL_STAGE_TYPE)) {\n _context.next = 14;\n break;\n }\n\n if (!this._emailSid) {\n _context.next = 14;\n break;\n }\n\n creds = {\n sid: this._emailSid,\n client_secret: this._clientSecret\n };\n _context.next = 10;\n return (0, _bluebird.resolve)(this._matrixClient.doesServerRequireIdServerParam());\n\n case 10:\n if (!_context.sent) {\n _context.next = 13;\n break;\n }\n\n idServerParsedUrl = url.parse(this._matrixClient.getIdentityServerUrl());\n\n creds.id_server = idServerParsedUrl.host;\n\n case 13:\n authDict = {\n type: EMAIL_STAGE_TYPE,\n threepid_creds: creds\n };\n\n case 14:\n\n this.submitAuthDict(authDict, true);\n\n case 15:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function poll() {\n return _ref.apply(this, arguments);\n }\n\n return poll;\n }(),\n\n /**\n * get the auth session ID\n *\n * @return {string} session id\n */\n getSessionId: function getSessionId() {\n return this._data ? this._data.session : undefined;\n },\n\n /**\n * get the client secret used for validation sessions\n * with the ID server.\n *\n * @return {string} client secret\n */\n getClientSecret: function getClientSecret() {\n return this._clientSecret;\n },\n\n /**\n * get the server params for a given stage\n *\n * @param {string} loginType login type for the stage\n * @return {object?} any parameters from the server for this stage\n */\n getStageParams: function getStageParams(loginType) {\n var params = {};\n if (this._data && this._data.params) {\n params = this._data.params;\n }\n return params[loginType];\n },\n\n getChosenFlow: function getChosenFlow() {\n return this._chosenFlow;\n },\n\n\n /**\n * submit a new auth dict and fire off the request. This will either\n * make attemptAuth resolve/reject, or cause the startAuthStage callback\n * to be called for a new stage.\n *\n * @param {object} authData new auth dict to send to the server. Should\n * include a `type` propterty denoting the login type, as well as any\n * other params for that stage.\n * @param {bool} background If true, this request failing will not result\n * in the attemptAuth promise being rejected. This can be set to true\n * for requests that just poll to see if auth has been completed elsewhere.\n */\n submitAuthDict: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(authData, background) {\n var auth;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (this._resolveFunc) {\n _context2.next = 2;\n break;\n }\n\n throw new Error(\"submitAuthDict() called before attemptAuth()\");\n\n case 2:\n\n if (!background && this._busyChangedCallback) {\n this._busyChangedCallback(true);\n }\n\n // if we're currently trying a request, wait for it to finish\n // as otherwise we can get multiple 200 responses which can mean\n // things like multiple logins for register requests.\n // (but discard any expections as we only care when its done,\n // not whether it worked or not)\n\n case 3:\n if (!this._submitPromise) {\n _context2.next = 13;\n break;\n }\n\n _context2.prev = 4;\n _context2.next = 7;\n return (0, _bluebird.resolve)(this._submitPromise);\n\n case 7:\n _context2.next = 11;\n break;\n\n case 9:\n _context2.prev = 9;\n _context2.t0 = _context2[\"catch\"](4);\n\n case 11:\n _context2.next = 3;\n break;\n\n case 13:\n\n // use the sessionid from the last request.\n auth = {\n session: this._data.session\n };\n\n utils.extend(auth, authData);\n\n _context2.prev = 15;\n\n // NB. the 'background' flag is deprecated by the busyChanged\n // callback and is here for backwards compat\n this._submitPromise = this._doRequest(auth, background);\n _context2.next = 19;\n return (0, _bluebird.resolve)(this._submitPromise);\n\n case 19:\n _context2.prev = 19;\n\n this._submitPromise = null;\n if (!background && this._busyChangedCallback) {\n this._busyChangedCallback(false);\n }\n return _context2.finish(19);\n\n case 23:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[4, 9], [15,, 19, 23]]);\n }));\n\n function submitAuthDict(_x, _x2) {\n return _ref2.apply(this, arguments);\n }\n\n return submitAuthDict;\n }(),\n\n /**\n * Gets the sid for the email validation session\n * Specific to m.login.email.identity\n *\n * @returns {string} The sid of the email auth session\n */\n getEmailSid: function getEmailSid() {\n return this._emailSid;\n },\n\n /**\n * Sets the sid for the email validation session\n * This must be set in order to successfully poll for completion\n * of the email validation.\n * Specific to m.login.email.identity\n *\n * @param {string} sid The sid for the email validation session\n */\n setEmailSid: function setEmailSid(sid) {\n this._emailSid = sid;\n },\n\n /**\n * Fire off a request, and either resolve the promise, or call\n * startAuthStage.\n *\n * @private\n * @param {object?} auth new auth dict, including session id\n * @param {bool?} background If true, this request is a background poll, so it\n * failing will not result in the attemptAuth promise being rejected.\n * This can be set to true for requests that just poll to see if auth has\n * been completed elsewhere.\n */\n _doRequest: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(auth, background) {\n var result, errorFlows, haveFlows, requestTokenResult;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.prev = 0;\n _context3.next = 3;\n return (0, _bluebird.resolve)(this._requestCallback(auth, background));\n\n case 3:\n result = _context3.sent;\n\n this._resolveFunc(result);\n _context3.next = 30;\n break;\n\n case 7:\n _context3.prev = 7;\n _context3.t0 = _context3[\"catch\"](0);\n\n // sometimes UI auth errors don't come with flows\n errorFlows = _context3.t0.data ? _context3.t0.data.flows : null;\n haveFlows = Boolean(this._data.flows) || Boolean(errorFlows);\n\n if (_context3.t0.httpStatus !== 401 || !_context3.t0.data || !haveFlows) {\n // doesn't look like an interactive-auth failure.\n if (!background) {\n this._rejectFunc(_context3.t0);\n } else {\n // We ignore all failures here (even non-UI auth related ones)\n // since we don't want to suddenly fail if the internet connection\n // had a blip whilst we were polling\n _logger2.default.log(\"Background poll request failed doing UI auth: ignoring\", _context3.t0);\n }\n }\n // if the error didn't come with flows, completed flows or session ID,\n // copy over the ones we have. Synapse sometimes sends responses without\n // any UI auth data (eg. when polling for email validation, if the email\n // has not yet been validated). This appears to be a Synapse bug, which\n // we workaround here.\n if (!_context3.t0.data.flows && !_context3.t0.data.completed && !_context3.t0.data.session) {\n _context3.t0.data.flows = this._data.flows;\n _context3.t0.data.completed = this._data.completed;\n _context3.t0.data.session = this._data.session;\n }\n this._data = _context3.t0.data;\n this._startNextAuthStage();\n\n if (!(!this._emailSid && !this._requestingEmailToken && this._chosenFlow.stages.includes('m.login.email.identity'))) {\n _context3.next = 30;\n break;\n }\n\n // If we've picked a flow with email auth, we send the email\n // now because we want the request to fail as soon as possible\n // if the email address is not valid (ie. already taken or not\n // registered, depending on what the operation is).\n this._requestingEmailToken = true;\n _context3.prev = 17;\n _context3.next = 20;\n return (0, _bluebird.resolve)(this._requestEmailTokenCallback(this._inputs.emailAddress, this._clientSecret, 1, // TODO: Multiple send attempts?\n this._data.session));\n\n case 20:\n requestTokenResult = _context3.sent;\n\n this._emailSid = requestTokenResult.sid;\n // NB. promise is not resolved here - at some point, doRequest\n // will be called again and if the user has jumped through all\n // the hoops correctly, auth will be complete and the request\n // will succeed.\n // Also, we should expose the fact that this request has compledted\n // so clients can know that the email has actually been sent.\n _context3.next = 27;\n break;\n\n case 24:\n _context3.prev = 24;\n _context3.t1 = _context3[\"catch\"](17);\n\n // we failed to request an email token, so fail the request.\n // This could be due to the email already beeing registered\n // (or not being registered, depending on what we're trying\n // to do) or it could be a network failure. Either way, pass\n // the failure up as the user can't complete auth if we can't\n // send the email, foe whatever reason.\n this._rejectFunc(_context3.t1);\n\n case 27:\n _context3.prev = 27;\n\n this._requestingEmailToken = false;\n return _context3.finish(27);\n\n case 30:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this, [[0, 7], [17, 24, 27, 30]]);\n }));\n\n function _doRequest(_x3, _x4) {\n return _ref3.apply(this, arguments);\n }\n\n return _doRequest;\n }(),\n\n /**\n * Pick the next stage and call the callback\n *\n * @private\n * @throws {NoAuthFlowFoundError} If no suitable authentication flow can be found\n */\n _startNextAuthStage: function _startNextAuthStage() {\n var nextStage = this._chooseStage();\n if (!nextStage) {\n throw new Error(\"No incomplete flows from the server\");\n }\n this._currentStage = nextStage;\n\n if (nextStage === 'm.login.dummy') {\n this.submitAuthDict({\n type: 'm.login.dummy'\n });\n return;\n }\n\n if (this._data.errcode || this._data.error) {\n this._stateUpdatedCallback(nextStage, {\n errcode: this._data.errcode || \"\",\n error: this._data.error || \"\"\n });\n return;\n }\n\n var stageStatus = {};\n if (nextStage == EMAIL_STAGE_TYPE) {\n stageStatus.emailSid = this._emailSid;\n }\n this._stateUpdatedCallback(nextStage, stageStatus);\n },\n\n /**\n * Pick the next auth stage\n *\n * @private\n * @return {string?} login type\n * @throws {NoAuthFlowFoundError} If no suitable authentication flow can be found\n */\n _chooseStage: function _chooseStage() {\n if (this._chosenFlow === null) {\n this._chosenFlow = this._chooseFlow();\n }\n _logger2.default.log(\"Active flow => %s\", (0, _stringify2.default)(this._chosenFlow));\n var nextStage = this._firstUncompletedStage(this._chosenFlow);\n _logger2.default.log(\"Next stage: %s\", nextStage);\n return nextStage;\n },\n\n /**\n * Pick one of the flows from the returned list\n * If a flow using all of the inputs is found, it will\n * be returned, otherwise, null will be returned.\n *\n * Only flows using all given inputs are chosen because it\n * is likley to be surprising if the user provides a\n * credential and it is not used. For example, for registration,\n * this could result in the email not being used which would leave\n * the account with no means to reset a password.\n *\n * @private\n * @return {object} flow\n * @throws {NoAuthFlowFoundError} If no suitable authentication flow can be found\n */\n _chooseFlow: function _chooseFlow() {\n var flows = this._data.flows || [];\n\n // we've been given an email or we've already done an email part\n var haveEmail = Boolean(this._inputs.emailAddress) || Boolean(this._emailSid);\n var haveMsisdn = Boolean(this._inputs.phoneCountry) && Boolean(this._inputs.phoneNumber);\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(flows), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var flow = _step.value;\n\n var flowHasEmail = false;\n var flowHasMsisdn = false;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(flow.stages), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var stage = _step2.value;\n\n if (stage === EMAIL_STAGE_TYPE) {\n flowHasEmail = true;\n } else if (stage == MSISDN_STAGE_TYPE) {\n flowHasMsisdn = true;\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n if (flowHasEmail == haveEmail && flowHasMsisdn == haveMsisdn) {\n return flow;\n }\n }\n // Throw an error with a fairly generic description, but with more\n // information such that the app can give a better one if so desired.\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var err = new Error(\"No appropriate authentication flow found\");\n err.name = 'NoAuthFlowFoundError';\n err.required_stages = [];\n if (haveEmail) err.required_stages.push(EMAIL_STAGE_TYPE);\n if (haveMsisdn) err.required_stages.push(MSISDN_STAGE_TYPE);\n err.available_flows = flows;\n throw err;\n },\n\n /**\n * Get the first uncompleted stage in the given flow\n *\n * @private\n * @param {object} flow\n * @return {string} login type\n */\n _firstUncompletedStage: function _firstUncompletedStage(flow) {\n var completed = (this._data || {}).completed || [];\n for (var i = 0; i < flow.stages.length; ++i) {\n var stageType = flow.stages[i];\n if (completed.indexOf(stageType) === -1) {\n return stageType;\n }\n }\n }\n};\n\n/** */\nmodule.exports = InteractiveAuth;\n//# sourceMappingURL=interactive-auth.js.map","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly,\n charset\n) {\n var obj = object;\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = obj.join(',');\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key') : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key');\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value'))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (skipNulls && obj[key] === null) {\n continue;\n }\n\n if (isArray(obj)) {\n pushToArray(values, stringify(\n obj[key],\n typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly,\n charset\n ));\n } else {\n pushToArray(values, stringify(\n obj[key],\n prefix + (allowDots ? '.' + key : '[' + key + ']'),\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly,\n charset\n ));\n }\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && opts.encoder !== undefined && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.formatter,\n options.encodeValuesOnly,\n options.charset\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = options.decoder(part.slice(pos + 1), defaults.decoder, charset, 'value');\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (val && options.comma && val.indexOf(',') > -1) {\n val = val.split(',');\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options) {\n var leaf = val;\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new Error('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options);\n obj = utils.merge(obj, newObj, options);\n }\n\n return utils.compact(obj);\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nvar _MatrixClientPeg = require(\"../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _SettingsStore = require(\"../SettingsStore\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Gets and sets settings at the \"device\" level for the current device.\n * This handler does not make use of the roomId parameter. This handler\n * will special-case features to support legacy settings.\n */\n/*\nCopyright 2017 Travis Ralston\nCopyright 2019 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar DeviceSettingsHandler = function (_SettingsHandler) {\n (0, _inherits3.default)(DeviceSettingsHandler, _SettingsHandler);\n\n /**\n * Creates a new device settings handler\n * @param {string[]} featureNames The names of known features.\n * @param {WatchManager} watchManager The watch manager to notify updates to\n */\n function DeviceSettingsHandler(featureNames, watchManager) {\n (0, _classCallCheck3.default)(this, DeviceSettingsHandler);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DeviceSettingsHandler.__proto__ || (0, _getPrototypeOf2.default)(DeviceSettingsHandler)).call(this));\n\n _this._featureNames = featureNames;\n _this._watchers = watchManager;\n return _this;\n }\n\n (0, _createClass3.default)(DeviceSettingsHandler, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n if (this._featureNames.includes(settingName)) {\n return this._readFeature(settingName);\n }\n\n // Special case notifications\n if (settingName === \"notificationsEnabled\") {\n var value = localStorage.getItem(\"notifications_enabled\");\n if (typeof value === \"string\") return value === \"true\";\n return null; // wrong type or otherwise not set\n } else if (settingName === \"notificationBodyEnabled\") {\n var _value = localStorage.getItem(\"notifications_body_enabled\");\n if (typeof _value === \"string\") return _value === \"true\";\n return null; // wrong type or otherwise not set\n } else if (settingName === \"audioNotificationsEnabled\") {\n var _value2 = localStorage.getItem(\"audio_notifications_enabled\");\n if (typeof _value2 === \"string\") return _value2 === \"true\";\n return null; // wrong type or otherwise not set\n }\n\n var settings = this._getSettings() || {};\n return settings[settingName];\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n if (this._featureNames.includes(settingName)) {\n this._writeFeature(settingName, newValue);\n return _bluebird2.default.resolve();\n }\n\n // Special case notifications\n if (settingName === \"notificationsEnabled\") {\n localStorage.setItem(\"notifications_enabled\", newValue);\n this._watchers.notifyUpdate(settingName, null, _SettingsStore.SettingLevel.DEVICE, newValue);\n return _bluebird2.default.resolve();\n } else if (settingName === \"notificationBodyEnabled\") {\n localStorage.setItem(\"notifications_body_enabled\", newValue);\n this._watchers.notifyUpdate(settingName, null, _SettingsStore.SettingLevel.DEVICE, newValue);\n return _bluebird2.default.resolve();\n } else if (settingName === \"audioNotificationsEnabled\") {\n localStorage.setItem(\"audio_notifications_enabled\", newValue);\n this._watchers.notifyUpdate(settingName, null, _SettingsStore.SettingLevel.DEVICE, newValue);\n return _bluebird2.default.resolve();\n }\n\n var settings = this._getSettings() || {};\n settings[settingName] = newValue;\n localStorage.setItem(\"mx_local_settings\", (0, _stringify2.default)(settings));\n this._watchers.notifyUpdate(settingName, null, _SettingsStore.SettingLevel.DEVICE, newValue);\n\n return _bluebird2.default.resolve();\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n return true; // It's their device, so they should be able to\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n return localStorage !== undefined && localStorage !== null;\n }\n }, {\n key: \"watchSetting\",\n value: function watchSetting(settingName, roomId, cb) {\n this._watchers.watchSetting(settingName, roomId, cb);\n }\n }, {\n key: \"unwatchSetting\",\n value: function unwatchSetting(cb) {\n this._watchers.unwatchSetting(cb);\n }\n }, {\n key: \"_getSettings\",\n value: function _getSettings() {\n var value = localStorage.getItem(\"mx_local_settings\");\n if (!value) return null;\n return JSON.parse(value);\n }\n\n // Note: features intentionally don't use the same key as settings to avoid conflicts\n // and to be backwards compatible.\n\n }, {\n key: \"_readFeature\",\n value: function _readFeature(featureName) {\n if (_MatrixClientPeg2.default.get() && _MatrixClientPeg2.default.get().isGuest()) {\n // Guests should not have any labs features enabled.\n return false;\n }\n\n var value = localStorage.getItem(\"mx_labs_feature_\" + featureName);\n if (value === \"true\") return true;\n if (value === \"false\") return false;\n // Try to read the next config level for the feature.\n return null;\n }\n }, {\n key: \"_writeFeature\",\n value: function _writeFeature(featureName, enabled) {\n localStorage.setItem(\"mx_labs_feature_\" + featureName, enabled);\n this._watchers.notifyUpdate(featureName, null, _SettingsStore.SettingLevel.DEVICE, enabled);\n }\n }]);\n return DeviceSettingsHandler;\n}(_SettingsHandler3.default);\n\nexports.default = DeviceSettingsHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=DeviceSettingsHandler.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nvar _SettingsStore = require(\"../SettingsStore\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Gets and sets settings at the \"room-device\" level for the current device in a particular\n * room.\n */\nvar RoomDeviceSettingsHandler = function (_SettingsHandler) {\n (0, _inherits3.default)(RoomDeviceSettingsHandler, _SettingsHandler);\n\n function RoomDeviceSettingsHandler(watchManager) {\n (0, _classCallCheck3.default)(this, RoomDeviceSettingsHandler);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (RoomDeviceSettingsHandler.__proto__ || (0, _getPrototypeOf2.default)(RoomDeviceSettingsHandler)).call(this));\n\n _this._watchers = watchManager;\n return _this;\n }\n\n (0, _createClass3.default)(RoomDeviceSettingsHandler, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n // Special case blacklist setting to use legacy values\n if (settingName === \"blacklistUnverifiedDevices\") {\n var _value = this._read(\"mx_local_settings\");\n if (_value && _value['blacklistUnverifiedDevicesPerRoom']) {\n return _value['blacklistUnverifiedDevicesPerRoom'][roomId];\n }\n }\n\n var value = this._read(this._getKey(settingName, roomId));\n if (value) return value.value;\n return null;\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n // Special case blacklist setting for legacy structure\n if (settingName === \"blacklistUnverifiedDevices\") {\n var value = this._read(\"mx_local_settings\");\n if (!value) value = {};\n if (!value[\"blacklistUnverifiedDevicesPerRoom\"]) value[\"blacklistUnverifiedDevicesPerRoom\"] = {};\n value[\"blacklistUnverifiedDevicesPerRoom\"][roomId] = newValue;\n localStorage.setItem(\"mx_local_settings\", (0, _stringify2.default)(value));\n this._watchers.notifyUpdate(settingName, roomId, _SettingsStore.SettingLevel.ROOM_DEVICE, newValue);\n return _bluebird2.default.resolve();\n }\n\n if (newValue === null) {\n localStorage.removeItem(this._getKey(settingName, roomId));\n } else {\n newValue = (0, _stringify2.default)({ value: newValue });\n localStorage.setItem(this._getKey(settingName, roomId), newValue);\n }\n\n this._watchers.notifyUpdate(settingName, roomId, _SettingsStore.SettingLevel.ROOM_DEVICE, newValue);\n return _bluebird2.default.resolve();\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n return true; // It's their device, so they should be able to\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n return localStorage !== undefined && localStorage !== null;\n }\n }, {\n key: \"_read\",\n value: function _read(key) {\n var rawValue = localStorage.getItem(key);\n if (!rawValue) return null;\n return JSON.parse(rawValue);\n }\n }, {\n key: \"_getKey\",\n value: function _getKey(settingName, roomId) {\n return \"mx_setting_\" + settingName + \"_\" + roomId;\n }\n }]);\n return RoomDeviceSettingsHandler;\n}(_SettingsHandler3.default); /*\n Copyright 2017 Travis Ralston\n Copyright 2019 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = RoomDeviceSettingsHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=RoomDeviceSettingsHandler.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Gets settings at the \"default\" level. This handler does not support setting values.\n * This handler does not make use of the roomId parameter.\n */\nvar DefaultSettingsHandler = function (_SettingsHandler) {\n (0, _inherits3.default)(DefaultSettingsHandler, _SettingsHandler);\n\n /**\n * Creates a new default settings handler with the given defaults\n * @param {object} defaults The default setting values, keyed by setting name.\n * @param {object} invertedDefaults The default inverted setting values, keyed by setting name.\n */\n function DefaultSettingsHandler(defaults, invertedDefaults) {\n (0, _classCallCheck3.default)(this, DefaultSettingsHandler);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DefaultSettingsHandler.__proto__ || (0, _getPrototypeOf2.default)(DefaultSettingsHandler)).call(this));\n\n _this._defaults = defaults;\n _this._invertedDefaults = invertedDefaults;\n return _this;\n }\n\n (0, _createClass3.default)(DefaultSettingsHandler, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n var value = this._defaults[settingName];\n if (value === undefined) {\n value = this._invertedDefaults[settingName];\n }\n return value;\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n throw new Error(\"Cannot set values on the default level handler\");\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n return false;\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n return true;\n }\n }]);\n return DefaultSettingsHandler;\n}(_SettingsHandler3.default); /*\n Copyright 2017 Travis Ralston\n Copyright 2019 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = DefaultSettingsHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=DefaultSettingsHandler.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _MatrixClientPeg = require(\"../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _MatrixClientBackedSettingsHandler = require(\"./MatrixClientBackedSettingsHandler\");\n\nvar _MatrixClientBackedSettingsHandler2 = _interopRequireDefault(_MatrixClientBackedSettingsHandler);\n\nvar _SettingsStore = require(\"../SettingsStore\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Gets and sets settings at the \"room-account\" level for the current user.\n */\nvar RoomAccountSettingsHandler = function (_MatrixClientBackedSe) {\n (0, _inherits3.default)(RoomAccountSettingsHandler, _MatrixClientBackedSe);\n\n function RoomAccountSettingsHandler(watchManager) {\n (0, _classCallCheck3.default)(this, RoomAccountSettingsHandler);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (RoomAccountSettingsHandler.__proto__ || (0, _getPrototypeOf2.default)(RoomAccountSettingsHandler)).call(this));\n\n _this._watchers = watchManager;\n _this._onAccountData = _this._onAccountData.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(RoomAccountSettingsHandler, [{\n key: \"initMatrixClient\",\n value: function initMatrixClient(oldClient, newClient) {\n if (oldClient) {\n oldClient.removeListener(\"Room.accountData\", this._onAccountData);\n }\n\n newClient.on(\"Room.accountData\", this._onAccountData);\n }\n }, {\n key: \"_onAccountData\",\n value: function _onAccountData(event, room) {\n var roomId = room.roomId;\n\n if (event.getType() === \"org.matrix.room.preview_urls\") {\n var val = event.getContent()['disable'];\n if (typeof val !== \"boolean\") {\n val = null;\n } else {\n val = !val;\n }\n\n this._watchers.notifyUpdate(\"urlPreviewsEnabled\", roomId, _SettingsStore.SettingLevel.ROOM_ACCOUNT, val);\n } else if (event.getType() === \"org.matrix.room.color_scheme\") {\n this._watchers.notifyUpdate(\"roomColor\", roomId, _SettingsStore.SettingLevel.ROOM_ACCOUNT, event.getContent());\n } else if (event.getType() === \"im.vector.web.settings\") {\n // We can't really discern what changed, so trigger updates for everything\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(event.getContent())), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var settingName = _step.value;\n\n var _val = event.getContent()[settingName];\n this._watchers.notifyUpdate(settingName, roomId, _SettingsStore.SettingLevel.ROOM_ACCOUNT, _val);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }\n }, {\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n // Special case URL previews\n if (settingName === \"urlPreviewsEnabled\") {\n var content = this._getSettings(roomId, \"org.matrix.room.preview_urls\") || {};\n\n // Check to make sure that we actually got a boolean\n if (typeof content['disable'] !== \"boolean\") return null;\n return !content['disable'];\n }\n\n // Special case room color\n if (settingName === \"roomColor\") {\n // The event content should already be in an appropriate format, we just need\n // to get the right value.\n // don't fallback to {} because thats truthy and would imply there is an event specifying tint\n return this._getSettings(roomId, \"org.matrix.room.color_scheme\");\n }\n\n var settings = this._getSettings(roomId) || {};\n return settings[settingName];\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n // Special case URL previews\n if (settingName === \"urlPreviewsEnabled\") {\n var _content = this._getSettings(roomId, \"org.matrix.room.preview_urls\") || {};\n _content['disable'] = !newValue;\n return _MatrixClientPeg2.default.get().setRoomAccountData(roomId, \"org.matrix.room.preview_urls\", _content);\n }\n\n // Special case room color\n if (settingName === \"roomColor\") {\n // The new value should match our requirements, we just need to store it in the right place.\n return _MatrixClientPeg2.default.get().setRoomAccountData(roomId, \"org.matrix.room.color_scheme\", newValue);\n }\n\n var content = this._getSettings(roomId) || {};\n content[settingName] = newValue;\n return _MatrixClientPeg2.default.get().setRoomAccountData(roomId, \"im.vector.web.settings\", content);\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n var room = _MatrixClientPeg2.default.get().getRoom(roomId);\n\n // If they have the room, they can set their own account data\n return room !== undefined && room !== null;\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n var cli = _MatrixClientPeg2.default.get();\n return cli !== undefined && cli !== null;\n }\n }, {\n key: \"_getSettings\",\n value: function _getSettings(roomId) {\n var eventType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"im.vector.web.settings\";\n\n var room = _MatrixClientPeg2.default.get().getRoom(roomId);\n if (!room) return null;\n\n var event = room.getAccountData(eventType);\n if (!event || !event.getContent()) return null;\n return event.getContent();\n }\n }]);\n return RoomAccountSettingsHandler;\n}(_MatrixClientBackedSettingsHandler2.default); /*\n Copyright 2017 Travis Ralston\n Copyright 2019 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = RoomAccountSettingsHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=RoomAccountSettingsHandler.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _MatrixClientPeg = require(\"../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _MatrixClientBackedSettingsHandler = require(\"./MatrixClientBackedSettingsHandler\");\n\nvar _MatrixClientBackedSettingsHandler2 = _interopRequireDefault(_MatrixClientBackedSettingsHandler);\n\nvar _SettingsStore = require(\"../SettingsStore\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar BREADCRUMBS_EVENT_TYPE = \"im.vector.riot.breadcrumb_rooms\";\n\n/**\n * Gets and sets settings at the \"account\" level for the current user.\n * This handler does not make use of the roomId parameter.\n */\n/*\nCopyright 2017 Travis Ralston\nCopyright 2019 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar AccountSettingsHandler = function (_MatrixClientBackedSe) {\n (0, _inherits3.default)(AccountSettingsHandler, _MatrixClientBackedSe);\n\n function AccountSettingsHandler(watchManager) {\n (0, _classCallCheck3.default)(this, AccountSettingsHandler);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (AccountSettingsHandler.__proto__ || (0, _getPrototypeOf2.default)(AccountSettingsHandler)).call(this));\n\n _this._watchers = watchManager;\n _this._onAccountData = _this._onAccountData.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(AccountSettingsHandler, [{\n key: \"initMatrixClient\",\n value: function initMatrixClient(oldClient, newClient) {\n if (oldClient) {\n oldClient.removeListener(\"accountData\", this._onAccountData);\n }\n\n newClient.on(\"accountData\", this._onAccountData);\n }\n }, {\n key: \"_onAccountData\",\n value: function _onAccountData(event) {\n if (event.getType() === \"org.matrix.preview_urls\") {\n var val = event.getContent()['disable'];\n if (typeof val !== \"boolean\") {\n val = null;\n } else {\n val = !val;\n }\n\n this._watchers.notifyUpdate(\"urlPreviewsEnabled\", null, _SettingsStore.SettingLevel.ACCOUNT, val);\n } else if (event.getType() === \"im.vector.web.settings\") {\n // We can't really discern what changed, so trigger updates for everything\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(event.getContent())), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var settingName = _step.value;\n\n var _val = event.getContent()[settingName];\n this._watchers.notifyUpdate(settingName, null, _SettingsStore.SettingLevel.ACCOUNT, _val);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n } else if (event.getType() === BREADCRUMBS_EVENT_TYPE) {\n var _val2 = event.getContent()['rooms'] || [];\n this._watchers.notifyUpdate(\"breadcrumb_rooms\", null, _SettingsStore.SettingLevel.ACCOUNT, _val2);\n }\n }\n }, {\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n // Special case URL previews\n if (settingName === \"urlPreviewsEnabled\") {\n var content = this._getSettings(\"org.matrix.preview_urls\") || {};\n\n // Check to make sure that we actually got a boolean\n if (typeof content['disable'] !== \"boolean\") return null;\n return !content['disable'];\n }\n\n // Special case for breadcrumbs\n if (settingName === \"breadcrumb_rooms\") {\n var _content = this._getSettings(BREADCRUMBS_EVENT_TYPE) || {};\n return _content['rooms'] || [];\n }\n\n var settings = this._getSettings() || {};\n var preferredValue = settings[settingName];\n\n if (preferredValue === null || preferredValue === undefined) {\n // Honour the old setting on read only\n if (settingName === \"hideAvatarChanges\" || settingName === \"hideDisplaynameChanges\") {\n preferredValue = settings[\"hideAvatarDisplaynameChanges\"];\n }\n }\n\n return preferredValue;\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n // Special case URL previews\n if (settingName === \"urlPreviewsEnabled\") {\n var _content2 = this._getSettings(\"org.matrix.preview_urls\") || {};\n _content2['disable'] = !newValue;\n return _MatrixClientPeg2.default.get().setAccountData(\"org.matrix.preview_urls\", _content2);\n }\n\n // Special case for breadcrumbs\n if (settingName === \"breadcrumb_rooms\") {\n var _content3 = this._getSettings(BREADCRUMBS_EVENT_TYPE) || {};\n _content3['rooms'] = newValue;\n return _MatrixClientPeg2.default.get().setAccountData(BREADCRUMBS_EVENT_TYPE, _content3);\n }\n\n var content = this._getSettings() || {};\n content[settingName] = newValue;\n return _MatrixClientPeg2.default.get().setAccountData(\"im.vector.web.settings\", content);\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n return true; // It's their account, so they should be able to\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n var cli = _MatrixClientPeg2.default.get();\n return cli !== undefined && cli !== null;\n }\n }, {\n key: \"_getSettings\",\n value: function _getSettings() {\n var eventType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"im.vector.web.settings\";\n\n var cli = _MatrixClientPeg2.default.get();\n if (!cli) return null;\n\n var event = cli.getAccountData(eventType);\n if (!event || !event.getContent()) return null;\n return event.getContent();\n }\n }]);\n return AccountSettingsHandler;\n}(_MatrixClientBackedSettingsHandler2.default);\n\nexports.default = AccountSettingsHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=AccountSettingsHandler.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _MatrixClientPeg = require(\"../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _MatrixClientBackedSettingsHandler = require(\"./MatrixClientBackedSettingsHandler\");\n\nvar _MatrixClientBackedSettingsHandler2 = _interopRequireDefault(_MatrixClientBackedSettingsHandler);\n\nvar _SettingsStore = require(\"../SettingsStore\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Gets and sets settings at the \"room\" level.\n */\nvar RoomSettingsHandler = function (_MatrixClientBackedSe) {\n (0, _inherits3.default)(RoomSettingsHandler, _MatrixClientBackedSe);\n\n function RoomSettingsHandler(watchManager) {\n (0, _classCallCheck3.default)(this, RoomSettingsHandler);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (RoomSettingsHandler.__proto__ || (0, _getPrototypeOf2.default)(RoomSettingsHandler)).call(this));\n\n _this._watchers = watchManager;\n _this._onEvent = _this._onEvent.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(RoomSettingsHandler, [{\n key: \"initMatrixClient\",\n value: function initMatrixClient(oldClient, newClient) {\n if (oldClient) {\n oldClient.removeListener(\"RoomState.events\", this._onEvent);\n }\n\n newClient.on(\"RoomState.events\", this._onEvent);\n }\n }, {\n key: \"_onEvent\",\n value: function _onEvent(event) {\n var roomId = event.getRoomId();\n\n if (event.getType() === \"org.matrix.room.preview_urls\") {\n var val = event.getContent()['disable'];\n if (typeof val !== \"boolean\") {\n val = null;\n } else {\n val = !val;\n }\n\n this._watchers.notifyUpdate(\"urlPreviewsEnabled\", roomId, _SettingsStore.SettingLevel.ROOM, val);\n } else if (event.getType() === \"im.vector.web.settings\") {\n // We can't really discern what changed, so trigger updates for everything\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(event.getContent())), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var settingName = _step.value;\n\n this._watchers.notifyUpdate(settingName, roomId, _SettingsStore.SettingLevel.ROOM, event.getContent()[settingName]);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }\n }, {\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n // Special case URL previews\n if (settingName === \"urlPreviewsEnabled\") {\n var content = this._getSettings(roomId, \"org.matrix.room.preview_urls\") || {};\n\n // Check to make sure that we actually got a boolean\n if (typeof content['disable'] !== \"boolean\") return null;\n return !content['disable'];\n }\n\n var settings = this._getSettings(roomId) || {};\n return settings[settingName];\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n // Special case URL previews\n if (settingName === \"urlPreviewsEnabled\") {\n var _content = this._getSettings(roomId, \"org.matrix.room.preview_urls\") || {};\n _content['disable'] = !newValue;\n return _MatrixClientPeg2.default.get().sendStateEvent(roomId, \"org.matrix.room.preview_urls\", _content);\n }\n\n var content = this._getSettings(roomId) || {};\n content[settingName] = newValue;\n return _MatrixClientPeg2.default.get().sendStateEvent(roomId, \"im.vector.web.settings\", content, \"\");\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n var cli = _MatrixClientPeg2.default.get();\n var room = cli.getRoom(roomId);\n\n var eventType = \"im.vector.web.settings\";\n if (settingName === \"urlPreviewsEnabled\") eventType = \"org.matrix.room.preview_urls\";\n\n if (!room) return false;\n return room.currentState.maySendStateEvent(eventType, cli.getUserId());\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n var cli = _MatrixClientPeg2.default.get();\n return cli !== undefined && cli !== null;\n }\n }, {\n key: \"_getSettings\",\n value: function _getSettings(roomId) {\n var eventType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"im.vector.web.settings\";\n\n var room = _MatrixClientPeg2.default.get().getRoom(roomId);\n if (!room) return null;\n\n var event = room.currentState.getStateEvents(eventType, \"\");\n if (!event || !event.getContent()) return null;\n return event.getContent();\n }\n }]);\n return RoomSettingsHandler;\n}(_MatrixClientBackedSettingsHandler2.default); /*\n Copyright 2017 Travis Ralston\n Copyright 2019 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = RoomSettingsHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=RoomSettingsHandler.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nvar _SdkConfig = require(\"../../SdkConfig\");\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Gets and sets settings at the \"config\" level. This handler does not make use of the\n * roomId parameter.\n */\n/*\nCopyright 2017 Travis Ralston\nCopyright 2019 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar ConfigSettingsHandler = function (_SettingsHandler) {\n (0, _inherits3.default)(ConfigSettingsHandler, _SettingsHandler);\n\n function ConfigSettingsHandler() {\n (0, _classCallCheck3.default)(this, ConfigSettingsHandler);\n return (0, _possibleConstructorReturn3.default)(this, (ConfigSettingsHandler.__proto__ || (0, _getPrototypeOf2.default)(ConfigSettingsHandler)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(ConfigSettingsHandler, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n var config = _SdkConfig2.default.get() || {};\n\n // Special case themes\n if (settingName === \"theme\") {\n return config[\"default_theme\"];\n }\n\n var settingsConfig = config[\"settingDefaults\"];\n if (!settingsConfig || !settingsConfig[settingName]) return null;\n return settingsConfig[settingName];\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n throw new Error(\"Cannot change settings at the config level\");\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n return false;\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n return true; // SdkConfig is always there\n }\n }]);\n return ConfigSettingsHandler;\n}(_SettingsHandler3.default);\n\nexports.default = ConfigSettingsHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=ConfigSettingsHandler.js.map","'use strict';\n\nvar extend = require('extend');\nvar isArray = require('util').isArray;\nvar isDate = require('util').isDate;\nvar sprintf = require(\"sprintf-js\").sprintf;\nvar events = require('events');\nvar except = require('except');\n\nvar strftime = require('./strftime');\n\nvar translationScope = 'counterpart';\n\nfunction isString(val) {\n return typeof val === 'string' || Object.prototype.toString.call(val) === '[object String]';\n}\n\nfunction isFunction(val) {\n return typeof val === 'function' || Object.prototype.toString.call(val) === '[object Function]';\n}\n\nfunction isPlainObject(val) {\n //Deal with older browsers (IE8) that don't return [object Null] in this case.\n if (val === null) {\n return false;\n }\n return Object.prototype.toString.call(val) === '[object Object]';\n}\n\nfunction isSymbol(key) {\n return isString(key) && key[0] === ':';\n}\n\nfunction hasOwnProp(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction getEntry(translations, keys) {\n return keys.reduce(function(result, key) {\n if (isPlainObject(result) && hasOwnProp(result, key)) {\n return result[key];\n } else {\n return null;\n }\n }, translations);\n}\n\nfunction Counterpart() {\n events.EventEmitter.apply(this);\n\n this._registry = {\n locale: 'en',\n interpolate: true,\n fallbackLocales: [],\n scope: null,\n translations: {},\n interpolations: {},\n normalizedKeys: {},\n separator: '.',\n keepTrailingDot: false,\n keyTransformer: function(key) { return key; },\n generateMissingEntry: function(key) { return 'missing translation: ' + key; }\n };\n\n this.registerTranslations('en', require('./locales/en'));\n this.setMaxListeners(0);\n}\n\nCounterpart.prototype = events.EventEmitter.prototype;\nCounterpart.prototype.constructor = events.EventEmitter;\n\nCounterpart.prototype.getLocale = function() {\n return this._registry.locale;\n};\n\nCounterpart.prototype.setLocale = function(value) {\n var previous = this._registry.locale;\n\n if (previous != value) {\n this._registry.locale = value;\n this.emit('localechange', value, previous);\n }\n\n return previous;\n};\n\nCounterpart.prototype.getFallbackLocale = function() {\n return this._registry.fallbackLocales;\n};\n\nCounterpart.prototype.setFallbackLocale = function(value) {\n var previous = this._registry.fallbackLocales;\n this._registry.fallbackLocales = [].concat(value || []);\n return previous;\n};\n\nCounterpart.prototype.getAvailableLocales = function() {\n return this._registry.availableLocales || Object.keys(this._registry.translations);\n};\n\nCounterpart.prototype.setAvailableLocales = function(value) {\n var previous = this.getAvailableLocales();\n this._registry.availableLocales = value;\n return previous;\n};\n\nCounterpart.prototype.getSeparator = function() {\n return this._registry.separator;\n};\n\nCounterpart.prototype.setSeparator = function(value) {\n var previous = this._registry.separator;\n this._registry.separator = value;\n return previous;\n};\n\nCounterpart.prototype.setInterpolate = function(value) {\n var previous = this._registry.interpolate;\n this._registry.interpolate = value;\n return previous;\n};\n\nCounterpart.prototype.getInterpolate = function() {\n return this._registry.interpolate;\n};\n\nCounterpart.prototype.setKeyTransformer = function(value) {\n var previous = this._registry.keyTransformer;\n this._registry.keyTransformer = value;\n return previous;\n};\n\nCounterpart.prototype.getKeyTransformer = function() {\n return this._registry.keyTransformer;\n};\n\nCounterpart.prototype.setMissingEntryGenerator = function(value) {\n var previous = this._registry.generateMissingEntry;\n this._registry.generateMissingEntry = value;\n return previous;\n};\n\nCounterpart.prototype.getMissingEntryGenerator = function() {\n return this._registry.generateMissingEntry;\n};\n\nCounterpart.prototype.registerTranslations = function(locale, data) {\n var translations = {};\n translations[locale] = data;\n extend(true, this._registry.translations, translations);\n return translations;\n};\n\nCounterpart.prototype.registerInterpolations = function(data) {\n return extend(true, this._registry.interpolations, data);\n};\n\nCounterpart.prototype.onLocaleChange =\nCounterpart.prototype.addLocaleChangeListener = function(callback) {\n this.addListener('localechange', callback);\n};\n\nCounterpart.prototype.offLocaleChange =\nCounterpart.prototype.removeLocaleChangeListener = function(callback) {\n this.removeListener('localechange', callback);\n};\n\nCounterpart.prototype.onTranslationNotFound =\nCounterpart.prototype.addTranslationNotFoundListener = function(callback) {\n this.addListener('translationnotfound', callback);\n};\n\nCounterpart.prototype.offTranslationNotFound =\nCounterpart.prototype.removeTranslationNotFoundListener = function(callback) {\n this.removeListener('translationnotfound', callback);\n};\n\nCounterpart.prototype.onError =\nCounterpart.prototype.addErrorListener = function(callback) {\n this.addListener('error', callback);\n};\n\nCounterpart.prototype.offError =\nCounterpart.prototype.removeErrorListener = function(callback) {\n this.removeListener('error', callback);\n};\n\nCounterpart.prototype.translate = function(key, options) {\n if (!isArray(key) && !isString(key) || !key.length) {\n throw new Error('invalid argument: key');\n }\n\n if (isSymbol(key)) {\n key = key.substr(1);\n }\n\n key = this._registry.keyTransformer(key, options);\n\n options = extend(true, {}, options);\n\n var locale = options.locale || this._registry.locale;\n delete options.locale;\n\n var scope = options.scope || this._registry.scope;\n delete options.scope;\n\n var separator = options.separator || this._registry.separator;\n delete options.separator;\n\n var fallbackLocales = [].concat(options.fallbackLocale || this._registry.fallbackLocales);\n delete options.fallbackLocale;\n\n var keys = this._normalizeKeys(locale, scope, key, separator);\n\n var entry = getEntry(this._registry.translations, keys);\n\n if (entry === null) {\n this.emit('translationnotfound', locale, key, options.fallback, scope);\n\n if (options.fallback) {\n entry = this._fallback(locale, scope, key, options.fallback, options);\n }\n }\n\n if (entry === null && fallbackLocales.length > 0 && fallbackLocales.indexOf(locale) === -1) {\n for (var i = 0, ii = fallbackLocales.length; i < ii; i++) {\n var fallbackLocale = fallbackLocales[i];\n var fallbackKeys = this._normalizeKeys(fallbackLocale, scope, key, separator);\n entry = getEntry(this._registry.translations, fallbackKeys);\n\n if (entry) {\n locale = fallbackLocale;\n break;\n }\n }\n }\n\n if (entry === null) {\n entry = this._registry.generateMissingEntry(keys.join(separator));\n }\n\n entry = this._pluralize(locale, entry, options.count);\n\n if (this._registry.interpolate !== false && options.interpolate !== false) {\n entry = this._interpolate(entry, options);\n }\n\n return entry;\n};\n\nCounterpart.prototype.localize = function(object, options) {\n if (!isDate(object)) {\n throw new Error('invalid argument: object must be a date');\n }\n\n options = extend(true, {}, options);\n\n var locale = options.locale || this._registry.locale;\n var scope = options.scope || translationScope;\n var type = options.type || 'datetime';\n var format = options.format || 'default';\n\n options = { locale: locale, scope: scope, interpolate: false };\n format = this.translate(['formats', type, format], extend(true, {}, options));\n\n return strftime(object, format, this.translate('names', options));\n};\n\nCounterpart.prototype._pluralize = function(locale, entry, count) {\n if (typeof entry !== 'object' || entry === null || typeof count !== 'number') {\n return entry;\n }\n\n var pluralizeFunc = this.translate('pluralize', { locale: locale, scope: translationScope });\n\n if (Object.prototype.toString.call(pluralizeFunc) !== '[object Function]') {\n return pluralizeFunc;\n }\n\n return pluralizeFunc(entry, count);\n};\n\nCounterpart.prototype.withLocale = function(locale, callback, context) {\n var previous = this._registry.locale;\n this._registry.locale = locale;\n var result = callback.call(context);\n this._registry.locale = previous;\n return result;\n};\n\nCounterpart.prototype.withScope = function(scope, callback, context) {\n var previous = this._registry.scope;\n this._registry.scope = scope;\n var result = callback.call(context);\n this._registry.scope = previous;\n return result;\n};\n\nCounterpart.prototype.withSeparator = function(separator, callback, context) {\n var previous = this.setSeparator(separator);\n var result = callback.call(context);\n this.setSeparator(previous);\n return result;\n};\n\nCounterpart.prototype._normalizeKeys = function(locale, scope, key, separator) {\n var keys = [];\n\n keys = keys.concat(this._normalizeKey(locale, separator));\n keys = keys.concat(this._normalizeKey(scope, separator));\n keys = keys.concat(this._normalizeKey(key, separator));\n\n return keys;\n};\n\nCounterpart.prototype._normalizeKey = function(key, separator) {\n this._registry.normalizedKeys[separator] = this._registry.normalizedKeys[separator] || {};\n\n this._registry.normalizedKeys[separator][key] = this._registry.normalizedKeys[separator][key] || (function(key) {\n if (isArray(key)) {\n var normalizedKeyArray = key.map(function(k) { return this._normalizeKey(k, separator); }.bind(this));\n\n return [].concat.apply([], normalizedKeyArray);\n } else {\n if (typeof key === 'undefined' || key === null) {\n return [];\n }\n\n var keys = key.split(separator);\n\n for (var i = keys.length - 1; i >= 0; i--) {\n if (keys[i] === '') {\n keys.splice(i, 1);\n\n if (this._registry.keepTrailingDot === true && i == keys.length) {\n keys[keys.length - 1] += '' + separator;\n }\n }\n }\n\n return keys;\n }\n }.bind(this))(key);\n\n return this._registry.normalizedKeys[separator][key];\n};\n\nCounterpart.prototype._interpolate = function(entry, values) {\n if (typeof entry !== 'string') {\n return entry;\n }\n\n try {\n return sprintf(entry, extend({}, this._registry.interpolations, values));\n } catch (err) {\n if (this.listenerCount('error') > 0) {\n this.emit('error', err, entry, values);\n } else {\n throw err;\n }\n return null;\n }\n};\n\nCounterpart.prototype._resolve = function(locale, scope, object, subject, options) {\n options = options || {};\n\n if (options.resolve === false) {\n return subject;\n }\n\n var result;\n\n if (isSymbol(subject)) {\n result = this.translate(subject, extend({}, options, { locale: locale, scope: scope }));\n } else if (isFunction(subject)) {\n var dateOrTime;\n\n if (options.object) {\n dateOrTime = options.object;\n delete options.object;\n } else {\n dateOrTime = object;\n }\n\n result = this._resolve(locale, scope, object, subject(dateOrTime, options));\n } else {\n result = subject;\n }\n\n return /^missing translation:/.test(result) ? null : result;\n};\n\nCounterpart.prototype._fallback = function(locale, scope, object, subject, options) {\n options = except(options, 'fallback');\n\n if (isArray(subject)) {\n for (var i = 0, ii = subject.length; i < ii; i++) {\n var result = this._resolve(locale, scope, object, subject[i], options);\n\n if (result) {\n return result;\n }\n }\n\n return null;\n } else {\n return this._resolve(locale, scope, object, subject, options);\n }\n};\n\nvar instance = new Counterpart();\n\nfunction translate() {\n return instance.translate.apply(instance, arguments);\n}\n\nextend(translate, instance, {\n Instance: Counterpart,\n Translator: Counterpart\n});\n\nmodule.exports = translate;\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","/* global window, exports, define */\n\n!function() {\n 'use strict'\n\n var re = {\n not_string: /[^s]/,\n not_bool: /[^t]/,\n not_type: /[^T]/,\n not_primitive: /[^v]/,\n number: /[diefg]/,\n numeric_arg: /[bcdiefguxX]/,\n json: /[j]/,\n not_json: /[^j]/,\n text: /^[^\\x25]+/,\n modulo: /^\\x25{2}/,\n placeholder: /^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,\n key: /^([a-z_][a-z_\\d]*)/i,\n key_access: /^\\.([a-z_][a-z_\\d]*)/i,\n index_access: /^\\[(\\d+)\\]/,\n sign: /^[+-]/\n }\n\n function sprintf(key) {\n // `arguments` is not an array, but should be fine for this call\n return sprintf_format(sprintf_parse(key), arguments)\n }\n\n function vsprintf(fmt, argv) {\n return sprintf.apply(null, [fmt].concat(argv || []))\n }\n\n function sprintf_format(parse_tree, argv) {\n var cursor = 1, tree_length = parse_tree.length, arg, output = '', i, k, ph, pad, pad_character, pad_length, is_positive, sign\n for (i = 0; i < tree_length; i++) {\n if (typeof parse_tree[i] === 'string') {\n output += parse_tree[i]\n }\n else if (typeof parse_tree[i] === 'object') {\n ph = parse_tree[i] // convenience purposes only\n if (ph.keys) { // keyword argument\n arg = argv[cursor]\n for (k = 0; k < ph.keys.length; k++) {\n if (arg == undefined) {\n throw new Error(sprintf('[sprintf] Cannot access property \"%s\" of undefined value \"%s\"', ph.keys[k], ph.keys[k-1]))\n }\n arg = arg[ph.keys[k]]\n }\n }\n else if (ph.param_no) { // positional argument (explicit)\n arg = argv[ph.param_no]\n }\n else { // positional argument (implicit)\n arg = argv[cursor++]\n }\n\n if (re.not_type.test(ph.type) && re.not_primitive.test(ph.type) && arg instanceof Function) {\n arg = arg()\n }\n\n if (re.numeric_arg.test(ph.type) && (typeof arg !== 'number' && isNaN(arg))) {\n throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg))\n }\n\n if (re.number.test(ph.type)) {\n is_positive = arg >= 0\n }\n\n switch (ph.type) {\n case 'b':\n arg = parseInt(arg, 10).toString(2)\n break\n case 'c':\n arg = String.fromCharCode(parseInt(arg, 10))\n break\n case 'd':\n case 'i':\n arg = parseInt(arg, 10)\n break\n case 'j':\n arg = JSON.stringify(arg, null, ph.width ? parseInt(ph.width) : 0)\n break\n case 'e':\n arg = ph.precision ? parseFloat(arg).toExponential(ph.precision) : parseFloat(arg).toExponential()\n break\n case 'f':\n arg = ph.precision ? parseFloat(arg).toFixed(ph.precision) : parseFloat(arg)\n break\n case 'g':\n arg = ph.precision ? String(Number(arg.toPrecision(ph.precision))) : parseFloat(arg)\n break\n case 'o':\n arg = (parseInt(arg, 10) >>> 0).toString(8)\n break\n case 's':\n arg = String(arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 't':\n arg = String(!!arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'T':\n arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'u':\n arg = parseInt(arg, 10) >>> 0\n break\n case 'v':\n arg = arg.valueOf()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'x':\n arg = (parseInt(arg, 10) >>> 0).toString(16)\n break\n case 'X':\n arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase()\n break\n }\n if (re.json.test(ph.type)) {\n output += arg\n }\n else {\n if (re.number.test(ph.type) && (!is_positive || ph.sign)) {\n sign = is_positive ? '+' : '-'\n arg = arg.toString().replace(re.sign, '')\n }\n else {\n sign = ''\n }\n pad_character = ph.pad_char ? ph.pad_char === '0' ? '0' : ph.pad_char.charAt(1) : ' '\n pad_length = ph.width - (sign + arg).length\n pad = ph.width ? (pad_length > 0 ? pad_character.repeat(pad_length) : '') : ''\n output += ph.align ? sign + arg + pad : (pad_character === '0' ? sign + pad + arg : pad + sign + arg)\n }\n }\n }\n return output\n }\n\n var sprintf_cache = Object.create(null)\n\n function sprintf_parse(fmt) {\n if (sprintf_cache[fmt]) {\n return sprintf_cache[fmt]\n }\n\n var _fmt = fmt, match, parse_tree = [], arg_names = 0\n while (_fmt) {\n if ((match = re.text.exec(_fmt)) !== null) {\n parse_tree.push(match[0])\n }\n else if ((match = re.modulo.exec(_fmt)) !== null) {\n parse_tree.push('%')\n }\n else if ((match = re.placeholder.exec(_fmt)) !== null) {\n if (match[2]) {\n arg_names |= 1\n var field_list = [], replacement_field = match[2], field_match = []\n if ((field_match = re.key.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {\n if ((field_match = re.key_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else if ((field_match = re.index_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n }\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n match[2] = field_list\n }\n else {\n arg_names |= 2\n }\n if (arg_names === 3) {\n throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported')\n }\n\n parse_tree.push(\n {\n placeholder: match[0],\n param_no: match[1],\n keys: match[2],\n sign: match[3],\n pad_char: match[4],\n align: match[5],\n width: match[6],\n precision: match[7],\n type: match[8]\n }\n )\n }\n else {\n throw new SyntaxError('[sprintf] unexpected placeholder')\n }\n _fmt = _fmt.substring(match[0].length)\n }\n return sprintf_cache[fmt] = parse_tree\n }\n\n /**\n * export to either browser or node.js\n */\n /* eslint-disable quote-props */\n if (typeof exports !== 'undefined') {\n exports['sprintf'] = sprintf\n exports['vsprintf'] = vsprintf\n }\n if (typeof window !== 'undefined') {\n window['sprintf'] = sprintf\n window['vsprintf'] = vsprintf\n\n if (typeof define === 'function' && define['amd']) {\n define(function() {\n return {\n 'sprintf': sprintf,\n 'vsprintf': vsprintf\n }\n })\n }\n }\n /* eslint-enable quote-props */\n}(); // eslint-disable-line\n","'use strict';\n\nvar ap = Array.prototype;\nvar concat = ap.concat;\nvar slice = ap.slice;\nvar indexOf = require('indexof');\n\nfunction except(object) {\n var result = {};\n var keys = concat.apply(ap, slice.call(arguments, 1));\n\n for (var key in object) {\n if (indexOf(keys, key) === -1) {\n result[key] = object[key];\n }\n }\n\n return result;\n}\n\nmodule.exports = except;\n","\nvar indexOf = [].indexOf;\n\nmodule.exports = function(arr, obj){\n if (indexOf) return arr.indexOf(obj);\n for (var i = 0; i < arr.length; ++i) {\n if (arr[i] === obj) return i;\n }\n return -1;\n};","'use strict';\n\nvar dateNames = require('date-names');\n\nfunction strftime(date, format, names) {\n var timestamp = date.getTime();\n\n names = names || dateNames;\n\n return format.replace(/%([-_0]?.)/g, function(_, c) {\n var padding = null;\n\n if (c.length == 2) {\n switch (c[0]) {\n case '-': padding = ''; break;\n case '_': padding = ' '; break;\n case '0': padding = '0'; break;\n default: return _; // should never reach this one\n }\n\n c = c[1];\n }\n\n switch (c) {\n case 'A': return names.days[date.getDay()];\n case 'a': return names.abbreviated_days[date.getDay()];\n case 'B': return names.months[date.getMonth()];\n case 'b': return names.abbreviated_months[date.getMonth()];\n case 'C': return pad(Math.floor(date.getFullYear() / 100), padding);\n case 'D': return strftime(date, '%m/%d/%y');\n case 'd': return pad(date.getDate(), padding);\n case 'e': return date.getDate();\n case 'F': return strftime(date, '%Y-%m-%d');\n case 'H': return pad(date.getHours(), padding);\n case 'h': return names.abbreviated_months[date.getMonth()];\n case 'I': return pad(hours12(date), padding);\n case 'j': return pad(Math.ceil((date.getTime() - (new Date(date.getFullYear(), 0, 1)).getTime()) / (1000 * 60 * 60 * 24)), 3);\n case 'k': return pad(date.getHours(), padding === null ? ' ' : padding);\n case 'L': return pad(Math.floor(timestamp % 1000), 3);\n case 'l': return pad(hours12(date), padding === null ? ' ' : padding);\n case 'M': return pad(date.getMinutes(), padding);\n case 'm': return pad(date.getMonth() + 1, padding);\n case 'n': return '\\n';\n case 'o': return String(date.getDate()) + ordinal(date.getDate());\n case 'P': return date.getHours() < 12 ? names.am.toLowerCase() : names.pm.toLowerCase();\n case 'p': return date.getHours() < 12 ? names.am.toUpperCase() : names.pm.toUpperCase();\n case 'R': return strftime(date, '%H:%M');\n case 'r': return strftime(date, '%I:%M:%S %p');\n case 'S': return pad(date.getSeconds(), padding);\n case 's': return Math.floor(timestamp / 1000);\n case 'T': return strftime(date, '%H:%M:%S');\n case 't': return '\\t';\n case 'U': return pad(weekNumber(date, 'sunday'), padding);\n case 'u': return date.getDay() === 0 ? 7 : date.getDay();\n case 'v': return strftime(date, '%e-%b-%Y');\n case 'W': return pad(weekNumber(date, 'monday'), padding);\n case 'w': return date.getDay();\n case 'Y': return date.getFullYear();\n case 'y': var y = String(date.getFullYear()); return y.slice(y.length - 2);\n case 'Z': var tzString = date.toString().match(/\\((\\w+)\\)/); return tzString && tzString[1] || '';\n case 'z': var off = date.getTimezoneOffset(); return (off > 0 ? '-' : '+') + pad(Math.round(Math.abs(off / 60)), 2) + ':' + pad(off % 60, 2);\n default: return c;\n }\n });\n}\n\nfunction pad(n, padding, length) {\n if (typeof padding === 'number') {\n length = padding;\n padding = '0';\n }\n\n if (padding === null) {\n padding = '0';\n }\n\n length = length || 2;\n\n var s = String(n);\n\n if (padding) {\n while (s.length < length) {\n s = padding + s;\n }\n }\n\n return s;\n}\n\nfunction hours12(date) {\n var hour = date.getHours();\n\n if (hour === 0) {\n hour = 12;\n } else if (hour > 12) {\n hour -= 12;\n }\n\n return hour;\n}\n\nfunction ordinal(n) {\n var i = n % 10, ii = n % 100;\n\n if ((ii >= 11 && ii <= 13) || i === 0 || i >= 4) {\n return 'th';\n }\n\n switch (i) {\n case 1: return 'st';\n case 2: return 'nd';\n case 3: return 'rd';\n }\n}\n\nfunction weekNumber(date, firstWeekday) {\n firstWeekday = firstWeekday || 'sunday';\n\n var wday = date.getDay();\n\n if (firstWeekday == 'monday') {\n if (wday === 0) { // Sunday\n wday = 6;\n } else {\n wday--;\n }\n }\n\n var\n firstDayOfYear = new Date(date.getFullYear(), 0, 1),\n yday = (date - firstDayOfYear) / 86400000,\n weekNum = (yday + 7 - wday) / 7;\n\n return Math.floor(weekNum);\n}\n\nmodule.exports = strftime;\n","\"use strict\";\nmodule.exports = require('./en');\n","// The translations in this file are added by default.\n\n'use strict';\n\nmodule.exports = {\n counterpart: {\n names: require('date-names/en'),\n pluralize: require('pluralizers/en'),\n\n formats: {\n date: {\n 'default': '%a, %e %b %Y',\n long: '%A, %B %o, %Y',\n short: '%b %e'\n },\n\n time: {\n 'default': '%H:%M',\n long: '%H:%M:%S %z',\n short: '%H:%M'\n },\n\n datetime: {\n 'default': '%a, %e %b %Y %H:%M',\n long: '%A, %B %o, %Y %H:%M:%S %z',\n short: '%e %b %H:%M'\n }\n }\n }\n};\n","'use strict';\n\nmodule.exports = function(entry, count) {\n var key;\n\n if (count === 0 && 'zero' in entry) {\n key = 'zero';\n }\n\n key = key || (count === 1 ? 'one' : 'other');\n\n return entry[key];\n};\n","module.exports = __webpack_public_path__ + \"i18n/languages.860c571.json\";","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nmodule.exports.Dispatcher = require('./lib/Dispatcher');\n","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Dispatcher\n * \n * @preventMunge\n */\n\n'use strict';\n\nexports.__esModule = true;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar _prefix = 'ID_';\n\n/**\n * Dispatcher is used to broadcast payloads to registered callbacks. This is\n * different from generic pub-sub systems in two ways:\n *\n * 1) Callbacks are not subscribed to particular events. Every payload is\n * dispatched to every registered callback.\n * 2) Callbacks can be deferred in whole or part until other callbacks have\n * been executed.\n *\n * For example, consider this hypothetical flight destination form, which\n * selects a default city when a country is selected:\n *\n * var flightDispatcher = new Dispatcher();\n *\n * // Keeps track of which country is selected\n * var CountryStore = {country: null};\n *\n * // Keeps track of which city is selected\n * var CityStore = {city: null};\n *\n * // Keeps track of the base flight price of the selected city\n * var FlightPriceStore = {price: null}\n *\n * When a user changes the selected city, we dispatch the payload:\n *\n * flightDispatcher.dispatch({\n * actionType: 'city-update',\n * selectedCity: 'paris'\n * });\n *\n * This payload is digested by `CityStore`:\n *\n * flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'city-update') {\n * CityStore.city = payload.selectedCity;\n * }\n * });\n *\n * When the user selects a country, we dispatch the payload:\n *\n * flightDispatcher.dispatch({\n * actionType: 'country-update',\n * selectedCountry: 'australia'\n * });\n *\n * This payload is digested by both stores:\n *\n * CountryStore.dispatchToken = flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'country-update') {\n * CountryStore.country = payload.selectedCountry;\n * }\n * });\n *\n * When the callback to update `CountryStore` is registered, we save a reference\n * to the returned token. Using this token with `waitFor()`, we can guarantee\n * that `CountryStore` is updated before the callback that updates `CityStore`\n * needs to query its data.\n *\n * CityStore.dispatchToken = flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'country-update') {\n * // `CountryStore.country` may not be updated.\n * flightDispatcher.waitFor([CountryStore.dispatchToken]);\n * // `CountryStore.country` is now guaranteed to be updated.\n *\n * // Select the default city for the new country\n * CityStore.city = getDefaultCityForCountry(CountryStore.country);\n * }\n * });\n *\n * The usage of `waitFor()` can be chained, for example:\n *\n * FlightPriceStore.dispatchToken =\n * flightDispatcher.register(function(payload) {\n * switch (payload.actionType) {\n * case 'country-update':\n * case 'city-update':\n * flightDispatcher.waitFor([CityStore.dispatchToken]);\n * FlightPriceStore.price =\n * getFlightPriceStore(CountryStore.country, CityStore.city);\n * break;\n * }\n * });\n *\n * The `country-update` payload will be guaranteed to invoke the stores'\n * registered callbacks in order: `CountryStore`, `CityStore`, then\n * `FlightPriceStore`.\n */\n\nvar Dispatcher = (function () {\n function Dispatcher() {\n _classCallCheck(this, Dispatcher);\n\n this._callbacks = {};\n this._isDispatching = false;\n this._isHandled = {};\n this._isPending = {};\n this._lastID = 1;\n }\n\n /**\n * Registers a callback to be invoked with every dispatched payload. Returns\n * a token that can be used with `waitFor()`.\n */\n\n Dispatcher.prototype.register = function register(callback) {\n var id = _prefix + this._lastID++;\n this._callbacks[id] = callback;\n return id;\n };\n\n /**\n * Removes a callback based on its token.\n */\n\n Dispatcher.prototype.unregister = function unregister(id) {\n !this._callbacks[id] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatcher.unregister(...): `%s` does not map to a registered callback.', id) : invariant(false) : undefined;\n delete this._callbacks[id];\n };\n\n /**\n * Waits for the callbacks specified to be invoked before continuing execution\n * of the current callback. This method should only be used by a callback in\n * response to a dispatched payload.\n */\n\n Dispatcher.prototype.waitFor = function waitFor(ids) {\n !this._isDispatching ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatcher.waitFor(...): Must be invoked while dispatching.') : invariant(false) : undefined;\n for (var ii = 0; ii < ids.length; ii++) {\n var id = ids[ii];\n if (this._isPending[id]) {\n !this._isHandled[id] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatcher.waitFor(...): Circular dependency detected while ' + 'waiting for `%s`.', id) : invariant(false) : undefined;\n continue;\n }\n !this._callbacks[id] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatcher.waitFor(...): `%s` does not map to a registered callback.', id) : invariant(false) : undefined;\n this._invokeCallback(id);\n }\n };\n\n /**\n * Dispatches a payload to all registered callbacks.\n */\n\n Dispatcher.prototype.dispatch = function dispatch(payload) {\n !!this._isDispatching ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch.') : invariant(false) : undefined;\n this._startDispatching(payload);\n try {\n for (var id in this._callbacks) {\n if (this._isPending[id]) {\n continue;\n }\n this._invokeCallback(id);\n }\n } finally {\n this._stopDispatching();\n }\n };\n\n /**\n * Is this Dispatcher currently dispatching.\n */\n\n Dispatcher.prototype.isDispatching = function isDispatching() {\n return this._isDispatching;\n };\n\n /**\n * Call the callback stored with the given id. Also do some internal\n * bookkeeping.\n *\n * @internal\n */\n\n Dispatcher.prototype._invokeCallback = function _invokeCallback(id) {\n this._isPending[id] = true;\n this._callbacks[id](this._pendingPayload);\n this._isHandled[id] = true;\n };\n\n /**\n * Set up bookkeeping needed when dispatching.\n *\n * @internal\n */\n\n Dispatcher.prototype._startDispatching = function _startDispatching(payload) {\n for (var id in this._callbacks) {\n this._isPending[id] = false;\n this._isHandled[id] = false;\n }\n this._pendingPayload = payload;\n this._isDispatching = true;\n };\n\n /**\n * Clear bookkeeping used for dispatching.\n *\n * @internal\n */\n\n Dispatcher.prototype._stopDispatching = function _stopDispatching() {\n delete this._pendingPayload;\n this._isDispatching = false;\n };\n\n return Dispatcher;\n})();\n\nmodule.exports = Dispatcher;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SETTINGS = undefined;\n\nvar _languageHandler = require(\"../languageHandler\");\n\nvar _NotificationControllers = require(\"./controllers/NotificationControllers\");\n\nvar _CustomStatusController = require(\"./controllers/CustomStatusController\");\n\nvar _CustomStatusController2 = _interopRequireDefault(_CustomStatusController);\n\nvar _ThemeController = require(\"./controllers/ThemeController\");\n\nvar _ThemeController2 = _interopRequireDefault(_ThemeController);\n\nvar _LowBandwidthController = require(\"./controllers/LowBandwidthController\");\n\nvar _LowBandwidthController2 = _interopRequireDefault(_LowBandwidthController);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// These are just a bunch of helper arrays to avoid copy/pasting a bunch of times\nvar LEVELS_ROOM_SETTINGS = ['device', 'room-device', 'room-account', 'account', 'config']; /*\n Copyright 2017 Travis Ralston\n Copyright 2018, 2019 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar LEVELS_ROOM_OR_ACCOUNT = ['room-account', 'account'];\nvar LEVELS_ROOM_SETTINGS_WITH_ROOM = ['device', 'room-device', 'room-account', 'account', 'config', 'room'];\nvar LEVELS_ACCOUNT_SETTINGS = ['device', 'account', 'config'];\nvar LEVELS_FEATURE = ['device', 'config'];\nvar LEVELS_DEVICE_ONLY_SETTINGS = ['device'];\nvar LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG = ['device', 'config'];\n\nvar SETTINGS = exports.SETTINGS = {\n // EXAMPLE SETTING:\n // \"my-setting\": {\n // // Must be set to true for features. Default is 'false'.\n // isFeature: false,\n //\n // // Display names are strongly recommended for clarity.\n // displayName: _td(\"Cool Name\"),\n //\n // // Display name can also be an object for different levels.\n // //displayName: {\n // // \"device\": _td(\"Name for when the setting is used at 'device'\"),\n // // \"room\": _td(\"Name for when the setting is used at 'room'\"),\n // // \"default\": _td(\"The name for all other levels\"),\n // //}\n //\n // // The supported levels are required. Preferably, use the preset arrays\n // // at the top of this file to define this rather than a custom array.\n // supportedLevels: [\n // // The order does not matter.\n //\n // \"device\", // Affects the current device only\n // \"room-device\", // Affects the current room on the current device\n // \"room-account\", // Affects the current room for the current account\n // \"account\", // Affects the current account\n // \"room\", // Affects the current room (controlled by room admins)\n // \"config\", // Affects the current application\n //\n // // \"default\" is always supported and does not get listed here.\n // ],\n //\n // // Required. Can be any data type. The value specified here should match\n // // the data being stored (ie: if a boolean is used, the setting should\n // // represent a boolean).\n // default: {\n // your: \"value\",\n // },\n //\n // // Optional settings controller. See SettingsController for more information.\n // controller: new MySettingController(),\n //\n // // Optional flag to make supportedLevels be respected as the order to handle\n // // settings. The first element is treated as \"most preferred\". The \"default\"\n // // level is always appended to the end.\n // supportedLevelsAreOrdered: false,\n //\n // // Optional value to invert a boolean setting's value. The string given will\n // // be read as the setting's ID instead of the one provided as the key for the\n // // setting definition. By setting this, the returned value will automatically\n // // be inverted, except for when the default value is returned. Inversion will\n // // occur after the controller is asked for an override. This should be used by\n // // historical settings which we don't want existing user's values be wiped. Do\n // // not use this for new settings.\n // invertedSettingName: \"my-negative-setting\",\n // },\n \"feature_pinning\": {\n isFeature: true,\n displayName: (0, _languageHandler._td)(\"Message Pinning\"),\n supportedLevels: LEVELS_FEATURE,\n default: false\n },\n \"feature_custom_status\": {\n isFeature: true,\n displayName: (0, _languageHandler._td)(\"Custom user status messages\"),\n supportedLevels: LEVELS_FEATURE,\n default: false,\n controller: new _CustomStatusController2.default()\n },\n \"feature_custom_tags\": {\n isFeature: true,\n displayName: (0, _languageHandler._td)(\"Group & filter rooms by custom tags (refresh to apply changes)\"),\n supportedLevels: LEVELS_FEATURE,\n default: false\n },\n \"feature_state_counters\": {\n isFeature: true,\n displayName: (0, _languageHandler._td)(\"Render simple counters in room header\"),\n supportedLevels: LEVELS_FEATURE,\n default: false\n },\n \"feature_cider_composer\": {\n isFeature: true,\n displayName: (0, _languageHandler._td)(\"Use the new, faster, but still experimental composer \" + \"for writing messages (requires refresh)\"),\n supportedLevels: LEVELS_FEATURE,\n default: false\n },\n \"feature_many_integration_managers\": {\n isFeature: true,\n displayName: (0, _languageHandler._td)(\"Multiple integration managers\"),\n supportedLevels: LEVELS_FEATURE,\n default: false\n },\n \"MessageComposerInput.suggestEmoji\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Enable Emoji suggestions while typing'),\n default: true,\n invertedSettingName: 'MessageComposerInput.dontSuggestEmoji'\n },\n \"useCompactLayout\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Use compact timeline layout'),\n default: false\n },\n \"showRedactions\": {\n supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,\n displayName: (0, _languageHandler._td)('Show a placeholder for removed messages'),\n default: true,\n invertedSettingName: 'hideRedactions'\n },\n \"showJoinLeaves\": {\n supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,\n displayName: (0, _languageHandler._td)('Show join/leave messages (invites/kicks/bans unaffected)'),\n default: true,\n invertedSettingName: 'hideJoinLeaves'\n },\n \"showAvatarChanges\": {\n supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,\n displayName: (0, _languageHandler._td)('Show avatar changes'),\n default: true,\n invertedSettingName: 'hideAvatarChanges'\n },\n \"showDisplaynameChanges\": {\n supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,\n displayName: (0, _languageHandler._td)('Show display name changes'),\n default: true,\n invertedSettingName: 'hideDisplaynameChanges'\n },\n \"showReadReceipts\": {\n supportedLevels: LEVELS_ROOM_SETTINGS,\n displayName: (0, _languageHandler._td)('Show read receipts sent by other users'),\n default: true,\n invertedSettingName: 'hideReadReceipts'\n },\n \"showTwelveHourTimestamps\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Show timestamps in 12 hour format (e.g. 2:30pm)'),\n default: false\n },\n \"alwaysShowTimestamps\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Always show message timestamps'),\n default: false\n },\n \"autoplayGifsAndVideos\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Autoplay GIFs and videos'),\n default: false\n },\n \"alwaysShowEncryptionIcons\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Always show encryption icons'),\n default: true\n },\n \"showRoomRecoveryReminder\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Show a reminder to enable Secure Message Recovery in encrypted rooms'),\n default: true\n },\n \"enableSyntaxHighlightLanguageDetection\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Enable automatic language detection for syntax highlighting'),\n default: false\n },\n \"Pill.shouldShowPillAvatar\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Show avatars in user and room mentions'),\n default: true,\n invertedSettingName: 'Pill.shouldHidePillAvatar'\n },\n \"TextualBody.enableBigEmoji\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Enable big emoji in chat'),\n default: true,\n invertedSettingName: 'TextualBody.disableBigEmoji'\n },\n \"MessageComposerInput.isRichTextEnabled\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n default: false\n },\n \"MessageComposer.showFormatting\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n default: false\n },\n \"sendTypingNotifications\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)(\"Send typing notifications\"),\n default: true,\n invertedSettingName: 'dontSendTypingNotifications'\n },\n \"MessageComposerInput.autoReplaceEmoji\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Automatically replace plain text Emoji'),\n default: false\n },\n \"VideoView.flipVideoHorizontally\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Mirror local video feed'),\n default: false\n },\n \"TagPanel.enableTagPanel\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Enable Community Filter Panel'),\n default: true,\n invertedSettingName: 'TagPanel.disableTagPanel'\n },\n \"theme\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n default: \"light\",\n controller: new _ThemeController2.default()\n },\n \"custom_themes\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n default: []\n },\n \"webRtcAllowPeerToPeer\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG,\n displayName: (0, _languageHandler._td)('Allow Peer-to-Peer for 1:1 calls'),\n default: true,\n invertedSettingName: 'webRtcForceTURN'\n },\n \"webrtc_audiooutput\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,\n default: null\n },\n \"webrtc_audioinput\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,\n default: null\n },\n \"webrtc_videoinput\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,\n default: null\n },\n \"language\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG,\n default: \"en\"\n },\n \"breadcrumb_rooms\": {\n supportedLevels: ['account'],\n default: []\n },\n \"analyticsOptIn\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG,\n displayName: (0, _languageHandler._td)('Send analytics data'),\n default: false\n },\n \"showCookieBar\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG,\n default: true\n },\n \"autocompleteDelay\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG,\n default: 200\n },\n \"readMarkerInViewThresholdMs\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG,\n default: 3000\n },\n \"readMarkerOutOfViewThresholdMs\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG,\n default: 30000\n },\n \"blacklistUnverifiedDevices\": {\n // We specifically want to have room-device > device so that users may set a device default\n // with a per-room override.\n supportedLevels: ['room-device', 'device'],\n supportedLevelsAreOrdered: true,\n displayName: {\n \"default\": (0, _languageHandler._td)('Never send encrypted messages to unverified devices from this device'),\n \"room-device\": (0, _languageHandler._td)('Never send encrypted messages to unverified devices in this room from this device')\n },\n default: false\n },\n \"urlPreviewsEnabled\": {\n supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,\n displayName: {\n \"default\": (0, _languageHandler._td)('Enable inline URL previews by default'),\n \"room-account\": (0, _languageHandler._td)(\"Enable URL previews for this room (only affects you)\"),\n \"room\": (0, _languageHandler._td)(\"Enable URL previews by default for participants in this room\")\n },\n default: true\n },\n \"urlPreviewsEnabled_e2ee\": {\n supportedLevels: ['room-device', 'room-account'],\n displayName: {\n \"room-account\": (0, _languageHandler._td)(\"Enable URL previews for this room (only affects you)\")\n },\n default: false\n },\n \"roomColor\": {\n supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,\n displayName: (0, _languageHandler._td)(\"Room Colour\"),\n default: {\n primary_color: null, // Hex string, eg: #000000\n secondary_color: null // Hex string, eg: #000000\n }\n },\n \"notificationsEnabled\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,\n default: false,\n controller: new _NotificationControllers.NotificationsEnabledController()\n },\n \"notificationSound\": {\n supportedLevels: LEVELS_ROOM_OR_ACCOUNT,\n default: false\n },\n \"notificationBodyEnabled\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,\n default: true,\n controller: new _NotificationControllers.NotificationBodyEnabledController()\n },\n \"audioNotificationsEnabled\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,\n default: true,\n controller: new _NotificationControllers.AudioNotificationsEnabledController()\n },\n \"enableWidgetScreenshots\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Enable widget screenshots on supported widgets'),\n default: false\n },\n \"PinnedEvents.isOpen\": {\n supportedLevels: ['room-device'],\n default: false\n },\n \"promptBeforeInviteUnknownUsers\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Prompt before sending invites to potentially invalid matrix IDs'),\n default: true\n },\n \"showDeveloperTools\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Show developer tools'),\n default: false\n },\n \"widgetOpenIDPermissions\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,\n default: {\n allow: [],\n deny: []\n }\n },\n \"RoomList.orderByImportance\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Order rooms in the room list by most important first instead of most recent'),\n default: true\n },\n \"breadcrumbs\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)(\"Show recently visited rooms above the room list\"),\n default: true\n },\n \"showHiddenEventsInTimeline\": {\n displayName: (0, _languageHandler._td)(\"Show hidden events in timeline\"),\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,\n default: false\n },\n \"lowBandwidth\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG,\n displayName: (0, _languageHandler._td)('Low bandwidth mode'),\n default: false,\n controller: new _LowBandwidthController2.default()\n },\n \"fallbackICEServerAllowed\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,\n displayName: (0, _languageHandler._td)(\"Allow fallback call assist server turn.matrix.org when your homeserver \" + \"does not offer one (your IP address would be shared during a call)\"),\n // This is a tri-state value, where `null` means \"prompt the user\".\n default: null\n },\n \"sendReadReceipts\": {\n supportedLevels: LEVELS_ROOM_SETTINGS,\n displayName: (0, _languageHandler._td)(\"Send read receipts for messages (requires compatible homeserver to disable)\"),\n default: true\n },\n \"showImages\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)(\"Show previews/thumbnails for images\"),\n default: true\n }\n};\n//# sourceMappingURL=Settings.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AudioNotificationsEnabledController = exports.NotificationBodyEnabledController = exports.NotificationsEnabledController = undefined;\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SettingController4 = require(\"./SettingController\");\n\nvar _SettingController5 = _interopRequireDefault(_SettingController4);\n\nvar _MatrixClientPeg = require(\"../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _pushprocessor = require(\"matrix-js-sdk/lib/pushprocessor\");\n\nvar _pushprocessor2 = _interopRequireDefault(_pushprocessor);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isMasterRuleEnabled() {\n // Return the value of the master push rule as a default\n var processor = new _pushprocessor2.default(_MatrixClientPeg2.default.get());\n var masterRule = processor.getPushRuleById(\".m.rule.master\");\n\n if (!masterRule) {\n console.warn(\"No master push rule! Notifications are disabled for this user.\");\n return false;\n }\n\n // Why enabled == false means \"enabled\" is beyond me.\n return !masterRule.enabled;\n}\n\n// XXX: This feels wrong.\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar NotificationsEnabledController = exports.NotificationsEnabledController = function (_SettingController) {\n (0, _inherits3.default)(NotificationsEnabledController, _SettingController);\n\n function NotificationsEnabledController() {\n (0, _classCallCheck3.default)(this, NotificationsEnabledController);\n return (0, _possibleConstructorReturn3.default)(this, (NotificationsEnabledController.__proto__ || (0, _getPrototypeOf2.default)(NotificationsEnabledController)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(NotificationsEnabledController, [{\n key: \"getValueOverride\",\n value: function getValueOverride(level, roomId, calculatedValue, calculatedAtLevel) {\n var Notifier = require('../../Notifier'); // avoids cyclical references\n if (!Notifier.isPossible()) return false;\n\n if (calculatedValue === null || calculatedAtLevel === \"default\") {\n return isMasterRuleEnabled();\n }\n\n return calculatedValue;\n }\n }, {\n key: \"onChange\",\n value: function onChange(level, roomId, newValue) {\n var Notifier = require('../../Notifier'); // avoids cyclical references\n\n if (Notifier.supportsDesktopNotifications()) {\n Notifier.setEnabled(newValue);\n }\n }\n }]);\n return NotificationsEnabledController;\n}(_SettingController5.default);\n\nvar NotificationBodyEnabledController = exports.NotificationBodyEnabledController = function (_SettingController2) {\n (0, _inherits3.default)(NotificationBodyEnabledController, _SettingController2);\n\n function NotificationBodyEnabledController() {\n (0, _classCallCheck3.default)(this, NotificationBodyEnabledController);\n return (0, _possibleConstructorReturn3.default)(this, (NotificationBodyEnabledController.__proto__ || (0, _getPrototypeOf2.default)(NotificationBodyEnabledController)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(NotificationBodyEnabledController, [{\n key: \"getValueOverride\",\n value: function getValueOverride(level, roomId, calculatedValue) {\n var Notifier = require('../../Notifier'); // avoids cyclical references\n if (!Notifier.isPossible()) return false;\n\n if (calculatedValue === null) {\n return isMasterRuleEnabled();\n }\n\n return calculatedValue;\n }\n }]);\n return NotificationBodyEnabledController;\n}(_SettingController5.default);\n\nvar AudioNotificationsEnabledController = exports.AudioNotificationsEnabledController = function (_SettingController3) {\n (0, _inherits3.default)(AudioNotificationsEnabledController, _SettingController3);\n\n function AudioNotificationsEnabledController() {\n (0, _classCallCheck3.default)(this, AudioNotificationsEnabledController);\n return (0, _possibleConstructorReturn3.default)(this, (AudioNotificationsEnabledController.__proto__ || (0, _getPrototypeOf2.default)(AudioNotificationsEnabledController)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(AudioNotificationsEnabledController, [{\n key: \"getValueOverride\",\n value: function getValueOverride(level, roomId, calculatedValue) {\n var Notifier = require('../../Notifier'); // avoids cyclical references\n if (!Notifier.isPossible()) return false;\n\n // Note: Audio notifications are *not* enabled by default.\n return calculatedValue;\n }\n }]);\n return AudioNotificationsEnabledController;\n}(_SettingController5.default);\n//# sourceMappingURL=NotificationControllers.js.map","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar _invariant = require('fbjs/lib/invariant');\n\nif (process.env.NODE_ENV !== 'production') {\n var warning = require('fbjs/lib/warning');\n}\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n return fn;\n}\n\nvar ReactPropTypeLocationNames;\nif (process.env.NODE_ENV !== 'production') {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n} else {\n ReactPropTypeLocationNames = {};\n}\n\nfunction factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {\n /**\n * Policies that describe methods in `ReactClassInterface`.\n */\n\n var injectedMixins = [];\n\n /**\n * Composite components are higher-level components that compose other composite\n * or host components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return

Hello World
;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will be available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\n var ReactClassInterface = {\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: 'DEFINE_MANY',\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: 'DEFINE_MANY',\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: 'DEFINE_MANY',\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: 'DEFINE_MANY_MERGED',\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: 'DEFINE_MANY_MERGED',\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: 'DEFINE_MANY_MERGED',\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return
Hello, {name}!
;\n * }\n *\n * @return {ReactComponent}\n * @required\n */\n render: 'DEFINE_ONCE',\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: 'DEFINE_MANY',\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: 'DEFINE_MANY',\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: 'DEFINE_ONCE',\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: 'DEFINE_MANY',\n\n /**\n * Replacement for (deprecated) `componentWillMount`.\n *\n * @optional\n */\n UNSAFE_componentWillMount: 'DEFINE_MANY',\n\n /**\n * Replacement for (deprecated) `componentWillReceiveProps`.\n *\n * @optional\n */\n UNSAFE_componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Replacement for (deprecated) `componentWillUpdate`.\n *\n * @optional\n */\n UNSAFE_componentWillUpdate: 'DEFINE_MANY',\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: 'OVERRIDE_BASE'\n };\n\n /**\n * Similar to ReactClassInterface but for static methods.\n */\n var ReactClassStaticInterface = {\n /**\n * This method is invoked after a component is instantiated and when it\n * receives new props. Return an object to update state in response to\n * prop changes. Return null to indicate no change to state.\n *\n * If an object is returned, its keys will be merged into the existing state.\n *\n * @return {object || null}\n * @optional\n */\n getDerivedStateFromProps: 'DEFINE_MANY_MERGED'\n };\n\n /**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\n var RESERVED_SPEC_KEYS = {\n displayName: function(Constructor, displayName) {\n Constructor.displayName = displayName;\n },\n mixins: function(Constructor, mixins) {\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n mixSpecIntoComponent(Constructor, mixins[i]);\n }\n }\n },\n childContextTypes: function(Constructor, childContextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, childContextTypes, 'childContext');\n }\n Constructor.childContextTypes = _assign(\n {},\n Constructor.childContextTypes,\n childContextTypes\n );\n },\n contextTypes: function(Constructor, contextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, contextTypes, 'context');\n }\n Constructor.contextTypes = _assign(\n {},\n Constructor.contextTypes,\n contextTypes\n );\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function(Constructor, getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(\n Constructor.getDefaultProps,\n getDefaultProps\n );\n } else {\n Constructor.getDefaultProps = getDefaultProps;\n }\n },\n propTypes: function(Constructor, propTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, propTypes, 'prop');\n }\n Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n },\n statics: function(Constructor, statics) {\n mixStaticSpecIntoComponent(Constructor, statics);\n },\n autobind: function() {}\n };\n\n function validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an _invariant so components\n // don't show up in prod but only in __DEV__\n if (process.env.NODE_ENV !== 'production') {\n warning(\n typeof typeDef[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n 'React.PropTypes.',\n Constructor.displayName || 'ReactClass',\n ReactPropTypeLocationNames[location],\n propName\n );\n }\n }\n }\n }\n\n function validateMethodOverride(isAlreadyDefined, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name)\n ? ReactClassInterface[name]\n : null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n _invariant(\n specPolicy === 'OVERRIDE_BASE',\n 'ReactClassInterface: You are attempting to override ' +\n '`%s` from your class specification. Ensure that your method names ' +\n 'do not overlap with React methods.',\n name\n );\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (isAlreadyDefined) {\n _invariant(\n specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED',\n 'ReactClassInterface: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be due ' +\n 'to a mixin.',\n name\n );\n }\n }\n\n /**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classes.\n */\n function mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n if (process.env.NODE_ENV !== 'production') {\n var typeofSpec = typeof spec;\n var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n isMixinValid,\n \"%s: You're attempting to include a mixin that is either null \" +\n 'or not an object. Check the mixins included by the component, ' +\n 'as well as any mixins they include themselves. ' +\n 'Expected object but got %s.',\n Constructor.displayName || 'ReactClass',\n spec === null ? null : typeofSpec\n );\n }\n }\n\n return;\n }\n\n _invariant(\n typeof spec !== 'function',\n \"ReactClass: You're attempting to \" +\n 'use a component class or function as a mixin. Instead, just use a ' +\n 'regular object.'\n );\n _invariant(\n !isValidElement(spec),\n \"ReactClass: You're attempting to \" +\n 'use a component as a mixin. Instead, just use a regular object.'\n );\n\n var proto = Constructor.prototype;\n var autoBindPairs = proto.__reactAutoBindPairs;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above.\n continue;\n }\n\n var property = spec[name];\n var isAlreadyDefined = proto.hasOwnProperty(name);\n validateMethodOverride(isAlreadyDefined, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n var isFunction = typeof property === 'function';\n var shouldAutoBind =\n isFunction &&\n !isReactClassMethod &&\n !isAlreadyDefined &&\n spec.autobind !== false;\n\n if (shouldAutoBind) {\n autoBindPairs.push(name, property);\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride.\n _invariant(\n isReactClassMethod &&\n (specPolicy === 'DEFINE_MANY_MERGED' ||\n specPolicy === 'DEFINE_MANY'),\n 'ReactClass: Unexpected spec policy %s for key %s ' +\n 'when mixing in component specs.',\n specPolicy,\n name\n );\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === 'DEFINE_MANY_MERGED') {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === 'DEFINE_MANY') {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (process.env.NODE_ENV !== 'production') {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n }\n\n function mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n _invariant(\n !isReserved,\n 'ReactClass: You are attempting to define a reserved ' +\n 'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n 'as an instance property instead; it will still be accessible on the ' +\n 'constructor.',\n name\n );\n\n var isAlreadyDefined = name in Constructor;\n if (isAlreadyDefined) {\n var specPolicy = ReactClassStaticInterface.hasOwnProperty(name)\n ? ReactClassStaticInterface[name]\n : null;\n\n _invariant(\n specPolicy === 'DEFINE_MANY_MERGED',\n 'ReactClass: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be ' +\n 'due to a mixin.',\n name\n );\n\n Constructor[name] = createMergedResultFunction(Constructor[name], property);\n\n return;\n }\n\n Constructor[name] = property;\n }\n }\n\n /**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\n function mergeIntoWithNoDuplicateKeys(one, two) {\n _invariant(\n one && two && typeof one === 'object' && typeof two === 'object',\n 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n );\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n _invariant(\n one[key] === undefined,\n 'mergeIntoWithNoDuplicateKeys(): ' +\n 'Tried to merge two objects with the same key: `%s`. This conflict ' +\n 'may be due to a mixin; in particular, this may be caused by two ' +\n 'getInitialState() or getDefaultProps() methods returning objects ' +\n 'with clashing keys.',\n key\n );\n one[key] = two[key];\n }\n }\n return one;\n }\n\n /**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n }\n\n /**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n }\n\n /**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\n function bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (process.env.NODE_ENV !== 'production') {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n boundMethod.bind = function(newThis) {\n for (\n var _len = arguments.length,\n args = Array(_len > 1 ? _len - 1 : 0),\n _key = 1;\n _key < _len;\n _key++\n ) {\n args[_key - 1] = arguments[_key];\n }\n\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): React component methods may only be bound to the ' +\n 'component instance. See %s',\n componentName\n );\n }\n } else if (!args.length) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): You are binding a component method to the component. ' +\n 'React does this for you automatically in a high-performance ' +\n 'way, so you can safely remove this call. See %s',\n componentName\n );\n }\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n };\n }\n return boundMethod;\n }\n\n /**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\n function bindAutoBindMethods(component) {\n var pairs = component.__reactAutoBindPairs;\n for (var i = 0; i < pairs.length; i += 2) {\n var autoBindKey = pairs[i];\n var method = pairs[i + 1];\n component[autoBindKey] = bindAutoBindMethod(component, method);\n }\n }\n\n var IsMountedPreMixin = {\n componentDidMount: function() {\n this.__isMounted = true;\n }\n };\n\n var IsMountedPostMixin = {\n componentWillUnmount: function() {\n this.__isMounted = false;\n }\n };\n\n /**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\n var ReactClassMixin = {\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function(newState, callback) {\n this.updater.enqueueReplaceState(this, newState, callback);\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function() {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n this.__didWarnIsMounted,\n '%s: isMounted is deprecated. Instead, make sure to clean up ' +\n 'subscriptions and pending requests in componentWillUnmount to ' +\n 'prevent memory leaks.',\n (this.constructor && this.constructor.displayName) ||\n this.name ||\n 'Component'\n );\n this.__didWarnIsMounted = true;\n }\n return !!this.__isMounted;\n }\n };\n\n var ReactClassComponent = function() {};\n _assign(\n ReactClassComponent.prototype,\n ReactComponent.prototype,\n ReactClassMixin\n );\n\n /**\n * Creates a composite component class given a class specification.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n function createClass(spec) {\n // To keep our warnings more understandable, we'll use a little hack here to\n // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n // unnecessarily identify a class without displayName as 'Constructor'.\n var Constructor = identity(function(props, context, updater) {\n // This constructor gets overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n this instanceof Constructor,\n 'Something is calling a React component directly. Use a factory or ' +\n 'JSX instead. See: https://fb.me/react-legacyfactory'\n );\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindPairs.length) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (\n initialState === undefined &&\n this.getInitialState._isMockFunction\n ) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n _invariant(\n typeof initialState === 'object' && !Array.isArray(initialState),\n '%s.getInitialState(): must return an object or null',\n Constructor.displayName || 'ReactCompositeComponent'\n );\n\n this.state = initialState;\n });\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n Constructor.prototype.__reactAutoBindPairs = [];\n\n injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n mixSpecIntoComponent(Constructor, IsMountedPreMixin);\n mixSpecIntoComponent(Constructor, spec);\n mixSpecIntoComponent(Constructor, IsMountedPostMixin);\n\n // Initialize the defaultProps property after all mixins have been merged.\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n _invariant(\n Constructor.prototype.render,\n 'createClass(...): Class specification must implement a `render` method.'\n );\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n !Constructor.prototype.componentShouldUpdate,\n '%s has a method called ' +\n 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n 'The name is phrased as a question because the function is ' +\n 'expected to return a value.',\n spec.displayName || 'A component'\n );\n warning(\n !Constructor.prototype.componentWillRecieveProps,\n '%s has a method called ' +\n 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',\n spec.displayName || 'A component'\n );\n warning(\n !Constructor.prototype.UNSAFE_componentWillRecieveProps,\n '%s has a method called UNSAFE_componentWillRecieveProps(). ' +\n 'Did you mean UNSAFE_componentWillReceiveProps()?',\n spec.displayName || 'A component'\n );\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n return Constructor;\n }\n\n return createClass;\n}\n\nmodule.exports = factory;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar emptyObject = {};\n\nif (process.env.NODE_ENV !== 'production') {\n Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var map = {\n\t\"./03b381.png\": 1425,\n\t\"./368bd6.png\": 1426,\n\t\"./ac3ba8.png\": 1427,\n\t\"./attach.png\": 1428,\n\t\"./call.png\": 1429,\n\t\"./cancel-black.png\": 1430,\n\t\"./cancel-black2.png\": 1431,\n\t\"./cancel.png\": 1432,\n\t\"./chevron-left.png\": 596,\n\t\"./chevron-right.png\": 1433,\n\t\"./chevron.png\": 1434,\n\t\"./close-white.png\": 1435,\n\t\"./create-big.png\": 1436,\n\t\"./create.png\": 1437,\n\t\"./delete.png\": 1438,\n\t\"./directory-big.png\": 1439,\n\t\"./download.png\": 1440,\n\t\"./edit.png\": 1441,\n\t\"./file.png\": 1442,\n\t\"./filegrid.png\": 1443,\n\t\"./fileicon.png\": 597,\n\t\"./filelist.png\": 1444,\n\t\"./files.png\": 598,\n\t\"./flags/AD.png\": 599,\n\t\"./flags/AE.png\": 600,\n\t\"./flags/AF.png\": 601,\n\t\"./flags/AG.png\": 602,\n\t\"./flags/AI.png\": 603,\n\t\"./flags/AL.png\": 604,\n\t\"./flags/AM.png\": 605,\n\t\"./flags/AO.png\": 606,\n\t\"./flags/AQ.png\": 607,\n\t\"./flags/AR.png\": 608,\n\t\"./flags/AS.png\": 609,\n\t\"./flags/AT.png\": 610,\n\t\"./flags/AU.png\": 611,\n\t\"./flags/AW.png\": 612,\n\t\"./flags/AX.png\": 613,\n\t\"./flags/AZ.png\": 614,\n\t\"./flags/BA.png\": 615,\n\t\"./flags/BB.png\": 616,\n\t\"./flags/BD.png\": 617,\n\t\"./flags/BE.png\": 618,\n\t\"./flags/BF.png\": 619,\n\t\"./flags/BG.png\": 620,\n\t\"./flags/BH.png\": 621,\n\t\"./flags/BI.png\": 622,\n\t\"./flags/BJ.png\": 623,\n\t\"./flags/BL.png\": 624,\n\t\"./flags/BM.png\": 625,\n\t\"./flags/BN.png\": 626,\n\t\"./flags/BO.png\": 627,\n\t\"./flags/BQ.png\": 628,\n\t\"./flags/BR.png\": 629,\n\t\"./flags/BS.png\": 630,\n\t\"./flags/BT.png\": 631,\n\t\"./flags/BV.png\": 632,\n\t\"./flags/BW.png\": 633,\n\t\"./flags/BY.png\": 634,\n\t\"./flags/BZ.png\": 635,\n\t\"./flags/CA.png\": 636,\n\t\"./flags/CC.png\": 637,\n\t\"./flags/CD.png\": 638,\n\t\"./flags/CF.png\": 639,\n\t\"./flags/CG.png\": 640,\n\t\"./flags/CH.png\": 641,\n\t\"./flags/CI.png\": 642,\n\t\"./flags/CK.png\": 643,\n\t\"./flags/CL.png\": 644,\n\t\"./flags/CM.png\": 645,\n\t\"./flags/CN.png\": 646,\n\t\"./flags/CO.png\": 647,\n\t\"./flags/CR.png\": 648,\n\t\"./flags/CU.png\": 649,\n\t\"./flags/CV.png\": 650,\n\t\"./flags/CW.png\": 651,\n\t\"./flags/CX.png\": 652,\n\t\"./flags/CY.png\": 653,\n\t\"./flags/CZ.png\": 654,\n\t\"./flags/DE.png\": 655,\n\t\"./flags/DJ.png\": 656,\n\t\"./flags/DK.png\": 657,\n\t\"./flags/DM.png\": 658,\n\t\"./flags/DO.png\": 659,\n\t\"./flags/DZ.png\": 660,\n\t\"./flags/EC.png\": 661,\n\t\"./flags/EE.png\": 662,\n\t\"./flags/EG.png\": 663,\n\t\"./flags/EH.png\": 664,\n\t\"./flags/ER.png\": 665,\n\t\"./flags/ES.png\": 666,\n\t\"./flags/ET.png\": 667,\n\t\"./flags/FI.png\": 668,\n\t\"./flags/FJ.png\": 669,\n\t\"./flags/FK.png\": 670,\n\t\"./flags/FM.png\": 671,\n\t\"./flags/FO.png\": 672,\n\t\"./flags/FR.png\": 673,\n\t\"./flags/GA.png\": 674,\n\t\"./flags/GB.png\": 675,\n\t\"./flags/GD.png\": 676,\n\t\"./flags/GE.png\": 677,\n\t\"./flags/GF.png\": 678,\n\t\"./flags/GG.png\": 679,\n\t\"./flags/GH.png\": 680,\n\t\"./flags/GI.png\": 681,\n\t\"./flags/GL.png\": 682,\n\t\"./flags/GM.png\": 683,\n\t\"./flags/GN.png\": 684,\n\t\"./flags/GP.png\": 685,\n\t\"./flags/GQ.png\": 686,\n\t\"./flags/GR.png\": 687,\n\t\"./flags/GS.png\": 688,\n\t\"./flags/GT.png\": 689,\n\t\"./flags/GU.png\": 690,\n\t\"./flags/GW.png\": 691,\n\t\"./flags/GY.png\": 692,\n\t\"./flags/HK.png\": 693,\n\t\"./flags/HM.png\": 694,\n\t\"./flags/HN.png\": 695,\n\t\"./flags/HR.png\": 696,\n\t\"./flags/HT.png\": 697,\n\t\"./flags/HU.png\": 698,\n\t\"./flags/ID.png\": 699,\n\t\"./flags/IE.png\": 700,\n\t\"./flags/IL.png\": 701,\n\t\"./flags/IM.png\": 702,\n\t\"./flags/IN.png\": 703,\n\t\"./flags/IO.png\": 704,\n\t\"./flags/IQ.png\": 705,\n\t\"./flags/IR.png\": 706,\n\t\"./flags/IS.png\": 707,\n\t\"./flags/IT.png\": 708,\n\t\"./flags/JE.png\": 709,\n\t\"./flags/JM.png\": 710,\n\t\"./flags/JO.png\": 711,\n\t\"./flags/JP.png\": 712,\n\t\"./flags/KE.png\": 713,\n\t\"./flags/KG.png\": 714,\n\t\"./flags/KH.png\": 715,\n\t\"./flags/KI.png\": 716,\n\t\"./flags/KM.png\": 717,\n\t\"./flags/KN.png\": 718,\n\t\"./flags/KP.png\": 719,\n\t\"./flags/KR.png\": 720,\n\t\"./flags/KW.png\": 721,\n\t\"./flags/KY.png\": 722,\n\t\"./flags/KZ.png\": 723,\n\t\"./flags/LA.png\": 724,\n\t\"./flags/LB.png\": 725,\n\t\"./flags/LC.png\": 726,\n\t\"./flags/LI.png\": 727,\n\t\"./flags/LK.png\": 728,\n\t\"./flags/LR.png\": 729,\n\t\"./flags/LS.png\": 730,\n\t\"./flags/LT.png\": 731,\n\t\"./flags/LU.png\": 732,\n\t\"./flags/LV.png\": 733,\n\t\"./flags/LY.png\": 734,\n\t\"./flags/MA.png\": 735,\n\t\"./flags/MC.png\": 736,\n\t\"./flags/MD.png\": 737,\n\t\"./flags/ME.png\": 738,\n\t\"./flags/MF.png\": 739,\n\t\"./flags/MG.png\": 740,\n\t\"./flags/MH.png\": 741,\n\t\"./flags/MK.png\": 742,\n\t\"./flags/ML.png\": 743,\n\t\"./flags/MM.png\": 744,\n\t\"./flags/MN.png\": 745,\n\t\"./flags/MO.png\": 746,\n\t\"./flags/MP.png\": 747,\n\t\"./flags/MQ.png\": 748,\n\t\"./flags/MR.png\": 749,\n\t\"./flags/MS.png\": 750,\n\t\"./flags/MT.png\": 751,\n\t\"./flags/MU.png\": 752,\n\t\"./flags/MV.png\": 753,\n\t\"./flags/MW.png\": 754,\n\t\"./flags/MX.png\": 755,\n\t\"./flags/MY.png\": 756,\n\t\"./flags/MZ.png\": 757,\n\t\"./flags/NA.png\": 758,\n\t\"./flags/NC.png\": 759,\n\t\"./flags/NE.png\": 760,\n\t\"./flags/NF.png\": 761,\n\t\"./flags/NG.png\": 762,\n\t\"./flags/NI.png\": 763,\n\t\"./flags/NL.png\": 764,\n\t\"./flags/NO.png\": 765,\n\t\"./flags/NP.png\": 766,\n\t\"./flags/NR.png\": 767,\n\t\"./flags/NU.png\": 768,\n\t\"./flags/NZ.png\": 769,\n\t\"./flags/OM.png\": 770,\n\t\"./flags/PA.png\": 771,\n\t\"./flags/PE.png\": 772,\n\t\"./flags/PF.png\": 773,\n\t\"./flags/PG.png\": 774,\n\t\"./flags/PH.png\": 775,\n\t\"./flags/PK.png\": 776,\n\t\"./flags/PL.png\": 777,\n\t\"./flags/PM.png\": 778,\n\t\"./flags/PN.png\": 779,\n\t\"./flags/PR.png\": 780,\n\t\"./flags/PS.png\": 781,\n\t\"./flags/PT.png\": 782,\n\t\"./flags/PW.png\": 783,\n\t\"./flags/PY.png\": 784,\n\t\"./flags/QA.png\": 785,\n\t\"./flags/RE.png\": 786,\n\t\"./flags/RO.png\": 787,\n\t\"./flags/RS.png\": 788,\n\t\"./flags/RU.png\": 789,\n\t\"./flags/RW.png\": 790,\n\t\"./flags/SA.png\": 791,\n\t\"./flags/SB.png\": 792,\n\t\"./flags/SC.png\": 793,\n\t\"./flags/SD.png\": 794,\n\t\"./flags/SE.png\": 795,\n\t\"./flags/SG.png\": 796,\n\t\"./flags/SH.png\": 797,\n\t\"./flags/SI.png\": 798,\n\t\"./flags/SJ.png\": 799,\n\t\"./flags/SK.png\": 800,\n\t\"./flags/SL.png\": 801,\n\t\"./flags/SM.png\": 802,\n\t\"./flags/SN.png\": 803,\n\t\"./flags/SO.png\": 804,\n\t\"./flags/SR.png\": 805,\n\t\"./flags/SS.png\": 806,\n\t\"./flags/ST.png\": 807,\n\t\"./flags/SV.png\": 808,\n\t\"./flags/SX.png\": 809,\n\t\"./flags/SY.png\": 810,\n\t\"./flags/SZ.png\": 811,\n\t\"./flags/TC.png\": 812,\n\t\"./flags/TD.png\": 813,\n\t\"./flags/TF.png\": 814,\n\t\"./flags/TG.png\": 815,\n\t\"./flags/TH.png\": 816,\n\t\"./flags/TJ.png\": 817,\n\t\"./flags/TK.png\": 818,\n\t\"./flags/TL.png\": 819,\n\t\"./flags/TM.png\": 820,\n\t\"./flags/TN.png\": 821,\n\t\"./flags/TO.png\": 822,\n\t\"./flags/TR.png\": 823,\n\t\"./flags/TT.png\": 824,\n\t\"./flags/TV.png\": 825,\n\t\"./flags/TW.png\": 826,\n\t\"./flags/TZ.png\": 827,\n\t\"./flags/UA.png\": 828,\n\t\"./flags/UG.png\": 829,\n\t\"./flags/US.png\": 830,\n\t\"./flags/UY.png\": 831,\n\t\"./flags/UZ.png\": 832,\n\t\"./flags/VA.png\": 833,\n\t\"./flags/VC.png\": 834,\n\t\"./flags/VE.png\": 835,\n\t\"./flags/VG.png\": 836,\n\t\"./flags/VI.png\": 837,\n\t\"./flags/VN.png\": 838,\n\t\"./flags/VU.png\": 839,\n\t\"./flags/WF.png\": 840,\n\t\"./flags/WS.png\": 841,\n\t\"./flags/YE.png\": 842,\n\t\"./flags/YT.png\": 843,\n\t\"./flags/ZA.png\": 844,\n\t\"./flags/ZM.png\": 845,\n\t\"./flags/ZW.png\": 846,\n\t\"./hide.png\": 1445,\n\t\"./info.png\": 1446,\n\t\"./list-close.png\": 1447,\n\t\"./list-open.png\": 1448,\n\t\"./member_chevron.png\": 1449,\n\t\"./menu.png\": 1450,\n\t\"./newmessages.png\": 1451,\n\t\"./placeholder.png\": 1452,\n\t\"./search.png\": 1453,\n\t\"./selected.png\": 1454,\n\t\"./settings-big.png\": 1455,\n\t\"./settings.png\": 1456,\n\t\"./social/email-1.png\": 847,\n\t\"./social/facebook.png\": 848,\n\t\"./social/linkedin.png\": 849,\n\t\"./social/reddit.png\": 850,\n\t\"./social/twitter-2.png\": 851,\n\t\"./stickerpack-placeholder.png\": 852,\n\t\"./trans.png\": 1457,\n\t\"./typing.png\": 1458,\n\t\"./upload-big.png\": 1459,\n\t\"./upload.png\": 1460,\n\t\"./video.png\": 1461,\n\t\"./voice.png\": 1462,\n\t\"./voip-mute.png\": 1463,\n\t\"./voip.png\": 1464,\n\t\"./warning.png\": 1465,\n\t\"./warning2.png\": 1466,\n\t\"./zoom.png\": 1467\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 1424;","module.exports = \"img/03b381.887c3ca.png\";","module.exports = \"img/368bd6.2349bd1.png\";","module.exports = \"img/ac3ba8.4aa77aa.png\";","module.exports = \"img/attach.714a4af.png\";","module.exports = \"img/call.4052211.png\";","module.exports = \"img/cancel-black.49e1227.png\";","module.exports = \"img/cancel-black2.c44b7c1.png\";","module.exports = \"img/cancel.2e55c0d.png\";","module.exports = \"img/chevron-right.0070bb4.png\";","module.exports = \"img/chevron.dc904f3.png\";","module.exports = \"img/close-white.599b6df.png\";","module.exports = \"img/create-big.950d607.png\";","module.exports = \"img/create.34f2fb7.png\";","module.exports = \"img/delete.cfc6d24.png\";","module.exports = \"img/directory-big.cc09e49.png\";","module.exports = \"img/download.62b8bed.png\";","module.exports = \"img/edit.1db23b7.png\";","module.exports = \"img/file.44feb3e.png\";","module.exports = \"img/filegrid.d60a2ce.png\";","module.exports = \"img/filelist.9a66693.png\";","module.exports = \"img/hide.057fe0e.png\";","module.exports = \"img/info.56673bb.png\";","module.exports = \"img/list-close.b9b9f76.png\";","module.exports = \"img/list-open.6d0c059.png\";","module.exports = \"img/member_chevron.4163a20.png\";","module.exports = \"img/menu.e7371a9.png\";","module.exports = \"img/newmessages.972e9a3.png\";","module.exports = \"img/placeholder.b945544.png\";","module.exports = \"img/search.0323348.png\";","module.exports = \"img/selected.f0a69a0.png\";","module.exports = \"img/settings-big.bb25bab.png\";","module.exports = \"img/settings.78c255a.png\";","module.exports = \"img/trans.0a14f5e.png\";","module.exports = \"img/typing.4cbf14f.png\";","module.exports = \"img/upload-big.51a2e5d.png\";","module.exports = \"img/upload.6ac72f0.png\";","module.exports = \"img/video.56b0867.png\";","module.exports = \"img/voice.8c18474.png\";","module.exports = \"img/voip-mute.460ba6a.png\";","module.exports = \"img/voip.286bad4.png\";","module.exports = \"img/warning.24ba73b.png\";","module.exports = \"img/warning2.0a978e0.png\";","module.exports = \"img/zoom.710afe1.png\";","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SettingController2 = require(\"./SettingController\");\n\nvar _SettingController3 = _interopRequireDefault(_SettingController2);\n\nvar _dispatcher = require(\"../../dispatcher\");\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar CustomStatusController = function (_SettingController) {\n (0, _inherits3.default)(CustomStatusController, _SettingController);\n\n function CustomStatusController() {\n (0, _classCallCheck3.default)(this, CustomStatusController);\n return (0, _possibleConstructorReturn3.default)(this, (CustomStatusController.__proto__ || (0, _getPrototypeOf2.default)(CustomStatusController)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(CustomStatusController, [{\n key: \"onChange\",\n value: function onChange(level, roomId, newValue) {\n // Dispatch setting change so that some components that are still visible when the\n // Settings page is open (such as RoomTiles) can reflect the change.\n _dispatcher2.default.dispatch({\n action: \"feature_custom_status_changed\"\n });\n }\n }]);\n return CustomStatusController;\n}(_SettingController3.default);\n\nexports.default = CustomStatusController;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=CustomStatusController.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SettingController2 = require(\"./SettingController\");\n\nvar _SettingController3 = _interopRequireDefault(_SettingController2);\n\nvar _theme = require(\"../../theme\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 New Vector Ltd\nCopyright 2019 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar ThemeController = function (_SettingController) {\n (0, _inherits3.default)(ThemeController, _SettingController);\n\n function ThemeController() {\n (0, _classCallCheck3.default)(this, ThemeController);\n return (0, _possibleConstructorReturn3.default)(this, (ThemeController.__proto__ || (0, _getPrototypeOf2.default)(ThemeController)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(ThemeController, [{\n key: \"getValueOverride\",\n value: function getValueOverride(level, roomId, calculatedValue, calculatedAtLevel) {\n var themes = (0, _theme.enumerateThemes)();\n // Override in case some no longer supported theme is stored here\n if (!themes[calculatedValue]) {\n return _theme.DEFAULT_THEME;\n }\n\n return null; // no override\n }\n }]);\n return ThemeController;\n}(_SettingController3.default);\n\nexports.default = ThemeController;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=ThemeController.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SettingController2 = require(\"./SettingController\");\n\nvar _SettingController3 = _interopRequireDefault(_SettingController2);\n\nvar _PlatformPeg = require(\"../../PlatformPeg\");\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar LowBandwidthController = function (_SettingController) {\n (0, _inherits3.default)(LowBandwidthController, _SettingController);\n\n function LowBandwidthController() {\n (0, _classCallCheck3.default)(this, LowBandwidthController);\n return (0, _possibleConstructorReturn3.default)(this, (LowBandwidthController.__proto__ || (0, _getPrototypeOf2.default)(LowBandwidthController)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(LowBandwidthController, [{\n key: \"onChange\",\n value: function onChange(level, roomId, newValue) {\n _PlatformPeg2.default.get().reload();\n }\n }]);\n return LowBandwidthController;\n}(_SettingController3.default);\n\nexports.default = LowBandwidthController;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=LowBandwidthController.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A wrapper for a SettingsHandler that performs local echo on\n * changes to settings. This wrapper will use the underlying\n * handler as much as possible to ensure values are not stale.\n */\n/*\nCopyright 2017 Travis Ralston\nCopyright 2019 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar LocalEchoWrapper = function (_SettingsHandler) {\n (0, _inherits3.default)(LocalEchoWrapper, _SettingsHandler);\n\n /**\n * Creates a new local echo wrapper\n * @param {SettingsHandler} handler The handler to wrap\n */\n function LocalEchoWrapper(handler) {\n (0, _classCallCheck3.default)(this, LocalEchoWrapper);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (LocalEchoWrapper.__proto__ || (0, _getPrototypeOf2.default)(LocalEchoWrapper)).call(this));\n\n _this._handler = handler;\n _this._cache = {\n // settingName: { roomId: value }\n };\n return _this;\n }\n\n (0, _createClass3.default)(LocalEchoWrapper, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n var cacheRoomId = roomId ? roomId : \"UNDEFINED\"; // avoid weird keys\n var bySetting = this._cache[settingName];\n if (bySetting && bySetting.hasOwnProperty(cacheRoomId)) {\n return bySetting[roomId];\n }\n\n return this._handler.getValue(settingName, roomId);\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n if (!this._cache[settingName]) this._cache[settingName] = {};\n var bySetting = this._cache[settingName];\n\n var cacheRoomId = roomId ? roomId : \"UNDEFINED\"; // avoid weird keys\n bySetting[cacheRoomId] = newValue;\n\n var handlerPromise = this._handler.setValue(settingName, roomId, newValue);\n return _bluebird2.default.resolve(handlerPromise).finally(function () {\n delete bySetting[cacheRoomId];\n });\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n return this._handler.canSetValue(settingName, roomId);\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n return this._handler.isSupported();\n }\n }]);\n return LocalEchoWrapper;\n}(_SettingsHandler3.default);\n\nexports.default = LocalEchoWrapper;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=LocalEchoWrapper.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.WatchManager = undefined;\n\nvar _toConsumableArray2 = require(\"babel-runtime/helpers/toConsumableArray\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2019 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Generalized management class for dealing with watchers on a per-handler (per-level)\n * basis without duplicating code. Handlers are expected to push updates through this\n * class, which are then proxied outwards to any applicable watchers.\n */\nvar WatchManager = exports.WatchManager = function () {\n function WatchManager() {\n (0, _classCallCheck3.default)(this, WatchManager);\n this._watchers = {};\n }\n\n (0, _createClass3.default)(WatchManager, [{\n key: \"watchSetting\",\n // { settingName: { roomId: callbackFns[] } }\n\n // Proxy for handlers to delegate changes to this manager\n value: function watchSetting(settingName, roomId, cb) {\n if (!this._watchers[settingName]) this._watchers[settingName] = {};\n if (!this._watchers[settingName][roomId]) this._watchers[settingName][roomId] = [];\n this._watchers[settingName][roomId].push(cb);\n }\n\n // Proxy for handlers to delegate changes to this manager\n\n }, {\n key: \"unwatchSetting\",\n value: function unwatchSetting(cb) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(this._watchers)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var settingName = _step.value;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)((0, _keys2.default)(this._watchers[settingName])), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var roomId = _step2.value;\n\n var idx = void 0;\n while ((idx = this._watchers[settingName][roomId].indexOf(cb)) !== -1) {\n this._watchers[settingName][roomId].splice(idx, 1);\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }, {\n key: \"notifyUpdate\",\n value: function notifyUpdate(settingName, inRoomId, atLevel, newValueAtLevel) {\n // Dev note: We could avoid raising changes for ultimately inconsequential changes, but\n // we also don't have a reliable way to get the old value of a setting. Instead, we'll just\n // let it fall through regardless and let the receiver dedupe if they want to.\n\n if (!this._watchers[settingName]) return;\n\n var roomWatchers = this._watchers[settingName];\n var callbacks = [];\n\n if (inRoomId !== null && roomWatchers[inRoomId]) callbacks.push.apply(callbacks, (0, _toConsumableArray3.default)(roomWatchers[inRoomId]));\n if (roomWatchers[null]) callbacks.push.apply(callbacks, (0, _toConsumableArray3.default)(roomWatchers[null]));\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(callbacks), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var callback = _step3.value;\n\n callback(inRoomId, atLevel, newValueAtLevel);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n }]);\n return WatchManager;\n}();\n//# sourceMappingURL=WatchManager.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _dispatcher = require('../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// TODO: migrate from sync_state to MatrixActions.sync so that more js-sdk events\n// become dispatches in the same place.\n/**\n * Create a MatrixActions.sync action that represents a MatrixClient `sync` event,\n * each parameter mapping to a key-value in the action.\n *\n * @param {MatrixClient} matrixClient the matrix client\n * @param {string} state the current sync state.\n * @param {string} prevState the previous sync state.\n * @returns {Object} an action of type MatrixActions.sync.\n */\nfunction createSyncAction(matrixClient, state, prevState) {\n return {\n action: 'MatrixActions.sync',\n state: state,\n prevState: prevState,\n matrixClient: matrixClient\n };\n}\n\n/**\n * @typedef AccountDataAction\n * @type {Object}\n * @property {string} action 'MatrixActions.accountData'.\n * @property {MatrixEvent} event the MatrixEvent that triggered the dispatch.\n * @property {string} event_type the type of the MatrixEvent, e.g. \"m.direct\".\n * @property {Object} event_content the content of the MatrixEvent.\n */\n\n/**\n * Create a MatrixActions.accountData action that represents a MatrixClient `accountData`\n * matrix event.\n *\n * @param {MatrixClient} matrixClient the matrix client.\n * @param {MatrixEvent} accountDataEvent the account data event.\n * @returns {AccountDataAction} an action of type MatrixActions.accountData.\n */\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction createAccountDataAction(matrixClient, accountDataEvent) {\n return {\n action: 'MatrixActions.accountData',\n event: accountDataEvent,\n event_type: accountDataEvent.getType(),\n event_content: accountDataEvent.getContent()\n };\n}\n\n/**\n * @typedef RoomAccountDataAction\n * @type {Object}\n * @property {string} action 'MatrixActions.Room.accountData'.\n * @property {MatrixEvent} event the MatrixEvent that triggered the dispatch.\n * @property {string} event_type the type of the MatrixEvent, e.g. \"m.direct\".\n * @property {Object} event_content the content of the MatrixEvent.\n * @property {Room} room the room where the account data was changed.\n */\n\n/**\n * Create a MatrixActions.Room.accountData action that represents a MatrixClient `Room.accountData`\n * matrix event.\n *\n * @param {MatrixClient} matrixClient the matrix client.\n * @param {MatrixEvent} accountDataEvent the account data event.\n * @param {Room} room the room where account data was changed\n * @returns {RoomAccountDataAction} an action of type MatrixActions.Room.accountData.\n */\nfunction createRoomAccountDataAction(matrixClient, accountDataEvent, room) {\n return {\n action: 'MatrixActions.Room.accountData',\n event: accountDataEvent,\n event_type: accountDataEvent.getType(),\n event_content: accountDataEvent.getContent(),\n room: room\n };\n}\n\n/**\n * @typedef RoomAction\n * @type {Object}\n * @property {string} action 'MatrixActions.Room'.\n * @property {Room} room the Room that was stored.\n */\n\n/**\n * Create a MatrixActions.Room action that represents a MatrixClient `Room`\n * matrix event, emitted when a Room is stored in the client.\n *\n * @param {MatrixClient} matrixClient the matrix client.\n * @param {Room} room the Room that was stored.\n * @returns {RoomAction} an action of type `MatrixActions.Room`.\n */\nfunction createRoomAction(matrixClient, room) {\n return { action: 'MatrixActions.Room', room: room };\n}\n\n/**\n * @typedef RoomTagsAction\n * @type {Object}\n * @property {string} action 'MatrixActions.Room.tags'.\n * @property {Room} room the Room whose tags changed.\n */\n\n/**\n * Create a MatrixActions.Room.tags action that represents a MatrixClient\n * `Room.tags` matrix event, emitted when the m.tag room account data\n * event is updated.\n *\n * @param {MatrixClient} matrixClient the matrix client.\n * @param {MatrixEvent} roomTagsEvent the m.tag event.\n * @param {Room} room the Room whose tags were changed.\n * @returns {RoomTagsAction} an action of type `MatrixActions.Room.tags`.\n */\nfunction createRoomTagsAction(matrixClient, roomTagsEvent, room) {\n return { action: 'MatrixActions.Room.tags', room: room };\n}\n\n/**\n * Create a MatrixActions.Room.receipt action that represents a MatrixClient\n * `Room.receipt` event, each parameter mapping to a key-value in the action.\n *\n * @param {MatrixClient} matrixClient the matrix client\n * @param {MatrixEvent} event the receipt event.\n * @param {Room} room the room the receipt happened in.\n * @returns {Object} an action of type MatrixActions.Room.receipt.\n */\nfunction createRoomReceiptAction(matrixClient, event, room) {\n return {\n action: 'MatrixActions.Room.receipt',\n event: event,\n room: room,\n matrixClient: matrixClient\n };\n}\n\n/**\n * @typedef RoomTimelineAction\n * @type {Object}\n * @property {string} action 'MatrixActions.Room.timeline'.\n * @property {boolean} isLiveEvent whether the event was attached to a\n * live timeline.\n * @property {boolean} isLiveUnfilteredRoomTimelineEvent whether the\n * event was attached to a timeline in the set of unfiltered timelines.\n * @property {Room} room the Room whose tags changed.\n */\n\n/**\n * Create a MatrixActions.Room.timeline action that represents a\n * MatrixClient `Room.timeline` matrix event, emitted when an event\n * is added to or removed from a timeline of a room.\n *\n * @param {MatrixClient} matrixClient the matrix client.\n * @param {MatrixEvent} timelineEvent the event that was added/removed.\n * @param {Room} room the Room that was stored.\n * @param {boolean} toStartOfTimeline whether the event is being added\n * to the start (and not the end) of the timeline.\n * @param {boolean} removed whether the event was removed from the\n * timeline.\n * @param {Object} data\n * @param {boolean} data.liveEvent whether the event is a live event,\n * belonging to a live timeline.\n * @param {EventTimeline} data.timeline the timeline being altered.\n * @returns {RoomTimelineAction} an action of type `MatrixActions.Room.timeline`.\n */\nfunction createRoomTimelineAction(matrixClient, timelineEvent, room, toStartOfTimeline, removed, data) {\n return {\n action: 'MatrixActions.Room.timeline',\n event: timelineEvent,\n isLiveEvent: data.liveEvent,\n isLiveUnfilteredRoomTimelineEvent: room && data.timeline.getTimelineSet() === room.getUnfilteredTimelineSet()\n };\n}\n\n/**\n * @typedef RoomMembershipAction\n * @type {Object}\n * @property {string} action 'MatrixActions.Room.myMembership'.\n * @property {Room} room to room for which the self-membership changed.\n * @property {string} membership the new membership\n * @property {string} oldMembership the previous membership, can be null.\n */\n\n/**\n * Create a MatrixActions.Room.myMembership action that represents\n * a MatrixClient `Room.myMembership` event for the syncing user,\n * emitted when the syncing user's membership is updated for a room.\n *\n * @param {MatrixClient} matrixClient the matrix client.\n * @param {Room} room to room for which the self-membership changed.\n * @param {string} membership the new membership\n * @param {string} oldMembership the previous membership, can be null.\n * @returns {RoomMembershipAction} an action of type `MatrixActions.Room.myMembership`.\n */\nfunction createSelfMembershipAction(matrixClient, room, membership, oldMembership) {\n return { action: 'MatrixActions.Room.myMembership', room: room, membership: membership, oldMembership: oldMembership };\n}\n\n/**\n * @typedef EventDecryptedAction\n * @type {Object}\n * @property {string} action 'MatrixActions.Event.decrypted'.\n * @property {MatrixEvent} event the matrix event that was decrypted.\n */\n\n/**\n * Create a MatrixActions.Event.decrypted action that represents\n * a MatrixClient `Event.decrypted` matrix event, emitted when a\n * matrix event is decrypted.\n *\n * @param {MatrixClient} matrixClient the matrix client.\n * @param {MatrixEvent} event the matrix event that was decrypted.\n * @returns {EventDecryptedAction} an action of type `MatrixActions.Event.decrypted`.\n */\nfunction createEventDecryptedAction(matrixClient, event) {\n return { action: 'MatrixActions.Event.decrypted', event: event };\n}\n\n/**\n * This object is responsible for dispatching actions when certain events are emitted by\n * the given MatrixClient.\n */\nexports.default = {\n // A list of callbacks to call to unregister all listeners added\n _matrixClientListenersStop: [],\n\n /**\n * Start listening to certain events from the MatrixClient and dispatch actions when\n * they are emitted.\n * @param {MatrixClient} matrixClient the MatrixClient to listen to events from\n */\n start: function start(matrixClient) {\n this._addMatrixClientListener(matrixClient, 'sync', createSyncAction);\n this._addMatrixClientListener(matrixClient, 'accountData', createAccountDataAction);\n this._addMatrixClientListener(matrixClient, 'Room.accountData', createRoomAccountDataAction);\n this._addMatrixClientListener(matrixClient, 'Room', createRoomAction);\n this._addMatrixClientListener(matrixClient, 'Room.tags', createRoomTagsAction);\n this._addMatrixClientListener(matrixClient, 'Room.receipt', createRoomReceiptAction);\n this._addMatrixClientListener(matrixClient, 'Room.timeline', createRoomTimelineAction);\n this._addMatrixClientListener(matrixClient, 'Room.myMembership', createSelfMembershipAction);\n this._addMatrixClientListener(matrixClient, 'Event.decrypted', createEventDecryptedAction);\n },\n\n\n /**\n * Start listening to events of type eventName on matrixClient and when they are emitted,\n * dispatch an action created by the actionCreator function.\n * @param {MatrixClient} matrixClient a MatrixClient to register a listener with.\n * @param {string} eventName the event to listen to on MatrixClient.\n * @param {function} actionCreator a function that should return an action to dispatch\n * when given the MatrixClient as an argument as well as\n * arguments emitted in the MatrixClient event.\n */\n _addMatrixClientListener: function _addMatrixClientListener(matrixClient, eventName, actionCreator) {\n var listener = function listener() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var payload = actionCreator.apply(undefined, [matrixClient].concat(args));\n if (payload) {\n _dispatcher2.default.dispatch(payload, true);\n }\n };\n matrixClient.on(eventName, listener);\n this._matrixClientListenersStop.push(function () {\n matrixClient.removeListener(eventName, listener);\n });\n },\n\n\n /**\n * Stop listening to events.\n */\n stop: function stop() {\n this._matrixClientListenersStop.forEach(function (stopListener) {\n return stopListener();\n });\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=MatrixActionCreators.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _url = require('url');\n\nvar _url2 = _interopRequireDefault(_url);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _SettingsStore = require('./settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _Terms = require('./Terms');\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar Matrix = _interopRequireWildcard(_matrixJsSdk);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar request = require('browser-request');\n\nvar SdkConfig = require('./SdkConfig');\nvar MatrixClientPeg = require('./MatrixClientPeg');\n\n// The version of the integration manager API we're intending to work with\nvar imApiVersion = \"1.1\";\n\nvar ScalarAuthClient = function () {\n function ScalarAuthClient(apiUrl, uiUrl) {\n (0, _classCallCheck3.default)(this, ScalarAuthClient);\n\n this.apiUrl = apiUrl;\n this.uiUrl = uiUrl;\n this.scalarToken = null;\n // `undefined` to allow `startTermsFlow` to fallback to a default\n // callback if this is unset.\n this.termsInteractionCallback = undefined;\n\n // We try and store the token on a per-manager basis, but need a fallback\n // for the default manager.\n var configApiUrl = SdkConfig.get()['integrations_rest_url'];\n var configUiUrl = SdkConfig.get()['integrations_ui_url'];\n this.isDefaultManager = apiUrl === configApiUrl && configUiUrl === uiUrl;\n }\n\n (0, _createClass3.default)(ScalarAuthClient, [{\n key: '_writeTokenToStore',\n value: function _writeTokenToStore() {\n window.localStorage.setItem(\"mx_scalar_token_at_\" + this.apiUrl, this.scalarToken);\n if (this.isDefaultManager) {\n // We remove the old token from storage to migrate upwards. This is safe\n // to do because even if the user switches to /app when this is on /develop\n // they'll at worst register for a new token.\n window.localStorage.removeItem(\"mx_scalar_token\"); // no-op when not present\n }\n }\n }, {\n key: '_readTokenFromStore',\n value: function _readTokenFromStore() {\n var token = window.localStorage.getItem(\"mx_scalar_token_at_\" + this.apiUrl);\n if (!token && this.isDefaultManager) {\n token = window.localStorage.getItem(\"mx_scalar_token\");\n }\n return token;\n }\n }, {\n key: '_readToken',\n value: function _readToken() {\n if (this.scalarToken) return this.scalarToken;\n return this._readTokenFromStore();\n }\n }, {\n key: 'setTermsInteractionCallback',\n value: function setTermsInteractionCallback(callback) {\n this.termsInteractionCallback = callback;\n }\n }, {\n key: 'connect',\n value: function connect() {\n var _this = this;\n\n return this.getScalarToken().then(function (tok) {\n _this.scalarToken = tok;\n });\n }\n }, {\n key: 'hasCredentials',\n value: function hasCredentials() {\n return this.scalarToken != null; // undef or null\n }\n\n // Returns a promise that resolves to a scalar_token string\n\n }, {\n key: 'getScalarToken',\n value: function getScalarToken() {\n var _this2 = this;\n\n var token = this._readToken();\n\n if (!token) {\n return this.registerForToken();\n } else {\n return this._checkToken(token).catch(function (e) {\n if (e instanceof _Terms.TermsNotSignedError) {\n // retrying won't help this\n throw e;\n }\n return _this2.registerForToken();\n });\n }\n }\n }, {\n key: '_getAccountName',\n value: function _getAccountName(token) {\n var url = this.apiUrl + \"/account\";\n\n return new _bluebird2.default(function (resolve, reject) {\n request({\n method: \"GET\",\n uri: url,\n qs: { scalar_token: token, v: imApiVersion },\n json: true\n }, function (err, response, body) {\n if (err) {\n reject(err);\n } else if (body && body.errcode === 'M_TERMS_NOT_SIGNED') {\n reject(new _Terms.TermsNotSignedError());\n } else if (response.statusCode / 100 !== 2) {\n reject(body);\n } else if (!body || !body.user_id) {\n reject(new Error(\"Missing user_id in response\"));\n } else {\n resolve(body.user_id);\n }\n });\n });\n }\n }, {\n key: '_checkToken',\n value: function _checkToken(token) {\n var _this3 = this;\n\n return this._getAccountName(token).then(function (userId) {\n var me = MatrixClientPeg.get().getUserId();\n if (userId !== me) {\n throw new Error(\"Scalar token is owned by someone else: \" + me);\n }\n return token;\n }).catch(function (e) {\n if (e instanceof _Terms.TermsNotSignedError) {\n console.log(\"Integration manager requires new terms to be agreed to\");\n // The terms endpoints are new and so live on standard _matrix prefixes,\n // but IM rest urls are currently configured with paths, so remove the\n // path from the base URL before passing it to the js-sdk\n\n // We continue to use the full URL for the calls done by\n // matrix-react-sdk, but the standard terms API called\n // by the js-sdk lives on the standard _matrix path. This means we\n // don't support running IMs on a non-root path, but it's the only\n // realistic way of transitioning to _matrix paths since configs in\n // the wild contain bits of the API path.\n\n // Once we've fully transitioned to _matrix URLs, we can give people\n // a grace period to update their configs, then use the rest url as\n // a regular base url.\n var parsedImRestUrl = _url2.default.parse(_this3.apiUrl);\n parsedImRestUrl.path = '';\n parsedImRestUrl.pathname = '';\n return (0, _Terms.startTermsFlow)([new _Terms.Service(Matrix.SERVICE_TYPES.IM, parsedImRestUrl.format(), token)], _this3.termsInteractionCallback).then(function () {\n return token;\n });\n } else {\n throw e;\n }\n });\n }\n }, {\n key: 'registerForToken',\n value: function registerForToken() {\n var _this4 = this;\n\n // Get openid bearer token from the HS as the first part of our dance\n return MatrixClientPeg.get().getOpenIdToken().then(function (tokenObject) {\n // Now we can send that to scalar and exchange it for a scalar token\n return _this4.exchangeForScalarToken(tokenObject);\n }).then(function (token) {\n // Validate it (this mostly checks to see if the IM needs us to agree to some terms)\n return _this4._checkToken(token);\n }).then(function (token) {\n _this4.scalarToken = token;\n _this4._writeTokenToStore();\n return token;\n });\n }\n }, {\n key: 'exchangeForScalarToken',\n value: function exchangeForScalarToken(openidTokenObject) {\n var scalarRestUrl = this.apiUrl;\n\n return new _bluebird2.default(function (resolve, reject) {\n request({\n method: 'POST',\n uri: scalarRestUrl + '/register',\n qs: { v: imApiVersion },\n body: openidTokenObject,\n json: true\n }, function (err, response, body) {\n if (err) {\n reject(err);\n } else if (response.statusCode / 100 !== 2) {\n reject({ statusCode: response.statusCode });\n } else if (!body || !body.scalar_token) {\n reject(new Error(\"Missing scalar_token in response\"));\n } else {\n resolve(body.scalar_token);\n }\n });\n });\n }\n }, {\n key: 'getScalarPageTitle',\n value: function getScalarPageTitle(url) {\n var scalarPageLookupUrl = this.apiUrl + '/widgets/title_lookup';\n scalarPageLookupUrl = this.getStarterLink(scalarPageLookupUrl);\n scalarPageLookupUrl += '&curl=' + encodeURIComponent(url);\n\n return new _bluebird2.default(function (resolve, reject) {\n request({\n method: 'GET',\n uri: scalarPageLookupUrl,\n json: true\n }, function (err, response, body) {\n if (err) {\n reject(err);\n } else if (response.statusCode / 100 !== 2) {\n reject({ statusCode: response.statusCode });\n } else if (!body) {\n reject(new Error(\"Missing page title in response\"));\n } else {\n var title = \"\";\n if (body.page_title_cache_item && body.page_title_cache_item.cached_title) {\n title = body.page_title_cache_item.cached_title;\n }\n resolve(title);\n }\n });\n });\n }\n\n /**\n * Mark all assets associated with the specified widget as \"disabled\" in the\n * integration manager database.\n * This can be useful to temporarily prevent purchased assets from being displayed.\n * @param {string} widgetType [description]\n * @param {string} widgetId [description]\n * @return {Promise} Resolves on completion\n */\n\n }, {\n key: 'disableWidgetAssets',\n value: function disableWidgetAssets(widgetType, widgetId) {\n var url = this.apiUrl + '/widgets/set_assets_state';\n url = this.getStarterLink(url);\n return new _bluebird2.default(function (resolve, reject) {\n request({\n method: 'GET',\n uri: url,\n json: true,\n qs: {\n 'widget_type': widgetType,\n 'widget_id': widgetId,\n 'state': 'disable'\n }\n }, function (err, response, body) {\n if (err) {\n reject(err);\n } else if (response.statusCode / 100 !== 2) {\n reject({ statusCode: response.statusCode });\n } else if (!body) {\n reject(new Error(\"Failed to set widget assets state\"));\n } else {\n resolve();\n }\n });\n });\n }\n }, {\n key: 'getScalarInterfaceUrlForRoom',\n value: function getScalarInterfaceUrlForRoom(room, screen, id) {\n var roomId = room.roomId;\n var roomName = room.name;\n var url = this.uiUrl;\n url += \"?scalar_token=\" + encodeURIComponent(this.scalarToken);\n url += \"&room_id=\" + encodeURIComponent(roomId);\n url += \"&room_name=\" + encodeURIComponent(roomName);\n url += \"&theme=\" + encodeURIComponent(_SettingsStore2.default.getValue(\"theme\"));\n if (id) {\n url += '&integ_id=' + encodeURIComponent(id);\n }\n if (screen) {\n url += '&screen=' + encodeURIComponent(screen);\n }\n return url;\n }\n }, {\n key: 'getStarterLink',\n value: function getStarterLink(starterLinkUrl) {\n return starterLinkUrl + \"?scalar_token=\" + encodeURIComponent(this.scalarToken);\n }\n }]);\n return ScalarAuthClient;\n}();\n\nexports.default = ScalarAuthClient;\nmodule.exports = exports['default'];\n//# sourceMappingURL=ScalarAuthClient.js.map","\"use strict\";\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _MatrixClientPeg = require(\"./MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _dispatcher = require(\"./dispatcher\");\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Timer = require(\"./utils/Timer\");\n\nvar _Timer2 = _interopRequireDefault(_Timer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Time in ms after that a user is considered as unavailable/away\nvar UNAVAILABLE_TIME_MS = 3 * 60 * 1000; // 3 mins\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar PRESENCE_STATES = [\"online\", \"offline\", \"unavailable\"];\n\nvar Presence = function () {\n function Presence() {\n (0, _classCallCheck3.default)(this, Presence);\n\n this._activitySignal = null;\n this._unavailableTimer = null;\n this._onAction = this._onAction.bind(this);\n this._dispatcherRef = null;\n }\n /**\n * Start listening the user activity to evaluate his presence state.\n * Any state change will be sent to the homeserver.\n */\n\n\n (0, _createClass3.default)(Presence, [{\n key: \"start\",\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this._unavailableTimer = new _Timer2.default(UNAVAILABLE_TIME_MS);\n // the user_activity_start action starts the timer\n this._dispatcherRef = _dispatcher2.default.register(this._onAction);\n\n case 2:\n if (!this._unavailableTimer) {\n _context.next = 13;\n break;\n }\n\n _context.prev = 3;\n _context.next = 6;\n return (0, _bluebird.resolve)(this._unavailableTimer.finished());\n\n case 6:\n this.setState(\"unavailable\");\n _context.next = 11;\n break;\n\n case 9:\n _context.prev = 9;\n _context.t0 = _context[\"catch\"](3);\n\n case 11:\n _context.next = 2;\n break;\n\n case 13:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[3, 9]]);\n }));\n\n function start() {\n return _ref.apply(this, arguments);\n }\n\n return start;\n }()\n\n /**\n * Stop tracking user activity\n */\n\n }, {\n key: \"stop\",\n value: function stop() {\n if (this._dispatcherRef) {\n _dispatcher2.default.unregister(this._dispatcherRef);\n this._dispatcherRef = null;\n }\n if (this._unavailableTimer) {\n this._unavailableTimer.abort();\n this._unavailableTimer = null;\n }\n }\n\n /**\n * Get the current presence state.\n * @returns {string} the presence state (see PRESENCE enum)\n */\n\n }, {\n key: \"getState\",\n value: function getState() {\n return this.state;\n }\n }, {\n key: \"_onAction\",\n value: function _onAction(payload) {\n if (payload.action === 'user_activity') {\n this.setState(\"online\");\n this._unavailableTimer.restart();\n }\n }\n\n /**\n * Set the presence state.\n * If the state has changed, the homeserver will be notified.\n * @param {string} newState the new presence state (see PRESENCE enum)\n */\n\n }, {\n key: \"setState\",\n value: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(newState) {\n var oldState;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!(newState === this.state)) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 2:\n if (!(PRESENCE_STATES.indexOf(newState) === -1)) {\n _context2.next = 4;\n break;\n }\n\n throw new Error(\"Bad presence state: \" + newState);\n\n case 4:\n oldState = this.state;\n\n this.state = newState;\n\n if (!_MatrixClientPeg2.default.get().isGuest()) {\n _context2.next = 8;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 8:\n _context2.prev = 8;\n _context2.next = 11;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get().setPresence(this.state));\n\n case 11:\n console.log(\"Presence: %s\", newState);\n _context2.next = 18;\n break;\n\n case 14:\n _context2.prev = 14;\n _context2.t0 = _context2[\"catch\"](8);\n\n console.error(\"Failed to set presence: %s\", _context2.t0);\n this.state = oldState;\n\n case 18:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[8, 14]]);\n }));\n\n function setState(_x) {\n return _ref2.apply(this, arguments);\n }\n\n return setState;\n }()\n }]);\n return Presence;\n}();\n\nmodule.exports = new Presence();\n//# sourceMappingURL=Presence.js.map","/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport qs from 'querystring';\n\n// We want to support some name / value pairs in the fragment\n// so we're re-using query string like format\n//\n// returns {location, params}\nexport function parseQsFromFragment(location) {\n // if we have a fragment, it will start with '#', which we need to drop.\n // (if we don't, this will return '').\n const fragment = location.hash.substring(1);\n\n // our fragment may contain a query-param-like section. we need to fish\n // this out *before* URI-decoding because the params may contain ? and &\n // characters which are only URI-encoded once.\n const hashparts = fragment.split('?');\n\n const result = {\n location: decodeURIComponent(hashparts[0]),\n params: {},\n };\n\n if (hashparts.length > 1) {\n result.params = qs.parse(hashparts[1]);\n }\n return result;\n}\n\nexport function parseQs(location) {\n return qs.parse(location.search.substring(1));\n}\n","// @flow\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\nCopyright 2019 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport VectorBasePlatform, {updateCheckStatusEnum} from './VectorBasePlatform';\nimport dis from 'matrix-react-sdk/lib/dispatcher';\nimport { _t } from 'matrix-react-sdk/lib/languageHandler';\nimport Promise from 'bluebird';\nimport rageshake from 'matrix-react-sdk/lib/rageshake/rageshake';\n\nconst ipcRenderer = window.ipcRenderer;\n\nfunction platformFriendlyName(): string {\n // used to use window.process but the same info is available here\n if (navigator.userAgent.includes('Macintosh')) {\n return 'macOS';\n } else if (navigator.userAgent.includes('FreeBSD')) {\n return 'FreeBSD';\n } else if (navigator.userAgent.includes('OpenBSD')) {\n return 'OpenBSD';\n } else if (navigator.userAgent.includes('SunOS')) {\n return 'SunOS';\n } else if (navigator.userAgent.includes('Windows')) {\n return 'Windows';\n } else if (navigator.userAgent.includes('Linux')) {\n return 'Linux';\n } else {\n return 'Unknown';\n }\n}\n\nfunction _onAction(payload: Object) {\n // Whitelist payload actions, no point sending most across\n if (['call_state'].includes(payload.action)) {\n ipcRenderer.send('app_onAction', payload);\n }\n}\n\nfunction getUpdateCheckStatus(status) {\n if (status === true) {\n return { status: updateCheckStatusEnum.DOWNLOADING };\n } else if (status === false) {\n return { status: updateCheckStatusEnum.NOTAVAILABLE };\n } else {\n return {\n status: updateCheckStatusEnum.ERROR,\n detail: status,\n };\n }\n}\n\nexport default class ElectronPlatform extends VectorBasePlatform {\n constructor() {\n super();\n\n this._pendingIpcCalls = {};\n this._nextIpcCallId = 0;\n\n dis.register(_onAction);\n /*\n IPC Call `check_updates` returns:\n true if there is an update available\n false if there is not\n or the error if one is encountered\n */\n ipcRenderer.on('check_updates', (event, status) => {\n if (!this.showUpdateCheck) return;\n dis.dispatch({\n action: 'check_updates',\n value: getUpdateCheckStatus(status),\n });\n this.showUpdateCheck = false;\n });\n\n // try to flush the rageshake logs to indexeddb before quit.\n ipcRenderer.on('before-quit', function() {\n console.log('riot-desktop closing');\n rageshake.flush();\n });\n\n ipcRenderer.on('ipcReply', this._onIpcReply.bind(this));\n ipcRenderer.on('update-downloaded', this.onUpdateDownloaded.bind(this));\n\n this.startUpdateCheck = this.startUpdateCheck.bind(this);\n this.stopUpdateCheck = this.stopUpdateCheck.bind(this);\n }\n\n async getConfig(): Promise<{}> {\n return this._ipcCall('getConfig');\n }\n\n async onUpdateDownloaded(ev, updateInfo) {\n dis.dispatch({\n action: 'new_version',\n currentVersion: await this.getAppVersion(),\n newVersion: updateInfo,\n releaseNotes: updateInfo.releaseNotes,\n });\n }\n\n getHumanReadableName(): string {\n return 'Electron Platform'; // no translation required: only used for analytics\n }\n\n setNotificationCount(count: number) {\n if (this.notificationCount === count) return;\n super.setNotificationCount(count);\n\n ipcRenderer.send('setBadgeCount', count);\n }\n\n supportsNotifications(): boolean {\n return true;\n }\n\n maySendNotifications(): boolean {\n return true;\n }\n\n displayNotification(title: string, msg: string, avatarUrl: string, room: Object): Notification {\n // GNOME notification spec parses HTML tags for styling...\n // Electron Docs state all supported linux notification systems follow this markup spec\n // https://github.com/electron/electron/blob/master/docs/tutorial/desktop-environment-integration.md#linux\n // maybe we should pass basic styling (italics, bold, underline) through from MD\n // we only have to strip out < and > as the spec doesn't include anything about things like &\n // so we shouldn't assume that all implementations will treat those properly. Very basic tag parsing is done.\n if (navigator.userAgent.includes('Linux')) {\n msg = msg.replace(//g, '>');\n }\n\n // Notifications in Electron use the HTML5 notification API\n const notifBody = {\n body: msg,\n silent: true, // we play our own sounds\n };\n if (avatarUrl) notifBody['icon'] = avatarUrl;\n const notification = new global.Notification(title, notifBody);\n\n notification.onclick = () => {\n dis.dispatch({\n action: 'view_room',\n room_id: room.roomId,\n });\n global.focus();\n this._ipcCall('focusWindow');\n };\n\n return notification;\n }\n\n loudNotification(ev: Event, room: Object) {\n ipcRenderer.send('loudNotification');\n }\n\n clearNotification(notif: Notification) {\n notif.close();\n }\n\n async getAppVersion(): Promise {\n return this._ipcCall('getAppVersion');\n }\n\n supportsAutoLaunch(): boolean {\n return true;\n }\n\n async getAutoLaunchEnabled(): boolean {\n return this._ipcCall('getAutoLaunchEnabled');\n }\n\n async setAutoLaunchEnabled(enabled: boolean): void {\n return this._ipcCall('setAutoLaunchEnabled', enabled);\n }\n\n supportsAutoHideMenuBar(): boolean {\n return true;\n }\n\n async getAutoHideMenuBarEnabled(): boolean {\n return this._ipcCall('getAutoHideMenuBarEnabled');\n }\n\n async setAutoHideMenuBarEnabled(enabled: boolean): void {\n return this._ipcCall('setAutoHideMenuBarEnabled', enabled);\n }\n\n supportsMinimizeToTray(): boolean {\n return true;\n }\n\n async getMinimizeToTrayEnabled(): boolean {\n return this._ipcCall('getMinimizeToTrayEnabled');\n }\n\n async setMinimizeToTrayEnabled(enabled: boolean): void {\n return this._ipcCall('setMinimizeToTrayEnabled', enabled);\n }\n\n async canSelfUpdate(): boolean {\n const feedUrl = await this._ipcCall('getUpdateFeedUrl');\n return Boolean(feedUrl);\n }\n\n startUpdateCheck() {\n if (this.showUpdateCheck) return;\n super.startUpdateCheck();\n\n ipcRenderer.send('check_updates');\n }\n\n installUpdate() {\n // IPC to the main process to install the update, since quitAndInstall\n // doesn't fire the before-quit event so the main process needs to know\n // it should exit.\n ipcRenderer.send('install_update');\n }\n\n getDefaultDeviceDisplayName(): string {\n return _t('Riot Desktop on %(platformName)s', { platformName: platformFriendlyName() });\n }\n\n screenCaptureErrorString(): ?string {\n return null;\n }\n\n requestNotificationPermission(): Promise {\n return Promise.resolve('granted');\n }\n\n reload() {\n // we used to remote to the main process to get it to\n // reload the webcontents, but in practice this is unnecessary:\n // the normal way works fine.\n window.location.reload(false);\n }\n\n async migrateFromOldOrigin() {\n return this._ipcCall('origin_migrate');\n }\n\n async _ipcCall(name, ...args) {\n const ipcCallId = ++this._nextIpcCallId;\n return new Promise((resolve, reject) => {\n this._pendingIpcCalls[ipcCallId] = {resolve, reject};\n window.ipcRenderer.send('ipcCall', {id: ipcCallId, name, args});\n // Maybe add a timeout to these? Probably not necessary.\n });\n }\n\n _onIpcReply(ev, payload) {\n if (payload.id === undefined) {\n console.warn(\"Ignoring IPC reply with no ID\");\n return;\n }\n\n if (this._pendingIpcCalls[payload.id] === undefined) {\n console.warn(\"Unknown IPC payload ID: \" + payload.id);\n return;\n }\n\n const callbacks = this._pendingIpcCalls[payload.id];\n delete this._pendingIpcCalls[payload.id];\n if (payload.error) {\n callbacks.reject(payload.error);\n } else {\n callbacks.resolve(payload.reply);\n }\n }\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bluebird = require('bluebird');\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Base class for classes that provide platform-specific functionality\n * eg. Setting an application badge or displaying notifications\n *\n * Instances of this class are provided by the application.\n */\nvar BasePlatform = function () {\n function BasePlatform() {\n (0, _classCallCheck3.default)(this, BasePlatform);\n\n this.notificationCount = 0;\n this.errorDidOccur = false;\n\n _dispatcher2.default.register(this._onAction.bind(this));\n }\n\n (0, _createClass3.default)(BasePlatform, [{\n key: '_onAction',\n value: function _onAction(payload) {\n switch (payload.action) {\n case 'on_client_not_viable':\n case 'on_logged_out':\n this.setNotificationCount(0);\n break;\n }\n }\n\n // Used primarily for Analytics\n\n }, {\n key: 'getHumanReadableName',\n value: function getHumanReadableName() {\n return 'Base Platform';\n }\n }, {\n key: 'setNotificationCount',\n value: function setNotificationCount(count) {\n this.notificationCount = count;\n }\n }, {\n key: 'setErrorStatus',\n value: function setErrorStatus(errorDidOccur) {\n this.errorDidOccur = errorDidOccur;\n }\n\n /**\n * Returns true if the platform supports displaying\n * notifications, otherwise false.\n * @returns {boolean} whether the platform supports displaying notifications\n */\n\n }, {\n key: 'supportsNotifications',\n value: function supportsNotifications() {\n return false;\n }\n\n /**\n * Returns true if the application currently has permission\n * to display notifications. Otherwise false.\n * @returns {boolean} whether the application has permission to display notifications\n */\n\n }, {\n key: 'maySendNotifications',\n value: function maySendNotifications() {\n return false;\n }\n\n /**\n * Requests permission to send notifications. Returns\n * a promise that is resolved when the user has responded\n * to the request. The promise has a single string argument\n * that is 'granted' if the user allowed the request or\n * 'denied' otherwise.\n */\n\n }, {\n key: 'requestNotificationPermission',\n value: function requestNotificationPermission() {}\n }, {\n key: 'displayNotification',\n value: function displayNotification(title, msg, avatarUrl, room) {}\n }, {\n key: 'loudNotification',\n value: function loudNotification(ev, room) {}\n\n /**\n * Returns a promise that resolves to a string representing\n * the current version of the application.\n */\n\n }, {\n key: 'getAppVersion',\n value: function getAppVersion() {\n throw new Error(\"getAppVersion not implemented!\");\n }\n\n /*\n * If it's not expected that capturing the screen will work\n * with getUserMedia, return a string explaining why not.\n * Otherwise, return null.\n */\n\n }, {\n key: 'screenCaptureErrorString',\n value: function screenCaptureErrorString() {\n return \"Not implemented\";\n }\n\n /**\n * Restarts the application, without neccessarily reloading\n * any application code\n */\n\n }, {\n key: 'reload',\n value: function reload() {\n throw new Error(\"reload not implemented!\");\n }\n }, {\n key: 'supportsAutoLaunch',\n value: function supportsAutoLaunch() {\n return false;\n }\n\n // XXX: Surely this should be a setting like any other?\n\n }, {\n key: 'getAutoLaunchEnabled',\n value: function () {\n var _ref = (0, _bluebird.method)(function () {\n return false;\n });\n\n function getAutoLaunchEnabled() {\n return _ref.apply(this, arguments);\n }\n\n return getAutoLaunchEnabled;\n }()\n }, {\n key: 'setAutoLaunchEnabled',\n value: function () {\n var _ref2 = (0, _bluebird.method)(function (enabled) {\n throw new Error(\"Unimplemented\");\n });\n\n function setAutoLaunchEnabled(_x) {\n return _ref2.apply(this, arguments);\n }\n\n return setAutoLaunchEnabled;\n }()\n }, {\n key: 'supportsAutoHideMenuBar',\n value: function supportsAutoHideMenuBar() {\n return false;\n }\n }, {\n key: 'getAutoHideMenuBarEnabled',\n value: function () {\n var _ref3 = (0, _bluebird.method)(function () {\n return false;\n });\n\n function getAutoHideMenuBarEnabled() {\n return _ref3.apply(this, arguments);\n }\n\n return getAutoHideMenuBarEnabled;\n }()\n }, {\n key: 'setAutoHideMenuBarEnabled',\n value: function () {\n var _ref4 = (0, _bluebird.method)(function (enabled) {\n throw new Error(\"Unimplemented\");\n });\n\n function setAutoHideMenuBarEnabled(_x2) {\n return _ref4.apply(this, arguments);\n }\n\n return setAutoHideMenuBarEnabled;\n }()\n }, {\n key: 'supportsMinimizeToTray',\n value: function supportsMinimizeToTray() {\n return false;\n }\n }, {\n key: 'getMinimizeToTrayEnabled',\n value: function () {\n var _ref5 = (0, _bluebird.method)(function () {\n return false;\n });\n\n function getMinimizeToTrayEnabled() {\n return _ref5.apply(this, arguments);\n }\n\n return getMinimizeToTrayEnabled;\n }()\n }, {\n key: 'setMinimizeToTrayEnabled',\n value: function () {\n var _ref6 = (0, _bluebird.method)(function (enabled) {\n throw new Error(\"Unimplemented\");\n });\n\n function setMinimizeToTrayEnabled(_x3) {\n return _ref6.apply(this, arguments);\n }\n\n return setMinimizeToTrayEnabled;\n }()\n }]);\n return BasePlatform;\n}();\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = BasePlatform;\nmodule.exports = exports['default'];\n//# sourceMappingURL=BasePlatform.js.map","/**\n * @license MIT\n * @fileOverview Favico animations\n * @author Miroslav Magda, http://blog.ejci.net\n * @version 0.3.10\n */\n\n/**\n * Create new favico instance\n * @param {Object} Options\n * @return {Object} Favico object\n * @example\n * var favico = new Favico({\n * bgColor : '#d00',\n * textColor : '#fff',\n * fontFamily : 'sans-serif',\n * fontStyle : 'bold',\n * position : 'down',\n * type : 'circle',\n * animation : 'slide',\n * dataUrl: function(url){},\n * win: top\n * });\n */\n(function () {\n\n\tvar Favico = (function (opt) {\n\t\t'use strict';\n\t\topt = (opt) ? opt : {};\n\t\tvar _def = {\n\t\t\tbgColor: '#d00',\n\t\t\ttextColor: '#fff',\n\t\t\tfontFamily: 'sans-serif', //Arial,Verdana,Times New Roman,serif,sans-serif,...\n\t\t\tfontStyle: 'bold', //normal,italic,oblique,bold,bolder,lighter,100,200,300,400,500,600,700,800,900\n\t\t\ttype: 'circle',\n\t\t\tposition: 'down', // down, up, left, leftup (upleft)\n\t\t\tanimation: 'slide',\n\t\t\telementId: false,\n\t\t\tdataUrl: false,\n\t\t\twin: window\n\t\t};\n\t\tvar _opt, _orig, _h, _w, _canvas, _context, _img, _ready, _lastBadge, _running, _readyCb, _stop, _browser, _animTimeout, _drawTimeout, _doc;\n\n\t\t_browser = {};\n\t\t_browser.ff = typeof InstallTrigger != 'undefined';\n\t\t_browser.chrome = !!window.chrome;\n\t\t_browser.opera = !!window.opera || navigator.userAgent.indexOf('Opera') >= 0;\n\t\t_browser.ie = /*@cc_on!@*/false;\n\t\t_browser.safari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;\n\t\t_browser.supported = (_browser.chrome || _browser.ff || _browser.opera);\n\n\t\tvar _queue = [];\n\t\t_readyCb = function () {\n\t\t};\n\t\t_ready = _stop = false;\n\t\t/**\n\t\t * Initialize favico\n\t\t */\n\t\tvar init = function () {\n\t\t\t//merge initial options\n\t\t\t_opt = merge(_def, opt);\n\t\t\t_opt.bgColor = hexToRgb(_opt.bgColor);\n\t\t\t_opt.textColor = hexToRgb(_opt.textColor);\n\t\t\t_opt.position = _opt.position.toLowerCase();\n\t\t\t_opt.animation = (animation.types['' + _opt.animation]) ? _opt.animation : _def.animation;\n\n\t\t\t_doc = _opt.win.document;\n\n\t\t\tvar isUp = _opt.position.indexOf('up') > -1;\n\t\t\tvar isLeft = _opt.position.indexOf('left') > -1;\n\n\t\t\t//transform animation\n\t\t\tif (isUp || isLeft) {\n\t\t\t\tfor (var i = 0; i < animation.types['' + _opt.animation].length; i++) {\n\t\t\t\t\tvar step = animation.types['' + _opt.animation][i];\n\n\t\t\t\t\tif (isUp) {\n\t\t\t\t\t\tif (step.y < 0.6) {\n\t\t\t\t\t\t\tstep.y = step.y - 0.4;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstep.y = step.y - 2 * step.y + (1 - step.w);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (isLeft) {\n\t\t\t\t\t\tif (step.x < 0.6) {\n\t\t\t\t\t\t\tstep.x = step.x - 0.4;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstep.x = step.x - 2 * step.x + (1 - step.h);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tanimation.types['' + _opt.animation][i] = step;\n\t\t\t\t}\n\t\t\t}\n\t\t\t_opt.type = (type['' + _opt.type]) ? _opt.type : _def.type;\n\n\t\t\t_orig = link.getIcon();\n\t\t\t//create temp canvas\n\t\t\t_canvas = document.createElement('canvas');\n\t\t\t//create temp image\n\t\t\t_img = document.createElement('img');\n\t\t\tif (_orig.hasAttribute('href')) {\n\t\t\t\t_img.setAttribute('crossOrigin', 'anonymous');\n\t\t\t\t//get width/height\n\t\t\t\t_img.onload = function () {\n\t\t\t\t\t_h = (_img.height > 0) ? _img.height : 32;\n\t\t\t\t\t_w = (_img.width > 0) ? _img.width : 32;\n\t\t\t\t\t_canvas.height = _h;\n\t\t\t\t\t_canvas.width = _w;\n\t\t\t\t\t_context = _canvas.getContext('2d');\n\t\t\t\t\ticon.ready();\n\t\t\t\t};\n\t\t\t\t_img.setAttribute('src', _orig.getAttribute('href'));\n\t\t\t} else {\n\t\t\t\t_img.onload = function () {\n\t\t\t\t\t_h = 32;\n\t\t\t\t\t_w = 32;\n\t\t\t\t\t_img.height = _h;\n\t\t\t\t\t_img.width = _w;\n\t\t\t\t\t_canvas.height = _h;\n\t\t\t\t\t_canvas.width = _w;\n\t\t\t\t\t_context = _canvas.getContext('2d');\n\t\t\t\t\ticon.ready();\n\t\t\t\t};\n\t\t\t\t_img.setAttribute('src', '');\n\t\t\t}\n\n\t\t};\n\t\t/**\n\t\t * Icon namespace\n\t\t */\n\t\tvar icon = {};\n\t\t/**\n\t\t * Icon is ready (reset icon) and start animation (if ther is any)\n\t\t */\n\t\ticon.ready = function () {\n\t\t\t_ready = true;\n\t\t\ticon.reset();\n\t\t\t_readyCb();\n\t\t};\n\t\t/**\n\t\t * Reset icon to default state\n\t\t */\n\t\ticon.reset = function () {\n\t\t\t//reset\n\t\t\tif (!_ready) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t_queue = [];\n\t\t\t_lastBadge = false;\n\t\t\t_running = false;\n\t\t\t_context.clearRect(0, 0, _w, _h);\n\t\t\t_context.drawImage(_img, 0, 0, _w, _h);\n\t\t\t//_stop=true;\n\t\t\tlink.setIcon(_canvas);\n\t\t\t//webcam('stop');\n\t\t\t//video('stop');\n\t\t\twindow.clearTimeout(_animTimeout);\n\t\t\twindow.clearTimeout(_drawTimeout);\n\t\t};\n\t\t/**\n\t\t * Start animation\n\t\t */\n\t\ticon.start = function () {\n\t\t\tif (!_ready || _running) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar finished = function () {\n\t\t\t\t_lastBadge = _queue[0];\n\t\t\t\t_running = false;\n\t\t\t\tif (_queue.length > 0) {\n\t\t\t\t\t_queue.shift();\n\t\t\t\t\ticon.start();\n\t\t\t\t} else {\n\n\t\t\t\t}\n\t\t\t};\n\t\t\tif (_queue.length > 0) {\n\t\t\t\t_running = true;\n\t\t\t\tvar run = function () {\n\t\t\t\t\t// apply options for this animation\n\t\t\t\t\t['type', 'animation', 'bgColor', 'textColor', 'fontFamily', 'fontStyle'].forEach(function (a) {\n\t\t\t\t\t\tif (a in _queue[0].options) {\n\t\t\t\t\t\t\t_opt[a] = _queue[0].options[a];\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tanimation.run(_queue[0].options, function () {\n\t\t\t\t\t\tfinished();\n\t\t\t\t\t}, false);\n\t\t\t\t};\n\t\t\t\tif (_lastBadge) {\n\t\t\t\t\tanimation.run(_lastBadge.options, function () {\n\t\t\t\t\t\trun();\n\t\t\t\t\t}, true);\n\t\t\t\t} else {\n\t\t\t\t\trun();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Badge types\n\t\t */\n\t\tvar type = {};\n\t\tvar options = function (opt) {\n\t\t\topt.n = ((typeof opt.n) === 'number') ? Math.abs(opt.n | 0) : opt.n;\n\t\t\topt.x = _w * opt.x;\n\t\t\topt.y = _h * opt.y;\n\t\t\topt.w = _w * opt.w;\n\t\t\topt.h = _h * opt.h;\n\t\t\topt.len = (\"\" + opt.n).length;\n\t\t\treturn opt;\n\t\t};\n\t\t/**\n\t\t * Generate circle\n\t\t * @param {Object} opt Badge options\n\t\t */\n\t\ttype.circle = function (opt) {\n\t\t\topt = options(opt);\n\t\t\tvar more = false;\n\t\t\tif (opt.len === 2) {\n\t\t\t\topt.x = opt.x - opt.w * 0.4;\n\t\t\t\topt.w = opt.w * 1.4;\n\t\t\t\tmore = true;\n\t\t\t} else if (opt.len >= 3) {\n\t\t\t\topt.x = opt.x - opt.w * 0.65;\n\t\t\t\topt.w = opt.w * 1.65;\n\t\t\t\tmore = true;\n\t\t\t}\n\t\t\t_context.clearRect(0, 0, _w, _h);\n\t\t\t_context.drawImage(_img, 0, 0, _w, _h);\n\t\t\t_context.beginPath();\n\t\t\t_context.font = _opt.fontStyle + \" \" + Math.floor(opt.h * (opt.n > 99 ? 0.85 : 1)) + \"px \" + _opt.fontFamily;\n\t\t\t_context.textAlign = 'center';\n\t\t\tif (more) {\n\t\t\t\t_context.moveTo(opt.x + opt.w / 2, opt.y);\n\t\t\t\t_context.lineTo(opt.x + opt.w - opt.h / 2, opt.y);\n\t\t\t\t_context.quadraticCurveTo(opt.x + opt.w, opt.y, opt.x + opt.w, opt.y + opt.h / 2);\n\t\t\t\t_context.lineTo(opt.x + opt.w, opt.y + opt.h - opt.h / 2);\n\t\t\t\t_context.quadraticCurveTo(opt.x + opt.w, opt.y + opt.h, opt.x + opt.w - opt.h / 2, opt.y + opt.h);\n\t\t\t\t_context.lineTo(opt.x + opt.h / 2, opt.y + opt.h);\n\t\t\t\t_context.quadraticCurveTo(opt.x, opt.y + opt.h, opt.x, opt.y + opt.h - opt.h / 2);\n\t\t\t\t_context.lineTo(opt.x, opt.y + opt.h / 2);\n\t\t\t\t_context.quadraticCurveTo(opt.x, opt.y, opt.x + opt.h / 2, opt.y);\n\t\t\t} else {\n\t\t\t\t_context.arc(opt.x + opt.w / 2, opt.y + opt.h / 2, opt.h / 2, 0, 2 * Math.PI);\n\t\t\t}\n\t\t\t_context.fillStyle = 'rgba(' + _opt.bgColor.r + ',' + _opt.bgColor.g + ',' + _opt.bgColor.b + ',' + opt.o + ')';\n\t\t\t_context.fill();\n\t\t\t_context.closePath();\n\t\t\t_context.beginPath();\n\t\t\t_context.stroke();\n\t\t\t_context.fillStyle = 'rgba(' + _opt.textColor.r + ',' + _opt.textColor.g + ',' + _opt.textColor.b + ',' + opt.o + ')';\n\t\t\t//_context.fillText((more) ? '9+' : opt.n, Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.15));\n\t\t\tif ((typeof opt.n) === 'number' && opt.n > 999) {\n\t\t\t\t_context.fillText(((opt.n > 9999) ? 9 : Math.floor(opt.n / 1000)) + 'k+', Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.2));\n\t\t\t} else {\n\t\t\t\t_context.fillText(opt.n, Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.15));\n\t\t\t}\n\t\t\t_context.closePath();\n\t\t};\n\t\t/**\n\t\t * Generate rectangle\n\t\t * @param {Object} opt Badge options\n\t\t */\n\t\ttype.rectangle = function (opt) {\n\t\t\topt = options(opt);\n\t\t\tvar more = false;\n\t\t\tif (opt.len === 2) {\n\t\t\t\topt.x = opt.x - opt.w * 0.4;\n\t\t\t\topt.w = opt.w * 1.4;\n\t\t\t\tmore = true;\n\t\t\t} else if (opt.len >= 3) {\n\t\t\t\topt.x = opt.x - opt.w * 0.65;\n\t\t\t\topt.w = opt.w * 1.65;\n\t\t\t\tmore = true;\n\t\t\t}\n\t\t\t_context.clearRect(0, 0, _w, _h);\n\t\t\t_context.drawImage(_img, 0, 0, _w, _h);\n\t\t\t_context.beginPath();\n\t\t\t_context.font = _opt.fontStyle + \" \" + Math.floor(opt.h * (opt.n > 99 ? 0.9 : 1)) + \"px \" + _opt.fontFamily;\n\t\t\t_context.textAlign = 'center';\n\t\t\t_context.fillStyle = 'rgba(' + _opt.bgColor.r + ',' + _opt.bgColor.g + ',' + _opt.bgColor.b + ',' + opt.o + ')';\n\t\t\t_context.fillRect(opt.x, opt.y, opt.w, opt.h);\n\t\t\t_context.fillStyle = 'rgba(' + _opt.textColor.r + ',' + _opt.textColor.g + ',' + _opt.textColor.b + ',' + opt.o + ')';\n\t\t\t//_context.fillText((more) ? '9+' : opt.n, Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.15));\n\t\t\tif ((typeof opt.n) === 'number' && opt.n > 999) {\n\t\t\t\t_context.fillText(((opt.n > 9999) ? 9 : Math.floor(opt.n / 1000)) + 'k+', Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.2));\n\t\t\t} else {\n\t\t\t\t_context.fillText(opt.n, Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.15));\n\t\t\t}\n\t\t\t_context.closePath();\n\t\t};\n\n\t\t/**\n\t\t * Set badge\n\t\t */\n\t\tvar badge = function (number, opts) {\n\t\t\topts = ((typeof opts) === 'string' ? {\n\t\t\t\tanimation: opts\n\t\t\t} : opts) || {};\n\t\t\t_readyCb = function () {\n\t\t\t\ttry {\n\t\t\t\t\tif (typeof (number) === 'number' ? (number > 0) : (number !== '')) {\n\t\t\t\t\t\tvar q = {\n\t\t\t\t\t\t\ttype: 'badge',\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\tn: number\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif ('animation' in opts && animation.types['' + opts.animation]) {\n\t\t\t\t\t\t\tq.options.animation = '' + opts.animation;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ('type' in opts && type['' + opts.type]) {\n\t\t\t\t\t\t\tq.options.type = '' + opts.type;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t['bgColor', 'textColor'].forEach(function (o) {\n\t\t\t\t\t\t\tif (o in opts) {\n\t\t\t\t\t\t\t\tq.options[o] = hexToRgb(opts[o]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\t['fontStyle', 'fontFamily'].forEach(function (o) {\n\t\t\t\t\t\t\tif (o in opts) {\n\t\t\t\t\t\t\t\tq.options[o] = opts[o];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\t_queue.push(q);\n\t\t\t\t\t\tif (_queue.length > 100) {\n\t\t\t\t\t\t\tthrow new Error('Too many badges requests in queue.');\n\t\t\t\t\t\t}\n\t\t\t\t\t\ticon.start();\n\t\t\t\t\t} else {\n\t\t\t\t\t\ticon.reset();\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthrow new Error('Error setting badge. Message: ' + e.message);\n\t\t\t\t}\n\t\t\t};\n\t\t\tif (_ready) {\n\t\t\t\t_readyCb();\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Set image as icon\n\t\t */\n\t\tvar image = function (imageElement) {\n\t\t\t_readyCb = function () {\n\t\t\t\ttry {\n\t\t\t\t\tvar w = imageElement.width;\n\t\t\t\t\tvar h = imageElement.height;\n\t\t\t\t\tvar newImg = document.createElement('img');\n\t\t\t\t\tvar ratio = (w / _w < h / _h) ? (w / _w) : (h / _h);\n\t\t\t\t\tnewImg.setAttribute('crossOrigin', 'anonymous');\n\t\t\t\t\tnewImg.onload=function(){\n\t\t\t\t\t\t_context.clearRect(0, 0, _w, _h);\n\t\t\t\t\t\t_context.drawImage(newImg, 0, 0, _w, _h);\n\t\t\t\t\t\tlink.setIcon(_canvas);\n\t\t\t\t\t};\n\t\t\t\t\tnewImg.setAttribute('src', imageElement.getAttribute('src'));\n\t\t\t\t\tnewImg.height = (h / ratio);\n\t\t\t\t\tnewImg.width = (w / ratio);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthrow new Error('Error setting image. Message: ' + e.message);\n\t\t\t\t}\n\t\t\t};\n\t\t\tif (_ready) {\n\t\t\t\t_readyCb();\n\t\t\t}\n\t\t};\n\t\t/**\n\t\t * Set video as icon\n\t\t */\n\t\tvar video = function (videoElement) {\n\t\t\t_readyCb = function () {\n\t\t\t\ttry {\n\t\t\t\t\tif (videoElement === 'stop') {\n\t\t\t\t\t\t_stop = true;\n\t\t\t\t\t\ticon.reset();\n\t\t\t\t\t\t_stop = false;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t//var w = videoElement.width;\n\t\t\t\t\t//var h = videoElement.height;\n\t\t\t\t\t//var ratio = (w / _w < h / _h) ? (w / _w) : (h / _h);\n\t\t\t\t\tvideoElement.addEventListener('play', function () {\n\t\t\t\t\t\tdrawVideo(this);\n\t\t\t\t\t}, false);\n\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthrow new Error('Error setting video. Message: ' + e.message);\n\t\t\t\t}\n\t\t\t};\n\t\t\tif (_ready) {\n\t\t\t\t_readyCb();\n\t\t\t}\n\t\t};\n\t\t/**\n\t\t * Set video as icon\n\t\t */\n\t\tvar webcam = function (action) {\n\t\t\t//UR\n\t\t\tif (!window.URL || !window.URL.createObjectURL) {\n\t\t\t\twindow.URL = window.URL || {};\n\t\t\t\twindow.URL.createObjectURL = function (obj) {\n\t\t\t\t\treturn obj;\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (_browser.supported) {\n\t\t\t\tvar newVideo = false;\n\t\t\t\tnavigator.getUserMedia = navigator.getUserMedia || navigator.oGetUserMedia || navigator.msGetUserMedia || navigator.mozGetUserMedia || navigator.webkitGetUserMedia;\n\t\t\t\t_readyCb = function () {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (action === 'stop') {\n\t\t\t\t\t\t\t_stop = true;\n\t\t\t\t\t\t\ticon.reset();\n\t\t\t\t\t\t\t_stop = false;\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnewVideo = document.createElement('video');\n\t\t\t\t\t\tnewVideo.width = _w;\n\t\t\t\t\t\tnewVideo.height = _h;\n\t\t\t\t\t\tnavigator.getUserMedia({\n\t\t\t\t\t\t\tvideo: true,\n\t\t\t\t\t\t\taudio: false\n\t\t\t\t\t\t}, function (stream) {\n\t\t\t\t\t\t\tnewVideo.src = URL.createObjectURL(stream);\n\t\t\t\t\t\t\tnewVideo.play();\n\t\t\t\t\t\t\tdrawVideo(newVideo);\n\t\t\t\t\t\t}, function () {\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tthrow new Error('Error setting webcam. Message: ' + e.message);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tif (_ready) {\n\t\t\t\t\t_readyCb();\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t\t/**\n\t\t * Draw video to context and repeat :)\n\t\t */\n\t\tfunction drawVideo(video) {\n\t\t\tif (video.paused || video.ended || _stop) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t//nasty hack for FF webcam (Thanks to Julian Ćwirko, kontakt@redsunmedia.pl)\n\t\t\ttry {\n\t\t\t\t_context.clearRect(0, 0, _w, _h);\n\t\t\t\t_context.drawImage(video, 0, 0, _w, _h);\n\t\t\t} catch (e) {\n\n\t\t\t}\n\t\t\t_drawTimeout = setTimeout(function () {\n\t\t\t\tdrawVideo(video);\n\t\t\t}, animation.duration);\n\t\t\tlink.setIcon(_canvas);\n\t\t}\n\n\t\tvar link = {};\n\t\t/**\n\t\t * Get icon from HEAD tag or create a new element\n\t\t */\n\t\tlink.getIcon = function () {\n\t\t\tvar elm = false;\n\t\t\t//get link element\n\t\t\tvar getLink = function () {\n\t\t\t\tvar link = _doc.getElementsByTagName('head')[0].getElementsByTagName('link');\n\t\t\t\tfor (var l = link.length, i = (l - 1); i >= 0; i--) {\n\t\t\t\t\tif ((/(^|\\s)icon(\\s|$)/i).test(link[i].getAttribute('rel'))) {\n\t\t\t\t\t\treturn link[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t};\n\t\t\tif (_opt.element) {\n\t\t\t\telm = _opt.element;\n\t\t\t} else if (_opt.elementId) {\n\t\t\t\t//if img element identified by elementId\n\t\t\t\telm = _doc.getElementById(_opt.elementId);\n\t\t\t\telm.setAttribute('href', elm.getAttribute('src'));\n\t\t\t} else {\n\t\t\t\t//if link element\n\t\t\t\telm = getLink();\n\t\t\t\tif (elm === false) {\n\t\t\t\t\telm = _doc.createElement('link');\n\t\t\t\t\telm.setAttribute('rel', 'icon');\n\t\t\t\t\t_doc.getElementsByTagName('head')[0].appendChild(elm);\n\t\t\t\t}\n\t\t\t}\n\t\t\telm.setAttribute('type', 'image/png');\n\t\t\treturn elm;\n\t\t};\n\t\tlink.setIcon = function (canvas) {\n\t\t\tvar url = canvas.toDataURL('image/png');\n\t\t\tif (_opt.dataUrl) {\n\t\t\t\t//if using custom exporter\n\t\t\t\t_opt.dataUrl(url);\n\t\t\t}\n\t\t\tif (_opt.element) {\n\t\t\t\t_opt.element.setAttribute('href', url);\n\t\t\t\t_opt.element.setAttribute('src', url);\n\t\t\t} else if (_opt.elementId) {\n\t\t\t\t//if is attached to element (image)\n\t\t\t\tvar elm = _doc.getElementById(_opt.elementId);\n\t\t\t\telm.setAttribute('href', url);\n\t\t\t\telm.setAttribute('src', url);\n\t\t\t} else {\n\t\t\t\t//if is attached to fav icon\n\t\t\t\tif (_browser.ff || _browser.opera) {\n\t\t\t\t\t//for FF we need to \"recreate\" element, atach to dom and remove old \n\t\t\t\t\t//var originalType = _orig.getAttribute('rel');\n\t\t\t\t\tvar old = _orig;\n\t\t\t\t\t_orig = _doc.createElement('link');\n\t\t\t\t\t//_orig.setAttribute('rel', originalType);\n\t\t\t\t\tif (_browser.opera) {\n\t\t\t\t\t\t_orig.setAttribute('rel', 'icon');\n\t\t\t\t\t}\n\t\t\t\t\t_orig.setAttribute('rel', 'icon');\n\t\t\t\t\t_orig.setAttribute('type', 'image/png');\n\t\t\t\t\t_doc.getElementsByTagName('head')[0].appendChild(_orig);\n\t\t\t\t\t_orig.setAttribute('href', url);\n\t\t\t\t\tif (old.parentNode) {\n\t\t\t\t\t\told.parentNode.removeChild(old);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t_orig.setAttribute('href', url);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t//http://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb#answer-5624139\n\t\t//HEX to RGB convertor\n\t\tfunction hexToRgb(hex) {\n\t\t\tvar shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n\t\t\thex = hex.replace(shorthandRegex, function (m, r, g, b) {\n\t\t\t\treturn r + r + g + g + b + b;\n\t\t\t});\n\t\t\tvar result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n\t\t\treturn result ? {\n\t\t\t\tr: parseInt(result[1], 16),\n\t\t\t\tg: parseInt(result[2], 16),\n\t\t\t\tb: parseInt(result[3], 16)\n\t\t\t} : false;\n\t\t}\n\n\t\t/**\n\t\t * Merge options\n\t\t */\n\t\tfunction merge(def, opt) {\n\t\t\tvar mergedOpt = {};\n\t\t\tvar attrname;\n\t\t\tfor (attrname in def) {\n\t\t\t\tmergedOpt[attrname] = def[attrname];\n\t\t\t}\n\t\t\tfor (attrname in opt) {\n\t\t\t\tmergedOpt[attrname] = opt[attrname];\n\t\t\t}\n\t\t\treturn mergedOpt;\n\t\t}\n\n\t\t/**\n\t\t * Cross-browser page visibility shim\n\t\t * http://stackoverflow.com/questions/12536562/detect-whether-a-window-is-visible\n\t\t */\n\t\tfunction isPageHidden() {\n\t\t\treturn _doc.hidden || _doc.msHidden || _doc.webkitHidden || _doc.mozHidden;\n\t\t}\n\n\t\t/**\n\t\t * @namespace animation\n\t\t */\n\t\tvar animation = {};\n\t\t/**\n\t\t * Animation \"frame\" duration\n\t\t */\n\t\tanimation.duration = 40;\n\t\t/**\n\t\t * Animation types (none,fade,pop,slide)\n\t\t */\n\t\tanimation.types = {};\n\t\tanimation.types.fade = [{\n\t\t\tx: 0.4,\n\t\t\ty: 0.4,\n\t\t\tw: 0.6,\n\t\t\th: 0.6,\n\t\t\to: 0.0\n\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.2\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.3\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.4\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.5\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.6\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.7\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.8\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.9\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1.0\n\t\t\t}];\n\t\tanimation.types.none = [{\n\t\t\tx: 0.4,\n\t\t\ty: 0.4,\n\t\t\tw: 0.6,\n\t\t\th: 0.6,\n\t\t\to: 1\n\t\t}];\n\t\tanimation.types.pop = [{\n\t\t\tx: 1,\n\t\t\ty: 1,\n\t\t\tw: 0,\n\t\t\th: 0,\n\t\t\to: 1\n\t\t}, {\n\t\t\t\tx: 0.9,\n\t\t\t\ty: 0.9,\n\t\t\t\tw: 0.1,\n\t\t\t\th: 0.1,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.8,\n\t\t\t\ty: 0.8,\n\t\t\t\tw: 0.2,\n\t\t\t\th: 0.2,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.7,\n\t\t\t\ty: 0.7,\n\t\t\t\tw: 0.3,\n\t\t\t\th: 0.3,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.6,\n\t\t\t\ty: 0.6,\n\t\t\t\tw: 0.4,\n\t\t\t\th: 0.4,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.5,\n\t\t\t\ty: 0.5,\n\t\t\t\tw: 0.5,\n\t\t\t\th: 0.5,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}];\n\t\tanimation.types.popFade = [{\n\t\t\tx: 0.75,\n\t\t\ty: 0.75,\n\t\t\tw: 0,\n\t\t\th: 0,\n\t\t\to: 0\n\t\t}, {\n\t\t\t\tx: 0.65,\n\t\t\t\ty: 0.65,\n\t\t\t\tw: 0.1,\n\t\t\t\th: 0.1,\n\t\t\t\to: 0.2\n\t\t\t}, {\n\t\t\t\tx: 0.6,\n\t\t\t\ty: 0.6,\n\t\t\t\tw: 0.2,\n\t\t\t\th: 0.2,\n\t\t\t\to: 0.4\n\t\t\t}, {\n\t\t\t\tx: 0.55,\n\t\t\t\ty: 0.55,\n\t\t\t\tw: 0.3,\n\t\t\t\th: 0.3,\n\t\t\t\to: 0.6\n\t\t\t}, {\n\t\t\t\tx: 0.50,\n\t\t\t\ty: 0.50,\n\t\t\t\tw: 0.4,\n\t\t\t\th: 0.4,\n\t\t\t\to: 0.8\n\t\t\t}, {\n\t\t\t\tx: 0.45,\n\t\t\t\ty: 0.45,\n\t\t\t\tw: 0.5,\n\t\t\t\th: 0.5,\n\t\t\t\to: 0.9\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}];\n\t\tanimation.types.slide = [{\n\t\t\tx: 0.4,\n\t\t\ty: 1,\n\t\t\tw: 0.6,\n\t\t\th: 0.6,\n\t\t\to: 1\n\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.9,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.9,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.8,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.7,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.6,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.5,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}];\n\t\t/**\n\t\t * Run animation\n\t\t * @param {Object} opt Animation options\n\t\t * @param {Object} cb Callabak after all steps are done\n\t\t * @param {Object} revert Reverse order? true|false\n\t\t * @param {Object} step Optional step number (frame bumber)\n\t\t */\n\t\tanimation.run = function (opt, cb, revert, step) {\n\t\t\tvar animationType = animation.types[isPageHidden() ? 'none' : _opt.animation];\n\t\t\tif (revert === true) {\n\t\t\t\tstep = (typeof step !== 'undefined') ? step : animationType.length - 1;\n\t\t\t} else {\n\t\t\t\tstep = (typeof step !== 'undefined') ? step : 0;\n\t\t\t}\n\t\t\tcb = (cb) ? cb : function () {\n\t\t\t};\n\t\t\tif ((step < animationType.length) && (step >= 0)) {\n\t\t\t\ttype[_opt.type](merge(opt, animationType[step]));\n\t\t\t\t_animTimeout = setTimeout(function () {\n\t\t\t\t\tif (revert) {\n\t\t\t\t\t\tstep = step - 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstep = step + 1;\n\t\t\t\t\t}\n\t\t\t\t\tanimation.run(opt, cb, revert, step);\n\t\t\t\t}, animation.duration);\n\n\t\t\t\tlink.setIcon(_canvas);\n\t\t\t} else {\n\t\t\t\tcb();\n\t\t\t\treturn;\n\t\t\t}\n\t\t};\n\t\t//auto init\n\t\tinit();\n\t\treturn {\n\t\t\tbadge: badge,\n\t\t\tvideo: video,\n\t\t\timage: image,\n\t\t\twebcam: webcam,\n\t\t\treset: icon.reset,\n\t\t\tbrowser: {\n\t\t\t\tsupported: _browser.supported\n\t\t\t}\n\t\t};\n\t});\n\n\t// AMD / RequireJS\n\tif (typeof define !== 'undefined' && define.amd) {\n\t\tdefine([], function () {\n\t\t\treturn Favico;\n\t\t});\n\t}\n\t// CommonJS\n\telse if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = Favico;\n\t}\n\t// included directly via