{ "version": 3, "sources": ["../../../packages/data/src/version.js", "../../../node_modules/jquery/dist/jquery.js", "../../../node_modules/konva/lib/Global.js", "../../../node_modules/konva/lib/Util.js", "../../../node_modules/konva/lib/Validators.js", "../../../node_modules/konva/lib/Factory.js", "../../../node_modules/konva/lib/Context.js", "../../../node_modules/konva/lib/Canvas.js", "../../../node_modules/konva/lib/Animation.js", "../../../node_modules/konva/lib/DragAndDrop.js", "../../../node_modules/konva/lib/Node.js", "../../../node_modules/konva/lib/Container.js", "../../../node_modules/konva/lib/PointerEvents.js", "../../../node_modules/konva/lib/Stage.js", "../../../node_modules/konva/lib/BaseLayer.js", "../../../node_modules/konva/lib/Shape.js", "../../../node_modules/konva/lib/Layer.js", "../../../node_modules/konva/lib/FastLayer.js", "../../../node_modules/konva/lib/Group.js", "../../../node_modules/konva/lib/Tween.js", "../../../node_modules/konva/lib/_CoreInternals.js", "../../../node_modules/konva/lib/shapes/Arc.js", "../../../node_modules/konva/lib/shapes/Line.js", "../../../node_modules/konva/lib/shapes/Arrow.js", "../../../node_modules/konva/lib/shapes/Circle.js", "../../../node_modules/konva/lib/shapes/Ellipse.js", "../../../node_modules/konva/lib/shapes/Image.js", "../../../node_modules/konva/lib/shapes/Label.js", "../../../node_modules/konva/lib/shapes/Path.js", "../../../node_modules/konva/lib/shapes/Rect.js", "../../../node_modules/konva/lib/shapes/RegularPolygon.js", "../../../node_modules/konva/lib/shapes/Ring.js", "../../../node_modules/konva/lib/shapes/Sprite.js", "../../../node_modules/konva/lib/shapes/Star.js", "../../../node_modules/konva/lib/shapes/Text.js", "../../../node_modules/konva/lib/shapes/TextPath.js", "../../../node_modules/konva/lib/shapes/Transformer.js", "../../../node_modules/konva/lib/shapes/Wedge.js", "../../../node_modules/konva/lib/filters/Blur.js", "../../../node_modules/konva/lib/filters/Brighten.js", "../../../node_modules/konva/lib/filters/Contrast.js", "../../../node_modules/konva/lib/filters/Emboss.js", "../../../node_modules/konva/lib/filters/Enhance.js", "../../../node_modules/konva/lib/filters/Grayscale.js", "../../../node_modules/konva/lib/filters/HSL.js", "../../../node_modules/konva/lib/filters/HSV.js", "../../../node_modules/konva/lib/filters/Invert.js", "../../../node_modules/konva/lib/filters/Kaleidoscope.js", "../../../node_modules/konva/lib/filters/Mask.js", "../../../node_modules/konva/lib/filters/Noise.js", "../../../node_modules/konva/lib/filters/Pixelate.js", "../../../node_modules/konva/lib/filters/Posterize.js", "../../../node_modules/konva/lib/filters/RGB.js", "../../../node_modules/konva/lib/filters/RGBA.js", "../../../node_modules/konva/lib/filters/Sepia.js", "../../../node_modules/konva/lib/filters/Solarize.js", "../../../node_modules/konva/lib/filters/Threshold.js", "../../../node_modules/konva/lib/_FullInternals.js", "../../../node_modules/konva/lib/index.js", "../../../node_modules/tooltipster/dist/js/tooltipster.bundle.min.js", "../../../packages/client/lib/tooltipster-scrollableTip.min.js", "../../../node_modules/lodash/lodash.js", "../../../node_modules/fast-deep-equal/index.js", "../../../node_modules/@interactjs/utils/isWindow.ts", "../../../node_modules/@interactjs/utils/window.ts", "../../../node_modules/@interactjs/utils/is.ts", "../../../node_modules/@interactjs/actions/drag/plugin.ts", "../../../node_modules/@interactjs/utils/domObjects.ts", "../../../node_modules/@interactjs/utils/browser.ts", "../../../node_modules/@interactjs/utils/domUtils.ts", "../../../node_modules/@interactjs/utils/extend.ts", "../../../node_modules/@interactjs/utils/rect.ts", "../../../node_modules/@interactjs/utils/getOriginXY.ts", "../../../node_modules/@interactjs/utils/normalizeListeners.ts", "../../../node_modules/@interactjs/utils/hypot.ts", "../../../node_modules/@interactjs/utils/pointerExtend.ts", "../../../node_modules/@interactjs/utils/pointerUtils.ts", "../../../node_modules/@interactjs/core/BaseEvent.ts", "../../../node_modules/@interactjs/utils/arr.ts", "../../../node_modules/@interactjs/actions/drop/DropEvent.ts", "../../../node_modules/@interactjs/actions/drop/plugin.ts", "../../../node_modules/@interactjs/actions/gesture/plugin.ts", "../../../node_modules/@interactjs/actions/resize/plugin.ts", "../../../node_modules/@interactjs/utils/raf.ts", "../../../node_modules/@interactjs/actions/plugin.ts", "../../../node_modules/@interactjs/auto-scroll/plugin.ts", "../../../node_modules/@interactjs/utils/misc.ts", "../../../node_modules/@interactjs/auto-start/InteractableMethods.ts", "../../../node_modules/@interactjs/auto-start/base.ts", "../../../node_modules/@interactjs/auto-start/dragAxis.ts", "../../../node_modules/@interactjs/auto-start/hold.ts", "../../../node_modules/@interactjs/auto-start/plugin.ts", "../../../node_modules/@interactjs/core/interactablePreventDefault.ts", "../../../node_modules/@interactjs/utils/isNonNativeEvent.ts", "../../../node_modules/@interactjs/utils/clone.ts", "../../../node_modules/@interactjs/modifiers/Modification.ts", "../../../node_modules/@interactjs/modifiers/base.ts", "../../../node_modules/@interactjs/core/options.ts", "../../../node_modules/@interactjs/core/InteractEvent.ts", "../../../node_modules/@interactjs/core/PointerInfo.ts", "../../../node_modules/@interactjs/core/Interaction.ts", "../../../node_modules/@interactjs/offset/plugin.ts", "../../../node_modules/@interactjs/inertia/plugin.ts", "../../../node_modules/@interactjs/core/Eventable.ts", "../../../node_modules/@interactjs/core/events.ts", "../../../node_modules/@interactjs/core/interactionFinder.ts", "../../../node_modules/@interactjs/core/interactions.ts", "../../../node_modules/@interactjs/core/Interactable.ts", "../../../node_modules/@interactjs/core/InteractableSet.ts", "../../../node_modules/@interactjs/core/scope.ts", "../../../node_modules/@interactjs/core/InteractStatic.ts", "../../../node_modules/@interactjs/interact/index.ts", "../../../node_modules/@interactjs/snappers/edgeTarget.ts", "../../../node_modules/@interactjs/snappers/elements.ts", "../../../node_modules/@interactjs/snappers/grid.ts", "../../../node_modules/@interactjs/snappers/plugin.ts", "../../../node_modules/@interactjs/modifiers/aspectRatio.ts", "../../../node_modules/@interactjs/modifiers/noop.ts", "../../../node_modules/@interactjs/modifiers/restrict/pointer.ts", "../../../node_modules/@interactjs/modifiers/restrict/edges.ts", "../../../node_modules/@interactjs/modifiers/restrict/rect.ts", "../../../node_modules/@interactjs/modifiers/restrict/size.ts", "../../../node_modules/@interactjs/modifiers/snap/pointer.ts", "../../../node_modules/@interactjs/modifiers/snap/size.ts", "../../../node_modules/@interactjs/modifiers/snap/edges.ts", "../../../node_modules/@interactjs/modifiers/all.ts", "../../../node_modules/@interactjs/modifiers/plugin.ts", "../../../node_modules/@interactjs/pointer-events/PointerEvent.ts", "../../../node_modules/@interactjs/pointer-events/base.ts", "../../../node_modules/@interactjs/pointer-events/holdRepeat.ts", "../../../node_modules/@interactjs/pointer-events/interactableTargets.ts", "../../../node_modules/@interactjs/pointer-events/plugin.ts", "../../../node_modules/@interactjs/reflow/plugin.ts", "../../../node_modules/interactjs/index.ts", "../../../node_modules/@interactjs/interactjs/index.ts", "../../../packages/data/src/index.ts", "../../../node_modules/complete-common/dist/index.mjs", "../../../node_modules/zod/lib/index.mjs", "../../../packages/data/src/enums/ClientCommand.ts", "../../../packages/data/src/clientCommands.ts", "../../../packages/data/src/constants.ts", "../../../packages/data/src/enums/ServerCommand.ts", "../../../packages/data/src/enums/Status.ts", "../../../packages/data/src/functions/golem.ts", "../../../packages/game/src/abbreviations.ts", "../../../packages/game/src/constants.ts", "../../../packages/game/src/enums/EndCondition.ts", "../../../packages/game/src/enums/VariantModifier.ts", "../../../packages/game/src/json/characters.json", "../../../packages/game/src/charactersInit.ts", "../../../packages/game/src/json/colors.json", "../../../packages/game/src/colorsInit.ts", "../../../packages/game/src/json/suits.json", "../../../packages/game/src/suitsInit.ts", "../../../packages/game/src/json/variants.json", "../../../packages/game/src/notes.ts", "../../../packages/game/src/types/RankClueNumber.ts", "../../../packages/game/src/variantsInit.ts", "../../../packages/game/src/gameData.ts", "../../../packages/game/src/types/Rank.ts", "../../../packages/game/src/types/SuitIndex.ts", "../../../packages/game/src/interfaces/CardIdentity.ts", "../../../packages/game/src/types/NumPlayers.ts", "../../../packages/game/src/types/PlayerIndex.ts", "../../../packages/game/src/interfaces/Options.ts", "../../../packages/game/src/rules/cardState.ts", "../../../packages/game/src/rules/hand.ts", "../../../packages/game/src/rules/deck.ts", "../../../packages/game/src/rules/variants/variantIdentity.ts", "../../../packages/game/src/rules/playStacks.ts", "../../../packages/game/src/rules/variants/reversible.ts", "../../../packages/game/src/rules/variants/sudoku.ts", "../../../packages/game/src/rules/card.ts", "../../../packages/game/src/rules/clueTokens.ts", "../../../packages/game/src/rules/stats.ts", "../../../packages/game/src/rules/turn.ts", "../../../packages/game/src/rules/variants/hGroup.ts", "../../../packages/game/src/reducers/cardDeductionReducer.ts", "../../../packages/game/src/reducers/reducerHelpers.ts", "../../../packages/game/src/types/Clue.ts", "../../../packages/game/src/rules/clues.ts", "../../../packages/game/src/reducers/cardPossibilitiesReducer.ts", "../../../packages/game/src/rules/variants/characters.ts", "../../../packages/game/src/reducers/initialStates/initialCardState.ts", "../../../packages/game/src/reducers/cardsReducer.ts", "../../../packages/game/src/reducers/ddaReducer.ts", "../../../node_modules/immer/src/utils/env.ts", "../../../node_modules/immer/src/utils/errors.ts", "../../../node_modules/immer/src/utils/common.ts", "../../../node_modules/immer/src/utils/plugins.ts", "../../../node_modules/immer/src/core/scope.ts", "../../../node_modules/immer/src/core/finalize.ts", "../../../node_modules/immer/src/core/proxy.ts", "../../../node_modules/immer/src/core/immerClass.ts", "../../../node_modules/immer/src/core/current.ts", "../../../node_modules/immer/src/plugins/patches.ts", "../../../node_modules/immer/src/plugins/mapset.ts", "../../../node_modules/immer/src/immer.ts", "../../../packages/game/src/rules/text.ts", "../../../packages/game/src/reducers/knownTrashReducer.ts", "../../../packages/game/src/reducers/statsReducer.ts", "../../../packages/game/src/reducers/turnReducer.ts", "../../../packages/game/src/reducers/gameReducer.ts", "../../../packages/game/src/reducers/initialStates/initialTurnState.ts", "../../../packages/game/src/reducers/initialStates/initialGameState.ts", "../../../packages/game/src/types/CardOrder.ts", "../../../packages/game/src/types/ColorIndex.ts", "../../../packages/data/src/types/GameID.ts", "../../../packages/data/src/interfaces/GameHistory.ts", "../../../packages/data/src/interfaces/HTTPLoginData.ts", "../../../packages/data/src/interfaces/Settings.ts", "../../../packages/data/src/interfaces/Spectator.ts", "../../../packages/data/src/types/TableID.ts", "../../../packages/data/src/types/UserID.ts", "../../../packages/data/src/serverCommands.ts", "../../../packages/client/src/main.ts", "../../../packages/client/src/Globals.ts", "../../../packages/client/src/Loader.ts", "../../../node_modules/keycode-js/dist/keycode.esm.js", "../../../node_modules/linkifyjs/dist/linkify.es.js", "../../../node_modules/linkify-html/dist/linkify-html.es.js", "../../../packages/client/src/debug.ts", "../../../packages/client/src/game/reducers/noteIdentity.ts", "../../../packages/client/src/game/ui/UIGlobals.ts", "../../../packages/client/src/game/ui/Elements.ts", "../../../packages/client/src/game/ui/Layers.ts", "../../../packages/client/src/utils.ts", "../../../packages/client/src/game/ui/cursor.ts", "../../../packages/client/src/game/ui/arrows.ts", "../../../packages/client/src/tooltips.ts", "../../../packages/client/src/game/ui/CardLayout.ts", "../../../packages/client/src/game/ui/constants.ts", "../../../packages/client/src/game/ui/konvaHelpers.ts", "../../../packages/client/src/game/ui/HanabiCard.ts", "../../../packages/client/src/game/reducers/notesReducer.ts", "../../../packages/client/src/game/ui/HanabiCardInit.ts", "../../../packages/client/src/game/ui/controls/NoteIndicator.ts", "../../../packages/client/src/game/ui/controls/RankPip.ts", "../../../packages/client/src/game/ui/drawPip.ts", "../../../packages/client/src/sounds.ts", "../../../packages/client/src/game/types/ActionType.ts", "../../../packages/client/src/game/ui/ColorButton.ts", "../../../packages/client/src/game/ui/RankButton.ts", "../../../packages/client/src/game/ui/getCardOrStackBase.ts", "../../../packages/client/src/game/ui/notes.ts", "../../../packages/client/src/game/ui/clickNotes.ts", "../../../packages/client/src/game/ui/convert.ts", "../../../packages/client/src/notifications.ts", "../../../packages/client/src/game/ui/clues.ts", "../../../packages/client/src/game/ui/hypothetical.ts", "../../../packages/client/src/game/ui/isOurTurn.ts", "../../../packages/client/src/game/ui/ourHand.ts", "../../../packages/client/src/game/ui/replay.ts", "../../../packages/client/src/game/ui/turn.ts", "../../../packages/client/src/game/ui/HanabiCardClickSpeedrun.ts", "../../../packages/client/src/game/ui/HanabiCardTouchActions.ts", "../../../packages/client/src/game/ui/konvaTooltips.ts", "../../../packages/client/src/game/ui/HanabiCardMouse.ts", "../../../packages/client/src/game/ui/LayoutChild.ts", "../../../packages/client/src/game/ui/drawStylizedRank.ts", "../../../packages/client/src/game/ui/drawCards.ts", "../../../packages/client/src/game/ui/noteCheckImpossibility.ts", "../../../packages/client/src/game/ui/controls/StrikeSquare.ts", "../../../packages/client/src/game/ui/HanabiCardClick.ts", "../../../packages/client/src/lobby/usersDraw.ts", "../../../packages/client/src/lobby/pregame.ts", "../../../packages/client/src/lobby/tablesDraw.ts", "../../../packages/client/src/lobby/history.ts", "../../../packages/client/src/lobby/watchReplay.ts", "../../../packages/client/src/lobby/nav.ts", "../../../packages/client/src/modals.ts", "../../../packages/client/src/lobby/createGame.ts", "../../../packages/client/src/lobby/createReplayJSON.ts", "../../../packages/client/src/lobby/hypoCompress.ts", "../../../packages/client/src/chatCommands.ts", "../../../packages/client/src/json/emojis.json", "../../../packages/client/src/json/emotes.json", "../../../packages/client/src/chat.ts", "../../../packages/client/src/errors.ts", "../../../packages/client/src/game/chat.ts", "../../../packages/client/src/game/ui/timer.ts", "../../../packages/client/src/game/ui/backToLobby.ts", "../../../packages/client/src/game/ui/setGlobalEmpathy.ts", "../../../packages/client/src/game/ui/keyboard.ts", "../../../packages/client/src/game/ui/HanabiUI.ts", "../../../packages/client/src/game/main.ts", "../../../packages/client/src/lobby/lobbyIdleInit.ts", "../../../packages/client/src/lobby/lobbyKeyboardInit.ts", "../../../packages/client/src/commands.ts", "../../../packages/client/src/Connection.ts", "../../../node_modules/redux/src/utils/formatProdErrorMessage.ts", "../../../node_modules/redux/src/utils/symbol-observable.ts", "../../../node_modules/redux/src/utils/actionTypes.ts", "../../../node_modules/redux/src/utils/isPlainObject.ts", "../../../node_modules/redux/src/utils/kindOf.ts", "../../../node_modules/redux/src/createStore.ts", "../../../node_modules/redux/src/utils/warning.ts", "../../../node_modules/redux/src/combineReducers.ts", "../../../node_modules/redux/src/bindActionCreators.ts", "../../../node_modules/redux/src/compose.ts", "../../../node_modules/redux/src/applyMiddleware.ts", "../../../node_modules/redux/src/utils/isAction.ts", "../../../packages/client/src/game/reducers/initialStates/initialState.ts", "../../../packages/client/src/game/reducers/replayReducer.ts", "../../../packages/client/src/game/reducers/stateReducerHelpers.ts", "../../../packages/client/src/game/reducers/uiReducer.ts", "../../../packages/client/src/game/reducers/stateReducer.ts", "../../../packages/client/src/game/ui/drawUI.ts", "../../../packages/client/src/game/ui/ButtonGroup.ts", "../../../packages/client/src/game/ui/ClueLog.ts", "../../../packages/client/src/game/ui/Deck.ts", "../../../packages/client/src/game/ui/FullActionLog.ts", "../../../packages/client/src/game/ui/MultiFitText.ts", "../../../packages/client/src/game/ui/controls/FitText.ts", "../../../packages/client/src/game/ui/PlayStack.ts", "../../../packages/client/src/game/ui/controls/Arrow.ts", "../../../packages/client/src/game/ui/controls/Button.ts", "../../../packages/client/src/game/ui/controls/CheckButton.ts", "../../../packages/client/src/game/ui/controls/CurrentPlayerArea.ts", "../../../packages/client/src/game/ui/controls/ImageWithTooltip.ts", "../../../packages/client/src/game/ui/controls/PlayerButton.ts", "../../../packages/client/src/game/ui/controls/RectWithTooltip.ts", "../../../packages/client/src/game/ui/controls/SlidableGroup.ts", "../../../packages/client/src/game/ui/controls/StrikeX.ts", "../../../packages/client/src/game/ui/controls/TimerDisplay.ts", "../../../packages/client/src/game/ui/drawHands.ts", "../../../packages/client/src/game/ui/NameFrame.ts", "../../../packages/client/src/game/ui/controls/TextWithTooltip.ts", "../../../packages/client/src/game/ui/drawReplayArea.ts", "../../../packages/client/src/game/ui/controls/EnterHypoButton.ts", "../../../packages/client/src/game/ui/controls/SharedTurnsButton.ts", "../../../packages/client/src/game/ui/controls/Shuttle.ts", "../../../packages/client/src/game/ui/stats.ts", "../../../packages/client/src/game/ui/reactive/views/spectatorsView.ts", "../../../packages/client/src/game/ui/zen.ts", "../../../packages/client/src/game/ui/reactive/observeStore.ts", "../../../packages/client/src/game/ui/reactive/views/animateFastView.ts", "../../../packages/client/src/game/ui/reactive/views/cardLayoutView.ts", "../../../packages/client/src/game/ui/reactive/views/cardsView.ts", "../../../packages/client/src/game/ui/reactive/views/cluesView.ts", "../../../packages/client/src/game/ui/ClueEntry.ts", "../../../packages/client/src/game/ui/reactive/views/currentPlayerAreaView.ts", "../../../packages/client/src/game/ui/reactive/views/deckView.ts", "../../../packages/client/src/game/ui/reactive/views/gameInfoView.ts", "../../../packages/client/src/game/ui/reactive/views/hypotheticalView.ts", "../../../packages/client/src/game/ui/reactive/views/initView.ts", "../../../packages/client/src/game/ui/reactive/views/logView.ts", "../../../packages/client/src/game/ui/reactive/views/pauseView.ts", "../../../packages/client/src/game/ui/reactive/views/premoveView.ts", "../../../packages/client/src/game/ui/reactive/views/replayView.ts", "../../../packages/client/src/game/ui/reactive/getSoundType.ts", "../../../packages/client/src/game/ui/reactive/views/soundView.ts", "../../../packages/client/src/game/ui/reactive/views/statsView.ts", "../../../packages/client/src/game/ui/reactive/views/turnView.ts", "../../../packages/client/src/game/ui/reactive/StateObserver.ts", "../../../packages/client/src/game/ui/uiInit.ts", "../../../packages/client/src/game/ui/drawCardsBrowser.ts", "../../../packages/client/src/game/ui/gameCommands.ts", "../../../packages/client/src/lobby/playerSettings.ts", "../../../packages/client/src/lobby/url.ts", "../../../packages/client/src/lobby/lobbyCommands.ts", "../../../packages/client/src/websocketInit.ts", "../../../packages/client/src/lobby/login.ts", "../../../packages/client/src/lobby/lobbyTutorialInit.ts"], "sourcesContent": ["// @ts-nocheck\n\nmodule.exports = { VERSION: \"6427\" };\n", "/*!\n * jQuery JavaScript Library v3.7.1\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-08-28T13:37Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar version = \"3.7.1\",\n\n\trhtmlSuffix = /HTML$/i,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\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\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\n\t// Retrieve the text value of an array of DOM nodes\n\ttext: function( elem ) {\n\t\tvar node,\n\t\t\tret = \"\",\n\t\t\ti = 0,\n\t\t\tnodeType = elem.nodeType;\n\n\t\tif ( !nodeType ) {\n\n\t\t\t// If no nodeType, this is expected to be an array\n\t\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t\t// Do not traverse comment nodes\n\t\t\t\tret += jQuery.text( node );\n\t\t\t}\n\t\t}\n\t\tif ( nodeType === 1 || nodeType === 11 ) {\n\t\t\treturn elem.textContent;\n\t\t}\n\t\tif ( nodeType === 9 ) {\n\t\t\treturn elem.documentElement.textContent;\n\t\t}\n\t\tif ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\n\t\t// Do not include comment or processing instruction nodes\n\n\t\treturn ret;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tisXMLDoc: function( elem ) {\n\t\tvar namespace = elem && elem.namespaceURI,\n\t\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t\t// Assume HTML when documentElement doesn't yet exist, such as inside\n\t\t// document fragments.\n\t\treturn !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar pop = arr.pop;\n\n\nvar sort = arr.sort;\n\n\nvar splice = arr.splice;\n\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n// Note: an element does not contain itself\njQuery.contains = function( a, b ) {\n\tvar bup = b && b.parentNode;\n\n\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE doesn't have `contains` on SVG.\n\t\ta.contains ?\n\t\t\ta.contains( bup ) :\n\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t) );\n};\n\n\n\n\n// CSS string/identifier serialization\n// https://drafts.csswg.org/cssom/#common-serializing-idioms\nvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\nfunction fcssescape( ch, asCodePoint ) {\n\tif ( asCodePoint ) {\n\n\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\tif ( ch === \"\\0\" ) {\n\t\t\treturn \"\\uFFFD\";\n\t\t}\n\n\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t}\n\n\t// Other potentially-special ASCII characters get backslash-escaped\n\treturn \"\\\\\" + ch;\n}\n\njQuery.escapeSelector = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\n\n\n\nvar preferredDoc = document,\n\tpushNative = push;\n\n( function() {\n\nvar i,\n\tExpr,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\tpush = pushNative,\n\n\t// Local document vars\n\tdocument,\n\tdocumentElement,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\tmatches,\n\n\t// Instance-specific data\n\texpando = jQuery.expando,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\" +\n\t\t\"loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trleadingCombinator = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" +\n\t\twhitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\tID: new RegExp( \"^#(\" + identifier + \")\" ),\n\t\tCLASS: new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\tTAG: new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\tATTR: new RegExp( \"^\" + attributes ),\n\t\tPSEUDO: new RegExp( \"^\" + pseudos ),\n\t\tCHILD: new RegExp(\n\t\t\t\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\tbool: new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\tneedsContext: new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\tif ( nonHex ) {\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\treturn nonHex;\n\t\t}\n\n\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t// Support: IE <=11+\n\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t// surrogate pair\n\t\treturn high < 0 ?\n\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes; see `setDocument`.\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE/Edge.\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && nodeName( elem, \"fieldset\" );\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android <=4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = {\n\t\tapply: function( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t},\n\t\tcall: function( target ) {\n\t\t\tpushNative.apply( target, slice.call( arguments, 1 ) );\n\t\t}\n\t};\n}\n\nfunction find( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tfind.contains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( !nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when\n\t\t\t\t\t// strict-comparing two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( newContext != context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = jQuery.escapeSelector( nid );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrimCSS, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties\n\t\t// (see https://github.com/jquery/sizzle/issues/157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by jQuery selector module\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn nodeName( elem, \"input\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn ( nodeName( elem, \"input\" ) || nodeName( elem, \"button\" ) ) &&\n\t\t\telem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11+\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a jQuery selector context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nfunction setDocument( node ) {\n\tvar subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocumentElement = document.documentElement;\n\tdocumentIsHTML = !jQuery.isXMLDoc( document );\n\n\t// Support: iOS 7 only, IE 9 - 11+\n\t// Older browsers didn't support unprefixed `matches`.\n\tmatches = documentElement.matches ||\n\t\tdocumentElement.webkitMatchesSelector ||\n\t\tdocumentElement.msMatchesSelector;\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors\n\t// (see trac-13936).\n\t// Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,\n\t// all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.\n\tif ( documentElement.msMatchesSelector &&\n\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tpreferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t\tsubWindow.addEventListener( \"unload\", unloadHandler );\n\t}\n\n\t// Support: IE <10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocumentElement.appendChild( el ).id = jQuery.expando;\n\t\treturn !document.getElementsByName ||\n\t\t\t!document.getElementsByName( jQuery.expando ).length;\n\t} );\n\n\t// Support: IE 9 only\n\t// Check to see if it's possible to do matchesSelector\n\t// on a disconnected node.\n\tsupport.disconnectedMatch = assert( function( el ) {\n\t\treturn matches.call( el, \"*\" );\n\t} );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// IE/Edge don't support the :scope pseudo-class.\n\tsupport.scope = assert( function() {\n\t\treturn document.querySelectorAll( \":scope\" );\n\t} );\n\n\t// Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\n\t// Make sure the `:has()` argument is parsed unforgivingly.\n\t// We include `*` in the test to detect buggy implementations that are\n\t// _selectively_ forgiving (specifically when the list includes at least\n\t// one valid selector).\n\t// Note that we treat complete lack of support for `:has()` as if it were\n\t// spec-compliant support, which is fine because use of `:has()` in such\n\t// environments will fail in the qSA path and fall back to jQuery traversal\n\t// anyway.\n\tsupport.cssHas = assert( function() {\n\t\ttry {\n\t\t\tdocument.querySelector( \":has(*,:jqfake)\" );\n\t\t\treturn false;\n\t\t} catch ( e ) {\n\t\t\treturn true;\n\t\t}\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find.TAG = function( tag, context ) {\n\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t// DocumentFragment nodes don't have gEBTN\n\t\t} else {\n\t\t\treturn context.querySelectorAll( tag );\n\t\t}\n\t};\n\n\t// Class\n\tExpr.find.CLASS = function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\trbuggyQSA = [];\n\n\t// Build QSA regex\n\t// Regex strategy adopted from Diego Perini\n\tassert( function( el ) {\n\n\t\tvar input;\n\n\t\tdocumentElement.appendChild( el ).innerHTML =\n\t\t\t\"\" +\n\t\t\t\"\";\n\n\t\t// Support: iOS <=7 - 8 only\n\t\t// Boolean attributes and \"value\" are not treated correctly in some XML documents\n\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t}\n\n\t\t// Support: iOS <=7 - 8 only\n\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\trbuggyQSA.push( \"~=\" );\n\t\t}\n\n\t\t// Support: iOS 8 only\n\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t}\n\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\trbuggyQSA.push( \":checked\" );\n\t\t}\n\n\t\t// Support: Windows 8 Native Apps\n\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tdocumentElement.appendChild( el ).disabled = true;\n\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t}\n\n\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t// Adding a temporary attribute to the document before the selection works\n\t\t// around the issue.\n\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"name\", \"\" );\n\t\tel.appendChild( input );\n\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t}\n\t} );\n\n\tif ( !support.cssHas ) {\n\n\t\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n\t\t// Our regular `try-catch` mechanism fails to detect natively-unsupported\n\t\t// pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n\t\t// in browsers that parse the `:has()` argument as a forgiving selector list.\n\t\t// https://drafts.csswg.org/selectors/#relational now requires the argument\n\t\t// to be parsed unforgivingly, but browsers have not yet fully adjusted.\n\t\trbuggyQSA.push( \":has\" );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = function( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a === document || a.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b === document || b.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t};\n\n\treturn document;\n}\n\nfind.matches = function( expr, elements ) {\n\treturn find( expr, null, null, elements );\n};\n\nfind.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn find( expr, document, null, [ elem ] ).length > 0;\n};\n\nfind.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn jQuery.contains( context, elem );\n};\n\n\nfind.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (see trac-13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\tif ( val !== undefined ) {\n\t\treturn val;\n\t}\n\n\treturn elem.getAttribute( name );\n};\n\nfind.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\njQuery.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\t//\n\t// Support: Android <=4.0+\n\t// Testing for detecting duplicates is unpredictable so instead assume we can't\n\t// depend on duplicate detection in all browsers without a stable sort.\n\thasDuplicate = !support.sortStable;\n\tsortInput = !support.sortStable && slice.call( results, 0 );\n\tsort.call( results, sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tsplice.call( results, duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\njQuery.fn.uniqueSort = function() {\n\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\n};\n\nExpr = jQuery.expr = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\tATTR: function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || \"\" )\n\t\t\t\t.replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\tCHILD: function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" )\n\t\t\t\t);\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr.CHILD.test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\tTAG: function( nodeNameSelector ) {\n\t\t\tvar expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn nodeName( elem, expectedNodeName );\n\t\t\t\t};\n\t\t},\n\n\t\tCLASS: function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace + \")\" + className +\n\t\t\t\t\t\"(\" + whitespace + \"|$)\" ) ) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\tATTR: function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = find.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\tif ( operator === \"=\" ) {\n\t\t\t\t\treturn result === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"!=\" ) {\n\t\t\t\t\treturn result !== check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"^=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) === 0;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"*=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"$=\" ) {\n\t\t\t\t\treturn check && result.slice( -check.length ) === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"~=\" ) {\n\t\t\t\t\treturn ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" )\n\t\t\t\t\t\t.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"|=\" ) {\n\t\t\t\t\treturn result === check || result.slice( 0, check.length + 1 ) === check + \"-\";\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tCHILD: function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || ( parent[ expando ] = {} );\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\t\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\t\t\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\tPSEUDO: function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// https://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tfind.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as jQuery does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\tnot: markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrimCSS, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element\n\t\t\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\thas: markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn find( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\tcontains: markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// https://www.w3.org/TR/selectors/#lang-pseudo\n\t\tlang: markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tfind.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\ttarget: function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\troot: function( elem ) {\n\t\t\treturn elem === documentElement;\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === safeActiveElement() &&\n\t\t\t\tdocument.hasFocus() &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\tenabled: createDisabledPseudo( false ),\n\t\tdisabled: createDisabledPseudo( true ),\n\n\t\tchecked: function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\treturn ( nodeName( elem, \"input\" ) && !!elem.checked ) ||\n\t\t\t\t( nodeName( elem, \"option\" ) && !!elem.selected );\n\t\t},\n\n\t\tselected: function( elem ) {\n\n\t\t\t// Support: IE <=11+\n\t\t\t// Accessing the selectedIndex property\n\t\t\t// forces the browser to treat the default option as\n\t\t\t// selected when in an optgroup.\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\tempty: function( elem ) {\n\n\t\t\t// https://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !Expr.pseudos.empty( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\theader: function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"button\" ||\n\t\t\t\tnodeName( elem, \"button\" );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"text\" &&\n\n\t\t\t\t// Support: IE <10 only\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear\n\t\t\t\t// with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\tfirst: createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\teven: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\todd: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i;\n\n\t\t\tif ( argument < 0 ) {\n\t\t\t\ti = argument + length;\n\t\t\t} else if ( argument > length ) {\n\t\t\t\ti = length;\n\t\t\t} else {\n\t\t\t\ti = argument;\n\t\t\t}\n\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tgt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos.nth = Expr.pseudos.eq;\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rleadingCombinator.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrimCSS, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\tif ( parseOnly ) {\n\t\treturn soFar.length;\n\t}\n\n\treturn soFar ?\n\t\tfind.error( selector ) :\n\n\t\t// Cache the tokens\n\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\tif ( skip && nodeName( elem, skip ) ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = outerCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tfind( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem, matcherOut,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed ||\n\t\t\t\tmultipleContexts( selector || \"*\",\n\t\t\t\t\tcontext.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems;\n\n\t\tif ( matcher ) {\n\n\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter\n\t\t\t// or preexisting results,\n\t\t\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t[] :\n\n\t\t\t\t// ...otherwise use results directly\n\t\t\t\tresults;\n\n\t\t\t// Find primary matches\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t} else {\n\t\t\tmatcherOut = matcherIn;\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tvar ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element\n\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 )\n\t\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrimCSS, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find.TAG( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: iOS <=7 - 9 only\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching\n\t\t\t// elements by id. (see trac-14142)\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tjQuery.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\nfunction compile( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n}\n\n/**\n * A low-level selection function that works with jQuery's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find.ID(\n\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\tcontext\n\t\t\t) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) &&\n\t\t\t\t\t\ttestContext( context.parentNode ) || context\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n}\n\n// One-time assignments\n\n// Support: Android <=4.0 - 4.1+\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Android <=4.0 - 4.1+\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\njQuery.find = find;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.unique = jQuery.uniqueSort;\n\n// These have always been private, but they used to be documented as part of\n// Sizzle so let's maintain them for now for backwards compatibility purposes.\nfind.compile = compile;\nfind.select = select;\nfind.setDocument = setDocument;\nfind.tokenize = tokenize;\n\nfind.escape = jQuery.escapeSelector;\nfind.getText = jQuery.text;\nfind.isXML = jQuery.isXMLDoc;\nfind.selectors = jQuery.expr;\nfind.support = jQuery.support;\nfind.uniqueSort = jQuery.uniqueSort;\n\n\t/* eslint-enable */\n\n} )();\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to jQuery#find\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.error );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the error, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getErrorHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getErrorHook();\n\n\t\t\t\t\t\t\t\t// The deprecated alias of the above. While the name suggests\n\t\t\t\t\t\t\t\t// returning the stack, not an error instance, jQuery just passes\n\t\t\t\t\t\t\t\t// it directly to `console.warn` so both will work; an instance\n\t\t\t\t\t\t\t\t// just better cooperates with source maps.\n\t\t\t\t\t\t\t\t} else if ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n// captured before the async barrier to get the original error cause\n// which may otherwise be hidden.\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message,\n\t\t\terror.stack, asyncError );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", true );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, isSetup ) {\n\n\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !isSetup ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\tif ( !saved ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tdataPriv.set( this, type, false );\n\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering\n\t\t\t\t// the native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, jQuery.event.trigger(\n\t\t\t\t\tsaved[ 0 ],\n\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\tthis\n\t\t\t\t) );\n\n\t\t\t\t// Abort handling of the native event by all jQuery handlers while allowing\n\t\t\t\t// native handlers on the same element to run. On target, this is achieved\n\t\t\t\t// by stopping immediate propagation just on the jQuery event. However,\n\t\t\t\t// the native event is re-wrapped by a jQuery one on each level of the\n\t\t\t\t// propagation so the only way to stop it for jQuery is to stop it for\n\t\t\t\t// everyone via native `stopPropagation()`. This is not a problem for\n\t\t\t\t// focus/blur which don't bubble, but it does also stop click on checkboxes\n\t\t\t\t// and radios. We accept this limitation.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.isImmediatePropagationStopped = returnTrue;\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\n\tfunction focusMappedHandler( nativeEvent ) {\n\t\tif ( document.documentMode ) {\n\n\t\t\t// Support: IE 11+\n\t\t\t// Attach a single focusin/focusout handler on the document while someone wants\n\t\t\t// focus/blur. This is because the former are synchronous in IE while the latter\n\t\t\t// are async. In other browsers, all those handlers are invoked synchronously.\n\n\t\t\t// `handle` from private data would already wrap the event, but we need\n\t\t\t// to change the `type` here.\n\t\t\tvar handle = dataPriv.get( this, \"handle\" ),\n\t\t\t\tevent = jQuery.event.fix( nativeEvent );\n\t\t\tevent.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n\t\t\tevent.isSimulated = true;\n\n\t\t\t// First, handle focusin/focusout\n\t\t\thandle( nativeEvent );\n\n\t\t\t// ...then, handle focus/blur\n\t\t\t//\n\t\t\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\n\t\t\t// invoking the handler at the lower level.\n\t\t\tif ( event.target === event.currentTarget ) {\n\n\t\t\t\t// The setup part calls `leverageNative`, which, in turn, calls\n\t\t\t\t// `jQuery.event.add`, so event handle will already have been set\n\t\t\t\t// by this point.\n\t\t\t\thandle( event );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// For non-IE browsers, attach a single capturing handler on the document\n\t\t\t// while someone wants focusin/focusout.\n\t\t\tjQuery.event.simulate( delegateType, nativeEvent.target,\n\t\t\t\tjQuery.event.fix( nativeEvent ) );\n\t\t}\n\t}\n\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\tvar attaches;\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, true );\n\n\t\t\tif ( document.documentMode ) {\n\n\t\t\t\t// Support: IE 9 - 11+\n\t\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\t\tattaches = dataPriv.get( this, delegateType );\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t}\n\t\t\t\tdataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );\n\t\t\t} else {\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tvar attaches;\n\n\t\t\tif ( document.documentMode ) {\n\t\t\t\tattaches = dataPriv.get( this, delegateType ) - 1;\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t\tdataPriv.remove( this, delegateType );\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.set( this, delegateType, attaches );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Return false to indicate standard teardown should be applied\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n\n\t// Support: Firefox <=44\n\t// Firefox doesn't have focus(in | out) events\n\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t//\n\t// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n\t// focus(in | out) events fire after focus & blur events,\n\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n\t// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\t//\n\t// Support: IE 9 - 11+\n\t// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n\t// attach a single handler for both events in IE.\n\tjQuery.event.special[ delegateType ] = {\n\t\tsetup: function() {\n\n\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType );\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.addEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\tdataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );\n\t\t},\n\t\tteardown: function() {\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType ) - 1;\n\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.removeEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( dataHolder, delegateType );\n\t\t\t} else {\n\t\t\t\tdataPriv.set( dataHolder, delegateType, attaches );\n\t\t\t}\n\t\t}\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Re-enable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew jQuery#find here for performance reasons:\n\t\t\t// https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"box-sizing:content-box;border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is `display: block`\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, trac-12537)\n\t// .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105+, Chrome <=105+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace. Chrome just collapses\n\t\t\t// both leading & trailing whitespace to a single space.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0,\n\t\tmarginDelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\t// Count margin delta separately to only add it after scroll gutter adjustment.\n\t\t// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n\t\tif ( box === \"margin\" ) {\n\t\t\tmarginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta + marginDelta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\tanimationIterationCount: true,\n\t\taspectRatio: true,\n\t\tborderImageSlice: true,\n\t\tcolumnCount: true,\n\t\tflexGrow: true,\n\t\tflexShrink: true,\n\t\tfontWeight: true,\n\t\tgridArea: true,\n\t\tgridColumn: true,\n\t\tgridColumnEnd: true,\n\t\tgridColumnStart: true,\n\t\tgridRow: true,\n\t\tgridRowEnd: true,\n\t\tgridRowStart: true,\n\t\tlineHeight: true,\n\t\topacity: true,\n\t\torder: true,\n\t\torphans: true,\n\t\tscale: true,\n\t\twidows: true,\n\t\tzIndex: true,\n\t\tzoom: true,\n\n\t\t// SVG-related\n\t\tfillOpacity: true,\n\t\tfloodOpacity: true,\n\t\tstopOpacity: true,\n\t\tstrokeMiterlimit: true,\n\t\tstrokeOpacity: true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"';\n };\n return EventedTokenizer;\n}();\nvar Tokenizer = /** @class */function () {\n function Tokenizer(entityParser, options) {\n if (options === void 0) {\n options = {};\n }\n this.options = options;\n this.token = null;\n this.startLine = 1;\n this.startColumn = 0;\n this.tokens = [];\n this.tokenizer = new EventedTokenizer(this, entityParser, options.mode);\n this._currentAttribute = undefined;\n }\n Tokenizer.prototype.tokenize = function (input) {\n this.tokens = [];\n this.tokenizer.tokenize(input);\n return this.tokens;\n };\n Tokenizer.prototype.tokenizePart = function (input) {\n this.tokens = [];\n this.tokenizer.tokenizePart(input);\n return this.tokens;\n };\n Tokenizer.prototype.tokenizeEOF = function () {\n this.tokens = [];\n this.tokenizer.tokenizeEOF();\n return this.tokens[0];\n };\n Tokenizer.prototype.reset = function () {\n this.token = null;\n this.startLine = 1;\n this.startColumn = 0;\n };\n Tokenizer.prototype.current = function () {\n var token = this.token;\n if (token === null) {\n throw new Error('token was unexpectedly null');\n }\n if (arguments.length === 0) {\n return token;\n }\n for (var i = 0; i < arguments.length; i++) {\n if (token.type === arguments[i]) {\n return token;\n }\n }\n throw new Error(\"token type was unexpectedly \" + token.type);\n };\n Tokenizer.prototype.push = function (token) {\n this.token = token;\n this.tokens.push(token);\n };\n Tokenizer.prototype.currentAttribute = function () {\n return this._currentAttribute;\n };\n Tokenizer.prototype.addLocInfo = function () {\n if (this.options.loc) {\n this.current().loc = {\n start: {\n line: this.startLine,\n column: this.startColumn\n },\n end: {\n line: this.tokenizer.line,\n column: this.tokenizer.column\n }\n };\n }\n this.startLine = this.tokenizer.line;\n this.startColumn = this.tokenizer.column;\n };\n // Data\n Tokenizer.prototype.beginDoctype = function () {\n this.push({\n type: \"Doctype\" /* Doctype */,\n name: ''\n });\n };\n Tokenizer.prototype.appendToDoctypeName = function (char) {\n this.current(\"Doctype\" /* Doctype */).name += char;\n };\n Tokenizer.prototype.appendToDoctypePublicIdentifier = function (char) {\n var doctype = this.current(\"Doctype\" /* Doctype */);\n if (doctype.publicIdentifier === undefined) {\n doctype.publicIdentifier = char;\n } else {\n doctype.publicIdentifier += char;\n }\n };\n Tokenizer.prototype.appendToDoctypeSystemIdentifier = function (char) {\n var doctype = this.current(\"Doctype\" /* Doctype */);\n if (doctype.systemIdentifier === undefined) {\n doctype.systemIdentifier = char;\n } else {\n doctype.systemIdentifier += char;\n }\n };\n Tokenizer.prototype.endDoctype = function () {\n this.addLocInfo();\n };\n Tokenizer.prototype.beginData = function () {\n this.push({\n type: \"Chars\" /* Chars */,\n chars: ''\n });\n };\n Tokenizer.prototype.appendToData = function (char) {\n this.current(\"Chars\" /* Chars */).chars += char;\n };\n Tokenizer.prototype.finishData = function () {\n this.addLocInfo();\n };\n // Comment\n Tokenizer.prototype.beginComment = function () {\n this.push({\n type: \"Comment\" /* Comment */,\n chars: ''\n });\n };\n Tokenizer.prototype.appendToCommentData = function (char) {\n this.current(\"Comment\" /* Comment */).chars += char;\n };\n Tokenizer.prototype.finishComment = function () {\n this.addLocInfo();\n };\n // Tags - basic\n Tokenizer.prototype.tagOpen = function () {};\n Tokenizer.prototype.beginStartTag = function () {\n this.push({\n type: \"StartTag\" /* StartTag */,\n tagName: '',\n attributes: [],\n selfClosing: false\n });\n };\n Tokenizer.prototype.beginEndTag = function () {\n this.push({\n type: \"EndTag\" /* EndTag */,\n tagName: ''\n });\n };\n Tokenizer.prototype.finishTag = function () {\n this.addLocInfo();\n };\n Tokenizer.prototype.markTagAsSelfClosing = function () {\n this.current(\"StartTag\" /* StartTag */).selfClosing = true;\n };\n // Tags - name\n Tokenizer.prototype.appendToTagName = function (char) {\n this.current(\"StartTag\" /* StartTag */, \"EndTag\" /* EndTag */).tagName += char;\n };\n // Tags - attributes\n Tokenizer.prototype.beginAttribute = function () {\n this._currentAttribute = ['', '', false];\n };\n Tokenizer.prototype.appendToAttributeName = function (char) {\n this.currentAttribute()[0] += char;\n };\n Tokenizer.prototype.beginAttributeValue = function (isQuoted) {\n this.currentAttribute()[2] = isQuoted;\n };\n Tokenizer.prototype.appendToAttributeValue = function (char) {\n this.currentAttribute()[1] += char;\n };\n Tokenizer.prototype.finishAttributeValue = function () {\n this.current(\"StartTag\" /* StartTag */).attributes.push(this._currentAttribute);\n };\n Tokenizer.prototype.reportSyntaxError = function (message) {\n this.current().syntaxError = message;\n };\n return Tokenizer;\n}();\nfunction tokenize(input, options) {\n var tokenizer = new Tokenizer(new EntityParser(HTML5NamedCharRefs), options);\n return tokenizer.tokenize(input);\n}\n\nconst LinkifyResult = 'LinkifyResult';\nconst StartTag = 'StartTag';\nconst EndTag = 'EndTag';\nconst Chars = 'Chars';\nconst Comment = 'Comment';\nconst Doctype = 'Doctype';\n\n/**\n * @param {string} str html string to link\n * @param {import('linkifyjs').Opts} [opts] linkify options\n * @returns {string} resulting string\n */\nfunction linkifyHtml(str, opts) {\n if (opts === void 0) {\n opts = {};\n }\n // `tokens` and `token` in this section refer to tokens generated by the\n // HTML parser, not linkify's parser\n const tokens = tokenize(str);\n const linkifiedTokens = [];\n const linkified = [];\n const options = new Options(opts, defaultRender);\n\n // Linkify the tokens given by the parser\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token.type === StartTag) {\n linkifiedTokens.push(token);\n\n // Ignore all the contents of ignored tags\n const tagName = token.tagName.toUpperCase();\n const isIgnored = tagName === 'A' || options.ignoreTags.indexOf(tagName) >= 0;\n if (!isIgnored) {\n continue;\n }\n let preskipLen = linkifiedTokens.length;\n skipTagTokens(tagName, tokens, ++i, linkifiedTokens);\n i += linkifiedTokens.length - preskipLen - 1;\n } else if (token.type !== Chars) {\n // Skip this token, it's not important\n linkifiedTokens.push(token);\n } else {\n // Valid text token, linkify it!\n const linkifedChars = linkifyChars(token.chars, options);\n linkifiedTokens.push.apply(linkifiedTokens, linkifedChars);\n }\n }\n\n // Convert the tokens back into a string\n for (let i = 0; i < linkifiedTokens.length; i++) {\n const token = linkifiedTokens[i];\n switch (token.type) {\n case LinkifyResult:\n linkified.push(token.rendered);\n break;\n case StartTag:\n {\n let link = '<' + token.tagName;\n if (token.attributes.length > 0) {\n link += ' ' + attributeArrayToStrings(token.attributes).join(' ');\n }\n if (token.selfClosing) {\n link += ' /';\n }\n link += '>';\n linkified.push(link);\n break;\n }\n case EndTag:\n linkified.push(``);\n break;\n case Chars:\n linkified.push(escapeText(token.chars));\n break;\n case Comment:\n linkified.push(``);\n break;\n case Doctype:\n {\n let doctype = `';\n linkified.push(doctype);\n break;\n }\n }\n }\n return linkified.join('');\n}\n\n/**\n\t`tokens` and `token` in this section referes to tokens returned by\n\t`linkify.tokenize`. `linkified` will contain HTML Parser-style tokens\n\t@param {string}\n\t@param {import('linkifyjs').Options}\n*/\nfunction linkifyChars(str, options) {\n const tokens = tokenize$1(str);\n const result = [];\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token.t === 'nl' && options.get('nl2br')) {\n result.push({\n type: StartTag,\n tagName: 'br',\n attributes: [],\n selfClosing: true\n });\n } else if (!token.isLink || !options.check(token)) {\n result.push({\n type: Chars,\n chars: token.toString()\n });\n } else {\n result.push({\n type: LinkifyResult,\n rendered: options.render(token)\n });\n }\n }\n return result;\n}\n\n/**\n\tReturns a list of tokens skipped until the closing tag of tagName.\n\n\t* `tagName` is the closing tag which will prompt us to stop skipping\n\t* `tokens` is the array of tokens generated by HTML5Tokenizer which\n\t* `i` is the index immediately after the opening tag to skip\n\t* `skippedTokens` is an array which skipped tokens are being pushed into\n\n\tCaveats\n\n\t* Assumes that i is the first token after the given opening tagName\n\t* The closing tag will be skipped, but nothing after it\n\t* Will track whether there is a nested tag of the same type\n*/\nfunction skipTagTokens(tagName, tokens, i, skippedTokens) {\n // number of tokens of this type on the [fictional] stack\n let stackCount = 1;\n while (i < tokens.length && stackCount > 0) {\n let token = tokens[i];\n if (token.type === StartTag && token.tagName.toUpperCase() === tagName) {\n // Nested tag of the same type, \"add to stack\"\n stackCount++;\n } else if (token.type === EndTag && token.tagName.toUpperCase() === tagName) {\n // Closing tag\n stackCount--;\n }\n skippedTokens.push(token);\n i++;\n }\n\n // Note that if stackCount > 0 here, the HTML is probably invalid\n return skippedTokens;\n}\nfunction defaultRender(_ref) {\n let {\n tagName,\n attributes,\n content\n } = _ref;\n return `<${tagName} ${attributesToString(attributes)}>${escapeText(content)}`;\n}\nfunction escapeText(text) {\n return text.replace(//g, '>');\n}\nfunction escapeAttr(attr) {\n return attr.replace(/\"/g, '"');\n}\nfunction attributesToString(attributes) {\n const result = [];\n for (const attr in attributes) {\n const val = attributes[attr] + '';\n result.push(`${attr}=\"${escapeAttr(val)}\"`);\n }\n return result.join(' ');\n}\nfunction attributeArrayToStrings(attrs) {\n const attrStrs = [];\n for (let i = 0; i < attrs.length; i++) {\n const name = attrs[i][0];\n const value = attrs[i][1] + '';\n attrStrs.push(`${name}=\"${escapeAttr(value)}\"`);\n }\n return attrStrs;\n}\n\nexport { linkifyHtml as default };\n", "import { ReadonlySet } from \"complete-common\";\n\nconst TEST_USERNAMES = new ReadonlySet([\n \"test\",\n \"test1\",\n \"test2\",\n \"test3\",\n \"test4\",\n \"test5\",\n \"test6\",\n]);\n\nexport function amTestUser(username: string): boolean {\n return TEST_USERNAMES.has(username);\n}\n", "import type {\n CardIdentity,\n Rank,\n SuitIndex,\n SuitRankTuple,\n Variant,\n} from \"@hanabi-live/game\";\nimport { ALL_RESERVED_NOTES, START_CARD_RANK } from \"@hanabi-live/game\";\nimport { eRange, newArray } from \"complete-common\";\n\n/**\n * Represents the card identities that a card could possibly be.\n *\n * For example, in a \"No Variant\" game:\n *\n * ```ts\n * {\n * suitIndices: [0, 1],\n * ranks: [1],\n * }\n * ```\n *\n * This means that the card can possibly be a red 1 or a yellow 1.\n */\ninterface CardIdentities {\n readonly suitIndices: SuitIndex[];\n readonly ranks: Rank[];\n}\n\nfunction parseSuit(variant: Variant, suitText: string): SuitIndex | null {\n const suitAbbreviationIndex = variant.suitAbbreviations.findIndex(\n (abbreviation) => abbreviation.toLowerCase() === suitText,\n );\n if (suitAbbreviationIndex !== -1) {\n return suitAbbreviationIndex as SuitIndex;\n }\n\n const suitNameIndex = variant.suits.findIndex(\n (suit) => suit.displayName.toLowerCase() === suitText,\n );\n if (suitNameIndex !== -1) {\n return suitNameIndex as SuitIndex;\n }\n\n return null;\n}\n\nfunction parseRank(rankText: string): Rank | null {\n switch (rankText) {\n case \"0\":\n case \"s\":\n case \"S\": {\n return START_CARD_RANK;\n }\n\n case \"1\": {\n return 1;\n }\n\n case \"2\": {\n return 2;\n }\n\n case \"3\": {\n return 3;\n }\n\n case \"4\": {\n return 4;\n }\n\n case \"5\": {\n return 5;\n }\n\n default: {\n return null;\n }\n }\n}\n\n/**\n * Parse a string into a `CardIdentity`.\n *\n * @param variant The game variant.\n * @param keyword The string to be parsed.\n * @returns Return {suitIndex, rank}.\n */\nexport function parseIdentity(\n variant: Variant,\n keyword: string,\n): CardIdentity | \"original\" | undefined {\n if (keyword.toLowerCase() === \"blank\") {\n // Create a blank morph.\n return {\n suitIndex: null,\n rank: null,\n };\n }\n\n if (keyword === \"\") {\n // Return morph to original.\n return \"original\";\n }\n\n const identityMatch = new RegExp(\n variant.identityNotePattern.toLowerCase(),\n ).exec(keyword.toLowerCase());\n\n if (identityMatch !== null) {\n const suitText = extractSuitText(identityMatch);\n const rankText = extractRankText(identityMatch);\n if (suitText !== undefined && rankText !== undefined) {\n return {\n suitIndex: parseSuit(variant, suitText),\n rank: parseRank(rankText),\n };\n }\n }\n\n return undefined;\n}\n\nfunction parseIdentities(variant: Variant, keyword: string): CardIdentities {\n const identityMatch = new RegExp(variant.identityNotePattern).exec(keyword);\n let suitIndex: SuitIndex | null = null;\n let rank: Rank | null = null;\n if (identityMatch !== null) {\n const squishText = extractSquishText(identityMatch);\n const suitIndices: SuitIndex[] = [];\n const ranks: Rank[] = [];\n if (squishText !== undefined) {\n for (const letter of squishText) {\n suitIndex = parseSuit(variant, letter);\n rank = parseRank(letter);\n if (suitIndex !== null) {\n suitIndices.push(suitIndex);\n } else if (rank !== null) {\n ranks.push(rank);\n }\n }\n\n if (suitIndices.length + ranks.length > 0) {\n return { suitIndices, ranks };\n }\n }\n const suitText = extractSuitText(identityMatch);\n if (suitText !== undefined) {\n suitIndex = parseSuit(variant, suitText);\n }\n const rankText = extractRankText(identityMatch);\n if (rankText !== undefined) {\n rank = parseRank(rankText);\n }\n }\n\n return {\n suitIndices: suitIndex === null ? [] : [suitIndex],\n ranks: rank === null ? [] : [rank],\n };\n}\n\nfunction identityMapToArray(\n variant: Variant,\n identityMap: ReadonlyArray,\n): readonly SuitRankTuple[] {\n const possibilities: SuitRankTuple[] = [];\n\n for (const rank of variant.ranks) {\n const suitArray = identityMap[rank];\n if (suitArray === undefined) {\n continue;\n }\n\n for (const [i, isRankSuitCombinationPossible] of suitArray.entries()) {\n const suitIndex = i as SuitIndex;\n if (isRankSuitCombinationPossible) {\n possibilities.push([suitIndex, rank]);\n }\n }\n }\n\n return possibilities;\n}\n\n/**\n * Examines a single square bracket-enclosed part of a note (i.e. keyword) and returns the set of\n * card possibilities that it declares.\n *\n * Examples:\n * - `red` --> `[[0,1], [0,2], [0,3], [0,4], [0,5]]`\n * - `red 3, blue 3` --> `[[0,3], [3,3]]`\n * - `rb23` --> `[[0,2], [3,2], [0,3], [3,3]]`\n * - `r,b,2,3` --> all reds, blues, 2's, and 3's\n * - `r,!2,!3` --> `[[0,1], [0,4], [0,5]`\n */\nfunction getPossibilitiesFromKeyword(\n variant: Variant,\n keyword: string,\n): readonly SuitRankTuple[] {\n const { positiveCardIdentities, negativeCardIdentities } =\n getCardIdentitiesFromKeyword(variant, keyword);\n\n /**\n * The first index is the rank, the second index is the suit. (Unlike a standard array, there\n * should not be an element at the 0th index, because there is no 0th rank.)\n */\n const identityMap: boolean[][] = [];\n\n const positiveRanks = new Set(\n positiveCardIdentities.length > 0 ? [] : variant.ranks,\n );\n\n // Fill the identity map with an array for each rank.\n for (const rank of variant.ranks) {\n const identityArrayValue = positiveRanks.has(rank);\n const identityArray = newArray(variant.suits.length, identityArrayValue);\n identityMap[rank] = identityArray;\n }\n\n // Add positive items and remove negatives items.\n for (const cardIdentitiesArray of [\n positiveCardIdentities,\n negativeCardIdentities,\n ]) {\n const isPositive = cardIdentitiesArray === positiveCardIdentities;\n for (const cardIdentities of cardIdentitiesArray) {\n const ranks =\n cardIdentities.ranks.length > 0 ? cardIdentities.ranks : variant.ranks;\n const suitIndices =\n cardIdentities.suitIndices.length > 0\n ? cardIdentities.suitIndices\n : [...eRange(variant.suits.length)];\n\n for (const rank of ranks) {\n for (const suitIndex of suitIndices) {\n identityMap[rank]![suitIndex] = isPositive;\n }\n }\n }\n }\n\n return identityMapToArray(variant, identityMap);\n}\n\nfunction getCardIdentitiesFromKeyword(variant: Variant, keyword: string) {\n const positiveCardIdentities: CardIdentities[] = []; // Any combination of suits and ranks\n const negativeCardIdentities: CardIdentities[] = []; // Any negative cluing, e.g. `!r1` `!3`\n\n for (const keywordSegmentRaw of keyword.split(\",\")) {\n const keywordSegment = keywordSegmentRaw.trim();\n const isNegative = keywordSegment.startsWith(\"!\");\n const keywordSegmentWithoutExclamationPoint = isNegative\n ? keywordSegment.slice(1).trim()\n : keywordSegment;\n const cardIdentities = parseIdentities(\n variant,\n keywordSegmentWithoutExclamationPoint,\n );\n if (isNegative) {\n negativeCardIdentities.push(cardIdentities);\n } else {\n positiveCardIdentities.push(cardIdentities);\n }\n }\n\n return {\n positiveCardIdentities,\n negativeCardIdentities,\n };\n}\n\n/**\n * Examines a whole note and for each keyword that declares card possibilities, merges them into one\n * list.\n */\nexport function getPossibilitiesFromKeywords(\n variant: Variant,\n keywords: readonly string[],\n): readonly SuitRankTuple[] {\n let possibilities: readonly SuitRankTuple[] = [];\n\n // Empty keyword list returns all possibilities.\n for (const keyword of keywords.length > 0 ? keywords : [\"\"]) {\n if (keyword === \"!\") {\n continue;\n }\n const newPossibilities = getPossibilitiesFromKeyword(variant, keyword);\n const oldPossibilities = possibilities;\n const intersection = newPossibilities.filter(([newSuitIndex, newRank]) =>\n oldPossibilities.some(\n ([oldSuitIndex, oldRank]) =>\n newSuitIndex === oldSuitIndex && newRank === oldRank,\n ),\n );\n\n // If this new term completely conflicts with the previous terms, then reset our state to just\n // the new term.\n possibilities = intersection.length === 0 ? newPossibilities : intersection;\n }\n\n return possibilities;\n}\n\nfunction extractSuitText(match: RegExpMatchArray): string | undefined {\n return match[1] ?? match[4] ?? match[5] ?? undefined;\n}\n\nfunction extractRankText(match: RegExpMatchArray): string | undefined {\n return match[2] ?? match[3] ?? match[6] ?? undefined;\n}\n\nfunction extractSquishText(match: RegExpMatchArray): string | undefined {\n const text = match[7]?.trim();\n\n if (text !== undefined && !ALL_RESERVED_NOTES.has(text.toLowerCase())) {\n return text;\n }\n\n return undefined;\n}\n", "import type {\n CardOrder,\n GameAction,\n GameMetadata,\n Options,\n PlayerIndex,\n} from \"@hanabi-live/game\";\nimport { getDefaultVariant } from \"@hanabi-live/game\";\nimport { ReadonlyMap } from \"complete-common\";\nimport Konva from \"konva\";\nimport type * as Redux from \"redux\";\nimport { Globals as LobbyGlobals } from \"../../Globals\";\nimport type { Loader } from \"../../Loader\";\nimport type { GameExports } from \"../main\";\nimport type { State } from \"../types/State\";\nimport type { Action } from \"../types/actions\";\nimport { Elements } from \"./Elements\";\nimport type { HanabiCard } from \"./HanabiCard\";\nimport { Layers } from \"./Layers\";\nimport * as cursor from \"./cursor\";\nimport type { StateObserver } from \"./reactive/StateObserver\";\n\n/**\n * This object contains global variables for the game UI. Every class variable must also be reset in\n * the \"reset()\" function.\n */\nexport class UIGlobals {\n // Objects sent upon UI initialization.\n lobby: LobbyGlobals = new LobbyGlobals();\n game: GameExports | null = null;\n\n /**\n * The UI is instantiated before all the images are necessarily downloaded and before we know\n * enough information to draw all the UI elements.\n */\n loading = true;\n\n // Game constants (set upon first initialization).\n deck: HanabiCard[] = [];\n stackBases: HanabiCard[] = [];\n\n // UI elements\n imageLoader: Loader | null = null;\n stage: Konva.Stage = new Konva.Stage({\n container: \"game\",\n listening: false,\n });\n\n layers: Layers = new Layers();\n elements: Elements = new Elements();\n\n /** The element that the mouse cursor is currently over. */\n activeHover: Konva.Node | null = null;\n\n cardImages = new ReadonlyMap();\n scaledCardImages = new Map();\n\n // Replay feature\n\n /** Contains all of the \"action\" messages for the game. */\n replayLog: GameAction[] = [];\n\n finalReplayPos = 0;\n finalReplayTurn = 0;\n\n /**\n * Used to keep track of which card the user is editing. Users can only update one note at a time\n * to prevent bugs. Equal to the card order number or null.\n */\n editingNote: CardOrder | null = null;\n\n /** Equal to true if something happened when the note box happens to be open. */\n actionOccurred = false;\n\n lastNote = \"\"; // Equal to the last note entered\n\n // Timer feature\n timerID: number | null = null;\n playerTimes: number[] = [];\n\n /**\n * \"activeIndex\" must be tracked separately from the \"currentPlayerIndex\" because the current\n * player may change in an in-game replay.\n *\n * This is a legacy variable; kill this and use `state.currentPlayerIndex` instead.\n */\n activePlayerIndex: PlayerIndex | -1 = -1;\n\n timeTaken = 0;\n startingTurnTime = 0;\n lastTimerUpdateTimeMS = 0;\n\n // Miscellaneous\n animateFast = true;\n\n /** Used to prevent accidental double clicks. */\n UIClickTime = 0;\n\n globalEmpathyEnabled = false;\n\n // State information\n store: Redux.Store | null = null;\n stateObserver: StateObserver | null = null;\n cardSubscriptions: Redux.Unsubscribe[] = [];\n\n get state(): State {\n return this.store!.getState();\n }\n\n get metadata(): GameMetadata {\n return this.state.metadata;\n }\n\n /**\n * The variant of the current game is stored in the state metadata as a string. Provide a helper\n * for the variant object that corresponds to this (initialized in the \"initStateStore()\"\n * function).\n */\n variant = getDefaultVariant();\n\n get options(): Options {\n return this.state.metadata.options;\n }\n\n /**\n * We provide a method to reset every class variable to its initial value. This is called when the\n * user goes into a new game. We cannot just create a new instantiation of the class, because then\n * the references in the other files would point to the outdated version.\n */\n reset(): void {\n this.lobby = new LobbyGlobals();\n this.game = null;\n this.loading = true;\n this.variant = getDefaultVariant();\n this.deck = [];\n this.stackBases = [];\n this.imageLoader = null;\n this.stage = new Konva.Stage({\n container: \"game\",\n listening: true,\n });\n this.stage.on(\"mouseenter mouseleave\", () => {\n cursor.set(\"default\");\n });\n this.layers = new Layers();\n this.elements = new Elements();\n this.activeHover = null;\n this.cardImages = new Map();\n this.scaledCardImages = new Map();\n this.replayLog = [];\n this.finalReplayPos = 0;\n this.finalReplayTurn = 0;\n this.editingNote = null;\n this.actionOccurred = false;\n this.lastNote = \"\";\n this.timerID = null;\n this.playerTimes = [];\n this.activePlayerIndex = -1; // Legacy variable\n this.timeTaken = 0;\n this.startingTurnTime = 0;\n this.lastTimerUpdateTimeMS = 0;\n this.animateFast = true;\n this.UIClickTime = 0;\n this.globalEmpathyEnabled = false;\n\n this.stateObserver?.unregisterObservers();\n this.stateObserver = null;\n\n for (const unsubscribeFunc of this.cardSubscriptions) {\n unsubscribeFunc();\n }\n\n this.cardSubscriptions = [];\n this.store = null;\n }\n}\n\nexport const globals = new UIGlobals();\n\n// Also make the globals available to the window (so that we can access them from the JavaScript\n// console for debugging purposes).\n// https://stackoverflow.com/questions/56457935/typescript-error-property-x-does-not-exist-on-type-window\ndeclare global {\n interface Window {\n globals: UIGlobals;\n }\n}\nwindow.globals = globals;\n", "import type { Suit } from \"@hanabi-live/game\";\nimport type Konva from \"konva\";\nimport type { ButtonGroup } from \"./ButtonGroup\";\nimport type { CardLayout } from \"./CardLayout\";\nimport type { ClueLog } from \"./ClueLog\";\nimport type { ColorButton } from \"./ColorButton\";\nimport type { Deck } from \"./Deck\";\nimport type { FullActionLog } from \"./FullActionLog\";\nimport type { MultiFitText } from \"./MultiFitText\";\nimport type { NameFrame } from \"./NameFrame\";\nimport type { PlayStack } from \"./PlayStack\";\nimport type { RankButton } from \"./RankButton\";\nimport type { Arrow } from \"./controls/Arrow\";\nimport type { Button } from \"./controls/Button\";\nimport type { CheckButton } from \"./controls/CheckButton\";\nimport type { CurrentPlayerArea } from \"./controls/CurrentPlayerArea\";\nimport type { EnterHypoButton } from \"./controls/EnterHypoButton\";\nimport type { FitText } from \"./controls/FitText\";\nimport type { SharedTurnsButton } from \"./controls/SharedTurnsButton\";\nimport type { Shuttle } from \"./controls/Shuttle\";\nimport type { SlidableGroup } from \"./controls/SlidableGroup\";\nimport type { StrikeSquare } from \"./controls/StrikeSquare\";\nimport type { StrikeX } from \"./controls/StrikeX\";\nimport type { TextWithTooltip } from \"./controls/TextWithTooltip\";\nimport type { TimerDisplay } from \"./controls/TimerDisplay\";\n\nexport class Elements {\n // The main screen\n stageFade: Konva.Rect | null = null;\n playArea: Konva.Rect | null = null;\n\n playStacks = new Map();\n\n /**\n * UI row below play stacks, usually used for information about the suits, but also for stack\n * directions in \"Up Or Down\" or \"Reversed\" variants as well as starting values and played cards\n * in Sudoku variants.\n */\n suitLabelTexts: FitText[] = [];\n\n discardArea: Konva.Rect | null = null;\n discardStacks = new Map();\n playerHands: CardLayout[] = [];\n playerHandTurnRects: Konva.Rect[] = [];\n playerHandBlackLines: Konva.Rect[] = [];\n nameFrames: NameFrame[] = [];\n actionLog: MultiFitText | null = null;\n replayButton: Button | null = null;\n chatButton: Button | null = null;\n lobbyButton: Button | null = null;\n restartButton: Button | null = null;\n deck: Deck | null = null;\n gameIDLabel: FitText | null = null;\n gameInfoImage: Konva.Image | null = null;\n deckTurnsRemainingLabel1: Konva.Text | null = null;\n deckTurnsRemainingLabel2: Konva.Text | null = null;\n deckPlayAvailableLabel: Konva.Rect | null = null;\n variantLabel: FitText | null = null;\n variantUnderline: Konva.Line | null = null;\n\n // Extra elements on the right-hand side + the bottom.\n clueLog: ClueLog | null = null;\n paceNumberLabel: Konva.Text | null = null;\n efficiencyNumberLabel: TextWithTooltip | null = null;\n efficiencyPipeLabel: Konva.Text | null = null;\n efficiencyMinNeededLabel: Konva.Text | null = null;\n noDiscardBorder: Konva.Rect | null = null;\n noDoubleDiscardBorder: Konva.Rect | null = null;\n\n // The score area\n scoreArea: Konva.Group | null = null;\n scoreAreaBorder: Konva.Rect | null = null;\n turnNumberLabel: TextWithTooltip | null = null;\n scoreTextLabel: Konva.Text | null = null;\n scoreNumberLabel: Konva.Text | null = null;\n maxScoreNumberLabel: Konva.Text | null = null;\n playsTextLabel: Konva.Text | null = null;\n playsNumberLabel: Konva.Text | null = null;\n cluesNumberLabel: Konva.Text | null = null;\n cluesNumberLabelPulse: Konva.Tween | null = null;\n strikeSquares: StrikeSquare[] = [];\n strikeXs: StrikeX[] = [];\n questionMarkLabels: Konva.Text[] = [];\n terminateButton: Button | null = null;\n\n // Next to the score area.\n spectatorsLabel: Konva.Image | null = null;\n spectatorsNumLabel: Konva.Text | null = null;\n sharedReplayLeaderLabel: Konva.Image | null = null;\n sharedReplayLeaderCircle: Konva.Circle | null = null;\n sharedReplayLeaderLabelPulse: Konva.Tween | null = null;\n yourTurn: Konva.Group | null = null;\n\n // The clue UI\n clueArea: Konva.Group | null = null;\n clueTargetButtonGroup: ButtonGroup | null = null;\n clueTargetButtonGroup2: ButtonGroup | null = null; // For hypotheticals\n lowerClueArea: SlidableGroup | null = null;\n clueTypeButtonGroup: ButtonGroup | null = null;\n rankClueButtons: RankButton[] = [];\n colorClueButtons: ColorButton[] = [];\n giveClueButton: Button | null = null;\n clueAreaDisabled: SlidableGroup | null = null;\n waitingOnServer: Konva.Group | null = null;\n waitingOnServerAnimation: Konva.Animation | null = null;\n\n // The current turn UI.\n currentPlayerArea: CurrentPlayerArea | null = null;\n\n // The replay screen\n replayArea: Konva.Group | null = null;\n replayBar: Konva.Rect | null = null;\n replayShuttleShared: Shuttle | null = null;\n replayShuttle: Shuttle | null = null;\n replayBackFullButton: Button | null = null;\n replayBackButton: Button | null = null;\n replayForwardButton: Button | null = null;\n replayForwardFullButton: Button | null = null;\n replayExitButton: Button | null = null;\n pauseSharedTurnsButton: SharedTurnsButton | null = null;\n useSharedTurnsButton: SharedTurnsButton | null = null;\n enterHypoButton: EnterHypoButton | null = null;\n hypoCircle: Konva.Group | null = null;\n hypoButtonsArea: Konva.Group | null = null;\n editCardsButton: CheckButton | null = null;\n hypoBackButton: Button | null = null;\n toggleDrawnCardsButton: CheckButton | null = null;\n endHypotheticalButton: Button | null = null;\n\n // The pause screen\n pauseArea: Konva.Group | null = null;\n pauseText: Konva.Text | null = null;\n pauseButton: Button | null = null;\n\n // The restart screen\n restartArea: Konva.Group | null = null;\n restartText: Konva.Text | null = null;\n\n // Other screens\n fullActionLog: FullActionLog | null = null;\n\n // Other conditional elements\n arrows: Arrow[] = [];\n timer1Circle: Konva.Ellipse | null = null;\n timer1: TimerDisplay | null = null;\n timer2: TimerDisplay | null = null;\n premoveCancelButton: Button | null = null;\n sharedReplayForward: Konva.Image | null = null;\n sharedReplayForwardTween: Konva.Tween | null = null;\n sharedReplayBackward: Konva.Image | null = null;\n sharedReplayBackwardTween: Konva.Tween | null = null;\n}\n", "import Konva from \"konva\";\n\nconst defaultLayerSettings = {\n // Disable \"listening\" for every layer/element by default to increase performance:\n // https://konvajs.org/docs/performance/Listening_False.html\n // This means that we have to explicitly set \"listening: true\" for every element that we want to\n // bind events to (for clicking, dragging, hovering, etc.).\n listening: false,\n};\n\n// We do not want to add too many layers; the Konva documentation states that 3-5 is max:\n// https://konvajs.org/docs/performance/Layer_Management.html\nexport class Layers {\n UI: Konva.Layer = new Konva.Layer(defaultLayerSettings);\n // The timer gets its own layer since it is being constantly updated.\n timer: Konva.Layer = new Konva.Layer(defaultLayerSettings);\n card: Konva.Layer = new Konva.Layer(defaultLayerSettings);\n arrow: Konva.Layer = new Konva.Layer(defaultLayerSettings);\n // We need some UI elements to be on top of cards.\n UI2: Konva.Layer = new Konva.Layer(defaultLayerSettings);\n}\n", "/**\n * From: https://techoverflow.net/2018/03/30/copying-strings-to-the-clipboard-using-pure-javascript/\n */\nexport function copyStringToClipboard(str: string): void {\n const element = document.createElement(\"textarea\"); // Create new element.\n element.value = str; // Set the value (the string to be copied).\n element.setAttribute(\"readonly\", \"\"); // Set non-editable to avoid focus.\n document.body.append(element);\n element.select(); // Select text inside element.\n document.execCommand(\"copy\"); // Copy text to clipboard.\n element.remove(); // Remove temporary element.\n}\n\nexport const dateTimeFormatter = new Intl.DateTimeFormat(undefined, {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n});\n\nexport function getHTMLElement(selectors: string): HTMLElement {\n const element = document.querySelector(selectors);\n\n if (!(element instanceof HTMLElement)) {\n throw new TypeError(`Failed to find the HTMLElement: ${selectors}`);\n }\n\n return element;\n}\n\nexport function getHTMLInputElement(selectors: string): HTMLInputElement {\n const element = document.querySelector(selectors);\n\n if (!(element instanceof HTMLInputElement)) {\n throw new TypeError(`Failed to find the HTMLInputElement: ${selectors}`);\n }\n\n return element;\n}\n\nexport function getURLFromPath(path: string): string {\n let url = `${window.location.protocol}//${window.location.hostname}`;\n if (window.location.port !== \"\") {\n url += `:${window.location.port}`;\n }\n url += path;\n\n return url;\n}\n\nexport function setBrowserAddressBarPath(newPath: string, hash?: string): void {\n // Combine the path (e.g. \"/\") with the query string parameters (e.g. \"?dev\")\n const queryParameters = new URLSearchParams(window.location.search);\n const modifiedQueryParameters = queryParameters\n .toString()\n // \"URLSearchParams.toString()\" will convert \"?dev\" to \"?dev=\", which is undesirable.\n .replaceAll(\"=&\", \"&\")\n .replace(/=$/, \"\");\n\n let path = newPath;\n if (modifiedQueryParameters !== \"\") {\n path += `?${modifiedQueryParameters}`;\n }\n if (hash !== undefined) {\n // e.g. \"#123\", which is used to show the current turn\n path += hash;\n }\n window.history.replaceState(undefined, \"\", path);\n}\n\nexport function timerFormatter(totalSeconds: number): string {\n const time = new Date();\n time.setHours(0, 0, totalSeconds);\n\n const hours = time.getHours();\n const minutes = time.getMinutes();\n const seconds = time.getSeconds();\n const secondsFormatted = seconds < 10 ? `0${seconds}` : seconds;\n\n if (hours > 0) {\n const minutesFormatted = minutes < 10 ? `0${minutes}` : minutes;\n return `${hours}:${minutesFormatted}:${secondsFormatted}`;\n }\n\n return `${minutes}:${secondsFormatted}`;\n}\n", "import type Konva from \"konva\";\nimport { getHTMLElement } from \"../../utils\";\nimport type { Deck } from \"./Deck\";\nimport type { LayoutChild } from \"./LayoutChild\";\nimport { globals } from \"./UIGlobals\";\n\nexport type CursorType = \"default\" | \"hand\" | \"dragging\" | \"look\" | \"edit\";\n\n// Module variables. (This does not have to be on the globals because it is explicitly reset in\n// HanabiUI constructor.)\nlet currentCursorType = \"default\";\n\nconst gameDiv = getHTMLElement(\"#game\");\n\nexport function set(cursorType: CursorType): void {\n // It is possible to receive cursor events before the UI has initialized.\n if (globals.store === null) {\n return;\n }\n\n if (cursorType === currentCursorType) {\n return;\n }\n\n // Do not show any custom cursors if we are an active player in a speedrun.\n if (\n (globals.options.speedrun || globals.lobby.settings.speedrunMode) &&\n globals.state.playing\n ) {\n return;\n }\n\n currentCursorType = cursorType;\n const cursorTypes = [\"default\", \"hand\", \"dragging\", \"look\", \"edit\"];\n\n for (const type of cursorTypes) {\n gameDiv.classList.remove(`game-cursor-${type}`);\n }\n\n gameDiv.classList.add(`game-cursor-${cursorType}`);\n\n // If the Chrome development tools are open, then the cursor may not update properly:\n // https://stackoverflow.com/questions/37462132/update-mouse-cursor-without-moving-mouse-with-changed-css-cursor-property\n}\n\nexport function getElementDragLocation(\n element: LayoutChild | Deck,\n): \"playArea\" | \"discardArea\" | null {\n const pos = element.getAbsolutePosition();\n pos.x += (element.width() * element.scaleX()) / 2;\n pos.y += (element.height() * element.scaleY()) / 2;\n\n if (\n globals.elements.playArea !== null &&\n posOverlaps(pos, globals.elements.playArea)\n ) {\n return \"playArea\";\n }\n if (\n globals.elements.discardArea !== null &&\n posOverlaps(pos, globals.elements.discardArea)\n ) {\n return \"discardArea\";\n }\n\n return null;\n}\n\nexport function elementOverlaps(element: LayoutChild): boolean {\n if (globals.loading) {\n return false;\n }\n\n // This method will return undefined if the cursor is not inside of the stage.\n const pos = globals.stage.getPointerPosition();\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (pos === undefined) {\n return false;\n }\n\n return posOverlaps(pos, element);\n}\n\nfunction posOverlaps(pos: Konva.Vector2d, element: Konva.Rect | LayoutChild) {\n const elementPos = element.getAbsolutePosition();\n return (\n pos.x >= elementPos.x &&\n pos.y >= elementPos.y &&\n pos.x <= elementPos.x + element.width() &&\n pos.y <= elementPos.y + element.height()\n );\n}\n", "// Arrows are used to show which cards are touched by a clue (and to highlight things in shared\n// replays).\n\nimport type { CardOrder, Clue, PlayerIndex, Suit } from \"@hanabi-live/game\";\nimport {\n ClueType,\n getCharacterNameForPlayer,\n isCardDiscarded,\n isCardInPlayerHand,\n isCardPlayed,\n} from \"@hanabi-live/game\";\nimport Konva from \"konva\";\nimport type * as KonvaContext from \"konva/types/Context\";\nimport type { KonvaEventObject } from \"konva/types/Node\";\nimport * as tooltips from \"../../tooltips\";\nimport { ReplayActionType } from \"../types/ReplayActionType\";\nimport { ReplayArrowOrder } from \"../types/ReplayArrowOrder\";\nimport { CardLayout } from \"./CardLayout\";\nimport { HanabiCard } from \"./HanabiCard\";\nimport { globals } from \"./UIGlobals\";\nimport { ARROW_COLOR, CARD_ANIMATION_LENGTH_SECONDS } from \"./constants\";\nimport type { Arrow } from \"./controls/Arrow\";\nimport type { NodeWithTooltip } from \"./controls/NodeWithTooltip\";\nimport { StrikeSquare } from \"./controls/StrikeSquare\";\nimport { drawPip } from \"./drawPip\";\nimport { getCardOrStackBase } from \"./getCardOrStackBase\";\nimport * as konvaHelpers from \"./konvaHelpers\";\n\nexport function hideAll(): void {\n let changed = false;\n for (const arrow of globals.elements.arrows) {\n if (arrow.pointingTo !== null) {\n changed = true;\n arrow.pointingTo = null;\n arrow.hide();\n if (arrow.tween !== null) {\n arrow.tween.destroy();\n arrow.tween = null;\n }\n }\n }\n if (changed) {\n globals.layers.arrow.batchDraw();\n }\n}\n\nexport function set(\n i: number,\n element: Konva.Node | null,\n giverPlayerIndex: PlayerIndex | null,\n clue: Clue | null,\n preview = false,\n): void {\n // Show the arrow\n const arrow = globals.elements.arrows[i]!;\n arrow.pointingTo = element;\n arrow.show();\n arrow.moveToTop();\n\n // Figure out whether the arrow should be inverted or not.\n let rot = 0;\n if (\n element instanceof HanabiCard &&\n !isCardPlayed(element.state) &&\n !isCardDiscarded(element.state) &&\n !element.isStackBase\n ) {\n if (\n element.parent !== null &&\n element.parent.parent !== null &&\n element.parent.parent instanceof CardLayout\n ) {\n rot = element.parent.parent.origRotation;\n }\n if (\n (!globals.lobby.settings.keldonMode &&\n element.state.location === globals.metadata.ourPlayerIndex) ||\n (globals.lobby.settings.keldonMode &&\n element.state.location !== globals.metadata.ourPlayerIndex &&\n isCardInPlayerHand(element.state))\n ) {\n // In BGA mode, invert the arrows on our hand (so that it doesn't get cut off by the top of\n // the screen). In Keldon mode, invert the arrows for all other players.\n rot += 180;\n }\n }\n arrow.rotation(rot);\n\n // We want the text to always be right-side up (e.g. have a rotation of 0)\n arrow.text.rotation(360 - rot);\n\n // Set the arrow features.\n if (clue === null) {\n // This is a highlight arrow.\n const color = ARROW_COLOR.HIGHLIGHT;\n arrow.base.stroke(color);\n arrow.base.fill(color);\n\n // Do not draw the circle.\n arrow.circle.hide();\n arrow.text.hide();\n } else {\n // This is a clue arrow.\n const color =\n element instanceof HanabiCard &&\n (element.state.numPositiveClues >= 2 ||\n (element.state.numPositiveClues >= 1 && preview))\n ? ARROW_COLOR.RETOUCHED // Cards that are re-clued use a different color.\n : ARROW_COLOR.DEFAULT; // Freshly touched cards use the default color.\n\n arrow.base.stroke(color);\n arrow.base.fill(color);\n\n // Clue arrows have a circle that shows the type of clue given.\n const giverCharacterName = getCharacterNameForPlayer(\n giverPlayerIndex,\n globals.metadata.characterAssignments,\n );\n if (\n globals.variant.duck ||\n (giverCharacterName === \"Quacker\" && !globals.state.finished)\n ) {\n // Do not show the circle in variants where the clue types are supposed to be hidden.\n arrow.circle.hide();\n arrow.text.hide();\n } else {\n arrow.circle.show();\n\n switch (clue.type) {\n case ClueType.Color: {\n arrow.text.hide();\n\n // The circle for color clues should have a black border and a fill matching the color.\n arrow.circle.stroke(\"black\");\n if (globals.variant.cowAndPig) {\n // The specific clue color is hidden in \"Cow & Pig\" variants.\n arrow.circle.fill(\"white\");\n } else {\n const clueColor = clue.value;\n if (typeof clueColor === \"number\") {\n throw new TypeError(\n \"The clue value was a number for a color clue.\",\n );\n }\n arrow.circle.fill(clueColor.fill);\n\n // Additionally, draw the suit pip in colorblind mode.\n if (globals.lobby.settings.colorblindMode) {\n if (typeof clue.value === \"number\") {\n throw new TypeError(\n \"The clue value was a number for a color clue.\",\n );\n }\n const matchingSuits = globals.variant.suits.filter((suit: Suit) =>\n suit.clueColors.includes(clueColor),\n );\n if (matchingSuits.length === 1) {\n arrow.suitPip!.sceneFunc((ctx: KonvaContext.Context) => {\n drawPip(\n ctx as unknown as CanvasRenderingContext2D,\n matchingSuits[0]!,\n );\n });\n arrow.suitPip!.show();\n } else {\n arrow.suitPip!.hide();\n }\n }\n }\n\n break;\n }\n\n case ClueType.Rank: {\n let text = clue.value.toString();\n if (globals.variant.cowAndPig) {\n text = \"#\";\n }\n if (globals.variant.oddsAndEvens) {\n text = \"O\";\n if (clue.value === 2) {\n text = \"E\";\n }\n }\n arrow.text.text(text);\n arrow.text.show();\n\n // The circle for number clues should have a white border and a black fill.\n arrow.circle.stroke(\"white\");\n arrow.circle.fill(\"black\");\n\n if (globals.lobby.settings.colorblindMode) {\n arrow.suitPip!.hide();\n }\n\n break;\n }\n }\n }\n }\n\n if (arrow.tween !== null) {\n arrow.tween.destroy();\n arrow.tween = null;\n }\n if (globals.animateFast || giverPlayerIndex === null) {\n const pos = getPos(element!, rot);\n arrow.setAbsolutePosition(pos);\n } else {\n const visibleSegment = globals.state.visibleState!.turn.segment!;\n animate(\n arrow,\n element as HanabiCard,\n rot,\n giverPlayerIndex,\n visibleSegment,\n );\n }\n if (!globals.animateFast) {\n globals.layers.arrow.batchDraw();\n }\n}\n\nfunction getPos(element: Konva.Node, rot: number) {\n // Start by using the absolute position of the element.\n const pos = element.getAbsolutePosition();\n\n if (element instanceof HanabiCard) {\n // If we set the arrow at the absolute position of a card, it will point to the exact center.\n // Instead, back it off a little bit (accounting for the rotation of the hand).\n const winH = globals.stage.height();\n const distance = -0.075 * winH;\n const rotRadians = (-rot / 180) * Math.PI;\n pos.x += distance * Math.sin(rotRadians); // sin(x) = cos(x + (PI * 3 / 2))\n pos.y -= distance * -Math.cos(rotRadians); // -cos(x) = sin(x + (PI * 3 / 2))\n } else if (element instanceof StrikeSquare) {\n pos.x += element.width() * 0.5;\n } else {\n switch (element) {\n case globals.elements.deck: {\n // Order = ReplayArrowOrder.Deck (-1).\n pos.x += element.width() * 0.5;\n pos.y += element.height() * 0.1;\n\n break;\n }\n\n case globals.elements.turnNumberLabel:\n case globals.elements.scoreNumberLabel:\n case globals.elements.playsNumberLabel:\n case globals.elements.cluesNumberLabel: {\n pos.x += element.width() * 0.15;\n\n break;\n }\n\n case globals.elements.maxScoreNumberLabel: {\n // Order = ReplayArrowOrder.MaxScore (-4).\n pos.x += element.width() * 0.7;\n\n break;\n }\n\n default: {\n // The type of Konva.Text.width is \"any\" for some reason.\n const textElement = element as Konva.Text;\n const width = textElement.measureSize(textElement.text())\n .width as number;\n if (typeof width !== \"number\") {\n throw new TypeError(\"The width of the element was not a number.\");\n }\n pos.x += width / 2;\n\n break;\n }\n }\n }\n\n if (Number.isNaN(pos.x) || Number.isNaN(pos.y)) {\n throw new TypeError(\n \"Failed to get the position for the element when drawing an arrow.\",\n );\n }\n\n return pos;\n}\n\n/** Animate the arrow to fly from the player who gave the clue to the card. */\nfunction animate(\n arrow: Arrow,\n card: HanabiCard,\n rot: number,\n giver: number,\n segment: number,\n) {\n // We can't continue arrow animations if we are on the wrong segment because arrows are reused and\n // this causes glitches.\n const visibleSegment = globals.state.visibleState!.turn.segment!;\n if (visibleSegment !== segment) {\n return;\n }\n\n // Do not bother doing the animation if the card is no longer part of a hand (which can happen\n // when jumping quickly through a replay).\n if (card.parent === null || card.parent.parent === null) {\n return;\n }\n\n // Do not bother doing the animation if we have hidden the arrow in the meantime (which can happen\n // when jumping quickly through a replay).\n if (arrow.pointingTo === null) {\n return;\n }\n\n // Delay the animation if the card is currently tweening to avoid buggy behavior.\n if (card.tweening) {\n arrow.hide();\n card.waitForTweening(() => {\n animate(arrow, card, rot, giver, segment);\n });\n return;\n }\n arrow.show();\n\n // Start the arrow at the center position of the clue giver's hand.\n const centerPos = globals.elements.playerHands[giver]!.getAbsoluteCenterPos();\n arrow.setAbsolutePosition(centerPos);\n\n // Calculate the position of the final arrow destination. (This must be done after the card is\n // finished tweening.)\n const pos = getPos(card, rot);\n\n konvaHelpers.animate(arrow, {\n duration: CARD_ANIMATION_LENGTH_SECONDS,\n x: pos.x,\n y: pos.y,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n easing: Konva.Easings.EaseOut,\n });\n}\n\nexport function click(\n event: KonvaEventObject,\n order: CardOrder | ReplayArrowOrder,\n): void {\n // \"event.evt.buttons\" is always 0 here.\n if (event.evt.button !== 2) {\n // We only care about right-clicks.\n return;\n }\n\n // Do not allow followers in a shared replay to summon arrows because it could be misleading as to\n // who the real replay leader is.\n if (\n globals.state.replay.shared !== null &&\n !globals.state.replay.shared.amLeader\n ) {\n return;\n }\n\n // Do not allow shared replay leaders to summon arrows when they are not in shared turns because\n // it could be misleading as to whether or not the arrows are being shown to the other players.\n if (\n globals.state.replay.shared !== null &&\n !globals.state.replay.shared.useSharedSegments\n ) {\n return;\n }\n\n toggle(order);\n}\n\n/** Toggles the \"highlight\" arrow on a particular element. */\nexport function toggle(\n order: CardOrder | ReplayArrowOrder,\n alwaysShow = false,\n): void {\n // Get the element corresponding to the \"order\" number.\n const element = getElementFromOrder(order);\n if (!element) {\n return;\n }\n\n // If we are showing an arrow on a card that is currently tweening, delay showing it until the\n // tween is finished.\n if (element instanceof HanabiCard && element.tweening) {\n element.waitForTweening(() => {\n toggle(order, alwaysShow);\n });\n return;\n }\n\n // Use the first arrow for highlighting a specific thing.\n const arrow = globals.elements.arrows[0]!;\n const show =\n alwaysShow ||\n arrow.pointingTo !== element ||\n arrow.base.fill() !== ARROW_COLOR.HIGHLIGHT;\n\n hideAll();\n if (show) {\n set(0, element, null, null);\n\n // If this element has a tooltip and it is open, close it.\n if (element.tooltipName !== undefined && element.tooltipName !== \"\") {\n tooltips.close(`#tooltip-${element.tooltipName}`);\n }\n }\n\n if (\n globals.state.replay.shared !== null &&\n globals.state.replay.shared.amLeader &&\n globals.state.replay.shared.useSharedSegments\n ) {\n globals.lobby.conn!.send(\"replayAction\", {\n tableID: globals.lobby.tableID,\n type: ReplayActionType.Arrow,\n order: show ? order : ReplayArrowOrder.Nothing,\n });\n }\n}\n\nfunction getElementFromOrder(\n order: CardOrder | ReplayArrowOrder,\n): NodeWithTooltip | undefined {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison\n if (order >= 0) {\n // This is an arrow for a card. The order corresponds to the card's order in the deck.\n return getCardOrStackBase(order as CardOrder);\n }\n\n return getElementFromNegativeOrder(order);\n}\n\nfunction getElementFromNegativeOrder(\n order: ReplayArrowOrder,\n): NodeWithTooltip | undefined {\n switch (order) {\n case ReplayArrowOrder.Nothing: {\n return undefined;\n }\n\n case ReplayArrowOrder.Deck: {\n return globals.elements.deck!;\n }\n\n case ReplayArrowOrder.Turn: {\n return globals.elements.turnNumberLabel!;\n }\n\n case ReplayArrowOrder.Score: {\n return globals.elements.scoreNumberLabel!;\n }\n\n case ReplayArrowOrder.MaxScore: {\n return globals.elements.maxScoreNumberLabel!;\n }\n\n case ReplayArrowOrder.Clues: {\n return globals.elements.cluesNumberLabel!;\n }\n\n case ReplayArrowOrder.Strike1: {\n return globals.elements.strikeSquares[0]!;\n }\n\n case ReplayArrowOrder.Strike2: {\n return globals.elements.strikeSquares[1]!;\n }\n\n case ReplayArrowOrder.Strike3: {\n return globals.elements.strikeSquares[2]!;\n }\n\n case ReplayArrowOrder.Pace: {\n return globals.elements.paceNumberLabel!;\n }\n\n case ReplayArrowOrder.Efficiency: {\n return globals.elements.efficiencyNumberLabel!;\n }\n\n case ReplayArrowOrder.MinEfficiency: {\n return globals.elements.efficiencyMinNeededLabel!;\n }\n }\n}\n", "// The central point for all game tooltips.\n\n// Tooltipster is a jQuery library, so we import it purely for the side-effects (e.g. so that it can\n// add the \".tooltipster\" property to the \"$\" object).\n\n// ScrollableTip is a Tooltipster library that allows for a scrolling tooltip. We import it for the\n// side-effects for the same reason.\n\nimport {\n MAX_CARDS_IN_A_DECK,\n MAX_PLAYERS,\n MAX_SUITS_IN_A_VARIANT,\n} from \"@hanabi-live/game\";\nimport { eRange } from \"complete-common\";\nimport \"tooltipster\"; // eslint-disable-line import-x/no-unassigned-import\nimport \"../lib/tooltipster-scrollableTip.min\"; // eslint-disable-line import-x/no-unassigned-import\nimport { getHTMLElement } from \"./utils\";\n\n// Constants\nexport const TOOLTIP_DELAY_IN_MILLISECONDS = 500;\n// eslint-disable-next-line complete/require-capital-const-assertions, complete/require-capital-read-only\nconst TOOLTIP_THEME = [\"tooltipster-shadow\", \"tooltipster-shadow-big\"];\nconst TOOLTIP_THEME_CENTERED = [...TOOLTIP_THEME, \"align-center\"] as const;\n\n// Tooltip options\nconst defaultOptions: JQueryTooltipster.ITooltipsterOptions = {\n animation: \"grow\",\n contentAsHTML: true,\n delay: 0,\n theme: TOOLTIP_THEME,\n};\nconst navOptions: JQueryTooltipster.ITooltipsterOptions = {\n theme: \"tooltipster-shadow\",\n trigger: \"click\",\n interactive: true,\n delay: 0,\n // Some tooltips are too large for small resolutions and will wrap off the screen; we can use a\n // Tooltipster plugin to automatically create a scroll bar for it:\n // https://github.com/louisameline/tooltipster-scrollableTip\n plugins: [\n \"sideTip\", // Make it have the ability to be positioned on a specific side.\n \"scrollableTip\", // Make it scrollable.\n ],\n};\nconst gameOptions: JQueryTooltipster.ITooltipsterOptions = {\n ...defaultOptions,\n interactive: true, // So that users can update their notes\n trigger: \"custom\",\n updateAnimation: null,\n};\nconst clipboardOptions: JQueryTooltipster.ITooltipsterOptions = {\n animation: \"grow\",\n content: 'URL copied to clipboard!',\n contentAsHTML: true,\n delay: 0,\n trigger: \"custom\",\n theme: [\"tooltipster-shadow\", \"tooltipster-shadow-big\"],\n};\n\ntype TooltipOptionType = \"clipboard\" | \"default\" | \"nav\";\n\n// Initialize in-game tooltips (for notes, etc.)\nexport function initGame(): void {\n createGameTooltips();\n createPlayerTooltips();\n createCardTooltips();\n}\n\nexport function create(\n selector: string,\n type: JQueryTooltipster.ITooltipsterOptions | TooltipOptionType = \"default\",\n args?: unknown,\n): void {\n const tooltip = getElementFromSelector(selector);\n const customType = typeof type === \"string\" ? getOptionsFromType(type) : type;\n const tooltipOptions = {\n ...customType,\n args,\n };\n // Create the tooltip only once:\n // https://stackoverflow.com/a/40916543/180243\n if ($.tooltipster.instances($(tooltip)).length === 0) {\n tooltip.tooltipster(tooltipOptions);\n }\n}\n\nexport function open(selector: string): void {\n const tooltip = getElementFromSelector(selector);\n if (isTooltipster(tooltip)) {\n tooltip.tooltipster(\"open\");\n }\n}\n\nexport function openInstance(selector: string): void {\n const tooltip = getElementFromSelector(selector);\n if (isTooltipster(tooltip)) {\n tooltip.tooltipster(\"instance\").open();\n }\n}\n\nexport function close(selector: string): void {\n const tooltip = getElementFromSelector(selector);\n if (isTooltipster(tooltip)) {\n tooltip.tooltipster(\"close\");\n }\n}\n\nexport function closeInstance(selector: string): void {\n const tooltip = getElementFromSelector(selector);\n if (isTooltipster(tooltip)) {\n tooltip.tooltipster(\"instance\").close();\n }\n}\n\n// From: https://stackoverflow.com/questions/27709489/jquery-tooltipster-plugin-hide-all-tips\nexport function closeAllTooltips(): void {\n const instances = $.tooltipster.instances();\n $.each(\n instances,\n (_: number, instance: JQueryTooltipster.ITooltipsterInstance) => {\n if (instance.status().open) {\n instance.close();\n }\n },\n );\n}\n\nexport function setInstanceContent(selector: string, content: string): void {\n const tooltip = getElementFromSelector(selector);\n if (isTooltipster(tooltip)) {\n tooltip.tooltipster(\"instance\").content(content);\n }\n}\n\nexport function setPosition(selector: string, x: number, y: number): void {\n const tooltip = getElementFromSelector(selector);\n tooltip.css(\"left\", x).css(\"top\", y);\n}\n\nexport function setInstanceOption(\n selector: string,\n option: string,\n value: string | readonly string[],\n): void {\n const tooltip = getElementFromSelector(selector);\n if (isTooltipster(tooltip)) {\n tooltip.tooltipster(\"instance\").option(option, value);\n }\n}\n\nexport function getStatus(selector: string): JQueryTooltipster.ITooltipStatus {\n const tooltip = getElementFromSelector(selector);\n if (isTooltipster(tooltip)) {\n return tooltip.tooltipster(\"status\");\n }\n return {\n destroyed: true,\n destroying: false,\n enabled: false,\n open: false,\n state: \"closed\",\n };\n}\n\nexport function reposition(selector: string): void {\n const tooltip = getElementFromSelector(selector);\n if (isTooltipster(tooltip)) {\n tooltip.tooltipster(\"reposition\");\n }\n}\n\nfunction getOptionsFromType(\n type: TooltipOptionType = \"default\",\n): JQueryTooltipster.ITooltipsterOptions {\n switch (type) {\n case \"clipboard\": {\n return clipboardOptions;\n }\n\n case \"nav\": {\n return navOptions;\n }\n\n case \"default\": {\n return defaultOptions;\n }\n }\n}\n\nfunction appendDiv(selector: string, id: string) {\n const newElement = document.createElement(\"div\");\n newElement.setAttribute(\"id\", id);\n\n const parentElement = getHTMLElement(selector);\n parentElement.append(newElement);\n}\n\nfunction createGameTooltips() {\n // Initialize some basic tooltips.\n const tooltips = [\n \"chat\",\n \"deck\",\n \"discard\",\n \"efficiency-text\",\n \"efficiency-number\",\n \"hypo-back\",\n \"hypo-edit-cards\",\n \"hypo-show-drawn\",\n \"kill\",\n \"leader\",\n \"lobby\",\n \"lobby-small\",\n \"time-taken\",\n \"pace\",\n \"replay\",\n \"restart\",\n \"spectators\",\n \"strikes\",\n \"turn-number\",\n ];\n for (const tooltip of tooltips) {\n const id = `tooltip-${tooltip}`;\n appendDiv(\"#game-tooltips\", id);\n create(`#${id}`, gameOptions);\n }\n\n // The \"time-taken\" tooltip should have centered text.\n setInstanceOption(\"#tooltip-time-taken\", \"theme\", TOOLTIP_THEME_CENTERED);\n}\n\nfunction createPlayerTooltips() {\n // Dynamically create the player tooltips.\n for (const i of eRange(MAX_PLAYERS)) {\n let id = `tooltip-player-${i}`;\n appendDiv(\"#game-tooltips\", id);\n create(`#${id}`, gameOptions);\n setInstanceOption(`#${id}`, \"theme\", TOOLTIP_THEME_CENTERED);\n\n id = `tooltip-character-assignment-${i}`;\n appendDiv(\"#game-tooltips\", id);\n create(`#${id}`, gameOptions);\n setInstanceOption(`#${id}`, \"theme\", TOOLTIP_THEME_CENTERED);\n }\n}\n\nfunction createCardTooltips() {\n // Dynamically create the card note tooltips. (We add the number of suits because we also need\n // note tooltips for the stack bases.)\n for (const order of eRange(MAX_CARDS_IN_A_DECK + MAX_SUITS_IN_A_VARIANT)) {\n const id = `tooltip-card-${order}`;\n appendDiv(\"#game-tooltips\", id);\n create(`#${id}`, gameOptions);\n }\n}\n\nfunction getElementFromSelector(selector: string): JQuery {\n return typeof selector === \"string\" ? $(selector) : selector;\n}\n\nfunction isTooltipster(element: JQuery): boolean {\n return element.hasClass(\"tooltipstered\");\n}\n", "import { assertDefined, eRange } from \"complete-common\";\nimport Konva from \"konva\";\nimport type { HanabiCard } from \"./HanabiCard\";\nimport type { LayoutChild } from \"./LayoutChild\";\nimport { globals } from \"./UIGlobals\";\nimport { CARD_ANIMATION_LENGTH_SECONDS } from \"./constants\";\nimport { animate } from \"./konvaHelpers\";\n\n/** Represents a player's hand (or a discard pile). It is composed of `LayoutChild` objects. */\nexport class CardLayout extends Konva.Group {\n private readonly align: string;\n private readonly reverse: boolean;\n origRotation: number;\n empathy: boolean;\n\n constructor(config: Konva.ContainerConfig) {\n super(config);\n\n // Class variables.\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n this.align = (config[\"align\"] || \"left\") as string;\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n this.reverse = (config[\"reverse\"] || false) as boolean;\n this.origRotation = config.rotation ?? 0;\n this.empathy = false;\n\n assertDefined(config.width, \"A width was not defined for a CardLayout.\");\n assertDefined(config.height, \"A height was not defined for a CardLayout.\");\n\n // Debug rectangle (uncomment to show the size of the hand).\n /*\n const debugRect = new Konva.Rect({\n x: config.x,\n y: config.y,\n width: config.width,\n height: config.height,\n fill: 'black',\n rotation: config.rotation,\n listening: false,\n });\n globals.layers.UI.add(debugRect);\n */\n }\n\n // The card has a relative position relating to its location\n // (e.g. a player's hand, the play stacks). Use the absolute position so that we can tween it from\n // one location to another without having to worry about the relative position.\n addChild(child: LayoutChild): void {\n const pos = child.getAbsolutePosition();\n this.add(child as unknown as Konva.Group);\n child.setAbsolutePosition(pos);\n if (this.empathy) {\n child.card.setEmpathy(true);\n }\n this.doLayout();\n }\n\n override _setChildrenIndices(): void {\n Konva.Group.prototype._setChildrenIndices.call(this);\n this.doLayout();\n }\n\n doLayout(): void {\n const handWidth = this.width();\n const handHeight = this.height();\n const numCards = this.children.length;\n\n let uw = 0;\n for (const i of eRange(numCards)) {\n const layoutChild = this.children[i] as unknown as LayoutChild;\n\n if (layoutChild.height() <= 0) {\n continue;\n }\n\n const scale = handHeight / layoutChild.height();\n uw += scale * layoutChild.width();\n }\n\n let spacingBetweenCards = 0;\n if (numCards > 1) {\n spacingBetweenCards = (handWidth - uw) / (numCards - 1);\n }\n let maxSpacingBetweenCards = 0.04 * uw;\n if (globals.lobby.settings.keldonMode) {\n maxSpacingBetweenCards = 0.025 * uw;\n }\n if (spacingBetweenCards > maxSpacingBetweenCards) {\n spacingBetweenCards = maxSpacingBetweenCards;\n }\n uw += spacingBetweenCards * (numCards - 1);\n\n let x = 0;\n if (this.align === \"center\" && uw < handWidth) {\n x = (handWidth - uw) / 2;\n }\n if (this.reverse) {\n x = handWidth - x;\n }\n\n for (const i of eRange(numCards)) {\n const layoutChild = this.children[i] as unknown as LayoutChild;\n\n // Ensure this card is not hidden at the bottom of a play stack.\n layoutChild.show();\n\n if (layoutChild.height() <= 0) {\n continue;\n }\n\n const scale = handHeight / layoutChild.height();\n\n if (layoutChild.tween !== null) {\n layoutChild.tween.destroy();\n layoutChild.tween = null;\n }\n\n const newX = x - (this.reverse ? scale * layoutChild.width() : 0);\n if (globals.animateFast) {\n // Immediately set the card in place at the new location.\n layoutChild.x(newX);\n layoutChild.y(0);\n layoutChild.scaleX(scale);\n layoutChild.scaleY(scale);\n layoutChild.rotation(0);\n layoutChild.opacity(1);\n layoutChild.checkSetDraggable();\n layoutChild.card.setRaiseAndShadowOffset();\n layoutChild.doMisplayAnimation = false;\n } else {\n // Animate the card going:\n // - from the deck to a player's hand (or vice versa)\n // - or leaving the hand to the discard pile (or vice versa)\n\n // Also, animate the rest of the cards sliding over.\n layoutChild.card.startedTweening();\n layoutChild.card.setRaiseAndShadowOffset();\n\n // eslint-disable-next-line func-style\n const animateToLayout = () => {\n animate(\n layoutChild,\n {\n duration: CARD_ANIMATION_LENGTH_SECONDS,\n x: newX,\n y: 0,\n scale,\n rotation: 0,\n opacity: 1,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n easing: Konva.Easings.EaseOut,\n onFinish: () => {\n layoutChild.card.finishedTweening();\n layoutChild.checkSetDraggable();\n },\n },\n !globals.options.speedrun,\n );\n };\n\n if (layoutChild.doMisplayAnimation) {\n // If this card just misplayed, do a special animation.\n layoutChild.doMisplayAnimation = false;\n\n const suit =\n globals.variant.suits[layoutChild.card.state.suitIndex!]!;\n const playStack = globals.elements.playStacks.get(suit)!;\n const pos = this.getAbsolutePosition();\n const playStackPos = playStack.getAbsolutePosition();\n\n animate(\n layoutChild,\n {\n duration: CARD_ANIMATION_LENGTH_SECONDS,\n x: playStackPos.x - pos.x,\n y: playStackPos.y - pos.y,\n scale: (playStack.height() * scale) / handHeight,\n rotation: 0,\n opacity: 1,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n easing: Konva.Easings.EaseOut,\n onFinish: () => {\n layoutChild.rotation(360);\n animateToLayout();\n },\n },\n !globals.options.speedrun,\n );\n } else {\n animateToLayout();\n }\n }\n\n x +=\n (scale * layoutChild.width() + spacingBetweenCards) *\n (this.reverse ? -1 : 1);\n }\n }\n\n checkSetDraggableAll(): void {\n this.children.each((layoutChild) => {\n (layoutChild as unknown as LayoutChild).checkSetDraggable();\n });\n }\n\n getAbsoluteCenterPos(): { x: number; y: number } {\n const pos = this.getAbsolutePosition(); // The top-left-hand corner\n\n const w = this.width();\n const h = this.height();\n\n // The rotation comes from Konva in clockwise degrees but we need to convert it to\n // counter-clockwise radians.\n const rot = (-this.origRotation / 180) * Math.PI;\n\n pos.x += (w / 2) * Math.cos(rot);\n pos.y -= (w / 2) * Math.sin(rot);\n pos.x += (h / 2) * Math.sin(rot); // sin(x) = cos(x - (PI / 2))\n pos.y -= (h / 2) * -Math.cos(rot); // -cos(x) = sin(x - (PI / 2))\n\n return pos;\n }\n\n setEmpathy(enabled: boolean): void {\n if (enabled === this.empathy) {\n // No change\n return;\n }\n\n this.empathy = enabled;\n this.children.each((layoutChild) => {\n const card = layoutChild.children[0] as HanabiCard;\n\n // As a sanity check, make sure that the card exists. (It can be undefined sometimes when\n // rewinding.)\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (card === undefined) {\n return;\n }\n\n card.setEmpathy(enabled);\n });\n }\n}\n", "// ---------------------------\n// Default qualities of a card\n// ---------------------------\n\nexport const CARD_W = 286;\nexport const CARD_H = 406;\nexport const CARD_FADE = 0.6;\nexport const STRIKE_FADE = 0.175;\n\n/** Based on the card's width, but used for both the icon's width and height. */\nexport const SMALL_ICON_SIZE = 0.2 * CARD_W;\n\nexport const TOP_LEFT_X = 0.05 * CARD_W;\nexport const TOP_LEFT_Y = 0.05 * CARD_H;\nexport const BOTTOM_LEFT_X = 0.06 * CARD_W;\nexport const BOTTOM_LEFT_Y = 0.82 * CARD_H;\n\n// ------\n// Colors\n// ------\n\n/** Off-white */\nexport const LABEL_COLOR = \"#d8d5ef\";\n\nexport const ARROW_COLOR = {\n /** White */\n DEFAULT: \"#ffffff\",\n\n /** Dark gray */\n RETOUCHED: \"#737373\",\n\n /** Yellow */\n HIGHLIGHT: \"#ffdf00\",\n} as const;\n\nexport const CLUED_COLOR = \"orange\";\n\n/** White with a yellow tint. */\nexport const CHOP_MOVE_COLOR = \"#fffce6\";\n\nexport const FINESSE_COLOR = \"aqua\";\nexport const OFF_BLACK = \"#0d0d0d\";\n\n// --------------\n// Time constants\n// --------------\n\nexport const CARD_ANIMATION_LENGTH_SECONDS = 0.5;\nexport const PREPLAY_DELAY_MILLISECONDS = 75;\nexport const DOUBLE_TAP_DELAY_SECONDS = 0.5;\n", "import Konva from \"konva\";\nimport type * as KonvaBaseLayer from \"konva/types/BaseLayer\";\nimport { globals } from \"./UIGlobals\";\n\nexport function drawLayer(node: Konva.Node): void {\n const layer = node.getLayer() as KonvaBaseLayer.BaseLayer | null;\n if (layer !== null) {\n layer.batchDraw();\n }\n}\n\ninterface CanTween {\n tween: Konva.Tween | null;\n}\n\ninterface TweenConfig {\n duration?: number;\n x?: number;\n y?: number;\n offsetX?: number;\n offsetY?: number;\n scale?: number;\n rotation?: number;\n opacity?: number;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n easing?: (t: any, b: any, c: any, d: any) => any;\n onFinish?: () => void;\n}\n\nexport function animate(\n node: Konva.Node & CanTween,\n params: TweenConfig,\n interactive = false,\n fast: boolean = globals.animateFast,\n): void {\n // Before animating, ensure that the node is visible (since some elements might be previously\n // hidden).\n node.show();\n\n if (node.tween !== null) {\n node.tween.destroy();\n node.tween = null;\n }\n\n if (fast || params.duration === 0) {\n if (params.x !== undefined) {\n node.x(params.x);\n }\n if (params.y !== undefined) {\n node.y(params.y);\n }\n if (params.offsetX !== undefined) {\n node.offsetX(params.offsetX);\n }\n if (params.offsetY !== undefined) {\n node.offsetY(params.offsetY);\n }\n if (params.scale !== undefined) {\n node.scaleX(params.scale);\n node.scaleY(params.scale);\n }\n if (params.rotation !== undefined) {\n node.rotation(params.rotation);\n }\n if (params.opacity !== undefined) {\n node.opacity(params.opacity);\n }\n if (params.onFinish !== undefined) {\n params.onFinish();\n }\n\n // If interactive is true, the node should be listening in its default state. Ensure that the\n // node is listening. (It might have had the listening disabled when it started to play an\n // animation but never ended up finishing the animation.)\n if (interactive) {\n node.listening(true);\n }\n } else {\n // The Konva TypeScript definitions specify a Tween config as \"any\".\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const config: any = {\n node,\n onFinish: () => {\n // If the game is restarted in the middle of an animation, it is possible to get here with\n // something important being undefined.\n if (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n node === undefined ||\n globals.store === null\n ) {\n return;\n }\n\n if (node.tween !== null) {\n node.tween.destroy();\n node.tween = null;\n }\n\n // Now that the animation is finished, we can re-enable listening (see below explanation).\n if (interactive) {\n node.listening(true);\n }\n\n if (params.onFinish !== undefined) {\n params.onFinish();\n }\n },\n };\n\n // The Konva object is weakly typed, and expects the keys to be there or not if there is a\n // desire to change the value. Therefore, disable the linter rule for this block.\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n if (params.duration !== undefined) {\n config.duration = params.duration;\n }\n if (params.x !== undefined) {\n config.x = params.x;\n }\n if (params.y !== undefined) {\n config.y = params.y;\n }\n if (params.offsetX !== undefined) {\n config.offsetX = params.offsetX;\n }\n if (params.offsetY !== undefined) {\n config.offsetY = params.offsetY;\n }\n if (params.scale !== undefined) {\n config.scaleX = params.scale;\n config.scaleY = params.scale;\n }\n if (params.rotation !== undefined) {\n config.rotation = params.rotation;\n }\n if (params.opacity !== undefined) {\n config.opacity = params.opacity;\n }\n if (params.easing !== undefined) {\n config.easing = params.easing;\n }\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n\n // Temporarily disable listening on this element while it is animating (for performance reasons\n // and to prevent players from accidentally clicking on it).\n if (interactive) {\n node.listening(false);\n }\n\n node.tween = new Konva.Tween(config).play();\n }\n}\n", "import type {\n CardIdentity,\n CardNote,\n CardOrder,\n CardState,\n Color,\n NumPlayers,\n Rank,\n Suit,\n SuitIndex,\n SuitRankTuple,\n Variant,\n} from \"@hanabi-live/game\";\nimport {\n CardStatus,\n StackDirection,\n canCardPossiblyBeFromEmpathy,\n getInitialCardState,\n getSuit,\n getSuitAbbreviationForVariant,\n hasReversedSuits,\n isCardClued,\n isCardDiscarded,\n isCardPlayed,\n} from \"@hanabi-live/game\";\nimport { assertDefined, assertNotNull, iRange } from \"complete-common\";\nimport Konva from \"konva\";\nimport { includes } from \"lodash\";\nimport { noteEqual, noteHasMeaning, parseNote } from \"../reducers/notesReducer\";\nimport type { UICard } from \"../types/UICard\";\nimport * as HanabiCardInit from \"./HanabiCardInit\";\nimport * as HanabiCardMouse from \"./HanabiCardMouse\";\nimport { LayoutChild } from \"./LayoutChild\";\nimport { globals } from \"./UIGlobals\";\nimport {\n CARD_ANIMATION_LENGTH_SECONDS,\n CARD_FADE,\n CARD_H,\n CARD_W,\n} from \"./constants\";\nimport type { NodeWithTooltip } from \"./controls/NodeWithTooltip\";\nimport type { NoteIndicator } from \"./controls/NoteIndicator\";\nimport { RankPip } from \"./controls/RankPip\";\nimport { suitIndexToSuit } from \"./convert\";\nimport type { CursorType } from \"./cursor\";\nimport {\n CARD_IMAGE_STACK_BASE_RANK_NAME,\n CARD_IMAGE_UNKNOWN_CARD_RANK_NAME,\n} from \"./drawCards\";\nimport { animate } from \"./konvaHelpers\";\nimport {\n checkNoteImpossibility,\n getRankFromNote,\n getSuitIndexFromNote,\n possibleCardsFromNoteAndClues,\n} from \"./noteCheckImpossibility\";\nimport * as notes from \"./notes\";\n\nenum PipState {\n Hidden,\n Eliminated,\n Visible,\n}\n\nconst DECK_BACK_IMAGE = \"deck-back\";\nconst UNKNOWN_SUIT = getSuit(\"Unknown\");\n\n/** Represents a single card. It has a `LayoutChild` parent. */\nexport class HanabiCard extends Konva.Group implements NodeWithTooltip, UICard {\n // ---------------\n // Class variables\n // ---------------\n\n private readonly variant: Variant;\n\n tween: Konva.Tween | null = null; // Required in order to be able to cancel animations\n private tweenCallbacks: Array<() => void> = [];\n cursor: CursorType = \"default\";\n private empathy = false;\n dragging = false;\n wasRecentlyTapped = false;\n touchstartTimeout: ReturnType | null = null;\n\n isStackBase: boolean;\n\n private readonly bare: Konva.Image;\n private bareName = \"\";\n\n private readonly cluedBorder: Konva.Group;\n private readonly chopMoveBorder: Konva.Group;\n private readonly finesseBorder: Konva.Group;\n\n private readonly suitPips: Konva.Group;\n private readonly rankPips: Konva.Group;\n private readonly suitPipsMap: Map;\n private readonly suitPipsPositiveMap: Map;\n private readonly suitPipsXMap: Map;\n private readonly rankPipsMap: Map;\n private readonly rankPipsXMap: Map;\n private readonly criticalIndicator: Konva.Image;\n private readonly arrow: Konva.Group | null = null;\n private readonly arrowBase: Konva.Arrow | null = null;\n\n noteIndicator: NoteIndicator;\n private readonly trashcan: Konva.Image;\n private readonly questionMark: Konva.Image;\n private readonly exclamationMark: Konva.Image;\n private readonly wrench: Konva.Image;\n private readonly ddaIndicatorTop: Konva.Image;\n private readonly ddaIndicatorBottom: Konva.Image;\n private readonly trashMiniIndicatorTop: Konva.Image;\n private readonly trashMiniIndicatorBottom: Konva.Image;\n\n // -------------------\n // Getters and setters\n // -------------------\n\n private readonly _layout: LayoutChild;\n get layout(): LayoutChild {\n return this._layout;\n }\n\n // HACK: this is temporary to figure out what needs to be converted to reactive. In the end, the\n // state should not be exposed by the UI in any form and nobody should depend on the HanabiCard UI\n // state.\n private _state: CardState;\n get state(): CardState {\n return (\n globals.store?.getState().visibleState?.deck[this._state.order] ??\n this._state\n );\n }\n\n set state(state: CardState) {\n this._state = state;\n }\n\n get note(): CardNote {\n return globals.state.notes.ourNotes[this.state.order]!;\n }\n\n private _tweening = false;\n get tweening(): boolean {\n return this._tweening;\n }\n\n get tooltipName(): string {\n return `card-${this.state.order}`;\n }\n\n private _visibleSuitIndex: SuitIndex | null = null;\n get visibleSuitIndex(): SuitIndex | null {\n return this._visibleSuitIndex;\n }\n\n private _visibleRank: Rank | null = null;\n get visibleRank(): Rank | null {\n return this._visibleRank;\n }\n\n // -----------\n // Constructor\n // -----------\n\n constructor(\n order: CardOrder,\n suitIndex: SuitIndex | null,\n rank: Rank | null,\n isStackBase: boolean,\n variant: Variant,\n numPlayers: NumPlayers,\n ) {\n super();\n this.listening(true);\n this.variant = variant;\n\n // Cards should start off with a constant width and height.\n this.width(CARD_W);\n this.height(CARD_H);\n this.x(CARD_W / 2);\n this.y(CARD_H / 2);\n this.offset({\n x: 0.5 * CARD_W,\n y: 0.5 * CARD_H,\n });\n\n // Order is defined upon first initialization.\n const initialState = getInitialCardState(order, this.variant, numPlayers);\n this._state = {\n ...initialState,\n suitIndex, // Only initially specified for stack bases.\n };\n\n this.isStackBase = isStackBase;\n\n // ---------------------------------------\n // Initialize various elements of the card\n // ---------------------------------------\n\n this.bare = HanabiCardInit.image(() => this.bareName);\n this.add(this.bare);\n\n this.cluedBorder = HanabiCardInit.cluedBorder();\n this.add(this.cluedBorder);\n this.finesseBorder = HanabiCardInit.finesseBorder();\n this.add(this.finesseBorder);\n this.chopMoveBorder = HanabiCardInit.chopMoveBorder();\n this.add(this.chopMoveBorder);\n\n const pips = HanabiCardInit.pips(this.variant);\n this.suitPipsMap = pips.suitPipsMap;\n this.suitPipsPositiveMap = pips.suitPipsPositiveMap;\n this.suitPipsXMap = pips.suitPipsXMap;\n this.rankPipsMap = pips.rankPipsMap;\n this.rankPipsXMap = pips.rankPipsXMap;\n this.suitPips = pips.suitPips;\n this.rankPips = pips.rankPips;\n this.add(this.suitPips);\n this.add(this.rankPips);\n\n this.criticalIndicator = HanabiCardInit.criticalIndicator(\n this.variant.offsetCornerElements,\n );\n this.add(this.criticalIndicator);\n\n const arrowElements = HanabiCardInit.directionArrow(this.variant);\n if (arrowElements !== null) {\n this.arrow = arrowElements.arrow;\n this.arrowBase = arrowElements.arrowBase;\n this.add(this.arrow);\n }\n\n this.noteIndicator = HanabiCardInit.note(\n this.variant.offsetCornerElements,\n () => this.shouldShowNoteIndicator(),\n );\n this.add(this.noteIndicator);\n\n this.trashcan = HanabiCardInit.trashcan();\n this.add(this.trashcan);\n this.questionMark = HanabiCardInit.questionMark();\n this.add(this.questionMark);\n this.exclamationMark = HanabiCardInit.exclamationMark();\n this.add(this.exclamationMark);\n this.wrench = HanabiCardInit.wrench();\n this.add(this.wrench);\n this.ddaIndicatorTop = HanabiCardInit.ddaIndicatorTop();\n this.add(this.ddaIndicatorTop);\n this.ddaIndicatorBottom = HanabiCardInit.ddaIndicatorBottom(\n this.variant.offsetCornerElements,\n );\n this.add(this.ddaIndicatorBottom);\n this.trashMiniIndicatorTop = HanabiCardInit.trashMiniIndicatorTop();\n this.add(this.trashMiniIndicatorTop);\n this.trashMiniIndicatorBottom = HanabiCardInit.trashMiniIndicatorBottom(\n this.variant.offsetCornerElements,\n );\n this.add(this.trashMiniIndicatorBottom);\n\n // Register mouse events for hovering, clicking, etc.\n this.registerMouseHandlers();\n\n // Add a parent layout.\n this._layout = new LayoutChild(this);\n\n // Initialize the bare image.\n if (suitIndex !== null || rank !== null) {\n this.setBareImage();\n }\n }\n\n registerMouseHandlers = HanabiCardMouse.registerMouseHandlers;\n setCursor = HanabiCardMouse.setCursor;\n\n // -------------\n // Tween methods\n // -------------\n\n startedTweening(): void {\n this._tweening = true;\n\n if (this.isListening() === false) {\n // HACK: since Konva doesn't propagate listening hierarchically until v7, stop the image from\n // listening.\n this.bare.listening(false);\n }\n }\n\n finishedTweening(): void {\n this._tweening = false;\n\n if (this.isListening() === true) {\n // HACK: since Konva doesn't propagate listening hierarchically until v7, stop the image from\n // listening.\n this.bare.listening(true);\n }\n\n for (const callback of this.tweenCallbacks) {\n callback();\n }\n this.tweenCallbacks = [];\n }\n\n waitForTweening(callback: () => void): void {\n if (!this.tweening) {\n callback();\n return;\n }\n this.tweenCallbacks.push(callback);\n }\n\n // ----------------------------------------------\n // Image methods (for the bare image on the card)\n // ----------------------------------------------\n\n /**\n * Adjusts the \"bare\" image of the card (e.g. the HTML5 canvas drawing from\n * \"globals.scaledCardImages\"). Additionally, it toggles various card elements (pips, shadows,\n * fading, etc.).\n */\n setBareImage(): void {\n const cardIdentity = this.getCardIdentity();\n\n const suitToShow = this.getSuitToShow(cardIdentity);\n const rankToShow = this.getRankToShow(cardIdentity);\n\n // Cards that are morphed to be blank should not be draggable\n const morphedBlank = this.isMorphedBlank();\n this.layout.blank = morphedBlank; // Also let the LayoutChild know about it\n this.layout.checkSetDraggable();\n\n // Set the visible state. (This must be after the morphed blank check.)\n if (suitToShow === null) {\n this._visibleSuitIndex = null;\n } else {\n const suitIndexToShow = this.variant.suits.indexOf(suitToShow) as\n | SuitIndex\n | -1;\n this._visibleSuitIndex = suitIndexToShow === -1 ? null : suitIndexToShow;\n }\n this._visibleRank = rankToShow;\n\n // Setting \"this.bareName\" will automatically update how the card appears the next time that the\n // \"card\" layer is drawn.\n this.bareName = this.getBareName(morphedBlank, suitToShow, rankToShow);\n\n // Show or hide pips, shadow, etc.\n this.showCardElements(morphedBlank, suitToShow, rankToShow);\n\n // Set fading, criticality, etc.\n this.setStatus();\n\n globals.layers.card.batchDraw();\n }\n\n /**\n * We may know the identity through normal means (e.g. it is a card that is currently in someone\n * else's hand). We may also know the identity from a future game state (e.g. it is a card in our\n * hand that we have learned about in the future).\n */\n getCardIdentity(): CardIdentity {\n // First, check if we have an alternate identity (e.g. blank or morphed) for this card.\n if (this.isMorphed()) {\n return this.getMorph()!;\n }\n\n // We do not track the card identities for the stack bases. (For stack bases, the suit and rank\n // is always baked into the state from the get-go.)\n if (this.isStackBase) {\n return {\n suitIndex: this.state.suitIndex,\n rank: this.state.rank,\n };\n }\n\n // Card identities are stored on the global state for convenience.\n const cardIdentity = globals.state.cardIdentities[this.state.order];\n assertDefined(\n cardIdentity,\n `Failed to get the previously known card identity for card: ${this.state.order}`,\n );\n\n return cardIdentity;\n }\n\n getSuitToShow(cardIdentity: CardIdentity): Suit | null {\n // If we are in Empathy mode, only show the suit if there is only one possibility left.\n if (this.empathy) {\n if (this.state.suitIndex !== null && this.state.suitDetermined) {\n return this.variant.suits[this.state.suitIndex] ?? null;\n }\n\n if (this.isMorphed()) {\n const morphedIdentity = this.getMorph()!;\n if (\n morphedIdentity.rank !== null &&\n morphedIdentity.suitIndex !== null\n ) {\n return suitIndexToSuit(morphedIdentity.suitIndex, this.variant)!;\n }\n }\n\n return null;\n }\n\n // Show the suit if it is known.\n if (cardIdentity.suitIndex !== null) {\n const suit = suitIndexToSuit(cardIdentity.suitIndex, this.variant);\n return suit ?? null;\n }\n\n // If we have a note on the card and it only provides possibilities of the same suit, return\n // that suit.\n const suitIndexFromNote = getSuitIndexFromNote(this.note, this.state);\n if (suitIndexFromNote !== null) {\n return this.variant.suits[suitIndexFromNote]!;\n }\n\n return null;\n }\n\n getRankToShow(cardIdentity: CardIdentity): Rank | null {\n // If we are in Empathy mode, only show the rank if there is only one possibility left.\n if (this.empathy) {\n if (this.state.rankDetermined && this.state.rank !== null) {\n return this.state.rank;\n }\n\n if (this.isMorphed()) {\n const morphedIdentity = this.getMorph()!;\n if (\n morphedIdentity.rank !== null &&\n morphedIdentity.suitIndex !== null\n ) {\n return morphedIdentity.rank;\n }\n }\n\n return null;\n }\n\n // If we have a note on the card and it only provides possibilities of the same rank, show that\n // rank.\n const rankFromNote = getRankFromNote(this.note, this.state);\n\n // For stack bases in ongoing games, we want notes to have precedence over the real identity so\n // that players can morph the stack in \"Throw It in a Hole\" variants.\n if (\n rankFromNote !== undefined &&\n this.isStackBase &&\n !globals.state.finished\n ) {\n return rankFromNote;\n }\n\n // Show the rank if it is known.\n if (cardIdentity.rank !== null) {\n return cardIdentity.rank;\n }\n\n // If we have a note identity on the card, show the rank corresponding to the note.\n if (rankFromNote !== undefined) {\n return rankFromNote;\n }\n\n return null;\n }\n\n isMorphed(): boolean {\n if (globals.state.replay.hypothetical === null) {\n return false;\n }\n\n const morphedIdentity = this.getMorph();\n return morphedIdentity !== undefined;\n }\n\n getMorph(): CardIdentity | undefined {\n return globals.state.replay.hypothetical?.morphedIdentities[\n this.state.order\n ];\n }\n\n getMorphedIdentity(): CardIdentity {\n if (this.isMorphed()) {\n return this.getMorph()!;\n }\n\n if (globals.state.replay.hypothetical !== null && globals.state.playing) {\n const possibilities = possibleCardsFromNoteAndClues(\n this.note,\n this.state,\n );\n\n if (possibilities.length === 1) {\n const possibility = possibilities[0]!;\n const [suitIndex, rank] = possibility;\n return { suitIndex, rank };\n }\n }\n\n // We do not track the card identities for the stack bases. (For stack bases, the suit and rank\n // is always baked into the state from the get-go.)\n if (this.isStackBase) {\n return this.state;\n }\n\n return globals.state.cardIdentities[this.state.order]!;\n }\n\n getMorphedPossibilities(): readonly SuitRankTuple[] {\n const { suitIndex, rank } = this.getMorphedIdentity();\n if (suitIndex !== null && rank !== null) {\n return [[suitIndex, rank]];\n }\n\n const possibleCardsWithoutObservation =\n globals.state.replay.hypothetical !== null && globals.state.playing\n ? possibleCardsFromNoteAndClues(this.note, this.state)\n : this.state.possibleCardsFromClues;\n return possibleCardsWithoutObservation.filter(([suitIndexB, rankB]) =>\n this.state.possibleCards.some(\n ([suitIndexC, rankC]) => suitIndexB === suitIndexC && rankB === rankC,\n ),\n );\n }\n\n isMorphedBlank(): boolean {\n if (!this.isMorphed()) {\n return false;\n }\n\n const morphedIdentity = this.getMorph()!;\n return morphedIdentity.rank === null && morphedIdentity.suitIndex === null;\n }\n\n /**\n * Used to compute the card's \"bare name\", which is used to render the correct image (e.g.\n * \"card-${suit}-${bareNameRank}\"). The \"card\" image when nothing is on the stacks has the special\n * name \"card-${suit}-${CARD_IMAGE_STACK_BASE_RANK_NAME}\".\n */\n getBareName(\n morphedBlank: boolean,\n suitToShow: Suit | null,\n rankToShow: Rank | null,\n ): string {\n // If a card is morphed to a null identity, the card should appear blank no matter what.\n if (morphedBlank) {\n return DECK_BACK_IMAGE;\n }\n\n // If a card has a \"blank\" note on it, the user wants to force the card to appear blank.\n if (\n this.note.blank &&\n !this.empathy &&\n !isCardPlayed(this.state) &&\n !isCardDiscarded(this.state)\n ) {\n return DECK_BACK_IMAGE;\n }\n\n // In Real-Life mode, always show the vanilla card back if the card is not fully revealed.\n if (\n globals.lobby.settings.realLifeMode &&\n (suitToShow === null || rankToShow === null) &&\n !this.isStackBase\n ) {\n return DECK_BACK_IMAGE;\n }\n\n const bareNameSuit = suitToShow?.name ?? UNKNOWN_SUIT.name;\n const bareNameRank = this.getBareNameRank(rankToShow);\n\n return `card-${bareNameSuit}-${bareNameRank}`;\n }\n\n getBareNameRank(rankToShow: Rank | null): string {\n // If a non-null rank is provided, it should take the highest precedence. (We want players to\n // make notes on the stack bases in \"Throw it in a Hole\" variants.)\n if (rankToShow !== null) {\n return rankToShow.toString();\n }\n\n if (this.isStackBase) {\n return CARD_IMAGE_STACK_BASE_RANK_NAME;\n }\n\n return CARD_IMAGE_UNKNOWN_CARD_RANK_NAME;\n }\n\n // --------------\n // Border methods\n // --------------\n\n setBorder(): void {\n this.cluedBorder.visible(this.shouldShowClueBorder());\n this.chopMoveBorder.visible(this.shouldShowChopMoveBorder());\n this.finesseBorder.visible(this.shouldShowFinesseBorder());\n }\n\n private shouldShowAnyBorder() {\n return !isCardPlayed(this.state) && !isCardDiscarded(this.state);\n }\n\n private shouldShowClueBorder() {\n return (\n this.shouldShowAnyBorder() &&\n !this.note.unclued &&\n (isCardClued(this.state) || this.note.clued)\n );\n }\n\n private shouldShowChopMoveBorder() {\n return (\n this.note.chopMoved &&\n this.shouldShowAnyBorder() &&\n // The clue border and the finesse border have precedence over the chop move border\n !this.shouldShowClueBorder() &&\n !this.shouldShowFinesseBorder() &&\n !globals.state.finished\n );\n }\n\n private shouldShowFinesseBorder() {\n return (\n this.note.finessed &&\n this.shouldShowAnyBorder() &&\n // The clue border has precedence over the finesse border.\n !this.shouldShowClueBorder() &&\n !globals.state.finished\n );\n }\n\n // -----------\n // Pip methods\n // -----------\n\n updatePips(): void {\n const suitPipStates: PipState[] = this.variant.suits.map(\n () => PipState.Hidden,\n );\n\n /** This is a sparse array indexed by rank. */\n const rankPipStates: PipState[] = [];\n\n // Default all rank pips to hidden.\n for (const rank of this.variant.ranks) {\n rankPipStates[rank] = PipState.Hidden;\n }\n\n const possibilities = possibleCardsFromNoteAndClues(this.note, this.state);\n const ignoreNote = this.empathy;\n const possibleCardsFromClues = ignoreNote\n ? this.state.possibleCardsFromClues\n : possibilities;\n const possibleCards = this.empathy\n ? this.state.possibleCardsForEmpathy\n : this.state.possibleCards;\n\n // We look through each card that should have a visible pip (eliminated or not).\n for (const [suitIndex, rank] of possibleCardsFromClues) {\n // If the card is impossible, eliminate it.\n const pipState = possibleCards.some(\n ([s, r]) => s === suitIndex && r === rank,\n )\n ? PipState.Visible\n : PipState.Eliminated;\n\n // If the suit or rank became visible (is possible), do not overwrite it.\n suitPipStates[suitIndex] =\n suitPipStates[suitIndex] === PipState.Visible\n ? PipState.Visible\n : pipState;\n rankPipStates[rank] =\n rankPipStates[rank] === PipState.Visible ? PipState.Visible : pipState;\n }\n\n for (const [suitIndex, pipState] of suitPipStates.entries()) {\n const pip = this.suitPipsMap.get(suitIndex);\n const pipPositive = this.suitPipsPositiveMap.get(suitIndex);\n const x = this.suitPipsXMap.get(suitIndex);\n const suit = this.variant.suits[suitIndex]!;\n const possiblePositiveClues = this.state.positiveColorClues.filter(\n (color) => color.name === suit.name,\n );\n const hasPositiveColorClue = possiblePositiveClues.length > 0;\n if (pip !== undefined && x !== undefined) {\n updatePip(pipState, hasPositiveColorClue, pip, x, pipPositive);\n }\n }\n\n for (const [i, pipState] of rankPipStates.entries()) {\n const rank = i as Rank;\n const pip = this.rankPipsMap.get(rank);\n const x = this.rankPipsXMap.get(rank);\n if (pip !== undefined && x !== undefined) {\n const hasPositiveRankClue = includes(\n this.state.positiveRankClues,\n rank,\n );\n updatePip(pipState, hasPositiveRankClue, pip, x);\n }\n }\n }\n\n // --------------------------\n // Other card element methods\n // --------------------------\n\n showCardElements(\n morphedBlank: boolean,\n suitToShow: Suit | null,\n rankToShow: Rank | null,\n ): void {\n // Show or hide the pips.\n if (globals.lobby.settings.realLifeMode || morphedBlank) {\n this.suitPips.hide();\n this.rankPips.hide();\n } else {\n const suitUnknown = suitToShow === null;\n const rankUnknown = rankToShow === null;\n this.suitPips.visible(suitUnknown && !this.isStackBase);\n this.rankPips.visible(rankUnknown && !this.isStackBase);\n }\n\n // Show or hide the \"question mark\" image.\n this.questionMark.visible(\n this.note.questionMark &&\n !this.empathy &&\n !isCardPlayed(this.state) &&\n !isCardDiscarded(this.state) &&\n !globals.state.finished,\n );\n\n // Show or hide the \"exclamation mark\" image.\n this.exclamationMark.visible(\n this.note.exclamationMark &&\n !this.empathy &&\n !isCardPlayed(this.state) &&\n !isCardDiscarded(this.state) &&\n !globals.state.finished,\n );\n\n // Show or hide the \"trash\" image.\n this.trashcan.visible(\n this.note.knownTrash &&\n !this.empathy &&\n !isCardPlayed(this.state) &&\n !isCardDiscarded(this.state) &&\n !globals.state.finished,\n );\n\n // Show or hide the \"fix\" image.\n this.wrench.visible(\n this.note.needsFix &&\n !this.empathy &&\n !isCardPlayed(this.state) &&\n !isCardDiscarded(this.state) &&\n !globals.state.finished,\n );\n\n // Show or hide the direction arrows.\n if (this.arrow !== null && globals.state.visibleState !== null) {\n if (this.visibleSuitIndex === null || this.isStackBase) {\n this.arrow.hide();\n } else {\n this.setDirectionArrow(\n this.visibleSuitIndex,\n globals.state.visibleState.playStackDirections[\n this.visibleSuitIndex\n ]!,\n );\n }\n }\n\n // Show or hide the shadow on the card.\n this.bare.shadowEnabled(!this.isStackBase && !globals.options.speedrun);\n }\n\n // Show or hide the direction arrow (for specific variants).\n setDirectionArrow(suitIndex: SuitIndex, direction: StackDirection): void {\n if (!hasReversedSuits(this.variant)) {\n return;\n }\n\n const suit = this.variant.suits[suitIndex]!;\n\n let shouldShowArrow: boolean;\n if (this.variant.upOrDown) {\n // In \"Up or Down\" variants, the arrow should be shown when the stack direction is determined.\n // (And the arrow should be cleared when the stack is finished.)\n shouldShowArrow =\n direction === StackDirection.Up || direction === StackDirection.Down;\n } else if (suit.reversed) {\n // In variants with a reversed suit, the arrow should always be shown on the reversed suit.\n shouldShowArrow = true;\n } else {\n shouldShowArrow = false;\n }\n\n this.arrow!.visible(shouldShowArrow);\n if (!shouldShowArrow) {\n return;\n }\n\n this.arrow!.rotation(direction === StackDirection.Up ? 180 : 0);\n this.arrowBase!.stroke(suit.fill);\n if (suit.fill === \"multi\") {\n // We can't use a fill gradient because the \"fill\" is actually a big stroke. (The Konva arrow\n // object is not a shape, but instead a very thick line.) Instead, just use the the first\n // gradient color.\n this.arrowBase!.stroke(suit.fillColors[0]!);\n }\n if (this.rankPips.isVisible() === true) {\n this.setArrowMiddleRight();\n } else {\n this.setArrowBottomRight();\n }\n }\n\n private readonly setArrowMiddleRight = () => {\n this.arrow!.y(0.5 * CARD_H);\n };\n\n private readonly setArrowBottomRight = () => {\n this.arrow!.y(0.79 * CARD_H);\n };\n\n setStatus(): void {\n const { visibleState } = globals.state;\n if (visibleState === null) {\n return;\n }\n\n // Do not show any status in real life mode.\n if (globals.lobby.settings.realLifeMode) {\n return;\n }\n\n const status =\n this.visibleSuitIndex === null || this.visibleRank === null\n ? CardStatus.NeedsToBePlayed // Default status; not faded and not critical.\n : visibleState.cardStatus[this.visibleSuitIndex][this.visibleRank];\n\n this.setFade(status === CardStatus.Trash);\n this.setCritical(status === CardStatus.Critical);\n\n const isKnownTrash =\n !isCardPlayed(this.state) &&\n !isCardDiscarded(this.state) &&\n this.state.isKnownTrashFromEmpathy;\n this.setTrashMiniIndicator(isKnownTrash);\n\n this.setDDA(\n this.state.inDoubleDiscard &&\n status !== CardStatus.Critical &&\n !isKnownTrash,\n );\n }\n\n private setTrashMiniIndicator(isTrash: boolean) {\n const known = this.visibleRank !== null;\n if (isTrash && this.trashcan.isVisible() === false) {\n this.trashMiniIndicatorTop.visible(!known);\n this.trashMiniIndicatorBottom.visible(known);\n } else {\n this.trashMiniIndicatorTop.visible(false);\n this.trashMiniIndicatorBottom.visible(false);\n }\n }\n\n private setDDA(dda: boolean) {\n const visible = this.shouldSetDDA(dda);\n const known = this.visibleRank !== null;\n if (visible) {\n this.ddaIndicatorTop.visible(!known);\n this.ddaIndicatorBottom.visible(known);\n } else {\n this.ddaIndicatorTop.visible(false);\n this.ddaIndicatorBottom.visible(false);\n }\n }\n\n private shouldSetDDA(dda: boolean) {\n return (\n dda &&\n !this.shouldShowClueBorder() &&\n this.trashcan.isVisible() === false &&\n globals.lobby.settings.hyphenatedConventions &&\n !globals.metadata.hardVariant\n );\n }\n\n private setFade(isTrash: boolean) {\n const opacity = this.shouldSetFade(isTrash) ? CARD_FADE : 1;\n this.opacity(opacity);\n }\n\n private shouldSetFade(isTrash: boolean) {\n // Override any logic and always fade the card if it is explicitly marked as known trash.\n if (\n this.trashcan.isVisible() === true &&\n this.state.numPositiveClues === 0\n ) {\n return true;\n }\n\n return (\n isTrash &&\n !isCardClued(this.state) &&\n !isCardPlayed(this.state) &&\n !isCardDiscarded(this.state) &&\n !this.note.blank &&\n !this.note.chopMoved &&\n !this.variant.throwItInAHole &&\n !globals.options.speedrun\n );\n }\n\n private setCritical(critical: boolean) {\n const visible = this.shouldSetCritical(critical);\n this.criticalIndicator.visible(visible);\n }\n\n private shouldSetCritical(critical: boolean) {\n return (\n critical && !isCardPlayed(this.state) && !isCardDiscarded(this.state)\n );\n }\n\n setShadowOffset(duration = 0.05): void {\n // Shadow special effects\n const shadowOffset = this.dragging\n ? Math.floor(0.12 * CARD_W)\n : Math.floor(0.04 * CARD_W);\n if (globals.animateFast) {\n this.bare.shadowOffsetX(shadowOffset);\n this.bare.shadowOffsetY(shadowOffset);\n } else {\n this.bare.to({\n // Tween\n shadowOffsetX: shadowOffset,\n shadowOffsetY: shadowOffset,\n duration,\n });\n }\n }\n\n setRaiseAndShadowOffset(): void {\n // Early return: no parent (being removed from scene).\n if (this.layout.parent === null) {\n return;\n }\n\n const duration = 0.05;\n this.setShadowOffset(duration);\n\n // Cards are raised when:\n // - they have one or more positive clues on them\n // - they are being dragged\n const baseOffsetY = this.shouldBeRaisedFromClues()\n ? 0.6 * CARD_H\n : 0.5 * CARD_H;\n const offsetX = this.dragging ? 0.52 * CARD_W : 0.5 * CARD_W;\n const offsetY = baseOffsetY + (this.dragging ? 0.02 * CARD_H : 0);\n if (globals.animateFast) {\n this.offsetX(offsetX);\n this.offsetY(offsetY);\n } else {\n animate(\n this,\n {\n offsetX,\n offsetY,\n duration,\n },\n false,\n );\n }\n }\n\n private shouldBeRaisedFromClues() {\n // On Keldon mode, only the player should see the cards raised on their own hand.\n const shouldShowOnKeldonMode =\n this.state.location === globals.metadata.ourPlayerIndex &&\n !globals.state.finished;\n\n return (\n this.shouldShowClueBorder() &&\n !this.layout.isDragging() &&\n (!globals.lobby.settings.keldonMode || shouldShowOnKeldonMode)\n );\n }\n\n setNoteIndicator(): void {\n const visible = this.shouldShowNoteIndicator();\n this.noteIndicator.visible(visible);\n\n // Spectators\n if (\n visible &&\n !globals.state.playing &&\n !globals.state.finished &&\n !this.noteIndicator.rotated\n ) {\n this.noteIndicator.rotate(15);\n this.noteIndicator.rotated = true;\n }\n\n globals.layers.card.batchDraw();\n }\n\n shouldShowNoteIndicator(): boolean {\n // If we are a player in an ongoing game, show the note indicator if we have a non-blank note on\n // it.\n if (globals.state.playing) {\n const ourNote =\n globals.state.notes.ourNotes[this.state.order]?.text ?? \"\";\n return ourNote !== \"\";\n }\n\n // Morphed cards (in a hypothetical) should never show the note indicator.\n if (this.isMorphed()) {\n return false;\n }\n\n // We are not a player in an ongoing game. Only show the note indicator if there is one or more\n // non-blank notes.\n const note = globals.state.notes.allNotes[this.state.order];\n if (note === undefined) {\n return false;\n }\n for (const noteObject of note) {\n if (noteObject.text !== \"\") {\n return true;\n }\n }\n return false;\n }\n\n // -----------------\n // Animation methods\n // -----------------\n\n animateToPlayerHand(holder: number): void {\n this.removeLayoutChildFromParent();\n\n const hand = globals.elements.playerHands[holder];\n if (hand === undefined) {\n return;\n }\n\n // Sometimes the `LayoutChild` can get hidden if another card is on top of it in a play stack\n // and the user rewinds to the beginning of the replay.\n this.layout.visible(true);\n this.layout.rotation(hand.rotation() * -1);\n this.layout.opacity(1); // Cards can be faded in certain variants.\n\n // Add it to the player's hand (which will automatically tween the card).\n hand.addChild(this.layout);\n hand.moveToTop();\n\n // In case listening was disabled, which happens in some variants.\n this.listening(true);\n }\n\n animateToDeck(): void {\n const layoutChild = this.layout;\n if (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n layoutChild === undefined ||\n layoutChild.parent === null ||\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n layoutChild.parent === undefined ||\n globals.elements.deck === null\n ) {\n // Do not do anything on first initialization.\n return;\n }\n this.removeLayoutChildFromParent();\n\n const scale = globals.elements.deck.cardBack.width() / CARD_W;\n if (globals.animateFast) {\n layoutChild.checkSetDraggable();\n this.setRaiseAndShadowOffset();\n layoutChild.hide();\n } else {\n layoutChild.opacity(1); // Cards can be hidden in certain variants.\n const pos = layoutChild.getAbsolutePosition();\n globals.elements.deck.add(layoutChild as unknown as Konva.Group);\n layoutChild.setAbsolutePosition(pos);\n\n // Animate to the deck.\n this.startedTweening();\n animate(\n layoutChild,\n {\n duration: CARD_ANIMATION_LENGTH_SECONDS,\n x: 0,\n y: 0,\n scale,\n rotation: 0,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n easing: Konva.Easings.EaseOut,\n onFinish: () => {\n this.finishedTweening();\n layoutChild.checkSetDraggable();\n layoutChild.hide();\n this.removeLayoutChildFromParent();\n },\n },\n true,\n );\n }\n }\n\n animateToPlayStacks(): void {\n this.removeLayoutChildFromParent();\n\n // Adding the card to the play stack will automatically tween the card.\n assertNotNull(\n this.state.suitIndex,\n `Failed to animate card ${this.state.order} to the play stacks since it has a null suit index.`,\n );\n\n const suit = this.variant.suits[this.state.suitIndex];\n assertDefined(\n suit,\n `Failed to animate card ${this.state.order} to the play stacks since the suit was not found at index: ${this.state.suitIndex}`,\n );\n\n const playStack = globals.elements.playStacks.get(suit);\n assertDefined(\n playStack,\n `Failed to animate card ${this.state.order} to the play stacks since the play stack was not found for suit: ${suit.name}`,\n );\n\n playStack.addChild(this.layout);\n\n // We also want to move this stack to the top so that cards do not tween behind the other play\n // stacks when traveling to this stack.\n playStack.moveToTop();\n\n // In case listening was disabled, which happens in some variants.\n this.listening(true);\n }\n\n animateToHole(): void {\n this.removeLayoutChildFromParent();\n\n // Adding the card to the hole will automatically tween the card.\n const hole = globals.elements.playStacks.get(\"hole\")!;\n hole.addChild(this.layout);\n\n // We do not want this card to interfere with writing notes on the stack bases.\n this.listening(false);\n }\n\n animateToDiscardPile(): void {\n this.removeLayoutChildFromParent();\n\n // Adding the card to the discard pile will automatically tween the card.\n assertNotNull(\n this.state.suitIndex,\n `Failed to animate card ${this.state.order} to the discard pile since it has a null suit index.`,\n );\n\n const suit = this.variant.suits[this.state.suitIndex];\n assertDefined(\n suit,\n `Failed to animate card ${this.state.order} to the discard pile since the suit was not found at index: ${this.state.suitIndex}`,\n );\n\n const discardStack = globals.elements.discardStacks.get(suit);\n assertDefined(\n discardStack,\n `Failed to animate card ${this.state.order} to the discard pile since the discard stack was not found for suit: ${suit.name}`,\n );\n\n discardStack.addChild(this.layout);\n\n // We need to bring the discarded card to the top so that when it tweens to the discard pile, it\n // will fly on top of the play stacks and other player's hands. However, if we use\n // \"globals.elements.discardStacks.get(suit).moveToTop()\" like we do in the\n // \"animateToPlayStacks()\" function, then the discard stacks will not be arranged in the correct\n // order. Thus, move all of the discord piles to the top in order so that they will be properly\n // overlapping (the bottom-most stack should have priority over the top).\n for (const stack of globals.elements.discardStacks.values()) {\n stack.moveToTop();\n }\n\n // In case listening was disabled, which happens in some variants.\n this.listening(true);\n }\n\n // A card's parent is a LayoutChild. The parent of the LayoutChild is the location of the card\n // (e.g. a player's hand, the play stacks, etc.). The LayoutChild is removed from the parent prior\n // to the card changing location.\n removeLayoutChildFromParent(): void {\n // Ensure that empathy is disabled prior to removing a card from a player's hand.\n this.setEmpathy(false);\n\n // Remove the card from the player's hand in preparation of adding it to either the play stacks\n // or the discard pile.\n if (this.layout.parent === null) {\n // If a tween is destroyed in the middle of animation, it can cause a card to be orphaned.\n // Ensure the position is reset to the deck, if unset.\n if (this.layout.x() === 0 && this.layout.y() === 0) {\n this.moveToDeckPosition();\n }\n return;\n }\n const pos = this.layout.getAbsolutePosition();\n this.layout.rotation(this.layout.parent.rotation());\n this.layout.remove();\n this.layout.setAbsolutePosition(pos);\n }\n\n moveToDeckPosition(): void {\n const deckPos = globals.elements.deck!.cardBack.getAbsolutePosition();\n this.layout.setAbsolutePosition(deckPos);\n const scale = globals.elements.deck!.cardBack.width() / CARD_W;\n this.layout.scale({\n x: scale,\n y: scale,\n });\n }\n\n // ------------\n // Note methods\n // ------------\n\n setNote(note: string): void {\n notes.set(this.state.order, note);\n notes.update(this, note);\n if (note !== \"\") {\n notes.show(this);\n }\n }\n\n protectedNote(noteString: string): string {\n const currentNote = parseNote(this.variant, noteString);\n const bracketNoteString = `[${noteString}]`;\n // Protect notes like 'k3' whose meaning is preserved by bracketing: '[k3]'\n if (\n noteHasMeaning(this.variant, currentNote) &&\n noteEqual(currentNote, parseNote(this.variant, bracketNoteString))\n ) {\n return bracketNoteString;\n }\n return noteString;\n }\n\n updateNote(\n noteAdded: string,\n updateFunc: (a: string, b: string) => string, // how to combine last pipe section and noteAdded\n keepLast = false, // true to repeat (and add to) the last pipe section\n protect = true, // true to add [] to meaningful updates\n ): void {\n const existingNote =\n globals.state.notes.ourNotes[this.state.order]?.text ?? \"\";\n const noteText = existingNote.trim();\n const note = protect ? this.protectedNote(noteAdded) : noteAdded;\n const lastPipe = noteText.lastIndexOf(\"|\");\n const currentNoteString = noteText.slice(lastPipe + 1).trim();\n const noteString = this.protectedNote(currentNoteString);\n const currentNote = parseNote(this.variant, noteString);\n const newNoteString = updateFunc(noteString, note);\n const newNoteText = keepLast\n ? noteText\n : noteText.slice(0, Math.max(lastPipe, 0)).trim();\n // Case of: updating note does not change note meaning.\n if (\n noteHasMeaning(this.variant, parseNote(this.variant, note)) &&\n noteEqual(currentNote, parseNote(this.variant, newNoteString))\n ) {\n return;\n }\n this.setNote(\n `${newNoteText}${newNoteText === \"\" ? \"\" : \" | \"}${newNoteString}`,\n );\n }\n\n prependTurnCountNote(noteAdded: string): void {\n this.updateNote(noteAdded, (a: string, b: string): string => {\n const turnStripped = a.replace(/^#\\d+ /, \"\");\n return `${b} ${turnStripped}`;\n });\n }\n\n prependNote(noteAdded: string): void {\n this.updateNote(noteAdded, (a: string, b: string): string => `${b} ${a}`);\n }\n\n appendNoteOnly(noteAdded: string): void {\n this.updateNote(noteAdded, (a: string, b: string): string => `${a} ${b}`);\n }\n\n appendNote(noteAdded: string): void {\n this.updateNote(\n noteAdded,\n (a: string, b: string): string => `${a} ${b}`,\n true,\n );\n }\n\n checkSpecialNote(): void {\n const note = globals.state.notes.ourNotes[this.state.order]!;\n checkNoteImpossibility(this.variant, this.state, note, this.isStackBase);\n\n // Morph the card if it has an \"exact\" card note. (Or clear the bare image if the note was\n // deleted/changed.)\n this.setBareImage();\n\n // Update the pips if the note changed them.\n this.updatePips();\n\n // Since we updated the note, we might need to redraw a special border around the card.\n this.setBorder();\n\n globals.layers.card.batchDraw();\n }\n\n checkNoteDisproved(): void {\n // If we wrote a card identity note and all the possibilities for that note have been\n // eliminated, unmorph the card\n // (e.g. a note of \"r1\" is now impossible because red 1 has 0 cards left)\n if (\n this.note.possibilities.every(\n ([suitIndex, rank]) =>\n !canCardPossiblyBeFromEmpathy(this.state, suitIndex, rank),\n )\n ) {\n // Unmorph\n this.setBareImage();\n }\n }\n\n setEmpathy(enabled: boolean): void {\n if (this.empathy === enabled) {\n // No change\n return;\n }\n\n this.empathy = enabled;\n this.setBareImage();\n this.updatePips();\n }\n\n suitDescriptionNote(): string {\n const index = this.state.suitIndex ?? 0;\n const { variant } = this;\n const suit = variant.suits[index]!;\n const lines: string[] = [];\n\n if (suit.oneOfEach) {\n lines.push(\"Every card is unique.\");\n }\n\n if (suit.clueColors.length > 1) {\n const colors: string[] = [];\n for (const color of suit.clueColors) {\n colors.push(getColorHTML(color));\n }\n lines.push(`Touched by ${colors.join(\", \")} color clues`);\n }\n\n if (suit.prism) {\n const cards: string[] = [];\n\n if (variant.upOrDown) {\n const finalClueColor = variant.clueColors.at(-1);\n if (finalClueColor !== undefined) {\n const colorHTML = getColorHTML(finalClueColor);\n cards.push(`START is ${colorHTML}`);\n }\n }\n\n for (const rank of iRange(1, 5)) {\n const prismClueColorIndex = (rank - 1) % variant.clueColors.length;\n const prismClueColor = variant.clueColors[prismClueColorIndex];\n if (prismClueColor !== undefined) {\n const colorHTML = getColorHTML(prismClueColor);\n cards.push(`${rank} is ${colorHTML}`);\n }\n }\n\n lines.push(`Colors: ${cards.join(\", \")}`);\n }\n\n if (suit.allClueColors) {\n lines.push(\"Touched by every color clue.\");\n }\n\n if (suit.noClueColors) {\n lines.push(\"Not touched by any color clue.\");\n }\n\n if (suit.allClueRanks) {\n lines.push(\"Touched by every number clue.\");\n }\n\n if (suit.noClueRanks) {\n lines.push(\"Not touched by any number clue.\");\n }\n\n if (variant.specialRankDeceptive && !suit.noClueRanks) {\n const deceptiveRank = variant.clueRanks[index % variant.clueRanks.length];\n lines.push(\n `Deceptive: ${variant.specialRank} is touched by number ${deceptiveRank} clue.`,\n );\n }\n\n const abbreviation = getSuitAbbreviationForVariant(suit, variant);\n\n return `\n
\n
\n ${suit.displayName} (${abbreviation})\n
\n ${lines.join(\"
\")}\n
\n `.trim();\n }\n\n getLayoutParent(): LayoutChild {\n return this._layout;\n }\n}\n\nfunction updatePip(\n pipState: PipState,\n hasPositiveClues: boolean,\n pip: Konva.Shape | RankPip,\n x: Konva.Shape,\n pipPositive?: Konva.Shape,\n) {\n if (pipState === PipState.Hidden) {\n pip.hide();\n x.hide();\n pipPositive?.hide();\n } else {\n pip.show();\n if (hasPositiveClues && pipPositive !== undefined) {\n pip.hide();\n pipPositive.show();\n } else {\n pipPositive?.hide();\n }\n if (pipState === PipState.Eliminated) {\n x.show();\n } else {\n x.hide();\n }\n }\n\n if (pip instanceof RankPip) {\n if (hasPositiveClues && pipState !== PipState.Hidden) {\n pip.showPositiveClue();\n } else {\n pip.hidePositiveClue();\n }\n }\n}\n\nfunction getColorHTML(color: Color) {\n return `${color.name}`;\n}\n", "import type {\n CardNote,\n GameMetadata,\n NoteAction,\n Variant,\n} from \"@hanabi-live/game\";\nimport {\n BLANK_NOTES,\n CHOP_MOVED_NOTES,\n CLUED_NOTES,\n EXCLAMATION_MARK_NOTES,\n FINESSED_NOTES,\n KNOWN_TRASH_NOTES,\n NEEDS_FIX_NOTES,\n QUESTION_MARK_NOTES,\n UNCLUED_NOTES,\n getVariant,\n} from \"@hanabi-live/game\";\nimport equal from \"fast-deep-equal\";\nimport type { Draft } from \"immer\";\nimport { castDraft, produce } from \"immer\";\nimport type { NotesState } from \"../types/NotesState\";\nimport * as noteIdentity from \"./noteIdentity\";\n\nexport const notesReducer = produce(notesReducerFunction, {} as NotesState);\n\nconst emptyNotes: Map = new Map();\n\nfunction notesReducerFunction(\n notes: Draft,\n action: NoteAction,\n metadata: GameMetadata,\n playing: boolean,\n finished: boolean,\n) {\n const variant = getVariant(metadata.options.variantName);\n switch (action.type) {\n case \"setEffMod\": {\n notes.efficiencyModifier = action.mod;\n break;\n }\n\n case \"editNote\": {\n const newNote = parseNote(variant, action.text);\n notes.ourNotes[action.order] = castDraft(newNote);\n\n if (!playing) {\n const spectatorNotes = notes.allNotes[action.order];\n if (spectatorNotes !== undefined) {\n for (const spectatorNote of spectatorNotes) {\n if (spectatorNote.name === metadata.ourUsername) {\n spectatorNote.text = action.text;\n }\n }\n }\n }\n\n break;\n }\n\n case \"noteListPlayer\": {\n for (const [i, text] of action.texts.entries()) {\n const newNote = parseNote(variant, text);\n notes.ourNotes[i] = castDraft(newNote);\n }\n break;\n }\n\n case \"receiveNote\": {\n // Add in the notes received from server.\n notes.allNotes[action.order] = castDraft(action.notes);\n break;\n }\n\n case \"noteList\": {\n // Reset any existing notes.\n for (const i of notes.allNotes.keys()) {\n notes.allNotes[i] = [];\n }\n\n // Set the new notes.\n for (const [i, noteTextList] of action.noteTextLists.entries()) {\n // If we are a spectator, copy our notes from combined list.\n const name = action.names[i];\n if (name === undefined) {\n continue;\n }\n\n const isSpectator = action.isSpectators[i];\n if (isSpectator === undefined) {\n continue;\n }\n\n if (name === metadata.ourUsername && !playing && !finished) {\n for (const [order, text] of noteTextList.entries()) {\n const newNote = parseNote(variant, text);\n notes.ourNotes[order] = castDraft(newNote);\n }\n }\n\n for (const [order, text] of noteTextList.entries()) {\n const spectatorNotes = notes.allNotes[order];\n if (spectatorNotes !== undefined) {\n spectatorNotes.push({\n name,\n text,\n isSpectator,\n });\n }\n }\n }\n\n break;\n }\n }\n}\n\nfunction getNoteKeywords(note: string): readonly string[] {\n // Match either:\n // - zero or more characters between square brackets `[]`\n // - \\[(.*?)\\]\n // - zero or more non-pipe non-bracket characters between a pipe `|` and the end of the note\n // - \\|([^[|]*$)\n // - one or more non-pipe non-bracket characters between the start and end of the note\n // - (^[^[|]+$)\n const regexp = /\\[(.*?)]|\\|([^[|]*$)|(^[^[|]+$)/g;\n const keywords: string[] = [];\n\n let match = regexp.exec(note);\n while (match !== null) {\n if (match[1] !== undefined) {\n keywords.push(match[1].trim());\n } else if (match[2] !== undefined) {\n keywords.push(match[2].trim());\n } else if (match[3] !== undefined) {\n keywords.push(match[3].trim());\n }\n\n match = regexp.exec(note);\n }\n\n return keywords;\n}\n\nfunction checkNoteKeywordsForMatch(\n patterns: readonly string[],\n keywords: readonly string[],\n) {\n return keywords.some((k) => patterns.includes(k));\n}\n\nfunction getEmptyNote(variant: Variant): CardNote {\n const note: CardNote = emptyNotes.get(variant.name) ?? parseNote(variant, \"\");\n emptyNotes.set(variant.name, note);\n return note;\n}\n\nfunction noteWithoutText(note: CardNote): CardNote {\n return {\n ...note,\n text: \"\",\n };\n}\n\nexport function noteEqual(note1: CardNote, note2: CardNote): boolean {\n return equal(noteWithoutText(note1), noteWithoutText(note2));\n}\n\nexport function noteHasMeaning(variant: Variant, note: CardNote): boolean {\n return !noteEqual(noteWithoutText(note), getEmptyNote(variant));\n}\n\nexport function parseNote(variant: Variant, text: string): CardNote {\n const lastPipeIndex = text.lastIndexOf(\"|\");\n\n // No special handling is needed for the -1 case.\n const textAfterLastPipe = text.slice(lastPipeIndex + 1);\n\n // We make all letters lowercase to simply the matching logic below.\n const fullNote = textAfterLastPipe.toLowerCase().trim();\n\n const keywords = getNoteKeywords(fullNote);\n const possibilities = noteIdentity.getPossibilitiesFromKeywords(\n variant,\n keywords,\n );\n const chopMoved = checkNoteKeywordsForMatch(CHOP_MOVED_NOTES, keywords);\n const finessed = checkNoteKeywordsForMatch(FINESSED_NOTES, keywords);\n const knownTrash = checkNoteKeywordsForMatch(KNOWN_TRASH_NOTES, keywords);\n const needsFix = checkNoteKeywordsForMatch(NEEDS_FIX_NOTES, keywords);\n const questionMark = checkNoteKeywordsForMatch(QUESTION_MARK_NOTES, keywords);\n const exclamationMark = checkNoteKeywordsForMatch(\n EXCLAMATION_MARK_NOTES,\n keywords,\n );\n const blank = checkNoteKeywordsForMatch(BLANK_NOTES, keywords);\n const unclued = checkNoteKeywordsForMatch(UNCLUED_NOTES, keywords);\n const clued = checkNoteKeywordsForMatch(CLUED_NOTES, keywords);\n\n return {\n possibilities,\n chopMoved,\n finessed,\n knownTrash,\n needsFix,\n questionMark,\n exclamationMark,\n blank,\n unclued,\n clued,\n text,\n };\n}\n", "// Initialization functions for the HanabiCard object.\n\nimport type { Suit, Variant } from \"@hanabi-live/game\";\nimport { START_CARD_RANK, hasReversedSuits } from \"@hanabi-live/game\";\nimport { assertDefined } from \"complete-common\";\nimport Konva from \"konva\";\nimport type * as KonvaContext from \"konva/types/Context\";\nimport type * as KonvaUtil from \"konva/types/Util\";\nimport type { Arrow } from \"konva/types/shapes/Arrow\";\nimport type { RectConfig } from \"konva/types/shapes/Rect\";\nimport type { Pips } from \"../types/Pips\";\nimport { globals } from \"./UIGlobals\";\nimport {\n BOTTOM_LEFT_X,\n BOTTOM_LEFT_Y,\n CARD_H,\n CARD_W,\n CHOP_MOVE_COLOR,\n CLUED_COLOR,\n FINESSE_COLOR,\n OFF_BLACK,\n SMALL_ICON_SIZE,\n TOP_LEFT_X,\n TOP_LEFT_Y,\n} from \"./constants\";\nimport { NoteIndicator } from \"./controls/NoteIndicator\";\nimport { RankPip } from \"./controls/RankPip\";\nimport { drawPip } from \"./drawPip\";\n\nexport function image(getBareName: () => string): Konva.Image {\n // Create the \"bare\" card image, which is the main card graphic. If the card is not revealed, it\n // will just be a gray rounded rectangle. The pips and other elements of a card are drawn on top\n // of the bare image.\n const bare = new Konva.Image({\n width: CARD_W,\n height: CARD_H,\n image: null as unknown as ImageBitmapSource,\n shadowEnabled: false,\n shadowColor: \"black\",\n shadowOffset: {\n x: Math.floor(0.04 * CARD_W),\n y: Math.floor(0.04 * CARD_W),\n },\n shadowOpacity: 0.4,\n listening: true, // As the main card element, this must be listening in order for events to fire\n });\n (bare as Konva.Shape).sceneFunc((ctx: KonvaContext.Context) => {\n scaleCardImage(\n ctx._context,\n getBareName(),\n bare.width(),\n bare.height(),\n bare.getAbsoluteTransform(),\n );\n });\n return bare;\n}\n\nconst borderCornerRadius = 6;\nconst borderStrokeWidth = 20;\nconst borderStrokeWidthInside = borderStrokeWidth * 0.6;\nconst borderOffset = 2;\nconst borderOutsideColor = OFF_BLACK;\n\nfunction makeBorder(color: string) {\n const border = new Konva.Group({\n visible: false,\n listening: false,\n });\n\n const borderOutside = new Konva.Rect(\n getBorderConfig(borderStrokeWidth, borderOutsideColor),\n );\n const borderInside = new Konva.Rect(\n getBorderConfig(borderStrokeWidthInside, color),\n );\n\n border.add(borderOutside);\n border.add(borderInside);\n\n return border;\n}\n\nfunction getBorderConfig(strokeWidth: number, stroke: string): RectConfig {\n return {\n width: CARD_W - borderOffset,\n height: CARD_H - borderOffset,\n cornerRadius: borderCornerRadius,\n strokeWidth,\n stroke,\n listening: false,\n };\n}\n\nexport function cluedBorder(): Konva.Group {\n return makeBorder(CLUED_COLOR);\n}\n\nexport function chopMoveBorder(): Konva.Group {\n return makeBorder(CHOP_MOVE_COLOR);\n}\n\nexport function finesseBorder(): Konva.Group {\n return makeBorder(FINESSE_COLOR);\n}\n\nexport function directionArrow(\n variant: Variant,\n): { arrow: Konva.Group; arrowBase: Arrow } | null {\n if (!hasReversedSuits(variant)) {\n return null;\n }\n\n const arrow = new Konva.Group({\n x: 0.815 * CARD_W,\n visible: false,\n offset: {\n x: 0,\n y: 0.14 * CARD_H,\n },\n listening: false,\n });\n\n const arrowHeight = 0.25;\n const pointerLength = 0.05 * CARD_W;\n\n const border = new Konva.Arrow({\n points: [0, 0, 0, arrowHeight * CARD_H],\n pointerLength,\n pointerWidth: pointerLength * 1.5,\n fill: \"black\",\n stroke: \"black\",\n strokeWidth: pointerLength * 2,\n listening: false,\n });\n arrow.add(border);\n\n const edge = new Konva.Line({\n points: [-pointerLength, 0, pointerLength, 0],\n fill: \"black\",\n stroke: \"black\",\n strokeWidth: pointerLength * 0.75,\n listening: false,\n });\n arrow.add(edge);\n\n const arrowBase = new Konva.Arrow({\n points: [0, 0, 0, arrowHeight * CARD_H],\n pointerLength,\n pointerWidth: pointerLength * 1.5,\n fill: \"white\",\n stroke: \"white\", // This should match the color of the suit; it will be manually set later on\n strokeWidth: pointerLength * 1.25,\n listening: false,\n });\n arrow.add(arrowBase);\n\n return { arrow, arrowBase };\n}\n\n// Cache the pip objects to save time on the multiple cards.\nlet cachedVariant: Variant | null = null;\nlet cachedPips: {\n suitPipsMap: Map;\n suitPipsPositiveMap: Map;\n suitPipsXMap: Map;\n rankPipsMap: Map;\n rankPipsXMap: Map;\n};\n\n/**\n * Initialize the suit pips (colored shapes) on the back of the card, which will be removed one by\n * one as the card gains negative information. For each pip also create the one with positive\n * information.\n */\nfunction makeCachedPips(variant: Variant) {\n const suitPipsMap = new Map();\n const suitPipsPositiveMap = new Map();\n const suitPipsXMap = new Map();\n const pipTypes = new Set();\n for (const [suitIndex, suit] of variant.suits.entries()) {\n const secondaryPip = pipTypes.has(suit.pip);\n pipTypes.add(suit.pip);\n\n // Set the pip at the middle of the card.\n const x = Math.floor(CARD_W * 0.5);\n const y = Math.floor(CARD_H * 0.5);\n\n /** The scale numbers are magic. */\n const scale = {\n x: 0.4,\n y: 0.4,\n };\n\n // Transform polar to Cartesian coordinates.\n const offsetBase = CARD_W * 0.7;\n const offsetTrig = (-suitIndex / variant.suits.length + 0.25) * Math.PI * 2;\n const offset = {\n x: Math.floor(offsetBase * Math.cos(offsetTrig)),\n y: Math.floor(offsetBase * Math.sin(offsetTrig)),\n };\n let { fill } = suit;\n if (suit.fill === \"multi\") {\n fill = \"\";\n }\n\n const suitPip = getNewColorPip(\n x,\n y,\n scale,\n offset,\n fill,\n suit,\n secondaryPip,\n false,\n );\n const suitPipPositive = getNewColorPip(\n x,\n y,\n scale,\n offset,\n fill,\n suit,\n secondaryPip,\n true,\n );\n suitPipsMap.set(suitIndex, suitPip);\n suitPipsPositiveMap.set(suitIndex, suitPipPositive);\n\n /** The X that will show when a certain suit can be ruled out. */\n const suitPipX = new Konva.Shape({\n x,\n y,\n scale,\n offset,\n fill: \"black\",\n stroke: \"white\",\n strokeWidth: 6,\n opacity: 1,\n visible: false,\n sceneFunc: (ctx, shape) => {\n const width = 50;\n const xx = Math.floor(CARD_W * 0.25 - width * 0.5);\n const xy = Math.floor(CARD_H * 0.25 - width * 0.05);\n ctx.translate(-1.4 * width, -2 * width);\n drawX(ctx, shape, xx, xy, 50, width);\n },\n listening: false,\n });\n suitPipsXMap.set(suitIndex, suitPipX);\n }\n\n // Initialize the rank pips (along the bottom of the card).\n const rankPipsMap = new Map();\n const rankPipsXMap = new Map();\n for (const rank of variant.ranks) {\n const x =\n variant.ranks.length === 5\n ? Math.floor(CARD_W * (rank * 0.19 - 0.14))\n : Math.floor(\n CARD_W * ((rank === START_CARD_RANK ? 0 : rank) * 0.15 + 0.05),\n );\n const y = 0;\n const rankPip = new RankPip({\n x,\n y,\n fontFamily: \"Arial\",\n fontStyle: \"bold\",\n fontSize: 63,\n align: \"center\",\n text: rank === START_CARD_RANK ? \"s\" : rank.toString(),\n width: Math.floor(CARD_H * 0.1),\n height: Math.floor(CARD_H * 0.1),\n fill: \"white\",\n stroke: \"black\",\n strokeWidth: 3,\n shadowEnabled: !globals.options.speedrun,\n shadowColor: \"black\",\n shadowOffsetX: 5,\n shadowOffsetY: 5,\n shadowOpacity: 0.4,\n shadowForStrokeEnabled: true,\n listening: false,\n });\n rankPipsMap.set(rank, rankPip);\n\n /** The X that will show when a certain rank can be ruled out. */\n const rankPipX = new Konva.Shape({\n x,\n y: Math.floor(CARD_H * 0.02),\n fill: \"black\",\n stroke: \"black\",\n strokeWidth: 2,\n opacity: 1,\n visible: false,\n sceneFunc: (ctx, shape) => {\n const width = 13;\n const xx = Math.floor(CARD_W * 0.05);\n const xy = Math.floor(CARD_H * 0.047);\n drawX(ctx, shape, xx, xy, 13, width);\n },\n listening: false,\n });\n rankPipsXMap.set(rank, rankPipX);\n }\n\n // Cache the results\n cachedPips = {\n suitPipsMap,\n suitPipsPositiveMap,\n suitPipsXMap,\n rankPipsMap,\n rankPipsXMap,\n };\n\n cachedVariant = variant;\n}\n\nexport function pips(variant: Variant): Pips {\n if (cachedVariant !== variant) {\n makeCachedPips(variant);\n }\n\n const suitPips = new Konva.Group({\n x: 0,\n y: 0,\n width: Math.floor(CARD_W),\n height: Math.floor(CARD_H),\n visible: false,\n listening: false,\n });\n\n const suitPipsMap = new Map();\n const suitPipsPositiveMap = new Map();\n const suitPipsXMap = new Map();\n\n const rankPips = new Konva.Group({\n x: 0,\n y: Math.floor(CARD_H * 0.81),\n width: CARD_W,\n height: Math.floor(CARD_H * 0.15),\n visible: false,\n listening: false,\n });\n\n const rankPipsMap = new Map();\n const rankPipsXMap = new Map();\n\n for (const suitIndex of variant.suits.keys()) {\n const suitPip = cachedPips.suitPipsMap\n .get(suitIndex)!\n .clone() as Konva.Shape;\n const suitPipPositive = cachedPips.suitPipsPositiveMap\n .get(suitIndex)!\n .clone() as Konva.Shape;\n const suitPipX = cachedPips.suitPipsXMap\n .get(suitIndex)!\n .clone() as Konva.Shape;\n suitPips.add(suitPip);\n suitPips.add(suitPipPositive);\n suitPips.add(suitPipX);\n suitPipsMap.set(suitIndex, suitPip);\n suitPipsPositiveMap.set(suitIndex, suitPipPositive);\n suitPipsXMap.set(suitIndex, suitPipX);\n }\n\n for (const rank of variant.ranks) {\n const rankPip = cachedPips.rankPipsMap.get(rank)!.clone() as RankPip;\n const rankPipX = cachedPips.rankPipsXMap.get(rank)!.clone() as Konva.Shape;\n rankPips.add(rankPip);\n rankPips.add(rankPipX);\n rankPipsMap.set(rank, rankPip);\n rankPipsXMap.set(rank, rankPipX);\n continue;\n }\n\n return {\n suitPips,\n suitPipsMap,\n suitPipsPositiveMap,\n suitPipsXMap,\n rankPips,\n rankPipsMap,\n rankPipsXMap,\n };\n}\n\nexport function note(\n offsetCornerElements: boolean,\n shouldShowIndicator: () => boolean,\n): NoteIndicator {\n // Define the note indicator image.\n const noteX = 0.78;\n const noteY = 0.03;\n const noteIndicator = new NoteIndicator({\n // If the cards have triangles on the corners that show the color composition, the images will\n // overlap. Thus, we move it downwards if this is the case.\n x: (offsetCornerElements ? noteX - 0.05 : noteX) * CARD_W,\n y: (offsetCornerElements ? noteY + 0.05 : noteY) * CARD_H,\n align: \"center\",\n image: globals.imageLoader!.get(\"note\"),\n width: SMALL_ICON_SIZE,\n height: SMALL_ICON_SIZE,\n rotation: 180,\n shadowEnabled: !globals.options.speedrun,\n shadowColor: \"black\",\n shadowBlur: 10,\n shadowOffset: {\n x: 0,\n y: 0,\n },\n shadowOpacity: 0.9,\n visible: shouldShowIndicator(),\n listening: false,\n });\n noteIndicator.scale({\n x: -1,\n y: -1,\n });\n\n return noteIndicator;\n}\n\nexport function criticalIndicator(offsetCornerElements: boolean): Konva.Image {\n // Define the critical indicator image.\n const indicator = new Konva.Image({\n // If the cards have triangles on the corners that show the color composition, the images will\n // overlap. Thus, we move it upwards if this is the case.\n x: BOTTOM_LEFT_X + (offsetCornerElements ? 0.05 : 0) * CARD_W,\n y: BOTTOM_LEFT_Y - (offsetCornerElements ? 0.05 : 0) * CARD_H,\n align: \"center\",\n image: globals.imageLoader!.get(\"critical\"),\n width: SMALL_ICON_SIZE,\n height: SMALL_ICON_SIZE,\n rotation: 180,\n shadowEnabled: !globals.options.speedrun,\n shadowColor: \"black\",\n shadowBlur: 10,\n shadowOffset: {\n x: 0,\n y: 0,\n },\n shadowOpacity: 0.9,\n visible: false,\n listening: false,\n });\n indicator.scale({\n x: -1,\n y: -1,\n });\n return indicator;\n}\n\nexport function questionMark(): Konva.Image {\n return new Konva.Image({\n x: 0.15 * CARD_W,\n y: 0.2 * CARD_H,\n width: 0.8 * CARD_W,\n height: 0.8 * CARD_W,\n image: globals.imageLoader!.get(\"question-mark2\"),\n visible: false,\n });\n}\n\nexport function exclamationMark(): Konva.Image {\n return new Konva.Image({\n x: 0.15 * CARD_W,\n y: 0.2 * CARD_H,\n width: 0.8 * CARD_W,\n height: 0.8 * CARD_W,\n image: globals.imageLoader!.get(\"exclamation-mark\"),\n visible: false,\n });\n}\n\nexport function trashcan(): Konva.Image {\n return new Konva.Image({\n x: 0.15 * CARD_W,\n y: 0.2 * CARD_H,\n width: 0.7 * CARD_W,\n height: 0.6 * CARD_H,\n image: globals.imageLoader!.get(\"trashcan2\"),\n visible: false,\n });\n}\n\nexport function wrench(): Konva.Image {\n return new Konva.Image({\n x: 0.1 * CARD_W,\n y: 0.33 * CARD_H,\n width: 0.8 * CARD_W,\n image: globals.imageLoader!.get(\"wrench\"),\n visible: false,\n listening: false,\n });\n}\n\nexport function ddaIndicatorTop(): Konva.Image {\n return new Konva.Image({\n x: TOP_LEFT_X,\n y: TOP_LEFT_Y,\n width: SMALL_ICON_SIZE,\n height: SMALL_ICON_SIZE,\n image: globals.imageLoader!.get(\"dda\"),\n visible: false,\n listening: false,\n });\n}\n\nexport function ddaIndicatorBottom(offsetCornerElements: boolean): Konva.Image {\n const indicator = new Konva.Image({\n // If the cards have triangles on the corners that show the color composition, the images will\n // overlap. Thus, we move it upwards if this is the case.\n x: BOTTOM_LEFT_X + (offsetCornerElements ? 0.05 : 0) * CARD_W,\n y: BOTTOM_LEFT_Y - (offsetCornerElements ? 0.05 : 0) * CARD_H,\n align: \"center\",\n image: globals.imageLoader!.get(\"dda\"),\n width: SMALL_ICON_SIZE,\n height: SMALL_ICON_SIZE,\n visible: false,\n listening: false,\n });\n return indicator;\n}\n\nexport function trashMiniIndicatorTop(): Konva.Image {\n return new Konva.Image({\n x: TOP_LEFT_X,\n y: TOP_LEFT_Y,\n width: SMALL_ICON_SIZE,\n height: SMALL_ICON_SIZE,\n image: globals.imageLoader!.get(\"wastebasket\"),\n visible: false,\n listening: false,\n });\n}\n\nexport function trashMiniIndicatorBottom(\n offsetCornerElements: boolean,\n): Konva.Image {\n const indicator = new Konva.Image({\n // If the cards have triangles on the corners that show the color composition, the images will\n // overlap. Thus, we move it upwards if this is the case.\n x: BOTTOM_LEFT_X + (offsetCornerElements ? 0.05 : 0) * CARD_W,\n y: BOTTOM_LEFT_Y - (offsetCornerElements ? 0.05 : 0) * CARD_H,\n align: \"center\",\n image: globals.imageLoader!.get(\"wastebasket\"),\n width: SMALL_ICON_SIZE,\n height: SMALL_ICON_SIZE,\n visible: false,\n listening: false,\n });\n return indicator;\n}\n\nfunction scaleCardImage(\n ctx: CanvasRenderingContext2D,\n name: string,\n width: number,\n height: number,\n tf: KonvaUtil.Transform,\n) {\n let src = globals.cardImages.get(name);\n assertDefined(src, `The image \"${name}\" was not generated.`);\n\n const dw = Math.sqrt(tf.m[0]! * tf.m[0]! + tf.m[1]! * tf.m[1]!) * width;\n const dh = Math.sqrt(tf.m[2]! * tf.m[2]! + tf.m[3]! * tf.m[3]!) * height;\n\n if (dw < 1 || dh < 1) {\n return;\n }\n\n let sw = width;\n let sh = height;\n let steps = 0;\n\n let scaledCardImages = globals.scaledCardImages.get(name);\n if (scaledCardImages === undefined) {\n scaledCardImages = [];\n globals.scaledCardImages.set(name, scaledCardImages);\n }\n\n // This code was written by Keldon; scaling the card down in steps of half in each dimension\n // presumably improves the scaling.\n while (dw < sw / 2) {\n let scaledCardImage = scaledCardImages[steps];\n\n sw = Math.floor(sw / 2);\n sh = Math.floor(sh / 2);\n\n if (scaledCardImage === undefined) {\n scaledCardImage = document.createElement(\"canvas\");\n scaledCardImage.width = sw;\n scaledCardImage.height = sh;\n\n const scaleContext = scaledCardImage.getContext(\"2d\");\n if (scaleContext === null) {\n throw new Error(\n \"Failed to get the context for a new scaled card image.\",\n );\n }\n\n scaleContext.drawImage(src, 0, 0, sw, sh);\n\n scaledCardImages[steps] = scaledCardImage;\n }\n\n src = scaledCardImage;\n steps++;\n }\n\n ctx.drawImage(src, 0, 0, width, height);\n}\n\nfunction drawX(\n ctx: KonvaContext.Context,\n shape: Konva.Shape,\n positionX: number,\n positionY: number,\n size: number,\n width: number,\n) {\n let x = positionX;\n let y = positionY;\n // Start at the top left corner and draw an X.\n ctx.beginPath();\n x -= size;\n y -= size;\n ctx.moveTo(x, y);\n x += width / 2;\n y -= width / 2;\n ctx.lineTo(x, y);\n x += size;\n y += size;\n ctx.lineTo(x, y);\n x += size;\n y -= size;\n ctx.lineTo(x, y);\n x += width / 2;\n y += width / 2;\n ctx.lineTo(x, y);\n x -= size;\n y += size;\n ctx.lineTo(x, y);\n x += size;\n y += size;\n ctx.lineTo(x, y);\n x -= width / 2;\n y += width / 2;\n ctx.lineTo(x, y);\n x -= size;\n y -= size;\n ctx.lineTo(x, y);\n x -= size;\n y += size;\n ctx.lineTo(x, y);\n x -= width / 2;\n y -= width / 2;\n ctx.lineTo(x, y);\n x += size;\n y -= size;\n ctx.lineTo(x, y);\n x -= size;\n y -= size;\n ctx.lineTo(x, y);\n ctx.stroke();\n ctx.closePath();\n ctx.fillStrokeShape(shape);\n}\n\nfunction getNewColorPip(\n x: number,\n y: number,\n scale: { x: number; y: number },\n offset: { x: number; y: number },\n fill: string,\n suit: Suit,\n secondaryPip: boolean,\n isPositive: boolean,\n): Konva.Shape {\n const suitPip = new Konva.Shape({\n x,\n y,\n scale,\n offset,\n fill,\n stroke: \"black\",\n strokeWidth: 5,\n shadowEnabled: !globals.options.speedrun,\n shadowColor: \"black\",\n shadowOffsetX: 15,\n shadowOffsetY: 15,\n shadowOpacity: 0.4,\n shadowForStrokeEnabled: true,\n sceneFunc: (ctx: KonvaContext.Context) => {\n drawPip(\n ctx as unknown as CanvasRenderingContext2D,\n suit,\n secondaryPip,\n false,\n undefined,\n undefined,\n isPositive,\n );\n },\n listening: false,\n });\n\n // Gradient numbers are magic.\n if (suit.fill === \"multi\") {\n suitPip.fillRadialGradientColorStops([\n 0.3,\n suit.fillColors[0]!,\n 0.425,\n suit.fillColors[1]!,\n 0.65,\n suit.fillColors[2]!,\n 0.875,\n suit.fillColors[3]!,\n 1,\n suit.fillColors[4]!,\n ]);\n suitPip.fillRadialGradientStartPoint({\n x: 75,\n y: 140,\n });\n suitPip.fillRadialGradientEndPoint({\n x: 75,\n y: 140,\n });\n suitPip.fillRadialGradientStartRadius(0);\n suitPip.fillRadialGradientEndRadius(Math.floor(CARD_W * 0.25));\n }\n\n return suitPip;\n}\n", "import Konva from \"konva\";\n\nexport class NoteIndicator extends Konva.Image {\n // We rotate the note indicator in order to indicate to spectators that the note was updated.\n rotated = false;\n}\n", "import Konva from \"konva\";\nimport { CLUED_COLOR } from \"../constants\";\n\nexport class RankPip extends Konva.Text {\n private fillValue: string | undefined;\n private positive = false;\n\n constructor(config?: Konva.TextConfig) {\n super(config);\n this.fillValue = config?.fill;\n }\n\n setFillValue(fill: string): void {\n if (this.fillValue === fill) {\n return;\n }\n\n this.fillValue = fill;\n if (this.positive) {\n this.showPositiveClue();\n } else {\n this.hidePositiveClue();\n }\n }\n\n showPositiveClue(): void {\n this.positive = true;\n this.fill(CLUED_COLOR);\n }\n\n hidePositiveClue(): void {\n this.positive = false;\n this.fill(this.fillValue ?? \"black\");\n }\n}\n", "import type { Suit } from \"@hanabi-live/game\";\nimport { assertDefined } from \"complete-common\";\n\ntype DrawFunction = (\n ctx: CanvasRenderingContext2D,\n colors?: readonly string[],\n) => void;\n\nconst SCALE_FACTOR = 3;\n\nconst shapeFunctions = new Map();\n\nshapeFunctions.set(\"hanabiRed\", (ctx: CanvasRenderingContext2D) => {\n ctx.beginPath();\n ctx.scale(SCALE_FACTOR, SCALE_FACTOR);\n ctx.translate(-40.903_844, -80.253_155);\n ctx.moveTo(47.530_531, 88.392_69);\n ctx.bezierCurveTo(\n 29.757_962,\n 90.070_21,\n 31.193_616,\n 78.987_85,\n 34.277_276,\n 72.111_26,\n );\n ctx.bezierCurveTo(\n 52.049_847,\n 70.433_711,\n 50.616_495,\n 81.5161,\n 47.530_531,\n 88.392_69,\n );\n ctx.moveTo(38.201_088, 59.405_974);\n ctx.bezierCurveTo(\n 36.488_459,\n 59.405_974,\n 35.161_286,\n 62.901_259,\n 34.279_579,\n 66.242_17,\n );\n ctx.bezierCurveTo(\n 11.602_243,\n 72.595_989,\n 17.005_567,\n 101.105_07,\n 43.609_027,\n 101.100_33,\n );\n ctx.bezierCurveTo(\n 45.321_658,\n 101.100_33,\n 46.646_522,\n 97.604_97,\n 47.530_531,\n 94.261_78,\n );\n ctx.bezierCurveTo(\n 70.205_57,\n 87.912_67,\n 64.799_917,\n 59.401_233,\n 38.201_088,\n 59.405_974,\n );\n ctx.scale(1 / SCALE_FACTOR, 1 / SCALE_FACTOR);\n ctx.closePath();\n});\n\nshapeFunctions.set(\"hanabiYellow\", (ctx: CanvasRenderingContext2D) => {\n ctx.beginPath();\n ctx.scale(SCALE_FACTOR, SCALE_FACTOR);\n ctx.translate(-58.029_065, -70.265_748);\n ctx.moveTo(48.471_374, 76.245_007);\n ctx.bezierCurveTo(\n 52.478_308,\n 74.048_764,\n 57.340_783,\n 70.758_733,\n 60.960_015,\n 66.9381,\n );\n ctx.bezierCurveTo(\n 60.918_765,\n 71.616_441,\n 61.423_545,\n 77.451_433,\n 63.024_126,\n 82.374_519,\n );\n ctx.bezierCurveTo(\n 59.019_361,\n 79.968_19,\n 53.639_232,\n 77.395_132,\n 48.471_374,\n 76.245_007,\n );\n ctx.moveTo(78.213_664, 83.015_659);\n ctx.bezierCurveTo(\n 74.748_208,\n 79.849_062,\n 67.217_334,\n 70.373_217,\n 64.219_708,\n 62.721_08,\n );\n ctx.bezierCurveTo(\n 64.353_955,\n 62.493_95,\n 64.505_635,\n 62.265_928,\n 64.629_079,\n 62.034_484,\n );\n ctx.bezierCurveTo(\n 64.629_079,\n 62.034_484,\n 66.385_639,\n 60.000_655,\n 63.054_465,\n 55.839_957,\n );\n ctx.bezierCurveTo(\n 59.727_624,\n 51.679_247,\n 56.955_259,\n 51.308_84,\n 56.214_513,\n 51.402_032,\n );\n ctx.bezierCurveTo(\n 55.473_773,\n 51.495_022,\n 54.735_194,\n 51.633_868,\n 54.460_129,\n 52.881_296,\n );\n ctx.bezierCurveTo(\n 53.420_489,\n 57.587_859,\n 48.768_108,\n 69.322_751,\n 43.468_126,\n 75.640_741,\n );\n ctx.bezierCurveTo(\n 43.271_019,\n 75.640_741,\n 43.069_626,\n 75.626_481,\n 42.876_825,\n 75.633_641,\n );\n ctx.bezierCurveTo(\n 42.876_825,\n 75.633_641,\n 40.236_578,\n 75.126_788,\n 38.300_255,\n 80.091_092,\n );\n ctx.bezierCurveTo(\n 36.359_599,\n 85.053_189,\n 37.4274,\n 87.641_479,\n 37.875_753,\n 88.234_939,\n );\n ctx.bezierCurveTo(\n 38.324_091,\n 88.830_219,\n 38.815_757,\n 89.402_319,\n 40.032_999,\n 89.016_809,\n );\n ctx.bezierCurveTo(\n 44.609_566,\n 87.567_769,\n 57.020_243,\n 85.739_789,\n 65.144_575,\n 87.138_969,\n );\n ctx.bezierCurveTo(\n 65.166_335,\n 87.171_069,\n 65.183_225,\n 87.212_469,\n 65.205_475,\n 87.244_869,\n );\n ctx.bezierCurveTo(\n 65.205_475,\n 87.244_869,\n 66.084_837,\n 89.785_519,\n 71.354_499,\n 88.984_149,\n );\n ctx.bezierCurveTo(\n 76.622_002,\n 88.180_599,\n 78.326_561,\n 85.962_679,\n 78.618_964,\n 85.278_249,\n );\n ctx.bezierCurveTo(\n 78.907_03,\n 84.591_659,\n 79.160_44,\n 83.876_899,\n 78.213_916,\n 83.017_049,\n );\n ctx.scale(1 / SCALE_FACTOR, 1 / SCALE_FACTOR);\n ctx.closePath();\n});\n\nshapeFunctions.set(\"hanabiGreen\", (ctx: CanvasRenderingContext2D) => {\n ctx.beginPath();\n ctx.scale(SCALE_FACTOR, SCALE_FACTOR);\n ctx.translate(-37.891_88, -52.702_171);\n ctx.moveTo(56.910_015, 58.292_302);\n ctx.bezierCurveTo(\n 55.483_093,\n 57.138_514,\n 52.978_323,\n 54.513_89,\n 49.381_539,\n 52.702_161,\n );\n ctx.bezierCurveTo(\n 52.978_323,\n 50.888_05,\n 55.483_093,\n 48.265_81,\n 56.910_015,\n 47.112_026,\n );\n ctx.bezierCurveTo(\n 59.841_692,\n 44.740_087,\n 58.374_671,\n 43.555_312,\n 58.374_671,\n 43.555_312,\n );\n ctx.bezierCurveTo(\n 55.737_819,\n 38.372_817,\n 52.749_542,\n 35.352_476,\n 49.728_244,\n 32.591_968,\n );\n ctx.bezierCurveTo(\n 47.638_57,\n 30.684_887,\n 47.214_037,\n 32.868_471,\n 46.836_666,\n 34.568_186,\n );\n ctx.bezierCurveTo(\n 46.277_71,\n 37.083_148,\n 45.362_573,\n 39.512_295,\n 44.150_277,\n 41.779_343,\n );\n ctx.bezierCurveTo(\n 42.449_773,\n 44.964_172,\n 40.294_055,\n 47.336_103,\n 37.893_058,\n 49.669_898,\n );\n ctx.bezierCurveTo(\n 35.4897,\n 47.336_103,\n 33.333_993,\n 44.964_172,\n 31.633_476,\n 41.779_343,\n );\n ctx.bezierCurveTo(\n 30.423_545,\n 39.512_295,\n 29.506_07,\n 37.083_148,\n 28.949_451,\n 34.568_186,\n );\n ctx.bezierCurveTo(\n 28.569_708,\n 32.868_496,\n 28.145_185,\n 30.684_887,\n 26.055_515,\n 32.591_968,\n );\n ctx.bezierCurveTo(\n 23.034_217,\n 35.352_476,\n 20.045_939,\n 38.372_817,\n 17.409_083,\n 43.555_312,\n );\n ctx.bezierCurveTo(\n 17.409_083,\n 43.555_312,\n 15.942_073,\n 44.740_087,\n 18.873_743,\n 47.112_026,\n );\n ctx.bezierCurveTo(\n 20.303_023,\n 48.265_81,\n 22.807_798,\n 50.888_05,\n 26.402_219,\n 52.702_161,\n );\n ctx.bezierCurveTo(\n 22.807_798,\n 54.513_89,\n 20.303_023,\n 57.138_514,\n 18.873_743,\n 58.292_302,\n );\n ctx.bezierCurveTo(\n 15.942_073,\n 60.661_853,\n 17.409_083,\n 61.846_624,\n 17.409_083,\n 61.846_624,\n );\n ctx.bezierCurveTo(\n 20.045_939,\n 67.031_506,\n 23.034_217,\n 70.051_852,\n 26.055_515,\n 72.812_352,\n );\n ctx.bezierCurveTo(\n 28.145_185,\n 74.719_433,\n 28.569_729,\n 72.535_849,\n 28.949_451,\n 70.836_141,\n );\n ctx.bezierCurveTo(\n 29.506_055,\n 68.321_168,\n 30.423_545,\n 65.892_021,\n 31.633_476,\n 63.622_593,\n );\n ctx.bezierCurveTo(\n 33.333_993,\n 60.440_152,\n 35.4897,\n 58.065_829,\n 37.893_058,\n 55.734_422,\n );\n ctx.bezierCurveTo(\n 40.294_055,\n 58.065_829,\n 42.449_773,\n 60.440_152,\n 44.150_277,\n 63.622_593,\n );\n ctx.bezierCurveTo(\n 45.362_573,\n 65.892_021,\n 46.277_689,\n 68.321_168,\n 46.836_666,\n 70.836_141,\n );\n ctx.bezierCurveTo(\n 47.214_058,\n 72.535_82,\n 47.638_57,\n 74.719_433,\n 49.728_244,\n 72.812_352,\n );\n ctx.bezierCurveTo(\n 52.749_542,\n 70.051_852,\n 55.737_819,\n 67.031_506,\n 58.374_671,\n 61.846_624,\n );\n ctx.bezierCurveTo(\n 58.374_671,\n 61.846_624,\n 59.841_692,\n 60.661_853,\n 56.910_015,\n 58.292_302,\n );\n ctx.scale(1 / SCALE_FACTOR, 1 / SCALE_FACTOR);\n ctx.closePath();\n});\n\nshapeFunctions.set(\"hanabiBlue\", (ctx: CanvasRenderingContext2D) => {\n ctx.beginPath();\n ctx.scale(SCALE_FACTOR, SCALE_FACTOR);\n ctx.translate(-99.694_341, -76.779_331);\n ctx.moveTo(56.910_015, 58.292_302);\n ctx.moveTo(115.297_82, 63.128_745);\n ctx.bezierCurveTo(\n 115.509_04,\n 62.943_572,\n 115.738_42,\n 62.783_73,\n 115.9409,\n 62.592_635,\n );\n ctx.bezierCurveTo(\n 116.136_78,\n 62.405_678,\n 117.7273,\n 61.097_621,\n 118.499_32,\n 60.145_425,\n );\n ctx.bezierCurveTo(\n 118.991_05,\n 59.542_738,\n 118.503_32,\n 59.119_802,\n 118.070_18,\n 59.159_833,\n );\n ctx.bezierCurveTo(\n 85.907_335,\n 62.087_565,\n 79.611_335,\n 57.902_868,\n 79.611_335,\n 57.902_868,\n );\n ctx.bezierCurveTo(\n 76.592_38,\n 67.042_068,\n 83.408_965,\n 72.218_957,\n 83.408_965,\n 72.218_957,\n );\n ctx.bezierCurveTo(\n 83.423_265,\n 72.226_057,\n 83.506_365,\n 72.240_367,\n 83.548_825,\n 72.247_497,\n );\n ctx.bezierCurveTo(\n 81.513_235,\n 82.240_997,\n 82.770_205,\n 92.034_227,\n 83.053_065,\n 92.330_067,\n );\n ctx.bezierCurveTo(\n 83.053_065,\n 92.330_067,\n 88.939_675,\n 98.539_287,\n 97.700_645,\n 94.541_477,\n );\n ctx.bezierCurveTo(\n 97.700_645,\n 94.541_477,\n 94.483_705,\n 90.692_697,\n 92.968_635,\n 71.800_37,\n );\n ctx.bezierCurveTo(\n 97.351_385,\n 71.230_615,\n 102.626_21,\n 70.080_615,\n 107.502_75,\n 67.947_093,\n );\n ctx.bezierCurveTo(\n 103.987_71,\n 79.224_239,\n 105.578_38,\n 91.991_907,\n 105.9032,\n 92.330_067,\n );\n ctx.bezierCurveTo(\n 105.9032,\n 92.330_067,\n 111.792_06,\n 98.539_287,\n 120.546_36,\n 94.541_477,\n );\n ctx.bezierCurveTo(\n 120.546_36,\n 94.541_477,\n 116.388_35,\n 89.549_157,\n 115.298_22,\n 63.130_56,\n );\n ctx.scale(1 / SCALE_FACTOR, 1 / SCALE_FACTOR);\n ctx.closePath();\n});\n\nshapeFunctions.set(\"hanabiWhite\", (ctx: CanvasRenderingContext2D) => {\n ctx.scale(0.25, 0.25);\n ctx.beginPath();\n ctx.scale(SCALE_FACTOR, SCALE_FACTOR);\n ctx.translate(-240.369_51, -310.428_58);\n ctx.moveTo(209.327_83, 329.846_36);\n ctx.bezierCurveTo(\n 216.849_46,\n 315.634_43,\n 219.839_68,\n 297.640_58,\n 220.325_48,\n 276.661_86,\n );\n ctx.bezierCurveTo(\n 234.196_07,\n 285.099_13,\n 251.986_61,\n 288.635_17,\n 272.943_28,\n 289.372_89,\n );\n ctx.bezierCurveTo(\n 264.659_44,\n 303.398_26,\n 261.200_17,\n 321.383_68,\n 260.479_86,\n 342.5574,\n );\n ctx.bezierCurveTo(\n 246.935_91,\n 334.289_74,\n 229.664_68,\n 330.702_83,\n 209.327_83,\n 329.846_36,\n );\n ctx.moveTo(304.8808, 333.662_26);\n ctx.bezierCurveTo(\n 303.088_38,\n 316.813_13,\n 302.359_66,\n 300.014_88,\n 303.783_57,\n 283.123_36,\n );\n ctx.bezierCurveTo(\n 305.860_82,\n 280.554_03,\n 307.979_94,\n 276.984_06,\n 309.914_79,\n 271.955_65,\n );\n ctx.bezierCurveTo(\n 317.419_64,\n 252.5287,\n 313.290_28,\n 242.403_97,\n 311.556_46,\n 240.0805,\n );\n ctx.bezierCurveTo(\n 309.822_62,\n 237.7486,\n 307.921_29,\n 235.509_97,\n 303.205_62,\n 237.019_35,\n );\n ctx.bezierCurveTo(\n 290.6752,\n 241.038_73,\n 277.248_53,\n 243.006_03,\n 264.207_13,\n 244.422_12,\n );\n ctx.bezierCurveTo(\n 247.488_72,\n 246.236_79,\n 230.803_81,\n 246.982_95,\n 214.018_39,\n 245.507_52,\n );\n ctx.bezierCurveTo(\n 212.560_97,\n 245.379_99,\n 211.019_79,\n 245.185_46,\n 209.478_62,\n 244.972_96,\n );\n ctx.bezierCurveTo(\n 207.652_64,\n 243.929_95,\n 205.541_89,\n 242.9039,\n 203.054_25,\n 241.920_28,\n );\n ctx.bezierCurveTo(\n 183.864_91,\n 234.330_97,\n 173.864_02,\n 238.511_45,\n 171.569_01,\n 240.266_75,\n );\n ctx.bezierCurveTo(\n 169.265_59,\n 242.022_04,\n 167.054_35,\n 243.946_94,\n 168.545_27,\n 248.712_52,\n );\n ctx.bezierCurveTo(\n 172.515_48,\n 261.398_08,\n 174.4587,\n 274.999_49,\n 175.8575,\n 288.185_38,\n );\n ctx.bezierCurveTo(\n 177.541_05,\n 304.084_79,\n 178.219_52,\n 319.950_26,\n 177.105_49,\n 335.875_09,\n );\n ctx.bezierCurveTo(\n 174.978_02,\n 338.452_91,\n 172.808_64,\n 342.065_26,\n 170.823_55,\n 347.212_42,\n );\n ctx.bezierCurveTo(\n 163.318_66,\n 366.639_36,\n 167.448_03,\n 376.772_61,\n 169.1902,\n 379.096_04,\n );\n ctx.bezierCurveTo(\n 170.924_06,\n 381.427_91,\n 172.817_02,\n 383.666_55,\n 177.532_68,\n 382.148_68,\n );\n ctx.bezierCurveTo(\n 190.063_14,\n 378.137_81,\n 203.489_78,\n 376.162_04,\n 216.522_77,\n 374.745_95,\n );\n ctx.bezierCurveTo(\n 233.207_69,\n 372.9398,\n 249.850_72,\n 372.202_04,\n 266.577_53,\n 373.660_55,\n );\n ctx.bezierCurveTo(\n 269.123_82,\n 375.780_47,\n 272.666_88,\n 377.9428,\n 277.675_67,\n 379.927_01,\n );\n ctx.bezierCurveTo(\n 296.865_02,\n 387.516_35,\n 306.874_31,\n 383.335_86,\n 309.160_92,\n 381.580_54,\n );\n ctx.bezierCurveTo(\n 311.472_71,\n 379.825_28,\n 313.675_59,\n 377.900_38,\n 312.193_02,\n 373.1348,\n );\n ctx.bezierCurveTo(\n 308.214_45,\n 360.449_21,\n 306.271_23,\n 346.8478,\n 304.8808,\n 333.6619,\n );\n ctx.scale(1 / SCALE_FACTOR, 1 / SCALE_FACTOR);\n ctx.closePath();\n ctx.scale(4, 4);\n});\n\nshapeFunctions.set(\"hanabiAltWhite\", (ctx: CanvasRenderingContext2D) => {\n ctx.beginPath();\n ctx.scale(SCALE_FACTOR, SCALE_FACTOR);\n ctx.translate(-74.155_39, -82.208_377);\n ctx.transform(\n -3.299_668,\n 1.133_672,\n -1.200_981,\n -3.114_738,\n 480.922_54,\n 360.609_04,\n );\n ctx.transform(0.282_222, 0, 0, 0.282_222, 74.155_397, 112.541_77);\n ctx.moveTo(28.347_656, 0.3125);\n ctx.bezierCurveTo(\n 27.666_15,\n 0.315_561,\n 26.899_434,\n 0.557_678,\n 26.056_641,\n 1.035_156,\n );\n ctx.bezierCurveTo(\n 24.331_812,\n 2.012_365,\n 22.721_615,\n 3.689_235,\n 20.039_062,\n 7.302_734,\n );\n ctx.bezierCurveTo(\n 16.394_722,\n 12.211_809,\n 16.585_492,\n 12.102_236,\n 9.349_609,\n 13.371_094,\n );\n ctx.bezierCurveTo(\n 3.625_216,\n 14.374_948,\n 1.072_572,\n 15.300_497,\n 0.476_563,\n 16.585_938,\n );\n ctx.bezierCurveTo(\n -0.119_634,\n 17.871_768,\n 0.743_099,\n 19.083_487,\n 5.179_688,\n 23.181_641,\n );\n ctx.bezierCurveTo(\n 8.308_318,\n 26.071_597,\n 9.246_576,\n 27.098_502,\n 9.529_297,\n 27.947_266,\n );\n ctx.bezierCurveTo(\n 9.727_531,\n 28.542_435,\n 10.004_965,\n 31.058_07,\n 10.146_484,\n 33.537_109,\n );\n ctx.bezierCurveTo(\n 10.434_059,\n 38.574_062,\n 10.889_828,\n 40.396_472,\n 12.142_578,\n 41.515_625,\n );\n ctx.lineTo(12.142_578, 41.517_625);\n ctx.bezierCurveTo(\n 13.038_688,\n 42.318_129,\n 14.019_224,\n 42.435_651,\n 15.210_938,\n 41.882_859,\n );\n ctx.bezierCurveTo(\n 16.474_513,\n 41.296_867,\n 19.547_233,\n 38.243_507,\n 22.160_156,\n 34.978_563,\n );\n ctx.bezierCurveTo(\n 24.800_264,\n 31.679_638,\n 26.328_861,\n 30.274_372,\n 27.921_875,\n 29.679_735,\n );\n ctx.bezierCurveTo(\n 28.475_513,\n 29.473_089,\n 30.772_06,\n 28.951_228,\n 33.025_391,\n 28.521_531,\n );\n ctx.bezierCurveTo(\n 38.227_387,\n 27.529_583,\n 39.684_318,\n 27.140_709,\n 40.884_766,\n 26.418_016,\n );\n ctx.bezierCurveTo(\n 43.257_594,\n 24.989_461,\n 42.659_074,\n 23.724_034,\n 37.429_688,\n 19.119_188,\n );\n ctx.bezierCurveTo(\n 35.287_418,\n 17.232_72,\n 33.308_731,\n 15.289_797,\n 33.033_203,\n 14.802_734,\n );\n ctx.bezierCurveTo(\n 32.651_245,\n 14.127_522,\n 32.480_019,\n 12.921_518,\n 32.308_594,\n 9.722_656,\n );\n ctx.bezierCurveTo(\n 32.011_232,\n 4.173_873,\n 31.555_509,\n 2.353_547,\n 30.128_906,\n 1.017_578,\n );\n ctx.bezierCurveTo(\n 29.626_019,\n 0.545_574,\n 29.029_163,\n 0.309_439,\n 28.347_656,\n 0.3125,\n );\n ctx.moveTo(23.660_156, 14.164_062);\n ctx.bezierCurveTo(\n 23.891_052,\n 14.162_862,\n 24.093_294,\n 14.243_072,\n 24.263_672,\n 14.402_344,\n );\n ctx.bezierCurveTo(\n 24.747_004,\n 14.854_93,\n 24.901_206,\n 15.471_59,\n 25.001_953,\n 17.351_562,\n );\n ctx.bezierCurveTo(\n 25.060_063,\n 18.435_318,\n 25.118_645,\n 18.843_51,\n 25.248_047,\n 19.072_266,\n );\n ctx.bezierCurveTo(\n 25.341_377,\n 19.237_384,\n 26.012_481,\n 19.896_05,\n 26.738_281,\n 20.535_156,\n );\n ctx.bezierCurveTo(\n 28.510_006,\n 22.095_274,\n 28.712_119,\n 22.523_797,\n 27.908_203,\n 23.007_812,\n );\n ctx.bezierCurveTo(\n 27.501_492,\n 23.252_655,\n 27.008_535,\n 23.384_62,\n 25.246_094,\n 23.720_703,\n );\n ctx.bezierCurveTo(\n 24.482_663,\n 23.866_333,\n 23.703_201,\n 24.043_407,\n 23.515_625,\n 24.113_281,\n );\n ctx.bezierCurveTo(\n 22.975_912,\n 24.314_541,\n 22.458_926,\n 24.790_538,\n 21.564_453,\n 25.908_203,\n );\n ctx.bezierCurveTo(\n 20.679_193,\n 27.014_388,\n 19.639_04,\n 28.049_48,\n 19.210_938,\n 28.248_047,\n );\n ctx.bezierCurveTo(\n 18.807_185,\n 28.435_488,\n 18.473_523,\n 28.394_464,\n 18.169_922,\n 28.123_047,\n );\n ctx.bezierCurveTo(\n 17.746_338,\n 27.743_791,\n 17.591_485,\n 27.126_937,\n 17.494_141,\n 25.421_875,\n );\n ctx.bezierCurveTo(\n 17.446_201,\n 24.582_005,\n 17.352_337,\n 23.728_993,\n 17.285_156,\n 23.527_344,\n );\n ctx.bezierCurveTo(\n 17.189_386,\n 23.239_982,\n 16.870_531,\n 22.891_231,\n 15.810_547,\n 21.912_109,\n );\n ctx.bezierCurveTo(\n 14.307_426,\n 20.523_665,\n 14.014_804,\n 20.113_384,\n 14.216_797,\n 19.677_734,\n );\n ctx.bezierCurveTo(\n 14.418_73,\n 19.242_227,\n 15.285_177,\n 18.929_93,\n 17.224_609,\n 18.589_844,\n );\n ctx.bezierCurveTo(\n 19.676_131,\n 18.159_934,\n 19.610_992,\n 18.196_431,\n 20.845_703,\n 16.533_203,\n );\n ctx.bezierCurveTo(\n 21.754_551,\n 15.308_955,\n 22.300_389,\n 14.739_29,\n 22.884_766,\n 14.408_203,\n );\n ctx.bezierCurveTo(\n 23.170_303,\n 14.246_451,\n 23.429_261,\n 14.165_214,\n 23.660_156,\n 14.164_062,\n );\n ctx.scale(1 / SCALE_FACTOR, 1 / SCALE_FACTOR);\n ctx.closePath();\n});\n\nshapeFunctions.set(\"hanabiAltBlue\", (ctx: CanvasRenderingContext2D) => {\n ctx.beginPath();\n ctx.scale(SCALE_FACTOR, SCALE_FACTOR);\n ctx.translate(-110.389_02, -72.869_975);\n ctx.moveTo(110.591_25, 92.432_703);\n ctx.bezierCurveTo(\n 110.335_53,\n 91.719_873,\n 109.714_35,\n 89.303_503,\n 109.211_72,\n 87.062_783,\n );\n ctx.bezierCurveTo(\n 107.742_18,\n 80.511_323,\n 107.008_27,\n 78.670_889,\n 105.865_31,\n 78.670_889,\n );\n ctx.bezierCurveTo(\n 105.005_55,\n 78.670_889,\n 101.643_35,\n 81.653_913,\n 99.324_992,\n 84.473_613,\n );\n ctx.bezierCurveTo(\n 95.926_692,\n 88.606_593,\n 95.838_462,\n 88.675_133,\n 93.975_532,\n 88.631_263,\n );\n ctx.bezierCurveTo(\n 92.231_172,\n 88.590_163,\n 90.310_202,\n 87.941_073,\n 89.701_562,\n 87.187_223,\n );\n ctx.bezierCurveTo(\n 89.131_002,\n 86.480_403,\n 89.897_362,\n 85.251_163,\n 93.121_472,\n 81.703_793,\n );\n ctx.bezierCurveTo(\n 97.905_302,\n 76.439_922,\n 98.141_182,\n 75.093_343,\n 94.937_532,\n 71.340_155,\n );\n ctx.bezierCurveTo(\n 93.214_542,\n 69.321_734,\n 92.383_512,\n 67.945_448,\n 92.383_512,\n 67.110_557,\n );\n ctx.bezierCurveTo(\n 92.383_512,\n 66.280_178,\n 95.395_062,\n 62.434_319,\n 95.776_182,\n 62.778_02,\n );\n ctx.bezierCurveTo(\n 95.909_182,\n 62.897_96,\n 96.790_542,\n 63.776_806,\n 97.734_912,\n 64.731_146,\n );\n ctx.bezierCurveTo(\n 101.319_56,\n 68.353_598,\n 103.590_82,\n 69.302_262,\n 105.345_04,\n 67.909_572,\n );\n ctx.bezierCurveTo(\n 106.121_38,\n 67.293_254,\n 106.144_37,\n 67.193_035,\n 105.952_91,\n 65.255_957,\n );\n ctx.bezierCurveTo(\n 105.843_17,\n 64.148_763,\n 105.474_96,\n 61.965_46,\n 105.134_01,\n 60.404_152,\n );\n ctx.bezierCurveTo(\n 103.8133,\n 54.355_863,\n 104.761_23,\n 52.011_272,\n 108.527,\n 52.011_272,\n );\n ctx.bezierCurveTo(\n 109.624_47,\n 52.011_272,\n 109.888_35,\n 52.120_274,\n 110.3947,\n 52.780_938,\n );\n ctx.bezierCurveTo(\n 111.125_64,\n 53.735_243,\n 111.169_06,\n 53.924_532,\n 112.109_94,\n 60.262_548,\n );\n ctx.bezierCurveTo(\n 112.741_06,\n 64.513_842,\n 112.9829,\n 65.512_454,\n 113.476_39,\n 65.904_165,\n );\n ctx.bezierCurveTo(\n 114.762_89,\n 66.925_529,\n 116.967_89,\n 65.447_542,\n 121.179_64,\n 60.740_508,\n );\n ctx.bezierCurveTo(\n 125.207_39,\n 56.239_247,\n 126.422_93,\n 55.508_035,\n 128.496_35,\n 56.339_188,\n );\n ctx.bezierCurveTo(\n 129.871_37,\n 56.890_453,\n 131.251_18,\n 57.930_871,\n 131.2477,\n 58.413_843,\n );\n ctx.bezierCurveTo(\n 131.2467,\n 58.625_498,\n 129.861_46,\n 60.430_251,\n 128.170_62,\n 62.423_316,\n );\n ctx.bezierCurveTo(\n 124.784_15,\n 66.414_798,\n 123.959_78,\n 67.936_204,\n 123.981_36,\n 70.154_646,\n );\n ctx.bezierCurveTo(\n 123.995_56,\n 71.758_322,\n 124.419_28,\n 72.583_018,\n 126.591_04,\n 75.250_64,\n );\n ctx.bezierCurveTo(\n 128.107_91,\n 77.113_707,\n 128.206_25,\n 78.221_674,\n 127.022_41,\n 80.107_833,\n );\n ctx.bezierCurveTo(\n 126.098_03,\n 81.580_483,\n 125.338_23,\n 82.027_523,\n 124.421_42,\n 81.637_993,\n );\n ctx.bezierCurveTo(\n 124.085_97,\n 81.495_103,\n 122.830_83,\n 80.446_963,\n 121.632_78,\n 79.308_273,\n );\n ctx.bezierCurveTo(\n 119.011_73,\n 76.816_96,\n 118.077_77,\n 76.202_402,\n 116.912_78,\n 76.202_402,\n );\n ctx.bezierCurveTo(\n 115.314_39,\n 76.202_402,\n 114.918_52,\n 77.084_076,\n 114.977_54,\n 80.512_803,\n );\n ctx.bezierCurveTo(\n 115.005_94,\n 82.147_213,\n 115.257_98,\n 84.428_633,\n 115.537_17,\n 85.582_623,\n );\n ctx.bezierCurveTo(\n 116.427_16,\n 89.254_553,\n 116.499_62,\n 90.696_633,\n 115.824_69,\n 91.302_373,\n );\n ctx.bezierCurveTo(\n 115.195_06,\n 91.867_403,\n 111.732_71,\n 93.728_673,\n 111.311_27,\n 93.728_673,\n );\n ctx.bezierCurveTo(\n 111.171_62,\n 93.728_673,\n 110.847_76,\n 93.145_433,\n 110.591_46,\n 92.432_703,\n );\n ctx.scale(1 / SCALE_FACTOR, 1 / SCALE_FACTOR);\n ctx.closePath();\n});\n\nshapeFunctions.set(\"moon\", (ctx: CanvasRenderingContext2D) => {\n ctx.scale(0.25, 0.25);\n ctx.beginPath();\n ctx.scale(SCALE_FACTOR, SCALE_FACTOR);\n ctx.translate(-414.893_82, -203.536_19);\n ctx.moveTo(374.946_29, 141.086_53);\n ctx.bezierCurveTo(\n 340.464_47,\n 163.1565,\n 330.404_13,\n 209.013_71,\n 352.476_55,\n 243.488_28,\n );\n ctx.bezierCurveTo(\n 374.549_45,\n 277.965_45,\n 420.410_39,\n 288.024_39,\n 454.892_22,\n 265.955_19,\n );\n ctx.bezierCurveTo(\n 477.025_72,\n 251.7884,\n 489.042_88,\n 227.834_33,\n 489.011_38,\n 203.371_39,\n );\n ctx.bezierCurveTo(\n 485.2623,\n 214.509_46,\n 477.9108,\n 224.512_67,\n 467.2415,\n 231.3414,\n );\n ctx.bezierCurveTo(\n 442.362_79,\n 247.265_42,\n 409.218_42,\n 239.994_58,\n 393.293_88,\n 215.119_47,\n );\n ctx.bezierCurveTo(\n 377.367_61,\n 190.244_11,\n 384.683_48,\n 157.175_02,\n 409.562_19,\n 141.249_94,\n );\n ctx.bezierCurveTo(\n 418.141_55,\n 135.758_65,\n 427.650_37,\n 133.064_36,\n 437.139_06,\n 132.858_39,\n );\n ctx.bezierCurveTo(\n 416.929_67,\n 126.511_22,\n 394.181_38,\n 128.772_83,\n 374.943_62,\n 141.0852,\n );\n ctx.scale(1 / SCALE_FACTOR, 1 / SCALE_FACTOR);\n ctx.closePath();\n ctx.scale(4, 4);\n});\n\nshapeFunctions.set(\"hashtag\", (ctx: CanvasRenderingContext2D) => {\n ctx.translate(0, 6);\n ctx.scale(1 / 3, 1 / 3);\n ctx.beginPath();\n ctx.scale(SCALE_FACTOR, SCALE_FACTOR);\n ctx.moveTo(66.660_601, 59.539_431);\n ctx.moveTo(-15.043_961, -67.114_874);\n ctx.bezierCurveTo(\n -18.3138,\n -67.114_874,\n -21.483_707,\n -65.817_675,\n -23.969_688,\n -63.461_65,\n );\n ctx.bezierCurveTo(\n -26.452_065,\n -61.108_377,\n -27.975_591,\n -57.961_284,\n -28.261_528,\n -54.598_326,\n );\n ctx.lineTo(-29.398_805, -41.194_753);\n ctx.lineTo(-42.391_592, -41.194_753);\n ctx.bezierCurveTo(\n -45.661_435,\n -41.194_753,\n -48.831_339,\n -39.896_779,\n -51.317_317,\n -37.540_754,\n );\n ctx.bezierCurveTo(\n -53.799_696,\n -35.187_516,\n -55.324_118,\n -32.040_034,\n -55.609_163,\n -28.677_076,\n );\n ctx.bezierCurveTo(\n -55.905_037,\n -25.1886,\n -54.844_965,\n -21.891_788,\n -52.625_98,\n -19.395_357,\n );\n ctx.bezierCurveTo(\n -50.414_209,\n -16.908_205,\n -47.338_299,\n -15.538_687,\n -43.962_92,\n -15.538_687,\n );\n ctx.lineTo(-31.577_379, -15.538_687);\n ctx.lineTo(-32.857_175, -0.460_797);\n ctx.lineTo(-45.849_236, -0.460_797);\n ctx.bezierCurveTo(\n -49.119_082,\n -0.460_797,\n -52.288_623,\n 0.836_437,\n -54.774_604,\n 3.192_462,\n );\n ctx.bezierCurveTo(\n -57.256_979,\n 5.545_735,\n -58.780_506,\n 8.692_97,\n -59.066_446,\n 12.055_01,\n );\n ctx.bezierCurveTo(\n -59.362_321,\n 15.544_475,\n -58.303_512,\n 18.840_299,\n -56.083_624,\n 21.336_73,\n );\n ctx.bezierCurveTo(\n -53.872_76,\n 23.823_847,\n -50.795_943,\n 25.193_435,\n -47.420_567,\n 25.193_435,\n );\n ctx.lineTo(-35.033_943, 25.193_435);\n ctx.lineTo(-36.1189, 37.975_907);\n ctx.bezierCurveTo(\n -36.414_775,\n 41.464_418,\n -35.355_966,\n 44.760_628,\n -33.136_078,\n 47.257_978,\n );\n ctx.bezierCurveTo(\n -30.925_217,\n 49.745_098,\n -27.848_401,\n 51.114_648,\n -24.473_021,\n 51.114_648,\n );\n ctx.bezierCurveTo(\n -21.203_175,\n 51.114_648,\n -18.033_454,\n 49.817_448,\n -15.548_373,\n 47.461_388,\n );\n ctx.bezierCurveTo(\n -13.065_097,\n 45.108_148,\n -11.540_491,\n 41.960_878,\n -11.255_451,\n 38.598_842,\n );\n ctx.bezierCurveTo(\n -11.253_651,\n 38.581_202,\n -11.252_051,\n 38.563_562,\n -11.251_251,\n 38.545_922,\n );\n ctx.lineTo(-10.118_306, 25.193_326);\n ctx.lineTo(4.482_971, 25.194_526);\n ctx.lineTo(3.398_737, 37.975_093);\n ctx.bezierCurveTo(\n 3.101_98,\n 41.464_598,\n 4.161_855,\n 44.760_418,\n 6.380_836,\n 47.256_848,\n );\n ctx.bezierCurveTo(\n 8.5917,\n 49.744_888,\n 11.668_513,\n 51.114_648,\n 15.0439,\n 51.114_648,\n );\n ctx.bezierCurveTo(\n 18.313_735,\n 51.114_648,\n 21.483_283,\n 49.817_448,\n 23.969_264,\n 47.461_388,\n );\n ctx.bezierCurveTo(\n 26.451_636,\n 45.108_158,\n 27.976_242,\n 41.961_058,\n 28.262_186,\n 38.598_098,\n );\n ctx.bezierCurveTo(\n 28.263_107,\n 38.587_518,\n 28.263_886,\n 38.576_928,\n 28.264_686,\n 38.566_348,\n );\n ctx.lineTo(29.399_434, 25.195_514);\n ctx.lineTo(42.392_238, 25.195_514);\n ctx.bezierCurveTo(\n 42.420_438,\n 25.195_514,\n 42.446_238,\n 25.195_338,\n 42.473_338,\n 25.194_314,\n );\n ctx.bezierCurveTo(\n 45.714_308,\n 25.173_144,\n 48.852_658,\n 23.877_925,\n 51.317_898,\n 21.541_408,\n );\n ctx.bezierCurveTo(\n 53.800_258,\n 19.188_17,\n 55.324_708,\n 16.0409,\n 55.609_758,\n 12.678_859,\n );\n ctx.bezierCurveTo(\n 55.905_738,\n 9.190_383,\n 54.846_418,\n 5.894_135,\n 52.626_558,\n 3.396_752,\n );\n ctx.bezierCurveTo(\n 50.415_668,\n 0.909_635,\n 47.338_888,\n -0.459_918,\n 43.956_318,\n -0.459_918,\n );\n ctx.lineTo(31.576_863, -0.459_918);\n ctx.lineTo(32.857_019, -15.537_773);\n ctx.lineTo(45.848_718, -15.537_773);\n ctx.bezierCurveTo(\n 49.118_578,\n -15.537_773,\n 52.288_498,\n -16.835_783,\n 54.774_448,\n -19.191_772,\n );\n ctx.bezierCurveTo(\n 57.256_808,\n -21.544_128,\n 58.781_228,\n -24.692_28,\n 59.066_308,\n -28.054_321,\n );\n ctx.bezierCurveTo(\n 59.362_288,\n -31.542_868,\n 58.303_178,\n -34.838_904,\n 56.084_168,\n -37.335_334,\n );\n ctx.bezierCurveTo(\n 53.872_428,\n -39.823_369,\n 50.795_438,\n -41.192_745,\n 47.412_828,\n -41.192_745,\n );\n ctx.lineTo(35.034_535, -41.192_745);\n ctx.lineTo(36.118_762, -53.974_477);\n ctx.bezierCurveTo(\n 36.415_448,\n -57.463_941,\n 35.356_551,\n -60.759_765,\n 33.136_659,\n -63.256_196,\n );\n ctx.bezierCurveTo(\n 30.925_798,\n -65.743_313,\n 27.848_985,\n -67.113_995,\n 24.473_602,\n -67.113_995,\n );\n ctx.bezierCurveTo(\n 21.203_756,\n -67.113_995,\n 18.033_859,\n -65.816_02,\n 15.547_875,\n -63.459_995,\n );\n ctx.bezierCurveTo(\n 13.065_499,\n -61.107_674,\n 11.541_073,\n -57.960_405,\n 11.256_032,\n -54.597_447,\n );\n ctx.lineTo(10.117_675, -41.192_745);\n ctx.lineTo(-4.483_245, -41.192_745);\n ctx.lineTo(-3.398_285, -53.975_218);\n ctx.bezierCurveTo(\n -3.102_41,\n -57.463_729,\n -4.161_402,\n -60.759_942,\n -6.380_384,\n -63.257_289,\n );\n ctx.bezierCurveTo(\n -8.592_148,\n -65.744_442,\n -11.668_788,\n -67.113_995,\n -15.044_167,\n -67.113_995,\n );\n ctx.moveTo(-9.834_935, -22.679_328);\n ctx.lineTo(11.719_884, -22.679_328);\n ctx.bezierCurveTo(\n 12.691_359,\n -22.679_328,\n 13.617_742,\n -22.259_064,\n 14.274_42,\n -21.520_842,\n );\n ctx.bezierCurveTo(\n 14.930_188,\n -20.782_585,\n 15.255_823,\n -19.794_984,\n 15.171_032,\n -18.797_364,\n );\n ctx.lineTo(13.285_793, 3.420_074);\n ctx.bezierCurveTo(\n 13.128_842,\n 5.264_713,\n 11.630_578,\n 6.679_104,\n 9.834_647,\n 6.679_104,\n );\n ctx.lineTo(-11.720_175, 6.679_104);\n ctx.bezierCurveTo(\n -12.691_654,\n 6.679_104,\n -13.618_037,\n 6.259_581,\n -14.274_712,\n 5.521_358,\n );\n ctx.bezierCurveTo(\n -14.930_483,\n 4.783_101,\n -15.256_114,\n 3.795_888,\n -15.171_328,\n 2.798_268,\n );\n ctx.lineTo(-13.285_008, -19.420_263);\n ctx.bezierCurveTo(\n -13.128_058,\n -21.264_055,\n -11.629_97,\n -22.679_328,\n -9.834_935,\n -22.679_328,\n );\n ctx.scale(1 / SCALE_FACTOR, 1 / SCALE_FACTOR);\n ctx.closePath();\n ctx.scale(3, 3);\n});\n\nshapeFunctions.set(\"katakanaNu\", (ctx: CanvasRenderingContext2D) => {\n ctx.beginPath();\n ctx.scale(SCALE_FACTOR, SCALE_FACTOR);\n ctx.transform(1, 0, 0, 1, -9.007_581, -241.9803);\n ctx.moveTo(-3, 222);\n ctx.bezierCurveTo(\n -4.390_911,\n 222.140_16,\n -5.018_266,\n 223.632_99,\n -4.794_479,\n 225.270_79,\n );\n ctx.bezierCurveTo(\n -4.861_259,\n 227.065_24,\n -4.975_042,\n 229.190_11,\n -3.414_768,\n 230.266_66,\n );\n ctx.bezierCurveTo(\n -2.003_446,\n 230.945_52,\n -0.143_619,\n 230.339_56,\n 1.429_478,\n 230.541_64,\n );\n ctx.bezierCurveTo(\n 5.248_937,\n 230.687_94,\n 9.134_292,\n 230.261_05,\n 12.919_257,\n 230.838_65,\n );\n ctx.bezierCurveTo(\n 11.667_283,\n 233.945_39,\n 10.089_632,\n 237.005_52,\n 8.064_652,\n 239.546_02,\n );\n ctx.bezierCurveTo(\n 6.861_197,\n 239.804_96,\n 5.560_835,\n 238.713_51,\n 4.315_196,\n 238.529_16,\n );\n ctx.bezierCurveTo(\n 2.330_213,\n 237.901_47,\n -0.4248,\n 236.808_26,\n -1.8632,\n 239.191_95,\n );\n ctx.bezierCurveTo(\n -2.867_403,\n 240.922_51,\n -1.838_52,\n 243.288_88,\n -0.177_014,\n 243.883_49,\n );\n ctx.bezierCurveTo(\n 0.849_583,\n 244.537_51,\n 2.229_81,\n 244.751_12,\n 3.100_987,\n 245.5579,\n );\n ctx.bezierCurveTo(\n 1.258_662,\n 248.095_31,\n -1.541_109,\n 249.563_24,\n -3.965_663,\n 251.303_18,\n );\n ctx.bezierCurveTo(\n -6.163_495,\n 252.945_83,\n -8.768_01,\n 253.7252,\n -10.961_592,\n 255.3244,\n );\n ctx.bezierCurveTo(\n -12.754_129,\n 256.715_76,\n -11.735_929,\n 259.802_05,\n -9.850_583,\n 260.309_43,\n );\n ctx.bezierCurveTo(\n -7.236_942,\n 260.353_13,\n -4.780_344,\n 258.874_13,\n -2.328_94,\n 257.988_96,\n );\n ctx.bezierCurveTo(\n 2.091_71,\n 256.100_39,\n 6.117_787,\n 253.239_49,\n 9.950_07,\n 250.151_75,\n );\n ctx.bezierCurveTo(\n 11.712_105,\n 249.671_87,\n 12.937_119,\n 251.9695,\n 14.342_341,\n 252.798_64,\n );\n ctx.bezierCurveTo(\n 17.772_803,\n 255.597_09,\n 20.523_078,\n 259.281_47,\n 23.634_111,\n 262.487_44,\n );\n ctx.bezierCurveTo(\n 25.397_861,\n 263.853_97,\n 26.992_37,\n 261.325_74,\n 28.235_991,\n 260.220_52,\n );\n ctx.bezierCurveTo(\n 29.376_897,\n 259.218_26,\n 30.641_855,\n 257.238_42,\n 29.403_664,\n 255.721_35,\n );\n ctx.bezierCurveTo(\n 25.636_453,\n 250.906_43,\n 20.847_755,\n 247.306_73,\n 16.123_879,\n 243.834_66,\n );\n ctx.bezierCurveTo(\n 16.865_432,\n 242.059_93,\n 18.472_742,\n 240.518_66,\n 19.439_272,\n 238.756_24,\n );\n ctx.bezierCurveTo(\n 22.456_18,\n 234.241_25,\n 24.232_324,\n 228.399_21,\n 23.381_953,\n 222.726_77,\n );\n ctx.bezierCurveTo(\n 22.866_388,\n 221.468_51,\n 21.778_854,\n 220.8183,\n 20.555_392,\n 221.174_73,\n );\n ctx.bezierCurveTo(\n 12.638_927,\n 221.186_73,\n 4.707_749,\n 221.131_03,\n -3.199_645,\n 221.202_73,\n );\n ctx.scale(1 / SCALE_FACTOR, 1 / SCALE_FACTOR);\n ctx.closePath();\n});\n\n/** TODO */\nshapeFunctions.set(\"katakanaHe\", (ctx: CanvasRenderingContext2D) => {\n ctx.beginPath();\n ctx.scale(SCALE_FACTOR, SCALE_FACTOR);\n\n // Draw the curve for \"\u30D8\" using bezierCurveTo.\n ctx.bezierCurveTo(-10, 200, 10, 240, -10, 260);\n\n /*\n ctx.lineTo(10, 260);\n ctx.bezierCurveTo(0, 240, -20, 200, 20, 220);\n\n ctx.lineTo(0, 220);\n */\n\n ctx.scale(1 / SCALE_FACTOR, 1 / SCALE_FACTOR);\n ctx.closePath();\n});\n\nshapeFunctions.set(\"emptySet\", (ctx: CanvasRenderingContext2D) => {\n ctx.scale(2 / 7, 2 / 7);\n ctx.beginPath();\n ctx.scale(SCALE_FACTOR, SCALE_FACTOR);\n ctx.moveTo(18.066_96, -33.593_032);\n ctx.bezierCurveTo(\n 17.937_116,\n -34.945_908,\n 17.624_489,\n -35.265_144,\n 15.303_533,\n -36.414_909,\n );\n ctx.bezierCurveTo(\n 13.864_187,\n -37.127_948,\n 10.308_861,\n -38.313_716,\n 7.402_817,\n -39.049_953,\n );\n ctx.bezierCurveTo(\n -6.425_702,\n -42.553_351,\n -19.453_999,\n -39.314_305,\n -29.359_582,\n -29.910_263,\n );\n ctx.bezierCurveTo(\n -37.501_128,\n -22.180_935,\n -42.050_267,\n -10.684,\n -41.347_053,\n 0.385_397,\n );\n ctx.bezierCurveTo(\n -41.013_532,\n 5.635_746,\n -39.972_946,\n 9.549_568,\n -37.152_261,\n 16.163_069,\n );\n ctx.lineTo(-34.942_449, 21.344_279);\n ctx.lineTo(-8.364_535, -5.361_649);\n ctx.bezierCurveTo(\n 17.139_857,\n -30.988_877,\n 18.207_467,\n -32.129_19,\n 18.066_96,\n -33.593_032,\n );\n ctx.moveTo(5.603_533, 40.114_884);\n ctx.bezierCurveTo(\n 18.443_087,\n 38.252_884,\n 30.195_076,\n 29.803_314,\n 35.721_066,\n 18.460_658,\n );\n ctx.bezierCurveTo(\n 38.275_666,\n 13.217_072,\n 38.869_516,\n 10.218_417,\n 38.842_216,\n 2.700_461,\n );\n ctx.bezierCurveTo(\n 38.812_316,\n -5.501_334,\n 37.619_886,\n -11.694_394,\n 34.983_536,\n -17.338_568,\n );\n ctx.lineTo(33.192_096, -21.173_866);\n ctx.lineTo(19.886_003, -7.949_57);\n ctx.bezierCurveTo(\n 5.092_643,\n 6.752_854,\n -12.4197,\n 24.558_808,\n -16.754_248,\n 29.304_984,\n );\n ctx.bezierCurveTo(\n -18.576_124,\n 31.299_864,\n -19.583_283,\n 32.791_904,\n -19.583_283,\n 33.495_994,\n );\n ctx.bezierCurveTo(\n -19.583_283,\n 34.804_184,\n -18.010_991,\n 36.027_254,\n -14.540_973,\n 37.418_404,\n );\n ctx.bezierCurveTo(\n -7.406_745,\n 40.278_564,\n -1.228_098,\n 41.105_614,\n 5.603_533,\n 40.114_884,\n );\n ctx.moveTo(-70.961_668, 72.098_354);\n ctx.bezierCurveTo(\n -72.007_521,\n 71.215_564,\n -72.848_172,\n 69.767_224,\n -73.254_683,\n 68.147_744,\n );\n ctx.bezierCurveTo(\n -74.310_054,\n 63.943_354,\n -73.110_785,\n 62.108_514,\n -61.628_224,\n 50.359_954,\n );\n ctx.bezierCurveTo(\n -56.064_325,\n 44.667_154,\n -51.512_034,\n 39.823_104,\n -51.512_034,\n 39.595_414,\n );\n ctx.bezierCurveTo(\n -51.512_034,\n 39.367_754,\n -52.884_405,\n 36.746_844,\n -54.561_735,\n 33.771_244,\n );\n ctx.bezierCurveTo(\n -58.102_513,\n 27.489_874,\n -61.680_206,\n 17.244_693,\n -63.009_578,\n 9.579_806,\n );\n ctx.bezierCurveTo(\n -65.363_319,\n -3.991_429,\n -61.413_282,\n -22.264_582,\n -53.589_285,\n -33.999_13,\n );\n ctx.bezierCurveTo(\n -50.286_636,\n -38.952_503,\n -42.060_615,\n -47.482_443,\n -36.981_141,\n -51.220_879,\n );\n ctx.bezierCurveTo(\n -21.607_703,\n -62.535_576,\n 0.534_45,\n -65.806_397,\n 19.745_235,\n -59.600_455,\n );\n ctx.bezierCurveTo(\n 22.204_314,\n -58.806_068,\n 27.589_996,\n -56.396_781,\n 31.713_436,\n -54.246_479,\n );\n ctx.lineTo(39.210_586, -50.336_856);\n ctx.lineTo(44.284_316, -55.795_686);\n ctx.bezierCurveTo(\n 50.534_776,\n -62.520_561,\n 59.178_086,\n -70.298_349,\n 62.013_226,\n -71.749_269,\n );\n ctx.bezierCurveTo(\n 63.178_396,\n -72.345_549,\n 64.837_846,\n -72.833_439,\n 65.700_876,\n -72.833_439,\n );\n ctx.bezierCurveTo(\n 69.748_316,\n -72.833_439,\n 73.929_256,\n -67.197_129,\n 72.560_576,\n -63.585_937,\n );\n ctx.bezierCurveTo(\n 71.640_246,\n -61.157_693,\n 66.840_296,\n -55.429_127,\n 58.367_846,\n -46.647_432,\n );\n ctx.lineTo(50.817_656, -38.821_666);\n ctx.lineTo(54.663_266, -30.728_187);\n ctx.bezierCurveTo(\n 59.200_806,\n -21.178_501,\n 61.029_016,\n -15.9635,\n 62.199_266,\n -9.231_772,\n );\n ctx.bezierCurveTo(\n 64.012_526,\n 1.198_819,\n 62.785_926,\n 11.912_655,\n 58.527_336,\n 22.841_222,\n );\n ctx.bezierCurveTo(\n 48.469_396,\n 48.652_304,\n 26.793_386,\n 63.400_694,\n -1.083_752,\n 63.400_694,\n );\n ctx.bezierCurveTo(\n -12.913_562,\n 63.400_694,\n -21.748_215,\n 61.004_524,\n -33.291_158,\n 54.665_244,\n );\n ctx.bezierCurveTo(\n -36.333_509,\n 52.994_414,\n -39.085_355,\n 51.627_384,\n -39.406_377,\n 51.627_384,\n );\n ctx.bezierCurveTo(\n -39.727_406,\n 51.627_384,\n -44.405_839,\n 56.008_504,\n -49.802_924,\n 61.363_214,\n );\n ctx.bezierCurveTo(\n -55.311_645,\n 66.828_704,\n -60.647_873,\n 71.623_884,\n -61.968_783,\n 72.295_584,\n );\n ctx.bezierCurveTo(\n -65.257_998,\n 73.968_204,\n -68.839_478,\n 73.889_654,\n -70.961_668,\n 72.098_364,\n );\n ctx.scale(1 / SCALE_FACTOR, 1 / SCALE_FACTOR);\n ctx.closePath();\n});\n\nshapeFunctions.set(\n \"infinity\",\n (ctx: CanvasRenderingContext2D, colors?: readonly string[]) => {\n ctx.scale(1.2, 1.2);\n ctx.beginPath();\n ctx.scale(SCALE_FACTOR, SCALE_FACTOR);\n ctx.translate(-91.082_135, -80.110_718);\n ctx.transform(2.128_652, 0, 0, 2.476_848, -78.229_708, -213.117_53);\n ctx.moveTo(84.443_554, 124.560_58);\n ctx.bezierCurveTo(\n 86.918_78,\n 124.464_38,\n 89.392_846,\n 122.020_23,\n 89.392_11,\n 117.589_85,\n );\n ctx.bezierCurveTo(\n 89.392_11,\n 117.082_88,\n 88.432_933,\n 116.691_02,\n 87.515_841,\n 116.429_29,\n );\n ctx.bezierCurveTo(\n 86.129_485,\n 111.085_71,\n 80.894_815,\n 111.014_25,\n 78.815_855,\n 115.1772,\n );\n ctx.bezierCurveTo(\n 76.486_172,\n 109.953_16,\n 69.685_595,\n 111.837_18,\n 69.686_815,\n 119.181_05,\n );\n ctx.bezierCurveTo(\n 69.686_815,\n 119.688_13,\n 70.646_062,\n 120.081_25,\n 71.562_529,\n 120.342_24,\n );\n ctx.bezierCurveTo(\n 72.949_924,\n 125.686_47,\n 78.184_271,\n 125.757_92,\n 80.263_07,\n 121.594_34,\n );\n ctx.bezierCurveTo(\n 81.188_027,\n 123.667_36,\n 82.815_125,\n 124.623_69,\n 84.443_554,\n 124.560_58,\n );\n ctx.moveTo(83.404_271, 120.906_82);\n ctx.bezierCurveTo(\n 82.731_479,\n 120.875_12,\n 82.029_116,\n 120.638_01,\n 81.439_628,\n 120.352_81,\n );\n ctx.bezierCurveTo(\n 80.979_448,\n 115.091_15,\n 84.019_975,\n 115.515_67,\n 85.906_337,\n 116.429_29,\n );\n ctx.bezierCurveTo(\n 86.222_708,\n 120.046_69,\n 84.884_415,\n 120.975_85,\n 83.404_271,\n 120.906_82,\n );\n ctx.moveTo(75.136_667, 120.896_22);\n ctx.bezierCurveTo(\n 74.463_876,\n 120.864_52,\n 73.761_523,\n 120.627_41,\n 73.172_033,\n 120.342_21,\n );\n ctx.bezierCurveTo(\n 72.711_854,\n 115.080_55,\n 75.752_37,\n 115.504_43,\n 77.638_733,\n 116.418_06,\n );\n ctx.bezierCurveTo(\n 77.955_104,\n 120.035_45,\n 76.616_822,\n 120.965_25,\n 75.136_667,\n 120.896_22,\n );\n ctx.transform(1 / 2.128_652, 0, 0, 1 / 2.476_848, 0, 0);\n ctx.scale(1 / SCALE_FACTOR, 1 / SCALE_FACTOR);\n ctx.closePath();\n ctx.scale(5 / 6, 5 / 6);\n if (colors !== undefined) {\n // When multiple colors are passed, create a gradient.\n const gradient = ctx.createLinearGradient(500, 0, 700, 0);\n for (const [i, color] of colors.entries()) {\n gradient.addColorStop(i / (colors.length - 1), color);\n }\n ctx.fillStyle = gradient;\n ctx.fill();\n }\n },\n);\n\nshapeFunctions.set(\n \"rainbow\",\n (ctx: CanvasRenderingContext2D, colors?: readonly string[]) => {\n ctx.scale(SCALE_FACTOR, SCALE_FACTOR);\n ctx.translate(-122.267_24, -111.175_04);\n\n // Yellow\n ctx.beginPath();\n ctx.moveTo(120.7045, 112.947_54);\n ctx.lineTo(121.467_55, 113.309_24);\n ctx.lineTo(121.3414, 113.713_76);\n ctx.bezierCurveTo(\n 121.153_57,\n 114.315_89,\n 121.104_36,\n 114.721_15,\n 121.104_01,\n 115.676_75,\n );\n ctx.bezierCurveTo(\n 121.103_14,\n 117.424_85,\n 121.509_72,\n 119.549_68,\n 122.317_69,\n 122.022_33,\n );\n ctx.bezierCurveTo(\n 122.801_75,\n 123.503_96,\n 123.088_36,\n 124.223_01,\n 123.721_24,\n 125.545_95,\n );\n ctx.bezierCurveTo(\n 124.650_53,\n 127.488_62,\n 125.149_67,\n 128.299_14,\n 126.102_63,\n 129.413_37,\n );\n ctx.bezierCurveTo(\n 126.370_52,\n 129.726_31,\n 126.741_33,\n 130.159_83,\n 126.926_29,\n 130.376_31,\n );\n ctx.bezierCurveTo(\n 127.415_52,\n 130.947_49,\n 127.4699,\n 131.134_59,\n 127.200_76,\n 131.314_24,\n );\n ctx.bezierCurveTo(\n 126.711_53,\n 131.640_58,\n 123.8357,\n 131.5418,\n 120.8336,\n 131.095_14,\n );\n ctx.bezierCurveTo(\n 116.440_76,\n 130.441_57,\n 112.916_81,\n 129.222_99,\n 112.435_89,\n 128.191_37,\n );\n ctx.bezierCurveTo(\n 112.279_59,\n 127.855_85,\n 112.353_09,\n 126.613_21,\n 112.620_95,\n 125.0753,\n );\n ctx.bezierCurveTo(\n 113.304_71,\n 121.143_78,\n 115.386_25,\n 116.9963,\n 118.045_66,\n 114.2666,\n );\n ctx.bezierCurveTo(\n 118.602_19,\n 113.695_41,\n 119.833_22,\n 112.584_33,\n 119.908_67,\n 112.585_32,\n );\n ctx.bezierCurveTo(\n 119.925_97,\n 112.585_56,\n 120.285_31,\n 112.748_66,\n 120.704_91,\n 112.947_79,\n );\n if (colors !== undefined) {\n ctx.fillStyle = colors[1]!;\n ctx.fill();\n }\n ctx.closePath();\n\n // Purple\n ctx.beginPath();\n ctx.moveTo(118.989_89, 90.936_255);\n ctx.bezierCurveTo(\n 119.304_21,\n 91.041_735,\n 119.369_09,\n 91.109_475,\n 119.802_41,\n 91.787_675,\n );\n ctx.bezierCurveTo(\n 121.387_88,\n 94.269_495,\n 122.408,\n 97.267_715,\n 122.818_46,\n 100.652_65,\n );\n ctx.bezierCurveTo(\n 122.952_57,\n 101.759_78,\n 122.952_92,\n 104.338_59,\n 122.819_43,\n 105.349_59,\n );\n ctx.bezierCurveTo(\n 122.7068,\n 106.202_06,\n 122.515_16,\n 107.140_97,\n 122.326_32,\n 107.771_96,\n );\n ctx.lineTo(122.187, 108.2371);\n ctx.lineTo(121.930_55, 108.2896);\n ctx.bezierCurveTo(\n 121.178,\n 108.452_94,\n 120.443_93,\n 108.579_59,\n 120.384_56,\n 108.556_66,\n );\n ctx.bezierCurveTo(\n 120.345_76,\n 108.542_46,\n 120.286_86,\n 108.397_91,\n 120.250_45,\n 108.235_97,\n );\n ctx.bezierCurveTo(\n 119.925_73,\n 106.801_33,\n 118.037_06,\n 104.644_61,\n 115.188_27,\n 102.455_36,\n );\n ctx.bezierCurveTo(\n 112.247_36,\n 100.195_28,\n 108.836_67,\n 98.496_875,\n 106.756_57,\n 98.256_765,\n );\n ctx.bezierCurveTo(\n 105.978_51,\n 98.167_165,\n 105.387_61,\n 97.957_585,\n 105.267_41,\n 97.729_075,\n );\n ctx.bezierCurveTo(\n 105.074_04,\n 97.360_785,\n 105.669_28,\n 96.739_035,\n 107.188_93,\n 95.723_645,\n );\n ctx.bezierCurveTo(\n 110.261_11,\n 93.670_755,\n 114.325_17,\n 91.716_045,\n 116.863_79,\n 91.070_105,\n );\n ctx.bezierCurveTo(\n 117.650_79,\n 90.869_705,\n 118.613_07,\n 90.808_665,\n 118.989_64,\n 90.934_275,\n );\n if (colors !== undefined) {\n ctx.fillStyle = colors[4]!;\n ctx.fill();\n }\n ctx.closePath();\n\n // Red\n ctx.beginPath();\n ctx.moveTo(109.895_01, 106.209_43);\n ctx.bezierCurveTo(\n 112.598_28,\n 106.441_23,\n 115.232_04,\n 107.157_59,\n 117.396_17,\n 108.249_98,\n );\n ctx.bezierCurveTo(\n 118.112_17,\n 108.6117,\n 119.045_74,\n 109.169_09,\n 119.308_26,\n 109.392_21,\n );\n ctx.lineTo(119.481_19, 109.538_97);\n ctx.lineTo(119.396_29, 110.419_39);\n ctx.bezierCurveTo(\n 119.350_89,\n 110.903_58,\n 119.300_59,\n 111.311_45,\n 119.287_82,\n 111.325_81,\n );\n ctx.bezierCurveTo(\n 119.273_92,\n 111.340_01,\n 118.942_99,\n 111.372_01,\n 118.550_93,\n 111.391_81,\n );\n ctx.bezierCurveTo(\n 117.515_81,\n 111.444_31,\n 116.911_73,\n 111.632_42,\n 115.457_47,\n 112.342_47,\n );\n ctx.bezierCurveTo(\n 112.806_01,\n 113.637_47,\n 109.673_07,\n 116.012_57,\n 107.539_51,\n 118.345_08,\n );\n ctx.bezierCurveTo(\n 106.571_78,\n 119.403_04,\n 106.039_65,\n 120.152_22,\n 105.409_36,\n 121.344_05,\n );\n ctx.bezierCurveTo(\n 104.742_76,\n 122.604_37,\n 104.485_37,\n 122.824_76,\n 104.131_06,\n 122.438_62,\n );\n ctx.bezierCurveTo(\n 103.598_47,\n 121.858_26,\n 102.938_22,\n 119.465_55,\n 102.378_67,\n 116.089_09,\n );\n ctx.bezierCurveTo(\n 101.960_58,\n 113.564_93,\n 101.900_42,\n 112.892_63,\n 101.897_82,\n 110.696_79,\n );\n ctx.bezierCurveTo(\n 101.895_82,\n 108.890_12,\n 101.900_82,\n 108.741_24,\n 102.014_96,\n 108.2899,\n );\n ctx.bezierCurveTo(\n 102.158_43,\n 107.709_46,\n 102.343_84,\n 107.321_48,\n 102.568_27,\n 107.129_11,\n );\n ctx.bezierCurveTo(\n 102.855_56,\n 106.882_85,\n 104.280_19,\n 106.522_36,\n 105.7631,\n 106.320_83,\n );\n ctx.bezierCurveTo(\n 106.706_17,\n 106.192_41,\n 108.973_62,\n 106.132_43,\n 109.895_77,\n 106.211_46,\n );\n if (colors !== undefined) {\n ctx.fillStyle = colors[0]!;\n ctx.fill();\n }\n ctx.closePath();\n\n // Blue\n ctx.beginPath();\n ctx.moveTo(129.447_17, 90.861_735);\n ctx.bezierCurveTo(\n 130.388_35,\n 91.250_415,\n 132.5268,\n 93.071_585,\n 134.783_09,\n 95.405_515,\n );\n ctx.bezierCurveTo(\n 137.747_53,\n 98.471_965,\n 139.321_58,\n 100.778_56,\n 139.321_58,\n 102.0561,\n );\n ctx.bezierCurveTo(\n 139.321_58,\n 102.333_05,\n 139.304_28,\n 102.373_26,\n 138.950_77,\n 102.834_41,\n );\n ctx.bezierCurveTo(\n 137.180_25,\n 105.157_06,\n 134.363_65,\n 107.322_91,\n 131.309_42,\n 108.710_27,\n );\n ctx.bezierCurveTo(\n 129.060_72,\n 109.731_74,\n 127.140_08,\n 110.2505,\n 125.084_42,\n 110.391_52,\n );\n ctx.bezierCurveTo(\n 124.641_13,\n 110.423_32,\n 124.273_44,\n 110.437_72,\n 124.267_68,\n 110.431_02,\n );\n ctx.bezierCurveTo(\n 124.190_08,\n 110.3287,\n 123.377_73,\n 108.854_59,\n 123.378_77,\n 108.8175,\n );\n ctx.bezierCurveTo(\n 123.3795,\n 108.7928,\n 123.505_61,\n 108.679_92,\n 123.658_78,\n 108.573_72,\n );\n ctx.bezierCurveTo(\n 124.340_67,\n 108.1033,\n 124.877_97,\n 107.458_62,\n 125.544_74,\n 106.311_52,\n );\n ctx.bezierCurveTo(\n 126.946_77,\n 103.899_48,\n 128.280_38,\n 99.923_625,\n 128.7263,\n 96.826_095,\n );\n ctx.bezierCurveTo(\n 128.979_98,\n 95.063_385,\n 128.991_76,\n 94.014_185,\n 128.7779,\n 92.039_045,\n );\n ctx.bezierCurveTo(\n 128.7131,\n 91.440_205,\n 128.7391,\n 90.948_825,\n 128.8361,\n 90.824_745,\n );\n ctx.bezierCurveTo(\n 128.9228,\n 90.718_545,\n 129.131_72,\n 90.730_545,\n 129.444_42,\n 90.856_545,\n );\n if (colors !== undefined) {\n ctx.fillStyle = colors[3]!;\n ctx.fill();\n }\n ctx.closePath();\n\n // Green\n ctx.beginPath();\n ctx.moveTo(142.647_93, 111.570_55);\n ctx.bezierCurveTo(\n 142.947_36,\n 112.036_36,\n 142.445_89,\n 113.716_33,\n 141.134_21,\n 116.637_04,\n );\n ctx.bezierCurveTo(\n 139.036_09,\n 121.309_35,\n 136.6023,\n 124.828_13,\n 135.2139,\n 125.196_63,\n );\n ctx.bezierCurveTo(\n 134.984_82,\n 125.255_83,\n 134.934_91,\n 125.249_13,\n 134.349_06,\n 125.029_41,\n );\n ctx.bezierCurveTo(\n 130.466_84,\n 123.581_04,\n 126.571_73,\n 120.233_38,\n 124.279_71,\n 116.375_26,\n );\n ctx.bezierCurveTo(\n 123.695_97,\n 115.392_36,\n 123.062_92,\n 114.006_44,\n 122.815_96,\n 113.169_63,\n );\n ctx.bezierCurveTo(\n 122.791_66,\n 113.082_23,\n 122.918_19,\n 112.913_49,\n 123.421_68,\n 112.373_88,\n );\n ctx.lineTo(124.059_75, 111.6892);\n ctx.lineTo(124.380_67, 111.942_87);\n ctx.bezierCurveTo(\n 125.369_56,\n 112.725_24,\n 127.163_57,\n 113.223_22,\n 129.9172,\n 113.479_75,\n );\n ctx.bezierCurveTo(\n 130.856_05,\n 113.567_15,\n 133.7227,\n 113.566_85,\n 134.700_58,\n 113.479,\n );\n ctx.bezierCurveTo(\n 137.556_26,\n 113.222_87,\n 139.344_97,\n 112.778_65,\n 141.095_71,\n 111.891_04,\n );\n ctx.bezierCurveTo(\n 141.775_96,\n 111.546,\n 141.980_05,\n 111.466_79,\n 142.239_03,\n 111.447_71,\n );\n ctx.bezierCurveTo(\n 142.532_22,\n 111.430_11,\n 142.560_64,\n 111.433_51,\n 142.648,\n 111.570_48,\n );\n if (colors !== undefined) {\n ctx.fillStyle = colors[2]!;\n ctx.fill();\n }\n ctx.closePath();\n\n // Center\n ctx.beginPath();\n ctx.moveTo(121.056_85, 112.245);\n ctx.lineTo(120.182_83, 111.841_47);\n ctx.lineTo(120.098_93, 111.683_76);\n ctx.lineTo(120.015_03, 111.526_06);\n ctx.lineTo(120.095_13, 110.657_95);\n ctx.bezierCurveTo(\n 120.200_82,\n 109.512_76,\n 120.191_43,\n 109.565_68,\n 120.311_03,\n 109.425_97,\n );\n ctx.lineTo(120.412_91, 109.306_72);\n ctx.lineTo(121.366_19, 109.116_56);\n ctx.lineTo(122.3195, 108.9264);\n ctx.lineTo(122.440_44, 108.9861);\n ctx.bezierCurveTo(\n 122.506_94,\n 109.0179,\n 122.579_41,\n 109.0549,\n 122.601_24,\n 109.0662,\n );\n ctx.bezierCurveTo(\n 122.622_04,\n 109.0768,\n 122.867_75,\n 109.478_88,\n 123.144_95,\n 109.958_16,\n );\n ctx.lineTo(123.648_74, 110.829_58);\n ctx.lineTo(123.631_44, 110.986_23);\n ctx.bezierCurveTo(\n 123.614_14,\n 111.1411,\n 123.607_14,\n 111.150_63,\n 122.945_46,\n 111.861_89,\n );\n ctx.bezierCurveTo(\n 122.359_67,\n 112.492_48,\n 122.263_65,\n 112.583_46,\n 122.1645,\n 112.601_78,\n );\n ctx.bezierCurveTo(\n 122.1025,\n 112.612_38,\n 122.024_49,\n 112.629_98,\n 121.991_56,\n 112.637_08,\n );\n ctx.bezierCurveTo(\n 121.956_56,\n 112.644_08,\n 121.5644,\n 112.480_79,\n 121.057_46,\n 112.246_63,\n );\n if (colors !== undefined) {\n ctx.fillStyle = \"#000000\";\n ctx.fill();\n }\n ctx.closePath();\n\n // External path\n ctx.beginPath();\n ctx.moveTo(143.094_54, 111.199_23);\n ctx.bezierCurveTo(\n 142.981_22,\n 111.042_58,\n 142.755_96,\n 110.850_66,\n 142.345_53,\n 110.850_66,\n );\n ctx.bezierCurveTo(\n 141.664_93,\n 110.850_66,\n 140.830_18,\n 111.390_83,\n 140.810_91,\n 111.404_02,\n );\n ctx.bezierCurveTo(\n 139.036_65,\n 112.404_09,\n 135.849_82,\n 112.998_91,\n 132.292_74,\n 112.998_91,\n );\n ctx.bezierCurveTo(\n 128.761_34,\n 112.998_91,\n 125.711_47,\n 112.388_84,\n 124.7056,\n 111.480_23,\n );\n ctx.bezierCurveTo(\n 124.517_07,\n 111.310_53,\n 124.339_32,\n 111.163_77,\n 124.168_47,\n 111.042_16,\n );\n ctx.bezierCurveTo(\n 124.199_67,\n 111.042_16,\n 124.233_27,\n 111.049_16,\n 124.266_87,\n 111.049_16,\n );\n ctx.bezierCurveTo(\n 129.705_23,\n 111.049_16,\n 136.348_57,\n 107.523_82,\n 139.713_07,\n 102.850_18,\n );\n ctx.bezierCurveTo(\n 139.933_82,\n 102.545,\n 140.004_53,\n 102.144_28,\n 139.924_47,\n 101.658_34,\n );\n ctx.bezierCurveTo(\n 139.436_55,\n 98.710_385,\n 133.157_03,\n 92.616_215,\n 130.637_96,\n 90.833_955,\n );\n ctx.bezierCurveTo(\n 129.505_76,\n 90.032_105,\n 128.739_52,\n 89.938_435,\n 128.339_38,\n 90.461_075,\n );\n ctx.bezierCurveTo(\n 127.879_23,\n 91.075_735,\n 128.183_09,\n 92.332_695,\n 128.217_05,\n 92.456_845,\n );\n ctx.bezierCurveTo(\n 129.086_04,\n 97.041_095,\n 125.749_36,\n 106.619_27,\n 123.318,\n 108.074_75,\n );\n ctx.bezierCurveTo(\n 123.078_53,\n 108.218_35,\n 122.874_76,\n 108.359_83,\n 122.695_48,\n 108.501_65,\n );\n ctx.bezierCurveTo(\n 124.441_95,\n 103.276_82,\n 123.329_02,\n 95.751_145,\n 119.883_18,\n 90.883_595,\n );\n ctx.bezierCurveTo(\n 119.596_57,\n 90.480_445,\n 119.082_74,\n 90.278_155,\n 118.355_04,\n 90.278_155,\n );\n ctx.bezierCurveTo(\n 115.146_81,\n 90.278_155,\n 108.096_85,\n 94.224_045,\n 105.858_17,\n 95.960_535,\n );\n ctx.bezierCurveTo(\n 104.912_11,\n 96.690_485,\n 104.531_17,\n 97.304_885,\n 104.691_69,\n 97.840_905,\n );\n ctx.bezierCurveTo(\n 104.941_91,\n 98.686_325,\n 106.468_11,\n 98.801_755,\n 106.626_52,\n 98.808_365,\n );\n ctx.bezierCurveTo(\n 111.174_54,\n 99.381_485,\n 119.095_63,\n 105.569_22,\n 119.705_54,\n 108.371_19,\n );\n ctx.bezierCurveTo(\n 119.763_74,\n 108.632_61,\n 119.833_76,\n 108.846_19,\n 119.906_89,\n 109.057_52,\n );\n ctx.bezierCurveTo(\n 117.013_28,\n 106.8874,\n 112.640_79,\n 105.538_71,\n 108.272_49,\n 105.538_71,\n );\n ctx.bezierCurveTo(\n 106.228_53,\n 105.538_71,\n 104.3152,\n 105.823_77,\n 102.5837,\n 106.3928,\n );\n ctx.bezierCurveTo(\n 102.228_38,\n 106.510_64,\n 101.939_14,\n 106.791_33,\n 101.725_49,\n 107.231_63,\n );\n ctx.bezierCurveTo(\n 100.419_88,\n 109.900_72,\n 101.9861,\n 118.587_71,\n 102.998_88,\n 121.54,\n );\n ctx.bezierCurveTo(\n 103.394_95,\n 122.688_27,\n 103.855_01,\n 123.250_42,\n 104.413_59,\n 123.250_42,\n );\n ctx.bezierCurveTo(\n 105.2719,\n 123.250_42,\n 105.841_19,\n 121.823_27,\n 105.896_81,\n 121.677_31,\n );\n ctx.bezierCurveTo(\n 107.780_24,\n 117.574_56,\n 115.664_94,\n 111.948_78,\n 118.676_23,\n 111.948_78,\n );\n ctx.bezierCurveTo(\n 118.742_73,\n 111.948_78,\n 118.806_88,\n 111.951_78,\n 118.868_91,\n 111.955_78,\n );\n ctx.bezierCurveTo(\n 119.104_57,\n 111.973_38,\n 119.316_08,\n 111.987_58,\n 119.506_99,\n 111.987_58,\n );\n ctx.bezierCurveTo(\n 119.558_59,\n 111.987_58,\n 119.585_69,\n 111.969_98,\n 119.635_22,\n 111.969_98,\n );\n ctx.bezierCurveTo(\n 115.187_73,\n 115.140_22,\n 111.722_65,\n 121.896_79,\n 111.690_56,\n 127.905_97,\n );\n ctx.bezierCurveTo(\n 111.688_56,\n 128.2762,\n 111.855_52,\n 128.638_07,\n 112.191_45,\n 128.975_77,\n );\n ctx.bezierCurveTo(\n 114.246_11,\n 131.078_41,\n 122.712_95,\n 132.213_58,\n 125.717_83,\n 132.213_58,\n );\n ctx.lineTo(125.963_88, 132.211_58);\n ctx.bezierCurveTo(\n 127.151_66,\n 132.186_88,\n 127.815_19,\n 131.919_81,\n 127.994_94,\n 131.387_99,\n );\n ctx.bezierCurveTo(\n 128.279_81,\n 130.553_51,\n 127.1132,\n 129.549_05,\n 126.993_32,\n 129.446_69,\n );\n ctx.bezierCurveTo(\n 123.648_09,\n 126.259_02,\n 120.822_94,\n 116.510_98,\n 121.950_91,\n 113.876_78,\n );\n ctx.bezierCurveTo(\n 122.064_23,\n 113.617_11,\n 122.150_18,\n 113.382,\n 122.214_29,\n 113.155_62,\n );\n ctx.bezierCurveTo(\n 123.808_76,\n 118.432_66,\n 129.048_12,\n 123.864_51,\n 134.649_16,\n 125.744_85,\n );\n ctx.bezierCurveTo(\n 134.766_64,\n 125.784_35,\n 134.895_21,\n 125.804_05,\n 135.0258,\n 125.804_05,\n );\n ctx.bezierCurveTo(\n 137.763_21,\n 125.804_05,\n 142.174_24,\n 116.278_16,\n 143.077_43,\n 113.249_64,\n );\n ctx.bezierCurveTo(\n 143.372_69,\n 112.256_07,\n 143.379_28,\n 111.584_97,\n 143.094_73,\n 111.197_17,\n );\n ctx.closePath();\n ctx.scale(1 / SCALE_FACTOR, 1 / SCALE_FACTOR);\n },\n);\n\nshapeFunctions.set(\"triangle\", (ctx: CanvasRenderingContext2D) => {\n ctx.scale(150 / 42, 150 / 42);\n ctx.beginPath();\n ctx.transform(1, 0, 0, 1, 16.9774, -22.3191);\n ctx.moveTo(-16.977_913, 37.727_61);\n ctx.lineTo(-34.930_431, 6.631_814);\n ctx.lineTo(0.975_572, 6.632_296);\n ctx.closePath();\n ctx.moveTo(-16.997_733, 26.070_432);\n ctx.lineTo(-9.120_09, 12.425_835);\n ctx.lineTo(-24.875_376, 12.425_835);\n ctx.closePath();\n ctx.transform(1, 0, 0, 1, -16.9774, 22.3191);\n ctx.scale(42 / 150, 42 / 150);\n});\n\nexport function drawPip(\n ctx: CanvasRenderingContext2D,\n suit: Suit,\n secondary?: boolean,\n shadow?: boolean,\n customFill?: string,\n lineWidth?: number,\n highLight?: boolean,\n): void {\n // Positive indication for Color pips.\n if (highLight === true) {\n ctx.save();\n ctx.beginPath();\n ctx.arc(3, 5, 100, 0, 360);\n ctx.fillStyle = \"rgba(238, 188, 29, 0.3)\";\n ctx.fill();\n ctx.stroke();\n ctx.restore();\n }\n\n // Each suit has a shape defined in the \"suits.json\" file (as the 'pip' property).\n const shapeFunction = shapeFunctions.get(suit.pip);\n assertDefined(\n shapeFunction,\n `Failed to find the shape function for pip \"${suit.pip}\".`,\n );\n\n // Handle the shadow\n if (shadow === true) {\n ctx.shadowColor = \"rgba(0, 0, 0, 0.9)\";\n }\n\n const hasCustomFill = customFill !== undefined && customFill !== \"\";\n if (secondary === true) {\n ctx.scale(0.8, 0.8);\n\n ctx.save();\n ctx.beginPath();\n ctx.ellipse(0, 0, 80, 80, 0, 0, 2 * Math.PI);\n ctx.moveTo(90, 0);\n ctx.ellipse(0, 0, 90, 90, 0, 0, 2 * Math.PI);\n\n if (hasCustomFill) {\n ctx.fillStyle = customFill!;\n } else if (suit.fill === \"multi\") {\n const colors = suit.fillColors;\n const grad = ctx.createLinearGradient(0, -100, 30, 100);\n for (const [i, color] of colors.entries()) {\n grad.addColorStop(i / (colors.length - 1), color);\n }\n ctx.fillStyle = grad;\n } else {\n ctx.fillStyle = suit.fill;\n }\n\n // Workaround for Konva.Shape's Context not supporting `evenodd`. This is used in e.g. Empathy\n // view.\n interface KonvaCanvas {\n _context: CanvasRenderingContext2D | undefined;\n }\n const konvaCanvas = ctx as unknown as KonvaCanvas;\n\n const canvasFillRule = \"evenodd\";\n const context = konvaCanvas._context;\n if (context === undefined) {\n ctx.fill(canvasFillRule);\n } else {\n context.fill(canvasFillRule);\n }\n\n ctx.lineWidth = 1;\n ctx.strokeStyle = \"black\";\n ctx.stroke();\n ctx.restore();\n }\n\n if (hasCustomFill) {\n // The parent function has specified a custom fill color.\n ctx.fillStyle = customFill!;\n shapeFunction(ctx);\n ctx.fill();\n } else if (suit.fill === \"multi\") {\n // Rainbow and omni cards have a multiple color fill which is passed as an array to the drawing\n // function; the drawing function will handle the filling.\n shapeFunction(ctx, suit.fillColors);\n } else {\n // All other suits have a solid fill.\n ctx.fillStyle = suit.fill;\n shapeFunction(ctx);\n ctx.fill();\n }\n\n // Draw a black border around the shape.\n if (shadow === true) {\n ctx.lineWidth = lineWidth ?? (hasCustomFill ? 8 : 5);\n ctx.shadowColor = \"rgba(0, 0, 0, 0)\";\n } else {\n ctx.lineWidth = 3;\n }\n ctx.stroke();\n}\n", "// In-game sounds.\n\nimport { globals } from \"./Globals\";\nimport { SoundType } from \"./game/types/SoundType\";\n\nexport const SOUNDS_PATH = \"/public/sounds\";\n\nconst PRELOAD_SOUND_TYPES = [\n SoundType.Tone,\n SoundType.Blind1,\n // (Do not preload the rest of the blind-play sounds, since they will only occur very rarely.)\n SoundType.Fail1,\n SoundType.Other,\n SoundType.Us,\n // (Do not preload shared replay sound effects or pause sound effects, as they are used more\n // rarely.)\n] as const;\n\nlet soundEffect: HTMLAudioElement | undefined;\n\nexport function init(): void {\n // Preload some sounds. Ideally, we would check to see if the user has the \"soundMove\" setting\n // enabled (or \"volume\" set above 0) before attempting to preload sounds. However, at this point\n // in the code, the server has not sent us the settings corresponding to this user account, so\n // just assume that they have sounds enabled.\n for (const soundType of PRELOAD_SOUND_TYPES) {\n const audio = new Audio(`${SOUNDS_PATH}/${soundType}.mp3`);\n audio.load();\n }\n}\n\nexport function play(file: SoundType, mute = false): void {\n if (mute && soundEffect !== undefined) {\n soundEffect.muted = true;\n }\n\n const path = `/public/sounds/${file}.mp3`;\n soundEffect = new Audio(path);\n\n // HTML5 audio volume is a range between 0.0 to 1.0, but volume is stored in the settings as an\n // integer from 0 to 100.\n let { volume } = globals.settings;\n if (typeof volume !== \"number\") {\n volume = 50;\n }\n soundEffect.volume = volume / 100;\n\n soundEffect.play().catch(() => {\n // Do nothing if audio playback fails, since it is most likely due to the user not having\n // interacted with the page yet:\n // https://stackoverflow.com/questions/52807874/how-to-make-audio-play-on-body-onload\n });\n}\n", "/** Sent to the server in the \"action\" command. */\nexport enum ActionType {\n Play,\n Discard,\n ColorClue,\n RankClue,\n GameOver,\n}\n", "import type { Clue, Suit } from \"@hanabi-live/game\";\nimport { isDualColor } from \"@hanabi-live/game\";\nimport Konva from \"konva\";\nimport type * as KonvaContext from \"konva/types/Context\";\nimport { globals } from \"./UIGlobals\";\nimport { drawPip } from \"./drawPip\";\nimport { drawLayer } from \"./konvaHelpers\";\n\nexport class ColorButton extends Konva.Group {\n pressed = false;\n clue: Clue;\n\n background: Konva.Rect;\n\n constructor(config: Konva.ContainerConfig, suit: Suit) {\n super(config);\n this.listening(true);\n\n this.clue = config[\"clue\"] as Clue;\n\n const w = this.width();\n const h = this.height();\n\n this.background = new Konva.Rect({\n x: 0,\n y: 0,\n width: w,\n height: h,\n cornerRadius: 0.12 * h,\n fill: \"black\",\n opacity: 0.6,\n listening: true,\n });\n this.add(this.background);\n\n const backgroundColor = new Konva.Rect({\n x: 0.1 * w,\n y: 0.1 * h,\n width: 0.8 * w,\n height: 0.8 * h,\n cornerRadius: 0.12 * 0.8 * h,\n fill: config[\"color\"] as string | undefined,\n opacity: 0.9,\n listening: false,\n });\n this.add(backgroundColor);\n\n if (globals.lobby.settings.colorblindMode) {\n if (isDualColor(globals.variant)) {\n // For Dual-Color variants, draw the color abbreviation (as text).\n const text = new Konva.Text({\n x: 0,\n y: 0.275 * h,\n width: w,\n height: 0.6 * h,\n fontSize: 0.5 * h,\n fontFamily: \"Verdana\",\n fill: \"white\",\n stroke: \"black\",\n strokeWidth: 0.014_87 * h,\n align: \"center\",\n text: config[\"text\"] as string | undefined,\n listening: false,\n });\n this.add(text);\n } else {\n // Draw the suit pip that corresponds to this color.\n const suitPip = new Konva.Shape({\n scale: {\n x: 0.25,\n y: 0.25,\n },\n offset: {\n x: w * -2,\n y: h * -2,\n },\n sceneFunc: (ctx: KonvaContext.Context) => {\n drawPip(ctx as unknown as CanvasRenderingContext2D, suit);\n },\n listening: false,\n });\n this.add(suitPip);\n }\n }\n\n this.background.on(\"mousedown\", () => {\n this.background.fill(\"#888888\");\n drawLayer(this);\n\n this.background.on(\"mouseout\", () => {\n this.resetButton();\n });\n this.background.on(\"mouseup\", () => {\n this.resetButton();\n });\n });\n }\n\n resetButton(): void {\n this.background.fill(\"black\");\n drawLayer(this);\n\n this.background.off(\"mouseup\");\n this.background.off(\"mouseout\");\n }\n\n setPressed(pressed: boolean): void {\n this.pressed = pressed;\n this.background.fill(pressed ? \"#cccccc\" : \"black\");\n drawLayer(this);\n }\n}\n", "import type { Clue } from \"@hanabi-live/game\";\nimport Konva from \"konva\";\nimport { drawLayer } from \"./konvaHelpers\";\n\nexport class RankButton extends Konva.Group {\n pressed = false;\n clue: Clue;\n background: Konva.Rect;\n\n constructor(config: Konva.ContainerConfig) {\n super(config);\n this.listening(true);\n\n this.clue = config[\"clue\"] as Clue;\n\n const w = this.width();\n const h = this.height();\n\n this.background = new Konva.Rect({\n x: 0,\n y: 0,\n width: w,\n height: h,\n cornerRadius: 0.12 * h,\n fill: \"black\",\n opacity: 0.6,\n listening: true,\n });\n this.add(this.background);\n\n const text = new Konva.Text({\n x: 0,\n y: 0.275 * h, // 0.25 is too high for some reason\n width: w,\n height: 0.5 * h,\n fontSize: 0.5 * h,\n fontFamily: \"Verdana\",\n fill: \"white\",\n align: \"center\",\n text: config[\"label\"] as string,\n listening: false,\n });\n this.add(text);\n\n this.background.on(\"mousedown\", () => {\n this.background.fill(\"#888888\");\n drawLayer(this);\n\n this.background.on(\"mouseout\", () => {\n this.resetButton();\n });\n this.background.on(\"mouseup\", () => {\n this.resetButton();\n });\n });\n }\n\n resetButton(): void {\n this.background.fill(\"black\");\n drawLayer(this);\n\n this.background.off(\"mouseup\");\n this.background.off(\"mouseout\");\n }\n\n setPressed(pressed: boolean): void {\n this.pressed = pressed;\n this.background.fill(pressed ? \"#cccccc\" : \"black\");\n drawLayer(this);\n }\n}\n", "import type { CardOrder } from \"@hanabi-live/game\";\nimport { getTotalCardsInDeck } from \"@hanabi-live/game\";\nimport type { HanabiCard } from \"./HanabiCard\";\nimport { globals } from \"./UIGlobals\";\n\nexport function getCardOrStackBase(order: CardOrder): HanabiCard | undefined {\n const totalCardsInDeck = getTotalCardsInDeck(globals.variant);\n\n // Stack bases use the orders after the final card in the deck.\n if (order >= totalCardsInDeck) {\n const stackBaseIndex = order - totalCardsInDeck;\n const stackBase = globals.stackBases[stackBaseIndex];\n return stackBase === undefined || !stackBase.isStackBase\n ? undefined\n : stackBase;\n }\n\n // This is a normal card.\n const card = globals.deck[order];\n return card === undefined || card.isStackBase ? undefined : card;\n}\n", "// Users can right-click cards to record information on them.\n\nimport type { CardOrder } from \"@hanabi-live/game\";\nimport { ReadonlySet, trimSuffix } from \"complete-common\";\nimport * as tooltips from \"../../tooltips\";\nimport type { HanabiCard } from \"./HanabiCard\";\nimport { globals } from \"./UIGlobals\";\nimport { getCardOrStackBase } from \"./getCardOrStackBase\";\n\nconst REMOVE_PIPE_KEYS = new ReadonlySet([\n \"ArrowLeft\",\n \"ArrowRight\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"Home\",\n \"End\",\n \"Backspace\",\n \"Delete\",\n]);\nconst CLOSE_NOTE_KEYS = new ReadonlySet([\"Enter\", \"Escape\"]);\nconst META_KEYS = new ReadonlySet([\"Control\", \"Alt\", \"Shift\"]);\n\nfunction escapeHtml(unsafe: string): string {\n return unsafe\n .replaceAll(\"&\", \"&\")\n .replaceAll(\"<\", \"<\")\n .replaceAll(\">\", \">\")\n .replaceAll('\"', \""\")\n .replaceAll(\"'\", \"'\");\n}\n\n/** Get the contents of the note tooltip. */\nfunction get(order: CardOrder, our: boolean, escape = false) {\n // If the calling function specifically wants our note or we are a player in an ongoing game,\n // return our note.\n // eslint-disable-next-line func-style\n const escapeFunc = (text: string) => (escape ? escapeHtml(text) : text);\n if (our || globals.state.playing) {\n return escapeFunc(globals.state.notes.ourNotes[order]?.text ?? \"\");\n }\n\n // Build a string that shows the combined notes from the players & spectators.\n let content = \"\";\n const noteObjectArray = globals.state.notes.allNotes[order]!;\n let firstSpectator = false;\n for (const noteObject of noteObjectArray) {\n const name = escapeFunc(noteObject.name);\n const text = escapeFunc(noteObject.text);\n const { isSpectator } = noteObject;\n if (noteObject.text !== \"\") {\n if (!firstSpectator && isSpectator) {\n firstSpectator = true;\n if (content !== \"\") {\n content = `
Players
${content}`;\n }\n content += \"
Spectators
\";\n }\n content += `${name}: ${text}
`;\n }\n }\n\n content = trimSuffix(content, \"
\");\n\n return content;\n}\n\n/**\n * A note has been updated, so:\n * 1) Send the new note to the server.\n * 2) Dispatch an event with the updated note.\n * 3) Check for new card identities.\n */\nexport function set(order: CardOrder, text: string): void {\n const oldNote = globals.state.notes.ourNotes[order]!.text;\n globals.lastNote = text;\n\n // Send the note to the server.\n if (!globals.state.finished && text !== oldNote) {\n globals.lobby.conn!.send(\"note\", {\n tableID: globals.lobby.tableID,\n order,\n note: text,\n });\n }\n\n globals.store!.dispatch({\n type: \"editNote\",\n order,\n text,\n });\n\n const card = getCardOrStackBase(order);\n if (card) {\n card.checkSpecialNote();\n card.setRaiseAndShadowOffset();\n }\n}\n\nexport function update(card: HanabiCard, text: string): void {\n // Update the tooltip.\n const tooltip = `#tooltip-${card.tooltipName}`;\n tooltips.setInstanceContent(tooltip, text);\n if (text === \"\") {\n tooltips.close(tooltip);\n globals.editingNote = null;\n }\n\n // Update the card indicator.\n const visibleOld = card.noteIndicator.visible();\n const visibleNew = text !== \"\";\n if (visibleOld !== visibleNew) {\n card.noteIndicator.visible(visibleNew);\n globals.layers.card.batchDraw();\n }\n}\n\n/** Open the tooltip for this card. */\nexport function show(card: HanabiCard): void {\n const tooltip = `#tooltip-${card.tooltipName}`;\n\n // We want the tooltip to appear above the card by default.\n const pos = card.getAbsolutePosition();\n const posX = pos.x;\n let posY = pos.y - (card.height() * card.layout.scale().y) / 2;\n tooltips.setInstanceOption(tooltip, \"side\", \"top\");\n\n // Flip the tooltip if it is too close to the top of the screen.\n if (posY < 200) {\n // 200 is just an arbitrary threshold; 100 is not big enough for the BGA layout.\n posY = pos.y + (card.height() * card.layout.scale().y) / 2;\n tooltips.setInstanceOption(tooltip, \"side\", \"bottom\");\n }\n\n // Update the tooltip position.\n tooltips.setPosition(tooltip, posX, posY);\n\n // Update the tooltip content.\n let shownNote = get(card.state.order, false, true);\n if (card.state.location === \"playStack\") {\n if (shownNote !== \"\") {\n shownNote += \"

\";\n }\n shownNote += card.suitDescriptionNote();\n }\n tooltips.setInstanceContent(tooltip, shownNote);\n tooltips.open(tooltip);\n}\n\nexport function openEditTooltip(\n card: HanabiCard,\n isDesktop = true,\n addText = \"\",\n): void {\n // Do not edit any notes in dedicated replays.\n if (globals.state.finished) {\n return;\n }\n\n // Disable making notes on the stack bases outside of special variants.\n if (card.isStackBase && !globals.variant.throwItInAHole) {\n return;\n }\n\n // If a note tooltip is open on a card and we right click on the card again, the \"focusout\"\n // handler will automatically close the tooltip, but then this code will run and immediately\n // re-open the tooltip. Detect if this is happening and do nothing. The \"focusout\" event does not\n // fire on mobile, therefore we only check for desktop clients.\n const tooltip = `#tooltip-${card.tooltipName}`;\n const status = tooltips.getStatus(tooltip);\n if (isDesktop && status.state === \"disappearing\") {\n return;\n }\n\n show(card);\n\n globals.editingNote = card.state.order;\n const note = get(card.state.order, true);\n\n const input = document.createElement(\"input\");\n input.setAttribute(\"id\", `tooltip-${card.tooltipName}-input`);\n input.setAttribute(\"type\", \"text\");\n input.setAttribute(\"value\", note);\n\n tooltips.setInstanceContent(tooltip, input.outerHTML);\n\n const noteTextbox = $(`#tooltip-${card.tooltipName}-input`);\n let shouldRemovePipe = true;\n noteTextbox.on(\"keydown\", (event) => {\n event.stopPropagation();\n const { key } = event;\n\n // Only check the first time if the key is a special one.\n if (!META_KEYS.has(key)) {\n if (shouldRemovePipe && REMOVE_PIPE_KEYS.has(key)) {\n // Restore the old note, removing the pipe.\n if (key !== \"Home\") {\n event.preventDefault();\n }\n noteTextbox.val(note);\n }\n shouldRemovePipe = false;\n }\n\n if (!CLOSE_NOTE_KEYS.has(key)) {\n return;\n }\n\n globals.editingNote = null;\n\n let newNote: string;\n if (key === \"Escape\") {\n // If Escape is pressed, use the existing note, if any.\n newNote = get(card.state.order, true);\n } else {\n // If Enter is pressed, get the value of the input box.\n const val = noteTextbox.val();\n if (typeof val !== \"string\") {\n throw new TypeError(\n `The value of the \"#tooltip-${card.tooltipName}-input\" element was not a string.`,\n );\n }\n\n newNote = val;\n\n // Remove the last pipe.\n newNote = trimSuffix(newNote, \" | \");\n set(card.state.order, newNote);\n }\n\n // Check to see if an event happened while we were editing this note.\n if (globals.actionOccurred) {\n globals.actionOccurred = false;\n tooltips.close(tooltip);\n }\n\n update(card, newNote);\n });\n\n // Automatically close the tooltip if we click elsewhere on the screen.\n noteTextbox.on(\"focusout\", () => {\n globals.editingNote = null;\n tooltips.close(tooltip);\n });\n\n // Automatically add a pipe to a non empty note input box when it is focused.\n noteTextbox.on(\"focus\", function tooltipCardInputFocus(this: HTMLElement) {\n let oldNote = $(this).val();\n if (typeof oldNote !== \"string\") {\n oldNote = \"\";\n }\n\n let newNote = oldNote;\n if (oldNote !== \"\") {\n newNote += \" | \";\n }\n newNote += addText;\n if (newNote !== oldNote) {\n $(this).val(newNote);\n }\n });\n\n // Remove the pipe if the user clicks with the mouse buttons.\n noteTextbox.on(\"mousedown\", () => {\n if (shouldRemovePipe) {\n noteTextbox.val(note);\n shouldRemovePipe = false;\n }\n });\n\n // Automatically focus the new text input box. (This will not work properly unless we put it in a\n // callback.)\n setTimeout(() => {\n noteTextbox.trigger(\"focus\");\n }, 1);\n}\n\n/**\n * We just got a list of a bunch of notes, so show the note indicator for currently-visible cards.\n */\nexport function setAllCardIndicators(): void {\n // We iterate through the whole deck instead of using the index of the last drawn card to avoid\n // race conditions where we can get the \"noteList\" before the \"actionList\" is finished processing.\n for (const card of globals.deck) {\n card.setNoteIndicator();\n }\n for (const stackBase of globals.stackBases) {\n stackBase.setNoteIndicator();\n }\n}\n", "import { noop } from \"complete-common\";\nimport type { HanabiCard } from \"./HanabiCard\";\nimport { globals } from \"./UIGlobals\";\nimport * as notes from \"./notes\";\n\nlet lastNote = \"\";\n\nexport function clickRightCheckAddNote(\n event: MouseEvent,\n card: HanabiCard,\n isSpeedrun: boolean,\n): void {\n // Note hotkeys should only work in ongoing games.\n if (globals.state.finished) {\n return;\n }\n\n // Ctrl + shift + alt + right-click is a \"kt\" note. (This is a common abbreviation for \"this card\n // is known trash\".)\n if (event.ctrlKey && event.shiftKey && event.altKey && !event.metaKey) {\n lastNote = \"kt\";\n card.appendNote(lastNote);\n return;\n }\n\n // Ctrl + shift + right-click is a shortcut for entering the same note as previously entered.\n // (This must be above the other note code because of the modifiers.)\n if (event.ctrlKey && event.shiftKey && !event.altKey && !event.metaKey) {\n card.setNote(globals.lastNote);\n return;\n }\n\n // Ctrl + alt + right-click is prepend turn count.\n if (event.ctrlKey && !event.shiftKey && event.altKey && !event.metaKey) {\n lastNote = `#${globals.elements.turnNumberLabel?.text()}`;\n card.prependTurnCountNote(lastNote);\n return;\n }\n\n // Shift + right-click is a \"f\" note. (This is a common abbreviation for \"this card is Finessed\".)\n if (!event.ctrlKey && event.shiftKey && !event.altKey && !event.metaKey) {\n lastNote = \"f\";\n card.appendNote(lastNote);\n return;\n }\n\n // Alt + right-click is a \"cm\" note. (This is a common abbreviation for \"this card is chop\n // moved\".)\n if (!event.ctrlKey && !event.shiftKey && event.altKey && !event.metaKey) {\n lastNote = \"cm\";\n card.appendNote(lastNote);\n return;\n }\n\n // A normal right-click is edit a note. (But in speedruns, this is ctrl + right-click.)\n if (\n event.ctrlKey === isSpeedrun &&\n !event.shiftKey &&\n !event.altKey &&\n !event.metaKey\n ) {\n preOpenNoteEditTooltip(card);\n return;\n }\n\n // Do nothing in the default case. (We need a function to satisfy the early return pattern.)\n noop();\n}\n\nexport function preOpenNoteEditTooltip(card: HanabiCard): void {\n lastNote = \"\";\n notes.openEditTooltip(card);\n}\n", "// These are helper functions that convert objects to the integers that the server expects and vice\n// versa.\n\nimport type {\n Color,\n ColorIndex,\n Suit,\n SuitIndex,\n Variant,\n} from \"@hanabi-live/game\";\n\nexport function suitIndexToSuit(\n suitIndex: SuitIndex | null,\n variant: Variant,\n): Suit | undefined {\n if (suitIndex === null) {\n return undefined;\n }\n\n return variant.suits[suitIndex];\n}\n\nexport function colorToColorIndex(\n color: Color,\n variant: Variant,\n): ColorIndex | undefined {\n // We can't use `variant.clueColors.indexOf` directly because the `Suit` objects may not match\n // exactly in some contexts.\n for (const [i, variantColor] of variant.clueColors.entries()) {\n if (variantColor.name === color.name) {\n return i as ColorIndex;\n }\n }\n\n return undefined;\n}\n", "// The site has the ability to send (optional) notifications.\n\nimport * as modals from \"./modals\";\n\nexport function test(): void {\n // From: https://stackoverflow.com/questions/38422340/check-if-browser-notification-is-available\n if (!(\"Notification\" in window)) {\n return;\n }\n\n if (Notification.permission === \"granted\") {\n return;\n }\n\n const notificationAdvice =\n \"You may have previously denied notifications for this page. Please explicitly enable permission. For example, on Google Chrome, click the lock in the top-left hand corner.\";\n Notification.requestPermission()\n .then((permission) => {\n // If they have previously denied the permission pop-up dialog, then nothing will appear when\n // \"Notification.requestPermission()\" is invoked.\n if (permission !== \"granted\") {\n modals.showWarning(\n `The website does not have permissions to send desktop notifications. ${notificationAdvice}`,\n );\n }\n })\n .catch(() => {\n modals.showWarning(\n `Something went wrong when checking for desktop notification permission. ${notificationAdvice}`,\n );\n });\n}\n\nexport function send(msg: string, tag: string | undefined): void {\n // From: https://stackoverflow.com/questions/38422340/check-if-browser-notification-is-available\n if (!(\"Notification\" in window)) {\n return;\n }\n\n if (Notification.permission !== \"granted\") {\n return;\n }\n\n // eslint-disable-next-line no-new\n new Notification(`Hanab Live: ${msg}`, {\n tag,\n });\n}\n", "import type { CardOrder, Clue, MsgClue } from \"@hanabi-live/game\";\nimport {\n ClueType,\n getAdjustedClueTokens,\n getCharacterNameForPlayer,\n isCardTouchedByClue,\n msgClueToClue,\n} from \"@hanabi-live/game\";\nimport { SECOND_IN_MILLISECONDS, assertDefined, eRange } from \"complete-common\";\nimport { ActionType } from \"../types/ActionType\";\nimport type {\n ClientActionColorClue,\n ClientActionRankClue,\n} from \"../types/ClientAction\";\nimport type { ColorButton } from \"./ColorButton\";\nimport type { HanabiCard } from \"./HanabiCard\";\nimport type { RankButton } from \"./RankButton\";\nimport { globals } from \"./UIGlobals\";\nimport * as arrows from \"./arrows\";\nimport type { PlayerButton } from \"./controls/PlayerButton\";\nimport { colorToColorIndex } from \"./convert\";\nimport * as turn from \"./turn\";\n\nexport function checkLegal(): void {\n const clueTargetButtonGroup =\n globals.state.replay.hypothetical === null\n ? globals.elements.clueTargetButtonGroup\n : globals.elements.clueTargetButtonGroup2;\n\n const target = clueTargetButtonGroup?.getPressed() as\n | PlayerButton\n | null\n | undefined;\n const { clueTypeButtonGroup } = globals.elements;\n const clueButton = clueTypeButtonGroup?.getPressed() as\n | ColorButton\n | RankButton\n | null\n | undefined;\n\n if (\n target === undefined ||\n target === null ||\n clueButton === undefined ||\n clueButton === null\n ) {\n // They have not selected a player or a clue type.\n globals.elements.giveClueButton!.setEnabled(false);\n return;\n }\n\n const who = target.targetPlayerIndex;\n const { currentPlayerIndex } = globals.state.visibleState!.turn;\n if (currentPlayerIndex === null) {\n return;\n }\n if (who === currentPlayerIndex) {\n // They are in a hypothetical and trying to give a clue to the current player.\n globals.elements.giveClueButton!.setEnabled(false);\n return;\n }\n\n const touchedAtLeastOneCard = showClueMatch(who, clueButton.clue);\n\n const ourCharacterName = getCharacterNameForPlayer(\n globals.metadata.ourPlayerIndex,\n globals.metadata.characterAssignments,\n );\n\n // By default, only enable the \"Give Clue\" button if the clue \"touched\" one or more cards in the\n // hand.\n const enabled =\n touchedAtLeastOneCard ||\n // Make an exception if they have the optional setting for \"Empty Clues\" turned on.\n globals.options.emptyClues ||\n // Make an exception for variants where color clues are always allowed.\n (globals.variant.colorCluesTouchNothing &&\n clueButton.clue.type === ClueType.Color) ||\n // Make an exception for variants where number clues are always allowed.\n (globals.variant.rankCluesTouchNothing &&\n clueButton.clue.type === ClueType.Rank) ||\n // Make an exception for certain characters.\n (ourCharacterName === \"Blind Spot\" &&\n who ===\n (globals.metadata.ourPlayerIndex + 1) % globals.options.numPlayers) ||\n (ourCharacterName === \"Oblivious\" &&\n who ===\n (globals.metadata.ourPlayerIndex - 1 + globals.options.numPlayers) %\n globals.options.numPlayers);\n\n globals.elements.giveClueButton!.setEnabled(enabled);\n}\n\nfunction showClueMatch(target: number, clue: Clue): boolean {\n arrows.hideAll();\n\n const cardLayout = globals.elements.playerHands[target];\n if (cardLayout === undefined) {\n return false;\n }\n\n const hand = cardLayout.children;\n let touchedAtLeastOneCard = false;\n for (const i of eRange(hand.length)) {\n const child = hand[i];\n if (child === undefined) {\n continue;\n }\n\n const card = child.children[0] as HanabiCard | undefined;\n if (card === undefined) {\n continue;\n }\n\n if (isTouched(card, clue)) {\n touchedAtLeastOneCard = true;\n arrows.set(i, card, null, clue, true);\n }\n }\n\n return touchedAtLeastOneCard;\n}\n\nexport function getTouchedCardsFromClue(\n target: number,\n clue: MsgClue,\n): readonly CardOrder[] {\n const hand = globals.elements.playerHands[target]!;\n const cardsTouched: CardOrder[] = [];\n hand.children.each((child) => {\n const card = child.children[0] as HanabiCard;\n const identity = card.getMorphedIdentity();\n if (identity.rank === null && identity.suitIndex === null) {\n // It is a \"blank\" card, so the clue should not touch it.\n return;\n }\n\n if (isTouched(card, msgClueToClue(clue, globals.variant))) {\n cardsTouched.push(card.state.order);\n }\n });\n\n return cardsTouched;\n}\n\nfunction isTouched(card: HanabiCard, clue: Clue): boolean {\n const morphedPossibilities = card.getMorphedPossibilities();\n return morphedPossibilities.every(\n ([suitIndex, rank]) =>\n isCardTouchedByClue(globals.variant, clue, suitIndex, rank) &&\n ((clue.type === ClueType.Rank && card.visibleRank !== null) ||\n (clue.type === ClueType.Color && card.visibleSuitIndex !== null)),\n );\n}\n\nexport function give(): void {\n const clueTargetButtonGroup =\n globals.state.replay.hypothetical === null\n ? globals.elements.clueTargetButtonGroup\n : globals.elements.clueTargetButtonGroup2;\n\n const playerButton = clueTargetButtonGroup?.getPressed() as\n | PlayerButton\n | null\n | undefined;\n const { clueTypeButtonGroup } = globals.elements;\n const clueOrRankButton = clueTypeButtonGroup?.getPressed() as\n | ColorButton\n | RankButton\n | null\n | undefined;\n\n if (\n playerButton === undefined ||\n playerButton === null ||\n clueOrRankButton === undefined ||\n clueOrRankButton === null\n ) {\n // They have not selected a player or a clue type.\n return;\n }\n\n if (!shouldGiveClue()) {\n return;\n }\n\n switch (clueOrRankButton.clue.type) {\n case ClueType.Color: {\n const colorIndex = colorToColorIndex(\n clueOrRankButton.clue.value,\n globals.variant,\n );\n assertDefined(\n colorIndex,\n `Failed to get the color index for color: ${clueOrRankButton.clue.value.name}`,\n );\n\n const clientActionColorClue: ClientActionColorClue = {\n type: ActionType.ColorClue,\n target: playerButton.targetPlayerIndex,\n value: colorIndex,\n };\n turn.end(clientActionColorClue);\n\n break;\n }\n\n case ClueType.Rank: {\n const clientActionRankClue: ClientActionRankClue = {\n type: ActionType.RankClue,\n target: playerButton.targetPlayerIndex,\n value: clueOrRankButton.clue.value,\n };\n turn.end(clientActionRankClue);\n\n break;\n }\n }\n}\n\nfunction shouldGiveClue() {\n const { currentPlayerIndex } = globals.state.ongoingGame.turn;\n const { ourPlayerIndex } = globals.metadata;\n const ongoingGameState =\n globals.state.replay.hypothetical === null\n ? globals.state.ongoingGame\n : globals.state.replay.hypothetical.ongoing;\n const ourTurn =\n currentPlayerIndex === ourPlayerIndex ||\n globals.state.replay.hypothetical !== null;\n const clueTokenAvailable =\n ongoingGameState.clueTokens >= getAdjustedClueTokens(1, globals.variant);\n const recentlyClicked =\n Date.now() - globals.UIClickTime <= SECOND_IN_MILLISECONDS;\n\n return (\n // We can only give clues on our turn.\n ourTurn &&\n // We can only give a clue if there is a clue token available.\n clueTokenAvailable &&\n // We might be trying to give an invalid clue (e.g. an Empty Clue)\n globals.elements.giveClueButton!.enabled &&\n // Prevent the user from accidentally giving a clue.\n !recentlyClicked\n );\n}\n", "// In shared replays, players can enter a hypotheticals where can perform arbitrary actions in order\n// to see what will happen.\n\nimport type { CardOrder, MsgClue, PlayerIndex } from \"@hanabi-live/game\";\nimport { ClueType, getNextPlayableRanks } from \"@hanabi-live/game\";\nimport { eRange } from \"complete-common\";\nimport { ActionType } from \"../types/ActionType\";\nimport type { ClientAction, ClientActionClue } from \"../types/ClientAction\";\nimport { ReplayActionType } from \"../types/ReplayActionType\";\nimport type { ActionIncludingHypothetical } from \"../types/actions\";\nimport type { HanabiCard } from \"./HanabiCard\";\nimport { setEmpathyOnHand } from \"./HanabiCardMouse\";\nimport { globals } from \"./UIGlobals\";\nimport { getTouchedCardsFromClue } from \"./clues\";\nimport { getCardOrStackBase } from \"./getCardOrStackBase\";\n\nexport function startHypothetical(): void {\n if (globals.state.replay.hypothetical !== null) {\n return;\n }\n\n if (\n globals.state.replay.shared !== null &&\n globals.state.replay.shared.amLeader\n ) {\n globals.lobby.conn!.send(\"replayAction\", {\n tableID: globals.lobby.tableID,\n type: ReplayActionType.HypoStart,\n });\n }\n\n globals.elements.toggleDrawnCardsButton!.setEnabled(true);\n\n globals.store!.dispatch({\n type: \"hypoStart\",\n showDrawnCards: false,\n actions: [],\n });\n}\n\nexport function endHypothetical(): void {\n if (globals.state.replay.hypothetical === null) {\n return;\n }\n\n if (\n globals.state.replay.shared !== null &&\n globals.state.replay.shared.amLeader\n ) {\n globals.lobby.conn!.send(\"replayAction\", {\n tableID: globals.lobby.tableID,\n type: ReplayActionType.HypoEnd,\n });\n }\n\n globals.store!.dispatch({\n type: \"hypoEnd\",\n });\n}\n\nexport function sendHypotheticalAction(hypoAction: ClientAction): void {\n const gameState = globals.state.replay.hypothetical!.ongoing;\n\n // If the game is already over, do nothing.\n if (gameState.turn.currentPlayerIndex === null) {\n return;\n }\n\n let type: \"play\" | \"discard\" | \"clue\";\n switch (hypoAction.type) {\n case ActionType.Play: {\n type = \"play\";\n break;\n }\n\n case ActionType.Discard: {\n type = \"discard\";\n break;\n }\n\n case ActionType.ColorClue:\n case ActionType.RankClue: {\n type = \"clue\";\n break;\n }\n }\n\n switch (type) {\n case \"play\":\n case \"discard\": {\n const card = getCardOrStackBase(hypoAction.target as CardOrder);\n if (!card) {\n return;\n }\n\n const { suitIndex, rank } = card.getMorphedIdentity();\n if (suitIndex === null || rank === null) {\n // Play or discard action could have been initiated from the keyboard.\n return;\n }\n\n // Find out if this card misplays.\n let failed = false;\n let newType = type;\n if (type === \"play\") {\n const nextRanks = getNextPlayableRanks(\n suitIndex,\n gameState.playStacks[suitIndex]!,\n gameState.playStackDirections[suitIndex]!,\n gameState.playStackStarts,\n globals.variant,\n gameState.deck,\n );\n if (!nextRanks.includes(rank)) {\n newType = \"discard\";\n failed = true;\n }\n }\n\n switch (newType) {\n case \"play\": {\n sendHypotheticalActionToServer({\n type: \"play\",\n playerIndex: gameState.turn.currentPlayerIndex,\n order: hypoAction.target as CardOrder,\n suitIndex,\n rank,\n });\n break;\n }\n\n case \"discard\": {\n sendHypotheticalActionToServer({\n type: \"discard\",\n playerIndex: gameState.turn.currentPlayerIndex,\n order: hypoAction.target as CardOrder,\n suitIndex,\n rank,\n failed,\n });\n break;\n }\n }\n\n if (failed) {\n sendHypotheticalActionToServer({\n type: \"strike\",\n num: (gameState.strikes.length + 1) as 1 | 2 | 3,\n turn: gameState.turn.segment!,\n order: hypoAction.target as CardOrder,\n });\n }\n\n // Check if all the cards have already been drawn.\n if (gameState.deck.length < globals.state.cardIdentities.length) {\n // Draw\n const nextCardOrder = gameState.deck.length as CardOrder;\n const nextCard = globals.state.cardIdentities[nextCardOrder];\n sendHypotheticalActionToServer({\n type: \"draw\",\n order: nextCardOrder,\n playerIndex: gameState.turn.currentPlayerIndex,\n // Always send the correct suitIndex and rank if known; the blanking of the card will be\n // performed on the client.\n suitIndex: nextCard?.suitIndex ?? -1,\n rank: nextCard?.rank ?? -1,\n });\n }\n\n break;\n }\n\n case \"clue\": {\n const clientActionClue = hypoAction as ClientActionClue;\n const clue = hypoActionToMsgClue(clientActionClue);\n const list = getTouchedCardsFromClue(hypoAction.target, clue);\n sendHypotheticalActionToServer({\n type,\n clue,\n giver: gameState.turn.currentPlayerIndex,\n list,\n target: hypoAction.target as PlayerIndex,\n ignoreNegative: false,\n });\n\n break;\n }\n }\n\n // Finally, send a turn action. Even though this action is unnecessary from the point of the\n // client, for now we must send it to the server so that it can correctly shave off the last\n // action during a \"hypoBack\".\n let nextPlayerIndex = gameState.turn.currentPlayerIndex + 1;\n if (nextPlayerIndex === globals.options.numPlayers) {\n nextPlayerIndex = 0;\n }\n sendHypotheticalActionToServer({\n type: \"turn\",\n num: gameState.turn.turnNum + 1,\n currentPlayerIndex: nextPlayerIndex as PlayerIndex,\n });\n}\n\nfunction hypoActionToMsgClue(hypoAction: ClientActionClue): MsgClue {\n switch (hypoAction.type) {\n case ActionType.ColorClue: {\n return {\n type: ClueType.Color,\n value: hypoAction.value,\n };\n }\n\n case ActionType.RankClue: {\n return {\n type: ClueType.Rank,\n value: hypoAction.value,\n };\n }\n }\n}\n\nexport function sendHypotheticalActionToServer(\n hypoAction: ActionIncludingHypothetical,\n): void {\n if (globals.state.replay.shared === null) {\n globals.store!.dispatch({\n type: \"hypoAction\",\n action: hypoAction,\n });\n } else {\n globals.lobby.conn!.send(\"replayAction\", {\n tableID: globals.lobby.tableID,\n type: ReplayActionType.HypoAction,\n actionJSON: JSON.stringify(hypoAction),\n });\n }\n}\n\nexport function sendHypotheticalBack(): void {\n if (\n globals.state.replay.hypothetical === null ||\n globals.state.replay.hypothetical.states.length <= 1\n ) {\n return;\n }\n\n if (globals.state.replay.shared === null) {\n globals.store!.dispatch({\n type: \"hypoBack\",\n });\n } else if (globals.state.replay.shared.amLeader) {\n globals.lobby.conn!.send(\"replayAction\", {\n tableID: globals.lobby.tableID,\n type: ReplayActionType.HypoBack,\n });\n }\n}\n\nexport function toggleRevealed(): void {\n if (globals.state.replay.hypothetical === null) {\n return;\n }\n\n if (globals.state.replay.shared === null) {\n globals.store!.dispatch({\n type: \"hypoShowDrawnCards\",\n showDrawnCards: !globals.state.replay.hypothetical.showDrawnCards,\n });\n } else if (globals.state.replay.shared.amLeader) {\n globals.lobby.conn!.send(\"replayAction\", {\n tableID: globals.lobby.tableID,\n type: ReplayActionType.HypoToggleRevealed,\n });\n }\n}\n\n// Check if we need to disable the toggleRevealedButton. This happens when a newly drawn card is\n// played, discarded, or clued.\nexport function checkToggleRevealedButton(\n actionMessage: ActionIncludingHypothetical,\n): void {\n if (globals.state.replay.hypothetical === null) {\n return;\n }\n\n switch (actionMessage.type) {\n case \"play\":\n case \"discard\": {\n const cardOrder = actionMessage.order;\n if (\n globals.state.replay.hypothetical.drawnCardsInHypothetical.includes(\n cardOrder,\n )\n ) {\n globals.elements.toggleDrawnCardsButton?.setEnabled(false);\n }\n\n break;\n }\n\n case \"clue\": {\n for (const cardOrder of actionMessage.list) {\n if (\n globals.state.replay.hypothetical.drawnCardsInHypothetical.includes(\n cardOrder,\n )\n ) {\n globals.elements.toggleDrawnCardsButton?.setEnabled(false);\n return;\n }\n }\n\n break;\n }\n\n default: {\n break;\n }\n }\n}\n\nexport function changeStartingHandVisibility(): void {\n const startingPlayerIndex =\n globals.state.replay.hypothetical?.startingPlayerIndex;\n\n if (\n startingPlayerIndex === undefined ||\n startingPlayerIndex === null ||\n globals.elements.playerHands[startingPlayerIndex] === undefined\n ) {\n // Remove all empathy visibility, no longer in hypo.\n for (const i of eRange(globals.options.numPlayers)) {\n const playerIndex = i as PlayerIndex;\n forceHandEmpathy(playerIndex, false);\n }\n\n return;\n }\n\n forceHandEmpathy(\n startingPlayerIndex,\n !globals.state.replay.hypothetical!.showDrawnCards,\n );\n}\n\nfunction forceHandEmpathy(playerIndex: PlayerIndex, force: boolean) {\n const hand = globals.elements.playerHands[playerIndex];\n if (hand === undefined) {\n return;\n }\n\n for (const i of eRange(hand.children.length)) {\n const layoutChild = hand.children[i];\n if (layoutChild === undefined) {\n continue;\n }\n\n const card = layoutChild.children[0] as HanabiCard | undefined;\n if (card === undefined) {\n continue;\n }\n\n setEmpathyOnHand(card, force);\n }\n}\n", "import { globals } from \"./UIGlobals\";\n\n/**\n * Used to determine if it is our turn in the present. (For example, it can be our turn in the\n * present while we are looking through past actions in an in-game replay.)\n */\nexport function isOurTurn(): boolean {\n // First, handle the special case of a hypothetical.\n if (globals.state.replay.hypothetical !== null) {\n // It is always the replay leader's turn in a hypothetical.\n return (\n globals.state.replay.shared === null ||\n globals.state.replay.shared.amLeader\n );\n }\n\n // Handle the case of an ongoing game.\n return (\n globals.state.playing &&\n globals.state.ongoingGame.turn.currentPlayerIndex ===\n globals.metadata.ourPlayerIndex\n );\n}\n", "// Helper functions for doing actions to our own hand.\n\nimport { assertDefined } from \"complete-common\";\nimport type { CardLayout } from \"./CardLayout\";\nimport { globals } from \"./UIGlobals\";\n\nexport function get(): CardLayout {\n if (!globals.state.playing) {\n throw new Error(\n \"Failed to get our hand because we are not currently playing.\",\n );\n }\n\n const { ourPlayerIndex } = globals.metadata;\n const ourHand = globals.elements.playerHands[ourPlayerIndex];\n assertDefined(\n ourHand,\n `Failed to get our hand with an index of: ${ourPlayerIndex}`,\n );\n\n return ourHand;\n}\n\nexport function checkSetDraggableAll(): void {\n if (!globals.state.playing) {\n return;\n }\n\n const { ourPlayerIndex } = globals.metadata;\n const ourHand = globals.elements.playerHands[ourPlayerIndex];\n assertDefined(\n ourHand,\n `Failed to get our hand with an index of: ${ourPlayerIndex}`,\n );\n\n ourHand.checkSetDraggableAll();\n}\n", "// Functions for progressing forward and backward through time.\n\nimport type { CardOrder } from \"@hanabi-live/game\";\nimport { clamp, parseIntSafe } from \"complete-common\";\nimport Konva from \"konva\";\nimport { closeModals, showPrompt } from \"../../modals\";\nimport { getHTMLElement, getHTMLInputElement } from \"../../utils\";\nimport { globals } from \"./UIGlobals\";\nimport * as arrows from \"./arrows\";\nimport type { Shuttle } from \"./controls/Shuttle\";\nimport { getCardOrStackBase } from \"./getCardOrStackBase\";\nimport { animate } from \"./konvaHelpers\";\n\nconst setTurnButton = getHTMLElement(\"#set-turn-button\");\nconst setTurnInput = getHTMLInputElement(\"#set-turn-input\");\n\n// ---------------------\n// Main replay functions\n// ---------------------\n\nexport function enter(customSegment?: number): void {\n if (globals.state.replay.active) {\n return;\n }\n\n // By default, use the final segment of the ongoing game, or 0\n const segment = customSegment ?? globals.state.ongoingGame.turn.segment ?? 0;\n\n globals.store!.dispatch({\n type: \"replayEnter\",\n segment,\n });\n}\n\nexport function exit(): void {\n if (!globals.state.replay.active) {\n return;\n }\n\n // Always animate fast if we are exiting a replay, even if we are only jumping to an adjacent\n // turn.\n globals.store!.dispatch({\n type: \"replayExit\",\n });\n}\n\nfunction getCurrentReplaySegment() {\n const finalSegment = globals.state.ongoingGame.turn.segment!;\n return globals.state.replay.active\n ? globals.state.replay.segment\n : finalSegment;\n}\n\nexport function goToSegment(\n segment: number,\n breakFree = false,\n force = false,\n): void {\n const finalSegment = globals.state.ongoingGame.turn.segment!;\n const currentSegment = getCurrentReplaySegment();\n\n // Validate the target segment. The target must be between 0 and the final replay segment.\n const newSegment = clamp(segment, 0, finalSegment);\n if (currentSegment === newSegment) {\n if (\n newSegment === finalSegment &&\n globals.state.replay.hypothetical === null &&\n !globals.state.finished\n ) {\n exit();\n }\n return;\n }\n\n // Disable replay navigation while we are in a hypothetical. (Hypothetical navigation functions\n // will set \"force\" equal to true.)\n if (globals.state.replay.hypothetical !== null && !force) {\n return;\n }\n\n // Enter the replay, if we are not already.\n enter(newSegment);\n\n // By default, most replay navigation actions should \"break free\" from the shared segments to\n // allow users to go off on their own side adventure through the game. However, if we are\n // navigating to a new segment as the shared replay leader, do not disable shared segments.\n if (\n breakFree &&\n globals.state.replay.shared !== null &&\n globals.state.replay.shared.useSharedSegments &&\n !globals.state.replay.shared.amLeader\n ) {\n globals.store!.dispatch({\n type: \"replayUseSharedSegments\",\n useSharedSegments: false,\n });\n }\n\n globals.store!.dispatch({\n type: \"replaySegment\",\n segment: newSegment,\n });\n\n if (\n globals.state.replay.shared !== null &&\n globals.state.replay.shared.amLeader &&\n globals.state.replay.shared.useSharedSegments\n ) {\n globals.store!.dispatch({\n type: \"replaySharedSegment\",\n segment: newSegment,\n });\n }\n}\n\nexport function goToSegmentAndIndicateCard(\n segment: number,\n order: CardOrder,\n): void {\n goToSegment(segment, true);\n\n // We indicate the card to make it easier to see.\n arrows.hideAll(); // We hide all the arrows first to ensure that the arrow is always shown\n const card = getCardOrStackBase(order);\n if (card) {\n arrows.toggle(card.state.order);\n }\n}\n\n// ---------------------------\n// Replay navigation functions\n// ---------------------------\n\nexport function back(breakFree = true): void {\n goToSegment(getCurrentReplaySegment() - 1, breakFree);\n}\n\nexport function forward(): void {\n goToSegment(getCurrentReplaySegment() + 1, true);\n}\n\nexport function backRound(): void {\n goToSegment(getCurrentReplaySegment() - globals.options.numPlayers, true);\n}\n\nexport function forwardRound(): void {\n goToSegment(getCurrentReplaySegment() + globals.options.numPlayers, true);\n}\n\nexport function backFull(): void {\n goToSegment(0, true);\n}\n\nexport function forwardFull(): void {\n const finalSegment = globals.state.ongoingGame.turn.segment!;\n goToSegment(finalSegment, true);\n}\n\n// ------------------------\n// The \"Exit Replay\" button\n// ------------------------\n\nexport function exitButton(): void {\n // Mark the time that the user clicked the \"Exit Replay\" button (so that we can avoid an\n // accidental \"Give Clue\" double-click).\n globals.UIClickTime = Date.now();\n\n exit();\n}\n\n// ------------------\n// The replay shuttle\n// ------------------\n\n// Gets the current segment from an X position relative to a maximum width\nfunction segmentFromBarPosition(x: number, w: number) {\n const finalSegment = globals.state.ongoingGame.turn.segment!;\n const step = w / finalSegment;\n return Math.floor((x + step / 2) / step);\n}\n\n// Called when a position in the bar is clicked.\nexport function barClick(this: Konva.Rect): void {\n const rectX =\n globals.stage.getPointerPosition().x - this.getAbsolutePosition().x;\n const w = globals.elements.replayBar!.width();\n goToSegment(segmentFromBarPosition(rectX, w), true);\n}\n\n// Called when a position in the bar is clicked.\nexport function barScroll(\n this: Konva.Rect,\n e: Konva.KonvaEventObject,\n): void {\n let delta: number;\n if (e.evt.deltaY > 0) {\n delta = 1;\n } else if (e.evt.deltaY < 0) {\n delta = -1;\n } else {\n return;\n }\n\n goToSegment(getCurrentReplaySegment() + delta, true);\n}\n\n// Restricts the positions of the replay shuttle. Given a desired position, returns the allowed\n// position closest to it.\nexport function shuttleDragBound(\n this: Konva.Rect,\n pos: Konva.Vector2d,\n): { x: number; y: number } {\n const min =\n globals.elements.replayBar!.getAbsolutePosition().x + this.width() * 0.5;\n const w = globals.elements.replayBar!.width() - this.width();\n\n const shuttleX = clamp(pos.x - min, 0, w);\n const segment = segmentFromBarPosition(shuttleX, w);\n\n const finalSegment = globals.state.ongoingGame.turn.segment!;\n const step = w / finalSegment;\n\n return {\n x: min + segment * step,\n y: this.getAbsolutePosition().y,\n };\n}\n\n// Called when the shuttle moves. The position is guaranteed to be valid by shuttleDragBound.\nexport function shuttleDragMove(this: Konva.Rect): void {\n const min =\n globals.elements.replayBar!.getAbsolutePosition().x + this.width() * 0.5;\n const w = globals.elements.replayBar!.width() - this.width();\n const newSegment = segmentFromBarPosition(\n this.getAbsolutePosition().x - min,\n w,\n );\n goToSegment(newSegment, true);\n}\n\nfunction positionReplayShuttle(\n shuttle: Shuttle,\n targetSegment: number,\n smaller: boolean,\n fast: boolean,\n) {\n let finalSegment = globals.state.ongoingGame.turn.segment;\n if (\n finalSegment === null || // The final segment is null during initialization\n finalSegment === 0 // The final segment is 0 before a move is made\n ) {\n // For the purposes of the replay shuttle calculation, we need to assume that there are at least\n // two possible locations.\n finalSegment = 1;\n }\n const winH = globals.stage.height();\n const sliderW = globals.elements.replayBar!.width() - shuttle.width();\n const x =\n globals.elements.replayBar!.x() +\n (sliderW / finalSegment) * targetSegment +\n shuttle.width() / 2;\n let y = globals.elements.replayBar!.y() + shuttle.height() * 0.55;\n if (smaller) {\n y -= 0.003 * winH;\n }\n const scale = smaller ? 0.7 : 1;\n animate(\n shuttle,\n {\n duration: 0.25,\n x,\n y,\n scale,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n easing: Konva.Easings.EaseOut,\n },\n true,\n fast,\n );\n}\n\nexport function adjustShuttles(fast: boolean): void {\n // If the two shuttles are overlapping, then make the normal shuttle a little bit smaller.\n let smaller = false;\n if (\n globals.state.replay.shared !== null &&\n !globals.state.replay.shared.useSharedSegments &&\n globals.state.replay.segment === globals.state.replay.shared.segment\n ) {\n smaller = true;\n }\n\n const draggingShuttle = globals.elements.replayShuttle!.isDragging();\n\n // Adjust the replay shuttle along the bar based on the current segment. If it is smaller, we need\n // to nudge it to the right a bit in order to center it.\n positionReplayShuttle(\n globals.elements.replayShuttle!,\n globals.state.replay.segment,\n smaller,\n fast || draggingShuttle,\n );\n\n // Adjust the shared replay shuttle along the bar based on the shared segment.\n globals.elements.replayShuttleShared!.visible(\n globals.state.replay.shared !== null,\n );\n if (globals.state.replay.shared !== null) {\n positionReplayShuttle(\n globals.elements.replayShuttleShared!,\n globals.state.replay.shared.segment,\n false,\n fast ||\n (draggingShuttle &&\n globals.state.replay.shared.segment === globals.state.replay.segment),\n );\n }\n}\n\n// -----------------------------\n// Right-clicking the turn count\n// -----------------------------\n\nexport function promptTurn(): void {\n const finalSegment = globals.state.ongoingGame.turn.segment! + 1;\n const currentSegment = getCurrentReplaySegment() + 1;\n\n setTurnInput.min = \"1\";\n setTurnInput.max = Math.max(finalSegment, currentSegment).toString();\n setTurnInput.value = currentSegment.toString();\n\n // We can't use \"addEventListener\" because we can't easily remove the previous listener.\n // eslint-disable-next-line unicorn/prefer-add-event-listener\n setTurnButton.onclick = (event) => {\n event.preventDefault();\n closeModals();\n\n goTo(setTurnInput.value);\n };\n\n showPrompt(\"#set-turn-modal\", null, setTurnInput, setTurnButton);\n}\n\nexport function goTo(turnString: string): void {\n const turn = parseIntSafe(turnString);\n if (turn === undefined) {\n return;\n }\n\n // A turn is an approximation for a segment. We minus one from the turn since turns are\n // represented to the user as starting from 1 (instead of from 0).\n const segment = turn - 1;\n\n goToSegment(segment, true);\n}\n\n// --------------------------------\n// The \"Toggle Shared Turns\" button\n// --------------------------------\n\nexport function toggleSharedSegments(): void {\n if (globals.state.replay.shared === null) {\n return;\n }\n\n globals.store!.dispatch({\n type: \"replayUseSharedSegments\",\n useSharedSegments: !globals.state.replay.shared.useSharedSegments,\n });\n}\n", "import { getAdjustedClueTokens, isAtMaxClueTokens } from \"@hanabi-live/game\";\nimport * as notifications from \"../../notifications\";\nimport { ActionType } from \"../types/ActionType\";\nimport type { ClientAction } from \"../types/ClientAction\";\nimport { globals } from \"./UIGlobals\";\nimport * as arrows from \"./arrows\";\nimport { PREPLAY_DELAY_MILLISECONDS } from \"./constants\";\nimport * as hypothetical from \"./hypothetical\";\nimport { isOurTurn } from \"./isOurTurn\";\nimport * as ourHand from \"./ourHand\";\nimport * as replay from \"./replay\";\n\nexport function begin(): void {\n resetSelectedClue();\n\n if (globals.animateFast) {\n return;\n }\n\n if (globals.lobby.settings.desktopNotification) {\n notifications.send(\"It is your turn.\", \"turn\");\n }\n\n handlePremove();\n}\n\n// Handle pre-playing / pre-discarding / pre-cluing.\nfunction handlePremove() {\n const { premove } = globals.state;\n const { clueTokens } = globals.state.ongoingGame;\n\n if (premove === null) {\n return;\n }\n\n // Make a copy of the premove values and then clear the premove action.\n const oldPremove = { ...premove };\n globals.store!.dispatch({\n type: \"premove\",\n premove: null,\n });\n\n // Perform some validation.\n switch (oldPremove.type) {\n case ActionType.ColorClue:\n case ActionType.RankClue: {\n // Prevent pre-cluing if there is not a clue available.\n if (clueTokens < getAdjustedClueTokens(1, globals.variant)) {\n return;\n }\n\n break;\n }\n\n case ActionType.Discard: {\n // Prevent discarding if the team is at the maximum amount of clues.\n if (isAtMaxClueTokens(clueTokens, globals.variant)) {\n return;\n }\n\n break;\n }\n\n default: {\n break;\n }\n }\n\n // We do not want to send the action right away, or else it introduces bugs.\n setTimeout(() => {\n // As a sanity check, ensure that it is still our turn.\n if (!isOurTurn()) {\n return;\n }\n\n globals.lobby.conn!.send(\"action\", {\n tableID: globals.lobby.tableID,\n ...oldPremove,\n });\n\n hideArrowsAndDisableDragging();\n }, PREPLAY_DELAY_MILLISECONDS);\n}\n\nexport function resetSelectedClue(): void {\n // Reset the clue UI, leaving the last target player selected.\n globals.elements.clueTypeButtonGroup!.clearPressed();\n\n globals.layers.UI.batchDraw();\n}\n\nexport function end(clientAction: ClientAction): void {\n if (globals.state.replay.hypothetical !== null) {\n hypothetical.sendHypotheticalAction(clientAction);\n return;\n }\n\n const { currentPlayerIndex } = globals.state.ongoingGame.turn;\n const { ourPlayerIndex } = globals.metadata;\n\n if (currentPlayerIndex === ourPlayerIndex) {\n replay.exit(); // Close the in-game replay in case we preplayed a card in the replay.\n hideArrowsAndDisableDragging();\n showWaitingOnServerAnimation();\n globals.lobby.conn!.send(\"action\", {\n tableID: globals.lobby.tableID,\n ...clientAction,\n });\n return;\n }\n\n if (globals.lobby.settings.speedrunPreplay) {\n globals.store!.dispatch({\n type: \"premove\",\n premove: clientAction,\n });\n }\n}\n\nfunction showWaitingOnServerAnimation() {\n globals.elements.clueArea!.hide();\n\n globals.elements.waitingOnServer!.show();\n globals.elements.waitingOnServerAnimation!.start();\n}\n\nexport function hideArrowsAndDisableDragging(): void {\n arrows.hideAll();\n\n // Make all of the cards in our hand not draggable. (But we need to keep them draggable if the\n // pre-play setting is enabled.)\n if (!globals.lobby.settings.speedrunPreplay) {\n ourHand.checkSetDraggableAll();\n }\n}\n", "// Speedrun click functions for the HanabiCard object.\n\nimport type {\n CardState,\n Color,\n RankClueNumber,\n Variant,\n} from \"@hanabi-live/game\";\nimport {\n START_CARD_RANK,\n getAdjustedClueTokens,\n getColorForPrismCard,\n isAtMaxClueTokens,\n isCardInPlayerHand,\n isCardTouchedByClueColor,\n isCardTouchedByClueRank,\n isValidRankClueNumber,\n} from \"@hanabi-live/game\";\nimport * as sounds from \"../../sounds\";\nimport { ActionType } from \"../types/ActionType\";\nimport { SoundType } from \"../types/SoundType\";\nimport { ColorButton } from \"./ColorButton\";\nimport type { HanabiCard } from \"./HanabiCard\";\nimport { RankButton } from \"./RankButton\";\nimport { globals } from \"./UIGlobals\";\nimport { clickRightCheckAddNote } from \"./clickNotes\";\nimport { colorToColorIndex } from \"./convert\";\nimport * as turn from \"./turn\";\n\nexport function mouseDownSpeedrun(card: HanabiCard, event: MouseEvent): void {\n if (\n // Do nothing if we are clicking on a card that is not in a hand. (This is likely a misclick.)\n card.layout.parent === null ||\n typeof card.state.location !== \"number\" ||\n // Unlike the \"click()\" function, we do not want to disable all clicks if the card is tweening\n // because we want to be able to click on cards as they are sliding down. However, make an\n // exception for the first card in the hand (as it is sliding in from the deck).\n (card.tweening &&\n card.layout.index === card.layout.parent.children.length - 1)\n ) {\n return;\n }\n\n if (event.button === 0) {\n clickLeft(card, event);\n } else if (event.button === 2) {\n clickRight(card, event);\n }\n}\n\nfunction clickLeft(card: HanabiCard, event: MouseEvent) {\n // Left-clicking on cards in our own hand is a play action.\n if (\n card.state.location === globals.metadata.ourPlayerIndex &&\n !event.ctrlKey &&\n !event.shiftKey &&\n !event.altKey &&\n !event.metaKey\n ) {\n turn.end({\n type: ActionType.Play,\n target: card.state.order,\n });\n return;\n }\n\n // Left-clicking on cards in other people's hands is a color clue action.\n if (\n card.state.location !== globals.metadata.ourPlayerIndex &&\n isCardInPlayerHand(card.state) &&\n // Ensure there is at least 1 clue token available.\n globals.state.ongoingGame.clueTokens >=\n getAdjustedClueTokens(1, globals.variant) &&\n !event.ctrlKey &&\n !event.shiftKey &&\n !event.altKey &&\n !event.metaKey &&\n typeof card.state.location === \"number\"\n ) {\n const clueColor = getColorForSpeedrunClue(card.state, globals.variant);\n if (clueColor === undefined) {\n return;\n }\n\n const colorIndex = colorToColorIndex(clueColor, globals.variant);\n if (colorIndex === undefined) {\n return;\n }\n\n turn.end({\n type: ActionType.ColorClue,\n target: card.state.location,\n value: colorIndex,\n });\n }\n}\n\n/** A card may be clueable by more than one color, so we need to figure out which color to use. */\nfunction getColorForSpeedrunClue(\n cardState: CardState,\n variant: Variant,\n): Color | undefined {\n if (cardState.suitIndex === null || cardState.rank === null) {\n return undefined;\n }\n\n const suit = globals.variant.suits[cardState.suitIndex];\n if (suit === undefined) {\n return undefined;\n }\n\n // If they have clicked on a clue color button, and that color touches the card, assume that they\n // want to use that color.\n const clueButton = globals.elements.clueTypeButtonGroup?.getPressed();\n if (\n clueButton !== null &&\n clueButton !== undefined &&\n clueButton instanceof ColorButton &&\n typeof clueButton.clue.value !== \"number\" &&\n isCardTouchedByClueColor(\n globals.variant,\n clueButton.clue.value,\n suit,\n cardState.rank,\n )\n ) {\n return clueButton.clue.value;\n }\n\n // Otherwise, assume that they want to use the first possible color of the card.\n const firstClueColor = suit.clueColors[0];\n if (firstClueColor !== undefined) {\n return firstClueColor;\n }\n\n // Handle the cases where the \"suit.clueColors\" array is empty.\n if (suit.allClueColors) {\n return variant.suits[0];\n }\n if (suit.prism) {\n return getColorForPrismCard(globals.variant, cardState.rank);\n }\n\n return undefined;\n}\n\nfunction clickRight(card: HanabiCard, event: MouseEvent) {\n // Right-clicking on cards in our own hand is a discard action.\n if (\n card.state.location === globals.metadata.ourPlayerIndex &&\n !event.ctrlKey &&\n !event.shiftKey &&\n !event.altKey &&\n !event.metaKey\n ) {\n // Prevent discarding while at the maximum amount of clues.\n if (\n isAtMaxClueTokens(globals.state.ongoingGame.clueTokens, globals.variant)\n ) {\n sounds.play(SoundType.Error);\n globals.elements.cluesNumberLabelPulse!.play();\n return;\n }\n\n turn.end({\n type: ActionType.Discard,\n target: card.state.order,\n });\n return;\n }\n\n // Right-clicking on cards in other people's hands is a rank clue action.\n if (\n typeof card.state.location === \"number\" &&\n card.state.location !== globals.metadata.ourPlayerIndex &&\n isCardInPlayerHand(card.state) &&\n card.state.rank !== null &&\n // It is not possible to clue a START card with a rank clue.\n card.state.rank !== START_CARD_RANK &&\n // Ensure there is at least 1 clue token available.\n globals.state.ongoingGame.clueTokens >=\n getAdjustedClueTokens(1, globals.variant) &&\n !event.ctrlKey &&\n !event.shiftKey &&\n !event.altKey &&\n !event.metaKey\n ) {\n const clueRank = getRankForSpeedrunClue(card.state);\n if (clueRank === undefined) {\n return;\n }\n\n turn.end({\n type: ActionType.RankClue,\n target: card.state.location,\n value: clueRank,\n });\n return;\n }\n\n clickRightCheckAddNote(event, card, true);\n}\n\n/** A card may be clueable by more than one rank, so we need to figure out which rank to use. */\nfunction getRankForSpeedrunClue(\n cardState: CardState,\n): RankClueNumber | undefined {\n if (cardState.suitIndex === null || cardState.rank === null) {\n return undefined;\n }\n\n const suit = globals.variant.suits[cardState.suitIndex];\n if (suit === undefined) {\n return undefined;\n }\n\n // If they have clicked on a clue rank button, and that rank touches the card, assume that they\n // want to use that rank.\n const clueButton = globals.elements.clueTypeButtonGroup?.getPressed();\n if (\n clueButton !== null &&\n clueButton !== undefined &&\n clueButton instanceof RankButton &&\n typeof clueButton.clue.value === \"number\" &&\n isCardTouchedByClueRank(\n globals.variant,\n clueButton.clue.value,\n cardState.suitIndex,\n suit,\n cardState.rank,\n )\n ) {\n return clueButton.clue.value;\n }\n\n // Otherwise, assume that they want to use the real rank of the card.\n if (isValidRankClueNumber(cardState.rank)) {\n return cardState.rank;\n }\n\n return undefined;\n}\n", "// Touch actions for the HanabiCard object. These are a subset of the actions in HanabiCardClick.ts.\n\nimport { isCardDiscarded, isCardPlayed } from \"@hanabi-live/game\";\nimport type { HanabiCard } from \"./HanabiCard\";\nimport { DOUBLE_TAP_DELAY_SECONDS } from \"./constants\";\nimport * as notes from \"./notes\";\nimport * as replay from \"./replay\";\n\nexport function HanabiCardTap(this: HanabiCard): void {\n // We must delay the action by a bit to make sure it isn't a double tap.\n if (this.wasRecentlyTapped) {\n // We now know it was a double tap, so ignore the tap action.\n this.wasRecentlyTapped = false;\n return;\n }\n this.wasRecentlyTapped = true;\n\n if (this.touchstartTimeout !== null) {\n // We executed a tap, so prevent the code from considering a long press is happening.\n clearTimeout(this.touchstartTimeout);\n }\n\n setTimeout(() => {\n if (this.wasRecentlyTapped) {\n HanabiCardTapAction.call(this);\n }\n this.wasRecentlyTapped = false;\n }, DOUBLE_TAP_DELAY_SECONDS);\n}\n\nfunction HanabiCardTapAction(this: HanabiCard) {\n // Disable all click events if the card is tweening.\n if (this.tweening) {\n return;\n }\n\n if (isCardPlayed(this.state) && this.state.segmentPlayed !== null) {\n // Tapping on played cards goes to the turn immediately before they were played.\n replay.goToSegmentAndIndicateCard(\n this.state.segmentPlayed,\n this.state.order,\n );\n } else if (\n isCardDiscarded(this.state) &&\n this.state.segmentDiscarded !== null\n ) {\n // Tapping on discarded cards goes to the turn immediately before they were discarded.\n replay.goToSegmentAndIndicateCard(\n this.state.segmentDiscarded,\n this.state.order,\n );\n }\n}\n\nexport function HanabiCardDblTap(this: HanabiCard): void {\n // Disable all click events if the card is tweening.\n if (this.tweening) {\n return;\n }\n\n // Open notes from mobile.\n const isDesktop = false;\n notes.openEditTooltip(this, isDesktop);\n}\n", "import { assertDefined } from \"complete-common\";\nimport Konva from \"konva\";\nimport { Screen } from \"../../lobby/types/Screen\";\nimport * as tooltips from \"../../tooltips\";\nimport { globals } from \"./UIGlobals\";\nimport type { NodeWithTooltip } from \"./controls/NodeWithTooltip\";\nimport type { TextWithTooltip } from \"./controls/TextWithTooltip\";\n\nexport function initKonvaTooltips(\n element: NodeWithTooltip,\n delayed: boolean,\n customContent: boolean,\n): void {\n assertDefined(\n element.tooltipName,\n 'An element that is supposed to have a tooltip does not have a \"tooltipName\" property.',\n );\n assertDefined(\n element.tooltipContent,\n 'An element that is supposed to have a tooltip does not have a \"tooltipContent\" property.',\n );\n\n element.on(\"mouseover touchstart\", function mouseOver(this: Konva.Node) {\n resetActiveHover();\n globals.activeHover = this;\n if (delayed) {\n setTimeout(() => {\n show(this);\n }, tooltips.TOOLTIP_DELAY_IN_MILLISECONDS);\n } else {\n show(this);\n }\n });\n\n element.on(\"mouseout touchend\", () => {\n assertDefined(\n element.tooltipName,\n 'An element that is supposed to have a tooltip does not have a \"tooltipName\" property.',\n );\n globals.activeHover = null;\n tooltips.close(`#tooltip-${element.tooltipName}`);\n });\n\n let content = element.tooltipContent;\n if (!customContent) {\n content = '';\n content += '';\n content += `  ${element.tooltipContent}`;\n }\n tooltips.setInstanceContent(`#tooltip-${element.tooltipName}`, content);\n}\n\nexport function show(element: NodeWithTooltip): void {\n // Do not do anything if we are no longer in the game.\n if (globals.lobby.currentScreen !== Screen.Game) {\n return;\n }\n\n // Do not do anything if the user has moved the mouse away in the meantime.\n if (globals.activeHover !== element) {\n return;\n }\n\n assertDefined(\n element.tooltipName,\n 'An element that is supposed to have a tooltip does not have a \"tooltipName\" property.',\n );\n\n const pos = element.getAbsolutePosition();\n let width = element.width();\n if (element instanceof Konva.Text) {\n width = element.getTextWidth();\n\n // For text elements consisting of only one emoji, \"getTextWidth()\" will not return the correct\n // width. Fall back to the element width instead.\n const text = element as TextWithTooltip;\n if (text.emoji) {\n width = element.width();\n }\n }\n const tooltip = `#tooltip-${element.tooltipName}`;\n const tooltipX = pos.x + width / 2;\n tooltips.setPosition(tooltip, tooltipX, pos.y);\n tooltips.open(tooltip);\n}\n\nexport function resetActiveHover(): void {\n if (globals.activeHover !== null) {\n globals.activeHover.dispatchEvent(new MouseEvent(\"mouseout\"));\n }\n}\n", "import { isCardDiscarded, isCardPlayed } from \"@hanabi-live/game\";\nimport type Konva from \"konva\";\nimport * as tooltips from \"../../tooltips\";\nimport type { CardLayout } from \"./CardLayout\";\nimport type { HanabiCard } from \"./HanabiCard\";\nimport { HanabiCardClick } from \"./HanabiCardClick\";\nimport { mouseDownSpeedrun } from \"./HanabiCardClickSpeedrun\";\nimport { HanabiCardDblTap, HanabiCardTap } from \"./HanabiCardTouchActions\";\nimport type { LayoutChild } from \"./LayoutChild\";\nimport { globals } from \"./UIGlobals\";\nimport * as arrows from \"./arrows\";\nimport { DOUBLE_TAP_DELAY_SECONDS } from \"./constants\";\nimport * as cursor from \"./cursor\";\nimport * as konvaTooltips from \"./konvaTooltips\";\nimport * as notes from \"./notes\";\n\nexport function registerMouseHandlers(this: HanabiCard): void {\n // https://konvajs.org/docs/events/Binding_Events.html\n this.on(\"mouseenter\", mouseEnter);\n this.on(\"mouseleave\", mouseLeave);\n this.on(\"touchstart\", touchStart);\n this.on(\"touchend\", mouseLeave);\n this.on(\"click\", HanabiCardClick);\n this.on(\"tap\", HanabiCardTap);\n this.on(\"dbltap\", HanabiCardDblTap);\n this.on(\"mousedown\", mouseDown);\n this.on(\"mouseup\", mouseUp);\n}\n\n// --------------------\n// Mouse event handlers\n// --------------------\n\nfunction mouseEnter(this: HanabiCard) {\n // Keep track of which element we are hovering over\n konvaTooltips.resetActiveHover();\n globals.activeHover = this;\n\n // When we hover over a card, show a tooltip that contains the note.\n checkShowNoteTooltip(this);\n\n // When we hover over a card, the relevant positive and negative clues will be highlighted in the\n // clue log.\n globals.elements.clueLog!.showMatches(this.state.order);\n globals.layers.UI.batchDraw();\n\n // When we hover over a card, the cursor can change.\n this.setCursor();\n}\n\nfunction mouseLeave(this: HanabiCard) {\n globals.activeHover = null;\n\n // When we stop hovering over a card, close any open tooltips.\n checkHideNoteTooltip(this);\n\n // When we stop hovering over a card, the clue log will return to normal.\n globals.elements.clueLog!.showMatches(null);\n globals.layers.UI.batchDraw();\n\n // When we stop hovering over a card, the cursor should change back to normal.\n cursor.set(\"default\");\n\n // During replay hypo, skip the starting player.\n if (checkForHypoEmpathy(this)) {\n return;\n }\n\n // When we stop hovering over a card, disable Empathy (if it is enabled).\n if (!globals.globalEmpathyEnabled) {\n setEmpathyOnHand(this, false);\n }\n}\n\nfunction touchStart(\n this: HanabiCard,\n event: Konva.KonvaEventObject,\n) {\n // Make sure to not register this as a single tap if the user long presses the card.\n this.touchstartTimeout = setTimeout(() => {\n // A tap will trigger when the \"touchend\" event occurs. The next tap action will not run because\n // it will appear like the second tap of a double tap. Do not worry about this if we actually\n // double-tapped.\n this.wasRecentlyTapped = true;\n if (globals.editingNote !== null) {\n globals.editingNote = null;\n tooltips.close(`#tooltip-${this.tooltipName}`);\n }\n }, DOUBLE_TAP_DELAY_SECONDS);\n\n // Do all of the same things that would occur if we hovered over the card.\n mouseEnter.call(this);\n\n // During replay hypo, skip the starting player.\n if (checkForHypoEmpathy(this)) {\n return;\n }\n\n // Empathy\n if (shouldShowEmpathy(this, event)) {\n setEmpathyOnHand(this, true);\n }\n}\n\nfunction mouseDown(\n this: HanabiCard,\n event: Konva.KonvaEventObject,\n) {\n // Speedrunning overrides the normal card clicking behavior.\n if (useSpeedrunClickHandlers()) {\n mouseDownSpeedrun(this, event.evt);\n return;\n }\n\n const editMode =\n globals.elements.editCardsButton !== null &&\n globals.elements.editCardsButton.pressed &&\n globals.state.replay.hypothetical !== null;\n // Empathy\n if (\n event.evt.buttons === 1 && // Only enable Empathy for left-clicks\n shouldShowEmpathy(this, event) &&\n !editMode &&\n !checkForHypoEmpathy(this)\n ) {\n setEmpathyOnHand(this, true);\n }\n\n // Dragging\n if (event.evt.buttons === 1) {\n // Only enable dragging for left-clicks.\n dragStart(this);\n }\n}\n\nfunction mouseUp(this: HanabiCard) {\n // Speedrunning overrides the normal card clicking behavior.\n if (useSpeedrunClickHandlers()) {\n return;\n }\n\n // During replay hypo, skip the starting player.\n if (!checkForHypoEmpathy(this) && !globals.globalEmpathyEnabled) {\n setEmpathyOnHand(this, false);\n }\n\n dragEnd(this);\n}\n\n// -----------\n// Subroutines\n// -----------\n\nfunction checkShowNoteTooltip(card: HanabiCard) {\n if (globals.editingNote !== null) {\n // Do not open any more note tooltips if the user is currently editing a note\n return;\n }\n\n if (\n card.noteIndicator.isVisible() === false &&\n card.state.location !== \"playStack\"\n ) {\n // Do not do anything if there is not a note on this card in hand.\n return;\n }\n\n // If we are spectating and there is a new note, mark it as seen.\n if (card.noteIndicator.rotated) {\n card.noteIndicator.rotated = false;\n card.noteIndicator.rotate(-15);\n globals.layers.card.batchDraw();\n }\n\n notes.show(card);\n}\n\nexport function setCursor(this: HanabiCard): void {\n const cursorType = getCursorType(this);\n cursor.set(cursorType);\n}\n\nfunction getCursorType(card: HanabiCard) {\n if (card.dragging) {\n return \"dragging\";\n }\n\n if (\n globals.elements.editCardsButton !== null &&\n globals.elements.editCardsButton.pressed &&\n globals.state.replay.hypothetical !== null\n ) {\n return \"edit\";\n }\n\n if (card.layout.draggable() && !card.tweening) {\n return \"hand\";\n }\n\n if (shouldShowLookCursor(card)) {\n return \"look\";\n }\n\n return \"default\";\n}\n\n// The look cursor should show if Empathy can be used on the card.\nfunction shouldShowLookCursor(card: HanabiCard) {\n // It is not possible to use Empathy on a stack base.\n if (card.isStackBase) {\n return false;\n }\n\n // If we are in an in-game replay or we are not a player in an ongoing game, always show the\n // cursor.\n if (globals.state.replay.active || !globals.state.playing) {\n return true;\n }\n\n // For ongoing games, always show the cursor for other people's hands.\n if (\n typeof card.state.location === \"number\" &&\n card.state.location !== globals.metadata.ourPlayerIndex\n ) {\n return true;\n }\n\n // For ongoing games, only show the cursor for our hand if it has a custom card identity.\n\n // Check if there exists a possibility from clues that the note declares impossible.\n const noteNarrowsPossibilities =\n card.note.possibilities.length > 0 &&\n card.state.possibleCardsFromClues.some(\n ([suitIndexA, rankA]) =>\n !card.note.possibilities.some(\n ([suitIndexB, rankB]) => suitIndexA === suitIndexB && rankA === rankB,\n ),\n );\n if (noteNarrowsPossibilities || card.note.blank || card.note.unclued) {\n return true;\n }\n\n return false;\n}\n\nfunction checkHideNoteTooltip(card: HanabiCard) {\n // Do not close the tooltip if we are currently editing a note.\n if (globals.editingNote === card.state.order) {\n return;\n }\n\n tooltips.close(`#tooltip-${card.tooltipName}`);\n}\n\nfunction useSpeedrunClickHandlers() {\n return (\n (globals.options.speedrun || globals.lobby.settings.speedrunMode) &&\n globals.state.playing\n );\n}\n\nfunction shouldShowEmpathy(\n card: HanabiCard,\n event: Konva.KonvaEventObject,\n) {\n return (\n // Disable Empathy if a modifier key is pressed.\n !event.evt.shiftKey &&\n !event.evt.altKey &&\n !event.evt.metaKey &&\n // Disable Empathy if the card is tweening (e.g. moving)\n !card.tweening &&\n // Disable empathy for the stack bases.\n !card.isStackBase &&\n // Clicking on a played card goes to the turn that it was played.\n !isCardPlayed(card.state) &&\n // Clicking on a discarded card goes to the turn that it was discarded.\n !isCardDiscarded(card.state)\n );\n}\n\n// In a game, click and hold the left mouse button on a teammate's hand to show the cards as they\n// appear to that teammate. Or show your own hand as it should appear without any identity notes on\n// it. Or, in a replay, show the hand as it appeared at that moment in time.\nexport function setEmpathyOnHand(card: HanabiCard, enabled: boolean): void {\n // Disable Empathy for cards that are not in a player's hand.\n if (typeof card.state.location !== \"number\") {\n return;\n }\n\n // As a sanity check, ensure that the hand object exists.\n const hand = card.layout.parent as unknown as CardLayout | undefined | null;\n if (hand === undefined || hand === null || hand.children.length === 0) {\n return;\n }\n\n hand.setEmpathy(enabled);\n}\n\n// Handle things relating to dragging a card. We cannot use the \"dragstart\" mouse event since that\n// will only fire after the element has moved at least one pixel. Ideally, we would have a check to\n// only make a card draggable with a left click. However, checking for \"event.evt.buttons !== 1\"\n// will break iPads.\nfunction dragStart(card: HanabiCard) {\n if (!card.layout.draggable()) {\n return;\n }\n\n card.dragging = true;\n globals.store!.dispatch({ type: \"dragStart\", card });\n\n // Enable the dragging raise effect.\n card.setRaiseAndShadowOffset();\n\n // We need to change the cursor from the hand to the grabbing icon.\n card.setCursor();\n\n // In a hypothetical, dragging a rotated card from another person's hand is frustrating, so\n // temporarily remove all rotation (for the duration of the drag). The rotation will be\n // automatically reset if the card tweens back to the hand.\n if (\n globals.state.replay.hypothetical !== null &&\n card.layout.parent !== null &&\n globals.lobby.settings.keldonMode\n ) {\n card.layout.rotation(card.layout.parent.rotation() * -1);\n }\n\n // Hide any visible arrows on the rest of a hand when the card begins to be dragged.\n const hand = card.layout.parent;\n if (hand === null) {\n return;\n }\n let hideArrows = false;\n for (const layoutChild of hand.children.toArray() as LayoutChild[]) {\n for (const arrow of globals.elements.arrows) {\n if (arrow.pointingTo === layoutChild.card) {\n hideArrows = true;\n break;\n }\n }\n if (hideArrows) {\n break;\n }\n }\n if (hideArrows) {\n arrows.hideAll();\n }\n\n // Move this hand to the top. (Otherwise, the card can appear under the play stacks / discard\n // stacks.)\n hand.moveToTop();\n}\n\n// Handle things relating to dragging a card. We cannot use the \"dragend\" mouse event since that\n// will only fire after the element has moved at least one pixel.\nfunction dragEnd(card: HanabiCard) {\n if (!card.layout.draggable()) {\n return;\n }\n\n card.dragging = false;\n\n // Disable the dragging raise effect.\n card.setRaiseAndShadowOffset();\n\n // We need to change the cursor from the grabbing icon back to the default.\n card.setCursor();\n}\n\nfunction checkForHypoEmpathy(card: HanabiCard): boolean {\n if (globals.state.replay.hypothetical !== null) {\n const { startingPlayerIndex } = globals.state.replay.hypothetical;\n if (\n startingPlayerIndex === null ||\n startingPlayerIndex >= globals.elements.playerHands.length ||\n globals.elements.playerHands[startingPlayerIndex] === undefined\n ) {\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (\n let i = 0;\n i < globals.elements.playerHands[startingPlayerIndex].children.length;\n i++\n ) {\n const child =\n globals.elements.playerHands[startingPlayerIndex].children[i]!;\n const currentCard: HanabiCard = child.children[0] as HanabiCard;\n if (currentCard._id === card._id) {\n return true;\n }\n }\n }\n\n return false;\n}\n", "import type { PlayerIndex } from \"@hanabi-live/game\";\nimport {\n isAtMaxClueTokens,\n isCardPotentiallyPlayable,\n} from \"@hanabi-live/game\";\nimport Konva from \"konva\";\nimport * as modals from \"../../modals\";\nimport * as sounds from \"../../sounds\";\nimport { ActionType } from \"../types/ActionType\";\nimport { SoundType } from \"../types/SoundType\";\nimport type { CardLayout } from \"./CardLayout\";\nimport type { HanabiCard } from \"./HanabiCard\";\nimport type { PlayStack } from \"./PlayStack\";\nimport { globals } from \"./UIGlobals\";\nimport * as cursor from \"./cursor\";\nimport { isOurTurn } from \"./isOurTurn\";\nimport * as turn from \"./turn\";\n\n/** Parent of a `HanabiCard`. It has a `CardLayout` or `PlayStack` parent. */\nexport class LayoutChild extends Konva.Group {\n tween: Konva.Tween | null = null;\n doMisplayAnimation = false;\n blank = false;\n\n private readonly _card: HanabiCard;\n get card(): HanabiCard {\n return this._card;\n }\n\n constructor(child: HanabiCard, config?: Konva.ContainerConfig) {\n super(config);\n this.listening(true);\n this._card = child;\n this.addCard(child);\n }\n\n private addCard(child: HanabiCard) {\n this.add(child as unknown as Konva.Group);\n this.width(child.width());\n this.height(child.height());\n\n // eslint-disable-next-line unicorn/consistent-function-scoping\n const change = (event: unknown) => {\n const changeEvent = event as { oldVal: number; newVal: number };\n if (changeEvent.oldVal === changeEvent.newVal) {\n return;\n }\n this.width(changeEvent.newVal);\n if (this.parent !== null) {\n (this.parent as unknown as CardLayout | PlayStack).doLayout();\n }\n };\n\n child.on(\"widthChange\", change);\n child.on(\"heightChange\", change);\n }\n\n // Note that this method cannot be named \"setDraggable()\", since that would overlap with the Konva\n // function.\n checkSetDraggable(): void {\n if (globals.state.visibleState === null) {\n return;\n }\n\n if (\n this.shouldBeDraggable(globals.state.visibleState.turn.currentPlayerIndex)\n ) {\n this.draggable(true);\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.on(\"dragend\", this.dragEnd);\n } else {\n this.draggable(false);\n this.off(\"dragend\");\n }\n\n if (cursor.elementOverlaps(this)) {\n this.card.setCursor();\n }\n }\n\n shouldBeDraggable(currentPlayerIndex: PlayerIndex | null): boolean {\n // Rarely, if the game is restarted when a tween is happening, we can get here without the card\n // being defined.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (this.card === null || this.card === undefined) {\n return false;\n }\n\n // First, handle the special case of a hypothetical.\n if (globals.state.replay.hypothetical !== null) {\n return (\n (globals.state.replay.shared === null ||\n globals.state.replay.shared.amLeader) &&\n currentPlayerIndex === this.card.state.location &&\n !this.blank\n );\n }\n\n return (\n // If it is not our turn, then the card should not need to be draggable yet (unless we have\n // the \"Enable pre-playing cards\" feature enabled).\n (isOurTurn() || globals.lobby.settings.speedrunPreplay) &&\n // Cards should not be draggable if there is a queued move.\n globals.state.premove === null &&\n !globals.options.speedrun && // Cards should never be draggable while speedrunning\n !globals.lobby.settings.speedrunMode && // Cards should never be draggable while speedrunning\n // Only our cards should be draggable.\n this.card.state.location === globals.metadata.ourPlayerIndex &&\n // Cards should not be draggable if we are spectating an ongoing game, in a dedicated solo\n // replay, or in a shared replay.\n globals.state.playing &&\n // Cards should not be draggable if they are currently playing an animation. (This function\n // will be called again upon the completion of the animation.)\n !this.card.tweening\n );\n }\n\n dragEnd(): void {\n // Mouse events will not normally fire when the card is released from being dragged.\n this.card.dispatchEvent(new MouseEvent(\"mouseup\"));\n this.card.dispatchEvent(new MouseEvent(\"mouseleave\"));\n\n this.draggable(false);\n\n // We have to unregister the handler or else it will send multiple actions for one drag.\n this.off(\"dragend\");\n\n const ongoingGameState =\n globals.state.replay.hypothetical === null\n ? globals.state.ongoingGame\n : globals.state.replay.hypothetical.ongoing;\n\n let draggedTo = cursor.getElementDragLocation(this);\n if (\n draggedTo === \"discardArea\" &&\n isAtMaxClueTokens(ongoingGameState.clueTokens, globals.variant)\n ) {\n sounds.play(SoundType.Error);\n globals.elements.cluesNumberLabelPulse!.play();\n draggedTo = null;\n }\n if (\n globals.state.replay.hypothetical !== null &&\n (draggedTo === \"playArea\" || draggedTo === \"discardArea\")\n ) {\n const knownCard = this.checkHypoUnknown(draggedTo);\n if (!knownCard) {\n // Morph modal is shown. Do not complete the drag action. It will be taken care of after the\n // user input.\n return;\n }\n }\n this.continueDragAction(draggedTo);\n }\n\n // Before we play a card, do a check to ensure that it is actually playable to prevent silly\n // mistakes from players. (But disable this in speedruns, hypotheticals and certain variants.)\n checkMisplay(): boolean {\n const { currentPlayerIndex } = globals.state.ongoingGame.turn;\n const { ourPlayerIndex } = globals.metadata;\n const { ongoingGame } = globals.state;\n\n if (\n globals.state.replay.hypothetical === null &&\n !globals.options.speedrun &&\n !globals.variant.throwItInAHole &&\n // Do not use warnings for preplays unless we are at 2 strikes.\n (currentPlayerIndex === ourPlayerIndex ||\n ongoingGame.strikes.length === 2) &&\n !isCardPotentiallyPlayable(\n this.card.state,\n ongoingGame.deck,\n ongoingGame.playStacks,\n ongoingGame.playStackDirections,\n ongoingGame.playStackStarts,\n globals.variant,\n )\n ) {\n let text = \"Are you sure you want to play this card?\\n\";\n text += \"It is known to be unplayable based on the current information\\n\";\n text +=\n \"available to you. (e.g. positive clues, negative clues, cards seen, etc.)\";\n // eslint-disable-next-line no-alert\n return !window.confirm(text);\n }\n\n return false;\n }\n\n checkHypoUnknown(draggedTo: \"playArea\" | \"discardArea\"): boolean {\n const { suitIndex, rank } = this.card.getMorphedIdentity();\n if (suitIndex !== null && rank !== null) {\n return true; // Known card\n }\n\n modals.askForMorph(this.card, globals.variant, draggedTo);\n return false; // Unknown card\n }\n\n continueDragAction(draggedTo: \"playArea\" | \"discardArea\" | null): void {\n if (draggedTo === \"playArea\" && this.checkMisplay()) {\n return;\n }\n\n if (draggedTo === null) {\n // The card was dragged to an invalid location; tween it back to the hand.\n (this.parent as unknown as CardLayout | PlayStack).doLayout();\n return;\n }\n\n let type: ActionType;\n switch (draggedTo) {\n case \"playArea\": {\n type = ActionType.Play;\n break;\n }\n\n case \"discardArea\": {\n type = ActionType.Discard;\n break;\n }\n }\n\n turn.end({\n type,\n target: this.card.state.order,\n });\n }\n}\n", "import type { Rank } from \"@hanabi-live/game\";\nimport { assertDefined } from \"complete-common\";\n\ntype DrawFunction = (ctx: CanvasRenderingContext2D) => void;\nconst shapeFunctions = new Map();\nconst sf = 2.2; // Scale factor\n\nshapeFunctions.set(0, (ctx: CanvasRenderingContext2D) => {\n ctx.beginPath();\n ctx.closePath();\n});\n\nshapeFunctions.set(1, (ctx: CanvasRenderingContext2D) => {\n ctx.beginPath();\n ctx.scale(sf, sf);\n ctx.translate(-49.066_27, -129.964_57);\n ctx.moveTo(49.037_052, 114.060_04);\n ctx.bezierCurveTo(\n 47.692_645,\n 113.014_01,\n 41.624_723,\n 112.092_76,\n 45.702_874,\n 87.778_647,\n );\n ctx.bezierCurveTo(\n 48.099_588,\n 86.450_447,\n 47.194_579,\n 84.930_047,\n 47.110_946,\n 84.501_897,\n );\n ctx.bezierCurveTo(\n 47.071_006,\n 84.298_337,\n 46.832_592,\n 83.918_907,\n 46.491_794,\n 83.450_827,\n );\n ctx.bezierCurveTo(\n 46.590_404,\n 82.946_547,\n 46.682_796,\n 82.453_447,\n 46.788_881,\n 81.931_667,\n );\n ctx.bezierCurveTo(\n 46.788_881,\n 81.931_667,\n 47.335_633,\n 78.918_277,\n 45.823_956,\n 80.806_957,\n );\n ctx.bezierCurveTo(\n 45.594_288,\n 81.093_777,\n 45.355_849,\n 81.396_157,\n 45.113_681,\n 81.706_967,\n );\n ctx.bezierCurveTo(\n 44.262_349,\n 80.670_887,\n 43.394_789,\n 79.653_537,\n 43.092_706,\n 79.200_407,\n );\n ctx.bezierCurveTo(\n 42.452_333,\n 78.237_989,\n 41.984_226,\n 79.200_407,\n 41.984_226,\n 79.200_407,\n );\n ctx.bezierCurveTo(\n 41.357_588,\n 81.290_037,\n 36.162_219,\n 84.779_017,\n 28.957_11,\n 88.839_667,\n );\n ctx.bezierCurveTo(\n 27.274_417,\n 89.789_637,\n 28.957_11,\n 89.964_377,\n 28.957_11,\n 89.964_377,\n );\n ctx.bezierCurveTo(\n 33.759_267,\n 89.964_377,\n 37.318_131,\n 89.728_357,\n 39.963_251,\n 89.355_237,\n );\n ctx.bezierCurveTo(\n 35.976_223,\n 96.436_757,\n 32.795_588,\n 106.008_63,\n 35.383_29,\n 117.434_19,\n );\n ctx.bezierCurveTo(\n 35.383_29,\n 117.434_19,\n 36.185_937,\n 120.486_24,\n 38.436_595,\n 120.486_24,\n );\n ctx.bezierCurveTo(\n 39.824_691,\n 120.486_24,\n 41.029_286,\n 119.802_17,\n 42.183_953,\n 119.104_39,\n );\n ctx.bezierCurveTo(\n 44.192_443,\n 117.8948,\n 46.157_251,\n 116.686_48,\n 48.334_259,\n 115.795_15,\n );\n ctx.bezierCurveTo(\n 49.139_407,\n 115.4667,\n 50.059_393,\n 114.8552,\n 49.037_048,\n 114.060_04,\n );\n ctx.scale(1 / sf, 1 / sf);\n ctx.closePath();\n});\n\nshapeFunctions.set(2, (ctx: CanvasRenderingContext2D) => {\n ctx.beginPath();\n ctx.scale(sf, sf);\n ctx.translate(-69.621_888, -87.003_819);\n ctx.moveTo(79.134_002, 66.457_149);\n ctx.bezierCurveTo(\n 73.293_48,\n 64.177_797,\n 67.566_172,\n 64.741_346,\n 62.659_021,\n 66.337_661,\n );\n ctx.bezierCurveTo(\n 73.933_762,\n 53.421_337,\n 78.128_924,\n 40.497_464,\n 72.336_202,\n 36.994_156,\n );\n ctx.bezierCurveTo(\n 65.372_355,\n 32.785_155,\n 56.619_746,\n 38.917_515,\n 50.320_082,\n 48.163_227,\n );\n ctx.bezierCurveTo(\n 48.221_873,\n 51.243_876,\n 50.320_082,\n 50.268_985,\n 50.320_082,\n 50.268_985,\n );\n ctx.bezierCurveTo(\n 72.670_81,\n 35.973_984,\n 62.267_812,\n 58.290_745,\n 56.539_244,\n 68.993_13,\n );\n ctx.bezierCurveTo(\n 53.261_104,\n 70.763_024,\n 50.744_005,\n 72.675_061,\n 49.385_452,\n 73.741_776,\n );\n ctx.bezierCurveTo(\n 47.582_851,\n 75.159_453,\n 50.320_082,\n 74.388_347,\n 50.320_082,\n 74.388_347,\n );\n ctx.bezierCurveTo(\n 51.692_474,\n 73.849_955,\n 52.998_196,\n 73.444_908,\n 54.264_921,\n 73.104_01,\n );\n ctx.bezierCurveTo(\n 54.003_252,\n 73.563_153,\n 53.813_328,\n 73.895_241,\n 53.717_727,\n 74.065_061,\n );\n ctx.bezierCurveTo(\n 52.261_057,\n 76.655_12,\n 55.014_643,\n 74.065_061,\n 55.014_643,\n 74.065_061,\n );\n ctx.bezierCurveTo(\n 55.575_676,\n 73.563_153,\n 56.124_127,\n 73.058_724,\n 56.665_032,\n 72.551_783,\n );\n ctx.bezierCurveTo(\n 66.928_403,\n 70.609_556,\n 73.166_429,\n 74.794_655,\n 74.277_173,\n 76.816_131,\n );\n ctx.bezierCurveTo(\n 74.932_55,\n 78.011_157,\n 76.220_66,\n 76.816_131,\n 76.220_66,\n 76.816_131,\n );\n ctx.bezierCurveTo(\n 76.220_66,\n 76.816_131,\n 78.647_188,\n 71.960_563,\n 79.620_822,\n 69.334_024,\n );\n ctx.bezierCurveTo(\n 80.590_672,\n 66.707_486,\n 79.134_002,\n 66.457_163,\n 79.134_002,\n 66.457_163,\n );\n ctx.scale(1 / sf, 1 / sf);\n ctx.closePath();\n});\n\nshapeFunctions.set(3, (ctx: CanvasRenderingContext2D) => {\n ctx.beginPath();\n ctx.scale(sf, sf);\n ctx.translate(-81.640_414, -140.588_27);\n ctx.moveTo(88.098_524, 108.798_91);\n ctx.bezierCurveTo(\n 86.781_994,\n 108.184_06,\n 85.321_664,\n 108.004_29,\n 83.810_504,\n 108.0861,\n );\n ctx.bezierCurveTo(\n 87.618_774,\n 104.7179,\n 89.522_904,\n 101.368_36,\n 88.916_714,\n 97.122_457,\n );\n ctx.bezierCurveTo(\n 88.253_484,\n 92.483_627,\n 84.823_314,\n 91.376_607,\n 80.638_184,\n 91.413_747,\n );\n ctx.bezierCurveTo(\n 81.191_084,\n 91.241_607,\n 81.740_254,\n 91.064_167,\n 82.253_474,\n 90.808_837,\n );\n ctx.bezierCurveTo(\n 83.333_234,\n 90.273_287,\n 84.236_954,\n 89.267_887,\n 82.379_904,\n 89.417_917,\n );\n ctx.bezierCurveTo(\n 76.397_249,\n 89.902_607,\n 69.341_044,\n 91.265_027,\n 64.837_321,\n 95.553_037,\n );\n ctx.bezierCurveTo(\n 62.491_864,\n 97.788_147,\n 63.794_76,\n 100.613_39,\n 65.758_396,\n 102.590_66,\n );\n ctx.bezierCurveTo(\n 66.736_497,\n 103.577_43,\n 67.704_683,\n 105.096_02,\n 69.033_605,\n 105.6229,\n );\n ctx.bezierCurveTo(\n 71.629_477,\n 106.651_82,\n 70.774_103,\n 103.982_79,\n 71.088_982,\n 102.109_64,\n );\n ctx.bezierCurveTo(\n 71.450_964,\n 99.963_777,\n 72.705_511,\n 97.662_917,\n 74.320_805,\n 95.736_507,\n );\n ctx.bezierCurveTo(\n 77.841_467,\n 97.903_427,\n 82.056_344,\n 102.189_01,\n 78.306_345,\n 109.260_07,\n );\n ctx.bezierCurveTo(\n 76.5894,\n 109.825_37,\n 74.945_599,\n 110.486_12,\n 73.515_015,\n 111.012_96,\n );\n ctx.bezierCurveTo(\n 69.948_481,\n 112.325_78,\n 73.515_015,\n 112.530_35,\n 73.515_015,\n 112.530_35,\n );\n ctx.bezierCurveTo(\n 74.324_523,\n 112.617_15,\n 75.058_407,\n 112.742_35,\n 75.743_942,\n 112.888_57,\n );\n ctx.bezierCurveTo(\n 75.037_334,\n 113.820_84,\n 74.568_737,\n 114.661_32,\n 76.077_439,\n 113.696_85,\n );\n ctx.bezierCurveTo(\n 76.352_661,\n 113.520_82,\n 76.612_978,\n 113.348_67,\n 76.881_987,\n 113.173_71,\n );\n ctx.bezierCurveTo(\n 86.274_974,\n 115.903_49,\n 82.420_834,\n 124.737_35,\n 80.359_264,\n 127.437_35,\n );\n ctx.bezierCurveTo(\n 75.016_284,\n 126.471_68,\n 67.765_449,\n 123.631_56,\n 66.622_472,\n 116.264_22,\n );\n ctx.bezierCurveTo(\n 66.622_472,\n 116.264_22,\n 66.668_332,\n 113.819_61,\n 65.220_405,\n 116.264_22,\n );\n ctx.bezierCurveTo(\n 63.089_411,\n 119.867_95,\n 60.784_86,\n 123.386_11,\n 60.784_86,\n 125.370_83,\n );\n ctx.bezierCurveTo(\n 60.784_86,\n 127.354_28,\n 63.119_163,\n 130.856_38,\n 68.372_886,\n 130.974_13,\n );\n ctx.bezierCurveTo(\n 73.624_13,\n 131.089_49,\n 82.146_864,\n 131.62,\n 85.883_234,\n 129.371_24,\n );\n ctx.bezierCurveTo(\n 85.883_234,\n 129.371_24,\n 88.217_534,\n 127.470_86,\n 85.883_234,\n 127.821_65,\n );\n ctx.bezierCurveTo(\n 85.413_404,\n 127.892_15,\n 84.414_224,\n 127.908_45,\n 83.115_054,\n 127.800_45,\n );\n ctx.bezierCurveTo(\n 85.842_324,\n 125.845_33,\n 88.606_794,\n 123.472_61,\n 90.440_264,\n 120.899_03,\n );\n ctx.bezierCurveTo(\n 93.074_564,\n 117.201_11,\n 92.620_844,\n 110.907_32,\n 88.098_534,\n 108.7974,\n );\n ctx.scale(1 / sf, 1 / sf);\n ctx.closePath();\n});\n\nshapeFunctions.set(4, (ctx: CanvasRenderingContext2D) => {\n ctx.beginPath();\n ctx.scale(sf, sf);\n ctx.translate(-86.004_996, -130.169_46);\n ctx.moveTo(93.144_414, 103.078_08);\n ctx.bezierCurveTo(\n 93.932_494,\n 103.439_24,\n 94.378_034,\n 103.7408,\n 94.586_534,\n 103.887_27,\n );\n ctx.bezierCurveTo(\n 95.544_644,\n 104.557_43,\n 95.925_654,\n 103.887_27,\n 95.925_654,\n 103.887_27,\n );\n ctx.bezierCurveTo(\n 96.774_554,\n 102.148_54,\n 98.250_194,\n 99.109_121,\n 97.392_604,\n 97.196_631,\n );\n ctx.bezierCurveTo(\n 96.701_324,\n 95.652_731,\n 94.788_834,\n 95.228_281,\n 93.136_964,\n 94.983_791,\n );\n ctx.bezierCurveTo(\n 93.386_434,\n 91.233_281,\n 93.974_684,\n 86.808_811,\n 95.065_594,\n 81.583_931,\n );\n ctx.bezierCurveTo(\n 95.065_594,\n 81.583_931,\n 95.348_544,\n 78.743_105,\n 94.011_924,\n 80.628_271,\n );\n ctx.bezierCurveTo(\n 92.607_024,\n 82.609_031,\n 89.103_474,\n 87.205_971,\n 86.786_384,\n 94.376_911,\n );\n ctx.bezierCurveTo(\n 85.901_494,\n 94.355_411,\n 85.020_334,\n 94.359_011,\n 84.152_824,\n 94.412_711,\n );\n ctx.bezierCurveTo(\n 80.830_464,\n 94.613_771,\n 77.791_075,\n 94.602_681,\n 74.601_515,\n 95.753_071,\n );\n ctx.bezierCurveTo(\n 73.989_667,\n 95.972_741,\n 73.396_431,\n 96.228_391,\n 72.801_96,\n 96.487_771,\n );\n ctx.bezierCurveTo(\n 75.743_303,\n 88.629_321,\n 78.359_486,\n 85.999_471,\n 80.111_884,\n 84.082_001,\n );\n ctx.bezierCurveTo(\n 80.949_614,\n 83.164_871,\n 79.786_714,\n 82.387_951,\n 79.786_714,\n 82.387_951,\n );\n ctx.bezierCurveTo(\n 79.786_714,\n 82.387_951,\n 77.464_669,\n 80.264_441,\n 74.730_578,\n 79.109_011,\n );\n ctx.bezierCurveTo(\n 71.996_495,\n 77.953_577,\n 71.557_154,\n 80.470_481,\n 71.557_154,\n 80.470_481,\n );\n ctx.bezierCurveTo(\n 70.532_025,\n 83.467_641,\n 69.897_839,\n 92.494_021,\n 69.748_905,\n 97.982_041,\n );\n ctx.bezierCurveTo(\n 68.468_118,\n 98.673_321,\n 67.212_153,\n 99.408_021,\n 65.967_354,\n 100.155_14,\n );\n ctx.bezierCurveTo(\n 63.837_669,\n 101.432_21,\n 66.540_731,\n 101.304_42,\n 66.540_731,\n 101.304_42,\n );\n ctx.bezierCurveTo(\n 67.645_287,\n 101.1978,\n 68.7002,\n 101.113_37,\n 69.722_846,\n 101.037_52,\n );\n ctx.bezierCurveTo(\n 69.729_246,\n 101.304_42,\n 69.737_516,\n 101.540_15,\n 69.748_966,\n 101.733_77,\n );\n ctx.bezierCurveTo(\n 69.952_534,\n 104.938_22,\n 70.894_479,\n 102.217_79,\n 70.894_479,\n 102.217_79,\n );\n ctx.bezierCurveTo(\n 71.028_497,\n 101.769_76,\n 71.160_083,\n 101.357_76,\n 71.292_863,\n 100.933_31,\n );\n ctx.bezierCurveTo(\n 77.261_191,\n 100.572_15,\n 81.782_424,\n 100.737_25,\n 85.174_284,\n 101.135_44,\n );\n ctx.bezierCurveTo(\n 84.418_464,\n 105.899_93,\n 84.305_524,\n 111.442_58,\n 85.397_664,\n 117.767_05,\n );\n ctx.bezierCurveTo(\n 85.397_664,\n 117.767_05,\n 86.930_394,\n 122.936_13,\n 91.332_484,\n 119.1087,\n );\n ctx.bezierCurveTo(\n 95.734_574,\n 115.2787,\n 96.691_444,\n 115.3743,\n 96.691_444,\n 115.3743,\n );\n ctx.bezierCurveTo(\n 96.691_444,\n 115.3743,\n 97.362_864,\n 114.992_02,\n 96.691_444,\n 114.2263,\n );\n ctx.bezierCurveTo(\n 96.280_644,\n 113.755_95,\n 93.791_044,\n 110.964_75,\n 93.144_444,\n 103.078_96,\n );\n ctx.scale(1 / sf, 1 / sf);\n ctx.closePath();\n});\n\nshapeFunctions.set(5, (ctx: CanvasRenderingContext2D) => {\n ctx.beginPath();\n ctx.scale(sf, sf);\n ctx.translate(-89.993_569, -112.6882);\n ctx.moveTo(94.939_252, 82.023_243);\n ctx.bezierCurveTo(\n 91.553_592,\n 80.541_753,\n 85.746_642,\n 81.163_033,\n 79.791_422,\n 82.155_503,\n );\n ctx.bezierCurveTo(\n 79.444_642,\n 77.560_415,\n 79.565_942,\n 74.240_94,\n 79.898_002,\n 71.760_822,\n );\n ctx.bezierCurveTo(\n 80.672_432,\n 72.057_443,\n 81.467_682,\n 72.315_902,\n 82.300_922,\n 72.493_592,\n );\n ctx.bezierCurveTo(\n 84.401_182,\n 72.940_816,\n 86.562_702,\n 73.021_726,\n 88.702_172,\n 72.856_274,\n );\n ctx.bezierCurveTo(\n 90.701_962,\n 72.700_733,\n 92.775_262,\n 72.558_595,\n 94.750_522,\n 72.194_573,\n );\n ctx.bezierCurveTo(\n 97.380_132,\n 71.708_129,\n 97.480_612,\n 69.201_064,\n 97.111_782,\n 67.125_281,\n );\n ctx.bezierCurveTo(\n 96.910_812,\n 65.997_945,\n 95.681_792,\n 60.122_416,\n 93.711_422,\n 61.797_46,\n );\n ctx.bezierCurveTo(\n 90.012_082,\n 64.942_948,\n 85.549_332,\n 67.081_194,\n 80.987_342,\n 67.008_89,\n );\n ctx.bezierCurveTo(\n 81.173_602,\n 66.448_908,\n 81.356_172,\n 65.945_287,\n 81.520_372,\n 65.483_32,\n );\n ctx.bezierCurveTo(\n 81.929_642,\n 64.327_803,\n 80.574_402,\n 64.066_84,\n 80.574_402,\n 64.066_84,\n );\n ctx.bezierCurveTo(\n 80.574_402,\n 64.066_84,\n 77.645_801,\n 63.027_714,\n 74.714_756,\n 63.027_714,\n );\n ctx.bezierCurveTo(\n 73.233_298,\n 63.027_714,\n 72.647_582,\n 63.655_098,\n 72.428_242,\n 64.275_11,\n );\n ctx.bezierCurveTo(\n 72.091_272,\n 64.188_35,\n 71.775_129,\n 64.167_536,\n 71.521_481,\n 64.289_22,\n );\n ctx.bezierCurveTo(\n 71.015_409,\n 64.530_467,\n 71.618_301,\n 65.441_069,\n 72.465_004,\n 66.396_816,\n );\n ctx.bezierCurveTo(\n 73.078_903,\n 70.157_448,\n 75.816_348,\n 78.037_691,\n 77.624_971,\n 82.599_723,\n );\n ctx.bezierCurveTo(\n 76.790_503,\n 82.973_413,\n 76.399_616,\n 83.780_923,\n 77.243_885,\n 83.725_793,\n );\n ctx.bezierCurveTo(\n 77.526_927,\n 83.704_593,\n 77.795_294,\n 83.704_593,\n 78.067_324,\n 83.697_593,\n );\n ctx.bezierCurveTo(\n 78.389_587,\n 84.474_493,\n 78.670_195,\n 85.115_343,\n 78.873_602,\n 85.523_383,\n );\n ctx.bezierCurveTo(\n 80.290_112,\n 88.358_853,\n 80.101_412,\n 85.523_383,\n 80.101_412,\n 85.523_383,\n );\n ctx.bezierCurveTo(\n 80.031_612,\n 84.894_773,\n 79.975_182,\n 84.302_933,\n 79.920_052,\n 83.714_773,\n );\n ctx.bezierCurveTo(\n 90.835_512,\n 84.405_853,\n 91.714_092,\n 94.468_463,\n 89.198_442,\n 98.144_553,\n );\n ctx.bezierCurveTo(\n 75.710_958,\n 96.718_233,\n 71.117_103,\n 90.602_483,\n 71.117_103,\n 90.602_483,\n );\n ctx.bezierCurveTo(\n 59.609_799,\n 113.283_79,\n 102.352_61,\n 98.426_363,\n 95.130_382,\n 98.441_073,\n );\n ctx.bezierCurveTo(\n 94.907_332,\n 98.442_073,\n 94.692_922,\n 98.438_073,\n 94.472_362,\n 98.434_073,\n );\n ctx.bezierCurveTo(\n 101.3564,\n 93.063_323,\n 101.6027,\n 84.941_653,\n 94.939_222,\n 82.026_553,\n );\n ctx.scale(1 / sf, 1 / sf);\n ctx.closePath();\n});\n\nshapeFunctions.set(6, (ctx: CanvasRenderingContext2D) => {\n ctx.beginPath();\n ctx.closePath();\n});\n\nshapeFunctions.set(7, (ctx: CanvasRenderingContext2D) => {\n ctx.beginPath();\n ctx.scale(sf, sf);\n ctx.translate(-82.570_534, -140.298_14);\n ctx.moveTo(69.064_246, 130.785_45);\n ctx.bezierCurveTo(\n 68.937_529,\n 130.771_35,\n 68.507_977,\n 130.727_25,\n 68.109_698,\n 130.688_05,\n );\n ctx.bezierCurveTo(\n 66.622_206,\n 130.542,\n 64.831_95,\n 130.0988,\n 63.874_417,\n 129.639_31,\n );\n ctx.bezierCurveTo(\n 63.167_663,\n 129.300_29,\n 62.474_124,\n 128.632_55,\n 62.164_103,\n 127.9929,\n );\n ctx.bezierCurveTo(\n 61.820_322,\n 127.2836,\n 61.727_503,\n 126.819_38,\n 61.729_747,\n 125.8205,\n );\n ctx.bezierCurveTo(\n 61.732_047,\n 124.776_28,\n 61.824_187,\n 124.2784,\n 62.295_919,\n 122.759_34,\n );\n ctx.bezierCurveTo(\n 62.4758,\n 122.180_08,\n 62.742_256,\n 121.3217,\n 62.887_981,\n 120.851_84,\n );\n ctx.bezierCurveTo(\n 63.248_026,\n 119.691_06,\n 63.581_651,\n 119.0488,\n 64.107_349,\n 118.504_25,\n );\n ctx.bezierCurveTo(\n 64.639_781,\n 117.952_75,\n 65.078_961,\n 117.737_98,\n 65.448_089,\n 117.848_54,\n );\n ctx.bezierCurveTo(\n 65.824_651,\n 117.961_08,\n 66.101_32,\n 118.331_42,\n 66.713_321,\n 119.540_89,\n );\n ctx.bezierCurveTo(\n 67.022_742,\n 120.152_42,\n 67.425_37,\n 120.864_82,\n 67.607_996,\n 121.124_01,\n );\n ctx.bezierCurveTo(\n 68.326_769,\n 122.143_99,\n 69.681_021,\n 123.389_33,\n 71.039_174,\n 124.279_11,\n );\n ctx.bezierCurveTo(\n 71.828_344,\n 124.796_14,\n 73.208_557,\n 125.556_94,\n 73.357_559,\n 125.557_08,\n );\n ctx.bezierCurveTo(\n 73.492_567,\n 125.557_22,\n 74.041_443,\n 124.650_37,\n 74.563_161,\n 123.5653,\n );\n ctx.bezierCurveTo(\n 75.973_166,\n 120.632_77,\n 76.086_379,\n 117.671_98,\n 74.884_118,\n 115.1717,\n );\n ctx.bezierCurveTo(\n 74.146_958,\n 113.638_71,\n 72.415_408,\n 111.730_57,\n 70.717_851,\n 110.580_66,\n );\n ctx.bezierCurveTo(\n 67.525_358,\n 108.418_03,\n 64.660_973,\n 104.056_57,\n 64.197_092,\n 100.651_85,\n );\n ctx.bezierCurveTo(\n 63.782_317,\n 97.607_558,\n 65.444_791,\n 95.177_838,\n 69.180_977,\n 93.367_848,\n );\n ctx.bezierCurveTo(\n 69.515_057,\n 93.205_918,\n 69.788_389,\n 93.055_638,\n 69.788_389,\n 93.033_418,\n );\n ctx.bezierCurveTo(\n 69.788_389,\n 93.012_218,\n 69.588_434,\n 93.022_818,\n 69.344_03,\n 93.054_618,\n );\n ctx.bezierCurveTo(\n 69.099_626,\n 93.086_418,\n 68.499_75,\n 93.104_318,\n 68.010_952,\n 93.091_618,\n );\n ctx.bezierCurveTo(\n 67.224_788,\n 93.070_418,\n 67.084_259,\n 93.048_918,\n 66.793_084,\n 92.904_648,\n );\n ctx.bezierCurveTo(\n 66.535_345,\n 92.776_948,\n 66.459_498,\n 92.702_858,\n 66.443_447,\n 92.563_868,\n );\n ctx.bezierCurveTo(\n 66.413_817,\n 92.308_808,\n 66.712_439,\n 92.138_138,\n 68.010_956,\n 91.667_358,\n );\n ctx.bezierCurveTo(\n 70.687_815,\n 90.696_828,\n 73.547_745,\n 89.913_488,\n 75.844_833,\n 89.521_688,\n );\n ctx.bezierCurveTo(\n 77.788_734,\n 89.190_078,\n 78.588_918,\n 89.123_438,\n 80.617_582,\n 89.124_008,\n );\n ctx.bezierCurveTo(\n 82.680_842,\n 89.124_608,\n 83.458_942,\n 89.196_708,\n 84.929_502,\n 89.524_198,\n );\n ctx.bezierCurveTo(\n 86.704_942,\n 89.919_488,\n 87.605_702,\n 90.315_198,\n 88.296_462,\n 91.003_458,\n );\n ctx.bezierCurveTo(\n 89.533_142,\n 92.235_608,\n 89.749_792,\n 94.250_038,\n 88.922_312,\n 96.822_838,\n );\n ctx.bezierCurveTo(\n 88.794_222,\n 97.221_128,\n 88.582_172,\n 97.917_298,\n 88.451_012,\n 98.369_878,\n );\n ctx.bezierCurveTo(\n 88.007_492,\n 99.900_788,\n 87.747_342,\n 100.511_83,\n 87.276_832,\n 101.127_68,\n );\n ctx.bezierCurveTo(\n 86.957_112,\n 101.546_18,\n 86.438_032,\n 101.953_14,\n 86.114_462,\n 102.038_97,\n );\n ctx.bezierCurveTo(\n 85.513_962,\n 102.198_07,\n 85.155_702,\n 101.838_24,\n 84.372_852,\n 100.288_53,\n );\n ctx.bezierCurveTo(\n 84.060_182,\n 99.669_538,\n 83.627_832,\n 98.925_038,\n 83.412_112,\n 98.634_108,\n );\n ctx.bezierCurveTo(\n 82.356_552,\n 97.210_468,\n 80.479_252,\n 95.706_268,\n 78.496_285,\n 94.695_308,\n );\n ctx.lineTo(77.704_025, 94.291_378);\n ctx.lineTo(77.373_05, 94.832_968);\n ctx.bezierCurveTo(\n 75.460_292,\n 97.962_808,\n 74.930_201,\n 101.029_22,\n 75.837_763,\n 103.714_13,\n );\n ctx.bezierCurveTo(\n 76.568_464,\n 105.875_88,\n 78.033_294,\n 107.637_65,\n 80.628_672,\n 109.4764,\n );\n ctx.bezierCurveTo(\n 82.674_212,\n 110.925_61,\n 84.507_042,\n 113.149_09,\n 85.752_622,\n 115.692_58,\n );\n ctx.bezierCurveTo(\n 87.310_462,\n 118.873_68,\n 87.382_222,\n 121.322_13,\n 85.978_262,\n 123.391_91,\n );\n ctx.bezierCurveTo(\n 85.215_372,\n 124.516_56,\n 83.916_252,\n 125.536_51,\n 82.032_942,\n 126.489_33,\n );\n ctx.bezierCurveTo(\n 81.616_562,\n 126.699_93,\n 81.337_392,\n 126.872_87,\n 81.412_572,\n 126.8735,\n );\n ctx.bezierCurveTo(\n 81.487_772,\n 126.874_17,\n 81.867_942,\n 126.8453,\n 82.257_452,\n 126.8033,\n );\n ctx.bezierCurveTo(\n 83.430_962,\n 126.685_12,\n 84.586_172,\n 126.913_72,\n 84.704_822,\n 127.287_59,\n );\n ctx.bezierCurveTo(\n 84.804_622,\n 127.601_92,\n 84.239_022,\n 127.874_86,\n 81.796_542,\n 128.690_69,\n );\n ctx.bezierCurveTo(\n 78.801_293,\n 129.691_13,\n 75.982_324,\n 130.347_93,\n 73.343_261,\n 130.660_25,\n );\n ctx.bezierCurveTo(\n 72.511_406,\n 130.758_65,\n 69.575_512,\n 130.845_46,\n 69.064_25,\n 130.786_19,\n );\n ctx.scale(1 / sf, 1 / sf);\n ctx.closePath();\n});\n\nexport function drawStylizedRank(\n ctx: CanvasRenderingContext2D,\n rank: Rank,\n): void {\n // Each rank has a shape.\n const shapeFunction = shapeFunctions.get(rank);\n assertDefined(\n shapeFunction,\n `Failed to find the shape function for rank: ${rank}`,\n );\n\n ctx.save();\n // Move the cursor to the top-left hand corner.\n ctx.translate(60, 135);\n\n // Draw the respective shape on the canvas.\n shapeFunction(ctx);\n ctx.restore();\n}\n", "// The card graphics are various HTML5 canvas drawings.\n\nimport type { Color, Rank, Suit, Variant } from \"@hanabi-live/game\";\nimport {\n START_CARD_RANK,\n getSuit,\n getSuitAbbreviationForVariant,\n} from \"@hanabi-live/game\";\nimport { CARD_H, CARD_W } from \"./constants\";\nimport { drawPip } from \"./drawPip\";\nimport { drawStylizedRank } from \"./drawStylizedRank\";\n\nenum CardArea {\n Number,\n Background,\n}\n\n/** Represents a stack base. Only used in this file for image drawing purposes. */\nconst STACK_BASE_RANK = 0;\n\n/**\n * Represents an unknown card (e.g. the gray card with pips on it). Only used in this file for image\n * drawing purposes.\n */\nconst UNKNOWN_CARD_RANK = 6;\n\nexport const CARD_IMAGE_STACK_BASE_RANK_NAME = \"StackBase\";\nexport const CARD_IMAGE_UNKNOWN_CARD_RANK_NAME = \"UnknownRank\";\n\n/** Returns an object containing all of the drawn cards images (on individual canvases). */\nexport function drawCards(\n variant: Variant,\n colorblindMode: boolean,\n styleNumbers: boolean,\n enableShadows: boolean,\n initCanvas: () => { cvs: HTMLCanvasElement; ctx: CanvasRenderingContext2D },\n cloneCanvas: (\n oldCvs: HTMLCanvasElement,\n oldCtx: CanvasRenderingContext2D,\n ) => HTMLCanvasElement,\n saveCanvas: (\n cvs: HTMLCanvasElement,\n ctx: CanvasRenderingContext2D,\n ) => HTMLCanvasElement,\n): ReadonlyMap {\n const cardImages = new Map();\n\n // Add the \"Unknown\" suit to the list of suits for this variant. The unknown suit has blank white\n // cards, representing cards of known rank but unknown suit.\n const unknownSuit = getSuit(\"Unknown\");\n const suits = [...variant.suits, unknownSuit];\n const pipTypes = new Set();\n\n let suitIndex = -1;\n for (const suit of suits) {\n suitIndex++;\n const secondaryPip = pipTypes.has(suit.pip);\n pipTypes.add(suit.pip);\n\n for (const rank of [\n STACK_BASE_RANK,\n 1,\n 2,\n 3,\n 4,\n 5,\n UNKNOWN_CARD_RANK,\n START_CARD_RANK,\n ] as const) {\n // We need unknown cards for 1, 2, 3, 4, 5, and the \"START\" card.\n if (\n suit.name === \"Unknown\" &&\n (rank === STACK_BASE_RANK || rank === UNKNOWN_CARD_RANK)\n ) {\n continue;\n }\n\n const { cvs, ctx } = initCanvas();\n\n // We do not need the background on the stack base.\n if (rank !== STACK_BASE_RANK) {\n drawCardBackground(ctx, enableShadows);\n }\n\n // Make the special corners on the cards for dual-color suits. Do not do this for Matryoshka\n // suits which have names ending in MD.\n if (suit.clueColors.length === 2 && !suit.name.endsWith(\"MD\")) {\n drawMixedCardHelper(ctx, suit.clueColors, enableShadows);\n }\n\n // Draw the background and the borders around the card.\n drawCardBase(ctx, suit, rank, variant, colorblindMode, enableShadows);\n\n ctx.shadowBlur = 10;\n ctx.fillStyle = getSuitStyle(\n suit,\n rank,\n ctx,\n CardArea.Number,\n variant,\n colorblindMode,\n );\n ctx.strokeStyle = \"black\";\n ctx.lineWidth = enableShadows ? 2 : 8;\n ctx.lineJoin = \"round\";\n\n if (rank !== STACK_BASE_RANK && rank !== UNKNOWN_CARD_RANK) {\n let textYPos: number;\n let rankLabel = rank.toString();\n if (rank === START_CARD_RANK) {\n rankLabel = \"S\";\n }\n let fontSize: number;\n if (colorblindMode) {\n rankLabel += getSuitAbbreviationForVariant(suit, variant);\n fontSize = 68;\n textYPos = 83;\n } else {\n fontSize = 96;\n textYPos = 110;\n }\n\n ctx.font = `bold ${fontSize}pt Arial`;\n\n // Draw the rank on the top left.\n ctx.save();\n if (styleNumbers && !colorblindMode) {\n drawStylizedRank(ctx, rank);\n ctx.fill();\n ctx.stroke();\n } else {\n drawText(ctx, textYPos, rankLabel, enableShadows);\n }\n if (\n variant.specialRankDeceptive &&\n rank === variant.specialRank &&\n suit.name !== \"Unknown\" &&\n !suit.noClueRanks\n ) {\n const deceptiveRank =\n variant.clueRanks[suitIndex % variant.clueRanks.length]!;\n if (colorblindMode) {\n ctx.translate(CARD_W / 20, CARD_H / 5);\n ctx.scale(0.65, 0.65);\n } else {\n ctx.translate(CARD_W / 4 + CARD_W / 50, CARD_H / 40);\n ctx.scale(0.5, 0.5);\n }\n if (styleNumbers && !colorblindMode) {\n drawStylizedRank(ctx, deceptiveRank);\n ctx.fill();\n ctx.stroke();\n } else {\n drawText(ctx, textYPos, `${deceptiveRank}`, enableShadows);\n }\n }\n ctx.restore();\n\n // \"Index\" cards are used to draw cards of learned but not yet known rank\n // (e.g. for in-game replays)\n const cardImagesIndex = `Index-${suit.name}-${rank}`;\n cardImages.set(cardImagesIndex, cloneCanvas(cvs, ctx));\n\n // Draw the rank on the bottom right.\n if (!variant.upOrDown && !suit.reversed) {\n ctx.save();\n ctx.translate(CARD_W, CARD_H);\n ctx.rotate(Math.PI);\n if (styleNumbers && !colorblindMode) {\n drawStylizedRank(ctx, rank);\n ctx.fill();\n ctx.stroke();\n } else {\n drawText(ctx, textYPos, rankLabel, enableShadows);\n }\n ctx.restore();\n }\n }\n\n // The \"Unknown\" suit does not have pips. (It is a white suit that is used for cards that are\n // clued with rank.)\n if (suit.name !== \"Unknown\") {\n drawSuitPips(\n ctx,\n rank,\n suit,\n secondaryPip,\n colorblindMode,\n enableShadows,\n );\n }\n\n const cardImageRankName = getCardImageRankName(rank);\n const cardImagesIndex = `card-${suit.name}-${cardImageRankName}`;\n const cardImage = saveCanvas(cvs, ctx);\n cardImages.set(cardImagesIndex, cardImage);\n }\n }\n\n // Unknown 6 is a card that is completely unknown. This is a special case; we want to render\n // completely unknown cards as a blank gray card (instead of a blank white card).\n {\n const { cvs, ctx } = makeUnknownCard(initCanvas, enableShadows);\n const cardUnknown = saveCanvas(cvs, ctx);\n cardImages.set(\n `card-Unknown-${CARD_IMAGE_UNKNOWN_CARD_RANK_NAME}`,\n cardUnknown,\n );\n }\n\n // Additionally, create an image for the deck back. This is similar to the Unknown 6 card, except\n // it has pips for each suit.\n {\n const { cvs, ctx } = makeDeckBack(variant, initCanvas, enableShadows);\n const deckBack = saveCanvas(cvs, ctx);\n cardImages.set(\"deck-back\", deckBack);\n }\n\n return cardImages;\n}\n\nfunction getCardImageRankName(\n rank: Rank | typeof STACK_BASE_RANK | typeof UNKNOWN_CARD_RANK,\n): string {\n switch (rank) {\n case STACK_BASE_RANK: {\n return CARD_IMAGE_STACK_BASE_RANK_NAME;\n }\n\n case UNKNOWN_CARD_RANK: {\n return CARD_IMAGE_UNKNOWN_CARD_RANK_NAME;\n }\n\n default: {\n return rank.toString();\n }\n }\n}\n\nfunction drawSuitPips(\n ctx: CanvasRenderingContext2D,\n rank: Rank | typeof STACK_BASE_RANK | typeof UNKNOWN_CARD_RANK,\n suit: Suit,\n secondaryPip: boolean,\n colorblindMode: boolean,\n enableShadows: boolean,\n) {\n const scale = 0.4;\n\n // The middle for card 1.\n if (rank === 1) {\n ctx.save();\n ctx.translate(CARD_W / 2, CARD_H / 2);\n ctx.scale(scale * 1.8, scale * 1.8);\n drawPip(ctx, suit, secondaryPip, enableShadows);\n ctx.restore();\n }\n\n // Top and bottom for card 2.\n if (rank === 2) {\n const symbolYPos = colorblindMode ? 60 : 90;\n ctx.save();\n ctx.translate(CARD_W / 2, CARD_H / 2);\n ctx.translate(0, -symbolYPos);\n ctx.scale(scale * 1.4, scale * 1.4);\n drawPip(ctx, suit, secondaryPip, enableShadows);\n ctx.restore();\n\n ctx.save();\n ctx.translate(CARD_W / 2, CARD_H / 2);\n ctx.translate(0, symbolYPos);\n ctx.scale(scale * 1.4, scale * 1.4);\n ctx.rotate(Math.PI);\n drawPip(ctx, suit, secondaryPip, enableShadows);\n ctx.restore();\n }\n\n // Top and bottom for cards 3, 4, 5.\n if (rank >= 3 && rank <= 5) {\n const symbolYPos = colorblindMode ? 80 : 120;\n ctx.save();\n ctx.translate(CARD_W / 2, CARD_H / 2);\n ctx.translate(0, -symbolYPos);\n ctx.scale(scale, scale);\n drawPip(ctx, suit, secondaryPip, enableShadows);\n ctx.restore();\n\n ctx.save();\n ctx.translate(CARD_W / 2, CARD_H / 2);\n ctx.translate(0, symbolYPos);\n ctx.scale(scale, scale);\n ctx.rotate(Math.PI);\n drawPip(ctx, suit, secondaryPip, enableShadows);\n ctx.restore();\n }\n\n // Left and right for cards 4 and 5.\n if (rank === 4 || rank === 5) {\n ctx.save();\n ctx.translate(CARD_W / 2, CARD_H / 2);\n ctx.translate(-90, 0);\n ctx.scale(scale, scale);\n drawPip(ctx, suit, secondaryPip, enableShadows);\n ctx.restore();\n\n ctx.save();\n ctx.translate(CARD_W / 2, CARD_H / 2);\n ctx.translate(90, 0);\n ctx.scale(scale, scale);\n ctx.rotate(Math.PI);\n drawPip(ctx, suit, secondaryPip, enableShadows);\n ctx.restore();\n }\n\n // Size, position, and alpha adjustment for the central icon on 3 and 5.\n if (rank === 3 || rank === 5) {\n ctx.globalAlpha = 1;\n ctx.save();\n ctx.translate(CARD_W / 2, CARD_H / 2);\n ctx.scale(scale * 1.2, scale * 1.2);\n drawPip(ctx, suit, secondaryPip, enableShadows);\n ctx.restore();\n }\n\n // Size, position, and alpha adjustment for the central icon on stack base.\n if (rank === STACK_BASE_RANK) {\n ctx.globalAlpha = 1;\n ctx.save();\n ctx.translate(CARD_W / 2, CARD_H / 2);\n ctx.scale(scale * 2.5, scale * 2.5);\n drawPip(ctx, suit, secondaryPip, enableShadows);\n ctx.restore();\n }\n\n // Draw large suit pip.\n if (rank === UNKNOWN_CARD_RANK || rank === START_CARD_RANK) {\n ctx.save();\n let lineWidth: number | undefined;\n if (rank === START_CARD_RANK) {\n lineWidth = 2;\n } else {\n // Make the pip faint.\n ctx.globalAlpha = colorblindMode ? 0.4 : 0.1;\n }\n ctx.translate(CARD_W / 2, CARD_H / 2);\n ctx.scale(scale * 3, scale * 3);\n drawPip(ctx, suit, secondaryPip, enableShadows, undefined, lineWidth);\n ctx.restore();\n }\n}\n\nfunction makeUnknownCard(\n initCanvas: () => { cvs: HTMLCanvasElement; ctx: CanvasRenderingContext2D },\n enableShadows: boolean,\n): {\n cvs: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n} {\n const { cvs, ctx } = initCanvas();\n\n drawCardBackground(ctx, enableShadows);\n ctx.fillStyle = \"black\";\n cardBorderPath(ctx, 4, enableShadows);\n\n ctx.save();\n ctx.globalAlpha = 0.5;\n ctx.fill();\n ctx.globalAlpha = 0.6;\n ctx.lineWidth = 8;\n ctx.stroke();\n ctx.restore();\n\n ctx.fillStyle = \"#444444\";\n ctx.lineWidth = 8;\n ctx.lineJoin = \"round\";\n\n ctx.translate(CARD_W / 2, CARD_H / 2);\n\n return {\n cvs,\n ctx,\n };\n}\n\nfunction makeDeckBack(\n variant: Variant,\n initCanvas: () => { cvs: HTMLCanvasElement; ctx: CanvasRenderingContext2D },\n enableShadows: boolean,\n): {\n cvs: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n} {\n const { cvs, ctx } = makeUnknownCard(initCanvas, enableShadows);\n const pipTypes = new Set();\n\n const sf = 0.4; // Scale factor\n const nSuits = variant.suits.length;\n ctx.scale(sf, sf);\n\n for (const [suitIndex, suit] of variant.suits.entries()) {\n const secondaryPip = pipTypes.has(suit.pip);\n pipTypes.add(suit.pip);\n\n // Transform polar to cartesian coordinates.\n const x =\n -1.05 *\n Math.floor(\n CARD_W * 0.7 * Math.cos((-suitIndex / nSuits + 0.25) * Math.PI * 2),\n );\n const y =\n -1.05 *\n Math.floor(\n CARD_W * 0.7 * Math.sin((-suitIndex / nSuits + 0.25) * Math.PI * 2),\n );\n\n ctx.save();\n ctx.translate(x, y);\n drawPip(ctx, suit, secondaryPip, true, \"#444444\"); // Pips on the back of the deck should be gray\n ctx.restore();\n }\n\n ctx.scale(1 / sf, 1 / sf);\n\n return {\n cvs,\n ctx,\n };\n}\n\nfunction drawCardBase(\n ctx: CanvasRenderingContext2D,\n suit: Suit,\n rank: Rank | typeof STACK_BASE_RANK | typeof UNKNOWN_CARD_RANK,\n variant: Variant,\n colorblindMode: boolean,\n enableShadows: boolean,\n) {\n // Draw the background.\n ctx.save();\n ctx.fillStyle = getSuitStyle(\n suit,\n rank,\n ctx,\n CardArea.Background,\n variant,\n colorblindMode,\n );\n ctx.strokeStyle = getSuitStyle(\n suit,\n rank,\n ctx,\n CardArea.Background,\n variant,\n colorblindMode,\n );\n cardBorderPath(ctx, 4, enableShadows);\n\n // Draw the borders (on visible cards) and the color fill.\n ctx.globalAlpha = 0.3;\n ctx.fill();\n ctx.globalAlpha = 0.7;\n ctx.lineWidth = 8;\n // The borders should be more opaque for the stack base.\n if (rank === 0) {\n ctx.globalAlpha = 1;\n }\n ctx.stroke();\n ctx.restore();\n}\n\nfunction cardBorderPath(\n ctx: CanvasRenderingContext2D,\n padding: number,\n enableShadows: boolean,\n) {\n const roundedCornerSeverity = enableShadows ? 0.08 : 0.12;\n const xRadians = CARD_W * roundedCornerSeverity;\n const yRadians = CARD_W * roundedCornerSeverity;\n // (We want them to both have the same value so that the curve has a 45 degree angle.)\n ctx.beginPath();\n ctx.moveTo(padding, yRadians + padding); // Top-left corner\n ctx.lineTo(padding, CARD_H - yRadians - padding); // Bottom-left corner\n ctx.quadraticCurveTo(0, CARD_H, xRadians + padding, CARD_H - padding);\n ctx.lineTo(CARD_W - xRadians - padding, CARD_H - padding); // Bottom-right corner\n ctx.quadraticCurveTo(\n CARD_W,\n CARD_H,\n CARD_W - padding,\n CARD_H - yRadians - padding,\n );\n ctx.lineTo(CARD_W - padding, yRadians + padding); // Top-right corner\n ctx.quadraticCurveTo(CARD_W, 0, CARD_W - xRadians - padding, padding);\n ctx.lineTo(xRadians + padding, padding); // Top-left corner\n ctx.quadraticCurveTo(0, 0, padding, yRadians + padding);\n}\n\nfunction drawShape(ctx: CanvasRenderingContext2D, enableShadows: boolean) {\n if (enableShadows) {\n ctx.shadowColor = \"rgba(0, 0, 0, 0.9)\";\n }\n ctx.fill();\n if (enableShadows) {\n ctx.shadowColor = \"rgba(0, 0, 0, 0)\";\n }\n ctx.stroke();\n}\n\nfunction drawText(\n ctx: CanvasRenderingContext2D,\n textYPos: number,\n indexLabel: string,\n enableShadows: boolean,\n) {\n ctx.save();\n if (enableShadows) {\n ctx.shadowColor = \"rgba(0, 0, 0, 0.9)\";\n ctx.fillText(indexLabel, 19, textYPos);\n ctx.shadowColor = \"rgba(0, 0, 0, 0)\";\n ctx.strokeText(indexLabel, 19, textYPos);\n } else {\n ctx.strokeText(indexLabel, 19, textYPos);\n ctx.fillText(indexLabel, 19, textYPos);\n }\n ctx.restore();\n}\n\nfunction drawMixedCardHelper(\n ctx: CanvasRenderingContext2D,\n clueColors: readonly Color[],\n enableShadows: boolean,\n) {\n const [clueColor1, clueColor2] = clueColors;\n\n ctx.save();\n ctx.lineWidth = 1;\n const triangleSize = 50;\n const borderSize = 8;\n\n // Draw the first half of the top-right triangle.\n ctx.beginPath();\n ctx.moveTo(CARD_W - borderSize, borderSize); // Start at the top-right-hand corner\n ctx.lineTo(CARD_W - borderSize - triangleSize, borderSize); // Move left\n // Move down and right diagonally.\n ctx.lineTo(\n CARD_W - borderSize - triangleSize / 2,\n borderSize + triangleSize / 2,\n );\n ctx.moveTo(CARD_W - borderSize, borderSize); // Move back to the beginning\n ctx.fillStyle = clueColor1!.fill;\n drawShape(ctx, enableShadows);\n\n // Draw the second half of the top-right triangle.\n ctx.beginPath();\n ctx.moveTo(CARD_W - borderSize, borderSize); // Start at the top-right-hand corner\n ctx.lineTo(CARD_W - borderSize, borderSize + triangleSize); // Move down\n // Move up and left diagonally.\n ctx.lineTo(\n CARD_W - borderSize - triangleSize / 2,\n borderSize + triangleSize / 2,\n );\n ctx.moveTo(CARD_W - borderSize, borderSize); // Move back to the beginning\n ctx.fillStyle = clueColor2!.fill;\n drawShape(ctx, enableShadows);\n\n // Draw the first half of the bottom-left triangle.\n ctx.beginPath();\n ctx.moveTo(borderSize, CARD_H - borderSize); // Start at the bottom right-hand corner\n ctx.lineTo(borderSize, CARD_H - borderSize - triangleSize); // Move up\n // Move right and down diagonally.\n ctx.lineTo(\n borderSize + triangleSize / 2,\n CARD_H - borderSize - triangleSize / 2,\n );\n ctx.moveTo(borderSize, CARD_H - borderSize); // Move back to the beginning\n ctx.fillStyle = clueColor1!.fill;\n drawShape(ctx, enableShadows);\n\n // Draw the second half of the bottom-left triangle.\n ctx.beginPath();\n ctx.moveTo(borderSize, CARD_H - borderSize); // Start at the bottom right-hand corner\n ctx.lineTo(borderSize + triangleSize, CARD_H - borderSize); // Move right\n // Move left and up diagonally.\n ctx.lineTo(\n borderSize + triangleSize / 2,\n CARD_H - borderSize - triangleSize / 2,\n );\n ctx.moveTo(borderSize, CARD_H - borderSize); // Move back to the beginning\n ctx.fillStyle = clueColor2!.fill;\n drawShape(ctx, enableShadows);\n\n ctx.restore();\n}\n\nfunction drawCardBackground(\n ctx: CanvasRenderingContext2D,\n enableShadows: boolean,\n) {\n ctx.save();\n cardBorderPath(ctx, 4, enableShadows);\n\n ctx.fillStyle = \"white\";\n ctx.fill();\n\n ctx.restore();\n}\n\nfunction getSuitStyle(\n suit: Suit,\n rank: Rank | typeof STACK_BASE_RANK | typeof UNKNOWN_CARD_RANK,\n ctx: CanvasRenderingContext2D,\n cardArea: CardArea,\n variant: Variant,\n colorblindMode: boolean,\n) {\n if (cardArea === CardArea.Number) {\n // In Synesthesia variants, color the number itself with the color that it contributes to the\n // card.\n if (variant.synesthesia) {\n if (rank === STACK_BASE_RANK) {\n return suit.fill;\n }\n\n // If the suit does not get clued by its rank, then coloring the rank is misleading, so use\n // the suit color.\n if (suit.noClueRanks) {\n return suit.fill;\n }\n const prismColorIndex = (rank - 1) % variant.clueColors.length;\n\n return variant.clueColors[prismColorIndex]!.fill;\n }\n\n if (rank === variant.specialRank) {\n const allClueColors =\n suit.allClueColors ||\n (variant.specialRankAllClueColors && !suit.noClueColors);\n const noClueColors =\n suit.noClueColors ||\n (variant.specialRankNoClueColors && !suit.allClueColors);\n const allClueRanks =\n suit.allClueRanks ||\n (variant.specialRankAllClueRanks && !suit.noClueRanks);\n const noClueRanks =\n suit.noClueRanks ||\n (variant.specialRankNoClueRanks && !suit.allClueRanks);\n const dark = suit.oneOfEach;\n\n if (allClueColors) {\n if (allClueRanks) {\n const rainbow = getSuit(dark ? \"Dark Omni\" : \"Omni\");\n return evenLinearGradient(ctx, rainbow.fillColors, [0, 14, 0, 110]);\n }\n\n if (noClueRanks) {\n const rainbow = getSuit(dark ? \"Cocoa Rainbow\" : \"Muddy Rainbow\");\n return evenLinearGradient(ctx, rainbow.fillColors, [0, 14, 0, 110]);\n }\n\n const rainbow = getSuit(dark ? \"Dark Rainbow\" : \"Rainbow\");\n return evenLinearGradient(ctx, rainbow.fillColors, [0, 14, 0, 110]);\n }\n\n if (noClueColors) {\n if (allClueRanks) {\n return getSuit(dark ? \"Gray Pink\" : \"Light Pink\").fill;\n }\n\n if (noClueRanks) {\n return getSuit(dark ? \"Dark Null\" : \"Null\").fill;\n }\n\n return getSuit(dark ? \"Gray\" : \"White\").fill;\n }\n\n if (allClueRanks) {\n return getSuit(dark ? \"Dark Pink\" : \"Pink\").fill;\n }\n\n if (noClueRanks) {\n return getSuit(dark ? \"Dark Brown\" : \"Brown\").fill;\n }\n }\n }\n\n if (suit.prism) {\n // Prism cards have a custom color depending on their rank.\n if (rank === 0) {\n return suit.fill;\n }\n\n let prismColorIndex = (rank - 1) % variant.clueColors.length;\n if (rank === START_CARD_RANK) {\n // \"START\" cards count as rank 0, so they are touched by the final color.\n prismColorIndex = variant.clueColors.length - 1;\n }\n\n const fillToMixHex = variant.clueColors[prismColorIndex]!.fill;\n const fillToMixRGB = hexToRGB(fillToMixHex);\n if (fillToMixRGB === undefined) {\n return suit.fill;\n }\n\n const fillToMixArray = [fillToMixRGB.r, fillToMixRGB.g, fillToMixRGB.b];\n let fillToMixArray2 = [255, 255, 255]; // White\n if (suit.oneOfEach) {\n fillToMixArray2 = [0, 0, 0]; // Black\n }\n\n return colorMixer(fillToMixArray, fillToMixArray2, 0.5); // Mix it with white by 50%\n }\n\n // Nearly all other suits have a solid fill.\n if (suit.fill !== \"multi\") {\n return colorblindMode ? suit.fillColorblind : suit.fill;\n }\n\n // Rainbow suits use a gradient fill, but the specific type of gradient will depend on the\n // specific element of the card that we are filling in.\n switch (cardArea) {\n case CardArea.Number: {\n return evenLinearGradient(ctx, suit.fillColors, [0, 14, 0, 110]);\n }\n\n case CardArea.Background: {\n if (suit.name === \"Omni\" || suit.name === \"Dark Omni\") {\n return evenLinearGradient(ctx, suit.fillColors, [\n 0,\n -30,\n 0,\n CARD_H + 30,\n ]);\n }\n\n return evenLinearGradient(ctx, suit.fillColors, [0, 0, CARD_W, CARD_H]);\n }\n }\n}\n\n/** Generates a vertical gradient that is evenly distributed between its component colors. */\nfunction evenLinearGradient(\n ctx: CanvasRenderingContext2D,\n colors: readonly string[],\n args: readonly number[],\n) {\n const grad = ctx.createLinearGradient(args[0]!, args[1]!, args[2]!, args[3]!);\n\n for (const [i, color] of colors.entries()) {\n grad.addColorStop(i / (colors.length - 1), color);\n }\n\n return grad;\n}\n\n/**\n * From: https://stackoverflow.com/questions/14819058/mixing-two-colors-naturally-in-javascript\n *\n * @param colorChannelA Integer ranging from 0 to 255.\n * @param colorChannelB Integer ranging from 0 to 255.\n * @param amountToMix Float ranging from 0.0 to 1.0.\n */\nfunction colorChannelMixer(\n colorChannelA: number,\n colorChannelB: number,\n amountToMix: number,\n) {\n const channelA = colorChannelA * amountToMix;\n const channelB = colorChannelB * (1 - amountToMix);\n\n return channelA + channelB;\n}\n\n/**\n * From: https://stackoverflow.com/questions/14819058/mixing-two-colors-naturally-in-javascript\n *\n * - `rgbA` and `rgbB` are arrays.\n * - `amountToMix` ranges from 0.0 to 1.0.\n * - For example: `(red): rgbA = [255,0,0]`\n */\nfunction colorMixer(\n rgbA: readonly number[],\n rgbB: readonly number[],\n amountToMix: number,\n) {\n const r = colorChannelMixer(rgbA[0]!, rgbB[0]!, amountToMix);\n const g = colorChannelMixer(rgbA[1]!, rgbB[1]!, amountToMix);\n const b = colorChannelMixer(rgbA[2]!, rgbB[2]!, amountToMix);\n\n return `rgb(${r},${g},${b})`;\n}\n\n/** From: https://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb */\nfunction hexToRGB(\n hex: string,\n): { r: number; g: number; b: number } | undefined {\n const result = /^#?([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})$/i.exec(hex);\n if (result === null) {\n return undefined;\n }\n\n // We can't use `parseIntSafe` because we need to use a radix of 16.\n const r = Number.parseInt(result[1]!, 16);\n if (Number.isNaN(r)) {\n return undefined;\n }\n\n // We can't use `parseIntSafe` because we need to use a radix of 16.\n const g = Number.parseInt(result[2]!, 16);\n if (Number.isNaN(g)) {\n return undefined;\n }\n\n // We can't use `parseIntSafe` because we need to use a radix of 16.\n const b = Number.parseInt(result[3]!, 16);\n if (Number.isNaN(b)) {\n return undefined;\n }\n\n return {\n r,\n g,\n b,\n };\n}\n", "import type {\n CardNote,\n CardState,\n Rank,\n SuitRankTuple,\n Variant,\n} from \"@hanabi-live/game\";\nimport {\n START_CARD_RANK,\n canCardPossiblyBeFromEmpathy,\n} from \"@hanabi-live/game\";\nimport * as modals from \"../../modals\";\nimport { globals } from \"./UIGlobals\";\n\nexport function checkNoteImpossibility(\n variant: Variant,\n cardState: CardState,\n note: CardNote,\n cardIsStackBase: boolean,\n): void {\n const { possibilities } = note;\n if (possibilities.length === 0) {\n return;\n }\n\n // Prevent players from accidentally mixing up which stack base is which.\n if (\n cardIsStackBase &&\n possibilities.every((possibility) => possibility[0] !== cardState.suitIndex)\n ) {\n modals.showWarning(\n \"You cannot morph a stack base to have a different suit.\",\n );\n return;\n }\n\n // Only validate cards in our own hand.\n if (\n !(cardState.location === globals.metadata.ourPlayerIndex) ||\n possibilities.some((possibility) =>\n canCardPossiblyBeFromEmpathy(cardState, possibility[0], possibility[1]),\n )\n ) {\n return;\n }\n\n // We have specified a list of identities where none are possible.\n const impossibilities = possibilities.map(([suitIndex, rank]) => {\n const suit = variant.suits[suitIndex];\n const suitName = suit?.displayName ?? \"Unknown\";\n const impossibleSuit = suitName.toLowerCase();\n const impossibleRank = rank === START_CARD_RANK ? \"START\" : rank.toString();\n\n return `${impossibleSuit} ${impossibleRank}`;\n });\n if (impossibilities.length === 1) {\n modals.showWarning(`That card cannot possibly be ${impossibilities[0]}`);\n } else {\n modals.showWarning(\n `That card cannot possibly be any of ${impossibilities.join(\", \")}`,\n );\n }\n}\n\nexport function possibleCardsFromNoteAndClues(\n note: CardNote,\n state: CardState,\n): readonly SuitRankTuple[] {\n const possibilitiesWithNotes = note.possibilities.filter(\n ([suitIndexA, rankA]) =>\n state.possibleCardsFromClues.some(\n ([suitIndexB, rankB]) => suitIndexA === suitIndexB && rankA === rankB,\n ),\n );\n\n if (possibilitiesWithNotes.length === 0) {\n return state.possibleCardsFromClues;\n }\n\n return possibilitiesWithNotes;\n}\n\nexport function getSuitIndexFromNote(\n note: CardNote,\n state: CardState,\n): number | null {\n if (note.possibilities.length > 0) {\n const possibilities = possibleCardsFromNoteAndClues(note, state);\n const [candidateSuitIndex] = possibilities[0]!;\n if (\n possibilities.every(([suitIndex]) => suitIndex === candidateSuitIndex)\n ) {\n return candidateSuitIndex;\n }\n }\n return null;\n}\n\nexport function getRankFromNote(\n note: CardNote,\n state: CardState,\n): Rank | undefined {\n const possibilities = possibleCardsFromNoteAndClues(note, state);\n const possibleRanks = possibilities.map((possibility) => possibility[1]);\n const firstPossibleRank = possibleRanks[0];\n if (firstPossibleRank === undefined) {\n return undefined;\n }\n\n const allPossibilitiesHaveTheSameRank = possibleRanks.every(\n (rank) => rank === firstPossibleRank,\n );\n return allPossibilitiesHaveTheSameRank ? firstPossibleRank : undefined;\n}\n", "import Konva from \"konva\";\n\nexport class StrikeSquare extends Konva.Rect {\n num: 0 | 1 | 2;\n\n tooltipName = \"\";\n tooltipContent = \"\";\n\n constructor(config: Konva.ShapeConfig, num: 0 | 1 | 2) {\n super(config);\n this.num = num;\n }\n}\n", "// Click functions for the HanabiCard object.\n\nimport type { CardIdentity } from \"@hanabi-live/game\";\nimport { isCardDiscarded, isCardPlayed } from \"@hanabi-live/game\";\nimport type Konva from \"konva\";\nimport * as modals from \"../../modals\";\nimport type { HanabiCard } from \"./HanabiCard\";\nimport { globals } from \"./UIGlobals\";\nimport * as arrows from \"./arrows\";\nimport { clickRightCheckAddNote, preOpenNoteEditTooltip } from \"./clickNotes\";\nimport * as hypothetical from \"./hypothetical\";\nimport * as replay from \"./replay\";\n\nexport function HanabiCardClick(\n this: HanabiCard,\n event: Konva.KonvaEventObject,\n): void {\n // Speedrunning overrides the normal card clicking behavior. (But only use the speedrunning\n // behavior if we are an active player.)\n if (\n (globals.options.speedrun || globals.lobby.settings.speedrunMode) &&\n globals.state.playing\n ) {\n return;\n }\n\n // Disable all click events if the card is tweening.\n if (this.tweening) {\n return;\n }\n\n const mouseEvent = event.evt;\n\n switch (mouseEvent.button) {\n // Left-click\n case 0: {\n clickLeft(this, mouseEvent);\n break;\n }\n\n // Middle-click\n case 1: {\n clickMiddle(this, mouseEvent);\n break;\n }\n\n // Right-click\n case 2: {\n clickRight(this, mouseEvent);\n break;\n }\n\n default: {\n break;\n }\n }\n}\n\nfunction clickLeft(card: HanabiCard, event: MouseEvent) {\n // The \"Empathy\" feature is handled elsewhere, so we do not have to worry about it here.\n\n // If we are in \"edit cards\" mode, left clicking a card morphs it.\n if (\n globals.elements.editCardsButton !== null &&\n globals.elements.editCardsButton.pressed &&\n globals.state.replay.hypothetical !== null\n ) {\n clickMorph(card);\n return;\n }\n\n // A Ctrl + left-click also opens the node tooltip, since on some mac devices, right-click is not\n // available.\n if (\n event.ctrlKey &&\n !event.shiftKey &&\n !event.altKey &&\n !event.metaKey &&\n !globals.state.finished\n ) {\n preOpenNoteEditTooltip(card);\n return;\n }\n\n if (\n event.ctrlKey || // No actions in this function use modifiers other than alt.\n event.shiftKey ||\n event.metaKey ||\n card.isStackBase || // Disable clicking on the stack base\n // No replay actions should happen in a hypothetical.\n globals.state.replay.hypothetical !== null\n ) {\n return;\n }\n\n if (event.altKey) {\n // Alt + clicking a card goes to the turn it was drawn. (We want to go to the turn before it is\n // drawn, tween the card being drawn, and then indicate the card.)\n if (card.state.segmentDrawn === null) {\n // The card was drawn during the initial deal before the first turn.\n replay.goToSegmentAndIndicateCard(0, card.state.order);\n } else {\n // The card was drawn after the initial deal. Go to the segment that it was drawn and then\n // fast-forward one segment in order to show the card tweening into the hand. (We have to\n // record the segment because it will be cleared after the first \"goToTurn()\".)\n const { segmentDrawn } = card.state;\n replay.goToSegment(segmentDrawn, true);\n replay.goToSegmentAndIndicateCard(segmentDrawn + 1, card.state.order);\n }\n } else if (isCardPlayed(card.state) && card.state.segmentPlayed !== null) {\n // Clicking on played cards goes to the turn immediately before they were played.\n replay.goToSegmentAndIndicateCard(\n card.state.segmentPlayed,\n card.state.order,\n );\n } else if (\n isCardDiscarded(card.state) &&\n card.state.segmentDiscarded !== null\n ) {\n // Clicking on discarded cards goes to the turn immediately before they were discarded.\n replay.goToSegmentAndIndicateCard(\n card.state.segmentDiscarded,\n card.state.order,\n );\n }\n}\n\nfunction clickMiddle(card: HanabiCard, event: MouseEvent) {\n // No actions in this function use modifiers.\n if (event.ctrlKey || event.shiftKey || event.altKey || event.metaKey) {\n return;\n }\n\n // Middle clicking on a card goes to the turn it was first clued.\n if (\n card.state.segmentFirstClued !== null &&\n !card.isStackBase // Disable this functionality for the stack base\n ) {\n // We add one to the segment so that the clue is visible. (If we go to the turn that the card\n // was clued, then the actual clue has not happened yet.)\n replay.goToSegment(card.state.segmentFirstClued + 1, true);\n }\n}\n\nfunction clickRight(card: HanabiCard, event: MouseEvent) {\n // Alt + right-click is a card morph (in a hypothetical).\n if (\n globals.state.replay.hypothetical !== null &&\n (globals.state.replay.shared === null ||\n globals.state.replay.shared.amLeader) &&\n !event.ctrlKey &&\n !event.shiftKey &&\n event.altKey &&\n !event.metaKey\n ) {\n clickMorph(card);\n return;\n }\n\n // Right-click for a leader in a shared replay is to draw an arrow next to the card. The arrow is\n // shown to all the members of the reply in order to draw attention to the card. (We want it to\n // work no matter what modifiers are being pressed, in case someone is pushing their push-to-talk\n // hotkey while highlighting cards.)\n if (\n globals.state.finished &&\n (globals.state.replay.shared === null ||\n (globals.state.replay.shared.amLeader &&\n globals.state.replay.shared.useSharedSegments))\n ) {\n arrows.toggle(card.state.order);\n return;\n }\n\n // Right-click in a solo replay just prints out the order of the card.\n if (globals.state.finished && globals.state.replay.shared === null) {\n console.log(`This card's order is: ${card.state.order}`);\n return;\n }\n\n // Ctrl + right-click is a local arrow. Even if they are not a leader in a shared replay, a user\n // might still want to draw an arrow on a card for demonstration purposes. However, we do not want\n // to enable this functionality in shared replays because it could be misleading as to who the\n // real replay leader is.\n if (\n event.ctrlKey &&\n !event.shiftKey &&\n !event.altKey &&\n !event.metaKey &&\n globals.state.replay.shared === null\n ) {\n arrows.toggle(card.state.order);\n return;\n }\n\n clickRightCheckAddNote(event, card, false);\n}\n\n/** Morphing cards allows for creation of hypothetical situations. */\nfunction clickMorph(card: HanabiCard) {\n modals.askForMorph(card, globals.variant);\n}\n\nexport function morphReplayFromModal(\n card: HanabiCard,\n cardIdentity: CardIdentity | \"original\",\n): void {\n if (cardIdentity === \"original\") {\n hypothetical.sendHypotheticalActionToServer({\n type: \"unmorph\",\n order: card.state.order,\n });\n } else {\n hypothetical.sendHypotheticalActionToServer({\n type: \"morph\",\n order: card.state.order,\n suitIndex: cardIdentity.suitIndex ?? -1,\n rank: cardIdentity.rank ?? -1,\n });\n }\n}\n", "// The lobby area that shows all of the current logged-in users.\n\nimport type { UserID } from \"@hanabi-live/data\";\nimport { Status, StatusText } from \"@hanabi-live/data\";\nimport { globals } from \"../Globals\";\nimport * as tooltips from \"../tooltips\";\nimport * as tablesDraw from \"./tablesDraw\";\nimport { Screen } from \"./types/Screen\";\n\nexport function draw(): void {\n $(\".lobby-users-num\").text(globals.userMap.size);\n\n const tbody = $(\"#lobby-users-table-tbody\");\n\n // Clear all of the existing rows.\n tbody.html(\"\");\n\n // Do not do anything if there are no users. (This will be the case when first logging in and not\n // doing the tutorial.)\n if (globals.userMap.size === 0) {\n return;\n }\n\n // Make a mapping of user names to IDs (and keep track of our friends).\n const usernameMapping = new Map();\n const onlineFriends: string[] = [];\n for (const [id, user] of globals.userMap) {\n usernameMapping.set(user.name, id);\n if (globals.friends.includes(user.name)) {\n onlineFriends.push(user.name);\n }\n }\n\n // Make an alphabetical list of all of the usernames.\n const alphabeticalUsernames = [...usernameMapping.keys()];\n alphabeticalUsernames.sort(\n // We want to do a case-insensitive sort, which will not occur by default.\n (a, b) => a.toLowerCase().localeCompare(b.toLowerCase()),\n );\n\n // Additionally, alphabetize all of our friends.\n onlineFriends.sort(\n // We want to do a case-insensitive sort, which will not occur by default.\n (a, b) => a.toLowerCase().localeCompare(b.toLowerCase()),\n );\n\n // First, draw our username at the top.\n const alreadyDrawnUsers = new Set();\n drawUser(globals.username, usernameMapping, tbody, false);\n alreadyDrawnUsers.add(globals.username);\n\n // Second, draw our currently online friends, if any.\n for (const friend of onlineFriends) {\n drawUser(friend, usernameMapping, tbody, true);\n alreadyDrawnUsers.add(friend);\n }\n\n // Then, draw all of the other users in alphabetical order.\n for (const username of alphabeticalUsernames) {\n if (!alreadyDrawnUsers.has(username)) {\n drawUser(username, usernameMapping, tbody, false);\n }\n }\n}\n\nfunction drawUser(\n username: string,\n usernameMapping: ReadonlyMap,\n tbody: JQuery,\n friend: boolean,\n) {\n // Find the status of this user from the \"userList\" map.\n const userID = usernameMapping.get(username);\n if (userID === undefined) {\n return;\n }\n\n const user = globals.userMap.get(userID);\n if (user === undefined) {\n return;\n }\n\n let nameColumn = \"\";\n if (user.hyphenated) {\n nameColumn += ``;\n if (username === globals.username) {\n nameColumn += \"\";\n }\n nameColumn += `\";\n if (username === globals.username) {\n nameColumn += \"\";\n }\n nameColumn += `  \uD83D\uDCA4`;\n nameColumn += \"\";\n\n const statusText = StatusText[user.status];\n const statusColumn =\n globals.currentScreen === Screen.PreGame ||\n user.status === Status.Lobby ||\n user.status === Status.Replay\n ? statusText\n : `${statusText}`;\n\n const row = $(\"\");\n $(\"\").html(nameColumn).appendTo(row);\n $(\"\").html(statusColumn).appendTo(row);\n\n row.appendTo(tbody);\n\n setLink(userID);\n setInactive(userID, user.inactive);\n\n const content =\n 'This person is a self-identified member of the Hyphenated group.';\n tooltips.create(`#hyphenated-tooltip-${userID}`, \"default\", content);\n}\n\nfunction setLink(userID: UserID) {\n $(`#online-users-${userID}-link`).off(\"click\");\n $(`#online-users-${userID}-link`).on(\"click\", () => {\n // Get the user corresponding to this element.\n const user = globals.userMap.get(userID);\n if (user === undefined) {\n return;\n }\n\n // Get the table corresponding to the user. If the user is in the lobby or in a solo replay,\n // this will be undefined.\n if (user.tableID === undefined) {\n return;\n }\n const table = globals.tableMap.get(user.tableID);\n if (table === undefined) {\n return;\n }\n\n switch (user.status) {\n case Status.Lobby: {\n // The \"Lobby\" status is not a link.\n break;\n }\n\n case Status.PreGame: {\n tablesDraw.tableJoin(table);\n break;\n }\n\n case Status.Playing: {\n tablesDraw.tableSpectate(table);\n break;\n }\n\n case Status.Spectating: {\n tablesDraw.tableSpectate(table);\n break;\n }\n\n case Status.Replay: {\n // The \"Replay\" status is not a link.\n break;\n }\n\n case Status.SharedReplay: {\n tablesDraw.tableSpectate(table);\n break;\n }\n }\n });\n}\n\nexport function setInactive(userID: number, inactive: boolean): void {\n if (inactive) {\n $(`#online-users-${userID}`).fadeTo(0, 0.3);\n $(`#online-users-${userID}-zzz`).show();\n } else {\n $(`#online-users-${userID}`).fadeTo(0, 1);\n $(`#online-users-${userID}-zzz`).hide();\n }\n}\n", "// The lobby area that shows all of the players in the current unstarted game.\n\nimport type { Options, PlayerIndex } from \"@hanabi-live/game\";\nimport { MAX_PLAYERS, MIN_PLAYERS, getVariant } from \"@hanabi-live/game\";\nimport { assertNotNull, eRange, iRange } from \"complete-common\";\nimport { globals } from \"../Globals\";\nimport * as chat from \"../chat\";\nimport { OptionIcons } from \"../enums/OptionIcons\";\nimport * as tooltips from \"../tooltips\";\nimport {\n getHTMLElement,\n setBrowserAddressBarPath,\n timerFormatter,\n} from \"../utils\";\nimport * as nav from \"./nav\";\nimport { tablesDraw } from \"./tablesDraw\";\nimport { Screen } from \"./types/Screen\";\nimport * as usersDraw from \"./usersDraw\";\n\nconst lobbyChatText = getHTMLElement(\"#lobby-chat-text\");\nconst lobbyChatPregameText = getHTMLElement(\"#lobby-chat-pregame-text\");\n\nexport function show(): void {\n globals.currentScreen = Screen.PreGame;\n usersDraw.draw();\n\n // Replace the list of current games with a list of the current players.\n $(\"#lobby-pregame\").show();\n $(\"#lobby-games\").hide();\n // Fix online and chat boxes layout for small screens.\n $(\"#lobby-chat-container\").addClass(\"pregame-chat-layout\");\n $(\"#lobby-chat-pregame-container\").addClass(\"pregame-chat-layout\");\n\n // Fix bottom nav buttons for small screens.\n $(\"#lobby-toggle-show-tables\").text(\"Game\");\n $(\"#lobby-toggle-show-chat\").addClass(\"hidden\");\n $(\"#lobby-toggle-show-game-chat\").removeClass(\"hidden\");\n\n // Click the games button.\n $(\"#lobby-toggle-show-tables\").trigger(\"click\");\n\n // Add an extra chat box.\n $(\"#lobby-chat-container\").removeClass(\"col-8\");\n $(\"#lobby-chat-container\").addClass(\"col-4\");\n $(\"#lobby-chat-pregame-container\").show();\n\n // Clear the pregame chat box of any previous content.\n $(\"#lobby-chat-pregame-text\").html(\"\");\n\n // Scroll to the bottom of both the lobby chat and the pregame chat. (Even if the lobby chat is\n // already at the bottom, it will change size and cause it to not be scrolled all the way down.)\n lobbyChatText.scrollTop = lobbyChatText.scrollHeight;\n lobbyChatPregameText.scrollTop = lobbyChatPregameText.scrollHeight;\n\n // Focus the pregame chat.\n $(\"#lobby-chat-pregame-input\").trigger(\"focus\");\n\n // The \"Create Game\" button in the nav was disabled after we clicked the \"Create\" button, so\n // re-enable it now that we have received a message back from the server.\n $(\"#nav-buttons-lobby-create-game\").removeClass(\"disabled\");\n\n // Adjust the top navigation bar.\n nav.show(\"pregame\");\n toggleStartGameButton();\n\n // Set the browser address bar.\n setBrowserAddressBarPath(`/pre-game/${globals.tableID}`);\n}\n\nexport function hide(): void {\n globals.currentScreen = Screen.Lobby;\n tablesDraw();\n usersDraw.draw();\n\n // Replace the list of current players with a list of the current games.\n $(\"#lobby-pregame\").hide();\n $(\"#lobby-games\").show();\n // Fix online and chat boxes layout for small screens.\n $(\"#lobby-chat-container\").removeClass(\"pregame-chat-layout\");\n $(\"#lobby-chat-pregame-container\").removeClass(\"pregame-chat-layout\");\n\n // Fix bottom nav buttons for small screens.\n $(\"#lobby-toggle-show-tables\").text(\"Tables\");\n $(\"#lobby-toggle-show-chat\").removeClass(\"hidden\");\n $(\"#lobby-toggle-show-game-chat\").addClass(\"hidden\");\n\n // Click the games button.\n $(\"#lobby-toggle-show-tables\").trigger(\"click\");\n\n // Remove the extra chat box.\n $(\"#lobby-chat-container\").addClass(\"col-8\");\n $(\"#lobby-chat-container\").removeClass(\"col-4\");\n $(\"#lobby-chat-pregame-container\").hide();\n\n // Clear the typing list.\n globals.peopleTyping = [];\n chat.updatePeopleTyping();\n\n // Adjust the navigation bar.\n nav.show(\"lobby\");\n\n // Remove delegate handlers\n $(\"#lobby-chat-pregame-text\").off();\n\n // Set the browser address bar.\n setBrowserAddressBarPath(\"/lobby\");\n}\n\nexport function draw(): void {\n assertNotNull(\n globals.game,\n 'Attempted to draw the pre-game screen without having first received a \"game\" message from the server.',\n );\n\n // Update the information on the left-hand side of the screen.\n $(\"#lobby-pregame-name\").text(globals.game.name);\n $(\"#lobby-pregame-variant\").text(globals.game.options.variantName);\n $(\"#lobby-pregame-seats\").text(\n `${globals.game.players.length.toString()} / ${globals.game.maxPlayers.toString()}`,\n );\n\n drawOptions();\n\n // Draw the player boxes.\n for (const i of eRange(MAX_PLAYERS)) {\n const playerIndex = i as PlayerIndex;\n drawPlayerBox(playerIndex);\n }\n\n toggleStartGameButton();\n}\n\nfunction drawOptions() {\n if (globals.game === null) {\n return;\n }\n\n // Start to create the HTML that will appear under the \"Options:\" text. Note that the tooltips\n // must be created inline; if they are created statically in \"main.tmpl\", then they will fail to\n // initialize properly on the second viewing.\n let html = \"\";\n\n if (globals.game.passwordProtected) {\n html += '
  • \n
    \n This is a password-protected game.\n
    \n \n `;\n }\n\n html += getOptionIcons(globals.game.options, \"lobby-pregame\", 0);\n\n // Set the HTML\n const optionsTitleDiv = $(\"#lobby-pregame-options-title\");\n const optionsText = html === \"\" ? \"\" : \"Options:\";\n optionsTitleDiv.text(optionsText);\n const optionsDiv = $(\"#lobby-pregame-options\");\n optionsDiv.html(html);\n\n // Initialize the tooltips, if any. (This has to be done after adding the HTML to the page.)\n\n if (globals.game.passwordProtected) {\n tooltips.create(\"#lobby-pregame-options-password\");\n }\n\n initializeOptionTooltips(globals.game.options, \"lobby-pregame\", 0);\n}\n\nexport function getOptionIcons(\n options: Options,\n idPrefix: string,\n rowId: number,\n): string {\n let html = \"\";\n\n if (options.timed) {\n html += `
  •   (`;\n html += timerFormatter(options.timeBase);\n html += \" + \";\n html += timerFormatter(options.timePerTurn);\n html += \")
  • \";\n html += `\n
    \n
    \n This is a Timed Game. The base time is ${timerFormatter(\n options.timeBase,\n )} minute(s) plus ${\n options.timePerTurn\n } second(s) per turn.\n
    \n
    \n `;\n }\n\n if (options.speedrun) {\n html += `
  • `;\n html += `\n
    \n
    \n This is a Speedrun.\n
    \n
    \n `;\n }\n\n if (options.cardCycle) {\n html += `
  • `;\n html += `\n
    \n
    \n The Card Cycling option is enabled.\n
    \n
    \n `;\n }\n\n if (options.deckPlays) {\n html += `
  • `;\n html += `\n
    \n
    \n The Bottom-Deck Blind-Plays option is enabled.\n
    \n
    \n `;\n }\n\n if (options.emptyClues) {\n html += `
  • `;\n html += `\n
    \n
    \n The Empty Clues option is enabled.\n
    \n
    \n `;\n }\n\n if (options.oneExtraCard) {\n html += `
  • `;\n html += `\n
    \n
    \n The One Extra Card option is enabled.\n
    \n
    \n `;\n }\n\n if (options.oneLessCard) {\n html += `
  • `;\n html += `\n
    \n
    \n The One Less Card option is enabled.\n
    \n
    \n `;\n }\n\n if (options.allOrNothing) {\n html += `
  • `;\n html += `\n
    \n
    \n The All or Nothing option is enabled.\n
    \n
    \n `;\n }\n\n if (options.detrimentalCharacters) {\n html += `
  • `;\n html += `\n
    \n
    \n The Detrimental Characters option is enabled.\n
    \n
    \n `;\n }\n return html;\n}\n\nexport function initializeOptionTooltips(\n options: Options,\n idPrefix: string,\n rowId: number,\n): void {\n if (options.timed) {\n tooltips.create(`#${idPrefix}-options-timer-${rowId}`);\n }\n if (options.speedrun) {\n tooltips.create(`#${idPrefix}-options-speedrun-${rowId}`);\n }\n if (options.cardCycle) {\n tooltips.create(`#${idPrefix}-options-card-cycle-${rowId}`);\n }\n if (options.deckPlays) {\n tooltips.create(`#${idPrefix}-options-deck-plays-${rowId}`);\n }\n if (options.emptyClues) {\n tooltips.create(`#${idPrefix}-options-empty-clues-${rowId}`);\n }\n if (options.oneExtraCard) {\n tooltips.create(`#${idPrefix}-options-one-extra-card-${rowId}`);\n }\n if (options.oneLessCard) {\n tooltips.create(`#${idPrefix}-options-one-less-card-${rowId}`);\n }\n if (options.allOrNothing) {\n tooltips.create(`#${idPrefix}-options-all-or-nothing-${rowId}`);\n }\n if (options.detrimentalCharacters) {\n tooltips.create(`#${idPrefix}-options-characters-${rowId}`);\n }\n}\n\nfunction drawPlayerBox(playerIndex: PlayerIndex) {\n if (globals.game === null) {\n return;\n }\n\n const numPlayers = globals.game.players.length; // The \"numPlayers\" in the options is not set yet.\n const div = $(`#lobby-pregame-player-${playerIndex + 1}`);\n\n div.html(\"\");\n\n const player = globals.game.players[playerIndex];\n if (player === undefined) {\n div.hide();\n return;\n }\n\n div.show();\n\n const span = getNameSpan(player.name);\n if (isSpectator()) {\n span.addClass(\"shadow\").on(\"click\", (event) => {\n event.stopPropagation();\n reattend(playerIndex);\n });\n }\n const strong = $(\"\");\n strong.append(span);\n const p = $(\"

    \").addClass(\"margin0 padding0p5\").append(strong);\n div.append(p);\n\n // Calculate some stats\n const variantStats = player.stats.variant;\n // Round it to 1 decimal place.\n const averageScore = Math.round(variantStats.averageScore * 10) / 10;\n const averageScoreString = averageScore === 0 ? \"-\" : averageScore.toString();\n let strikeoutRateString: string;\n if (variantStats.numGames > 0) {\n let strikeoutRate =\n (variantStats.numStrikeouts / variantStats.numGames) * 100;\n strikeoutRate = Math.round(strikeoutRate * 10) / 10; // (round it to 1 decimal places)\n strikeoutRateString = `${strikeoutRate}%`;\n } else {\n strikeoutRateString = \"-\";\n }\n\n let html = `\n

    \n
    \n Total games:\n
    \n
    \n ${player.stats.numGames}\n
    \n
    \n
    \n
    \n ...of this variant:\n
    \n
    \n ${variantStats.numGames - variantStats.numStrikeouts}\n
    \n
    \n
    \n
    \n Average score:\n
    \n
    \n ${averageScoreString}\n
    \n
    \n
    \n
    \n Strikeout rate:\n
    \n
    \n ${strikeoutRateString}\n
    \n
    \n `;\n if (numPlayers > 1) {\n html += `\n
    \n
    \n ${numPlayers}-player best score:\n
    \n
    \n ${variantStats.bestScores[numPlayers - 2]!.score}\n
    \n
    \n `;\n }\n html += `\n
    \n
    \n ${numPlayers === 1 ? \"B\" : \"Other b\"}est scores:\n
    \n
    \n \n
    \n
    \n
    \n
    \n `;\n const variant = getVariant(globals.game.options.variantName);\n const { maxScore } = variant;\n for (const bestScorePlayer of iRange(MIN_PLAYERS, MAX_PLAYERS)) {\n const bestScoreObject = variantStats.bestScores[bestScorePlayer - 2];\n if (bestScoreObject === undefined) {\n continue;\n }\n const { score, modifier } = bestScoreObject;\n\n html += '
    ';\n html += `
    ${bestScorePlayer}-player:
    `;\n html += '
    ';\n if (score === maxScore) {\n html += \"\";\n }\n html += ` ${score} / ${maxScore}`;\n if (score === maxScore) {\n html += \"   \";\n html +=\n modifier === 0\n ? ''\n : '';\n }\n html += \"
    \";\n }\n html += `\n
    \n
    \n `;\n if (!player.present) {\n html += '

    AWAY

    ';\n }\n\n div.append($(html));\n\n // Initialize the tooltip\n tooltips.create(`#lobby-pregame-player-${playerIndex + 1}-scores-icon`);\n}\n\nfunction getNameSpan(name: string) {\n const span = $(\"\").html(name);\n if (name === globals.username) {\n span.addClass(\"name-me\");\n } else if (globals.friends.includes(name)) {\n span.addClass(\"friend\");\n }\n return span;\n}\n\nfunction isSpectator() {\n for (const loopPlayer of globals.game!.players) {\n if (loopPlayer.name === globals.username) {\n return false;\n }\n }\n return true;\n}\n\nexport function drawSpectators(tableID: number): void {\n if (globals.game === null) {\n return;\n }\n\n const list = $(\"#lobby-pregame-spectators\");\n list.empty();\n const table = globals.tableMap.get(tableID);\n if (table === undefined) {\n return;\n }\n\n for (const spectator of table.spectators) {\n const nameSpan = getNameSpan(spectator.name);\n const item = $(\"
  • \").html(`• ${nameSpan.prop(\"outerHTML\")}`);\n if (\n spectator.shadowingPlayerIndex !== undefined &&\n spectator.shadowingPlayerIndex !== -1\n ) {\n if (spectator.name === globals.username) {\n $(`#lobby-pregame-player-${spectator.shadowingPlayerIndex + 1} .shadow`)\n .removeClass(\"shadow\")\n .addClass(\"unShadow\")\n .on(\"click\", (event) => {\n event.stopPropagation();\n reattend(-1);\n })\n .append(\" \uD83D\uDD75\uFE0F\");\n }\n item.html(\n `${item.html()} (\uD83D\uDD75\uFE0F ${spectator.shadowingPlayerUsername})`,\n );\n }\n list.append(item);\n }\n}\n\nexport function toggleStartGameButton(): void {\n // Enable or disable the \"Start Game\" button. \"Start Game\" enabled if game owner and enough\n // players.\n $(\"#nav-buttons-pregame-start\").addClass(\"disabled\");\n\n if (globals.game === null) {\n return;\n }\n\n if (\n globals.game.owner === globals.userID &&\n globals.game.players.length >= MIN_PLAYERS &&\n globals.game.players.length <= MAX_PLAYERS &&\n // If this field is not equal to null it means that we are waiting a short time to re-enable the\n // button after a player joined.\n globals.enableStartGameButtonTimeout === null\n ) {\n $(\"#nav-buttons-pregame-start\").removeClass(\"disabled\");\n }\n\n if (globals.game.owner === globals.userID) {\n $(\"#nav-buttons-pregame-change-variant\").removeClass(\"disabled\");\n } else {\n $(\"#nav-buttons-pregame-change-variant\").addClass(\"disabled\");\n }\n}\n\nfunction reattend(shadowingPlayerIndex: PlayerIndex | -1) {\n setTimeout(() => {\n globals.conn!.send(\"tableUnattend\", {\n tableID: globals.tableID,\n });\n globals.conn!.send(\"tableSpectate\", {\n tableID: globals.tableID,\n shadowingPlayerIndex,\n });\n }, 0);\n}\n", "// The lobby area that shows all of the current tables.\n\nimport type { ServerCommandTableData } from \"@hanabi-live/data\";\nimport { MAX_PLAYERS } from \"@hanabi-live/game\";\nimport { SECOND_IN_MILLISECONDS, assertDefined, iRange } from \"complete-common\";\nimport { globals } from \"../Globals\";\nimport * as modals from \"../modals\";\nimport * as tooltips from \"../tooltips\";\nimport { copyStringToClipboard, getURLFromPath } from \"../utils\";\nimport * as createGame from \"./createGame\";\nimport { getOptionIcons, initializeOptionTooltips } from \"./pregame\";\nimport { Screen } from \"./types/Screen\";\n\nexport function tablesDraw(): void {\n const tbody = $(\"#lobby-games-table-tbody\");\n\n // Clear all of the existing rows.\n tbody.html(\"\");\n\n if (globals.tableMap.size === 0) {\n $(\"#lobby-games-no\").show();\n $(\"#lobby-games\").addClass(\"align-center-v\");\n $(\"#lobby-games-table-container\").hide();\n return;\n }\n $(\"#lobby-games-no\").hide();\n $(\"#lobby-games\").removeClass(\"align-center-v\");\n $(\"#lobby-games-table-container\").show();\n\n // We want the tables to be drawn in a certain order:\n // 1) Tables that we are currently in + tables our friends are currently in\n // 2) Unstarted tables\n // 3) Unstarted & password-protected tables\n // 4) Ongoing tables\n // 5) Shared replays\n let sortedTableIDs: number[] = [];\n for (const friends of [true, false]) {\n for (const i of iRange(1, 5)) {\n const tableIDsOfThisType: number[] = [];\n for (const [id, table] of globals.tableMap) {\n // Tables that we are currently in.\n if (friends && i === 1 && table.joined && !table.sharedReplay) {\n tableIDsOfThisType.push(id);\n }\n\n // Tables our friends are currently in.\n const hasFriends = tableHasFriends(table);\n if ((friends && !hasFriends) || (!friends && hasFriends)) {\n continue;\n }\n\n if (\n i === 2 &&\n !table.running &&\n !table.passwordProtected &&\n !table.joined\n ) {\n // Unstarted tables\n tableIDsOfThisType.push(id);\n } else if (\n i === 3 &&\n !table.running &&\n table.passwordProtected &&\n !table.joined\n ) {\n // Unstarted & password-protected tables.\n tableIDsOfThisType.push(id);\n } else if (\n i === 4 &&\n table.running &&\n !table.sharedReplay &&\n !table.joined\n ) {\n // Ongoing tables\n tableIDsOfThisType.push(id);\n } else if (i === 5 && table.running && table.sharedReplay) {\n // Shared replays\n tableIDsOfThisType.push(id);\n }\n }\n tableIDsOfThisType.sort((a, b) => a - b);\n sortedTableIDs = [...sortedTableIDs, ...tableIDsOfThisType];\n }\n }\n\n // Add all of the games.\n let addedJoinFirstTableButton = false;\n for (const id of sortedTableIDs) {\n const table = globals.tableMap.get(id);\n assertDefined(table, `Failed to get the table for the ID of: ${id}`);\n\n // Set the background color of the row, depending on what kind of game it is.\n let htmlClass: string;\n if (table.sharedReplay) {\n htmlClass = \"replay\";\n } else if (table.joined) {\n htmlClass = \"joined\";\n } else if (table.running) {\n htmlClass = \"started\";\n } else if (table.passwordProtected) {\n htmlClass = \"unstarted-password\";\n } else {\n htmlClass = \"unstarted\";\n }\n const row = $(``);\n\n // Column 1 - Name.\n let { name } = table;\n if (table.passwordProtected && !table.running && !table.sharedReplay) {\n name = `   ${name}`;\n }\n $(\"\").html(name).appendTo(row);\n\n // Column 2 - # of Players.\n const tdCell = $(\"\").html(\n table.running || table.sharedReplay\n ? table.numPlayers.toString()\n : `${table.numPlayers.toString()} / ${table.maxPlayers.toString()}`,\n );\n if (table.numPlayers === table.maxPlayers) {\n row.addClass(\"full\");\n }\n tdCell.appendTo(row);\n\n // Column 3 - Variant.\n $(\"\").html(table.variant).appendTo(row);\n\n // Column 4 - Options.\n $(\"\")\n .addClass(\"lobby-games-table-options\")\n .html(getOptionIcons(table.options, \"lobby-games-table\", table.id))\n .appendTo(row);\n\n // Column 5 - Status.\n let status: string;\n if (table.sharedReplay) {\n status = \"Reviewing\";\n } else if (table.running) {\n status = \"Running\";\n } else {\n status = \"Not Started\";\n }\n if (status !== \"Not Started\" && tableHasFriends(table)) {\n status += ` (${table.progress}%)`;\n }\n $(\"\").html(status).appendTo(row);\n\n // Column 6 - Players.\n const td = $(\"\");\n for (const [playerIndex, player] of table.players.entries()) {\n const span = $(\"\").html(player);\n if (player === globals.username) {\n span.addClass(\"name-me\");\n } else if (globals.friends.includes(player) && !table.sharedReplay) {\n span.addClass(\"friend\");\n }\n if (!table.joined && !table.sharedReplay) {\n span.addClass(\"shadow\").on(\"click\", (event) => {\n event.stopPropagation();\n tableSpectate(table, playerIndex);\n });\n }\n if (td.html() !== \"\") {\n td.append(\", \");\n }\n span.appendTo(td);\n }\n td.appendTo(row);\n\n // Column 7 - Spectators.\n const spectatorsArray: string[] = [];\n for (const spectator of table.spectators) {\n if (globals.friends.includes(spectator.name)) {\n spectatorsArray.push(`${spectator.name}`);\n } else {\n spectatorsArray.push(spectator.name);\n }\n }\n const spectatorsString = spectatorsArray.join(\", \");\n // Change click behavior on the spectators cell.\n if (table.joined) {\n $(\"\").html(spectatorsString).appendTo(row);\n } else {\n // Can also join as a spectator.\n $(\"\")\n .html(spectatorsString)\n .addClass(\"lobbySpectators\")\n .on(\"click\", (event) => {\n event.stopPropagation();\n tableSpectate(table);\n })\n .appendTo(row);\n }\n\n // There is a keyboard shortcut to join the first table available. Add a class to the first\n // relevant row to facilitate this.\n if (\n !table.running &&\n !table.joined &&\n table.numPlayers < MAX_PLAYERS &&\n !addedJoinFirstTableButton\n ) {\n addedJoinFirstTableButton = true;\n row.addClass(\"lobby-games-join-first-table-button\");\n }\n\n // Setup click actions.\n if (table.sharedReplay || (!table.joined && table.running)) {\n const rowId = `spectate-${table.id}`;\n row\n .attr(\"id\", rowId)\n .on(\"click\", (event: JQuery.ClickEvent) => {\n if (event.ctrlKey) {\n // Copy the URL that would occur from clicking on this table row.\n let gameID = table.id.toString();\n if (table.sharedReplay) {\n gameID = table.name.slice(\"Shared replay for game #\".length);\n }\n const path = table.sharedReplay\n ? `/shared-replay/${gameID}`\n : `/game/${gameID}`;\n copyURLToClipboard(path, `#${rowId}`);\n } else {\n tableSpectate(table);\n }\n });\n } else if (table.joined) {\n const rowId = `resume-${table.id}`;\n row\n .attr(\"id\", rowId)\n .on(\"click\", (event: JQuery.ClickEvent) => {\n if (event.ctrlKey) {\n // Copy the URL that would occur from clicking on this table row.\n copyURLToClipboard(`/game/${table.id}`, `#${rowId}`);\n } else {\n tableReattend(table);\n }\n });\n } else {\n const rowId = `join-${table.id}`;\n row.attr(\"id\", rowId);\n if (table.numPlayers >= MAX_PLAYERS) {\n row.addClass(\"full\");\n } else {\n row.on(\"click\", (event: JQuery.ClickEvent) => {\n if (event.ctrlKey) {\n // Copy the URL that would occur from clicking on this table row.\n copyURLToClipboard(`/pre-game/${table.id}`, `#${rowId}`);\n } else {\n tableJoin(table);\n }\n });\n }\n }\n\n row.appendTo(tbody);\n initializeOptionTooltips(table.options, \"lobby-games-table\", table.id);\n }\n}\n\nexport function tableSpectate(\n table: ServerCommandTableData,\n shadowingPlayerIndex = -1,\n): void {\n if (globals.currentScreen !== Screen.Lobby) {\n return;\n }\n\n globals.conn!.send(\"tableSpectate\", {\n tableID: table.id,\n shadowingPlayerIndex,\n });\n // (We will get a \"tableStart\" response back from the server.)\n}\n\nexport function tableJoin(table: ServerCommandTableData): void {\n if (globals.currentScreen !== Screen.Lobby) {\n return;\n }\n\n if (table.passwordProtected) {\n modals.askForPassword(table.id);\n } else {\n globals.conn!.send(\"tableJoin\", {\n tableID: table.id,\n });\n\n // Prepare the Change Options dialog for guest.\n createGame.ready();\n // (We will get a \"joined\" response back from the server.)\n }\n}\n\nfunction tableReattend(table: ServerCommandTableData) {\n if (globals.currentScreen !== Screen.Lobby) {\n return;\n }\n\n globals.conn!.send(\"tableReattend\", {\n tableID: table.id,\n });\n // (We will get either a \"game\" or a \"tableStart\" response back from the server, depending on if\n // the game has started or not.)\n}\n\nfunction tableHasFriends(table: ServerCommandTableData) {\n if (!table.sharedReplay) {\n for (const player of table.players) {\n if (globals.friends.includes(player)) {\n return true;\n }\n }\n }\n\n for (const spectator of table.spectators) {\n if (globals.friends.includes(spectator.name)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction copyURLToClipboard(path: string, selector: string) {\n const url = getURLFromPath(path);\n copyStringToClipboard(url);\n\n // Show a visual indication that the copy worked.\n tooltips.create(selector, \"clipboard\");\n tooltips.openInstance(selector);\n setTimeout(() => {\n tooltips.closeInstance(selector);\n }, SECOND_IN_MILLISECONDS);\n}\n", "// The screens that show past games and other scores.\n\nimport type { Options } from \"@hanabi-live/game\";\nimport { getVariant } from \"@hanabi-live/game\";\nimport { OptionIcons } from \"../enums/OptionIcons\";\nimport { globals } from \"../Globals\";\nimport * as tooltips from \"../tooltips\";\nimport { dateTimeFormatter, timerFormatter } from \"../utils\";\nimport * as nav from \"./nav\";\nimport { tablesDraw } from \"./tablesDraw\";\nimport type { GameHistory } from \"./types/GameHistory\";\nimport { Screen } from \"./types/Screen\";\nimport * as usersDraw from \"./usersDraw\";\n\nexport function init(): void {\n $(\"#lobby-history-show-more\").on(\"click\", () => {\n globals.showMoreHistoryClicked = true;\n let command: string;\n let offset: number;\n if (globals.currentScreen === Screen.History) {\n command = \"historyGet\";\n offset = globals.history.size;\n } else if (globals.currentScreen === Screen.HistoryFriends) {\n command = \"historyFriendsGet\";\n offset = globals.historyFriends.size;\n } else {\n return;\n }\n globals.conn!.send(command, {\n offset,\n amount: 10,\n });\n });\n}\n\nexport function show(): void {\n globals.currentScreen = Screen.History;\n\n $(\"#lobby-history\").show();\n $(\"#lobby-top-half\").addClass(\"hidden\");\n $(\"#lobby-separator\").addClass(\"hidden\");\n $(\"#lobby-bottom-half\").addClass(\"hidden\");\n $(\"#lobby-small-screen-buttons\").addClass(\"hidden\");\n\n // Update the nav.\n nav.show(\"history\");\n if (globals.friends.length === 0) {\n $(\"#nav-buttons-history-show-friends\").hide();\n } else {\n $(\"#nav-buttons-history-show-friends\").show();\n }\n\n // It might be hidden if we are returning from the \"Show History of Friends\" view.\n $(\"#lobby-history-show-all\").show();\n $(\"#lobby-history-show-all\").attr(\"href\", `/history/${globals.username}`);\n\n // Draw the history table.\n draw(false);\n}\n\nexport function hide(): void {\n globals.currentScreen = Screen.Lobby;\n tablesDraw();\n usersDraw.draw();\n\n $(\"#lobby-history\").hide();\n $(\"#lobby-history-other-scores\").hide();\n $(\"#lobby-top-half\").removeClass(\"hidden\");\n $(\"#lobby-separator\").removeClass(\"hidden\");\n $(\"#lobby-bottom-half\").removeClass(\"hidden\");\n $(\"#lobby-small-screen-buttons\").removeClass(\"hidden\");\n nav.show(\"lobby\");\n}\n\nexport function draw(friends: boolean): void {\n const tbody = $(\"#lobby-history-table-tbody\");\n\n // Clear all of the existing rows.\n tbody.html(\"\");\n\n // JavaScript keys come as strings, so we need to convert them to integers.\n const ids = friends\n ? [...globals.historyFriends.keys()]\n : [...globals.history.keys()];\n\n // Handle if the user has no history.\n if (ids.length === 0) {\n $(\"#lobby-history-no\").show();\n if (friends) {\n $(\"#lobby-history-no\").html(\n \"None of your friends have played any games yet.\",\n );\n } else {\n $(\"#lobby-history-no\").html(\"No game history. Play some games!\");\n }\n $(\"#lobby-history\").addClass(\"align-center-v\");\n $(\"#lobby-history-table-container\").hide();\n return;\n }\n $(\"#lobby-history-no\").hide();\n $(\"#lobby-history\").removeClass(\"align-center-v\");\n $(\"#lobby-history-table-container\").show();\n\n // Sort the game IDs in reverse order (so that the most recent ones are near the top). By default,\n // JavaScript will sort them in alphabetical order, so we must specify an ascending sort.\n ids.sort((a, b) => a - b);\n ids.reverse();\n\n // Add all of the history.\n for (const [i, id] of ids.entries()) {\n const gameData = friends\n ? globals.historyFriends.get(id)\n : globals.history.get(id);\n if (gameData === undefined) {\n continue;\n }\n\n const variant = getVariant(gameData.options.variantName);\n const { maxScore } = variant;\n\n const row = $(\"\");\n\n // Column 1 - Game ID.\n $(\"\").html(`#${id}`).appendTo(row);\n\n // Column 2 - # of Players.\n $(\"\").html(gameData.options.numPlayers.toString()).appendTo(row);\n\n // Column 3 - Score.\n $(\"\").html(`${gameData.score}/${maxScore}`).appendTo(row);\n\n // Column 4 - Variant.\n $(\"\").html(gameData.options.variantName).appendTo(row);\n\n // Column 5 - Options.\n const options = makeOptions(i, gameData.options, false);\n $(\"\").html(options).appendTo(row);\n\n // Column 6 - Other Players / Players (depending on if we are in the \"Friends\" view or not).\n const playerNames = [...gameData.playerNames];\n let playerNamesString = playerNames.join(\", \");\n if (!friends) {\n // Remove our name from the list of players.\n const ourIndex = gameData.playerNames.indexOf(globals.username);\n playerNames.splice(ourIndex, 1);\n playerNamesString = playerNames.join(\", \");\n }\n $(\"\").html(playerNamesString).appendTo(row);\n\n // Column 7 - Date Played.\n const datePlayed = dateTimeFormatter.format(\n new Date(gameData.datetimeFinished),\n );\n $(\"\").html(datePlayed).appendTo(row);\n\n // Column 8 - Watch Replay.\n const watchReplayButton = makeReplayButton(id, \"solo\");\n $(\"\").html(watchReplayButton[0]!).appendTo(row);\n\n // Column 9 - Share Replay.\n const shareReplayButton = makeReplayButton(id, \"shared\");\n $(\"\").html(shareReplayButton[0]!).appendTo(row);\n\n // Column 10 - Other Scores.\n const otherScoresButton = makeOtherScoresButton(\n id,\n gameData.seed,\n gameData.numGamesOnThisSeed,\n );\n $(\"\").html(otherScoresButton[0]!).appendTo(row);\n\n row.appendTo(tbody);\n\n // Initialize the tooltips, if any (this has to be done after adding the HTML to the page).\n tooltips.create(`#lobby-history-table-${i}-options`);\n }\n\n // Do not show the \"Show More History\" if we have 10 or less games played.\n if (globals.totalGames <= 10) {\n $(\"#lobby-history-show-more\").hide();\n } else {\n $(\"#lobby-history-show-more\").show();\n }\n}\n\nfunction makeOtherScoresButton(id: number, seed: string, gameCount: number) {\n const button = $(\"`;\n sendSelfPMFromServer(\n `Click ${here} to copy the raw JSON data to your clipboard.`,\n room,\n SelfChatMessageType.Info,\n );\n })\n .catch((error: unknown) => {\n sendSelfPMFromServer(\n `Failed to copy the URL to your clipboard: ${error}`,\n room,\n SelfChatMessageType.Error,\n );\n sendSelfPMFromServer(URL, room);\n });\n}\n\nfunction getGameActionsFromState(source: ReplayState): readonly ClientAction[] {\n let currentSegment = 0;\n const maxSegment = source.segment;\n const actions: ClientAction[] = [];\n for (\n let i = 0;\n i < source.actions.length && currentSegment < maxSegment;\n i++\n ) {\n const action = source.actions[i]!;\n switch (action.type) {\n case \"play\": {\n actions.push({\n type: ActionType.Play,\n target: action.order,\n });\n currentSegment++;\n continue;\n }\n\n case \"discard\": {\n actions.push({\n type: action.failed ? ActionType.Play : ActionType.Discard,\n target: action.order,\n });\n currentSegment++;\n continue;\n }\n\n case \"clue\": {\n switch (action.clue.type) {\n case ClueType.Color: {\n actions.push({\n type: ActionType.ColorClue,\n target: action.target,\n value: action.clue.value,\n });\n break;\n }\n\n case ClueType.Rank: {\n actions.push({\n type: ActionType.RankClue,\n target: action.target,\n value: action.clue.value,\n });\n break;\n }\n }\n\n currentSegment++;\n continue;\n }\n\n default: {\n continue;\n }\n }\n }\n\n return actions;\n}\n\nfunction getGameActionsFromLog(\n log: readonly LogEntry[],\n): readonly ClientAction[] {\n const actions: ClientAction[] = [];\n\n for (const [i, logEntry] of log.entries()) {\n const action = getActionFromLogEntry(i, logEntry);\n\n if (action !== undefined) {\n actions.push(action);\n }\n }\n\n return actions;\n}\n\nfunction getActionFromLogEntry(\n i: number,\n logEntry: LogEntry,\n): ClientAction | undefined {\n const foundPlay = logEntry.text.match(PLAY_REGEX);\n if (foundPlay !== null) {\n const [, playerName, slotString] = foundPlay;\n if (playerName !== undefined && slotString !== undefined) {\n const slot = parseIntSafe(slotString);\n if (slot !== undefined) {\n return getActionFromHypoPlayOrDiscard(\n i,\n ActionType.Play,\n playerName,\n slot,\n );\n }\n }\n }\n\n const foundDiscard = logEntry.text.match(DISCARD_REGEX);\n if (foundDiscard !== null) {\n const [, playerName, slotString] = foundDiscard;\n if (playerName !== undefined && slotString !== undefined) {\n const slot = parseIntSafe(slotString);\n if (slot !== undefined) {\n return getActionFromHypoPlayOrDiscard(\n i,\n ActionType.Discard,\n playerName,\n slot,\n );\n }\n }\n }\n\n const foundClue = logEntry.text.match(CLUE_REGEX);\n if (foundClue !== null) {\n const [, playerName, clueWord] = foundClue;\n if (playerName !== undefined && clueWord !== undefined) {\n return getActionFromHypoClue(playerName, clueWord);\n }\n }\n\n return undefined;\n}\n\nfunction getActionFromHypoPlayOrDiscard(\n entryNumber: number,\n actionType: ActionType.Play | ActionType.Discard,\n playerName: string,\n slot: number,\n): ClientAction {\n const playerIndex = getPlayerIndexFromPlayerName(playerName);\n assertDefined(\n playerIndex,\n `Failed to find the player index corresponding to: ${playerName}`,\n );\n\n // Go to previous hypo state to find the card. Cards are stored in reverse order than the one\n // perceived.\n const numCards = getCardsPerHand(globals.options);\n const slotIndex = numCards - slot;\n const cardOrder = getCardOrderFromHypoState(\n entryNumber - 1,\n playerIndex,\n slotIndex,\n );\n assertDefined(\n cardOrder,\n \"Failed to get the card order from the last hypothetical state.\",\n );\n\n return {\n type: actionType,\n target: cardOrder,\n };\n}\n\nfunction getActionFromHypoClue(\n playerName: string,\n clueWord: string,\n): ClientActionClue {\n const playerIndex = getPlayerIndexFromPlayerName(playerName);\n assertDefined(\n playerIndex,\n `Failed to find the player index corresponding to: ${playerName}`,\n );\n\n let clueNumber = parseIntSafe(clueWord);\n\n // \"Odds and Evens\" give \"Odd\" or \"Even\" as rank clues.\n if (clueWord === \"Odd\") {\n clueNumber = 1;\n } else if (clueWord === \"Even\") {\n clueNumber = 2;\n }\n\n if (clueNumber === undefined) {\n // It is a color clue.\n const colorIndex = getColorIndexFromColorName(clueWord, globals.variant);\n assertDefined(\n colorIndex,\n `The clue color name of ${clueWord} is not valid for this variant.`,\n );\n\n return {\n type: ActionType.ColorClue,\n target: playerIndex,\n value: colorIndex,\n };\n }\n\n if (!includes(globals.variant.clueRanks, clueNumber)) {\n throw new Error(\n `The clue rank of ${clueNumber} is not valid for this variant.`,\n );\n }\n const rankClueNumber = clueNumber as RankClueNumber;\n\n // It is a rank clue.\n return {\n type: ActionType.RankClue,\n target: playerIndex,\n value: rankClueNumber,\n };\n}\n\nfunction getPlayerIndexFromPlayerName(\n playerName: string,\n): PlayerIndex | undefined {\n const playerIndex = globals.metadata.playerNames.indexOf(playerName);\n return playerIndex === -1 ? undefined : (playerIndex as PlayerIndex);\n}\n\nfunction getCardOrderFromHypoState(\n previousStateIndex: number,\n playerIndex: PlayerIndex,\n slotIndex: number,\n): CardOrder | undefined {\n if (globals.state.replay.hypothetical === null) {\n return undefined;\n }\n\n const stateIndex = Math.max(previousStateIndex, 0);\n const stateOnHypoTurn = globals.state.replay.hypothetical.states[stateIndex];\n if (stateOnHypoTurn === undefined) {\n return undefined;\n }\n\n const playerHand = stateOnHypoTurn.hands[playerIndex];\n if (playerHand === undefined) {\n return undefined;\n }\n\n return playerHand[slotIndex];\n}\n\nfunction getColorIndexFromColorName(\n colorName: string,\n variant: Variant,\n): ColorIndex | undefined {\n const colorIndex = variant.clueColors.findIndex((clueColor) =>\n colorName.startsWith(clueColor.name),\n );\n\n return colorIndex === -1 ? undefined : (colorIndex as ColorIndex);\n}\n", "import type { Rank, SuitIndex } from \"@hanabi-live/game\";\nimport {\n DEFAULT_PLAYER_NAMES,\n MAX_PLAYERS,\n MIN_PLAYERS,\n getVariant,\n getVariantByID,\n} from \"@hanabi-live/game\";\nimport { assertDefined, parseIntSafe } from \"complete-common\";\nimport { isEqual } from \"lodash\";\n\ninterface DeckCard {\n suitIndex: SuitIndex;\n rank: Rank;\n}\n\ninterface Action {\n type: number;\n target: number;\n value?: number;\n}\n\ninterface Options {\n variant: string | undefined;\n}\n\ninterface MinMax {\n min: number;\n max: number;\n}\n\nexport interface GameJSON {\n players: readonly string[];\n deck: readonly DeckCard[];\n actions: readonly Action[];\n options: Options;\n characters: readonly string[];\n id: number;\n notes: readonly string[];\n seed: string;\n}\n\nconst BASE62 = \"abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n\n/**\n * Compresses a string representing a `GameJSON` object. Returns undefined if the compression fails.\n *\n * The resulting string is composed of three substrings separated by commas:\n * - The first substring represents the number of players and the deck.\n * - The second substring represents the actions.\n * - The third substring is the ID of the variant.\n *\n * Finally, hyphens are added to the string to make URL text wrap when posting.\n */\nexport function shrink(JSONString: string): string | undefined {\n let gameDataJSON: GameJSON;\n try {\n gameDataJSON = JSON.parse(JSONString) as GameJSON;\n } catch {\n return undefined;\n }\n\n const compressed = gameJSONCompress(gameDataJSON);\n if (compressed === undefined) {\n return undefined;\n }\n\n // Check if compression succeeded.\n const decompressed = expand(compressed);\n if (decompressed === undefined) {\n return undefined;\n }\n try {\n const decompressedJSON = JSON.parse(decompressed) as GameJSON;\n if (!isEqual(gameDataJSON, decompressedJSON)) {\n return undefined;\n }\n } catch {\n return undefined;\n }\n\n return compressed;\n}\n\n/** Decompresses a string into a `GameJSON` object. Returns undefined if decompression fails. */\nexport function expand(data: string): string | undefined {\n // Remove all hyphens from URL.\n const normal = data.replaceAll(\"-\", \"\");\n\n // The compressed string is composed of 3 substrings separated by commas.\n const [playersAndDeck, actionsString, variantIDString] = normal.split(\",\", 3);\n assertDefined(\n playersAndDeck,\n \"Failed to parse the players and deck from the compress hypothetical string.\",\n );\n assertDefined(\n actionsString,\n \"Failed to parse the actions from the compress hypothetical string.\",\n );\n assertDefined(\n variantIDString,\n \"Failed to parse the variant ID from the compress hypothetical string.\",\n );\n\n const numberPlayersString = playersAndDeck.charAt(0);\n const numPlayers = parseIntSafe(numberPlayersString);\n if (numPlayers === undefined) {\n return undefined;\n }\n\n const players = getPlayers(numPlayers);\n if (players.length === 0) {\n return undefined;\n }\n\n const deckString = playersAndDeck.slice(1);\n const deck = decompressDeck(deckString);\n if (deck === undefined) {\n return undefined;\n }\n\n const actions = decompressActions(actionsString);\n if (actions === undefined) {\n return undefined;\n }\n\n const variantID = parseIntSafe(variantIDString);\n if (variantID === undefined) {\n return undefined;\n }\n const variant = getVariantByID(variantID);\n\n const original: GameJSON = {\n players,\n deck,\n actions,\n options: {\n variant: variant.name,\n },\n characters: [],\n id: 0,\n notes: [],\n seed: \"\",\n };\n\n return JSON.stringify(original);\n}\n\n/** Compresses a `GameJSON` object into a string. Returns undefined if decompression fails. */\nfunction gameJSONCompress(data: GameJSON): string | undefined {\n let out = \"\";\n\n // Number of players\n const numberOfPlayers = data.players.length;\n if (numberOfPlayers < MIN_PLAYERS || numberOfPlayers > MAX_PLAYERS) {\n return undefined;\n }\n out += `${data.players.length}`;\n\n // Deck\n const deck = compressDeck(data.deck);\n if (deck === undefined) {\n return undefined;\n }\n out += `${deck},`;\n\n // Actions\n const actions = compressActions(data.actions);\n out += `${actions},`;\n\n // Variant ID\n if (data.options.variant === undefined) {\n return undefined;\n }\n\n try {\n const variant = getVariant(data.options.variant);\n out += `${variant.id}`;\n } catch {\n return undefined;\n }\n\n // Add hyphens every 20 characters for URL posting (hyphens make the text wrap).\n out = out.match(/.{1,20}/g)!.join(\"-\");\n\n return out;\n}\n\n/**\n * Compresses an array of `DeckCard` into a string. The first two characters of the string are\n * numbers containing the min and max values of `DeckCard.rank`. The rest of the string contains\n * series of strings one characters long, each representing a `DeckCard`.\n */\nfunction compressDeck(deck: readonly DeckCard[]): string | undefined {\n const rankRange = getRankMinMax(deck);\n if (!isMinMaxValid(rankRange)) {\n return undefined;\n }\n\n let out = `${rankRange.min}${rankRange.max}`;\n for (const card of deck) {\n out += deckCardToString(card, rankRange);\n }\n\n return out;\n}\n\n/**\n * Decompresses a string into an array of `DeckCard`. The first two characters of the string must be\n * numbers containing the min and max values of `DeckCard.rank`. The rest of the string must be\n * composed of series of strings one character long, each representing a `DeckCard`.\n */\nfunction decompressDeck(src: string): readonly DeckCard[] | undefined {\n const deck: DeckCard[] = [];\n\n const minVal = src.charAt(0);\n const min = parseIntSafe(minVal);\n if (min === undefined) {\n return undefined;\n }\n\n const maxVal = src.charAt(1);\n const max = parseIntSafe(maxVal);\n if (max === undefined) {\n return undefined;\n }\n\n const rankRange: MinMax = {\n min,\n max,\n };\n if (!isMinMaxValid(rankRange)) {\n return undefined;\n }\n\n let s = 2;\n while (s < src.length) {\n const compressedDeckCard = src.charAt(s);\n const deckCard = stringToDeckCard(compressedDeckCard, rankRange);\n deck.push(deckCard);\n s++;\n }\n return deck;\n}\n\n/**\n * Converts a `DeckCard` into a string. The returned string is one characters long, representing\n * `DeckCard.suitIndex` and `DeckCard.rank`.\n */\nfunction deckCardToString(card: DeckCard, rankRange: MinMax): string {\n const r = rankRange.max - rankRange.min + 1;\n const index = card.suitIndex * r + (card.rank - rankRange.min);\n return BASE62.charAt(index);\n}\n\n/**\n * Converts a compressed string into a `DeckCard`. The string must be one character long,\n * representing `DeckCard.suitIndex` and `DeckCard.rank`.\n */\nfunction stringToDeckCard(src: string, rankRange: MinMax): DeckCard {\n const r = rankRange.max - rankRange.min + 1;\n const index = BASE62.indexOf(src);\n const rank = (index % r) + 1;\n const suitIndex = Math.floor((index - rank + 1) / r);\n\n return {\n suitIndex: suitIndex as SuitIndex,\n rank: rank as Rank,\n };\n}\n\n/**\n * Compresses an array of `Action` into a string. The first two characters of the string are numbers\n * containing the min and max values of `Action.type`. The rest of the string contains series of\n * strings two characters long, each representing an `Action`.\n */\nfunction compressActions(actions: readonly Action[]): string {\n // Find min/max values of Action.type.\n const typeRange = getTypeMinMax(actions);\n if (!isMinMaxValid(typeRange)) {\n // Empty actions still require min/max values.\n return \"00\";\n }\n\n const actionStrings = actions.map((action) =>\n actionToString(action, typeRange),\n );\n return `${typeRange.min}${typeRange.max}${actionStrings.join(\"\")}`;\n}\n\n/**\n * Decompresses a string into an array of `Action`. The first two characters of the string must be\n * numbers containing the min and max values of `Action.type`. The rest of the string must be\n * composed of series of strings two characters long, each representing an `Action`.\n */\nfunction decompressActions(src: string): readonly Action[] | undefined {\n const actions: Action[] = [];\n\n const minVal = src.charAt(0);\n const min = parseIntSafe(minVal);\n if (min === undefined) {\n return undefined;\n }\n\n const maxVal = src.charAt(1);\n const max = parseIntSafe(maxVal);\n if (max === undefined) {\n return undefined;\n }\n\n const typeRange: MinMax = {\n min,\n max,\n };\n if (!isMinMaxValid(typeRange)) {\n return [];\n }\n\n let s = 2;\n while (s < src.length) {\n const compressedAction = src.slice(s, s + 2);\n const action = stringToAction(compressedAction, typeRange);\n actions.push(action);\n s += 2;\n }\n\n return actions;\n}\n\n/**\n * Converts an `Action` into a string. The returned string is two characters long, the first one\n * representing `Action.type` and `Action.value` and the second representing the `Action.target`.\n */\nfunction actionToString(action: Action, typeRange: MinMax): string {\n const r = typeRange.max - typeRange.min + 1;\n const val = action.value === undefined ? 0 : action.value + 1;\n const index = val * r + action.type - typeRange.min;\n const char = BASE62.charAt(index);\n return char + BASE62.charAt(action.target);\n}\n\n/**\n * Converts a compressed string into an `Action`. The string must be two characters long, the first\n * one representing `Action.type` and `Action.value` and the second representing the\n * `Action.target`.\n */\nfunction stringToAction(src: string, typeRange: MinMax): Action {\n const r = typeRange.max - typeRange.min + 1;\n const index = BASE62.indexOf(src.charAt(0));\n let type = index % r;\n const val = Math.floor((index - type) / r);\n type += typeRange.min;\n const target = BASE62.indexOf(src.charAt(1));\n\n return {\n type,\n target,\n value: val === 0 ? undefined : val - 1,\n };\n}\n\n/** Returns a string array of hypothetical players (Alice, Bob, etc). */\nfunction getPlayers(size: number): readonly string[] {\n if (size < MIN_PLAYERS || size > MAX_PLAYERS) {\n return [];\n }\n return DEFAULT_PLAYER_NAMES.slice(0, size);\n}\n\n/**\n * Creates a `MinMax` object, containing the minimum and maximum values of `DeckCard.rank` found in\n * an array of `DeckCard`.\n */\nfunction getRankMinMax(deck: readonly DeckCard[]): MinMax {\n const range: MinMax = {\n min: -1,\n max: -1,\n };\n\n for (const card of deck) {\n range.min = range.min === -1 ? card.rank : Math.min(range.min, card.rank);\n range.max = range.max === -1 ? card.rank : Math.max(range.max, card.rank);\n }\n\n return range;\n}\n\n/**\n * Creates a `MinMax` object, containing the minimum and maximum values of `Action.type` found in an\n * array of `Action`.\n */\nfunction getTypeMinMax(actions: readonly Action[]): MinMax {\n const range: MinMax = {\n min: -1,\n max: -1,\n };\n\n for (const action of actions) {\n range.min =\n range.min === -1 ? action.type : Math.min(range.min, action.type);\n range.max =\n range.max === -1 ? action.type : Math.max(range.max, action.type);\n }\n\n return range;\n}\n\nfunction isMinMaxValid(range: MinMax): boolean {\n return range.min >= 0 && range.min <= range.max;\n}\n", "import { VERSION } from \"@hanabi-live/data\";\nimport { VARIANT_NAMES } from \"@hanabi-live/game\";\nimport { parseIntSafe } from \"complete-common\";\nimport { globals } from \"./Globals\";\nimport { SelfChatMessageType, sendSelfPMFromServer } from \"./chat\";\nimport * as createGame from \"./lobby/createGame\";\nimport { createJSONFromReplay } from \"./lobby/createReplayJSON\";\n\n// Define a command handler map.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Callback = (...args: any) => void;\nexport const chatCommands = new Map();\n\n// /copy\nchatCommands.set(\"copy\", (room: string) => {\n createJSONFromReplay(room);\n});\n\n// /friend [username]\nfunction friend(room: string, args: readonly string[]) {\n // Validate that the format of the command is correct.\n if (args.length === 0) {\n sendSelfPMFromServer(\n \"The format of the /friend command is: /friend Alice\",\n room,\n SelfChatMessageType.Info,\n );\n return;\n }\n\n // Validate that we are not targeting ourselves.\n const name = args.join(\" \");\n if (name.toLowerCase() === globals.username.toLowerCase()) {\n sendSelfPMFromServer(\"You cannot friend yourself.\", room);\n }\n\n globals.conn!.send(\"chatFriend\", {\n name,\n });\n}\nchatCommands.set(\"friend\", friend);\nchatCommands.set(\"addfriend\", friend);\n\n// /friends\nfunction friends(room: string) {\n const msg =\n globals.friends.length === 0\n ? \"Currently, you do not have any friends on your friends list.\"\n : `Current friends: ${globals.friends.join(\", \")}`;\n sendSelfPMFromServer(msg, room);\n}\nchatCommands.set(\"f\", friends);\nchatCommands.set(\"friends\", friends);\nchatCommands.set(\"friendlist\", friends);\nchatCommands.set(\"friendslist\", friends);\n\n// /link \nfunction link(room: string, args: readonly string[]) {\n // Validate that the format of the command is correct.\n if (args.length === 0) {\n sendSelfPMFromServer(\n \"The format of the /link command is: /link Alice\",\n room,\n SelfChatMessageType.Info,\n );\n return;\n }\n\n // Validate that we are not targeting ourselves.\n const name = args.join(\" \");\n if (name.toLowerCase() === globals.username.toLowerCase()) {\n sendSelfPMFromServer(\"You cannot link yourself.\", room);\n }\n\n globals.conn!.send(\"chatLink\", {\n name,\n });\n}\n\n// /unlink \nfunction unlink(room: string, args: readonly string[]) {\n // Validate that the format of the command is correct.\n if (args.length === 0) {\n sendSelfPMFromServer(\n \"The format of the /unlink command is: /unlink Alice\",\n room,\n SelfChatMessageType.Info,\n );\n return;\n }\n\n // Validate that we are not targeting ourselves.\n const name = args.join(\" \");\n if (name.toLowerCase() === globals.username.toLowerCase()) {\n sendSelfPMFromServer(\"You cannot unlink yourself.\", room);\n }\n\n globals.conn!.send(\"chatUnlink\", {\n name,\n });\n}\n\n// /links\nfunction linked() {\n globals.conn!.send(\"chatLinked\", {});\n}\n\nchatCommands.set(\"link\", link);\nchatCommands.set(\"unlink\", unlink);\nchatCommands.set(\"linked\", linked);\nchatCommands.set(\"links\", linked);\n\n// /pm [username] [msg]\nfunction pm(room: string, args: readonly string[]) {\n // Validate that the format of the command is correct.\n const [recipient, ...msgArray] = args;\n const msg = msgArray.join(\" \").trim();\n\n if (recipient === undefined || msg === \"\") {\n sendSelfPMFromServer(\n \"The format of a private message is: /w Alice hello\",\n room,\n SelfChatMessageType.Info,\n );\n return;\n }\n\n // Validate that they are not sending a private message to themselves.\n if (recipient.toLowerCase() === globals.username.toLowerCase()) {\n sendSelfPMFromServer(\n \"You cannot send a private message to yourself.\",\n room,\n SelfChatMessageType.Error,\n );\n return;\n }\n\n // Validate that the recipient is online.\n const users = [...globals.userMap.values()];\n const matchingUser = users.find(\n (user) => user.name.toLowerCase() === recipient.toLowerCase(),\n );\n if (matchingUser === undefined) {\n sendSelfPMFromServer(`User \"${recipient}\" is not currently online.`, room);\n return;\n }\n\n globals.conn!.send(\"chatPM\", {\n msg,\n recipient: matchingUser.name,\n room,\n });\n}\nchatCommands.set(\"pm\", pm);\nchatCommands.set(\"w\", pm);\nchatCommands.set(\"whisper\", pm);\nchatCommands.set(\"msg\", pm);\nchatCommands.set(\"tell\", pm);\nchatCommands.set(\"t\", pm);\n\n// /setleader [username]\nfunction setLeader(room: string, args: readonly string[]) {\n if (globals.tableID === -1) {\n sendSelfPMFromServer(\n \"You are not currently at a table, so you cannot use the /setleader command.\",\n room,\n SelfChatMessageType.Error,\n );\n return;\n }\n\n const username = args.join(\" \");\n globals.conn!.send(\"tableSetLeader\", {\n tableID: globals.tableID,\n name: username,\n });\n}\nchatCommands.set(\"setleader\", setLeader);\nchatCommands.set(\"setlead\", setLeader);\nchatCommands.set(\"setowner\", setLeader);\nchatCommands.set(\"changeleader\", setLeader);\nchatCommands.set(\"changelead\", setLeader);\nchatCommands.set(\"changeowner\", setLeader);\n\n// /setvariant [variant]\nfunction setVariant(room: string, args: readonly string[]) {\n if (globals.tableID === -1) {\n sendSelfPMFromServer(\n \"You are not currently at a table, so you cannot use the /setvariant command.\",\n room,\n SelfChatMessageType.Error,\n );\n return;\n }\n\n // Sanitize the variant name.\n let variantName = getVariantFromArgs(args);\n // Get the first match.\n variantName = getVariantNameFromPartial(variantName);\n if (variantName === \"\") {\n sendSelfPMFromServer(\n `The variant of \"${args.join(\" \")}\" is not valid.`,\n room,\n SelfChatMessageType.Error,\n );\n return;\n }\n\n globals.conn!.send(\"tableSetVariant\", {\n tableID: globals.tableID,\n options: {\n variantName,\n },\n });\n\n // Update our stored create table setting to be equal to this variant.\n createGame.checkSettingChanged(\"createTableVariant\", variantName);\n}\nchatCommands.set(\"sv\", setVariant);\nchatCommands.set(\"setvariant\", setVariant);\nchatCommands.set(\"changevariant\", setVariant);\nchatCommands.set(\"cv\", setVariant);\n\n// /suggest [turn]\nchatCommands.set(\"suggest\", (room: string, args: readonly string[]) => {\n if (globals.tableID === -1) {\n sendSelfPMFromServer(\n \"You are not currently at a table, so you cannot use the /suggest command.\",\n room,\n SelfChatMessageType.Error,\n );\n return;\n }\n\n if (args.length === 0) {\n sendSelfPMFromServer(\n \"The format of the /suggest command is: /suggest [turn]\",\n room,\n SelfChatMessageType.Info,\n );\n return;\n }\n\n const firstArg = args[0];\n if (firstArg === undefined) {\n return;\n }\n\n const segment = parseIntSafe(firstArg);\n if (segment === undefined) {\n sendSelfPMFromServer(\n \"The [turn] argument must be a valid number\",\n room,\n SelfChatMessageType.Info,\n );\n return;\n }\n\n globals.conn!.send(\"tableSuggest\", {\n tableID: globals.tableID,\n segment,\n });\n});\n\n// /tag [tag]\nchatCommands.set(\"tag\", (room: string, args: readonly string[]) => {\n if (globals.tableID === -1) {\n sendSelfPMFromServer(\n \"You are not currently at a table, so you cannot use the /tag command.\",\n room,\n SelfChatMessageType.Error,\n );\n return;\n }\n\n const tag = args.join(\" \");\n globals.conn!.send(\"tag\", {\n tableID: globals.tableID,\n msg: tag,\n });\n});\n\nfunction tagdelete(room: string, args: readonly string[]) {\n if (globals.tableID === -1) {\n sendSelfPMFromServer(\n \"You are not currently at a table, so you cannot use the /tagdelete command.\",\n room,\n SelfChatMessageType.Error,\n );\n return;\n }\n\n const tag = args.join(\" \");\n globals.conn!.send(\"tagDelete\", {\n tableID: globals.tableID,\n msg: tag,\n });\n}\n\n// /tagdelete [tag]\nchatCommands.set(\"tagdelete\", tagdelete);\nchatCommands.set(\"untag\", tagdelete);\n\n// /tagsearch\nchatCommands.set(\"tagsearch\", (room: string, args: readonly string[]) => {\n const tag = args.join(\" \");\n\n globals.conn!.send(\"tagSearch\", {\n msg: tag,\n room,\n });\n});\n\nchatCommands.set(\"tagsdeleteall\", (room: string) => {\n if (globals.tableID === -1) {\n sendSelfPMFromServer(\n \"You are not currently at a table, so you cannot use the /tagsdeleteall command.\",\n room,\n SelfChatMessageType.Error,\n );\n }\n globals.conn!.send(\"tagsDeleteAll\", {\n tableID: globals.tableID,\n });\n});\n\n// /terminate\nchatCommands.set(\"terminate\", (room: string) => {\n // Terminates the ongoing game. This is the same as right-clicking the skull button.\n if (globals.tableID === -1) {\n sendSelfPMFromServer(\n \"You are not currently at a table, so you cannot use the /terminate command.\",\n room,\n SelfChatMessageType.Error,\n );\n return;\n }\n globals.conn!.send(\"tableTerminate\", {\n tableID: globals.tableID,\n });\n});\n\n// /playerinfo (username)\nfunction playerinfo(_room: string, args: readonly string[]) {\n let usernames: readonly string[];\n\n // - If there are no arguments and we are at a table, return stats for all the players.\n // - Otherwise, return stats for the caller.\n if (args.length === 0) {\n usernames =\n globals.tableID !== -1 && globals.ui !== null\n ? [...globals.ui.globals.metadata.playerNames]\n : [globals.username];\n } else {\n // We can return the stats for a list of provided users separated by spaces since usernames\n // cannot contain spaces.\n usernames = args;\n }\n\n for (const name of usernames) {\n globals.conn!.send(\"chatPlayerInfo\", {\n name,\n });\n }\n}\nchatCommands.set(\"p\", playerinfo);\nchatCommands.set(\"playerinfo\", playerinfo);\nchatCommands.set(\"games\", playerinfo);\nchatCommands.set(\"stats\", playerinfo);\n\n// /unfriend [username]\nchatCommands.set(\"unfriend\", (room: string, args: readonly string[]) => {\n // Validate that the format of the command is correct.\n if (args.length === 0) {\n sendSelfPMFromServer(\n \"The format of the /unfriend command is: /unfriend Alice\",\n room,\n SelfChatMessageType.Info,\n );\n return;\n }\n\n // Validate that we are not targeting ourselves.\n const name = args.join(\" \");\n if (name.toLowerCase() === globals.username.toLowerCase()) {\n sendSelfPMFromServer(\n \"You cannot unfriend yourself.\",\n room,\n SelfChatMessageType.Error,\n );\n }\n\n globals.conn!.send(\"chatUnfriend\", {\n name,\n });\n});\n\n// /version\nchatCommands.set(\"version\", (room: string) => {\n const msg = `You are running version ${VERSION} of the client.`;\n sendSelfPMFromServer(msg, room, SelfChatMessageType.Info);\n});\n\n// /vote\nchatCommands.set(\"vote\", (room: string) => {\n // Votes to terminate the ongoing game. This is the same as left-clicking the skull button.\n if (globals.tableID === -1) {\n sendSelfPMFromServer(\n \"You are not currently at a table, so you cannot use the /vote command.\",\n room,\n SelfChatMessageType.Error,\n );\n return;\n }\n globals.conn!.send(\"tableVoteForTermination\", {\n tableID: globals.tableID,\n });\n});\n\nexport function getVariantFromArgs(args: readonly string[]): string {\n const patterns = {\n doubleSpaces: / {2,}/g,\n openingParenthesis: / *\\( */g,\n closingParenthesis: / *\\) */g,\n hyphen: / *- */g,\n ampersand: / *& */g,\n };\n\n const variant = args\n // Remove empty elements\n .filter((arg) => arg !== \"\")\n // Capitalize\n .map((arg) => capitalize(arg))\n .join(\" \")\n // Remove space after opening and before closing parenthesis.\n .replaceAll(patterns.openingParenthesis, \" (\")\n .replaceAll(patterns.closingParenthesis, \") \")\n // Remove space before and after hyphen.\n .replaceAll(patterns.hyphen, \"-\")\n // Add space before and after ampersand.\n .replaceAll(patterns.ampersand, \" & \")\n // Remove double spaces.\n .replaceAll(patterns.doubleSpaces, \" \")\n .trim();\n\n return variant;\n}\n\nfunction capitalize(input: string) {\n const pattern = /(^|[ &()-])(\\w)/g;\n return input.toLowerCase().replaceAll(pattern, (x) => x.toUpperCase());\n}\n\nexport function getVariantNameFromPartial(search: string): string {\n const firstVariant = VARIANT_NAMES.find((variantName) =>\n variantName.startsWith(search),\n );\n\n return firstVariant ?? \"\";\n}\n", "{\n \"100\": \"\uD83D\uDCAF\",\n \"1234\": \"\uD83D\uDD22\",\n \"grinning\": \"\uD83D\uDE00\",\n \"grimacing\": \"\uD83D\uDE2C\",\n \"grin\": \"\uD83D\uDE01\",\n \"joy\": \"\uD83D\uDE02\",\n \"rofl\": \"\uD83E\uDD23\",\n \"partying\": \"\uD83E\uDD73\",\n \"smiley\": \"\uD83D\uDE03\",\n \"smile\": \"\uD83D\uDE04\",\n \"sweat_smile\": \"\uD83D\uDE05\",\n \"laughing\": \"\uD83D\uDE06\",\n \"innocent\": \"\uD83D\uDE07\",\n \"wink\": \"\uD83D\uDE09\",\n \"blush\": \"\uD83D\uDE0A\",\n \"slightly_smiling_face\": \"\uD83D\uDE42\",\n \"upside_down_face\": \"\uD83D\uDE43\",\n \"relaxed\": \"\u263A\uFE0F\",\n \"yum\": \"\uD83D\uDE0B\",\n \"relieved\": \"\uD83D\uDE0C\",\n \"heart_eyes\": \"\uD83D\uDE0D\",\n \"smiling_face_with_three_hearts\": \"\uD83E\uDD70\",\n \"kissing_heart\": \"\uD83D\uDE18\",\n \"kissing\": \"\uD83D\uDE17\",\n \"kissing_smiling_eyes\": \"\uD83D\uDE19\",\n \"kissing_closed_eyes\": \"\uD83D\uDE1A\",\n \"stuck_out_tongue_winking_eye\": \"\uD83D\uDE1C\",\n \"zany\": \"\uD83E\uDD2A\",\n \"raised_eyebrow\": \"\uD83E\uDD28\",\n \"monocle\": \"\uD83E\uDDD0\",\n \"stuck_out_tongue_closed_eyes\": \"\uD83D\uDE1D\",\n \"stuck_out_tongue\": \"\uD83D\uDE1B\",\n \"money_mouth_face\": \"\uD83E\uDD11\",\n \"nerd_face\": \"\uD83E\uDD13\",\n \"sunglasses\": \"\uD83D\uDE0E\",\n \"star_struck\": \"\uD83E\uDD29\",\n \"clown_face\": \"\uD83E\uDD21\",\n \"cowboy_hat_face\": \"\uD83E\uDD20\",\n \"hugs\": \"\uD83E\uDD17\",\n \"smirk\": \"\uD83D\uDE0F\",\n \"no_mouth\": \"\uD83D\uDE36\",\n \"neutral_face\": \"\uD83D\uDE10\",\n \"expressionless\": \"\uD83D\uDE11\",\n \"unamused\": \"\uD83D\uDE12\",\n \"roll_eyes\": \"\uD83D\uDE44\",\n \"thinking\": \"\uD83E\uDD14\",\n \"lying_face\": \"\uD83E\uDD25\",\n \"hand_over_mouth\": \"\uD83E\uDD2D\",\n \"shushing\": \"\uD83E\uDD2B\",\n \"symbols_over_mouth\": \"\uD83E\uDD2C\",\n \"exploding_head\": \"\uD83E\uDD2F\",\n \"flushed\": \"\uD83D\uDE33\",\n \"disappointed\": \"\uD83D\uDE1E\",\n \"worried\": \"\uD83D\uDE1F\",\n \"angry\": \"\uD83D\uDE20\",\n \"rage\": \"\uD83D\uDE21\",\n \"pensive\": \"\uD83D\uDE14\",\n \"confused\": \"\uD83D\uDE15\",\n \"slightly_frowning_face\": \"\uD83D\uDE41\",\n \"frowning_face\": \"\u2639\",\n \"persevere\": \"\uD83D\uDE23\",\n \"confounded\": \"\uD83D\uDE16\",\n \"tired_face\": \"\uD83D\uDE2B\",\n \"weary\": \"\uD83D\uDE29\",\n \"pleading\": \"\uD83E\uDD7A\",\n \"triumph\": \"\uD83D\uDE24\",\n \"open_mouth\": \"\uD83D\uDE2E\",\n \"scream\": \"\uD83D\uDE31\",\n \"fearful\": \"\uD83D\uDE28\",\n \"cold_sweat\": \"\uD83D\uDE30\",\n \"hushed\": \"\uD83D\uDE2F\",\n \"frowning\": \"\uD83D\uDE26\",\n \"anguished\": \"\uD83D\uDE27\",\n \"cry\": \"\uD83D\uDE22\",\n \"disappointed_relieved\": \"\uD83D\uDE25\",\n \"drooling_face\": \"\uD83E\uDD24\",\n \"sleepy\": \"\uD83D\uDE2A\",\n \"sweat\": \"\uD83D\uDE13\",\n \"hot\": \"\uD83E\uDD75\",\n \"cold\": \"\uD83E\uDD76\",\n \"sob\": \"\uD83D\uDE2D\",\n \"dizzy_face\": \"\uD83D\uDE35\",\n \"astonished\": \"\uD83D\uDE32\",\n \"zipper_mouth_face\": \"\uD83E\uDD10\",\n \"nauseated_face\": \"\uD83E\uDD22\",\n \"sneezing_face\": \"\uD83E\uDD27\",\n \"vomiting\": \"\uD83E\uDD2E\",\n \"mask\": \"\uD83D\uDE37\",\n \"face_with_thermometer\": \"\uD83E\uDD12\",\n \"face_with_head_bandage\": \"\uD83E\uDD15\",\n \"woozy\": \"\uD83E\uDD74\",\n \"sleeping\": \"\uD83D\uDE34\",\n \"zzz\": \"\uD83D\uDCA4\",\n \"poop\": \"\uD83D\uDCA9\",\n \"smiling_imp\": \"\uD83D\uDE08\",\n \"imp\": \"\uD83D\uDC7F\",\n \"japanese_ogre\": \"\uD83D\uDC79\",\n \"japanese_goblin\": \"\uD83D\uDC7A\",\n \"skull\": \"\uD83D\uDC80\",\n \"ghost\": \"\uD83D\uDC7B\",\n \"alien\": \"\uD83D\uDC7D\",\n \"robot\": \"\uD83E\uDD16\",\n \"smiley_cat\": \"\uD83D\uDE3A\",\n \"smile_cat\": \"\uD83D\uDE38\",\n \"joy_cat\": \"\uD83D\uDE39\",\n \"heart_eyes_cat\": \"\uD83D\uDE3B\",\n \"smirk_cat\": \"\uD83D\uDE3C\",\n \"kissing_cat\": \"\uD83D\uDE3D\",\n \"scream_cat\": \"\uD83D\uDE40\",\n \"crying_cat_face\": \"\uD83D\uDE3F\",\n \"pouting_cat\": \"\uD83D\uDE3E\",\n \"palms_up\": \"\uD83E\uDD32\",\n \"raised_hands\": \"\uD83D\uDE4C\",\n \"clap\": \"\uD83D\uDC4F\",\n \"wave\": \"\uD83D\uDC4B\",\n \"call_me_hand\": \"\uD83E\uDD19\",\n \"+1\": \"\uD83D\uDC4D\",\n \"-1\": \"\uD83D\uDC4E\",\n \"facepunch\": \"\uD83D\uDC4A\",\n \"fist\": \"\u270A\",\n \"fist_left\": \"\uD83E\uDD1B\",\n \"fist_right\": \"\uD83E\uDD1C\",\n \"v\": \"\u270C\",\n \"ok_hand\": \"\uD83D\uDC4C\",\n \"raised_hand\": \"\u270B\",\n \"raised_back_of_hand\": \"\uD83E\uDD1A\",\n \"open_hands\": \"\uD83D\uDC50\",\n \"muscle\": \"\uD83D\uDCAA\",\n \"pray\": \"\uD83D\uDE4F\",\n \"foot\": \"\uD83E\uDDB6\",\n \"leg\": \"\uD83E\uDDB5\",\n \"handshake\": \"\uD83E\uDD1D\",\n \"point_up\": \"\u261D\",\n \"point_up_2\": \"\uD83D\uDC46\",\n \"point_down\": \"\uD83D\uDC47\",\n \"point_left\": \"\uD83D\uDC48\",\n \"point_right\": \"\uD83D\uDC49\",\n \"fu\": \"\uD83D\uDD95\",\n \"raised_hand_with_fingers_splayed\": \"\uD83D\uDD90\",\n \"love_you\": \"\uD83E\uDD1F\",\n \"metal\": \"\uD83E\uDD18\",\n \"crossed_fingers\": \"\uD83E\uDD1E\",\n \"vulcan_salute\": \"\uD83D\uDD96\",\n \"writing_hand\": \"\u270D\",\n \"selfie\": \"\uD83E\uDD33\",\n \"nail_care\": \"\uD83D\uDC85\",\n \"lips\": \"\uD83D\uDC44\",\n \"tooth\": \"\uD83E\uDDB7\",\n \"tongue\": \"\uD83D\uDC45\",\n \"ear\": \"\uD83D\uDC42\",\n \"nose\": \"\uD83D\uDC43\",\n \"eye\": \"\uD83D\uDC41\",\n \"eyes\": \"\uD83D\uDC40\",\n \"brain\": \"\uD83E\uDDE0\",\n \"bust_in_silhouette\": \"\uD83D\uDC64\",\n \"busts_in_silhouette\": \"\uD83D\uDC65\",\n \"speaking_head\": \"\uD83D\uDDE3\",\n \"baby\": \"\uD83D\uDC76\",\n \"child\": \"\uD83E\uDDD2\",\n \"boy\": \"\uD83D\uDC66\",\n \"girl\": \"\uD83D\uDC67\",\n \"adult\": \"\uD83E\uDDD1\",\n \"man\": \"\uD83D\uDC68\",\n \"woman\": \"\uD83D\uDC69\",\n \"blonde_woman\": \"\uD83D\uDC71\u200D\u2640\uFE0F\",\n \"blonde_man\": \"\uD83D\uDC71\",\n \"bearded_person\": \"\uD83E\uDDD4\",\n \"older_adult\": \"\uD83E\uDDD3\",\n \"older_man\": \"\uD83D\uDC74\",\n \"older_woman\": \"\uD83D\uDC75\",\n \"man_with_gua_pi_mao\": \"\uD83D\uDC72\",\n \"woman_with_headscarf\": \"\uD83E\uDDD5\",\n \"woman_with_turban\": \"\uD83D\uDC73\u200D\u2640\uFE0F\",\n \"man_with_turban\": \"\uD83D\uDC73\",\n \"policewoman\": \"\uD83D\uDC6E\u200D\u2640\uFE0F\",\n \"policeman\": \"\uD83D\uDC6E\",\n \"construction_worker_woman\": \"\uD83D\uDC77\u200D\u2640\uFE0F\",\n \"construction_worker_man\": \"\uD83D\uDC77\",\n \"guardswoman\": \"\uD83D\uDC82\u200D\u2640\uFE0F\",\n \"guardsman\": \"\uD83D\uDC82\",\n \"female_detective\": \"\uD83D\uDD75\uFE0F\u200D\u2640\uFE0F\",\n \"male_detective\": \"\uD83D\uDD75\",\n \"woman_health_worker\": \"\uD83D\uDC69\u200D\u2695\uFE0F\",\n \"man_health_worker\": \"\uD83D\uDC68\u200D\u2695\uFE0F\",\n \"woman_farmer\": \"\uD83D\uDC69\u200D\uD83C\uDF3E\",\n \"man_farmer\": \"\uD83D\uDC68\u200D\uD83C\uDF3E\",\n \"woman_cook\": \"\uD83D\uDC69\u200D\uD83C\uDF73\",\n \"man_cook\": \"\uD83D\uDC68\u200D\uD83C\uDF73\",\n \"woman_student\": \"\uD83D\uDC69\u200D\uD83C\uDF93\",\n \"man_student\": \"\uD83D\uDC68\u200D\uD83C\uDF93\",\n \"woman_singer\": \"\uD83D\uDC69\u200D\uD83C\uDFA4\",\n \"man_singer\": \"\uD83D\uDC68\u200D\uD83C\uDFA4\",\n \"woman_teacher\": \"\uD83D\uDC69\u200D\uD83C\uDFEB\",\n \"man_teacher\": \"\uD83D\uDC68\u200D\uD83C\uDFEB\",\n \"woman_factory_worker\": \"\uD83D\uDC69\u200D\uD83C\uDFED\",\n \"man_factory_worker\": \"\uD83D\uDC68\u200D\uD83C\uDFED\",\n \"woman_technologist\": \"\uD83D\uDC69\u200D\uD83D\uDCBB\",\n \"man_technologist\": \"\uD83D\uDC68\u200D\uD83D\uDCBB\",\n \"woman_office_worker\": \"\uD83D\uDC69\u200D\uD83D\uDCBC\",\n \"man_office_worker\": \"\uD83D\uDC68\u200D\uD83D\uDCBC\",\n \"woman_mechanic\": \"\uD83D\uDC69\u200D\uD83D\uDD27\",\n \"man_mechanic\": \"\uD83D\uDC68\u200D\uD83D\uDD27\",\n \"woman_scientist\": \"\uD83D\uDC69\u200D\uD83D\uDD2C\",\n \"man_scientist\": \"\uD83D\uDC68\u200D\uD83D\uDD2C\",\n \"woman_artist\": \"\uD83D\uDC69\u200D\uD83C\uDFA8\",\n \"man_artist\": \"\uD83D\uDC68\u200D\uD83C\uDFA8\",\n \"woman_firefighter\": \"\uD83D\uDC69\u200D\uD83D\uDE92\",\n \"man_firefighter\": \"\uD83D\uDC68\u200D\uD83D\uDE92\",\n \"woman_pilot\": \"\uD83D\uDC69\u200D\u2708\uFE0F\",\n \"man_pilot\": \"\uD83D\uDC68\u200D\u2708\uFE0F\",\n \"woman_astronaut\": \"\uD83D\uDC69\u200D\uD83D\uDE80\",\n \"man_astronaut\": \"\uD83D\uDC68\u200D\uD83D\uDE80\",\n \"woman_judge\": \"\uD83D\uDC69\u200D\u2696\uFE0F\",\n \"man_judge\": \"\uD83D\uDC68\u200D\u2696\uFE0F\",\n \"woman_superhero\": \"\uD83E\uDDB8\u200D\u2640\uFE0F\",\n \"man_superhero\": \"\uD83E\uDDB8\u200D\u2642\uFE0F\",\n \"woman_supervillain\": \"\uD83E\uDDB9\u200D\u2640\uFE0F\",\n \"man_supervillain\": \"\uD83E\uDDB9\u200D\u2642\uFE0F\",\n \"mrs_claus\": \"\uD83E\uDD36\",\n \"santa\": \"\uD83C\uDF85\",\n \"sorceress\": \"\uD83E\uDDD9\u200D\u2640\uFE0F\",\n \"wizard\": \"\uD83E\uDDD9\u200D\u2642\uFE0F\",\n \"woman_elf\": \"\uD83E\uDDDD\u200D\u2640\uFE0F\",\n \"man_elf\": \"\uD83E\uDDDD\u200D\u2642\uFE0F\",\n \"woman_vampire\": \"\uD83E\uDDDB\u200D\u2640\uFE0F\",\n \"man_vampire\": \"\uD83E\uDDDB\u200D\u2642\uFE0F\",\n \"woman_zombie\": \"\uD83E\uDDDF\u200D\u2640\uFE0F\",\n \"man_zombie\": \"\uD83E\uDDDF\u200D\u2642\uFE0F\",\n \"woman_genie\": \"\uD83E\uDDDE\u200D\u2640\uFE0F\",\n \"man_genie\": \"\uD83E\uDDDE\u200D\u2642\uFE0F\",\n \"mermaid\": \"\uD83E\uDDDC\u200D\u2640\uFE0F\",\n \"merman\": \"\uD83E\uDDDC\u200D\u2642\uFE0F\",\n \"woman_fairy\": \"\uD83E\uDDDA\u200D\u2640\uFE0F\",\n \"man_fairy\": \"\uD83E\uDDDA\u200D\u2642\uFE0F\",\n \"angel\": \"\uD83D\uDC7C\",\n \"pregnant_woman\": \"\uD83E\uDD30\",\n \"breastfeeding\": \"\uD83E\uDD31\",\n \"princess\": \"\uD83D\uDC78\",\n \"prince\": \"\uD83E\uDD34\",\n \"bride_with_veil\": \"\uD83D\uDC70\",\n \"man_in_tuxedo\": \"\uD83E\uDD35\",\n \"running_woman\": \"\uD83C\uDFC3\u200D\u2640\uFE0F\",\n \"running_man\": \"\uD83C\uDFC3\",\n \"walking_woman\": \"\uD83D\uDEB6\u200D\u2640\uFE0F\",\n \"walking_man\": \"\uD83D\uDEB6\",\n \"dancer\": \"\uD83D\uDC83\",\n \"man_dancing\": \"\uD83D\uDD7A\",\n \"dancing_women\": \"\uD83D\uDC6F\",\n \"dancing_men\": \"\uD83D\uDC6F\u200D\u2642\uFE0F\",\n \"couple\": \"\uD83D\uDC6B\",\n \"two_men_holding_hands\": \"\uD83D\uDC6C\",\n \"two_women_holding_hands\": \"\uD83D\uDC6D\",\n \"bowing_woman\": \"\uD83D\uDE47\u200D\u2640\uFE0F\",\n \"bowing_man\": \"\uD83D\uDE47\",\n \"man_facepalming\": \"\uD83E\uDD26\u200D\u2642\uFE0F\",\n \"woman_facepalming\": \"\uD83E\uDD26\u200D\u2640\uFE0F\",\n \"woman_shrugging\": \"\uD83E\uDD37\",\n \"man_shrugging\": \"\uD83E\uDD37\u200D\u2642\uFE0F\",\n \"tipping_hand_woman\": \"\uD83D\uDC81\",\n \"tipping_hand_man\": \"\uD83D\uDC81\u200D\u2642\uFE0F\",\n \"no_good_woman\": \"\uD83D\uDE45\",\n \"no_good_man\": \"\uD83D\uDE45\u200D\u2642\uFE0F\",\n \"ok_woman\": \"\uD83D\uDE46\",\n \"ok_man\": \"\uD83D\uDE46\u200D\u2642\uFE0F\",\n \"raising_hand_woman\": \"\uD83D\uDE4B\",\n \"raising_hand_man\": \"\uD83D\uDE4B\u200D\u2642\uFE0F\",\n \"pouting_woman\": \"\uD83D\uDE4E\",\n \"pouting_man\": \"\uD83D\uDE4E\u200D\u2642\uFE0F\",\n \"frowning_woman\": \"\uD83D\uDE4D\",\n \"frowning_man\": \"\uD83D\uDE4D\u200D\u2642\uFE0F\",\n \"haircut_woman\": \"\uD83D\uDC87\",\n \"haircut_man\": \"\uD83D\uDC87\u200D\u2642\uFE0F\",\n \"massage_woman\": \"\uD83D\uDC86\",\n \"massage_man\": \"\uD83D\uDC86\u200D\u2642\uFE0F\",\n \"woman_in_steamy_room\": \"\uD83E\uDDD6\u200D\u2640\uFE0F\",\n \"man_in_steamy_room\": \"\uD83E\uDDD6\u200D\u2642\uFE0F\",\n \"couple_with_heart_woman_man\": \"\uD83D\uDC91\",\n \"couple_with_heart_woman_woman\": \"\uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC69\",\n \"couple_with_heart_man_man\": \"\uD83D\uDC68\u200D\u2764\uFE0F\u200D\uD83D\uDC68\",\n \"couplekiss_man_woman\": \"\uD83D\uDC8F\",\n \"couplekiss_woman_woman\": \"\uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\",\n \"couplekiss_man_man\": \"\uD83D\uDC68\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\",\n \"family_man_woman_boy\": \"\uD83D\uDC6A\",\n \"family_man_woman_girl\": \"\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC67\",\n \"family_man_woman_girl_boy\": \"\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC66\",\n \"family_man_woman_boy_boy\": \"\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66\",\n \"family_man_woman_girl_girl\": \"\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC67\",\n \"family_woman_woman_boy\": \"\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC66\",\n \"family_woman_woman_girl\": \"\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC67\",\n \"family_woman_woman_girl_boy\": \"\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC66\",\n \"family_woman_woman_boy_boy\": \"\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66\",\n \"family_woman_woman_girl_girl\": \"\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC67\",\n \"family_man_man_boy\": \"\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC66\",\n \"family_man_man_girl\": \"\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC67\",\n \"family_man_man_girl_boy\": \"\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC67\u200D\uD83D\uDC66\",\n \"family_man_man_boy_boy\": \"\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC66\u200D\uD83D\uDC66\",\n \"family_man_man_girl_girl\": \"\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC67\u200D\uD83D\uDC67\",\n \"family_woman_boy\": \"\uD83D\uDC69\u200D\uD83D\uDC66\",\n \"family_woman_girl\": \"\uD83D\uDC69\u200D\uD83D\uDC67\",\n \"family_woman_girl_boy\": \"\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC66\",\n \"family_woman_boy_boy\": \"\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66\",\n \"family_woman_girl_girl\": \"\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC67\",\n \"family_man_boy\": \"\uD83D\uDC68\u200D\uD83D\uDC66\",\n \"family_man_girl\": \"\uD83D\uDC68\u200D\uD83D\uDC67\",\n \"family_man_girl_boy\": \"\uD83D\uDC68\u200D\uD83D\uDC67\u200D\uD83D\uDC66\",\n \"family_man_boy_boy\": \"\uD83D\uDC68\u200D\uD83D\uDC66\u200D\uD83D\uDC66\",\n \"family_man_girl_girl\": \"\uD83D\uDC68\u200D\uD83D\uDC67\u200D\uD83D\uDC67\",\n \"yarn\": \"\uD83E\uDDF6\",\n \"thread\": \"\uD83E\uDDF5\",\n \"coat\": \"\uD83E\uDDE5\",\n \"labcoat\": \"\uD83E\uDD7C\",\n \"womans_clothes\": \"\uD83D\uDC5A\",\n \"tshirt\": \"\uD83D\uDC55\",\n \"jeans\": \"\uD83D\uDC56\",\n \"necktie\": \"\uD83D\uDC54\",\n \"dress\": \"\uD83D\uDC57\",\n \"bikini\": \"\uD83D\uDC59\",\n \"kimono\": \"\uD83D\uDC58\",\n \"lipstick\": \"\uD83D\uDC84\",\n \"kiss\": \"\uD83D\uDC8B\",\n \"footprints\": \"\uD83D\uDC63\",\n \"flat_shoe\": \"\uD83E\uDD7F\",\n \"high_heel\": \"\uD83D\uDC60\",\n \"sandal\": \"\uD83D\uDC61\",\n \"boot\": \"\uD83D\uDC62\",\n \"mans_shoe\": \"\uD83D\uDC5E\",\n \"athletic_shoe\": \"\uD83D\uDC5F\",\n \"hiking_boot\": \"\uD83E\uDD7E\",\n \"socks\": \"\uD83E\uDDE6\",\n \"gloves\": \"\uD83E\uDDE4\",\n \"scarf\": \"\uD83E\uDDE3\",\n \"womans_hat\": \"\uD83D\uDC52\",\n \"tophat\": \"\uD83C\uDFA9\",\n \"billed_hat\": \"\uD83E\uDDE2\",\n \"rescue_worker_helmet\": \"\u26D1\",\n \"mortar_board\": \"\uD83C\uDF93\",\n \"crown\": \"\uD83D\uDC51\",\n \"school_satchel\": \"\uD83C\uDF92\",\n \"luggage\": \"\uD83E\uDDF3\",\n \"pouch\": \"\uD83D\uDC5D\",\n \"purse\": \"\uD83D\uDC5B\",\n \"handbag\": \"\uD83D\uDC5C\",\n \"briefcase\": \"\uD83D\uDCBC\",\n \"eyeglasses\": \"\uD83D\uDC53\",\n \"dark_sunglasses\": \"\uD83D\uDD76\",\n \"goggles\": \"\uD83E\uDD7D\",\n \"ring\": \"\uD83D\uDC8D\",\n \"closed_umbrella\": \"\uD83C\uDF02\",\n \"dog\": \"\uD83D\uDC36\",\n \"cat\": \"\uD83D\uDC31\",\n \"mouse\": \"\uD83D\uDC2D\",\n \"hamster\": \"\uD83D\uDC39\",\n \"rabbit\": \"\uD83D\uDC30\",\n \"fox_face\": \"\uD83E\uDD8A\",\n \"bear\": \"\uD83D\uDC3B\",\n \"panda_face\": \"\uD83D\uDC3C\",\n \"koala\": \"\uD83D\uDC28\",\n \"tiger\": \"\uD83D\uDC2F\",\n \"lion\": \"\uD83E\uDD81\",\n \"cow\": \"\uD83D\uDC2E\",\n \"pig\": \"\uD83D\uDC37\",\n \"pig_nose\": \"\uD83D\uDC3D\",\n \"frog\": \"\uD83D\uDC38\",\n \"squid\": \"\uD83E\uDD91\",\n \"octopus\": \"\uD83D\uDC19\",\n \"shrimp\": \"\uD83E\uDD90\",\n \"monkey_face\": \"\uD83D\uDC35\",\n \"gorilla\": \"\uD83E\uDD8D\",\n \"see_no_evil\": \"\uD83D\uDE48\",\n \"hear_no_evil\": \"\uD83D\uDE49\",\n \"speak_no_evil\": \"\uD83D\uDE4A\",\n \"monkey\": \"\uD83D\uDC12\",\n \"chicken\": \"\uD83D\uDC14\",\n \"penguin\": \"\uD83D\uDC27\",\n \"bird\": \"\uD83D\uDC26\",\n \"baby_chick\": \"\uD83D\uDC24\",\n \"hatching_chick\": \"\uD83D\uDC23\",\n \"hatched_chick\": \"\uD83D\uDC25\",\n \"duck\": \"\uD83E\uDD86\",\n \"eagle\": \"\uD83E\uDD85\",\n \"owl\": \"\uD83E\uDD89\",\n \"bat\": \"\uD83E\uDD87\",\n \"wolf\": \"\uD83D\uDC3A\",\n \"boar\": \"\uD83D\uDC17\",\n \"horse\": \"\uD83D\uDC34\",\n \"unicorn\": \"\uD83E\uDD84\",\n \"honeybee\": \"\uD83D\uDC1D\",\n \"bug\": \"\uD83D\uDC1B\",\n \"butterfly\": \"\uD83E\uDD8B\",\n \"snail\": \"\uD83D\uDC0C\",\n \"beetle\": \"\uD83D\uDC1E\",\n \"ant\": \"\uD83D\uDC1C\",\n \"grasshopper\": \"\uD83E\uDD97\",\n \"spider\": \"\uD83D\uDD77\",\n \"scorpion\": \"\uD83E\uDD82\",\n \"crab\": \"\uD83E\uDD80\",\n \"snake\": \"\uD83D\uDC0D\",\n \"lizard\": \"\uD83E\uDD8E\",\n \"t-rex\": \"\uD83E\uDD96\",\n \"sauropod\": \"\uD83E\uDD95\",\n \"turtle\": \"\uD83D\uDC22\",\n \"tropical_fish\": \"\uD83D\uDC20\",\n \"fish\": \"\uD83D\uDC1F\",\n \"blowfish\": \"\uD83D\uDC21\",\n \"dolphin\": \"\uD83D\uDC2C\",\n \"shark\": \"\uD83E\uDD88\",\n \"whale\": \"\uD83D\uDC33\",\n \"whale2\": \"\uD83D\uDC0B\",\n \"crocodile\": \"\uD83D\uDC0A\",\n \"leopard\": \"\uD83D\uDC06\",\n \"zebra\": \"\uD83E\uDD93\",\n \"tiger2\": \"\uD83D\uDC05\",\n \"water_buffalo\": \"\uD83D\uDC03\",\n \"ox\": \"\uD83D\uDC02\",\n \"cow2\": \"\uD83D\uDC04\",\n \"deer\": \"\uD83E\uDD8C\",\n \"dromedary_camel\": \"\uD83D\uDC2A\",\n \"camel\": \"\uD83D\uDC2B\",\n \"giraffe\": \"\uD83E\uDD92\",\n \"elephant\": \"\uD83D\uDC18\",\n \"rhinoceros\": \"\uD83E\uDD8F\",\n \"goat\": \"\uD83D\uDC10\",\n \"ram\": \"\uD83D\uDC0F\",\n \"sheep\": \"\uD83D\uDC11\",\n \"racehorse\": \"\uD83D\uDC0E\",\n \"pig2\": \"\uD83D\uDC16\",\n \"rat\": \"\uD83D\uDC00\",\n \"mouse2\": \"\uD83D\uDC01\",\n \"rooster\": \"\uD83D\uDC13\",\n \"turkey\": \"\uD83E\uDD83\",\n \"dove\": \"\uD83D\uDD4A\",\n \"dog2\": \"\uD83D\uDC15\",\n \"poodle\": \"\uD83D\uDC29\",\n \"cat2\": \"\uD83D\uDC08\",\n \"rabbit2\": \"\uD83D\uDC07\",\n \"chipmunk\": \"\uD83D\uDC3F\",\n \"hedgehog\": \"\uD83E\uDD94\",\n \"raccoon\": \"\uD83E\uDD9D\",\n \"llama\": \"\uD83E\uDD99\",\n \"hippopotamus\": \"\uD83E\uDD9B\",\n \"kangaroo\": \"\uD83E\uDD98\",\n \"badger\": \"\uD83E\uDDA1\",\n \"swan\": \"\uD83E\uDDA2\",\n \"peacock\": \"\uD83E\uDD9A\",\n \"parrot\": \"\uD83E\uDD9C\",\n \"lobster\": \"\uD83E\uDD9E\",\n \"mosquito\": \"\uD83E\uDD9F\",\n \"paw_prints\": \"\uD83D\uDC3E\",\n \"dragon\": \"\uD83D\uDC09\",\n \"dragon_face\": \"\uD83D\uDC32\",\n \"cactus\": \"\uD83C\uDF35\",\n \"christmas_tree\": \"\uD83C\uDF84\",\n \"evergreen_tree\": \"\uD83C\uDF32\",\n \"deciduous_tree\": \"\uD83C\uDF33\",\n \"palm_tree\": \"\uD83C\uDF34\",\n \"seedling\": \"\uD83C\uDF31\",\n \"herb\": \"\uD83C\uDF3F\",\n \"shamrock\": \"\u2618\",\n \"four_leaf_clover\": \"\uD83C\uDF40\",\n \"bamboo\": \"\uD83C\uDF8D\",\n \"tanabata_tree\": \"\uD83C\uDF8B\",\n \"leaves\": \"\uD83C\uDF43\",\n \"fallen_leaf\": \"\uD83C\uDF42\",\n \"maple_leaf\": \"\uD83C\uDF41\",\n \"ear_of_rice\": \"\uD83C\uDF3E\",\n \"hibiscus\": \"\uD83C\uDF3A\",\n \"sunflower\": \"\uD83C\uDF3B\",\n \"rose\": \"\uD83C\uDF39\",\n \"wilted_flower\": \"\uD83E\uDD40\",\n \"tulip\": \"\uD83C\uDF37\",\n \"blossom\": \"\uD83C\uDF3C\",\n \"cherry_blossom\": \"\uD83C\uDF38\",\n \"bouquet\": \"\uD83D\uDC90\",\n \"mushroom\": \"\uD83C\uDF44\",\n \"chestnut\": \"\uD83C\uDF30\",\n \"jack_o_lantern\": \"\uD83C\uDF83\",\n \"shell\": \"\uD83D\uDC1A\",\n \"spider_web\": \"\uD83D\uDD78\",\n \"earth_americas\": \"\uD83C\uDF0E\",\n \"earth_africa\": \"\uD83C\uDF0D\",\n \"earth_asia\": \"\uD83C\uDF0F\",\n \"full_moon\": \"\uD83C\uDF15\",\n \"waning_gibbous_moon\": \"\uD83C\uDF16\",\n \"last_quarter_moon\": \"\uD83C\uDF17\",\n \"waning_crescent_moon\": \"\uD83C\uDF18\",\n \"new_moon\": \"\uD83C\uDF11\",\n \"waxing_crescent_moon\": \"\uD83C\uDF12\",\n \"first_quarter_moon\": \"\uD83C\uDF13\",\n \"waxing_gibbous_moon\": \"\uD83C\uDF14\",\n \"new_moon_with_face\": \"\uD83C\uDF1A\",\n \"full_moon_with_face\": \"\uD83C\uDF1D\",\n \"first_quarter_moon_with_face\": \"\uD83C\uDF1B\",\n \"last_quarter_moon_with_face\": \"\uD83C\uDF1C\",\n \"sun_with_face\": \"\uD83C\uDF1E\",\n \"crescent_moon\": \"\uD83C\uDF19\",\n \"star\": \"\u2B50\",\n \"star2\": \"\uD83C\uDF1F\",\n \"dizzy\": \"\uD83D\uDCAB\",\n \"sparkles\": \"\u2728\",\n \"comet\": \"\u2604\",\n \"sunny\": \"\u2600\uFE0F\",\n \"sun_behind_small_cloud\": \"\uD83C\uDF24\",\n \"partly_sunny\": \"\u26C5\",\n \"sun_behind_large_cloud\": \"\uD83C\uDF25\",\n \"sun_behind_rain_cloud\": \"\uD83C\uDF26\",\n \"cloud\": \"\u2601\uFE0F\",\n \"cloud_with_rain\": \"\uD83C\uDF27\",\n \"cloud_with_lightning_and_rain\": \"\u26C8\",\n \"cloud_with_lightning\": \"\uD83C\uDF29\",\n \"zap\": \"\u26A1\",\n \"fire\": \"\uD83D\uDD25\",\n \"boom\": \"\uD83D\uDCA5\",\n \"snowflake\": \"\u2744\uFE0F\",\n \"cloud_with_snow\": \"\uD83C\uDF28\",\n \"snowman\": \"\u26C4\",\n \"snowman_with_snow\": \"\u2603\",\n \"wind_face\": \"\uD83C\uDF2C\",\n \"dash\": \"\uD83D\uDCA8\",\n \"tornado\": \"\uD83C\uDF2A\",\n \"fog\": \"\uD83C\uDF2B\",\n \"open_umbrella\": \"\u2602\",\n \"umbrella\": \"\u2614\",\n \"droplet\": \"\uD83D\uDCA7\",\n \"sweat_drops\": \"\uD83D\uDCA6\",\n \"ocean\": \"\uD83C\uDF0A\",\n \"green_apple\": \"\uD83C\uDF4F\",\n \"apple\": \"\uD83C\uDF4E\",\n \"pear\": \"\uD83C\uDF50\",\n \"tangerine\": \"\uD83C\uDF4A\",\n \"lemon\": \"\uD83C\uDF4B\",\n \"banana\": \"\uD83C\uDF4C\",\n \"watermelon\": \"\uD83C\uDF49\",\n \"grapes\": \"\uD83C\uDF47\",\n \"strawberry\": \"\uD83C\uDF53\",\n \"melon\": \"\uD83C\uDF48\",\n \"cherries\": \"\uD83C\uDF52\",\n \"peach\": \"\uD83C\uDF51\",\n \"pineapple\": \"\uD83C\uDF4D\",\n \"coconut\": \"\uD83E\uDD65\",\n \"kiwi_fruit\": \"\uD83E\uDD5D\",\n \"mango\": \"\uD83E\uDD6D\",\n \"avocado\": \"\uD83E\uDD51\",\n \"broccoli\": \"\uD83E\uDD66\",\n \"tomato\": \"\uD83C\uDF45\",\n \"eggplant\": \"\uD83C\uDF46\",\n \"cucumber\": \"\uD83E\uDD52\",\n \"carrot\": \"\uD83E\uDD55\",\n \"hot_pepper\": \"\uD83C\uDF36\",\n \"potato\": \"\uD83E\uDD54\",\n \"corn\": \"\uD83C\uDF3D\",\n \"leafy_greens\": \"\uD83E\uDD6C\",\n \"sweet_potato\": \"\uD83C\uDF60\",\n \"peanuts\": \"\uD83E\uDD5C\",\n \"honey_pot\": \"\uD83C\uDF6F\",\n \"croissant\": \"\uD83E\uDD50\",\n \"bread\": \"\uD83C\uDF5E\",\n \"baguette_bread\": \"\uD83E\uDD56\",\n \"bagel\": \"\uD83E\uDD6F\",\n \"pretzel\": \"\uD83E\uDD68\",\n \"cheese\": \"\uD83E\uDDC0\",\n \"egg\": \"\uD83E\uDD5A\",\n \"bacon\": \"\uD83E\uDD53\",\n \"steak\": \"\uD83E\uDD69\",\n \"pancakes\": \"\uD83E\uDD5E\",\n \"poultry_leg\": \"\uD83C\uDF57\",\n \"meat_on_bone\": \"\uD83C\uDF56\",\n \"bone\": \"\uD83E\uDDB4\",\n \"fried_shrimp\": \"\uD83C\uDF64\",\n \"fried_egg\": \"\uD83C\uDF73\",\n \"hamburger\": \"\uD83C\uDF54\",\n \"fries\": \"\uD83C\uDF5F\",\n \"stuffed_flatbread\": \"\uD83E\uDD59\",\n \"hotdog\": \"\uD83C\uDF2D\",\n \"pizza\": \"\uD83C\uDF55\",\n \"sandwich\": \"\uD83E\uDD6A\",\n \"canned_food\": \"\uD83E\uDD6B\",\n \"spaghetti\": \"\uD83C\uDF5D\",\n \"taco\": \"\uD83C\uDF2E\",\n \"burrito\": \"\uD83C\uDF2F\",\n \"green_salad\": \"\uD83E\uDD57\",\n \"shallow_pan_of_food\": \"\uD83E\uDD58\",\n \"ramen\": \"\uD83C\uDF5C\",\n \"stew\": \"\uD83C\uDF72\",\n \"fish_cake\": \"\uD83C\uDF65\",\n \"fortune_cookie\": \"\uD83E\uDD60\",\n \"sushi\": \"\uD83C\uDF63\",\n \"bento\": \"\uD83C\uDF71\",\n \"curry\": \"\uD83C\uDF5B\",\n \"rice_ball\": \"\uD83C\uDF59\",\n \"rice\": \"\uD83C\uDF5A\",\n \"rice_cracker\": \"\uD83C\uDF58\",\n \"oden\": \"\uD83C\uDF62\",\n \"dango\": \"\uD83C\uDF61\",\n \"shaved_ice\": \"\uD83C\uDF67\",\n \"ice_cream\": \"\uD83C\uDF68\",\n \"icecream\": \"\uD83C\uDF66\",\n \"pie\": \"\uD83E\uDD67\",\n \"cake\": \"\uD83C\uDF70\",\n \"cupcake\": \"\uD83E\uDDC1\",\n \"moon_cake\": \"\uD83E\uDD6E\",\n \"birthday\": \"\uD83C\uDF82\",\n \"custard\": \"\uD83C\uDF6E\",\n \"candy\": \"\uD83C\uDF6C\",\n \"lollipop\": \"\uD83C\uDF6D\",\n \"chocolate_bar\": \"\uD83C\uDF6B\",\n \"popcorn\": \"\uD83C\uDF7F\",\n \"dumpling\": \"\uD83E\uDD5F\",\n \"doughnut\": \"\uD83C\uDF69\",\n \"cookie\": \"\uD83C\uDF6A\",\n \"milk_glass\": \"\uD83E\uDD5B\",\n \"beer\": \"\uD83C\uDF7A\",\n \"beers\": \"\uD83C\uDF7B\",\n \"clinking_glasses\": \"\uD83E\uDD42\",\n \"wine_glass\": \"\uD83C\uDF77\",\n \"tumbler_glass\": \"\uD83E\uDD43\",\n \"cocktail\": \"\uD83C\uDF78\",\n \"tropical_drink\": \"\uD83C\uDF79\",\n \"champagne\": \"\uD83C\uDF7E\",\n \"sake\": \"\uD83C\uDF76\",\n \"tea\": \"\uD83C\uDF75\",\n \"cup_with_straw\": \"\uD83E\uDD64\",\n \"coffee\": \"\u2615\",\n \"baby_bottle\": \"\uD83C\uDF7C\",\n \"salt\": \"\uD83E\uDDC2\",\n \"spoon\": \"\uD83E\uDD44\",\n \"fork_and_knife\": \"\uD83C\uDF74\",\n \"plate_with_cutlery\": \"\uD83C\uDF7D\",\n \"bowl_with_spoon\": \"\uD83E\uDD63\",\n \"takeout_box\": \"\uD83E\uDD61\",\n \"chopsticks\": \"\uD83E\uDD62\",\n \"soccer\": \"\u26BD\",\n \"basketball\": \"\uD83C\uDFC0\",\n \"football\": \"\uD83C\uDFC8\",\n \"baseball\": \"\u26BE\",\n \"softball\": \"\uD83E\uDD4E\",\n \"tennis\": \"\uD83C\uDFBE\",\n \"volleyball\": \"\uD83C\uDFD0\",\n \"rugby_football\": \"\uD83C\uDFC9\",\n \"flying_disc\": \"\uD83E\uDD4F\",\n \"8ball\": \"\uD83C\uDFB1\",\n \"golf\": \"\u26F3\",\n \"golfing_woman\": \"\uD83C\uDFCC\uFE0F\u200D\u2640\uFE0F\",\n \"golfing_man\": \"\uD83C\uDFCC\",\n \"ping_pong\": \"\uD83C\uDFD3\",\n \"badminton\": \"\uD83C\uDFF8\",\n \"goal_net\": \"\uD83E\uDD45\",\n \"ice_hockey\": \"\uD83C\uDFD2\",\n \"field_hockey\": \"\uD83C\uDFD1\",\n \"lacrosse\": \"\uD83E\uDD4D\",\n \"cricket\": \"\uD83C\uDFCF\",\n \"ski\": \"\uD83C\uDFBF\",\n \"skier\": \"\u26F7\",\n \"snowboarder\": \"\uD83C\uDFC2\",\n \"person_fencing\": \"\uD83E\uDD3A\",\n \"women_wrestling\": \"\uD83E\uDD3C\u200D\u2640\uFE0F\",\n \"men_wrestling\": \"\uD83E\uDD3C\u200D\u2642\uFE0F\",\n \"woman_cartwheeling\": \"\uD83E\uDD38\u200D\u2640\uFE0F\",\n \"man_cartwheeling\": \"\uD83E\uDD38\u200D\u2642\uFE0F\",\n \"woman_playing_handball\": \"\uD83E\uDD3E\u200D\u2640\uFE0F\",\n \"man_playing_handball\": \"\uD83E\uDD3E\u200D\u2642\uFE0F\",\n \"ice_skate\": \"\u26F8\",\n \"curling_stone\": \"\uD83E\uDD4C\",\n \"skateboard\": \"\uD83D\uDEF9\",\n \"sled\": \"\uD83D\uDEF7\",\n \"bow_and_arrow\": \"\uD83C\uDFF9\",\n \"fishing_pole_and_fish\": \"\uD83C\uDFA3\",\n \"boxing_glove\": \"\uD83E\uDD4A\",\n \"martial_arts_uniform\": \"\uD83E\uDD4B\",\n \"rowing_woman\": \"\uD83D\uDEA3\u200D\u2640\uFE0F\",\n \"rowing_man\": \"\uD83D\uDEA3\",\n \"climbing_woman\": \"\uD83E\uDDD7\u200D\u2640\uFE0F\",\n \"climbing_man\": \"\uD83E\uDDD7\u200D\u2642\uFE0F\",\n \"swimming_woman\": \"\uD83C\uDFCA\u200D\u2640\uFE0F\",\n \"swimming_man\": \"\uD83C\uDFCA\",\n \"woman_playing_water_polo\": \"\uD83E\uDD3D\u200D\u2640\uFE0F\",\n \"man_playing_water_polo\": \"\uD83E\uDD3D\u200D\u2642\uFE0F\",\n \"woman_in_lotus_position\": \"\uD83E\uDDD8\u200D\u2640\uFE0F\",\n \"man_in_lotus_position\": \"\uD83E\uDDD8\u200D\u2642\uFE0F\",\n \"surfing_woman\": \"\uD83C\uDFC4\u200D\u2640\uFE0F\",\n \"surfing_man\": \"\uD83C\uDFC4\",\n \"bath\": \"\uD83D\uDEC0\",\n \"basketball_woman\": \"\u26F9\uFE0F\u200D\u2640\uFE0F\",\n \"basketball_man\": \"\u26F9\",\n \"weight_lifting_woman\": \"\uD83C\uDFCB\uFE0F\u200D\u2640\uFE0F\",\n \"weight_lifting_man\": \"\uD83C\uDFCB\",\n \"biking_woman\": \"\uD83D\uDEB4\u200D\u2640\uFE0F\",\n \"biking_man\": \"\uD83D\uDEB4\",\n \"mountain_biking_woman\": \"\uD83D\uDEB5\u200D\u2640\uFE0F\",\n \"mountain_biking_man\": \"\uD83D\uDEB5\",\n \"horse_racing\": \"\uD83C\uDFC7\",\n \"business_suit_levitating\": \"\uD83D\uDD74\",\n \"trophy\": \"\uD83C\uDFC6\",\n \"running_shirt_with_sash\": \"\uD83C\uDFBD\",\n \"medal_sports\": \"\uD83C\uDFC5\",\n \"medal_military\": \"\uD83C\uDF96\",\n \"1st_place_medal\": \"\uD83E\uDD47\",\n \"2nd_place_medal\": \"\uD83E\uDD48\",\n \"3rd_place_medal\": \"\uD83E\uDD49\",\n \"reminder_ribbon\": \"\uD83C\uDF97\",\n \"rosette\": \"\uD83C\uDFF5\",\n \"ticket\": \"\uD83C\uDFAB\",\n \"tickets\": \"\uD83C\uDF9F\",\n \"performing_arts\": \"\uD83C\uDFAD\",\n \"art\": \"\uD83C\uDFA8\",\n \"circus_tent\": \"\uD83C\uDFAA\",\n \"woman_juggling\": \"\uD83E\uDD39\u200D\u2640\uFE0F\",\n \"man_juggling\": \"\uD83E\uDD39\u200D\u2642\uFE0F\",\n \"microphone\": \"\uD83C\uDFA4\",\n \"headphones\": \"\uD83C\uDFA7\",\n \"musical_score\": \"\uD83C\uDFBC\",\n \"musical_keyboard\": \"\uD83C\uDFB9\",\n \"drum\": \"\uD83E\uDD41\",\n \"saxophone\": \"\uD83C\uDFB7\",\n \"trumpet\": \"\uD83C\uDFBA\",\n \"guitar\": \"\uD83C\uDFB8\",\n \"violin\": \"\uD83C\uDFBB\",\n \"clapper\": \"\uD83C\uDFAC\",\n \"video_game\": \"\uD83C\uDFAE\",\n \"space_invader\": \"\uD83D\uDC7E\",\n \"dart\": \"\uD83C\uDFAF\",\n \"game_die\": \"\uD83C\uDFB2\",\n \"chess_pawn\": \"\u265F\",\n \"slot_machine\": \"\uD83C\uDFB0\",\n \"jigsaw\": \"\uD83E\uDDE9\",\n \"bowling\": \"\uD83C\uDFB3\",\n \"red_car\": \"\uD83D\uDE97\",\n \"taxi\": \"\uD83D\uDE95\",\n \"blue_car\": \"\uD83D\uDE99\",\n \"bus\": \"\uD83D\uDE8C\",\n \"trolleybus\": \"\uD83D\uDE8E\",\n \"racing_car\": \"\uD83C\uDFCE\",\n \"police_car\": \"\uD83D\uDE93\",\n \"ambulance\": \"\uD83D\uDE91\",\n \"fire_engine\": \"\uD83D\uDE92\",\n \"minibus\": \"\uD83D\uDE90\",\n \"truck\": \"\uD83D\uDE9A\",\n \"articulated_lorry\": \"\uD83D\uDE9B\",\n \"tractor\": \"\uD83D\uDE9C\",\n \"kick_scooter\": \"\uD83D\uDEF4\",\n \"motorcycle\": \"\uD83C\uDFCD\",\n \"bike\": \"\uD83D\uDEB2\",\n \"motor_scooter\": \"\uD83D\uDEF5\",\n \"rotating_light\": \"\uD83D\uDEA8\",\n \"oncoming_police_car\": \"\uD83D\uDE94\",\n \"oncoming_bus\": \"\uD83D\uDE8D\",\n \"oncoming_automobile\": \"\uD83D\uDE98\",\n \"oncoming_taxi\": \"\uD83D\uDE96\",\n \"aerial_tramway\": \"\uD83D\uDEA1\",\n \"mountain_cableway\": \"\uD83D\uDEA0\",\n \"suspension_railway\": \"\uD83D\uDE9F\",\n \"railway_car\": \"\uD83D\uDE83\",\n \"train\": \"\uD83D\uDE8B\",\n \"monorail\": \"\uD83D\uDE9D\",\n \"bullettrain_side\": \"\uD83D\uDE84\",\n \"bullettrain_front\": \"\uD83D\uDE85\",\n \"light_rail\": \"\uD83D\uDE88\",\n \"mountain_railway\": \"\uD83D\uDE9E\",\n \"steam_locomotive\": \"\uD83D\uDE82\",\n \"train2\": \"\uD83D\uDE86\",\n \"metro\": \"\uD83D\uDE87\",\n \"tram\": \"\uD83D\uDE8A\",\n \"station\": \"\uD83D\uDE89\",\n \"flying_saucer\": \"\uD83D\uDEF8\",\n \"helicopter\": \"\uD83D\uDE81\",\n \"small_airplane\": \"\uD83D\uDEE9\",\n \"airplane\": \"\u2708\uFE0F\",\n \"flight_departure\": \"\uD83D\uDEEB\",\n \"flight_arrival\": \"\uD83D\uDEEC\",\n \"sailboat\": \"\u26F5\",\n \"motor_boat\": \"\uD83D\uDEE5\",\n \"speedboat\": \"\uD83D\uDEA4\",\n \"ferry\": \"\u26F4\",\n \"passenger_ship\": \"\uD83D\uDEF3\",\n \"rocket\": \"\uD83D\uDE80\",\n \"artificial_satellite\": \"\uD83D\uDEF0\",\n \"seat\": \"\uD83D\uDCBA\",\n \"canoe\": \"\uD83D\uDEF6\",\n \"anchor\": \"\u2693\",\n \"construction\": \"\uD83D\uDEA7\",\n \"fuelpump\": \"\u26FD\",\n \"busstop\": \"\uD83D\uDE8F\",\n \"vertical_traffic_light\": \"\uD83D\uDEA6\",\n \"traffic_light\": \"\uD83D\uDEA5\",\n \"checkered_flag\": \"\uD83C\uDFC1\",\n \"ship\": \"\uD83D\uDEA2\",\n \"ferris_wheel\": \"\uD83C\uDFA1\",\n \"roller_coaster\": \"\uD83C\uDFA2\",\n \"carousel_horse\": \"\uD83C\uDFA0\",\n \"building_construction\": \"\uD83C\uDFD7\",\n \"foggy\": \"\uD83C\uDF01\",\n \"tokyo_tower\": \"\uD83D\uDDFC\",\n \"factory\": \"\uD83C\uDFED\",\n \"fountain\": \"\u26F2\",\n \"rice_scene\": \"\uD83C\uDF91\",\n \"mountain\": \"\u26F0\",\n \"mountain_snow\": \"\uD83C\uDFD4\",\n \"mount_fuji\": \"\uD83D\uDDFB\",\n \"volcano\": \"\uD83C\uDF0B\",\n \"japan\": \"\uD83D\uDDFE\",\n \"camping\": \"\uD83C\uDFD5\",\n \"tent\": \"\u26FA\",\n \"national_park\": \"\uD83C\uDFDE\",\n \"motorway\": \"\uD83D\uDEE3\",\n \"railway_track\": \"\uD83D\uDEE4\",\n \"sunrise\": \"\uD83C\uDF05\",\n \"sunrise_over_mountains\": \"\uD83C\uDF04\",\n \"desert\": \"\uD83C\uDFDC\",\n \"beach_umbrella\": \"\uD83C\uDFD6\",\n \"desert_island\": \"\uD83C\uDFDD\",\n \"city_sunrise\": \"\uD83C\uDF07\",\n \"city_sunset\": \"\uD83C\uDF06\",\n \"cityscape\": \"\uD83C\uDFD9\",\n \"night_with_stars\": \"\uD83C\uDF03\",\n \"bridge_at_night\": \"\uD83C\uDF09\",\n \"milky_way\": \"\uD83C\uDF0C\",\n \"stars\": \"\uD83C\uDF20\",\n \"sparkler\": \"\uD83C\uDF87\",\n \"fireworks\": \"\uD83C\uDF86\",\n \"rainbow\": \"\uD83C\uDF08\",\n \"houses\": \"\uD83C\uDFD8\",\n \"european_castle\": \"\uD83C\uDFF0\",\n \"japanese_castle\": \"\uD83C\uDFEF\",\n \"stadium\": \"\uD83C\uDFDF\",\n \"statue_of_liberty\": \"\uD83D\uDDFD\",\n \"house\": \"\uD83C\uDFE0\",\n \"house_with_garden\": \"\uD83C\uDFE1\",\n \"derelict_house\": \"\uD83C\uDFDA\",\n \"office\": \"\uD83C\uDFE2\",\n \"department_store\": \"\uD83C\uDFEC\",\n \"post_office\": \"\uD83C\uDFE3\",\n \"european_post_office\": \"\uD83C\uDFE4\",\n \"hospital\": \"\uD83C\uDFE5\",\n \"bank\": \"\uD83C\uDFE6\",\n \"hotel\": \"\uD83C\uDFE8\",\n \"convenience_store\": \"\uD83C\uDFEA\",\n \"school\": \"\uD83C\uDFEB\",\n \"love_hotel\": \"\uD83C\uDFE9\",\n \"wedding\": \"\uD83D\uDC92\",\n \"classical_building\": \"\uD83C\uDFDB\",\n \"church\": \"\u26EA\",\n \"mosque\": \"\uD83D\uDD4C\",\n \"synagogue\": \"\uD83D\uDD4D\",\n \"kaaba\": \"\uD83D\uDD4B\",\n \"shinto_shrine\": \"\u26E9\",\n \"watch\": \"\u231A\",\n \"iphone\": \"\uD83D\uDCF1\",\n \"calling\": \"\uD83D\uDCF2\",\n \"computer\": \"\uD83D\uDCBB\",\n \"keyboard\": \"\u2328\",\n \"desktop_computer\": \"\uD83D\uDDA5\",\n \"printer\": \"\uD83D\uDDA8\",\n \"computer_mouse\": \"\uD83D\uDDB1\",\n \"trackball\": \"\uD83D\uDDB2\",\n \"joystick\": \"\uD83D\uDD79\",\n \"clamp\": \"\uD83D\uDDDC\",\n \"minidisc\": \"\uD83D\uDCBD\",\n \"floppy_disk\": \"\uD83D\uDCBE\",\n \"cd\": \"\uD83D\uDCBF\",\n \"dvd\": \"\uD83D\uDCC0\",\n \"vhs\": \"\uD83D\uDCFC\",\n \"camera\": \"\uD83D\uDCF7\",\n \"camera_flash\": \"\uD83D\uDCF8\",\n \"video_camera\": \"\uD83D\uDCF9\",\n \"movie_camera\": \"\uD83C\uDFA5\",\n \"film_projector\": \"\uD83D\uDCFD\",\n \"film_strip\": \"\uD83C\uDF9E\",\n \"telephone_receiver\": \"\uD83D\uDCDE\",\n \"phone\": \"\u260E\uFE0F\",\n \"pager\": \"\uD83D\uDCDF\",\n \"fax\": \"\uD83D\uDCE0\",\n \"tv\": \"\uD83D\uDCFA\",\n \"radio\": \"\uD83D\uDCFB\",\n \"studio_microphone\": \"\uD83C\uDF99\",\n \"level_slider\": \"\uD83C\uDF9A\",\n \"control_knobs\": \"\uD83C\uDF9B\",\n \"compass\": \"\uD83E\uDDED\",\n \"stopwatch\": \"\u23F1\",\n \"timer_clock\": \"\u23F2\",\n \"alarm_clock\": \"\u23F0\",\n \"mantelpiece_clock\": \"\uD83D\uDD70\",\n \"hourglass_flowing_sand\": \"\u23F3\",\n \"hourglass\": \"\u231B\",\n \"satellite\": \"\uD83D\uDCE1\",\n \"battery\": \"\uD83D\uDD0B\",\n \"electric_plug\": \"\uD83D\uDD0C\",\n \"bulb\": \"\uD83D\uDCA1\",\n \"flashlight\": \"\uD83D\uDD26\",\n \"candle\": \"\uD83D\uDD6F\",\n \"fire_extinguisher\": \"\uD83E\uDDEF\",\n \"wastebasket\": \"\uD83D\uDDD1\",\n \"oil_drum\": \"\uD83D\uDEE2\",\n \"money_with_wings\": \"\uD83D\uDCB8\",\n \"dollar\": \"\uD83D\uDCB5\",\n \"yen\": \"\uD83D\uDCB4\",\n \"euro\": \"\uD83D\uDCB6\",\n \"pound\": \"\uD83D\uDCB7\",\n \"moneybag\": \"\uD83D\uDCB0\",\n \"credit_card\": \"\uD83D\uDCB3\",\n \"gem\": \"\uD83D\uDC8E\",\n \"balance_scale\": \"\u2696\",\n \"toolbox\": \"\uD83E\uDDF0\",\n \"wrench\": \"\uD83D\uDD27\",\n \"hammer\": \"\uD83D\uDD28\",\n \"hammer_and_pick\": \"\u2692\",\n \"hammer_and_wrench\": \"\uD83D\uDEE0\",\n \"pick\": \"\u26CF\",\n \"nut_and_bolt\": \"\uD83D\uDD29\",\n \"gear\": \"\u2699\",\n \"brick\": \"\uD83E\uDDF1\",\n \"chains\": \"\u26D3\",\n \"magnet\": \"\uD83E\uDDF2\",\n \"gun\": \"\uD83D\uDD2B\",\n \"bomb\": \"\uD83D\uDCA3\",\n \"firecracker\": \"\uD83E\uDDE8\",\n \"hocho\": \"\uD83D\uDD2A\",\n \"dagger\": \"\uD83D\uDDE1\",\n \"crossed_swords\": \"\u2694\",\n \"shield\": \"\uD83D\uDEE1\",\n \"smoking\": \"\uD83D\uDEAC\",\n \"skull_and_crossbones\": \"\u2620\",\n \"coffin\": \"\u26B0\",\n \"funeral_urn\": \"\u26B1\",\n \"amphora\": \"\uD83C\uDFFA\",\n \"crystal_ball\": \"\uD83D\uDD2E\",\n \"prayer_beads\": \"\uD83D\uDCFF\",\n \"nazar_amulet\": \"\uD83E\uDDFF\",\n \"barber\": \"\uD83D\uDC88\",\n \"alembic\": \"\u2697\",\n \"telescope\": \"\uD83D\uDD2D\",\n \"microscope\": \"\uD83D\uDD2C\",\n \"hole\": \"\uD83D\uDD73\",\n \"pill\": \"\uD83D\uDC8A\",\n \"syringe\": \"\uD83D\uDC89\",\n \"dna\": \"\uD83E\uDDEC\",\n \"microbe\": \"\uD83E\uDDA0\",\n \"petri_dish\": \"\uD83E\uDDEB\",\n \"test_tube\": \"\uD83E\uDDEA\",\n \"thermometer\": \"\uD83C\uDF21\",\n \"broom\": \"\uD83E\uDDF9\",\n \"basket\": \"\uD83E\uDDFA\",\n \"toilet_paper\": \"\uD83E\uDDFB\",\n \"label\": \"\uD83C\uDFF7\",\n \"bookmark\": \"\uD83D\uDD16\",\n \"toilet\": \"\uD83D\uDEBD\",\n \"shower\": \"\uD83D\uDEBF\",\n \"bathtub\": \"\uD83D\uDEC1\",\n \"soap\": \"\uD83E\uDDFC\",\n \"sponge\": \"\uD83E\uDDFD\",\n \"lotion_bottle\": \"\uD83E\uDDF4\",\n \"key\": \"\uD83D\uDD11\",\n \"old_key\": \"\uD83D\uDDDD\",\n \"couch_and_lamp\": \"\uD83D\uDECB\",\n \"sleeping_bed\": \"\uD83D\uDECC\",\n \"bed\": \"\uD83D\uDECF\",\n \"door\": \"\uD83D\uDEAA\",\n \"bellhop_bell\": \"\uD83D\uDECE\",\n \"teddy_bear\": \"\uD83E\uDDF8\",\n \"framed_picture\": \"\uD83D\uDDBC\",\n \"world_map\": \"\uD83D\uDDFA\",\n \"parasol_on_ground\": \"\u26F1\",\n \"moyai\": \"\uD83D\uDDFF\",\n \"shopping\": \"\uD83D\uDECD\",\n \"shopping_cart\": \"\uD83D\uDED2\",\n \"balloon\": \"\uD83C\uDF88\",\n \"flags\": \"\uD83C\uDF8F\",\n \"ribbon\": \"\uD83C\uDF80\",\n \"gift\": \"\uD83C\uDF81\",\n \"confetti_ball\": \"\uD83C\uDF8A\",\n \"tada\": \"\uD83C\uDF89\",\n \"dolls\": \"\uD83C\uDF8E\",\n \"wind_chime\": \"\uD83C\uDF90\",\n \"crossed_flags\": \"\uD83C\uDF8C\",\n \"izakaya_lantern\": \"\uD83C\uDFEE\",\n \"red_envelope\": \"\uD83E\uDDE7\",\n \"email\": \"\u2709\uFE0F\",\n \"envelope_with_arrow\": \"\uD83D\uDCE9\",\n \"incoming_envelope\": \"\uD83D\uDCE8\",\n \"e-mail\": \"\uD83D\uDCE7\",\n \"love_letter\": \"\uD83D\uDC8C\",\n \"postbox\": \"\uD83D\uDCEE\",\n \"mailbox_closed\": \"\uD83D\uDCEA\",\n \"mailbox\": \"\uD83D\uDCEB\",\n \"mailbox_with_mail\": \"\uD83D\uDCEC\",\n \"mailbox_with_no_mail\": \"\uD83D\uDCED\",\n \"package\": \"\uD83D\uDCE6\",\n \"postal_horn\": \"\uD83D\uDCEF\",\n \"inbox_tray\": \"\uD83D\uDCE5\",\n \"outbox_tray\": \"\uD83D\uDCE4\",\n \"scroll\": \"\uD83D\uDCDC\",\n \"page_with_curl\": \"\uD83D\uDCC3\",\n \"bookmark_tabs\": \"\uD83D\uDCD1\",\n \"receipt\": \"\uD83E\uDDFE\",\n \"bar_chart\": \"\uD83D\uDCCA\",\n \"chart_with_upwards_trend\": \"\uD83D\uDCC8\",\n \"chart_with_downwards_trend\": \"\uD83D\uDCC9\",\n \"page_facing_up\": \"\uD83D\uDCC4\",\n \"date\": \"\uD83D\uDCC5\",\n \"calendar\": \"\uD83D\uDCC6\",\n \"spiral_calendar\": \"\uD83D\uDDD3\",\n \"card_index\": \"\uD83D\uDCC7\",\n \"card_file_box\": \"\uD83D\uDDC3\",\n \"ballot_box\": \"\uD83D\uDDF3\",\n \"file_cabinet\": \"\uD83D\uDDC4\",\n \"clipboard\": \"\uD83D\uDCCB\",\n \"spiral_notepad\": \"\uD83D\uDDD2\",\n \"file_folder\": \"\uD83D\uDCC1\",\n \"open_file_folder\": \"\uD83D\uDCC2\",\n \"card_index_dividers\": \"\uD83D\uDDC2\",\n \"newspaper_roll\": \"\uD83D\uDDDE\",\n \"newspaper\": \"\uD83D\uDCF0\",\n \"notebook\": \"\uD83D\uDCD3\",\n \"closed_book\": \"\uD83D\uDCD5\",\n \"green_book\": \"\uD83D\uDCD7\",\n \"blue_book\": \"\uD83D\uDCD8\",\n \"orange_book\": \"\uD83D\uDCD9\",\n \"notebook_with_decorative_cover\": \"\uD83D\uDCD4\",\n \"ledger\": \"\uD83D\uDCD2\",\n \"books\": \"\uD83D\uDCDA\",\n \"open_book\": \"\uD83D\uDCD6\",\n \"safety_pin\": \"\uD83E\uDDF7\",\n \"link\": \"\uD83D\uDD17\",\n \"paperclip\": \"\uD83D\uDCCE\",\n \"paperclips\": \"\uD83D\uDD87\",\n \"scissors\": \"\u2702\uFE0F\",\n \"triangular_ruler\": \"\uD83D\uDCD0\",\n \"straight_ruler\": \"\uD83D\uDCCF\",\n \"abacus\": \"\uD83E\uDDEE\",\n \"pushpin\": \"\uD83D\uDCCC\",\n \"round_pushpin\": \"\uD83D\uDCCD\",\n \"triangular_flag_on_post\": \"\uD83D\uDEA9\",\n \"white_flag\": \"\uD83C\uDFF3\",\n \"black_flag\": \"\uD83C\uDFF4\",\n \"rainbow_flag\": \"\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08\",\n \"closed_lock_with_key\": \"\uD83D\uDD10\",\n \"lock\": \"\uD83D\uDD12\",\n \"unlock\": \"\uD83D\uDD13\",\n \"lock_with_ink_pen\": \"\uD83D\uDD0F\",\n \"pen\": \"\uD83D\uDD8A\",\n \"fountain_pen\": \"\uD83D\uDD8B\",\n \"black_nib\": \"\u2712\uFE0F\",\n \"memo\": \"\uD83D\uDCDD\",\n \"pencil2\": \"\u270F\uFE0F\",\n \"crayon\": \"\uD83D\uDD8D\",\n \"paintbrush\": \"\uD83D\uDD8C\",\n \"mag\": \"\uD83D\uDD0D\",\n \"mag_right\": \"\uD83D\uDD0E\",\n \"heart\": \"\u2764\uFE0F\",\n \"orange_heart\": \"\uD83E\uDDE1\",\n \"yellow_heart\": \"\uD83D\uDC9B\",\n \"green_heart\": \"\uD83D\uDC9A\",\n \"blue_heart\": \"\uD83D\uDC99\",\n \"purple_heart\": \"\uD83D\uDC9C\",\n \"black_heart\": \"\uD83D\uDDA4\",\n \"broken_heart\": \"\uD83D\uDC94\",\n \"heavy_heart_exclamation\": \"\u2763\",\n \"two_hearts\": \"\uD83D\uDC95\",\n \"revolving_hearts\": \"\uD83D\uDC9E\",\n \"heartbeat\": \"\uD83D\uDC93\",\n \"heartpulse\": \"\uD83D\uDC97\",\n \"sparkling_heart\": \"\uD83D\uDC96\",\n \"cupid\": \"\uD83D\uDC98\",\n \"gift_heart\": \"\uD83D\uDC9D\",\n \"heart_decoration\": \"\uD83D\uDC9F\",\n \"peace_symbol\": \"\u262E\",\n \"latin_cross\": \"\u271D\",\n \"star_and_crescent\": \"\u262A\",\n \"om\": \"\uD83D\uDD49\",\n \"wheel_of_dharma\": \"\u2638\",\n \"star_of_david\": \"\u2721\",\n \"six_pointed_star\": \"\uD83D\uDD2F\",\n \"menorah\": \"\uD83D\uDD4E\",\n \"yin_yang\": \"\u262F\",\n \"orthodox_cross\": \"\u2626\",\n \"place_of_worship\": \"\uD83D\uDED0\",\n \"ophiuchus\": \"\u26CE\",\n \"aries\": \"\u2648\",\n \"taurus\": \"\u2649\",\n \"gemini\": \"\u264A\",\n \"cancer\": \"\u264B\",\n \"leo\": \"\u264C\",\n \"virgo\": \"\u264D\",\n \"libra\": \"\u264E\",\n \"scorpius\": \"\u264F\",\n \"sagittarius\": \"\u2650\",\n \"capricorn\": \"\u2651\",\n \"aquarius\": \"\u2652\",\n \"pisces\": \"\u2653\",\n \"id\": \"\uD83C\uDD94\",\n \"atom_symbol\": \"\u269B\",\n \"u7a7a\": \"\uD83C\uDE33\",\n \"u5272\": \"\uD83C\uDE39\",\n \"radioactive\": \"\u2622\",\n \"biohazard\": \"\u2623\",\n \"mobile_phone_off\": \"\uD83D\uDCF4\",\n \"vibration_mode\": \"\uD83D\uDCF3\",\n \"u6709\": \"\uD83C\uDE36\",\n \"u7121\": \"\uD83C\uDE1A\",\n \"u7533\": \"\uD83C\uDE38\",\n \"u55b6\": \"\uD83C\uDE3A\",\n \"u6708\": \"\uD83C\uDE37\uFE0F\",\n \"eight_pointed_black_star\": \"\u2734\uFE0F\",\n \"vs\": \"\uD83C\uDD9A\",\n \"accept\": \"\uD83C\uDE51\",\n \"white_flower\": \"\uD83D\uDCAE\",\n \"ideograph_advantage\": \"\uD83C\uDE50\",\n \"secret\": \"\u3299\uFE0F\",\n \"congratulations\": \"\u3297\uFE0F\",\n \"u5408\": \"\uD83C\uDE34\",\n \"u6e80\": \"\uD83C\uDE35\",\n \"u7981\": \"\uD83C\uDE32\",\n \"a\": \"\uD83C\uDD70\uFE0F\",\n \"b\": \"\uD83C\uDD71\uFE0F\",\n \"ab\": \"\uD83C\uDD8E\",\n \"cl\": \"\uD83C\uDD91\",\n \"o2\": \"\uD83C\uDD7E\uFE0F\",\n \"sos\": \"\uD83C\uDD98\",\n \"no_entry\": \"\u26D4\",\n \"name_badge\": \"\uD83D\uDCDB\",\n \"no_entry_sign\": \"\uD83D\uDEAB\",\n \"x\": \"\u274C\",\n \"o\": \"\u2B55\",\n \"stop_sign\": \"\uD83D\uDED1\",\n \"anger\": \"\uD83D\uDCA2\",\n \"hotsprings\": \"\u2668\uFE0F\",\n \"no_pedestrians\": \"\uD83D\uDEB7\",\n \"do_not_litter\": \"\uD83D\uDEAF\",\n \"no_bicycles\": \"\uD83D\uDEB3\",\n \"non-potable_water\": \"\uD83D\uDEB1\",\n \"underage\": \"\uD83D\uDD1E\",\n \"no_mobile_phones\": \"\uD83D\uDCF5\",\n \"exclamation\": \"\u2757\",\n \"grey_exclamation\": \"\u2755\",\n \"question\": \"\u2753\",\n \"grey_question\": \"\u2754\",\n \"bangbang\": \"\u203C\uFE0F\",\n \"interrobang\": \"\u2049\uFE0F\",\n \"low_brightness\": \"\uD83D\uDD05\",\n \"high_brightness\": \"\uD83D\uDD06\",\n \"trident\": \"\uD83D\uDD31\",\n \"fleur_de_lis\": \"\u269C\",\n \"part_alternation_mark\": \"\u303D\uFE0F\",\n \"warning\": \"\u26A0\uFE0F\",\n \"children_crossing\": \"\uD83D\uDEB8\",\n \"beginner\": \"\uD83D\uDD30\",\n \"recycle\": \"\u267B\uFE0F\",\n \"u6307\": \"\uD83C\uDE2F\",\n \"chart\": \"\uD83D\uDCB9\",\n \"sparkle\": \"\u2747\uFE0F\",\n \"eight_spoked_asterisk\": \"\u2733\uFE0F\",\n \"negative_squared_cross_mark\": \"\u274E\",\n \"white_check_mark\": \"\u2705\",\n \"diamond_shape_with_a_dot_inside\": \"\uD83D\uDCA0\",\n \"cyclone\": \"\uD83C\uDF00\",\n \"loop\": \"\u27BF\",\n \"globe_with_meridians\": \"\uD83C\uDF10\",\n \"m\": \"\u24C2\uFE0F\",\n \"atm\": \"\uD83C\uDFE7\",\n \"sa\": \"\uD83C\uDE02\uFE0F\",\n \"passport_control\": \"\uD83D\uDEC2\",\n \"customs\": \"\uD83D\uDEC3\",\n \"baggage_claim\": \"\uD83D\uDEC4\",\n \"left_luggage\": \"\uD83D\uDEC5\",\n \"wheelchair\": \"\u267F\",\n \"no_smoking\": \"\uD83D\uDEAD\",\n \"wc\": \"\uD83D\uDEBE\",\n \"parking\": \"\uD83C\uDD7F\uFE0F\",\n \"potable_water\": \"\uD83D\uDEB0\",\n \"mens\": \"\uD83D\uDEB9\",\n \"womens\": \"\uD83D\uDEBA\",\n \"baby_symbol\": \"\uD83D\uDEBC\",\n \"restroom\": \"\uD83D\uDEBB\",\n \"put_litter_in_its_place\": \"\uD83D\uDEAE\",\n \"cinema\": \"\uD83C\uDFA6\",\n \"signal_strength\": \"\uD83D\uDCF6\",\n \"koko\": \"\uD83C\uDE01\",\n \"ng\": \"\uD83C\uDD96\",\n \"ok\": \"\uD83C\uDD97\",\n \"up\": \"\uD83C\uDD99\",\n \"cool\": \"\uD83C\uDD92\",\n \"new\": \"\uD83C\uDD95\",\n \"free\": \"\uD83C\uDD93\",\n \"zero\": \"0\uFE0F\u20E3\",\n \"one\": \"1\uFE0F\u20E3\",\n \"two\": \"2\uFE0F\u20E3\",\n \"three\": \"3\uFE0F\u20E3\",\n \"four\": \"4\uFE0F\u20E3\",\n \"five\": \"5\uFE0F\u20E3\",\n \"six\": \"6\uFE0F\u20E3\",\n \"seven\": \"7\uFE0F\u20E3\",\n \"eight\": \"8\uFE0F\u20E3\",\n \"nine\": \"9\uFE0F\u20E3\",\n \"keycap_ten\": \"\uD83D\uDD1F\",\n \"asterisk\": \"*\u20E3\",\n \"eject_button\": \"\u23CF\uFE0F\",\n \"arrow_forward\": \"\u25B6\uFE0F\",\n \"pause_button\": \"\u23F8\",\n \"next_track_button\": \"\u23ED\",\n \"stop_button\": \"\u23F9\",\n \"record_button\": \"\u23FA\",\n \"play_or_pause_button\": \"\u23EF\",\n \"previous_track_button\": \"\u23EE\",\n \"fast_forward\": \"\u23E9\",\n \"rewind\": \"\u23EA\",\n \"twisted_rightwards_arrows\": \"\uD83D\uDD00\",\n \"repeat\": \"\uD83D\uDD01\",\n \"repeat_one\": \"\uD83D\uDD02\",\n \"arrow_backward\": \"\u25C0\uFE0F\",\n \"arrow_up_small\": \"\uD83D\uDD3C\",\n \"arrow_down_small\": \"\uD83D\uDD3D\",\n \"arrow_double_up\": \"\u23EB\",\n \"arrow_double_down\": \"\u23EC\",\n \"arrow_right\": \"\u27A1\uFE0F\",\n \"arrow_left\": \"\u2B05\uFE0F\",\n \"arrow_up\": \"\u2B06\uFE0F\",\n \"arrow_down\": \"\u2B07\uFE0F\",\n \"arrow_upper_right\": \"\u2197\uFE0F\",\n \"arrow_lower_right\": \"\u2198\uFE0F\",\n \"arrow_lower_left\": \"\u2199\uFE0F\",\n \"arrow_upper_left\": \"\u2196\uFE0F\",\n \"arrow_up_down\": \"\u2195\uFE0F\",\n \"left_right_arrow\": \"\u2194\uFE0F\",\n \"arrows_counterclockwise\": \"\uD83D\uDD04\",\n \"arrow_right_hook\": \"\u21AA\uFE0F\",\n \"leftwards_arrow_with_hook\": \"\u21A9\uFE0F\",\n \"arrow_heading_up\": \"\u2934\uFE0F\",\n \"arrow_heading_down\": \"\u2935\uFE0F\",\n \"hash\": \"#\uFE0F\u20E3\",\n \"information_source\": \"\u2139\uFE0F\",\n \"abc\": \"\uD83D\uDD24\",\n \"abcd\": \"\uD83D\uDD21\",\n \"capital_abcd\": \"\uD83D\uDD20\",\n \"symbols\": \"\uD83D\uDD23\",\n \"musical_note\": \"\uD83C\uDFB5\",\n \"notes\": \"\uD83C\uDFB6\",\n \"wavy_dash\": \"\u3030\uFE0F\",\n \"curly_loop\": \"\u27B0\",\n \"heavy_check_mark\": \"\u2714\uFE0F\",\n \"arrows_clockwise\": \"\uD83D\uDD03\",\n \"heavy_plus_sign\": \"\u2795\",\n \"heavy_minus_sign\": \"\u2796\",\n \"heavy_division_sign\": \"\u2797\",\n \"heavy_multiplication_x\": \"\u2716\uFE0F\",\n \"infinity\": \"\u267E\",\n \"heavy_dollar_sign\": \"\uD83D\uDCB2\",\n \"currency_exchange\": \"\uD83D\uDCB1\",\n \"copyright\": \"\u00A9\uFE0F\",\n \"registered\": \"\u00AE\uFE0F\",\n \"tm\": \"\u2122\uFE0F\",\n \"end\": \"\uD83D\uDD1A\",\n \"back\": \"\uD83D\uDD19\",\n \"on\": \"\uD83D\uDD1B\",\n \"top\": \"\uD83D\uDD1D\",\n \"soon\": \"\uD83D\uDD1C\",\n \"ballot_box_with_check\": \"\u2611\uFE0F\",\n \"radio_button\": \"\uD83D\uDD18\",\n \"white_circle\": \"\u26AA\",\n \"black_circle\": \"\u26AB\",\n \"red_circle\": \"\uD83D\uDD34\",\n \"large_blue_circle\": \"\uD83D\uDD35\",\n \"small_orange_diamond\": \"\uD83D\uDD38\",\n \"small_blue_diamond\": \"\uD83D\uDD39\",\n \"large_orange_diamond\": \"\uD83D\uDD36\",\n \"large_blue_diamond\": \"\uD83D\uDD37\",\n \"small_red_triangle\": \"\uD83D\uDD3A\",\n \"black_small_square\": \"\u25AA\uFE0F\",\n \"white_small_square\": \"\u25AB\uFE0F\",\n \"black_large_square\": \"\u2B1B\",\n \"white_large_square\": \"\u2B1C\",\n \"small_red_triangle_down\": \"\uD83D\uDD3B\",\n \"black_medium_square\": \"\u25FC\uFE0F\",\n \"white_medium_square\": \"\u25FB\uFE0F\",\n \"black_medium_small_square\": \"\u25FE\",\n \"white_medium_small_square\": \"\u25FD\",\n \"black_square_button\": \"\uD83D\uDD32\",\n \"white_square_button\": \"\uD83D\uDD33\",\n \"speaker\": \"\uD83D\uDD08\",\n \"sound\": \"\uD83D\uDD09\",\n \"loud_sound\": \"\uD83D\uDD0A\",\n \"mute\": \"\uD83D\uDD07\",\n \"mega\": \"\uD83D\uDCE3\",\n \"loudspeaker\": \"\uD83D\uDCE2\",\n \"bell\": \"\uD83D\uDD14\",\n \"no_bell\": \"\uD83D\uDD15\",\n \"black_joker\": \"\uD83C\uDCCF\",\n \"mahjong\": \"\uD83C\uDC04\",\n \"spades\": \"\u2660\uFE0F\",\n \"clubs\": \"\u2663\uFE0F\",\n \"hearts\": \"\u2665\uFE0F\",\n \"diamonds\": \"\u2666\uFE0F\",\n \"flower_playing_cards\": \"\uD83C\uDFB4\",\n \"thought_balloon\": \"\uD83D\uDCAD\",\n \"right_anger_bubble\": \"\uD83D\uDDEF\",\n \"speech_balloon\": \"\uD83D\uDCAC\",\n \"left_speech_bubble\": \"\uD83D\uDDE8\",\n \"clock1\": \"\uD83D\uDD50\",\n \"clock2\": \"\uD83D\uDD51\",\n \"clock3\": \"\uD83D\uDD52\",\n \"clock4\": \"\uD83D\uDD53\",\n \"clock5\": \"\uD83D\uDD54\",\n \"clock6\": \"\uD83D\uDD55\",\n \"clock7\": \"\uD83D\uDD56\",\n \"clock8\": \"\uD83D\uDD57\",\n \"clock9\": \"\uD83D\uDD58\",\n \"clock10\": \"\uD83D\uDD59\",\n \"clock11\": \"\uD83D\uDD5A\",\n \"clock12\": \"\uD83D\uDD5B\",\n \"clock130\": \"\uD83D\uDD5C\",\n \"clock230\": \"\uD83D\uDD5D\",\n \"clock330\": \"\uD83D\uDD5E\",\n \"clock430\": \"\uD83D\uDD5F\",\n \"clock530\": \"\uD83D\uDD60\",\n \"clock630\": \"\uD83D\uDD61\",\n \"clock730\": \"\uD83D\uDD62\",\n \"clock830\": \"\uD83D\uDD63\",\n \"clock930\": \"\uD83D\uDD64\",\n \"clock1030\": \"\uD83D\uDD65\",\n \"clock1130\": \"\uD83D\uDD66\",\n \"clock1230\": \"\uD83D\uDD67\",\n \"afghanistan\": \"\uD83C\uDDE6\uD83C\uDDEB\",\n \"aland_islands\": \"\uD83C\uDDE6\uD83C\uDDFD\",\n \"albania\": \"\uD83C\uDDE6\uD83C\uDDF1\",\n \"algeria\": \"\uD83C\uDDE9\uD83C\uDDFF\",\n \"american_samoa\": \"\uD83C\uDDE6\uD83C\uDDF8\",\n \"andorra\": \"\uD83C\uDDE6\uD83C\uDDE9\",\n \"angola\": \"\uD83C\uDDE6\uD83C\uDDF4\",\n \"anguilla\": \"\uD83C\uDDE6\uD83C\uDDEE\",\n \"antarctica\": \"\uD83C\uDDE6\uD83C\uDDF6\",\n \"antigua_barbuda\": \"\uD83C\uDDE6\uD83C\uDDEC\",\n \"argentina\": \"\uD83C\uDDE6\uD83C\uDDF7\",\n \"armenia\": \"\uD83C\uDDE6\uD83C\uDDF2\",\n \"aruba\": \"\uD83C\uDDE6\uD83C\uDDFC\",\n \"australia\": \"\uD83C\uDDE6\uD83C\uDDFA\",\n \"austria\": \"\uD83C\uDDE6\uD83C\uDDF9\",\n \"azerbaijan\": \"\uD83C\uDDE6\uD83C\uDDFF\",\n \"bahamas\": \"\uD83C\uDDE7\uD83C\uDDF8\",\n \"bahrain\": \"\uD83C\uDDE7\uD83C\uDDED\",\n \"bangladesh\": \"\uD83C\uDDE7\uD83C\uDDE9\",\n \"barbados\": \"\uD83C\uDDE7\uD83C\uDDE7\",\n \"belarus\": \"\uD83C\uDDE7\uD83C\uDDFE\",\n \"belgium\": \"\uD83C\uDDE7\uD83C\uDDEA\",\n \"belize\": \"\uD83C\uDDE7\uD83C\uDDFF\",\n \"benin\": \"\uD83C\uDDE7\uD83C\uDDEF\",\n \"bermuda\": \"\uD83C\uDDE7\uD83C\uDDF2\",\n \"bhutan\": \"\uD83C\uDDE7\uD83C\uDDF9\",\n \"bolivia\": \"\uD83C\uDDE7\uD83C\uDDF4\",\n \"caribbean_netherlands\": \"\uD83C\uDDE7\uD83C\uDDF6\",\n \"bosnia_herzegovina\": \"\uD83C\uDDE7\uD83C\uDDE6\",\n \"botswana\": \"\uD83C\uDDE7\uD83C\uDDFC\",\n \"brazil\": \"\uD83C\uDDE7\uD83C\uDDF7\",\n \"british_indian_ocean_territory\": \"\uD83C\uDDEE\uD83C\uDDF4\",\n \"british_virgin_islands\": \"\uD83C\uDDFB\uD83C\uDDEC\",\n \"brunei\": \"\uD83C\uDDE7\uD83C\uDDF3\",\n \"bulgaria\": \"\uD83C\uDDE7\uD83C\uDDEC\",\n \"burkina_faso\": \"\uD83C\uDDE7\uD83C\uDDEB\",\n \"burundi\": \"\uD83C\uDDE7\uD83C\uDDEE\",\n \"cape_verde\": \"\uD83C\uDDE8\uD83C\uDDFB\",\n \"cambodia\": \"\uD83C\uDDF0\uD83C\uDDED\",\n \"cameroon\": \"\uD83C\uDDE8\uD83C\uDDF2\",\n \"canada\": \"\uD83C\uDDE8\uD83C\uDDE6\",\n \"canary_islands\": \"\uD83C\uDDEE\uD83C\uDDE8\",\n \"cayman_islands\": \"\uD83C\uDDF0\uD83C\uDDFE\",\n \"central_african_republic\": \"\uD83C\uDDE8\uD83C\uDDEB\",\n \"chad\": \"\uD83C\uDDF9\uD83C\uDDE9\",\n \"chile\": \"\uD83C\uDDE8\uD83C\uDDF1\",\n \"cn\": \"\uD83C\uDDE8\uD83C\uDDF3\",\n \"christmas_island\": \"\uD83C\uDDE8\uD83C\uDDFD\",\n \"cocos_islands\": \"\uD83C\uDDE8\uD83C\uDDE8\",\n \"colombia\": \"\uD83C\uDDE8\uD83C\uDDF4\",\n \"comoros\": \"\uD83C\uDDF0\uD83C\uDDF2\",\n \"congo_brazzaville\": \"\uD83C\uDDE8\uD83C\uDDEC\",\n \"congo_kinshasa\": \"\uD83C\uDDE8\uD83C\uDDE9\",\n \"cook_islands\": \"\uD83C\uDDE8\uD83C\uDDF0\",\n \"costa_rica\": \"\uD83C\uDDE8\uD83C\uDDF7\",\n \"croatia\": \"\uD83C\uDDED\uD83C\uDDF7\",\n \"cuba\": \"\uD83C\uDDE8\uD83C\uDDFA\",\n \"curacao\": \"\uD83C\uDDE8\uD83C\uDDFC\",\n \"cyprus\": \"\uD83C\uDDE8\uD83C\uDDFE\",\n \"czech_republic\": \"\uD83C\uDDE8\uD83C\uDDFF\",\n \"denmark\": \"\uD83C\uDDE9\uD83C\uDDF0\",\n \"djibouti\": \"\uD83C\uDDE9\uD83C\uDDEF\",\n \"dominica\": \"\uD83C\uDDE9\uD83C\uDDF2\",\n \"dominican_republic\": \"\uD83C\uDDE9\uD83C\uDDF4\",\n \"ecuador\": \"\uD83C\uDDEA\uD83C\uDDE8\",\n \"egypt\": \"\uD83C\uDDEA\uD83C\uDDEC\",\n \"el_salvador\": \"\uD83C\uDDF8\uD83C\uDDFB\",\n \"equatorial_guinea\": \"\uD83C\uDDEC\uD83C\uDDF6\",\n \"eritrea\": \"\uD83C\uDDEA\uD83C\uDDF7\",\n \"estonia\": \"\uD83C\uDDEA\uD83C\uDDEA\",\n \"ethiopia\": \"\uD83C\uDDEA\uD83C\uDDF9\",\n \"eu\": \"\uD83C\uDDEA\uD83C\uDDFA\",\n \"falkland_islands\": \"\uD83C\uDDEB\uD83C\uDDF0\",\n \"faroe_islands\": \"\uD83C\uDDEB\uD83C\uDDF4\",\n \"fiji\": \"\uD83C\uDDEB\uD83C\uDDEF\",\n \"finland\": \"\uD83C\uDDEB\uD83C\uDDEE\",\n \"fr\": \"\uD83C\uDDEB\uD83C\uDDF7\",\n \"french_guiana\": \"\uD83C\uDDEC\uD83C\uDDEB\",\n \"french_polynesia\": \"\uD83C\uDDF5\uD83C\uDDEB\",\n \"french_southern_territories\": \"\uD83C\uDDF9\uD83C\uDDEB\",\n \"gabon\": \"\uD83C\uDDEC\uD83C\uDDE6\",\n \"gambia\": \"\uD83C\uDDEC\uD83C\uDDF2\",\n \"georgia\": \"\uD83C\uDDEC\uD83C\uDDEA\",\n \"de\": \"\uD83C\uDDE9\uD83C\uDDEA\",\n \"ghana\": \"\uD83C\uDDEC\uD83C\uDDED\",\n \"gibraltar\": \"\uD83C\uDDEC\uD83C\uDDEE\",\n \"greece\": \"\uD83C\uDDEC\uD83C\uDDF7\",\n \"greenland\": \"\uD83C\uDDEC\uD83C\uDDF1\",\n \"grenada\": \"\uD83C\uDDEC\uD83C\uDDE9\",\n \"guadeloupe\": \"\uD83C\uDDEC\uD83C\uDDF5\",\n \"guam\": \"\uD83C\uDDEC\uD83C\uDDFA\",\n \"guatemala\": \"\uD83C\uDDEC\uD83C\uDDF9\",\n \"guernsey\": \"\uD83C\uDDEC\uD83C\uDDEC\",\n \"guinea\": \"\uD83C\uDDEC\uD83C\uDDF3\",\n \"guinea_bissau\": \"\uD83C\uDDEC\uD83C\uDDFC\",\n \"guyana\": \"\uD83C\uDDEC\uD83C\uDDFE\",\n \"haiti\": \"\uD83C\uDDED\uD83C\uDDF9\",\n \"honduras\": \"\uD83C\uDDED\uD83C\uDDF3\",\n \"hong_kong\": \"\uD83C\uDDED\uD83C\uDDF0\",\n \"hungary\": \"\uD83C\uDDED\uD83C\uDDFA\",\n \"iceland\": \"\uD83C\uDDEE\uD83C\uDDF8\",\n \"india\": \"\uD83C\uDDEE\uD83C\uDDF3\",\n \"indonesia\": \"\uD83C\uDDEE\uD83C\uDDE9\",\n \"iran\": \"\uD83C\uDDEE\uD83C\uDDF7\",\n \"iraq\": \"\uD83C\uDDEE\uD83C\uDDF6\",\n \"ireland\": \"\uD83C\uDDEE\uD83C\uDDEA\",\n \"isle_of_man\": \"\uD83C\uDDEE\uD83C\uDDF2\",\n \"israel\": \"\uD83C\uDDEE\uD83C\uDDF1\",\n \"it\": \"\uD83C\uDDEE\uD83C\uDDF9\",\n \"cote_divoire\": \"\uD83C\uDDE8\uD83C\uDDEE\",\n \"jamaica\": \"\uD83C\uDDEF\uD83C\uDDF2\",\n \"jp\": \"\uD83C\uDDEF\uD83C\uDDF5\",\n \"jersey\": \"\uD83C\uDDEF\uD83C\uDDEA\",\n \"jordan\": \"\uD83C\uDDEF\uD83C\uDDF4\",\n \"kazakhstan\": \"\uD83C\uDDF0\uD83C\uDDFF\",\n \"kenya\": \"\uD83C\uDDF0\uD83C\uDDEA\",\n \"kiribati\": \"\uD83C\uDDF0\uD83C\uDDEE\",\n \"kosovo\": \"\uD83C\uDDFD\uD83C\uDDF0\",\n \"kuwait\": \"\uD83C\uDDF0\uD83C\uDDFC\",\n \"kyrgyzstan\": \"\uD83C\uDDF0\uD83C\uDDEC\",\n \"laos\": \"\uD83C\uDDF1\uD83C\uDDE6\",\n \"latvia\": \"\uD83C\uDDF1\uD83C\uDDFB\",\n \"lebanon\": \"\uD83C\uDDF1\uD83C\uDDE7\",\n \"lesotho\": \"\uD83C\uDDF1\uD83C\uDDF8\",\n \"liberia\": \"\uD83C\uDDF1\uD83C\uDDF7\",\n \"libya\": \"\uD83C\uDDF1\uD83C\uDDFE\",\n \"liechtenstein\": \"\uD83C\uDDF1\uD83C\uDDEE\",\n \"lithuania\": \"\uD83C\uDDF1\uD83C\uDDF9\",\n \"luxembourg\": \"\uD83C\uDDF1\uD83C\uDDFA\",\n \"macau\": \"\uD83C\uDDF2\uD83C\uDDF4\",\n \"macedonia\": \"\uD83C\uDDF2\uD83C\uDDF0\",\n \"madagascar\": \"\uD83C\uDDF2\uD83C\uDDEC\",\n \"malawi\": \"\uD83C\uDDF2\uD83C\uDDFC\",\n \"malaysia\": \"\uD83C\uDDF2\uD83C\uDDFE\",\n \"maldives\": \"\uD83C\uDDF2\uD83C\uDDFB\",\n \"mali\": \"\uD83C\uDDF2\uD83C\uDDF1\",\n \"malta\": \"\uD83C\uDDF2\uD83C\uDDF9\",\n \"marshall_islands\": \"\uD83C\uDDF2\uD83C\uDDED\",\n \"martinique\": \"\uD83C\uDDF2\uD83C\uDDF6\",\n \"mauritania\": \"\uD83C\uDDF2\uD83C\uDDF7\",\n \"mauritius\": \"\uD83C\uDDF2\uD83C\uDDFA\",\n \"mayotte\": \"\uD83C\uDDFE\uD83C\uDDF9\",\n \"mexico\": \"\uD83C\uDDF2\uD83C\uDDFD\",\n \"micronesia\": \"\uD83C\uDDEB\uD83C\uDDF2\",\n \"moldova\": \"\uD83C\uDDF2\uD83C\uDDE9\",\n \"monaco\": \"\uD83C\uDDF2\uD83C\uDDE8\",\n \"mongolia\": \"\uD83C\uDDF2\uD83C\uDDF3\",\n \"montenegro\": \"\uD83C\uDDF2\uD83C\uDDEA\",\n \"montserrat\": \"\uD83C\uDDF2\uD83C\uDDF8\",\n \"morocco\": \"\uD83C\uDDF2\uD83C\uDDE6\",\n \"mozambique\": \"\uD83C\uDDF2\uD83C\uDDFF\",\n \"myanmar\": \"\uD83C\uDDF2\uD83C\uDDF2\",\n \"namibia\": \"\uD83C\uDDF3\uD83C\uDDE6\",\n \"nauru\": \"\uD83C\uDDF3\uD83C\uDDF7\",\n \"nepal\": \"\uD83C\uDDF3\uD83C\uDDF5\",\n \"netherlands\": \"\uD83C\uDDF3\uD83C\uDDF1\",\n \"new_caledonia\": \"\uD83C\uDDF3\uD83C\uDDE8\",\n \"new_zealand\": \"\uD83C\uDDF3\uD83C\uDDFF\",\n \"nicaragua\": \"\uD83C\uDDF3\uD83C\uDDEE\",\n \"niger\": \"\uD83C\uDDF3\uD83C\uDDEA\",\n \"nigeria\": \"\uD83C\uDDF3\uD83C\uDDEC\",\n \"niue\": \"\uD83C\uDDF3\uD83C\uDDFA\",\n \"norfolk_island\": \"\uD83C\uDDF3\uD83C\uDDEB\",\n \"northern_mariana_islands\": \"\uD83C\uDDF2\uD83C\uDDF5\",\n \"north_korea\": \"\uD83C\uDDF0\uD83C\uDDF5\",\n \"norway\": \"\uD83C\uDDF3\uD83C\uDDF4\",\n \"oman\": \"\uD83C\uDDF4\uD83C\uDDF2\",\n \"pakistan\": \"\uD83C\uDDF5\uD83C\uDDF0\",\n \"palau\": \"\uD83C\uDDF5\uD83C\uDDFC\",\n \"palestinian_territories\": \"\uD83C\uDDF5\uD83C\uDDF8\",\n \"panama\": \"\uD83C\uDDF5\uD83C\uDDE6\",\n \"papua_new_guinea\": \"\uD83C\uDDF5\uD83C\uDDEC\",\n \"paraguay\": \"\uD83C\uDDF5\uD83C\uDDFE\",\n \"peru\": \"\uD83C\uDDF5\uD83C\uDDEA\",\n \"philippines\": \"\uD83C\uDDF5\uD83C\uDDED\",\n \"pitcairn_islands\": \"\uD83C\uDDF5\uD83C\uDDF3\",\n \"poland\": \"\uD83C\uDDF5\uD83C\uDDF1\",\n \"portugal\": \"\uD83C\uDDF5\uD83C\uDDF9\",\n \"puerto_rico\": \"\uD83C\uDDF5\uD83C\uDDF7\",\n \"qatar\": \"\uD83C\uDDF6\uD83C\uDDE6\",\n \"reunion\": \"\uD83C\uDDF7\uD83C\uDDEA\",\n \"romania\": \"\uD83C\uDDF7\uD83C\uDDF4\",\n \"ru\": \"\uD83C\uDDF7\uD83C\uDDFA\",\n \"rwanda\": \"\uD83C\uDDF7\uD83C\uDDFC\",\n \"st_barthelemy\": \"\uD83C\uDDE7\uD83C\uDDF1\",\n \"st_helena\": \"\uD83C\uDDF8\uD83C\uDDED\",\n \"st_kitts_nevis\": \"\uD83C\uDDF0\uD83C\uDDF3\",\n \"st_lucia\": \"\uD83C\uDDF1\uD83C\uDDE8\",\n \"st_pierre_miquelon\": \"\uD83C\uDDF5\uD83C\uDDF2\",\n \"st_vincent_grenadines\": \"\uD83C\uDDFB\uD83C\uDDE8\",\n \"samoa\": \"\uD83C\uDDFC\uD83C\uDDF8\",\n \"san_marino\": \"\uD83C\uDDF8\uD83C\uDDF2\",\n \"sao_tome_principe\": \"\uD83C\uDDF8\uD83C\uDDF9\",\n \"saudi_arabia\": \"\uD83C\uDDF8\uD83C\uDDE6\",\n \"senegal\": \"\uD83C\uDDF8\uD83C\uDDF3\",\n \"serbia\": \"\uD83C\uDDF7\uD83C\uDDF8\",\n \"seychelles\": \"\uD83C\uDDF8\uD83C\uDDE8\",\n \"sierra_leone\": \"\uD83C\uDDF8\uD83C\uDDF1\",\n \"singapore\": \"\uD83C\uDDF8\uD83C\uDDEC\",\n \"sint_maarten\": \"\uD83C\uDDF8\uD83C\uDDFD\",\n \"slovakia\": \"\uD83C\uDDF8\uD83C\uDDF0\",\n \"slovenia\": \"\uD83C\uDDF8\uD83C\uDDEE\",\n \"solomon_islands\": \"\uD83C\uDDF8\uD83C\uDDE7\",\n \"somalia\": \"\uD83C\uDDF8\uD83C\uDDF4\",\n \"south_africa\": \"\uD83C\uDDFF\uD83C\uDDE6\",\n \"south_georgia_south_sandwich_islands\": \"\uD83C\uDDEC\uD83C\uDDF8\",\n \"kr\": \"\uD83C\uDDF0\uD83C\uDDF7\",\n \"south_sudan\": \"\uD83C\uDDF8\uD83C\uDDF8\",\n \"es\": \"\uD83C\uDDEA\uD83C\uDDF8\",\n \"sri_lanka\": \"\uD83C\uDDF1\uD83C\uDDF0\",\n \"sudan\": \"\uD83C\uDDF8\uD83C\uDDE9\",\n \"suriname\": \"\uD83C\uDDF8\uD83C\uDDF7\",\n \"swaziland\": \"\uD83C\uDDF8\uD83C\uDDFF\",\n \"sweden\": \"\uD83C\uDDF8\uD83C\uDDEA\",\n \"switzerland\": \"\uD83C\uDDE8\uD83C\uDDED\",\n \"syria\": \"\uD83C\uDDF8\uD83C\uDDFE\",\n \"taiwan\": \"\uD83C\uDDF9\uD83C\uDDFC\",\n \"tajikistan\": \"\uD83C\uDDF9\uD83C\uDDEF\",\n \"tanzania\": \"\uD83C\uDDF9\uD83C\uDDFF\",\n \"thailand\": \"\uD83C\uDDF9\uD83C\uDDED\",\n \"timor_leste\": \"\uD83C\uDDF9\uD83C\uDDF1\",\n \"togo\": \"\uD83C\uDDF9\uD83C\uDDEC\",\n \"tokelau\": \"\uD83C\uDDF9\uD83C\uDDF0\",\n \"tonga\": \"\uD83C\uDDF9\uD83C\uDDF4\",\n \"trinidad_tobago\": \"\uD83C\uDDF9\uD83C\uDDF9\",\n \"tunisia\": \"\uD83C\uDDF9\uD83C\uDDF3\",\n \"tr\": \"\uD83C\uDDF9\uD83C\uDDF7\",\n \"turkmenistan\": \"\uD83C\uDDF9\uD83C\uDDF2\",\n \"turks_caicos_islands\": \"\uD83C\uDDF9\uD83C\uDDE8\",\n \"tuvalu\": \"\uD83C\uDDF9\uD83C\uDDFB\",\n \"uganda\": \"\uD83C\uDDFA\uD83C\uDDEC\",\n \"ukraine\": \"\uD83C\uDDFA\uD83C\uDDE6\",\n \"united_arab_emirates\": \"\uD83C\uDDE6\uD83C\uDDEA\",\n \"uk\": \"\uD83C\uDDEC\uD83C\uDDE7\",\n \"england\": \"\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67\uDB40\uDC7F\",\n \"scotland\": \"\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74\uDB40\uDC7F\",\n \"wales\": \"\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73\uDB40\uDC7F\",\n \"us\": \"\uD83C\uDDFA\uD83C\uDDF8\",\n \"us_virgin_islands\": \"\uD83C\uDDFB\uD83C\uDDEE\",\n \"uruguay\": \"\uD83C\uDDFA\uD83C\uDDFE\",\n \"uzbekistan\": \"\uD83C\uDDFA\uD83C\uDDFF\",\n \"vanuatu\": \"\uD83C\uDDFB\uD83C\uDDFA\",\n \"vatican_city\": \"\uD83C\uDDFB\uD83C\uDDE6\",\n \"venezuela\": \"\uD83C\uDDFB\uD83C\uDDEA\",\n \"vietnam\": \"\uD83C\uDDFB\uD83C\uDDF3\",\n \"wallis_futuna\": \"\uD83C\uDDFC\uD83C\uDDEB\",\n \"western_sahara\": \"\uD83C\uDDEA\uD83C\uDDED\",\n \"yemen\": \"\uD83C\uDDFE\uD83C\uDDEA\",\n \"zambia\": \"\uD83C\uDDFF\uD83C\uDDF2\",\n \"zimbabwe\": \"\uD83C\uDDFF\uD83C\uDDFC\",\n \"united_nations\": \"\uD83C\uDDFA\uD83C\uDDF3\",\n \"pirate_flag\": \"\uD83C\uDFF4\u200D\u2620\uFE0F\"\n}\n", "{\n \"twitch\": [\n \"4Head\",\n \"ANELE\",\n \"AngryJack\",\n \"AquamanGG\",\n \"ArgieB8\",\n \"ArigatoNas\",\n \"ArsonNoSexy\",\n \"AsexualPride\",\n \"AsianGlow\",\n \"BCWarrior\",\n \"BabyRage\",\n \"BatChest\",\n \"BegWan\",\n \"BibleThump\",\n \"BigBrother\",\n \"BigPhish\",\n \"BisexualPride\",\n \"BlargNaut\",\n \"BlessRNG\",\n \"BloodTrail\",\n \"BrainSlug\",\n \"BrokeBack\",\n \"BuddhaBar\",\n \"CarlSmile\",\n \"ChefFrank\",\n \"CoolCat\",\n \"CoolStoryBob\",\n \"CorgiDerp\",\n \"CrreamAwk\",\n \"CurseLit\",\n \"DAESuppy\",\n \"DBstyle\",\n \"DansGame\",\n \"DarkMode\",\n \"DatSheffy\",\n \"DendiFace\",\n \"DogFace\",\n \"DoritosChip\",\n \"DrinkPurple\",\n \"DxCat\",\n \"EarthDay\",\n \"EleGiggle\",\n \"EntropyWins\",\n \"FBBlock\",\n \"FBCatch\",\n \"FBChallenge\",\n \"FBPass\",\n \"FBPenalty\",\n \"FBRun\",\n \"FBSpiral\",\n \"FBtouchdown\",\n \"FUNgineer\",\n \"FailFish\",\n \"FrankerZ\",\n \"FreakinStinkin\",\n \"FutureMan\",\n \"GayPride\",\n \"GenderFluidPride\",\n \"GingerPower\",\n \"GivePLZ\",\n \"GrammarKing\",\n \"GreenTeam\",\n \"GunRun\",\n \"HSCheers\",\n \"HSWP\",\n \"HappyJack\",\n \"HassaanChop\",\n \"HassanChop\",\n \"HeyGuys\",\n \"HolidayCookie\",\n \"HolidayLog\",\n \"HolidayOrnament\",\n \"HolidayPresent\",\n \"HolidaySanta\",\n \"HolidayTree\",\n \"HotPokket\",\n \"HumbleLife\",\n \"IntersexPride\",\n \"InuyoFace\",\n \"ItsBoshyTime\",\n \"JKanStyle\",\n \"Jebaited\",\n \"JonCarnage\",\n \"KAPOW\",\n \"Kappa\",\n \"KappaClaus\",\n \"KappaPride\",\n \"KappaRoss\",\n \"KappaWealth\",\n \"Kappu\",\n \"Keepo\",\n \"KevinTurtle\",\n \"Kippa\",\n \"KomodoHype\",\n \"KonCha\",\n \"Kreygasm\",\n \"LUL\",\n \"LesbianPride\",\n \"MVGame\",\n \"Mau5\",\n \"MaxLOL\",\n \"MercyWing1\",\n \"MercyWing2\",\n \"MikeHogu\",\n \"MingLee\",\n \"MorphinTime\",\n \"MrDestructoid\",\n \"NinjaGrumpy\",\n \"NomNom\",\n \"NonBinaryPride\",\n \"NotATK\",\n \"NotLikeThis\",\n \"OSFrog\",\n \"OhMyDog\",\n \"OneHand\",\n \"OpieOP\",\n \"OptimizePrime\",\n \"PJSalt\",\n \"PJSugar\",\n \"PMSTwin\",\n \"PRChase\",\n \"PanicVis\",\n \"PansexualPride\",\n \"PartyHat\",\n \"PartyTime\",\n \"PeoplesChamp\",\n \"PermaSmug\",\n \"PeteZaroll\",\n \"PeteZarollOdyssey\",\n \"PicoMause\",\n \"PinkMercy\",\n \"PipeHype\",\n \"PixelBob\",\n \"PogChamp\",\n \"Poooound\",\n \"PopCorn\",\n \"PowerUpL\",\n \"PowerUpR\",\n \"PraiseIt\",\n \"PrimeMe\",\n \"PunOko\",\n \"PunchTrees\",\n \"PurpleStar\",\n \"RaccAttack\",\n \"RalpherZ\",\n \"RedCoat\",\n \"RedTeam\",\n \"ResidentSleeper\",\n \"RitzMitz\",\n \"RlyTho\",\n \"RuleFive\",\n \"SMOrc\",\n \"SSSsss\",\n \"SabaPing\",\n \"SeemsGood\",\n \"SeriousSloth\",\n \"ShadyLulu\",\n \"ShazBotstix\",\n \"SmoocherZ\",\n \"SoBayed\",\n \"SoonerLater\",\n \"Squid1\",\n \"Squid2\",\n \"Squid3\",\n \"Squid4\",\n \"StinkyCheese\",\n \"StoneLightning\",\n \"StrawBeary\",\n \"SuperVinlin\",\n \"SwiftRage\",\n \"TBAngel\",\n \"TF2John\",\n \"TPFufun\",\n \"TPcrunchyroll\",\n \"TTours\",\n \"TakeNRG\",\n \"TearGlove\",\n \"TehePelo\",\n \"ThankEgg\",\n \"TheIlluminati\",\n \"TheRinger\",\n \"TheTarFu\",\n \"TheThing\",\n \"ThunBeast\",\n \"TinyFace\",\n \"TombRaid\",\n \"TooSpicy\",\n \"TransgenderPride\",\n \"TriHard\",\n \"TwitchLit\",\n \"TwitchRPG\",\n \"TwitchUnity\",\n \"TwitchVotes\",\n \"UWot\",\n \"UnSane\",\n \"UncleNox\",\n \"VoHiYo\",\n \"VoteNay\",\n \"VoteYea\",\n \"WTRuck\",\n \"WholeWheat\",\n \"WutFace\",\n \"YouDontSay\",\n \"YouWHY\",\n \"bleedPurple\",\n \"cmonBruh\",\n \"copyThis\",\n \"duDudu\",\n \"imGlitch\",\n \"mcaT\",\n \"panicBasket\",\n \"pastaThat\",\n \"riPepperonis\",\n \"twitchRaid\"\n ],\n \"twitch-turbo\": [\"KappaHD\", \"MiniK\"],\n \"betterttv\": [\n \"OhMyGoodness\",\n \"PancakeMix\",\n \"PedoBear\",\n \"PokerFace\",\n \"RageFace\",\n \"RebeccaBlack\",\n \"aPliS\",\n \"CiGrip\",\n \"CHAccepted\",\n \"FuckYea\",\n \"DatSauce\",\n \"ForeverAlone\",\n \"GabeN\",\n \"HailHelix\",\n \"HerbPerve\",\n \"iDog\",\n \"rStrike\",\n \"ShoopDaWhoop\",\n \"SwedSwag\",\n \"M&Mjc\",\n \"bttvNice\",\n \"TopHam\",\n \"TwaT\",\n \"WhatAYolk\",\n \"WatChuSay\",\n \"Blackappa\",\n \"DogeWitIt\",\n \"BadAss\",\n \"SavageJerky\",\n \"Zappa\",\n \"tehPoleCat\",\n \"AngelThump\",\n \"Kaged\",\n \"HHydro\",\n \"TaxiBro\",\n \"BroBalt\",\n \"ButterSauce\",\n \"BaconEffect\",\n \"SuchFraud\",\n \"CandianRage\",\n \"She'llBeRight\",\n \"OhhhKee\",\n \"SexPanda\",\n \"bttvWink\",\n \"bttvAngry\",\n \"bttvConfused\",\n \"bttvCool\",\n \"bttvHappy\",\n \"bttvSad\",\n \"bttvSleep\",\n \"bttvSurprised\",\n \"bttvTongue\",\n \"bttvUnsure\",\n \"bttvGrin\",\n \"bttvHeart\",\n \"bttvTwink\",\n \"VisLaud\",\n \"SoSerious\",\n \"BatKappa\",\n \"KaRappa\",\n \"YetiZ\",\n \"miniJulia\",\n \"FishMoley\",\n \"Hhhehehe\",\n \"KKona\",\n \"OhGod\",\n \"PoleDoge\",\n \"motnahP\",\n \"sosGame\",\n \"CruW\",\n \"RarePepe\",\n \"iamsocal\",\n \"haHAA\",\n \"FeelsBirthdayMan\",\n \"RonSmug\",\n \"KappaCool\",\n \"FeelsBadMan\",\n \"BasedGod\",\n \"bUrself\",\n \"ConcernDoge\",\n \"FapFapFap\",\n \"FeelsGoodMan\",\n \"FireSpeed\",\n \"NaM\",\n \"SourPls\",\n \"LuL\",\n \"SaltyCorn\",\n \"FCreep\",\n \"monkaS\",\n \"VapeNation\",\n \"ariW\",\n \"notsquishY\",\n \"FeelsAmazingMan\",\n \"DuckerZ\",\n \"SqShy\",\n \"Wowee\"\n ],\n \"frankerfacez\": [\n \"BORT\",\n \"BeanieHipster\",\n \"CatBag\",\n \"LaterSooner\",\n \"LilZ\",\n \"ManChicken\",\n \"YellowFever\",\n \"YooHoo\",\n \"ZreknarF\"\n ],\n \"frankerfacez-custom\": [\n \"3Head\",\n \"4HEad\",\n \"4House\",\n \"4Shrug\",\n \"4WeirdW\",\n \"5Head\",\n \"AYAYA\",\n \"Champ\",\n \"COPIUM\",\n \"coronaS\",\n \"coronaW\",\n \"DICKS\",\n \"EZY\",\n \"FeelsDankMan\",\n \"FeelsOkayMan\",\n \"FeelsSpecialMan\",\n \"FeelsStrongMan\",\n \"FeelsWeirdMan\",\n \"FrankerB\",\n \"FrankerG\",\n \"FrankerO\",\n \"FrankerP\",\n \"FrankerR\",\n \"FrankerY\",\n \"FrankerZPride\",\n \"gachiGASM\",\n \"HandsUp\",\n \"HYPERBRUH\",\n \"HyperLUL\",\n \"HYPERS\",\n \"Kadda\",\n \"Kapp\",\n \"KEKW\",\n \"KKomrade\",\n \"KKonaW\",\n \"Klappa\",\n \"LIES\",\n \"LULW\",\n \"Madge\",\n \"monkaEyes\",\n \"monkaGun\",\n \"monkaH\",\n \"monkaHmm\",\n \"monkaMEGA\",\n \"monkaOMEGA\",\n \"monkaStare\",\n \"monkaTOS\",\n \"monkaW\",\n \"NODUDE\",\n \"NotLikeZam\",\n \"NootLikeThis\",\n \"OkayChamp\",\n \"Okayge\",\n \"OMEGALUL\",\n \"OMGScoots\",\n \"PagChomp\",\n \"PauseChamp\",\n \"peepoHappy\",\n \"Pepega\",\n \"PepeHands\",\n \"PepeLaugh\",\n \"PepoG\",\n \"PepoThink\",\n \"Pog\",\n \"PogCena\",\n \"POGGERS\",\n \"PogU\",\n \"PogYou\",\n \"PogZam\",\n \"REEeee\",\n \"Sadge\",\n \"SexyDaddy\",\n \"ThisIsFine\",\n \"WeirdChamp\",\n \"weSmart\",\n \"WICKED\",\n \"WideHard\",\n \"widepeepoHappy\",\n \"widepeepoSad\"\n ]\n}\n", "// Users can chat in the lobby, in the pregame, and in a game. Logic for the game chat box is\n// located separately in \"game/chat.ts\".\n\nimport type { ServerCommandChatData } from \"@hanabi-live/data\";\nimport { PROJECT_NAME } from \"@hanabi-live/data\";\nimport { SECOND_IN_MILLISECONDS, eRange, trimPrefix } from \"complete-common\";\nimport * as KeyCode from \"keycode-js\";\nimport linkifyHtml from \"linkify-html\";\nimport { globals } from \"./Globals\";\nimport { chatCommands } from \"./chatCommands\";\nimport { FADE_TIME_MS, TYPED_HISTORY_MAX_LENGTH } from \"./constants\";\nimport emojis from \"./json/emojis.json\";\nimport emotes from \"./json/emotes.json\";\nimport { Screen } from \"./lobby/types/Screen\";\nimport * as modals from \"./modals\";\n\nexport enum SelfChatMessageType {\n Normal,\n Info,\n Error,\n}\n\nconst emojiMap = new Map();\nconst emojiList: string[] = [];\nconst emoteList: string[] = [];\nlet chatLineNum = 1;\nlet lastPM = \"\";\nlet datetimeLastChatInput = Date.now();\nlet typedChatHistory: string[] = [];\nlet typedChatHistoryIndex: number | null = null;\nlet typedChatHistoryPrefix = \"\";\nlet tabCompleteWordListIndex: number | null = null;\nlet tabCompleteWordList: string[] = [];\nlet tabCompleteOriginalText = \"\";\n\nexport function init(): void {\n $(\"#lobby-chat-input\").on(\"input\", input);\n $(\"#lobby-chat-input\").on(\"keypress\", keypress(\"lobby\"));\n $(\"#lobby-chat-input\").on(\"keydown\", keydown);\n $(\"#lobby-chat-pregame-input\").on(\"input\", input);\n $(\"#lobby-chat-pregame-input\").on(\"keypress\", keypress(\"table\"));\n $(\"#lobby-chat-pregame-input\").on(\"keydown\", keydown);\n $(\"#game-chat-input\").on(\"input\", input);\n $(\"#game-chat-input\").on(\"keypress\", keypress(\"table\"));\n $(\"#game-chat-input\").on(\"keydown\", keydown);\n\n // Make an emoji list/map and ensure that there are no overlapping emoji.\n for (const [emojiName, emoji] of Object.entries(emojis)) {\n if (emojiMap.has(emojiName)) {\n throw new Error(`Duplicate emoji found: ${emojiName}`);\n }\n emojiMap.set(emojiName, emoji);\n emojiList.push(`:${emojiName}:`);\n // (We use surrounding colons since that is the way that emoji are detected.)\n }\n\n // Make an emote list/map and ensure that there are no overlapping emotes.\n const emoteMap = new Map(); // The map can be ephemeral.\n for (const emotesInCategory of Object.values(emotes)) {\n for (const emoteName of emotesInCategory) {\n if (emoteMap.has(emoteName)) {\n throw new Error(`Duplicate emote found: ${emoteName}`);\n }\n emoteMap.set(emoteName, true);\n emoteList.push(emoteName);\n }\n }\n\n // Retrieve the contents of the typed chat list from local storage (cookie).\n const typedChatHistoryString = localStorage.getItem(\"typedChatHistory\");\n if (\n typedChatHistoryString !== null &&\n typedChatHistoryString !== \"\" &&\n typedChatHistoryString !== \"[]\"\n ) {\n let potentialArray: unknown;\n try {\n potentialArray = JSON.parse(typedChatHistoryString);\n } catch {\n return;\n }\n\n if (Array.isArray(potentialArray)) {\n typedChatHistory = potentialArray as string[];\n }\n }\n}\n\nfunction input(this: HTMLElement, event: JQuery.Event) {\n const element = $(this);\n const text = element.val();\n if (typeof text !== \"string\") {\n throw new TypeError(\n \"The value of the element in the input function is not a string.\",\n );\n }\n\n // If this is a pregame or game input, report to the server that we are typing. (But do not spam\n // the server with more than one message a second.)\n if (this.id !== \"lobby-chat-input\") {\n const datetimeNow = Date.now();\n if (datetimeNow - datetimeLastChatInput >= SECOND_IN_MILLISECONDS) {\n datetimeLastChatInput = datetimeNow;\n globals.conn!.send(\"chatTyping\", {\n tableID: globals.tableID,\n });\n }\n }\n\n // /r - A PM reply.\n if (text === \"/r \" && lastPM !== \"\") {\n element.val(`/pm ${lastPM} `);\n return;\n }\n\n // /shrug\n if (text === \"/shrug\") {\n element.val(String.raw`\u00AF\\_(\u30C4)_/\u00AF`);\n return;\n }\n\n // Check for emoji substitution.\n // e.g. :100: --> \uD83D\uDCAF\n const matches = text.match(/:\\S+:/g); // \"\\S\" is a non-whitespace character.\n if (matches !== null) {\n for (const match of matches) {\n const emojiName = match.slice(1, -1); // Strip off the colons\n\n const emoji = emojiMap.get(emojiName);\n if (emoji !== undefined) {\n const newText = text.replace(match, emoji);\n element.val(newText);\n event.preventDefault();\n return;\n }\n }\n }\n}\n\n// This cannot be a normal function since it uses `this`.\n// eslint-disable-next-line func-style\nconst keypress = (room: string) =>\n function keypressFunction(this: HTMLElement, event: JQuery.Event) {\n const element = $(this);\n\n // We have typed a new character, so reset the tab-complete variables.\n tabCompleteWordList = [];\n tabCompleteWordListIndex = null;\n typedChatHistoryIndex = null;\n\n if (event.which === KeyCode.KEY_RETURN) {\n send(room, element);\n }\n };\n\nfunction send(room: string, element: JQuery) {\n let msg = element.val();\n if (typeof msg !== \"string\") {\n throw new TypeError(\"The value of the element is not a string.\");\n }\n msg = msg.trim();\n\n // Validate that they are accidentally broadcasting a private message reply.\n if (msg.startsWith(\"/r \")) {\n modals.showWarning(\n \"No-one has sent you a private message yet, so you cannot reply.\",\n );\n return;\n }\n\n // Clear the chat box.\n element.val(\"\");\n\n sendText(room, msg);\n}\n\nfunction sendText(room: string, msgRaw: string) {\n // Validate that they did not send an empty message.\n if (msgRaw === \"\") {\n return;\n }\n\n if (globals.muted) {\n modals.showWarning(\"You have been muted by an administrator.\");\n return;\n }\n\n // Emojis are normally replaced before the user presses enter. However, if they tab-complete an\n // emoji and then press enter before entering in any other keystrokes, then the non-replaced emoji\n // will be sent over the wire. Replace any non-replaced emoji before that happens.\n const msg = fillEmojis(msgRaw);\n\n // Use \"startsWith\" instead of \"===\" to work around an bug where the room can already have the\n // table number appended (e.g. \"table123\").\n let roomID = room;\n if (roomID.startsWith(\"table\")) {\n roomID = `table${globals.tableID}`;\n }\n\n // Add the chat message to the typed history so that we can use the up arrow later. (But only if\n // it isn't in the history already.)\n const index = typedChatHistory.indexOf(msg, 0);\n if (index > -1) {\n typedChatHistory.splice(index, 1);\n }\n const newLength = typedChatHistory.unshift(msg);\n\n // Prevent the typed history from getting too large.\n if (newLength > TYPED_HISTORY_MAX_LENGTH) {\n // Pop off the final element.\n typedChatHistory.pop();\n }\n\n // Save the typed chat history to local storage (cookie).\n localStorage.setItem(\"typedChatHistory\", JSON.stringify(typedChatHistory));\n\n // Reset the typed history index.\n typedChatHistoryPrefix = \"\";\n typedChatHistoryIndex = null;\n\n // Check for chat commands. Each chat command should also have an error handler in\n // \"chat_command.go\" (in case someone tries to use the command from Discord).\n const args = msg.split(\" \");\n const firstArg = args[0];\n if (firstArg !== undefined && firstArg.startsWith(\"/\")) {\n const command = trimPrefix(firstArg, \"/\").toLowerCase();\n args.shift(); // Remove the command from the rest of the arguments.\n\n const chatCommandFunction = chatCommands.get(command);\n if (chatCommandFunction !== undefined) {\n chatCommandFunction(roomID, args);\n return;\n }\n }\n\n // This is not a command, so send a the chat message to the server.\n globals.conn!.send(\"chat\", {\n msg,\n room: roomID,\n });\n}\n\nfunction keydown(this: HTMLElement, event: JQuery.Event) {\n const element = $(this);\n\n // The up and down arrows are only caught in the \"keydown\" event:\n // https://stackoverflow.com/questions/5597060/detecting-arrow-key-presses-in-javascript\n // The tab key is only caught in the \"keydown\" event because it switches the input focus.\n switch (event.which) {\n // 8, 46\n case KeyCode.KEY_BACK_SPACE:\n case KeyCode.KEY_DELETE: {\n typedChatHistoryIndex = null;\n break;\n }\n\n // 9\n case KeyCode.KEY_TAB: {\n event.preventDefault();\n tab(element, event);\n break;\n }\n\n // 38\n case KeyCode.KEY_UP: {\n event.preventDefault();\n arrowUp(element);\n break;\n }\n\n // 40\n case KeyCode.KEY_DOWN: {\n event.preventDefault();\n arrowDown(element);\n break;\n }\n\n default: {\n break;\n }\n }\n}\n\nfunction historyMatchNext(current: string, increment: number): string | null {\n if (typedChatHistoryIndex === null) {\n if (increment < 0) {\n return null;\n }\n typedChatHistoryIndex = -1;\n typedChatHistoryPrefix = current;\n }\n const oldIndex = typedChatHistoryIndex;\n do {\n typedChatHistoryIndex += increment;\n // Stay within bounds of history.\n if (typedChatHistoryIndex >= typedChatHistory.length) {\n typedChatHistoryIndex = oldIndex;\n return current;\n }\n if (typedChatHistoryIndex < 0) {\n typedChatHistoryIndex = -1;\n return typedChatHistoryPrefix;\n }\n } while (\n // Only accept history if it matches prefix.\n !typedChatHistory[typedChatHistoryIndex]!.startsWith(typedChatHistoryPrefix)\n );\n return typedChatHistory[typedChatHistoryIndex]!;\n}\n\nfunction arrowUp(element: JQuery) {\n const retrievedHistory = historyMatchNext(String(element.val() ?? \"\"), 1);\n // Set the chat input box to what we last typed.\n element.val(retrievedHistory ?? \"\");\n}\n\nfunction arrowDown(element: JQuery) {\n const retrievedHistory = historyMatchNext(String(element.val() ?? \"\"), -1);\n // Set the chat input box to what we last typed.\n element.val(retrievedHistory ?? \"\");\n}\n\nfunction tab(element: JQuery, event: JQuery.Event) {\n // Parse the final word from what we have typed so far.\n let message = element.val();\n if (typeof message !== \"string\") {\n message = \"\";\n }\n message = message.trim();\n const messageWords = message.split(\" \");\n const finalWord = messageWords.at(-1)!;\n\n // Increment the tab counter.\n if (tabCompleteWordListIndex === null) {\n tabInitAutoCompleteList(event, finalWord);\n } else if (event.shiftKey === true) {\n // Shift-tab goes backwards\n tabCompleteWordListIndex--;\n if (tabCompleteWordListIndex === -1) {\n tabCompleteWordListIndex = null;\n }\n } else {\n // Tab goes forwards.\n tabCompleteWordListIndex++;\n if (tabCompleteWordListIndex === tabCompleteWordList.length) {\n tabCompleteWordListIndex = null;\n }\n }\n\n if (tabCompleteWordListIndex === null) {\n // We have rotated through all of the possible auto-complete entries (or there are no\n // auto-complete matches for this particular sequence of text), so return the original text.\n messageWords[messageWords.length - 1] = tabCompleteOriginalText;\n element.val(messageWords.join(\" \"));\n return;\n }\n\n // Replace the final word with the new auto-complete word.\n const autoCompleteWord = tabCompleteWordList[tabCompleteWordListIndex]!;\n messageWords[messageWords.length - 1] = autoCompleteWord;\n element.val(messageWords.join(\" \"));\n}\n\n/** This is the first time we are pressing tab on this particular sequence of text. */\nfunction tabInitAutoCompleteList(event: JQuery.Event, finalWord: string) {\n // Save our current partially-completed word in case we need to cycle back to it later.\n tabCompleteOriginalText = finalWord;\n\n // Make a list of the currently connected users.\n const userList: string[] = [];\n for (const user of globals.userMap.values()) {\n userList.push(user.name);\n }\n\n // Combine it with the list of emotes and the list of emoji.\n const usersAndEmojisAndEmotesList = [...userList, ...emojiList, ...emoteList];\n usersAndEmojisAndEmotesList.sort(\n // We want to do a case-insensitive sort, which will not occur by default.\n (a, b) => a.toLowerCase().localeCompare(b.toLowerCase()),\n );\n fixCustomEmotePriority(usersAndEmojisAndEmotesList);\n\n // Create a list of all the things that could match what we have typed thus far.\n tabCompleteWordList = [];\n for (const word of usersAndEmojisAndEmotesList) {\n const partialWord = word.slice(0, finalWord.length);\n if (partialWord.toLowerCase() === finalWord.toLowerCase()) {\n tabCompleteWordList.push(word);\n }\n }\n\n // If there were no possible matches, keep the \"tabCompleteWordListIndex\" as null as return.\n if (tabCompleteWordList.length === 0) {\n return;\n }\n\n // Set the starting index, depending on whether or not we are pressing shift:\n // - Shift-tab goes backwards.\n // - Tab goes forwards.\n tabCompleteWordListIndex =\n event.shiftKey === true ? tabCompleteWordList.length - 1 : 0;\n}\n\n// eslint-disable-next-line complete/prefer-readonly-parameter-types\nfunction fixCustomEmotePriority(usersAndEmotesList: string[]) {\n // Prioritize the more commonly used NotLikeThis over NootLikeThis.\n const notLikeThisIndex = usersAndEmotesList.indexOf(\"NotLikeThis\");\n const nootLikeThisIndex = usersAndEmotesList.indexOf(\"NootLikeThis\");\n usersAndEmotesList[notLikeThisIndex] = \"NootLikeThis\";\n usersAndEmotesList[nootLikeThisIndex] = \"NotLikeThis\";\n\n // Prioritize the more commonly used Kappa over Kadda.\n const kappaIndex = usersAndEmotesList.indexOf(\"Kappa\");\n const kaddaIndex = usersAndEmotesList.indexOf(\"Kadda\");\n usersAndEmotesList[kaddaIndex] = \"Kappa\";\n usersAndEmotesList[kappaIndex] = \"Kadda\";\n\n let tempEmote1: string;\n\n // Prioritize the more commonly used FrankerZ over all the other Franker emotes.\n const frankerBIndex = usersAndEmotesList.indexOf(\"FrankerB\");\n const frankerZIndex = usersAndEmotesList.indexOf(\"FrankerZ\");\n tempEmote1 = usersAndEmotesList[frankerBIndex]!;\n usersAndEmotesList[frankerBIndex] = \"FrankerZ\";\n for (const i of eRange(frankerBIndex, frankerZIndex)) {\n const tempEmote2 = usersAndEmotesList[i + 1]!;\n usersAndEmotesList[i + 1] = tempEmote1;\n tempEmote1 = tempEmote2;\n }\n\n // Prioritize the more commonly used monkaS over all the other monka emotes.\n const monkaEyesIndex = usersAndEmotesList.indexOf(\"monkaEyes\");\n const monkaSIndex = usersAndEmotesList.indexOf(\"monkaS\");\n tempEmote1 = usersAndEmotesList[monkaEyesIndex]!;\n usersAndEmotesList[monkaEyesIndex] = \"monkaS\";\n for (const i of eRange(monkaEyesIndex, monkaSIndex)) {\n const tempEmote2 = usersAndEmotesList[i + 1]!;\n usersAndEmotesList[i + 1] = tempEmote1;\n tempEmote1 = tempEmote2;\n }\n}\n\nexport function add(data: ServerCommandChatData, fast: boolean): void {\n // If we are receiving a private message (PM), record who it is from.\n if (data.recipient === globals.username && data.who !== undefined) {\n lastPM = data.who;\n }\n\n const chat = getChatBoxElement(data);\n if (chat === undefined) {\n return;\n }\n\n const msg = getPreparedMessage(data.msg);\n\n // Typescript has not implemented the required DateTimeFormat option (hourCycle: h23). So we\n // format the hours manually.\n const datetime = `${`0${new Date(data.datetime).getHours()}`.slice(\n -2,\n )}:${`0${new Date(data.datetime).getMinutes()}`.slice(-2)}`;\n\n let line = ``;\n line += `[${datetime}]  `;\n if (data.recipient !== undefined && data.recipient !== \"\") {\n line +=\n data.recipient === globals.username\n ? `[PM from ${data.who}]  `\n : `[PM to ${data.recipient}]  `;\n }\n if (data.server || (data.recipient !== undefined && data.recipient !== \"\")) {\n line += msg;\n } else if (data.who === \"\") {\n line += msg;\n } else {\n line += `<${data.who}>  `;\n line += msg;\n }\n if (data.server && line.includes(\"[Server Notice]\")) {\n line = line.replace(\n \"[Server Notice]\",\n '[Server Notice]',\n );\n }\n // Replace chat suggestions with anchors which, when clicked, are chat commands.\n if (chat.is($(\"#lobby-chat-pregame-text\"))) {\n const regex = /(.*)(@(\\/.*)@)(.*)/;\n let match = regex.exec(line);\n while (match !== null) {\n line = `${match[1]}${match[3]}${match[4]}`;\n match = regex.exec(line);\n }\n }\n line += \"\";\n\n // Find out if we should automatically scroll down after adding the new line of chat:\n // https://stackoverflow.com/questions/6271237/detecting-when-user-scrolls-to-bottom-of-div-with-jquery\n // If we are already scrolled to the bottom, then it is ok to automatically scroll. scrollTop can\n // be a fractional value for some reason. pxEpsilon is an acceptable range defined in pixels (e.g.\n // +-2 px).\n const pxEpsilon = 2;\n const firstChat = chat[0]!;\n const autoScroll =\n Math.abs(\n firstChat.clientHeight + firstChat.scrollTop - firstChat.scrollHeight,\n ) < pxEpsilon;\n\n // Add the new line and fade it in.\n chat.append(line);\n $(`#chat-line-${chatLineNum}`).fadeIn(FADE_TIME_MS).css(\"display\", \"block\");\n $(`#chat-line-${chatLineNum} a.suggestion`).each((_, element) => {\n const chatInput = $(\"#lobby-chat-pregame-input\");\n $(element).on(\"click\", () => {\n if (element.textContent !== null) {\n chatInput.val(element.textContent);\n }\n chatInput.trigger(\"focus\");\n });\n });\n chatLineNum++;\n\n // Automatically scroll down.\n if (autoScroll) {\n // From: https://stackoverflow.com/questions/270612/scroll-to-bottom-of-div?rq=1\n // This must be executable asynchronously in order to work properly\n setTimeout(\n (element: HTMLElement) => {\n element.scrollTop = element.scrollHeight;\n },\n 0,\n chat[0],\n );\n }\n\n // Remove the person from the typing list, if present.\n if (data.who !== undefined) {\n const index = globals.peopleTyping.indexOf(data.who);\n if (index !== -1) {\n globals.peopleTyping.splice(index, 1);\n updatePeopleTyping();\n }\n }\n}\n\n/** Find out which chat box we should add the new chat message to. */\nfunction getChatBoxElement(data: ServerCommandChatData): JQuery | undefined {\n if (data.room === \"lobby\") {\n return $(\"#lobby-chat-text\");\n }\n\n if (data.room !== undefined && data.room.startsWith(\"table\")) {\n if (globals.currentScreen === Screen.PreGame) {\n return $(\"#lobby-chat-pregame-text\");\n }\n\n if (globals.currentScreen === Screen.Game) {\n return $(\"#game-chat-text\");\n }\n\n // Ignore table chat if we are not in a pre-game and not in a game.\n return undefined;\n }\n\n // A blank room indicates a private message (PM). PMs do not have a room associated with them, so\n // we default to displaying them on the chat window that the user currently has open.\n if (data.room === undefined || data.room === \"\") {\n if (globals.currentScreen === Screen.PreGame) {\n return $(\"#lobby-chat-pregame-text\");\n }\n\n if (globals.currentScreen === Screen.Game) {\n return $(\"#game-chat-text\");\n }\n\n return $(\"#lobby-chat-text\");\n }\n\n return undefined;\n}\n\n/** Add links, Discord emotes, and Twitch emotes. */\nfunction getPreparedMessage(rawMsg: string) {\n let msg = rawMsg;\n\n // Automatically generate links from any URLs that are present in the message. (We must use\n // \"linkifyjs/html\" instead of \"linkifyjs/string\" because the latter will convert \">\" to\n // \"&gt;\", and the server has already escaped HTML input.)\n msg = linkifyHtml(msg, {\n target: \"_blank\",\n attributes: {\n rel: \"noopener noreferrer\",\n },\n });\n\n // Convert emotes to images.\n msg = fillDiscordEmotes(msg);\n msg = fillTwitchEmotes(msg);\n\n return msg;\n}\n\n// Discord emotes are in the form of: <:PogChamp:254683883033853954>\nfunction fillDiscordEmotes(message: string) {\n let filledMessed = message;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n while (true) {\n const match = /<:(.+?):(\\d+?)>/.exec(filledMessed);\n if (match === null) {\n break;\n }\n\n const emoteTag = ``;\n filledMessed = filledMessed.replace(match[0], emoteTag);\n }\n\n return filledMessed;\n}\n\nfunction fillEmojis(message: string) {\n let filledMessage = message;\n\n // Search through the text for each emoji.\n for (const [emojiName, emoji] of Object.entries(emojis)) {\n const emojiTag = `:${emojiName}:`;\n const index = message.indexOf(emojiTag);\n if (index !== -1) {\n filledMessage = filledMessage.replace(emojiTag, emoji);\n }\n }\n\n return filledMessage;\n}\n\nfunction fillTwitchEmotes(message: string) {\n let filledMessage = message;\n\n // Search through the text for each emote.\n for (const [categoryName, emotesInCategory] of Object.entries(emotes)) {\n const emoteArray = [...emotesInCategory];\n for (const emote of emoteArray) {\n // We do not want to replace the emote if it is followed by a quote, because we do not want to\n // replace Discord emotes.\n const index = message.indexOf(emote);\n if (index !== -1 && message[index + emote.length] !== '\"') {\n const re = new RegExp(`\\\\b${emote}\\\\b`, \"g\"); // \"\\b\" is a word boundary in regex.\n const emoteTag = ``;\n filledMessage = filledMessage.replace(re, emoteTag);\n }\n }\n }\n\n // Also handle emotes that have special characters in them.\n if (filledMessage.includes(\"<3\")) {\n // The Twitch heart emote.\n const emoteTag =\n '';\n const re = /<3/g; // \"\\b\" won't work with a semicolon.\n filledMessage = filledMessage.replaceAll(re, emoteTag);\n }\n if (filledMessage.includes(\"D:\")) {\n // A BetterTwitchTV emote.\n const emoteTag =\n '';\n // From: https://stackoverflow.com/questions/4134605/regex-and-the-colon\n const re = /(^|\\s)D:(\\s|$)/g; // \"\\b\" won't work with a colon\n filledMessage = filledMessage.replaceAll(re, ` ${emoteTag} `); // We have to re-add the spaces.\n }\n\n return filledMessage;\n}\n\nexport function updatePeopleTyping(): void {\n const typingMessage = getTypingMessage();\n\n const chat1 = $(\"#lobby-chat-pregame-istyping\");\n chat1.html(typingMessage);\n\n const chat2 = $(\"#game-chat-istyping\");\n chat2.html(typingMessage);\n}\n\nfunction getTypingMessage(): string {\n switch (globals.peopleTyping.length) {\n case 0: {\n return \"\";\n }\n\n case 1: {\n return `${globals.peopleTyping[0]} is typing...`;\n }\n\n case 2: {\n return `${globals.peopleTyping[0]} and ${globals.peopleTyping[1]} are typing...`;\n }\n\n case 3: {\n return `${globals.peopleTyping[0]}, ${globals.peopleTyping[1]}, and ${globals.peopleTyping[2]} are typing...`;\n }\n\n default: {\n return \"Several people are typing...\";\n }\n }\n}\n\n// This is used when the client needs to send a chat message to itself.\nexport function sendSelfPMFromServer(\n msg: string,\n room: string,\n type = SelfChatMessageType.Normal,\n): void {\n const message = formatChatMessage(msg, type);\n add(\n {\n msg: message,\n who: PROJECT_NAME,\n discord: false,\n server: true,\n datetime: new Date().toString(),\n room,\n recipient: globals.username,\n },\n false,\n );\n}\n\nfunction formatChatMessage(msg: string, type: SelfChatMessageType): string {\n switch (type) {\n case SelfChatMessageType.Normal: {\n return msg;\n }\n\n case SelfChatMessageType.Info: {\n return `${msg}`;\n }\n\n case SelfChatMessageType.Error: {\n return `${msg}`;\n }\n }\n}\n", "import { PROJECT_NAME } from \"@hanabi-live/data\";\nimport { showError } from \"./modals\";\n\n/** Initialize a global error handler that will show errors to the end-user. */\nexport function initErrorListener(): void {\n window.addEventListener(\"error\", (errorEvent) => {\n const stackTrace = getErrorStackTrace(errorEvent) ?? errorEvent.message;\n const formattedStackTrace = `
    ${stackTrace}
    `;\n\n const reportInstructions = `\n In order to make the website better, please report this error along with steps that you did to\n cause it. You can report it:\n \n When reporting, please copy/paste the stack-trace above as text, rather than showing a screenshot.\n `;\n\n const iosText = `You appear to be using an iPhone/iPad/iPod device (i.e. iOS). ${PROJECT_NAME} does not support Apple devices, so the above error might be an iOS-specific error. Please use a desktop PC to access the site, or refresh the page to try again`;\n\n const messageSuffix = isIoS() ? iosText : reportInstructions;\n showError(formattedStackTrace + messageSuffix);\n });\n}\n\nfunction getErrorStackTrace(errorEvent: ErrorEvent): string | undefined {\n const error = errorEvent.error as unknown; // Cast from `any` to `unknown`.\n return typeof error === \"object\" &&\n error !== null &&\n \"stack\" in error &&\n typeof error.stack === \"string\"\n ? error.stack\n : undefined;\n}\n\n/**\n * @see\n * https://stackoverflow.com/questions/57765958/how-to-detect-ipad-and-ipad-os-version-in-ios-13-and-up\n */\nfunction isIoS() {\n const standaloneProp = (navigator as unknown as Record)[\n \"standalone\"\n ];\n return (\n /iPad|iPhone|iPod/.test(navigator.userAgent) ||\n (navigator.platform === \"MacIntel\" && standaloneProp !== undefined)\n );\n}\n", "// In-game chat\n\nimport { assertNotNull, parseFloatSafe } from \"complete-common\";\nimport interact from \"interactjs\";\nimport { globals } from \"../Globals\";\nimport { FADE_TIME_MS } from \"../constants\";\nimport { getHTMLElement } from \"../utils\";\n\nconst gameChatText = getHTMLElement(\"#game-chat-text\");\n\nexport function init(): void {\n // Make the chat modal draggable (using the InteractJS library).\n interact(\".draggable\")\n .draggable({\n allowFrom: \"#game-chat-modal-header\",\n\n // Keep the modal within the bounds of the page. (The parent is the element.)\n modifiers: [\n interact.modifiers.restrictRect({\n restriction: \"parent\",\n }),\n ],\n\n // Define the drag behavior.\n onmove: (event: Interact.InteractEvent) => {\n // The old position is stored in the \"data-x\" and \"data-y\" attributes.\n const oldXString = event.target.dataset[\"x\"] ?? \"\";\n const oldYString = event.target.dataset[\"y\"] ?? \"\";\n const oldX = parseFloatSafe(oldXString) ?? 0;\n const oldY = parseFloatSafe(oldYString) ?? 0;\n\n // Move it,\n const newX = oldX + event.dx;\n const newY = oldY + event.dy;\n const element = $(`#${event.target.id}`);\n moveElement(element, newX, newY);\n },\n })\n\n .resizable({\n // Resize from all edges and corners.\n edges: {\n // We do not want it to be resizable from the top since it interferes with the area\n // dedicated to moving the div.\n left: true,\n right: true,\n bottom: true,\n },\n\n ignoreFrom: \"#game-chat-modal-header\",\n\n modifiers: [\n // Keep the modal within the bounds of the page. (The parent is the element.)\n interact.modifiers.restrictEdges({\n outer: \"parent\",\n }),\n\n // Define a minimum size for the modal.\n interact.modifiers.restrictSize({\n min: {\n width: 200,\n height: 200,\n },\n }),\n ],\n })\n\n .on(\"resizemove\", (event: Interact.ResizeEvent) => {\n if (event.deltaRect === undefined) {\n return;\n }\n\n // The old position is stored in the \"data-x\" and \"data-y\" attributes.\n const oldXString = event.target.dataset[\"x\"] ?? \"\";\n const oldYString = event.target.dataset[\"y\"] ?? \"\";\n const oldX = parseFloatSafe(oldXString) ?? 0;\n const oldY = parseFloatSafe(oldYString) ?? 0;\n\n // Translate when resizing from top or left edges.\n const newX = oldX + event.deltaRect.left;\n const newY = oldY + event.deltaRect.top;\n\n // Move it.\n const element = $(`#${event.target.id}`);\n moveElement(element, newX, newY);\n\n // Resize it.\n event.target.style.width = `${event.rect.width}px`;\n event.target.style.height = `${event.rect.height}px`;\n })\n\n .on(\"dragend resizeend\", (event: Interact.InteractEvent) => {\n // The modal was moved or resized; store the window dimensions in a cookie so that it will\n // persist between refreshes.\n localStorage.setItem(\"chatWindowWidth\", event.target.style.width);\n localStorage.setItem(\"chatWindowHeight\", event.target.style.height);\n localStorage.setItem(\"chatWindowX\", event.target.dataset[\"x\"] ?? \"0\");\n localStorage.setItem(\"chatWindowY\", event.target.dataset[\"y\"] ?? \"0\");\n });\n\n $(\"#game-chat-modal-header-close\").click(() => {\n hide();\n });\n}\n\nexport function toggle(): void {\n const modal = $(\"#game-chat-modal\");\n if (modal.is(\":visible\")) {\n hide();\n } else {\n show();\n }\n}\n\nexport function show(): void {\n const modal = $(\"#game-chat-modal\");\n modal.fadeIn(FADE_TIME_MS);\n\n // Check to see if there are any unread chat messages.\n if (globals.chatUnread !== 0) {\n // If the user is opening the chat, then we assume that all of the chat messages are read.\n globals.chatUnread = 0;\n\n // We need to notify the server that we have read everything.\n assertNotNull(\n globals.conn,\n 'The \"globals.conn\" object is not initialized.',\n );\n globals.conn.send(\"chatRead\", {\n tableID: globals.tableID,\n });\n\n // Reset the \"Chat\" UI button back to normal.\n assertNotNull(globals.ui, 'The \"globals.ui\" object is not initialized.');\n globals.ui.updateChatLabel();\n }\n\n // Set the modal to the default position.\n modal.css(\"width\", \"20%\");\n modal.css(\"height\", \"50%\");\n modal.css(\"top\", \"1%\");\n modal.css(\"left\", \"79%\");\n\n // If there is a stored size + position for the chat box, set that.\n let resetPosition = true;\n const width = localStorage.getItem(\"chatWindowWidth\") ?? \"\";\n const height = localStorage.getItem(\"chatWindowHeight\") ?? \"\";\n const xString = localStorage.getItem(\"chatWindowX\") ?? \"\";\n const yString = localStorage.getItem(\"chatWindowY\") ?? \"\";\n\n if (width !== \"\" && height !== \"\" && xString !== \"\" && yString !== \"\") {\n resetPosition = false;\n\n modal.css(\"width\", width);\n modal.css(\"height\", height);\n\n const x = parseFloatSafe(xString);\n const y = parseFloatSafe(yString);\n\n if (x !== undefined && y !== undefined) {\n moveElement(modal, x, y);\n }\n\n // Just in case, reset the size and position if the stored location puts the chat box offscreen.\n // (This is possible if the window size has changed since the last time.)\n if (isOffscreen(modal)) {\n resetPosition = true;\n }\n }\n\n if (resetPosition) {\n modal.css(\"width\", \"20%\");\n modal.css(\"height\", \"50%\");\n modal.css(\"webkitTransform\", \"translate(0px, 0px)\");\n modal.css(\"transform\", \"translate(0px, 0px)\");\n modal.attr(\"data-x\", 0);\n modal.attr(\"data-y\", 0);\n }\n\n // Scroll to the bottom of the chat.\n gameChatText.scrollTop = gameChatText.scrollHeight;\n\n $(\"#game-chat-input\").trigger(\"focus\");\n}\n\nexport function hide(): void {\n $(\"#game-chat-modal\").fadeOut(FADE_TIME_MS);\n}\n\n/** Subroutine to move an element (using the \"transform\" CSS property). */\nfunction moveElement(element: JQuery, x: number, y: number) {\n // Update the element's style.\n const transform = `translate(${x}px, ${y}px)`;\n element.css(\"webkitTransform\", transform);\n element.css(\"transform\", transform);\n\n // Keep the dragged position in the \"data-x\" & \"data-y\" attributes.\n element.attr(\"data-x\", x);\n element.attr(\"data-y\", y);\n}\n\n/** From: https://stackoverflow.com/questions/8897289/how-to-check-if-an-element-is-off-screen */\nfunction isOffscreen(element: JQuery) {\n const domElement = element[0]!;\n const rect = domElement.getBoundingClientRect();\n return (\n rect.top < 0 || // Above the top\n rect.bottom > window.innerHeight || // Below the bottom\n rect.left < 0 || // Left of the left edge\n rect.right > window.innerWidth // Right of the right edge\n );\n}\n", "// Functions for timed games (and the timer that ticks up in untimed games).\n\nimport type { PlayerIndex } from \"@hanabi-live/game\";\nimport { millisecondsToClockString } from \"@hanabi-live/game\";\nimport * as tooltips from \"../../tooltips\";\nimport { SoundType } from \"../types/SoundType\";\nimport { globals } from \"./UIGlobals\";\nimport type { TimerDisplay } from \"./controls/TimerDisplay\";\nimport { drawLayer } from \"./konvaHelpers\";\n\nexport interface ClockData {\n times: number[];\n\n /** -1 if the game just ended. */\n activePlayerIndex: PlayerIndex | -1;\n\n timeTaken: number;\n}\n\n/**\n * This function handles the \"clock\" WebSocket command. It is sent at the beginning of every turn to\n * update the client about how much time each player has left. It has the following data:\n *\n * ```ts\n * {\n * times: [100, 200], // A list of the times for each player.\n * activePlayerIndex: 0,\n * timeTaken: 500, // The amount of time that has elapsed since the turn began.\n * }\n * ```\n */\nexport function update(data: ClockData): void {\n stop();\n\n // We do not need to update the timers if they are not showing.\n if (globals.elements.timer1 === null || globals.elements.timer2 === null) {\n return;\n }\n\n // We do not need to update the timers if the game is paused. (The server will send another\n // \"clock\" message when the game becomes unpaused.)\n if (globals.state.pause.active) {\n return;\n }\n\n // Record the data\n globals.playerTimes = data.times;\n globals.activePlayerIndex = data.activePlayerIndex;\n globals.timeTaken = data.timeTaken;\n\n // Keep track of what the active player's time was when they started their turn.\n globals.startingTurnTime = globals.playerTimes[data.activePlayerIndex]!;\n\n // Mark the time that we updated the local player times.\n globals.lastTimerUpdateTimeMS = Date.now();\n\n // Update onscreen time displays.\n if (globals.state.playing) {\n // The visibility of the first timer does not change during a game.\n let time = globals.playerTimes[globals.metadata.ourPlayerIndex]!;\n if (!globals.options.timed) {\n // Invert it to show how much time each player is taking.\n time *= -1;\n }\n\n const text = millisecondsToClockString(time);\n globals.elements.timer1.setTimerText(text);\n }\n\n const ourTurn =\n globals.state.playing &&\n data.activePlayerIndex === globals.metadata.ourPlayerIndex;\n if (!ourTurn) {\n // Update the UI with the value of the timer for the active player.\n let time = globals.playerTimes[data.activePlayerIndex]!;\n if (!globals.options.timed) {\n // Invert it to show how much time each player is taking.\n time *= -1;\n }\n\n const text = millisecondsToClockString(time);\n globals.elements.timer2.setTimerText(text);\n\n if (data.activePlayerIndex !== -1) {\n const activePlayerName =\n globals.metadata.playerNames[data.activePlayerIndex];\n if (activePlayerName !== undefined) {\n globals.elements.timer2.setLabelText(activePlayerName);\n }\n }\n }\n\n globals.elements.timer2.visible(!ourTurn && data.activePlayerIndex !== -1);\n globals.layers.timer.batchDraw();\n\n // Update the timer tooltips for each player.\n for (const i of globals.playerTimes.keys()) {\n const playerIndex = i as PlayerIndex;\n setTickingDownTimePlayerNameTooltip(playerIndex);\n }\n setTickingDownTimeCurrentPlayerTooltip();\n\n // The server will send an active player index of -1 when the game is over.\n if (data.activePlayerIndex === -1) {\n return;\n }\n\n // Reset both timers to black background, if player was running out of time.\n globals.elements.timer1.oval.fill(\"black\").opacity(0.2);\n globals.elements.timer2.oval.fill(\"black\").opacity(0.2);\n\n // Start the local timer for the active player.\n const activeTimer = ourTurn\n ? globals.elements.timer1\n : globals.elements.timer2;\n globals.timerID = window.setInterval(() => {\n setTickingDownTime(activeTimer);\n setTickingDownTimePlayerNameTooltip(data.activePlayerIndex);\n setTickingDownTimeCurrentPlayerTooltip();\n globals.elements.deck?.updateDeckTooltip();\n }, 1000);\n}\n\nexport function stop(): void {\n if (globals.timerID !== null) {\n window.clearInterval(globals.timerID);\n globals.timerID = null;\n }\n}\n\nfunction setTickingDownTime(timer: TimerDisplay) {\n // Calculate the elapsed time since the last timer update.\n const now = Date.now();\n const elapsedTime = now - globals.lastTimerUpdateTimeMS;\n globals.lastTimerUpdateTimeMS = now;\n if (elapsedTime < 0) {\n return;\n }\n\n // Update the time in local array to approximate server times.\n globals.playerTimes[globals.activePlayerIndex]! -= elapsedTime;\n if (\n globals.options.timed &&\n globals.playerTimes[globals.activePlayerIndex]! < 0\n ) {\n // Do not let the timer go into negative values, or else it will mess up the display. (But in\n // non-timed games, we want this to happen.)\n globals.playerTimes[globals.activePlayerIndex] = 0;\n }\n\n let millisecondsLeft = globals.playerTimes[globals.activePlayerIndex]!;\n if (!globals.options.timed) {\n // Invert it to show how much time each player is taking.\n millisecondsLeft *= -1;\n }\n const text = millisecondsToClockString(millisecondsLeft);\n timer.setTimerText(text);\n drawLayer(timer);\n\n // Play a sound to indicate that the current player is almost out of time. Do not play it more\n // frequently than about once per second.\n if (\n globals.options.timed &&\n globals.lobby.settings.soundTimer &&\n millisecondsLeft > 0 && // Between 0 and 10 seconds\n millisecondsLeft <= 10_000 &&\n elapsedTime > 900 &&\n elapsedTime < 1100 &&\n !globals.state.pause.active &&\n !globals.lobby.errorOccurred\n ) {\n timer.oval.opacity(timer.oval.fill() === \"black\" ? 0.7 : 0.2);\n timer.oval.fill(timer.oval.fill() === \"black\" ? \"red\" : \"black\");\n globals.game!.sounds.play(SoundType.Tone);\n }\n}\n\n/** Update the tooltip that appears when you hover over a player's name. */\nfunction setTickingDownTimePlayerNameTooltip(playerIndex: PlayerIndex | -1) {\n if (playerIndex === -1) {\n return;\n }\n\n // This tooltip is disabled in speedrun mode.\n if (globals.lobby.settings.speedrunMode || globals.options.speedrun) {\n return;\n }\n\n const playerTime = globals.playerTimes[playerIndex];\n if (playerTime === undefined) {\n return;\n }\n\n // Invert it to show how much time each player is taking.\n const milliseconds = globals.options.timed ? playerTime : playerTime * -1;\n\n let content = \"Time \";\n content += globals.options.timed ? \"remaining\" : \"taken\";\n content += \":
    \";\n content += millisecondsToClockString(milliseconds);\n content += \"\";\n tooltips.setInstanceContent(`#tooltip-player-${playerIndex}`, content);\n}\n\nfunction setTickingDownTimeCurrentPlayerTooltip() {\n // This tooltip is disabled in non-timed games.\n if (!globals.options.timed && !globals.lobby.settings.showTimerInUntimed) {\n return;\n }\n\n // Update the tooltip that appears when you hover over the current player's timer. Use absolute\n // values because time is measured in negative values in non-timed games.\n let time =\n Math.abs(globals.startingTurnTime) -\n Math.abs(globals.playerTimes[globals.activePlayerIndex]!);\n\n // We subtract the amount of time that passed since the beginning of the turn (as reported by the\n // server in the \"clock\" message). This is necessary since the client will not know how much time\n // has elapsed in the situation where they refresh the page in the middle of an ongoing turn.\n // \"globals.timeTaken\" will be 0 if the client was connected when the turn began.\n time -= Math.abs(globals.timeTaken);\n\n let content = \"Time taken on this turn:
    \";\n content += millisecondsToClockString(time);\n content += \"\";\n tooltips.setInstanceContent(\"#tooltip-time-taken\", content);\n}\n", "import * as chat from \"../../chat\";\nimport { setBrowserAddressBarPath } from \"../../utils\";\nimport { globals } from \"./UIGlobals\";\nimport * as konvaTooltips from \"./konvaTooltips\";\nimport * as timer from \"./timer\";\n\nexport function backToLobby(): void {\n // Hide the tooltip, if showing.\n konvaTooltips.resetActiveHover();\n\n // Stop any timer-related callbacks.\n timer.stop();\n\n // Clear the typing list.\n globals.lobby.peopleTyping = [];\n chat.updatePeopleTyping();\n\n // Update the address bar.\n setBrowserAddressBarPath(\"/lobby\");\n\n globals.lobby.conn!.send(\"tableUnattend\", {\n tableID: globals.lobby.tableID,\n });\n globals.game!.hide();\n}\n", "import { globals } from \"./UIGlobals\";\n\nexport function setGlobalEmpathy(enabled: boolean): void {\n if (enabled === globals.globalEmpathyEnabled) {\n return;\n }\n\n globals.globalEmpathyEnabled = enabled;\n for (const hand of globals.elements.playerHands) {\n hand.setEmpathy(enabled);\n }\n}\n", "// Functions for handling all of the keyboard shortcuts.\n\nimport type { CardOrder } from \"@hanabi-live/game\";\nimport {\n getAdjustedClueTokens,\n getTotalCardsInDeck,\n isAtMaxClueTokens,\n} from \"@hanabi-live/game\";\nimport { parseIntSafe } from \"complete-common\";\nimport * as KeyCode from \"keycode-js\";\nimport type Konva from \"konva\";\nimport { Screen } from \"../../lobby/types/Screen\";\nimport { closeModals, isModalVisible, showPrompt } from \"../../modals\";\nimport {\n copyStringToClipboard,\n getHTMLElement,\n getHTMLInputElement,\n} from \"../../utils\";\nimport { ActionType } from \"../types/ActionType\";\nimport { ReplayActionType } from \"../types/ReplayActionType\";\nimport { SoundType } from \"../types/SoundType\";\nimport { HanabiCard } from \"./HanabiCard\";\nimport { globals } from \"./UIGlobals\";\nimport { backToLobby } from \"./backToLobby\";\nimport * as clues from \"./clues\";\nimport * as hypothetical from \"./hypothetical\";\nimport * as replay from \"./replay\";\nimport { setGlobalEmpathy } from \"./setGlobalEmpathy\";\nimport * as turn from \"./turn\";\n\ntype Callback = () => void;\n\nconst hotkeyClueMap = new Map();\nconst hotkeyPlayMap = new Map();\nconst hotkeyDiscardMap = new Map();\n\nconst playDiscardButton = getHTMLElement(\"#play-discard-button\");\nconst playDiscardCard = getHTMLInputElement(\"#play-discard-card\");\nconst playDiscardMessage = getHTMLElement(\"#play-discard-message\");\nconst playDiscardTitle = getHTMLElement(\"#play-discard-title\");\n\n// Build a mapping of hotkeys to functions.\nexport function init(): void {\n hotkeyClueMap.clear();\n hotkeyPlayMap.clear();\n hotkeyDiscardMap.clear();\n\n // Add \"Tab\" for player selection.\n hotkeyClueMap.set(KeyCode.KEY_TAB, () => {\n if (globals.state.replay.hypothetical === null) {\n globals.elements.clueTargetButtonGroup!.selectNextTarget();\n } else {\n globals.elements.clueTargetButtonGroup2!.selectNextTarget();\n }\n });\n\n // Add \"1\", \"2\", \"3\", \"4\", and \"5\" (for rank clues).\n for (const [\n i,\n rankClueButton,\n ] of globals.elements.rankClueButtons.entries()) {\n hotkeyClueMap.set(i + KeyCode.KEY_1, click(rankClueButton)); // Normal keyboard\n hotkeyClueMap.set(i + KeyCode.KEY_NUMPAD1, click(rankClueButton)); // Numpad\n }\n\n // Add \"q\", \"w\", \"e\", \"r\", \"t\", and \"y\" (for color clues). (We use qwert since they are\n // conveniently next to 12345, and also because the clue colors can change between different\n // variants.)\n const clueKeyRow = [\n KeyCode.KEY_Q,\n KeyCode.KEY_W,\n KeyCode.KEY_E,\n KeyCode.KEY_R,\n KeyCode.KEY_T,\n KeyCode.KEY_Y,\n ];\n for (\n let i = 0;\n i < globals.elements.colorClueButtons.length && i < clueKeyRow.length;\n i++\n ) {\n hotkeyClueMap.set(\n clueKeyRow[i]!,\n click(globals.elements.colorClueButtons[i]!),\n );\n }\n\n hotkeyPlayMap.set(KeyCode.KEY_A, play); // The main play hotkey\n hotkeyPlayMap.set(KeyCode.KEY_ADD, play); // For numpad users\n hotkeyDiscardMap.set(KeyCode.KEY_D, discard); // The main discard hotkey\n hotkeyDiscardMap.set(KeyCode.KEY_SUBTRACT, discard); // For numpad users\n\n // Enable all of the keyboard hotkeys.\n $(document).keydown(keydown);\n $(document).keyup(keyup);\n}\n\nexport function destroy(): void {\n $(document).unbind(\"keydown\", keydown);\n $(document).unbind(\"keyup\", keyup);\n}\n\nfunction keydown(event: JQuery.KeyDownEvent) {\n // Disable hotkeys if we not currently in a game. (This should not be possible, as the handler\n // gets unregistered upon going back to the lobby, but double check just in case.)\n if (globals.lobby.currentScreen !== Screen.Game) {\n return;\n }\n\n // Disable keyboard hotkeys if we are editing a note.\n if (globals.editingNote !== null) {\n return;\n }\n\n // Disable keyboard hotkeys if there's a visible modal.\n if (isModalVisible()) {\n return;\n }\n\n if (event.which === KeyCode.KEY_ESCAPE) {\n // Escape = If the chat is open, close it.\n if ($(\"#game-chat-modal\").is(\":visible\")) {\n globals.game!.chat.hide();\n return;\n }\n\n if (globals.state.replay.hypothetical !== null) {\n // Escape = If in a hypothetical, exit back to the replay.\n hypothetical.endHypothetical();\n return;\n }\n\n if (globals.state.finished) {\n // Escape = If in a replay, exit back to the lobby.\n backToLobby();\n return;\n }\n\n // Escape = If in an in-game replay, exit back to the game.\n replay.exit();\n return;\n }\n\n if (event.which === KeyCode.KEY_SPACE) {\n // Space bar. Do not activate global empathy if we are typing in the in-game chat.\n if ($(\"#game-chat-input\").is(\":focus\")) {\n return;\n }\n\n setGlobalEmpathy(true);\n return;\n }\n\n // Ctrl hotkeys\n if (event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {\n // Ctrl + Enter = Give a clue / click on the \"Give Clue\" button.\n if (event.which === KeyCode.KEY_RETURN) {\n clues.give(); // This function has validation inside of it\n return;\n }\n\n // Ctrl + c = Copy the current game ID.\n if (\n event.which === KeyCode.KEY_C &&\n globals.state.finished &&\n // Account for users copying text from the chat window.\n !$(\"#game-chat-modal\").is(\":visible\")\n ) {\n if (globals.state.replay.databaseID !== null) {\n copyStringToClipboard(globals.state.replay.databaseID.toString());\n }\n return;\n }\n }\n\n // Alt hotkeys\n if (event.altKey && !event.ctrlKey && !event.shiftKey && !event.metaKey) {\n // Sound hotkeys\n if (event.which === KeyCode.KEY_B) {\n // Alt + b. This is used for fun in shared replays.\n sharedReplaySendSound(\"buzz\");\n return;\n }\n if (event.which === KeyCode.KEY_H) {\n // Alt + h. This is used for fun in shared replays.\n sharedReplaySendSound(\"holy\");\n return;\n }\n if (event.which === KeyCode.KEY_N) {\n // Alt + n. This is used for fun in shared replays.\n sharedReplaySendSound(\"nooo\");\n return;\n }\n if (event.which === KeyCode.KEY_Z) {\n // Alt + z. This is used as a sound test.\n globals.game!.sounds.play(SoundType.Us);\n return;\n }\n if (event.which === KeyCode.KEY_A) {\n // Alt + a. This is used for fun in shared replays.\n sharedReplaySendSound(\"clap\");\n return;\n }\n\n // Other\n if (event.which === KeyCode.KEY_C) {\n // Alt + c\n globals.game!.chat.toggle();\n return;\n }\n if (event.which === KeyCode.KEY_L) {\n // Alt + l\n backToLobby();\n return;\n }\n if (event.which === KeyCode.KEY_T) {\n // Alt + t\n replay.promptTurn();\n return;\n }\n }\n\n // The rest of the hotkeys should be disabled if we are typing in the in-game chat or if a\n // modifier key is pressed.\n if (\n $(\"#game-chat-input\").is(\":focus\") ||\n event.ctrlKey ||\n event.shiftKey ||\n event.altKey ||\n event.metaKey\n ) {\n return;\n }\n\n // Delete = Delete the note from the card that we are currently hovering-over, if any.\n if (\n event.which === KeyCode.KEY_DELETE &&\n globals.activeHover !== null &&\n globals.activeHover instanceof HanabiCard\n ) {\n const card: HanabiCard = globals.activeHover;\n card.setNote(\"\");\n return;\n }\n\n // Replay hotkeys\n if (globals.state.replay.hypothetical === null) {\n switch (event.which) {\n case KeyCode.KEY_LEFT: {\n globals.store!.dispatch({ type: \"dragReset\" });\n replay.back();\n return;\n }\n\n case KeyCode.KEY_RIGHT: {\n replay.forward();\n return;\n }\n\n case KeyCode.KEY_UP:\n case KeyCode.KEY_DOWN: {\n if (globals.state.replay.shared !== null) {\n replay.toggleSharedSegments();\n } else if (!globals.state.finished) {\n if (globals.state.replay.active) {\n replay.exit();\n } else {\n replay.enter();\n }\n }\n return;\n }\n\n case KeyCode.KEY_OPEN_BRACKET: {\n replay.backRound();\n return;\n }\n\n case KeyCode.KEY_CLOSE_BRACKET: {\n replay.forwardRound();\n return;\n }\n\n case KeyCode.KEY_HOME: {\n replay.backFull();\n return;\n }\n\n case KeyCode.KEY_END: {\n replay.forwardFull();\n return;\n }\n\n default: {\n break;\n }\n }\n } else if (event.which === KeyCode.KEY_LEFT) {\n globals.store!.dispatch({ type: \"dragReset\" });\n hypothetical.sendHypotheticalBack();\n return;\n }\n\n // Check for other keyboard hotkeys.\n const { currentPlayerIndex } = globals.state.ongoingGame.turn;\n const { ourPlayerIndex } = globals.metadata;\n const shouldHaveKeyboardHotkeysForActions =\n // If it is our turn in an ongoing-game.\n (!globals.state.replay.active && currentPlayerIndex === ourPlayerIndex) ||\n // If we are in a hypothetical and we are the shared replay leader.\n (globals.state.replay.hypothetical !== null &&\n (globals.state.replay.shared === null ||\n globals.state.replay.shared.amLeader));\n const ongoingGameState =\n globals.state.replay.hypothetical === null\n ? globals.state.ongoingGame\n : globals.state.replay.hypothetical.ongoing;\n if (!shouldHaveKeyboardHotkeysForActions) {\n return;\n }\n\n let hotkeyFunction: Callback | undefined;\n if (\n ongoingGameState.clueTokens >= getAdjustedClueTokens(1, globals.variant)\n ) {\n hotkeyFunction = hotkeyClueMap.get(event.which);\n }\n if (!isAtMaxClueTokens(ongoingGameState.clueTokens, globals.variant)) {\n hotkeyFunction ||= hotkeyDiscardMap.get(event.which);\n }\n hotkeyFunction ||= hotkeyPlayMap.get(event.which);\n if (hotkeyFunction !== undefined) {\n event.preventDefault();\n hotkeyFunction();\n }\n}\n\nfunction keyup(event: JQuery.KeyUpEvent) {\n if (event.which === KeyCode.KEY_SPACE) {\n // Space bar\n setGlobalEmpathy(false);\n if (globals.state.replay.hypothetical !== null) {\n hypothetical.changeStartingHandVisibility();\n }\n }\n}\n\nfunction sharedReplaySendSound(sound: string) {\n if (\n // Only send sound effects in shared replays.\n globals.state.replay.shared === null ||\n // Only send sound effects for shared replay leaders.\n !globals.state.replay.shared.amLeader\n ) {\n return;\n }\n\n // Send it\n globals.lobby.conn!.send(\"replayAction\", {\n tableID: globals.lobby.tableID,\n type: ReplayActionType.Sound,\n sound,\n });\n}\n\nfunction play() {\n promptCardOrder(ActionType.Play);\n}\n\nfunction discard() {\n promptCardOrder(ActionType.Discard);\n}\n\nfunction promptCardOrder(actionType: ActionType.Play | ActionType.Discard) {\n const playerIndex =\n globals.state.replay.hypothetical === null\n ? globals.metadata.ourPlayerIndex\n : globals.state.replay.hypothetical.ongoing.turn.currentPlayerIndex;\n\n if (playerIndex === null) {\n return;\n }\n\n const hand =\n globals.state.replay.hypothetical === null\n ? globals.state.ongoingGame.hands[playerIndex]\n : globals.state.replay.hypothetical.ongoing.hands[playerIndex];\n\n if (hand === undefined) {\n return;\n }\n\n const maxSlotIndex = hand.length;\n const verb = ActionType[actionType];\n\n playDiscardTitle.innerHTML = `${verb} Card`;\n playDiscardMessage.innerHTML = `Enter the slot number (1 to ${maxSlotIndex}) of the card to ${verb.toLowerCase()}.`;\n\n playDiscardCard.min = \"1\";\n playDiscardCard.max = maxSlotIndex.toString();\n playDiscardCard.value = \"1\";\n\n // We can't use \"addEventListener\" because we can't easily remove the previous listener.\n // eslint-disable-next-line unicorn/prefer-add-event-listener\n playDiscardButton.onclick = () => {\n closeModals();\n\n const response = playDiscardCard.value;\n if (response === \"\") {\n return;\n }\n if (/^deck$/i.test(response)) {\n // Card orders start at 0, so the final card order is the length of the deck - 1.\n const totalCardsInDeck = getTotalCardsInDeck(globals.variant);\n const cardOrder = (totalCardsInDeck - 1) as CardOrder;\n performAction(actionType, cardOrder);\n return;\n }\n\n const slot = parseIntSafe(response);\n if (slot === undefined) {\n return;\n }\n if (slot < 1 || slot > maxSlotIndex) {\n return;\n }\n\n const cardOrder = hand[maxSlotIndex - slot];\n if (cardOrder !== undefined) {\n performAction(actionType, cardOrder);\n }\n };\n\n showPrompt(\"#play-discard-modal\", null, playDiscardCard, playDiscardButton);\n}\n\nfunction click(element: Konva.Node) {\n return () => {\n element.dispatchEvent(new MouseEvent(\"click\"));\n };\n}\n\nfunction performAction(\n actionType: ActionType.Play | ActionType.Discard,\n target: CardOrder,\n) {\n if (globals.state.replay.hypothetical === null) {\n globals.lobby.conn!.send(\"action\", {\n tableID: globals.lobby.tableID,\n type: actionType,\n target,\n });\n } else {\n hypothetical.sendHypotheticalAction({\n type: actionType,\n target,\n });\n }\n\n turn.hideArrowsAndDisableDragging();\n}\n", "// The object that comprises the entire game UI. It is re-created every time when going into a new\n// game (and destroyed when going to the lobby).\n\nimport type { Globals as LobbyGlobals } from \"../../Globals\";\nimport type { GameExports } from \"../main\";\nimport type { UIGlobals } from \"./UIGlobals\";\nimport { globals } from \"./UIGlobals\";\nimport * as cursor from \"./cursor\";\nimport * as keyboard from \"./keyboard\";\nimport { setGlobalEmpathy } from \"./setGlobalEmpathy\";\nimport * as timer from \"./timer\";\n\nexport class HanabiUI {\n globals: UIGlobals;\n\n constructor(lobby: LobbyGlobals, game: GameExports) {\n // Since the \"HanabiUI\" object is being reinstantiated, we need to explicitly reinitialize all\n // globals variables (or else they will retain their old values).\n globals.reset();\n\n // Expose the globals to functions in the \"game\" directory.\n this.globals = globals;\n\n // Store references to the parent objects for later use.\n globals.lobby = lobby; // This is the \"Globals\" object in the root of the \"src\" directory\n // We name it \"lobby\" here to distinguish it from the UI globals; after more refactoring, we\n // will eventually merge these objects to make it less confusing.\n globals.game = game; // This is the \"gameExports\" from the \"/src/game/main.ts\" file\n // We should also combine this with the UI object in the future.\n\n initStageSize();\n cursor.set(\"default\");\n\n // The HanabiUI object is now instantiated, but none of the actual UI elements are drawn yet. We\n // must wait for the \"init\" message from the server in order to know how many players are in the\n // game and what the variant is. Only then can we start drawing the UI.\n }\n\n // The following methods are called from various parent functions.\n\n // eslint-disable-next-line @typescript-eslint/class-methods-use-this\n updateChatLabel(): void {\n if (globals.elements.chatButton === null) {\n return;\n }\n\n let text = \"\";\n if (globals.lobby.zenModeEnabled) {\n text += \"\u262F\uFE0F\";\n } else {\n text += \"\uD83D\uDCAC\";\n if (globals.lobby.chatUnread > 0) {\n text += ` (${globals.lobby.chatUnread})`;\n }\n }\n\n globals.elements.chatButton.text(text);\n globals.layers.UI.batchDraw();\n }\n\n // eslint-disable-next-line @typescript-eslint/class-methods-use-this\n focusLost(): void {\n setGlobalEmpathy(false);\n cursor.set(\"default\");\n }\n\n // eslint-disable-next-line @typescript-eslint/class-methods-use-this\n destroy(): void {\n keyboard.destroy();\n timer.stop();\n globals.stage.destroy();\n }\n}\n\n// Initialize and size the stage depending on the window size.\nfunction initStageSize() {\n const ratio = 16 / 9;\n\n let ww = window.innerWidth;\n let wh = window.innerHeight;\n\n if (ww < 240) {\n // The stage seems to break for widths of around 235 px or less.\n ww = 240;\n }\n if (wh < 135) {\n wh = 135;\n }\n\n let cw: number;\n let ch: number;\n if (ww < wh * ratio) {\n cw = ww;\n ch = ww / ratio;\n } else {\n ch = wh;\n cw = wh * ratio;\n }\n\n cw = Math.floor(cw);\n ch = Math.floor(ch);\n\n if (cw > 0.98 * ww) {\n cw = ww;\n }\n if (ch > 0.98 * wh) {\n ch = wh;\n }\n globals.stage.width(cw);\n globals.stage.height(ch);\n}\n", "// The Hanabi game UI.\n\nimport { FADE_TIME_MS } from \"../constants\";\nimport { globals } from \"../Globals\";\nimport { tablesDraw } from \"../lobby/tablesDraw\";\nimport { Screen } from \"../lobby/types/Screen\";\nimport * as usersDraw from \"../lobby/usersDraw\";\nimport * as sounds from \"../sounds\";\nimport * as tooltips from \"../tooltips\";\nimport { getHTMLElement } from \"../utils\";\nimport * as chat from \"./chat\";\nimport { HanabiUI } from \"./ui/HanabiUI\";\n\nconst lobbyChatText = getHTMLElement(\"#lobby-chat-text\");\n\nexport function init(): void {\n $(\"#game\").on(\"mouseenter mouseleave\", () => {\n if (globals.currentScreen === Screen.Game && globals.ui !== null) {\n globals.ui.focusLost();\n }\n });\n}\n\nexport function show(): void {\n globals.currentScreen = Screen.Game;\n $(\"#page-wrapper\").hide(); // We can't fade this out as it will overlap\n $(\"#game-chat-text\").html(\"\"); // Clear the in-game chat box of any previous content\n $(\"body\").on(\"contextmenu\", () => false); // Disable the right-click context menu\n $(\"#game\").fadeIn(FADE_TIME_MS);\n\n // Every time a new game is opened, the UI is rebuilt from scratch.\n globals.ui = new HanabiUI(globals, gameExports);\n globals.chatUnread = 0;\n\n // Request some high-level information about the game (e.g. the number of players and the variant)\n // The server will send us back an \"init\" message, which will contain enough information to start\n // drawing the UI (we will request the specific actions for the game later on)\n globals.conn!.send(\"getGameInfo1\", {\n tableID: globals.tableID,\n });\n}\n\nfunction hide() {\n globals.currentScreen = Screen.Lobby;\n tablesDraw();\n usersDraw.draw();\n\n if (globals.ui !== null) {\n globals.ui.destroy();\n globals.ui = null;\n }\n\n $(\"#game\").hide(); // We can't fade this out as it will overlap\n $(\"body\").off(\"contextmenu\"); // Enable the right-click context menu\n $(\"#page-wrapper\").fadeIn(FADE_TIME_MS, () => {\n // Also account that we could be going back to one of the history screens. (We could have\n // entered a solo replay from one of the history screens.)\n if ($(\"#lobby-history\").is(\":visible\")) {\n globals.currentScreen = Screen.History;\n } else if ($(\"#lobby-history-other-scores\").is(\":visible\")) {\n globals.currentScreen = Screen.HistoryOtherScores;\n }\n });\n\n // Make sure that there are not any game-related modals showing.\n $(\"#game-chat-modal\").hide();\n\n // Make sure that there are not any game-related tooltips showing.\n tooltips.closeAllTooltips();\n\n // Scroll to the bottom of the chat.\n lobbyChatText.scrollTop = lobbyChatText.scrollHeight;\n}\n\n// These are references to some functions and submodules that need to be interacted with in the UI\n// code (e.g. hiding the UI, playing a sound).\nexport interface GameExports {\n hide: () => void;\n chat: typeof chat;\n sounds: typeof sounds;\n}\nconst gameExports: GameExports = {\n hide,\n chat,\n sounds,\n};\n", "import { MINUTE_IN_MILLISECONDS } from \"complete-common\";\nimport { globals } from \"../Globals\";\n\nconst MINUTES_TO_TRIGGER_IDLE = 15;\n\n// From: https://stackoverflow.com/questions/667555/how-to-detect-idle-time-in-javascript-elegantly\nexport function lobbyIdleInit(): void {\n // Increment the global idle variable every minute.\n setInterval(timerIncrement, MINUTE_IN_MILLISECONDS);\n\n // Zero the idle timer on mouse movement or keyboard inputs.\n $(document).mousemove(mousemoveOrKeypress);\n $(document).keypress(mousemoveOrKeypress);\n}\n\nfunction mousemoveOrKeypress() {\n if (globals.conn === null) {\n return;\n }\n\n if (globals.idleMinutes >= MINUTES_TO_TRIGGER_IDLE) {\n globals.conn.send(\"inactive\", {\n inactive: false,\n });\n }\n globals.idleMinutes = 0;\n}\n\nfunction timerIncrement() {\n if (globals.conn === null) {\n return;\n }\n\n globals.idleMinutes++;\n if (globals.idleMinutes === MINUTES_TO_TRIGGER_IDLE) {\n // We do not want to keep sending \"inactive\" messages every minute, so we check for being\n // exactly at the cutoff.\n globals.conn.send(\"inactive\", {\n inactive: true,\n });\n }\n}\n", "// Lobby keyboard shortcuts\n\nimport * as KeyCode from \"keycode-js\";\nimport { globals } from \"../Globals\";\nimport { isModalVisible } from \"../modals\";\nimport { Screen } from \"./types/Screen\";\n\nexport function lobbyKeyboardInit(): void {\n $(document).keydown((event) => {\n // On the \"Create Game\" tooltip, submit the form if enter is pressed.\n if (\n event.which === KeyCode.KEY_RETURN &&\n $(\"#create-game-modal-title\").is(\":visible\") &&\n !$(\".ss-search\").is(\":visible\") // Make an exception if the variant dropdown is open\n ) {\n event.preventDefault();\n $(\"#create-game-submit\").trigger(\"click\");\n return;\n }\n\n // The rest of the lobby hotkeys only use alt; do not do anything if other modifiers are\n // pressed.\n if (event.ctrlKey || event.shiftKey || event.metaKey) {\n return;\n }\n\n // Ignore hotkeys if a modal is open.\n if (isModalVisible()) {\n return;\n }\n\n // We also account for MacOS special characters that are inserted when you hold down the option\n // key.\n if (event.altKey && event.which === KeyCode.KEY_J) {\n // Alt + j. Click on the first \"Join\" button in the table list.\n if (globals.currentScreen === Screen.Lobby) {\n $(\".lobby-games-join-first-table-button\").trigger(\"click\");\n }\n } else if (event.altKey && event.which === KeyCode.KEY_N) {\n // Alt + n. Click the \"Create Game\" button.\n if (globals.currentScreen === Screen.Lobby) {\n $(\"#nav-buttons-lobby-create-game\").trigger(\"click\");\n }\n } else if (event.altKey && event.which === KeyCode.KEY_H) {\n // Alt + h. Click the \"Show History\" button.\n if (globals.currentScreen === Screen.Lobby) {\n $(\"#nav-buttons-lobby-history\").trigger(\"click\");\n }\n } else if (event.altKey && event.which === KeyCode.KEY_A) {\n // Alt + a. Click on the \"Watch Specific Replay\" button. (We can't use \"Alt + w\" because that\n // conflicts with LastPass.)\n if (globals.currentScreen === Screen.Lobby) {\n $(\"#nav-buttons-lobby-replay\").trigger(\"click\");\n }\n } else if (event.altKey && event.which === KeyCode.KEY_O) {\n // Alt + o. Click the \"Sign Out\" button.\n if (globals.currentScreen === Screen.Lobby) {\n $(\"#nav-buttons-lobby-sign-out\").trigger(\"click\");\n }\n } else if (event.altKey && event.which === KeyCode.KEY_S) {\n // Alt + s. Click on the \"Start Game\" button.\n if (globals.currentScreen === Screen.PreGame) {\n $(\"#nav-buttons-pregame-start\").trigger(\"click\");\n }\n } else if (event.altKey && event.which === KeyCode.KEY_C) {\n if (globals.currentScreen === Screen.PreGame) {\n $(\"#nav-buttons-pregame-change-options\").trigger(\"click\");\n }\n } else if (event.altKey && event.which === KeyCode.KEY_L) {\n // Alt + l. Click on the \"Leave Game\" button.\n if (globals.currentScreen === Screen.PreGame) {\n $(\"#nav-buttons-pregame-leave\").trigger(\"click\");\n }\n } else if (event.altKey && event.which === KeyCode.KEY_R) {\n // Alt + r\n clickReturnToLobby();\n } else if (event.which === KeyCode.KEY_ESCAPE) {\n // If a modal is open, pressing escape should close it. Otherwise, pressing escape should go\n // \"back\" one screen.\n clickReturnToLobby();\n }\n });\n}\n\nfunction clickReturnToLobby() {\n // Click on the \"Return to Lobby\" button. (Either at the \"game\" screen or the \"history\" screen or\n // the \"scores\" screen.)\n switch (globals.currentScreen) {\n case Screen.PreGame: {\n $(\"#nav-buttons-pregame-unattend\").trigger(\"click\");\n break;\n }\n\n case Screen.History: {\n $(\"#nav-buttons-history-return\").trigger(\"click\");\n break;\n }\n\n case Screen.HistoryOtherScores: {\n $(\"#nav-buttons-history-other-scores-return\").trigger(\"click\");\n break;\n }\n\n default: {\n break;\n }\n }\n}\n", "// We will receive WebSocket messages / commands from the server that tell us to do things.\n\nimport type {\n ServerCommandChatData,\n ServerCommandErrorData,\n ServerCommandWarningData,\n} from \"@hanabi-live/data\";\nimport { globals } from \"./Globals\";\nimport * as chat from \"./chat\";\nimport * as gameChat from \"./game/chat\";\nimport * as pregame from \"./lobby/pregame\";\nimport { Screen } from \"./lobby/types/Screen\";\nimport * as modals from \"./modals\";\n\n// Define a command handler map.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype CommandCallback = (data: any) => void;\nexport const commands = new Map();\n\ncommands.set(\"warning\", (data: ServerCommandWarningData) => {\n console.warn(data.warning);\n modals.closeModals(true);\n setTimeout(() => {\n modals.showWarning(data.warning);\n // Re-activate some lobby elements.\n $(\"#nav-buttons-lobby-create-game\").removeClass(\"disabled\");\n if (globals.currentScreen === Screen.PreGame) {\n pregame.toggleStartGameButton();\n }\n }, 100);\n});\n\ncommands.set(\"error\", (data: ServerCommandErrorData) => {\n console.error(data.error);\n modals.showError(data.error);\n\n // Disconnect from the server, if connected.\n if (globals.conn !== null) {\n // This is safe to call if the WebSocket connection is already closed.\n globals.conn.close();\n }\n});\n\n// Received by the client when a new chat message arrives.\ncommands.set(\"chat\", (data: ServerCommandChatData) => {\n chat.add(data, false); // The second argument is \"fast\".\n acknowledgeChatRead(data.room, data.recipient);\n});\n\nfunction acknowledgeChatRead(\n room: string | undefined,\n recipient: string | undefined,\n) {\n const isPM = recipient !== undefined && recipient !== \"\";\n const isTableRoom = room !== undefined && room.startsWith(\"table\");\n const isLobbyChat = !isPM && !isTableRoom;\n if (isLobbyChat) {\n return;\n }\n\n if (globals.currentScreen === Screen.PreGame) {\n // Notify the server that we have read the chat message that was just received.\n globals.conn!.send(\"chatRead\", {\n tableID: globals.tableID,\n });\n } else if (globals.currentScreen === Screen.Game && globals.ui !== null) {\n if ($(\"#game-chat-modal\").is(\":visible\")) {\n // The chat window was open; notify the server that we have read the chat message that was\n // just received.\n globals.conn!.send(\"chatRead\", {\n tableID: globals.tableID,\n });\n return;\n }\n\n if (globals.ui.globals.store === null) {\n return;\n }\n\n const UIState = globals.ui.globals.state;\n if (!UIState.playing && !UIState.finished) {\n // The chat window was not open; pop open the chat window every time for spectators.\n gameChat.toggle();\n globals.conn!.send(\"chatRead\", {\n tableID: globals.tableID,\n });\n } else {\n // The chat window was not open; by default, keep it closed. Change the \"Chat\" button to say\n // \"Chat (1)\" (or e.g. \"Chat (2)\", if they have multiple unread messages).\n globals.chatUnread++;\n globals.ui.updateChatLabel();\n }\n }\n}\n\n// Received by the client when someone either starts or stops typing.\ninterface ChatTypingMessage {\n name: string;\n typing: boolean;\n}\ncommands.set(\"chatTyping\", (data: ChatTypingMessage) => {\n if (data.typing) {\n if (!globals.peopleTyping.includes(data.name)) {\n globals.peopleTyping.push(data.name);\n }\n } else {\n const index = globals.peopleTyping.indexOf(data.name);\n if (index !== -1) {\n globals.peopleTyping.splice(index, 1);\n }\n }\n chat.updatePeopleTyping();\n});\n\n// The \"chatList\" command is sent upon initial connection to give the client a list of past lobby\n// chat messages. It is also sent upon connecting to a game to give a list of past in-game chat\n// messages.\ninterface ChatListData {\n list: ServerCommandChatData[];\n unread: number;\n}\ncommands.set(\"chatList\", (data: ChatListData) => {\n for (const line of data.list) {\n chat.add(line, true); // The second argument is \"fast\"\n }\n if (globals.ui !== null && !$(\"#game-chat-modal\").is(\":visible\")) {\n // If the UI is open, we assume that this is a list of in-game chat messages.\n globals.chatUnread += data.unread;\n globals.ui.updateChatLabel();\n }\n});\n", "import { packWSMessageOnClient, unpackWSMessage } from \"@hanabi-live/data\";\n\ntype WebSocketCallbackCommands = Record void>;\n\ntype WebSocketCallbacks = WebSocketCallbackCommands & {\n open?: (event: Event) => void;\n close?: (event: Event) => void;\n socketError?: (event: Event) => void;\n};\n\n/**\n * Manages a WebSocket connection to the server.\n *\n * On top of the WebSocket protocol, the client and the server communicate using a specific format\n * based on the protocol that the Golem WebSocket framework uses. For more information, see\n * \"websocketMessage.go\".\n *\n * Based on: https://github.com/trevex/golem_client/blob/master/golem.js\n */\nexport class Connection {\n ws: WebSocket;\n callbacks: WebSocketCallbacks = {};\n debug: boolean;\n\n constructor(addr: string, debug: boolean) {\n this.ws = new WebSocket(addr);\n this.debug = debug;\n\n this.ws.addEventListener(\"close\", this.onClose.bind(this));\n this.ws.addEventListener(\"open\", this.onOpen.bind(this));\n this.ws.addEventListener(\"message\", this.onMessage.bind(this));\n this.ws.addEventListener(\"error\", this.onError.bind(this));\n }\n\n onOpen(event: Event): void {\n if (this.callbacks.open !== undefined) {\n this.callbacks.open(event);\n }\n }\n\n onClose(event: CloseEvent): void {\n if (this.callbacks.close !== undefined) {\n this.callbacks.close(event);\n }\n }\n\n onMessage(event: MessageEvent): void {\n if (typeof event.data !== \"string\") {\n return;\n }\n\n const msg = unpackWSMessage(event.data);\n if (msg === undefined) {\n return;\n }\n\n const [command, data] = msg;\n\n const callback = this.callbacks[command];\n if (callback === undefined) {\n console.error(\n `Received a WebSocket message with no corresponding callback: ${command}`,\n );\n return;\n }\n\n if (this.debug) {\n console.log(`%cReceived ${command}:`, \"color: blue;\");\n console.log(data);\n }\n\n callback(data);\n }\n\n onError(event: Event): void {\n if (this.callbacks.socketError !== undefined) {\n this.callbacks.socketError(event);\n }\n }\n\n on(name: string, callback: (data: unknown) => void): void {\n this.callbacks[name] = callback;\n }\n\n send(command: string, data: unknown): void {\n if (this.ws.readyState !== WebSocket.OPEN) {\n return;\n }\n\n const msg = packWSMessageOnClient(command, data);\n this.ws.send(msg);\n\n console.log(`%cSent ${command}:`, \"color: green;\");\n console.log(data);\n }\n\n close(): void {\n this.ws.close();\n }\n}\n", "/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nexport function formatProdErrorMessage(code: number) {\n return `Minified Redux error #${code}; visit https://redux.js.org/Errors?code=${code} for the full message or ` + 'use the non-minified dev environment for full errors. ';\n}", "declare global {\n interface SymbolConstructor {\n readonly observable: symbol;\n }\n}\nconst $$observable = /* #__PURE__ */(() => typeof Symbol === 'function' && Symbol.observable || '@@observable')();\nexport default $$observable;", "/**\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 */\n\nconst randomString = () => Math.random().toString(36).substring(7).split('').join('.');\nconst ActionTypes = {\n INIT: `@@redux/INIT${/* #__PURE__ */randomString()}`,\n REPLACE: `@@redux/REPLACE${/* #__PURE__ */randomString()}`,\n PROBE_UNKNOWN_ACTION: () => `@@redux/PROBE_UNKNOWN_ACTION${randomString()}`\n};\nexport default ActionTypes;", "/**\n * @param obj The object to inspect.\n * @returns True if the argument appears to be a plain object.\n */\nexport default function isPlainObject(obj: any): obj is object {\n if (typeof obj !== 'object' || obj === null) return false;\n let proto = obj;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(obj) === proto || Object.getPrototypeOf(obj) === null;\n}", "// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nexport function miniKindOf(val: any): string {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n const type = typeof val;\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n const constructorName = ctorName(val);\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n }\n\n // other\n return Object.prototype.toString.call(val).slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\nfunction ctorName(val: any): string | null {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\nfunction isError(val: any) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\nfunction isDate(val: any) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\nexport function kindOf(val: any) {\n let typeOfVal: string = typeof val;\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n return typeOfVal;\n}", "import { formatProdErrorMessage as _formatProdErrorMessage13 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage12 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage11 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage10 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage9 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage8 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage7 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage6 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage5 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage4 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage3 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage2 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage } from \"src/utils/formatProdErrorMessage\";\nimport $$observable from './utils/symbol-observable';\nimport { Store, StoreEnhancer, Dispatch, Observer, ListenerCallback, UnknownIfNonSpecific } from './types/store';\nimport { Action } from './types/actions';\nimport { Reducer } from './types/reducers';\nimport ActionTypes from './utils/actionTypes';\nimport isPlainObject from './utils/isPlainObject';\nimport { kindOf } from './utils/kindOf';\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\nexport function createStore(reducer: Reducer, enhancer?: StoreEnhancer): Store> & Ext;\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\nexport function createStore(reducer: Reducer, preloadedState?: PreloadedState | undefined, enhancer?: StoreEnhancer): Store> & Ext;\nexport function createStore(reducer: Reducer, preloadedState?: PreloadedState | StoreEnhancer | undefined, enhancer?: StoreEnhancer): Store> & Ext {\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(2) : `Expected the root reducer to be a function. Instead, received: '${kindOf(reducer)}'`);\n }\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = (preloadedState as StoreEnhancer);\n preloadedState = undefined;\n }\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(1) : `Expected the enhancer to be a function. Instead, received: '${kindOf(enhancer)}'`);\n }\n return enhancer(createStore)(reducer, (preloadedState as PreloadedState | undefined));\n }\n let currentReducer = reducer;\n let currentState: S | PreloadedState | undefined = (preloadedState as PreloadedState | undefined);\n let currentListeners: Map | null = new Map();\n let nextListeners = currentListeners;\n let listenerIdCounter = 0;\n let isDispatching = false;\n\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = new Map();\n currentListeners.forEach((listener, key) => {\n nextListeners.set(key, listener);\n });\n }\n }\n\n /**\n * Reads the state tree managed by the store.\n *\n * @returns The current state tree of your application.\n */\n function getState(): S {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage4(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n return (currentState as S);\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 listener A callback to be invoked on every dispatch.\n * @returns A function to remove this change listener.\n */\n function subscribe(listener: () => void) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage5(4) : `Expected the listener to be a function. Instead, received: '${kindOf(listener)}'`);\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage6(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n let isSubscribed = true;\n ensureCanMutateNextListeners();\n const listenerId = listenerIdCounter++;\n nextListeners.set(listenerId, listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage7(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n isSubscribed = false;\n ensureCanMutateNextListeners();\n nextListeners.delete(listenerId);\n currentListeners = null;\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 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 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: A) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage8(7) : `Actions must be plain objects. Instead, the actual type was: '${kindOf(action)}'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.`);\n }\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage9(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n if (typeof action.type !== 'string') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage10(17) : `Action \"type\" property must be a string. Instead, the actual type was: '${kindOf(action.type)}'. Value was: '${action.type}' (stringified)`);\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage11(9) : 'Reducers may not dispatch actions.');\n }\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n const listeners = currentListeners = nextListeners;\n listeners.forEach(listener => {\n listener();\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 nextReducer The reducer for the store to use instead.\n */\n function replaceReducer(nextReducer: Reducer): void {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage12(10) : `Expected the nextReducer to be a function. Instead, received: '${kindOf(nextReducer)}`);\n }\n currentReducer = ((nextReducer as unknown) as Reducer);\n\n // This action has a similar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n dispatch(({\n type: ActionTypes.REPLACE\n } as A));\n }\n\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns 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 const outerSubscribe = subscribe;\n return {\n /**\n * The minimal observable subscription method.\n * @param observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns 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(observer: unknown) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage13(11) : `Expected the observer to be an object. Instead, received: '${kindOf(observer)}'`);\n }\n function observeState() {\n const observerAsObserver = (observer as Observer);\n if (observerAsObserver.next) {\n observerAsObserver.next(getState());\n }\n }\n observeState();\n const unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe\n };\n },\n [$$observable]() {\n return this;\n }\n };\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(({\n type: ActionTypes.INIT\n } as A));\n const store = (({\n dispatch: (dispatch as Dispatch),\n subscribe,\n getState,\n replaceReducer,\n [$$observable]: observable\n } as unknown) as Store & Ext);\n return store;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\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 */\nexport function legacy_createStore(reducer: Reducer, enhancer?: StoreEnhancer): Store> & Ext;\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\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 */\nexport function legacy_createStore(reducer: Reducer, preloadedState?: PreloadedState | undefined, enhancer?: StoreEnhancer): Store> & Ext;\nexport function legacy_createStore(reducer: Reducer, preloadedState?: PreloadedState | StoreEnhancer | undefined, enhancer?: StoreEnhancer): Store> & Ext {\n return createStore(reducer, (preloadedState as any), enhancer);\n}", "/**\n * Prints a warning in the console if it exists.\n *\n * @param message The warning message.\n */\nexport default function warning(message: string): void {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n}", "import { formatProdErrorMessage as _formatProdErrorMessage3 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage2 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage } from \"src/utils/formatProdErrorMessage\";\nimport { Action } from './types/actions';\nimport { ActionFromReducersMapObject, PreloadedStateShapeFromReducersMapObject, Reducer, StateFromReducersMapObject } from './types/reducers';\nimport ActionTypes from './utils/actionTypes';\nimport isPlainObject from './utils/isPlainObject';\nimport warning from './utils/warning';\nimport { kindOf } from './utils/kindOf';\nfunction getUnexpectedStateShapeWarningMessage(inputState: object, reducers: {\n [key: string]: Reducer;\n}, action: Action, unexpectedKeyCache: {\n [key: string]: true;\n}) {\n const reducerKeys = Object.keys(reducers);\n const argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\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 if (!isPlainObject(inputState)) {\n return `The ${argumentName} has unexpected type of \"${kindOf(inputState)}\". Expected argument to be an object with the following ` + `keys: \"${reducerKeys.join('\", \"')}\"`;\n }\n const unexpectedKeys = Object.keys(inputState).filter(key => !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key]);\n unexpectedKeys.forEach(key => {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\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}\nfunction assertReducerShape(reducers: {\n [key: string]: Reducer;\n}) {\n Object.keys(reducers).forEach(key => {\n const reducer = reducers[key];\n const initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(12) : `The slice reducer for key \"${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 if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(13) : `The slice reducer for key \"${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 * @template S Combined state object type.\n *\n * @param reducers An object whose values correspond to different reducer\n * functions that need to be combined into one. One handy way to obtain it\n * is to use `import * as reducers` syntax. The reducers may never\n * return undefined for any action. Instead, they should return their\n * initial state if the state passed to them was undefined, and the current\n * state for any unrecognized action.\n *\n * @returns A reducer function that invokes every reducer inside the passed\n * object, and builds a state object with the same shape.\n */\nexport default function combineReducers(reducers: M): M[keyof M] extends Reducer | undefined ? Reducer, ActionFromReducersMapObject, Partial>> : never;\nexport default function combineReducers(reducers: {\n [key: string]: Reducer;\n}) {\n const reducerKeys = Object.keys(reducers);\n const finalReducers: {\n [key: string]: Reducer;\n } = {};\n for (let i = 0; i < reducerKeys.length; i++) {\n const key = reducerKeys[i];\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(`No reducer provided for key \"${key}\"`);\n }\n }\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n const finalReducerKeys = Object.keys(finalReducers);\n\n // This is used to make sure we don't warn about the same\n // keys multiple times.\n let unexpectedKeyCache: {\n [key: string]: true;\n };\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n let shapeAssertionError: unknown;\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n return function combination(state: StateFromReducersMapObject = {}, action: Action) {\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n if (process.env.NODE_ENV !== 'production') {\n const warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n let hasChanged = false;\n const nextState: StateFromReducersMapObject = {};\n for (let i = 0; i < finalReducerKeys.length; i++) {\n const key = finalReducerKeys[i];\n const reducer = finalReducers[key];\n const previousStateForKey = state[key];\n const nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === 'undefined') {\n const actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(14) : `When called with an action of type ${actionType ? `\"${String(actionType)}\"` : '(unknown type)'}, the slice reducer for key \"${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 nextState[key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}", "import { formatProdErrorMessage as _formatProdErrorMessage } from \"src/utils/formatProdErrorMessage\";\nimport { Dispatch } from './types/store';\nimport { ActionCreator, ActionCreatorsMapObject, Action } from './types/actions';\nimport { kindOf } from './utils/kindOf';\nfunction bindActionCreator(actionCreator: ActionCreator, dispatch: Dispatch) {\n return function (this: any, ...args: any[]) {\n return dispatch(actionCreator.apply(this, args));\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 an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use `import * as`\n * syntax. You may also pass a single function.\n *\n * @param dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns 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>(actionCreator: C, dispatch: Dispatch): C;\nexport default function bindActionCreators, B extends ActionCreator>(actionCreator: A, dispatch: Dispatch): B;\nexport default function bindActionCreators>(actionCreators: M, dispatch: Dispatch): M;\nexport default function bindActionCreators(actionCreators: M, dispatch: Dispatch): N;\nexport default function bindActionCreators(actionCreators: ActionCreator | ActionCreatorsMapObject, dispatch: Dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(16) : `bindActionCreators expected an object or a function, but instead received: '${kindOf(actionCreators)}'. ` + `Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?`);\n }\n const boundActionCreators: ActionCreatorsMapObject = {};\n for (const key in actionCreators) {\n const actionCreator = actionCreators[key];\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n return boundActionCreators;\n}", "type Func = (...a: T) => R;\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for the\n * resulting composite function.\n *\n * @param funcs The functions to compose.\n * @returns A function obtained by composing the argument functions from right\n * to left. For example, `compose(f, g, h)` is identical to doing\n * `(...args) => f(g(h(...args)))`.\n */\nexport default function compose(): (a: R) => R;\nexport default function compose(f: F): F;\n\n/* two functions */\nexport default function compose(f1: (a: A) => R, f2: Func): Func;\n\n/* three functions */\nexport default function compose(f1: (b: B) => R, f2: (a: A) => B, f3: Func): Func;\n\n/* four functions */\nexport default function compose(f1: (c: C) => R, f2: (b: B) => C, f3: (a: A) => B, f4: Func): Func;\n\n/* rest */\nexport default function compose(f1: (a: any) => R, ...funcs: Function[]): (...args: any[]) => R;\nexport default function compose(...funcs: Function[]): (...args: any[]) => R;\nexport default function compose(...funcs: Function[]) {\n if (funcs.length === 0) {\n // infer the argument type so it is usable in inference down the line\n return (arg: T) => arg;\n }\n if (funcs.length === 1) {\n return funcs[0];\n }\n return funcs.reduce((a, b) => (...args: any) => a(b(...args)));\n}", "import { formatProdErrorMessage as _formatProdErrorMessage } from \"src/utils/formatProdErrorMessage\";\nimport compose from './compose';\nimport { Middleware, MiddlewareAPI } from './types/middleware';\nimport { StoreEnhancer, Dispatch } from './types/store';\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 middlewares The middleware chain to be applied.\n * @returns A store enhancer applying the middleware.\n *\n * @template Ext Dispatch signature added by a middleware.\n * @template S The type of the state supported by a middleware.\n */\nexport default function applyMiddleware(): StoreEnhancer;\nexport default function applyMiddleware(middleware1: Middleware): StoreEnhancer<{\n dispatch: Ext1;\n}>;\nexport default function applyMiddleware(middleware1: Middleware, middleware2: Middleware): StoreEnhancer<{\n dispatch: Ext1 & Ext2;\n}>;\nexport default function applyMiddleware(middleware1: Middleware, middleware2: Middleware, middleware3: Middleware): StoreEnhancer<{\n dispatch: Ext1 & Ext2 & Ext3;\n}>;\nexport default function applyMiddleware(middleware1: Middleware, middleware2: Middleware, middleware3: Middleware, middleware4: Middleware): StoreEnhancer<{\n dispatch: Ext1 & Ext2 & Ext3 & Ext4;\n}>;\nexport default function applyMiddleware(middleware1: Middleware, middleware2: Middleware, middleware3: Middleware, middleware4: Middleware, middleware5: Middleware): StoreEnhancer<{\n dispatch: Ext1 & Ext2 & Ext3 & Ext4 & Ext5;\n}>;\nexport default function applyMiddleware(...middlewares: Middleware[]): StoreEnhancer<{\n dispatch: Ext;\n}>;\nexport default function applyMiddleware(...middlewares: Middleware[]): StoreEnhancer {\n return createStore => (reducer, preloadedState) => {\n const store = createStore(reducer, preloadedState);\n let dispatch: Dispatch = () => {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n const middlewareAPI: MiddlewareAPI = {\n getState: store.getState,\n dispatch: (action, ...args) => dispatch(action, ...args)\n };\n const chain = middlewares.map(middleware => middleware(middlewareAPI));\n dispatch = compose(...chain)(store.dispatch);\n return {\n ...store,\n dispatch\n };\n };\n}", "import { Action } from '../types/actions';\nimport isPlainObject from './isPlainObject';\nexport default function isAction(action: unknown): action is Action {\n return isPlainObject(action) && 'type' in action && typeof (action as Record<'type', unknown>).type === 'string';\n}", "import type { GameMetadata } from \"@hanabi-live/game\";\nimport {\n getInitialGameState,\n getTotalCardsInDeck,\n getVariant,\n} from \"@hanabi-live/game\";\nimport { newArray } from \"complete-common\";\nimport type { State } from \"../../types/State\";\n\nexport function initialState(metadata: GameMetadata): State {\n const gameState = getInitialGameState(metadata);\n\n const { options } = metadata;\n const variant = getVariant(options.variantName);\n const totalCardsInDeck = getTotalCardsInDeck(variant);\n\n return {\n visibleState: null,\n ongoingGame: gameState,\n replay: {\n active: false,\n segment: 0,\n states: [],\n actions: [],\n\n databaseID: null,\n shared: null,\n hypothetical: null,\n },\n\n playing: true,\n shadowing: false,\n finished: false,\n\n datetimeStarted: null,\n datetimeFinished: null,\n\n // The array needs to be longer than just the total cards in the deck because we also need to\n // account for notes on a stack base.\n notes: {\n ourNotes: newArray(totalCardsInDeck + variant.suits.length + 1, {\n possibilities: [],\n chopMoved: false,\n needsFix: false,\n questionMark: false,\n exclamationMark: false,\n knownTrash: false,\n finessed: false,\n blank: false,\n unclued: false,\n clued: false,\n text: \"\",\n }),\n allNotes: newArray(totalCardsInDeck + variant.suits.length + 1, []),\n efficiencyModifier: 0,\n },\n\n metadata,\n cardIdentities: newArray(totalCardsInDeck, {\n suitIndex: null,\n rank: null,\n }),\n premove: null,\n pause: {\n active: false,\n playerIndex: 0,\n queued: false,\n },\n spectators: [],\n UI: {\n cardDragged: null,\n },\n };\n}\n", "// The reducer for replays and hypotheticals.\n\nimport type { GameMetadata } from \"@hanabi-live/game\";\nimport { gameReducer } from \"@hanabi-live/game\";\nimport { assertDefined, assertNotNull } from \"complete-common\";\nimport type { Draft } from \"immer\";\nimport { castDraft, original, produce } from \"immer\";\nimport type { ReplayState } from \"../types/ReplayState\";\nimport type {\n ActionIncludingHypothetical,\n ReplayAction,\n} from \"../types/actions\";\n\nexport const replayReducer = produce(replayReducerFunction, {} as ReplayState);\n\nfunction replayReducerFunction(\n state: Draft,\n action: ReplayAction,\n finished: boolean,\n metadata: GameMetadata,\n) {\n // Validate current state\n if (!state.active && action.type !== \"replayEnter\") {\n throw new Error(\n `A \"${action.type}\" action was dispatched, but we are not in a replay.`,\n );\n }\n\n switch (action.type) {\n // --------------\n // Replay actions\n // --------------\n\n case \"replayEnter\": {\n if (state.active) {\n throw new Error(\n `A \"${action.type}\" action was dispatched, but we are already in a replay.`,\n );\n }\n state.active = true;\n\n if (typeof action.segment !== \"number\") {\n throw new TypeError(\n `The \"${action.type}\" action segment was not a number.`,\n );\n }\n if (action.segment < 0) {\n throw new Error(`The \"${action.type}\" action segment was less than 0.`);\n }\n state.segment = action.segment;\n\n break;\n }\n\n case \"replayExit\": {\n state.active = false;\n state.segment = 0;\n\n break;\n }\n\n case \"replaySegment\": {\n if (typeof action.segment !== \"number\") {\n throw new TypeError(\n `The \"${action.type}\" action segment was not a number.`,\n );\n }\n if (action.segment < 0) {\n throw new Error(`The \"${action.type}\" action segment was less than 0.`);\n }\n state.segment = action.segment;\n\n break;\n }\n\n case \"replaySharedSegment\": {\n assertNotNull(\n state.shared,\n `A \"${action.type}\" action was dispatched, but we are not in a shared replay.`,\n );\n\n if (typeof action.segment !== \"number\") {\n throw new TypeError(\n `The \"${action.type}\" action segment was not a number.`,\n );\n }\n\n if (action.segment < 0) {\n throw new Error(`The \"${action.type}\" action segment was less than 0.`);\n }\n\n state.shared.segment = action.segment;\n\n if (state.shared.useSharedSegments) {\n state.segment = action.segment;\n }\n\n break;\n }\n\n case \"replayUseSharedSegments\": {\n assertNotNull(\n state.shared,\n `A \"${action.type}\" action was dispatched, but we are not in a shared replay.`,\n );\n\n state.shared.useSharedSegments = action.useSharedSegments;\n\n // If we are the replay leader and we are re-enabling shared segments, we also want to update\n // the shared segment to our current segment.\n if (state.shared.amLeader && state.shared.useSharedSegments) {\n state.shared.segment = state.segment;\n }\n\n break;\n }\n\n case \"replayLeader\": {\n assertNotNull(\n state.shared,\n `A \"${action.type}\" action was dispatched, but we are not in a shared replay.`,\n );\n\n state.shared.leader = action.name;\n state.shared.amLeader = action.name === metadata.ourUsername;\n break;\n }\n\n // --------------------\n // Hypothetical actions\n // --------------------\n\n case \"hypoStart\": {\n if (state.hypothetical !== null) {\n throw new Error(\n `A \"${action.type}\" action was dispatched with a non-null hypothetical state.`,\n );\n }\n if (state.shared !== null) {\n // Bring us to the current shared replay turn, if we are not already there\n state.segment = state.shared.segment;\n state.shared.useSharedSegments = true;\n }\n\n const ongoing = state.states[state.segment];\n assertDefined(\n ongoing,\n `Failed to get the game state for segment: ${state.segment}`,\n );\n\n const startingPlayerIndex = ongoing.turn.currentPlayerIndex;\n\n state.hypothetical = {\n ongoing,\n states: [ongoing],\n showDrawnCards: action.showDrawnCards,\n drawnCardsInHypothetical: [],\n morphedIdentities: [],\n startingPlayerIndex,\n };\n\n for (const a of action.actions) {\n hypoAction(state, a, finished, metadata);\n }\n\n break;\n }\n\n case \"hypoEnd\": {\n assertNotNull(\n state.hypothetical,\n `A \"${action.type}\" action was dispatched with a null hypothetical state.`,\n );\n\n state.hypothetical = null;\n break;\n }\n\n case \"hypoBack\": {\n assertNotNull(\n state.hypothetical,\n `A \"${action.type}\" action was dispatched with a null hypothetical state.`,\n );\n\n const hypoStates = state.hypothetical.states;\n hypoStates.pop();\n const lastState = hypoStates.at(-1);\n if (lastState !== undefined) {\n state.hypothetical.ongoing = lastState;\n }\n\n break;\n }\n\n case \"hypoShowDrawnCards\": {\n assertNotNull(\n state.hypothetical,\n `A \"${action.type}\" action was dispatched with a null hypothetical state.`,\n );\n\n state.hypothetical.showDrawnCards = action.showDrawnCards;\n\n const drawnCardsInHypothetical = original(\n state.hypothetical.drawnCardsInHypothetical,\n );\n if (drawnCardsInHypothetical !== undefined) {\n for (const order of drawnCardsInHypothetical) {\n if (action.showDrawnCards) {\n // This is a sparse array, so we must delete it with the `delete` operator. (We are not\n // using a map because Immer state objects must be composed of primitives for\n // performance reasons.)\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete, @typescript-eslint/no-array-delete\n delete state.hypothetical.morphedIdentities[order];\n } else {\n // Hide all cards drawn since the beginning of the hypothetical.\n state.hypothetical.morphedIdentities[order] = {\n rank: null,\n suitIndex: null,\n };\n }\n }\n }\n\n break;\n }\n\n case \"hypoAction\": {\n assertNotNull(\n state.hypothetical,\n `A \"${action.type}\" action was dispatched with a null hypothetical state.`,\n );\n\n hypoAction(state, action.action, finished, metadata);\n break;\n }\n }\n}\n\nfunction hypoAction(\n state: Draft,\n action: ActionIncludingHypothetical,\n finished: boolean,\n metadata: GameMetadata,\n) {\n assertNotNull(\n state.hypothetical,\n `A \"${action.type}\" action was dispatched with a null hypothetical state.`,\n );\n\n // The morph action is handled here. Also take note of any draws that conflict with the known card\n // identities.\n if (action.type === \"morph\") {\n const suitIndex = action.suitIndex === -1 ? null : action.suitIndex;\n const rank = action.rank === -1 ? null : action.rank;\n\n state.hypothetical.morphedIdentities[action.order] = {\n suitIndex,\n rank,\n };\n } else if (action.type === \"unmorph\") {\n // This is a sparse array, so we must delete it with the `delete` operator. (We are not using a\n // map because Immer state objects must be composed of primitives for performance reasons.)\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete, @typescript-eslint/no-array-delete\n delete state.hypothetical.morphedIdentities[action.order];\n }\n\n if (action.type === \"draw\") {\n // Store drawn cards to be able to show/hide in the future.\n state.hypothetical.drawnCardsInHypothetical.push(action.order);\n if (!state.hypothetical.showDrawnCards) {\n // This card has been morphed or blanked.\n state.hypothetical.morphedIdentities[action.order] = {\n suitIndex: null,\n rank: null,\n };\n }\n }\n\n // The game state doesn't care about morphed cards.\n if (action.type === \"morph\" || action.type === \"unmorph\") {\n return;\n }\n\n const isClueActionThatShouldIgnoreNegative =\n action.type === \"clue\" &&\n !state.hypothetical.showDrawnCards &&\n state.hypothetical.startingPlayerIndex === action.target;\n const newAction = isClueActionThatShouldIgnoreNegative\n ? {\n ...action,\n ignoreNegative: true,\n }\n : action;\n\n const oldSegment = state.hypothetical.ongoing.turn.segment;\n const newState = gameReducer(\n state.hypothetical.ongoing,\n newAction,\n true,\n false,\n finished,\n true,\n metadata,\n );\n state.hypothetical.ongoing = castDraft(newState);\n\n if (oldSegment !== newState.turn.segment) {\n // Save the new segment in case we want to go backwards.\n state.hypothetical.states.push(castDraft(newState));\n }\n}\n", "import type { GameAction } from \"@hanabi-live/game\";\nimport { EndCondition } from \"@hanabi-live/game\";\n\n/**\n * When the game state reducer sets \"segment\" to a new number, it is a signal to record the current\n * state of the game (for the purposes of replays).\n */\nexport function shouldStoreSegment(\n segment: number | null,\n previousSegment: number | null,\n action: GameAction,\n): boolean {\n if (segment === null) {\n // The game is still doing the initial deal.\n return false;\n }\n\n // The types of \"gameOver\" that have to do with the previous action should meld together with the\n // segment of the previous action. Any new end conditions must also be updated in the \"gameOver\"\n // block in \"turnReducer.ts\".\n if (\n action.type === \"gameOver\" &&\n action.endCondition !== EndCondition.Timeout &&\n action.endCondition !== EndCondition.TerminatedByPlayer &&\n action.endCondition !== EndCondition.TerminatedByVote &&\n action.endCondition !== EndCondition.IdleTimeout\n ) {\n return true;\n }\n\n // By default, store a new segment whenever the turn reducer changes the segment number.\n return segment !== previousSegment;\n}\n", "import type { UIAction } from \"../types/UIAction\";\nimport type { UIState } from \"../types/UIState\";\nimport { HanabiCard } from \"../ui/HanabiCard\";\n\nexport function uiReducer(uiState: UIState, uiAction: UIAction): UIState {\n switch (uiAction.type) {\n case \"dragStart\": {\n if (uiAction.card instanceof HanabiCard) {\n const cardText = JSON.stringify(uiAction.card);\n return {\n ...uiState,\n // This is required due to a Konva bug.\n cardDragged: JSON.parse(cardText) as HanabiCard,\n };\n }\n return uiState;\n }\n\n case \"dragReset\": {\n if (\n uiState.cardDragged !== null &&\n uiState.cardDragged instanceof HanabiCard\n ) {\n uiState.cardDragged.setShadowOffset();\n }\n return {\n ...uiState,\n cardDragged: null,\n };\n }\n }\n}\n", "// The main reducer for the game mode, contemplating replays and game actions.\n\nimport type {\n CardIdentity,\n GameAction,\n GameMetadata,\n GameState,\n} from \"@hanabi-live/game\";\nimport { gameReducer, getInitialGameState } from \"@hanabi-live/game\";\nimport { assertDefined, assertNotNull } from \"complete-common\";\nimport type { Draft } from \"immer\";\nimport { castDraft, original, produce } from \"immer\";\nimport type { State } from \"../types/State\";\nimport type { Action } from \"../types/actions\";\nimport { notesReducer } from \"./notesReducer\";\nimport { replayReducer } from \"./replayReducer\";\nimport { shouldStoreSegment } from \"./stateReducerHelpers\";\nimport { uiReducer } from \"./uiReducer\";\n\nexport const stateReducer = produce(stateReducerFunction, {} as State);\n\nfunction stateReducerFunction(state: Draft, action: Action) {\n switch (action.type) {\n case \"gameActionList\": {\n // Calculate all the intermediate states.\n const initialGameState = getInitialGameState(state.metadata);\n\n const { game, states } = reduceGameActions(\n action.actions,\n initialGameState,\n state.playing,\n state.shadowing,\n state.finished,\n state.metadata,\n );\n\n state.ongoingGame = castDraft(game);\n\n // Initialized, ready to show.\n state.visibleState = state.ongoingGame;\n\n // We copy the card identities to the global state for convenience.\n updateCardIdentities(state);\n\n state.replay.states = castDraft(states);\n state.replay.actions = castDraft(action.actions);\n break;\n }\n\n case \"cardIdentities\": {\n // Either we just entered a new replay or an ongoing game ended, so the server sent us a list\n // of the identities for every card in the deck.\n state.cardIdentities = castDraft(action.cardIdentities);\n\n // If we were in a variant that scrubbed plays and discards, rehydrate them now.\n state.replay.actions = castDraft(\n rehydrateScrubbedActions(state, action.cardIdentities),\n );\n\n break;\n }\n\n case \"finishOngoingGame\": {\n if (state.playing || state.shadowing) {\n // We were playing in a game that just ended. Recalculate the whole game as a spectator to\n // fix card possibilities.\n state.playing = false;\n state.shadowing = false;\n\n const initialGameState = getInitialGameState(state.metadata);\n const { game, states } = reduceGameActions(\n state.replay.actions,\n initialGameState,\n state.playing,\n state.shadowing,\n true,\n state.metadata,\n );\n\n state.ongoingGame = castDraft(game);\n state.visibleState = state.ongoingGame;\n state.replay.states = castDraft(states);\n }\n\n // Mark that this game is now finished. The finished view will take care of enabling the UI\n // elements for a shared replay.\n state.finished = true;\n state.datetimeFinished = action.datetimeFinished;\n\n // Record the database ID of the game.\n state.replay.databaseID = action.databaseID;\n\n // If we were in an in-game replay when the game ended, keep us at the current turn so that we\n // are not taken away from what we are looking at. Otherwise, go to the penultimate segment.\n // We want to use the penultimate segment instead of the final segment, because the final\n // segment will contain the times for all of the players, and this will drown out the reason\n // that the game ended.\n const inInGameReplay = state.replay.active;\n\n assertNotNull(\n state.ongoingGame.turn.segment,\n \"The segment for the ongoing game was null when it finished.\",\n );\n\n if (state.ongoingGame.turn.segment < 1) {\n throw new Error(\n \"The segment for the ongoing game was less than 1 when it finished.\",\n );\n }\n\n const penultimateSegment = state.ongoingGame.turn.segment - 1;\n\n if (!inInGameReplay) {\n state.replay.active = true;\n state.replay.segment = penultimateSegment;\n }\n\n // Initialize the shared replay.\n state.replay.shared = {\n segment: penultimateSegment,\n useSharedSegments: !inInGameReplay,\n leader: action.sharedReplayLeader,\n amLeader: action.sharedReplayLeader === state.metadata.ourUsername,\n };\n\n break;\n }\n\n case \"init\": {\n state.datetimeStarted = action.datetimeStarted;\n state.datetimeFinished = action.datetimeFinished;\n\n if (action.spectating) {\n state.playing = false;\n }\n if (action.shadowing) {\n state.shadowing = true;\n }\n\n if (action.replay) {\n state.playing = false;\n state.shadowing = false;\n state.finished = true;\n state.replay.active = true;\n state.replay.segment = 0; // In dedicated solo replays, start on the first segment\n state.replay.databaseID = action.databaseID;\n\n if (action.sharedReplay) {\n // In dedicated shared replays, start on the shared replay turn.\n state.replay.segment = action.sharedReplaySegment;\n state.replay.shared = {\n segment: action.sharedReplaySegment,\n useSharedSegments: true,\n leader: action.sharedReplayLeader,\n amLeader: action.sharedReplayLeader === state.metadata.ourUsername,\n };\n }\n }\n\n if (action.paused) {\n state.pause.active = true;\n state.pause.playerIndex = action.pausePlayerIndex;\n }\n\n break;\n }\n\n case \"replayEnter\":\n case \"replayExit\":\n case \"replaySegment\":\n case \"replaySharedSegment\":\n case \"replayUseSharedSegments\":\n case \"replayLeader\":\n case \"hypoStart\":\n case \"hypoBack\":\n case \"hypoEnd\":\n case \"hypoAction\":\n case \"hypoShowDrawnCards\": {\n state.replay = castDraft(\n replayReducer(state.replay, action, state.finished, state.metadata),\n );\n break;\n }\n\n case \"dragStart\": {\n state.UI = uiReducer(state.UI, action);\n break;\n }\n\n case \"dragReset\": {\n state.UI = uiReducer(state.UI, action);\n break;\n }\n\n case \"premove\": {\n if (action.premove === null) {\n // Allow the clearing of a premove anytime. (It might be our turn and we are clearing the\n // premove prior to sending our action to the server.)\n state.premove = null;\n } else if (\n // Only allow premoves in ongoing games.\n !state.finished &&\n // Only allow premoves when it is not our turn.\n state.ongoingGame.turn.currentPlayerIndex !==\n state.metadata.ourPlayerIndex\n ) {\n state.premove = action.premove;\n }\n\n break;\n }\n\n case \"pause\": {\n state.pause.active = action.active;\n state.pause.playerIndex = action.playerIndex;\n\n // If the game is now paused, unqueue any queued pauses.\n if (action.active) {\n state.pause.queued = false;\n }\n\n break;\n }\n\n case \"pauseQueue\": {\n state.pause.queued = action.queued;\n break;\n }\n\n case \"spectators\": {\n state.spectators = castDraft(action.spectators);\n break;\n }\n\n case \"noteList\":\n case \"receiveNote\": {\n state.notes = castDraft(\n notesReducer(\n original(state.notes),\n action,\n state.metadata,\n state.playing,\n state.finished,\n ),\n );\n break;\n }\n\n case \"setEffMod\":\n case \"editNote\":\n case \"noteListPlayer\": {\n state.notes = castDraft(\n notesReducer(\n original(state.notes),\n action,\n state.metadata,\n state.playing,\n state.finished,\n ),\n );\n\n if (state.playing && !state.finished) {\n // Recompute efficiency since it could change.\n state.ongoingGame = castDraft(\n gameReducer(\n original(state.ongoingGame),\n action,\n state.playing,\n state.shadowing,\n state.finished,\n state.replay.hypothetical !== null,\n state.metadata,\n state.notes.ourNotes,\n ),\n );\n }\n break;\n }\n\n default: {\n // A new game action happened.\n const previousSegment = state.ongoingGame.turn.segment;\n state.ongoingGame = castDraft(\n gameReducer(\n original(state.ongoingGame),\n action,\n state.playing,\n state.shadowing,\n state.finished,\n false,\n state.metadata,\n state.notes.ourNotes,\n ),\n );\n\n // We copy the card identities to the global state for convenience.\n updateCardIdentities(state);\n\n if (\n shouldStoreSegment(\n state.ongoingGame.turn.segment,\n previousSegment,\n action,\n ) &&\n state.ongoingGame.turn.segment !== null\n ) {\n state.replay.states[state.ongoingGame.turn.segment] = state.ongoingGame;\n }\n\n // Save the action so that we can recompute the state at the end of the game.\n state.replay.actions.push(castDraft(action));\n\n break;\n }\n }\n\n // Show the appropriate state depending on the situation.\n state.visibleState = visualStateToShow(state, action);\n}\n\n// Runs through a list of actions from an initial state, and returns the final state and all\n// intermediate states.\nfunction reduceGameActions(\n actions: readonly GameAction[],\n initialState: GameState,\n playing: boolean,\n shadowing: boolean,\n finished: boolean,\n metadata: GameMetadata,\n) {\n const states: GameState[] = [initialState];\n\n // eslint-disable-next-line unicorn/no-array-reduce\n const game = actions.reduce((s: GameState, a: GameAction) => {\n const nextState = gameReducer(\n s,\n a,\n playing,\n shadowing,\n finished,\n false,\n metadata,\n );\n\n if (\n shouldStoreSegment(nextState.turn.segment, s.turn.segment, a) &&\n nextState.turn.segment !== null\n ) {\n states[nextState.turn.segment] = nextState;\n }\n\n return nextState;\n }, initialState);\n\n return { game, states };\n}\n\n/**\n * We keep a copy of each card identity in the global state for convenience. After each game action,\n * check to see if we can add any new card identities (or any suit/rank information to existing card\n * identities). We cannot just replace the array every time because we need to keep the \"full\" deck\n * that the server sends us.\n */\nfunction updateCardIdentities(state: Draft) {\n for (const [i, newCardIdentity] of state.ongoingGame.deck.entries()) {\n if (i >= state.cardIdentities.length) {\n // Add the new card identity.\n state.cardIdentities[i] = {\n suitIndex: newCardIdentity.suitIndex,\n rank: newCardIdentity.rank,\n };\n } else {\n // Update the existing card identity.\n const existingCardIdentity = state.cardIdentities[i];\n assertDefined(\n existingCardIdentity,\n `Failed to find the existing card identity at index: ${i}`,\n );\n\n if (existingCardIdentity.suitIndex === null) {\n existingCardIdentity.suitIndex = newCardIdentity.suitIndex;\n }\n if (existingCardIdentity.rank === null) {\n existingCardIdentity.rank = newCardIdentity.rank;\n }\n }\n }\n}\n\nfunction visualStateToShow(\n state: Draft,\n action: Action,\n): Draft | null {\n if (state.visibleState === null) {\n // The state is still initializing, so do not show anything.\n return null;\n }\n\n if (state.replay.active) {\n if (state.replay.hypothetical === null) {\n // Show the current replay segment.\n const currentReplayState = state.replay.states[state.replay.segment];\n assertDefined(\n currentReplayState,\n `Failed to find the replay state for segment: ${state.replay.segment}`,\n );\n\n return currentReplayState;\n }\n\n // Show the current hypothetical.\n return state.replay.hypothetical.ongoing;\n }\n\n // After an ongoing game ends, do not automatically show the final segment with the player's times\n // by default in order to avoid drowning out the reason why the game ended.\n if (action.type === \"playerTimes\") {\n return state.replay.states.at(-2) ?? null; // The penultimate segment\n }\n\n // Show the final segment of the current game.\n return state.ongoingGame;\n}\n\n/**\n * The server sends us \"draw\" actions about cards in our own hand that have scrubbed information (to\n * prevent cheating). After a game finishes, the server sends us a list of all of the card\n * identities. With those, we can go through and \"fill-in\" all of the scrubbed actions.\n */\nfunction rehydrateScrubbedActions(\n state: State,\n cardIdentities: readonly CardIdentity[],\n): readonly GameAction[] {\n return state.replay.actions.map((action) => {\n if (\n (action.type === \"play\" ||\n action.type === \"discard\" ||\n action.type === \"draw\") &&\n (action.suitIndex === -1 || action.rank === -1)\n ) {\n const cardIdentity = cardIdentities[action.order];\n assertDefined(\n cardIdentity,\n \"Failed to find the card identity for an action while rehydrating the scrubbed actions.\",\n );\n\n const { suitIndex, rank } = cardIdentity;\n if (suitIndex === null || rank === null) {\n throw new Error(\n \"Failed to find the suit index or rank of a card identity for an action while rehydrating the scrubbed actions.\",\n );\n }\n\n return {\n ...action,\n suitIndex,\n rank,\n };\n }\n\n return action;\n });\n}\n", "// This function draws the UI when going into a game for the first time.\n\nimport type {\n CardOrder,\n PlayerIndex,\n RankClueNumber,\n Suit,\n SuitIndex,\n} from \"@hanabi-live/game\";\nimport {\n getTotalCardsInDeck,\n newColorClue,\n newRankClue,\n} from \"@hanabi-live/game\";\nimport {\n SECOND_IN_MILLISECONDS,\n assertDefined,\n eRange,\n repeat,\n} from \"complete-common\";\nimport Konva from \"konva\";\nimport * as modals from \"../../modals\";\nimport { getHTMLElement } from \"../../utils\";\nimport { ReplayArrowOrder } from \"../types/ReplayArrowOrder\";\nimport { ButtonGroup } from \"./ButtonGroup\";\nimport { CardLayout } from \"./CardLayout\";\nimport { ClueLog } from \"./ClueLog\";\nimport { ColorButton } from \"./ColorButton\";\nimport { Deck } from \"./Deck\";\nimport { FullActionLog } from \"./FullActionLog\";\nimport { HanabiCard } from \"./HanabiCard\";\nimport { MultiFitText } from \"./MultiFitText\";\nimport { PlayStack } from \"./PlayStack\";\nimport { RankButton } from \"./RankButton\";\nimport { globals } from \"./UIGlobals\";\nimport * as arrows from \"./arrows\";\nimport { backToLobby } from \"./backToLobby\";\nimport * as clues from \"./clues\";\nimport { CARD_ANIMATION_LENGTH_SECONDS, LABEL_COLOR } from \"./constants\";\nimport { Arrow } from \"./controls/Arrow\";\nimport { Button } from \"./controls/Button\";\nimport { CheckButton } from \"./controls/CheckButton\";\nimport { CurrentPlayerArea } from \"./controls/CurrentPlayerArea\";\nimport { FitText } from \"./controls/FitText\";\nimport { ImageWithTooltip } from \"./controls/ImageWithTooltip\";\nimport { PlayerButton } from \"./controls/PlayerButton\";\nimport { RectWithTooltip } from \"./controls/RectWithTooltip\";\nimport { SlidableGroup } from \"./controls/SlidableGroup\";\nimport { StrikeSquare } from \"./controls/StrikeSquare\";\nimport { StrikeX } from \"./controls/StrikeX\";\nimport type { TextWithTooltip } from \"./controls/TextWithTooltip\";\nimport { TimerDisplay } from \"./controls/TimerDisplay\";\nimport * as cursor from \"./cursor\";\nimport { drawHands } from \"./drawHands\";\nimport { drawReplayArea } from \"./drawReplayArea\";\nimport { getCardOrStackBase } from \"./getCardOrStackBase\";\nimport * as hypothetical from \"./hypothetical\";\nimport { initKonvaTooltips } from \"./konvaTooltips\";\nimport * as replay from \"./replay\";\nimport * as stats from \"./stats\";\nimport * as timer from \"./timer\";\nimport { toggleZen } from \"./zen\";\n\ninterface Values {\n x: number;\n y: number;\n w?: number;\n h?: number;\n}\n\nlet winW: number;\nlet winH: number;\nlet basicTextLabel: Konva.Text;\nlet basicNumberLabel: Konva.Text;\nlet actionLogValues: Values;\nlet playAreaValues: Values;\nlet cardWidth: number;\nlet cardHeight: number;\nlet bottomLeftButtonValues: Values;\nlet deckValues: Values;\nlet scoreAreaValues: Values;\nlet clueAreaValues: Values;\nlet lowerClueAreaValues: Values;\nlet clueLogValues: Values;\nlet giveClueValues: Values;\nlet spectatorsLabelValues: Values;\n\nconst leaderPlaceholder = getHTMLElement(\"#leader-placeholder\");\n\nexport function drawUI(): void {\n // Constants\n winW = globals.stage.width();\n winH = globals.stage.height();\n\n // Create the various Konva layers upon which all graphic elements reside.\n drawBackground();\n\n // We can reuse some UI elements.\n initReusableObjects();\n\n // The top-left.\n drawActionLog();\n drawPlayStacks();\n\n // The bottom-left.\n drawBottomLeftButtons();\n drawDeck();\n drawScoreArea();\n drawSpectators();\n drawSharedReplay();\n drawYourTurn();\n\n // The middle column.\n drawHands(winW, winH);\n\n // The right column.\n drawClueLog();\n drawStatistics();\n drawDiscardArea();\n drawDiscardStacks();\n\n // Conditional elements.\n drawArrows();\n drawTimers();\n drawClueArea();\n drawCurrentPlayerArea();\n drawPreplayArea();\n drawReplayArea(winW, winH);\n drawHypotheticalArea();\n drawPauseArea();\n drawRestartArea();\n drawExtraAnimations();\n\n // Just in case, delete all existing layers.\n globals.stage.getLayers().each((layer) => {\n layer.remove();\n });\n\n for (const layer of Object.values(globals.layers)) {\n globals.stage.add(layer);\n }\n}\n\nexport function setSkullEnabled(): void {\n globals.elements.terminateButton?.setImage(\n globals.imageLoader!.get(\"skull_vtk\"),\n );\n}\n\nexport function setSkullNormal(): void {\n globals.elements.terminateButton?.setImage(globals.imageLoader!.get(\"skull\"));\n}\n\nfunction drawBackground() {\n // Draw a green background behind everything.\n const background = new Konva.Image({\n x: 0,\n y: 0,\n width: winW,\n height: winH,\n image: globals.imageLoader!.get(\"background\"),\n listening: true,\n });\n background.on(\"mousemove\", () => {\n cursor.set(\"default\");\n });\n\n globals.layers.UI.add(background);\n\n // The dark overlay that appears when you click the action log is clicked, when a player's name is\n // clicked, when the game is paused, etc.\n globals.elements.stageFade = new Konva.Rect({\n x: 0,\n y: 0,\n width: winW,\n height: winH,\n opacity: 0.3,\n fill: \"black\",\n visible: false,\n listening: true,\n });\n globals.layers.UI2.add(globals.elements.stageFade);\n}\n\nfunction initReusableObjects() {\n // Create some default objects.\n basicTextLabel = new Konva.Text({\n x: 0.01 * winW,\n y: 0.01 * winH,\n width: 0.11 * winW,\n height: 0.03 * winH,\n fontSize: 0.026 * winH,\n fontFamily: \"Verdana\",\n align: \"left\",\n text: \"Placeholder text\",\n fill: LABEL_COLOR,\n shadowColor: \"black\",\n shadowBlur: 10,\n shadowOffset: {\n x: 0,\n y: 0,\n },\n shadowOpacity: 0.9,\n listening: false,\n });\n basicNumberLabel = basicTextLabel.clone() as Konva.Text;\n basicNumberLabel.text(\"0\");\n basicNumberLabel.width(0.03 * winW);\n}\n\nfunction drawActionLog() {\n actionLogValues = globals.lobby.settings.keldonMode\n ? {\n x: 0.2,\n y: 0.235,\n w: 0.4,\n h: 0.098,\n }\n : {\n x: 0.01,\n y: 0.01,\n w: 0.4,\n h: 0.25,\n };\n\n const actionLogGroup = new Konva.Group({\n x: actionLogValues.x * winW,\n y: actionLogValues.y * winH,\n listening: false,\n });\n globals.layers.UI.add(actionLogGroup);\n\n // The faded rectangle around the action log.\n const actionLogRect = new Konva.Rect({\n x: 0,\n y: 0,\n width: actionLogValues.w! * winW,\n height: actionLogValues.h! * winH,\n fill: \"black\",\n opacity: 0.3,\n cornerRadius: 0.01 * winH,\n listening: true,\n });\n actionLogGroup.add(actionLogRect);\n actionLogRect.on(\"click tap\", () => {\n globals.elements.fullActionLog!.show();\n globals.elements.stageFade!.show();\n globals.layers.UI2.batchDraw();\n\n globals.elements.stageFade!.on(\"click tap\", () => {\n globals.elements.stageFade!.off(\"click tap\");\n globals.elements.fullActionLog!.hide();\n globals.elements.stageFade!.hide();\n globals.layers.UI2.batchDraw();\n });\n });\n\n // The action log\n let maxLines = 8;\n if (globals.lobby.settings.keldonMode) {\n maxLines = 3;\n }\n globals.elements.actionLog = new MultiFitText(\n {\n align: \"center\",\n fontSize: 0.028 * winH,\n fontFamily: \"Verdana\",\n fill: LABEL_COLOR,\n shadowColor: \"black\",\n shadowBlur: 10,\n shadowOffset: {\n x: 0,\n y: 0,\n },\n shadowOpacity: 0.9,\n x: 0.01 * winW,\n y: 0.003 * winH,\n width: (actionLogValues.w! - 0.02) * winW,\n height: (actionLogValues.h! - 0.003) * winH,\n listening: false,\n },\n maxLines,\n );\n actionLogGroup.add(globals.elements.actionLog as unknown as Konva.Group);\n\n // The full action log (that appears when you click on the action log).\n globals.elements.fullActionLog = new FullActionLog(winW, winH);\n globals.layers.UI2.add(\n globals.elements.fullActionLog as unknown as Konva.Group,\n );\n}\n\ninterface PlayStackValues {\n x: number;\n y: number;\n w: number;\n spacing: number;\n}\n\nfunction drawPlayStacks() {\n let yOffset: number;\n\n if (globals.variant.suits.length === 6 || globals.variant.showSuitNames) {\n cardWidth = 0.06;\n cardHeight = 0.151;\n yOffset = 0.019;\n } else {\n // 3, 4, or 5 stacks.\n cardWidth = 0.075;\n cardHeight = 0.189;\n yOffset = 0;\n }\n const playStackValues: PlayStackValues = {\n x: 0.183,\n y: 0.345 + yOffset,\n w: 0, // Is set below\n spacing: 0.015,\n };\n if (globals.variant.showSuitNames) {\n playStackValues.y -= 0.018;\n }\n if (!globals.lobby.settings.keldonMode) {\n playStackValues.x = actionLogValues.x;\n playStackValues.y = actionLogValues.y + actionLogValues.h! + 0.02;\n if (globals.variant.suits.length > 4) {\n playStackValues.spacing = actionLogValues.w!;\n playStackValues.spacing -= cardWidth * globals.variant.suits.length;\n playStackValues.spacing /= globals.variant.suits.length - 1;\n } else {\n playStackValues.spacing = 0.006;\n }\n }\n playStackValues.w = cardWidth * globals.variant.suits.length;\n playStackValues.w +=\n playStackValues.spacing * (globals.variant.suits.length - 1);\n\n // Variants with less than 5 stacks will be left-aligned instead of centered unless we manually\n // adjust them.\n if (\n (globals.variant.suits.length === 4 && !globals.variant.showSuitNames) ||\n (globals.variant.suits.length === 5 &&\n globals.variant.showSuitNames &&\n globals.lobby.settings.keldonMode)\n ) {\n playStackValues.x += (cardWidth + playStackValues.spacing) / 2;\n } else if (\n globals.variant.suits.length === 4 &&\n globals.variant.showSuitNames\n ) {\n playStackValues.x += cardWidth + playStackValues.spacing;\n } else if (\n globals.variant.suits.length === 3 &&\n !globals.variant.showSuitNames\n ) {\n playStackValues.x += ((cardWidth + playStackValues.spacing) / 2) * 2;\n } else if (\n globals.variant.suits.length === 3 &&\n globals.variant.showSuitNames\n ) {\n playStackValues.x += (cardWidth + playStackValues.spacing) * 1.5;\n }\n\n // Make the invisible \"hole\" play stack for \"Throw It in a Hole\" variants (centered in the middle\n // of the rest of the stacks).\n if (\n globals.variant.throwItInAHole &&\n (globals.state.playing || globals.state.shadowing)\n ) {\n const playStackX =\n playStackValues.x + playStackValues.w / 2 - cardWidth / 2;\n const playStack = new PlayStack({\n x: playStackX * winW,\n y: playStackValues.y * winH,\n width: cardWidth * winW,\n height: cardHeight * winH,\n listening: false,\n });\n globals.elements.playStacks.set(\"hole\", playStack);\n globals.layers.card.add(playStack as unknown as Konva.Group);\n }\n\n for (const [i, suit] of globals.variant.suits.entries()) {\n const suitIndex = i as SuitIndex;\n\n // Make the play stack for this suit.\n const playStackX =\n playStackValues.x + (cardWidth + playStackValues.spacing) * i;\n const playStack = new PlayStack({\n x: playStackX * winW,\n y: playStackValues.y * winH,\n width: cardWidth * winW,\n height: cardHeight * winH,\n listening: false,\n });\n globals.elements.playStacks.set(suit, playStack);\n globals.layers.card.add(playStack as unknown as Konva.Group);\n\n // Add the stack base to the play stack.\n const totalCardsInDeck = getTotalCardsInDeck(globals.variant);\n const order = (totalCardsInDeck + i) as CardOrder;\n // Stack bases use card orders after the final card in the deck.\n const stackBase = new HanabiCard(\n order,\n suitIndex,\n null,\n true,\n globals.variant,\n globals.options.numPlayers,\n );\n globals.stackBases.push(stackBase);\n\n playStack.addChild(stackBase.layout);\n\n // Draw the suit name next to each suit (a text description of the suit).\n if (globals.variant.showSuitNames) {\n let text = suit.displayName;\n\n if (\n globals.lobby.settings.colorblindMode &&\n suit.clueColors.length === 2\n ) {\n const colorList = suit.clueColors\n .map((color) => color.abbreviation)\n .join(\"/\");\n text += ` [${colorList}]`;\n }\n\n if (globals.variant.upOrDown) {\n text = \"\";\n }\n\n if (globals.variant.sudoku) {\n // Do not show anything here, the starting values will be written by the state observers\n // updating when the starting or the played cards value changes.\n text = \"\";\n }\n\n const suitLabelText = new FitText({\n x:\n (playStackValues.x -\n 0.01 +\n (cardWidth + playStackValues.spacing) * i) *\n winW,\n y: (playStackValues.y + 0.155) * winH,\n width: 0.08 * winW,\n height: 0.051 * winH,\n fontSize: 0.02 * winH,\n fontFamily: \"Verdana\",\n align: \"center\",\n text,\n fill: LABEL_COLOR,\n listening: false,\n });\n\n globals.layers.UI.add(suitLabelText);\n globals.elements.suitLabelTexts.push(suitLabelText);\n }\n }\n\n // This is the invisible rectangle that players drag cards to in order to play them. Make it a\n // little big bigger than the stacks.\n const overlap = 0.03;\n let w = cardWidth * globals.variant.suits.length;\n w += playStackValues.spacing * (globals.variant.suits.length - 1);\n playAreaValues = {\n x: playStackValues.x,\n y: playStackValues.y,\n w,\n h: cardHeight,\n };\n globals.elements.playArea = new Konva.Rect({\n x: (playAreaValues.x - overlap) * winW,\n y: (playAreaValues.y - overlap) * winH,\n width: (playAreaValues.w! + overlap * 2) * winW,\n height: (playAreaValues.h! + overlap * 2) * winH,\n listening: false,\n });\n}\n\nfunction drawDiscardStacks() {\n const discardStackSpacing =\n globals.variant.suits.length === 6 ? 0.038 : 0.047;\n\n for (const [suitIndex, suit] of globals.variant.suits.entries()) {\n // Make the discard stack for this suit.\n const discardStack = new CardLayout({\n x: 0.81 * winW,\n y: (0.64 + discardStackSpacing * suitIndex) * winH,\n width: 0.17 * winW,\n height: 0.15 * winH,\n listening: false,\n });\n globals.elements.discardStacks.set(suit, discardStack);\n globals.layers.card.add(discardStack as unknown as Konva.Group);\n }\n}\n\nfunction drawBottomLeftButtons() {\n bottomLeftButtonValues = {\n x: 0.01,\n y: 0.8,\n w: 0.07,\n h: 0.0563,\n };\n\n // The toggle in-game replay button.\n const replayButton = new Button(\n {\n x: bottomLeftButtonValues.x * winW,\n y: bottomLeftButtonValues.y * winH,\n width: bottomLeftButtonValues.w! * winW,\n height: bottomLeftButtonValues.h! * winH,\n visible: !globals.state.finished,\n },\n [globals.imageLoader!.get(\"replay\")],\n );\n replayButton.on(\"click tap\", () => {\n if (globals.state.replay.active) {\n replay.exit();\n } else {\n replay.enter();\n }\n });\n globals.layers.UI.add(replayButton as unknown as Konva.Group);\n replayButton.tooltipName = \"replay\";\n replayButton.tooltipContent =\n \"Toggle the in-game replay, where you can rewind the game to see what happened on a specific turn.\";\n initKonvaTooltips(replayButton, true, false);\n globals.elements.replayButton = replayButton;\n\n // The restart button (to bring up the restart menu).\n const restartButton = new Button({\n x: bottomLeftButtonValues.x * winW,\n y: bottomLeftButtonValues.y * winH,\n width: bottomLeftButtonValues.w! * winW,\n height: bottomLeftButtonValues.h! * winH,\n text: \"Restart\",\n visible: false,\n });\n globals.layers.UI.add(restartButton as unknown as Konva.Group);\n restartButton.on(\"click tap\", () => {\n if (globals.options.speedrun) {\n globals.lobby.conn!.send(\"tableRestart\", {\n tableID: globals.lobby.tableID,\n hidePregame: true,\n });\n } else {\n globals.elements.restartArea?.visible(true);\n globals.layers.UI2.batchDraw();\n }\n });\n restartButton.tooltipName = \"restart\";\n restartButton.tooltipContent =\n \"Automatically go into a new game with the current members of the shared replay (using the same game settings as this one).\";\n initKonvaTooltips(restartButton, true, false);\n globals.elements.restartButton = restartButton;\n\n // The chat button.\n const chatButton = new Button({\n x: bottomLeftButtonValues.x * winW,\n y: (bottomLeftButtonValues.y + bottomLeftButtonValues.h! + 0.01) * winH,\n width: bottomLeftButtonValues.w! * winW,\n height: bottomLeftButtonValues.h! * winH,\n text: \"\uD83D\uDCAC\",\n visible: !globals.state.finished || globals.state.replay.shared !== null,\n });\n globals.layers.UI.add(chatButton as unknown as Konva.Group);\n chatButton.on(\"click tap\", (event: Konva.KonvaEventObject) => {\n if (event.evt.button === 2) {\n toggleZen();\n } else {\n globals.game!.chat.toggle();\n }\n });\n chatButton.tooltipName = \"chat\";\n chatButton.tooltipContent = \"Toggle the in-game chat.\";\n initKonvaTooltips(chatButton, true, false);\n globals.elements.chatButton = chatButton;\n\n // The lobby button (which takes the user back to the lobby).\n const lobbyButtonValues = {\n x: bottomLeftButtonValues.x,\n y: bottomLeftButtonValues.y + 2 * bottomLeftButtonValues.h! + 0.02,\n h: bottomLeftButtonValues.h,\n };\n const lobbyButton = new Button({\n x: lobbyButtonValues.x * winW,\n y: lobbyButtonValues.y * winH,\n width: bottomLeftButtonValues.w! * winW,\n height: lobbyButtonValues.h! * winH,\n text: \"Lobby\",\n });\n globals.layers.UI.add(lobbyButton as unknown as Konva.Group);\n lobbyButton.on(\"click tap\", lobbyButtonClick);\n lobbyButton.tooltipName = \"lobby\";\n lobbyButton.tooltipContent = \"Return to the lobby.\";\n initKonvaTooltips(lobbyButton, true, false);\n globals.elements.lobbyButton = lobbyButton;\n}\n\nfunction drawDeck() {\n deckValues = {\n x: bottomLeftButtonValues.x + bottomLeftButtonValues.w! + 0.01,\n y: bottomLeftButtonValues.y,\n w: 0.075,\n h: 0.189,\n };\n\n // This is the faded rectangle that is hidden until all of the deck has been depleted. (This has\n // to be separate from the Deck object since it exists on a separate layer.)\n const deckRect = new RectWithTooltip({\n x: deckValues.x * winW,\n y: deckValues.y * winH,\n width: deckValues.w! * winW,\n height: deckValues.h! * winH,\n fill: \"black\",\n opacity: 0.2,\n cornerRadius: 0.006 * winW,\n listening: true,\n });\n globals.layers.UI.add(deckRect);\n\n // Near the top of the deck, draw the database ID for the respective game. (In an ongoing game,\n // this will not show.)\n globals.elements.gameIDLabel = new FitText({\n text: `ID: ${globals.state.replay.databaseID ?? 0}`,\n x: deckValues.x * winW,\n y: (deckValues.y + 0.01) * winH,\n width: deckValues.w! * winW,\n fontFamily: \"Verdana\",\n fill: \"white\",\n align: \"center\",\n fontSize: 0.019 * winH,\n shadowColor: \"black\",\n shadowBlur: 10,\n shadowOffset: {\n x: 0,\n y: 0,\n },\n shadowOpacity: 0.9,\n visible: globals.state.finished && globals.state.replay.databaseID !== null,\n listening: false,\n });\n // We draw the label on the arrow layer because it is on top of the card but not on top of the\n // black second layer.\n globals.layers.arrow.add(globals.elements.gameIDLabel);\n\n // At the bottom of the deck, draw a thing hinting that the user can mouse over the deck for\n // detailed information about the current game.\n globals.elements.gameInfoImage = new Konva.Image({\n x: (deckValues.x + 0.004) * winW,\n y: (deckValues.y + 0.161) * winH,\n width: deckValues.w! * 0.15 * winW,\n height: deckValues.w! * 0.15 * winW,\n image: globals.imageLoader!.get(\"question-mark\"),\n shadowColor: \"black\",\n shadowBlur: 2,\n shadowOffset: {\n x: 0,\n y: 0,\n },\n shadowOpacity: 0.9,\n });\n // This goes on the same layer as the gameIDLabel.\n globals.layers.arrow.add(globals.elements.gameInfoImage);\n\n globals.elements.deck = new Deck({\n x: deckValues.x * winW,\n y: deckValues.y * winH,\n width: deckValues.w! * winW,\n height: deckValues.h! * winH,\n cardBack: \"deck-back\",\n suits: globals.variant.suits,\n listening: false,\n });\n globals.layers.card.add(globals.elements.deck as unknown as Konva.Group);\n\n // Also apply the card deck tooltip to the faded background rectangle.\n deckRect.tooltipName = \"deck\";\n deckRect.tooltipContent = globals.elements.deck.tooltipContent;\n initKonvaTooltips(deckRect, true, true);\n\n // When there are no cards left in the deck, show a label that indicates how many turns are left\n // before the game ends.\n const xOffset = 0.017;\n const fontSize = 0.025;\n globals.elements.deckTurnsRemainingLabel1 = basicTextLabel.clone({\n text: \"Turns\",\n x: (deckValues.x + xOffset) * winW,\n y: (deckValues.y + deckValues.h! - 0.07) * winH,\n fontSize: fontSize * winH,\n visible: false,\n }) as Konva.Text;\n globals.layers.UI.add(globals.elements.deckTurnsRemainingLabel1);\n globals.elements.deckTurnsRemainingLabel2 = basicTextLabel.clone({\n text: \"left: #\",\n x: (deckValues.x + xOffset) * winW,\n y: (deckValues.y + deckValues.h! - 0.04) * winH,\n fontSize: fontSize * winH,\n visible: false,\n }) as Konva.Text;\n globals.layers.UI.add(globals.elements.deckTurnsRemainingLabel2);\n\n // This is a yellow border around the deck that will appear when only one card is left (if the\n // \"Bottom-Deck Blind-Plays\" game option is enabled).\n globals.elements.deckPlayAvailableLabel = new Konva.Rect({\n x: deckValues.x * winW,\n y: deckValues.y * winH,\n width: deckValues.w! * winW,\n height: deckValues.h! * winH,\n stroke: \"yellow\",\n cornerRadius: 0.01 * winH,\n strokeWidth: 0.010_56 * winH,\n visible: false,\n });\n globals.layers.UI.add(globals.elements.deckPlayAvailableLabel);\n}\n\nfunction drawScoreArea() {\n // The rectangle that holds the turn, score, and clue count.\n const scoreAreaHeight = 0.18;\n scoreAreaValues = {\n x: 0.66,\n y: deckValues.y + (deckValues.h! - scoreAreaHeight) / 2,\n w: 0.13,\n h: scoreAreaHeight,\n };\n if (!globals.lobby.settings.keldonMode) {\n scoreAreaValues.x = deckValues.x + deckValues.w! + 0.01;\n scoreAreaValues.y = 0.81;\n }\n globals.elements.scoreArea = new Konva.Group({\n x: scoreAreaValues.x * winW,\n y: scoreAreaValues.y * winH,\n listening: false,\n });\n globals.layers.UI.add(globals.elements.scoreArea);\n\n // The border that surrounds the score area when the team is at X clues.\n globals.elements.scoreAreaBorder = new Konva.Rect({\n x: scoreAreaValues.x * winW,\n y: scoreAreaValues.y * winH,\n width: scoreAreaValues.w! * winW,\n height: scoreAreaValues.h! * winH,\n stroke: \"#df1c2d\",\n strokeWidth: 0.003 * winW,\n cornerRadius: 0.01 * winW,\n visible: false,\n listening: false,\n });\n globals.layers.UI.add(globals.elements.scoreAreaBorder);\n\n // The faded rectangle around the score area.\n const scoreAreaRect = new Konva.Rect({\n x: 0,\n y: 0,\n width: scoreAreaValues.w! * winW,\n height: scoreAreaValues.h! * winH,\n fill: \"black\",\n opacity: 0.2,\n cornerRadius: 0.01 * winW,\n listening: false,\n });\n globals.elements.scoreArea.add(scoreAreaRect);\n\n const labelX = 0.02;\n const labelSpacing = 0.06;\n\n const turnTextLabel = basicTextLabel.clone({\n text: \"Turn\",\n x: labelX * winW,\n y: 0.01 * winH,\n listening: true,\n }) as Konva.Text;\n globals.elements.scoreArea.add(turnTextLabel);\n turnTextLabel.on(\"click\", (event: Konva.KonvaEventObject) => {\n // \"event.evt.buttons\" is always 0 here.\n if (event.evt.button === 0) {\n // Left-click. We want to be able to left-click the turn number to go to a specific turn in\n // the replay.\n replay.promptTurn();\n } else if (event.evt.button === 2) {\n // Right-click\n arrows.click(event, ReplayArrowOrder.Turn);\n }\n });\n turnTextLabel.on(\"dbltap\", replay.promptTurn);\n\n globals.elements.turnNumberLabel = basicNumberLabel.clone({\n text: \"1\",\n x: (labelX + labelSpacing) * winW,\n y: 0.01 * winH,\n listening: true,\n }) as TextWithTooltip;\n globals.elements.scoreArea.add(globals.elements.turnNumberLabel);\n globals.elements.turnNumberLabel.tooltipName = \"turn-number\";\n globals.elements.turnNumberLabel.on(\n \"click\",\n (event: Konva.KonvaEventObject) => {\n // \"event.evt.buttons\" is always 0 here.\n if (event.evt.button === 0) {\n // Left-click. We want to be able to left-click the turn number to go to a specific turn in\n // the replay.\n replay.promptTurn();\n } else if (event.evt.button === 2) {\n // Right-click.\n arrows.click(event, ReplayArrowOrder.Turn);\n }\n },\n );\n globals.elements.turnNumberLabel.on(\"dbltap\", replay.promptTurn);\n\n globals.elements.scoreTextLabel = basicTextLabel.clone({\n text: \"Score\",\n x: labelX * winW,\n y: 0.045 * winH,\n listening: true,\n visible:\n !globals.variant.throwItInAHole ||\n (!globals.state.playing && !globals.state.shadowing),\n }) as Konva.Text;\n globals.elements.scoreArea.add(globals.elements.scoreTextLabel);\n globals.elements.scoreTextLabel.on(\n \"click tap\",\n (event: Konva.KonvaEventObject) => {\n arrows.click(event, ReplayArrowOrder.Score);\n },\n );\n\n globals.elements.scoreNumberLabel = basicNumberLabel.clone({\n text: \"0\",\n x: (labelX + labelSpacing) * winW,\n y: 0.045 * winH,\n listening: true,\n visible:\n !globals.variant.throwItInAHole ||\n (!globals.state.playing && !globals.state.shadowing),\n }) as Konva.Text;\n globals.elements.scoreArea.add(globals.elements.scoreNumberLabel);\n globals.elements.scoreNumberLabel.on(\n \"click tap\",\n (event: Konva.KonvaEventObject) => {\n arrows.click(event, ReplayArrowOrder.Score);\n },\n );\n\n globals.elements.maxScoreNumberLabel = basicNumberLabel.clone({\n text: \"\",\n x: (labelX + labelSpacing) * winW,\n y: 0.05 * winH,\n fontSize: 0.017 * winH,\n listening: true,\n visible:\n !globals.variant.throwItInAHole ||\n (!globals.state.playing && !globals.state.shadowing),\n }) as Konva.Text;\n globals.elements.scoreArea.add(globals.elements.maxScoreNumberLabel);\n globals.elements.maxScoreNumberLabel.on(\n \"click tap\",\n (event: Konva.KonvaEventObject) => {\n arrows.click(event, ReplayArrowOrder.MaxScore);\n },\n );\n\n if (\n globals.variant.throwItInAHole &&\n (globals.state.playing || globals.state.shadowing)\n ) {\n globals.elements.playsTextLabel = basicTextLabel.clone({\n text: \"Plays\",\n x: labelX * winW,\n y: 0.045 * winH,\n listening: true,\n }) as Konva.Text;\n globals.elements.scoreArea.add(globals.elements.playsTextLabel);\n globals.elements.playsTextLabel.on(\n \"click tap\",\n (event: Konva.KonvaEventObject) => {\n arrows.click(event, ReplayArrowOrder.Clues);\n },\n );\n\n globals.elements.playsNumberLabel = basicNumberLabel.clone({\n text: \"0\",\n x: (labelX + labelSpacing) * winW,\n y: 0.045 * winH,\n listening: true,\n }) as Konva.Text;\n globals.elements.scoreArea.add(globals.elements.playsNumberLabel);\n globals.elements.playsNumberLabel.on(\n \"click tap\",\n (event: Konva.KonvaEventObject) => {\n arrows.click(event, ReplayArrowOrder.Clues);\n },\n );\n }\n\n const cluesTextLabel = basicTextLabel.clone({\n text: \"Clues\",\n x: labelX * winW,\n y: 0.08 * winH,\n listening: true,\n }) as Konva.Text;\n globals.elements.scoreArea.add(cluesTextLabel);\n cluesTextLabel.on(\n \"click tap\",\n (event: Konva.KonvaEventObject) => {\n arrows.click(event, ReplayArrowOrder.Clues);\n },\n );\n\n const cluesNumberLabel = basicNumberLabel.clone({\n text: \"8\",\n x: (labelX + labelSpacing) * winW,\n y: 0.08 * winH,\n listening: true,\n }) as Konva.Text;\n globals.elements.scoreArea.add(cluesNumberLabel);\n globals.elements.cluesNumberLabel = cluesNumberLabel;\n cluesNumberLabel.on(\n \"click tap\",\n (event: Konva.KonvaEventObject) => {\n arrows.click(event, ReplayArrowOrder.Clues);\n },\n );\n\n // Add an animation to signify that discarding at 8 clues is illegal.\n globals.elements.cluesNumberLabelPulse = new Konva.Tween({\n node: cluesNumberLabel,\n fontSize: 0.04 * winH,\n fill: \"#df1c2d\",\n offsetX: 0.001 * winH,\n offsetY: 0.01 * winH,\n duration: CARD_ANIMATION_LENGTH_SECONDS,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n easing: Konva.Easings.EaseInOut,\n onFinish: () => {\n if (globals.elements.cluesNumberLabelPulse !== null) {\n globals.elements.cluesNumberLabelPulse.reverse();\n }\n },\n });\n globals.elements.cluesNumberLabelPulse.anim.addLayer(globals.layers.UI);\n\n // Draw the 3 strike (bomb) black squares / X's.\n function strikeClick(\n this: StrikeSquare | StrikeX,\n event: Konva.KonvaEventObject,\n ) {\n if (globals.variant.throwItInAHole) {\n return;\n }\n\n switch (event.evt.button) {\n // Left-click\n case 0: {\n // Left-clicking a strike X or a strike square takes us to the turn that the strike\n // happened.\n const { strikes } = globals.state.ongoingGame;\n const strike = strikes[this.num];\n if (strike === undefined) {\n // There is no strike yet that corresponds to this square / X, so do nothing.\n return;\n }\n\n replay.goToSegment(strike.segment, true);\n\n // Highlight the card\n const card = getCardOrStackBase(strike.order);\n if (card) {\n arrows.toggle(card.state.order, true);\n }\n\n break;\n }\n\n // Right-click\n case 2: {\n // Right-clicking a strike X or a strike square shows an arrow over the strike square.\n let order: ReplayArrowOrder;\n switch (this.num) {\n case 0: {\n order = ReplayArrowOrder.Strike1;\n break;\n }\n\n case 1: {\n order = ReplayArrowOrder.Strike2;\n break;\n }\n\n case 2: {\n order = ReplayArrowOrder.Strike3;\n break;\n }\n }\n\n arrows.click(event, order);\n\n break;\n }\n\n default: {\n break;\n }\n }\n }\n\n for (const i of [0, 1, 2] as const) {\n // Draw the background square.\n const strikeSquare = new StrikeSquare(\n {\n x: (0.01 + 0.04 * i) * winW,\n y: 0.115 * winH,\n width: 0.03 * winW,\n height: 0.053 * winH,\n stroke: \"black\",\n strokeWidth: 0.002_11 * winH,\n cornerRadius: 0.005 * winW,\n listening: true,\n },\n i,\n );\n globals.elements.scoreArea.add(strikeSquare);\n globals.elements.strikeSquares.push(strikeSquare);\n\n // Draw the red X that indicates the strike.\n const strikeX = new StrikeX(\n {\n x: (0.015 + 0.04 * i) * winW,\n y: 0.125 * winH,\n width: 0.02 * winW,\n height: 0.036 * winH,\n image: globals.imageLoader!.get(\"x\"),\n opacity: 0,\n listening: true,\n },\n i,\n );\n globals.elements.scoreArea.add(strikeX);\n globals.elements.strikeXs.push(strikeX);\n\n // For variants where the strikes are hidden, draw a \"?\".\n if (\n globals.variant.throwItInAHole &&\n (globals.state.playing || globals.state.shadowing)\n ) {\n const questionMarkLabel = basicTextLabel.clone({\n text: \"?\",\n fontSize: 0.032 * winH,\n x: (0.0205 + 0.04 * i) * winW,\n y: 0.128 * winH,\n listening: false,\n }) as Konva.Text;\n globals.elements.scoreArea.add(questionMarkLabel);\n globals.elements.questionMarkLabels.push(questionMarkLabel);\n }\n\n // Handle the tooltips\n strikeSquare.tooltipName = \"strikes\";\n strikeX.tooltipName = strikeSquare.tooltipName;\n strikeSquare.tooltipContent =\n \"This shows how many strikes (bombs) the team currently has.\";\n strikeX.tooltipContent = strikeSquare.tooltipContent;\n initKonvaTooltips(strikeSquare, true, false);\n initKonvaTooltips(strikeX, true, false);\n\n // Click on the strike to go to the turn that the strike happened, if any (and highlight the\n // card that misplayed).\n strikeSquare.on(\"click tap\", strikeClick);\n strikeX.on(\"click tap\", strikeClick);\n }\n\n // The terminate button (which immediately ends the current game). This is placed on top of the\n // 3rd strike.\n if (globals.state.playing) {\n globals.elements.strikeSquares[2]!.hide();\n globals.elements.strikeXs[2]!.hide();\n const questionMarkLabel = globals.elements.questionMarkLabels[2];\n if (questionMarkLabel !== undefined) {\n questionMarkLabel.hide();\n }\n\n const terminateButton = new Button(\n {\n x: (0.01 + 0.04 * 2) * winW,\n y: 0.115 * winH,\n width: 0.03 * winW,\n height: 0.053 * winH,\n visible: globals.state.playing,\n },\n [globals.imageLoader!.get(\"skull\")],\n );\n globals.elements.scoreArea.add(terminateButton as unknown as Konva.Group);\n terminateButton.on(\n \"click tap\",\n (event: Konva.KonvaEventObject) => {\n if (event.evt.button === 0) {\n // Left click.\n globals.lobby.conn!.send(\"tableVoteForTermination\", {\n tableID: globals.lobby.tableID,\n });\n } else if (event.evt.button === 2) {\n // Right click.\n globals.lobby.conn!.send(\"tableTerminate\", {\n tableID: globals.lobby.tableID,\n });\n }\n },\n );\n terminateButton.tooltipName = \"kill\";\n let terminateContent =\n \"Left click to cast a vote to terminate the game (click again to cancel the vote).
    \";\n terminateContent += \"       \";\n terminateContent +=\n \"Right click to terminate immediately.\";\n terminateButton.tooltipContent = terminateContent;\n initKonvaTooltips(terminateButton, true, false);\n globals.elements.terminateButton = terminateButton;\n }\n}\n\n// The \"eyes\" symbol to show that one or more people are spectating the game.\nfunction drawSpectators() {\n // Position it to the bottom-left of the score area.\n spectatorsLabelValues = {\n x: scoreAreaValues.x - 0.037,\n y: scoreAreaValues.y + 0.09,\n };\n if (!globals.lobby.settings.keldonMode) {\n // Position it to the bottom-right of the score area.\n spectatorsLabelValues.x = scoreAreaValues.x + scoreAreaValues.w! + 0.01;\n }\n const imageSize = 0.02;\n const spectatorsLabel = new ImageWithTooltip({\n x: (spectatorsLabelValues.x + 0.005) * winW,\n y: spectatorsLabelValues.y * winH,\n width: imageSize * winW,\n height: imageSize * winW,\n // (This is not a typo; we want it to have the same width and height.)\n align: \"center\",\n image: globals.imageLoader!.get(\"eyes\"),\n shadowColor: \"black\",\n shadowBlur: 10,\n shadowOffset: {\n x: 0,\n y: 0,\n },\n shadowOpacity: 0.9,\n visible: false,\n listening: true,\n });\n globals.layers.UI.add(spectatorsLabel);\n spectatorsLabel.tooltipName = \"spectators\";\n spectatorsLabel.tooltipContent = \"\"; // This will be filled in later by the \"spectators\" command.\n initKonvaTooltips(spectatorsLabel, false, true);\n globals.elements.spectatorsLabel = spectatorsLabel;\n\n globals.elements.spectatorsNumLabel = new Konva.Text({\n x: spectatorsLabelValues.x * winW,\n y: (spectatorsLabelValues.y + 0.04) * winH,\n width: 0.03 * winW,\n height: 0.03 * winH,\n fontSize: 0.03 * winH,\n fontFamily: \"Verdana\",\n align: \"center\",\n text: \"0\",\n fill: LABEL_COLOR,\n shadowColor: \"black\",\n shadowBlur: 10,\n shadowOffset: {\n x: 0,\n y: 0,\n },\n shadowOpacity: 0.9,\n visible: false,\n listening: false,\n });\n globals.layers.UI.add(globals.elements.spectatorsNumLabel);\n}\n\n// The \"crown\" symbol to show that we are in a shared replay.\nfunction drawSharedReplay() {\n const sharedReplayLeaderLabelValues = {\n x: spectatorsLabelValues.x,\n y: spectatorsLabelValues.y - 0.06,\n };\n\n // A circle around the crown indicates that we are the current replay leader. (We want the icon to\n // be on top of this so that it does not interfere with mouse events.)\n globals.elements.sharedReplayLeaderCircle = new Konva.Circle({\n x: (sharedReplayLeaderLabelValues.x + 0.015) * winW,\n y: (sharedReplayLeaderLabelValues.y + 0.015) * winH,\n radius: 0.028 * winH,\n stroke: \"#ffe03b\", // Yellow\n strokeWidth: 0.002_11 * winH,\n visible: false,\n listening: false,\n });\n globals.layers.UI.add(globals.elements.sharedReplayLeaderCircle);\n\n // The crown\n const size = 0.025 * winW;\n const sharedReplayLeaderLabel = new ImageWithTooltip({\n x: (sharedReplayLeaderLabelValues.x + 0.0025) * winW,\n y: (sharedReplayLeaderLabelValues.y - 0.007) * winH,\n width: size,\n height: size,\n image: globals.imageLoader!.get(\"crown\"),\n shadowColor: \"black\",\n shadowBlur: 10,\n shadowOffset: {\n x: 0,\n y: 0,\n },\n shadowOpacity: 0.9,\n visible: false,\n listening: true,\n });\n globals.layers.UI.add(sharedReplayLeaderLabel);\n globals.elements.sharedReplayLeaderLabel = sharedReplayLeaderLabel;\n\n // Add an animation to alert everyone when shared replay leadership has been transferred.\n globals.elements.sharedReplayLeaderLabelPulse = new Konva.Tween({\n node: sharedReplayLeaderLabel,\n width: size * 2,\n height: size * 2,\n offsetX: 0.025 * winH,\n offsetY: 0.025 * winH,\n duration: CARD_ANIMATION_LENGTH_SECONDS,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n easing: Konva.Easings.EaseInOut,\n onFinish: () => {\n if (globals.elements.sharedReplayLeaderLabelPulse !== null) {\n globals.elements.sharedReplayLeaderLabelPulse.reverse();\n }\n },\n });\n globals.elements.sharedReplayLeaderLabelPulse.anim.addLayer(\n globals.layers.UI,\n );\n\n // Tooltip for the crown.\n sharedReplayLeaderLabel.tooltipName = \"leader\";\n // This will get filled in later by the \"replayLeader\" command.\n sharedReplayLeaderLabel.tooltipContent = \"\";\n initKonvaTooltips(sharedReplayLeaderLabel, false, true);\n\n // The user can click on the crown to pass the replay leader to an arbitrary person. Require a\n // double tap to prevent accidentally opening the dialog when hovering over the crown.\n sharedReplayLeaderLabel.on(\"click dbltap\", () => {\n if (globals.state.replay.shared === null) {\n return;\n }\n\n if (globals.state.spectators.length === 1) {\n modals.showWarning(\n \"You are the only person in the shared replay, so you cannot pass the leader to someone else.\",\n );\n return;\n }\n\n leaderPlaceholder.innerHTML = \"\";\n\n for (const spectator of globals.state.spectators) {\n if (spectator.name === globals.state.replay.shared.leader) {\n continue;\n }\n\n const button = document.createElement(\"button\");\n\n button.innerHTML = spectator.name;\n button.classList.add(\"button\");\n button.dataset[\"player\"] = spectator.name;\n button.addEventListener(\"click\", (event) => {\n const element = event.target as HTMLElement;\n setLeader(element.dataset[\"player\"]);\n });\n button.type = \"submit\";\n\n leaderPlaceholder.append(button);\n }\n\n modals.showPrompt(\"#set-leader-modal\");\n });\n}\n\nfunction setLeader(player: string | null | undefined) {\n modals.closeModals();\n\n if (player === null || player === undefined) {\n return;\n }\n\n globals.lobby.conn!.send(\"tableSetLeader\", {\n tableID: globals.lobby.tableID,\n name: player,\n });\n}\n\n// A notification that shows it is your turn.\nfunction drawYourTurn() {\n if (globals.lobby.settings.keldonMode) {\n return;\n }\n\n globals.elements.yourTurn = new Konva.Group({\n x: (spectatorsLabelValues.x + 0.052) * winW,\n y: (spectatorsLabelValues.y - 0.01) * winH,\n visible: false,\n listening: false,\n });\n globals.layers.UI.add(globals.elements.yourTurn);\n\n const circle = new Konva.Ellipse({\n radiusX: 0.039 * winW,\n radiusY: 0.05 * winH,\n fill: \"black\",\n opacity: 0.5,\n stroke: \"black\",\n strokeWidth: 0.004_22 * winH,\n offset: {\n x: -0.0175 * winW,\n y: -0.036 * winH,\n },\n listening: false,\n });\n globals.elements.yourTurn.add(circle);\n\n const text = new Konva.Text({\n x: -0.004 * winW,\n y: 0.003 * winH,\n fontSize: 0.034 * winH,\n fontFamily: \"Verdana\",\n fill: \"yellow\",\n align: \"center\",\n text: \"Your\\nTurn\",\n listening: false,\n });\n globals.elements.yourTurn.add(text);\n}\n\nfunction drawClueLog() {\n clueLogValues = {\n x: 0.8,\n y: 0.01,\n w: 0.19,\n h: 0.51,\n };\n const clueLogRect = new Konva.Rect({\n x: clueLogValues.x * winW,\n y: clueLogValues.y * winH,\n width: clueLogValues.w! * winW,\n height: clueLogValues.h! * winH,\n fill: \"black\",\n opacity: 0.2,\n cornerRadius: 0.01 * winW,\n listening: false,\n });\n globals.layers.UI.add(clueLogRect);\n\n const spacing = 0.01;\n globals.elements.clueLog = new ClueLog({\n x: (clueLogValues.x + spacing) * winW,\n y: (clueLogValues.y + spacing) * winH,\n width: (clueLogValues.w! - spacing * 2) * winW,\n height: (clueLogValues.h! - spacing * 2) * winH,\n listening: false,\n });\n globals.layers.UI.add(globals.elements.clueLog as unknown as Konva.Group);\n}\n\n// Statistics are shown on the right-hand side of the screen (at the bottom of the clue log).\nfunction drawStatistics() {\n const statsRect = new Konva.Rect({\n x: clueLogValues.x * winW,\n y: 0.53 * winH,\n width: clueLogValues.w! * winW,\n height: 0.09 * winH,\n fill: \"black\",\n opacity: 0.2,\n cornerRadius: 0.01 * winW,\n listening: false,\n });\n globals.layers.UI.add(statsRect);\n\n const variantLabel = new FitText({\n text: globals.variant.name.replace(/\\s*\\(\\d Suits\\)/, \"\"),\n x: 0.825 * winW,\n y: 0.54 * winH,\n width: 0.15 * winW,\n height: 0.03 * winH,\n fontSize: 0.02 * winH,\n fontFamily: \"Verdana\",\n fill: LABEL_COLOR,\n shadowColor: \"black\",\n shadowBlur: 10,\n shadowOffset: {\n x: 0,\n y: 0,\n },\n shadowOpacity: 0.9,\n align: \"center\",\n listening: false,\n });\n globals.layers.UI.add(variantLabel);\n globals.elements.variantLabel = variantLabel;\n\n const variantUnderline = new Konva.Line({\n points: [0.825 * winW, 0.56 * winH, 0.965 * winW, 0.56 * winH],\n stroke: LABEL_COLOR,\n strokeWidth: 1,\n lineJoin: \"round\",\n shadowColor: \"black\",\n shadowBlur: 5,\n shadowOffset: {\n x: 0,\n y: 3,\n },\n shadowOpacity: 0,\n listening: false,\n });\n globals.layers.UI.add(variantUnderline);\n globals.elements.variantUnderline = variantUnderline;\n\n const paceTextLabel = basicTextLabel.clone({\n text: \"Pace\",\n x: 0.825 * winW,\n y: 0.57 * winH,\n fontSize: 0.02 * winH,\n listening: true,\n }) as TextWithTooltip;\n globals.layers.UI.add(paceTextLabel);\n paceTextLabel.tooltipName = \"pace\";\n let paceContent =\n \"Pace is a measure of how many discards can happen while
    \";\n paceContent += \"       \";\n paceContent += \"still having a chance to get the maximum score.
    \";\n paceContent += \"       \";\n paceContent +=\n '(For more information, click on the \"Help\" button in the lobby.)';\n globals.layers.UI.add(paceTextLabel);\n paceTextLabel.tooltipContent = paceContent;\n initKonvaTooltips(paceTextLabel, true, false);\n\n const paceNumberLabel = basicNumberLabel.clone({\n text: \"-\",\n x: 0.9 * winW,\n y: 0.57 * winH,\n fontSize: 0.02 * winH,\n listening: true,\n }) as Konva.Text;\n globals.layers.UI.add(paceNumberLabel);\n globals.elements.paceNumberLabel = paceNumberLabel;\n\n paceTextLabel.on(\"click tap\", (event: Konva.KonvaEventObject) => {\n arrows.click(event, ReplayArrowOrder.Pace);\n });\n paceNumberLabel.on(\n \"click tap\",\n (event: Konva.KonvaEventObject) => {\n arrows.click(event, ReplayArrowOrder.Pace);\n },\n );\n\n const efficiencyTextLabel = basicTextLabel.clone({\n text: \"Efficiency\",\n x: 0.825 * winW,\n y: 0.59 * winH,\n fontSize: 0.02 * winH,\n listening: true,\n }) as TextWithTooltip;\n globals.layers.UI.add(efficiencyTextLabel);\n efficiencyTextLabel.tooltipName = \"efficiency-text\";\n const padding = \"        \";\n const efficiencyTextLabelContent = `\n Efficiency is calculated by:
    \n ${padding}    (number of cards played +
    \n ${padding}    number of touched cards) /
    \n ${padding}    number of clues given or lost

    \n ${padding}The first number is the minimum amount of efficiency needed from
    \n ${padding}this turn onward in order to win (i.e. future required efficiency).
    \n ${padding}The second number shows the minimum possible efficiency needed
    \n ${padding}to win with the current number of players and the current variant.
    \n ${padding}(For more information, click on the \"Help\" button in the lobby.)\n `;\n efficiencyTextLabel.tooltipContent = efficiencyTextLabelContent;\n initKonvaTooltips(efficiencyTextLabel, true, false);\n efficiencyTextLabel.on(\n \"click tap\",\n (event: Konva.KonvaEventObject) => {\n arrows.click(event, ReplayArrowOrder.Efficiency);\n },\n );\n\n const efficiencyNumberLabel = basicNumberLabel.clone({\n text: \"-\",\n x: 0.9 * winW,\n y: 0.59 * winH,\n fontSize: 0.02 * winH,\n listening: true,\n }) as TextWithTooltip;\n globals.layers.UI.add(efficiencyNumberLabel);\n globals.elements.efficiencyNumberLabel = efficiencyNumberLabel;\n efficiencyNumberLabel.on(\"click\", stats.efficiencyLabelClick);\n efficiencyNumberLabel.on(\"dbltap\", stats.askForEfficiency);\n efficiencyNumberLabel.tooltipName = \"efficiency-number\";\n // The tooltip will be filled in later in the \"statsView.onEfficiencyChanged()\" function.\n\n const efficiencyPipeLabel = basicNumberLabel.clone({\n text: \" | \",\n x: 0.905 * winW,\n y: 0.59 * winH,\n fontSize: 0.02 * winH,\n listening: true,\n }) as Konva.Text;\n globals.layers.UI.add(efficiencyPipeLabel);\n globals.elements.efficiencyPipeLabel = efficiencyPipeLabel;\n\n const efficiencyMinNeededLabel = basicNumberLabel.clone({\n text: globals.metadata.minEfficiency.toFixed(2), // Convert it to a string and round to 2 decimal places\n x: 0.918 * winW,\n y: 0.59 * winH,\n fontSize: 0.02 * winH,\n // - \"Easy\" variants use the default color (off-white).\n // - \"Hard\" variants use pink.\n fill:\n globals.metadata.hardVariant &&\n globals.lobby.settings.hyphenatedConventions\n ? \"#ffb2b2\"\n : LABEL_COLOR,\n // If colorblindMode is activated, indicate make font bold if \"Hard\".\n fontStyle:\n globals.metadata.hardVariant &&\n globals.lobby.settings.hyphenatedConventions &&\n globals.lobby.settings.colorblindMode\n ? \"bold\"\n : \"normal\",\n listening: true,\n }) as Konva.Text;\n globals.layers.UI.add(efficiencyMinNeededLabel);\n efficiencyMinNeededLabel.on(\n \"click tap\",\n (event: Konva.KonvaEventObject) => {\n arrows.click(event, ReplayArrowOrder.MinEfficiency);\n },\n );\n globals.elements.efficiencyMinNeededLabel = efficiencyMinNeededLabel;\n}\n\nfunction drawDiscardArea() {\n // The red border that surrounds the discard pile when the team is at 8 clues.\n globals.elements.noDiscardBorder = new Konva.Rect({\n x: 0.8 * winW,\n y: 0.63 * winH,\n width: 0.19 * winW,\n height: 0.36 * winH,\n stroke: \"#df1c2d\",\n strokeWidth: 0.005 * winW,\n cornerRadius: 0.01 * winW,\n visible: false,\n listening: false,\n });\n globals.layers.UI.add(globals.elements.noDiscardBorder);\n\n // The yellow border that surrounds the discard pile when it is a \"Double Discard\" situation.\n globals.elements.noDoubleDiscardBorder = new Konva.Rect({\n x: 0.8 * winW,\n y: 0.63 * winH,\n width: 0.19 * winW,\n height: 0.36 * winH,\n stroke: \"yellow\",\n strokeWidth: 0.004 * winW,\n cornerRadius: 0.01 * winW,\n opacity: 0.75,\n visible: false,\n listening: false,\n });\n globals.layers.UI.add(globals.elements.noDoubleDiscardBorder);\n\n // The faded rectangle around the trash can.\n const discardAreaRect = new Konva.Rect({\n x: 0.8 * winW,\n y: 0.63 * winH,\n width: 0.19 * winW,\n height: 0.36 * winH,\n fill: \"black\",\n opacity: 0.2,\n cornerRadius: 0.01 * winW,\n });\n globals.layers.UI.add(discardAreaRect);\n\n // The trash can icon over the discard pile.\n const trashcan = new Konva.Image({\n x: 0.82 * winW,\n y: 0.65 * winH,\n width: 0.15 * winW,\n height: 0.33 * winH,\n opacity: 0.2,\n image: globals.imageLoader!.get(\"trashcan\"),\n listening: false,\n });\n globals.layers.UI.add(trashcan);\n\n // This is the invisible rectangle that players drag cards to in order to discard them.\n globals.elements.discardArea = new Konva.Rect({\n x: 0.8 * winW,\n y: 0.63 * winH,\n width: 0.2 * winW,\n height: 0.37 * winH,\n listening: false,\n });\n}\n\nfunction drawArrows() {\n repeat(6, () => {\n const arrow = new Arrow(winW, winH, globals.lobby.settings.colorblindMode);\n globals.layers.arrow.add(arrow as unknown as Konva.Group);\n globals.elements.arrows.push(arrow);\n });\n}\n\nfunction drawTimers() {\n // Just in case, stop the previous timer, if any.\n timer.stop();\n\n // We do not want the timer to show in replays or untimed games (unless they have the optional\n // setting turned on).\n if (\n globals.state.finished ||\n (!globals.options.timed && !globals.lobby.settings.showTimerInUntimed)\n ) {\n return;\n }\n\n const timerValues = {\n x1: 0.145,\n x2: 0.595,\n y1: 0.645,\n y2: 0.645,\n w: 0.065,\n h: 0.051,\n fontSize: 0.03,\n cornerRadius: 0.05,\n spaceH: 0.01,\n };\n if (!globals.lobby.settings.keldonMode) {\n timerValues.x1 = 0.352;\n timerValues.x2 = timerValues.x1;\n timerValues.y1 = 0.77;\n timerValues.y2 = 0.885;\n }\n\n // A circle around the timer indicates that we have queued a pause. (We want the timer to be on\n // top of this so that it does not interfere with mouse events.)\n globals.elements.timer1Circle = new Konva.Ellipse({\n x: (timerValues.x1 + 0.0328) * winW,\n y: (timerValues.y1 + 0.034) * winH,\n radiusX: 0.05 * winW,\n radiusY: 0.07 * winH,\n stroke: \"#ffe03b\", // Yellow\n strokeWidth: 0.002_11 * winH,\n visible: false,\n listening: false,\n });\n globals.layers.UI.add(globals.elements.timer1Circle);\n\n // The timer for \"You\".\n globals.elements.timer1 = new TimerDisplay({\n x: timerValues.x1 * winW,\n y: timerValues.y1 * winH,\n width: timerValues.w * winW,\n height: timerValues.h * winH,\n fontSize: timerValues.fontSize * winH,\n cornerRadius: timerValues.cornerRadius * winH,\n spaceH: timerValues.spaceH * winH,\n label: \"You\",\n visible: false,\n listening: true,\n });\n globals.layers.timer.add(globals.elements.timer1 as unknown as Konva.Group);\n\n globals.elements.timer1.on(\n \"click\",\n (event: Konva.KonvaEventObject) => {\n // \"event.evt.buttons\" is always 0 here.\n if (event.evt.button === 2) {\n // Right-click\n timerClick();\n }\n },\n );\n globals.elements.timer1.on(\"dbltap\", timerClick);\n\n // The timer for the current player.\n globals.elements.timer2 = new TimerDisplay({\n x: timerValues.x2 * winW,\n y: timerValues.y2 * winH,\n width: timerValues.w * winW,\n height: timerValues.h * winH,\n fontSize: timerValues.fontSize * winH,\n labelFontSize: 0.02 * winH,\n cornerRadius: timerValues.cornerRadius * winH,\n spaceH: timerValues.spaceH * winH,\n visible: false,\n listening: true,\n });\n globals.layers.timer.add(globals.elements.timer2 as unknown as Konva.Group);\n if (globals.options.timed || globals.lobby.settings.showTimerInUntimed) {\n globals.elements.timer2.tooltipName = \"time-taken\";\n // (The content will be updated in the \"setTickingDownTimeCPTooltip()\" function.)\n initKonvaTooltips(globals.elements.timer2, true, false);\n }\n}\n\nfunction timerClick() {\n if (\n !globals.options.timed || // We do not need to pause if this is not a timed game.\n globals.state.pause.active // We do not need to pause if the game is already paused.\n ) {\n return;\n }\n\n const { currentPlayerIndex } = globals.state.ongoingGame.turn;\n const { ourPlayerIndex } = globals.metadata;\n\n let setting: string;\n if (currentPlayerIndex === ourPlayerIndex) {\n setting = \"pause\";\n } else if (globals.state.pause.queued) {\n setting = \"pause-unqueue\";\n\n globals.store!.dispatch({\n type: \"pauseQueue\",\n queued: false,\n });\n } else {\n setting = \"pause-queue\";\n\n globals.store!.dispatch({\n type: \"pauseQueue\",\n queued: true,\n });\n }\n\n globals.lobby.conn!.send(\"pause\", {\n tableID: globals.lobby.tableID,\n setting,\n });\n}\n\nfunction drawClueArea() {\n // Put the clue area directly below the play stacks, with a little bit of spacing.\n clueAreaValues = {\n x: actionLogValues.x,\n y: playAreaValues.y + playAreaValues.h! + 0.005,\n w: actionLogValues.w!,\n h: 0.23,\n };\n if (globals.variant.showSuitNames) {\n clueAreaValues.y += 0.03;\n }\n // In BGA mode, we can afford to put a bit more spacing to make it look less packed together.\n if (!globals.lobby.settings.keldonMode) {\n clueAreaValues.y += 0.02;\n }\n globals.elements.clueArea = new Konva.Group({\n x: clueAreaValues.x * winW,\n y: clueAreaValues.y * winH,\n width: clueAreaValues.w! * winW,\n visible: false,\n listening: false,\n });\n\n // Player buttons\n const { numPlayers } = globals.options;\n const playerButtonH = globals.lobby.settings.keldonMode ? 0.025 : 0.035;\n const playerButtonSpacing = 0.0075;\n\n // If this is a two player game, we can slide the clue UI down by a bit (since the clue target\n // buttons won't be shown).\n const playerButtonAdjustment = numPlayers === 2 ? playerButtonH / 2 : 0;\n\n // This is the normal button group, which does not include us.\n globals.elements.clueTargetButtonGroup = new ButtonGroup({\n listening: false,\n });\n {\n const totalPlayerButtons = numPlayers - 1;\n const totalPlayerW =\n clueAreaValues.w! - playerButtonSpacing * (totalPlayerButtons - 1);\n const playerButtonW = totalPlayerW / totalPlayerButtons;\n\n for (const i of eRange(totalPlayerButtons)) {\n const playerIndex = ((globals.metadata.ourPlayerIndex + i + 1) %\n numPlayers) as PlayerIndex;\n const button = new PlayerButton(\n {\n x: (playerButtonW + playerButtonSpacing) * i * winW,\n y: 0,\n width: playerButtonW * winW,\n height: playerButtonH * winH,\n text: globals.metadata.playerNames[playerIndex],\n },\n playerIndex,\n );\n globals.elements.clueTargetButtonGroup.add(\n button as unknown as Konva.Group,\n );\n globals.elements.clueTargetButtonGroup.addList(button);\n }\n }\n globals.elements.clueArea.add(\n globals.elements.clueTargetButtonGroup as unknown as Konva.Group,\n );\n if (numPlayers === 2) {\n // The clue target buttons are pointless if we are playing a 2-player game (because we only have\n // the ability to clue one player).\n globals.elements.clueTargetButtonGroup.hide();\n // Default the clue recipient button to the only other player available.\n globals.elements.clueTargetButtonGroup.list[0]!.setPressed(true);\n }\n\n // This button group includes us, which is used for hypotheticals.\n globals.elements.clueTargetButtonGroup2 = new ButtonGroup({\n listening: false,\n });\n {\n const totalPlayerButtons = numPlayers;\n const totalPlayerW =\n clueAreaValues.w! - playerButtonSpacing * (totalPlayerButtons - 1);\n const playerButtonW = totalPlayerW / totalPlayerButtons;\n\n for (const i of eRange(totalPlayerButtons)) {\n // We change the calculation of `playerIndex` from the above code block because we want the\n // buttons to follow the order of players from top to bottom (in BGA mode).\n const playerIndex = ((globals.metadata.ourPlayerIndex + i) %\n numPlayers) as PlayerIndex;\n const button = new PlayerButton(\n {\n x: (playerButtonW + playerButtonSpacing) * i * winW,\n y: 0,\n width: playerButtonW * winW,\n height: playerButtonH * winH,\n text: globals.metadata.playerNames[playerIndex],\n },\n playerIndex,\n );\n globals.elements.clueTargetButtonGroup2.add(\n button as unknown as Konva.Group,\n );\n globals.elements.clueTargetButtonGroup2.addList(button);\n }\n }\n globals.elements.clueArea.add(\n globals.elements.clueTargetButtonGroup2 as unknown as Konva.Group,\n );\n globals.elements.clueTargetButtonGroup2.hide();\n\n // Clue type buttons\n const buttonW = 0.04;\n const buttonH = 0.071;\n const buttonXSpacing = 0.009;\n const buttonYSpacing = 0.002;\n globals.elements.clueTypeButtonGroup = new ButtonGroup({\n listening: false,\n });\n\n // In a hypo, the lower part of the clue ui slides left independently of the clue target buttons.\n // The limiting factor on how far it can slide is when there's 6 color buttons.\n const maxColorWidth = buttonW * 6 + buttonXSpacing * 5;\n const lowerClueAreaWidth = maxColorWidth * winW;\n const offsetX = -0.5 * (clueAreaValues.w! * winW - lowerClueAreaWidth);\n function setLeft(this: SlidableGroup) {\n const x = offsetX;\n this.x(x);\n }\n\n function setCenter(this: SlidableGroup) {\n this.x(0);\n }\n\n lowerClueAreaValues = {\n x: 0,\n y: playerButtonH,\n w: maxColorWidth,\n };\n\n globals.elements.lowerClueArea = new SlidableGroup({\n x: lowerClueAreaValues.x * winW,\n y: lowerClueAreaValues.y * winH,\n width: lowerClueAreaValues.w!,\n });\n\n globals.elements.lowerClueArea.setLeft = setLeft;\n globals.elements.lowerClueArea.setCenter = setCenter;\n globals.elements.lowerClueArea.setCenter();\n globals.elements.clueArea.add(\n globals.elements.lowerClueArea as unknown as Konva.Group,\n );\n\n // Color buttons\n globals.elements.colorClueButtons = [];\n let totalColorWidth = buttonW * globals.variant.clueColors.length;\n totalColorWidth += buttonXSpacing * (globals.variant.clueColors.length - 1);\n const colorX = clueAreaValues.w! * 0.5 - totalColorWidth * 0.5;\n const colorY = buttonYSpacing - playerButtonAdjustment;\n for (const [i, clueColor] of globals.variant.clueColors.entries()) {\n // Find the first suit that matches this color.\n let matchingSuit: Suit | undefined;\n for (const suit of globals.variant.suits) {\n if (suit.clueColors.includes(clueColor)) {\n matchingSuit = suit;\n break;\n }\n }\n assertDefined(\n matchingSuit,\n `Failed to find the suit for the clue color of: ${clueColor.name}`,\n );\n\n const button = new ColorButton(\n {\n x: (colorX + i * (buttonW + buttonXSpacing)) * winW,\n y: colorY * winH,\n width: buttonW * winW,\n height: buttonH * winH,\n color: clueColor.fill,\n text: clueColor.abbreviation,\n clue: newColorClue(clueColor),\n },\n matchingSuit,\n );\n\n globals.elements.clueTypeButtonGroup.add(button as unknown as Konva.Group);\n globals.elements.clueTypeButtonGroup.addList(button);\n globals.elements.colorClueButtons.push(button);\n }\n\n // Rank buttons / number buttons.\n globals.elements.rankClueButtons = [];\n const numRanks = globals.variant.clueRanks.length;\n let totalRankWidth = buttonW * numRanks;\n totalRankWidth += buttonXSpacing * (numRanks - 1);\n const rankX = clueAreaValues.w! * 0.5 - totalRankWidth * 0.5;\n const rankY = colorY + buttonH + buttonYSpacing;\n for (const [i, rank] of globals.variant.clueRanks.entries()) {\n const button = new RankButton({\n x: (rankX + i * (buttonW + buttonXSpacing)) * winW,\n y: rankY * winH,\n width: buttonW * winW,\n height: buttonH * winH,\n label: rankTextFromVariant(rank),\n clue: newRankClue(rank),\n });\n\n globals.elements.clueTypeButtonGroup.add(button as unknown as Konva.Group);\n globals.elements.clueTypeButtonGroup.addList(button);\n globals.elements.rankClueButtons.push(button);\n }\n\n // Set button functionality\n globals.elements.clueTargetButtonGroup.on(\"change\", clues.checkLegal);\n globals.elements.clueTargetButtonGroup2.on(\"change\", clues.checkLegal);\n globals.elements.clueTypeButtonGroup.on(\"change\", clues.checkLegal);\n\n globals.elements.lowerClueArea.add(\n globals.elements.clueTypeButtonGroup as unknown as Konva.Group,\n );\n\n // The \"Give Clue\" button.\n giveClueValues = {\n x: 0,\n y: rankY + buttonH + buttonYSpacing,\n w: 0.236,\n };\n giveClueValues.x = clueAreaValues.w! * 0.5 - giveClueValues.w! * 0.5;\n\n globals.elements.giveClueButton = new Button({\n x: giveClueValues.x * winW,\n y: giveClueValues.y * winH,\n width: giveClueValues.w! * winW,\n height: 0.051 * winH,\n text: \"Give Clue\",\n });\n globals.elements.giveClueButton.setEnabled(false);\n globals.elements.lowerClueArea.add(\n globals.elements.giveClueButton as unknown as Konva.Group,\n );\n globals.elements.giveClueButton.on(\"click tap\", clues.give);\n\n globals.layers.UI.add(globals.elements.clueArea);\n\n // The clue area is disabled when there are 0 clue tokens.\n drawClueAreaDisabled(offsetX);\n\n // The \"waiting\" animation that will display until the server acknowledges the player's action.\n drawClueAreaWaitingForServer();\n}\n\nfunction rankTextFromVariant(rank: RankClueNumber): string {\n if (globals.variant.oddsAndEvens) {\n return rank === 1 ? \"O\" : \"E\";\n }\n\n return rank.toString();\n}\n\nfunction drawClueAreaDisabled(offsetX: number) {\n // We fade the clue area and draw a rectangle on top of it when there are no clues available.\n globals.elements.clueAreaDisabled = new SlidableGroup({\n x: clueAreaValues.x * winW,\n y: clueAreaValues.y * winH,\n width: clueAreaValues.w! * winW,\n listening: false,\n });\n\n function setLeft(this: SlidableGroup) {\n this.x(clueAreaValues.x * winW + offsetX);\n }\n globals.elements.clueAreaDisabled.setLeft = setLeft;\n\n function setCenter(this: SlidableGroup) {\n this.x(clueAreaValues.x * winW);\n }\n globals.elements.clueAreaDisabled.setCenter = setCenter;\n globals.elements.clueAreaDisabled.setCenter();\n\n // A transparent rectangle to stop clicks.\n const rect = new Konva.Rect({\n width: clueAreaValues.w! * winW,\n height: clueAreaValues.h! * winH,\n listening: true, // It must listen or it won't stop clicks.\n });\n globals.elements.clueAreaDisabled.add(rect);\n\n const spacing = {\n x: 0.075,\n y: 0.03,\n };\n const lineColor = \"#1a1a1a\";\n\n // The line from top-left to bottom-right.\n const line1 = new Konva.Line({\n points: [\n spacing.x * winW,\n spacing.y * winH,\n (clueAreaValues.w! - spacing.x) * winW,\n (clueAreaValues.h! - spacing.y) * winH,\n ],\n stroke: lineColor,\n strokeWidth: 0.005_28 * winH,\n listening: false,\n });\n globals.elements.clueAreaDisabled.add(line1);\n\n // The line from bottom-left to top-right.\n const line2 = new Konva.Line({\n points: [\n spacing.x * winW,\n (clueAreaValues.h! - spacing.y) * winH,\n (clueAreaValues.w! - spacing.x) * winW,\n spacing.y * winH,\n ],\n stroke: lineColor,\n strokeWidth: 0.005_28 * winH,\n listening: false,\n });\n globals.elements.clueAreaDisabled.add(line2);\n\n // The \"No clues available\" text.\n const noCluesText = new FitText({\n y: clueAreaValues.h! * 0.4 * winH,\n width: clueAreaValues.w! * winW,\n fontSize: 0.07 * winH,\n fontFamily: \"Verdana\",\n align: \"center\",\n text: \"No clues\",\n fill: LABEL_COLOR,\n stroke: \"black\",\n strokeWidth: 0.002_11 * winH,\n listening: false,\n });\n globals.elements.clueAreaDisabled.add(noCluesText);\n\n globals.elements.clueAreaDisabled.hide();\n globals.layers.UI.add(\n globals.elements.clueAreaDisabled as unknown as Konva.Group,\n );\n}\n\nfunction drawClueAreaWaitingForServer() {\n const waitingOnServer = new Konva.Group({\n x: clueAreaValues.x * winW,\n y: clueAreaValues.y * winH,\n width: clueAreaValues.w! * winW,\n height: clueAreaValues.h! * winH,\n visible: false,\n listening: false,\n });\n\n const blueCircle = new Konva.Circle({\n x: waitingOnServer.width() / 2,\n y: waitingOnServer.height() / 2,\n radius: 50,\n stroke: \"blue\",\n strokeWidth: 5,\n });\n\n waitingOnServer.add(blueCircle);\n\n const redCircle = new Konva.Circle({\n x: waitingOnServer.width() / 2,\n y: waitingOnServer.height() / 2,\n radius: 50,\n stroke: \"red\",\n strokeWidth: 5,\n });\n\n waitingOnServer.add(redCircle);\n\n const period = SECOND_IN_MILLISECONDS;\n const animation = new Konva.Animation((frame: Konva.Animation[\"frame\"]) => {\n const scale = (frame.time % period) / period;\n blueCircle.scale({ x: scale, y: scale });\n blueCircle.opacity(1 - scale);\n\n const redScale = ((frame.time + period / 2) % period) / period;\n redCircle.scale({ x: redScale, y: redScale });\n redCircle.opacity(1 - redScale);\n }, globals.layers.UI);\n\n globals.layers.UI.add(waitingOnServer);\n\n globals.elements.waitingOnServer = waitingOnServer;\n globals.elements.waitingOnServerAnimation = animation;\n}\n\nfunction drawCurrentPlayerArea() {\n // The \"Current player: [player name]\" box\n const currentPlayerAreaWidth = 0.3; // This is big enough to fit in between the two timers\n const currentPlayerAreaValues = {\n x: clueAreaValues.x + clueAreaValues.w! / 2 - currentPlayerAreaWidth / 2,\n y: clueAreaValues.y + 0.015,\n w: currentPlayerAreaWidth,\n h: 0.15,\n spacing: 0.006,\n };\n globals.elements.currentPlayerArea = new CurrentPlayerArea(\n currentPlayerAreaValues,\n winW,\n winH,\n );\n globals.layers.UI.add(\n globals.elements.currentPlayerArea as unknown as Konva.Group,\n );\n}\n\nfunction drawPreplayArea() {\n const w = 0.29;\n const h = 0.1;\n const x = clueAreaValues.x + clueAreaValues.w! / 2 - w / 2;\n const y = clueAreaValues.y + 0.05; // \"clueAreaValues.h\" does not exist\n globals.elements.premoveCancelButton = new Button({\n x: x * winW,\n y: y * winH,\n width: w * winW,\n height: h * winH,\n text: \"Cancel Pre-Move\",\n visible: false,\n });\n globals.layers.UI.add(\n globals.elements.premoveCancelButton as unknown as Konva.Group,\n );\n globals.elements.premoveCancelButton.on(\"click tap\", () => {\n globals.store!.dispatch({\n type: \"premove\",\n premove: null,\n });\n });\n}\n\nfunction drawHypotheticalArea() {\n const hypoValues = {\n x: actionLogValues.x,\n y: clueAreaValues.y + 0.06,\n w: actionLogValues.w,\n h: 0.05,\n };\n\n // The \"Hypothetical\" circle that shows we are currently in a hypothetical.\n globals.elements.hypoCircle = new Konva.Group({\n x: hypoValues.x * winW,\n y: hypoValues.y * winH,\n visible: false,\n listening: false,\n });\n globals.layers.UI.add(globals.elements.hypoCircle);\n\n const circle = new Konva.Ellipse({\n x: hypoValues.w! * 0.5 * winW,\n y: hypoValues.h * 0.5 * winW,\n radiusX: hypoValues.w! * 0.4 * winW,\n radiusY: hypoValues.h * winH,\n fill: \"black\",\n opacity: 0.5,\n stroke: \"black\",\n strokeWidth: 0.004_22 * winH,\n listening: false,\n });\n globals.elements.hypoCircle.add(circle);\n\n const text = new FitText({\n y: hypoValues.h * 0.4 * winH,\n name: \"text\",\n width: hypoValues.w! * winW,\n fontSize: 0.06 * winH,\n fontFamily: \"Verdana\",\n fill: LABEL_COLOR,\n align: \"center\",\n text: \"Hypothetical\",\n listening: false,\n });\n globals.elements.hypoCircle.add(text);\n\n globals.elements.hypoButtonsArea = new Konva.Group({\n visible: false,\n });\n\n globals.layers.UI.add(globals.elements.hypoButtonsArea);\n\n // The \"Back 1 Turn\" button (to the right of the give clue button).\n const hypoBackButtonValues = {\n x:\n clueAreaValues.x +\n lowerClueAreaValues.x +\n giveClueValues.x +\n giveClueValues.w! -\n 0.05,\n y: clueAreaValues.y + lowerClueAreaValues.y + giveClueValues.y,\n w: 0.035,\n h: 0.051,\n };\n\n globals.elements.hypoBackButton = new Button({\n x: hypoBackButtonValues.x * winW,\n y: hypoBackButtonValues.y * winH,\n width: hypoBackButtonValues.w * winW,\n height: hypoBackButtonValues.h * winH,\n text: \"Back\",\n fontSize: 0.019 * winH,\n });\n\n globals.elements.hypoBackButton.tooltipName = \"hypo-back\";\n globals.elements.hypoBackButton.tooltipContent =\n \"Go back a turn in this hypothetical.\";\n initKonvaTooltips(globals.elements.hypoBackButton, true, false);\n\n globals.elements.hypoBackButton.on(\n \"click tap\",\n hypothetical.sendHypotheticalBack,\n );\n globals.elements.hypoButtonsArea.add(\n globals.elements.hypoBackButton as unknown as Konva.Group,\n );\n\n const hypoButtonWidth = 0.075;\n const hypoButtonHeight = 0.051;\n const hypoButtonSpacing = 0.008;\n\n // The \"End Hypothetical\" button (to the right of the back button).\n const endHypotheticalButtonValues = {\n x: hypoBackButtonValues.x + hypoBackButtonValues.w + hypoButtonSpacing,\n y: hypoBackButtonValues.y,\n };\n\n const endHypotheticalButton = new Button({\n x: endHypotheticalButtonValues.x * winW,\n y: endHypotheticalButtonValues.y * winH,\n width: hypoButtonWidth * winW,\n height: hypoButtonHeight * winH,\n text: \"Exit Hypo\",\n fontSize: 0.019 * winH,\n });\n globals.elements.hypoButtonsArea.add(\n endHypotheticalButton as unknown as Konva.Group,\n );\n endHypotheticalButton.on(\"click tap\", () => {\n hypothetical.endHypothetical();\n });\n globals.elements.endHypotheticalButton = endHypotheticalButton;\n\n // The \"Edit Cards\" button (above the exit hypo button).\n const editCardsButtonValues = {\n x: endHypotheticalButtonValues.x,\n y: endHypotheticalButtonValues.y - hypoButtonHeight - hypoButtonSpacing,\n };\n globals.elements.editCardsButton = new CheckButton({\n x: editCardsButtonValues.x * winW,\n y: editCardsButtonValues.y * winH,\n width: hypoButtonWidth * winW,\n height: hypoButtonHeight * winH,\n text: \"Edit Cards\",\n fontSize: 0.019 * winH,\n });\n\n globals.elements.editCardsButton.tooltipName = \"hypo-edit-cards\";\n globals.elements.editCardsButton.tooltipContent =\n \"Turn this on and then click on cards to change them into other cards.\";\n initKonvaTooltips(globals.elements.editCardsButton, true, false);\n\n globals.elements.editCardsButton.on(\"click tap\", () => {\n globals.elements.editCardsButton?.setPressed(\n !globals.elements.editCardsButton.pressed,\n );\n });\n globals.elements.hypoButtonsArea.add(\n globals.elements.editCardsButton as unknown as Konva.Group,\n );\n\n // The \"Show Drawn Cards\" / \"Hide Drawn Cards\" button (above the edit cards button).\n const toggleDrawnCardsButtonValues = {\n x: editCardsButtonValues.x,\n y: editCardsButtonValues.y - hypoButtonHeight - hypoButtonSpacing,\n };\n globals.elements.toggleDrawnCardsButton = new CheckButton({\n x: toggleDrawnCardsButtonValues.x * winW,\n y: toggleDrawnCardsButtonValues.y * winH,\n width: hypoButtonWidth * winW,\n height: hypoButtonHeight * winH,\n text: \"Show Hidden\",\n fontSize: 0.016 * winH,\n });\n globals.elements.toggleDrawnCardsButton.tooltipName = \"hypo-show-drawn\";\n globals.elements.toggleDrawnCardsButton.tooltipContent =\n \"Show the front faces of cards drawn during the hypothetical.\";\n initKonvaTooltips(globals.elements.toggleDrawnCardsButton, true, false);\n\n globals.elements.toggleDrawnCardsButton.on(\n \"click tap\",\n hypothetical.toggleRevealed,\n );\n globals.elements.hypoButtonsArea.add(\n globals.elements.toggleDrawnCardsButton as unknown as Konva.Group,\n );\n}\n\nfunction drawPauseArea() {\n const pauseAreaValues = {\n w: 0.5,\n h: 0.5,\n };\n\n globals.elements.pauseArea = new Konva.Group({\n x: 0.25 * winW,\n y: 0.25 * winH,\n visible: false,\n listening: false,\n });\n globals.layers.UI2.add(globals.elements.pauseArea);\n\n const pauseRect = new Konva.Rect({\n width: pauseAreaValues.w * winW,\n height: pauseAreaValues.h * winH,\n fill: \"#b3b3b3\",\n cornerRadius: 0.01 * winH,\n listening: true,\n });\n globals.elements.pauseArea.add(pauseRect);\n\n const pauseTitle = new Konva.Text({\n y: 0.1 * winH,\n width: pauseAreaValues.w * winW,\n fontFamily: \"Verdana\",\n fontSize: 0.08 * winH,\n text: \"Game Paused\",\n align: \"center\",\n fill: \"white\",\n shadowColor: \"black\",\n shadowBlur: 10,\n shadowOffset: {\n x: 0,\n y: 0,\n },\n shadowOpacity: 0.9,\n listening: false,\n });\n globals.elements.pauseArea.add(pauseTitle);\n\n globals.elements.pauseText = new Konva.Text({\n y: 0.21 * winH,\n width: pauseAreaValues.w * winW,\n fontFamily: \"Verdana\",\n fontSize: 0.05 * winH,\n text: \"by: [username]\",\n align: \"center\",\n fill: \"white\",\n shadowColor: \"black\",\n shadowBlur: 10,\n shadowOffset: {\n x: 0,\n y: 0,\n },\n shadowOpacity: 0.9,\n listening: false,\n });\n globals.elements.pauseArea.add(globals.elements.pauseText);\n\n const button1W = pauseAreaValues.w * 0.4;\n const button2W = pauseAreaValues.w * 0.125;\n const buttonH = 0.33;\n const spacing = pauseAreaValues.w * 0.1;\n\n globals.elements.pauseButton = new Button({\n x: spacing * winW,\n y: buttonH * winH,\n width: button1W * winW,\n height: 0.1 * winH,\n text: \"Unpause\",\n });\n globals.elements.pauseButton.on(\"click tap\", () => {\n globals.lobby.conn!.send(\"pause\", {\n tableID: globals.lobby.tableID,\n setting: \"unpause\",\n });\n });\n globals.elements.pauseArea.add(\n globals.elements.pauseButton as unknown as Konva.Group,\n );\n\n const chatButton = new Button({\n x: (pauseAreaValues.w - button2W * 2 - spacing * 2) * winW,\n y: buttonH * winH,\n width: button2W * winW,\n height: 0.1 * winH,\n text: \"\uD83D\uDCAC\",\n });\n globals.elements.pauseArea.add(chatButton as unknown as Konva.Group);\n chatButton.on(\"click tap\", () => {\n globals.game!.chat.toggle();\n });\n\n const pauseLobbyButton = new Button(\n {\n x: (pauseAreaValues.w - button2W - spacing * 1.5) * winW,\n y: buttonH * winH,\n width: button2W * winW,\n height: 0.1 * winH,\n },\n [globals.imageLoader!.get(\"home\")],\n );\n globals.elements.pauseArea.add(pauseLobbyButton as unknown as Konva.Group);\n pauseLobbyButton.on(\"click tap\", lobbyButtonClick);\n}\n\nfunction drawRestartArea() {\n const restartAreaValues = {\n w: 0.7,\n h: 0.6,\n };\n\n globals.elements.restartArea = new Konva.Group({\n x: 0.15 * winW,\n y: 0.2 * winH,\n visible: false,\n listening: false,\n });\n globals.layers.UI2.add(globals.elements.restartArea);\n\n const restartRect = new Konva.Rect({\n width: restartAreaValues.w * winW,\n height: restartAreaValues.h * winH,\n fill: \"#b3b3b3\",\n cornerRadius: 0.01 * winH,\n listening: true,\n });\n globals.elements.restartArea.add(restartRect);\n\n const restartTitle = new Konva.Text({\n y: 0.1 * winH,\n width: restartAreaValues.w * winW,\n fontFamily: \"Verdana\",\n fontSize: 0.08 * winH,\n text: \"Restart?\",\n align: \"center\",\n fill: \"white\",\n shadowColor: \"black\",\n shadowBlur: 10,\n shadowOffset: {\n x: 0,\n y: 0,\n },\n shadowOpacity: 0.9,\n listening: false,\n });\n globals.elements.restartArea.add(restartTitle);\n\n const buttonW = restartAreaValues.w * 0.35;\n const buttonH = 0.25;\n const spacing = restartAreaValues.w * 0.1;\n\n const restartGameButton = new Button({\n x: spacing * winW,\n y: buttonH * winH,\n width: buttonW * winW,\n height: 0.1 * winH,\n text: \"Restart game\",\n });\n restartGameButton.on(\"click tap\", () => {\n globals.lobby.conn!.send(\"tableRestart\", {\n tableID: globals.lobby.tableID,\n hidePregame: true,\n });\n });\n globals.elements.restartArea.add(restartGameButton as unknown as Konva.Group);\n\n const restartTableButton = new Button({\n x: (2 * spacing + buttonW) * winW,\n y: buttonH * winH,\n width: buttonW * winW,\n height: 0.1 * winH,\n text: \"Remake table\",\n });\n restartTableButton.on(\"click tap\", () => {\n globals.lobby.conn!.send(\"tableRestart\", {\n tableID: globals.lobby.tableID,\n hidePregame: false,\n });\n });\n globals.elements.restartArea.add(\n restartTableButton as unknown as Konva.Group,\n );\n\n const restartCancelButton = new Button({\n x: (restartAreaValues.w - buttonW / 2 - spacing) * winW,\n y: (buttonH * 1.5 + spacing) * winH,\n width: (buttonW / 2) * winW,\n height: 0.1 * winH,\n text: \"Cancel\",\n });\n restartCancelButton.on(\"click tap\", () => {\n globals.elements.restartArea?.visible(false);\n globals.layers.UI2.batchDraw();\n });\n globals.elements.restartArea.add(\n restartCancelButton as unknown as Konva.Group,\n );\n}\n\nfunction drawExtraAnimations() {\n // These images are shown to the player to indicate which direction we are moving in a shared\n // replay.\n const x = playAreaValues.x + playAreaValues.w! / 2 - 0.05;\n const y = playAreaValues.y + playAreaValues.h! / 2 - 0.05;\n const size = 0.1;\n\n globals.elements.sharedReplayForward = new Konva.Image({\n x: x * winW,\n y: y * winH,\n width: size * winW,\n height: size * winH,\n image: globals.imageLoader!.get(\"replay-forward-border\"),\n border: 100,\n visible: false,\n listening: false,\n });\n globals.layers.UI2.add(globals.elements.sharedReplayForward);\n\n globals.elements.sharedReplayBackward = new Konva.Image({\n x: x * winW,\n y: y * winH,\n width: size * winW,\n height: size * winH,\n image: globals.imageLoader!.get(\"replay-back-border\"),\n visible: false,\n listening: false,\n });\n globals.layers.UI2.add(globals.elements.sharedReplayBackward);\n}\n\n// Subroutines\nfunction lobbyButtonClick(this: Button) {\n // Unregister the click handler to ensure that the user does not double-click and go to the lobby\n // twice.\n this.off(\"click tap\");\n\n backToLobby();\n}\n", "import Konva from \"konva\";\nimport type { ColorButton } from \"./ColorButton\";\nimport type { RankButton } from \"./RankButton\";\nimport type { PlayerButton } from \"./controls/PlayerButton\";\n\ntype ClueButton = PlayerButton | ColorButton | RankButton;\n\nexport class ButtonGroup extends Konva.Group {\n list: ClueButton[] = [];\n\n constructor(config: Konva.ContainerConfig) {\n super(config);\n\n // Class variables\n this.list = [];\n }\n\n addList(button: ClueButton): void {\n const that = this; // eslint-disable-line @typescript-eslint/no-this-alias\n\n this.list.push(button);\n\n (button as Konva.Node).on(\n \"click tap\",\n function buttonClick(this: Konva.Node) {\n (this as ClueButton).setPressed(true);\n\n for (const clueButton of that.list) {\n if (clueButton !== this && clueButton.pressed) {\n clueButton.setPressed(false);\n }\n }\n\n that.fire(\"change\", null);\n },\n );\n }\n\n getPressed(): ClueButton | null {\n for (const button of this.list) {\n if (button.pressed) {\n return button;\n }\n }\n\n return null;\n }\n\n clearPressed(): void {\n for (const clueButton of this.list) {\n clueButton.setPressed(false);\n }\n }\n\n /** This is only used for groups of \"PlayerButton\". */\n selectNextTarget(): void {\n let buttonIndex: number | undefined;\n for (const [i, clueButton] of this.list.entries()) {\n if (clueButton.pressed) {\n buttonIndex = i;\n break;\n }\n }\n\n // It is possible that no buttons are currently pressed.\n if (buttonIndex === undefined) {\n buttonIndex = -1;\n }\n\n // Find the next button in the group. As a guard against an infinite loop, only loop as many\n // times as needed to go through every button.\n let nextButton: ClueButton | undefined;\n for (const clueButton of this.list) {\n buttonIndex++;\n if (buttonIndex > this.list.length - 1) {\n buttonIndex = 0;\n }\n\n nextButton = clueButton;\n if (\"enabled\" in nextButton && nextButton.enabled) {\n break;\n }\n }\n\n if (nextButton !== undefined) {\n nextButton.dispatchEvent(new MouseEvent(\"click\"));\n }\n }\n}\n", "// This is the list of clues in the top-right-hand corner of the UI.\n\nimport type { CardOrder } from \"@hanabi-live/game\";\nimport { eRange } from \"complete-common\";\nimport Konva from \"konva\";\nimport type { ClueEntry } from \"./ClueEntry\";\nimport { globals } from \"./UIGlobals\";\n\nexport class ClueLog extends Konva.Group {\n readonly maxLength = 27; // Just enough to fill the parent rectangle\n\n addClue(clue: ClueEntry): void {\n this.add(clue as unknown as Konva.Group);\n }\n\n updateClue(index: number, clue: ClueEntry): void {\n this.children.toArray()[index] = clue;\n }\n\n refresh(): void {\n this.truncateExcessClueEntries();\n this.doLayout();\n }\n\n override _setChildrenIndices(): void {\n Konva.Group.prototype._setChildrenIndices.call(this);\n this.doLayout();\n }\n\n private doLayout() {\n let y = 0;\n for (const i of eRange(this.children.length)) {\n const node = this.children[i]!;\n node.y(y);\n y += node.height() + 0.001 * globals.stage.height();\n }\n }\n\n // In a 2-player game, it is possible for there to be so many clues in the game such that it\n // overflows the clue log. So, if it is overflowing, then remove the earliest clues to make room\n // for the latest clues.\n private truncateExcessClueEntries() {\n while (this.children.length - this.maxLength >= 1) {\n this.children[0]!.remove();\n }\n }\n\n // We have moused over a card (or stopped mousing over a card), so update the highlighting for all\n // of the clue log entries.\n showMatches(targetCardOrder: CardOrder | null): void {\n for (const child of this.children.toArray() as ClueEntry[]) {\n child.showMatch(targetCardOrder);\n }\n }\n}\n", "import type { CardOrder } from \"@hanabi-live/game\";\nimport {\n getTotalCardsInDeck,\n millisecondsToClockString,\n} from \"@hanabi-live/game\";\nimport Konva from \"konva\";\nimport { OptionIcons } from \"../../enums/OptionIcons\";\nimport * as tooltips from \"../../tooltips\";\nimport { dateTimeFormatter, timerFormatter } from \"../../utils\";\nimport { ActionType } from \"../types/ActionType\";\nimport { ReplayArrowOrder } from \"../types/ReplayArrowOrder\";\nimport { globals } from \"./UIGlobals\";\nimport * as arrows from \"./arrows\";\nimport { CARD_ANIMATION_LENGTH_SECONDS } from \"./constants\";\nimport * as cursor from \"./cursor\";\nimport { isOurTurn } from \"./isOurTurn\";\nimport * as konvaTooltips from \"./konvaTooltips\";\nimport * as turn from \"./turn\";\n\nexport class Deck extends Konva.Group {\n cardBack: Konva.Image;\n numLeft: number;\n numLeftText: Konva.Text;\n tooltipName = \"deck\";\n tooltipContent = \"\";\n\n constructor(config: Konva.ContainerConfig) {\n super(config);\n this.listening(true);\n\n this.cardBack = new Konva.Image({\n x: 0,\n y: 0,\n width: this.width(),\n height: this.height(),\n image: globals.cardImages.get(\"deck-back\")!,\n listening: true,\n });\n this.add(this.cardBack);\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.cardBack.on(\"dragend\", this.dragEnd);\n\n // The text that shows the number of cards remaining in the deck.\n this.numLeft = getTotalCardsInDeck(globals.variant);\n this.numLeftText = new Konva.Text({\n fill: \"white\",\n stroke: \"#222222\",\n strokeWidth: 0.0168 * this.height(),\n align: \"center\",\n x: 0,\n y: 0.3 * this.height(),\n width: this.width(),\n height: 0.4 * this.height(),\n fontSize: 0.4 * this.height(),\n fontFamily: \"Verdana\",\n fontStyle: \"bold\",\n text: this.numLeft.toString(),\n listening: false,\n });\n this.add(this.numLeftText);\n\n // Right-click on the deck to highlight it with an arrow.\n this.on(\"click tap\", (event: Konva.KonvaEventObject) => {\n arrows.click(event, ReplayArrowOrder.Deck);\n });\n\n this.initDeckTooltip();\n this.initCursors();\n }\n\n // Most of this function is copy-pasted from \"LayoutChild.dragEnd()\". It contains a subset of the\n // real card features in order to minimize complexity.\n dragEnd(): void {\n const draggedTo = cursor.getElementDragLocation(this);\n\n if (draggedTo === null) {\n // The card was dragged to an invalid location; tween it back to the hand.\n this.to({\n // Tween\n duration: CARD_ANIMATION_LENGTH_SECONDS,\n x: 0,\n y: 0,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n easing: Konva.Easings.EaseOut,\n onFinish: () => {\n const layer = globals.layers.UI;\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (layer !== undefined) {\n layer.batchDraw();\n }\n },\n });\n } else if (draggedTo === \"playArea\") {\n // Card orders start at 0, so the final card order is the length of the deck - 1.\n const totalCardsInDeck = getTotalCardsInDeck(globals.variant);\n const cardOrder = (totalCardsInDeck - 1) as CardOrder;\n turn.end({\n type: ActionType.Play,\n target: cardOrder,\n });\n }\n }\n\n // The deck tooltip shows the custom options for this game, if any.\n initDeckTooltip(): void {\n // If the user hovers over the deck, show a tooltip that shows extra game options, if any. (We\n // do not use the \"tooltip.init()\" function because we need the extra condition in the\n // \"mouseover\" event.)\n this.on(\"mouseover touchstart\", function mouseOver(this: Deck) {\n // Do not do anything if we might be dragging the deck.\n if (globals.elements.deckPlayAvailableLabel!.isVisible() === true) {\n return;\n }\n\n konvaTooltips.resetActiveHover();\n globals.activeHover = this;\n setTimeout(() => {\n konvaTooltips.show(this);\n }, tooltips.TOOLTIP_DELAY_IN_MILLISECONDS);\n });\n this.on(\"mouseout touchend\", () => {\n globals.activeHover = null;\n tooltips.close(\"#tooltip-deck\");\n });\n\n this.updateDeckTooltip();\n }\n\n updateDeckTooltip(): void {\n // We store the content as a class variable so that it can be reused for the faded background\n // rectangle behind the card (so that the tooltip will work when there are 0 cards left in the\n // deck).\n this.tooltipContent = getTooltipContent();\n tooltips.setInstanceContent(\"#tooltip-deck\", this.tooltipContent);\n }\n\n // When dragging the deck, change the cursor to emulate the behavior when dragging a card. It does\n // not emulate the full cursor behavior in order to minimum complexity.\n initCursors(): void {\n this.on(\"mouseenter\", () => {\n if (this.canDragDeck()) {\n cursor.set(\"hand\");\n }\n });\n this.on(\"mouseleave\", () => {\n if (this.canDragDeck()) {\n cursor.set(\"default\");\n }\n });\n this.on(\"mousedown\", (event: Konva.KonvaEventObject) => {\n if (this.canDragDeck() && event.evt.buttons === 1) {\n // Left-click is being held down.\n cursor.set(\"dragging\");\n }\n });\n this.on(\"mouseup\", () => {\n if (this.canDragDeck()) {\n cursor.set(\"hand\");\n }\n });\n }\n\n canDragDeck(): boolean {\n return globals.options.deckPlays && this.numLeft === 1 && isOurTurn();\n }\n\n setCount(count: number): void {\n this.numLeft = count;\n this.numLeftText.text(count.toString());\n\n // When there are no cards left in the deck, remove the card-back and show a label that\n // indicates how many turns are left before the game ends.\n this.cardBack.visible(count > 0);\n let h = 0.3;\n if (count === 0) {\n h = 0.15;\n }\n this.numLeftText.y(h * this.height());\n globals.elements.deckTurnsRemainingLabel1!.visible(\n count === 0 && !globals.options.allOrNothing,\n );\n globals.elements.deckTurnsRemainingLabel2!.visible(\n count === 0 && !globals.options.allOrNothing,\n );\n\n // If the game ID is showing, we want to center the deck count between it and the other labels.\n if (count === 0 && globals.elements.gameIDLabel!.isVisible() === true) {\n this.nudgeCountDownwards();\n }\n }\n\n nudgeCountDownwards(): void {\n const nudgeAmount = 0.07 * this.height();\n this.numLeftText.y(this.numLeftText.y() + nudgeAmount);\n }\n\n resetCardBack(): void {\n this.cardBack.position({\n x: 0,\n y: 0,\n });\n globals.layers.card.batchDraw();\n }\n}\n\n/** The tooltip will show information about the game and the current options. */\nfunction getTooltipContent(): string {\n let content = \"Game Info:\";\n content += '
      ';\n\n const currentTable = globals.lobby.tableMap.get(globals.lobby.tableID);\n if (currentTable !== undefined) {\n content +=\n '
    • ';\n content += `  Table name:  ${currentTable.name}
    • `;\n }\n\n if (\n globals.state.finished &&\n globals.state.replay.databaseID !== null &&\n // JSON replays are hard-coded to have a database ID of 0.\n globals.state.replay.databaseID !== 0\n ) {\n content +=\n '
    • ';\n content += `  Database ID:  ${globals.state.replay.databaseID}
    • `;\n }\n\n if (globals.state.finished || globals.metadata.hasCustomSeed) {\n content +=\n '
    • ';\n const seed =\n globals.metadata.seed === \"JSON\" ? \"n/a\" : globals.metadata.seed;\n content += `  Seed:  ${seed}`;\n if (globals.metadata.seed === \"JSON\") {\n content += \" (JSON game)\";\n }\n content += \"
    • \";\n }\n\n if (globals.state.finished && globals.state.datetimeFinished !== null) {\n const datetimeFinishedDate = new Date(globals.state.datetimeFinished);\n const formattedDatetimeFinished =\n dateTimeFormatter.format(datetimeFinishedDate);\n content +=\n '
    • ';\n content += `  Date Played:  ${formattedDatetimeFinished}
    • `;\n }\n\n // \"datetimeStarted\" and \"datetimeFinished\" are initialized to strings during the \"init\" command,\n // so they should never be null.\n if (\n globals.state.datetimeStarted !== null &&\n globals.state.datetimeFinished !== null\n ) {\n const startedDate = new Date(globals.state.datetimeStarted);\n const finishedDate = globals.state.finished\n ? new Date(globals.state.datetimeFinished)\n : new Date();\n const elapsedMilliseconds = finishedDate.getTime() - startedDate.getTime();\n const clockString = millisecondsToClockString(elapsedMilliseconds);\n content +=\n '
    • ';\n content += `  Game Length:  ${clockString}
    • `;\n }\n\n content +=\n '
    • ';\n content += `  Variant:  ${globals.variant.name}
    • `;\n\n if (globals.options.timed) {\n content += `
    • `;\n content += \"  Timed: \";\n content += timerFormatter(globals.options.timeBase);\n content += \" + \";\n content += timerFormatter(globals.options.timePerTurn);\n content += \"
    • \";\n }\n\n if (globals.options.speedrun) {\n content += `
    • `;\n content += \"  Speedrun
    • \";\n }\n\n if (globals.options.cardCycle) {\n content += '
    • ';\n content += ``;\n content += \"  Card Cycling
    • \";\n }\n\n if (globals.options.deckPlays) {\n content += '
    • ';\n content += ``;\n content += \"  Bottom-Deck Blind Plays
    • \";\n }\n\n if (globals.options.emptyClues) {\n content += `
    • `;\n content += \"  Empty Clues
    • \";\n }\n\n if (globals.options.oneExtraCard) {\n content += `
    • `;\n content += \"  One Extra Card
    • \";\n }\n\n if (globals.options.oneLessCard) {\n content += `
    • `;\n content += \"  One Less Card
    • \";\n }\n\n if (globals.options.allOrNothing) {\n content += `
    • `;\n content += \"  All or Nothing
    • \";\n }\n\n if (globals.options.detrimentalCharacters) {\n content += `
    • `;\n content += \"  Detrimental Characters
    • \";\n }\n\n content += \"
    \";\n\n return content;\n}\n", "import type { NumPlayers } from \"@hanabi-live/game\";\nimport type { Tuple } from \"complete-common\";\nimport { assertNotNull, eRange, newArray } from \"complete-common\";\nimport Konva from \"konva\";\nimport type { ContainerConfig } from \"konva/types/Container\";\nimport { MultiFitText } from \"./MultiFitText\";\nimport { globals } from \"./UIGlobals\";\nimport { FitText } from \"./controls/FitText\";\n\nexport class FullActionLog extends Konva.Group {\n buffer: Array<{ turnNum: number; text: string }> = [];\n logText: MultiFitText | null = null;\n logNumbers: MultiFitText | null = null;\n playerLogEmptyMessage: FitText;\n private playerLogs: Tuple;\n private playerLogNumbers: Tuple;\n private needsRefresh = false;\n private readonly numbersOptions: ContainerConfig;\n private readonly maxLines = 38;\n private readonly textOptions: ContainerConfig;\n\n constructor(winW: number, winH: number) {\n super({\n x: 0.2 * winW,\n y: 0.02 * winH,\n width: 0.4 * winW,\n height: 0.96 * winH,\n clipX: 0,\n clipY: 0,\n clipWidth: 0.4 * winW,\n clipHeight: 0.96 * winH,\n visible: false,\n listening: false,\n });\n\n // The black background\n const rect = new Konva.Rect({\n x: 0,\n y: 0,\n width: 0.4 * winW,\n height: 0.96 * winH,\n fill: \"black\",\n opacity: 0.9,\n cornerRadius: 0.01 * winW,\n listening: false,\n });\n Konva.Group.prototype.add.call(this, rect);\n\n // The text for each action.\n this.textOptions = {\n fontSize: 0.025 * winH,\n fontFamily: \"Verdana\",\n fill: \"white\",\n x: 0.04 * winW,\n y: 0.01 * winH,\n width: 0.35 * winW,\n height: 0.94 * winH,\n listening: false,\n };\n\n // The turn numbers for each action.\n this.numbersOptions = {\n fontSize: 0.025 * winH,\n fontFamily: \"Verdana\",\n fill: \"#d3d3d3\", // Light gray\n x: 0.01 * winW,\n y: 0.01 * winH,\n width: 0.03 * winW,\n height: 0.94 * winH,\n listening: false,\n };\n\n // The text displayed when the selected player hasn't taken any actions.\n const emptyMessageOptions = {\n fontSize: 0.025 * winH,\n fontFamily: \"Verdana\",\n fill: \"white\",\n x: 0.04 * winW,\n y: 0.01 * winH,\n width: 0.35 * winW,\n height: 0.94 * winH,\n listening: false,\n };\n this.playerLogEmptyMessage = new FitText(emptyMessageOptions);\n this.playerLogEmptyMessage.fitText(\n \"This player has not taken any actions yet.\",\n );\n this.playerLogEmptyMessage.hide();\n this.add(this.playerLogEmptyMessage as unknown as Konva.Text);\n\n this.playerLogs = newArray(globals.options.numPlayers, null) as Tuple<\n null,\n NumPlayers\n >;\n this.playerLogNumbers = newArray(globals.options.numPlayers, null) as Tuple<\n null,\n NumPlayers\n >;\n }\n\n addMessage(turn: number, msg: string): void {\n this.buffer.push({ turnNum: turn, text: msg });\n this.needsRefresh = true;\n\n // If the log is already open, apply the change immediately.\n if (this.isVisible() === true) {\n this.refreshText();\n }\n }\n\n // Overrides the Konva show() method to refresh the text as well.\n override show(): this {\n // We only need to refresh the text when it is shown.\n if (this.needsRefresh) {\n this.refreshText();\n }\n return super.show();\n }\n\n showPlayerActions(playerName: string): void {\n const playerIndex = globals.metadata.playerNames.indexOf(playerName);\n if (playerIndex === -1) {\n throw new Error(\n `Failed to find player \"${playerName}\" in the player names.`,\n );\n }\n\n if (this.needsRefresh) {\n this.refreshText();\n }\n\n this.logText!.hide();\n this.logNumbers!.hide();\n\n if (this.playerLogs[playerIndex] === null) {\n this.playerLogEmptyMessage.show();\n } else {\n this.playerLogs[playerIndex]!.show();\n this.playerLogNumbers[playerIndex]!.show();\n }\n\n this.show();\n\n assertNotNull(\n globals.elements.stageFade,\n 'The \"stageFade\" element was not initialized.',\n );\n globals.elements.stageFade.show();\n globals.layers.UI2.batchDraw();\n\n globals.elements.stageFade.on(\"click tap\", () => {\n assertNotNull(\n globals.elements.stageFade,\n 'The \"stageFade\" element was not initialized.',\n );\n globals.elements.stageFade.off(\"click tap\");\n this.playerLogEmptyMessage.hide();\n this.playerLogs[playerIndex]?.hide();\n this.playerLogNumbers[playerIndex]?.hide();\n\n if (this.logText === null || this.logNumbers === null) {\n this.makeLog();\n }\n\n this.logText!.show();\n this.logNumbers!.show();\n this.hide();\n globals.elements.stageFade.hide();\n\n globals.layers.UI2.batchDraw();\n });\n }\n\n private makeLog() {\n this.logText = new MultiFitText(this.textOptions, this.maxLines);\n this.add(this.logText as unknown as Konva.Group);\n this.logNumbers = new MultiFitText(this.numbersOptions, this.maxLines);\n this.add(this.logNumbers as unknown as Konva.Group);\n }\n\n private makePlayerLog(i: number) {\n const playerLog = new MultiFitText(this.textOptions, this.maxLines);\n playerLog.hide();\n this.playerLogs[i] = playerLog;\n this.add(playerLog as unknown as Konva.Group);\n\n const playerLogNumber = new MultiFitText(\n this.numbersOptions,\n this.maxLines,\n );\n playerLogNumber.hide();\n this.playerLogNumbers[i] = playerLogNumber;\n this.add(playerLogNumber as unknown as Konva.Group);\n }\n\n private refreshText() {\n if (this.logText === null || this.logNumbers === null) {\n this.makeLog();\n }\n\n for (const logEntry of this.buffer) {\n appendLine(\n this.logText!,\n this.logNumbers!,\n logEntry.turnNum,\n logEntry.text,\n );\n for (const playerIndex of eRange(globals.options.numPlayers)) {\n if (\n logEntry.text.startsWith(globals.metadata.playerNames[playerIndex]!)\n ) {\n if (this.playerLogs[playerIndex] === null) {\n this.makePlayerLog(playerIndex);\n }\n appendLine(\n this.playerLogs[playerIndex]!,\n this.playerLogNumbers[playerIndex]!,\n logEntry.turnNum,\n logEntry.text,\n );\n break;\n }\n }\n }\n\n this.logText!.refreshText();\n this.logNumbers!.refreshText();\n for (const playerIndex of eRange(globals.options.numPlayers)) {\n this.playerLogs[playerIndex]?.refreshText();\n this.playerLogNumbers[playerIndex]?.refreshText();\n }\n this.buffer = [];\n this.needsRefresh = false;\n }\n\n reset(): void {\n this.buffer = [];\n this.logText?.reset();\n this.logNumbers?.reset();\n for (const playerIndex of eRange(globals.options.numPlayers)) {\n this.playerLogs[playerIndex]?.reset();\n this.playerLogNumbers[playerIndex]?.reset();\n }\n this.needsRefresh = true;\n }\n}\n\nfunction appendLine(\n log: MultiFitText,\n numbers: MultiFitText,\n turn: number,\n line: string,\n) {\n log.setMultiText(line);\n numbers.setMultiText(turn.toString());\n}\n", "import { assertDefined, eRange } from \"complete-common\";\nimport Konva from \"konva\";\nimport { globals } from \"./UIGlobals\";\nimport { FitText } from \"./controls/FitText\";\n\nexport class MultiFitText extends Konva.Group {\n maxLines: number;\n smallHistory: string[] = [];\n\n constructor(config: Konva.ContainerConfig, maxLines: number) {\n super(config);\n\n assertDefined(\n config.height,\n 'The \"height\" property is not defined on a new MultiFitText.',\n );\n\n this.maxLines = maxLines;\n\n for (const i of eRange(this.maxLines)) {\n const newConfig = $.extend({}, config);\n\n newConfig.listening = false;\n newConfig.height = config.height / this.maxLines;\n newConfig.x = 0;\n newConfig.y = i * newConfig.height;\n\n const childText = new FitText(newConfig);\n this.add(childText);\n }\n }\n\n setMultiText(text: string): void {\n if (this.smallHistory.length >= this.maxLines) {\n this.smallHistory.shift();\n }\n this.smallHistory.push(text);\n\n // Performance optimization: setText on the children is slow, so do not actually do it until its\n // time to display things. We also have to call refreshText after any time we manipulate replay\n // position.\n if (!globals.state.replay.active || !globals.animateFast) {\n this.refreshText();\n }\n }\n\n refreshText(): void {\n for (const i of eRange(this.children.length)) {\n const fitText = this.children[i] as FitText | undefined;\n if (fitText === undefined) {\n continue;\n }\n\n const msg = this.smallHistory[i] ?? \"\";\n fitText.fitText(msg);\n }\n }\n\n reset(): void {\n this.smallHistory = [];\n for (const i of eRange(this.children.length)) {\n const fitText = this.children[i] as FitText | undefined;\n if (fitText === undefined) {\n continue;\n }\n\n fitText.fitText(\"\");\n }\n }\n\n isEmpty(): boolean {\n return this.smallHistory.length === 0;\n }\n}\n", "import Konva from \"konva\";\nimport type * as KonvaContext from \"konva/types/Context\";\n\nexport class FitText extends Konva.Text {\n origFontSize: number;\n needsResize: boolean;\n\n constructor(config: Konva.TextConfig) {\n super(config);\n\n // Never listen on the text object, listen on the parent instead.\n this.listening(false);\n\n // Class variables\n this.origFontSize = this.fontSize();\n this.needsResize = true;\n\n this.sceneFunc(function sceneFunc(\n this: FitText,\n context: KonvaContext.Context,\n ) {\n if (this.needsResize) {\n this.resize();\n }\n Konva.Text.prototype._sceneFunc.call(this, context);\n });\n }\n\n resize(): void {\n const minimumFontSize = 5;\n\n if (\n !this.textFits(this.origFontSize) &&\n this.origFontSize > minimumFontSize\n ) {\n // Binary search the maximum font size that fits within a tolerance.\n let low = minimumFontSize;\n let high = this.origFontSize;\n const tolerance = 0.5;\n while (high - low > tolerance) {\n const mid = low + (high - low) / 2;\n if (this.textFits(mid)) {\n low = mid;\n } else {\n high = mid;\n }\n }\n this.fontSize(low);\n }\n\n this.needsResize = false;\n }\n\n textFits(size: number): boolean {\n this.fontSize(size);\n return this.measureSize(this.text()).width <= this.width();\n }\n\n fitText(text: string): void {\n this.text(text);\n this.needsResize = true;\n }\n}\n", "import { eRange } from \"complete-common\";\nimport Konva from \"konva\";\nimport type { LayoutChild } from \"./LayoutChild\";\nimport { globals } from \"./UIGlobals\";\nimport { animate } from \"./konvaHelpers\";\n\n/**\n * Represents the stack in the middle of the table for each suit. It is composed of `LayoutChild`\n * objects.\n */\nexport class PlayStack extends Konva.Group {\n addChild(layoutChild: LayoutChild): void {\n const pos = layoutChild.getAbsolutePosition();\n this.add(layoutChild as unknown as Konva.Group);\n layoutChild.setAbsolutePosition(pos);\n this.doLayout();\n }\n\n doLayout(): void {\n const lh = this.height();\n\n const layoutChildren = this.children.toArray() as LayoutChild[];\n const layoutChild = layoutChildren.at(-1)!;\n const scale = lh / layoutChild.height();\n const stackBase = layoutChild.card.isStackBase;\n\n // Hide cards in \"Throw It in a Hole\" variants.\n const opacity =\n globals.variant.throwItInAHole &&\n (globals.state.playing || globals.state.shadowing) && // Revert to the normal behavior for spectators of ongoing games\n !globals.state.finished && // Revert to the normal behavior for dedicated replays\n !stackBase // We want the stack bases to always be visible\n ? 0\n : 1;\n\n // Animate the card leaving the hand to the play stacks (or vice versa). (Tweening from the hand\n // to the discard pile is handled in the \"CardLayout\" object.)\n layoutChild.card.startedTweening();\n layoutChild.card.setRaiseAndShadowOffset();\n animate(\n layoutChild,\n {\n duration: 0.8,\n x: 0,\n y: 0,\n scale,\n rotation: 0,\n opacity,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n easing: Konva.Easings.EaseOut,\n onFinish: () => {\n if (layoutChild.tween !== null) {\n layoutChild.tween.destroy();\n layoutChild.tween = null;\n }\n layoutChild.card.finishedTweening();\n layoutChild.checkSetDraggable();\n this.hideCardsUnderneathTheTopCard();\n },\n },\n true,\n );\n }\n\n hideCardsUnderneathTheTopCard(): void {\n for (const i of eRange(this.children.length)) {\n const layoutChild = this.children[i] as unknown as\n | LayoutChild\n | undefined;\n if (layoutChild === undefined) {\n continue;\n }\n\n if (layoutChild.tween !== null) {\n // Do not hide anything if one of the cards on the stack is still tweening.\n return;\n }\n }\n\n // Hide all of the cards.\n for (const i of eRange(this.children.length)) {\n const layoutChild = this.children[i] as unknown as\n | LayoutChild\n | undefined;\n if (layoutChild === undefined) {\n continue;\n }\n\n layoutChild.hide();\n }\n\n // Show the top card.\n // eslint-disable-next-line unicorn/prefer-at\n const lastLayoutChild = this.children[this.children.length - 1];\n if (lastLayoutChild !== undefined) {\n lastLayoutChild.show();\n }\n\n globals.layers.card.batchDraw();\n }\n}\n", "import Konva from \"konva\";\n\n// These are arrows used to show which cards that are touched by a clue (and for pointing to various\n// things in a shared replay).\nexport class Arrow extends Konva.Group {\n pointingTo: Konva.Node | null;\n tween: Konva.Tween | null;\n\n base: Konva.Arrow;\n circle: Konva.Circle;\n text: Konva.Text;\n suitPip: Konva.Shape | null;\n\n constructor(winW: number, winH: number, colorblindMode: boolean) {\n const x = 0.1 * winW;\n const y = 0.1 * winH;\n super({\n x,\n y,\n offset: {\n x,\n y,\n },\n visible: false,\n listening: false,\n });\n\n // Class variables. (We can't initialize these above due to \"super()\" not being on the first\n // line.)\n this.pointingTo = null;\n this.tween = null;\n\n const pointerLength = 0.006 * winW;\n\n // We want there to be a black outline around the arrow, so we draw a second arrow that is\n // slightly bigger than the first.\n const border = new Konva.Arrow({\n points: [x, 0, x, y * 0.8],\n pointerLength,\n pointerWidth: pointerLength,\n fill: \"black\",\n stroke: \"black\",\n strokeWidth: pointerLength * 2,\n shadowBlur: pointerLength * 4,\n shadowOpacity: 1,\n listening: false,\n });\n this.add(border);\n\n // The border arrow will be missing a bottom edge, so draw that manually at the bottom of the\n // arrow.\n const edge = new Konva.Line({\n points: [x - pointerLength, 0, x + pointerLength, 0],\n fill: \"black\",\n stroke: \"black\",\n strokeWidth: pointerLength * 0.75,\n listening: false,\n });\n this.add(edge);\n\n // The main (inside) arrow is exported so that we can change the color later.\n this.base = new Konva.Arrow({\n points: [x, 0, x, y * 0.8],\n pointerLength,\n pointerWidth: pointerLength,\n fill: \"white\",\n stroke: \"white\",\n strokeWidth: pointerLength * 1.25,\n listening: false,\n });\n this.add(this.base);\n\n // A circle will appear on the body of the arrow to indicate the type of clue given.\n this.circle = new Konva.Circle({\n x,\n y: y * 0.3,\n radius: pointerLength * 2.25,\n fill: \"black\",\n stroke: \"white\",\n strokeWidth: pointerLength * 0.25,\n visible: false,\n listening: false,\n });\n this.add(this.circle);\n\n // The circle will have text inside of it to indicate the number of the clue given.\n this.text = new Konva.Text({\n x,\n y: y * 0.3,\n offset: {\n x: this.circle.width() / 2,\n y: this.circle.height() / 2,\n },\n width: this.circle.width(),\n // For some reason the text is offset if we place it exactly in the middle of the circle, so\n // nudge it downwards.\n height: this.circle.height() * 1.09,\n fontSize: y * 0.38,\n fontFamily: \"Verdana\",\n fill: \"white\",\n align: \"center\",\n verticalAlign: \"middle\",\n visible: false,\n listening: false,\n });\n this.add(this.text);\n\n // In colorblind mode, the circle will show the suit pip corresponding to the color.\n if (colorblindMode) {\n this.suitPip = new Konva.Shape({\n x,\n y: y * 0.3,\n scale: {\n x: 0.2,\n y: 0.2,\n },\n visible: false,\n listening: false,\n });\n this.add(this.suitPip);\n } else {\n this.suitPip = null;\n }\n }\n}\n", "import { assertNotNull } from \"complete-common\";\nimport Konva from \"konva\";\nimport { drawLayer } from \"../konvaHelpers\";\nimport { FitText } from \"./FitText\";\n\nexport class Button extends Konva.Group {\n enabled = true;\n pressed = false;\n assignedTextSize = false;\n\n background: Konva.Rect;\n textElement: FitText | null = null;\n imageElement: Konva.Image | null = null;\n imageDisabledElement: Konva.Image | null = null;\n\n tooltipName = \"\";\n tooltipContent = \"\";\n\n constructor(\n config: Konva.ContainerConfig,\n images?: readonly HTMLImageElement[],\n ) {\n super(config);\n this.listening(true);\n\n const w = this.width();\n const h = this.height();\n const textSize = (config[\"fontSize\"] as number | undefined) ?? 0.5 * h;\n if (config[\"fontSize\"] !== undefined) {\n this.assignedTextSize = true;\n }\n\n this.background = new Konva.Rect({\n x: 0,\n y: 0,\n width: w,\n height: h,\n cornerRadius: 0.12 * h,\n fill: \"black\",\n opacity: 0.6,\n listening: true,\n });\n this.add(this.background);\n\n this.textElement = null;\n this.imageElement = null;\n if (config[\"text\"] !== undefined) {\n this.textElement = new FitText({\n x: 0,\n y: (0.525 - textSize / 2 / h) * h, // A smidgeon higher than vertically centered\n width: w,\n height: 0.5 * h,\n fontSize: textSize,\n fontFamily: \"Verdana\",\n fill: \"white\",\n align: \"center\",\n text: config[\"text\"] as string,\n listening: false,\n });\n this.add(this.textElement);\n } else if (images !== undefined && images.length > 0) {\n this.imageElement = new Konva.Image({\n x: 0.2 * w,\n y: 0.2 * h,\n width: 0.6 * w,\n height: 0.6 * h,\n image: images[0]!,\n listening: false,\n });\n this.add(this.imageElement);\n\n if (images.length >= 2) {\n this.imageDisabledElement = new Konva.Image({\n x: 0.2 * w,\n y: 0.2 * h,\n width: 0.6 * w,\n height: 0.6 * h,\n image: images[1]!,\n visible: false,\n listening: false,\n });\n this.add(this.imageDisabledElement);\n }\n }\n\n this.background.on(\"mousedown\", () => {\n this.background.fill(\"#888888\");\n drawLayer(this);\n\n this.background.on(\"mouseout\", () => {\n this.resetButton();\n });\n this.background.on(\"mouseup\", () => {\n this.resetButton();\n });\n });\n }\n\n resetButton(): void {\n this.background.fill(\"black\");\n drawLayer(this);\n\n this.background.off(\"mouseup\");\n this.background.off(\"mouseout\");\n }\n\n setEnabled(enabled: boolean): void {\n if (enabled === this.enabled) {\n return;\n }\n this.enabled = enabled;\n\n if (this.textElement !== null) {\n this.textElement.fill(enabled ? \"white\" : \"#444444\");\n }\n\n if (this.imageElement !== null && this.imageDisabledElement !== null) {\n this.imageElement.visible(enabled);\n this.imageDisabledElement.visible(!enabled);\n }\n\n this.background.listening(enabled);\n\n drawLayer(this);\n }\n\n setPressed(pressed: boolean): void {\n this.pressed = pressed;\n this.background.fill(pressed ? \"#cccccc\" : \"black\");\n drawLayer(this);\n }\n\n text(newText: string): void {\n assertNotNull(\n this.textElement,\n 'The \"text()\" method was called on a non-text Button.',\n );\n\n if (this.assignedTextSize) {\n this.textElement.text(newText);\n } else {\n // Resize to fit the new text if we haven't been specifically given a size.\n this.textElement.fitText(newText);\n }\n }\n\n fill(newFill: string): void {\n assertNotNull(\n this.textElement,\n 'The \"fill()\" method was called on a non-text Button.',\n );\n\n this.textElement.fill(newFill);\n }\n\n setImage(image: HTMLImageElement): void {\n this.imageElement?.image(image);\n this.draw();\n }\n}\n", "import { assertNotNull } from \"complete-common\";\nimport Konva from \"konva\";\nimport { globals } from \"../UIGlobals\";\nimport { drawLayer } from \"../konvaHelpers\";\n\nexport class CheckButton extends Konva.Group {\n enabled = true;\n pressed = false;\n\n background: Konva.Rect;\n checkImageOn: Konva.Image | null = null;\n checkImageOff: Konva.Image | null = null;\n checkImageOnDisabled: Konva.Image | null = null;\n checkImageOffDisabled: Konva.Image | null = null;\n textElement: Konva.Text | null = null;\n\n tooltipName = \"\";\n tooltipContent = \"\";\n\n constructor(config: Konva.ContainerConfig) {\n super(config);\n this.listening(true);\n\n const w = this.width();\n const h = this.height();\n const textSize = (config[\"fontSize\"] as number | undefined) ?? 0.5 * h;\n\n this.background = new Konva.Rect({\n x: 0,\n y: 0,\n width: w,\n height: h,\n cornerRadius: 0.12 * h,\n fill: \"black\",\n opacity: 0.6,\n listening: true,\n });\n this.add(this.background);\n\n const checkY = 0.325 * h;\n const checkX = checkY / 2.5;\n const checkH = 0.35 * h;\n const checkW = checkH;\n\n this.checkImageOn = new Konva.Image({\n x: checkX,\n y: checkY,\n width: checkW,\n height: checkH,\n image: globals.imageLoader!.get(\"checkbox-on\"),\n listening: false,\n visible: false,\n });\n this.add(this.checkImageOn);\n\n this.checkImageOff = new Konva.Image({\n x: checkX,\n y: checkY,\n width: checkW,\n height: checkH,\n image: globals.imageLoader!.get(\"checkbox-off\"),\n listening: false,\n visible: false,\n });\n this.add(this.checkImageOff);\n\n this.checkImageOnDisabled = new Konva.Image({\n x: checkX,\n y: checkY,\n width: checkW,\n height: checkH,\n image: globals.imageLoader!.get(\"checkbox-on-disabled\"),\n listening: false,\n visible: false,\n });\n this.add(this.checkImageOnDisabled);\n\n this.checkImageOffDisabled = new Konva.Image({\n x: checkX,\n y: checkY,\n width: checkW,\n height: checkH,\n image: globals.imageLoader!.get(\"checkbox-off-disabled\"),\n listening: false,\n visible: false,\n });\n this.add(this.checkImageOffDisabled);\n\n this.updateImageVisibility();\n\n this.textElement = null;\n if (config[\"text\"] !== undefined) {\n this.textElement = new Konva.Text({\n x: checkW + checkX * 1.5,\n y: (0.525 - textSize / 2 / h) * h, // A smidgeon higher than vertically centered\n width: w,\n height: 0.5 * h,\n fontSize: textSize,\n fontFamily: \"Verdana\",\n fill: \"white\",\n align: \"left\",\n text: config[\"text\"] as string,\n listening: false,\n });\n this.add(this.textElement);\n }\n\n this.background.on(\"mousedown\", () => {\n this.background.fill(\"#888888\");\n drawLayer(this);\n\n this.background.on(\"mouseout\", () => {\n this.resetButton();\n });\n this.background.on(\"mouseup\", () => {\n this.resetButton();\n });\n });\n }\n\n resetButton(): void {\n this.background.fill(\"black\");\n drawLayer(this);\n\n this.background.off(\"mouseup\");\n this.background.off(\"mouseout\");\n }\n\n setEnabled(enabled: boolean): void {\n if (enabled === this.enabled) {\n return;\n }\n this.enabled = enabled;\n\n if (this.textElement !== null) {\n this.textElement.fill(enabled ? \"white\" : \"#444444\");\n }\n\n this.background.listening(enabled);\n this.updateImageVisibility();\n drawLayer(this);\n }\n\n setPressed(pressed: boolean): void {\n this.pressed = pressed;\n this.background.fill(pressed ? \"#cccccc\" : \"black\");\n this.updateImageVisibility();\n drawLayer(this);\n }\n\n updateImageVisibility(): void {\n this.checkImageOn?.visible(this.enabled && this.pressed);\n this.checkImageOff?.visible(this.enabled && !this.pressed);\n this.checkImageOnDisabled?.visible(!this.enabled && this.pressed);\n this.checkImageOffDisabled?.visible(!this.enabled && !this.pressed);\n }\n\n text(newText: string): void {\n assertNotNull(\n this.textElement,\n 'The \"text()\" method was called on a non-text Button.',\n );\n\n this.textElement.text(newText);\n }\n\n fill(newFill: string): void {\n assertNotNull(\n this.textElement,\n 'The \"fill()\" method was called on a non-text Button.',\n );\n\n this.textElement.fill(newFill);\n }\n}\n", "import Konva from \"konva\";\nimport { globals } from \"../UIGlobals\";\nimport { LABEL_COLOR } from \"../constants\";\nimport { FitText } from \"./FitText\";\n\ninterface ElementValues {\n x: number;\n y: number;\n w: number;\n h: number;\n spacing: number;\n}\n\ninterface TextElementValues {\n w: number;\n w2: number;\n x: number;\n x2: number;\n}\n\nexport class CurrentPlayerArea extends Konva.Group {\n values: ElementValues;\n textValues: TextElementValues;\n rect1: Konva.Rect;\n text1: FitText;\n text2: FitText;\n text3: FitText;\n arrow: Konva.Group;\n tween: Konva.Tween | null = null;\n\n constructor(values: ElementValues, winW: number, winH: number) {\n super({\n x: values.x * winW,\n y: values.y * winH,\n width: values.w * winW,\n height: values.h * winH,\n visible: !globals.state.finished,\n listening: false,\n });\n\n this.values = values;\n\n // The left-most box that contains the name of the current player.\n let box1Width = values.w * 0.75;\n box1Width -= values.spacing;\n this.rect1 = new Konva.Rect({\n width: box1Width * winW,\n height: values.h * winH,\n cornerRadius: 0.01 * winW,\n fill: \"black\",\n opacity: 0.2,\n listening: false,\n });\n this.add(this.rect1);\n\n const textValues = {\n w: box1Width - values.spacing * 4,\n w2: box1Width - values.spacing * 2,\n x: 0,\n x2: 0,\n };\n textValues.x = box1Width / 2 - textValues.w / 2;\n textValues.x2 = box1Width / 2 - textValues.w2 / 2;\n\n this.text1 = new FitText({\n x: textValues.x * winW,\n width: textValues.w * winW,\n fontFamily: \"Verdana\",\n fontSize: 0.08 * winH,\n text: \"Current player:\",\n align: \"center\",\n fill: LABEL_COLOR,\n shadowColor: \"black\",\n shadowBlur: 10,\n shadowOffset: {\n x: 0,\n y: 0,\n },\n shadowOpacity: 0.9,\n listening: false,\n });\n this.add(this.text1);\n\n this.text2 = new FitText({\n x: textValues.x * winW,\n width: textValues.w * winW,\n fontFamily: \"Verdana\",\n fontSize: 0.08 * winH,\n text: \"\",\n align: \"center\",\n fill: \"#ffffcc\",\n shadowColor: \"black\",\n shadowBlur: 10,\n shadowOffset: {\n x: 0,\n y: 0,\n },\n shadowOpacity: 0.9,\n listening: false,\n });\n this.add(this.text2);\n\n this.text3 = new FitText({\n x: textValues.x2 * winW,\n width: textValues.w2 * winW,\n fontFamily: \"Verdana\",\n fontSize: 0.08 * winH,\n text: \"\",\n align: \"center\",\n fill: \"red\",\n shadowColor: \"black\",\n shadowBlur: 10,\n shadowOffset: {\n x: 0,\n y: 0,\n },\n shadowOpacity: 0.9,\n listening: false,\n });\n this.add(this.text3);\n\n // The right-most box that contains the arrow.\n const arrowValues = {\n x: values.w * 0.75 + values.spacing,\n w: values.w * 0.25 - values.spacing,\n h: values.h,\n spacing: 0.01,\n };\n\n const rect2 = new Konva.Rect({\n x: arrowValues.x * winW,\n width: arrowValues.w * winW,\n height: values.h * winH,\n cornerRadius: 0.01 * winW,\n fill: \"black\",\n opacity: 0.2,\n listening: false,\n });\n this.add(rect2);\n\n const baseArrowLength = 0.005_28 * winH;\n\n this.arrow = new Konva.Group({\n x: (arrowValues.x + arrowValues.w / 2) * winW,\n y: (values.h / 2) * winH,\n offset: {\n x: (arrowValues.w / 2) * winW,\n y: (values.h / 2) * winH,\n },\n listening: false,\n });\n this.add(this.arrow);\n\n const arrowBorder = new Konva.Arrow({\n points: [\n arrowValues.spacing * winW,\n (arrowValues.h / 2) * winH,\n (arrowValues.w - arrowValues.spacing) * winW,\n (arrowValues.h / 2) * winH,\n ],\n pointerLength: baseArrowLength * 2,\n pointerWidth: baseArrowLength * 2,\n fill: \"black\",\n stroke: \"black\",\n strokeWidth: baseArrowLength * 2,\n shadowBlur: 75,\n shadowOpacity: 1,\n listening: false,\n });\n this.arrow.add(arrowBorder);\n\n const arrowBorderEdge = new Konva.Line({\n points: [\n arrowValues.spacing * winW,\n (arrowValues.h / 2 - 0.005) * winH,\n arrowValues.spacing * winW,\n (arrowValues.h / 2 + 0.005) * winH,\n ],\n fill: \"black\",\n stroke: \"black\",\n strokeWidth: baseArrowLength,\n listening: false,\n });\n this.arrow.add(arrowBorderEdge);\n\n const arrowMain = new Konva.Arrow({\n points: [\n arrowValues.spacing * winW,\n (arrowValues.h / 2) * winH,\n (arrowValues.w - arrowValues.spacing) * winW,\n (arrowValues.h / 2) * winH,\n ],\n pointerLength: baseArrowLength * 2,\n pointerWidth: baseArrowLength * 2,\n fill: LABEL_COLOR,\n stroke: LABEL_COLOR,\n strokeWidth: baseArrowLength,\n listening: false,\n });\n this.arrow.add(arrowMain);\n\n this.textValues = textValues;\n }\n}\n", "import Konva from \"konva\";\nimport type { NodeWithTooltip } from \"./NodeWithTooltip\";\n\nexport class ImageWithTooltip extends Konva.Image implements NodeWithTooltip {\n tooltipName = \"\";\n tooltipContent = \"\";\n}\n", "import type { PlayerIndex } from \"@hanabi-live/game\";\nimport Konva from \"konva\";\nimport { Button } from \"./Button\";\n\nexport class PlayerButton extends Button {\n targetPlayerIndex: PlayerIndex;\n radioBackground: Konva.Circle;\n radioDot: Konva.Circle;\n\n constructor(config: Konva.ContainerConfig, targetPlayerIndex: PlayerIndex) {\n super(config, []);\n this.targetPlayerIndex = targetPlayerIndex;\n\n const x = this.height() / 2;\n this.radioBackground = new Konva.Circle({\n x,\n y: x,\n radius: x / 1.5,\n stroke: \"gray\",\n fill: \"white\",\n opacity: 0.8,\n });\n this.add(this.radioBackground);\n\n this.radioDot = new Konva.Circle({\n x,\n y: x,\n radius: x / 3,\n fill: \"black\",\n opacity: 0.8,\n visible: false,\n });\n this.add(this.radioDot);\n }\n\n override setPressed(pressed: boolean): void {\n this.radioDot.visible(pressed);\n super.setPressed(pressed);\n }\n}\n", "import Konva from \"konva\";\nimport type { NodeWithTooltip } from \"./NodeWithTooltip\";\n\nexport class RectWithTooltip extends Konva.Rect implements NodeWithTooltip {\n tooltipName = \"\";\n tooltipContent = \"\";\n}\n", "import Konva from \"konva\";\n\nexport class SlidableGroup extends Konva.Group {\n // eslint-disable-next-line @typescript-eslint/class-methods-use-this, @typescript-eslint/no-empty-function\n setLeft: (this: SlidableGroup) => void = () => {};\n\n // eslint-disable-next-line @typescript-eslint/class-methods-use-this, @typescript-eslint/no-empty-function\n setCenter: (this: SlidableGroup) => void = () => {};\n}\n", "import Konva from \"konva\";\n\nexport class StrikeX extends Konva.Image {\n num: 0 | 1 | 2;\n tween: Konva.Tween | null = null;\n\n tooltipName = \"\";\n tooltipContent = \"\";\n\n constructor(config: Konva.ImageConfig, num: 0 | 1 | 2) {\n super(config);\n this.num = num;\n }\n}\n", "import Konva from \"konva\";\nimport { LABEL_COLOR } from \"../constants\";\nimport { FitText } from \"./FitText\";\n\nexport class TimerDisplay extends Konva.Group {\n timerText: FitText;\n labelText: FitText;\n private readonly _oval: Konva.Rect;\n\n tooltipName = \"\";\n tooltipContent = \"\";\n\n get oval(): Konva.Rect {\n return this._oval;\n }\n\n constructor(config: Konva.ContainerConfig) {\n super(config);\n\n this._oval = new Konva.Rect({\n x: 0,\n y: 0,\n width: config.width,\n height: config.height,\n fill: \"black\",\n cornerRadius: config[\"cornerRadius\"] as number | number[] | undefined,\n opacity: 0.2,\n listening: true,\n });\n this.add(this._oval);\n\n this.timerText = new FitText({\n x: 0,\n y: config[\"spaceH\"] as number | undefined,\n width: config.width,\n height: config.height,\n fontSize: config[\"fontSize\"] as number | undefined,\n fontFamily: \"Verdana\",\n align: \"center\",\n text: \"??:??\",\n fill: LABEL_COLOR,\n shadowColor: \"black\",\n shadowBlur: 10,\n shadowOffset: {\n x: 0,\n y: 0,\n },\n shadowOpacity: 0.9,\n listening: false,\n });\n this.add(this.timerText);\n\n this.labelText = new FitText({\n x: 0,\n y: 6 * config[\"spaceH\"],\n width: config.width,\n height: config.height,\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n fontSize: (config[\"labelFontSize\"] || config[\"fontSize\"]) as\n | number\n | undefined,\n fontFamily: \"Verdana\",\n align: \"center\",\n text: config[\"label\"] as string | undefined,\n fill: LABEL_COLOR,\n shadowColor: \"black\",\n shadowBlur: 10,\n shadowOffset: {\n x: 0,\n y: 0,\n },\n shadowOpacity: 0.9,\n listening: false,\n });\n this.add(this.labelText);\n }\n\n setTimerText(text: string): void {\n this.timerText.fitText(text);\n }\n\n setLabelText(text: string): void {\n this.labelText.fitText(text);\n }\n}\n", "import type { NumPlayers, PlayerIndex } from \"@hanabi-live/game\";\nimport { getCardsPerHand, getCharacter } from \"@hanabi-live/game\";\nimport { eRange } from \"complete-common\";\nimport Konva from \"konva\";\nimport { CardLayout } from \"./CardLayout\";\nimport { NameFrame } from \"./NameFrame\";\nimport { globals } from \"./UIGlobals\";\nimport { CARD_H, CARD_W, OFF_BLACK } from \"./constants\";\nimport { TextWithTooltip } from \"./controls/TextWithTooltip\";\nimport { initKonvaTooltips } from \"./konvaTooltips\";\n\ninterface HandConfig {\n x: number;\n y: number;\n w: number;\n h: number;\n rot?: number;\n}\n\nconst handPos: HandConfig[][] = [];\nconst namePos: HandConfig[][] = [];\nconst namePosBGA: HandConfig[][] = [];\n\nexport function drawHands(winW: number, winH: number): void {\n // Constants\n const { numPlayers } = globals.options;\n const numCardsPerHand = getCardsPerHand(globals.options);\n\n // In Keldon mode, the hand positions are different depending on the amount of players, so they\n // have to be hard-coded.\n const handPos6H = 0.165; // 5-player is 0.189\n const handPos6Ratio = 0.34 / 0.189;\n const handPos6W = handPos6H * handPos6Ratio * 0.75;\n handPos[2] = [\n { x: 0.19, y: 0.77, w: 0.42, h: 0.189, rot: 0 },\n { x: 0.19, y: 0.01, w: 0.42, h: 0.189, rot: 0 },\n ];\n handPos[3] = [\n { x: 0.19, y: 0.77, w: 0.42, h: 0.189, rot: 0 },\n { x: 0.011, y: 0.73, w: 0.41, h: 0.189, rot: -82 },\n { x: 0.735, y: 0.024, w: 0.41, h: 0.189, rot: 82 },\n ];\n handPos[4] = [\n { x: 0.23, y: 0.77, w: 0.34, h: 0.189, rot: 0 },\n { x: 0.015, y: 0.68, w: 0.34, h: 0.189, rot: -78 },\n { x: 0.23, y: 0.01, w: 0.34, h: 0.189, rot: 0 },\n { x: 0.715, y: 0.095, w: 0.34, h: 0.189, rot: 78 },\n ];\n handPos[5] = [\n { x: 0.23, y: 0.77, w: 0.34, h: 0.189, rot: 0 },\n { x: 0.03, y: 0.756, w: 0.301, h: 0.18, rot: -90 },\n { x: 0.0205, y: 0.009, w: 0.34, h: 0.189, rot: 0 },\n { x: 0.44, y: 0.009, w: 0.34, h: 0.189, rot: 0 },\n { x: 0.77, y: 0.238, w: 0.301, h: 0.18, rot: 90 },\n ];\n handPos[6] = [\n { x: 0.273, y: 0.77, w: 0.34 * 0.75, h: 0.189, rot: 0 },\n { x: 0.03, y: 0.72, w: 0.301 * 0.8, h: 0.18, rot: -90 },\n { x: 0.0235, y: 0.009, w: handPos6W, h: handPos6H, rot: 0 },\n { x: 0.289, y: 0.009, w: handPos6W, h: handPos6H, rot: 0 },\n { x: 0.5535, y: 0.009, w: handPos6W, h: handPos6H, rot: 0 },\n { x: 0.77, y: 0.292, w: 0.301 * 0.8, h: 0.18, rot: 90 },\n ];\n if (globals.options.oneExtraCard) {\n const reducedH = 0.165;\n const adjustedYUs = 0.018;\n const adjustedYOther = 0.013;\n\n // 2-player\n handPos[2][0]!.h = reducedH;\n handPos[2][1]!.h = reducedH;\n handPos[2][0]!.y += adjustedYUs;\n handPos[2][1]!.y += adjustedYOther;\n\n // 3-player\n handPos[3][0]!.h = reducedH;\n handPos[3][1]!.h = reducedH;\n handPos[3][2]!.h = reducedH;\n handPos[3][0]!.y += adjustedYUs;\n\n // 4-player\n handPos[4][0]!.h = reducedH;\n handPos[4][1]!.h = reducedH;\n handPos[4][2]!.h = reducedH;\n handPos[4][3]!.h = reducedH;\n handPos[4][0]!.y += adjustedYUs;\n handPos[4][2]!.y += adjustedYOther;\n\n // 5-player\n handPos[5][0]!.h = reducedH;\n handPos[5][1]!.h = reducedH - 0.02;\n handPos[5][2]!.h = reducedH;\n handPos[5][3]!.h = reducedH;\n handPos[5][4]!.h = reducedH - 0.02;\n handPos[5][0]!.y += adjustedYUs;\n\n // 6-player\n handPos[6][0]!.h = reducedH - 0.01;\n handPos[6][1]!.h = reducedH - 0.02;\n handPos[6][2]!.h = reducedH - 0.03;\n handPos[6][3]!.h = reducedH - 0.03;\n handPos[6][4]!.h = reducedH - 0.03;\n handPos[6][5]!.h = reducedH - 0.02;\n handPos[6][2]!.y += adjustedYOther;\n handPos[6][3]!.y += adjustedYOther;\n handPos[6][4]!.y += adjustedYOther;\n }\n\n // In Board Game Arena mode, the hands are all in a line, so they do not have to be hard-coded.\n const handPosBGA: HandConfig[][] = [];\n if (!globals.lobby.settings.keldonMode) {\n let leftX = 0.43; // This is 0.020 away from the action log.\n const rightX = 0.78; // This is 0.020 away from the clue log.\n let topY = 0.03;\n const bottomY = 0.96;\n let cardSpacing = 0.1; // The amount of card widths between adjacent cards.\n const handSpacing = 0.45; // The amount of hand heights between adjacent hands.\n\n if (numPlayers >= 4) {\n // The hands would overlap with the timer for spectators or the hypothetical controls during a\n // shared replay.\n leftX = 0.44;\n }\n if (numPlayers >= 5) {\n // Create a bit more space for the cards.\n topY -= 0.005;\n }\n\n if (numCardsPerHand <= 4) {\n // We do not need to keep the cards so close to each other.\n cardSpacing = 0.2;\n }\n\n // The ratio of hand width to card width.\n const widthRatio = numCardsPerHand * (1 + cardSpacing) - cardSpacing;\n const maxCardWidth = (rightX - leftX) / widthRatio;\n // The ratio of hand height to the total height used by the hands (not including name frames).\n const heightRatio = numPlayers * (1 + handSpacing) - handSpacing;\n const maxCardHeight = (bottomY - topY) / heightRatio;\n\n // We need this because all of the other variables are defined relative to the canvas\n // dimensions.\n const relativeCardRatio = CARD_W / winW / (CARD_H / winH);\n\n let handX: number;\n let handY: number;\n let handW: number;\n let handH: number;\n if (maxCardWidth / maxCardHeight <= relativeCardRatio) {\n // If we were to stretch the hands as much as possible, the cards would be too tall. So, the\n // limiting factor on card size is the width.\n handX = leftX;\n handY = topY;\n handW = rightX - leftX;\n handH = maxCardWidth / relativeCardRatio;\n } else {\n handW = maxCardHeight * relativeCardRatio * widthRatio;\n handH = maxCardHeight; // The height of cards and hands are the same.\n handX = (rightX + leftX - handW) / 2;\n handY = topY;\n }\n\n handPosBGA[numPlayers] = [];\n for (const j of eRange(numPlayers)) {\n handPosBGA[numPlayers].push({\n x: handX,\n y: handY + handH * (1 + handSpacing) * j,\n w: handW,\n h: handH,\n rot: 0,\n });\n }\n }\n\n // This is the position for the player name frames in Keldon mode. This cannot be algorithmically\n // derived from the hand positions.\n const namePosValues = {\n h: 0.02,\n };\n namePos[2] = [\n { x: 0.175, y: 0.97, w: 0.45, h: namePosValues.h },\n { x: 0.175, y: 0.21, w: 0.45, h: namePosValues.h },\n ];\n namePos[3] = [\n { x: 0.18, y: 0.97, w: 0.44, h: namePosValues.h },\n { x: 0.0075, y: 0.775, w: 0.12, h: namePosValues.h },\n { x: 0.675, y: 0.775, w: 0.12, h: namePosValues.h },\n ];\n namePos[4] = [\n { x: 0.22, y: 0.97, w: 0.36, h: namePosValues.h },\n { x: 0.01, y: 0.74, w: 0.13, h: namePosValues.h },\n { x: 0.22, y: 0.21, w: 0.36, h: namePosValues.h },\n { x: 0.66, y: 0.74, w: 0.13, h: namePosValues.h },\n ];\n namePos[5] = [\n {\n x: handPos[5][0]!.x - 0.005,\n y: handPos[5][0]!.y + handPos[5][1]!.h + 0.02,\n w: handPos[5][0]!.w + 0.01,\n h: namePosValues.h,\n },\n {\n x: handPos[5][1]!.x - 0.0095,\n y: handPos[5][1]!.y + 0.022,\n w: 0.12,\n h: namePosValues.h,\n },\n {\n x: handPos[5][2]!.x - 0.005,\n y: handPos[5][2]!.y + handPos[5][2]!.h + 0.005,\n w: handPos[5][2]!.w + 0.01,\n h: namePosValues.h,\n },\n {\n x: handPos[5][3]!.x - 0.005,\n y: handPos[5][3]!.y + handPos[5][3]!.h + 0.005,\n w: handPos[5][3]!.w + 0.01,\n h: namePosValues.h,\n },\n {\n x: handPos[5][4]!.x - 0.006 - 0.105,\n y: handPos[5][1]!.y + 0.025,\n w: 0.12,\n h: namePosValues.h,\n },\n ];\n namePos[6] = [\n {\n x: handPos[6][0]!.x - 0.005,\n y: handPos[6][0]!.y + handPos[6][1]!.h + 0.02,\n w: handPos[6][0]!.w + 0.01,\n h: namePosValues.h,\n },\n {\n x: handPos[6][1]!.x - 0.009,\n y: handPos[6][1]!.y + 0.01,\n w: 0.12,\n h: namePosValues.h,\n },\n {\n x: handPos[6][2]!.x - 0.005,\n y: handPos[6][2]!.y + handPos[6][2]!.h + 0.02,\n w: handPos[6][2]!.w + 0.01,\n h: namePosValues.h,\n },\n {\n x: handPos[6][3]!.x - 0.005,\n y: handPos[6][3]!.y + handPos[6][3]!.h + 0.02,\n w: handPos[6][3]!.w + 0.01,\n h: namePosValues.h,\n },\n {\n x: handPos[6][4]!.x - 0.005,\n y: handPos[6][4]!.y + handPos[6][4]!.h + 0.02,\n w: handPos[6][4]!.w + 0.01,\n h: namePosValues.h,\n },\n {\n x: handPos[6][5]!.x - 0.006 - 0.105,\n y: handPos[6][1]!.y + 0.01,\n w: 0.12,\n h: namePosValues.h,\n },\n ];\n\n if (!globals.lobby.settings.keldonMode) {\n const i = numPlayers;\n const namePosBGAMod = {\n x: 0.005,\n y: 0.01,\n };\n namePosBGA[i] = [];\n for (const j of eRange(i)) {\n namePosBGA[i].push({\n x: handPosBGA[i]![j]!.x - namePosBGAMod.x,\n y: handPosBGA[i]![j]!.y + handPosBGA[i]![j]!.h + namePosBGAMod.y,\n h: namePosValues.h,\n w: handPosBGA[i]![j]!.w + namePosBGAMod.x * 2,\n });\n }\n }\n\n // Draw the hands\n for (const i of eRange(numPlayers)) {\n let j = i - globals.metadata.ourPlayerIndex;\n\n if (j < 0) {\n j += numPlayers;\n }\n\n let playerHandPos = handPos;\n let playerNamePos = namePos;\n if (!globals.lobby.settings.keldonMode) {\n playerHandPos = handPosBGA;\n playerNamePos = namePosBGA;\n }\n\n const handValues = {\n x: playerHandPos[numPlayers]![j]!.x,\n y: playerHandPos[numPlayers]![j]!.y,\n w: playerHandPos[numPlayers]![j]!.w,\n h: playerHandPos[numPlayers]![j]!.h,\n rot: playerHandPos[numPlayers]![j]!.rot,\n };\n globals.elements.playerHands[i] = new CardLayout({\n x: handValues.x * winW,\n y: handValues.y * winH,\n width: handValues.w * winW,\n height: handValues.h * winH,\n rotation: handValues.rot,\n align: \"center\",\n reverse: isHandReversed(j),\n // Hands must listen in order for the events to propagate through to the cards.\n listening: true,\n });\n globals.layers.card.add(\n globals.elements.playerHands[i] as unknown as Konva.Group,\n );\n\n if (globals.lobby.settings.keldonMode) {\n // In Keldon mode, we want to show a helper element that indicates which side of the hand is\n // the oldest.\n const blackLineGroup = new Konva.Group({\n x: handValues.x * winW,\n y: handValues.y * winH,\n width: handValues.w * winW,\n height: handValues.h * winH,\n rotation: handValues.rot,\n align: \"center\",\n listening: false,\n });\n globals.layers.UI.add(blackLineGroup);\n\n // The beginning of the hand is at 0 We want it a little to the left of the first card.\n let blackLineX: number;\n switch (numPlayers) {\n case 2: {\n blackLineX = -0.0075;\n break;\n }\n\n case 3: {\n blackLineX = -0.0125;\n break;\n }\n\n case 4: {\n blackLineX = -0.005;\n break;\n }\n\n case 5: {\n blackLineX = j === 1 || j === 4 ? -0.01 : -0.001;\n break;\n }\n\n case 6: {\n blackLineX = -0.0025;\n break;\n }\n }\n\n const blackLineY = 0;\n if (isHandReversed(j)) {\n switch (numPlayers) {\n case 2:\n case 3: {\n blackLineX = handValues.w + 0.002;\n break;\n }\n\n case 4: {\n blackLineX = handValues.w;\n break;\n }\n\n case 5:\n case 6: {\n blackLineX = handValues.w - 0.005;\n break;\n }\n }\n }\n const blackLine = new Konva.Rect({\n x: blackLineX * winW,\n y: blackLineY * winH,\n width: 0.0075 * winW,\n height: handValues.h * winH,\n fill: OFF_BLACK,\n stroke: OFF_BLACK,\n strokeWidth: 0.002 * winH,\n cornerRadius: 0.003 * winW,\n listening: false,\n });\n blackLineGroup.add(blackLine);\n globals.elements.playerHandBlackLines.push(blackLine);\n } else {\n // In BGA mode, we show a black box around a player's hand to indicate that it is their turn.\n const turnRectValues = {\n // The black box should always be as wide as the name frame.\n x: playerNamePos[numPlayers]![j]!.x,\n y: handValues.y,\n w: playerNamePos[numPlayers]![j]!.w * 1.04,\n h: handValues.h * 1.34,\n offsetX: handValues.w * 0.02,\n offsetY: handValues.h * 0.14,\n };\n\n turnRectValues.x = handValues.x;\n turnRectValues.w = handValues.w * 1.025;\n turnRectValues.h = handValues.h * 1.075;\n turnRectValues.offsetX = handValues.w * 0.0125;\n turnRectValues.offsetY = handValues.h * 0.0375;\n if (numPlayers === 5) {\n turnRectValues.w += handValues.w * 0.03;\n turnRectValues.offsetX += handValues.w * 0.015;\n } else if (numPlayers === 6) {\n turnRectValues.h += 0.005;\n }\n const turnRect = new Konva.Rect({\n x: turnRectValues.x * winW,\n y: turnRectValues.y * winH,\n width: turnRectValues.w * winW,\n height: turnRectValues.h * winH,\n offset: {\n x: turnRectValues.offsetX * winW,\n y: turnRectValues.offsetY * winH,\n },\n fill: \"black\",\n cornerRadius: turnRectValues.h * 0.1 * winH,\n rotation: handValues.rot,\n opacity: 0.5,\n visible: false,\n listening: false,\n });\n globals.layers.UI.add(turnRect);\n globals.elements.playerHandTurnRects.push(turnRect);\n }\n\n globals.elements.nameFrames[i] = new NameFrame(\n {\n x: playerNamePos[numPlayers]![j]!.x * winW,\n y: playerNamePos[numPlayers]![j]!.y * winH,\n width: playerNamePos[numPlayers]![j]!.w * winW,\n height: playerNamePos[numPlayers]![j]!.h * winH,\n name: globals.metadata.playerNames[i],\n },\n i as PlayerIndex,\n );\n globals.layers.UI.add(\n globals.elements.nameFrames[i] as unknown as Konva.Group,\n );\n\n drawDetrimentalCharacters(winW, winH, numPlayers, i, j);\n }\n}\n\n// Draw the \"Detrimental Character Assignments\" icon and tooltip.\nfunction drawDetrimentalCharacters(\n winW: number,\n winH: number,\n numPlayers: NumPlayers,\n i: number,\n j: number,\n) {\n let playerNamePos = namePos;\n if (!globals.lobby.settings.keldonMode) {\n playerNamePos = namePosBGA;\n }\n\n if (!globals.options.detrimentalCharacters) {\n return;\n }\n\n const characterID = globals.metadata.characterAssignments[i];\n // A character with an ID of null may be assigned when debugging.\n const character =\n characterID === null || characterID === undefined\n ? {\n id: -1,\n name: \"n/a\",\n description: \"\",\n emoji: \"\",\n }\n : getCharacter(characterID);\n\n const width2 = 0.03 * winW;\n const height2 = 0.03 * winH;\n const charIcon = new TextWithTooltip({\n width: width2,\n height: height2,\n x: playerNamePos[numPlayers]![j]!.x * winW - width2 / 2,\n y: playerNamePos[numPlayers]![j]!.y * winH - height2 / 2,\n fontSize: 0.03 * winH,\n fontFamily: \"Verdana\",\n align: \"center\",\n text: character.emoji,\n fill: \"yellow\",\n shadowColor: \"black\",\n shadowBlur: 10,\n shadowOffset: {\n x: 0,\n y: 0,\n },\n shadowOpacity: 0.9,\n listening: true,\n });\n charIcon.emoji = true; // Mark that this is a text element containing only emoji\n globals.layers.UI.add(charIcon);\n\n charIcon.tooltipName = `character-assignment-${i}`;\n const metadata = globals.metadata.characterMetadata[i]!;\n let tooltipContent = `#${character.id} - ${character.name}
    ${character.description}`;\n if (tooltipContent.includes(\"[random color]\")) {\n // Replace \"[random color]\" with the selected color.\n tooltipContent = tooltipContent.replace(\n \"[random color]\",\n globals.variant.clueColors[metadata]!.name.toLowerCase(),\n );\n } else if (tooltipContent.includes(\"[random number]\")) {\n // Replace \"[random number]\" with the selected number.\n tooltipContent = tooltipContent.replace(\n \"[random number]\",\n metadata.toString(),\n );\n } else if (tooltipContent.includes(\"[random suit]\")) {\n // Replace \"[random suit]\" with the selected suit name.\n tooltipContent = tooltipContent.replace(\n \"[random suit]\",\n globals.variant.suits[metadata]!.displayName,\n );\n }\n charIcon.tooltipContent = tooltipContent;\n initKonvaTooltips(charIcon, false, true);\n}\n\nfunction isHandReversed(j: number) {\n // By default, the hand is not reversed.\n let reverse = false;\n\n if (j === 0) {\n // Reverse the ordering of the cards for our own hand. (For our hand, the oldest card is the\n // first card, which should be on the right.)\n reverse = true;\n }\n if (!globals.lobby.settings.keldonMode) {\n // In BGA mode, we need to reverse every hand.\n reverse = true;\n }\n if (globals.lobby.settings.reverseHands) {\n // If the \"Reverse hand direction\" option is turned on, then we need to flip the direction of\n // every hand.\n reverse = !reverse;\n }\n\n return reverse;\n}\n", "import type { PlayerIndex } from \"@hanabi-live/game\";\nimport { assertDefined } from \"complete-common\";\nimport Konva from \"konva\";\nimport * as modals from \"../../modals\";\nimport * as tooltips from \"../../tooltips\";\nimport { globals } from \"./UIGlobals\";\nimport { backToLobby } from \"./backToLobby\";\nimport { LABEL_COLOR } from \"./constants\";\nimport * as konvaTooltips from \"./konvaTooltips\";\n\nexport class NameFrame extends Konva.Group {\n playerIndex: PlayerIndex;\n tooltipName: string;\n\n playerName: Konva.Text;\n leftLine: Konva.Line;\n rightLine: Konva.Line;\n\n defaultStrokeWidth: number;\n\n constructor(config: Konva.ContainerConfig, playerIndex: PlayerIndex) {\n super(config);\n this.listening(true); // Needed for the hover events\n\n assertDefined(config.width, \"A NameFrame was initialized without a width.\");\n assertDefined(\n config.height,\n \"A NameFrame was initialized without a height.\",\n );\n\n // Class variables\n this.playerIndex = playerIndex;\n this.tooltipName = `player-${this.playerIndex}`;\n\n this.playerName = new Konva.Text({\n x: config.width / 2,\n y: 0,\n height: config.height,\n align: \"center\",\n fontFamily: \"Verdana\",\n fontSize: config.height,\n text: config.name,\n fill: LABEL_COLOR,\n shadowColor: \"black\",\n shadowBlur: 5,\n shadowOffset: {\n x: 0,\n y: 3,\n },\n shadowOpacity: 0.9,\n listening: true, // Needed so that we can click on a player's name to shadow them\n });\n\n let w = this.playerName.width();\n while (w > 0.65 * config.width && this.playerName.fontSize() > 5) {\n this.playerName.fontSize(this.playerName.fontSize() * 0.9);\n w = this.playerName.width();\n }\n this.playerName.offsetX(w / 2);\n this.playerName.on(\n \"click tap\",\n (event: Konva.KonvaEventObject) => {\n // \"event.evt.buttons\" is always 0 here.\n if (event.evt.button === 0) {\n // Left-click\n this.leftClick();\n } else if (event.evt.button === 2) {\n // Right-click\n this.rightClick();\n }\n },\n );\n this.add(this.playerName);\n\n w *= 1.4;\n\n this.defaultStrokeWidth = 0.001_056 * globals.stage.height();\n\n this.leftLine = new Konva.Line({\n points: [\n 0,\n 0,\n 0,\n config.height / 2,\n config.width / 2 - w / 2,\n config.height / 2,\n ],\n stroke: LABEL_COLOR,\n strokeWidth: this.defaultStrokeWidth,\n lineJoin: \"round\",\n shadowColor: \"black\",\n shadowBlur: 5,\n shadowOffset: {\n x: 0,\n y: 3,\n },\n shadowOpacity: 0,\n listening: false,\n });\n this.add(this.leftLine);\n\n this.rightLine = new Konva.Line({\n points: [\n config.width / 2 + w / 2,\n config.height / 2,\n config.width,\n config.height / 2,\n config.width,\n 0,\n ],\n stroke: LABEL_COLOR,\n strokeWidth: this.defaultStrokeWidth,\n lineJoin: \"round\",\n shadowColor: \"black\",\n shadowBlur: 5,\n shadowOffset: {\n x: 0,\n y: 3,\n },\n shadowOpacity: 0,\n listening: false,\n });\n this.add(this.rightLine);\n\n // Draw the tooltips on the player names that show the time. (We do not use the \"tooltip.init()\"\n // function because we need the extra condition in the \"mouseover\" and \"mouseout\" event.)\n this.on(\"mouseover touchstart\", function mouseOver(this: NameFrame) {\n konvaTooltips.resetActiveHover();\n globals.activeHover = this;\n\n // Do not do anything if we are in a solo/shared replay.\n if (globals.state.finished) {\n return;\n }\n\n konvaTooltips.show(this);\n });\n this.on(\"mouseout touchend\", () => {\n globals.activeHover = null;\n\n // Do not do anything if we are in a solo/shared replay.\n if (globals.state.finished) {\n return;\n }\n tooltips.close(`#tooltip-${this.tooltipName}`);\n });\n }\n\n setActive(active: boolean): void {\n const strokeWidth = active\n ? 3 * this.defaultStrokeWidth\n : this.defaultStrokeWidth;\n this.leftLine.strokeWidth(strokeWidth);\n this.rightLine.strokeWidth(strokeWidth);\n\n this.playerName.shadowOpacity(active ? 0.6 : 0);\n this.leftLine.shadowOpacity(active ? 0.6 : 0);\n this.rightLine.shadowOpacity(active ? 0.6 : 0);\n\n this.playerName.fontStyle(active ? \"bold\" : \"normal\");\n }\n\n setConnected(connected: boolean): void {\n const color = connected ? LABEL_COLOR : \"#e8233d\"; // Red for disconnected players.\n\n this.leftLine.stroke(color);\n this.rightLine.stroke(color);\n this.playerName.fill(color);\n }\n\n // Players can left-click on the name frame to see a log of only that player's actions.\n leftClick(): void {\n const username = this.playerName.text();\n globals.elements.fullActionLog!.showPlayerActions(username);\n }\n\n // Players can right-click on the name frame to assume the perspective of the respective player\n // This function calls \"backToLobby()\" inside of a \"setTimeout\" callback to avoid having the\n // right-click context menu come up. (The right-click context menu will be enabled as soon as we\n // execute the \"backToLobby()\" function.)\n rightClick(): void {\n // Find the index corresponding to this player.\n const playerName = this.playerName.text();\n const shadowingPlayerIndex =\n globals.metadata.playerNames.indexOf(playerName);\n if (shadowingPlayerIndex === -1) {\n throw new Error(\n `Failed to find the index corresponding to player: ${playerName}`,\n );\n }\n\n if (!globals.state.playing && !globals.state.finished) {\n // As a spectator in an ongoing game, right-clicking on a name frame reloads the page,\n // shifting the seat and hiding the appropriate cards (so that you can spectate from a\n // specific player's perspective).\n\n // Validate that we are not shifting to the perspective that we are already at.\n const ourSpectator = globals.state.spectators.find(\n (spectator) => spectator.name === globals.metadata.ourUsername,\n );\n let oldShadowingPlayerIndex: PlayerIndex | undefined;\n if (\n ourSpectator !== undefined &&\n ourSpectator.shadowingPlayerIndex !== undefined &&\n ourSpectator.shadowingPlayerIndex !== -1\n ) {\n oldShadowingPlayerIndex = ourSpectator.shadowingPlayerIndex;\n }\n\n if (shadowingPlayerIndex === oldShadowingPlayerIndex) {\n modals.showWarning(\n \"You are already viewing the game from this player's perspective.\",\n );\n return;\n }\n\n setTimeout(() => {\n backToLobby();\n globals.lobby.conn!.send(\"tableSpectate\", {\n tableID: globals.lobby.tableID,\n shadowingPlayerIndex,\n });\n }, 0);\n } else if (globals.state.finished) {\n // In a replay, right-clicking on a name frame reloads the page and shifts the seat (so that\n // you can view the game from a specific player's perspective).\n\n // Validate that we are not shifting to the perspective that we are already at.\n if (shadowingPlayerIndex === globals.metadata.ourPlayerIndex) {\n modals.showWarning(\n \"You are already viewing the game from this player's perspective.\",\n );\n return;\n }\n\n if (globals.state.spectators.length === 1) {\n if (globals.state.replay.databaseID === null) {\n setTimeout(() => {\n const msg =\n \"Due to technical limitations, you cannot shift your perspective if you are the only person in a JSON replay.\";\n modals.showWarning(msg);\n }, 0);\n return;\n }\n\n // We are the only person in this replay, so going back to the lobby will automatically end\n // it. So, leave the replay and create a new one (while specifying the player to view the\n // perspective from).\n setTimeout(() => {\n backToLobby();\n globals.lobby.conn!.send(\"replayCreate\", {\n source: \"id\",\n databaseID: globals.state.replay.databaseID,\n visibility:\n globals.state.replay.shared === null ? \"solo\" : \"shared\",\n shadowingPlayerIndex,\n });\n }, 0);\n\n return;\n }\n\n // We are not the only person in this replay, so going back to the lobby will not\n // automatically end it. So, go back to the lobby and re-spectate the current shared replay\n // (while specifying the player to view the perspective from).\n setTimeout(() => {\n backToLobby();\n globals.lobby.conn!.send(\"tableSpectate\", {\n tableID: globals.lobby.tableID,\n shadowingPlayerIndex,\n });\n }, 0);\n }\n }\n}\n", "import Konva from \"konva\";\nimport type { NodeWithTooltip } from \"./NodeWithTooltip\";\n\nexport class TextWithTooltip extends Konva.Text implements NodeWithTooltip {\n tooltipName = \"\";\n tooltipContent = \"\";\n\n /** Whether or not this element contains only emoji (which is used for alignment purposes). */\n emoji = false;\n}\n", "import Konva from \"konva\";\nimport { globals } from \"./UIGlobals\";\nimport { Button } from \"./controls/Button\";\nimport { EnterHypoButton } from \"./controls/EnterHypoButton\";\nimport { SharedTurnsButton } from \"./controls/SharedTurnsButton\";\nimport { Shuttle } from \"./controls/Shuttle\";\nimport * as hypothetical from \"./hypothetical\";\nimport * as replay from \"./replay\";\n\nexport function drawReplayArea(winW: number, winH: number): void {\n const replayAreaValues = {\n x: 0.15,\n y: 0.51,\n w: 0.5,\n };\n if (!globals.lobby.settings.keldonMode) {\n replayAreaValues.x = 0.01;\n replayAreaValues.y = 0.49;\n replayAreaValues.w = 0.4;\n }\n\n globals.elements.replayArea = new Konva.Group({\n x: replayAreaValues.x * winW,\n y: replayAreaValues.y * winH,\n width: replayAreaValues.w * winW,\n height: 0.27 * winH,\n visible: false,\n listening: false,\n });\n\n // The thin black rectangle that the replay slider slides on.\n const replayBarValues = {\n x: globals.lobby.settings.keldonMode ? 0.01 : 0,\n y: 0.0425,\n w: globals.lobby.settings.keldonMode ? 0.481 : replayAreaValues.w,\n h: 0.01,\n };\n globals.elements.replayBar = new Konva.Rect({\n x: replayBarValues.x * winW,\n y: replayBarValues.y * winH,\n width: replayBarValues.w * winW,\n height: replayBarValues.h * winH,\n fill: \"black\",\n cornerRadius: 0.005 * winH,\n listening: false,\n });\n globals.elements.replayArea.add(globals.elements.replayBar);\n\n // An invisible rectangle over the visible black rectangle above (which is slightly bigger so that\n // it is easier to click on).\n const replayBarClickRect = new Konva.Rect({\n x: replayBarValues.x * winW,\n y: 0,\n width: replayBarValues.w * winW,\n height: 0.07 * winH,\n listening: true,\n });\n replayBarClickRect.on(\"click tap\", replay.barClick);\n replayBarClickRect.on(\"wheel\", replay.barScroll);\n globals.elements.replayArea.add(replayBarClickRect);\n\n const shuttleValues = {\n w: 0.03,\n h: 0.03,\n cornerRadius: 0.01,\n stroke: \"black\",\n strokeWidth: 0.001_217,\n };\n\n // The shared (white) replay shuttle. (We want it to be behind the normal replay shuttle, so we\n // define it first.)\n globals.elements.replayShuttleShared = new Shuttle({\n width: shuttleValues.w * winW,\n height: shuttleValues.h * winH,\n offset: {\n x: (shuttleValues.w / 2) * winW,\n y: (shuttleValues.h / 2) * winW,\n },\n cornerRadius: shuttleValues.cornerRadius * winW,\n fill: \"#d1d1d1\", // Gray\n stroke: shuttleValues.stroke,\n strokeWidth: shuttleValues.strokeWidth * winW,\n visible: false,\n listening: true,\n });\n globals.elements.replayShuttleShared.on(\"click tap\", () => {\n if (globals.state.replay.shared !== null) {\n replay.goToSegment(globals.state.replay.shared.segment, true);\n }\n });\n globals.elements.replayArea.add(globals.elements.replayShuttleShared);\n\n // This is the normal (blue) replay shuttle.\n globals.elements.replayShuttle = new Shuttle({\n width: shuttleValues.w * winW,\n height: shuttleValues.h * winH,\n offset: {\n x: (shuttleValues.w / 2) * winW,\n y: (shuttleValues.h / 2) * winW,\n },\n cornerRadius: shuttleValues.cornerRadius * winW,\n fill: \"#0000cc\", // Blue\n draggable: true,\n dragBoundFunc: replay.shuttleDragBound,\n stroke: shuttleValues.stroke,\n strokeWidth: shuttleValues.strokeWidth * winW,\n listening: true,\n });\n globals.elements.replayShuttle.on(\"dragmove\", replay.shuttleDragMove);\n globals.elements.replayShuttle.on(\"wheel\", replay.barScroll);\n globals.elements.replayArea.add(globals.elements.replayShuttle);\n\n const replayButtonValues = {\n x: 0.05,\n y: 0.07,\n w: 0.06,\n h: 0.08,\n spacing: 0.02,\n };\n if (globals.lobby.settings.keldonMode) {\n replayButtonValues.x = 0.1;\n }\n\n {\n let { x } = replayButtonValues;\n\n // Go back to the beginning (the left-most button).\n globals.elements.replayBackFullButton = new Button(\n {\n x: x * winW,\n y: 0.07 * winH,\n width: replayButtonValues.w * winW,\n height: replayButtonValues.h * winH,\n listening: true,\n },\n [\n globals.imageLoader!.get(\"replay-back-full\"),\n globals.imageLoader!.get(\"replay-back-full-disabled\"),\n ],\n );\n globals.elements.replayBackFullButton.on(\"click tap\", replay.backFull);\n globals.elements.replayArea.add(\n globals.elements.replayBackFullButton as unknown as Konva.Group,\n );\n\n // Go back one turn (the second left-most button).\n x += replayButtonValues.w + replayButtonValues.spacing;\n globals.elements.replayBackButton = new Button(\n {\n x: x * winW,\n y: 0.07 * winH,\n width: replayButtonValues.w * winW,\n height: replayButtonValues.h * winH,\n },\n [\n globals.imageLoader!.get(\"replay-back\"),\n globals.imageLoader!.get(\"replay-back-disabled\"),\n ],\n );\n globals.elements.replayBackButton.on(\"click tap\", () => {\n // Prevent accidental double clicks.\n if (Date.now() - globals.UIClickTime < 50) {\n return;\n }\n globals.UIClickTime = Date.now();\n\n replay.back();\n });\n globals.elements.replayArea.add(\n globals.elements.replayBackButton as unknown as Konva.Group,\n );\n\n // Go forward one turn (the second right-most button).\n x += replayButtonValues.w + replayButtonValues.spacing;\n globals.elements.replayForwardButton = new Button(\n {\n x: x * winW,\n y: 0.07 * winH,\n width: replayButtonValues.w * winW,\n height: replayButtonValues.h * winH,\n },\n [\n globals.imageLoader!.get(\"replay-forward\"),\n globals.imageLoader!.get(\"replay-forward-disabled\"),\n ],\n );\n globals.elements.replayForwardButton.on(\"click tap\", () => {\n // Prevent accidental double clicks.\n if (Date.now() - globals.UIClickTime < 50) {\n return;\n }\n globals.UIClickTime = Date.now();\n\n replay.forward();\n });\n globals.elements.replayArea.add(\n globals.elements.replayForwardButton as unknown as Konva.Group,\n );\n\n // Go forward to the end (the right-most button).\n x += replayButtonValues.w + replayButtonValues.spacing;\n globals.elements.replayForwardFullButton = new Button(\n {\n x: x * winW,\n y: 0.07 * winH,\n width: replayButtonValues.w * winW,\n height: replayButtonValues.h * winH,\n },\n [\n globals.imageLoader!.get(\"replay-forward-full\"),\n globals.imageLoader!.get(\"replay-forward-full-disabled\"),\n ],\n );\n globals.elements.replayForwardFullButton.on(\n \"click tap\",\n replay.forwardFull,\n );\n globals.elements.replayArea.add(\n globals.elements.replayForwardFullButton as unknown as Konva.Group,\n );\n }\n\n const extra = 0.04;\n const totalWidth = replayButtonValues.w * 4 + replayButtonValues.spacing * 3;\n const bottomButtonValues = {\n y: 0.17,\n w: replayButtonValues.w * 2 + replayButtonValues.spacing + extra,\n h: 0.06,\n };\n const bottomLeftReplayButtonX = replayButtonValues.x - extra;\n const bottomCenterReplayButtonX =\n replayButtonValues.x + (totalWidth - bottomButtonValues.w) / 2;\n const bottomRightReplayButtonX =\n replayButtonValues.x +\n replayButtonValues.w * 2 +\n replayButtonValues.spacing * 2;\n // The \"Exit Replay\" button.\n globals.elements.replayExitButton = new Button({\n x: bottomRightReplayButtonX * winW,\n y: bottomButtonValues.y * winH,\n width: bottomButtonValues.w * winW,\n height: replayButtonValues.w * winH,\n text: \"Exit Replay\",\n visible: !globals.state.finished,\n });\n globals.elements.replayExitButton.on(\"click tap\", replay.exitButton);\n globals.elements.replayArea.add(\n globals.elements.replayExitButton as unknown as Konva.Group,\n );\n\n // The next two buttons will be moved to the left for replay leaders and centered for\n // non-replay-leaders.\n function setCenter(this: SharedTurnsButton) {\n this.x(bottomCenterReplayButtonX * winW);\n }\n function setLeft(this: SharedTurnsButton) {\n this.x(bottomLeftReplayButtonX * winW);\n }\n\n // The \"Pause Shared Turns\" button. (This will be shown when the client receives the\n // \"replayLeader\" command.)\n globals.elements.pauseSharedTurnsButton = new SharedTurnsButton({\n y: bottomButtonValues.y * winH,\n width: bottomButtonValues.w * winW,\n height: bottomButtonValues.h * winH,\n text: \"Pause Shared Turns\",\n visible: false,\n });\n globals.elements.pauseSharedTurnsButton.on(\n \"click tap\",\n replay.toggleSharedSegments,\n );\n globals.elements.pauseSharedTurnsButton.setCenter = setCenter;\n globals.elements.pauseSharedTurnsButton.setCenter(); // Set it to be center by default\n globals.elements.pauseSharedTurnsButton.setLeft = setLeft;\n globals.elements.replayArea.add(\n globals.elements.pauseSharedTurnsButton as unknown as Konva.Group,\n );\n\n // The \"Use Shared Turns\" button. (This will be shown when the client receives the \"replayLeader\"\n // command.)\n globals.elements.useSharedTurnsButton = new SharedTurnsButton({\n y: bottomButtonValues.y * winH,\n width: bottomButtonValues.w * winW,\n height: bottomButtonValues.h * winH,\n text: \"Use Shared Turns\",\n visible: false,\n });\n globals.elements.useSharedTurnsButton.on(\n \"click tap\",\n replay.toggleSharedSegments,\n );\n globals.elements.useSharedTurnsButton.setCenter = setCenter;\n globals.elements.useSharedTurnsButton.setCenter(); // Set it to be center by default\n globals.elements.useSharedTurnsButton.setLeft = setLeft;\n globals.elements.replayArea.add(\n globals.elements.useSharedTurnsButton as unknown as Konva.Group,\n );\n\n // The \"Enter Hypothetical\" button.\n globals.elements.enterHypoButton = new EnterHypoButton({\n y: bottomButtonValues.y * winH,\n width: bottomButtonValues.w * winW,\n height: bottomButtonValues.h * winH,\n text: \"Enter Hypothetical\",\n });\n globals.elements.enterHypoButton.on(\n \"click tap\",\n hypothetical.startHypothetical,\n );\n globals.elements.replayArea.add(\n globals.elements.enterHypoButton as unknown as Konva.Group,\n );\n\n // This button will be moved to the left during in-game replay, centered during private replay,\n // and right during shared replay.\n\n function enterHypoSetLeft(this: EnterHypoButton) {\n this.x(bottomLeftReplayButtonX * winW);\n }\n function enterHypoSetCenter(this: EnterHypoButton) {\n this.x(bottomCenterReplayButtonX * winW);\n }\n function enterHypoSetRight(this: EnterHypoButton) {\n this.x(bottomRightReplayButtonX * winW);\n }\n\n globals.elements.enterHypoButton.setLeft = enterHypoSetLeft;\n globals.elements.enterHypoButton.setCenter = enterHypoSetCenter;\n globals.elements.enterHypoButton.setRight = enterHypoSetRight;\n\n // Add the replay area to the UI.\n globals.layers.UI.add(globals.elements.replayArea);\n replay.adjustShuttles(true); // Skip the animation\n}\n", "import { Button } from \"./Button\";\n\nexport class EnterHypoButton extends Button {\n // eslint-disable-next-line @typescript-eslint/class-methods-use-this, @typescript-eslint/no-empty-function\n setLeft: (this: EnterHypoButton) => void = () => {};\n\n // eslint-disable-next-line @typescript-eslint/class-methods-use-this, @typescript-eslint/no-empty-function\n setCenter: (this: EnterHypoButton) => void = () => {};\n\n // eslint-disable-next-line @typescript-eslint/class-methods-use-this, @typescript-eslint/no-empty-function\n setRight: (this: EnterHypoButton) => void = () => {};\n}\n", "import { Button } from \"./Button\";\n\nexport class SharedTurnsButton extends Button {\n // eslint-disable-next-line @typescript-eslint/class-methods-use-this, @typescript-eslint/no-empty-function\n setLeft: (this: SharedTurnsButton) => void = () => {};\n\n // eslint-disable-next-line @typescript-eslint/class-methods-use-this, @typescript-eslint/no-empty-function\n setCenter: (this: SharedTurnsButton) => void = () => {};\n}\n", "import Konva from \"konva\";\n\nexport class Shuttle extends Konva.Rect {\n tween: Konva.Tween | null = null;\n}\n", "import { parseIntSafe } from \"complete-common\";\nimport type Konva from \"konva\";\nimport * as modals from \"../../modals\";\nimport { getHTMLElement, getHTMLInputElement } from \"../../utils\";\nimport { ReplayActionType } from \"../types/ReplayActionType\";\nimport { ReplayArrowOrder } from \"../types/ReplayArrowOrder\";\nimport { globals } from \"./UIGlobals\";\nimport * as arrows from \"./arrows\";\nimport type { TextWithTooltip } from \"./controls/TextWithTooltip\";\n\nconst setModifierButton = getHTMLElement(\"#set-modifier-button\");\nconst setModifierCurrent = getHTMLElement(\"#set-modifier-current\");\nconst setModifierNew = getHTMLInputElement(\"#set-modifier-new\");\n\nexport function setEfficiencyMod(mod: number): void {\n globals.store!.dispatch({\n type: \"setEffMod\",\n mod,\n });\n\n if (globals.state.visibleState === null) {\n return;\n }\n\n if (\n globals.state.replay.shared !== null &&\n globals.state.replay.shared.amLeader\n ) {\n globals.lobby.conn!.send(\"replayAction\", {\n tableID: globals.lobby.tableID,\n type: ReplayActionType.EfficiencyMod,\n value: mod,\n });\n }\n}\n\nexport function efficiencyLabelClick(\n this: TextWithTooltip,\n event: Konva.KonvaEventObject,\n): void {\n // \"event.evt.buttons\" is always 0 here.\n if (event.evt.button === 2) {\n arrows.click(event, ReplayArrowOrder.Efficiency);\n return;\n }\n\n askForEfficiency();\n}\n\nexport function askForEfficiency(): void {\n if (globals.state.replay.active && !globals.state.finished) {\n modals.showWarning(\n \"You can not modify the future efficiency during in-game replays.\",\n );\n return;\n }\n\n if (\n globals.state.finished &&\n globals.state.replay.shared !== null &&\n !globals.state.replay.shared.amLeader\n ) {\n modals.showWarning(\n \"Only the shared replay leader can modify the efficiency.\",\n );\n return;\n }\n\n const currentModifier = globals.state.notes.efficiencyModifier;\n\n setModifierCurrent.innerHTML = currentModifier.toString();\n setModifierNew.value = currentModifier.toString();\n\n // We can't use \"addEventListener\" because we can't easily remove the previous listener.\n // eslint-disable-next-line unicorn/prefer-add-event-listener\n setModifierButton.onclick = () => {\n modals.closeModals();\n\n const effModString = setModifierNew.value;\n const effMod = parseIntSafe(effModString);\n if (effMod === undefined) {\n // Do not do anything if they entered something that is not a number.\n return;\n }\n setEfficiencyMod(effMod);\n };\n\n modals.showPrompt(\n \"#set-modifier-modal\",\n null,\n setModifierNew,\n setModifierButton,\n );\n}\n", "import type { Spectator } from \"@hanabi-live/data\";\nimport { assertDefined } from \"complete-common\";\nimport * as tooltips from \"../../../../tooltips\";\nimport { globals } from \"../../UIGlobals\";\n\nexport function onSpectatorsChanged(data: {\n spectators: Spectator[];\n finished: boolean;\n}): void {\n if (!data.finished && globals.lobby.zenModeEnabled) {\n globals.elements.spectatorsLabel?.visible(false);\n globals.elements.spectatorsNumLabel?.visible(false);\n return;\n }\n\n const visible = data.spectators.length > 0;\n globals.elements.spectatorsLabel?.visible(visible);\n globals.elements.spectatorsNumLabel?.visible(visible);\n\n if (visible) {\n globals.elements.spectatorsNumLabel?.text(\n data.spectators.length.toString(),\n );\n\n // Build the string that shows all the names.\n let nameEntries = \"\";\n for (const spectator of data.spectators) {\n let nameEntry = \"
  • \";\n if (spectator.name === globals.metadata.ourUsername) {\n nameEntry += `${spectator.name}`;\n } else if (globals.lobby.friends.includes(spectator.name)) {\n nameEntry += `${spectator.name}`;\n } else {\n nameEntry += spectator.name;\n }\n\n // Spectators can also be shadowing a specific player. However, only show this in ongoing\n // games. (Perspective shifts in replays are inconsequential.)\n if (\n spectator.shadowingPlayerIndex !== undefined &&\n spectator.shadowingPlayerIndex !== -1 &&\n !data.finished\n ) {\n const playerName =\n globals.metadata.playerNames[spectator.shadowingPlayerIndex];\n assertDefined(\n playerName,\n `Failed to find the player name at index: ${spectator.shadowingPlayerIndex}`,\n );\n\n if (playerName !== spectator.name) {\n nameEntry += ` (\uD83D\uDD75\uFE0F ${playerName})`;\n }\n }\n nameEntry += \"
  • \";\n nameEntries += nameEntry;\n }\n let content = \"\";\n content += globals.state.finished ? \"Shared Replay Viewers\" : \"Spectators\";\n content += `:
      ${nameEntries}
    `;\n tooltips.setInstanceContent(\"#tooltip-spectators\", content);\n } else {\n tooltips.close(\"#tooltip-spectators\");\n }\n\n globals.layers.UI.batchDraw();\n}\n", "import { globals } from \"./UIGlobals\";\nimport { onSpectatorsChanged } from \"./reactive/views/spectatorsView\";\n\nexport function toggleZen(): void {\n globals.lobby.zenModeEnabled = globals.state.finished\n ? false\n : !globals.lobby.zenModeEnabled;\n\n if (globals.lobby.zenModeEnabled) {\n globals.game!.chat.hide();\n }\n\n if (globals.lobby.ui !== null) {\n globals.lobby.ui.updateChatLabel();\n }\n\n onSpectatorsChanged({\n spectators: globals.state.spectators,\n finished: globals.state.finished,\n });\n}\n", "import equal from \"fast-deep-equal\";\nimport type { Action, Store, Unsubscribe } from \"redux\";\n\nexport type Selector = (s: T) => U | undefined;\n\nexport type Listener = (\n currentValue: U,\n previousValue: U | undefined,\n) => void;\n\nexport interface Subscription {\n select: Selector;\n onChange: Listener;\n}\n\n// Observes a property of type T on a Store and calls a listener function when it changes.\nexport function observeStore(\n store: Store,\n subscriptions: ReadonlyArray>,\n): Unsubscribe {\n let currentState: S;\n\n function handleChange() {\n const nextState = store.getState();\n if (currentState === nextState) {\n // No change\n return;\n }\n\n // If the path changed, call the function.\n const filteredSubscriptions = subscriptions.filter((subscription) => {\n const nextValue = subscription.select(nextState);\n if (nextValue === undefined) {\n // The selector wants to skip this one.\n return false;\n }\n\n if (currentState === undefined) {\n // Initializing, always fire all.\n return true;\n }\n\n // Fire if any part of it changed.\n return !equal(nextValue, subscription.select(currentState));\n });\n\n for (const subscription of filteredSubscriptions) {\n // `currentState` is undefined during initialization.\n const currentValue =\n currentState === undefined\n ? undefined\n : subscription.select(currentState);\n subscription.onChange(subscription.select(nextState)!, currentValue);\n }\n\n currentState = nextState;\n }\n\n const unsubscribe = store.subscribe(handleChange);\n handleChange();\n return unsubscribe;\n}\n", "import type { State } from \"../../../types/State\";\nimport { globals } from \"../../UIGlobals\";\n\nexport function onObserversStarted(\n state: State,\n previousState: State | undefined,\n): void {\n // We want \"animateFast\" to remain true on the first time the visible state becomes valid.\n if (previousState === undefined || previousState.visibleState === null) {\n return;\n }\n\n // Find out how many segments we are jumping through in this state change.\n const currentSegment = state.replay.active\n ? state.replay.segment\n : state.ongoingGame.turn.segment;\n const oldSegment = previousState.replay.active\n ? previousState.replay.segment\n : previousState.ongoingGame.turn.segment;\n let segmentDifference = 0;\n if (currentSegment !== null && oldSegment !== null) {\n segmentDifference = Math.abs(currentSegment - oldSegment);\n }\n\n globals.animateFast =\n // Converting a game to a shared replay should always be fast.\n (!state.playing && previousState.playing) ||\n (state.replay.shared !== null && previousState.replay.shared === null) ||\n // Jumping ahead or behind in a replay by 2 or more segments should always be fast.\n segmentDifference >= 2 ||\n // If the replay shuttle is being dragged, always animate fast. (Note that it can be null.)\n globals.elements.replayShuttle?.isDragging() === true ||\n // Entering a hypothetical should always be fast.\n (state.replay.hypothetical !== null &&\n previousState.replay.hypothetical === null) ||\n // Exiting a hypothetical should always be fast.\n (state.replay.hypothetical === null &&\n previousState.replay.hypothetical !== null);\n}\n\nexport function onObserversFinished(\n _: State,\n previousState: State | undefined,\n): void {\n // We want \"animateFast\" to remain true on the first time the visible state becomes valid.\n if (previousState === undefined || previousState.visibleState === null) {\n return;\n }\n\n // All of the observers are finished firing, so reset \"animateFast\" back to false.\n globals.animateFast = false;\n}\n", "import type { CardOrder, GameState, SuitIndex } from \"@hanabi-live/game\";\nimport {\n StackDirection,\n getStackStartRank,\n getTotalCardsInDeck,\n hasReversedSuits,\n} from \"@hanabi-live/game\";\nimport { ReadonlyMap, assertDefined, assertNotNull } from \"complete-common\";\nimport equal from \"fast-deep-equal\";\nimport type Konva from \"konva\";\nimport type { HanabiCard } from \"../../HanabiCard\";\nimport type { LayoutChild } from \"../../LayoutChild\";\nimport { globals } from \"../../UIGlobals\";\nimport { updateCardVisuals } from \"./cardsView\";\n\nconst STACK_STRINGS_REVERSED = new ReadonlyMap([\n [StackDirection.Undecided, \"\"],\n [StackDirection.Up, \"\"],\n [StackDirection.Down, \"Reversed\"],\n [StackDirection.Finished, \"Reversed\"],\n]);\n\nconst STACK_STRINGS_UP_OR_DOWN = new ReadonlyMap([\n [StackDirection.Undecided, \"\"],\n [StackDirection.Up, \"Up\"],\n [StackDirection.Down, \"Down\"],\n [StackDirection.Finished, \"Finished\"],\n]);\n\nexport function onPlayStackDirectionsChanged(\n directions: readonly StackDirection[],\n previousDirections: readonly StackDirection[] | undefined,\n): void {\n if (!hasReversedSuits(globals.variant)) {\n return;\n }\n\n // Update the stack directions (which are only used in the \"Up or Down\" and \"Reversed\" variants).\n for (const [i, direction] of directions.entries()) {\n if (\n previousDirections !== undefined &&\n direction === previousDirections[i]\n ) {\n continue;\n }\n\n const suit = globals.variant.suits[i]!;\n let text = \"\";\n const isUpOrDown = globals.variant.upOrDown;\n if (isUpOrDown || suit.reversed) {\n const stackStrings = isUpOrDown\n ? STACK_STRINGS_UP_OR_DOWN\n : STACK_STRINGS_REVERSED;\n\n const stackText = stackStrings.get(direction);\n assertDefined(\n stackText,\n `Failed to find the stack string for the stack direction of: ${direction}`,\n );\n\n text = stackText;\n }\n\n globals.elements.suitLabelTexts[i]!.fitText(text);\n\n const visibleCardsOfThisSuit = globals.deck.filter(\n (card) => card.visibleSuitIndex === i,\n );\n for (const card of visibleCardsOfThisSuit) {\n const suitIndex = i as SuitIndex;\n card.setDirectionArrow(suitIndex, direction);\n }\n }\n globals.layers.UI.batchDraw();\n}\n\nexport function onHandsChanged(hands: GameState[\"hands\"]): void {\n syncChildren(\n hands,\n (i) => globals.elements.playerHands[i] as unknown as Konva.Container,\n (card, i) => {\n card.animateToPlayerHand(i);\n },\n );\n\n globals.layers.card.batchDraw();\n}\n\nexport function onDiscardStacksChanged(\n discardStacks: GameState[\"discardStacks\"],\n): void {\n syncChildren(\n discardStacks,\n (i) => {\n const suit = globals.variant.suits[i]!;\n return globals.elements.discardStacks.get(\n suit,\n )! as unknown as Konva.Container;\n },\n (card) => {\n if (card.state.isMisplayed) {\n card.layout.doMisplayAnimation = true;\n }\n card.animateToDiscardPile();\n },\n );\n\n globals.layers.card.batchDraw();\n}\n\nexport function onPlayStacksChanged(\n playStacks: GameState[\"playStacks\"],\n previousPlayStacks: GameState[\"playStacks\"] | undefined,\n): void {\n syncChildren(\n playStacks,\n (i) => {\n const suit = globals.variant.suits[i]!;\n return globals.elements.playStacks.get(\n suit,\n )! as unknown as Konva.Container;\n },\n (card) => {\n card.animateToPlayStacks();\n },\n );\n\n for (const [suitIndex, stack] of playStacks.entries()) {\n if (\n previousPlayStacks === undefined ||\n !equal(stack, previousPlayStacks[suitIndex])\n ) {\n const suit = globals.variant.suits[suitIndex]!;\n const playStack = globals.elements.playStacks.get(suit)!;\n playStack.hideCardsUnderneathTheTopCard();\n }\n }\n\n if (globals.variant.sudoku) {\n // First, we will find out all available stack starts.\n const availableStackStartsFlags: boolean[] = [\n false,\n false,\n false,\n false,\n false,\n ];\n for (const rank of globals.variant.ranks) {\n availableStackStartsFlags[rank - 1] = true;\n }\n for (const playStack of playStacks) {\n const stackStart = getStackStartRank(\n playStack,\n globals.state.visibleState!.deck,\n );\n if (stackStart !== null) {\n availableStackStartsFlags[stackStart - 1] = false;\n }\n }\n const availableStackStarts: number[] = [];\n for (const [index, available] of availableStackStartsFlags.entries()) {\n if (available) {\n availableStackStarts.push(index + 1);\n }\n }\n\n // Now, add the suit label texts, showing current progress or the possible remaining starting\n // values.\n for (const [suitIndex, playStack] of playStacks.entries()) {\n let text: string;\n if (playStack.length === globals.variant.ranks.length) {\n text = \"Finished\";\n } else if (playStack.length > 0) {\n const firstPlayedCardOrder = playStack[0];\n assertDefined(\n firstPlayedCardOrder,\n `Failed to get the first card order from the play stack at suit index: ${suitIndex}`,\n );\n const firstPlayedCard = globals.deck[firstPlayedCardOrder];\n assertDefined(\n firstPlayedCard,\n `Failed to get the first played card at index: ${firstPlayedCardOrder}`,\n );\n const firstPlayedRank = firstPlayedCard.getCardIdentity().rank;\n assertNotNull(\n firstPlayedRank,\n `Failed to get the rank of the first played card at index: ${firstPlayedCardOrder}`,\n );\n const playedRanks = playStack.map(\n (_stack, rankOffset) =>\n ((rankOffset + firstPlayedRank - 1) % globals.variant.stackSize) +\n 1,\n );\n const ranksText =\n playedRanks.join(\" \") +\n \" _\".repeat(globals.variant.stackSize - playStack.length);\n text = `[ ${ranksText} ]`;\n } else {\n const bracketText =\n availableStackStarts.length === globals.variant.stackSize\n ? \"Any\"\n : availableStackStarts.join(\"\");\n text = `Start: [${bracketText}]`;\n }\n const fitText = globals.elements.suitLabelTexts[suitIndex];\n assertDefined(\n fitText,\n `Failed to get the fit text at suit index: ${suitIndex}`,\n );\n fitText.fitText(text);\n }\n }\n\n globals.layers.card.batchDraw();\n}\n\nexport function onHoleChanged(\n hole: readonly CardOrder[],\n previousHole: readonly CardOrder[] | undefined,\n): void {\n if (previousHole === undefined) {\n return;\n }\n syncChildren(\n [hole],\n () => globals.elements.playStacks.get(\"hole\") as unknown as Konva.Container,\n (card) => {\n card.animateToHole();\n },\n );\n\n globals.layers.card.batchDraw();\n}\n\nexport function updatePlayStackVisuals(): void {\n const totalCardsInDeck = getTotalCardsInDeck(globals.variant);\n for (const suitIndex of globals.variant.suits.keys()) {\n const playStackOrder = (totalCardsInDeck + suitIndex) as CardOrder;\n updateCardVisuals(playStackOrder);\n }\n}\n\nfunction syncChildren(\n collections: ReadonlyArray,\n getCollectionUI: (i: number) => Konva.Container,\n addToCollectionUI: (card: HanabiCard, i: number) => void,\n) {\n for (const [i, collection] of collections.entries()) {\n // eslint-disable-next-line func-style\n const getCurrentSorting = () =>\n (getCollectionUI(i).children.toArray() as LayoutChild[])\n .map((layoutChild) => layoutChild.card)\n .filter((card) => !card.isStackBase)\n .map((card) => card.state.order);\n\n let current = getCurrentSorting();\n\n // Remove the elements that were removed.\n const removedCardOrders = current.filter((n) => !collection.includes(n));\n const removedCards = removedCardOrders.map(getCard);\n for (const card of removedCards) {\n const realState =\n globals.store?.getState().visibleState?.deck[card!.state.order];\n if (realState === undefined || realState.location === \"deck\") {\n card!.animateToDeck();\n } else {\n card!.removeLayoutChildFromParent();\n }\n }\n\n // Add the elements that were added.\n const addedCardOrders = collection.filter((n) => !current.includes(n));\n const addedCards = addedCardOrders.map(getCard);\n for (const card of addedCards) {\n addToCollectionUI(card!, i);\n }\n\n // Reorder the elements to match the collection.\n for (const [pos, order] of collection.entries()) {\n current = getCurrentSorting();\n if (current.length !== collection.length) {\n throw new Error(\"The UI collection is out of sync with the state.\");\n }\n\n const card = getCard(order)!;\n const layoutChild = card.parent as unknown as LayoutChild;\n let sourcePosition = current.indexOf(order);\n while (sourcePosition < pos) {\n layoutChild.moveUp();\n sourcePosition++;\n }\n while (sourcePosition > pos) {\n layoutChild.moveDown();\n sourcePosition--;\n }\n }\n\n // Verify the final result.\n current = getCurrentSorting();\n if (!equal(current, collection)) {\n throw new Error(\"The UI collection is out of sync with the state.\");\n }\n }\n}\n\nfunction getCard(order: CardOrder): HanabiCard | undefined {\n return globals.deck[order];\n}\n", "import type { CardIdentity, CardOrder, CardState } from \"@hanabi-live/game\";\nimport { getTotalCardsInDeck } from \"@hanabi-live/game\";\nimport { eRange } from \"complete-common\";\nimport type { State } from \"../../../types/State\";\nimport { HanabiCard } from \"../../HanabiCard\";\nimport { globals } from \"../../UIGlobals\";\nimport { getCardOrStackBase } from \"../../getCardOrStackBase\";\nimport { changeStartingHandVisibility } from \"../../hypothetical\";\nimport type { Listener, Selector, Subscription } from \"../observeStore\";\nimport { observeStore } from \"../observeStore\";\n\nexport function onCardsPossiblyAdded(length: number): void {\n const totalCardsInDeck = getTotalCardsInDeck(globals.variant);\n\n // Subscribe the new cards.\n for (const i of eRange(globals.cardSubscriptions.length, length)) {\n if (globals.deck.length <= i) {\n const newCard = new HanabiCard(\n i as CardOrder,\n null,\n null,\n false,\n globals.variant,\n globals.options.numPlayers,\n );\n globals.deck.push(newCard);\n if (globals.deck.length > totalCardsInDeck) {\n throw new Error(\n `Unexpected card of order ${i} added to globals.deck: Deck too long.`,\n );\n }\n }\n\n const subscription = subscribeToCardChanges(i as CardOrder);\n globals.cardSubscriptions.push(subscription);\n }\n}\n\nexport function onCardsPossiblyRemoved(length: number): void {\n // Unsubscribe the removed cards.\n while (globals.cardSubscriptions.length > length) {\n // The card was removed from the visible state. Ensure the position of the card is correctly\n // reset.\n const card = globals.deck[globals.cardSubscriptions.length - 1];\n if (card !== undefined) {\n card.moveToDeckPosition();\n }\n\n const unsubscribe = globals.cardSubscriptions.pop();\n if (unsubscribe !== undefined) {\n unsubscribe();\n }\n }\n}\n\nexport function onMorphedIdentitiesChanged(\n data: {\n hypotheticalActive: boolean;\n morphedIdentities: readonly CardIdentity[] | undefined;\n },\n previousData:\n | {\n hypotheticalActive: boolean;\n morphedIdentities: readonly CardIdentity[] | undefined;\n }\n | undefined,\n): void {\n changeStartingHandVisibility();\n if (previousData === undefined || !previousData.hypotheticalActive) {\n // Initializing or entering a hypothetical. Hide the starting player's hand.\n return;\n }\n\n if (!data.hypotheticalActive) {\n // Exiting hypothetical, update all morphed.\n if (previousData.morphedIdentities !== undefined) {\n for (const i of previousData.morphedIdentities.keys()) {\n // Since `morphedIdentities` is a sparse array, we need to check for undefined.\n if (previousData.morphedIdentities[i] !== undefined) {\n updateCardVisuals(i as CardOrder);\n }\n }\n }\n\n return;\n }\n\n // Update the card visuals when a card is morphed.\n const currentLength = data.morphedIdentities!.length;\n const previousLength = previousData.morphedIdentities!.length;\n const maxLength = Math.max(currentLength, previousLength);\n if (\n data.morphedIdentities !== undefined &&\n previousData.morphedIdentities !== undefined\n ) {\n for (const i of eRange(maxLength)) {\n if (data.morphedIdentities[i] !== previousData.morphedIdentities[i]) {\n updateCardVisuals(i as CardOrder);\n }\n }\n }\n}\n\nfunction subscribeToCardChanges(order: CardOrder) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const subscriptions: Array> = [];\n\n // Validates that a card exists in the visible state before firing a listener.\n function checkOrderAndSelect(s: Selector): Selector {\n return (state) => {\n if (order >= state.visibleState!.deck.length) {\n // This card was removed from visible state. Return undefined to prevent firing the\n // listener.\n return undefined;\n }\n\n return s(state);\n };\n }\n\n // Subscribes to a set of property changes from cards.\n function sub(s: Selector, l: Listener) {\n // eslint-disable-next-line func-style\n const cardSelector = (state: State) => s(state.visibleState!.deck[order]!);\n subscriptions.push({\n select: checkOrderAndSelect(cardSelector),\n onChange: l,\n });\n }\n\n // Subscribes to a set of property changes from cards as well as anywhere else in state.\n function subFullState(s: Selector, l: Listener) {\n subscriptions.push({ select: checkOrderAndSelect(s), onChange: l });\n }\n\n // Borders\n sub(\n (c) => ({\n numPositiveClues: c.numPositiveClues,\n location: c.location,\n }),\n () => {\n updateBorder(order);\n },\n );\n\n // Card fade and critical indicator.\n subFullState(\n (s) => {\n const card = s.visibleState!.deck[order]!;\n const status =\n card.suitIndex !== null && card.rank !== null\n ? s.visibleState!.cardStatus[card.suitIndex][card.rank]\n : null;\n\n return {\n status,\n clued: card.numPositiveClues >= 1,\n location: card.location,\n doubleDiscard: card.inDoubleDiscard,\n };\n },\n () => {\n updateCardStatus(order);\n },\n );\n\n // Notes\n sub(\n (c) => ({\n possibleCards: c.possibleCards.length,\n }),\n () => {\n checkNoteDisproved(order);\n },\n );\n\n // Pips\n sub(\n (c) => ({\n numPossibleCardsFromClues: c.possibleCardsFromClues.length,\n possibleCards: c.possibleCards.length,\n possibleCardsForEmpathy: c.possibleCardsForEmpathy.length,\n numPositiveColorClues: c.positiveColorClues.length,\n numPositiveRankClues: c.positiveRankClues.length,\n }),\n () => {\n updatePips(order);\n },\n );\n\n // Status\n sub(\n (c) => ({\n isKnownTrashFromEmpathy: c.isKnownTrashFromEmpathy,\n }),\n () => {\n updateCardStatus(order);\n },\n );\n\n // Card visuals\n subFullState(\n (s) => {\n const card = s.visibleState!.deck[order]!;\n return {\n rank: card.rank,\n suitIndex: card.suitIndex,\n location: card.location,\n suitDetermined: card.suitDetermined,\n rankDetermined: card.rankDetermined,\n numPossibleCardsFromClues: card.possibleCardsFromClues.length,\n identity: s.cardIdentities[order],\n };\n },\n () => {\n updateCardVisuals(order);\n },\n );\n\n return observeStore(globals.store!, subscriptions);\n}\n\nfunction updateBorder(order: CardOrder) {\n const card = getCardOrStackBase(order);\n if (!card) {\n return;\n }\n\n // When cards have one or more positive clues, they get a special border.\n card.setBorder();\n\n // When cards have one or more positive clues, they are raised up in the hand.\n card.setRaiseAndShadowOffset();\n\n globals.layers.card.batchDraw();\n}\n\nfunction updatePips(order: CardOrder) {\n const card = getCardOrStackBase(order);\n if (!card) {\n return;\n }\n\n card.updatePips();\n globals.layers.card.batchDraw();\n}\n\nexport function updateCardVisuals(order: CardOrder): void {\n const card = getCardOrStackBase(order);\n if (!card) {\n return;\n }\n\n card.setBareImage();\n globals.layers.card.batchDraw();\n}\n\nfunction checkNoteDisproved(order: CardOrder) {\n const card = getCardOrStackBase(order);\n if (!card) {\n return;\n }\n\n card.checkNoteDisproved();\n globals.layers.card.batchDraw();\n}\n\nfunction updateCardStatus(order: CardOrder) {\n const card = getCardOrStackBase(order);\n if (!card) {\n return;\n }\n\n card.setStatus();\n globals.layers.card.batchDraw();\n}\n", "import type { StateClue } from \"@hanabi-live/game\";\nimport { msgClueToClue } from \"@hanabi-live/game\";\nimport equal from \"fast-deep-equal\";\nimport { ClueEntry } from \"../../ClueEntry\";\nimport { globals } from \"../../UIGlobals\";\nimport * as arrows from \"../../arrows\";\nimport { getCardOrStackBase } from \"../../getCardOrStackBase\";\n\nexport function onCluesChanged(clues: readonly StateClue[]): void {\n updateLog(clues);\n}\n\nexport function onLastClueOrSegmentChanged(data: {\n lastClue: StateClue | undefined;\n segment: number | null;\n}): void {\n updateArrows(data.lastClue, data.segment);\n}\n\nfunction updateArrows(lastClue: StateClue | undefined, segment: number | null) {\n arrows.hideAll();\n\n if (segment === null) {\n return;\n }\n\n if (lastClue === undefined || lastClue.segment !== segment - 1) {\n // We are initializing (or we rewinded and just removed the first clue).\n return;\n }\n\n const clue = msgClueToClue(lastClue, globals.variant);\n\n for (const [i, order] of lastClue.list.entries()) {\n const card = getCardOrStackBase(order);\n if (card) {\n arrows.set(i, card, lastClue.giver, clue);\n }\n }\n\n globals.layers.arrow.batchDraw();\n}\n\nfunction updateLog(clues: readonly StateClue[]) {\n const { clueLog } = globals.elements;\n if (clueLog === null) {\n return;\n }\n\n const startingIndex = Math.max(0, clues.length - clueLog.maxLength);\n for (const [i, clue] of clues.slice(startingIndex).entries()) {\n if (i < clueLog.children.length) {\n const clueEntry = clueLog.children[i] as unknown as ClueEntry;\n if (equal(clue, clueEntry.clue)) {\n // No change\n continue;\n }\n }\n\n const entry = new ClueEntry(clue, {\n width: clueLog.width(),\n height: 0.017 * globals.stage.height(),\n listening: false,\n });\n if (i < clueLog.children.length) {\n clueLog.updateClue(i, entry);\n } else {\n clueLog.addClue(entry);\n }\n }\n\n // Delete any left over clues.\n if (clueLog.children.length > clues.length) {\n clueLog.children.splice(\n clues.length,\n clueLog.children.length - clues.length,\n );\n }\n clueLog.refresh();\n\n globals.layers.UI.batchDraw();\n}\n", "// This is one of the entries in the clue log (in the top-right-hand corner of the UI).\n\nimport type { CardOrder, StateClue } from \"@hanabi-live/game\";\nimport { getCharacterNameForPlayer, getClueName } from \"@hanabi-live/game\";\nimport { assertDefined } from \"complete-common\";\nimport Konva from \"konva\";\nimport { globals } from \"./UIGlobals\";\nimport { FitText } from \"./controls/FitText\";\nimport { drawLayer } from \"./konvaHelpers\";\nimport * as replay from \"./replay\";\n\nexport class ClueEntry extends Konva.Group {\n clue: StateClue;\n\n background: Konva.Rect;\n negativeMarker: Konva.Text;\n\n constructor(clue: StateClue, config: Konva.ContainerConfig) {\n super(config);\n\n this.clue = clue;\n\n // Object variables\n const w = config.width;\n assertDefined(w, 'ClueEntry was not provided with a \"width\" value.');\n const h = config.height;\n assertDefined(h, 'ClueEntry was not provided with a \"height\" value.');\n\n this.background = new Konva.Rect({\n x: 0,\n y: 0,\n width: w,\n height: h,\n fill: \"white\",\n opacity: 0.1,\n listening: true,\n });\n this.add(this.background);\n\n const giver = new FitText({\n x: 0.05 * w,\n y: 0,\n width: 0.3 * w,\n height: h,\n fontSize: 0.9 * h,\n fontFamily: \"Verdana\",\n fill: \"white\",\n text: globals.metadata.playerNames[clue.giver],\n verticalAlign: \"middle\",\n listening: false,\n });\n this.add(giver);\n\n const target = new FitText({\n x: 0.4 * w,\n y: 0,\n width: 0.3 * w,\n height: h,\n fontSize: 0.9 * h,\n fontFamily: \"Verdana\",\n fill: \"white\",\n text: globals.metadata.playerNames[clue.target],\n verticalAlign: \"middle\",\n listening: false,\n });\n this.add(target);\n\n const characterName = getCharacterNameForPlayer(\n clue.giver,\n globals.metadata.characterAssignments,\n );\n const clueName = getClueName(\n clue.type,\n clue.value,\n globals.variant,\n characterName,\n );\n const name = new Konva.Text({\n x: 0.75 * w,\n y: 0,\n width: 0.2 * w,\n height: h,\n align: \"center\",\n fontSize: 0.9 * h,\n fontFamily: \"Verdana\",\n fill: \"white\",\n text: clueName,\n verticalAlign: \"middle\",\n listening: false,\n });\n this.add(name);\n\n this.negativeMarker = new Konva.Text({\n x: 0.88 * w,\n y: 0,\n width: 0.2 * w,\n height: h,\n align: \"center\",\n fontSize: 0.9 * h,\n fontFamily: \"Verdana\",\n fill: \"white\",\n text: \"\u2718\",\n visible: false,\n listening: false,\n });\n this.add(this.negativeMarker);\n\n // Add a mouseover highlighting effect.\n this.background.on(\"mouseover\", () => {\n this.background.opacity(0.4);\n drawLayer(this);\n });\n this.background.on(\"mouseout\", () => {\n this.background.opacity(0.1);\n drawLayer(this);\n });\n\n // Click an entry in the clue log to go to that segment (turn) in the replay.\n this.background.on(\"click tap\", () => {\n replay.goToSegment(this.clue.segment + 1, true);\n });\n }\n\n /**\n * If this clue entry is related to the card that we are currently mousing over, then highlight\n * it.\n */\n showMatch(targetCardOrder: CardOrder | null): void {\n this.background.opacity(0.1);\n this.background.fill(\"white\");\n this.negativeMarker.hide();\n\n if (targetCardOrder === null) {\n return;\n }\n\n for (const cardOrder of this.clue.list) {\n if (cardOrder === targetCardOrder) {\n this.background.opacity(0.4);\n // (The background is already set to white.)\n return;\n }\n }\n\n for (const cardOrder of this.clue.negativeList) {\n if (cardOrder === targetCardOrder) {\n this.background.opacity(0.4);\n this.background.fill(\"#ff7777\");\n if (globals.lobby.settings.colorblindMode) {\n this.negativeMarker.show();\n }\n return;\n }\n }\n }\n}\n", "import type { PlayerIndex } from \"@hanabi-live/game\";\nimport {\n getAdjustedClueTokens,\n getUnadjustedClueTokens,\n isAtMaxClueTokens,\n isHandLocked,\n} from \"@hanabi-live/game\";\nimport { assertDefined, eRange } from \"complete-common\";\nimport Konva from \"konva\";\nimport type { State } from \"../../../types/State\";\nimport { globals } from \"../../UIGlobals\";\nimport { LABEL_COLOR } from \"../../constants\";\n\nexport function isVisible(state: State): boolean {\n return (\n // Do not show it we happen to have the in-game replay open.\n !state.replay.active &&\n // The clue UI should take precedence over the \"Current Player\" area.\n (state.ongoingGame.turn.currentPlayerIndex !==\n state.metadata.ourPlayerIndex ||\n !state.playing) &&\n // The premove cancel button should take precedence over the \"Current Player\" area.\n state.premove === null &&\n // Do not show it if the game is over.\n state.ongoingGame.turn.currentPlayerIndex !== null\n );\n}\n\nexport function onChanged(\n data: {\n visible: boolean;\n currentPlayerIndex: PlayerIndex | null;\n },\n previousData:\n | {\n visible: boolean;\n currentPlayerIndex: PlayerIndex | null;\n }\n | undefined,\n): void {\n const { currentPlayerArea } = globals.elements;\n if (currentPlayerArea === null) {\n return;\n }\n\n if (previousData === undefined || data.visible !== previousData.visible) {\n currentPlayerArea.visible(data.visible);\n globals.layers.UI.batchDraw();\n }\n if (!data.visible) {\n return;\n }\n\n const winW = globals.stage.width();\n const winH = globals.stage.height();\n const { clueTokens } = globals.state.ongoingGame;\n const { currentPlayerIndex } = globals.state.ongoingGame.turn;\n if (currentPlayerIndex === null) {\n return;\n }\n const currentPlayerHand =\n globals.state.ongoingGame.hands[currentPlayerIndex]!;\n const { numPlayers } = globals.options;\n\n // Update the text\n const { text1, text2, text3 } = currentPlayerArea;\n let specialText = \"\";\n if (!globals.lobby.settings.realLifeMode) {\n // In \"Clue Starved\" variants, clues are tracked internally at twice the value shown to the\n // user.\n const unadjustedClueTokens = getUnadjustedClueTokens(\n clueTokens,\n globals.variant,\n );\n const cluesTokensText = unadjustedClueTokens.toString();\n\n if (clueTokens < getAdjustedClueTokens(1, globals.variant)) {\n specialText = `(cannot clue; ${cluesTokensText} clues left)`;\n text3.fill(\"red\");\n } else if (isAtMaxClueTokens(clueTokens, globals.variant)) {\n specialText = `(cannot discard; at ${cluesTokensText} clues)`;\n text3.fill(LABEL_COLOR);\n } else if (\n globals.lobby.settings.hyphenatedConventions &&\n isHandLocked(currentPlayerHand, globals.state.ongoingGame.deck)\n ) {\n specialText = \"(locked; may not be able to discard)\";\n text3.fill(LABEL_COLOR);\n } else if (\n globals.state.ongoingGame.stats.doubleDiscardCard !== null &&\n globals.lobby.settings.hyphenatedConventions\n ) {\n specialText = '(potentially in a \"Double Discard\" situation)';\n text3.fill(\"yellow\");\n }\n }\n\n // eslint-disable-next-line func-style\n const setPlayerText = (threeLines: boolean) => {\n const { rect1, textValues, values } = currentPlayerArea;\n\n text2.fitText(globals.metadata.playerNames[data.currentPlayerIndex!]!);\n\n let maxSize = (values.h / 3) * winH;\n if (threeLines) {\n maxSize = (values.h / 4) * winH;\n }\n text2.width(textValues.w * winW);\n text2.resize();\n\n // We need to adjust the font size of the player name, depending on how long the name is.\n // Continue to shrink the text until it reaches the maximum size. Run at most 100 times; in most\n // cases, it will take around 15.\n for (const _i of eRange(100)) {\n if (text2.measureSize(text2.text()).height <= maxSize) {\n break;\n }\n text2.width(text2.width() * 0.9);\n text2.resize();\n }\n text2.x(rect1.width() / 2 - text2.width() / 2);\n };\n\n const totalH = currentPlayerArea.height();\n const text1H = text1.measureSize(text1.text()).height;\n if (specialText === \"\") {\n // 2 lines\n setPlayerText(false);\n const text2H = text2.measureSize(text2.text()).height;\n const spacing = 0.03 * winH;\n text1.y(totalH / 2 - text1H / 2 - spacing);\n text2.y(totalH / 2 - text2H / 2 + spacing);\n text3.hide();\n } else {\n // 3 lines\n setPlayerText(true);\n const text2H = text2.measureSize(text2.text()).height;\n const spacing = 0.04 * winH;\n text1.y(totalH / 2 - text1H / 2 - spacing);\n text2.y(totalH / 2 - text2H / 2 + spacing * 0.25);\n text3.y(totalH / 2 - text1H / 2 + spacing * 1.5);\n text3.fitText(specialText);\n text3.show();\n }\n\n // Get the rotation that corresponds to the current player.\n let rotation = getArrowRotationCorrespondingToPlayer(\n data.currentPlayerIndex!,\n );\n\n if (\n globals.animateFast ||\n previousData === undefined ||\n !previousData.visible\n ) {\n // Immediately snap the arrow in position and do not tween if:\n // 1) we performed an action on our turn and now the \"Current Player\" area is now visible again\n // after being hidden\n // 2) we are exiting an in-game replay\n currentPlayerArea.arrow.rotation(rotation);\n } else {\n if (currentPlayerArea.tween !== null) {\n currentPlayerArea.tween.destroy();\n currentPlayerArea.tween = null;\n }\n\n // Since the \"Current Player\" area might have been hidden and/or not updated for a while, update\n // the current arrow rotation to be equal to that of the previous player.\n let previousPlayerIndex = data.currentPlayerIndex! - 1;\n if (previousPlayerIndex === -1) {\n previousPlayerIndex = numPlayers - 1;\n }\n const previousRotation = getArrowRotationCorrespondingToPlayer(\n previousPlayerIndex as PlayerIndex,\n );\n currentPlayerArea.arrow.rotation(previousRotation);\n\n // We want the arrow to always be moving clockwise.\n const unmodifiedRotation = rotation;\n if (previousRotation > rotation) {\n rotation += 360;\n }\n\n currentPlayerArea.tween = new Konva.Tween({\n node: currentPlayerArea.arrow,\n duration: 0.75,\n rotation,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n easing: Konva.Easings.EaseInOut,\n onFinish: () => {\n if (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n currentPlayerArea.arrow !== undefined &&\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n currentPlayerArea.arrow !== null\n ) {\n currentPlayerArea.arrow.rotation(unmodifiedRotation);\n }\n },\n }).play();\n }\n\n globals.layers.UI.batchDraw();\n}\n\nfunction getArrowRotationCorrespondingToPlayer(playerIndex: PlayerIndex) {\n const hand = globals.elements.playerHands[playerIndex];\n assertDefined(\n hand,\n `Failed to get the hand corresponding to the player at index: ${playerIndex}`,\n );\n\n const centerPos = hand.getAbsoluteCenterPos();\n\n if (globals.lobby.settings.keldonMode) {\n // Make sure that the arrow points to an imaginary person behind the hand of cards.\n const winH = globals.stage.height();\n const distanceToImaginaryPlayer = (600 / 1080) * winH;\n const handRotation =\n globals.metadata.ourPlayerIndex === playerIndex ? 180 : hand.origRotation;\n const rot = (-handRotation / 180) * Math.PI;\n centerPos.x += distanceToImaginaryPlayer * -Math.sin(rot); // -sin(x) = cos(x + PI / 2)\n centerPos.y -= distanceToImaginaryPlayer * Math.cos(rot); // cos(x) = sin(x + PI / 2)\n }\n\n const thisPos =\n globals.elements.currentPlayerArea!.arrow.getAbsolutePosition();\n const x = centerPos.x - thisPos.x;\n const y = centerPos.y - thisPos.y;\n const radians = Math.atan(y / x);\n let rotation = radians * (180 / Math.PI);\n if (x < 0) {\n rotation += 180;\n }\n\n return rotation;\n}\n", "import { globals } from \"../../UIGlobals\";\n\nexport function onCardsRemainingChanged(cardsRemainingInTheDeck: number): void {\n // Update the deck label.\n globals.elements.deck?.setCount(cardsRemainingInTheDeck);\n\n // Hide the question mark icon on the deck if there are 0 cards left in the deck (because it\n // interferes with the \"Turns left\" text).\n globals.elements.gameInfoImage?.visible(cardsRemainingInTheDeck > 0);\n globals.layers.arrow.batchDraw();\n\n // If we dragged the deck to the play stacks, then it will remain there until it is explicitly\n // reset.\n globals.elements.deck?.resetCardBack();\n}\n", "import type { PlayerIndex, StateStrike } from \"@hanabi-live/game\";\nimport {\n MAX_STRIKES,\n getAdjustedClueTokens,\n isAtMaxClueTokens,\n} from \"@hanabi-live/game\";\nimport { eRange } from \"complete-common\";\nimport { setBrowserAddressBarPath } from \"../../../../utils\";\nimport { globals } from \"../../UIGlobals\";\nimport { LABEL_COLOR, OFF_BLACK, STRIKE_FADE } from \"../../constants\";\nimport { animate } from \"../../konvaHelpers\";\nimport * as turn from \"../../turn\";\n\nexport function onTurnChanged(data: {\n turn: number;\n endTurn: number | null;\n}): void {\n // On both the client and the server, the first turn of the game is represented as turn 0.\n // However, turn 0 is represented to the end-user as turn 1, so we must add one.\n const friendlyTurn = `${data.turn + 1}`;\n\n // Update the \"Turn\" label.\n globals.elements.turnNumberLabel?.text(friendlyTurn);\n\n // Update the address bar if we are not in a hypothetical. (The turn number in the hypothetical\n // will cause bugs if the user refreshes, since the hypothetical turn will not map on to the real\n // game state.)\n if (globals.state.replay.hypothetical === null) {\n setBrowserAddressBarPath(window.location.pathname, `#${friendlyTurn}`);\n }\n\n // If there are no cards left in the deck, update the \"Turns left: #\" label on the deck\n if (data.endTurn !== null) {\n let numTurnsLeft = data.endTurn - data.turn;\n\n // Also account for the fact that in non-replays, an extra turn is sent to show the times\n // separately from the final action.\n if (numTurnsLeft < 0) {\n numTurnsLeft = 0;\n }\n\n globals.elements.deckTurnsRemainingLabel2?.text(`left: ${numTurnsLeft}`);\n }\n\n globals.layers.UI.batchDraw();\n}\n\nexport function onCurrentPlayerIndexChanged(\n currentPlayerIndex: PlayerIndex | null,\n): void {\n // Bold the name frame of the current player to signify that it is their turn.\n for (const [\n playerIndex,\n nameFrame,\n ] of globals.elements.nameFrames.entries()) {\n nameFrame.setActive(currentPlayerIndex === playerIndex);\n }\n\n if (currentPlayerIndex === null) {\n // The game has ended. Ensure that the clue UI is not showing.\n turn.hideArrowsAndDisableDragging();\n } else if (globals.lobby.settings.keldonMode) {\n // In addition to bolding the player's name, change the color of their black line to signify\n // that it is their turn.\n for (const rect of globals.elements.playerHandBlackLines) {\n rect.fill(OFF_BLACK);\n }\n const currentPlayerRect =\n globals.elements.playerHandBlackLines[currentPlayerIndex];\n if (currentPlayerRect !== undefined) {\n currentPlayerRect.fill(\"yellow\");\n }\n } else {\n // In addition to bolding the player's name, show a black rectangle around the player's hand to\n // signify that it is their turn.\n for (const rect of globals.elements.playerHandTurnRects) {\n rect.hide();\n }\n const currentPlayerRect =\n globals.elements.playerHandTurnRects[currentPlayerIndex];\n if (currentPlayerRect !== undefined) {\n currentPlayerRect.show();\n }\n }\n\n globals.layers.UI.batchDraw();\n}\n\nexport function onScoreOrMaxScoreChanged(data: {\n score: number;\n maxScore: number;\n}): void {\n const scoreLabel = globals.elements.scoreNumberLabel;\n if (scoreLabel === null) {\n return;\n }\n scoreLabel.text(data.score.toString());\n\n // Make the score label a separate color if it is the \"Low Score Phase\" (but only for members of\n // the H-Group).\n const lowScorePhaseThreshold = globals.variant.suits.length * 2;\n const lowScorePhase = data.score < lowScorePhaseThreshold;\n const scoreLabelColor =\n lowScorePhase && globals.lobby.settings.hyphenatedConventions\n ? \"cyan\"\n : LABEL_COLOR;\n const scoreLabelStyle =\n lowScorePhase &&\n globals.lobby.settings.hyphenatedConventions &&\n globals.lobby.settings.colorblindMode\n ? \"bold\"\n : \"normal\";\n scoreLabel.fontStyle(scoreLabelStyle);\n scoreLabel.fill(scoreLabelColor);\n\n // Reposition the maximum score.\n const maxScoreLabel = globals.elements.maxScoreNumberLabel;\n if (maxScoreLabel === null) {\n return;\n }\n maxScoreLabel.text(` / ${data.maxScore}`);\n // The type of Konva.Text.width is \"any\" for some reason.\n const maxScoreLabelWidth = maxScoreLabel.measureSize(maxScoreLabel.text())\n .width as number;\n if (typeof maxScoreLabelWidth !== \"number\") {\n throw new TypeError(\"The width of maxScoreLabel was not a number.\");\n }\n maxScoreLabel.width(maxScoreLabelWidth);\n const scoreLabelWidth = scoreLabel.measureSize(scoreLabel.text())\n .width as number;\n if (typeof scoreLabelWidth !== \"number\") {\n throw new TypeError(\"The width of scoreLabel was not a number.\");\n }\n const x = scoreLabel.x() + scoreLabelWidth;\n maxScoreLabel.x(x);\n\n globals.layers.UI.batchDraw();\n}\n\nexport function onNumAttemptedCardsPlayedChanged(\n numAttemptedCardsPlayed: number,\n): void {\n if (!globals.variant.throwItInAHole || globals.state.finished) {\n return;\n }\n\n globals.elements.playsNumberLabel?.text(numAttemptedCardsPlayed.toString());\n globals.layers.UI.batchDraw();\n}\n\nexport function onClueTokensChanged(clueTokens: number): void {\n let cluesTokensText = clueTokens.toString();\n if (globals.variant.clueStarved) {\n // In \"Clue Starved\" variants, clues are tracked internally at twice the value shown to the\n // user.\n cluesTokensText = (clueTokens / 2).toString();\n }\n globals.elements.cluesNumberLabel?.text(cluesTokensText);\n\n if (!globals.lobby.settings.realLifeMode) {\n const noCluesAvailable =\n clueTokens < getAdjustedClueTokens(1, globals.variant);\n const oneClueAvailable =\n clueTokens === getAdjustedClueTokens(1, globals.variant);\n const maxCluesAvailable = isAtMaxClueTokens(clueTokens, globals.variant);\n\n let fill: string;\n if (noCluesAvailable) {\n fill = \"red\";\n } else if (oneClueAvailable) {\n fill = \"yellow\";\n } else if (maxCluesAvailable) {\n fill = \"lime\";\n } else {\n fill = LABEL_COLOR;\n }\n globals.elements.cluesNumberLabel?.fill(fill);\n\n if (noCluesAvailable) {\n globals.elements.scoreAreaBorder?.stroke(\"red\");\n globals.elements.scoreAreaBorder?.show();\n } else if (maxCluesAvailable) {\n globals.elements.scoreAreaBorder?.stroke(\"lime\");\n globals.elements.scoreAreaBorder?.show();\n } else {\n globals.elements.scoreAreaBorder?.hide();\n }\n }\n\n globals.layers.UI.batchDraw();\n}\n\nexport function onClueTokensOrDoubleDiscardChanged(data: {\n clueTokens: number;\n doubleDiscard: number | null;\n}): void {\n if (globals.lobby.settings.realLifeMode) {\n return;\n }\n\n const noDiscard = isAtMaxClueTokens(data.clueTokens, globals.variant);\n\n // Show the red border around the discard pile (to reinforce that the current player cannot\n // discard).\n globals.elements.noDiscardBorder?.visible(noDiscard);\n\n // Show a yellow border around the discard pile (to reinforce that this is a \"Double Discard\"\n // situation).\n globals.elements.noDoubleDiscardBorder?.visible(\n globals.lobby.settings.hyphenatedConventions &&\n !noDiscard &&\n data.doubleDiscard !== null,\n );\n\n globals.layers.UI.batchDraw();\n}\n\nexport function onOngoingOrVisibleStrikesChanged(data: {\n ongoingStrikes: readonly StateStrike[];\n visibleStrikes: readonly StateStrike[];\n}): void {\n // Strikes are hidden from the players in \"Throw It in a Hole\" variants.\n if (\n globals.variant.throwItInAHole &&\n (globals.state.playing || globals.state.shadowing)\n ) {\n return;\n }\n\n for (const i of eRange(MAX_STRIKES)) {\n const strikeX = globals.elements.strikeXs[i];\n if (strikeX === undefined) {\n continue;\n }\n const strikeSquare = globals.elements.strikeSquares[i];\n if (strikeSquare === undefined) {\n continue;\n }\n\n const duration = 0.5; // The duration for the strike animation\n if (data.visibleStrikes[i] === undefined) {\n // Either this strike has never happened, or we are moving backwards in a replay. If this\n // strike never happened, it should be invisible. If this strike happened in the future, then\n // it should be slightly faded.\n if (strikeX.tween !== null) {\n strikeX.tween.destroy();\n strikeX.tween = null;\n }\n const opacity = data.ongoingStrikes[i] === undefined ? 0 : STRIKE_FADE;\n animate(\n strikeX,\n {\n duration,\n opacity,\n },\n true,\n );\n } else {\n // There is a strike on the visible state. Animate the strike X fading in.\n animate(\n strikeX,\n {\n duration,\n opacity: 1,\n },\n true,\n );\n }\n }\n\n globals.layers.UI.batchDraw();\n}\n", "import type { State } from \"../../../types/State\";\nimport { globals } from \"../../UIGlobals\";\nimport * as clues from \"../../clues\";\nimport type { PlayerButton } from \"../../controls/PlayerButton\";\nimport { changeStartingHandVisibility } from \"../../hypothetical\";\nimport * as turn from \"../../turn\";\n\n// For replay leaders, we want to disable entering a hypothetical during certain situations.\nexport function shouldEnableEnterHypoButton(state: State): boolean {\n return (\n (state.replay.shared === null && state.replay.active) ||\n (state.replay.shared !== null &&\n state.replay.shared.useSharedSegments &&\n state.replay.shared.amLeader &&\n // We can't start a hypothetical on a segment where the game has already ended.\n state.visibleState !== null &&\n state.visibleState.turn.currentPlayerIndex !== null)\n );\n}\n\nexport function shouldEnableEnterHypoButtonChanged(enabled: boolean): void {\n globals.elements.enterHypoButton?.setEnabled(enabled);\n globals.layers.UI.batchDraw();\n}\n\nexport function shouldShowReplayArea(state: State): boolean {\n return (\n (state.replay.active || state.replay.shared !== null) &&\n state.replay.hypothetical === null\n );\n}\n\nexport function shouldShowReplayAreaChanged(shouldShow: boolean): void {\n globals.elements.replayArea?.visible(shouldShow);\n globals.layers.UI.batchDraw();\n}\n\nexport function onActiveChanged(data: {\n hypotheticalActive: boolean;\n replayActive: boolean;\n}): void {\n if (!data.hypotheticalActive && data.replayActive) {\n turn.hideArrowsAndDisableDragging();\n }\n\n checkSetDraggableAllHands();\n\n // We toggle all of the UI elements relating to hypotheticals in case the shared replay leader\n // changes in the middle of a hypothetical.\n globals.elements.clueTargetButtonGroup?.visible(\n globals.options.numPlayers !== 2 && !data.hypotheticalActive,\n );\n globals.elements.clueTargetButtonGroup2?.visible(\n globals.options.numPlayers !== 2 && data.hypotheticalActive,\n );\n\n globals.layers.UI.batchDraw();\n}\n\nexport function shouldShowHypoControls(state: State): boolean {\n return (\n state.replay.hypothetical !== null &&\n (state.replay.shared === null || state.replay.shared.amLeader)\n );\n}\n\nexport function shouldShowHypoControlsChanged(shouldShow: boolean): void {\n globals.elements.hypoButtonsArea?.visible(shouldShow);\n\n if (shouldShow) {\n // The lower part of the clue area and the \"no clues\" indicators slide left during\n // hypotheticals.\n globals.elements.lowerClueArea?.setLeft();\n globals.elements.clueAreaDisabled?.setLeft();\n } else {\n globals.elements.lowerClueArea?.setCenter();\n globals.elements.clueAreaDisabled?.setCenter();\n }\n\n // We might need to change the draggable property of a hand.\n checkSetDraggableAllHands();\n globals.layers.UI.batchDraw();\n}\n\nexport function shouldShowToggleDrawnCards(state: State): boolean {\n return (\n state.finished &&\n state.replay.hypothetical !== null &&\n (state.replay.shared === null || state.replay.shared.amLeader)\n );\n}\n\nexport function shouldShowToggleDrawnCardsChanged(shouldShow: boolean): void {\n globals.elements.toggleDrawnCardsButton?.setEnabled(shouldShow);\n globals.layers.UI.batchDraw();\n}\n\nexport function onActiveOrAmLeaderChanged(data: {\n active: boolean;\n amLeader: boolean;\n sharedReplay: boolean;\n}): void {\n const visibleForFollowersInHypo = data.active && !data.amLeader;\n globals.elements.hypoCircle?.visible(visibleForFollowersInHypo);\n\n if (visibleForFollowersInHypo) {\n turn.hideArrowsAndDisableDragging();\n }\n\n const visibleForLeaderInSharedReplay =\n !data.active && data.sharedReplay && data.amLeader;\n globals.elements.restartButton?.visible(visibleForLeaderInSharedReplay);\n\n globals.layers.UI.batchDraw();\n}\n\n/**\n * Either we have entered a hypothetical, gone forward one action in a hypothetical, or gone back\n * one action in a hypothetical. Prepare the UI elements for the new turn.\n */\nexport function onStatesLengthChanged(): void {\n turn.resetSelectedClue();\n\n // Enable or disable the individual clue target buttons, depending on whose turn it is.\n const buttonGroup = globals.elements.clueTargetButtonGroup2!;\n const buttons = buttonGroup.children.toArray() as PlayerButton[];\n for (const button of buttons) {\n button.setPressed(false);\n const { currentPlayerIndex } = globals.state.visibleState!.turn;\n const enabled = button.targetPlayerIndex !== currentPlayerIndex;\n button.setEnabled(enabled);\n\n // In 2-player games, default the clue recipient button to the only other player available.\n if (globals.options.numPlayers === 2 && enabled) {\n button.setPressed(true);\n }\n }\n\n // Set the current player's hand to be draggable.\n checkSetDraggableAllHands();\n\n globals.layers.UI.batchDraw();\n}\n\nexport function shouldShowHypoBackButton(state: State): boolean {\n return (\n (state.replay.shared === null || state.replay.shared.amLeader) &&\n state.replay.hypothetical !== null &&\n state.replay.hypothetical.states.length > 1\n );\n}\n\nexport function shouldShowHypoBackButtonChanged(enabled: boolean): void {\n globals.elements.hypoBackButton?.setEnabled(enabled);\n globals.layers.UI.batchDraw();\n}\n\nexport function onDrawnCardsInHypotheticalChanged(\n drawnCardsInHypothetical: boolean,\n): void {\n globals.elements.toggleDrawnCardsButton?.setPressed(drawnCardsInHypothetical);\n\n // Check if the ability to give a clue changed.\n clues.checkLegal();\n\n // Change starting player's hand visibility.\n changeStartingHandVisibility();\n\n globals.layers.UI.batchDraw();\n}\n\nfunction checkSetDraggableAllHands() {\n for (const hand of globals.elements.playerHands) {\n hand.checkSetDraggableAll();\n }\n}\n", "import { globals } from \"../../UIGlobals\";\n\nexport function onInitializationChanged(initialized: boolean): void {\n if (!initialized) {\n return;\n }\n\n if (globals.loading) {\n globals.lobby.conn!.send(\"loaded\", {\n tableID: globals.lobby.tableID,\n });\n }\n globals.loading = false;\n globals.animateFast = false;\n}\n", "import type { LogEntry } from \"@hanabi-live/game\";\nimport { eRange } from \"complete-common\";\nimport { globals } from \"../../UIGlobals\";\n\nexport function onLogChanged(log: readonly LogEntry[]): void {\n updateActionLog(log);\n updateFullActionLog(log);\n}\n\nfunction updateActionLog(log: readonly LogEntry[]) {\n const { actionLog } = globals.elements;\n if (actionLog === null) {\n return;\n }\n\n const startingIndex = Math.max(0, log.length - actionLog.maxLines);\n for (const i of eRange(actionLog.maxLines)) {\n const line =\n startingIndex + i > log.length - 1\n ? \"\"\n : (log[startingIndex + i]?.text ?? \"\");\n if (line !== actionLog.smallHistory[i]) {\n actionLog.smallHistory[i] = line;\n }\n }\n actionLog.refreshText();\n\n globals.layers.UI.batchDraw();\n}\n\nfunction updateFullActionLog(log: readonly LogEntry[]) {\n const { fullActionLog } = globals.elements;\n if (fullActionLog === null) {\n return;\n }\n\n fullActionLog.reset();\n for (const line of log) {\n fullActionLog.addMessage(line.turn, line.text);\n }\n\n globals.layers.UI2.batchDraw();\n}\n", "import type { PauseState } from \"../../../types/PauseState\";\nimport { globals } from \"../../UIGlobals\";\nimport { isOurTurn } from \"../../isOurTurn\";\n\nexport function onChanged(pause: PauseState): void {\n const stageFadeOpacity = pause.active ? 0.8 : 0.3;\n globals.elements.stageFade?.opacity(stageFadeOpacity);\n globals.elements.stageFade?.visible(pause.active);\n\n globals.elements.pauseArea?.visible(pause.active);\n\n // The timer elements may not be initialized under certain conditions (e.g. an untimed game)\n globals.elements.timer1?.visible(!pause.active && globals.state.playing);\n globals.elements.timer2?.visible(!pause.active && !isOurTurn());\n globals.elements.timer1Circle?.visible(pause.queued);\n\n if (pause.active) {\n globals.elements.pauseText?.text(\n `by: ${globals.metadata.playerNames[pause.playerIndex]}`,\n );\n\n if (globals.state.playing) {\n globals.elements.pauseButton?.setEnabled(true);\n globals.elements.pauseButton?.opacity(1);\n } else {\n globals.elements.pauseButton?.setEnabled(false);\n globals.elements.pauseButton?.opacity(0.2);\n }\n }\n\n globals.layers.UI.batchDraw();\n globals.layers.UI2.batchDraw();\n globals.layers.timer.batchDraw();\n}\n", "import { ActionType } from \"../../../types/ActionType\";\nimport type { ClientAction } from \"../../../types/ClientAction\";\nimport type { State } from \"../../../types/State\";\nimport { globals } from \"../../UIGlobals\";\nimport * as ourHand from \"../../ourHand\";\n\nexport function shouldShowCancelButton(state: State): boolean {\n return !state.replay.active && state.premove !== null;\n}\n\nexport function shouldShowCancelButtonChanged(shouldShow: boolean): void {\n globals.elements.premoveCancelButton?.visible(shouldShow);\n globals.layers.UI.batchDraw();\n}\n\nexport function onChanged(\n action: ClientAction | null,\n previousAction: ClientAction | null | undefined,\n): void {\n if (previousAction === undefined) {\n // The state is initializing to a null action.\n return;\n }\n\n if (action === null && previousAction !== null) {\n // We just canceled a premove action.\n\n // If we dragged a card, we have to make the card tween back to the hand.\n if (\n previousAction.type === ActionType.Play ||\n previousAction.type === ActionType.Discard\n ) {\n ourHand.get().doLayout();\n globals.layers.card.draw();\n }\n } else if (action !== null && previousAction === null) {\n // We just specified a premove action.\n ourHand.checkSetDraggableAll();\n\n let text = \"Cancel Pre-\";\n switch (action.type) {\n case ActionType.Play: {\n text += \"Play\";\n break;\n }\n\n case ActionType.Discard: {\n text += \"Discard\";\n break;\n }\n\n case ActionType.ColorClue:\n case ActionType.RankClue: {\n text += \"Clue\";\n break;\n }\n }\n\n globals.elements.premoveCancelButton?.text(text);\n globals.layers.UI.batchDraw();\n }\n}\n", "import type { Spectator } from \"@hanabi-live/data\";\nimport Konva from \"konva\";\nimport * as tooltips from \"../../../../tooltips\";\nimport { ReplayActionType } from \"../../../types/ReplayActionType\";\nimport { globals } from \"../../UIGlobals\";\nimport * as konvaTooltips from \"../../konvaTooltips\";\nimport * as ourHand from \"../../ourHand\";\nimport * as replay from \"../../replay\";\nimport * as timer from \"../../timer\";\nimport { toggleZen } from \"../../zen\";\n\nexport function onActiveChanged(active: boolean): void {\n const { replayArea } = globals.elements;\n if (replayArea === null) {\n return;\n }\n replayArea.visible(active);\n\n if (active) {\n // Show the replay area and initialize some UI elements.\n replay.adjustShuttles(true); // We want it to immediately snap to the end\n } else if (globals.state.premove !== null) {\n // We are exiting a replay.\n globals.elements.premoveCancelButton?.show();\n }\n\n ourHand.checkSetDraggableAll();\n\n globals.layers.UI.batchDraw();\n}\n\nexport function onSegmentChanged(\n data: {\n active: boolean;\n replaySegment: number | null;\n ongoingGameSegment: number | null;\n },\n previousData:\n | {\n active: boolean;\n replaySegment: number | null;\n ongoingGameSegment: number | null;\n }\n | undefined,\n): void {\n if (data.replaySegment === null) {\n return;\n }\n\n // If we are on the first segment, disable the rewind replay buttons.\n const onFirstSegment = data.replaySegment !== 0;\n globals.elements.replayBackFullButton?.setEnabled(onFirstSegment);\n globals.elements.replayBackButton?.setEnabled(onFirstSegment);\n\n // If we are on the last segment, disable the forward replay buttons.\n const onFinalSegment = data.replaySegment !== data.ongoingGameSegment;\n globals.elements.replayForwardButton?.setEnabled(onFinalSegment);\n globals.elements.replayForwardFullButton?.setEnabled(onFinalSegment);\n\n if (\n previousData === undefined ||\n !data.active ||\n data.ongoingGameSegment === null\n ) {\n return;\n }\n\n // There are two replay shuttles, so we have to adjust them whenever the \"segment\" or the\n // \"sharedSegment\" changes.\n replay.adjustShuttles(false);\n\n globals.layers.UI.batchDraw();\n}\n\nexport function onSharedSegmentChanged(\n data: {\n active: boolean;\n sharedSegment: number | undefined;\n useSharedSegments: boolean | undefined;\n amLeader: boolean | undefined;\n },\n previousData:\n | {\n active: boolean;\n sharedSegment: number | undefined;\n useSharedSegments: boolean | undefined;\n amLeader: boolean | undefined;\n }\n | undefined,\n): void {\n if (\n !data.active ||\n data.sharedSegment === undefined ||\n data.useSharedSegments === undefined\n ) {\n return;\n }\n\n if (data.useSharedSegments) {\n if (data.amLeader === true && previousData !== undefined) {\n // Tell the rest of the spectators to go to the turn that we are now on.\n globals.lobby.conn!.send(\"replayAction\", {\n tableID: globals.lobby.tableID,\n type: ReplayActionType.Segment,\n segment: data.sharedSegment,\n });\n } else {\n // Go to the turn where the shared replay leader is at. (We set force to true in case a\n // hypothetical just started and we are being dragged to the starting turn of the\n // hypothetical.)\n replay.goToSegment(data.sharedSegment, false, true);\n\n if (\n previousData !== undefined &&\n previousData.sharedSegment !== undefined &&\n data.useSharedSegments === previousData.useSharedSegments\n ) {\n playSharedReplayTween(data.sharedSegment, previousData.sharedSegment);\n }\n }\n }\n\n globals.elements.pauseSharedTurnsButton?.visible(data.useSharedSegments);\n globals.elements.useSharedTurnsButton?.visible(!data.useSharedSegments);\n\n // There are two replay shuttles, so we have to adjust them whenever the \"segment\" or the\n // \"sharedSegment\" changes The first time we go into a shared replay, always animate fast. (The\n // condition is needed in case we are in an in-game replay when the game ends.)\n replay.adjustShuttles(\n previousData === undefined || previousData.sharedSegment === undefined,\n );\n\n globals.layers.UI.batchDraw();\n}\n\nexport function onShouldShowReplayButtonChanged(shouldShow: boolean): void {\n globals.elements.replayButton?.visible(shouldShow);\n}\n\nexport function enterHypoButtonLocationChanged(data: {\n finished: boolean;\n shared: boolean;\n}): void {\n if (!data.finished) {\n globals.elements.enterHypoButton?.setLeft();\n } else if (data.shared) {\n globals.elements.enterHypoButton?.setRight();\n } else {\n globals.elements.enterHypoButton?.setCenter();\n }\n}\n\n// In shared replays, it can be confusing as to what the shared replay leader is doing, so play an\n// appropriate animations to indicate what is going on (and cancel the other tween if it is going).\n// Do not play it though if we are resuming shared segments\n// (e.g. going back to where the shared replay leader is).\nfunction playSharedReplayTween(\n sharedSegment: number,\n previousSharedSegment: number,\n) {\n const duration = 1;\n const opacity = 0;\n if (sharedSegment < previousSharedSegment) {\n globals.elements.sharedReplayBackward?.show();\n globals.elements.sharedReplayBackward?.opacity(1);\n if (globals.elements.sharedReplayBackwardTween !== null) {\n globals.elements.sharedReplayBackwardTween.destroy();\n globals.elements.sharedReplayBackwardTween = null;\n }\n globals.elements.sharedReplayBackwardTween = new Konva.Tween({\n node: globals.elements.sharedReplayBackward,\n duration,\n opacity,\n }).play();\n } else if (sharedSegment > previousSharedSegment) {\n globals.elements.sharedReplayForward?.show();\n globals.elements.sharedReplayForward?.opacity(1);\n if (globals.elements.sharedReplayForwardTween !== null) {\n globals.elements.sharedReplayForwardTween.destroy();\n globals.elements.sharedReplayForwardTween = null;\n }\n globals.elements.sharedReplayForwardTween = new Konva.Tween({\n node: globals.elements.sharedReplayForward,\n duration,\n opacity,\n }).play();\n }\n}\n\nexport function onDatabaseIDChanged(databaseID: number | null): void {\n if (databaseID === null) {\n return;\n }\n\n // JSON replays are hard-coded to have a database ID of 0.\n const text = databaseID === 0 ? \"JSON replay\" : `ID: ${databaseID}`;\n globals.elements.gameIDLabel?.text(text);\n globals.elements.gameIDLabel?.show();\n\n // Also move the card count label on the deck downwards.\n if (globals.state.visibleState!.cardsRemainingInTheDeck === 0) {\n globals.elements.deck?.nudgeCountDownwards();\n }\n\n globals.layers.arrow.batchDraw(); // gameIDLabel is on the arrow layer\n globals.layers.card.batchDraw(); // deck is on the card layer\n}\n\nexport function onFinishedChanged(\n finished: boolean,\n previousFinished: boolean | undefined,\n): void {\n if (previousFinished === undefined || !finished) {\n return;\n }\n\n // If any tooltips are open, close them.\n konvaTooltips.resetActiveHover();\n\n // If the timers are showing, hide them.\n globals.elements.timer1?.hide();\n globals.elements.timer2?.hide();\n timer.stop();\n\n // Hide the \"Exit Replay\" button in the center of the screen, since it is no longer necessary.\n globals.elements.replayExitButton?.hide();\n\n // Hide/show some buttons in the bottom-left-hand corner.\n globals.elements.replayButton?.hide();\n\n // Hide the terminate button and show the 3rd strike UI.\n if (globals.elements.terminateButton !== null) {\n globals.elements.terminateButton.hide();\n globals.elements.strikeSquares[2]!.show();\n globals.elements.strikeXs[2]!.show();\n }\n\n // Re-draw the deck tooltip. (It will show more information when you are in a replay.)\n globals.elements.deck?.initDeckTooltip();\n\n // Turn off the \"Throw It in a Hole\" UI.\n if (globals.variant.throwItInAHole) {\n globals.elements.scoreTextLabel?.show();\n globals.elements.scoreNumberLabel?.show();\n globals.elements.maxScoreNumberLabel?.show();\n globals.elements.playsTextLabel?.hide();\n globals.elements.playsNumberLabel?.hide();\n for (const label of globals.elements.questionMarkLabels) {\n label.hide();\n }\n }\n\n // Disable zen mode\n toggleZen();\n\n globals.layers.timer.batchDraw();\n globals.layers.UI.batchDraw();\n}\n\nexport function onSharedReplayEnter(sharedReplay: boolean): void {\n globals.elements.sharedReplayLeaderLabel?.visible(sharedReplay);\n}\n\nexport function onSharedLeaderChanged(\n _leader: string,\n previousLeader: string | undefined,\n): void {\n // Make the crown play an animation to indicate there is a new replay leader. (But do not play the\n // animation if the game just ended or we are first loading the page.)\n if (previousLeader !== undefined) {\n globals.elements.sharedReplayLeaderLabelPulse!.play();\n }\n}\n\nexport function onSharedAmLeaderChanged(amLeader: boolean): void {\n globals.elements.sharedReplayLeaderCircle?.visible(amLeader);\n globals.elements.restartButton?.visible(amLeader);\n globals.elements.enterHypoButton?.visible(amLeader);\n\n // Arrange the buttons in the center of the screen in a certain way depending on whether we are\n // the shared replay leader.\n if (amLeader) {\n globals.elements.pauseSharedTurnsButton?.setLeft();\n globals.elements.useSharedTurnsButton?.setLeft();\n } else {\n globals.elements.pauseSharedTurnsButton?.setCenter();\n globals.elements.useSharedTurnsButton?.setCenter();\n }\n\n globals.layers.UI.batchDraw();\n}\n\nexport function onLeaderOrSpectatorsChanged(data: {\n leader: string | undefined;\n spectators: Spectator[];\n}): void {\n if (data.leader === undefined) {\n return;\n }\n\n // Find out if the leader is away.\n let away = true;\n for (const spectator of data.spectators) {\n if (spectator.name === data.leader) {\n away = false;\n break;\n }\n }\n\n // Update the tooltip\n let content = `Leader: ${data.leader}`;\n if (away) {\n content += \" (away)\";\n }\n tooltips.setInstanceContent(\"#tooltip-leader\", content);\n}\n", "import type {\n ActionPlay,\n CardState,\n GameAction,\n GameMetadata,\n GameState,\n} from \"@hanabi-live/game\";\nimport {\n ClueType,\n EndCondition,\n canCardPossiblyBeFromCluesOnly,\n getCharacterNameForPlayer,\n getVariant,\n isCardClued,\n isHandLocked,\n} from \"@hanabi-live/game\";\nimport { includes } from \"complete-common\";\nimport { SoundType } from \"../../types/SoundType\";\n\nexport const SOUND_TYPE_ACTIONS = [\n \"clue\",\n \"discard\",\n \"gameOver\",\n \"play\",\n] as const;\n\nexport function getSoundType(\n previousGameState: GameState | undefined,\n gameState: GameState,\n originalAction: GameAction | undefined,\n metadata: GameMetadata,\n): SoundType {\n const ourTurn = gameState.turn.currentPlayerIndex === metadata.ourPlayerIndex;\n const standardSoundType = getStandardSoundType(ourTurn);\n\n if (previousGameState === undefined || originalAction === undefined) {\n return standardSoundType;\n }\n\n const variant = getVariant(metadata.options.variantName);\n\n // In some variants, failed plays are treated as normal plays.\n const action: GameAction =\n originalAction.type === \"discard\" &&\n originalAction.failed &&\n variant.throwItInAHole\n ? {\n ...originalAction,\n type: \"play\",\n }\n : originalAction;\n\n if (!includes(SOUND_TYPE_ACTIONS, action.type)) {\n return standardSoundType;\n }\n\n switch (action.type) {\n case \"clue\": {\n if (metadata.options.detrimentalCharacters) {\n const giverCharacterName = getCharacterNameForPlayer(\n action.giver,\n metadata.characterAssignments,\n );\n\n if (giverCharacterName === \"Quacker\") {\n return SoundType.Quack;\n }\n }\n\n if (variant.cowAndPig) {\n switch (action.clue.type) {\n case ClueType.Color: {\n return SoundType.Moo;\n }\n\n case ClueType.Rank: {\n return SoundType.Oink;\n }\n }\n }\n\n if (variant.duck) {\n return SoundType.Quack;\n }\n\n return standardSoundType;\n }\n\n case \"discard\": {\n if (action.failed) {\n return gameState.stats.numSubsequentMisplays === 2\n ? SoundType.Fail2\n : SoundType.Fail1;\n }\n\n if (\n gameState.stats.maxScore < previousGameState.stats.maxScore &&\n !variant.throwItInAHole\n ) {\n return SoundType.Sad;\n }\n\n const previousCardState = previousGameState.deck[action.order];\n const touchedBeforeDiscarding =\n previousCardState !== undefined && isCardClued(previousCardState);\n if (touchedBeforeDiscarding) {\n return SoundType.DiscardClued;\n }\n\n const nextPlayerHand = gameState.hands[action.playerIndex];\n if (\n nextPlayerHand !== undefined &&\n !isHandLocked(nextPlayerHand, gameState.deck) &&\n previousGameState.stats.doubleDiscardCard !== null &&\n !metadata.hardVariant\n ) {\n const previouslyDiscardedCard =\n previousGameState.deck[previousGameState.stats.doubleDiscardCard];\n if (\n previousCardState !== undefined &&\n previouslyDiscardedCard !== undefined &&\n canCardPossiblyBeFromCluesOnly(\n previousCardState,\n previouslyDiscardedCard.suitIndex,\n previouslyDiscardedCard.rank,\n )\n ) {\n // A player has discarded *in* a double discard situation.\n return SoundType.DoubleDiscard;\n }\n }\n\n if (gameState.stats.doubleDiscardCard !== null && !metadata.hardVariant) {\n // A player has discarded to *cause* a double discard situation.\n return SoundType.DoubleDiscardCause;\n }\n\n return standardSoundType;\n }\n\n case \"gameOver\": {\n if (action.endCondition > EndCondition.Normal) {\n return SoundType.FinishedFail;\n }\n\n if (gameState.score === variant.maxScore) {\n return SoundType.FinishedPerfect;\n }\n\n return SoundType.FinishedSuccess;\n }\n\n case \"play\": {\n if (\n gameState.stats.maxScore < previousGameState.stats.maxScore &&\n !variant.throwItInAHole\n ) {\n return SoundType.Sad;\n }\n\n const cardState = gameState.deck[action.order];\n const touched = cardState !== undefined && isCardClued(cardState);\n if (!touched) {\n switch (gameState.stats.numSubsequentBlindPlays) {\n case 1: {\n return SoundType.Blind1;\n }\n\n case 2: {\n return SoundType.Blind2;\n }\n\n case 3: {\n return SoundType.Blind3;\n }\n\n case 4: {\n return SoundType.Blind4;\n }\n\n case 5: {\n return SoundType.Blind5;\n }\n\n case 6: {\n return SoundType.Blind6;\n }\n\n default: {\n if (gameState.stats.numSubsequentBlindPlays > 6) {\n return SoundType.Blind6;\n }\n\n throw new Error(\n `Failed to get the sound effect for the blind play count of: ${gameState.stats.numSubsequentBlindPlays}`,\n );\n }\n }\n }\n\n if (isOrderChopMove(previousGameState, gameState, action, metadata)) {\n return SoundType.OrderChopMove;\n }\n\n return getStandardSoundType(ourTurn);\n }\n }\n}\n\nexport function getStandardSoundType(ourTurn: boolean): SoundType {\n return ourTurn ? SoundType.Us : SoundType.Other;\n}\n\n/**\n * https://hanabi.github.io/level_2/#playing-multiple-1s---play-order-inversion-in-the-starting-hand-part-1\n * https://hanabi.github.io/level_3/#playing-multiple-1s---the-fresh-1s-rule-part-2\n * https://hanabi.github.io/level_3/#playing-multiple-1s---the-chop-focus-exception-part-3\n * https://hanabi.github.io/level_5/#the-order-chop-move-ocm\n */\nfunction isOrderChopMove(\n previousGameState: GameState,\n gameState: GameState,\n action: ActionPlay,\n metadata: GameMetadata,\n): boolean {\n const variant = getVariant(metadata.options.variantName);\n\n // Do not bother trying to see if this is an Order Chop Move in certain variants, as the logic\n // could be extremely complicated.\n if (variant.upOrDown || variant.sudoku) {\n return false;\n }\n\n const playedCard = previousGameState.deck[action.order];\n if (playedCard === undefined) {\n return false;\n }\n\n if (!isCandidateOneForOCM(playedCard)) {\n return false;\n }\n\n // Get the number of 1's left to play on the stacks.\n let numOnesLeftToPlay = 0;\n for (const [suitIndex, suit] of variant.suits.entries()) {\n if (suit.reversed) {\n continue;\n }\n\n const playStack = gameState.playStacks[suitIndex];\n if (playStack !== undefined && playStack.length === 0) {\n numOnesLeftToPlay++;\n }\n }\n\n // We can't Order Chop Move if all of the 1s are played or there is only one 1 left to be played.\n if (numOnesLeftToPlay === 0 || numOnesLeftToPlay === 1) {\n return false;\n }\n\n // Find out if there are any other candidate 1s in the hand.\n const playerHand = previousGameState.hands[action.playerIndex];\n if (playerHand === undefined) {\n return false;\n }\n\n const candidateCards: CardState[] = [];\n for (const order of playerHand) {\n if (order === action.order) {\n // Skip the card that we already played.\n continue;\n }\n\n const card = previousGameState.deck[order];\n if (card !== undefined && isCandidateOneForOCM(card)) {\n candidateCards.push(card);\n }\n }\n\n // We can't Order Chop Move if there are no other candidate 1s in the hand.\n if (candidateCards.length === 0) {\n return false;\n }\n\n // Find the card that should have precedence to be played.\n candidateCards.push(playedCard);\n\n // Playing Multiple 1's - The Fresh 1's Rule (Part 2). Find out if there are any \"fresh\" 1s (e.g.\n // 1s that were not dealt to the starting hand).\n const freshCards = candidateCards.filter((card) => !card.dealtToStartingHand);\n if (freshCards.length > 0) {\n // Find the newest 1.\n let newestOneOrder = -1;\n for (const card of freshCards) {\n if (card.order > newestOneOrder) {\n newestOneOrder = card.order;\n }\n }\n\n // Find out if the clue that touched the newest 1 also touched a 1 that was on chop at the same\n // time.\n const newestOne = previousGameState.deck[newestOneOrder];\n if (newestOne === undefined) {\n return false;\n }\n\n const startingHandCards = candidateCards.filter(\n (card) => card.dealtToStartingHand,\n );\n for (const startingHandCard of startingHandCards) {\n if (\n startingHandCard.segmentFirstClued === newestOne.segmentFirstClued &&\n startingHandCard.firstCluedWhileOnChop === true\n ) {\n // Playing Multiple 1's - The Chop Focus Exception (Part 3). They were clued at the same\n // time and the card in the starting was on chop, so the Chop Focus Exception applies.\n return startingHandCard.order !== action.order;\n }\n }\n\n // The Fresh 1's Rule applies.\n return newestOneOrder !== action.order;\n }\n\n // All of the 1s were dealt to the starting hand, so the oldest 1 has precedence.\n const candidateOrders = candidateCards.map((card) => card.order);\n const minCandidateOrder = Math.min(...candidateOrders);\n return minCandidateOrder !== action.order;\n}\n\nfunction isCandidateOneForOCM(card: CardState): boolean {\n return (\n // Order Chop Moves are only performed when a player plays a card that they think is a 1\n // (e.g. a card having a positive rank 1 clue on it)\n card.positiveRankClues.includes(1) &&\n // We can't Order Chop Move with cards that are \"filled-in\" to be pink cards, for example.\n card.positiveRankClues.length === 1 &&\n // It is technically possible to perform an Order Chop Move with two 1s that have an equal\n // number of positive color clues on them, but ignore this for simplicity.\n card.positiveColorClues.length === 0\n );\n}\n", "import type { GameAction, GameState } from \"@hanabi-live/game\";\nimport { includes } from \"complete-common\";\nimport { SoundType } from \"../../../types/SoundType\";\nimport { globals } from \"../../UIGlobals\";\nimport {\n SOUND_TYPE_ACTIONS,\n getSoundType,\n getStandardSoundType,\n} from \"../getSoundType\";\n\nexport function onNewSoundEffect(\n data: {\n gameState: GameState;\n actions: readonly GameAction[];\n },\n previousData:\n | {\n gameState: GameState;\n actions: readonly GameAction[];\n }\n | undefined,\n): void {\n if (\n // Do not play sounds on the initial load (unless it is the first turn).\n (previousData === undefined && data.gameState.turn.turnNum !== 0) ||\n // Only make a sound when the game starts or when it is a new player's turn.\n data.gameState.turn.currentPlayerIndex ===\n previousData?.gameState.turn.currentPlayerIndex ||\n // Do not play sounds in replays or hypotheticals.\n globals.state.finished ||\n // Do not play sounds if the user does not have sound effects enabled.\n !globals.lobby.settings.soundMove\n ) {\n return;\n }\n\n const lastAction = getLastAction(data.actions);\n\n // `previousData.gameState` might not actually correspond to a different game state, because we\n // are also subscribed to the actions. In other words, this view will fire if an action is added\n // to the array (like a \"draw\" action). Thus, we have to manually retrieve the penultimate game\n // state.\n const previousGameState = globals.state.replay.states.at(-2);\n const soundType = getSoundType(\n previousGameState,\n data.gameState,\n lastAction,\n globals.metadata,\n );\n\n const ourTurn =\n globals.metadata.ourPlayerIndex === data.gameState.turn.currentPlayerIndex;\n const adjustedSoundType = getAdjustedSoundType(soundType, ourTurn);\n // The turn sound and the game finished sound will be played back-to-back, so we want to mute the\n // former.\n const muteExistingSoundEffects = adjustedSoundType.startsWith(\"finished-\");\n globals.game!.sounds.play(adjustedSoundType, muteExistingSoundEffects);\n}\n\n/**\n * The last action will likely be a \"draw\" action, but we need the last \"play\" or \"discard\" action\n * so that we can compute the correct sound to play. Thus, work our way backwards, looking for\n * matching action types.\n */\nfunction getLastAction(actions: readonly GameAction[]): GameAction | undefined {\n const reversedActions = [...actions].reverse();\n return reversedActions.find((action) =>\n includes(SOUND_TYPE_ACTIONS, action.type),\n );\n}\n\nfunction getAdjustedSoundType(\n soundType: SoundType,\n ourTurn: boolean,\n): SoundType {\n const standardSoundType = getStandardSoundType(ourTurn);\n\n return (\n // Only play certain sound effects for people in the H-Group.\n (soundType === SoundType.OrderChopMove ||\n soundType === SoundType.DiscardClued ||\n soundType === SoundType.DoubleDiscard ||\n soundType === SoundType.DoubleDiscardCause) &&\n !globals.lobby.settings.hyphenatedConventions &&\n // Disable special sounds in \"Throw It in a Hole\" variants because they leak information.\n !globals.variant.throwItInAHole\n ? standardSoundType\n : soundType\n );\n}\n", "import type { NumPlayers } from \"@hanabi-live/game\";\nimport { PaceRisk, getEfficiency } from \"@hanabi-live/game\";\nimport { assertNotNull } from \"complete-common\";\nimport { globals } from \"../../UIGlobals\";\nimport { LABEL_COLOR } from \"../../constants\";\nimport { initKonvaTooltips } from \"../../konvaTooltips\";\n\n/** Updates the labels on the right-hand side of the screen. */\nexport function onEfficiencyChanged(data: {\n cardsGotten: number;\n cardsGottenByNotes: number | null;\n efficiencyModifier: number;\n potentialCluesLost: number;\n maxScore: number;\n cluesStillUsableNotRounded: number | null;\n finalRoundEffectivelyStarted: boolean;\n}): void {\n const cluesStillUsable =\n data.cluesStillUsableNotRounded === null\n ? null\n : Math.floor(data.cluesStillUsableNotRounded);\n\n const effLabel = globals.elements.efficiencyNumberLabel!;\n const effPipeLabel = globals.elements.efficiencyPipeLabel!;\n const effMinLabel = globals.elements.efficiencyMinNeededLabel!;\n\n // - If we are not currently using the shared segments, the shared efficiency modifier will not be\n // applicable.\n // - Do not use the efficiency modifier during in-game replays.\n const shouldModifyEff = globals.state.finished\n ? globals.state.replay.shared !== null &&\n globals.state.replay.shared.useSharedSegments\n : globals.state.visibleState === globals.state.ongoingGame;\n\n let { cardsGotten, cardsGottenByNotes } = data;\n const { efficiencyModifier } = data;\n let cardsGottenModified = false;\n if (shouldModifyEff) {\n cardsGotten += efficiencyModifier;\n if (efficiencyModifier !== 0) {\n // The user has specified a manual efficiency modification\n // (e.g. to account for a card that is Finessed).\n cardsGottenModified = true;\n }\n if (cardsGottenByNotes !== null) {\n cardsGotten += cardsGottenByNotes;\n }\n } else {\n cardsGottenByNotes = null;\n }\n\n const cardsNotGotten = Math.max(data.maxScore - cardsGotten, 0);\n\n const efficiency = getEfficiency(cardsGotten, data.potentialCluesLost);\n const shouldShowEfficiency =\n Number.isFinite(efficiency) && !data.finalRoundEffectivelyStarted;\n const futureEfficiency =\n cluesStillUsable === null\n ? Number.NaN\n : getEfficiency(cardsNotGotten, cluesStillUsable);\n const shouldShowFutureEfficiency = Number.isFinite(futureEfficiency);\n\n if (shouldShowFutureEfficiency) {\n // Show the efficiency and round it to 2 decimal places.\n effLabel.text(futureEfficiency.toFixed(2));\n } else {\n // Handle the case in which there are 0 possible clues remaining or the game has ended.\n effLabel.text(\"-\");\n }\n\n const text = effLabel.text();\n const size = effLabel.measureSize(text);\n const width = size.width as number;\n effLabel.width(width);\n\n // Reposition the two labels to the right of the efficiency label so that they are aligned\n // properly. The type of Konva.Text.width is \"any\" for some reason.\n const effLabelSize = effLabel.measureSize(effLabel.text()).width as number;\n if (typeof effLabelSize !== \"number\") {\n throw new TypeError(\"The width of effLabel was not a number.\");\n }\n const pipeX = effLabel.x() + effLabelSize;\n effPipeLabel.x(pipeX);\n\n // The type of Konva.Text.width is \"any\" for some reason.\n const effPipeLabelSize = effPipeLabel.measureSize(effPipeLabel.text())\n .width as number;\n if (typeof effPipeLabelSize !== \"number\") {\n throw new TypeError(\"The width of effPipeLabel was not a number.\");\n }\n const minEffX = pipeX + effPipeLabelSize;\n effMinLabel.x(minEffX);\n\n // Change the color of the efficiency label if there is a custom modification.\n const effLabelColor = cardsGottenModified ? \"#00ffff\" : LABEL_COLOR;\n effLabel.fill(effLabelColor);\n\n // Update the tooltip\n const tooltipContent = `\n ${formatLine(\"Current cards gotten\", data.cardsGotten, false)}\n ${formatLine(\n \"Current cards noted as gotten\",\n cardsGottenByNotes !== null && shouldModifyEff ? cardsGottenByNotes : \"-\",\n )}\n ${formatLine(\n \"Current cards gotten modifier\",\n shouldModifyEff ? efficiencyModifier : \"-\",\n )}\n ${formatLine(\"Potential clues lost\", data.potentialCluesLost)}\n ${formatLine(\n \"Current efficiency\",\n shouldShowEfficiency ? efficiency.toFixed(2) : \"-\",\n )}\n
    \n ${formatLine(\"Cards remaining to get\", cardsNotGotten)}\n ${formatLine(\n \"Remaining possible clues\",\n data.cluesStillUsableNotRounded ?? \"-\",\n )}\n ${formatLine(\n \"Future required efficiency\",\n shouldShowFutureEfficiency ? futureEfficiency.toFixed(2) : \"-\",\n )}\n ${formatLine(\n \"Number finesses required\",\n cluesStillUsable !== null && shouldShowFutureEfficiency\n ? Math.max(cardsNotGotten - cluesStillUsable, 0)\n : \"-\",\n )}\n
    \n Click / Double tap this number to add a modifier.\n `;\n effLabel.tooltipContent = tooltipContent;\n initKonvaTooltips(effLabel, true, false);\n\n globals.layers.UI.batchDraw();\n}\n\nfunction formatLine(left: string, right: number | string, usePadding = true) {\n const padding = usePadding ? \"        \" : \"\";\n return `${padding}${left}: ${right}
    `;\n}\n\nexport function onPaceOrPaceRiskChanged(data: {\n pace: number | null;\n paceRisk: PaceRisk;\n finalRoundEffectivelyStarted: boolean;\n}): void {\n const label = globals.elements.paceNumberLabel;\n assertNotNull(label, \"paceNumberLabel is not initialized.\");\n\n // Update the pace. (Part of the efficiency statistics on the right-hand side of the screen.) If\n // there are no cards left in the deck, pace is meaningless.\n if (\n data.pace === null ||\n data.finalRoundEffectivelyStarted ||\n globals.options.allOrNothing\n ) {\n label.text(\"-\");\n label.fill(LABEL_COLOR);\n } else {\n let paceText = data.pace.toString();\n if (data.pace > 0) {\n paceText = `+${data.pace}`;\n }\n label.text(paceText);\n\n // Color the pace label depending on how \"risky\" it would be to discard (approximately).\n const color = getPaceLabelColor(data.paceRisk);\n label.fill(color);\n }\n\n globals.layers.UI.batchDraw();\n}\n\nfunction getPaceLabelColor(paceRisk: PaceRisk): string {\n switch (paceRisk) {\n case PaceRisk.Low: {\n return LABEL_COLOR;\n }\n\n case PaceRisk.Medium: {\n return \"#efef1d\"; // Yellow\n }\n\n case PaceRisk.High: {\n return \"#ef8c1d\"; // Orange\n }\n\n case PaceRisk.Zero: {\n return \"#df1c2d\"; // Red\n }\n }\n}\n\nexport function onMaxTurnsChanged(data: {\n pace: number | null;\n cluesStillUsable: number | null;\n score: number;\n maxScore: number;\n turnNum: number;\n endTurnNum: number | null;\n numPlayers: NumPlayers;\n}): void {\n const {\n pace,\n cluesStillUsable,\n score,\n maxScore,\n turnNum,\n endTurnNum,\n numPlayers,\n } = data;\n let maxTurnsLeft: number;\n if (pace === null) {\n maxTurnsLeft = endTurnNum! - turnNum;\n } else {\n let cardsToBePlayed = maxScore - score;\n let discards = pace;\n if (pace < 0) {\n cardsToBePlayed += pace;\n discards = 0;\n }\n maxTurnsLeft = discards + cluesStillUsable! + cardsToBePlayed;\n }\n const maxTurnsLeftForCurrentPlayer = Math.ceil(maxTurnsLeft / numPlayers);\n const maxTotalTurns = turnNum + maxTurnsLeft;\n\n const label = globals.elements.turnNumberLabel;\n assertNotNull(label, \"turnNumberLabel is not initialized.\");\n\n label.tooltipContent = `Rounds left (max): ${maxTurnsLeftForCurrentPlayer}
    \n       Turns left (max): ${maxTurnsLeft}
    \n       Total turns: ${turnNum}/${maxTotalTurns}`;\n initKonvaTooltips(label, true, false);\n}\n", "import { ClueType, getAdjustedClueTokens } from \"@hanabi-live/game\";\nimport type { State } from \"../../../types/State\";\nimport { globals } from \"../../UIGlobals\";\nimport { isOurTurn } from \"../../isOurTurn\";\nimport * as ourHand from \"../../ourHand\";\nimport * as turn from \"../../turn\";\n\nexport function shouldShowYourTurnIndicator(state: State): boolean {\n return (\n state.playing &&\n state.ongoingGame.turn.currentPlayerIndex ===\n globals.metadata.ourPlayerIndex\n );\n}\n\nexport function shouldShowYourTurnIndicatorChanged(shouldShow: boolean): void {\n globals.elements.yourTurn?.visible(shouldShow);\n globals.layers.UI.batchDraw();\n}\n\nexport function shouldShowTurnUI(state: State): boolean {\n return (\n (state.replay.hypothetical !== null &&\n (state.replay.shared === null || state.replay.shared.amLeader)) ||\n (state.playing &&\n !state.replay.active &&\n state.ongoingGame.turn.currentPlayerIndex ===\n state.metadata.ourPlayerIndex)\n );\n}\n\nexport function shouldShowTurnUIChanged(shouldShow: boolean): void {\n globals.elements.clueArea?.visible(shouldShow);\n\n globals.elements.waitingOnServer?.hide();\n globals.elements.waitingOnServerAnimation?.stop();\n\n globals.layers.UI.batchDraw();\n}\n\n/** Fade the clue UI if there is not a clue available. */\nexport function shouldIndicateNoClues(state: State): boolean {\n return (\n shouldShowTurnUI(state) &&\n state.visibleState!.clueTokens < getAdjustedClueTokens(1, globals.variant)\n );\n}\n\nexport function shouldIndicateNoCluesChanged(shouldIndicate: boolean): void {\n globals.elements.clueAreaDisabled!.visible(shouldIndicate);\n const opacity = shouldIndicate ? 0.2 : 1;\n globals.elements.clueArea!.opacity(opacity);\n globals.layers.UI.batchDraw();\n}\n\nexport function shouldEnableBottomDeckBlindPlay(state: State): boolean {\n return (\n state.metadata.options.deckPlays &&\n shouldShowTurnUI(state) &&\n state.visibleState!.cardsRemainingInTheDeck === 1\n );\n}\n\nexport function shouldEnableBottomDeckBlindPlayChanged(\n shouldEnable: boolean,\n): void {\n globals.elements.deck!.cardBack.draggable(shouldEnable);\n globals.elements.deckPlayAvailableLabel!.visible(shouldEnable);\n\n if (shouldEnable) {\n // Ensure the deck is above other cards and UI elements.\n globals.elements.deck!.moveToTop();\n }\n}\n\nexport function onLastClueTypeChanged(lastClueType: ClueType | null): void {\n function setColorClueButtonsVisible(visible: boolean) {\n for (const button of globals.elements.colorClueButtons) {\n button.visible(visible);\n }\n }\n\n function setRankClueButtonsVisible(visible: boolean) {\n for (const button of globals.elements.rankClueButtons) {\n button.visible(visible);\n }\n }\n\n // Hide some specific clue buttons in certain variants with clue restrictions.\n if (globals.variant.alternatingClues) {\n switch (lastClueType) {\n case null: {\n setColorClueButtonsVisible(true);\n setRankClueButtonsVisible(true);\n break;\n }\n\n case ClueType.Color: {\n setColorClueButtonsVisible(false);\n setRankClueButtonsVisible(true);\n break;\n }\n\n case ClueType.Rank: {\n setColorClueButtonsVisible(true);\n setRankClueButtonsVisible(false);\n break;\n }\n }\n }\n globals.layers.UI.batchDraw();\n}\n\nexport function onOngoingTurnChanged(): void {\n ourHand.checkSetDraggableAll();\n\n if (isOurTurn()) {\n turn.begin();\n }\n}\n", "import type { GameState } from \"@hanabi-live/game\";\nimport type { Store, Unsubscribe } from \"redux\";\nimport type { State } from \"../../types/State\";\nimport type { Action } from \"../../types/actions\";\nimport { globals } from \"../UIGlobals\";\nimport type { Listener, Selector, Subscription } from \"./observeStore\";\nimport { observeStore } from \"./observeStore\";\nimport * as animateFastView from \"./views/animateFastView\";\nimport * as cardLayoutView from \"./views/cardLayoutView\";\nimport * as cardsView from \"./views/cardsView\";\nimport * as cluesView from \"./views/cluesView\";\nimport * as currentPlayerAreaView from \"./views/currentPlayerAreaView\";\nimport * as deckView from \"./views/deckView\";\nimport * as gameInfoView from \"./views/gameInfoView\";\nimport * as hypotheticalView from \"./views/hypotheticalView\";\nimport * as initView from \"./views/initView\";\nimport * as logView from \"./views/logView\";\nimport * as pauseView from \"./views/pauseView\";\nimport * as premoveView from \"./views/premoveView\";\nimport * as replayView from \"./views/replayView\";\nimport * as soundView from \"./views/soundView\";\nimport * as spectatorsView from \"./views/spectatorsView\";\nimport * as statsView from \"./views/statsView\";\nimport * as turnView from \"./views/turnView\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Subscriptions = Array>;\n\nexport class StateObserver {\n private unsubscribe: Unsubscribe | null = null;\n\n constructor(store: Store) {\n this.registerObservers(store);\n }\n\n /** Observe the store, calling different functions when a particular path changes. */\n registerObservers(store: Store): void {\n // Clean up any existing subscribers.\n this.unregisterObservers();\n\n const subscriptions: Subscriptions = [\n ...earlyObservers,\n ...visibleStateObservers,\n ...ongoingGameObservers,\n ...replayObservers,\n ...otherObservers,\n ...lateObservers,\n ];\n\n this.unsubscribe = observeStore(store, subscriptions);\n }\n\n unregisterObservers(): void {\n if (this.unsubscribe !== null) {\n this.unsubscribe();\n }\n }\n}\n\n// ----------------------\n// Subscription functions\n// ----------------------\n\n/** A shorthand function used to subscribe an observer to the state store. */\nfunction sub(s: Selector, l: Listener) {\n return {\n select: s,\n onChange: l,\n };\n}\n\n/** A shorthand function used to subscribe an observer to the visible state. */\nfunction subVS(s: Selector, l: Listener) {\n // We do not want anything to fire if the visible state is null\n // (e.g. when the UI is still initializing)\n // eslint-disable-next-line func-style\n const selector = (state: State) =>\n state.visibleState === null ? undefined : s(state.visibleState);\n return sub(selector, l);\n}\n\n/**\n * A shorthand function used to subscribe an observer to the state, but only when the visible state\n * has already been initialized.\n */\nfunction subAfterInit(s: Selector, l: Listener) {\n // eslint-disable-next-line func-style\n const selector = (state: State) =>\n state.visibleState === null ? undefined : s(state);\n return {\n select: selector,\n onChange: l,\n };\n}\n\n// ------------------------------\n// List of observer subscriptions\n// ------------------------------\n\n/** These observers need to run before other observers. */\nconst earlyObservers: Subscriptions = [\n // This has to come first because it sets up animateFast correctly.\n subAfterInit((s) => s, animateFastView.onObserversStarted),\n\n // This has to come first because it tells the UI that we are changing to a shared replay.\n subAfterInit((s) => s.finished, replayView.onFinishedChanged),\n];\n\nconst visibleStateObservers: Subscriptions = [\n // Game info\n subVS(\n (s) => ({\n turn: s.turn.turnNum,\n endTurn: s.turn.endTurnNum,\n }),\n gameInfoView.onTurnChanged,\n ),\n subVS(\n (s) => s.turn.currentPlayerIndex,\n gameInfoView.onCurrentPlayerIndexChanged,\n ),\n subVS(\n (s) => ({\n score: s.score,\n maxScore: s.stats.maxScore,\n }),\n gameInfoView.onScoreOrMaxScoreChanged,\n ),\n subVS(\n (s) => s.stats.numAttemptedCardsPlayed,\n gameInfoView.onNumAttemptedCardsPlayedChanged,\n ),\n subVS((s) => s.clueTokens, gameInfoView.onClueTokensChanged),\n subVS(\n (s) => ({\n clueTokens: s.clueTokens,\n doubleDiscard: s.stats.doubleDiscardCard,\n }),\n gameInfoView.onClueTokensOrDoubleDiscardChanged,\n ),\n\n // Stats\n subVS(\n (s) => ({\n pace: s.stats.pace,\n paceRisk: s.stats.paceRisk,\n finalRoundEffectivelyStarted: s.stats.finalRoundEffectivelyStarted,\n }),\n statsView.onPaceOrPaceRiskChanged,\n ),\n subAfterInit(\n (s) => ({\n cardsGotten: s.visibleState!.stats.cardsGotten,\n cardsGottenByNotes: s.visibleState!.stats.cardsGottenByNotes,\n efficiencyModifier: s.notes.efficiencyModifier,\n potentialCluesLost: s.visibleState!.stats.potentialCluesLost,\n maxScore: s.visibleState!.stats.maxScore,\n cluesStillUsableNotRounded:\n s.visibleState!.stats.cluesStillUsableNotRounded,\n finalRoundEffectivelyStarted:\n s.visibleState!.stats.finalRoundEffectivelyStarted,\n }),\n statsView.onEfficiencyChanged,\n ),\n sub(\n (s) => {\n if (s.visibleState !== null) {\n return {\n pace: s.visibleState.stats.pace,\n cluesStillUsable: s.visibleState.stats.cluesStillUsable,\n score: s.visibleState.score,\n maxScore: s.visibleState.stats.maxScore,\n turnNum: s.visibleState.turn.turnNum,\n endTurnNum: s.visibleState.turn.endTurnNum,\n numPlayers: s.metadata.options.numPlayers,\n };\n }\n return undefined;\n },\n\n statsView.onMaxTurnsChanged,\n ),\n\n // Logs\n subVS((s) => s.log, logView.onLogChanged),\n\n // Cards. Each card will subscribe to changes to its own data. Must come before card layout, since\n // cards are constructed here.\n subVS((s) => s.deck.length, cardsView.onCardsPossiblyAdded),\n\n // Card layout - the order of the following subscriptions matters. Hands have to come first to\n // perform the adds/removes for the purposes of displaying animations.\n subVS((s) => s.hands, cardLayoutView.onHandsChanged),\n subVS((s) => s.discardStacks, cardLayoutView.onDiscardStacksChanged),\n subVS((s) => s.hole, cardLayoutView.onHoleChanged),\n // Play stacks come last so we can show the bases if they get empty.\n subVS((s) => s.playStacks, cardLayoutView.onPlayStacksChanged),\n subVS(\n (s) => s.playStackDirections,\n cardLayoutView.onPlayStackDirectionsChanged,\n ),\n\n // Unsubscribe and reset removed cards. Must come after card layout so animations to deck are\n // correctly triggered.\n subVS((s) => s.deck.length, cardsView.onCardsPossiblyRemoved),\n\n // Clue log\n subVS((s) => s.clues, cluesView.onCluesChanged),\n\n // Clue arrows\n subVS(\n (s) => ({ lastClue: s.clues.at(-1), segment: s.turn.segment }),\n cluesView.onLastClueOrSegmentChanged,\n ),\n\n // Deck\n subVS((s) => s.cardsRemainingInTheDeck, deckView.onCardsRemainingChanged),\n];\n\nconst ongoingGameObservers: Subscriptions = [\n // Clue area\n subAfterInit(\n (s) => turnView.shouldShowTurnUI(s),\n turnView.shouldShowTurnUIChanged,\n ),\n\n // \"No Clues\" indicator and fade.\n subAfterInit(\n (s) => turnView.shouldIndicateNoClues(s),\n turnView.shouldIndicateNoCluesChanged,\n ),\n\n // Bottom-Deck Blind-Play UI\n subAfterInit(\n (s) => turnView.shouldEnableBottomDeckBlindPlay(s),\n turnView.shouldEnableBottomDeckBlindPlayChanged,\n ),\n\n // Alternating Clues UI\n subAfterInit(\n (s) => s.visibleState!.clues[s.visibleState!.clues.length - 1]?.type,\n turnView.onLastClueTypeChanged,\n ),\n\n // Segment + current player index.\n subAfterInit(\n (s) => ({\n segment: s.ongoingGame.turn.segment,\n currentPlayerIndex: s.ongoingGame.turn.currentPlayerIndex,\n }),\n turnView.onOngoingTurnChanged,\n ),\n\n // \"Your Turn\" indicator\n subAfterInit(\n (s) => turnView.shouldShowYourTurnIndicator(s),\n turnView.shouldShowYourTurnIndicatorChanged,\n ),\n\n // The \"Current Player\" area should only be shown under certain conditions.\n subAfterInit(\n (s) => ({\n visible: currentPlayerAreaView.isVisible(s),\n currentPlayerIndex: s.ongoingGame.turn.currentPlayerIndex,\n }),\n currentPlayerAreaView.onChanged,\n ),\n\n // Strikes\n subAfterInit(\n (s) => ({\n ongoingStrikes: s.ongoingGame.strikes,\n visibleStrikes: s.visibleState!.strikes,\n }),\n gameInfoView.onOngoingOrVisibleStrikesChanged,\n ),\n\n // Sound effects\n subAfterInit(\n (s) => ({\n gameState: s.ongoingGame,\n actions: s.replay.actions,\n }),\n soundView.onNewSoundEffect,\n ),\n];\n\nconst replayObservers: Subscriptions = [\n // Database ID\n subAfterInit((s) => s.replay.databaseID, replayView.onDatabaseIDChanged),\n\n // Shared replay\n subAfterInit((s) => s.replay.shared !== null, replayView.onSharedReplayEnter),\n subAfterInit(\n (s) => s.replay.shared?.leader,\n replayView.onSharedLeaderChanged,\n ),\n subAfterInit(\n (s) => s.replay.shared?.amLeader,\n replayView.onSharedAmLeaderChanged,\n ),\n subAfterInit(\n (s) => ({\n leader: s.replay.shared?.leader,\n spectators: s.spectators,\n }),\n replayView.onLeaderOrSpectatorsChanged,\n ),\n\n // Hypothetical\n subAfterInit(\n (s) => hypotheticalView.shouldShowReplayArea(s),\n hypotheticalView.shouldShowReplayAreaChanged,\n ),\n subAfterInit(\n (s) => hypotheticalView.shouldEnableEnterHypoButton(s),\n hypotheticalView.shouldEnableEnterHypoButtonChanged,\n ),\n subAfterInit(\n (s) => hypotheticalView.shouldShowHypoControls(s),\n hypotheticalView.shouldShowHypoControlsChanged,\n ),\n subAfterInit(\n (s) => hypotheticalView.shouldShowToggleDrawnCards(s),\n hypotheticalView.shouldShowToggleDrawnCardsChanged,\n ),\n subAfterInit(\n (s) => ({\n hypotheticalActive: s.replay.hypothetical !== null,\n replayActive: s.replay.shared !== null || s.replay.active,\n }),\n hypotheticalView.onActiveChanged,\n ),\n subAfterInit(\n (s) => ({\n active: s.replay.hypothetical !== null,\n amLeader: s.replay.shared === null || s.replay.shared.amLeader,\n sharedReplay: s.replay.shared !== null,\n }),\n hypotheticalView.onActiveOrAmLeaderChanged,\n ),\n subAfterInit(\n (s) => s.replay.hypothetical?.states.length,\n hypotheticalView.onStatesLengthChanged,\n ),\n subAfterInit(\n (s) => hypotheticalView.shouldShowHypoBackButton(s),\n hypotheticalView.shouldShowHypoBackButtonChanged,\n ),\n subAfterInit(\n (s) => s.replay.hypothetical?.showDrawnCards,\n hypotheticalView.onDrawnCardsInHypotheticalChanged,\n ),\n\n // Replay entered or exited. Note that this needs to go after `onActiveOrAmLeaderChanged` so that\n // the clue area is shown at game start.\n subAfterInit((s) => s.replay.active, replayView.onActiveChanged),\n\n // Replay sliders and buttons.\n subAfterInit(\n (s) => ({\n active: s.replay.active,\n replaySegment: s.replay.segment,\n ongoingGameSegment: s.ongoingGame.turn.segment,\n }),\n replayView.onSegmentChanged,\n ),\n subAfterInit(\n (s) => ({\n active: s.replay.active,\n sharedSegment: s.replay.shared?.segment,\n useSharedSegments: s.replay.shared?.useSharedSegments,\n amLeader: s.replay.shared?.amLeader,\n }),\n replayView.onSharedSegmentChanged,\n ),\n\n // Replay button\n subAfterInit(\n (s) => s.replay.hypothetical === null && !globals.state.finished,\n replayView.onShouldShowReplayButtonChanged,\n ),\n\n // \"Enter Hypothetical\" button\n subAfterInit(\n (s) => ({ finished: s.finished, shared: s.replay.shared !== null }),\n replayView.enterHypoButtonLocationChanged,\n ),\n\n // Card and stack base morphing.\n subAfterInit(\n (s) => ({\n hypotheticalActive: s.replay.hypothetical !== null,\n morphedIdentities: s.replay.hypothetical?.morphedIdentities,\n }),\n cardsView.onMorphedIdentitiesChanged,\n ),\n\n // Remove notes morph from play stacks after game finishes.\n subAfterInit(\n (s) => ({\n finished: s.finished,\n }),\n cardLayoutView.updatePlayStackVisuals,\n ),\n];\n\nconst otherObservers = [\n // Premoves (e.g. queued actions)\n subAfterInit(\n (s) => premoveView.shouldShowCancelButton(s),\n premoveView.shouldShowCancelButtonChanged,\n ),\n subAfterInit((s) => s.premove, premoveView.onChanged),\n\n // Pause\n subAfterInit((s) => s.pause, pauseView.onChanged),\n\n // Spectators\n subAfterInit(\n (s) => ({\n spectators: s.spectators,\n finished: s.finished,\n }),\n spectatorsView.onSpectatorsChanged,\n ),\n];\n\n// These observers need to run after all other observers.\nconst lateObservers = [\n // Reset animations back to the default.\n subAfterInit((s) => s, animateFastView.onObserversFinished),\n\n // Initialization finished. (This will get called when the visible state becomes valid and after\n // all other view updates.)\n sub((s) => s.visibleState !== null, initView.onInitializationChanged),\n];\n", "import { assertNotNull } from \"complete-common\";\nimport Konva from \"konva\";\nimport { globals } from \"./UIGlobals\";\nimport { LABEL_COLOR } from \"./constants\";\nimport { drawCards } from \"./drawCards\";\nimport * as drawCardsBrowser from \"./drawCardsBrowser\";\nimport { drawUI } from \"./drawUI\";\nimport * as keyboard from \"./keyboard\";\n\n// When the HanabiUI object is instantiated, we do not know how many players are in the game or what\n// the variant is. Now that the server has sent us that information, we can initialize the UI.\nexport function uiInit(): void {\n assertNotNull(\n globals.lobby.imageLoader,\n \"Failed to find the image loader when initializing the user interface.\",\n );\n\n // Once the initial page (e.g. the login screen / lobby) is finished loading and ready, all of the\n // images relating to the game screen start to get pre-loaded by the \"Loader\" class. Copy the\n // reference to the existing \"Loader\" object to our UI globals (for convenience).\n globals.imageLoader = globals.lobby.imageLoader;\n\n if (globals.imageLoader.finished) {\n // The user has spent enough time in the lobby before joining a game such that all of the\n // game-related images have had time to fully download. This means we do not have to show the\n // loading screen; skip directly to the next step.\n finishedDownloadingImages();\n return;\n }\n\n // We have joined a game very soon after reaching the lobby, so there has not been enough time for\n // all of the game-related images to be downloaded. Show the loading screen so that the user can\n // see how many images are left to download.\n\n // The Loader object was not instantiated without a progress callback or a finished callback, so\n // attach those now.\n globals.imageLoader.progressCallback = (done: number, total: number) => {\n progressLabel.text(`${done}/${total}`);\n loadingLayer.batchDraw();\n };\n globals.imageLoader.finishedCallback = finishedDownloadingImages;\n\n const winW = globals.stage.width();\n const winH = globals.stage.height();\n\n // Draw the loading screen.\n const loadingLayer = new Konva.Layer({\n listening: false,\n });\n\n const loadingLabel = new Konva.Text({\n fill: LABEL_COLOR,\n stroke: \"#747278\",\n strokeWidth: 0.001_056 * winH,\n text: \"Loading...\",\n align: \"center\",\n x: 0,\n y: 0.7 * winH,\n width: winW,\n height: 0.05 * winH,\n fontFamily: \"Arial\",\n fontStyle: \"bold\",\n fontSize: 0.05 * winH,\n listening: false,\n });\n loadingLayer.add(loadingLabel);\n\n const progressLabel = new Konva.Text({\n fill: LABEL_COLOR,\n stroke: \"#747278\",\n strokeWidth: 0.001_056 * winH,\n text: \"0 / 0\",\n align: \"center\",\n x: 0,\n y: 0.8 * winH,\n width: winW,\n height: 0.05 * winH,\n fontFamily: \"Arial\",\n fontStyle: \"bold\",\n fontSize: 0.05 * winH,\n listening: false,\n });\n loadingLayer.add(progressLabel);\n\n globals.stage.add(loadingLayer);\n}\n\nfunction finishedDownloadingImages() {\n // Build images for every card (with respect to the variant that we are playing and whether or not\n // we have the colorblind UI feature enabled).\n globals.cardImages = drawCards(\n globals.variant,\n globals.lobby.settings.colorblindMode,\n globals.lobby.settings.styleNumbers,\n true,\n drawCardsBrowser.initCanvas,\n drawCardsBrowser.cloneCanvas,\n drawCardsBrowser.saveCanvas,\n );\n\n // Draw the user interface.\n drawUI();\n\n // Keyboard hotkeys can only be initialized once the clue buttons are drawn.\n keyboard.init();\n\n // Tell the server that we are finished loading the UI and we now need the specific actions that\n // have taken place in this game so far.\n globals.lobby.conn!.send(\"getGameInfo2\", {\n tableID: globals.lobby.tableID,\n });\n}\n", "import { assertNotNull } from \"complete-common\";\nimport { CARD_H, CARD_W } from \"./constants\";\n\nexport function initCanvas(): {\n cvs: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n} {\n const cvs = document.createElement(\"canvas\");\n cvs.width = CARD_W;\n cvs.height = CARD_H;\n\n const ctx = cvs.getContext(\"2d\");\n assertNotNull(ctx, \"Failed to get the context for a new canvas element.\");\n\n return {\n cvs,\n ctx,\n };\n}\n\nexport function cloneCanvas(\n oldCvs: HTMLCanvasElement,\n _oldCtx: CanvasRenderingContext2D,\n): HTMLCanvasElement {\n const newCvs = document.createElement(\"canvas\");\n newCvs.width = oldCvs.width;\n newCvs.height = oldCvs.height;\n\n const ctx = newCvs.getContext(\"2d\");\n assertNotNull(ctx, \"Failed to get the context for a new canvas element.\");\n\n ctx.drawImage(oldCvs, 0, 0);\n\n return newCvs;\n}\n\nexport function saveCanvas(\n cvs: HTMLCanvasElement,\n _ctx: CanvasRenderingContext2D,\n): HTMLCanvasElement {\n return cvs;\n}\n", "// We will receive WebSocket messages / commands from the server that tell us to do things. The\n// client also sends these messages to itself in order to emulate actions coming from the server for\n// e.g. in-game replays.\n\nimport type { Spectator } from \"@hanabi-live/data\";\nimport type {\n CardIdentity,\n CardOrder,\n GameAction,\n GameMetadata,\n NumPlayers,\n PlayerIndex,\n SpectatorNote,\n} from \"@hanabi-live/game\";\nimport {\n getCardsPerHand,\n getEndGameLength,\n getMinEfficiency,\n getVariant,\n isHardVariant,\n} from \"@hanabi-live/game\";\nimport type { Tuple } from \"complete-common\";\nimport { iRange, newArray } from \"complete-common\";\nimport { createStore } from \"redux\";\nimport { sendSelfPMFromServer } from \"../../chat\";\nimport { setBrowserAddressBarPath } from \"../../utils\";\nimport { initialState } from \"../reducers/initialStates/initialState\";\nimport { stateReducer } from \"../reducers/stateReducer\";\nimport type { InitData } from \"../types/InitData\";\nimport { ReplayArrowOrder } from \"../types/ReplayArrowOrder\";\nimport { SoundType } from \"../types/SoundType\";\nimport type { State } from \"../types/State\";\nimport type { ActionIncludingHypothetical } from \"../types/actions\";\nimport { globals } from \"./UIGlobals\";\nimport * as arrows from \"./arrows\";\nimport { setSkullEnabled, setSkullNormal } from \"./drawUI\";\nimport { getCardOrStackBase } from \"./getCardOrStackBase\";\nimport * as hypothetical from \"./hypothetical\";\nimport * as notes from \"./notes\";\nimport { StateObserver } from \"./reactive/StateObserver\";\nimport * as replay from \"./replay\";\nimport * as stats from \"./stats\";\nimport * as timer from \"./timer\";\nimport { uiInit } from \"./uiInit\";\n\n// Define a command handler map.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype CommandCallback = (data: any) => void;\nexport const gameCommands = new Map();\n\n// ----------------\n// Command handlers\n// ----------------\n\n// Received when the server wants to force the client to go back to the lobby\ngameCommands.set(\"boot\", () => {\n timer.stop();\n globals.game!.hide();\n});\n\n// Updates the clocks to show how much time people are taking or how much time people have left.\ngameCommands.set(\"clock\", (data: timer.ClockData) => {\n timer.update(data);\n});\n\ninterface ConnectedData {\n list: boolean[];\n}\ngameCommands.set(\"connected\", (data: ConnectedData) => {\n for (const [i, connected] of data.list.entries()) {\n const nameFrame = globals.elements.nameFrames[i];\n if (nameFrame !== undefined) {\n nameFrame.setConnected(connected);\n }\n }\n\n globals.layers.UI.batchDraw();\n});\n\ninterface CardIdentitiesData {\n tableID: number;\n cardIdentities: CardIdentity[];\n}\ngameCommands.set(\"cardIdentities\", (data: CardIdentitiesData) => {\n globals.store!.dispatch({\n type: \"cardIdentities\",\n cardIdentities: data.cardIdentities,\n });\n});\n\ninterface FinishOngoingGameData {\n databaseID: number;\n sharedReplayLeader: string;\n}\ngameCommands.set(\"finishOngoingGame\", (data: FinishOngoingGameData) => {\n // Zero out the user-created efficiency modifier, if any. In a shared replay, this must be synced\n // with the shared replay leader.\n globals.store!.dispatch({\n type: \"setEffMod\",\n mod: 0,\n });\n\n // Set the browser address bar.\n setBrowserAddressBarPath(`/shared-replay/${data.databaseID}`);\n\n // Begin the process of converting an ongoing game to a shared replay.\n globals.store!.dispatch({\n type: \"finishOngoingGame\",\n databaseID: data.databaseID,\n sharedReplayLeader: data.sharedReplayLeader,\n datetimeFinished: new Date().toString(),\n });\n});\n\ninterface HypotheticalData {\n showDrawnCards: boolean;\n actions: string[];\n}\ngameCommands.set(\"hypothetical\", (data: HypotheticalData) => {\n // We are joining an ongoing shared replay that is currently playing through a hypothetical line.\n // We need to \"catch up\" to everyone else and play all of the existing hypothetical actions that\n // have taken place.\n\n // First, parse all of the actions.\n const actions: ActionIncludingHypothetical[] = [];\n for (const action of data.actions) {\n const actionIncludingHypothetical = JSON.parse(\n action,\n ) as ActionIncludingHypothetical;\n actions.push(actionIncludingHypothetical);\n }\n\n globals.store!.dispatch({\n type: \"hypoStart\",\n showDrawnCards: data.showDrawnCards,\n actions,\n });\n});\n\ngameCommands.set(\"hypoAction\", (data: string) => {\n const action = JSON.parse(data) as ActionIncludingHypothetical;\n globals.store!.dispatch({\n type: \"hypoAction\",\n action,\n });\n hypothetical.checkToggleRevealedButton(action);\n});\n\ngameCommands.set(\"hypoBack\", () => {\n globals.store!.dispatch({\n type: \"hypoBack\",\n });\n});\n\ngameCommands.set(\"hypoEnd\", () => {\n hypothetical.endHypothetical();\n});\n\ninterface HypoShowDrawnCardsData {\n showDrawnCards: boolean;\n}\ngameCommands.set(\"hypoShowDrawnCards\", (data: HypoShowDrawnCardsData) => {\n globals.store!.dispatch({\n type: \"hypoShowDrawnCards\",\n showDrawnCards: data.showDrawnCards,\n });\n});\n\ngameCommands.set(\"hypoStart\", () => {\n hypothetical.startHypothetical();\n});\n\ngameCommands.set(\"init\", (metadata: InitData) => {\n setURL(metadata);\n initStateStore(metadata);\n\n // Now that we know the number of players and the variant, we can start to load & draw the UI.\n uiInit();\n});\n\n// Received when spectating a game.\ninterface NoteData {\n order: CardOrder;\n notes: SpectatorNote[];\n}\ngameCommands.set(\"note\", (data: NoteData) => {\n // If we are an active player and we got this message, something has gone wrong.\n if (globals.state.playing) {\n return;\n }\n\n globals.store!.dispatch({\n type: \"receiveNote\",\n order: data.order,\n notes: data.notes,\n });\n\n // Set the note indicator.\n const card = getCardOrStackBase(data.order);\n if (card) {\n card.setNoteIndicator();\n }\n});\n\n/**\n * Received when:\n * - joining a replay\n * - joining a shared replay\n * - joining an existing game as a spectator\n *\n * (It gives the notes of all the players & spectators.)\n */\ninterface NoteListData {\n notes: NoteList[];\n}\ninterface NoteList {\n name: string;\n notes: string[];\n isSpectator: boolean;\n}\ngameCommands.set(\"noteList\", (data: NoteListData) => {\n const names = [] as string[];\n const noteTextLists = [] as string[][];\n const isSpectators = [] as boolean[];\n for (const noteList of data.notes) {\n names.push(noteList.name);\n noteTextLists.push(noteList.notes);\n isSpectators.push(noteList.isSpectator);\n }\n globals.store!.dispatch({\n type: \"noteList\",\n names,\n isSpectators,\n noteTextLists,\n });\n\n setNoteIndicatorAndCheckForSpecialNote();\n});\n\n// Received when reconnecting to an existing game as a player. (It only gets the notes of one\n// specific player).\ninterface NoteListPlayerData {\n notes: string[];\n}\ngameCommands.set(\"noteListPlayer\", (data: NoteListPlayerData) => {\n // Store our notes\n globals.store!.dispatch({\n type: \"noteListPlayer\",\n texts: data.notes,\n });\n\n setNoteIndicatorAndCheckForSpecialNote();\n});\n\n// Used when the game state changes.\ninterface GameActionData {\n tableID: number;\n action: GameAction;\n}\ngameCommands.set(\"gameAction\", (data: GameActionData) => {\n // Update the game state.\n globals.store!.dispatch(data.action);\n});\n\ninterface GameActionListData {\n tableID: number;\n list: GameAction[];\n}\ngameCommands.set(\"gameActionList\", (data: GameActionListData) => {\n // Users can load a specific turn in a replay by using a URL hash\n // (e.g. \"/replay/123#5\"). Record the hash before we load the UI (which will overwrite the hash\n // with \"#1\", corresponding to the first turn).\n let specificTurnString: string | undefined;\n if (window.location.hash !== \"\") {\n specificTurnString = window.location.hash.replace(\"#\", \"\"); // Strip the leading \"#\".\n }\n\n // The server has sent us the list of the game actions that have occurred in the game thus far (in\n // response to the \"getGameInfo2\" command). Send this list to the reducers.\n globals.store!.dispatch({\n type: \"gameActionList\",\n actions: data.list,\n });\n\n // We might need to go to a specific turn if we loaded a URL of e.g.:\n // http://localhost/replay/123#5\n if (specificTurnString !== undefined) {\n replay.goTo(specificTurnString);\n }\n});\n\ninterface PauseData {\n active: boolean;\n playerIndex: PlayerIndex;\n}\ngameCommands.set(\"pause\", (data: PauseData) => {\n const soundType = data.active ? SoundType.GamePaused : SoundType.GameUnpaused;\n globals.game!.sounds.play(soundType);\n\n globals.store!.dispatch({\n type: \"pause\",\n active: data.active,\n playerIndex: data.playerIndex,\n });\n});\n\ninterface ReplayEfficiencyModData {\n tableID: number;\n mod: number;\n}\ngameCommands.set(\"replayEfficiencyMod\", (data: ReplayEfficiencyModData) => {\n if (\n globals.state.replay.shared === null ||\n // Shared replay leaders already set the efficiency after sending the \"replayAction\" message.\n globals.state.replay.shared.amLeader\n ) {\n return;\n }\n\n stats.setEfficiencyMod(data.mod);\n});\n\ninterface VoteData {\n vote: boolean;\n}\ngameCommands.set(\"voteChange\", (data: VoteData) => {\n if (data.vote) {\n setSkullEnabled();\n } else {\n setSkullNormal();\n }\n});\n\n// This is used in shared replays to highlight a specific card (or UI element).\ninterface ReplayIndicatorData {\n order: ReplayArrowOrder;\n}\ngameCommands.set(\"replayIndicator\", (data: ReplayIndicatorData) => {\n if (\n globals.state.replay.shared === null ||\n // Shared replay leaders already drew the arrow after sending the \"replayAction\" message.\n globals.state.replay.shared.amLeader ||\n // If we are not currently using the shared segments, the arrow that the shared replay leader is\n // highlighting will not be applicable.\n !globals.state.replay.shared.useSharedSegments\n ) {\n return;\n }\n\n arrows.hideAll();\n if (data.order !== ReplayArrowOrder.Nothing) {\n arrows.toggle(data.order);\n }\n});\n\n// This is used in shared replays to specify who the leader is.\ninterface ReplayLeaderData {\n name: string;\n}\ngameCommands.set(\"replayLeader\", (data: ReplayLeaderData) => {\n if (globals.state.replay.shared === null) {\n return;\n }\n\n globals.store!.dispatch({\n type: \"replayLeader\",\n name: data.name,\n });\n});\n\n// This is used in shared replays to specify who the leader is.\ninterface SuggestData {\n userName: string;\n segment: number;\n tableID: string;\n}\ngameCommands.set(\"suggestion\", (data: SuggestData) => {\n if (globals.state.replay.shared === null) {\n return;\n }\n\n suggestTurn(data.userName, data.tableID, data.segment);\n});\n\n// This is used in shared replays to change the segment (e.g. turn)\ninterface ReplaySegmentData {\n segment: number;\n}\ngameCommands.set(\"replaySegment\", (data: ReplaySegmentData) => {\n // If we are the replay leader, we will already have the shared segment set to be equal to what\n // the server is broadcasting.\n if (\n globals.state.replay.shared === null ||\n globals.state.replay.shared.amLeader\n ) {\n return;\n }\n\n if (typeof data.segment !== \"number\" || data.segment < 0) {\n throw new Error(\n 'Received an invalid segment from the \"replaySegment\" command.',\n );\n }\n globals.store!.dispatch({\n type: \"replaySharedSegment\",\n segment: data.segment,\n });\n});\n\n// This is used in shared replays to make fun sounds.\ninterface ReplaySoundData {\n sound: SoundType;\n}\ngameCommands.set(\"replaySound\", (data: ReplaySoundData) => {\n globals.game!.sounds.play(data.sound);\n});\n\n// This is used to update the names of the people currently spectating the game.\ninterface SpectatorsData {\n tableID: number;\n spectators: Spectator[];\n}\ngameCommands.set(\"spectators\", (data: SpectatorsData) => {\n globals.store!.dispatch({\n type: \"spectators\",\n spectators: data.spectators,\n });\n});\n\n// -----------\n// Subroutines\n// -----------\n\nfunction setNoteIndicatorAndCheckForSpecialNote() {\n // Show the note indicator for currently-visible cards.\n notes.setAllCardIndicators();\n\n // Check for special notes.\n const indexOfLastDrawnCard = globals.state.visibleState!.deck.length - 1;\n for (const order of iRange(indexOfLastDrawnCard)) {\n const card = getCardOrStackBase(order as CardOrder);\n if (card) {\n card.checkSpecialNote();\n card.setRaiseAndShadowOffset();\n }\n }\n\n // Check for special notes on the stack bases.\n for (const stackBase of globals.stackBases) {\n stackBase.checkSpecialNote();\n }\n}\n\nfunction suggestTurn(who: string, room: string, segment: number) {\n // We minus one to account for the fact that turns are presented to the user starting from 1.\n const internalSegment = segment - 1;\n if (\n globals.state.finished &&\n globals.state.replay.shared !== null &&\n globals.state.replay.shared.amLeader &&\n globals.state.replay.hypothetical === null\n ) {\n const leaderSuggested = who === globals.metadata.ourUsername;\n if (\n leaderSuggested ||\n internalSegment === globals.state.replay.shared.segment ||\n // eslint-disable-next-line no-alert\n window.confirm(`${who} suggests that we go to turn ${segment}. Agree?`)\n ) {\n replay.goToSegment(internalSegment);\n }\n if (leaderSuggested) {\n sendSelfPMFromServer(\n \"You are the shared replay leader, so you can simply click on the turn number instead of using the /suggest command.\",\n room,\n );\n }\n }\n}\n\nfunction setURL(data: InitData) {\n let path: string;\n if (data.sharedReplay) {\n path = `/shared-replay/${data.databaseID}`;\n } else if (data.replay) {\n path = `/replay/${data.databaseID}`;\n } else {\n path = `/game/${data.tableID}${\n data.shadowing ? `/shadow/${data.ourPlayerIndex}` : \"\"\n }`;\n }\n setBrowserAddressBarPath(path, window.location.hash);\n}\n\nfunction initStateStore(data: InitData) {\n // Set the variant (as a helper reference).\n globals.variant = getVariant(data.options.variantName);\n\n // Handle the special case of when players can be given assignments of \"-1\" during debugging\n // (which corresponds to a null character).\n let characterAssignments = data.characterAssignments.map(\n (characterAssignment) =>\n characterAssignment === -1 ? null : characterAssignment,\n ) as Tuple | [];\n\n if (characterAssignments.length === 0) {\n characterAssignments = newArray(data.options.numPlayers, null) as Tuple<\n number | null,\n NumPlayers\n >;\n }\n\n // Create the state store (using the Redux library).\n const endGameLength = getEndGameLength(data.options, characterAssignments);\n const cardsPerHand = getCardsPerHand(data.options);\n const minEfficiency = getMinEfficiency(\n data.options.numPlayers,\n endGameLength,\n globals.variant,\n cardsPerHand,\n );\n const hardVariant = isHardVariant(globals.variant, minEfficiency);\n const metadata: GameMetadata = {\n ourUsername: globals.lobby.username,\n options: data.options,\n playerNames: data.playerNames,\n ourPlayerIndex: data.ourPlayerIndex,\n characterAssignments,\n characterMetadata: data.characterMetadata,\n\n minEfficiency,\n hardVariant,\n\n hasCustomSeed: data.hasCustomSeed,\n seed: data.seed,\n };\n globals.store = createStore(stateReducer, initialState(metadata));\n\n // The various UI views subscribe to the state store.\n globals.stateObserver = new StateObserver(globals.store);\n\n // Make the current state available from the JavaScript console (for debugging purposes).\n globals.store.subscribe(() => {\n window.state = globals.state;\n });\n\n globals.store.dispatch({\n type: \"init\",\n spectating: data.spectating,\n shadowing: data.shadowing,\n datetimeStarted: data.datetimeStarted.toString(),\n datetimeFinished: data.datetimeFinished.toString(),\n replay: data.replay,\n sharedReplay: data.sharedReplay,\n databaseID: data.databaseID,\n sharedReplaySegment: data.sharedReplaySegment,\n sharedReplayLeader: data.sharedReplayLeader,\n paused: data.paused,\n pausePlayerIndex: data.pausePlayerIndex,\n efficiencyModifier: data.sharedReplayEffMod,\n });\n\n // If we happen to be joining an ongoing hypothetical, we cannot dispatch a \"hypoEnter\" here. We\n // must wait until the game is initialized first, because the \"hypoEnter\" handler requires there\n // to be a valid state.\n}\n\n// Allow TypeScript to modify the browser's \"window\" object:\n// https://stackoverflow.com/questions/56457935/typescript-error-property-x-does-not-exist-on-type-window\ndeclare global {\n interface Window {\n state: State;\n }\n}\n", "// The \"Settings\" nav button.\n\nimport { assertDefined, isKeyOf, parseIntSafe } from \"complete-common\";\nimport { globals } from \"../Globals\";\nimport { SoundType } from \"../game/types/SoundType\";\nimport * as notifications from \"../notifications\";\nimport { SOUNDS_PATH } from \"../sounds\";\n\nexport function init(): void {\n $(\"#settings-volume-slider\").change(function settingsVolumeSliderChange(\n this: HTMLElement,\n ) {\n const element = $(this);\n const volumeString = element.val();\n if (typeof volumeString !== \"string\") {\n throw new TypeError(\n `The value of the \"#settings-volume-slider\" element is not a string: ${volumeString}`,\n );\n }\n\n const volume = parseIntSafe(volumeString);\n assertDefined(\n volume,\n `The value of the \"#settings-volume-slider\" element could not be converted to a number: ${volumeString}`,\n );\n\n globals.settings = {\n ...globals.settings,\n volume,\n };\n\n $(\"#settings-volume-slider-value\").html(`${volume}%`);\n globals.conn!.send(\"setting\", {\n name: \"volume\",\n setting: volumeString, // The server expects all setting values as strings\n });\n });\n\n $(\"#settings-volume-test\").click(() => {\n const audio = new Audio(`${SOUNDS_PATH}/${SoundType.Us}.mp3`);\n const element = $(\"#settings-volume-slider\");\n const volumeString = element.val();\n if (typeof volumeString !== \"string\") {\n throw new TypeError(\n `The value of the \"#settings-volume-slider\" element is not a string: ${volumeString}`,\n );\n }\n\n const volume = parseIntSafe(volumeString);\n assertDefined(\n volume,\n `The value of the \"#settings-volume-slider\" element could not be converted to a number: ${volumeString}`,\n );\n\n audio.volume = volume / 100;\n audio.play().catch((error: unknown) => {\n console.error(\"Failed to play the test sound:\", error);\n });\n });\n}\n\nexport function setPlayerSettings(): void {\n // The server has delivered to us a list of all of our settings. Check the checkboxes for the\n // settings that we have enabled (and adjust the volume slider).\n for (const [setting, value] of Object.entries(globals.settings)) {\n if (setting.startsWith(\"createTable\")) {\n // Settings for the \"Create Game\" nav button are handled when the user clicks on it.\n continue;\n } else if (setting === \"volume\") {\n if (typeof value !== \"number\") {\n throw new TypeError(\"The volume setting is not stored as a number.\");\n }\n $(\"#settings-volume-slider\").val(value);\n $(\"#settings-volume-slider-value\").html(`${value}%`);\n } else {\n const element = $(`#${setting}`);\n if (typeof value !== \"boolean\") {\n throw new TypeError(\"The volume setting is not stored as a string.\");\n }\n element.prop(\"checked\", value);\n element.change(changeSetting);\n }\n }\n}\n\nfunction changeSetting(this: HTMLElement) {\n const element = $(this);\n const settingName = element.attr(\"id\");\n if (settingName === undefined || settingName === \"\") {\n throw new Error(\n \"Failed to get the ID of the element when changing a setting.\",\n );\n }\n if (!isKeyOf(settingName, globals.settings)) {\n throw new Error(\n `The setting of ${settingName} does not exist in the Settings class.`,\n );\n }\n const setting = globals.settings[settingName];\n\n const checked = element.is(\":checked\");\n if (setting === checked) {\n return;\n }\n\n // Write the new value to our local variable. We must cast the settings to any since this\n // assignment violates type safety.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (globals.settings[settingName] as any) = checked;\n\n // Send the new value to the server.\n globals.conn!.send(\"setting\", {\n name: settingName,\n setting: checked.toString(), // The server expects all setting values as strings.\n });\n\n if (settingName === \"desktopNotification\" && checked) {\n notifications.test();\n }\n}\n", "import type { ServerCommandWelcomeData } from \"@hanabi-live/data\";\nimport { DEFAULT_VARIANT_NAME } from \"@hanabi-live/game\";\nimport { parseIntSafe } from \"complete-common\";\nimport { globals } from \"../Globals\";\nimport { setBrowserAddressBarPath } from \"../utils\";\nimport type { GameJSON } from \"./hypoCompress\";\nimport { expand } from \"./hypoCompress\";\n\nexport function parseAndGoto(data: ServerCommandWelcomeData): void {\n // Disable custom path functionality for first time users.\n if (data.firstTimeUser) {\n return;\n }\n\n // Automatically create a table if we are using a \"/create-table\" URL.\n if (window.location.pathname === \"/create-table\") {\n const urlParams = new URLSearchParams(window.location.search);\n const name = urlParams.get(\"name\") ?? globals.randomTableName;\n const variantName = urlParams.get(\"variantName\") ?? DEFAULT_VARIANT_NAME;\n const timed = urlParams.get(\"timed\") === \"true\";\n const timeBaseString = urlParams.get(\"timeBase\") ?? \"120\";\n const timeBase = parseIntSafe(timeBaseString);\n const timePerTurnString = urlParams.get(\"timePerTurn\") ?? \"20\";\n const timePerTurn = parseIntSafe(timePerTurnString);\n const speedrun = urlParams.get(\"speedrun\") === \"true\";\n const cardCycle = urlParams.get(\"cardCycle\") === \"true\";\n const deckPlays = urlParams.get(\"deckPlays\") === \"true\";\n const emptyClues = urlParams.get(\"emptyClues\") === \"true\";\n const oneExtraCard = urlParams.get(\"oneExtraCard\") === \"true\";\n const oneLessCard = urlParams.get(\"oneLessCard\") === \"true\";\n const allOrNothing = urlParams.get(\"allOrNothing\") === \"true\";\n const detrimentalCharacters =\n urlParams.get(\"detrimentalCharacters\") === \"true\";\n const password = urlParams.get(\"password\") ?? \"\";\n\n globals.conn!.send(\"tableCreate\", {\n name,\n options: {\n variantName,\n timed,\n timeBase,\n timePerTurn,\n speedrun,\n cardCycle,\n deckPlays,\n emptyClues,\n oneExtraCard,\n oneLessCard,\n allOrNothing,\n detrimentalCharacters,\n },\n password,\n });\n return;\n }\n\n // Automatically join a pre-game if we are using a \"/pre-game/123\" URL.\n const preGameMatch = /\\/pre-game\\/(\\d+)/.exec(window.location.pathname);\n if (preGameMatch !== null) {\n const tableIDString = preGameMatch[1];\n if (tableIDString !== undefined) {\n const tableID = parseIntSafe(tableIDString);\n if (tableID !== undefined && tableID > 0) {\n // Here we unconditionally send password from cookies. If the game has no password, the\n // server will ignore it.\n const password = localStorage.getItem(\"joinTablePassword\");\n globals.conn!.send(\"tableJoin\", {\n tableID,\n password,\n });\n return;\n }\n }\n }\n\n // Automatically spectate a game if we are using a \"/game/123\" URL. We can also shadow a player in\n // a seat with \"/game/123/shadow/0\" (We want to spectate it instead of reattend it because if we\n // are at this point, it is assumed that if we were in the respective game, we would have already\n // tried to join it.)\n const gameMatch = /\\/game\\/(\\d+)/.exec(window.location.pathname);\n if (gameMatch !== null) {\n const tableIDString = gameMatch[1];\n if (tableIDString !== undefined) {\n const tableID = parseIntSafe(tableIDString);\n if (tableID !== undefined && tableID > 0) {\n const shadowMatch = /\\/shadow\\/(\\d+)/.exec(window.location.pathname);\n let shadowingPlayerIndex = -1;\n if (shadowMatch !== null) {\n const shadowingPlayerIndexString = shadowMatch[1];\n if (shadowingPlayerIndexString !== undefined) {\n const shadowingPlayerIndexInt = parseIntSafe(\n shadowingPlayerIndexString,\n );\n if (\n shadowingPlayerIndexInt !== undefined &&\n shadowingPlayerIndex >= 0\n ) {\n shadowingPlayerIndex = shadowingPlayerIndexInt;\n }\n }\n }\n globals.conn!.send(\"tableSpectate\", {\n tableID,\n shadowingPlayerIndex,\n });\n return;\n }\n }\n }\n\n // Automatically go into a replay if we are using a \"/(shared-)?replay/123\" URL.\n const replayMatch = /\\/(?:shared-)?replay\\/(\\d+)/.exec(\n window.location.pathname,\n );\n if (replayMatch !== null) {\n const databaseIDString = replayMatch[1];\n if (databaseIDString !== undefined) {\n const databaseID = parseIntSafe(databaseIDString);\n if (databaseID !== undefined && databaseID > 0) {\n const visibility = window.location.pathname.includes(\"shared-\")\n ? \"shared\"\n : \"solo\";\n globals.conn!.send(\"replayCreate\", {\n databaseID,\n source: \"id\",\n visibility,\n shadowingPlayerIndex: -1,\n });\n return;\n }\n }\n }\n\n // Automatically go into a replay if we are using a \"/replay-json/string\" or\n // \"/shared-replay-json/string\" URL.\n const replayJSONMatch = /\\/(?:shared-)?replay-json\\/([\\d,A-Za-z-]+)$/.exec(\n window.location.pathname,\n );\n if (replayJSONMatch !== null) {\n const gameJSONStringCompressed = replayJSONMatch[1];\n if (gameJSONStringCompressed !== undefined) {\n // The server expects the uncompressed JSON.\n const gameJSONString = expand(gameJSONStringCompressed);\n if (gameJSONString === undefined) {\n setBrowserAddressBarPath(\"/lobby\");\n return;\n }\n\n let gameJSON: GameJSON;\n try {\n gameJSON = JSON.parse(gameJSONString) as GameJSON;\n } catch {\n setBrowserAddressBarPath(\"/lobby\");\n return;\n }\n if (typeof gameJSON !== \"object\") {\n setBrowserAddressBarPath(\"/lobby\");\n return;\n }\n\n const visibility = window.location.pathname.includes(\"shared-\")\n ? \"solo\"\n : \"shared\";\n\n const source = \"json\";\n localStorage.setItem(\"watchReplayJSON\", gameJSONString);\n localStorage.setItem(\"watchReplayVisibility\", visibility);\n\n globals.conn!.send(\"replayCreate\", {\n source,\n gameJSON,\n visibility,\n shadowingPlayerIndex: -1,\n });\n return;\n }\n }\n\n // Otherwise, we will stay in the lobby.\n setBrowserAddressBarPath(\"/lobby\");\n}\n", "// We will receive WebSocket messages / commands from the server that tell us to do things.\n\nimport type {\n ServerCommandTableData,\n ServerCommandUserData,\n ServerCommandUserLeftData,\n ServerCommandUserListData,\n ServerCommandWelcomeData,\n Spectator,\n UserID,\n} from \"@hanabi-live/data\";\nimport { globals } from \"../Globals\";\nimport * as gameMain from \"../game/main\";\nimport type { SoundType } from \"../game/types/SoundType\";\nimport * as spectatorsView from \"../game/ui/reactive/views/spectatorsView\";\nimport * as sounds from \"../sounds\";\nimport * as history from \"./history\";\nimport * as lobbyLogin from \"./login\";\nimport * as playerSettings from \"./playerSettings\";\nimport * as pregame from \"./pregame\";\nimport { tablesDraw } from \"./tablesDraw\";\nimport type { Game } from \"./types/Game\";\nimport type { GameHistory } from \"./types/GameHistory\";\nimport { Screen } from \"./types/Screen\";\nimport * as url from \"./url\";\nimport * as usersDraw from \"./usersDraw\";\n\n// Define a command handler map.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype CommandCallback = (data: any) => void;\nexport const lobbyCommands = new Map();\n\ninterface FriendsData {\n friends: string[];\n}\nlobbyCommands.set(\"friends\", (data: FriendsData) => {\n // The server has sent us a new list of our friends; store this locally.\n globals.friends = data.friends;\n\n // Since our list of friends has changed, we need to redraw some UI elements so that users that\n // happen to be our friend will be shown in the correct color.\n if (\n globals.currentScreen === Screen.Lobby ||\n globals.currentScreen === Screen.PreGame\n ) {\n usersDraw.draw();\n }\n if (globals.currentScreen === Screen.Lobby) {\n tablesDraw();\n }\n if (globals.currentScreen === Screen.PreGame) {\n pregame.draw();\n }\n if (globals.currentScreen === Screen.Game && globals.ui !== null) {\n spectatorsView.onSpectatorsChanged({\n spectators: globals.ui.globals.state.spectators,\n finished: globals.ui.globals.state.finished,\n });\n }\n});\n\nlobbyCommands.set(\"game\", (data: Game) => {\n const previousPlayers = globals.game?.players;\n globals.game = data;\n pregame.draw();\n if (previousPlayers?.length !== data.players.length) {\n // Disable the start game button for a short time after the player count changes.\n if (globals.enableStartGameButtonTimeout !== null) {\n clearTimeout(globals.enableStartGameButtonTimeout);\n }\n $(\"#nav-buttons-pregame-start\").addClass(\"disabled\");\n globals.enableStartGameButtonTimeout = setTimeout(() => {\n globals.enableStartGameButtonTimeout = null;\n pregame.toggleStartGameButton();\n }, 500);\n }\n\n pregame.drawSpectators(globals.tableID);\n});\n\nlobbyCommands.set(\"gameHistory\", (dataArray: readonly GameHistory[]) => {\n // `data` will be an array of all of the games that we have previously played.\n for (const data of dataArray) {\n globals.history.set(data.id, data);\n\n if (data.incrementNumGames) {\n globals.totalGames++;\n }\n }\n\n // The server sent us more games because we clicked on the \"Show More History\" button.\n if (globals.showMoreHistoryClicked) {\n globals.showMoreHistoryClicked = false;\n history.draw(false);\n }\n\n const shownGames = globals.history.size;\n $(\"#nav-buttons-history-shown-games\").html(shownGames.toString());\n $(\"#nav-buttons-history-total-games\").html(globals.totalGames.toString());\n if (shownGames === globals.totalGames) {\n $(\"#lobby-history-show-more\").hide();\n }\n});\n\nlobbyCommands.set(\"gameHistoryFriends\", (dataArray: readonly GameHistory[]) => {\n // `data` will be an array of all of the games that our friends have previously played.\n for (const data of dataArray) {\n globals.historyFriends.set(data.id, data);\n }\n\n // The server sent us more games because we clicked on the \"Show More History\" button.\n if (globals.showMoreHistoryClicked) {\n globals.showMoreHistoryClicked = false;\n history.draw(true);\n }\n});\n\ninterface GameHistoryOtherScoresData {\n games: GameHistory[];\n variantName: string;\n friends: boolean;\n seed: string;\n}\nlobbyCommands.set(\n \"gameHistoryOtherScores\",\n (data: GameHistoryOtherScoresData) => {\n history.drawOtherScores(\n data.games,\n data.variantName,\n data.friends,\n data.seed,\n );\n },\n);\n\ninterface JoinedData {\n tableID: number;\n}\nlobbyCommands.set(\"joined\", (data: JoinedData) => {\n globals.tableID = data.tableID;\n\n // We joined a new game, so transition between screens.\n pregame.show();\n});\n\nlobbyCommands.set(\"left\", () => {\n // We left a table, so transition between screens.\n pregame.hide();\n});\n\ninterface MaintenanceData {\n maintenanceMode: boolean;\n}\nlobbyCommands.set(\"maintenance\", (data: MaintenanceData) => {\n globals.maintenanceMode = data.maintenanceMode;\n});\n\ninterface NameData {\n name: string;\n}\nlobbyCommands.set(\"name\", (data: NameData) => {\n globals.randomTableName = data.name;\n});\n\ninterface ShutdownData {\n shuttingDown: boolean;\n datetimeShutdownInit: string;\n}\nlobbyCommands.set(\"shutdown\", (data: ShutdownData) => {\n globals.shuttingDown = data.shuttingDown;\n globals.datetimeShutdownInit = new Date(data.datetimeShutdownInit);\n});\n\ninterface SoundLobbyData {\n file: SoundType;\n}\nlobbyCommands.set(\"soundLobby\", (data: SoundLobbyData) => {\n sounds.play(data.file);\n});\n\n// Received by the client when a table is created or modified.\nlobbyCommands.set(\"table\", (data: ServerCommandTableData) => {\n globals.tableMap.set(data.id, data);\n if (globals.currentScreen === Screen.Lobby) {\n tablesDraw();\n }\n});\n\n// Received by the client when a table no longer has any members present.\ninterface TableGoneData {\n tableID: number;\n}\nlobbyCommands.set(\"tableGone\", (data: TableGoneData) => {\n globals.tableMap.delete(data.tableID);\n\n if (globals.currentScreen === Screen.Lobby) {\n tablesDraw();\n }\n});\n\n// Received by the client upon initial connection.\nlobbyCommands.set(\n \"tableList\",\n (dataList: readonly ServerCommandTableData[]) => {\n for (const data of dataList) {\n globals.tableMap.set(data.id, data);\n }\n if (globals.currentScreen === Screen.Lobby) {\n tablesDraw();\n }\n },\n);\n\ninterface TableProgressData {\n tableID: number;\n progress: number;\n}\nlobbyCommands.set(\"tableProgress\", (data: TableProgressData) => {\n const table = globals.tableMap.get(data.tableID);\n if (table === undefined) {\n return;\n }\n\n const newTable = {\n ...table,\n progress: data.progress,\n };\n globals.tableMap.set(data.tableID, newTable);\n\n if (globals.currentScreen === Screen.Lobby) {\n $(`#status-${data.tableID}`).html(data.progress.toString());\n }\n});\n\ninterface TableStartData {\n tableID: number;\n replay: boolean;\n}\nlobbyCommands.set(\"tableStart\", (data: TableStartData) => {\n // Record the table ID for later.\n globals.tableID = data.tableID;\n\n if (!data.replay) {\n pregame.hide();\n }\n gameMain.show();\n});\n\ninterface SpectatorsData {\n tableID: number;\n spectators: Spectator[];\n}\nlobbyCommands.set(\"pregameSpectators\", (data: SpectatorsData) => {\n globals.tableID = data.tableID;\n pregame.drawSpectators(globals.tableID);\n});\n\n// Received by the client when a user connects or has a new status.\nlobbyCommands.set(\"user\", (data: ServerCommandUserData) => {\n globals.userMap.set(data.userID, data);\n if (\n globals.currentScreen === Screen.Lobby ||\n globals.currentScreen === Screen.PreGame\n ) {\n usersDraw.draw();\n }\n});\n\nlobbyCommands.set(\"userList\", (dataList: ServerCommandUserListData) => {\n for (const data of dataList) {\n globals.userMap.set(data.userID, data);\n }\n if (\n globals.currentScreen === Screen.Lobby ||\n globals.currentScreen === Screen.PreGame\n ) {\n usersDraw.draw();\n }\n});\n\nlobbyCommands.set(\"userLeft\", (data: ServerCommandUserLeftData) => {\n globals.userMap.delete(data.userID);\n\n if (\n globals.currentScreen === Screen.Lobby ||\n globals.currentScreen === Screen.PreGame\n ) {\n usersDraw.draw();\n }\n});\n\ninterface UserInactiveData {\n userID: UserID;\n inactive: boolean;\n}\nlobbyCommands.set(\"userInactive\", (data: UserInactiveData) => {\n const { userID, inactive } = data;\n\n const user = globals.userMap.get(userID);\n if (user === undefined) {\n return;\n }\n\n const newUser = {\n ...user,\n inactive,\n };\n globals.userMap.set(userID, newUser);\n\n if (\n globals.currentScreen === Screen.Lobby ||\n globals.currentScreen === Screen.PreGame\n ) {\n usersDraw.setInactive(user.userID, user.inactive);\n }\n});\n\n// Received by the client upon first connecting.\nlobbyCommands.set(\"welcome\", (data: ServerCommandWelcomeData) => {\n // Store some variables (mostly relating to our user account).\n globals.userID = data.userID;\n globals.username = data.username; // We might have logged-in with a different stylization\n globals.totalGames = data.totalGames;\n globals.muted = data.muted;\n globals.settings = data.settings;\n globals.friends = data.friends;\n globals.randomTableName = data.randomTableName;\n globals.shuttingDown = data.shuttingDown;\n globals.datetimeShutdownInit =\n data.datetimeShutdownInit === undefined\n ? undefined\n : new Date(data.datetimeShutdownInit);\n globals.maintenanceMode = data.maintenanceMode;\n\n // Update various elements of the UI to reflect our settings.\n $(\"#nav-buttons-history-total-games\").html(globals.totalGames.toString());\n playerSettings.setPlayerSettings();\n lobbyLogin.hide(data.firstTimeUser);\n\n // If the server has informed us that we are currently playing in an ongoing game, automatically\n // reconnect to that game (and ignore any specific custom path that the user has entered).\n if (data.playingAtTables.length > 0) {\n const firstTableID = data.playingAtTables[0];\n globals.conn!.send(\"tableReattend\", {\n tableID: firstTableID,\n });\n return;\n }\n\n // If the server has informed us that were previously spectating an ongoing shared replay,\n // automatically spectate that table (and ignore any specific custom path that the user has\n // entered).\n if (\n data.disconSpectatingTable !== undefined &&\n data.disconSpectatingTable > 0\n ) {\n globals.conn!.send(\"tableSpectate\", {\n tableID: data.disconSpectatingTable,\n shadowingPlayerIndex: data.disconShadowingSeat,\n });\n return;\n }\n\n // If we have entered a specific URL, we might want to go somewhere specific instead of the lobby.\n url.parseAndGoto(data);\n});\n", "// Communication with the server is done through the WebSocket protocol. The client uses a slightly\n// modified version of the Golem WebSocket library.\n\nimport { commands } from \"./commands\";\nimport { Connection } from \"./Connection\";\nimport { gameCommands } from \"./game/ui/gameCommands\";\nimport { globals } from \"./Globals\";\nimport { lobbyCommands } from \"./lobby/lobbyCommands\";\nimport { Screen } from \"./lobby/types/Screen\";\nimport * as modals from \"./modals\";\n\nexport function websocketInit(): void {\n // Ensure that we are connecting to the right URL.\n const domain = $(\"#domain\").html();\n if (window.location.hostname !== domain) {\n modals.showError(`You are supposed to connect using the URL of: ${domain}`);\n return;\n }\n\n // Prepare the URL of the WebSocket server\n // e.g. \"ws://localhost/ws\"\n const websocketProtocol =\n window.location.protocol === \"https:\" ? \"wss\" : \"ws\";\n let websocketHost = window.location.hostname;\n if (window.location.port !== \"\") {\n websocketHost += `:${window.location.port}`;\n }\n const websocketURL = `${websocketProtocol}://${websocketHost}/ws`;\n\n // Connect to the WebSocket server. This will automatically use the cookie that we received\n // earlier from the POST. If the second argument is true, debugging is turned on.\n console.log(\"Connecting to websocket URL:\", websocketURL);\n const conn = new Connection(websocketURL, true);\n\n // Define event handlers\n conn.on(\"open\", () => {\n // We will show the lobby upon receiving the \"welcome\" command from the server.\n console.log(\"WebSocket connection established.\");\n });\n conn.on(\"close\", () => {\n console.log(\"WebSocket connection disconnected / closed.\");\n modals.showError(\n \"Disconnected from the server. Either your Internet hiccuped or the server restarted.\",\n );\n });\n conn.on(\"socketError\", (data: unknown) => {\n // \"socketError\" is defined in the `Connection` object as mapping to the WebSocket \"onerror\"\n // event.\n console.error(\"WebSocket error:\", data);\n });\n\n initCommands(conn);\n globals.conn = conn;\n}\n\n// We specify a callback for each command/message that we expect to receive from the server.\nfunction initCommands(conn: Connection) {\n // Activate the command handlers for commands relating to both the lobby and the game.\n for (const [commandName, commandFunction] of commands) {\n conn.on(commandName, (data: unknown) => {\n commandFunction(data);\n });\n }\n\n // Activate the command handlers for lobby-related commands.\n for (const [commandName, commandFunction] of lobbyCommands) {\n conn.on(commandName, (data: unknown) => {\n commandFunction(data);\n });\n }\n\n // Activate the command handlers for game-related commands.\n for (const [commandName, commandFunction] of gameCommands) {\n conn.on(commandName, (data: unknown) => {\n // As a safety precaution, ignore any game-related commands if we are not inside of a game.\n if (globals.currentScreen !== Screen.Game || globals.ui === null) {\n return;\n }\n\n // As a safety precaution, ignore any game-related commands if we are still loading the UI.\n // The only commands that we should receive while loading are:\n // 1) \"init\" (in response to a \"getGameInfo1\") and\n // 2) \"gameActionList\" (in response to a \"getGameInfo2\")\n if (\n globals.ui.globals.loading &&\n commandName !== \"init\" &&\n commandName !== \"gameActionList\"\n ) {\n return;\n }\n\n commandFunction(data);\n });\n }\n}\n", "// The initial login page.\n\nimport type { HTTPLoginData } from \"@hanabi-live/data\";\nimport { VERSION } from \"@hanabi-live/data\";\nimport { assertDefined } from \"complete-common\";\nimport * as KeyCode from \"keycode-js\";\nimport { globals } from \"../Globals\";\nimport { FADE_TIME_MS } from \"../constants\";\nimport { getHTMLElement, getHTMLInputElement, getURLFromPath } from \"../utils\";\nimport { websocketInit } from \"../websocketInit\";\nimport * as nav from \"./nav\";\nimport { tablesDraw } from \"./tablesDraw\";\nimport { Screen } from \"./types/Screen\";\nimport * as usersDraw from \"./usersDraw\";\n\nconst FIREFOX_WARNING_COOKIE_NAME = \"acceptedFirefoxWarning\";\n\nconst changePassword = getHTMLInputElement(\"#change-password\");\nconst changePasswordContainer = getHTMLElement(\"#change-password-container\");\nconst loginUsername = getHTMLInputElement(\"#login-username\");\nconst loginPassword = getHTMLInputElement(\"#login-password\");\n\nexport function init(): void {\n $(\"#login-button\").on(\"click\", () => {\n $(\"#login-form\").trigger(\"submit\");\n });\n\n $(\"#login-form\").on(\"keypress\", (event) => {\n if (event.which === KeyCode.KEY_RETURN) {\n event.preventDefault();\n $(\"#login-form\").trigger(\"submit\");\n }\n });\n\n $(\"#login-form\").on(\"submit\", submit);\n\n $(\"#firefox-warning-button\").on(\"click\", () => {\n localStorage.setItem(FIREFOX_WARNING_COOKIE_NAME, \"true\");\n show();\n });\n\n $(\"#change-password-link\").on(\"click\", (event) => {\n event.preventDefault();\n const div = $(\"#change-password-container\");\n if (div.hasClass(\"hidden\")) {\n $(\"#login-password\").attr(\"placeholder\", \"Old Password\");\n $(\"#change-password-container\")\n .slideDown()\n .delay(500)\n .removeClass(\"hidden\");\n $(\"#login-button\").html(\"Sign In & Change Password\");\n } else {\n $(\"#login-password\").attr(\"placeholder\", \"Password\");\n $(\"#change-password-container\").slideUp().delay(500).addClass(\"hidden\");\n $(\"#login-button\").html(\"Sign In\");\n }\n $(\"#login-username\").trigger(\"focus\");\n });\n}\n\nfunction submit(event: JQuery.Event) {\n // By default, the form will reload the page, so stop this from happening.\n event.preventDefault();\n\n const username = loginUsername.value;\n if (username === \"\") {\n formError(\"You must provide a username.\");\n return;\n }\n\n const password = loginPassword.value;\n if (password === \"\") {\n formError(\"You must provide a password.\");\n return;\n }\n\n const changePasswordInputIsShowing =\n !changePasswordContainer.classList.contains(\"hidden\");\n\n let newPassword: string | undefined;\n if (changePasswordInputIsShowing) {\n if (changePassword.value === \"\") {\n formError(\"You must provide a new password.\");\n return;\n }\n\n newPassword = changePassword.value;\n }\n\n send(username, password, newPassword);\n}\n\nfunction send(\n username: string,\n password: string,\n newPassword: string | undefined,\n) {\n $(\"#login-button\").addClass(\"disabled\");\n $(\"#login-explanation\").hide();\n $(\"#login-ajax\").show();\n\n // Send a login request to the server; if successful, we will get a cookie back.\n const url = getURLFromPath(\"/login\");\n const data = {\n username,\n password,\n newPassword,\n version: VERSION,\n } satisfies HTTPLoginData;\n\n // eslint-disable-next-line complete/no-object-any\n const request = $.ajax({\n url,\n type: \"POST\",\n data,\n });\n console.log(`Sent a login request to: ${url}`);\n\n request\n .done(() => {\n // We successfully got a cookie; attempt to establish a WebSocket connection.\n websocketInit();\n })\n .fail((jqXHR) => {\n formError(`Login failed: ${getAjaxError(jqXHR)}`);\n })\n // eslint-disable-next-line @typescript-eslint/use-unknown-in-catch-callback-variable\n .catch((error) => {\n formError(`Login failed: ${getAjaxError(error)}`);\n });\n}\n\nfunction getAjaxError(jqXHR: JQuery.jqXHR) {\n if (jqXHR.readyState === 0) {\n return \"A network error occurred. The server might be down!\";\n }\n if (jqXHR.responseText === \"\") {\n return \"An unknown error occurred.\";\n }\n return jqXHR.responseText;\n}\n\nexport function automaticLogin(): void {\n // Automatically sign in to the WebSocket server if a query string of \"?login\" is present (which\n // is intended to be used with test accounts).\n const urlParams = new URLSearchParams(window.location.search);\n const username = urlParams.get(\"login\");\n if (username !== null && username !== \"\") {\n console.log(`Automatically logging in as \"${username}\".`);\n send(username, username, \"\"); // For test accounts, we use the username as the password.\n return;\n }\n\n // If we have logged in previously and our cookie is still good, automatically login.\n console.log(\"Testing to see if we have a cached WebSocket cookie.\");\n const testCookiePath = \"/test-cookie\";\n fetch(testCookiePath)\n .then((response) => {\n // Check to see if we have accepted the Firefox warning.\n if (\n isBrowserFirefox() &&\n localStorage.getItem(FIREFOX_WARNING_COOKIE_NAME) !== \"true\" // Cookies are strings.\n ) {\n $(\"#loading\").hide();\n $(\"#firefox-warning\").show();\n return;\n }\n\n if (response.status === 200) {\n console.log(\n \"WebSocket cookie confirmed to be good. Automatically logging in to the WebSocket server.\",\n );\n websocketInit();\n return;\n }\n\n if (response.status === 204) {\n console.log(\n \"Either we have not previously logged in or the existing cookie is expired.\",\n );\n } else {\n console.log(\n \"Received an unknown status back from the server:\",\n response.status,\n );\n }\n show();\n })\n .catch((error: unknown) => {\n console.error(`Failed to fetch \"${testCookiePath}\":`, error);\n });\n}\n\nfunction isBrowserFirefox() {\n return navigator.userAgent.toLowerCase().includes(\"firefox\");\n}\n\n// -------------------------\n// Miscellaneous subroutines\n// -------------------------\n\nfunction show() {\n $(\"#loading\").hide();\n $(\"#firefox-warning\").hide();\n $(\"#sign-in\").show();\n $(\"#login-username\").trigger(\"focus\");\n}\n\nexport function hide(firstTimeUser: boolean): void {\n // Hide the login screen\n $(\"#login\").hide();\n\n if (firstTimeUser) {\n $(\"#tutorial\").fadeIn(FADE_TIME_MS);\n return;\n }\n $(\"#tutorial\").hide();\n\n // Disable scroll bars. Even with height and width 100%, the scroll bar can pop up when going back\n // from a game to the lobby. It also can show up in-game if a tooltip animates off of the edge of\n // the screen. So we can set \"overflow\" to explicitly prevent this from occurring. We do not want\n // to set this in \"hanabi.css\" because there should be scrolling enabled on the login screen. We\n // need to scroll to the top of the screen before disabling the scroll bars or else the lobby can\n // become misaligned when logging in from a scroll-down state.\n window.scrollTo(0, 0);\n $(\"body\").css(\"overflow\", \"hidden\");\n\n // Show the lobby\n globals.currentScreen = Screen.Lobby;\n tablesDraw();\n usersDraw.draw(); // If we were in the tutorial, we have to re-draw all of the user rows\n $(\"#lobby\").show();\n $(\"#lobby-history\").hide();\n // We can't hide this element by default in \"index.html\" or else the \"No game history\" text will\n // not be centered.\n nav.show(\"lobby\");\n $(\"#lobby-chat-input\").trigger(\"focus\");\n\n // Scroll to the bottom of the chat. (This is necessary if we are going to the lobby after the\n // tutorial.)\n const chat = $(\"#lobby-chat-text\");\n chat.animate(\n {\n scrollTop: chat[0]!.scrollHeight,\n },\n 0,\n );\n}\n\nfunction formError(msg: string) {\n // For some reason this has to be invoked asynchronously in order to work properly.\n setTimeout(() => {\n $(\"#login-ajax\").hide();\n $(\"#login-button\").removeClass(\"disabled\");\n $(\"#login-alert\").html(msg);\n $(\"#login-alert\").fadeIn(FADE_TIME_MS);\n\n const offset = $(\"#login-alert\").offset();\n assertDefined(\n offset,\n 'Failed to get the coordinates for the \"#login-alert\" element.',\n );\n\n $(\"html, body\").animate(\n {\n scrollTop: offset.top,\n },\n 500,\n );\n }, 0);\n}\n", "// A short tutorial is shown to brand-new users.\n\nimport { FADE_TIME_MS } from \"../constants\";\nimport * as login from \"./login\";\n\nexport function lobbyTutorialInit(): void {\n $(\"#tutorial-yes\").on(\"click\", () => {\n $(\"#tutorial-1\").fadeOut(FADE_TIME_MS, () => {\n $(\"#tutorial-2\").fadeIn(FADE_TIME_MS);\n });\n });\n $(\"#tutorial-no\").on(\"click\", () => {\n $(\"#tutorial\").fadeOut(FADE_TIME_MS, () => {\n login.hide(false);\n });\n });\n\n $(\"#tutorial-2-yes\").on(\"click\", () => {\n $(\"#tutorial-2\").fadeOut(FADE_TIME_MS, () => {\n $(\"#tutorial-3\").fadeIn(FADE_TIME_MS);\n });\n });\n $(\"#tutorial-2-no\").on(\"click\", () => {\n $(\"#tutorial-2\").fadeOut(FADE_TIME_MS, () => {\n $(\"#tutorial-2-2\").fadeIn(FADE_TIME_MS);\n });\n });\n\n $(\"#tutorial-2-1-ok\").on(\"click\", () => {\n $(\"#tutorial-2-1\").fadeOut(FADE_TIME_MS, () => {\n $(\"#tutorial-3\").fadeIn(FADE_TIME_MS);\n });\n });\n $(\"#tutorial-2-2-ok\").on(\"click\", () => {\n $(\"#tutorial-2-2\").fadeOut(FADE_TIME_MS, () => {\n $(\"#tutorial-3\").fadeIn(FADE_TIME_MS);\n });\n });\n\n $(\"#tutorial-3-ok\").on(\"click\", () => {\n $(\"#tutorial-3\").fadeOut(FADE_TIME_MS, () => {\n $(\"#tutorial-4\").fadeIn(FADE_TIME_MS);\n });\n });\n\n $(\"#tutorial-4-yes\").on(\"click\", () => {\n $(\"#tutorial-4\").fadeOut(FADE_TIME_MS, () => {\n $(\"#tutorial-4-1\").fadeIn(FADE_TIME_MS);\n });\n });\n $(\"#tutorial-4-no\").on(\"click\", () => {\n $(\"#tutorial-4\").fadeOut(FADE_TIME_MS, () => {\n $(\"#tutorial-5\").fadeIn(FADE_TIME_MS);\n });\n });\n\n $(\"#tutorial-4-1-ok\").on(\"click\", () => {\n $(\"#tutorial-4-1\").fadeOut(FADE_TIME_MS, () => {\n login.hide(false);\n });\n });\n\n $(\"#tutorial-5-casual\").on(\"click\", () => {\n $(\"#tutorial-5\").fadeOut(FADE_TIME_MS, () => {\n $(\"#tutorial-5-1\").fadeIn(FADE_TIME_MS);\n });\n });\n $(\"#tutorial-5-expert\").on(\"click\", () => {\n $(\"#tutorial-5\").fadeOut(FADE_TIME_MS, () => {\n $(\"#tutorial-6\").fadeIn(FADE_TIME_MS);\n });\n });\n\n $(\"#tutorial-5-1-lobby\").on(\"click\", () => {\n $(\"#tutorial-5-1\").fadeOut(FADE_TIME_MS, () => {\n login.hide(false);\n });\n });\n\n $(\"#tutorial-6-ok\").on(\"click\", () => {\n $(\"#tutorial-6\").fadeOut(FADE_TIME_MS, () => {\n $(\"#tutorial-7\").fadeIn(FADE_TIME_MS);\n });\n });\n $(\"#tutorial-6-lobby\").on(\"click\", () => {\n $(\"#tutorial-6\").fadeOut(FADE_TIME_MS, () => {\n login.hide(false);\n });\n });\n\n $(\"#tutorial-7-yes\").on(\"click\", () => {\n $(\"#tutorial-7\").fadeOut(FADE_TIME_MS, () => {\n $(\"#tutorial-8\").fadeIn(FADE_TIME_MS);\n });\n });\n $(\"#tutorial-7-no\").on(\"click\", () => {\n $(\"#tutorial-7\").fadeOut(FADE_TIME_MS, () => {\n $(\"#tutorial-7-1\").fadeIn(FADE_TIME_MS);\n });\n });\n\n $(\"#tutorial-7-1-microphone\").on(\"click\", () => {\n $(\"#tutorial-7-1\").fadeOut(FADE_TIME_MS, () => {\n $(\"#tutorial-8\").fadeIn(FADE_TIME_MS);\n });\n });\n $(\"#tutorial-7-1-lobby\").on(\"click\", () => {\n $(\"#tutorial-7-1\").fadeOut(FADE_TIME_MS, () => {\n login.hide(false);\n });\n });\n\n $(\"#tutorial-8-ok\").on(\"click\", () => {\n $(\"#tutorial-8\").fadeOut(FADE_TIME_MS, () => {\n login.hide(false);\n });\n });\n}\n"], "mappings": "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AAU,UAAY,QAC5BA,GAAM,UAAU,UAAY,GAC5BA,GAAM,UAAU,oBAAsB,CAAC,QAAQ,EAC/CD,GAAS,cAAcC,EAAK,EAC5BL,GAAU,QAAQ,gBAAgBK,GAAO,SAAU,EAAGF,GAAa,mBAAmB,CAAC,EACvFH,GAAU,QAAQ,gBAAgBK,GAAO,QAAS,EAAGF,GAAa,mBAAmB,CAAC,EACtFH,GAAU,QAAQ,gBAAgBK,GAAO,YAAa,EAAK,EAC3DL,GAAU,QAAQ,WAAWK,GAAO,CAChC,SAAU,QACV,YAAa,WACb,YAAa,UACjB,CAAC,EACDN,GAAO,WAAW,WAAWM,EAAK,IC5DlC,IAAAK,GAAAC,GAAAC,IAAA,cACA,OAAO,eAAeA,GAAS,aAAc,CAAE,MAAO,EAAK,CAAC,EAC5D,IAAIC,GAAY,KACZC,GAAS,KACTC,GAAe,KACnB,SAASC,IAAY,CACjB,KAAK,EAAI,EACT,KAAK,EAAI,EACT,KAAK,EAAI,EACT,KAAK,EAAI,EACT,KAAK,KAAO,IAChB,CACA,IAAIC,GAAY,CACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACJ,EACIC,GAAY,CACZ,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACJ,EACA,SAASC,GAAoBC,EAAWC,EAAQ,CAC5C,IAAIC,EAASF,EAAU,KAAMG,EAAQH,EAAU,MAAOI,EAASJ,EAAU,OACrEK,EAAGC,EAAGC,EAAG,EAAGC,EAAIC,EAAIC,EAAIC,EAAOC,EAAOC,EAAOC,EAAOC,EAAWC,EAAWC,GAAWC,EAAWC,GAAUC,EAAUC,EAAUC,GAAUC,GAAIC,GAAIC,GAAIC,GAAIC,GACxJC,GAAM3B,EAASA,EAAS,EAAG4B,GAAc1B,EAAQ,EAAG2B,GAAe1B,EAAS,EAAG2B,GAAc9B,EAAS,EAAG+B,GAAaD,IAAeA,GAAc,GAAM,EAAGE,GAAa,IAAIrC,GAAasC,GAAW,KAAMC,GAAQF,GAAYG,GAAU,KAAMC,GAAW,KAAMC,GAAUzC,GAAUI,CAAM,EAAGsC,GAAUzC,GAAUG,CAAM,EAC3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E,GAAM,KACN,MAAS,oBACT,KAAQ,uCACR,MAAS,CAAC,YAAa,WAAY,UAAW,eAAe,CAC/D,EACA,CACE,GAAM,KACN,MAAS,4BACT,KAAQ,oCACR,MAAS,CACP,YACA,SACA,SACA,WACA,aACA,YACF,CACF,EACA,CACE,GAAM,KACN,MAAS,oBACT,KAAQ,oCACR,MAAS,CAAC,YAAa,WAAY,UAAW,YAAY,CAC5D,EACA,CACE,GAAM,KACN,MAAS,0BACT,KAAQ,+BACR,MAAS,CACP,YACA,SACA,SACA,WACA,aACA,OACF,CACF,EACA,CACE,GAAM,KACN,MAAS,kBACT,KAAQ,+BACR,MAAS,CAAC,YAAa,WAAY,UAAW,OAAO,CACvD,EACA,CACE,GAAM,KACN,MAAS,2BACT,KAAQ,sCACR,MAAS,CACP,YACA,SACA,SACA,WACA,aACA,cACF,CACF,EACA,CACE,GAAM,KACN,MAAS,2BACT,KAAQ,mCACR,MAAS,CACP,YACA,SACA,SACA,WACA,aACA,WACF,CACF,EACA,CACE,GAAM,KACN,MAAS,2BACT,KAAQ,8BACR,MAAS,CAAC,YAAa,SAAU,SAAU,WAAY,aAAc,MAAM,CAC7E,EACA,CACE,GAAM,KACN,MAAS,2BACT,KAAQ,oCACR,MAAS,CACP,YACA,SACA,SACA,WACA,aACA,YACF,CACF,EACA,CACE,GAAM,KACN,MAAS,2BACT,KAAQ,mCACR,MAAS,CACP,YACA,SACA,SACA,WACA,aACA,WACF,CACF,EACA,CACE,GAAM,KACN,MAAS,2BACT,KAAQ,mCACR,MAAS,CACP,YACA,SACA,SACA,WACA,aACA,WACF,CACF,EACA,CACE,GAAM,KACN,MAAS,6BACT,KAAQ,uCACR,MAAS,CACP,YACA,SACA,SACA,WACA,aACA,eACF,CACF,EACA,CACE,GAAM,KACN,MAAS,6BACT,KAAQ,mCACR,MAAS,CACP,YACA,SACA,SACA,WACA,aACA,WACF,CACF,EACA,CACE,GAAM,KACN,MAAS,2BACT,KAAQ,oCACR,MAAS,CACP,YACA,SACA,SACA,WACA,aACA,YACF,CACF,EACA,CACE,GAAM,I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I,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,SACA,UACA,QACF,EACAA,EAAI,cACF,SACA,SACA,UACA,UACA,UACA,SACF,EACAA,EAAI,MAAM,EAAIF,GAAc,EAAIA,EAAY,EAC5CE,EAAI,UAAU,CAChB,CAAC,EAEDD,GAAe,IAAI,eAAiBC,GAAkC,CACpEA,EAAI,UAAU,EACdA,EAAI,MAAMF,GAAcA,EAAY,EACpCE,EAAI,UAAU,WAAa,UAAW,EACtCA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,OACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,SACA,UACA,UACA,UACA,SACF,EACAA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,SACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,SACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,QACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,SACA,UACA,SACA,UACA,UACA,SACF,EACAA,EAAI,MAAM,EAAIF,GAAc,EAAIA,EAAY,EAC5CE,EAAI,UAAU,CAChB,CAAC,EAEDD,GAAe,IAAI,cAAgBC,GAAkC,CACnEA,EAAI,UAAU,EACdA,EAAI,MAAMF,GAAcA,EAAY,EACpCE,EAAI,UAAU,UAAY,UAAW,EACrCA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,UACA,UACA,UACA,SACA,UACA,SACF,EACAA,EAAI,cACF,UACA,SACA,UACA,SACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,SACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,SACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,QACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,SACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,SACA,UACA,SACA,UACA,SACF,EACAA,EAAI,cACF,UACA,SACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,QACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,SACA,SACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,MAAM,EAAIF,GAAc,EAAIA,EAAY,EAC5CE,EAAI,UAAU,CAChB,CAAC,EAEDD,GAAe,IAAI,aAAeC,GAAkC,CAClEA,EAAI,UAAU,EACdA,EAAI,MAAMF,GAAcA,EAAY,EACpCE,EAAI,UAAU,WAAa,UAAW,EACtCA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,UACA,UACA,UACA,SACA,SACA,SACF,EACAA,EAAI,cACF,UACA,UACA,SACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,SACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,SACA,SACF,EACAA,EAAI,cACF,SACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,MAAM,EAAIF,GAAc,EAAIA,EAAY,EAC5CE,EAAI,UAAU,CAChB,CAAC,EAEDD,GAAe,IAAI,cAAgBC,GAAkC,CACnEA,EAAI,MAAM,IAAM,GAAI,EACpBA,EAAI,UAAU,EACdA,EAAI,MAAMF,GAAcA,EAAY,EACpCE,EAAI,UAAU,WAAa,UAAW,EACtCA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,OAAO,SAAU,SAAU,EAC/BA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,SACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,SACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,SACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,SACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,SACA,UACA,SACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,SACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,SACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,SACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,UACA,UACA,SACA,SACA,QACF,EACAA,EAAI,MAAM,EAAIF,GAAc,EAAIA,EAAY,EAC5CE,EAAI,UAAU,EACdA,EAAI,MAAM,EAAG,CAAC,CAChB,CAAC,EAEDD,GAAe,IAAI,iBAAmBC,GAAkC,CACtEA,EAAI,UAAU,EACdA,EAAI,MAAMF,GAAcA,EAAY,EACpCE,EAAI,UAAU,UAAY,UAAW,EACrCA,EAAI,UACF,UACA,SACA,UACA,UACA,UACA,SACF,EACAA,EAAI,UAAU,QAAW,EAAG,EAAG,QAAW,UAAY,SAAU,EAChEA,EAAI,OAAO,UAAY,KAAM,EAC7BA,EAAI,cACF,SACA,QACA,UACA,QACA,UACA,QACF,EACAA,EAAI,cACF,UACA,SACA,UACA,SACA,UACA,QACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,SACA,SACF,EACAA,EAAI,cACF,SACA,UACA,SACA,UACA,QACA,SACF,EACAA,EAAI,cACF,SACA,UACA,QACA,UACA,SACA,SACF,EACAA,EAAI,cACF,SACA,UACA,SACA,UACA,SACA,SACF,EACAA,EAAI,cACF,SACA,UACA,UACA,SACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,SACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,SACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,SACA,UACA,SACA,UACA,QACF,EACAA,EAAI,cACF,UACA,QACA,UACA,QACA,UACA,KACF,EACAA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,SACA,UACA,SACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,SACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,SACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,SACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,SACA,SACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,SACA,UACA,UACA,SACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,SACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,MAAM,EAAIF,GAAc,EAAIA,EAAY,EAC5CE,EAAI,UAAU,CAChB,CAAC,EAEDD,GAAe,IAAI,gBAAkBC,GAAkC,CACrEA,EAAI,UAAU,EACdA,EAAI,MAAMF,GAAcA,EAAY,EACpCE,EAAI,UAAU,WAAa,UAAW,EACtCA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,SACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,SACA,UACA,SACF,EACAA,EAAI,cACF,SACA,UACA,UACA,UACA,QACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,SACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,SACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,SACA,SACF,EACAA,EAAI,cACF,SACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,SACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,MAAM,EAAIF,GAAc,EAAIA,EAAY,EAC5CE,EAAI,UAAU,CAChB,CAAC,EAEDD,GAAe,IAAI,OAASC,GAAkC,CAC5DA,EAAI,MAAM,IAAM,GAAI,EACpBA,EAAI,UAAU,EACdA,EAAI,MAAMF,GAAcA,EAAY,EACpCE,EAAI,UAAU,WAAa,UAAW,EACtCA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,UACA,SACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,SACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,SACA,UACA,SACA,UACA,SACA,QACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,MAAM,EAAIF,GAAc,EAAIA,EAAY,EAC5CE,EAAI,UAAU,EACdA,EAAI,MAAM,EAAG,CAAC,CAChB,CAAC,EAEDD,GAAe,IAAI,UAAYC,GAAkC,CAC/DA,EAAI,UAAU,EAAG,CAAC,EAClBA,EAAI,MAAM,EAAI,EAAG,EAAI,CAAC,EACtBA,EAAI,UAAU,EACdA,EAAI,MAAMF,GAAcA,EAAY,EACpCE,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,OAAO,WAAa,UAAW,EACnCA,EAAI,cACF,SACA,WACA,WACA,WACA,WACA,SACF,EACAA,EAAI,cACF,WACA,WACA,WACA,WACA,WACA,UACF,EACAA,EAAI,OAAO,WAAa,UAAW,EACnCA,EAAI,OAAO,WAAa,UAAW,EACnCA,EAAI,cACF,WACA,WACA,WACA,WACA,WACA,UACF,EACAA,EAAI,cACF,WACA,WACA,WACA,WACA,WACA,UACF,EACAA,EAAI,cACF,WACA,SACA,WACA,WACA,UACA,UACF,EACAA,EAAI,cACF,WACA,WACA,WACA,WACA,UACA,UACF,EACAA,EAAI,OAAO,WAAa,UAAW,EACnCA,EAAI,OAAO,WAAa,QAAU,EAClCA,EAAI,OAAO,WAAa,QAAU,EAClCA,EAAI,cACF,WACA,SACA,WACA,QACA,WACA,QACF,EACAA,EAAI,cACF,WACA,SACA,WACA,QACA,WACA,QACF,EACAA,EAAI,cACF,WACA,UACA,WACA,UACA,WACA,QACF,EACAA,EAAI,cACF,UACA,UACA,WACA,UACA,WACA,SACF,EACAA,EAAI,OAAO,WAAa,SAAU,EAClCA,EAAI,OAAO,SAAU,SAAU,EAC/BA,EAAI,cACF,WACA,UACA,WACA,UACA,WACA,SACF,EACAA,EAAI,cACF,WACA,UACA,WACA,UACA,WACA,SACF,EACAA,EAAI,cACF,WACA,UACA,WACA,UACA,WACA,SACF,EACAA,EAAI,cACF,WACA,UACA,WACA,UACA,WACA,SACF,EACAA,EAAI,cACF,WACA,UACA,WACA,UACA,WACA,SACF,EACAA,EAAI,OAAO,WAAa,SAAU,EAClCA,EAAI,OAAO,SAAW,SAAU,EAChCA,EAAI,OAAO,SAAW,SAAU,EAChCA,EAAI,cACF,QACA,UACA,SACA,UACA,SACA,SACF,EACAA,EAAI,cACF,OACA,UACA,UACA,UACA,QACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,SACA,UACA,QACA,UACA,SACF,EACAA,EAAI,cACF,UACA,SACA,UACA,SACA,UACA,QACF,EACAA,EAAI,cACF,UACA,QACA,UACA,SACA,UACA,QACF,EACAA,EAAI,OAAO,UAAY,QAAU,EACjCA,EAAI,OAAO,UAAY,UAAW,EAClCA,EAAI,OAAO,UAAY,UAAW,EAClCA,EAAI,cACF,UACA,WACA,UACA,WACA,UACA,UACF,EACAA,EAAI,cACF,UACA,WACA,UACA,UACA,UACA,UACF,EACAA,EAAI,cACF,UACA,WACA,UACA,WACA,UACA,UACF,EACAA,EAAI,cACF,UACA,WACA,UACA,WACA,UACA,UACF,EACAA,EAAI,OAAO,UAAY,UAAW,EAClCA,EAAI,OAAO,UAAY,UAAW,EAClCA,EAAI,cACF,UACA,WACA,UACA,WACA,UACA,UACF,EACAA,EAAI,cACF,UACA,WACA,UACA,WACA,UACA,UACF,EACAA,EAAI,cACF,UACA,WACA,UACA,UACA,UACA,UACF,EACAA,EAAI,cACF,UACA,WACA,UACA,WACA,UACA,UACF,EACAA,EAAI,OAAO,UAAY,UAAW,EAClCA,EAAI,OAAO,UAAY,UAAW,EAClCA,EAAI,OAAO,UAAY,UAAW,EAClCA,EAAI,cACF,SACA,WACA,UACA,WACA,UACA,UACF,EACAA,EAAI,cACF,UACA,WACA,WACA,WACA,WACA,UACF,EACAA,EAAI,OAAO,UAAY,UAAW,EAClCA,EAAI,OAAO,UAAY,UAAW,EAClCA,EAAI,cACF,UACA,WACA,UACA,WACA,SACA,UACF,EACAA,EAAI,cACF,UACA,WACA,UACA,WACA,UACA,UACF,EACAA,EAAI,OAAO,UAAY,QAAS,EAChCA,EAAI,cACF,UACA,SACA,UACA,SACA,SACA,QACF,EACAA,EAAI,OAAO,WAAa,QAAS,EACjCA,EAAI,cACF,WACA,SACA,WACA,SACA,WACA,QACF,EACAA,EAAI,cACF,WACA,SACA,WACA,SACA,WACA,QACF,EACAA,EAAI,OAAO,WAAa,UAAW,EACnCA,EAAI,cACF,WACA,WACA,UACA,WACA,UACA,UACF,EACAA,EAAI,MAAM,EAAIF,GAAc,EAAIA,EAAY,EAC5CE,EAAI,UAAU,EACdA,EAAI,MAAM,EAAG,CAAC,CAChB,CAAC,EAEDD,GAAe,IAAI,aAAeC,GAAkC,CAClEA,EAAI,UAAU,EACdA,EAAI,MAAMF,GAAcA,EAAY,EACpCE,EAAI,UAAU,EAAG,EAAG,EAAG,EAAG,UAAY,SAAS,EAC/CA,EAAI,OAAO,GAAI,GAAG,EAClBA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,SACA,UACA,SACA,SACF,EACAA,EAAI,cACF,SACA,UACA,SACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,SACA,SACF,EACAA,EAAI,cACF,SACA,UACA,SACA,UACA,SACA,SACF,EACAA,EAAI,cACF,SACA,UACA,OACA,UACA,QACA,SACF,EACAA,EAAI,cACF,UACA,UACA,SACA,UACA,SACA,SACF,EACAA,EAAI,cACF,QACA,UACA,QACA,UACA,SACA,QACF,EACAA,EAAI,cACF,SACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,SACA,SACA,WACA,QACF,EACAA,EAAI,cACF,WACA,UACA,WACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,SACA,SACF,EACAA,EAAI,cACF,QACA,UACA,SACA,UACA,QACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,SACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,SACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,SACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,SACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,SACA,UACA,UACA,SACF,EACAA,EAAI,MAAM,EAAIF,GAAc,EAAIA,EAAY,EAC5CE,EAAI,UAAU,CAChB,CAAC,EAGDD,GAAe,IAAI,aAAeC,GAAkC,CAClEA,EAAI,UAAU,EACdA,EAAI,MAAMF,GAAcA,EAAY,EAGpCE,EAAI,cAAc,IAAK,IAAK,GAAI,IAAK,IAAK,GAAG,EAS7CA,EAAI,MAAM,EAAIF,GAAc,EAAIA,EAAY,EAC5CE,EAAI,UAAU,CAChB,CAAC,EAEDD,GAAe,IAAI,WAAaC,GAAkC,CAChEA,EAAI,MAAM,EAAI,EAAG,EAAI,CAAC,EACtBA,EAAI,UAAU,EACdA,EAAI,MAAMF,GAAcA,EAAY,EACpCE,EAAI,OAAO,SAAW,UAAW,EACjCA,EAAI,cACF,UACA,WACA,UACA,WACA,UACA,UACF,EACAA,EAAI,cACF,UACA,WACA,UACA,WACA,SACA,UACF,EACAA,EAAI,cACF,UACA,WACA,WACA,WACA,WACA,UACF,EACAA,EAAI,cACF,WACA,WACA,WACA,QACA,WACA,OACF,EACAA,EAAI,cACF,WACA,SACA,WACA,SACA,WACA,SACF,EACAA,EAAI,OAAO,WAAa,SAAU,EAClCA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,UACA,WACA,UACA,UACA,SACA,UACF,EACAA,EAAI,OAAO,SAAW,SAAU,EAChCA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,UACA,UACA,WACA,UACA,UACF,EACAA,EAAI,OAAO,UAAY,UAAW,EAClCA,EAAI,OAAO,UAAY,QAAS,EAChCA,EAAI,cACF,SACA,SACA,SACA,UACA,WACA,SACF,EACAA,EAAI,cACF,WACA,UACA,WACA,UACA,WACA,SACF,EACAA,EAAI,cACF,WACA,UACA,WACA,UACA,WACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,SACA,SACF,EACAA,EAAI,OAAO,WAAa,SAAU,EAClCA,EAAI,cACF,WACA,UACA,WACA,UACA,WACA,SACF,EACAA,EAAI,cACF,WACA,UACA,WACA,UACA,WACA,SACF,EACAA,EAAI,cACF,WACA,UACA,WACA,UACA,WACA,SACF,EACAA,EAAI,cACF,WACA,UACA,WACA,UACA,WACA,SACF,EACAA,EAAI,cACF,WACA,UACA,WACA,UACA,WACA,QACF,EACAA,EAAI,cACF,WACA,UACA,WACA,WACA,WACA,SACF,EACAA,EAAI,cACF,WACA,WACA,WACA,WACA,WACA,UACF,EACAA,EAAI,cACF,WACA,WACA,OACA,WACA,UACA,UACF,EACAA,EAAI,cACF,UACA,WACA,UACA,WACA,UACA,UACF,EACAA,EAAI,OAAO,UAAY,UAAW,EAClCA,EAAI,OAAO,UAAY,UAAW,EAClCA,EAAI,cACF,UACA,WACA,UACA,WACA,UACA,UACF,EACAA,EAAI,cACF,UACA,WACA,UACA,WACA,UACA,UACF,EACAA,EAAI,cACF,UACA,WACA,UACA,WACA,UACA,UACF,EACAA,EAAI,cACF,UACA,WACA,UACA,WACA,UACA,UACF,EACAA,EAAI,OAAO,UAAY,UAAW,EAClCA,EAAI,OAAO,UAAY,UAAW,EAClCA,EAAI,cACF,UACA,WACA,UACA,SACA,UACA,SACF,EACAA,EAAI,cACF,UACA,SACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,WACA,UACA,WACA,UACA,WACA,SACF,EACAA,EAAI,cACF,WACA,UACA,WACA,UACA,WACA,SACF,EACAA,EAAI,cACF,WACA,UACA,WACA,UACA,WACA,SACF,EACAA,EAAI,cACF,WACA,UACA,WACA,UACA,WACA,SACF,EACAA,EAAI,cACF,WACA,UACA,WACA,UACA,WACA,SACF,EACAA,EAAI,MAAM,EAAIF,GAAc,EAAIA,EAAY,EAC5CE,EAAI,UAAU,CAChB,CAAC,EAEDD,GAAe,IACb,WACA,CAACC,EAA+BC,IAA+B,CAqH7D,GApHAD,EAAI,MAAM,IAAK,GAAG,EAClBA,EAAI,UAAU,EACdA,EAAI,MAAMF,GAAcA,EAAY,EACpCE,EAAI,UAAU,WAAa,UAAW,EACtCA,EAAI,UAAU,SAAW,EAAG,EAAG,SAAW,WAAa,UAAW,EAClEA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,SACA,UACA,UACA,UACA,SACA,SACF,EACAA,EAAI,cACF,SACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,SACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,SACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,UAAU,EAAI,SAAW,EAAG,EAAG,EAAI,SAAW,EAAG,CAAC,EACtDA,EAAI,MAAM,EAAIF,GAAc,EAAIA,EAAY,EAC5CE,EAAI,UAAU,EACdA,EAAI,MAAM,EAAI,EAAG,EAAI,CAAC,EAClBC,IAAW,OAAW,CAExB,IAAMC,EAAWF,EAAI,qBAAqB,IAAK,EAAG,IAAK,CAAC,EACxD,OAAW,CAAC,EAAGG,CAAK,IAAKF,EAAO,QAAQ,EACtCC,EAAS,aAAa,GAAKD,EAAO,OAAS,GAAIE,CAAK,EAEtDH,EAAI,UAAYE,EAChBF,EAAI,KAAK,CACX,CACF,CACF,EAEAD,GAAe,IACb,UACA,CAACC,EAA+BC,IAA+B,CAC7DD,EAAI,MAAMF,GAAcA,EAAY,EACpCE,EAAI,UAAU,WAAa,UAAW,EAGtCA,EAAI,UAAU,EACdA,EAAI,OAAO,SAAU,SAAU,EAC/BA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,OAAO,SAAU,SAAU,EAC/BA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,SACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,SACA,SACA,SACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,UACA,UACA,SACA,UACA,QACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACIC,IAAW,SACbD,EAAI,UAAYC,EAAO,CAAC,EACxBD,EAAI,KAAK,GAEXA,EAAI,UAAU,EAGdA,EAAI,UAAU,EACdA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,QACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,SACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,OAAO,QAAS,QAAQ,EAC5BA,EAAI,OAAO,UAAY,QAAQ,EAC/BA,EAAI,cACF,QACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACIC,IAAW,SACbD,EAAI,UAAYC,EAAO,CAAC,EACxBD,EAAI,KAAK,GAEXA,EAAI,UAAU,EAGdA,EAAI,UAAU,EACdA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,SACA,UACA,UACA,UACA,SACF,EACAA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,SACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACIC,IAAW,SACbD,EAAI,UAAYC,EAAO,CAAC,EACxBD,EAAI,KAAK,GAEXA,EAAI,UAAU,EAGdA,EAAI,UAAU,EACdA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,UACA,UACA,SACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,SACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,SACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,SACA,SACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,SACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,SACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,SACA,SACF,EACAA,EAAI,cACF,SACA,UACA,SACA,UACA,SACA,SACF,EACAA,EAAI,cACF,SACA,UACA,UACA,UACA,UACA,SACF,EACIC,IAAW,SACbD,EAAI,UAAYC,EAAO,CAAC,EACxBD,EAAI,KAAK,GAEXA,EAAI,UAAU,EAGdA,EAAI,UAAU,EACdA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,SACA,UACA,SACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,OAAO,UAAY,QAAQ,EAC/BA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,UACA,UACA,UACA,UACA,SACA,SACF,EACAA,EAAI,cACF,UACA,UACA,SACA,UACA,UACA,OACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,QACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,QACA,SACF,EACIC,IAAW,SACbD,EAAI,UAAYC,EAAO,CAAC,EACxBD,EAAI,KAAK,GAEXA,EAAI,UAAU,EAGdA,EAAI,UAAU,EACdA,EAAI,OAAO,UAAY,OAAO,EAC9BA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,OAAO,SAAU,QAAQ,EAC7BA,EAAI,OAAO,UAAY,QAAQ,EAC/BA,EAAI,cACF,UACA,SACA,UACA,SACA,UACA,QACF,EACAA,EAAI,cACF,UACA,SACA,UACA,UACA,UACA,SACF,EACAA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,UACA,SACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,SACA,SACF,EACAA,EAAI,cACF,SACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,SACA,UACA,UACA,SACF,EACIC,IAAW,SACbD,EAAI,UAAY,UAChBA,EAAI,KAAK,GAEXA,EAAI,UAAU,EAGdA,EAAI,UAAU,EACdA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,SACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,QACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,QACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,SACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,SACA,UACA,SACA,QACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,SACA,UACA,UACA,MACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,SACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,SACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,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UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,SACA,SACF,EACAA,EAAI,cACF,UACA,UACA,SACA,UACA,SACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,SACA,SACF,EACAA,EAAI,cACF,SACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,SACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,SACA,UACA,SACA,UACA,SACF,EACAA,EAAI,MAAM,EAAID,GAAI,EAAIA,EAAE,EACxBC,EAAI,UAAU,CAChB,CAAC,EAEDF,GAAe,IAAI,EAAIE,GAAkC,CACvDA,EAAI,UAAU,EACdA,EAAI,MAAMD,GAAIA,EAAE,EAChBC,EAAI,UAAU,WAAa,UAAW,EACtCA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,SACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,SACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,SACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,SACA,UACA,SACA,UACA,SACA,SACF,EACAA,EAAI,cACF,SACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,MAAM,EAAID,GAAI,EAAIA,EAAE,EACxBC,EAAI,UAAU,CAChB,CAAC,EAEDF,GAAe,IAAI,EAAIE,GAAkC,CACvDA,EAAI,UAAU,EACdA,EAAI,MAAMD,GAAIA,EAAE,EAChBC,EAAI,UAAU,WAAa,UAAW,EACtCA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,SACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,SACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,QACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,SACA,UACA,SACA,SACF,EACAA,EAAI,cACF,SACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,SACA,UACA,UACA,OACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,MAAM,EAAID,GAAI,EAAIA,EAAE,EACxBC,EAAI,UAAU,CAChB,CAAC,EAEDF,GAAe,IAAI,EAAIE,GAAkC,CACvDA,EAAI,UAAU,EACdA,EAAI,MAAMD,GAAIA,EAAE,EAChBC,EAAI,UAAU,WAAa,UAAW,EACtCA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,UACA,UACA,UACA,SACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,SACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,SACA,QACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,SACA,UACA,SACA,UACA,QACF,EACAA,EAAI,cACF,UACA,SACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,MAAM,EAAID,GAAI,EAAIA,EAAE,EACxBC,EAAI,UAAU,CAChB,CAAC,EAEDF,GAAe,IAAI,EAAIE,GAAkC,CACvDA,EAAI,UAAU,EACdA,EAAI,MAAMD,GAAIA,EAAE,EAChBC,EAAI,UAAU,WAAa,SAAS,EACpCA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,SACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,UACA,UACA,SACA,UACA,QACF,EACAA,EAAI,cACF,UACA,SACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,SACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,SACA,UACA,SACA,UACA,UACA,SACF,EACAA,EAAI,MAAM,EAAID,GAAI,EAAIA,EAAE,EACxBC,EAAI,UAAU,CAChB,CAAC,EAEDF,GAAe,IAAI,EAAIE,GAAkC,CACvDA,EAAI,UAAU,EACdA,EAAI,UAAU,CAChB,CAAC,EAEDF,GAAe,IAAI,EAAIE,GAAkC,CACvDA,EAAI,UAAU,EACdA,EAAI,MAAMD,GAAIA,EAAE,EAChBC,EAAI,UAAU,WAAa,UAAW,EACtCA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,QACA,SACA,SACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,SACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,UACA,UACA,SACA,UACA,SACF,EACAA,EAAI,cACF,QACA,UACA,UACA,SACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,SACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,SACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,SACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,SACA,SACF,EACAA,EAAI,cACF,UACA,UACA,SACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,OAAO,UAAY,SAAU,EACjCA,EAAI,OAAO,SAAW,SAAU,EAChCA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,QACF,EACAA,EAAI,cACF,UACA,UACA,UACA,SACA,UACA,QACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,UACA,SACF,EACAA,EAAI,cACF,UACA,UACA,UACA,UACA,SACA,SACF,EACAA,EAAI,MAAM,EAAID,GAAI,EAAIA,EAAE,EACxBC,EAAI,UAAU,CAChB,CAAC,EAEM,SAASC,GACdD,EACAE,EACM,CAEN,IAAMC,EAAgBL,GAAe,IAAII,CAAI,EAC7CE,GACED,EACA,+CAA+CD,CAAI,EACrD,EAEAF,EAAI,KAAK,EAETA,EAAI,UAAU,GAAI,GAAG,EAGrBG,EAAcH,CAAG,EACjBA,EAAI,QAAQ,CACd,CCzxCA,IAAMK,GAAkB,EAMlBC,GAAoB,EAEbC,GAAkC,YAClCC,GAAoC,cAG1C,SAASC,GACdC,EACAC,EACAC,EACAC,EACAC,EACAC,EAIAC,EAIwC,CACxC,IAAMC,EAAa,IAA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,SAAY,qBACZ,gBAAmB,qBACnB,QAAW,qBACX,aAAgB,qBAChB,qCAAwC,qBACxC,GAAM,qBACN,YAAe,qBACf,GAAM,qBACN,UAAa,qBACb,MAAS,qBACT,SAAY,qBACZ,UAAa,qBACb,OAAU,qBACV,YAAe,qBACf,MAAS,qBACT,OAAU,qBACV,WAAc,qBACd,SAAY,qBACZ,SAAY,qBACZ,YAAe,qBACf,KAAQ,qBACR,QAAW,qBACX,MAAS,qBACT,gBAAmB,qBACnB,QAAW,qBACX,GAAM,qBACN,aAAgB,qBAChB,qBAAwB,qBACxB,OAAU,qBACV,OAAU,qBACV,QAAW,qBACX,qBAAwB,qBACxB,GAAM,qBACN,QAAW,kEACX,SAAY,kEACZ,MAAS,kEACT,GAAM,qBACN,kBAAqB,qBACrB,QAAW,qBACX,WAAc,qBACd,QAAW,qBACX,aAAgB,qBAChB,UAAa,qBACb,QAAW,qBACX,cAAiB,qBACjB,eAAkB,qBAClB,MAAS,qBACT,OAAU,qBACV,SAAY,qBACZ,eAAkB,qBAClB,YAAe,6BACjB,ECniDA,IAAAC,GAAA,CACE,OAAU,CACR,QACA,QACA,YACA,YACA,UACA,aACA,cACA,eACA,YACA,YACA,WACA,WACA,SACA,aACA,aACA,WACA,gBACA,YACA,WACA,aACA,YACA,YACA,YACA,YACA,YACA,UACA,eACA,YACA,YACA,WACA,WACA,UACA,WACA,WACA,YACA,YACA,UACA,cACA,cACA,QACA,WACA,YACA,cACA,UACA,UACA,cACA,SACA,YACA,QACA,WACA,cACA,YACA,WACA,WACA,iBACA,YACA,WACA,mBACA,cACA,UACA,cACA,YACA,SACA,WACA,OACA,YACA,cACA,aACA,UACA,gBACA,aACA,kBACA,iBACA,eACA,cACA,YACA,aACA,gBACA,YACA,eACA,YACA,WACA,aACA,QACA,QACA,aACA,aACA,YACA,cACA,QACA,QACA,cACA,QACA,aACA,SACA,WACA,MACA,eACA,SACA,OACA,SACA,aACA,aACA,WACA,UACA,cACA,gBACA,cACA,SACA,iBACA,SACA,cACA,SACA,UACA,UACA,SACA,gBACA,SACA,UACA,UACA,UACA,WACA,iBACA,WACA,YACA,eACA,YACA,aACA,oBACA,YACA,YACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,SACA,aACA,aACA,aACA,WACA,UACA,UACA,kBACA,WACA,SACA,WACA,QACA,SACA,WACA,YACA,eACA,YACA,cACA,YACA,UACA,cACA,SACA,SACA,SACA,SACA,eACA,iBACA,aACA,cACA,YACA,UACA,UACA,UACA,gBACA,SACA,UACA,YACA,WACA,WACA,gBACA,YACA,WACA,WACA,YACA,WACA,WACA,WACA,mBACA,UACA,YACA,YACA,cACA,cACA,OACA,SACA,WACA,SACA,UACA,UACA,SACA,aACA,UACA,aACA,SACA,cACA,WACA,WACA,SACA,WACA,OACA,cACA,YACA,eACA,YACF,EACA,eAAgB,CAAC,UAAW,OAAO,EACnC,UAAa,CACX,eACA,aACA,WACA,YACA,WACA,eACA,QACA,SACA,aACA,UACA,WACA,eACA,QACA,YACA,YACA,OACA,UACA,eACA,WACA,QACA,WACA,SACA,OACA,YACA,YACA,YACA,YACA,SACA,cACA,QACA,aACA,aACA,QACA,SACA,UACA,UACA,cACA,cACA,YACA,cACA,gBACA,UACA,WACA,WACA,YACA,eACA,WACA,YACA,UACA,YACA,gBACA,aACA,aACA,WACA,YACA,YACA,UACA,YACA,WACA,UACA,QACA,YACA,YACA,WACA,QACA,QACA,WACA,UACA,UACA,OACA,WACA,WACA,QACA,mBACA,UACA,YACA,cACA,WACA,UACA,cACA,YACA,eACA,YACA,MACA,UACA,MACA,YACA,SACA,SACA,aACA,OACA,aACA,kBACA,UACA,QACA,OACF,EACA,aAAgB,CACd,OACA,gBACA,SACA,cACA,OACA,aACA,cACA,SACA,UACF,EACA,sBAAuB,CACrB,QACA,QACA,SACA,SACA,UACA,QACA,QACA,QACA,SACA,UACA,UACA,QACA,MACA,eACA,eACA,kBACA,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", "names": ["require_version", "__commonJSMin", "exports", "module", "require_jquery", "__commonJSMin", "exports", "module", "global", "factory", "w", "window", "noGlobal", "arr", "getProto", "slice", "flat", "array", "push", "indexOf", "class2type", "toString", "hasOwn", "fnToString", "ObjectFunctionString", "support", "isFunction", "obj", "isWindow", "document", "preservedScriptAttributes", "DOMEval", "code", "node", "doc", "i", "val", "script", "toType", "version", "rhtmlSuffix", "jQuery", "selector", "context", "num", "elems", "ret", "callback", "elem", "_elem", "len", "j", "options", "name", "src", "copy", "copyIsArray", "clone", "target", "length", "deep", "msg", "proto", "Ctor", "isArrayLike", "nodeType", "results", "namespace", "docElem", "first", "second", "invert", "callbackInverse", "matches", "callbackExpect", "arg", "value", "_i", "type", "nodeName", "pop", "sort", "splice", "whitespace", "rtrimCSS", "a", "b", "bup", "rcssescape", "fcssescape", "ch", "asCodePoint", "sel", "preferredDoc", "pushNative", "Expr", "outermostContext", "sortInput", "hasDuplicate", "documentElement", "documentIsHTML", "rbuggyQSA", "expando", "dirruns", "done", "classCache", "createCache", "tokenCache", "compilerCache", "nonnativeSelectorCache", "sortOrder", "booleans", "identifier", "attributes", "pseudos", "rwhitespace", "rcomma", "rleadingCombinator", "rdescend", "rpseudo", "ridentifier", "matchExpr", "rinputs", "rheader", "rquickExpr", "rsibling", "runescape", "funescape", "escape", "nonHex", "high", "unloadHandler", "setDocument", "inDisabledFieldset", "addCombinator", "safeActiveElement", "els", "find", "seed", "m", "nid", "match", "groups", "newSelector", "newContext", "testContext", "tokenize", "toSelector", "select", "keys", "cache", "key", "markFunction", "fn", "assert", "el", "createInputPseudo", "createButtonPseudo", "createDisabledPseudo", "disabled", "createPositionalPseudo", "argument", "matchIndexes", "subWindow", "id", "attrId", "tag", "className", "input", "compare", "expr", "elements", "duplicates", "excess", "unquoted", "nodeNameSelector", "expectedNodeName", "pattern", "operator", "check", "result", "what", "_argument", "last", "simple", "forward", "ofType", "_context", "xml", "outerCache", "nodeIndex", "start", "dir", "parent", "useCache", "diff", "pseudo", "args", "idx", "matched", "matcher", "compile", "unmatched", "text", "lang", "elemLang", "hash", "attr", "_matchIndexes", "setFilters", "parseOnly", "tokens", "soFar", "preFilters", "cached", "combinator", "base", "skip", "checkNonElements", "doneName", "oldCache", "newCache", "elementMatcher", "matchers", "multipleContexts", "contexts", "condense", "map", "filter", "newUnmatched", "mapped", "setMatcher", "preFilter", "postFilter", "postFinder", "postSelector", "temp", "matcherOut", "preMap", "postMap", "preexisting", "matcherIn", "matcherFromTokens", "checkContext", "leadingRelative", "implicitRelative", "matchContext", "matchAnyContext", "matcherFromGroupMatchers", "elementMatchers", "setMatchers", "bySet", "byElement", "superMatcher", "outermost", "matchedCount", "setMatched", "contextBackup", "dirrunsUnique", "token", "compiled", "until", "truncate", "siblings", "n", "rneedsContext", "rsingleTag", "winnow", "qualifier", "not", "self", "rootjQuery", "init", "root", "rparentsprev", "guaranteedUnique", "targets", "l", "selectors", "cur", "sibling", "rnothtmlwhite", "createOptions", "object", "_", "flag", "firing", "memory", "fired", "locked", "list", "queue", "firingIndex", "fire", "add", "index", "Identity", "v", "Thrower", "ex", "adoptValue", "resolve", "reject", "noValue", "method", "func", "tuples", "state", "promise", "deferred", "fns", "newDefer", "tuple", "returned", "onFulfilled", "onRejected", "onProgress", "maxDepth", "depth", "handler", "special", "that", "mightThrow", "then", "process", "e", "stateString", "singleValue", "remaining", "resolveContexts", "resolveValues", "primary", "updateFunc", "rerrorNames", "error", "asyncError", "readyList", "wait", "completed", "access", "chainable", "emptyGet", "raw", "bulk", "_key", "rmsPrefix", "rdashAlpha", "fcamelCase", "_all", "letter", "camelCase", "string", "acceptData", "owner", "Data", "data", "prop", "dataPriv", "dataUser", "rbrace", "rmultiDash", "getData", "dataAttr", "attrs", "startLength", "hooks", "next", "setter", "tmp", "count", "defer", "pnum", "rcssNum", "cssExpand", "isAttached", "composed", "isHiddenWithinTree", "adjustCSS", "valueParts", "tween", "adjusted", "scale", "maxIterations", "currentValue", "initial", "unit", "initialInUnit", "defaultDisplayMap", "getDefaultDisplay", "display", "showHide", "show", "values", "rcheckableType", "rtagName", "rscriptType", "fragment", "div", "wrapMap", "getAll", "setGlobalEval", "refElements", "rhtml", "buildFragment", "scripts", "selection", "ignored", "wrap", "attached", "nodes", "rtypenamespace", "returnTrue", "returnFalse", "on", "types", "one", "origFn", "event", "handleObjIn", "eventHandle", "events", "t", "handleObj", "handlers", "namespaces", "origType", "elemData", "mappedTypes", "origCount", "nativeEvent", "handlerQueue", "matchedHandlers", "matchedSelectors", "delegateCount", "hook", "originalEvent", "leverageNative", "isSetup", "saved", "handle", "props", "delegateType", "focusMappedHandler", "attaches", "dataHolder", "orig", "fix", "related", "rnoInnerhtml", "rchecked", "rcleanScript", "manipulationTarget", "content", "disableScript", "restoreScript", "cloneCopyEvent", "dest", "pdataOld", "udataOld", "udataCur", "fixInput", "domManip", "collection", "hasScripts", "iNoClone", "valueIsFunction", "remove", "keepData", "html", "dataAndEvents", "deepDataAndEvents", "srcElements", "destElements", "inPage", "original", "insert", "rnumnonpx", "rcustomProp", "getStyles", "view", "swap", "old", "rboxStyle", "computeStyleTests", "container", "divStyle", "pixelPositionVal", "reliableMarginLeftVal", "roundPixelMeasures", "pixelBoxStylesVal", "boxSizingReliableVal", "scrollboxSizeVal", "measure", "reliableTrDimensionsVal", "table", "tr", "trChild", "trStyle", "curCSS", "computed", "width", "minWidth", "maxWidth", "isCustomProp", "style", "addGetHookIf", "conditionFn", "hookFn", "cssPrefixes", "emptyStyle", "vendorProps", "vendorPropName", "capName", "finalPropName", "final", "rdisplayswap", "cssShow", "cssNormalTransform", "setPositiveNumber", "subtract", "boxModelAdjustment", "dimension", "box", "isBorderBox", "styles", "computedVal", "extra", "delta", "marginDelta", "getWidthOrHeight", "boxSizingNeeded", "valueIsBorderBox", "offsetProp", "origName", "scrollboxSizeBuggy", "prefix", "suffix", "expanded", "parts", "Tween", "end", "easing", "percent", "eased", "p", "fxNow", "inProgress", "rfxtypes", "rrun", "schedule", "createFxNow", "genFx", "includeWidth", "which", "createTween", "animation", "Animation", "defaultPrefilter", "opts", "toggle", "oldfire", "propTween", "restoreDisplay", "isBox", "anim", "hidden", "dataShow", "propFilter", "specialEasing", "properties", "stopped", "tick", "currentTime", "gotoEnd", "prepend", "speed", "opt", "to", "empty", "optall", "doAnimation", "clearQueue", "stopQueue", "stop", "dequeue", "timers", "cssFn", "timer", "time", "timeout", "boolHook", "attrHandle", "nType", "attrNames", "getter", "isXML", "lowercaseName", "rfocusable", "rclickable", "tabindex", "stripAndCollapse", "getClass", "classesToArray", "classNames", "curValue", "finalValue", "stateVal", "isValidValue", "rreturn", "option", "max", "optionSet", "location", "nonce", "rquery", "parserErrorElem", "rfocusMorph", "stopPropagationCallback", "onlyHandlers", "bubbleType", "ontype", "lastElement", "eventPath", "rbracket", "rCRLF", "rsubmitterTypes", "rsubmittable", "buildParams", "traditional", "s", "valueOrFunction", "r20", "rhash", "rantiCache", "rheaders", "rlocalProtocol", "rnoContent", "rprotocol", "prefilters", "transports", "allTypes", "originAnchor", "addToPrefiltersOrTransports", "structure", "dataTypeExpression", "dataType", "dataTypes", "inspectPrefiltersOrTransports", "originalOptions", "jqXHR", "inspected", "seekingTransport", "inspect", "selected", "prefilterOrFactory", "dataTypeOrTransport", "ajaxExtend", "flatOptions", "ajaxHandleResponses", "responses", "ct", "finalDataType", "firstDataType", "contents", "ajaxConvert", "response", "isSuccess", "conv2", "current", "conv", "prev", "converters", "settings", "url", "transport", "cacheURL", "responseHeadersString", "responseHeaders", "timeoutTimer", "urlAnchor", "fireGlobals", "uncached", "callbackContext", "globalEventContext", "completeDeferred", "statusCode", "requestHeaders", "requestHeadersNames", "strAbort", "statusText", "finalText", "status", "nativeStatusText", "headers", "success", "modified", "htmlIsFunction", "xhrSuccessStatus", "xhrSupported", "errorCallback", "complete", "xhr", "evt", "oldCallbacks", "rjsonp", "originalSettings", "callbackName", "overwritten", "responseContainer", "jsonProp", "body", "keepScripts", "parsed", "params", "off", "responseText", "curPosition", "curLeft", "curCSSTop", "curTop", "curOffset", "curCSSLeft", "calculatePosition", "position", "curElem", "rect", "win", "offsetParent", "offset", "parentOffset", "top", "defaultExtra", "funcName", "margin", "fnOver", "fnOut", "rtrim", "proxy", "hold", "_jQuery", "_$", "require_Global", "__commonJSMin", "exports", "PI_OVER_180", "detectBrowser", "_detectIE", "ua", "msie", "trident", "rv", "edge", "userAgent", "match", "mobile", "ieMobile", "param", "angle", "Konva", "NodeClass", "require_Util", "__commonJSMin", "exports", "Global_1", "Collection", "arr", "collection", "len", "n", "methodName", "args", "constructor", "prot", "func", "Transform", "m", "point", "x", "y", "sx", "sy", "rad", "c", "s", "m11", "m12", "m21", "m22", "matrix", "dx", "dy", "d", "m0", "m1", "m2", "m3", "m4", "m5", "yt", "xt", "OBJECT_ARRAY", "OBJECT_NUMBER", "OBJECT_STRING", "OBJECT_BOOLEAN", "PI_OVER_DEG180", "DEG180_OVER_PI", "HASH", "EMPTY_STRING", "ZERO", "KONVA_WARNING", "KONVA_ERROR", "RGB_PAREN", "COLORS", "RGB_REGEX", "animQueue", "obj", "val", "selector", "firstChar", "number", "callback", "queue", "cb", "canvas", "el", "retArr", "util", "url", "imageObj", "r", "g", "b", "hex", "bigint", "randColor", "def", "color", "rgb", "str", "parts", "r1", "r2", "retObj", "key", "deg", "child", "parent", "Ctor", "oldProto", "x0", "y0", "x1", "y1", "x2", "y2", "t", "d01", "d12", "fa", "fb", "p1x", "p1y", "p2x", "p2y", "p", "tension", "allPoints", "cp", "left", "right", "x3", "y3", "dist", "pd2", "u", "pt", "line", "isClosed", "pc", "p1", "i", "p2", "proj", "px", "py", "pdist", "startArray", "endArray", "start", "end", "temp", "newStart", "pr", "desc", "target", "source", "require_Validators", "__commonJSMin", "exports", "Global_1", "Util_1", "_formatValue", "val", "RGBComponent", "alphaComponent", "getNumberValidator", "attr", "getNumberOrAutoValidator", "isNumber", "isAuto", "getStringValidator", "getFunctionValidator", "getNumberArrayValidator", "item", "getBooleanValidator", "isBool", "getComponentValidator", "components", "require_Factory", "__commonJSMin", "exports", "Util_1", "Validators_1", "GET", "SET", "constructor", "attr", "def", "validator", "after", "method", "val", "components", "len", "capitalize", "getter", "setter", "n", "component", "ret", "basicValidator", "oldVal", "key", "capitalizedAttr", "message", "methods", "oldMethodName", "newMethodName", "oldGetter", "oldSetter", "deprecated", "require_Context", "__commonJSMin", "exports", "__extends", "extendStatics", "d", "b", "p", "__", "Util_1", "Global_1", "COMMA", "OPEN_PAREN", "CLOSE_PAREN", "OPEN_PAREN_BRACKET", "CLOSE_BRACKET_PAREN", "SEMICOLON", "DOUBLE_PAREN", "EQUALS", "CONTEXT_METHODS", "CONTEXT_PROPERTIES", "traceArrMax", "Context", "canvas", "shape", "relaxed", "traceArr", "len", "str", "n", "trace", "method", "args", "pixelRatio", "bounds", "lineCap", "absOpacity", "lineJoin", "attr", "val", "a0", "a1", "a2", "a3", "a4", "a5", "a", "a6", "a7", "a8", "_context", "x", "y", "width", "height", "text", "that", "_simplifyArray", "origSetter", "func", "methodName", "origMethod", "ret", "prop", "node", "globalCompositeOperation", "SceneContext", "_super", "fill", "fillPatternX", "fillPatternY", "fillPatternScaleX", "fillPatternScaleY", "fillPatternRotation", "fillPatternOffsetX", "fillPatternOffsetY", "grd", "hasColor", "fillPriority", "hasPattern", "hasLinearGradient", "hasRadialGradient", "start", "end", "colorStops", "dash", "strokeScaleEnabled", "util", "color", "blur", "offset", "scale", "ratio", "scaleX", "scaleY", "HitContext", "hitStrokeWidth", "strokeWidth", "require_Canvas", "__commonJSMin", "exports", "__extends", "extendStatics", "d", "b", "p", "__", "Util_1", "Context_1", "Global_1", "Factory_1", "Validators_1", "_pixelRatio", "getDevicePixelRatio", "canvas", "context", "devicePixelRatio", "backingStoreRatio", "Canvas", "config", "conf", "pixelRatio", "previousRatio", "width", "_context", "height", "mimeType", "quality", "err", "SceneCanvas", "_super", "_this", "HitCanvas", "require_Animation", "__commonJSMin", "exports", "Global_1", "now", "Animation", "func", "layers", "lays", "layer", "len", "n", "a", "animations", "time", "anim", "id", "layerHash", "i", "layersLen", "key", "needRedraw", "Anim", "require_DragAndDrop", "__commonJSMin", "exports", "Animation_1", "Global_1", "b", "evt", "node", "pos", "dragDistance", "distance", "drawNode", "dragEndNode", "require_Node", "__commonJSMin", "exports", "Util_1", "Factory_1", "Canvas_1", "Global_1", "DragAndDrop_1", "Validators_1", "_addId", "node", "id", "name", "_id", "nodes", "n", "no", "ABSOLUTE_OPACITY", "ABSOLUTE_TRANSFORM", "ABSOLUTE_SCALE", "CANVAS", "CHANGE", "CHILDREN", "KONVA", "LISTENING", "MOUSEENTER", "MOUSELEAVE", "NAME", "SET", "SHAPE", "SPACE", "STAGE", "TRANSFORM", "UPPER_STAGE", "VISIBLE", "CLONE_BLACK_LIST", "TRANSFORM_CHANGE_STR", "SCALE_CHANGE_STR", "emptyChildren", "idCounter", "Node", "config", "_this", "attr", "privateGetter", "cache", "conf", "rect", "width", "height", "pixelRatio", "x", "y", "offset", "drawBorder", "cachedSceneCanvas", "cachedFilterCanvas", "cachedHitCanvas", "sceneContext", "hitContext", "top", "points", "minX", "minY", "maxX", "maxY", "trans", "point", "transformed", "context", "canvasCache", "cacheCanvas", "ratio", "hitCanvas", "filters", "cachedCanvas", "sceneCanvas", "filterCanvas", "filterContext", "len", "imageData", "filter", "e", "evtStr", "handler", "events", "event", "parts", "baseEvent", "callback", "t", "evt", "type", "selector", "stopNode", "targets", "i", "parent", "names", "subname", "method", "ancestors", "key", "listening", "relativeTo", "visible", "layer", "depth", "that", "index", "child", "addChildren", "children", "pos", "absoluteMatrix", "absoluteTransform", "origTrans", "it", "change", "changeX", "changeY", "func", "family", "theta", "zIndex", "absOpacity", "newContainer", "obj", "attrs", "val", "getter", "defaultValue", "nonPlainObject", "includeSelf", "res", "ancestor", "selectorArr", "sel", "eventType", "bubble", "at", "transformsEnabled", "scaleX", "scaleY", "m", "rotation", "skewX", "skewY", "offsetX", "offsetY", "allListeners", "listener", "blockAttr", "box", "stage", "canvas", "mimeType", "quality", "url", "img", "size", "evtListeners", "evtName", "oldVal", "newVal", "oldId", "oldNames", "newNames", "oldName", "newName", "fullName", "component", "compareShape", "shouldStop", "stopBubble", "ap", "dbf", "newNodePos", "draggable", "shouldCheckButton", "canDrag", "dd", "data", "container", "className", "Class", "isValid", "require_Container", "__commonJSMin", "exports", "__extends", "extendStatics", "d", "b", "p", "__", "Util_1", "Factory_1", "Node_1", "DragAndDrop_1", "Validators_1", "Container", "_super", "_this", "filterFunc", "results", "child", "children", "selector", "result", "findOne", "retArr", "node", "valid", "fn", "shouldStop", "i", "obj", "len", "n", "arr", "parent", "no", "pos", "shape", "can", "top", "caching", "layer", "canvas", "context", "cachedCanvas", "cachedSceneCanvas", "cachedHitCanvas", "drawMethod", "skipBuffer", "skipComposition", "clipWidth", "clipHeight", "clipFunc", "hasClip", "clipX", "clipY", "transform", "m", "hasComposition", "layerUnderDrag", "attrs", "skipTransform", "relativeTo", "minX", "minY", "maxX", "maxY", "selfRect", "that", "rect", "shapes", "hasVisible", "require_PointerEvents", "__commonJSMin", "exports", "Captures", "getCapturedShape", "pointerId", "createEvent", "evt", "hasPointerCapture", "shape", "setPointerCapture", "releaseCapture", "stage", "target", "require_Stage", "__commonJSMin", "exports", "__extends", "extendStatics", "d", "b", "p", "__", "Util_1", "Factory_1", "Container_1", "Global_1", "Canvas_1", "DragAndDrop_1", "Global_2", "PointerEvents", "STAGE", "STRING", "PX", "MOUSEOUT", "MOUSELEAVE", "MOUSEOVER", "MOUSEENTER", "MOUSEMOVE", "MOUSEDOWN", "MOUSEUP", "POINTERMOVE", "POINTERDOWN", "POINTERUP", "POINTERCANCEL", "LOSTPOINTERCAPTURE", "CONTEXTMENU", "CLICK", "DBL_CLICK", "TOUCHSTART", "TOUCHEND", "TAP", "DBL_TAP", "TOUCHMOVE", "WHEEL", "CONTENT_MOUSEOUT", "CONTENT_MOUSEOVER", "CONTENT_MOUSEMOVE", "CONTENT_MOUSEDOWN", "CONTENT_MOUSEUP", "CONTENT_CONTEXTMENU", "CONTENT_CLICK", "CONTENT_DBL_CLICK", "CONTENT_TOUCHSTART", "CONTENT_TOUCHEND", "CONTENT_DBL_TAP", "CONTENT_TAP", "CONTENT_TOUCHMOVE", "CONTENT_WHEEL", "RELATIVE", "KONVA_CONTENT", "UNDERSCORE", "CONTAINER", "MAX_LAYERS_NUMBER", "EMPTY_STRING", "EVENTS", "eventsLength", "addEvent", "ctx", "eventName", "evt", "NO_POINTERS_MESSAGE", "checkNoClip", "attrs", "Stage", "_super", "config", "_this", "child", "isLayer", "isFastLayer", "valid", "style", "container", "className", "id", "layers", "len", "n", "obj", "content", "index", "x", "y", "canvas", "_context", "layer", "layerCanvas", "pos", "selector", "end", "shape", "width", "height", "length", "pointerId", "targetShape", "differentTarget", "clickStartShape", "clickEndShape", "fireDblClick", "contentPosition", "touch", "rect", "require_BaseLayer", "__commonJSMin", "exports", "__extends", "extendStatics", "d", "b", "p", "__", "Util_1", "Container_1", "Node_1", "Factory_1", "Canvas_1", "BaseLayer", "_super", "config", "_this", "c", "bounds", "index", "stage", "moved", "children", "_canvas", "_a", "width", "height", "visible", "pos", "selector", "shape", "context", "top", "m", "require_Shape", "__commonJSMin", "exports", "__extends", "extendStatics", "d", "b", "p", "__", "Util_1", "Factory_1", "Node_1", "Validators_1", "Global_1", "PointerEvents", "HAS_SHADOW", "SHADOW_RGBA", "patternImage", "linearGradient", "radialGradient", "dummyContext", "getDummyContext", "_fillFunc", "context", "_strokeFunc", "_fillFuncHit", "_strokeFuncHit", "_clearHasShadowCache", "_clearGetShadowRGBACache", "_clearFillPatternCache", "_clearLinearGradientCache", "_clearRadialGradientCache", "Shape", "_super", "config", "_this", "key", "ctx", "colorStops", "start", "end", "grd", "n", "rgba", "point", "stage", "bufferHitCanvas", "caching", "val", "size", "attrs", "skipTransform", "relativeTo", "fillRect", "applyStroke", "strokeWidth", "fillAndStrokeWidth", "fillAndStrokeHeight", "applyShadow", "shadowOffsetX", "shadowOffsetY", "preWidth", "preHeight", "blurRadius", "width", "height", "roundingOffset", "rect", "can", "top", "skipBuffer", "layer", "canvas", "cachedCanvas", "drawFunc", "hasShadow", "hasStroke", "bufferCanvas", "bufferContext", "m", "ratio", "o", "cachedHitCanvas", "alphaThreshold", "sceneCanvas", "hitCanvas", "hitContext", "hitWidth", "hitHeight", "hitImageData", "hitData", "len", "rgbColorKey", "i", "alpha", "e", "pointerId", "require_Layer", "__commonJSMin", "exports", "__extends", "extendStatics", "d", "b", "p", "__", "Util_1", "Container_1", "Factory_1", "BaseLayer_1", "Canvas_1", "Shape_1", "Validators_1", "Global_1", "HASH", "BEFORE_DRAW", "DRAW", "INTERSECTION_OFFSETS", "INTERSECTION_OFFSETS_LEN", "Layer", "_super", "_this", "width", "height", "child", "type", "pos", "selector", "obj", "i", "intersectionOffset", "shape", "spiralSearchDistance", "continueSearch", "ratio", "p3", "colorKey", "can", "top", "layer", "canvas", "bounds", "parent", "added", "_a", "require_FastLayer", "__commonJSMin", "exports", "__extends", "extendStatics", "d", "b", "p", "__", "Util_1", "Container_1", "BaseLayer_1", "Global_1", "FastLayer", "_super", "child", "type", "width", "height", "can", "layer", "canvas", "require_Group", "__commonJSMin", "exports", "__extends", "extendStatics", "d", "b", "p", "__", "Util_1", "Container_1", "Global_1", "Group", "_super", "child", "type", "require_Tween", "__commonJSMin", "exports", "Util_1", "Animation_1", "Node_1", "Global_1", "blacklist", "PAUSED", "PLAYING", "REVERSING", "idCounter", "colorAttrs", "TweenEngine", "prop", "propFunc", "func", "begin", "finish", "duration", "yoyo", "str", "handler", "p", "Tween", "config", "that", "node", "nodeId", "easing", "key", "layers", "i", "end", "start", "diff", "tweenId", "n", "len", "trueEnd", "trueStart", "endRGBA", "startRGBA", "attrs", "attr", "newVal", "_this", "thisId", "params", "onFinish", "tween", "t", "b", "c", "d", "s", "a", "require_CoreInternals", "__commonJSMin", "exports", "Global_1", "Util_1", "Node_1", "Container_1", "Stage_1", "Layer_1", "FastLayer_1", "Group_1", "DragAndDrop_1", "Shape_1", "Animation_1", "Tween_1", "Context_1", "Canvas_1", "require_Arc", "__commonJSMin", "exports", "__extends", "extendStatics", "d", "b", "p", "__", "Util_1", "Factory_1", "Shape_1", "Global_1", "Validators_1", "Global_2", "Arc", "_super", "context", "angle", "clockwise", "width", "height", "require_Line", "__commonJSMin", "exports", "__extends", "extendStatics", "d", "b", "p", "__", "Util_1", "Factory_1", "Shape_1", "Validators_1", "Global_1", "Line", "_super", "config", "_this", "context", "points", "length", "tension", "closed", "bezier", "tp", "len", "n", "firstControlPoints", "lastControlPoints", "middle", "minX", "maxX", "minY", "maxY", "x", "y", "i", "require_Arrow", "__commonJSMin", "exports", "__extends", "extendStatics", "d", "b", "p", "__", "Util_1", "Factory_1", "Line_1", "Validators_1", "Global_1", "Arrow", "_super", "ctx", "PI2", "points", "tp", "fromTension", "n", "dx", "dy", "radians", "length", "width", "isDashEnabled", "require_Circle", "__commonJSMin", "exports", "__extends", "extendStatics", "d", "b", "p", "__", "Util_1", "Factory_1", "Shape_1", "Validators_1", "Global_1", "Circle", "_super", "context", "width", "height", "require_Ellipse", "__commonJSMin", "exports", "__extends", "extendStatics", "d", "b", "p", "__", "Util_1", "Factory_1", "Shape_1", "Validators_1", "Global_1", "Ellipse", "_super", "context", "rx", "ry", "width", "height", "require_Image", "__commonJSMin", "exports", "__extends", "extendStatics", "d", "b", "p", "__", "Util_1", "Factory_1", "Shape_1", "Validators_1", "Global_1", "Image", "_super", "context", "width", "height", "image", "cropWidth", "cropHeight", "params", "url", "callback", "img", "require_Label", "__commonJSMin", "exports", "__extends", "extendStatics", "d", "b", "p", "__", "Util_1", "Factory_1", "Shape_1", "Group_1", "Validators_1", "Global_1", "ATTR_CHANGE_LIST", "CHANGE_KONVA", "NONE", "UP", "RIGHT", "DOWN", "LEFT", "attrChangeListLen", "Label", "_super", "config", "_this", "evt", "text", "that", "n", "func", "tag", "width", "height", "pointerDirection", "pointerWidth", "x", "y", "pointerHeight", "Tag", "context", "cornerRadius", "direction", "require_Path", "__commonJSMin", "exports", "__extends", "extendStatics", "d", "b", "p", "__", "Util_1", "Factory_1", "Shape_1", "Global_1", "Path", "_super", "config", "_this", "i", "context", "ca", "n", "c", "cx", "cy", "rx", "ry", "theta", "dTheta", "psi", "fs", "r", "scaleX", "scaleY", "points", "data", "minX", "maxX", "minY", "maxY", "x", "y", "length", "point", "ii", "cp", "x1", "y1", "x2", "y2", "dist", "P1x", "P1y", "P2x", "P2y", "fromX", "fromY", "run", "rise", "pt", "ix", "iy", "len", "u", "pRise", "pRun", "pct", "P3x", "P3y", "P4x", "P4y", "CB1", "t", "CB2", "CB3", "CB4", "QB1", "QB2", "QB3", "cosPsi", "sinPsi", "cs", "cc", "arr", "coords", "cpx", "cpy", "re", "match", "str", "j", "jlen", "parsed", "cmd", "startX", "startY", "prevCmd", "ctlPtx", "ctlPty", "fa", "dx", "dy", "idx", "p1", "p2", "path", "start", "end", "inc", "psiDeg", "xp", "yp", "lambda", "f", "cxp", "cyp", "vMag", "v", "vRatio", "vAngle", "require_Rect", "__commonJSMin", "exports", "__extends", "extendStatics", "d", "b", "p", "__", "Util_1", "Factory_1", "Shape_1", "Global_1", "Rect", "_super", "context", "cornerRadius", "width", "height", "topLeft", "topRight", "bottomLeft", "bottomRight", "require_RegularPolygon", "__commonJSMin", "exports", "__extends", "extendStatics", "d", "b", "p", "__", "Util_1", "Factory_1", "Shape_1", "Validators_1", "Global_1", "RegularPolygon", "_super", "context", "sides", "radius", "n", "x", "y", "width", "height", "require_Ring", "__commonJSMin", "exports", "__extends", "extendStatics", "d", "b", "p", "__", "Util_1", "Factory_1", "Shape_1", "Validators_1", "Global_1", "PIx2", "Ring", "_super", "context", "width", "height", "require_Sprite", "__commonJSMin", "exports", "__extends", "extendStatics", "d", "b", "p", "__", "Util_1", "Factory_1", "Shape_1", "Animation_1", "Validators_1", "Global_1", "Sprite", "_super", "config", "_this", "updated", "context", "anim", "index", "ix4", "set", "offsets", "x", "y", "width", "height", "image", "offset", "ix2", "that", "layer", "animation", "animations", "len", "require_Star", "__commonJSMin", "exports", "__extends", "extendStatics", "d", "b", "p", "__", "Util_1", "Factory_1", "Shape_1", "Validators_1", "Global_1", "Star", "_super", "context", "innerRadius", "outerRadius", "numPoints", "n", "radius", "x", "y", "width", "height", "require_Text", "__commonJSMin", "exports", "__extends", "extendStatics", "d", "b", "p", "__", "Util_1", "Factory_1", "Shape_1", "Global_1", "Validators_1", "Global_2", "AUTO", "CENTER", "JUSTIFY", "CHANGE_KONVA", "CONTEXT_2D", "DASH", "LEFT", "TEXT", "TEXT_UPPER", "TOP", "BOTTOM", "MIDDLE", "NORMAL", "PX_SPACE", "SPACE", "RIGHT", "WORD", "CHAR", "NONE", "ELLIPSIS", "ATTR_CHANGE_LIST", "attrChangeListLen", "dummyContext", "getDummyContext", "_fillFunc", "context", "_strokeFunc", "checkDefaultFill", "config", "Text", "_super", "_this", "n", "padding", "fontSize", "lineHeightPx", "textArr", "textArrLen", "verticalAlign", "alignY", "align", "totalWidth", "letterSpacing", "fill", "textDecoration", "shouldUnderline", "shouldLineThrough", "translateY", "lineTranslateX", "lineTranslateY", "obj", "text", "width", "lastLine", "spacesNumber", "oneWord", "lineWidth", "li", "letter", "height", "str", "isAuto", "_context", "metrics", "line", "length", "lines", "textWidth", "fixedWidth", "fixedHeight", "maxWidth", "maxHeightPx", "currentHeightPx", "wrap", "shouldWrap", "wrapAtWord", "shouldAddEllipsis", "additionalWidth", "i", "max", "low", "high", "match", "matchWidth", "mid", "substr", "substrWidth", "wrapIndex", "nextChar", "nextIsSpaceOrDash", "require_TextPath", "__commonJSMin", "exports", "__extends", "extendStatics", "d", "b", "p", "__", "Util_1", "Factory_1", "Shape_1", "Path_1", "Text_1", "Validators_1", "Global_1", "EMPTY_STRING", "NORMAL", "_fillFunc", "context", "_strokeFunc", "TextPath", "_super", "config", "_this", "textDecoration", "fill", "fontSize", "glyphInfo", "i", "p0", "p1", "text", "dummyCanvas", "_context", "metrics", "that", "size", "letterSpacing", "align", "kerningFunc", "textFullWidth", "fullPathWidth", "l", "offset", "charArr", "spacesNumber", "pathCmd", "pIndex", "currentT", "getNextPathSegment", "pathData", "j", "findSegmentToFitCharacter", "c", "glyphWidth", "currLen", "attempts", "cumulativePathLength", "needNewSegment", "start", "dTheta", "end", "testChar", "k", "width", "kern", "midpoint", "rotation", "points", "info", "minX", "maxX", "minY", "maxY", "x", "y", "require_Transformer", "__commonJSMin", "exports", "__extends", "extendStatics", "d", "b", "p", "__", "Util_1", "Factory_1", "Node_1", "Shape_1", "Rect_1", "Group_1", "Global_1", "Validators_1", "Global_2", "ATTR_CHANGE_LIST", "NODE_RECT", "TRANSFORM_CHANGE_STR", "ANGLES", "getCursor", "anchorName", "rad", "isMirrored", "angle", "ANCHORS_NAMES", "MAX_SAFE_INTEGER", "Transformer", "_super", "config", "_this", "node", "additionalEvents", "prop", "onChange", "elementsCreated", "rect", "rotation", "dx", "dy", "name", "anchor", "self", "e", "scale", "cursor", "back", "ctx", "tr", "padding", "attrs", "width", "height", "hypotenuse", "x", "y", "newHypotenuse", "resizerNode", "stage", "box", "zeroPoint", "pointerPos", "newAbsPos", "keepProportion", "reverse", "pos", "dAlpha", "rot", "newRotation", "alpha", "newAlpha", "snaps", "offset", "i", "dif", "absPos", "centeredScaling", "topLeft", "bottomRight", "topOffsetX", "topOffsetY", "bottomOffsetX", "bottomOffsetY", "newAttrs", "evt", "boundBoxFunc", "oldAttrs", "pure", "scaleX", "scaleY", "invertedScale", "enabledAnchors", "resizeEnabled", "anchorSize", "scaledRotateAnchorOffset", "validateAnchors", "val", "require_Wedge", "__commonJSMin", "exports", "__extends", "extendStatics", "d", "b", "p", "__", "Util_1", "Factory_1", "Shape_1", "Global_1", "Validators_1", "Global_2", "Wedge", "_super", "context", "width", "height", "require_Blur", "__commonJSMin", "exports", "Factory_1", "Node_1", "Validators_1", "BlurStack", "mul_table", "shg_table", "filterGaussBlurRGBA", "imageData", "radius", "pixels", "width", "height", "x", "y", "i", "yp", "yi", "yw", "r_sum", "g_sum", "b_sum", "a_sum", "r_out_sum", "g_out_sum", "b_out_sum", "a_out_sum", "r_in_sum", "g_in_sum", "b_in_sum", "a_in_sum", "pr", "pg", "pb", "pa", "rbs", "div", "widthMinus1", "heightMinus1", "radiusPlus1", "sumFactor", "stackStart", "stackEnd", "stack", "stackIn", "stackOut", "mul_sum", "shg_sum", "require_Brighten", "__commonJSMin", "exports", "Factory_1", "Node_1", "Validators_1", "imageData", "brightness", "data", "len", "i", "require_Contrast", "__commonJSMin", "exports", "Factory_1", "Node_1", "Validators_1", "imageData", "adjust", "data", "nPixels", "red", "green", "blue", "i", "require_Emboss", "__commonJSMin", "exports", "Factory_1", "Node_1", "Util_1", "Validators_1", "imageData", "strength", "greyLevel", "direction", "blend", "dirY", "dirX", "data", "w", "h", "w4", "y", "offsetY", "otherY", "offsetYOther", "x", "offset", "otherX", "offsetOther", "dR", "dG", "dB", "dif", "absDif", "absG", "absB", "r", "g", "b", "grey", "require_Enhance", "__commonJSMin", "exports", "Factory_1", "Node_1", "Validators_1", "remap", "fromValue", "fromMin", "fromMax", "toMin", "toMax", "fromRange", "toRange", "toValue", "imageData", "data", "nSubPixels", "rMin", "rMax", "r", "gMin", "gMax", "g", "bMin", "bMax", "b", "i", "enhanceAmount", "rMid", "rGoalMax", "rGoalMin", "gMid", "gGoalMax", "gGoalMin", "bMid", "bGoalMax", "bGoalMin", "require_Grayscale", "__commonJSMin", "exports", "imageData", "data", "len", "brightness", "require_HSL", "__commonJSMin", "exports", "Factory_1", "Node_1", "Validators_1", "imageData", "data", "nPixels", "v", "s", "h", "i", "vsu", "vsw", "rr", "rg", "rb", "gr", "gg", "gb", "br", "bg", "bb", "r", "g", "b", "a", "require_HSV", "__commonJSMin", "exports", "Factory_1", "Node_1", "Validators_1", "imageData", "data", "nPixels", "v", "s", "h", "i", "vsu", "vsw", "rr", "rg", "rb", "gr", "gg", "gb", "br", "bg", "bb", "r", "g", "b", "a", "require_Invert", "__commonJSMin", "exports", "imageData", "data", "len", "require_Kaleidoscope", "__commonJSMin", "exports", "Factory_1", "Node_1", "Util_1", "Validators_1", "ToPolar", "src", "dst", "opt", "srcPixels", "dstPixels", "xSize", "ySize", "xMid", "yMid", "i", "x", "y", "r", "g", "b", "a", "rad", "rMax", "rSize", "tSize", "radius", "theta", "conversion", "sin", "cos", "FromPolar", "dx", "dy", "phaseShift", "x1", "y1", "imageData", "xoff", "srcPos", "dstPos", "power", "angle", "offset", "tempCanvas", "scratchData", "minSectionSize", "sectionSize", "xStart", "xEnd", "xDelta", "require_Mask", "__commonJSMin", "exports", "Factory_1", "Node_1", "Validators_1", "pixelAt", "idata", "x", "y", "idx", "d", "rgbDistance", "p1", "p2", "rgbMean", "pTab", "m", "i", "backgroundMask", "threshold", "rgbv_no", "rgbv_ne", "rgbv_so", "rgbv_se", "thres", "mean", "mask", "applyMask", "erodeMask", "sw", "sh", "weights", "side", "halfSide", "maskResult", "so", "a", "cy", "cx", "scy", "scx", "srcOff", "wt", "dilateMask", "smoothEdgeMask", "imageData", "require_Noise", "__commonJSMin", "exports", "Factory_1", "Node_1", "Validators_1", "imageData", "amount", "data", "nPixels", "half", "i", "require_Pixelate", "__commonJSMin", "exports", "Factory_1", "Util_1", "Node_1", "Validators_1", "imageData", "pixelSize", "width", "height", "x", "y", "i", "red", "green", "blue", "alpha", "nBinsX", "nBinsY", "xBinStart", "xBinEnd", "yBinStart", "yBinEnd", "xBin", "yBin", "pixelsInBin", "data", "require_Posterize", "__commonJSMin", "exports", "Factory_1", "Node_1", "Validators_1", "imageData", "levels", "data", "len", "scale", "i", "require_RGB", "__commonJSMin", "exports", "Factory_1", "Node_1", "Validators_1", "imageData", "data", "nPixels", "red", "green", "blue", "i", "brightness", "val", "require_RGBA", "__commonJSMin", "exports", "Factory_1", "Node_1", "Validators_1", "imageData", "data", "nPixels", "red", "green", "blue", "alpha", "i", "ia", "val", "require_Sepia", "__commonJSMin", "exports", "imageData", "data", "nPixels", "g", "b", "require_Solarize", "__commonJSMin", "exports", "imageData", "data", "w", "h", "w4", "y", "offsetY", "x", "offset", "r", "g", "b", "require_Threshold", "__commonJSMin", "exports", "Factory_1", "Node_1", "Validators_1", "imageData", "level", "data", "len", "i", "require_FullInternals", "__commonJSMin", "exports", "_CoreInternals_1", "Arc_1", "Arrow_1", "Circle_1", "Ellipse_1", "Image_1", "Label_1", "Line_1", "Path_1", "Rect_1", "RegularPolygon_1", "Ring_1", "Sprite_1", "Star_1", "Text_1", "TextPath_1", "Transformer_1", "Wedge_1", "Blur_1", "Brighten_1", "Contrast_1", "Emboss_1", "Enhance_1", "Grayscale_1", "HSL_1", "HSV_1", "Invert_1", "Kaleidoscope_1", "Mask_1", "Noise_1", "Pixelate_1", "Posterize_1", "RGB_1", "RGBA_1", "Sepia_1", "Solarize_1", "Threshold_1", "require_lib", "__commonJSMin", "exports", "module", "Konva", "require_tooltipster_bundle_min", "__commonJSMin", "exports", "module", "a", "b", "c", "d", "e", "h", "g", "f", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "require_tooltipster_scrollableTip_min", "__commonJSMin", "exports", "module", "i", "e", "t", "n", "o", "s", "a", "_", "h", "require_lodash", "__commonJSMin", "exports", "module", "undefined", "VERSION", "LARGE_ARRAY_SIZE", "CORE_ERROR_TEXT", "FUNC_ERROR_TEXT", "INVALID_TEMPL_VAR_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", "LAZY_WHILE_FLAG", "INFINITY", "MAX_SAFE_INTEGER", "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", "nullTag", "objectTag", "promiseTag", "proxyTag", "regexpTag", "setTag", "stringTag", "symbolTag", "undefinedTag", "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", "reTrimStart", "reWhitespace", "reWrapComment", "reWrapDetails", "reSplitDetails", "reAsciiWord", "reForbiddenIdentifierChars", "reEscapeChar", "reEsTemplate", "reFlags", "reIsBadHex", "reIsBinary", "reIsHostCtor", "reIsOctal", "reIsUint", "reLatin", "reNoMatch", "reUnescapedString", "rsAstralRange", "rsComboMarksRange", "reComboHalfMarksRange", "rsComboSymbolsRange", "rsComboRange", "rsDingbatRange", "rsLowerRange", "rsMathOpRange", "rsNonCharRange", "rsPunctuationRange", "rsSpaceRange", "rsUpperRange", "rsVarRange", "rsBreakRange", "rsApos", "rsAstral", "rsBreak", "rsCombo", "rsDigits", "rsDingbat", "rsLower", "rsMisc", "rsFitz", "rsModifier", "rsNonAstral", "rsRegional", "rsSurrPair", "rsUpper", "rsZWJ", "rsMiscLower", "rsMiscUpper", "rsOptContrLower", "rsOptContrUpper", "reOptMod", "rsOptVar", "rsOptJoin", "rsOrdLower", "rsOrdUpper", "rsSeq", "rsEmoji", "rsSymbol", "reApos", "reComboMark", "reUnicode", "reUnicodeWord", "reHasUnicode", "reHasUnicodeWord", "contextProps", "templateCounter", "typedArrayTags", "cloneableTags", "deburredLetters", "htmlEscapes", "htmlUnescapes", "stringEscapes", "freeParseFloat", "freeParseInt", "freeGlobal", "freeSelf", "root", "freeExports", "freeModule", "moduleExports", "freeProcess", "nodeUtil", "types", "nodeIsArrayBuffer", "nodeIsDate", "nodeIsMap", "nodeIsRegExp", "nodeIsSet", "nodeIsTypedArray", "apply", "func", "thisArg", "args", "arrayAggregator", "array", "setter", "iteratee", "accumulator", "index", "length", "value", "arrayEach", "arrayEachRight", "arrayEvery", "predicate", "arrayFilter", "resIndex", "result", "arrayIncludes", "baseIndexOf", "arrayIncludesWith", "comparator", "arrayMap", "arrayPush", "values", "offset", "arrayReduce", "initAccum", "arrayReduceRight", "arraySome", "asciiSize", "baseProperty", "asciiToArray", "string", "asciiWords", "baseFindKey", "collection", "eachFunc", "key", "baseFindIndex", "fromIndex", "fromRight", "strictIndexOf", "baseIsNaN", "baseIndexOfWith", "baseMean", "baseSum", "object", "basePropertyOf", "baseReduce", "baseSortBy", "comparer", "current", "baseTimes", "n", "baseToPairs", "props", "baseTrim", "trimmedEndIndex", "baseUnary", "baseValues", "cacheHas", "cache", "charsStartIndex", "strSymbols", "chrSymbols", "charsEndIndex", "countHolders", "placeholder", "deburrLetter", "escapeHtmlChar", "escapeStringChar", "chr", "getValue", "hasUnicode", "hasUnicodeWord", "iteratorToArray", "iterator", "data", "mapToArray", "map", "overArg", "transform", "arg", "replaceHolders", "setToArray", "set", "setToPairs", "strictLastIndexOf", "stringSize", "unicodeSize", "stringToArray", "unicodeToArray", "unescapeHtmlChar", "unicodeWords", "runInContext", "context", "_", "Array", "Date", "Error", "Function", "Math", "Object", "RegExp", "String", "TypeError", "arrayProto", "funcProto", "objectProto", "coreJsData", "funcToString", "hasOwnProperty", "idCounter", "maskSrcKey", "uid", "nativeObjectToString", "objectCtorString", "oldDash", "reIsNative", "Buffer", "Symbol", "Uint8Array", "allocUnsafe", "getPrototype", "objectCreate", "propertyIsEnumerable", "splice", "spreadableSymbol", "symIterator", "symToStringTag", "defineProperty", "getNative", "ctxClearTimeout", "ctxNow", "ctxSetTimeout", "nativeCeil", "nativeFloor", "nativeGetSymbols", "nativeIsBuffer", "nativeIsFinite", "nativeJoin", "nativeKeys", "nativeMax", "nativeMin", "nativeNow", "nativeParseInt", "nativeRandom", "nativeReverse", "DataView", "Map", "Promise", "Set", "WeakMap", "nativeCreate", "metaMap", "realNames", "dataViewCtorString", "toSource", "mapCtorString", "promiseCtorString", "setCtorString", "weakMapCtorString", "symbolProto", "symbolValueOf", "symbolToString", "lodash", "isObjectLike", "isArray", "LazyWrapper", "LodashWrapper", "wrapperClone", "baseCreate", "proto", "isObject", "baseLodash", "chainAll", "lazyClone", "copyArray", "lazyReverse", "lazyValue", "dir", "isArr", "isRight", "arrLength", "view", "getView", "start", "end", "iteratees", "iterLength", "takeCount", "baseWrapperValue", "outer", "iterIndex", "type", "computed", "Hash", "entries", "entry", "hashClear", "hashDelete", "hashGet", "hashHas", "hashSet", "ListCache", "listCacheClear", "listCacheDelete", "assocIndexOf", "lastIndex", "listCacheGet", "listCacheHas", "listCacheSet", "MapCache", "mapCacheClear", "mapCacheDelete", "getMapData", "mapCacheGet", "mapCacheHas", "mapCacheSet", "size", "SetCache", "setCacheAdd", "setCacheHas", "Stack", "stackClear", "stackDelete", "stackGet", "stackHas", "stackSet", "pairs", "arrayLikeKeys", "inherited", "isArg", "isArguments", "isBuff", "isBuffer", "isType", "isTypedArray", "skipIndexes", "isIndex", "arraySample", "baseRandom", "arraySampleSize", "shuffleSelf", "baseClamp", "arrayShuffle", "assignMergeValue", "eq", "baseAssignValue", "assignValue", "objValue", "baseAggregator", "baseEach", "baseAssign", "source", "copyObject", "keys", "baseAssignIn", "keysIn", "baseAt", "paths", "skip", "get", "number", "lower", "upper", "baseClone", "bitmask", "customizer", "stack", "isDeep", "isFlat", "isFull", "initCloneArray", "tag", "getTag", "isFunc", "cloneBuffer", "initCloneObject", "copySymbolsIn", "copySymbols", "initCloneByTag", "stacked", "isSet", "subValue", "isMap", "keysFunc", "getAllKeysIn", "getAllKeys", "baseConforms", "baseConformsTo", "baseDelay", "wait", "setTimeout", "baseDifference", "includes", "isCommon", "valuesLength", "valuesIndex", "createBaseEach", "baseForOwn", "baseEachRight", "baseForOwnRight", "baseEvery", "baseExtremum", "isSymbol", "baseFill", "toInteger", "toLength", "baseFilter", "baseFlatten", "depth", "isStrict", "isFlattenable", "baseFor", "createBaseFor", "baseForRight", "baseFunctions", "isFunction", "baseGet", "path", "castPath", "toKey", "baseGetAllKeys", "symbolsFunc", "baseGetTag", "getRawTag", "objectToString", "baseGt", "other", "baseHas", "baseHasIn", "baseInRange", "baseIntersection", "arrays", "othLength", "othIndex", "caches", "maxLength", "seen", "baseInverter", "baseInvoke", "parent", "last", "baseIsArguments", "baseIsArrayBuffer", "baseIsDate", "baseIsEqual", "baseIsEqualDeep", "equalFunc", "objIsArr", "othIsArr", "objTag", "othTag", "objIsObj", "othIsObj", "isSameTag", "equalArrays", "equalByTag", "objIsWrapped", "othIsWrapped", "objUnwrapped", "othUnwrapped", "equalObjects", "baseIsMap", "baseIsMatch", "matchData", "noCustomizer", "srcValue", "baseIsNative", "isMasked", "pattern", "baseIsRegExp", "baseIsSet", "baseIsTypedArray", "isLength", "baseIteratee", "identity", "baseMatchesProperty", "baseMatches", "property", "baseKeys", "isPrototype", "baseKeysIn", "nativeKeysIn", "isProto", "baseLt", "baseMap", "isArrayLike", "getMatchData", "matchesStrictComparable", "isKey", "isStrictComparable", "hasIn", "baseMerge", "srcIndex", "baseMergeDeep", "newValue", "safeGet", "mergeFunc", "isTyped", "isArrayLikeObject", "cloneTypedArray", "isPlainObject", "toPlainObject", "baseNth", "baseOrderBy", "orders", "getIteratee", "criteria", "compareMultiple", "basePick", "basePickBy", "baseSet", "basePropertyDeep", "basePullAll", "indexOf", "basePullAt", "indexes", "previous", "baseUnset", "baseRange", "step", "baseRepeat", "baseRest", "setToString", "overRest", "baseSample", "baseSampleSize", "nested", "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", "createSet", "seenIndex", "baseUpdate", "updater", "baseWhile", "isDrop", "actions", "action", "baseXor", "baseZipObject", "assignFunc", "valsLength", "castArrayLikeObject", "castFunction", "stringToPath", "toString", "castRest", "castSlice", "clearTimeout", "id", "buffer", "cloneArrayBuffer", "arrayBuffer", "cloneDataView", "dataView", "cloneRegExp", "regexp", "cloneSymbol", "symbol", "typedArray", "compareAscending", "valIsDefined", "valIsReflexive", "objCriteria", "othCriteria", "ordersLength", "order", "composeArgs", "partials", "holders", "isCurried", "argsIndex", "argsLength", "holdersLength", "leftIndex", "leftLength", "rangeLength", "isUncurried", "composeArgsRight", "holdersIndex", "rightIndex", "rightLength", "isNew", "getSymbols", "getSymbolsIn", "createAggregator", "initializer", "createAssigner", "assigner", "sources", "guard", "isIterateeCall", "iterable", "createBind", "isBind", "Ctor", "createCtor", "wrapper", "fn", "createCaseFirst", "methodName", "trailing", "createCompounder", "callback", "words", "deburr", "thisBinding", "createCurry", "arity", "getHolder", "createRecurry", "createHybrid", "createFind", "findIndexFunc", "createFlow", "flatRest", "funcs", "prereq", "getFuncName", "funcName", "getData", "isLaziable", "partialsRight", "holdersRight", "argPos", "ary", "isAry", "isBindKey", "isFlip", "holdersCount", "newHolders", "reorder", "createInverter", "toIteratee", "createMathOperation", "operator", "defaultValue", "createOver", "arrayFunc", "createPadding", "chars", "charsLength", "createPartial", "createRange", "toFinite", "createRelationalOperation", "toNumber", "wrapFunc", "isCurry", "newHoldersRight", "newPartials", "newPartialsRight", "newData", "setData", "setWrapToString", "createRound", "precision", "pair", "noop", "createToPairs", "createWrap", "mergeData", "customDefaultsAssignIn", "customDefaultsMerge", "customOmitClone", "isPartial", "arrStacked", "othStacked", "arrValue", "othValue", "compared", "convert", "objProps", "objLength", "othProps", "objStacked", "skipCtor", "objCtor", "othCtor", "flatten", "otherFunc", "isKeyable", "isOwn", "unmasked", "stubArray", "ctorString", "transforms", "getWrapDetails", "match", "hasPath", "hasFunc", "insertWrapDetails", "details", "isMaskable", "stubFalse", "memoizeCapped", "memoize", "srcBitmask", "newBitmask", "isCombo", "otherArgs", "oldArray", "shortOut", "reference", "updateWrapDetails", "count", "lastCalled", "stamp", "remaining", "rand", "quote", "subString", "chunk", "compact", "concat", "difference", "differenceBy", "differenceWith", "drop", "dropRight", "dropRightWhile", "dropWhile", "fill", "findIndex", "findLastIndex", "flattenDeep", "flattenDepth", "fromPairs", "head", "initial", "intersection", "mapped", "intersectionBy", "intersectionWith", "join", "separator", "lastIndexOf", "nth", "pull", "pullAll", "pullAllBy", "pullAllWith", "pullAt", "remove", "reverse", "slice", "sortedIndex", "sortedIndexBy", "sortedIndexOf", "sortedLastIndex", "sortedLastIndexBy", "sortedLastIndexOf", "sortedUniq", "sortedUniqBy", "tail", "take", "takeRight", "takeRightWhile", "takeWhile", "union", "unionBy", "unionWith", "uniq", "uniqBy", "uniqWith", "unzip", "group", "unzipWith", "without", "xor", "xorBy", "xorWith", "zip", "zipObject", "zipObjectDeep", "zipWith", "chain", "tap", "interceptor", "thru", "wrapperAt", "wrapperChain", "wrapperCommit", "wrapperNext", "toArray", "done", "wrapperToIterator", "wrapperPlant", "clone", "wrapperReverse", "wrapped", "wrapperValue", "countBy", "every", "filter", "find", "findLast", "flatMap", "flatMapDeep", "flatMapDepth", "forEach", "forEachRight", "groupBy", "isString", "invokeMap", "keyBy", "orderBy", "partition", "reduce", "reduceRight", "reject", "negate", "sample", "sampleSize", "shuffle", "some", "sortBy", "now", "after", "before", "bind", "bindKey", "curry", "curryRight", "debounce", "options", "lastArgs", "lastThis", "maxWait", "timerId", "lastCallTime", "lastInvokeTime", "leading", "maxing", "invokeFunc", "time", "leadingEdge", "timerExpired", "remainingWait", "timeSinceLastCall", "timeSinceLastInvoke", "timeWaiting", "shouldInvoke", "trailingEdge", "cancel", "flush", "debounced", "isInvoking", "defer", "delay", "flip", "resolver", "memoized", "once", "overArgs", "funcsLength", "partial", "partialRight", "rearg", "rest", "spread", "throttle", "unary", "wrap", "castArray", "cloneWith", "cloneDeep", "cloneDeepWith", "conformsTo", "gt", "gte", "isArrayBuffer", "isBoolean", "isDate", "isElement", "isEmpty", "isEqual", "isEqualWith", "isError", "isFinite", "isInteger", "isMatch", "isMatchWith", "isNaN", "isNumber", "isNative", "isNull", "isNil", "isRegExp", "isSafeInteger", "isUndefined", "isWeakMap", "isWeakSet", "lt", "lte", "sign", "remainder", "isBinary", "toSafeInteger", "assign", "assignIn", "assignInWith", "assignWith", "at", "create", "prototype", "properties", "defaults", "propsIndex", "propsLength", "defaultsDeep", "mergeWith", "findKey", "findLastKey", "forIn", "forInRight", "forOwn", "forOwnRight", "functions", "functionsIn", "has", "invert", "invertBy", "invoke", "mapKeys", "mapValues", "merge", "omit", "omitBy", "pickBy", "pick", "prop", "setWith", "toPairs", "toPairsIn", "isArrLike", "unset", "update", "updateWith", "valuesIn", "clamp", "inRange", "random", "floating", "temp", "camelCase", "word", "capitalize", "upperFirst", "endsWith", "target", "position", "escape", "escapeRegExp", "kebabCase", "lowerCase", "lowerFirst", "pad", "strLength", "padEnd", "padStart", "parseInt", "radix", "repeat", "replace", "snakeCase", "split", "limit", "startCase", "startsWith", "template", "settings", "imports", "importsKeys", "importsValues", "isEscaping", "isEvaluating", "interpolate", "reDelimiters", "sourceURL", "escapeValue", "interpolateValue", "esTemplateValue", "evaluateValue", "variable", "attempt", "toLower", "toUpper", "trim", "trimEnd", "trimStart", "truncate", "omission", "substring", "newEnd", "unescape", "upperCase", "e", "bindAll", "methodNames", "cond", "conforms", "defaultTo", "flow", "flowRight", "matches", "matchesProperty", "method", "methodOf", "mixin", "noConflict", "nthArg", "over", "overEvery", "overSome", "propertyOf", "range", "rangeRight", "stubObject", "stubString", "stubTrue", "times", "toPath", "uniqueId", "prefix", "add", "augend", "addend", "ceil", "divide", "dividend", "divisor", "floor", "max", "maxBy", "mean", "meanBy", "min", "minBy", "multiply", "multiplier", "multiplicand", "round", "subtract", "minuend", "subtrahend", "sum", "sumBy", "isFilter", "takeName", "dropName", "checkIteratee", "isTaker", "lodashFunc", "retUnwrapped", "isLazy", "useLazy", "isHybrid", "isUnwrapped", "onlyLazy", "chainName", "require_fast_deep_equal", "__commonJSMin", "exports", "module", "equal", "a", "b", "length", "i", "keys", "key", "isWindow", "thing", "Window", "realWindow", "win", "init", "window", "el", "document", "createTextNode", "ownerDocument", "wrap", "getWindow", "node", "defaultView", "object", "_typeof", "func", "is", "docFrag", "nodeType", "number", "bool", "string", "element", "_window", "test", "Element", "nodeName", "plainObject", "constructor", "toString", "array", "length", "splice", "beforeMove", "_ref", "interaction", "prepared", "name", "axis", "coords", "cur", "page", "y", "start", "client", "velocity", "x", "move", "_ref2", "iEvent", "opposite", "delta", "drag", "id", "install", "scope", "actions", "Interactable", "defaults", "prototype", "draggable", "map", "methodDict", "listeners", "arg", "interactable", "buttons", "dragOptions", "options", "enabled", "pointerIsDown", "pointerType", "mouseButtons", "action", "lockAxis", "startAxis", "this", "setPerAction", "setOnEvents", "getCursor", "filterEventType", "type", "search", "drag$1", "domObjects", "DocumentFragment", "blank", "SVGElement", "SVGSVGElement", "SVGElementInstance", "HTMLElement", "Event", "Touch", "PointerEvent", "MSPointerEvent", "domObjects$1", "browser", "navigator", "supportsTouch", "DocumentTouch", "supportsPointerEvent", "pointerEnabled", "isIOS", "platform", "isIOS7", "appVersion", "isIe9", "userAgent", "isOperaMobile", "appName", "prefixedMatchesSelector", "pEventTypes", "up", "down", "over", "out", "cancel", "wheelEvent", "browser$1", "nodeContains", "parent", "child", "contains", "parentNode", "closest", "selector", "matchesSelector", "host", "replace", "getParent", "getNodeParents", "limit", "parentParent", "parents", "unshift", "matchesUpTo", "getActualElement", "correspondingUseElement", "getElementClientRect", "clientRect", "getBoundingClientRect", "getClientRects", "left", "right", "top", "bottom", "width", "height", "getElementRect", "relevantWindow", "scroll", "scrollX", "documentElement", "scrollLeft", "scrollY", "scrollTop", "getPath", "path", "push", "trySelector", "value", "querySelector", "extend", "dest", "source", "prop", "getStringOptionResult", "target", "getRect", "resolveRectLike", "functionArgs", "returnValue", "apply", "rectToXY", "rect", "tlbrToXywh", "addEdges", "edges", "getOriginXY", "actionName", "actionOptions", "origin", "normalize", "filter", "arguments", "_typeOrPrefix", "result", "split", "forEach", "t", "_i2", "_listeners2", "l", "prefix", "p", "concat", "trim", "hypot", "Math", "sqrt", "VENDOR_PREFIXES", "pointerExtend", "__set", "_loop", "some", "indexOf", "Object", "defineProperty", "get", "set", "configurable", "copyCoords", "src", "timeStamp", "setZeroCoords", "targetObj", "isNativePointer", "pointer", "dom", "getXY", "xy", "getPageXY", "getPointerId", "pointerId", "identifier", "setCoords", "pointers", "pointerAverage", "getTouchPair", "event", "touches", "changedTouches", "average", "pageX", "pageY", "clientX", "clientY", "screenX", "screenY", "touchBBox", "minX", "min", "minY", "maxX", "max", "maxY", "touchDistance", "deltaSource", "sourceX", "sourceY", "dx", "dy", "touchAngle", "atan2", "PI", "getPointerType", "undefined", "getEventTargets", "composedPath", "domUtils", "currentTarget", "BaseEvent", "_classCallCheck", "immediatePropagationStopped", "propagationStopped", "_interaction", "_createClass", "key", "_proxy", "merge", "item", "from", "findIndex", "i", "find", "DropEvent", "_BaseEvent", "_inherits", "_super", "_createSuper", "dropState", "dragEvent", "_this", "call", "dropzone", "relatedTarget", "prev", "_this2", "rejected", "events", "enter", "stopImmediatePropagation", "activeDrops", "index", "arr", "deactivateEvent", "fire", "fireActivationEvents", "_i6", "_activeDrops$slice2", "slice", "_activeDrops$slice2$_", "getActiveDrops", "dragElement", "draggableElement", "drops", "_interactables$list2", "interactables", "list", "drop", "accept", "_i4", "_dropzone$getAllEleme2", "getAllElements", "dropzoneElement", "_i8", "activeDrop", "getDrop", "pointerEvent", "validDrops", "_i10", "_dropState$activeDrop2", "_dropState$activeDrop3", "isValid", "dropCheck", "dropIndex", "elements", "deepestNodeIndex", "higherNode", "lowerNode", "deepestNodeParents", "currentNode", "deepestNode", "currentNodeParent", "deepestNodeParent", "ancestryStart", "ownerSVGElement", "currentNodeParents", "commonIndex", "lastChild", "previousSibling", "parseInt", "getComputedStyle", "zIndex", "getDropEvents", "_pointerEvent", "dropEvents", "leave", "activate", "deactivate", "dragLeave", "prevDropzone", "dragEnter", "fireDropEvents", "onEventCreated", "_ref3", "dynamicDrop", "dropResult", "interact", "interactStatic", "usePlugin", "normalized", "normalizeListeners", "corrected", "keys", "reduce", "acc", "prevListeners", "off", "on", "ondrop", "ondropactivate", "ondropdeactivate", "ondragenter", "ondragleave", "ondropmove", "overlap", "checker", "dropElement", "dropped", "dropOverlap", "pointerUtils", "horizontal", "vertical", "dragRect", "cx", "cy", "newValue", "phaselessTypes", "dragenter", "dragleave", "dropactivate", "dropdeactivate", "dropmove", "_ref4", "_ref5", "_ref6", "_ref7", "drop$1", "updateGestureProps", "phase", "starting", "ending", "distance", "box", "scale", "ds", "angle", "da", "gesture", "startDistance", "startAngle", "prevEvent", "Infinity", "isNaN", "before", "gesturable", "gestureOptions", "gesture$1", "checkResizeEdge", "interactableElement", "margin", "abs", "edge", "updateEventAxes", "resizeAxes", "resizeEvent", "resize", "square", "axes", "request", "cursors", "topleft", "bottomright", "topright", "bottomleft", "defaultMargin", "resizable", "preserveAspectRatio", "_rects", "previous", "deltaRect", "invert", "invertible", "current", "_interaction$_rects", "startRect", "swap", "resizeOptions", "resizeEdges", "_latestPointer", "eventTarget", "NaN", "cursorKey", "_ref8", "resize$1", "lastTime", "raf", "callback", "token", "global", "requestAnimationFrame", "cancelAnimationFrame", "vendors", "vendor", "bind", "currTime", "Date", "now", "timeToCall", "setTimeout", "clearTimeout", "autoScroll", "container", "speed", "isScrolling", "prevTime", "stop", "getContainer", "dt", "s", "scrollBy", "prevScroll", "getScroll", "curScroll", "check", "_options$actionName$a", "onInteractionMove", "interacting", "simulation", "innerWidth", "innerHeight", "body", "autoScrollPlugin", "autoscroll", "perAction", "autoScroll$1", "warnOnce", "method", "message", "warned", "console", "warn", "copyAction", "styleCursor", "actionChecker", "InteractableMethods", "getAction", "button", "ignoreFrom", "_backCompatOption", "allowFrom", "validateAction", "testIgnoreAllow", "withinInteractionLimit", "validateMatches", "matches", "matchElements", "len", "match", "matchElement", "matchAction", "getActionInfo", "pushMatches", "forEachMatch", "actionInfo", "manualStart", "prepare", "setInteractionCursor", "maxActions", "maxPerElement", "autoStartMax", "autoStart", "maxInteractions", "activeInteractions", "interactableCount", "elementCount", "_scope$interactions$l2", "interactions", "otherAction", "setCursor", "cursor", "prevCursorElement", "cursorElement", "style", "cursorChecker", "_interacting", "base", "pointerWasMoved", "autoStart$2", "dragAxis", "absX", "absY", "targetOptions", "currentAxis", "getDraggable", "downPointer", "downEvent", "thisAxis", "getHoldDuration", "hold", "delay", "basePlugin", "autoStartHoldTimer", "duplicate", "hold$1", "preventDefault", "onInteractionEvent", "checkAndPreventDefault", "interactablePreventDefault", "setting", "supportsPassive", "doc", "docOptions", "getDocOptions", "passive", "docEvents", "listener", "eventType", "isNonNativeEvent", "substr", "phases", "clone", "Modification", "states", "startOffset", "startDelta", "endResult", "startEdges", "createResult", "pageCoords", "modifierList", "actionModifiers", "modifiers", "methods", "_methods", "m", "prepareStates", "fillArg", "preEnd", "startAll", "setAll", "_this$states2", "state", "skipModifiers", "unmodifiedRect", "unmodifiedEdges", "newResult", "_state$methods", "lastModifierCoords", "shouldDo", "rectUtils", "eventProps", "rectDelta", "prevCoords", "prevRect", "rectChanged", "changed", "curCoords", "startCoords", "curDelta", "_ref3$_i", "coordsSet", "modifiedCoords", "adjustment", "applyToInteraction", "doPreend", "endPosition", "beforeEnd", "modifierArg", "_this$states4", "_modifierList$index", "_ref4$interaction", "modification", "_modification$result", "_i12", "_ref6$_i", "requireEndOnly", "endOnly", "setStart", "other", "makeModifier", "module", "modifier", "_options", "enable", "disable", "_defaults", "addEventModifiers", "modifiersBase", "ret", "setAndApply", "restoreInteractionCoords", "InteractEvent", "ctrlKey", "shiftKey", "altKey", "metaKey", "x0", "y0", "t0", "duration", "clientX0", "clientY0", "swipe", "_assertThisInitialized", "downTime", "getSwipe", "velocityY", "velocityX", "defineProperties", "PointerInfo", "downTarget", "_ProxyValues", "_ProxyMethods", "idCounter", "Interaction", "scopeFire", "_scopeFire", "_ending", "_stopped", "doMove", "signalArg", "_id", "that", "_loop2", "_key", "pointerIndex", "updatePointer", "pointerInfo", "_doPhase", "duplicateMove", "pointerMoveTolerance", "getPointerIndex", "curEventTarget", "end", "removePointer", "endPhaseResult", "curPointer", "_now", "_updateLatestPointer", "_this$interactable", "_createPreparedEvent", "_fireEvent", "beforeAction", "applyPending", "offset", "pending", "addToCoords", "offsetBy", "total", "offset$1", "InertiaState", "active", "isModified", "smoothEnd", "allowResume", "modifierCount", "v0", "te", "targetOffset", "modifiedOffset", "currentOffset", "lambda_v0", "one_ve_v0", "timeout", "getOptions", "velocityClient", "pointerSpeed", "copyFrom", "minSpeed", "endSpeed", "startInertia", "startSmoothEnd", "startVelocity", "lambda", "resistance", "inertiaDur", "log", "onNextFrame", "inertiaTick", "smoothEndTick", "tickFn", "_this3", "startX", "startY", "cpX", "cpY", "endX", "endY", "position", "_this4", "newOffset", "progress", "exp", "_getQBezierValue", "_this5", "smoothEndDuration", "easeOutQuad", "inertia", "inertiastart", "resume", "p1", "p2", "p3", "iT", "b", "c", "d", "inertia$1", "fireUntilImmediateStopped", "Eventable", "types", "eventList", "_listeners$type2", "subListener", "_element", "FakeEvent", "originalEvent", "pExtend", "stopPropagation", "param", "capture", "optionsMatch", "a", "_scope$document", "targets", "delegatedEvents", "documents", "eventsMethods", "add", "remove", "addDelegate", "context", "optionalArg", "_i3", "delegateListener", "delegateUseCapture", "delegates", "delegate", "removeDelegate", "matchFound", "entry", "supportsOptions", "addEventListener", "removeEventListener", "targetIndex", "typeIsEmpty", "typeListeners", "hasOwnProperty", "fakeEvent", "_i5", "createElement", "finder", "methodOrder", "details", "_finder$methodOrder2", "simulationResume", "mouseOrPen", "firstNonActive", "_scope$interactions$l4", "hasPointerId", "_scope$interactions$l6", "hasPointer", "_scope$interactions$l8", "idle", "_scope$interactions$l10", "finder$1", "methodNames", "doOnInteractions", "_pointerUtils$getEven", "prevTouchTime", "_event$changedTouches2", "changedTouch", "searchDetails", "getInteraction", "invalidPointer", "_matches$_i", "new", "onDocSignal", "eventMethodName", "eventMethod", "eventOptions", "_i14", "_docEvents$_i", "releasePointersOnRemovedEls", "_interaction$pointers2", "pointerDown", "pointerMove", "pointerUp", "documentBlur", "_InteractionBase", "_class", "InteractionBase", "destroy", "interactions$1", "OnOffMethod", "defaultContext", "scopeEvents", "_actions", "_context", "_win", "_doc", "_scopeEvents", "onstart", "onmove", "onend", "oninertiastart", "_this$_actions$map$ac", "actionFilter", "_onOff", "Off", "On", "optionName_", "optionName", "optionValue", "updatePerActionListeners", "Array", "querySelectorAll", "targetNode", "testIgnore", "testAllow", "typeArg", "listenerArg", "_listeners$_type2", "actionName_", "methodName", "rectChecker", "delegated", "_delegated$i", "InteractableSet", "selectorMap", "addListeners", "interactablesOnTarget", "addDocument", "isSelector", "inContext", "_this$list2", "Scope", "floor", "random", "isInitialized", "listenerMaps", "getExisting", "globalEvents", "getPointerAverage", "getTouchBBox", "getTouchDistance", "getTouchAngle", "version", "process", "use", "plugin", "isSet", "_type2", "debug", "_this$scope$interacti2", "removeDocument", "_plugins", "onWindowUnload", "_InteractableBase", "_class2", "_get", "_getPrototypeOf", "InteractableBase", "_this$listenerMaps2", "pluginIsInstalled", "pluginIdRoot", "otherId", "getDocIndex", "docIndex", "interact$1", "_global", "globalThis", "fn", "grid", "coordFields", "xField", "yField", "gridFunc", "range", "_grid$limits", "limits", "_grid$offset", "_coordFields$_i", "gridx", "round", "gridy", "snappersPlugin", "snappers", "allSnappers", "createSnapGrid", "aspectRatio", "_state$options", "ratio", "_state$options2", "equalDelta", "linkedEdges", "xIsPrimaryAxis", "sign", "edgeSign", "subModification", "_objectSpread", "initialCoords", "aspectMethod", "setEqualDelta", "setRatio", "correctedRect", "newHeight", "newWidth", "aspectRatio$1", "noop", "rubberband", "getRestrictionRect", "restrict", "elementRect", "restriction", "widthDiff", "heightDiff", "restrict$1", "noInner", "noOuter", "fixRect", "restrictEdges", "inner", "outer", "restrictEdges$1", "_", "restrictRect$1", "noMin", "noMax", "restrictSize$1", "minSize", "maxSize", "snap", "snapOffset", "offsetWithOrigin", "optionsOrigin", "offsetRect", "relativePoints", "offsets", "relativePoint", "relativeX", "relativeY", "snapTarget", "inRange", "snap$1", "snapSize", "targetFields", "relative", "_state$targetFields2", "_state$targetFields2$", "snapSize$1", "all", "restrictRect", "restrictSize", "snapEdges", "spring", "avoid", "transform", "_all", "modifiers$1", "interval", "tapTime", "double", "prevTap", "originX", "originY", "pointerEvents", "clearHold", "timer", "minDuration", "_signalArg$targets2", "holdDuration", "eventable", "collectEventTargets", "tap", "doubletap", "_arg$targets", "props", "_subtractOrigin", "_addOrigin", "_interaction$pointers", "Nn", "Bn", "endHoldRepeat", "holdIntervalHandle", "clearInterval", "holdRepeat", "holdRepeatInterval", "holdrepeat", "enderTypes", "count", "holdRepeat$1", "__backCompatOption", "interactableTargets", "reflow", "Promise", "promises", "reflowPromise", "runningInteraction", "_reflowPromise", "resolve", "_reflowResolve", "xywh", "then", "reflow$1", "default", "exports", "_unused", "src_exports", "__export", "CLIENT_COMMAND_SCHEMAS", "ClientCommand", "DEFAULT_CREATE_TABLE_MAX_PLAYERS", "DOMAIN", "OLD_DOMAIN", "PROJECT_NAME", "SERVER_COMMAND_SCHEMAS", "SITE_URL", "ServerCommand", "Status", "StatusText", "defaultSettings", "gameHistory", "gameID", "httpLoginData", "packWSMessageOnClient", "packWSMessageOnServer", "serverCommandGameHistoryData", "settings", "spectator", "tableID", "unpackWSMessage", "userID", "ReadonlySet", "getRandomInt", "min", "max", "exceptions", "oldMin", "exceptionsSet", "randomInt", "FLOAT_REGEX", "INTEGER_REGEX", "assertDefined", "value", "msg", "assertNotNull", "eRange", "start", "end", "increment", "iRange", "exclusiveEnd", "isKeyOf", "key", "target", "parseFloatSafe", "string", "trimmedString", "FLOAT_REGEX", "number", "parseIntSafe", "INTEGER_REGEX", "repeat", "num", "func", "i", "arrayCopyTwoDimensional", "array", "copiedArray", "subArray", "arrayRemove", "originalArray", "elementsToRemove", "elementsToRemoveSet", "ReadonlySet", "array", "element", "filterMap", "array", "func", "filteredArray", "element", "newElement", "getRandomArrayElement", "exceptions", "arrayToUse", "arrayRemove", "randomIndex", "getRandomArrayIndex", "randomElement", "assertDefined", "getRandomInt", "includes", "searchElement", "newArray", "length", "value", "sumArray", "array", "accumulator", "element", "clamp", "num", "min", "max", "trimPrefix", "string", "prefix", "trimAll", "regExp", "trimSuffix", "endCharacter", "tupleEntries", "tuple", "tupleKeys", "ReadonlyMap", "util", "val", "assertIs", "_arg", "assertNever", "_x", "items", "obj", "item", "validKeys", "k", "filtered", "e", "object", "keys", "key", "arr", "checker", "joinValues", "array", "separator", "_", "value", "objectUtil", "first", "second", "ZodParsedType", "getParsedType", "data", "ZodIssueCode", "quotelessJson", "ZodError", "_ZodError", "issues", "sub", "subs", "actualProto", "_mapper", "mapper", "issue", "fieldErrors", "processError", "error", "curr", "i", "el", "formErrors", "errorMap", "_ctx", "message", "overrideErrorMap", "setErrorMap", "map", "getErrorMap", "makeIssue", "params", "path", "errorMaps", "issueData", "fullPath", "fullIssue", "errorMessage", "maps", "EMPTY_PATH", "addIssueToContext", "ctx", "overrideMap", "x", "ParseStatus", "_ParseStatus", "status", "results", "arrayValue", "s", "INVALID", "pairs", "syncPairs", "pair", "finalObject", "DIRTY", "OK", "isAborted", "isDirty", "isValid", "isAsync", "__classPrivateFieldGet", "receiver", "state", "kind", "f", "__classPrivateFieldSet", "errorUtil", "message", "_ZodEnum_cache", "_ZodNativeEnum_cache", "ParseInputLazyPath", "parent", "value", "path", "key", "handleResult", "ctx", "result", "isValid", "error", "ZodError", "processCreateParams", "params", "errorMap", "invalid_type_error", "required_error", "description", "iss", "_a", "_b", "ZodType", "def", "input", "getParsedType", "ParseStatus", "isAsync", "data", "maybeAsyncResult", "check", "getIssueProperties", "val", "setError", "ZodIssueCode", "refinementData", "refinement", "ZodEffects", "ZodFirstPartyTypeKind", "ZodOptional", "ZodNullable", "ZodArray", "ZodPromise", "option", "ZodUnion", "incoming", "ZodIntersection", "transform", "defaultValueFunc", "ZodDefault", "ZodBranded", "catchValueFunc", "ZodCatch", "This", "target", "ZodPipeline", "ZodReadonly", "cuidRegex", "cuid2Regex", "ulidRegex", "uuidRegex", "nanoidRegex", "durationRegex", "emailRegex", "_emojiRegex", "emojiRegex", "ipv4Regex", "ipv6Regex", "base64Regex", "dateRegexSource", "dateRegex", "timeRegexSource", "args", "regex", "timeRegex", "datetimeRegex", "opts", "isValidIP", "ip", "version", "ZodString", "_ZodString", "ZodParsedType", "addIssueToContext", "INVALID", "status", "tooBig", "tooSmall", "util", "validation", "options", "minLength", "maxLength", "len", "ch", "min", "max", "floatSafeRemainder", "step", "valDecCount", "stepDecCount", "decCount", "valInt", "stepInt", "ZodNumber", "_ZodNumber", "kind", "inclusive", "ZodBigInt", "_ZodBigInt", "ZodBoolean", "OK", "ZodDate", "_ZodDate", "minDate", "maxDate", "ZodSymbol", "ZodUndefined", "ZodNull", "ZodAny", "ZodUnknown", "ZodNever", "ZodVoid", "_ZodArray", "item", "i", "schema", "deepPartialify", "ZodObject", "newShape", "fieldSchema", "ZodTuple", "_ZodObject", "shape", "keys", "shapeKeys", "extraKeys", "pairs", "keyValidator", "unknownKeys", "catchall", "syncPairs", "pair", "issue", "_c", "_d", "defaultError", "augmentation", "merging", "index", "mask", "newField", "createZodEnum", "handleResults", "results", "unionErrors", "childCtx", "dirty", "issues", "types", "getDiscriminator", "type", "ZodLazy", "ZodLiteral", "ZodEnum", "ZodNativeEnum", "ZodDiscriminatedUnion", "_ZodDiscriminatedUnion", "discriminator", "discriminatorValue", "optionsMap", "discriminatorValues", "mergeValues", "a", "b", "aType", "bType", "bKeys", "sharedKeys", "newObj", "sharedValue", "newArray", "itemA", "itemB", "handleParsed", "parsedLeft", "parsedRight", "isAborted", "merged", "isDirty", "left", "right", "_ZodTuple", "items", "itemIndex", "x", "rest", "schemas", "ZodRecord", "_ZodRecord", "keyType", "valueType", "first", "second", "third", "ZodMap", "finalMap", "ZodSet", "_ZodSet", "finalizeSet", "elements", "parsedSet", "element", "minSize", "maxSize", "size", "ZodFunction", "_ZodFunction", "makeArgsIssue", "makeIssue", "getErrorMap", "makeReturnsIssue", "returns", "fn", "me", "parsedArgs", "e", "parsedReturns", "returnType", "func", "getter", "values", "_ZodEnum", "expectedValues", "__classPrivateFieldGet", "__classPrivateFieldSet", "enumValues", "newDef", "opt", "nativeEnumValues", "promisified", "effect", "checkCtx", "arg", "processed", "DIRTY", "executeRefinement", "acc", "inner", "base", "preprocess", "newCtx", "ZodNaN", "BRAND", "_ZodPipeline", "inResult", "freeze", "custom", "fatal", "p", "_fatal", "p2", "late", "instanceOfType", "cls", "stringType", "numberType", "nanType", "bigIntType", "booleanType", "dateType", "symbolType", "undefinedType", "nullType", "anyType", "unknownType", "neverType", "voidType", "arrayType", "objectType", "strictObjectType", "unionType", "discriminatedUnionType", "intersectionType", "tupleType", "recordType", "mapType", "setType", "functionType", "lazyType", "literalType", "enumType", "nativeEnumType", "promiseType", "effectsType", "optionalType", "nullableType", "preprocessType", "pipelineType", "ostring", "onumber", "oboolean", "coerce", "NEVER", "z", "setErrorMap", "EMPTY_PATH", "objectUtil", "quotelessJson", "ClientCommand", "clientCommandChatData", "z", "clientCommandChatPMData", "CLIENT_COMMAND_SCHEMAS", "PROJECT_NAME", "DOMAIN", "OLD_DOMAIN", "PROTOCOL", "SITE_URL", "ServerCommand", "Status", "StatusText", "WEBSOCKET_COMMAND_SEPARATOR", "unpackWSMessage", "data", "command", "argsString", "args", "packWSMessageOnClient", "packWSMessageOnServer", "stringifyFunc", "KNOWN_TRASH_NOTES", "QUESTION_MARK_NOTES", "EXCLAMATION_MARK_NOTES", "CHOP_MOVED_NOTES", "FINESSED_NOTES", "NEEDS_FIX_NOTES", "BLANK_NOTES", "CLUED_NOTES", "UNCLUED_NOTES", "ALL_RESERVED_NOTES", "ReadonlySet", "getUppercaseSuitAbbreviationsForVariant", "variantName", "suits", "lowercaseAbbreviations", "suit", "lowercaseAbbreviationToUse", "getLowercaseSuitAbbreviationToUse", "abbreviation", "lowercaseAbbreviationsUsedSoFar", "lowercaseAbbreviation", "suitCharactersToConsider", "trimPrefix", "suitCharacter", "suitLetterLowercase", "getSuitAbbreviationForVariant", "suitToMatch", "variant", "suitIndex", "START_CARD_RANK", "MAX_CLUE_NUM", "MAX_STRIKES", "DEFAULT_VARIANT_NAME", "DEFAULT_CARD_RANKS", "ALL_CARD_RANKS", "DEFAULT_CLUE_RANKS", "DEFAULT_FINISHED_STACK_LENGTH", "MIN_PLAYERS", "MAX_PLAYERS", "VALID_NUM_PLAYERS", "VALID_PLAYER_INDEXES", "MAX_SUITS_IN_A_VARIANT", "VALID_SUIT_INDEXES", "VALID_CLUE_COLOR_INDEXES", "MAX_CARDS_IN_A_SUIT", "MAX_CARDS_IN_A_DECK", "DEFAULT_PLAYER_NAMES", "SUIT_REVERSED_SUFFIX", "REVERSE_MODIFIER", "SUIT_MODIFIERS", "ReadonlySet", "EndCondition", "VariantModifier", "VARIANT_MODIFIER_SET", "ReadonlySet", "characters_default", "charactersInit", "characters", "characters_default", "character", "colors_default", "colorsInit", "colors", "colors_default", "colorJSON", "name", "abbreviation", "fill", "fillColorblind", "color", "suits_default", "suitsInit", "COLORS", "suits", "suits_default", "suitJSON", "name", "id", "pip", "abbreviation", "color", "ALL_RESERVED_NOTES", "createVariants", "displayName", "clueColors", "getSuitClueColors", "fill", "fillColorblind", "getSuitFillAndFillColorblind", "fillColors", "oneOfEach", "allClueColors", "noClueColors", "allClueRanks", "noClueRanks", "prism", "suit", "suitReversed", "SUIT_REVERSED_SUFFIX", "colorName", "assertDefined", "potentialMatchingColorName", "firstClueColor", "variants_default", "getIdentityNotePatternForVariant", "suits", "ranks", "suitAbbreviations", "isUpOrDown", "suitPattern", "createSuitPattern", "rankPattern", "createRankPattern", "squishPattern", "createSquishPattern", "alternation", "suitIndex", "suit", "suitAbbreviation", "assertDefined", "rankStrings", "r", "rankClueNumber", "z", "isValidRankClueNumber", "value", "DEFAULT_CLUE_RANKS", "variantsInit", "colorsMap", "suitsMap", "variants", "variants_default", "variantJSON", "id", "newID", "variant", "createVariant", "variantDescription", "name", "suits", "suitName", "suit", "assertDefined", "clueColors", "getVariantClueColors", "clueRank", "isValidRankClueNumber", "clueRanks", "DEFAULT_CLUE_RANKS", "DEFAULT_FINISHED_STACK_LENGTH", "stackSize", "clueStarved", "colorCluesTouchNothing", "rankCluesTouchNothing", "alternatingClues", "cowAndPig", "duck", "oddsAndEvens", "synesthesia", "upOrDown", "throwItInAHole", "funnels", "chimneys", "sudoku", "ranks", "DEFAULT_CARD_RANKS", "START_CARD_RANK", "specialRank", "specialRankAllClueColors", "specialRankAllClueRanks", "specialRankNoClueColors", "specialRankNoClueRanks", "specialRankDeceptive", "criticalRank", "maxScore", "offsetCornerElements", "suitAbbreviations", "getUppercaseSuitAbbreviationsForVariant", "showSuitNames", "getVariantShowSuitNames", "isUpOrDown", "identityNotePattern", "getIdentityNotePatternForVariant", "COLORS", "color", "colorString", "finalIDCharacter", "parseIntSafe", "CHARACTERS_MAP", "charactersInit", "COLORS_MAP", "colorsInit", "SUITS_MAP", "suitsInit", "VARIANTS_MAP_BY_NAME", "variantsInit", "VARIANT_NAMES", "VARIANTS_MAP_BY_ID", "variantsMapByID", "variant", "getSuit", "suitName", "suit", "assertDefined", "getVariant", "variantName", "getVariantByID", "variantID", "getDefaultVariant", "DEFAULT_VARIANT_NAME", "doesVariantExist", "getCharacter", "characterID", "character", "rank", "z", "data", "ALL_CARD_RANKS", "suitIndex", "z", "data", "VALID_SUIT_INDEXES", "cardIdentity", "z", "suitIndex", "rank", "numPlayers", "z", "isValidNumPlayers", "value", "VALID_NUM_PLAYERS", "playerIndex", "z", "isValidPlayerIndex", "value", "VALID_PLAYER_INDEXES", "options", "z", "numPlayers", "playerIndex", "DEFAULT_VARIANT_NAME", "defaultOptions", "isCardClued", "cardState", "isCardPlayed", "isCardDiscarded", "isCardInPlayerHand", "getCardsPerHand", "options", "getCardsPerHandNatural", "numPlayers", "getCardSlot", "order", "hand", "index", "isHandLocked", "deck", "cardState", "isCardClued", "getChopIndex", "i", "cardOrder", "isCardOnChop", "card", "cardIndexInHand", "handChopIndex", "getTotalCardsInDeck", "variant", "suitCounts", "suit", "getTotalCardsInSuit", "sumArray", "getNumCopiesOfCard", "rank", "START_CARD_RANK", "getNumDiscardedCopiesOfCard", "deck", "suitIndex", "numDiscardedCopiesOfCard", "cardState", "isCardDiscarded", "isInitialDealFinished", "currentDeckSize", "metadata", "getVariant", "totalCardsInDeck", "numCardsPerHand", "getCardsPerHand", "getDiscardHelpers", "total", "discarded", "getAllDiscardedSetForSuit", "isAllDiscarded", "allDiscardedSet", "variantRank", "isDualColor", "variant", "suit", "isColorMute", "isNumberMute", "hasReversedSuits", "getNextPlayableRanks", "suitIndex", "playStack", "playStackDirection", "playStackStarts", "variant", "deck", "currentlyPlayedRank", "getLastPlayedRank", "START_CARD_RANK", "playStackStart", "rank", "orderOfTopCard", "card", "getStackDirection", "hasReversedSuits", "suit", "top", "secondCardOrder", "secondCard", "getStackStartRank", "bottomCardOrder", "bottomCard", "reversibleIsCardNeededForMaxScore", "suitIndex", "rank", "deck", "playStacks", "playStackDirections", "variant", "direction", "isCardDead", "START_CARD_RANK", "playStack", "allDiscardedSet", "getAllDiscardedSetForSuit", "impliedDirection", "lowestNextRank", "nextRank", "eRange", "highestNextRank", "reversibleGetMaxScorePerStack", "maxScorePerStack", "newArray", "i", "stackDirection", "upWalk", "walkUp", "downWalk", "walkDown", "cardsThatCanStillBePlayed", "iRange", "reversibleIsCardCritical", "isLastCopy", "isAllDiscarded", "getDiscardHelpers", "lastCopy", "sudokuIsCardNeededForMaxScore", "suitIndex", "rank", "deck", "playStackStarts", "variant", "allDiscardedSet", "getAllDiscardedSetForSuit", "maxScoresForEachStartingValueOfSuit", "sudokuWalkUpAll", "playStackStart", "assertDefined", "sudokuGetUnusedStackStartRanks", "possibleStackStartRank", "longestSequence", "score", "newArray", "lastDead", "currentRank", "writeRank", "eRange", "maxScore", "iRange", "scoreForStartingAt1", "scoreForPlayingUpToLargestRank", "scoreWithWraparound", "incrementFiveStackIndex", "i", "val", "assertFiveStackIndex", "decrementFiveStackIndex", "eRange5", "start", "end", "cur", "evaluateAssignment", "curAssignment", "unassignedSuits", "possibleStackStarts", "maxPartialScores", "assignmentValue", "assignment", "assignedLocalSuitIndex", "assignedStackStartIndex", "assignedSuit", "assignedStackStart", "maxPartialScoresForThisSuit", "value", "isAssignmentBetter", "assignmentSorted", "bestAssignmentSum", "bestAssignmentSorted", "valBestAssignment", "findNextAssignment", "curAssignedStackStartIndex", "assignedStackStarts", "firstStackStartToTry", "nextAssignment", "sudokuGetMaxScorePerStack", "independentPartOfMaxScore", "stackStart", "allMax", "bestAssignment", "localSuitIndex", "assigned", "a", "b", "higherLocalSuitIndex", "maxScorePerStack", "unassignedLocalSuitIndex", "unassignedSuit", "getCardName", "suitIndex", "rank", "variant", "suit", "rankName", "START_CARD_RANK", "isCardNeededForMaxScore", "deck", "playStacks", "playStackDirections", "playStackStarts", "playStack", "filterMap", "order", "card", "hasReversedSuits", "reversibleIsCardNeededForMaxScore", "sudokuIsCardNeededForMaxScore", "isAllDiscarded", "getDiscardHelpers", "precedingRank", "eRange", "getCardStatus", "isCardCritical", "reversibleIsCardCritical", "numTotal", "getNumCopiesOfCard", "numDiscarded", "getNumDiscardedCopiesOfCard", "isCardPotentiallyPlayable", "possibleCard", "playStackDirection", "getNextPlayableRanks", "canCardPossiblyBeFromCluesOnly", "s", "canCardPossiblyBeFromEmpathy", "isAllCardPossibilitiesTrash", "empathy", "getNewClueTokensAfterAction", "action", "clueTokens", "variant", "playStackComplete", "shouldActionGenerateClueToken", "isAtMaxClueTokens", "getAdjustedClueTokens", "getUnadjustedClueTokens", "clueTokensAdjusted", "MAX_CLUE_NUM", "getDiscardClueTokenValue", "getSuitCompleteClueTokenValue", "getMaxScorePerStack", "deck", "playStackDirections", "playStackStarts", "variant", "sudokuGetMaxScorePerStack", "reversibleGetMaxScorePerStack", "getMaxDiscardsBeforeFinalRound", "cardsToPlay", "deckSize", "endGameLength", "getMaxPlaysDuringFinalRound", "getMaxPlays", "getPace", "score", "maxScore", "gameOver", "getPaceRisk", "currentPace", "numPlayers", "getStartingDeckSize", "cardsPerHand", "totalCardsInDeck", "getTotalCardsInDeck", "initialCardsDrawn", "getStartingPace", "getCardsGotten", "playStacks", "playing", "shadowing", "currentCardsGotten", "cardState", "isCardInPlayerHand", "isCardClued", "isAllCardPossibilitiesTrash", "getCardsGottenByNotes", "notes", "numCardsGottenByNotes", "i", "order", "adjustmentFromThisCard", "getCardsGottenByNotesAdjustment", "note", "isCluedForReal", "getMinEfficiency", "totalClues", "getStartingCluesUsable", "getCluesStillUsableNotRounded", "scorePerStack", "maxScorePerStack", "stackSize", "discardClueTokenValue", "suitCompleteClueTokenValue", "currentClues", "missingScore", "sumArray", "cluesFromDiscards", "cluesFromSuits", "playsDuringFinalRound", "minPlaysBeforeFinalRound", "missingCardsPerCompletableSuit", "suitIndex", "stackScore", "stackMaxScore", "a", "b", "cardsPlayed", "suitsCompletedBeforeFinalRound", "missingCardsInSuit", "getCluesStillUsable", "result", "newArray", "getDiscardClueTokenValue", "getSuitCompleteClueTokenValue", "startingClues", "MAX_CLUE_NUM", "assertNotNull", "getEfficiency", "numCardsGotten", "potentialCluesLost", "getDoubleDiscardCard", "orderOfDiscardedCard", "gameState", "variant", "cardDiscarded", "nextPlayerIndex", "hand", "isHandLocked", "isCardNeededForMaxScore", "cardInDeck", "suit", "numCopiesTotal", "getNumCopiesOfCard", "numDiscarded", "getNumDiscardedCopiesOfCard", "shouldEndTurnAfterDraw", "cardsPlayedOrDiscardedThisTurn", "cardsDiscardedThisTurn", "characterName", "clueTokens", "variant", "getAdjustedClueTokens", "shouldEndTurnAfterClue", "cluesGivenThisTurn", "shouldPlayOrderInvert", "getNextPlayerIndex", "currentPlayerIndex", "numPlayers", "turnsInverted", "previousPlayerIndex", "nextPlayerIndex", "getEndGameLength", "options", "characterAssignments", "characterID", "getCharacter", "getEndTurn", "turn", "metadata", "HARD_VARIANT_EFFICIENCY_THRESHOLD", "isHardVariant", "variant", "minEfficiency", "isColorMute", "isNumberMute", "cachedVariantID", "cachedCardCountMap", "cardDeductionReducer", "deck", "oldDeck", "action", "hands", "metadata", "makeDeductions", "newDeck", "variant", "getVariant", "cardCountMap", "getCardCountMap", "updateAllCardPossibilities", "playerIndex", "tupleKeys", "ourPlayerIndex", "hand", "order", "card", "shouldUpdateCardPossibilities", "updateCardPossibilities", "getCardPossibilitiesForPlayer", "oldCard", "deckPossibilitiesDifferent", "deckPossibilities", "generateDeckPossibilities", "possibleCards", "possibleCardsForEmpathy", "filterCardPossibilities", "newCard", "revealedToThisPlayer", "excludeCardOrder", "canBeUsedToDisprovePossibility", "cardPossibilities", "a", "b", "isPossibleCard", "possibilities", "suitIndex", "rank", "previouslyUsed", "currentlyUsed", "previousPossibilities", "currentPossibilities", "possibilitiesToValidate", "possibility", "hasPossibility", "possibilityValid", "suitIndexCandidate", "rankCandidate", "index", "updatePossibilitiesToValidate", "suitRankTuples", "assertDefined", "i", "possibilityIndex", "j", "suitRankTuple", "arrayCopyTwoDimensional", "possibleCardMap", "suit", "numCopiesOfCard", "getNumCopiesOfCard", "getCharacterNameForPlayer", "playerIndex", "characterAssignments", "characterID", "getCharacterIDForPlayer", "getCharacter", "assertDefined", "newColorClue", "color", "newRankClue", "rank", "getClueName", "clueType", "clueValue", "variant", "characterName", "color", "msgClueToClue", "msgClue", "assertDefined", "newColorClue", "newRankClue", "isCardTouchedByClue", "clue", "cardSuitIndex", "cardRank", "suit", "isCardTouchedByClueColor", "isCardTouchedByClueRank", "clueColor", "cardSuit", "prismColorIndex", "prismColor", "getColorForPrismCard", "suitClueColor", "rank", "START_CARD_RANK", "clueRank", "deceptiveRankIndex", "deceptiveRank", "shouldApplyClue", "giverPlayerIndex", "metadata", "giverCharacterName", "getCharacterNameForPlayer", "cardPossibilitiesReducer", "state", "clue", "positive", "metadata", "variant", "getVariant", "possibleCardsFromClues", "suitIndex", "rank", "isCardTouchedByClue", "possibleCards", "possibleCardsForEmpathy", "positiveColorClues", "positiveRankClues", "suitDetermined", "rankDetermined", "revealedToPlayer", "updateIdentity", "possibleSuits", "suitRankTuple", "possibleRanks", "newArray", "MAX_PLAYERS", "shouldSeeSlot2CardIdentity", "metadata", "getCharacterNameForPlayer", "getInitialCardState", "order", "variant", "numPlayers", "possibleCards", "i", "suitIndex", "rank", "totalCardsInDeck", "getTotalCardsInDeck", "newArray", "cardsReducer", "deck", "action", "game", "metadata", "variant", "getVariant", "newDeck", "hands", "arrayCopyTwoDimensional", "order", "card", "getCard", "cardIdentityRevealedToPlayer", "shouldSeeSlot2CardIdentity", "clue", "msgClueToClue", "hand", "assertDefined", "applyClue", "positive", "shouldApplyClue", "newCard", "cardPossibilitiesReducer", "isCardOnChop", "negativeClues", "suitIndex", "rank", "identityDetermined", "revealCard", "segmentPlayed", "segmentDiscarded", "location", "isMisplayed", "revealedToPlayer", "newArray", "MAX_PLAYERS", "possibleCards", "initial", "getInitialCardState", "drawnCard", "drawnCardRevealedToPlayer", "isInitialDealFinished", "cardDeductionReducer", "characterAssignments", "playerIndex", "tupleKeys", "characterName", "getCharacterNameForPlayer", "previouslyRevealed", "drawLocation", "numPlayers", "i", "eRange", "canPlayerSeeDrawnCard", "ddaReducer", "deck", "dda", "currentPlayerIndex", "newDeck", "order", "card", "ddaCard", "assertDefined", "suitIndex", "rank", "inDoubleDiscard", "canCardPossiblyBeFromCluesOnly", "NOTHING", "DRAFTABLE", "DRAFT_STATE", "die", "error", "args", "getPrototypeOf", "isDraft", "value", "DRAFT_STATE", "isDraftable", "isPlainObject", "DRAFTABLE", "isMap", "isSet", "objectCtorString", "proto", "Ctor", "original", "each", "obj", "iter", "getArchtype", "key", "entry", "index", "thing", "state", "has", "prop", "set", "thing", "propOrOldValue", "value", "t", "getArchtype", "is", "x", "y", "isMap", "target", "isSet", "latest", "state", "shallowCopy", "base", "strict", "isPlain", "isPlainObject", "descriptors", "DRAFT_STATE", "keys", "i", "key", "desc", "getPrototypeOf", "proto", "obj", "freeze", "deep", "isFrozen", "isDraft", "isDraftable", "dontMutateFrozenCollections", "die", "plugins", "getPlugin", "pluginKey", "plugin", "currentScope", "getCurrentScope", "createScope", "parent_", "immer_", "usePatchesInScope", "scope", "patchListener", "getPlugin", "revokeScope", "leaveScope", "revokeDraft", "enterScope", "immer", "draft", "state", "DRAFT_STATE", "processResult", "result", "baseDraft", "die", "isDraftable", "finalize", "maybeFreeze", "NOTHING", "rootScope", "value", "path", "isFrozen", "each", "key", "childValue", "finalizeProperty", "resultEach", "isSet", "parentState", "targetObject", "prop", "rootPath", "targetIsSet", "isDraft", "has", "res", "set", "deep", "freeze", "createProxyProxy", "base", "parent", "isArray", "target", "traps", "objectTraps", "arrayTraps", "revoke", "proxy", "source", "latest", "readPropFromProto", "peek", "prepareCopy", "createProxy", "desc", "getDescriptorFromProto", "current", "currentState", "is", "markChanged", "owner", "getPrototypeOf", "fn", "proto", "shallowCopy", "Immer", "config", "recipe", "defaultBase", "self", "args", "hasError", "p", "ip", "patches", "inversePatches", "i", "patch", "applyPatchesImpl", "isMap", "currentImpl", "copy", "immer", "Immer", "produce", "produceWithPatches", "setAutoFreeze", "setUseStrictShallowCopy", "applyPatches", "createDraft", "finishDraft", "HYPO_PREFIX", "NUMBER_WORDS", "getGoesFirstText", "playerIndex", "playerNames", "getClueText", "action", "targetHand", "hypothetical", "metadata", "giver", "target", "word", "variant", "getVariant", "hypoPrefix", "characterName", "getCharacterNameForPlayer", "actionName", "getClueActionName", "targetSuffix", "slots", "order", "slot", "getCardSlot", "assertDefined", "a", "b", "slotWord", "slotsText", "clueName", "getClueName", "msgClue", "getGameOverText", "endCondition", "score", "votes", "playerName", "getPlayerName", "getPlayerNames", "playerIndices", "i", "getPlayText", "touched", "playing", "shadowing", "cardIsHidden", "cardName", "getCardName", "location", "suffix", "playText", "getDiscardText", "critical", "getDiscardTextSuffix", "millisecondsToClockString", "milliseconds", "time", "seconds", "minutes", "paddedSeconds", "pad2", "num", "knownTrashReducer", "deck", "playStacks", "playStackDirections", "playStackStarts", "variant", "newDeck", "order", "card", "isKnownTrashFromEmpathy", "isAllCardPossibilitiesTrash", "statsReducer", "produce", "statsReducerFunction", "statsState", "action", "previousGameState", "gameState", "playing", "shadowing", "metadata", "ourNotes", "variant", "getVariant", "getDiscardClueTokenValue", "playStack", "numEndGameTurns", "getEndGameLength", "getMaxScorePerStack", "sumArray", "score", "getPace", "getPaceRisk", "getCardsGotten", "getCardsGottenByNotes", "scorePerStack", "discardClueTokenValue", "suitCompleteClueTokenValue", "getSuitCompleteClueTokenValue", "unadjustedClueTokens", "getUnadjustedClueTokens", "getCluesStillUsable", "getCluesStillUsableNotRounded", "getDoubleDiscardCard", "isBlindPlay", "isOneOfThreeMainActions", "cardState", "isCardClued", "turnReducer", "produce", "turnReducerFunction", "turn", "action", "gameState", "metadata", "variant", "getVariant", "characterName", "getCharacterNameForPlayer", "nextTurn", "shouldEndTurnAfterDraw", "assertNotNull", "shouldEndTurnAfterClue", "isInitialDealFinished", "state", "deckSize", "shouldPlayOrderInvert", "getNextPlayerIndex", "getEndTurn", "gameReducer", "produce", "gameReducerFunction", "gameState", "action", "playing", "shadowing", "finished", "hypothetical", "metadata", "ourNotes", "variant", "getVariant", "getAdjustedClueTokens", "assertNotNull", "targetHand", "assertDefined", "negativeList", "i", "clue", "text", "getClueText", "giverHand", "cardCycle", "hand", "handIndex", "slot", "throwItInAHolePlayedOrMisplayed", "discardStack", "getNewClueTokensAfterAction", "cardState", "touched", "isCardClued", "critical", "isCardCritical", "isCardNeededForMaxScore", "getDiscardText", "isInitialDealFinished", "getGoesFirstText", "getGameOverText", "playStack", "getPlayText", "playerIndex", "playerTime", "tupleEntries", "modifier", "milliseconds", "durationString", "millisecondsToClockString", "playerName", "getPlayerName", "originalDeck", "original", "cardsReducer", "hasReversedSuits", "direction", "getStackDirection", "getStackStartRank", "rank", "getCardStatus", "turnReducer", "originalState", "statsReducer", "ddaReducer", "knownTrashReducer", "deck", "chopIndex", "getChopIndex", "removedCardOrder", "getInitialTurnState", "startingPlayerIndex", "getInitialGameState", "metadata", "options", "variant", "getVariant", "playStacks", "newArray", "playStackDirections", "suitIndex", "getStackDirection", "playStackStarts", "turn", "getInitialTurnState", "cardsRemainingInTheDeck", "getTotalCardsInDeck", "cardStatus", "getInitialCardStatusMap", "clueTokens", "getAdjustedClueTokens", "MAX_CLUE_NUM", "hands", "discardStacks", "maxScore", "maxScorePerStack", "cardsPerHand", "getCardsPerHand", "startingDeckSize", "getStartingDeckSize", "endGameLength", "getEndGameLength", "pace", "getStartingPace", "paceRisk", "getPaceRisk", "scorePerStack", "playStack", "discardClueValue", "getDiscardClueTokenValue", "suitClueValue", "getSuitCompleteClueTokenValue", "score", "sumArray", "currentClues", "getUnadjustedClueTokens", "cluesStillUsableNotRounded", "getCluesStillUsableNotRounded", "cluesStillUsable", "cardStatusMap", "i", "suitStatuses", "rank", "getCardStatus", "cardOrder", "z", "colorIndex", "z", "data", "VALID_CLUE_COLOR_INDEXES", "gameID", "z", "gameHistory", "z", "gameID", "options", "EndCondition", "httpLoginData", "z", "DEFAULT_CREATE_TABLE_MAX_PLAYERS", "settings", "z", "DEFAULT_VARIANT_NAME", "numPlayers", "defaultSettings", "spectator", "z", "playerIndex", "tableID", "z", "userID", "z", "serverCommandChatData", "z", "serverCommandChatListData", "serverCommandErrorData", "serverCommandGameHistoryData", "gameHistory", "serverCommandTableData", "tableID", "options", "spectator", "serverCommandTableListData", "serverCommandUserData", "userID", "Status", "serverCommandUserLeftData", "serverCommandUserListData", "serverCommandWarningData", "serverCommandWelcomeData", "settings", "SERVER_COMMAND_SCHEMAS", "__reExport", "src_exports", "import_jquery", "Globals", "defaultSettings", "globals", "FILE_IDS", "Loader", "fileID", "filePath", "img", "name", "element", "assertDefined", "KEY_BACK_SPACE", "KEY_TAB", "KEY_RETURN", "KEY_ESCAPE", "KEY_SPACE", "KEY_END", "KEY_HOME", "KEY_LEFT", "KEY_UP", "KEY_RIGHT", "KEY_DOWN", "KEY_DELETE", "KEY_1", "KEY_A", "KEY_B", "KEY_C", "KEY_D", "KEY_E", "KEY_H", "KEY_J", "KEY_L", "KEY_N", "KEY_O", "KEY_Q", "KEY_R", "KEY_S", "KEY_T", "KEY_W", "KEY_Y", "KEY_Z", "KEY_NUMPAD1", "KEY_ADD", "KEY_SUBTRACT", "KEY_OPEN_BRACKET", "KEY_CLOSE_BRACKET", "encodedTlds", "encodedUtlds", "assign", "target", "properties", "key", "numeric", "ascii", "alpha", "asciinumeric", "alphanumeric", "domain", "emoji", "scheme", "slashscheme", "whitespace", "registerGroup", "name", "groups", "addToGroups", "t", "flags", "k", "group", "flagsForToken", "result", "c", "State", "token", "input", "state", "nextState", "regex", "exactOnly", "inputs", "next", "i", "regexp", "len", "templateState", "allFlags", "ta", "tr", "ts", "tt", "WORD", "UWORD", "LOCALHOST", "TLD", "UTLD", "SCHEME", "SLASH_SCHEME", "NUM", "WS", "NL$1", "OPENBRACE", "CLOSEBRACE", "OPENBRACKET", "CLOSEBRACKET", "OPENPAREN", "CLOSEPAREN", "OPENANGLEBRACKET", "CLOSEANGLEBRACKET", "FULLWIDTHLEFTPAREN", "FULLWIDTHRIGHTPAREN", "LEFTCORNERBRACKET", "RIGHTCORNERBRACKET", "LEFTWHITECORNERBRACKET", "RIGHTWHITECORNERBRACKET", "FULLWIDTHLESSTHAN", "FULLWIDTHGREATERTHAN", "AMPERSAND", "APOSTROPHE", "ASTERISK", "AT", "BACKSLASH", "BACKTICK", "CARET", "COLON", "COMMA", "DOLLAR", "DOT", "EQUALS", "EXCLAMATION", "HYPHEN", "PERCENT", "PIPE", "PLUS", "POUND", "QUERY", "QUOTE", "SEMI", "SLASH", "TILDE", "UNDERSCORE", "EMOJI$1", "SYM", "tk", "ASCII_LETTER", "LETTER", "EMOJI", "DIGIT", "SPACE", "NL", "EMOJI_VARIATION", "EMOJI_JOINER", "tlds", "utlds", "init$2", "customSchemes", "groups", "State", "Start", "decodeTlds", "encodedTlds", "encodedUtlds", "tt", "APOSTROPHE", "OPENBRACE", "CLOSEBRACE", "OPENBRACKET", "CLOSEBRACKET", "OPENPAREN", "CLOSEPAREN", "OPENANGLEBRACKET", "CLOSEANGLEBRACKET", "FULLWIDTHLEFTPAREN", "FULLWIDTHRIGHTPAREN", "LEFTCORNERBRACKET", "RIGHTCORNERBRACKET", "LEFTWHITECORNERBRACKET", "RIGHTWHITECORNERBRACKET", "FULLWIDTHLESSTHAN", "FULLWIDTHGREATERTHAN", "AMPERSAND", "ASTERISK", "AT", "BACKTICK", "CARET", "COLON", "COMMA", "DOLLAR", "DOT", "EQUALS", "EXCLAMATION", "HYPHEN", "PERCENT", "PIPE", "PLUS", "POUND", "QUERY", "QUOTE", "SLASH", "SEMI", "TILDE", "UNDERSCORE", "BACKSLASH", "Num", "tr", "DIGIT", "NUM", "numeric", "Word", "ASCII_LETTER", "WORD", "ascii", "UWord", "LETTER", "UWORD", "alpha", "Ws", "SPACE", "WS", "whitespace", "NL$1", "Emoji", "EMOJI", "EMOJI$1", "emoji", "EmojiJoiner", "wordjr", "uwordjr", "i", "fastts", "TLD", "UTLD", "addToGroups", "SCHEME", "SLASH_SCHEME", "a", "b", "sch", "flags", "scheme", "slashscheme", "domain", "asciinumeric", "ts", "LOCALHOST", "SYM", "assign", "tk", "run$1", "start", "str", "iterable", "stringToArray", "charCount", "tokens", "cursor", "charCursor", "state", "nextState", "tokenLength", "latestAccepting", "sinceAccepts", "charsSinceAccepts", "result", "len", "index", "first", "second", "char", "input", "t", "defaultt", "jr", "next", "encoded", "words", "stack", "digits", "popDigitCount", "popCount", "defaults", "noop", "Options", "opts", "defaultRender", "o", "ignoredTags", "uppercaseIgnoredTags", "ir", "token", "key", "operator", "isCallable", "option", "obj", "val", "MultiToken", "value", "tokens", "scheme", "options", "val", "truncate", "formatted", "protocol", "defaults", "token", "href", "formattedHref", "tagName", "content", "attributes", "className", "target", "rel", "attrs", "eventListeners", "assign", "createTokenClass", "type", "props", "Token", "p", "Email", "Text", "Nl", "Url", "LOCALHOST", "COLON", "makeState", "arg", "State", "init$1", "_ref", "groups", "qsAccepting", "AMPERSAND", "ASTERISK", "AT", "BACKSLASH", "BACKTICK", "CARET", "DOLLAR", "EQUALS", "HYPHEN", "NUM", "PERCENT", "PIPE", "PLUS", "POUND", "SLASH", "SYM", "TILDE", "UNDERSCORE", "qsNonAccepting", "APOSTROPHE", "COLON", "COMMA", "DOT", "EXCLAMATION", "QUERY", "QUOTE", "SEMI", "OPENANGLEBRACKET", "CLOSEANGLEBRACKET", "OPENBRACE", "CLOSEBRACE", "CLOSEBRACKET", "OPENBRACKET", "OPENPAREN", "CLOSEPAREN", "FULLWIDTHLEFTPAREN", "FULLWIDTHRIGHTPAREN", "LEFTCORNERBRACKET", "RIGHTCORNERBRACKET", "LEFTWHITECORNERBRACKET", "RIGHTWHITECORNERBRACKET", "FULLWIDTHLESSTHAN", "FULLWIDTHGREATERTHAN", "localpartAccepting", "Start", "Localpart", "tt", "ta", "Domain", "Scheme", "SlashScheme", "LocalpartAt", "LocalpartDot", "EmailDomain", "EmailDomainDot", "Email$1", "Email", "LOCALHOST", "EmailDomainHyphen", "EmailColon", "DomainHyphen", "DomainDot", "DomainDotTld", "Url", "DomainDotTldColon", "DomainDotTldColonPort", "Url$1", "UrlNonaccept", "SchemeColon", "SlashSchemeColon", "SlashSchemeColonSlash", "UriPrefix", "bracketPairs", "i", "OPEN", "CLOSE", "UrlOpen", "UrlOpenQ", "UrlOpenSyms", "NL$1", "Nl", "tk", "run", "start", "input", "tokens", "len", "cursor", "multis", "textTokens", "state", "secondState", "nextState", "multiLength", "latestAccepting", "sinceAccepts", "initMultiToken", "Text", "Multi", "subtokens", "startIdx", "endIdx", "value", "INIT", "init", "INIT", "init$2", "i", "init$1", "tokenize", "str", "run", "run$1", "HTML5NamedCharRefs", "HEXCHARCODE", "CHARCODE", "NAMED", "EntityParser", "named", "entity", "matches", "WSP", "ALPHA", "CRLF", "isSpace", "char", "isAlpha", "preprocessInput", "input", "EventedTokenizer", "delegate", "entityParser", "mode", "tag", "maybeDoctype", "nextSixChars", "isPublic", "isSystem", "state", "handler", "endIndex", "chars", "count", "Tokenizer", "options", "token", "i", "doctype", "isQuoted", "message", "tokenize", "tokenizer", "LinkifyResult", "StartTag", "EndTag", "Chars", "Comment", "Doctype", "linkifyHtml", "str", "opts", "tokens", "linkifiedTokens", "linkified", "Options", "defaultRender", "tagName", "preskipLen", "skipTagTokens", "linkifedChars", "linkifyChars", "link", "attributeArrayToStrings", "escapeText", "result", "skippedTokens", "stackCount", "_ref", "attributes", "content", "attributesToString", "text", "escapeAttr", "attr", "val", "attrs", "attrStrs", "name", "value", "TEST_USERNAMES", "ReadonlySet", "amTestUser", "username", "parseSuit", "variant", "suitText", "suitAbbreviationIndex", "abbreviation", "suitNameIndex", "suit", "parseRank", "rankText", "START_CARD_RANK", "parseIdentity", "keyword", "identityMatch", "extractSuitText", "extractRankText", "parseIdentities", "suitIndex", "rank", "squishText", "extractSquishText", "suitIndices", "ranks", "letter", "identityMapToArray", "identityMap", "possibilities", "suitArray", "i", "isRankSuitCombinationPossible", "getPossibilitiesFromKeyword", "positiveCardIdentities", "negativeCardIdentities", "getCardIdentitiesFromKeyword", "positiveRanks", "identityArrayValue", "identityArray", "newArray", "cardIdentitiesArray", "isPositive", "cardIdentities", "eRange", "keywordSegmentRaw", "keywordSegment", "isNegative", "keywordSegmentWithoutExclamationPoint", "getPossibilitiesFromKeywords", "keywords", "newPossibilities", "oldPossibilities", "intersection", "newSuitIndex", "newRank", "oldSuitIndex", "oldRank", "match", "text", "ALL_RESERVED_NOTES", "import_konva", "Elements", "import_konva", "defaultLayerSettings", "Layers", "Konva", "copyStringToClipboard", "str", "element", "dateTimeFormatter", "getHTMLElement", "selectors", "getHTMLInputElement", "getURLFromPath", "path", "url", "setBrowserAddressBarPath", "newPath", "hash", "modifiedQueryParameters", "timerFormatter", "totalSeconds", "time", "hours", "minutes", "seconds", "secondsFormatted", "minutesFormatted", "currentCursorType", "gameDiv", "getHTMLElement", "set", "cursorType", "globals", "cursorTypes", "type", "getElementDragLocation", "element", "pos", "posOverlaps", "elementOverlaps", "elementPos", "UIGlobals", "Globals", "Konva", "Layers", "Elements", "ReadonlyMap", "getDefaultVariant", "set", "unsubscribeFunc", "globals", "import_konva", "import_tooltipster", "import_tooltipster_scrollableTip", "TOOLTIP_DELAY_IN_MILLISECONDS", "TOOLTIP_THEME", "TOOLTIP_THEME_CENTERED", "defaultOptions", "navOptions", "gameOptions", "clipboardOptions", "initGame", "createGameTooltips", "createPlayerTooltips", "createCardTooltips", "create", "selector", "type", "args", "tooltip", "getElementFromSelector", "tooltipOptions", "getOptionsFromType", "open", "isTooltipster", "openInstance", "close", "closeInstance", "closeAllTooltips", "instances", "_", "instance", "setInstanceContent", "content", "setPosition", "x", "y", "setInstanceOption", "option", "value", "getStatus", "reposition", "appendDiv", "id", "newElement", "getHTMLElement", "tooltips", "i", "eRange", "MAX_PLAYERS", "order", "MAX_CARDS_IN_A_DECK", "MAX_SUITS_IN_A_VARIANT", "element", "import_konva", "BOTTOM_LEFT_Y", "LABEL_COLOR", "ARROW_COLOR", "CLUED_COLOR", "CHOP_MOVE_COLOR", "FINESSE_COLOR", "OFF_BLACK", "CARD_ANIMATION_LENGTH_SECONDS", "PREPLAY_DELAY_MILLISECONDS", "DOUBLE_TAP_DELAY_SECONDS", "import_konva", "drawLayer", "node", "layer", "animate", "params", "interactive", "fast", "globals", "config", "Konva", "CardLayout", "Konva", "config", "assertDefined", "child", "pos", "handWidth", "handHeight", "numCards", "uw", "i", "eRange", "layoutChild", "scale", "spacingBetweenCards", "maxSpacingBetweenCards", "globals", "x", "newX", "animateToLayout", "animate", "CARD_ANIMATION_LENGTH_SECONDS", "suit", "playStack", "playStackPos", "w", "h", "rot", "enabled", "card", "import_konva", "import_lodash", "import_fast_deep_equal", "notesReducer", "produce", "notesReducerFunction", "emptyNotes", "notes", "action", "metadata", "playing", "finished", "variant", "getVariant", "newNote", "parseNote", "spectatorNotes", "spectatorNote", "i", "text", "noteTextList", "name", "isSpectator", "order", "getNoteKeywords", "note", "regexp", "keywords", "match", "checkNoteKeywordsForMatch", "patterns", "k", "getEmptyNote", "noteWithoutText", "noteEqual", "note1", "note2", "equal", "noteHasMeaning", "lastPipeIndex", "fullNote", "possibilities", "getPossibilitiesFromKeywords", "chopMoved", "CHOP_MOVED_NOTES", "finessed", "FINESSED_NOTES", "knownTrash", "KNOWN_TRASH_NOTES", "needsFix", "NEEDS_FIX_NOTES", "questionMark", "QUESTION_MARK_NOTES", "exclamationMark", "EXCLAMATION_MARK_NOTES", "blank", "BLANK_NOTES", "unclued", "UNCLUED_NOTES", "clued", "CLUED_NOTES", "import_konva", "import_konva", "NoteIndicator", "Konva", "import_konva", "RankPip", "Konva", "config", "fill", "CLUED_COLOR", "SCALE_FACTOR", "shapeFunctions", "ctx", "colors", "gradient", "color", "drawPip", "suit", "secondary", "shadow", "customFill", "lineWidth", "highLight", "shapeFunction", "assertDefined", "hasCustomFill", "grad", "i", "konvaCanvas", "canvasFillRule", "context", "image", "getBareName", "bare", "Konva", "ctx", "scaleCardImage", "borderCornerRadius", "borderStrokeWidth", "borderStrokeWidthInside", "borderOffset", "borderOutsideColor", "OFF_BLACK", "makeBorder", "color", "border", "borderOutside", "getBorderConfig", "borderInside", "strokeWidth", "stroke", "cluedBorder", "CLUED_COLOR", "chopMoveBorder", "CHOP_MOVE_COLOR", "finesseBorder", "FINESSE_COLOR", "directionArrow", "variant", "hasReversedSuits", "arrow", "arrowHeight", "pointerLength", "edge", "arrowBase", "cachedVariant", "cachedPips", "makeCachedPips", "suitPipsMap", "suitPipsPositiveMap", "suitPipsXMap", "pipTypes", "suitIndex", "suit", "secondaryPip", "x", "y", "scale", "offsetBase", "offsetTrig", "offset", "fill", "suitPip", "getNewColorPip", "suitPipPositive", "suitPipX", "shape", "xx", "xy", "drawX", "rankPipsMap", "rankPipsXMap", "rank", "START_CARD_RANK", "rankPip", "RankPip", "globals", "rankPipX", "pips", "suitPips", "rankPips", "note", "offsetCornerElements", "shouldShowIndicator", "noteIndicator", "NoteIndicator", "criticalIndicator", "indicator", "BOTTOM_LEFT_Y", "questionMark", "exclamationMark", "trashcan", "wrench", "ddaIndicatorTop", "ddaIndicatorBottom", "trashMiniIndicatorTop", "trashMiniIndicatorBottom", "name", "width", "height", "tf", "src", "assertDefined", "dw", "dh", "sw", "sh", "steps", "scaledCardImages", "scaledCardImage", "scaleContext", "positionX", "positionY", "size", "isPositive", "drawPip", "sounds_exports", "__export", "SOUNDS_PATH", "init", "play", "SOUNDS_PATH", "PRELOAD_SOUND_TYPES", "soundEffect", "init", "soundType", "play", "file", "mute", "path", "volume", "globals", "ActionType", "import_konva", "ColorButton", "Konva", "config", "suit", "w", "h", "backgroundColor", "globals", "isDualColor", "text", "suitPip", "ctx", "drawPip", "drawLayer", "pressed", "import_konva", "RankButton", "Konva", "config", "w", "h", "text", "drawLayer", "pressed", "getCardOrStackBase", "order", "totalCardsInDeck", "getTotalCardsInDeck", "globals", "stackBaseIndex", "stackBase", "card", "REMOVE_PIPE_KEYS", "ReadonlySet", "CLOSE_NOTE_KEYS", "META_KEYS", "escapeHtml", "unsafe", "get", "order", "our", "escape", "escapeFunc", "text", "globals", "content", "noteObjectArray", "firstSpectator", "noteObject", "name", "isSpectator", "trimSuffix", "set", "oldNote", "card", "getCardOrStackBase", "update", "tooltip", "setInstanceContent", "close", "visibleOld", "visibleNew", "show", "pos", "posX", "posY", "setInstanceOption", "setPosition", "shownNote", "open", "openEditTooltip", "isDesktop", "addText", "status", "getStatus", "note", "input", "noteTextbox", "shouldRemovePipe", "event", "key", "newNote", "val", "setAllCardIndicators", "stackBase", "lastNote", "clickRightCheckAddNote", "event", "card", "isSpeedrun", "globals", "preOpenNoteEditTooltip", "openEditTooltip", "suitIndexToSuit", "suitIndex", "variant", "colorToColorIndex", "color", "i", "variantColor", "test", "notificationAdvice", "permission", "showWarning", "send", "msg", "tag", "checkLegal", "target", "globals", "clueTypeButtonGroup", "clueButton", "who", "currentPlayerIndex", "touchedAtLeastOneCard", "showClueMatch", "ourCharacterName", "getCharacterNameForPlayer", "enabled", "clue", "hideAll", "cardLayout", "hand", "i", "eRange", "child", "card", "isTouched", "set", "getTouchedCardsFromClue", "cardsTouched", "identity", "msgClueToClue", "suitIndex", "rank", "isCardTouchedByClue", "give", "playerButton", "clueOrRankButton", "shouldGiveClue", "colorIndex", "colorToColorIndex", "assertDefined", "clientActionColorClue", "end", "clientActionRankClue", "ourPlayerIndex", "ongoingGameState", "ourTurn", "clueTokenAvailable", "getAdjustedClueTokens", "recentlyClicked", "startHypothetical", "globals", "endHypothetical", "sendHypotheticalAction", "hypoAction", "gameState", "type", "card", "getCardOrStackBase", "suitIndex", "rank", "failed", "newType", "getNextPlayableRanks", "sendHypotheticalActionToServer", "nextCardOrder", "nextCard", "clue", "hypoActionToMsgClue", "list", "getTouchedCardsFromClue", "nextPlayerIndex", "sendHypotheticalBack", "toggleRevealed", "checkToggleRevealedButton", "actionMessage", "cardOrder", "changeStartingHandVisibility", "startingPlayerIndex", "i", "eRange", "forceHandEmpathy", "playerIndex", "force", "hand", "layoutChild", "setEmpathyOnHand", "isOurTurn", "globals", "get", "globals", "ourPlayerIndex", "ourHand", "assertDefined", "checkSetDraggableAll", "import_konva", "setTurnButton", "getHTMLElement", "setTurnInput", "getHTMLInputElement", "enter", "customSegment", "globals", "segment", "exit", "getCurrentReplaySegment", "finalSegment", "goToSegment", "breakFree", "force", "currentSegment", "newSegment", "clamp", "goToSegmentAndIndicateCard", "order", "hideAll", "card", "getCardOrStackBase", "toggle", "back", "forward", "backRound", "forwardRound", "backFull", "forwardFull", "exitButton", "segmentFromBarPosition", "x", "w", "step", "barClick", "rectX", "barScroll", "delta", "shuttleDragBound", "pos", "min", "shuttleX", "shuttleDragMove", "positionReplayShuttle", "shuttle", "targetSegment", "smaller", "fast", "winH", "sliderW", "y", "animate", "Konva", "adjustShuttles", "draggingShuttle", "promptTurn", "event", "closeModals", "goTo", "showPrompt", "turnString", "turn", "parseIntSafe", "toggleSharedSegments", "begin", "resetSelectedClue", "globals", "send", "handlePremove", "premove", "clueTokens", "oldPremove", "getAdjustedClueTokens", "isAtMaxClueTokens", "isOurTurn", "hideArrowsAndDisableDragging", "PREPLAY_DELAY_MILLISECONDS", "end", "clientAction", "sendHypotheticalAction", "currentPlayerIndex", "ourPlayerIndex", "exit", "showWaitingOnServerAnimation", "hideAll", "checkSetDraggableAll", "mouseDownSpeedrun", "card", "event", "clickLeft", "clickRight", "globals", "end", "isCardInPlayerHand", "getAdjustedClueTokens", "clueColor", "getColorForSpeedrunClue", "colorIndex", "colorToColorIndex", "cardState", "variant", "suit", "clueButton", "ColorButton", "isCardTouchedByClueColor", "firstClueColor", "getColorForPrismCard", "isAtMaxClueTokens", "play", "START_CARD_RANK", "clueRank", "getRankForSpeedrunClue", "clickRightCheckAddNote", "RankButton", "isCardTouchedByClueRank", "isValidRankClueNumber", "HanabiCardTap", "HanabiCardTapAction", "DOUBLE_TAP_DELAY_SECONDS", "isCardPlayed", "goToSegmentAndIndicateCard", "isCardDiscarded", "HanabiCardDblTap", "openEditTooltip", "import_konva", "initKonvaTooltips", "element", "delayed", "customContent", "assertDefined", "resetActiveHover", "globals", "show", "TOOLTIP_DELAY_IN_MILLISECONDS", "close", "content", "setInstanceContent", "pos", "width", "Konva", "tooltip", "tooltipX", "setPosition", "open", "registerMouseHandlers", "mouseEnter", "mouseLeave", "touchStart", "HanabiCardClick", "HanabiCardTap", "HanabiCardDblTap", "mouseDown", "mouseUp", "resetActiveHover", "globals", "checkShowNoteTooltip", "checkHideNoteTooltip", "set", "checkForHypoEmpathy", "setEmpathyOnHand", "event", "close", "DOUBLE_TAP_DELAY_SECONDS", "shouldShowEmpathy", "useSpeedrunClickHandlers", "mouseDownSpeedrun", "editMode", "dragStart", "dragEnd", "card", "show", "setCursor", "cursorType", "getCursorType", "shouldShowLookCursor", "suitIndexA", "rankA", "suitIndexB", "rankB", "isCardPlayed", "isCardDiscarded", "enabled", "hand", "hideArrows", "layoutChild", "arrow", "hideAll", "startingPlayerIndex", "i", "import_konva", "LayoutChild", "Konva", "child", "config", "change", "event", "changeEvent", "globals", "elementOverlaps", "currentPlayerIndex", "isOurTurn", "ongoingGameState", "draggedTo", "getElementDragLocation", "isAtMaxClueTokens", "play", "ourPlayerIndex", "ongoingGame", "isCardPotentiallyPlayable", "text", "suitIndex", "rank", "askForMorph", "type", "end", "shapeFunctions", "sf", "ctx", "drawStylizedRank", "rank", "shapeFunction", "assertDefined", "STACK_BASE_RANK", "UNKNOWN_CARD_RANK", "CARD_IMAGE_STACK_BASE_RANK_NAME", "CARD_IMAGE_UNKNOWN_CARD_RANK_NAME", "drawCards", "variant", "colorblindMode", "styleNumbers", "enableShadows", "initCanvas", "cloneCanvas", "saveCanvas", "cardImages", "unknownSuit", "getSuit", "suits", "pipTypes", "suitIndex", "suit", "secondaryPip", "rank", "START_CARD_RANK", "cvs", "ctx", "drawCardBackground", "drawMixedCardHelper", "drawCardBase", "getSuitStyle", "textYPos", "rankLabel", "fontSize", "getSuitAbbreviationForVariant", "drawStylizedRank", "drawText", "deceptiveRank", "cardImagesIndex", "drawSuitPips", "cardImageRankName", "getCardImageRankName", "cardImage", "makeUnknownCard", "cardUnknown", "makeDeckBack", "deckBack", "drawPip", "symbolYPos", "lineWidth", "cardBorderPath", "sf", "nSuits", "x", "y", "padding", "roundedCornerSeverity", "xRadians", "yRadians", "drawShape", "indexLabel", "clueColors", "clueColor1", "clueColor2", "triangleSize", "borderSize", "cardArea", "prismColorIndex", "allClueColors", "noClueColors", "allClueRanks", "noClueRanks", "dark", "rainbow", "evenLinearGradient", "fillToMixHex", "fillToMixRGB", "hexToRGB", "fillToMixArray", "fillToMixArray2", "colorMixer", "colors", "args", "grad", "i", "color", "colorChannelMixer", "colorChannelA", "colorChannelB", "amountToMix", "channelA", "channelB", "rgbA", "rgbB", "r", "g", "b", "hex", "result", "checkNoteImpossibility", "variant", "cardState", "note", "cardIsStackBase", "possibilities", "possibility", "showWarning", "globals", "canCardPossiblyBeFromEmpathy", "impossibilities", "suitIndex", "rank", "impossibleSuit", "impossibleRank", "START_CARD_RANK", "possibleCardsFromNoteAndClues", "state", "possibilitiesWithNotes", "suitIndexA", "rankA", "suitIndexB", "rankB", "getSuitIndexFromNote", "candidateSuitIndex", "getRankFromNote", "possibleRanks", "firstPossibleRank", "DECK_BACK_IMAGE", "UNKNOWN_SUIT", "getSuit", "HanabiCard", "Konva", "order", "suitIndex", "rank", "isStackBase", "variant", "numPlayers", "registerMouseHandlers", "setCursor", "initialState", "getInitialCardState", "image", "cluedBorder", "finesseBorder", "chopMoveBorder", "pips", "criticalIndicator", "arrowElements", "directionArrow", "note", "trashcan", "questionMark", "exclamationMark", "wrench", "ddaIndicatorTop", "ddaIndicatorBottom", "trashMiniIndicatorTop", "trashMiniIndicatorBottom", "LayoutChild", "globals", "state", "callback", "cardIdentity", "suitToShow", "rankToShow", "morphedBlank", "suitIndexToShow", "assertDefined", "morphedIdentity", "suitIndexToSuit", "suitIndexFromNote", "getSuitIndexFromNote", "rankFromNote", "getRankFromNote", "possibilities", "possibleCardsFromNoteAndClues", "possibility", "suitIndexB", "rankB", "suitIndexC", "rankC", "isCardPlayed", "isCardDiscarded", "bareNameSuit", "bareNameRank", "CARD_IMAGE_STACK_BASE_RANK_NAME", "CARD_IMAGE_UNKNOWN_CARD_RANK_NAME", "isCardClued", "suitPipStates", "rankPipStates", "possibleCardsFromClues", "possibleCards", "pipState", "s", "r", "pip", "pipPositive", "x", "suit", "hasPositiveColorClue", "color", "updatePip", "i", "hasPositiveRankClue", "suitUnknown", "rankUnknown", "direction", "hasReversedSuits", "shouldShowArrow", "visibleState", "status", "isKnownTrash", "isTrash", "known", "dda", "visible", "opacity", "critical", "duration", "shadowOffset", "baseOffsetY", "offsetX", "offsetY", "animate", "shouldShowOnKeldonMode", "noteObject", "holder", "hand", "layoutChild", "scale", "pos", "CARD_ANIMATION_LENGTH_SECONDS", "assertNotNull", "playStack", "discardStack", "stack", "deckPos", "set", "update", "show", "noteString", "currentNote", "parseNote", "bracketNoteString", "noteHasMeaning", "noteEqual", "noteAdded", "updateFunc", "keepLast", "protect", "noteText", "lastPipe", "currentNoteString", "newNoteString", "newNoteText", "a", "b", "turnStripped", "checkNoteImpossibility", "canCardPossiblyBeFromEmpathy", "enabled", "index", "lines", "colors", "getColorHTML", "cards", "finalClueColor", "colorHTML", "iRange", "prismClueColorIndex", "prismClueColor", "deceptiveRank", "abbreviation", "getSuitAbbreviationForVariant", "hasPositiveClues", "RankPip", "import_konva", "StrikeSquare", "Konva", "config", "num", "hideAll", "changed", "arrow", "globals", "set", "i", "element", "giverPlayerIndex", "clue", "preview", "rot", "HanabiCard", "isCardPlayed", "isCardDiscarded", "CardLayout", "isCardInPlayerHand", "color", "ARROW_COLOR", "giverCharacterName", "getCharacterNameForPlayer", "clueColor", "matchingSuits", "suit", "ctx", "drawPip", "text", "pos", "getPos", "visibleSegment", "animate", "distance", "rotRadians", "StrikeSquare", "textElement", "width", "card", "giver", "segment", "centerPos", "CARD_ANIMATION_LENGTH_SECONDS", "Konva", "click", "event", "order", "toggle", "alwaysShow", "getElementFromOrder", "show", "close", "getCardOrStackBase", "getElementFromNegativeOrder", "HanabiCardClick", "event", "globals", "mouseEvent", "clickLeft", "clickMiddle", "clickRight", "card", "clickMorph", "preOpenNoteEditTooltip", "goToSegmentAndIndicateCard", "segmentDrawn", "goToSegment", "isCardPlayed", "isCardDiscarded", "toggle", "clickRightCheckAddNote", "askForMorph", "morphReplayFromModal", "cardIdentity", "sendHypotheticalActionToServer", "draw", "globals", "tbody", "usernameMapping", "onlineFriends", "id", "user", "alphabeticalUsernames", "b", "alreadyDrawnUsers", "drawUser", "friend", "username", "userID", "nameColumn", "statusText", "StatusText", "statusColumn", "row", "setLink", "setInactive", "create", "table", "tableJoin", "tableSpectate", "inactive", "lobbyChatText", "getHTMLElement", "lobbyChatPregameText", "show", "globals", "draw", "toggleStartGameButton", "setBrowserAddressBarPath", "hide", "tablesDraw", "updatePeopleTyping", "assertNotNull", "drawOptions", "i", "eRange", "MAX_PLAYERS", "drawPlayerBox", "html", "getOptionIcons", "optionsTitleDiv", "optionsText", "create", "initializeOptionTooltips", "options", "idPrefix", "rowId", "timerFormatter", "playerIndex", "numPlayers", "div", "player", "span", "getNameSpan", "isSpectator", "event", "reattend", "strong", "p", "variantStats", "averageScore", "averageScoreString", "strikeoutRateString", "strikeoutRate", "variant", "getVariant", "maxScore", "bestScorePlayer", "iRange", "MIN_PLAYERS", "bestScoreObject", "score", "modifier", "name", "loopPlayer", "drawSpectators", "tableID", "list", "table", "spectator", "nameSpan", "item", "shadowingPlayerIndex", "tablesDraw", "tbody", "globals", "sortedTableIDs", "friends", "i", "iRange", "tableIDsOfThisType", "id", "table", "hasFriends", "tableHasFriends", "a", "b", "addedJoinFirstTableButton", "assertDefined", "htmlClass", "row", "name", "tdCell", "getOptionIcons", "status", "td", "playerIndex", "player", "span", "event", "tableSpectate", "spectatorsArray", "spectator", "spectatorsString", "MAX_PLAYERS", "rowId", "gameID", "path", "copyURLToClipboard", "tableReattend", "tableJoin", "initializeOptionTooltips", "shadowingPlayerIndex", "askForPassword", "ready", "selector", "url", "getURLFromPath", "copyStringToClipboard", "create", "openInstance", "closeInstance", "init", "globals", "command", "offset", "show", "draw", "hide", "tablesDraw", "friends", "tbody", "ids", "a", "b", "id", "gameData", "variant", "getVariant", "maxScore", "row", "options", "makeOptions", "playerNames", "playerNamesString", "ourIndex", "datePlayed", "dateTimeFormatter", "watchReplayButton", "makeReplayButton", "shareReplayButton", "otherScoresButton", "makeOtherScoresButton", "create", "seed", "gameCount", "button", "showOtherScores", "showFriends", "hideFriends", "hideOtherScores", "hideOtherScoresToFriends", "drawOtherScores", "games", "variantName", "i", "game", "ourGame", "score", "match", "seedNumberSuffix", "otherScores", "tooltipHTML", "icons", "timerFormatter", "html", "iconsFromOptions", "answer", "icon", "databaseID", "visibility", "text", "init", "replaySourceChange", "event", "KEY_RETURN", "submit", "reposition", "sourceID", "source", "databaseIDString", "databaseID", "parseIntSafe", "showReplayError", "gameJSONString", "gameJSON", "visibilityIDElement", "assertDefined", "visibilityID", "visibility", "globals", "closeModals", "text", "ready", "sourceBox", "json", "visibilityBox", "init", "initModal", "ready", "before", "show", "watchSpecificReplayFocus", "globals", "player", "open", "hide", "table", "spectator", "showFriends", "hideFriends", "event", "target", "navTypes", "navType", "allowCloseModal", "currentModal", "morphDragArea", "createGameSubmit", "getHTMLElement", "createTablePassword", "getHTMLInputElement", "errorModalButton", "errorModalDescription", "pageCover", "modalsContainer", "morphModalButtonCancel", "morphModalButtonOK", "morphModalDescription", "morphModalTextbox", "passwordModalCancel", "passwordModalID", "passwordModalPassword", "passwordModalSubmit", "warningModalButton", "warningModalDescription", "init", "closeModals", "event", "passwordSubmit", "suit", "rank", "tableIDString", "tableID", "parseIntSafe", "password", "globals", "askForPassword", "showModal", "askForMorph", "card", "variant", "draggedTo", "suits", "ranks", "start", "startSuitIndex", "startRank", "possibilities", "startSuit", "assertDefined", "fillMorphModalWithRadios", "morphReplayOkButton", "morphReplayCancelButton", "morphInGameOkButton", "morphInGameCancelButton", "morphFinishLayout", "cardIdentity", "parseIdentity", "morphReplayFromModal", "showWarning", "msg", "showError", "show", "play", "initModal", "buttonSelector", "selector", "before", "test", "focus", "showPrompt", "focusElement", "clickButtonElement", "oldType", "length", "fast", "isModalVisible", "allowClose", "ready", "element", "placeHolder", "table", "row", "suitIndex", "cell", "possibility", "radio", "radioId", "label", "image", "BASIC_VARIANT_NAMES", "BASIC_VARIANT_NAMES_SET", "ReadonlySet", "dropdown1", "dropdown2", "init", "firstVariantDropdownInit", "secondVariantDropdownInit", "element", "value", "maxPlayers", "parseIntSafe", "MIN_PLAYERS", "MAX_PLAYERS", "DEFAULT_CREATE_TABLE_MAX_PLAYERS", "randomVariant", "getRandomArrayElement", "VARIANT_NAMES", "getCheckbox", "reposition", "getVariantName", "getTextboxForTimeBase", "getTextboxForTimePerTurn", "event", "KEY_RETURN", "submit", "data", "regExp", "textWithDoubleQuotes", "options", "acceptOptionsFromGuest", "variantName", "doesVariantExist", "option", "spacing", "searchText", "loadCustom", "selection", "search", "isNew", "timed", "timeBaseSeconds", "timePerTurn", "timeValue", "foundErrors", "name", "password", "maxPlayersString", "maxPlayersInt", "isValidNumPlayers", "checkSettingChanged", "gameJSONString", "gameJSON", "showError", "closeModals", "globals", "setting", "selector", "getHTMLInputElement", "getTextboxValue", "valueString", "parseFloatSafe", "settingName", "before", "elapsedTimeMilliseconds", "millisecondsLeft", "minutesLeft", "msg", "showWarning", "ready", "dialogTitle", "buttonTitle", "gameName", "dialogOptions", "amTestUser", "key", "readyVariant", "DEFAULT_VARIANT_NAME", "import_lodash", "import_lodash", "BASE62", "shrink", "JSONString", "gameDataJSON", "compressed", "gameJSONCompress", "decompressed", "expand", "decompressedJSON", "data", "normal", "playersAndDeck", "actionsString", "variantIDString", "assertDefined", "numberPlayersString", "numPlayers", "parseIntSafe", "players", "getPlayers", "deckString", "deck", "decompressDeck", "actions", "decompressActions", "variantID", "variant", "getVariantByID", "original", "out", "numberOfPlayers", "MIN_PLAYERS", "MAX_PLAYERS", "compressDeck", "compressActions", "getVariant", "rankRange", "getRankMinMax", "isMinMaxValid", "card", "deckCardToString", "src", "minVal", "min", "maxVal", "max", "s", "compressedDeckCard", "deckCard", "stringToDeckCard", "r", "index", "rank", "typeRange", "getTypeMinMax", "actionStrings", "action", "actionToString", "compressedAction", "stringToAction", "type", "val", "target", "size", "DEFAULT_PLAYER_NAMES", "range", "PLAY_REGEX", "DISCARD_REGEX", "CLUE_REGEX", "createJSONFromReplay", "room", "globals", "sendSelfPMFromServer", "game", "DEFAULT_PLAYER_NAMES", "i", "cardIdentity", "morph", "replay", "getGameActionsFromState", "states", "log", "logLines", "actions", "getGameActionsFromLog", "newActions", "json", "URLData", "shrink", "URL", "SITE_URL", "here", "error", "source", "currentSegment", "maxSegment", "action", "logEntry", "getActionFromLogEntry", "foundPlay", "playerName", "slotString", "slot", "parseIntSafe", "getActionFromHypoPlayOrDiscard", "foundDiscard", "foundClue", "clueWord", "getActionFromHypoClue", "entryNumber", "actionType", "playerIndex", "getPlayerIndexFromPlayerName", "assertDefined", "slotIndex", "getCardsPerHand", "cardOrder", "getCardOrderFromHypoState", "clueNumber", "colorIndex", "getColorIndexFromColorName", "rankClueNumber", "previousStateIndex", "stateIndex", "stateOnHypoTurn", "playerHand", "colorName", "variant", "clueColor", "chatCommands", "room", "createJSONFromReplay", "friend", "args", "sendSelfPMFromServer", "name", "globals", "friends", "msg", "link", "unlink", "linked", "pm", "recipient", "msgArray", "matchingUser", "user", "setLeader", "username", "setVariant", "variantName", "getVariantFromArgs", "getVariantNameFromPartial", "checkSettingChanged", "firstArg", "segment", "parseIntSafe", "tag", "tagdelete", "playerinfo", "_room", "usernames", "patterns", "arg", "capitalize", "input", "pattern", "x", "search", "VARIANT_NAMES", "emojis_default", "emotes_default", "emojiMap", "emojiList", "emoteList", "chatLineNum", "lastPM", "datetimeLastChatInput", "typedChatHistory", "typedChatHistoryIndex", "typedChatHistoryPrefix", "tabCompleteWordListIndex", "tabCompleteWordList", "tabCompleteOriginalText", "init", "input", "keypress", "keydown", "emojiName", "emoji", "emojis_default", "emoteMap", "emotesInCategory", "emotes_default", "emoteName", "typedChatHistoryString", "potentialArray", "event", "element", "text", "datetimeNow", "globals", "matches", "match", "newText", "room", "KEY_RETURN", "send", "msg", "showWarning", "sendText", "msgRaw", "fillEmojis", "roomID", "index", "args", "firstArg", "command", "trimPrefix", "chatCommandFunction", "chatCommands", "KEY_BACK_SPACE", "KEY_DELETE", "KEY_TAB", "tab", "KEY_UP", "arrowUp", "KEY_DOWN", "arrowDown", "historyMatchNext", "current", "increment", "oldIndex", "retrievedHistory", "message", "messageWords", "finalWord", "tabInitAutoCompleteList", "autoCompleteWord", "userList", "user", "usersAndEmojisAndEmotesList", "a", "b", "fixCustomEmotePriority", "word", "usersAndEmotesList", "notLikeThisIndex", "nootLikeThisIndex", "kappaIndex", "kaddaIndex", "tempEmote1", "frankerBIndex", "frankerZIndex", "i", "eRange", "tempEmote2", "monkaEyesIndex", "monkaSIndex", "add", "data", "fast", "chat", "getChatBoxElement", "getPreparedMessage", "datetime", "line", "regex", "pxEpsilon", "firstChat", "autoScroll", "_", "chatInput", "updatePeopleTyping", "rawMsg", "linkifyHtml", "fillDiscordEmotes", "fillTwitchEmotes", "filledMessed", "emoteTag", "filledMessage", "emojiTag", "categoryName", "emoteArray", "emote", "re", "typingMessage", "getTypingMessage", "sendSelfPMFromServer", "type", "formatChatMessage", "PROJECT_NAME", "initErrorListener", "errorEvent", "formattedStackTrace", "getErrorStackTrace", "reportInstructions", "iosText", "PROJECT_NAME", "messageSuffix", "isIoS", "showError", "error", "standaloneProp", "chat_exports", "__export", "hide", "init", "show", "toggle", "import_interactjs", "gameChatText", "getHTMLElement", "init", "interact", "event", "oldXString", "oldYString", "oldX", "parseFloatSafe", "oldY", "newX", "newY", "element", "moveElement", "hide", "toggle", "show", "modal", "globals", "assertNotNull", "resetPosition", "width", "height", "xString", "yString", "x", "y", "isOffscreen", "transform", "rect", "update", "data", "stop", "globals", "time", "text", "millisecondsToClockString", "ourTurn", "activePlayerName", "setTickingDownTimePlayerNameTooltip", "setTickingDownTimeCurrentPlayerTooltip", "activeTimer", "setTickingDownTime", "timer", "now", "elapsedTime", "millisecondsLeft", "drawLayer", "playerIndex", "playerTime", "milliseconds", "content", "setInstanceContent", "backToLobby", "resetActiveHover", "stop", "globals", "updatePeopleTyping", "setBrowserAddressBarPath", "setGlobalEmpathy", "enabled", "globals", "hand", "hotkeyClueMap", "hotkeyPlayMap", "hotkeyDiscardMap", "playDiscardButton", "getHTMLElement", "playDiscardCard", "getHTMLInputElement", "playDiscardMessage", "playDiscardTitle", "init", "KEY_TAB", "globals", "i", "rankClueButton", "KEY_1", "click", "KEY_NUMPAD1", "clueKeyRow", "KEY_Q", "KEY_W", "KEY_E", "KEY_R", "KEY_T", "KEY_Y", "KEY_A", "play", "KEY_ADD", "KEY_D", "discard", "KEY_SUBTRACT", "keydown", "keyup", "destroy", "event", "isModalVisible", "KEY_ESCAPE", "endHypothetical", "backToLobby", "exit", "KEY_SPACE", "setGlobalEmpathy", "KEY_RETURN", "give", "KEY_C", "copyStringToClipboard", "KEY_B", "sharedReplaySendSound", "KEY_H", "KEY_N", "KEY_Z", "KEY_L", "promptTurn", "KEY_DELETE", "HanabiCard", "KEY_LEFT", "back", "KEY_RIGHT", "forward", "KEY_UP", "KEY_DOWN", "toggleSharedSegments", "enter", "KEY_OPEN_BRACKET", "backRound", "KEY_CLOSE_BRACKET", "forwardRound", "KEY_HOME", "backFull", "KEY_END", "forwardFull", "sendHypotheticalBack", "currentPlayerIndex", "ourPlayerIndex", "shouldHaveKeyboardHotkeysForActions", "ongoingGameState", "hotkeyFunction", "getAdjustedClueTokens", "isAtMaxClueTokens", "changeStartingHandVisibility", "sound", "promptCardOrder", "actionType", "playerIndex", "hand", "maxSlotIndex", "verb", "ActionType", "closeModals", "response", "cardOrder", "getTotalCardsInDeck", "performAction", "slot", "parseIntSafe", "showPrompt", "element", "target", "sendHypotheticalAction", "hideArrowsAndDisableDragging", "HanabiUI", "lobby", "game", "globals", "initStageSize", "set", "text", "setGlobalEmpathy", "destroy", "stop", "ratio", "ww", "wh", "cw", "ch", "lobbyChatText", "getHTMLElement", "init", "globals", "show", "HanabiUI", "gameExports", "hide", "tablesDraw", "draw", "closeAllTooltips", "chat_exports", "sounds_exports", "MINUTES_TO_TRIGGER_IDLE", "lobbyIdleInit", "timerIncrement", "mousemoveOrKeypress", "globals", "lobbyKeyboardInit", "event", "KEY_RETURN", "isModalVisible", "KEY_J", "globals", "KEY_N", "KEY_H", "KEY_A", "KEY_O", "KEY_S", "KEY_C", "KEY_L", "KEY_R", "KEY_ESCAPE", "clickReturnToLobby", "commands", "data", "closeModals", "showWarning", "globals", "toggleStartGameButton", "showError", "add", "acknowledgeChatRead", "room", "recipient", "isPM", "isTableRoom", "UIState", "toggle", "index", "updatePeopleTyping", "line", "Connection", "addr", "debug", "event", "msg", "unpackWSMessage", "command", "data", "callback", "name", "packWSMessageOnClient", "formatProdErrorMessage", "code", "$$observable", "symbol_observable_default", "randomString", "ActionTypes", "actionTypes_default", "isPlainObject", "obj", "proto", "createStore", "reducer", "preloadedState", "enhancer", "formatProdErrorMessage", "currentReducer", "currentState", "currentListeners", "nextListeners", "listenerIdCounter", "isDispatching", "ensureCanMutateNextListeners", "listener", "key", "getState", "subscribe", "isSubscribed", "listenerId", "dispatch", "action", "isPlainObject", "replaceReducer", "nextReducer", "actionTypes_default", "observable", "outerSubscribe", "observer", "observeState", "observerAsObserver", "symbol_observable_default", "initialState", "metadata", "gameState", "getInitialGameState", "options", "variant", "getVariant", "totalCardsInDeck", "getTotalCardsInDeck", "newArray", "replayReducer", "produce", "replayReducerFunction", "state", "action", "finished", "metadata", "assertNotNull", "ongoing", "assertDefined", "startingPlayerIndex", "a", "hypoAction", "hypoStates", "lastState", "drawnCardsInHypothetical", "original", "order", "suitIndex", "rank", "newAction", "oldSegment", "newState", "gameReducer", "shouldStoreSegment", "segment", "previousSegment", "action", "uiReducer", "uiState", "uiAction", "HanabiCard", "cardText", "stateReducer", "produce", "stateReducerFunction", "state", "action", "initialGameState", "getInitialGameState", "game", "states", "reduceGameActions", "updateCardIdentities", "rehydrateScrubbedActions", "inInGameReplay", "assertNotNull", "penultimateSegment", "replayReducer", "uiReducer", "notesReducer", "original", "gameReducer", "previousSegment", "shouldStoreSegment", "visualStateToShow", "actions", "initialState", "playing", "shadowing", "finished", "metadata", "s", "a", "nextState", "i", "newCardIdentity", "existingCardIdentity", "assertDefined", "currentReplayState", "cardIdentities", "cardIdentity", "suitIndex", "rank", "import_konva", "import_konva", "ButtonGroup", "Konva", "config", "button", "that", "clueButton", "buttonIndex", "i", "nextButton", "import_konva", "ClueLog", "Konva", "clue", "index", "y", "eRange", "node", "globals", "targetCardOrder", "child", "import_konva", "Deck", "Konva", "config", "globals", "getTotalCardsInDeck", "event", "click", "draggedTo", "getElementDragLocation", "CARD_ANIMATION_LENGTH_SECONDS", "layer", "cardOrder", "end", "resetActiveHover", "show", "TOOLTIP_DELAY_IN_MILLISECONDS", "close", "getTooltipContent", "setInstanceContent", "set", "isOurTurn", "count", "h", "nudgeAmount", "content", "currentTable", "seed", "datetimeFinishedDate", "formattedDatetimeFinished", "dateTimeFormatter", "startedDate", "elapsedMilliseconds", "clockString", "millisecondsToClockString", "timerFormatter", "import_konva", "import_konva", "import_konva", "FitText", "Konva", "config", "context", "low", "high", "tolerance", "mid", "size", "text", "MultiFitText", "Konva", "config", "maxLines", "assertDefined", "i", "eRange", "newConfig", "childText", "FitText", "text", "globals", "fitText", "msg", "FullActionLog", "Konva", "winW", "winH", "rect", "emptyMessageOptions", "FitText", "newArray", "globals", "turn", "msg", "playerName", "playerIndex", "assertNotNull", "MultiFitText", "i", "playerLog", "playerLogNumber", "logEntry", "appendLine", "eRange", "log", "numbers", "line", "import_konva", "PlayStack", "Konva", "layoutChild", "pos", "lh", "scale", "stackBase", "opacity", "globals", "animate", "i", "eRange", "lastLayoutChild", "import_konva", "Arrow", "Konva", "winW", "winH", "colorblindMode", "x", "y", "pointerLength", "border", "edge", "import_konva", "Button", "Konva", "config", "images", "w", "h", "textSize", "FitText", "drawLayer", "enabled", "pressed", "newText", "assertNotNull", "newFill", "image", "import_konva", "CheckButton", "Konva", "config", "w", "h", "textSize", "checkY", "checkX", "checkH", "checkW", "globals", "drawLayer", "enabled", "pressed", "newText", "assertNotNull", "newFill", "import_konva", "CurrentPlayerArea", "Konva", "values", "winW", "winH", "globals", "box1Width", "textValues", "FitText", "LABEL_COLOR", "arrowValues", "rect2", "baseArrowLength", "arrowBorder", "arrowBorderEdge", "arrowMain", "import_konva", "ImageWithTooltip", "Konva", "import_konva", "PlayerButton", "Button", "config", "targetPlayerIndex", "x", "Konva", "pressed", "import_konva", "RectWithTooltip", "Konva", "import_konva", "SlidableGroup", "Konva", "import_konva", "StrikeX", "Konva", "config", "num", "import_konva", "TimerDisplay", "Konva", "config", "FitText", "LABEL_COLOR", "text", "import_konva", "import_konva", "NameFrame", "Konva", "config", "playerIndex", "assertDefined", "LABEL_COLOR", "w", "event", "globals", "resetActiveHover", "show", "close", "active", "strokeWidth", "connected", "color", "username", "playerName", "shadowingPlayerIndex", "ourSpectator", "spectator", "oldShadowingPlayerIndex", "showWarning", "backToLobby", "import_konva", "TextWithTooltip", "Konva", "handPos", "namePos", "namePosBGA", "drawHands", "winW", "winH", "numPlayers", "globals", "numCardsPerHand", "getCardsPerHand", "handPos6H", "handPos6Ratio", "handPos6W", "handPosBGA", "leftX", "rightX", "topY", "bottomY", "cardSpacing", "handSpacing", "widthRatio", "maxCardWidth", "heightRatio", "maxCardHeight", "relativeCardRatio", "handX", "handY", "handW", "handH", "j", "eRange", "namePosValues", "i", "namePosBGAMod", "playerHandPos", "playerNamePos", "handValues", "CardLayout", "isHandReversed", "blackLineGroup", "Konva", "blackLineX", "blackLineY", "blackLine", "OFF_BLACK", "turnRectValues", "turnRect", "NameFrame", "drawDetrimentalCharacters", "characterID", "character", "getCharacter", "width2", "height2", "charIcon", "TextWithTooltip", "metadata", "tooltipContent", "initKonvaTooltips", "reverse", "import_konva", "EnterHypoButton", "Button", "SharedTurnsButton", "Button", "import_konva", "Shuttle", "Konva", "drawReplayArea", "winW", "winH", "replayAreaValues", "globals", "Konva", "replayBarValues", "replayBarClickRect", "barClick", "barScroll", "shuttleValues", "Shuttle", "goToSegment", "shuttleDragBound", "shuttleDragMove", "replayButtonValues", "x", "Button", "backFull", "back", "forward", "forwardFull", "extra", "totalWidth", "bottomButtonValues", "bottomLeftReplayButtonX", "bottomCenterReplayButtonX", "bottomRightReplayButtonX", "exitButton", "setCenter", "setLeft", "SharedTurnsButton", "toggleSharedSegments", "EnterHypoButton", "startHypothetical", "enterHypoSetLeft", "enterHypoSetCenter", "enterHypoSetRight", "adjustShuttles", "setModifierButton", "getHTMLElement", "setModifierCurrent", "setModifierNew", "getHTMLInputElement", "setEfficiencyMod", "mod", "globals", "efficiencyLabelClick", "event", "click", "askForEfficiency", "showWarning", "currentModifier", "closeModals", "effModString", "effMod", "parseIntSafe", "showPrompt", "onSpectatorsChanged", "data", "globals", "visible", "nameEntries", "spectator", "nameEntry", "playerName", "assertDefined", "content", "setInstanceContent", "close", "toggleZen", "globals", "onSpectatorsChanged", "winW", "winH", "basicTextLabel", "basicNumberLabel", "actionLogValues", "playAreaValues", "cardWidth", "cardHeight", "bottomLeftButtonValues", "deckValues", "scoreAreaValues", "clueAreaValues", "lowerClueAreaValues", "clueLogValues", "giveClueValues", "spectatorsLabelValues", "leaderPlaceholder", "getHTMLElement", "drawUI", "globals", "drawBackground", "initReusableObjects", "drawActionLog", "drawPlayStacks", "drawBottomLeftButtons", "drawDeck", "drawScoreArea", "drawSpectators", "drawSharedReplay", "drawYourTurn", "drawHands", "drawClueLog", "drawStatistics", "drawDiscardArea", "drawDiscardStacks", "drawArrows", "drawTimers", "drawClueArea", "drawCurrentPlayerArea", "drawPreplayArea", "drawReplayArea", "drawHypotheticalArea", "drawPauseArea", "drawRestartArea", "drawExtraAnimations", "layer", "setSkullEnabled", "setSkullNormal", "background", "Konva", "set", "LABEL_COLOR", "actionLogGroup", "actionLogRect", "maxLines", "MultiFitText", "FullActionLog", "yOffset", "playStackValues", "playStackX", "playStack", "PlayStack", "i", "suit", "suitIndex", "order", "getTotalCardsInDeck", "stackBase", "HanabiCard", "text", "colorList", "color", "suitLabelText", "FitText", "overlap", "w", "discardStackSpacing", "discardStack", "CardLayout", "replayButton", "Button", "exit", "enter", "initKonvaTooltips", "restartButton", "chatButton", "event", "toggleZen", "lobbyButtonValues", "lobbyButton", "lobbyButtonClick", "deckRect", "RectWithTooltip", "Deck", "xOffset", "fontSize", "scoreAreaRect", "labelX", "labelSpacing", "turnTextLabel", "promptTurn", "click", "cluesTextLabel", "cluesNumberLabel", "CARD_ANIMATION_LENGTH_SECONDS", "strikeClick", "strikes", "strike", "goToSegment", "card", "getCardOrStackBase", "toggle", "strikeSquare", "StrikeSquare", "strikeX", "StrikeX", "questionMarkLabel", "terminateButton", "terminateContent", "imageSize", "spectatorsLabel", "ImageWithTooltip", "sharedReplayLeaderLabelValues", "size", "sharedReplayLeaderLabel", "showWarning", "spectator", "button", "element", "setLeader", "showPrompt", "player", "closeModals", "circle", "clueLogRect", "spacing", "ClueLog", "statsRect", "variantLabel", "variantUnderline", "paceTextLabel", "paceContent", "paceNumberLabel", "efficiencyTextLabel", "padding", "efficiencyTextLabelContent", "efficiencyNumberLabel", "efficiencyLabelClick", "askForEfficiency", "efficiencyPipeLabel", "efficiencyMinNeededLabel", "discardAreaRect", "trashcan", "repeat", "arrow", "Arrow", "stop", "timerValues", "TimerDisplay", "timerClick", "currentPlayerIndex", "ourPlayerIndex", "setting", "numPlayers", "playerButtonH", "playerButtonSpacing", "playerButtonAdjustment", "ButtonGroup", "totalPlayerButtons", "playerButtonW", "eRange", "playerIndex", "PlayerButton", "buttonW", "buttonH", "buttonXSpacing", "buttonYSpacing", "maxColorWidth", "lowerClueAreaWidth", "offsetX", "setLeft", "x", "setCenter", "SlidableGroup", "totalColorWidth", "colorX", "colorY", "clueColor", "matchingSuit", "assertDefined", "ColorButton", "newColorClue", "numRanks", "totalRankWidth", "rankX", "rankY", "rank", "RankButton", "rankTextFromVariant", "newRankClue", "checkLegal", "give", "drawClueAreaDisabled", "drawClueAreaWaitingForServer", "rect", "lineColor", "line1", "line2", "noCluesText", "waitingOnServer", "blueCircle", "redCircle", "period", "animation", "frame", "scale", "redScale", "currentPlayerAreaValues", "CurrentPlayerArea", "y", "hypoValues", "hypoBackButtonValues", "sendHypotheticalBack", "hypoButtonWidth", "hypoButtonHeight", "hypoButtonSpacing", "endHypotheticalButtonValues", "endHypotheticalButton", "endHypothetical", "editCardsButtonValues", "CheckButton", "toggleDrawnCardsButtonValues", "toggleRevealed", "pauseAreaValues", "pauseRect", "pauseTitle", "button1W", "button2W", "pauseLobbyButton", "restartAreaValues", "restartRect", "restartTitle", "restartGameButton", "restartTableButton", "restartCancelButton", "backToLobby", "import_fast_deep_equal", "observeStore", "store", "subscriptions", "currentState", "handleChange", "nextState", "filteredSubscriptions", "subscription", "nextValue", "equal", "currentValue", "unsubscribe", "onObserversStarted", "state", "previousState", "currentSegment", "oldSegment", "segmentDifference", "globals", "onObserversFinished", "_", "import_fast_deep_equal", "onCardsPossiblyAdded", "length", "totalCardsInDeck", "getTotalCardsInDeck", "globals", "i", "eRange", "newCard", "HanabiCard", "subscription", "subscribeToCardChanges", "onCardsPossiblyRemoved", "card", "unsubscribe", "onMorphedIdentitiesChanged", "data", "previousData", "changeStartingHandVisibility", "updateCardVisuals", "currentLength", "previousLength", "maxLength", "order", "subscriptions", "checkOrderAndSelect", "s", "state", "sub", "cardSelector", "subFullState", "c", "updateBorder", "updateCardStatus", "checkNoteDisproved", "updatePips", "observeStore", "getCardOrStackBase", "STACK_STRINGS_REVERSED", "ReadonlyMap", "STACK_STRINGS_UP_OR_DOWN", "onPlayStackDirectionsChanged", "directions", "previousDirections", "hasReversedSuits", "globals", "i", "direction", "suit", "text", "isUpOrDown", "stackText", "assertDefined", "visibleCardsOfThisSuit", "card", "suitIndex", "onHandsChanged", "hands", "syncChildren", "onDiscardStacksChanged", "discardStacks", "onPlayStacksChanged", "playStacks", "previousPlayStacks", "stack", "equal", "availableStackStartsFlags", "rank", "playStack", "stackStart", "getStackStartRank", "availableStackStarts", "index", "available", "firstPlayedCardOrder", "firstPlayedCard", "firstPlayedRank", "assertNotNull", "_stack", "rankOffset", "fitText", "onHoleChanged", "hole", "previousHole", "updatePlayStackVisuals", "totalCardsInDeck", "getTotalCardsInDeck", "playStackOrder", "updateCardVisuals", "collections", "getCollectionUI", "addToCollectionUI", "collection", "getCurrentSorting", "layoutChild", "current", "removedCards", "n", "getCard", "realState", "addedCards", "pos", "order", "sourcePosition", "import_fast_deep_equal", "import_konva", "ClueEntry", "Konva", "clue", "config", "w", "assertDefined", "h", "giver", "FitText", "globals", "target", "characterName", "getCharacterNameForPlayer", "clueName", "getClueName", "name", "drawLayer", "goToSegment", "targetCardOrder", "cardOrder", "onCluesChanged", "clues", "updateLog", "onLastClueOrSegmentChanged", "data", "updateArrows", "lastClue", "segment", "hideAll", "clue", "msgClueToClue", "globals", "order", "card", "getCardOrStackBase", "set", "clueLog", "startingIndex", "clueEntry", "equal", "entry", "ClueEntry", "import_konva", "isVisible", "state", "onChanged", "data", "previousData", "currentPlayerArea", "globals", "winW", "winH", "clueTokens", "currentPlayerIndex", "currentPlayerHand", "numPlayers", "text1", "text2", "text3", "specialText", "cluesTokensText", "getUnadjustedClueTokens", "getAdjustedClueTokens", "isAtMaxClueTokens", "LABEL_COLOR", "isHandLocked", "setPlayerText", "threeLines", "rect1", "textValues", "values", "maxSize", "_i", "eRange", "totalH", "text1H", "text2H", "spacing", "rotation", "getArrowRotationCorrespondingToPlayer", "previousPlayerIndex", "previousRotation", "unmodifiedRotation", "Konva", "playerIndex", "hand", "assertDefined", "centerPos", "distanceToImaginaryPlayer", "rot", "thisPos", "x", "y", "onCardsRemainingChanged", "cardsRemainingInTheDeck", "globals", "onTurnChanged", "data", "friendlyTurn", "globals", "setBrowserAddressBarPath", "numTurnsLeft", "onCurrentPlayerIndexChanged", "currentPlayerIndex", "playerIndex", "nameFrame", "hideArrowsAndDisableDragging", "rect", "OFF_BLACK", "currentPlayerRect", "onScoreOrMaxScoreChanged", "scoreLabel", "lowScorePhaseThreshold", "lowScorePhase", "scoreLabelColor", "LABEL_COLOR", "scoreLabelStyle", "maxScoreLabel", "maxScoreLabelWidth", "scoreLabelWidth", "x", "onNumAttemptedCardsPlayedChanged", "numAttemptedCardsPlayed", "onClueTokensChanged", "clueTokens", "cluesTokensText", "noCluesAvailable", "getAdjustedClueTokens", "oneClueAvailable", "maxCluesAvailable", "isAtMaxClueTokens", "fill", "onClueTokensOrDoubleDiscardChanged", "noDiscard", "onOngoingOrVisibleStrikesChanged", "i", "eRange", "MAX_STRIKES", "strikeX", "duration", "opacity", "animate", "shouldEnableEnterHypoButton", "state", "shouldEnableEnterHypoButtonChanged", "enabled", "globals", "shouldShowReplayArea", "shouldShowReplayAreaChanged", "shouldShow", "onActiveChanged", "data", "hideArrowsAndDisableDragging", "checkSetDraggableAllHands", "shouldShowHypoControls", "shouldShowHypoControlsChanged", "shouldShowToggleDrawnCards", "shouldShowToggleDrawnCardsChanged", "onActiveOrAmLeaderChanged", "visibleForFollowersInHypo", "visibleForLeaderInSharedReplay", "onStatesLengthChanged", "resetSelectedClue", "buttons", "button", "currentPlayerIndex", "shouldShowHypoBackButton", "shouldShowHypoBackButtonChanged", "onDrawnCardsInHypotheticalChanged", "drawnCardsInHypothetical", "checkLegal", "changeStartingHandVisibility", "hand", "onInitializationChanged", "initialized", "globals", "onLogChanged", "log", "updateActionLog", "updateFullActionLog", "actionLog", "globals", "startingIndex", "eRange", "line", "fullActionLog", "onChanged", "pause", "stageFadeOpacity", "globals", "isOurTurn", "shouldShowCancelButton", "state", "shouldShowCancelButtonChanged", "shouldShow", "globals", "onChanged", "action", "previousAction", "get", "checkSetDraggableAll", "text", "import_konva", "onActiveChanged", "active", "replayArea", "globals", "adjustShuttles", "checkSetDraggableAll", "onSegmentChanged", "data", "previousData", "onFirstSegment", "onFinalSegment", "onSharedSegmentChanged", "goToSegment", "playSharedReplayTween", "onShouldShowReplayButtonChanged", "shouldShow", "enterHypoButtonLocationChanged", "sharedSegment", "previousSharedSegment", "Konva", "onDatabaseIDChanged", "databaseID", "text", "onFinishedChanged", "finished", "previousFinished", "resetActiveHover", "stop", "label", "toggleZen", "onSharedReplayEnter", "sharedReplay", "onSharedLeaderChanged", "_leader", "previousLeader", "onSharedAmLeaderChanged", "amLeader", "onLeaderOrSpectatorsChanged", "away", "spectator", "content", "setInstanceContent", "SOUND_TYPE_ACTIONS", "getSoundType", "previousGameState", "gameState", "originalAction", "metadata", "ourTurn", "standardSoundType", "getStandardSoundType", "variant", "getVariant", "action", "includes", "getCharacterNameForPlayer", "previousCardState", "isCardClued", "nextPlayerHand", "isHandLocked", "previouslyDiscardedCard", "canCardPossiblyBeFromCluesOnly", "cardState", "isOrderChopMove", "playedCard", "isCandidateOneForOCM", "numOnesLeftToPlay", "suitIndex", "suit", "playStack", "playerHand", "candidateCards", "order", "card", "freshCards", "newestOneOrder", "newestOne", "startingHandCards", "startingHandCard", "candidateOrders", "onNewSoundEffect", "data", "previousData", "globals", "lastAction", "getLastAction", "previousGameState", "soundType", "getSoundType", "ourTurn", "adjustedSoundType", "getAdjustedSoundType", "muteExistingSoundEffects", "actions", "action", "includes", "SOUND_TYPE_ACTIONS", "standardSoundType", "getStandardSoundType", "onEfficiencyChanged", "data", "cluesStillUsable", "effLabel", "globals", "effPipeLabel", "effMinLabel", "shouldModifyEff", "cardsGotten", "cardsGottenByNotes", "efficiencyModifier", "cardsGottenModified", "cardsNotGotten", "efficiency", "getEfficiency", "shouldShowEfficiency", "futureEfficiency", "shouldShowFutureEfficiency", "text", "width", "effLabelSize", "pipeX", "effPipeLabelSize", "minEffX", "effLabelColor", "LABEL_COLOR", "tooltipContent", "formatLine", "initKonvaTooltips", "left", "right", "usePadding", "onPaceOrPaceRiskChanged", "label", "assertNotNull", "paceText", "color", "getPaceLabelColor", "paceRisk", "onMaxTurnsChanged", "pace", "score", "maxScore", "turnNum", "endTurnNum", "numPlayers", "maxTurnsLeft", "cardsToBePlayed", "discards", "maxTurnsLeftForCurrentPlayer", "maxTotalTurns", "shouldShowYourTurnIndicator", "state", "globals", "shouldShowYourTurnIndicatorChanged", "shouldShow", "shouldShowTurnUI", "shouldShowTurnUIChanged", "shouldIndicateNoClues", "getAdjustedClueTokens", "shouldIndicateNoCluesChanged", "shouldIndicate", "opacity", "shouldEnableBottomDeckBlindPlay", "shouldEnableBottomDeckBlindPlayChanged", "shouldEnable", "onLastClueTypeChanged", "lastClueType", "setColorClueButtonsVisible", "visible", "button", "setRankClueButtonsVisible", "onOngoingTurnChanged", "checkSetDraggableAll", "isOurTurn", "begin", "StateObserver", "store", "subscriptions", "earlyObservers", "visibleStateObservers", "ongoingGameObservers", "replayObservers", "otherObservers", "lateObservers", "observeStore", "sub", "s", "l", "subVS", "state", "subAfterInit", "onObserversStarted", "onFinishedChanged", "onTurnChanged", "onCurrentPlayerIndexChanged", "onScoreOrMaxScoreChanged", "onNumAttemptedCardsPlayedChanged", "onClueTokensChanged", "onClueTokensOrDoubleDiscardChanged", "onPaceOrPaceRiskChanged", "onEfficiencyChanged", "onMaxTurnsChanged", "onLogChanged", "onCardsPossiblyAdded", "onHandsChanged", "onDiscardStacksChanged", "onHoleChanged", "onPlayStacksChanged", "onPlayStackDirectionsChanged", "onCardsPossiblyRemoved", "onCluesChanged", "onLastClueOrSegmentChanged", "onCardsRemainingChanged", "shouldShowTurnUI", "shouldShowTurnUIChanged", "shouldIndicateNoClues", "shouldIndicateNoCluesChanged", "shouldEnableBottomDeckBlindPlay", "shouldEnableBottomDeckBlindPlayChanged", "onLastClueTypeChanged", "onOngoingTurnChanged", "shouldShowYourTurnIndicator", "shouldShowYourTurnIndicatorChanged", "isVisible", "onChanged", "onOngoingOrVisibleStrikesChanged", "onNewSoundEffect", "onDatabaseIDChanged", "onSharedReplayEnter", "onSharedLeaderChanged", "onSharedAmLeaderChanged", "onLeaderOrSpectatorsChanged", "shouldShowReplayArea", "shouldShowReplayAreaChanged", "shouldEnableEnterHypoButton", "shouldEnableEnterHypoButtonChanged", "shouldShowHypoControls", "shouldShowHypoControlsChanged", "shouldShowToggleDrawnCards", "shouldShowToggleDrawnCardsChanged", "onActiveChanged", "onActiveOrAmLeaderChanged", "onStatesLengthChanged", "shouldShowHypoBackButton", "shouldShowHypoBackButtonChanged", "onDrawnCardsInHypotheticalChanged", "onSegmentChanged", "onSharedSegmentChanged", "globals", "onShouldShowReplayButtonChanged", "enterHypoButtonLocationChanged", "onMorphedIdentitiesChanged", "updatePlayStackVisuals", "shouldShowCancelButton", "shouldShowCancelButtonChanged", "onSpectatorsChanged", "onObserversFinished", "onInitializationChanged", "import_konva", "initCanvas", "cvs", "ctx", "assertNotNull", "cloneCanvas", "oldCvs", "_oldCtx", "newCvs", "saveCanvas", "_ctx", "uiInit", "assertNotNull", "globals", "finishedDownloadingImages", "done", "total", "progressLabel", "loadingLayer", "winW", "winH", "Konva", "loadingLabel", "LABEL_COLOR", "drawCards", "initCanvas", "cloneCanvas", "saveCanvas", "drawUI", "init", "gameCommands", "stop", "globals", "data", "update", "i", "connected", "nameFrame", "setBrowserAddressBarPath", "actions", "action", "actionIncludingHypothetical", "checkToggleRevealedButton", "endHypothetical", "startHypothetical", "metadata", "setURL", "initStateStore", "uiInit", "card", "getCardOrStackBase", "names", "noteTextLists", "isSpectators", "noteList", "setNoteIndicatorAndCheckForSpecialNote", "specificTurnString", "goTo", "soundType", "setEfficiencyMod", "setSkullEnabled", "setSkullNormal", "hideAll", "toggle", "suggestTurn", "setAllCardIndicators", "indexOfLastDrawnCard", "order", "iRange", "stackBase", "who", "room", "segment", "internalSegment", "leaderSuggested", "goToSegment", "sendSelfPMFromServer", "path", "getVariant", "characterAssignments", "characterAssignment", "newArray", "endGameLength", "getEndGameLength", "cardsPerHand", "getCardsPerHand", "minEfficiency", "getMinEfficiency", "hardVariant", "isHardVariant", "createStore", "stateReducer", "initialState", "StateObserver", "init", "volumeString", "volume", "parseIntSafe", "assertDefined", "globals", "audio", "SOUNDS_PATH", "error", "setPlayerSettings", "setting", "value", "element", "changeSetting", "settingName", "isKeyOf", "checked", "test", "parseAndGoto", "data", "urlParams", "name", "globals", "variantName", "DEFAULT_VARIANT_NAME", "timed", "timeBaseString", "timeBase", "parseIntSafe", "timePerTurnString", "timePerTurn", "speedrun", "cardCycle", "deckPlays", "emptyClues", "oneExtraCard", "oneLessCard", "allOrNothing", "detrimentalCharacters", "password", "preGameMatch", "tableIDString", "tableID", "gameMatch", "shadowMatch", "shadowingPlayerIndex", "shadowingPlayerIndexString", "shadowingPlayerIndexInt", "replayMatch", "databaseIDString", "databaseID", "visibility", "replayJSONMatch", "gameJSONStringCompressed", "gameJSONString", "expand", "setBrowserAddressBarPath", "gameJSON", "source", "lobbyCommands", "data", "globals", "draw", "tablesDraw", "onSpectatorsChanged", "previousPlayers", "toggleStartGameButton", "drawSpectators", "dataArray", "shownGames", "drawOtherScores", "show", "hide", "play", "dataList", "table", "newTable", "userID", "inactive", "user", "newUser", "setInactive", "setPlayerSettings", "firstTableID", "parseAndGoto", "websocketInit", "domain", "showError", "websocketProtocol", "websocketHost", "websocketURL", "conn", "Connection", "data", "initCommands", "globals", "commandName", "commandFunction", "commands", "lobbyCommands", "gameCommands", "FIREFOX_WARNING_COOKIE_NAME", "changePassword", "getHTMLInputElement", "changePasswordContainer", "getHTMLElement", "loginUsername", "loginPassword", "init", "event", "KEY_RETURN", "submit", "show", "username", "formError", "password", "changePasswordInputIsShowing", "newPassword", "send", "url", "getURLFromPath", "data", "request", "websocketInit", "jqXHR", "getAjaxError", "error", "automaticLogin", "testCookiePath", "response", "isBrowserFirefox", "hide", "firstTimeUser", "globals", "tablesDraw", "draw", "chat", "msg", "offset", "assertDefined", "lobbyTutorialInit", "hide", "jquery", "OLD_DOMAIN", "DOMAIN", "initErrorListener", "globals", "init", "initGame", "lobbyIdleInit", "lobbyKeyboardInit", "lobbyTutorialInit", "Loader", "automaticLogin"] }