From 0ed4ed28a64b4283508ae0faa185a7854d654933 Mon Sep 17 00:00:00 2001 From: david-fong Date: Mon, 26 Oct 2020 21:45:34 -0700 Subject: [PATCH] 36f7bb4 fancy transitions + improved history navigation --- .eslintrc.json | 9 +- .gitignore | 2 +- .vscode/cSpell.json | 12 +- .vscode/settings.json | 11 +- TODO.md | 48 +- assets/style/game/grid.css | 1 + assets/style/game/player.css | 2 +- assets/style/initial/_barrel.css | 4 +- assets/style/initial/defaults.css | 70 + assets/style/initial/screen.css | 5 +- assets/style/initial/screen/colourctrl.css | 83 +- assets/style/initial/screen/groupjoiner.css | 2 +- assets/style/initial/screen/home.css | 4 +- dev-guide.md | 6 +- dist/client/_barrel.css | 2 +- dist/client/chunk/929.js | 2 + dist/client/chunk/929.js.map | 1 + dist/client/chunk/game/offline.css | 1 + dist/client/chunk/game/offline.js | 2 +- dist/client/chunk/game/offline.js.map | 2 +- .../client/chunk/game/offline~game/online.css | 1 - dist/client/chunk/game/offline~game/online.js | 2 - .../chunk/game/offline~game/online.js.map | 1 - dist/client/chunk/game/online.css | 1 + dist/client/chunk/game/online.js | 2 +- dist/client/chunk/game/online.js.map | 2 +- dist/client/chunk/lang/Cellphone-ts.js | 2 +- dist/client/chunk/lang/Cellphone-ts.js.map | 2 +- dist/client/chunk/lang/Emote-ts.js | 2 +- dist/client/chunk/lang/Emote-ts.js.map | 2 +- dist/client/chunk/lang/English-ts.js | 2 +- dist/client/chunk/lang/English-ts.js.map | 2 +- dist/client/chunk/lang/Japanese-ts.js | 2 +- dist/client/chunk/lang/Japanese-ts.js.map | 2 +- dist/client/chunk/lang/Korean-ts.js | 2 +- dist/client/chunk/lang/Korean-ts.js.map | 2 +- dist/client/chunk/lang/Morse-ts.js | 2 +- dist/client/chunk/lang/Morse-ts.js.map | 2 +- ...vents_ts-src_client_game_BrowserGame_ts.js | 171 + dist/client/index.js | 2 +- dist/client/index.js.LICENSE.txt | 14 + dist/client/index.js.map | 2 +- dist/client/vendor/socket.io.js | 10 +- dist/client/vendor/socket.io.js.LICENSE.txt | 7 + dist/client/vendor/socket.io.js.map | 2 +- dist/client/vendor/socket.io.map | 1 + dist/server/chunk/lang/Cellphone-ts.js | 2 +- dist/server/chunk/lang/Emote-ts.js | 2 +- dist/server/chunk/lang/English-ts.js | 2 +- dist/server/chunk/lang/Japanese-ts.js | 2 +- dist/server/chunk/lang/Korean-ts.js | 2 +- dist/server/chunk/lang/Morse-ts.js | 2 +- dist/server/index.js | 2 +- index.ejs | 6 +- index.html | 4 +- package-lock.json | 4605 ++++------------- package.json | 36 +- scripts/pack.sh | 5 +- scripts/webpack/pack.ts | 23 + scripts/webpack/tsconfig.json | 5 +- scripts/webpack/webpack.config.ts | 178 +- scripts/webpack/webpack.tsconfig.json | 16 - src/base/defs/JsUtils.ts | 188 + src/base/defs/OmHooks.ts | 13 +- src/base/defs/OnlineDefs.ts | 61 +- src/base/defs/StorageHooks.ts | 62 +- src/base/defs/TypeDefs.ts | 31 - src/base/floor/Coord.ts | 21 +- src/base/floor/Grid.ts | 29 +- src/base/floor/Tile.ts | 10 +- src/base/floor/TileGetter.ts | 8 +- src/base/floor/VisibleGrid.ts | 23 +- src/base/floor/VisibleTile.ts | 31 +- src/base/floor/impl/Beehive.ts | 83 +- src/base/floor/impl/Euclid2.ts | 87 +- src/base/floor/impl/readme.md | 27 +- src/base/game/Game.ts | 93 +- src/base/game/GameBootstrap.ts | 57 - src/base/game/ScoreInfo.ts | 13 +- src/base/game/ctormaps/CmapBrowser.ts | 15 + src/base/game/ctormaps/CmapManager.ts | 26 + src/base/game/events/PlayerActionEvent.ts | 6 +- src/base/game/gameparts/GamepartBase.ts | 38 +- src/base/game/gameparts/GamepartEvents.ts | 16 +- src/base/game/gameparts/GamepartManager.ts | 67 +- src/base/game/gameparts/pause.md | 2 +- src/base/game/player/ArtificialPlayer.ts | 7 +- src/base/game/player/OperatorPlayer.ts | 22 +- src/base/game/player/Player.ts | 57 +- src/base/game/player/PlayerSkeleton.ts | 22 +- src/base/game/player/PlayerStatus.ts | 5 +- src/base/game/player/Team.ts | 12 +- src/base/game/player/VisiblePlayerStatus.ts | 41 +- src/base/game/player/artificials/Chaser.ts | 13 +- src/base/lang/Lang.ts | 36 +- src/base/lang/LangSeqTreeNode.ts | 14 +- src/base/lang/impl/English.ts | 8 +- src/base/lang/impl/Japanese.ts | 318 +- src/base/lang/impl/Korean.ts | 140 +- src/client/SkSockets.ts | 126 + src/client/TopLevel.ts | 68 +- src/client/audio/BgMusic.ts | 32 +- src/client/audio/SoundEffects.ts | 6 +- src/client/game/BrowserGame.ts | 22 +- src/client/game/GamePreset.ts | 3 + src/client/game/OfflineGame.ts | 27 +- src/client/game/OnlineGame.ts | 49 +- src/client/index.ts | 24 +- src/client/screen/AllSkScreens.ts | 84 +- src/client/screen/ScreenTransition.ts | 93 + src/client/screen/SkScreen.ts | 231 +- src/client/screen/impl/ColourCtrl.ts | 131 +- src/client/screen/impl/GroupJoiner.ts | 161 +- src/client/screen/impl/GroupLobby.ts | 160 +- src/client/screen/impl/Home.ts | 29 +- src/client/screen/impl/HowToHost.ts | 2 +- src/client/screen/impl/HowToPlay.ts | 2 +- src/client/screen/impl/Play.ts | 136 +- src/client/screen/impl/PlayOffline.ts | 11 +- src/client/screen/impl/PlayOnline.ts | 71 +- src/client/screen/impl/Setup.ts | 72 +- src/client/screen/impl/SetupOffline.ts | 26 +- src/client/screen/impl/SetupOnline.ts | 21 +- src/client/utils/SkPickOne.ts | 14 +- .../@types/snakey-utils/TypeUtils.d.ts | 15 + src/server/Group.ts | 163 +- src/server/ServerGame.ts | 197 +- src/server/SnakeyServer.ts | 96 +- src/server/tsconfig.json | 2 + 129 files changed, 3819 insertions(+), 5360 deletions(-) create mode 100644 assets/style/initial/defaults.css create mode 100644 dist/client/chunk/929.js create mode 100644 dist/client/chunk/929.js.map create mode 100644 dist/client/chunk/game/offline.css delete mode 100644 dist/client/chunk/game/offline~game/online.css delete mode 100644 dist/client/chunk/game/offline~game/online.js delete mode 100644 dist/client/chunk/game/offline~game/online.js.map create mode 100644 dist/client/chunk/game/online.css create mode 100644 dist/client/chunk/src_base_game_gameparts_GamepartEvents_ts-src_client_game_BrowserGame_ts.js create mode 100644 dist/client/index.js.LICENSE.txt create mode 100644 dist/client/vendor/socket.io.js.LICENSE.txt create mode 100644 dist/client/vendor/socket.io.map create mode 100644 scripts/webpack/pack.ts delete mode 100644 scripts/webpack/webpack.tsconfig.json create mode 100644 src/base/defs/JsUtils.ts delete mode 100644 src/base/game/GameBootstrap.ts create mode 100644 src/base/game/ctormaps/CmapBrowser.ts create mode 100644 src/base/game/ctormaps/CmapManager.ts create mode 100644 src/client/SkSockets.ts create mode 100644 src/client/screen/ScreenTransition.ts diff --git a/.eslintrc.json b/.eslintrc.json index 99e4a501..13f97316 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -46,6 +46,7 @@ "no-throw-literal": ["error"], "yoda": ["error", "never", { "exceptRange": true }], + "no-mixed-spaces-and-tabs": "error", "no-trailing-spaces": ["error", { "ignoreComments": true }], "semi-style": ["error", "last"], "semi-spacing": ["error", { "before": false, "after": true }], @@ -55,10 +56,10 @@ "asyncArrow": "always" }], "comma-dangle": ["error", { - "arrays": "always", - "objects": "always", - "imports": "always-multiline", - "exports": "always-multiline", + "arrays": "only-multiline", + "objects": "only-multiline", + "imports": "only-multiline", + "exports": "only-multiline", "functions": "only-multiline" }], diff --git a/.gitignore b/.gitignore index 7a2b11c0..40ba0c84 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,7 @@ # build /dist/ /scripts/eslint-cache.json -/scripts/webpack/webpack.config.js +/scripts/webpack/*.js /scripts/webpack/*.tsbuildinfo # vim diff --git a/.vscode/cSpell.json b/.vscode/cSpell.json index b4529c2e..84efe04a 100644 --- a/.vscode/cSpell.json +++ b/.vscode/cSpell.json @@ -41,16 +41,24 @@ // (Functions and Variables) "anims", "coord", - "dict", + "conn", // as in "connection" + "clientside", + "decor", // short for "decorator" "desc", "descs", "dests", + "dict", "elem", "elems", "minmax", "mixins", + "multiline", + "noopener", "nsps", + "readonly", "retval", "reflow", "refs", + "serverside", + "sourcemap", "supercall", "spec", "typeof", @@ -69,6 +77,7 @@ "readmes", "todos", "transpiled", + "tsloader", "webpage", "websockets", @@ -96,6 +105,7 @@ "requester's", "screenshots", "setup", "setups", + "shortcut", "spacebar", "spellcheck", // <-- how ironic "teammate", "teammates", diff --git a/.vscode/settings.json b/.vscode/settings.json index 38385080..f15ac8ae 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -3,11 +3,12 @@ "files.exclude": { // generic excludes: "node_modules/{[^.@]*,}": true, + "package-lock.json": true, + ".nojekyll": true, // project specific excludes: - "package-lock.json": true, - // don't always need this: + // things that I might like to toggle: "node_modules/": true, "{**/.templates/,**/tsconfig.json}": true, //"{**/.eslintrc.*,.eslintignore}": true, @@ -19,6 +20,9 @@ "{**/.templates/,**/tsconfig.json}": false, "scripts/webpack/webpack.config.js": true, }, + "files.associations": { + "**/dist/{client,server}/**/*.js": "json", // Loads bundled js much faster. + }, "json.schemas": [ { "fileMatch": [ "/**/*tsconfig.json", ], @@ -32,8 +36,7 @@ } ], - "eslint.enable": false, // TODO.build Re-enable this once typescript's eslint parser can handle #private fields. - "trailing-spaces.trimOnSave": true, + "files.trimTrailingWhitespace": true, "todo-tree.filtering.useBuiltInExcludes": "file excludes", "todo-tree.general.statusBar": "total", diff --git a/TODO.md b/TODO.md index df42a772..102f67c7 100644 --- a/TODO.md +++ b/TODO.md @@ -14,16 +14,12 @@ ### High Priority -1. Server authentication is not working. -1. Make circular references in `Player` non-enumerable and see if that improves the debug logging experience. -1. Move StorageHooks to `client/` and make it smarter. - - Make sure that index.ejs is updated for changes to colourSchemeStyleLiteral key name. -1. Make window title indicate current screen. -1. Implement game creation event communications for online game. +1. Make a decorator to prevent overrides of a method. + - Make JsUtils have a non-exported `WeakSet`. + - Make a JsUtil function that checks if a class declares any functions with the same name as anything higher in the prototype chain (see `Object.getPrototypeOf()`). +1. Add a WebPack HTML plugin instance for a [custom 404 page](https://docs.github.com/en/free-pro-team@latest/github/working-with-github-pages/creating-a-custom-404-page-for-your-github-pages-site). 1. Implement Pause and Unpause events over network. -1. ~Review all throw clauses and remove those declared in class constructors.~ - - The new approach is to put these checks in the UI input validators and on the receiving end of the server side. -1. Debug and handle goToScreen when user navigates forward in history. +1. Server authentication is not working. 1. Make the cost of boosting proportional to the length of the lang-sequence of the boost-destination tile. 1. Disable colour schemes when media is print. - See [javascript media queries API](https://www.w3schools.com/jsref/met_win_matchmedia.asp). @@ -31,6 +27,7 @@ - Also show scores (very small size) on top of player faces. 1. Display the operator's current sequence buffer. 1. Fill in implementation of bubble event handler. + 1. Design decision: Change bubble mechanism: - Activates automatically and immediately upon players entering each others' (mutual) attack range, or by pressing space in the (mutual) attack range of other players. - When done automatically, health will be levelled-down enough to cause as many changes in downed-ness as possible by changing other opponents' health to -1 and teammates' health to 0. @@ -44,13 +41,29 @@ ### Routine Checkups - Check if there are any overridden setters without a getter also overridden or vice versa. This is a subtle and unexpected cause of bugs. -- Make sure all button elements have `type=button`, or else they will default to `type=submit`, which usually does not matter, but is also usually not my intention when it does matter (ie. when there are forms in the button' vicinity). +- `git gc`, `git prune`, `npm audit`, `npm oudated`, `npm dedupe`. +- Rel-Noopener + - [Explainer by Mathias Bynens](https://mathiasbynens.github.io/rel-noopener/) + - [better default becoming standardized](https://github.com/whatwg/html/pull/4330) + - [Chrome is still working on it](https://bugs.chromium.org/p/chromium/issues/detail?id=898942) +- Convert any usages of `.innerHtml` or `.innerText` to use `.textContent` unless intentional (In which case, write a comment on why it is intentional). +- Make sure nobody uses `document.createElement` instead of `JsUtil.mkEl` unless they document why it's necessary. ### Low Priority -- Use [Constructable Stylesheets](https://developers.google.com/web/updates/2019/02/constructable-stylesheets) to scope CSS classes? Maybe? Am I sinking into the trap of just liking to add complications? Have I gone insane? What is wrong with me? -- Reset offline games in a separate thread and then pass the result back to the main thread in serialized form. -- Play an emphasis animation on switching to a different operator, and dim non-current-operator faces. +- Start a skeleton for a "Chess Knight" Grid implementation. That would be pretty mind boggling both to play and to develop... +- Try out CSS modules. We already have webpack-css-loader installed. + - This would take a lot of weight out of OmHooks. + - [how to config with typescript](https://stackoverflow.com/questions/40382842/cant-import-css-scss-modules-typescript-says-cannot-find-module) + - Move screen-related css to `client/screen/impl/`. + - Try using es6-style imports instead of CommonJs and see if css-loader understands (it should, I think). +- When TypeScript 4.1 comes out, use the improved `@see` JSdoc annotations. +- Implement translations of clientside strings. + - Create a sitemap file to point to translated versions + - [Google Sitemap indicate translations](https://support.google.com/webmasters/answer/189077?hl=en) + - [Language Tags](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry) + - [Choosing language tags](https://www.w3.org/International/questions/qa-choosing-language-tags) + - Just put an argument in the url query and have the javascript parse it? - Scroll to center the current operator if it intersects with some rootMargin of the .grid element. - Note: The Intersection Observer API will not work here- it doesn't trigger on re-parenting the target node. - Test performance when using `cloneNode` to create Tile elements versus all those calls to `document.createElement`. @@ -80,12 +93,8 @@ - Use es6 #private syntax for getter-backing fields - Waiting for eslint parser plugin: `https://github.com/typescript-eslint/typescript-eslint/pull/1465#issuecomment-591562659` - Turn eslint back on (the vscode extension) when the typescript parser for eslint is ready. -- WebPack 5: - - `output.ecmaVersion` is `6` by default. If we have set it to `6` manually, we can delete the manual field specification. -- [TypeScript / tslib bug](https://github.com/microsoft/TypeScript/issues/36841) - - This is on the roadmap for TypeScript 4.0.1... That may be a while. - - When it is fixed, we can take out the ts-loader compiler option forcing `importHelpers` to be off. - In package.json's scripts field, use node's `--enable-source-maps` flag when there is better support for it / we update node to a version with better support for it / I find out that there is good support and I was just using it wrong. +- Take a look at [eslint-plugin-css-modules](https://www.npmjs.com/package/eslint-plugin-css-modules). --- @@ -184,6 +193,9 @@ https://developer.mozilla.org/en-US/docs/Web/CSS/display flex playground: https://codepen.io/enxaneta/full/adLPwv/ https://developers.google.com/web/updates/2018/01/paintapi https://drafts.csswg.org/mediaqueries-5/#custom-mq +https://developers.google.com/web/updates/2019/02/constructable-stylesheets +https://github.com/fergald/docs/blob/master/explainers/css-shadow-parts-1.md +https://medium.com/seek-blog/the-end-of-global-css-90d2a4a06284 ``` ### ARIA diff --git a/assets/style/game/grid.css b/assets/style/game/grid.css index 95166f53..152fe297 100644 --- a/assets/style/game/grid.css +++ b/assets/style/game/grid.css @@ -56,6 +56,7 @@ .game-grid-pause-overlay { cursor: pointer; position: fixed; + padding: 3em; border-radius: inherit; color: white; text-shadow: 0em 0.01em 0.5em black; diff --git a/assets/style/game/player.css b/assets/style/game/player.css index 0ef13d5d..2fc70a1f 100644 --- a/assets/style/game/player.css +++ b/assets/style/game/player.css @@ -34,7 +34,7 @@ visibility: hidden; } -/* Only applied for client-side operator player since +/* Only applied for clientside operator player since using certain properties will create a new stacking context, and we decided that we will allow this for such players' face element. */ diff --git a/assets/style/initial/_barrel.css b/assets/style/initial/_barrel.css index da15c84c..37203bb3 100644 --- a/assets/style/initial/_barrel.css +++ b/assets/style/initial/_barrel.css @@ -1,7 +1,7 @@ @import "./utils.css"; +@import "./components/_barrel.css"; @import "./snakey.css"; -@import "./root.css"; +@import "./defaults.css"; @import "./screen.css"; @import "./screen/_barrel.css"; -@import "./components/_barrel.css"; diff --git a/assets/style/initial/defaults.css b/assets/style/initial/defaults.css new file mode 100644 index 00000000..2c993178 --- /dev/null +++ b/assets/style/initial/defaults.css @@ -0,0 +1,70 @@ + +/* If anything goes into fullscreen mode: */ +::backdrop { + background-color: var(--colour-mainBg); +} +@media (light-level: dim) { + body { + filter: brightness(0.7); + } +} + +html { + scroll-behavior: smooth; +} + +body { + margin: 0; + font-family: + "Trebuchet MS", + "Lucida Sans Unicode", + "MS PGothic" /* Japanese */ + ; + font-weight: bold; + color: var(--colour-mainFg); + text-align: center; + transition: filter 0.5s ease-in-out; +} + +:disabled { + cursor: not-allowed; +} + +* { + scrollbar-width: thin; + scrollbar-color: transparent; + scrollbar-track-color: var(--colour-tileBd); +} +::-webkit-scrollbar { + width: 8px; + height: 8px; +} +::-webkit-scrollbar-track { + background-color: transparent; +} +::-webkit-scrollbar-thumb { + background: var(--colour-tileBd); + border-radius: 30px; + border: 2px solid transparent; +} +::-webkit-scrollbar-corner { + visibility: hidden; +} + +table { + border-spacing: 0; +} +button { + font: inherit; + color: inherit; + padding: 0px; + background-color: var(--colour-tileBg); +} +button:disabled { + opacity: 0.7; +} +input { + font: inherit; + text-align: inherit; + box-sizing: border-box; +} diff --git a/assets/style/initial/screen.css b/assets/style/initial/screen.css index 9b363f02..4b619e08 100644 --- a/assets/style/initial/screen.css +++ b/assets/style/initial/screen.css @@ -40,15 +40,16 @@ takes a long time to arrive. */ #screen-tint { opacity: 0.0; transition-property: opacity, background-color; - /* transition-duration will be assigned programmatically. */ + transition-duration: 333.0ms; transition-timing-function: ease-in-out; + background-color: var(--colour-mainBg); } #screen-texture { background-size: 13.5rem; mix-blend-mode: overlay; background-color: #919191; /* Image courtesy of toptal patterns: */ - background-image: url(../../images/textures/cheap_diagonal_fabric.png); + background-image: url("assets/images/textures/cheap_diagonal_fabric.png"); background-blend-mode: color-burn; filter: contrast(2.3); } diff --git a/assets/style/initial/screen/colourctrl.css b/assets/style/initial/screen/colourctrl.css index d1984722..b4f9e39a 100644 --- a/assets/style/initial/screen/colourctrl.css +++ b/assets/style/initial/screen/colourctrl.css @@ -1,11 +1,92 @@ .screen-colour { + display: grid; + justify-content: center; + align-content: center; +} + +.screen-colour .screen--prev-button { + position: absolute; + margin: 0.7em; + padding: 0.5em; + border-radius: 0.5em; +} + +.screen-colour .sk-pick-one { + --padding: 0.5em; + gap: var(--padding); + padding: var(--padding); + border: solid 0.3em var(--colour-tileBd); + border-radius: 1.45em; } .screen-colour--opt { + --swatch-square-dimensions: 2em; + contain: content; display: grid; + grid-template-columns: auto repeat(7, var(--swatch-square-dimensions)); + align-items: center; + + gap: 0.35em; + padding: 0.3em; + border: solid 0.2em var(--colour-mainBg); + border-radius: 0.9em; + + color: var(--colour-mainFg); + background-color: var(--colour-mainBg); +} +.screen-colour--opt[aria-active-descendant="true"] { + border-color: var(--colour-tile-Bd); + border-style: dotted; +} +.screen-colour--opt[aria-selected="true"] { + text-decoration: none; + border-color: var(--colour-tile-Bd); +} + +.screen-colour--opt > * { + height: var(--swatch-square-dimensions); + box-sizing: border-box; + border: solid 0.2em var(--colour-tileBd); + border-radius: 0.45em; } + .screen-colour--opt-label { + height: auto; + padding: 0.3em 0.7em; + text-align: end; +} +.screen-colour--opt-label--title { +} +.screen-colour--opt-label--author { + font-size: 0.6em; + padding-bottom: 0.3em; +} + +.screen-colour--opt > :nth-child(1) { + color: var(--colour-tileFg); + background-color: var(--colour-tileBg); + border: none; +} +.screen-colour--opt > :nth-child(2) { + color: var(--colour-healthFg); + background-color: var(--colour-healthBg); +} +.screen-colour--opt > :nth-child(3) { + background-color: var(--colour-pFaceMe); +} +.screen-colour--opt > :nth-child(4) { + background-color: var(--colour-pFaceMeOppo); +} +.screen-colour--opt > :nth-child(5) { + background-color: var(--colour-pFaceTeammate); +} +.screen-colour--opt > :nth-child(6) { + background-color: var(--colour-pFaceImtlTeammate); } -.screen-colour--opt-preview { +.screen-colour--opt > :nth-child(7) { + background-color: var(--colour-pFaceOpponent); } +.screen-colour--opt > :nth-child(8) { + background-color: var(--colour-pFaceImtlOpponent); +} \ No newline at end of file diff --git a/assets/style/initial/screen/groupjoiner.css b/assets/style/initial/screen/groupjoiner.css index d6ae0eec..648a30dc 100644 --- a/assets/style/initial/screen/groupjoiner.css +++ b/assets/style/initial/screen/groupjoiner.css @@ -32,7 +32,7 @@ /* grid-area: passphrase; */ } -.screen-joiner .screen--back-button { +.screen-joiner .screen--prev-button { grid-area: prev; } .screen-joiner .screen--next-button { diff --git a/assets/style/initial/screen/home.css b/assets/style/initial/screen/home.css index 8f8baf19..6cf58964 100644 --- a/assets/style/initial/screen/home.css +++ b/assets/style/initial/screen/home.css @@ -24,5 +24,5 @@ .screen-home--nav--how-to-play { grid-area: htpl; } .screen-home--nav--how-to-host { grid-area: hths; } .screen-home--nav--colour-scheme { grid-area: colr; } -.screen-home--nav--goto-repo { grid-area: repo; } -.screen-home--nav--report-issue { grid-area: bugs; } +.screen-home--nav--goto-repo { grid-area: repo; text-decoration: none; } +.screen-home--nav--report-issue { grid-area: bugs; text-decoration: none; } diff --git a/dev-guide.md b/dev-guide.md index c9e39a32..7832d5ad 100644 --- a/dev-guide.md +++ b/dev-guide.md @@ -57,7 +57,7 @@ Methodology: Use #private fields for fields that back accessors- Ie. Fields that When describing array types, use the `Array<>` form if the arrays are nested (since `readonly T[][]` is not clear which dimension is readonly), or if the entry type is mainly intended to be used as an interface-style type-map. An example of when `T[]` syntax is acceptable is when `T` is a builtin literal type such as `string` and the array is one dimensional. -#### Prefixing with Underscore +### Prefixing with Underscore TLDR: use such naming if a member / variable must be public, but is only meant to be called in a very specific place. @@ -66,3 +66,7 @@ Full Explanation: Do this if: - The _method_ has a good reason to exist and must grant public access, but is able to put an entity into a bad state. Such methods should be called very intentionally in very specific places. The reason is usually that it behaves as a setter (abstracts away management of internal representation), or that it is a hook for extension classes to perform implementation-specific duties. Those two scenarios are actually not all that different. See `Tile._setOccupant`, `GameBase._abstractStatusBecome*`, `Player._abstractNotifyThatGameStatusBecame*` for examples of this. - The _method_ is used to abstract the construction of an object of some abstract type. See `GameBase._playerStatusCtor`, `GameBase._getGridImplementation`, `GameBase._createOperatorPlayer` for examples of this. This is a weak-rationale strain of the above classification. The main benefit being sought here is that in autocompletion, its naming will communicate that it was created to be used in a very specific place (typically in constructors). - The _object_ is a dictionary / registry for enumerated constructor functions for instances sharing a common interface. See `base/game/IndexTasks.ts` for examples of this. These typically ask to be accessed indirectly through a more type-friendly function (one that handles any type-casting when TypeScript has a hard time tracking what's going on). + +### Socket.IO + +- Bind events to functions declared on a prototype to avoid creating unnecessary functions. diff --git a/dist/client/_barrel.css b/dist/client/_barrel.css index 5706d5c2..51fca35a 100644 --- a/dist/client/_barrel.css +++ b/dist/client/_barrel.css @@ -1 +1 @@ -.fill-parent{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden hidden}.text-select-disabled{user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.center-contents{display:inline-flex;justify-content:center;align-content:center;justify-items:center;align-items:center}.stack-contents{position:relative}.stack-contents>*{position:absolute}.sk-input-group{background-color:var(--colour-mainBg);padding:var(--spacing);border-radius:calc(var(--border-radius) + 2*var(--spacing))}.sk-input-group>*{contain:strict;position:relative}.sk-input-group input.sk-input-group-item{padding:0}.sk-input-group input.sk-input-group-item:invalid{border-style:dotted}.sk-input-group .sk-input-group-item{border-radius:var(--border-radius);margin:var(--spacing);border:0 solid var(--colour-tileBg);color:var(--colour-tileFg);background-color:var(--colour-tileBg);transition:all .15s ease-in}.sk-input-group .sk-input-group-item:focus{outline:none;border-color:var(--colour-tileBd);box-shadow:inset 0 0 20px rgba(0,0,0,.25);text-shadow:0 0 8px #000;animation:sk-input-group-item-focus .4s ease-in-out -.5s infinite alternate}.sk-input-group:focus-within .sk-input-group-item:not(:focus){filter:brightness(.9);opacity:.6}@keyframes sk-input-group-item-focus{0%{margin:calc(var(--spacing)/3);border-width:calc(1.2*var(--spacing))}to{margin:calc(var(--spacing)*2/3);border-width:calc(1.4*var(--spacing))}}[data-sk-colour-scheme=snakey]{--colour-mainFg:#e9eef3;--colour-mainBg:#3f5e77;--colour-tileFg:#e9eef3;--colour-tileBg:#2e3b48;--colour-tileBd:#fff;--colour-healthFg:#21352e;--colour-healthBg:#4edf8f;--colour-pFaceMe:#35e7ff;--colour-pFaceMeOppo:#937ad8;--colour-pFaceTeammate:#f8d150;--colour-pFaceImtlTeammate:#f8d150;--colour-pFaceOpponent:#ec4daf;--colour-pFaceImtlOpponent:#e23fa3}::backdrop{background-color:var(--colour-mainBg)}@media (light-level:dim){body{filter:brightness(.7)}}html{scroll-behavior:smooth}body{margin:0;font-family:Trebuchet MS,Lucida Sans Unicode,MS PGothic;font-weight:700;color:var(--colour-mainFg);text-align:center;transition:filter .5s ease-in-out}:disabled{cursor:not-allowed}*{scrollbar-width:thin;scrollbar-color:transparent;scrollbar-track-color:var(--colour-tileBd)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background-color:transparent}::-webkit-scrollbar-thumb{background:var(--colour-tileBd);border-radius:30px;border:2px solid transparent}::-webkit-scrollbar-corner{visibility:hidden}table{border-spacing:0}button{font:inherit;color:inherit;padding:0;background-color:var(--colour-tileBg)}button:disabled{opacity:.7}input{font:inherit;text-align:inherit;box-sizing:border-box}#all-screens-container{display:contents}.sk-screen{contain:strict;position:absolute;top:0;right:0;bottom:0;left:0;overflow:auto}.sk-screen:not([data-current]){display:none}#background{z-index:-10000;display:initial;background-color:var(--colour-mainBg)}#screen-texture,#screen-tint{pointer-events:none;z-index:10000;display:initial}#screen-tint{opacity:0;transition-property:opacity,background-color;transition-timing-function:ease-in-out}#screen-texture{background-size:13.5rem;mix-blend-mode:overlay;background-color:#919191;background-image:url(images/textures/cheap_diagonal_fabric.png);background-blend-mode:color-burn;filter:contrast(2.3)}.screen-home{display:flex}.screen-home--nav{--spacing:6px;--border-radius:1rem;height:30em;max-height:80vmin;width:30em;max-width:80vmin;display:grid;grid-template:"pofl pofl pofl ponl" 3fr "htpl htpl htpl hths" 1fr "colr colr colr . " 1fr "repo bugs . . " 1fr/1fr 1fr 1fr 3fr}.screen-home--nav>*{border-style:double!important}.screen-home--nav--play-offline{grid-area:pofl}.screen-home--nav--play-online{grid-area:ponl}.screen-home--nav--how-to-play{grid-area:htpl}.screen-home--nav--how-to-host{grid-area:hths}.screen-home--nav--colour-scheme{grid-area:colr}.screen-home--nav--goto-repo{grid-area:repo}.screen-home--nav--report-issue{grid-area:bugs}.screen-colour--opt{display:grid}.screen-setup{display:grid;justify-content:center;justify-items:center;align-content:center;align-items:center;gap:1em}.screen-setup .screen--next-button,.screen-setup .screen--prev-button{padding:.3em .7em;font-size:2em}.screen-setup--lang-weight-exagg{width:100%}.screen-play{display:grid;grid-template:"controls main scoreboard" 100%/minmax(auto,1fr) auto minmax(auto,1fr)}.screen-play--grid-wrapper{grid-area:main;contain:content;box-sizing:border-box;height:100%;padding:1rem 0}.screen-play--controls-bar{--spacing:0.3rem;--border-radius:0.7rem;--track-size:5rem;position:sticky;top:0;grid-area:controls;display:grid;grid-auto-rows:var(--track-size);grid-template-columns:minmax(var(--track-size),1fr);justify-items:stretch;align-items:stretch;font-size:80%}.screen-play--controls-bar>*{padding:.35em}.screen-play--players-bar{grid-area:players}@media screen and (max-aspect-ratio:1/1){.screen-play{align-content:flex-start;grid-template:"main" calc(100vh - 7.5rem) "controls" max-content "players" auto/1fr}.screen-play--grid-wrapper{padding:1rem 1rem 0}.screen-play--controls-bar{grid-template-columns:repeat(3,var(--track-size));grid-template-rows:var(--track-size)}}.screen-joiner--content-wrapper{--spacing:0.2em;--border-radius:1.2em;height:27em;max-height:80vh;width:27em;max-width:90vw;display:grid;gap:7%;grid-template:"host-url host-url" 2fr "group-name group-name" 2fr "passphrase passphrase" 2fr "prev next" 1fr/1fr 1fr}.screen-joiner--content-wrapper>label{display:grid;grid-template-rows:1fr 2fr;grid-column:1/3}.screen-joiner .screen--back-button{grid-area:prev}.screen-joiner .screen--next-button{grid-area:next}.screen-lobby{display:grid;justify-items:center;align-content:center}.screen-lobby--client-info-section{--spacing:0.2em;--border-radius:0.8em;gap:.2em;margin:.2em;height:6em;max-height:80vh;width:15em;display:grid;grid-template-rows:1fr 1fr}.screen-lobby--teams-section{display:grid}.screen-lobby--player{max-width:20em;display:grid;grid-template-columns:3em 2em 1fr}.screen-lobby--player *{pointer-events:none}.screen-lobby--player__name{justify-self:start;padding-inline-start:.5em}.screen-lobby .screen--next-button:disabled{display:none}.sk-pick-one{display:flex;flex-direction:column;align-items:stretch;overflow-x:hidden;overflow-y:auto;border-color:var(--colour-tileBd);text-align:start}.sk-pick-one:focus{outline:none}.sk-pick-one--opt{overflow:hidden hidden;cursor:default;transition-property:opacity;transition-duration:.35s;transition-timing-function:ease-out}.sk-pick-one:focus .sk-pick-one--opt:not([aria-active-descendant=true]):not([aria-selected=true]){opacity:.4}.sk-pick-one--opt[aria-selected=true]{text-decoration:underline}.sk-pick-one[aria-invalid=true]{border-style:dotted;border-width:.3rem}[data-sk-colour-scheme=smooth-stone]{--colour-mainFg:#c3c5ce;--colour-mainBg:#72888d;--colour-tileFg:#a2b6bb;--colour-tileBg:#546164;--colour-tileBd:#fff;--colour-healthFg:#21352e;--colour-healthBg:#398f5a;--colour-pFaceMe:#43aec9;--colour-pFaceMeOppo:#5a5f9c;--colour-pFaceTeammate:#bdae58;--colour-pFaceImtlTeammate:#f8df50;--colour-pFaceOpponent:#a34e59;--colour-pFaceImtlOpponent:#e23fa3}[data-sk-colour-scheme=murky-dive]{--colour-mainFg:#c3c5ce;--colour-mainBg:#336465;--colour-tileFg:#e7efef;--colour-tileBg:#283e3f;--colour-tileBd:#fff;--colour-healthFg:#1d3633;--colour-healthBg:#37dfc6;--colour-pFaceMe:#03f9ed;--colour-pFaceMeOppo:#898697;--colour-pFaceTeammate:#fba;--colour-pFaceImtlTeammate:#ffcabd;--colour-pFaceOpponent:#ff4f6c;--colour-pFaceImtlOpponent:#ff6d85} \ No newline at end of file +.fill-parent{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden hidden}.text-select-disabled{user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.center-contents{display:inline-flex;justify-content:center;align-content:center;justify-items:center;align-items:center}.stack-contents{position:relative}.stack-contents>*{position:absolute}.sk-input-group{background-color:var(--colour-mainBg);padding:var(--spacing);border-radius:calc(var(--border-radius) + 2*var(--spacing))}.sk-input-group>*{contain:strict;position:relative}.sk-input-group input.sk-input-group-item{padding:0}.sk-input-group input.sk-input-group-item:invalid{border-style:dotted}.sk-input-group .sk-input-group-item{border-radius:var(--border-radius);margin:var(--spacing);border:0 solid var(--colour-tileBg);color:var(--colour-tileFg);background-color:var(--colour-tileBg);transition:all .15s ease-in}.sk-input-group .sk-input-group-item:focus{outline:none;border-color:var(--colour-tileBd);box-shadow:inset 0 0 20px rgba(0,0,0,.25);text-shadow:0 0 8px #000;animation:sk-input-group-item-focus .4s ease-in-out -.5s infinite alternate}.sk-input-group:focus-within .sk-input-group-item:not(:focus){filter:brightness(.9);opacity:.6}@keyframes sk-input-group-item-focus{0%{margin:calc(var(--spacing)/3);border-width:calc(1.2*var(--spacing))}to{margin:calc(var(--spacing)*2/3);border-width:calc(1.4*var(--spacing))}}.sk-pick-one{display:flex;flex-direction:column;align-items:stretch;overflow-x:hidden;overflow-y:auto;border-color:var(--colour-tileBd);text-align:start}.sk-pick-one:focus{outline:none}.sk-pick-one--opt{overflow:hidden hidden;cursor:default;transition-property:opacity;transition-duration:.35s;transition-timing-function:ease-out}.sk-pick-one:focus .sk-pick-one--opt:not([aria-active-descendant=true]):not([aria-selected=true]){opacity:.4}.sk-pick-one--opt[aria-selected=true]{text-decoration:underline}.sk-pick-one[aria-invalid=true]{border-style:dotted;border-width:.3rem}[data-sk-colour-scheme=snakey]{--colour-mainFg:#e9eef3;--colour-mainBg:#3f5e77;--colour-tileFg:#e9eef3;--colour-tileBg:#2e3b48;--colour-tileBd:#fff;--colour-healthFg:#21352e;--colour-healthBg:#4edf8f;--colour-pFaceMe:#35e7ff;--colour-pFaceMeOppo:#937ad8;--colour-pFaceTeammate:#f8d150;--colour-pFaceImtlTeammate:#f8d150;--colour-pFaceOpponent:#ec4daf;--colour-pFaceImtlOpponent:#e23fa3}::backdrop{background-color:var(--colour-mainBg)}@media (light-level:dim){body{filter:brightness(.7)}}html{scroll-behavior:smooth}body{margin:0;font-family:Trebuchet MS,Lucida Sans Unicode,MS PGothic;font-weight:700;color:var(--colour-mainFg);text-align:center;transition:filter .5s ease-in-out}:disabled{cursor:not-allowed}*{scrollbar-width:thin;scrollbar-color:transparent;scrollbar-track-color:var(--colour-tileBd)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background-color:transparent}::-webkit-scrollbar-thumb{background:var(--colour-tileBd);border-radius:30px;border:2px solid transparent}::-webkit-scrollbar-corner{visibility:hidden}table{border-spacing:0}button{font:inherit;color:inherit;padding:0;background-color:var(--colour-tileBg)}button:disabled{opacity:.7}input{font:inherit;text-align:inherit;box-sizing:border-box}#all-screens-container{display:contents}.sk-screen{contain:strict;position:absolute;top:0;right:0;bottom:0;left:0;overflow:auto}.sk-screen:not([data-current]){display:none}#background{z-index:-10000;display:initial;background-color:var(--colour-mainBg)}#screen-texture,#screen-tint{pointer-events:none;z-index:10000;display:initial}#screen-tint{opacity:0;transition-property:opacity,background-color;transition-duration:333ms;transition-timing-function:ease-in-out;background-color:var(--colour-mainBg)}#screen-texture{background-size:13.5rem;mix-blend-mode:overlay;background-color:#919191;background-image:url(images/textures/cheap_diagonal_fabric.png);background-blend-mode:color-burn;filter:contrast(2.3)}.screen-home{display:flex}.screen-home--nav{--spacing:6px;--border-radius:1rem;height:30em;max-height:80vmin;width:30em;max-width:80vmin;display:grid;grid-template:"pofl pofl pofl ponl" 3fr "htpl htpl htpl hths" 1fr "colr colr colr . " 1fr "repo bugs . . " 1fr/1fr 1fr 1fr 3fr}.screen-home--nav>*{border-style:double!important}.screen-home--nav--play-offline{grid-area:pofl}.screen-home--nav--play-online{grid-area:ponl}.screen-home--nav--how-to-play{grid-area:htpl}.screen-home--nav--how-to-host{grid-area:hths}.screen-home--nav--colour-scheme{grid-area:colr}.screen-home--nav--goto-repo{grid-area:repo;text-decoration:none}.screen-home--nav--report-issue{grid-area:bugs;text-decoration:none}.screen-colour{display:grid;justify-content:center;align-content:center}.screen-colour .screen--prev-button{position:absolute;margin:.7em;padding:.5em;border-radius:.5em}.screen-colour .sk-pick-one{--padding:0.5em;gap:var(--padding);padding:var(--padding);border:.3em solid var(--colour-tileBd);border-radius:1.45em}.screen-colour--opt{--swatch-square-dimensions:2em;contain:content;display:grid;grid-template-columns:auto repeat(7,var(--swatch-square-dimensions));align-items:center;gap:.35em;padding:.3em;border:.2em solid var(--colour-mainBg);border-radius:.9em;color:var(--colour-mainFg);background-color:var(--colour-mainBg)}.screen-colour--opt[aria-active-descendant=true]{border-color:var(--colour-tile-Bd);border-style:dotted}.screen-colour--opt[aria-selected=true]{text-decoration:none;border-color:var(--colour-tile-Bd)}.screen-colour--opt>*{height:var(--swatch-square-dimensions);box-sizing:border-box;border:.2em solid var(--colour-tileBd);border-radius:.45em}.screen-colour--opt-label{height:auto;padding:.3em .7em;text-align:end}.screen-colour--opt-label--author{font-size:.6em;padding-bottom:.3em}.screen-colour--opt>:first-child{color:var(--colour-tileFg);background-color:var(--colour-tileBg);border:none}.screen-colour--opt>:nth-child(2){color:var(--colour-healthFg);background-color:var(--colour-healthBg)}.screen-colour--opt>:nth-child(3){background-color:var(--colour-pFaceMe)}.screen-colour--opt>:nth-child(4){background-color:var(--colour-pFaceMeOppo)}.screen-colour--opt>:nth-child(5){background-color:var(--colour-pFaceTeammate)}.screen-colour--opt>:nth-child(6){background-color:var(--colour-pFaceImtlTeammate)}.screen-colour--opt>:nth-child(7){background-color:var(--colour-pFaceOpponent)}.screen-colour--opt>:nth-child(8){background-color:var(--colour-pFaceImtlOpponent)}.screen-setup{display:grid;justify-content:center;justify-items:center;align-content:center;align-items:center;gap:1em}.screen-setup .screen--next-button,.screen-setup .screen--prev-button{padding:.3em .7em;font-size:2em}.screen-setup--lang-weight-exagg{width:100%}.screen-play{display:grid;grid-template:"controls main scoreboard" 100%/minmax(auto,1fr) auto minmax(auto,1fr)}.screen-play--grid-wrapper{grid-area:main;contain:content;box-sizing:border-box;height:100%;padding:1rem 0}.screen-play--controls-bar{--spacing:0.3rem;--border-radius:0.7rem;--track-size:5rem;position:sticky;top:0;grid-area:controls;display:grid;grid-auto-rows:var(--track-size);grid-template-columns:minmax(var(--track-size),1fr);justify-items:stretch;align-items:stretch;font-size:80%}.screen-play--controls-bar>*{padding:.35em}.screen-play--players-bar{grid-area:players}@media screen and (max-aspect-ratio:1/1){.screen-play{align-content:flex-start;grid-template:"main" calc(100vh - 7.5rem) "controls" max-content "players" auto/1fr}.screen-play--grid-wrapper{padding:1rem 1rem 0}.screen-play--controls-bar{grid-template-columns:repeat(3,var(--track-size));grid-template-rows:var(--track-size)}}.screen-joiner--content-wrapper{--spacing:0.2em;--border-radius:1.2em;height:27em;max-height:80vh;width:27em;max-width:90vw;display:grid;gap:7%;grid-template:"host-url host-url" 2fr "group-name group-name" 2fr "passphrase passphrase" 2fr "prev next" 1fr/1fr 1fr}.screen-joiner--content-wrapper>label{display:grid;grid-template-rows:1fr 2fr;grid-column:1/3}.screen-joiner .screen--prev-button{grid-area:prev}.screen-joiner .screen--next-button{grid-area:next}.screen-lobby{display:grid;justify-items:center;align-content:center}.screen-lobby--client-info-section{--spacing:0.2em;--border-radius:0.8em;gap:.2em;margin:.2em;height:6em;max-height:80vh;width:15em;display:grid;grid-template-rows:1fr 1fr}.screen-lobby--teams-section{display:grid}.screen-lobby--player{max-width:20em;display:grid;grid-template-columns:3em 2em 1fr}.screen-lobby--player *{pointer-events:none}.screen-lobby--player__name{justify-self:start;padding-inline-start:.5em}.screen-lobby .screen--next-button:disabled{display:none}[data-sk-colour-scheme=smooth-stone]{--colour-mainFg:#c3c5ce;--colour-mainBg:#72888d;--colour-tileFg:#a2b6bb;--colour-tileBg:#546164;--colour-tileBd:#fff;--colour-healthFg:#21352e;--colour-healthBg:#398f5a;--colour-pFaceMe:#43aec9;--colour-pFaceMeOppo:#5a5f9c;--colour-pFaceTeammate:#bdae58;--colour-pFaceImtlTeammate:#f8df50;--colour-pFaceOpponent:#a34e59;--colour-pFaceImtlOpponent:#e23fa3}[data-sk-colour-scheme=murky-dive]{--colour-mainFg:#c3c5ce;--colour-mainBg:#336465;--colour-tileFg:#e7efef;--colour-tileBg:#283e3f;--colour-tileBd:#fff;--colour-healthFg:#1d3633;--colour-healthBg:#37dfc6;--colour-pFaceMe:#03f9ed;--colour-pFaceMeOppo:#898697;--colour-pFaceTeammate:#fba;--colour-pFaceImtlTeammate:#ffcabd;--colour-pFaceOpponent:#ff4f6c;--colour-pFaceImtlOpponent:#ff6d85} \ No newline at end of file diff --git a/dist/client/chunk/929.js b/dist/client/chunk/929.js new file mode 100644 index 00000000..721e0057 --- /dev/null +++ b/dist/client/chunk/929.js @@ -0,0 +1,2 @@ +(self.webpackChunksnakey3=self.webpackChunksnakey3||[]).push([[929],{173:(e,t,s)=>{"use strict";s.r(t)},985:(e,t,s)=>{"use strict";s.d(t,{r:()=>a});var r=s(406),i=s(495);class a{constructor(e){this.static=e.gridClass,this.dimensions=e.dimensions,this.tile=new i.N(this),r.R.propNoWrite(this,["static","dimensions","tile"])}get area(){return this.static.getArea(this.dimensions)}reset(){this.forEachTile((e=>e.reset()))}getDestsFromSourcesTo(e){return Array.from(new Set(this.tile.sourcesTo(e).get.flatMap((e=>this.tile.destsFrom(e.coord).get))))}getRandomCoord(){return this.static.getRandomCoord(this.dimensions)}}!function(e){e.getImplementation=t=>e._Constructors[t]}(a||(a={}))},789:(e,t,s)=>{"use strict";s.d(t,{u:()=>c.u,n:()=>d});var r,i,a,o,n=s(655),h=s(406),l=s(951),c=s(305);class d{constructor(e){r.set(this,void 0),i.set(this,void 0),a.set(this,void 0),o.set(this,void 0),this.coord=e,h.R.propNoWrite(this,["coord"]),(0,n.YH)(this,r,l.J5.Id.NULL)}reset(){this.evictOccupant(),this.lastKnownUpdateId=0,this.freeHealth=0,this.setLangCharSeqPair(l.Uo.CharSeqPair.NULL)}_setOccupant(e,t){(0,n.YH)(this,r,e)}get isOccupied(){return this.occupantId!==l.J5.Id.NULL}evictOccupant(){(0,n.YH)(this,r,l.J5.Id.NULL)}get occupantId(){return(0,n.Q_)(this,r)}get freeHealth(){return(0,n.Q_)(this,i)}set freeHealth(e){(0,n.YH)(this,i,e)}setLangCharSeqPair(e){(0,n.YH)(this,a,e.char),(0,n.YH)(this,o,e.seq)}get langChar(){return(0,n.Q_)(this,a)}get langSeq(){return(0,n.Q_)(this,o)}}r=new WeakMap,i=new WeakMap,a=new WeakMap,o=new WeakMap,Object.freeze(d),Object.freeze(d.prototype)},495:(e,t,s)=>{"use strict";s.d(t,{N:()=>a});var r,i=s(655);class a{constructor(e){r.set(this,void 0),(0,i.YH)(this,r,e),Object.freeze(this)}get _source(){return(0,i.Q_)(this,r)}at(...e){return(0,i.Q_)(this,r)._getTileAt(...e)}destsFrom(...e){return new o((0,i.Q_)(this,r)._getTileDestsFrom(...e))}sourcesTo(...e){return new o((0,i.Q_)(this,r)._getTileSourcesTo(...e))}}r=new WeakMap,Object.freeze(a),Object.freeze(a.prototype);class o{constructor(e){this.contents=e,Object.seal(this)}get occupied(){return this.contents=this.contents.filter((e=>e.isOccupied)),this}get unoccupied(){return this.contents=this.contents.filter((e=>!e.isOccupied)),this}get get(){return this.contents}}Object.freeze(o),Object.freeze(o.prototype)},329:(e,t,s)=>{"use strict";s.d(t,{T:()=>r,z:()=>n});var r,i=s(80),a=s(406),o=s(365);!function(e){e.getImplementation=t=>e._Constructors[t]}(r||(r={}));class n{_superVisibleGrid(e,t){if(e.tileClass!==o.g)throw new TypeError("never");const s=i.Y.Grid;t.setAttribute("role","presentation"),t.classList.add(s.Class.IMPL_BODY),t.dataset[s.Dataset.IMPL_COORD_SYS]=e.coordSys,t.translate=!1,t.spellcheck=!1,this.baseElem=t;const r=a.R.mkEl("div",[i.Y.Player.Class.SHORT_SPOTLIGHT]),n=a.R.mkEl("div",[i.Y.Player.Class.LONG_SPOTLIGHT]);this.spotlightElems=Object.freeze([r,n])}}Object.freeze(n),Object.freeze(n.prototype)},365:(e,t,s)=>{"use strict";s.d(t,{g:()=>h});var r,i=s(655),a=s(406),o=s(80),n=s(789);class h extends n.n{constructor(e){super(e),r.set(this,void 0),(0,i.YH)(this,r,a.R.mkEl("div",[o.Y.General.Class.CENTER_CONTENTS,o.Y.General.Class.STACK_CONTENTS,o.Y.Tile.Class.BASE])).setAttribute("aria-label","Tile");{const e=a.R.mkEl("div",[o.Y.Tile.Class.POINTER_HB]);e.setAttribute("aria-hidden","true"),(0,i.Q_)(this,r).appendChild(e)}{const e=a.R.mkEl("div",[o.Y.Tile.Class.LANG_CHAR_WRAP]);e.setAttribute("role","presentation");const t=this.langCharElem=a.R.mkEl("div",[]);e.appendChild(t),(0,i.Q_)(this,r).appendChild(e)}{const e=this.langSeqElem=a.R.mkEl("div",[o.Y.Tile.Class.LANG_SEQ]);e.setAttribute("role","tooltip"),(0,i.Q_)(this,r).appendChild(e)}a.R.propNoWrite(this,["langCharElem","langSeqElem"])}_addToDom(e){e.appendChild((0,i.Q_)(this,r))}_setOccupant(e,t){super._setOccupant(e,t),this.langCharElem.parentElement.insertAdjacentElement("beforebegin",t.playerElem),this.langSeqElem.textContent=t.username}evictOccupant(){super.evictOccupant(),this.langSeqElem.textContent=this.langSeq}set freeHealth(e){super.freeHealth=e,this.freeHealth>0?(0,i.Q_)(this,r).dataset[o.Y.Tile.Dataset.HEALTH]=this.freeHealth.toString():delete(0,i.Q_)(this,r).dataset[o.Y.Tile.Dataset.HEALTH]}get freeHealth(){return super.freeHealth}setLangCharSeqPair(e){super.setLangCharSeqPair(e),this.langCharElem.textContent=this.langChar,this.langSeqElem.textContent=this.langSeq}}r=new WeakMap,a.R.protoNoEnum(h,["_addToDom"]),Object.freeze(h),Object.freeze(h.prototype)},886:(e,t,s)=>{"use strict";s.d(t,{v:()=>r,y:()=>n});var r,i=s(406),a=s(985),o=s(329);!function(e){class t{constructor(e){this.dash=e.dash,this.bash=e.bash,Object.freeze(this)}_equals(e){return this.dash===e.dash&&this.bash===e.bash}round(){const e=Math.floor(this.dash),s=Math.floor(this.bash),r=e-this.dash,i=s-this.bash;return r>2*i?new t({dash:e+1,bash:s}):r<.5*i?new t({dash:e,bash:s+1}):Math.min(r,i)>.5?new t({dash:e+1,bash:s+1}):new t({dash:e,bash:s})}add(e){return new t({dash:this.dash+e.dash,bash:this.bash+e.bash})}sub(e){return new t({dash:this.dash-e.dash,bash:this.bash-e.bash})}mul(e){return new t({dash:e*this.dash,bash:e*this.bash})}}e.Coord=t,Object.freeze(t),Object.freeze(t.prototype);class s extends a.r{constructor(e){super(e),this.grid=Object.freeze(void 0)}static getAmbiguityThreshold(){return 18}static getSizeLimits(){return this.SIZE_LIMITS}forEachTile(e){let t=0;for(const s of this.grid)for(const r of s)e(r,t++)}shuffledForEachTile(e){this.grid.flat().sort(((e,t)=>Math.random()-.5)).forEach((t=>e(t)))}getUntToward(e,t){}getUntAwayFrom(e,t){return this.getUntToward(t.add(t.sub(e)),t)}getRandomCoordAround(e,t){}_getTileAt(e){}_getTileDestsFrom(e,t=1){}_getTileSourcesTo(e,t=1){}minMovesFromTo(e,t){}getDestsFromSourcesTo(e){return this._getTileDestsFrom(e,2)}static getSpawnCoords(e,t){}static getArea(e){const t=Math.min(e.fslash,e.bslash),s=Math.max(e.fslash,e.bslash),r=-1+e.dash+t;let i=2*t*(e.dash+r);return i+=(s-t-1)*r,i}static getDiameterOfLatticePatchHavingArea(e){if(e<.25)throw new RangeError("determinant of a radical will be strictly negative.");return 1+(-3+Math.sqrt(9-12*(1-e)))/6*2}static getRandomCoord(e){return new t(void 0)}}s.SIZE_LIMITS=Object.freeze({dash:Object.freeze({min:10,max:50}),bslash:Object.freeze({min:10,max:50}),fslash:Object.freeze({min:10,max:50})}),e.Grid=s,i.R.protoNoEnum(s,["_getTileAt","_getTileDestsFrom","_getTileSourcesTo"]),Object.freeze(s),Object.freeze(s.prototype)}(r||(r={})),Object.freeze(r);class n extends r.Grid{constructor(e){super(e),this._superVisibleGrid(e,void 0)}}i.R.applyMixins(n,[o.z]),Object.freeze(n),Object.freeze(n.prototype)},358:(e,t,s)=>{"use strict";s.d(t,{i:()=>r,G:()=>n});var r,i=s(406),a=s(985),o=s(329);!function(e){class t{constructor(e){this.x=e.x,this.y=e.y,Object.freeze(this)}_equals(e){return this.x===e.x&&this.y===e.y}round(){return new t({x:Math.round(this.x),y:Math.round(this.y)})}oneNorm(e){return this.sub(e).originOneNorm()}originOneNorm(){return Math.abs(this.x)+Math.abs(this.y)}infNorm(e){return this.sub(e).originInfNorm()}originInfNorm(){return Math.max(Math.abs(this.x),Math.abs(this.y))}axialAlignment(e){return this.sub(e).originAxialAlignment()}originAxialAlignment(){return Math.abs(Math.abs(this.x)-Math.abs(this.y))/(Math.abs(this.x)+Math.abs(this.y))}add(e){return new t({x:this.x+e.x,y:this.y+e.y})}sub(e){return new t({x:this.x-e.x,y:this.y-e.y})}mul(e){return new t({x:e*this.x,y:e*this.y})}}e.Coord=t,Object.freeze(t),Object.freeze(t.prototype);class s extends a.r{constructor(e){super(e);const s=[];for(let r=0;rMath.random()-.5)).forEach((t=>e(t)))}getUntToward(e,t){const s=this.tile.destsFrom(t).unoccupied.get;if(0===s.length)return this.tile.at(t);if(1===s.length)return s[0];s.sort(((t,s)=>t.coord.oneNorm(e)-s.coord.oneNorm(e))).sort(((t,s)=>t.coord.infNorm(e)-s.coord.infNorm(e)));for(let t=1;ts[0].coord.infNorm(e)){s.splice(t);break}if(1===s.length)return s[0];if(s[0].coord.x-t.x==0||s[0].coord.y-t.y==0){if(t.axialAlignment(t.sub(e))-.5>0)return s[0];s.shift()}return s[Math.floor(s.length*Math.random())]}getUntAwayFrom(e,t){return this.getUntToward(t.add(t.sub(e)),t)}getDestsFromSourcesTo(e){return this._getTileDestsFrom(e,2)}getRandomCoordAround(e,s){return new t({x:e.x+Math.trunc(2*s*(Math.random()-.5)),y:e.y+Math.trunc(2*s*(Math.random()-.5))})}_getTileAt(e){return this.grid[e.y][e.x]}_getTileDestsFrom(e,t=1){let s=e.y-t,r=e.y+t+1,i=e.x-t,a=e.x+t+1;return s>=this.dimensions.height||r<0||i>=this.dimensions.width||a<0?[]:this.grid.slice(Math.max(0,s),Math.min(this.dimensions.height,r)).flatMap((e=>e.slice(Math.max(0,i),Math.min(this.dimensions.width,a))))}_getTileSourcesTo(e,t=1){return this._getTileDestsFrom(e,t)}minMovesFromTo(e,t){return Math.min(Math.abs(t.x-e.x),Math.abs(t.y-e.y))}static getSpawnCoords(e,t){const r=[];return e.map((e=>{const i=[];for(;e>0;){let a;do{a=s.getRandomCoord(t)}while(r.find((e=>a._equals(e))));i.push(a),r.push(a),e--}return i}))}static getArea(e){return e.height*e.width}static getDiameterOfLatticePatchHavingArea(e){return Math.sqrt(e)}static getRandomCoord(e){const s=Math.floor(e.width*Math.random()),r=Math.floor(e.height*Math.random());return new t({x:s,y:r})}}s.SIZE_LIMITS=Object.freeze({height:Object.freeze({min:11,max:51}),width:Object.freeze({min:11,max:51})}),e.Grid=s,i.R.protoNoEnum(s,["_getTileAt","_getTileDestsFrom","_getTileSourcesTo"]),Object.freeze(s),Object.freeze(s.prototype)}(r||(r={})),Object.freeze(r);class n extends r.Grid{constructor(e){super(e);const t=i.R.mkEl("div",[]);t.style.setProperty("--euclid2-grid-width",this.dimensions.width.toString());for(const e of this.grid)for(const s of e)s._addToDom(t);this._superVisibleGrid(e,t)}}i.R.applyMixins(n,[o.z]),Object.freeze(n),Object.freeze(n.prototype)},671:(e,t,s)=>{"use strict";var r;s.d(t,{L:()=>r}),function(e){e.EVENT_ID_REJECT=-1}(r||(r={})),Object.freeze(r)},699:(e,t,s)=>{"use strict";s.d(t,{a:()=>r});var r,i=s(671);!function(e){e.INITIAL_REQUEST_ID=-1,e.EVENT_NAME=Object.freeze({BUBBLE:"player-bubble",MOVEMENT:"player-movement"});class t{constructor(e,t){this.eventId=i.L.EVENT_ID_REJECT,this.affectedNeighbours=void 0,this.playerId=e,this.playerLastAcceptedRequestId=t}}e.Bubble=t,e.Movement=class extends t{constructor(e,t,s,r){super(e,t),this.newPlayerHealth=void 0,this.tileHealthModDescs=void 0,this.destModDesc={coord:s.coord,lastKnownUpdateId:s.lastKnownUpdateId,newCharSeqPair:void 0,newFreeHealth:void 0},this.moveType=r}}}(r||(r={})),Object.freeze(r)},191:(e,t,s)=>{"use strict";s.d(t,{R:()=>f});var r,i,a,o,n=s(655),h=s(504),l=s(671),c=(s(699),s(406)),d=s(951),u=s(926),m=s(473);class p{constructor(e,t,s){r.set(this,void 0),i.set(this,void 0),a.set(this,void 0),this.gameType=e;const o=this._getGridImplementation(s.coordSys);this.grid=new o({gridClass:o,tileClass:t.tileClass,coordSys:s.coordSys,dimensions:s.gridDimensions}),(0,n.YH)(this,r,t.onGameBecomeOver),this.langFrontend=d.Uo.GET_FRONTEND_DESC_BY_ID(s.langId),this._playerStatusCtor=t.playerStatusCtor,this.players=this.createPlayers(s),this.operators=Object.freeze(this.players.filter((e=>e.isALocalOperator))),this.setCurrentOperator(0);{const e=[];if(this.players.forEach((t=>{e[t.teamId]||(e[t.teamId]=[]),e[t.teamId].push(t)})),this.teams=e.map(((e,t)=>new m.S(t,e))),this.teams.every((e=>e.id===m.S.ElimOrder.IMMORTAL)))throw new Error("All teams are immortal. The game will never end.")}c.R.propNoWrite(this,["gameType","grid","langFrontend","players","operators","teams","_playerStatusCtor"]),this.players.forEach((e=>e._afterAllPlayersConstruction()))}reset(){return this.grid.reset(),(0,n.YH)(this,a,"PAUSED"),Promise.resolve()}createPlayers(e){const t=e.playerDescs="ONLINE"===this.gameType?e.playerDescs:u.J5.CtorArgs.finalize(e.playerDescs);return Object.freeze(t.map((e=>e.familyId===u.J5.Family.HUMAN?e.isALocalOperator?this._createOperatorPlayer(e):new u.J5(this,e):this._createArtifPlayer(e))))}serializeResetState(){const e=[],t=this.players.map((e=>e.coord)),s=[];return this.grid.forEachTile((t=>{t.lastKnownUpdateId++,e.push({char:t.langChar,seq:t.langSeq}),t.freeHealth&&s.push({coord:t.coord,health:t.freeHealth})})),{csps:e,playerCoords:t,healthCoords:s}}deserializeResetState(e){this.grid.forEachTile(((t,s)=>{t.setLangCharSeqPair(e.csps[s]),t.lastKnownUpdateId++})),e.playerCoords.forEach(((e,t)=>{this.players[t].reset(this.grid.tile.at(e))})),e.healthCoords.forEach((e=>{this.grid.tile.at(e.coord).freeHealth=e.health}))}get currentOperator(){return(0,n.Q_)(this,i)}setCurrentOperator(e){const t=this.operators[e];this.currentOperator!==t&&(t._notifyWillBecomeCurrent(),(0,n.YH)(this,i,t))}get status(){return(0,n.Q_)(this,a)}statusBecomePlaying(){if("PLAYING"!==this.status){if("PAUSED"!==this.status)throw new Error("Can only resume a game that is currently paused.");this.players.forEach((e=>{e._notifyGameNowPlaying()})),this._abstractStatusBecomePlaying(),(0,n.YH)(this,a,"PLAYING")}else console.log("[statusBecomePlaying]: Game is already playing")}statusBecomePaused(){"PAUSED"!==this.status?"OVER"!==this.status&&(this.players.forEach((e=>{e._notifyGameNowPaused()})),this._abstractStatusBecomePaused(),(0,n.YH)(this,a,"PAUSED")):console.log("[statusBecomePaused]: Game is already paused")}statusBecomeOver(){if("PLAYING"!==this.status)throw new Error("Can only end a game that is currently playing.");this.players.forEach((e=>{e._notifyGameNowOver()})),this._abstractStatusBecomeOver(),(0,n.YH)(this,a,"OVER"),(0,n.Q_)(this,r).call(this),console.log("game is over!")}_abstractStatusBecomePlaying(){}_abstractStatusBecomePaused(){}_abstractStatusBecomeOver(){}}r=new WeakMap,i=new WeakMap,a=new WeakMap,c.R.protoNoEnum(p,["_abstractStatusBecomePlaying","_abstractStatusBecomePaused","_abstractStatusBecomeOver"]),Object.freeze(p),Object.freeze(p.prototype);class f extends p{constructor(e,t,s){super(e,t,s),o.set(this,void 0),this.eventRecordBitmap=[]}reset(){const e=super.reset();return this.eventRecordBitmap.fill(!1,0,h.l.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH),(0,n.YH)(this,o,0),e}get nextUnusedEventId(){return(0,n.Q_)(this,o)}_recordEvent(e){const t=e.eventId,s=t%h.l.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH;if(t===l.L.EVENT_ID_REJECT)throw new TypeError("Do not try to record events for rejected requests.");if(t<0||t!==Math.trunc(t))throw new RangeError("Event ID's must only be assigned positive, integer values.");if(this.eventRecordBitmap[s])throw new Error("Event ID's must be assigned unique values.");this.eventRecordBitmap[s]=!0,this.eventRecordBitmap[(t+h.l.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH-h.l.K.EVENT_RECORD_FORWARD_WINDOW_LENGTH)%h.l.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH]=!1,(0,n.YH)(this,o,+(0,n.Q_)(this,o)+1)}executeTileModEvent(e,t=!0){Object.freeze(e);const s=this.grid.tile.at(e.coord);if(s.lastKnownUpdateId>e.lastKnownUpdateId)return s;if(s.lastKnownUpdateId===e.lastKnownUpdateId)throw new RangeError("never");return e.newCharSeqPair&&(s.setLangCharSeqPair(e.newCharSeqPair),t&&this.operators.filter((e=>e.tile.destsFrom().get.includes(s))).forEach((e=>e.seqBufferAcceptKey("")))),s.lastKnownUpdateId=e.lastKnownUpdateId,s.freeHealth=e.newFreeHealth,s}executePlayerMoveEvent(e){var t;const s=this.players[e.playerId],r=e.playerLastAcceptedRequestId-s.lastAcceptedRequestId;if(e.eventId===l.L.EVENT_ID_REJECT)return void(0===r&&(s.requestInFlight=!1));this._recordEvent(e);const i=this.executeTileModEvent(e.destModDesc,s!==this.currentOperator);if(null===(t=e.tileHealthModDescs)||void 0===t||t.forEach((e=>{this.executeTileModEvent(e)})),r>1){if(s===this.currentOperator)throw new Error("never")}else{if(s.requestInFlight=!1,!(s===this.currentOperator?1===r:r<=1))throw new RangeError("never");s.status.health=e.newPlayerHealth.health,s.moveTo(i),s.lastAcceptedRequestId=e.playerLastAcceptedRequestId}}executePlayerBubbleEvent(e){this.players[e.playerId].requestInFlight=!1,e.eventId!==l.L.EVENT_ID_REJECT&&this._recordEvent(e)}}o=new WeakMap,Object.freeze(f),Object.freeze(f.prototype)},926:(e,t,s)=>{"use strict";s.d(t,{J5:()=>c});var r,i=s(406),a=s(699),o=s(655),n=s(951),h=s(495);class l extends n.J5{constructor(e,t){if(super(),r.set(this,void 0),Math.trunc(t.playerId)!==t.playerId)throw new RangeError("Player ID's must be integer values.");this.playerId=t.playerId,this.isALocalOperator=t.isALocalOperator,this.game=e,this.status=new this.game._playerStatusCtor(this,t.noCheckGameOver),this.tile=new h.N(new l.TileGetterSource(this)),i.R.instNoEnum(this,["game"]),i.R.propNoWrite(this,["playerId","isALocalOperator","game","status","tile"])}_afterAllPlayersConstruction(){this.status._afterAllPlayersConstruction()}reset(e){(0,o.YH)(this,r,e),this.hostTile._setOccupant(this.playerId,this.status.immigrantInfo)}get coord(){return this.hostTile.coord}get hostTile(){return(0,o.Q_)(this,r)}moveTo(e){if(this.hostTile.occupantId!==this.playerId){if("ONLINE"!==this.game.gameType)throw new Error("Linkage between player and occupied tile disagrees.")}else this.hostTile.evictOccupant();if(e.isOccupied){if("ONLINE"!==this.game.gameType)throw new Error("Only one player can occupy a tile at a time.")}else(0,o.YH)(this,r,e),e._setOccupant(this.playerId,this.status.immigrantInfo)}}r=new WeakMap,function(e){var t,s;class r{constructor(e){t.set(this,void 0),s.set(this,void 0),(0,o.YH)(this,t,e),(0,o.YH)(this,s,e.game.grid.tile._source)}_getTileAt(){return(0,o.Q_)(this,s)._getTileAt((0,o.Q_)(this,t).coord)}_getTileDestsFrom(){return(0,o.Q_)(this,s)._getTileDestsFrom((0,o.Q_)(this,t).coord)}_getTileSourcesTo(){return(0,o.Q_)(this,s)._getTileSourcesTo((0,o.Q_)(this,t).coord)}}t=new WeakMap,s=new WeakMap,e.TileGetterSource=r,Object.freeze(r),Object.freeze(r.prototype)}(l||(l={})),i.R.protoNoEnum(l,["_afterAllPlayersConstruction"]),Object.freeze(l),Object.freeze(l.prototype),s(448);class c extends l{constructor(e,t){var s;super(e,t),this.familyId=t.familyId,this.teamId=t.teamId,this.username=t.username,this.avatar=null!==(s=t.avatar)&&void 0!==s?s:c.Avatar.GET_RANDOM(),i.R.propNoWrite(this,["familyId","teamId","username","avatar"])}reset(e){super.reset(e),this.status.reset(),this.lastAcceptedRequestId=a.a.INITIAL_REQUEST_ID,this.requestInFlight=!1}_notifyGameNowPlaying(){}_notifyGameNowPaused(){}_notifyGameNowOver(){}makeMovementRequest(e,t){if("PLAYING"!==this.game.status)throw new Error("This is not a necessary precondition, but we're doing it anyway.");if(this.requestInFlight)throw new Error("Only one request should ever be in flight at a time.");this.requestInFlight=!0,this.game.processMoveRequest(new a.a.Movement(this.playerId,this.lastAcceptedRequestId,e,t))}get team(){return this.game.teams[this.teamId]}isTeamedWith(e){return this.team.members.includes(e)}}!function(e){let t;!function(e){e.finalize=function(e){const t=Array.from(new Set(e.map((e=>e.teamId)))).sort(((e,t)=>e-t)).reduce(((e,t,s)=>(e[t]=s,e)),[]);return e.slice().sort(((e,s)=>t[e.teamId]-t[s.teamId])).map(((e,s)=>Object.assign({},e,{playerId:s,teamId:t[e.teamId]})))}}(t=e.CtorArgs||(e.CtorArgs={})),Object.freeze(t)}(c||(c={})),i.R.protoNoEnum(c,["_notifyGameNowPaused","_notifyGameNowPlaying","_notifyGameNowOver"]),Object.freeze(c),Object.freeze(c.prototype)},448:(e,t,s)=>{"use strict";s.d(t,{c:()=>n});var r,i=s(655),a=s(406),o=s(473);class n{constructor(e,t){r.set(this,void 0),this.player=e,this.noCheckGameOver=t,a.R.instNoEnum(this,["player"])}reset(){this.health=0}_afterAllPlayersConstruction(){}get immigrantInfo(){}get health(){return(0,i.Q_)(this,r)}set health(e){const t=this.isDowned;if((0,i.YH)(this,r,e),t||!this.isDowned||this.noCheckGameOver)return;const s=this.player.team,a=this.player.game.teams;if(s.elimOrder===o.S.ElimOrder.STANDING&&s.members.every((e=>e.status.noCheckGameOver||e.status.isDowned))){const e=1+a.filter((e=>e.elimOrder!==o.S.ElimOrder.STANDING)).length;s.elimOrder=1+a.filter((e=>e.elimOrder!==o.S.ElimOrder.STANDING&&e.elimOrder!==o.S.ElimOrder.IMMORTAL)).length,e===a.length&&this.player.game.statusBecomeOver()}}get isDowned(){return this.health<0}}r=new WeakMap,a.R.protoNoEnum(n,["_afterAllPlayersConstruction"]),Object.freeze(n),Object.freeze(n.prototype)},473:(e,t,s)=>{"use strict";s.d(t,{S:()=>o});var r,i=s(655),a=s(406);class o{constructor(e,t){if(r.set(this,void 0),0===t.length)throw new Error("Teams must have at least one member.");this.id=e,this.members=t,(0,i.YH)(this,r,this.members.every((e=>e.status.noCheckGameOver))?o.ElimOrder.IMMORTAL:o.ElimOrder.STANDING),a.R.propNoWrite(this,["id","members"])}reset(){this.elimOrder!==o.ElimOrder.IMMORTAL&&(this.elimOrder=o.ElimOrder.STANDING)}get elimOrder(){return(0,i.Q_)(this,r)}set elimOrder(e){if(this.elimOrder===o.ElimOrder.IMMORTAL)throw new TypeError("Cannot change the elimination status of an immortal team.");(0,i.YH)(this,r,e)}}r=new WeakMap,function(e){let t;!function(e){e.IMMORTAL=-1,e.STANDING=0}(t=e.ElimOrder||(e.ElimOrder={}))}(o||(o={})),Object.freeze(o),Object.freeze(o.prototype)},153:(e,t,s)=>{"use strict";s.d(t,{qM:()=>T,lA:()=>o.l,RQ:()=>a.R,J5:()=>l.J5,Ko:()=>O,gx:()=>n.g});var r,i,a=s(406),o=s(504),n=s(365),h=s(329),l=s(926),c=s(655),d=s(951),u=s(789);class m extends l.J5{constructor(e,t){super(e,t),r.set(this,void 0),i.set(this,void 0),(0,c.YH)(this,i,this.game.langFrontend.remapFunc)}reset(e){super.reset(e),this.prevCoord=e.coord,(0,c.YH)(this,r,"")}processKeyboardInput(e){"PLAYING"===this.game.status&&(this.requestInFlight||(" "===e.key?u.u.equals(this.coord,this.prevCoord)||this.makeMovementRequest(this.game.grid.getUntAwayFrom(this.prevCoord,this.coord),l.J5.MoveType.BOOST):1!==e.key.length||e.repeat||this.seqBufferAcceptKey(e.key)))}seqBufferAcceptKey(e){const t=this.tile.destsFrom().unoccupied.get;if(0!==t.length)if(e){if(e=(0,c.Q_)(this,i).call(this,e),d.Uo.Seq.REGEXP.test(e)){for(let s=this.seqBuffer+e;s.length;s=s.substring(1)){const e=t.find((e=>e.langSeq.startsWith(s)));if(e)return(0,c.YH)(this,r,s),void(e.langSeq===s&&this.makeMovementRequest(e,l.J5.MoveType.NORMAL))}(0,c.YH)(this,r,""),this.status.visualBell()}}else t.find((e=>e.langSeq.startsWith(this.seqBuffer)))||(0,c.YH)(this,r,"")}moveTo(e){(0,c.YH)(this,r,""),this.prevCoord=this.coord,super.moveTo(e)}_notifyWillBecomeCurrent(){this.status._notifyWillBecomeCurrent(this.game.grid.spotlightElems)}get seqBuffer(){return(0,c.Q_)(this,r)}}r=new WeakMap,i=new WeakMap,a.R.protoNoEnum(m,["_notifyWillBecomeCurrent"]),Object.freeze(m),Object.freeze(m.prototype);var p,f,g,y=s(80),E=s(448);class O extends E.c{constructor(e,t){super(e,t),p.set(this,void 0),f.set(this,void 0),g.set(this,void 0),(0,c.YH)(this,p,a.R.mkEl("div",[y.Y.General.Class.CENTER_CONTENTS,y.Y.General.Class.STACK_CONTENTS,y.Y.Player.Class.BASE]));{const e=a.R.mkEl("div",[y.Y.Player.Class.FACE],{});(0,c.YH)(this,f,this.player.isALocalOperator?[e.animate({filter:["brightness(0.7)","brightness(1.0)"]},{duration:300,easing:"ease-in",delay:1}),e.animate({transform:O.makeWiggleAnimation(10,2)},{duration:270,easing:"ease-out",delay:1})]:[]).forEach((e=>e.pause())),e.appendChild(a.R.mkEl("div",[y.Y.Player.Class.DOWNED_OVERLAY])),(0,c.Q_)(this,p).appendChild(e)}}_afterAllPlayersConstruction(){(0,c.YH)(this,g,Object.freeze({playerElem:(0,c.Q_)(this,p),username:this.player.username}))}reset(){super.reset();const e=y.Y.Player.Dataset.DOWNED;(0,c.Q_)(this,p).dataset[e.KEY]=e.VALUES.NO}get immigrantInfo(){return(0,c.Q_)(this,g)}_notifyWillBecomeCurrent(e){const t=this.player.game.currentOperator,s=this.player;requestAnimationFrame((t=>{e.forEach((e=>{(0,c.Q_)(this,p).appendChild(e)})),s.status.immigrantInfo.playerElem.scrollIntoView(d.Bl)})),s.teamId!==(null==t?void 0:t.teamId)&&s.game.players.forEach((e=>{const t=e.teamId===s.teamId;(0,c.Q_)(e.status,p).dataset[y.Y.Player.Dataset.FACE_SWATCH]=e.isALocalOperator?t?"me":"meOppo":t?"teammate":"opponent"}))}visualBell(){(0,c.Q_)(this,f),window.requestAnimationFrame((e=>{(0,c.Q_)(this,f).forEach((e=>e.play()))}))}get health(){return super.health}set health(e){const t=this.isDowned;if(super.health=e,t!==this.isDowned){const e=y.Y.Player.Dataset.DOWNED;(0,c.Q_)(this,p).dataset[e.KEY]=this.isDowned?this.player.team.elimOrder?e.VALUES.TEAM:e.VALUES.SELF:e.VALUES.NO}}}p=new WeakMap,f=new WeakMap,g=new WeakMap,function(e){var t,s,r;e.makeWiggleAnimation=function(e,t){const s=Array(2*t).fill(e);return s.unshift(0),s.push(0),s.map(((e,t)=>`translate(${t%2?e:-e}%)`))},t=new WeakMap,s=new WeakMap,r=new WeakMap,e.Card=class{constructor(e){t.set(this,void 0),s.set(this,void 0),r.set(this,void 0),this.baseElem=a.R.mkEl("div",[]),this.baseElem.setAttribute("label","Player");const i=(0,c.YH)(this,t,a.R.mkEl("div",[],{textContent:e}));this.baseElem.appendChild(i)}}}(O||(O={})),a.R.protoNoEnum(O,["_afterAllPlayersConstruction"]),Object.freeze(O),Object.freeze(O.prototype);var _=s(358),b=s(886);{const e=h.T;e._Constructors=Object.freeze({EUCLID2:_.G,BEEHIVE:b.y}),Object.freeze(e)}s(173);class T{_ctorBrowserGame(){this.htmlElements=Object.freeze({gridImpl:this.grid.baseElem,playersBar:document.createElement("div")}),a.R.propNoWrite(this,["htmlElements"])}_getGridImplementation(e){return h.T.getImplementation(e)}_createOperatorPlayer(e){return new m(this,e)}}a.R.protoNoEnum(T,["_getGridImplementation"]),Object.freeze(T),Object.freeze(T.prototype)}}]); +//# sourceMappingURL=929.js.map \ No newline at end of file diff --git a/dist/client/chunk/929.js.map b/dist/client/chunk/929.js.map new file mode 100644 index 00000000..bd85a540 --- /dev/null +++ b/dist/client/chunk/929.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://snakey3/./src/base/floor/Grid.ts","webpack://snakey3/./src/base/floor/Tile.ts","webpack://snakey3/./src/base/floor/TileGetter.ts","webpack://snakey3/./src/base/floor/VisibleGrid.ts","webpack://snakey3/./src/base/floor/VisibleTile.ts","webpack://snakey3/./src/base/floor/impl/Beehive.ts","webpack://snakey3/./src/base/floor/impl/Euclid2.ts","webpack://snakey3/./src/base/game/events/EventRecordEntry.ts","webpack://snakey3/./src/base/game/events/PlayerActionEvent.ts","webpack://snakey3/./src/base/game/gameparts/GamepartBase.ts","webpack://snakey3/./src/base/game/gameparts/GamepartEvents.ts","webpack://snakey3/./src/base/game/player/PlayerSkeleton.ts","webpack://snakey3/./src/base/game/player/Player.ts","webpack://snakey3/./src/base/game/player/PlayerStatus.ts","webpack://snakey3/./src/base/game/player/Team.ts","webpack://snakey3/./src/base/game/player/OperatorPlayer.ts","webpack://snakey3/./src/base/game/player/VisiblePlayerStatus.ts","webpack://snakey3/./src/base/game/ctormaps/CmapBrowser.ts","webpack://snakey3/./src/client/game/BrowserGame.ts"],"names":["Grid","desc","this","static","gridClass","dimensions","tile","getArea","forEachTile","reset","originCoord","Array","from","Set","sourcesTo","get","flatMap","sourceToTarget","destsFrom","coord","getRandomCoord","getImplementation","coordSys","_Constructors","Tile","evictOccupant","lastKnownUpdateId","freeHealth","setLangCharSeqPair","playerId","immigrantInfo","occupantId","newFreeHealth","charSeqPair","char","seq","Object","freeze","prototype","TileGetter","source","args","_getTileAt","Query","_getTileDestsFrom","_getTileSourcesTo","contents","seal","filter","isOccupied","VisibleGrid","VisibleGridMixin","gridImpl","tileClass","TypeError","OHG","setAttribute","classList","add","Class","IMPL_BODY","dataset","Dataset","IMPL_COORD_SYS","translate","spellcheck","baseElem","shortSpotlight","longSpotlight","spotlightElems","VisibleTile","coordDesc","super","pthb","appendChild","charWrap","charElem","langCharElem","seqElem","langSeqElem","parent","_setOccupant","parentElement","insertAdjacentElement","playerElem","textContent","username","langSeq","toString","langChar","Beehive","Coord","dash","bash","other","floorDash","Math","floor","floorBash","d","b","min","scalar","grid","undefined","SIZE_LIMITS","consumer","i","row","flat","sort","a","random","forEach","intendedDest","sourceCoord","avoidCoord","getUntToward","sub","origin","radius","dest","playerCounts","dim","shorterSide","fslash","bslash","longerSide","max","width","area","RangeError","sqrt","BeehiveVisibleGrid","_superVisibleGrid","Euclid2","x","y","round","originOneNorm","abs","originInfNorm","originAxialAlignment","height","newRow","col","newTile","push","options","unoccupied","length","at","tileA","TileB","oneNorm","infNorm","splice","axialAlignment","shift","trunc","t","l","r","slice","gridRow","avoidSet","map","numMembers","teamSpawnCoords","find","_equals","Euclid2VisibleGrid","gridElem","style","setProperty","_addToDom","EventRecordEntry","EVENT_ID_REJECT","PlayerActionEvent","INITIAL_REQUEST_ID","EVENT_NAME","BUBBLE","MOVEMENT","Bubble","lastAcceptedRequestId","eventId","affectedNeighbours","playerLastAcceptedRequestId","Movement","destTile","moveType","newPlayerHealth","tileHealthModDescs","destModDesc","newCharSeqPair","GamepartBase","gameType","impl","_getGridImplementation","gridDimensions","onGameBecomeOver","langFrontend","langId","_playerStatusCtor","playerStatusCtor","players","createPlayers","operators","player","isALocalOperator","setCurrentOperator","teams","teamId","teammateArray","Team","every","team","id","Error","JsUtils","_afterAllPlayersConstruction","Promise","resolve","gameDesc","playerDescs","Player","playerDesc","familyId","_createOperatorPlayer","_createArtifPlayer","csps","playerCoords","healthCoords","health","ser","index","nextOperatorIndex","nextOperator","currentOperator","_notifyWillBecomeCurrent","status","_notifyGameNowPlaying","_abstractStatusBecomePlaying","console","log","_notifyGameNowPaused","_abstractStatusBecomePaused","_notifyGameNowOver","_abstractStatusBecomeOver","GamepartEvents","eventRecordBitmap","superPromise","fill","Game","wrappedId","doCheckOperatorSeqBuffer","op","includes","seqBufferAcceptKey","clientEventLag","requestInFlight","_recordEvent","executeTileModEvent","moveTo","PlayerSkeleton","game","noCheckGameOver","TileGetterSource","spawnTile","hostTile","_source","avatar","Avatar","GET_RANDOM","type","processMoveRequest","members","CtorArgs","finalize","teamIdCleaner","reduce","prev","originalId","squashedId","pda","pdb","assign","PlayerStatus","newHealth","oldIsDowned","isDowned","elimOrder","numNonStandingTeams","statusBecomeOver","member","ElimOrder","IMMORTAL","STANDING","teamElimOrder","OperatorPlayer","remapFunc","prevCoord","event","key","makeMovementRequest","getUntAwayFrom","repeat","unts","newSeqBuffer","seqBuffer","substring","possibleTarget","startsWith","visualBell","VisiblePlayerStatus","OmHooks","faceElem","animate","duration","easing","delay","transform","makeWiggleAnimation","anim","pause","DDH","KEY","VALUES","NO","currOperator","requestAnimationFrame","time","elem","scrollIntoView","otherPlayer","isTeammate","window","play","TEAM","SELF","pctX","numWiggles","arr","unshift","n","Card","playerName","name","VGr","BrowserGameMixin","htmlElements","playersBar","document","createElement"],"mappings":"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","file":"chunk/929.js","sourceRoot":""} \ No newline at end of file diff --git a/dist/client/chunk/game/offline.css b/dist/client/chunk/game/offline.css new file mode 100644 index 00000000..55016ec2 --- /dev/null +++ b/dist/client/chunk/game/offline.css @@ -0,0 +1 @@ +.game-grid-impl-body{z-index:0}.player__face[data-face=me]{z-index:21}.player__spotlight-long{z-index:20}.tile__seq{z-index:13}.player__downed-overlay{z-index:12}.player__face,.tile[data-health] .tile__char{z-index:11}.player__spotlight-short{z-index:10}.game-grid-kbd-dc{z-index:1}.game-grid-pause-overlay{z-index:2}.game-grid{contain:content;height:100%;display:grid;align-content:center}.game-grid,.game-grid-scroll-outer{position:relative}.grid-player-intersection-root{position:fixed;z-index:100;pointer-events:none;padding:20%}.game-grid-scroll-outer{contain:style;overflow:auto auto;scroll-snap-type:both;scrollbar-width:none;box-sizing:border-box;border:5px double var(--colour-tileBd);border-radius:15px}.game-grid-scroll-outer::-webkit-scrollbar{width:0;height:0}.game-grid-impl-body{contain:content;position:static;color:var(--colour-tileFg);height:fit-content;width:fit-content;padding:.4em}.game-grid-kbd-dc,.game-grid-pause-overlay{cursor:pointer;position:fixed;padding:3em;border-radius:inherit;color:#fff;text-shadow:0 .01em .5em #000;visibility:hidden}.game-grid-kbd-dc{background-color:rgba(0,0,0,.13)}.game-grid-pause-overlay{background-color:rgba(0,0,0,.25)}@media screen{.game-grid:focus{outline:none}.game-grid:not([data-game-state=paused]):not(:focus) .game-grid-kbd-dc,.game-grid[data-game-state=paused] .game-grid-pause-overlay{visibility:visible}}.tile{pointer-events:none;contain:size style}.tile *{height:100%;width:100%}.tile__pointer-hitbox{pointer-events:auto;contain:strict;top:40%;left:40%}.player__face,.tile__char,.tile__seq{box-sizing:border-box;border:.14em solid transparent;border-radius:.35em}.tile__char{contain:strict;background-color:var(--colour-tileBg);overflow:hidden hidden;display:grid;align-items:center}.tile__char>*{height:auto}.tile[data-health] .tile__char{border-color:var(--colour-tileBd);color:var(--colour-healthFg);background-color:var(--colour-healthBg);transition-property:color,background-color;transition-duration:.5s;transition-timing-function:ease-in}.tile__seq{contain:content;padding:0 .4ch;min-height:100%;height:max-content;min-width:100%;width:max-content;color:#fff;background-color:rgba(0,0,0,.5);border-color:#fff;font-family:inherit}.tile__pointer-hitbox:hover~.player>.player__face,.tile__seq{visibility:hidden}.tile__pointer-hitbox:hover~.tile__char{color:transparent}.tile__pointer-hitbox:hover~.tile__seq{visibility:visible}.player{--colour-spotlight:var(--colour-mainBg);contain:size}.player__face{border-color:var(--colour-tileBd);contain:strict;transition:background-color .7s ease-in-out}.player[data-face=me]>.player__face,.player__spotlight-long,.player__spotlight-short{will-change:transform}.player__downed-overlay{background-color:red;opacity:.2}.player[data-downed=no] .player__downed-overlay{visibility:hidden}@keyframes anim-frames-player__on-move{0%{transform:scale(1.1)}37%{transform:scale(1.3)}}.player__spotlight-short{background-image:radial-gradient(farthest-side,transparent 21%,46%,var(--colour-spotlight));padding:1400%;border:100vmax solid var(--colour-spotlight)}.player__spotlight-long{background-image:radial-gradient(farthest-side,transparent 15%,var(--colour-spotlight));padding:1700%;border:100vmax solid var(--colour-spotlight);opacity:.92}@media print{.player__spotlight-long,.player__spotlight-short{visibility:hidden}}.player[data-face=me]>.player__face{background-color:var(--colour-pFaceMe)}.player[data-face=meOppo]>.player__face{background-color:var(--colour-pFaceMeOppo)}.player[data-face=teammate]>.player__face{background-color:var(--colour-pFaceTeammate)}.player[data-face=opponent]>.player__face{background-color:var(--colour-pFaceOpponent)}.player[data-face=teammate][data-downed=team]>.player__face{background-color:var(--colour-pFaceImtlTeammate)}.player[data-face=opponent][data-downed=team]>.player__face{background-color:var(--colour-pFaceImtlOpponent)}.game-grid-impl-body[data-coord-sys=EUCLID2]{--track-size:minmax(1.67em,1fr);display:grid;grid-template-columns:repeat(var(--euclid2-grid-width),var(--track-size));grid-auto-rows:var(--track-size)}.game-grid-impl-body[data-coord-sys=EUCLID2] .tile{margin:5%;scroll-snap-align:center} \ No newline at end of file diff --git a/dist/client/chunk/game/offline.js b/dist/client/chunk/game/offline.js index 02db321d..58a7974c 100644 --- a/dist/client/chunk/game/offline.js +++ b/dist/client/chunk/game/offline.js @@ -1,2 +1,2 @@ -(window.webpackJsonpsnakey3=window.webpackJsonpsnakey3||[]).push([[1],{19:function(e,t,r){var s={"./Cellphone.ts":[20,4],"./Emote.ts":[21,5],"./English.ts":[22,6],"./Japanese.ts":[23,7],"./Korean.ts":[24,8],"./Morse.ts":[25,9]};function a(e){if(!r.o(s,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=s[e],a=t[0];return r.e(t[1]).then((function(){return r(a)}))}a.keys=function(){return Object.keys(s)},a.id=19,e.exports=a},27:function(e,t,r){"use strict";r.r(t),r.d(t,"OfflineGame",(function(){return m}));var s=r(17),a=r(0),n=r(9),o=r(3),i=r(4),h=r(8),l=r(13),c=r(1);class d{constructor(e){const t=[];for(const r of e)t[r]=new d.Entry;this.entries=t}reset(){for(const e of this.entries)e.reset()}}!function(e){class t{constructor(){this.moveCounts={}}reset(){this.totalHealthPickedUp=0,Object.getOwnPropertyNames(c.b.MoveType).forEach(e=>{this.moveCounts[e]=0})}}e.Entry=t,Object.freeze(t),Object.freeze(t.prototype)}(d||(d={})),Object.freeze(d),Object.freeze(d.prototype);var u,g,p,f=r(18);class v extends f.a{constructor(e,t,s){super(e,t,s),u.set(this,void 0),g.set(this,void 0),p.set(this,void 0),this.averageFreeHealth=s.averageFreeHealthPerTile*this.grid.area,this.averageFreeHealthPerTile=s.averageFreeHealthPerTile,Object(a.c)(this,g,new Set),Object(a.c)(this,p,r(19)(`./${this.langFrontend.module}.ts`).then(e=>{const t=this.langFrontend.export.split(".").reduce((e,t)=>e[t],e[this.langFrontend.module]);this.lang=new t(s.langWeightExaggeration);const r=this.grid.static.getAmbiguityThreshold();if(this.lang.numLeavese.playerId))}reset(){const e=Object.create(null,{reset:{get:()=>super.reset}});return Object(a.a)(this,void 0,void 0,(function*(){yield e.reset.call(this),Object(a.c)(this,u,0),Object(a.b)(this,g).clear(),yield Object(a.b)(this,p),this.lang.reset(),this.grid.shuffledForEachTile(e=>{e.setLangCharSeqPair(this.dryRunShuffleLangCharSeqAt(e))}),this.teams.forEach(e=>e.reset());const t=this.grid.static.getSpawnCoords(this.teams.map(e=>e.members.length),this.grid.dimensions);return this.teams.forEach((e,r)=>{e.members.forEach((e,s)=>{e.reset(this.grid.tile.at(t[r][s]))})}),this.scoreInfo.reset(),Promise.resolve()}))}_createArtifPlayer(e){return l.a.of(this,e)}dryRunShuffleLangCharSeqAt(e){e.setLangCharSeqPair(n.a.CharSeqPair.NULL);const t=Array.from(new Set(this.grid.tile.sourcesTo(e.coord).get.flatMap(e=>this.grid.tile.destsFrom(e.coord).get)));return this.lang.getNonConflictingChar(t.map(e=>e.langSeq).filter(e=>e))}get currentFreeHealth(){return Object(a.b)(this,u)}get freeHealthTiles(){return Object(a.b)(this,g)}dryRunSpawnFreeHealth(e){let t=this.averageFreeHealth-this.currentFreeHealth;if(t<=0)return;const r=[];for(;t>0;){let s;do{s=this.grid.tile.at(this.grid.getRandomCoord())}while(s.isOccupied||r.find(e=>i.a.equals(s.coord,e.coord)));const a=1;if(Math.random()i.a.equals(s.coord,e.coord)))?t.newFreeHealth=(t.newFreeHealth||0)+a:r.push({coord:s.coord,lastKnownUpdateId:1+s.lastKnownUpdateId,newCharSeqPair:void 0,newFreeHealth:s.freeHealth+a})}t-=a}return r}getHealthCostOfBoost(){return this.averageFreeHealthPerTile/o.a.K.PCT_MOVES_THAT_ARE_BOOST}executeTileModEvent(e,t=!0){Object.freeze(e);const r=this.grid.tile.at(e.coord);if(e.lastKnownUpdateId!==1+r.lastKnownUpdateId)throw"never";return Object(a.c)(this,u,Object(a.b)(this,u)+(e.newFreeHealth-r.freeHealth)),0===e.newFreeHealth?Object(a.b)(this,g).delete(r):Object(a.b)(this,g).add(r),super.executeTileModEvent(e,t),r}managerCheckGamePlayingRequest(e){if("PLAYING"!==this.status)return;const t=this.players[e.playerId];if(!t)throw Error("No such player exists.");if(e.playerLastAcceptedRequestId!==t.lastAcceptedRequestId)throw RangeError(e.playerLastAcceptedRequestId{"use strict";r.d(t,{U:()=>h});var s,i=r(406),o=r(951),n=r(655);!function(e){var t,r;class s{constructor(){this.children=[]}reset(){this.inheritingWeightedHitCount=0,this.children.forEach((e=>e.reset()))}_finalize(){Object.freeze(this.children),this.children.forEach((e=>e._finalize()))}_addCharMapping(e,t){if(!o.Uo.Seq.REGEXP.test(e))throw new RangeError(`Mapping-sequence "${e}" did not match the required regular expression "${o.Uo.Seq.REGEXP.source}".`);if(0===t.length)throw new RangeError("never");let r=this;{let t=this;for(;t;)r=t,t=t.children.find((t=>e.startsWith(t.sequence)))}if(r.sequence===e)throw new Error(`Mappings for all written-characters with a commoncorresponding typeable-sequence should be registered together,but an existing mapping for the sequence "${e}" was found.`);r.children.push(new i(r,e,t))}getLeafNodes(){const e=[];return this._recursiveGetLeafNodes(e),e}_recursiveGetLeafNodes(e){this.children.length?this.children.forEach((t=>{t._recursiveGetLeafNodes(e)})):e.push(this)}simpleView(){return this.children}static CREATE_TREE_MAP(e,t){const r=Object.values(e).reduce(((e,t)=>e+t.weight),0),i=0===t?e=>1:1===t?e=>e:e=>Math.pow(e/r,t),o=new Map;for(const t in e){const r=e[t].seq,s=new a(t,i(e[t].weight)),n=o.get(r);n?n.push(s):o.set(r,[s])}const n=new s;return Array.from(o).sort(((e,t)=>e[0].length-t[0].length)).forEach((e=>{n._addCharMapping(...e)})),n._finalize(),n}}s.LEAF_CMP=(e,t)=>e.inheritingWeightedHitCount-t.inheritingWeightedHitCount,e.ParentNode=s,Object.freeze(s),Object.freeze(s.prototype);class i extends s{constructor(e,s,i){super(),t.set(this,void 0),r.set(this,void 0),this.sequence=s,(0,n.YH)(this,r,i),(0,n.YH)(this,t,e)}_finalize(){Object.freeze((0,n.Q_)(this,r)),super._finalize()}reset(){super.reset(),(0,n.Q_)(this,r).forEach((e=>{e.reset(),this.incrementNumHits(e,Math.random()*o.Uo.CHAR_HIT_COUNT_SEED_CEILING)}))}chooseOnePair(){const e=(0,n.Q_)(this,r).slice(0).sort(a.CMP).shift(),t={char:e.char,seq:this.sequence};return this.incrementNumHits(e),t}incrementNumHits(e,t=1){e._incrementNumHits(),this._recursiveIncrementNumHits(e.weightInv*t)}_recursiveIncrementNumHits(e){this.inheritingWeightedHitCount+=e,this.children.forEach((t=>t._recursiveIncrementNumHits(e)))}get personalWeightedHitCount(){return this.inheritingWeightedHitCount-(0,n.Q_)(this,t).inheritingWeightedHitCount}andNonRootParents(){const e=[];for(let r=this;r instanceof i;r=(0,n.Q_)(r,t))e.push(r);return e}simpleView(){let e=(0,n.Q_)(this,r).map((e=>e.simpleView()));return Object.assign(Object.create(null),{seq:this.sequence,chars:1===e.length?e[0]:e,kids:this.children.map((e=>e.simpleView()))})}}t=new WeakMap,r=new WeakMap,i.PATH_CMP=(e,t)=>e.personalWeightedHitCount-t.personalWeightedHitCount,e.ChildNode=i,Object.freeze(i),Object.freeze(i.prototype)}(s||(s={})),Object.freeze(s);class a{constructor(e,t){if(t<=0)throw new RangeError(`All weights must be positive, but we were passed the value "${t}" for the character "${e}".`);this.char=e,this.weightInv=1/t}reset(){this.hitCount=0,this.weightedHitCount=0}_incrementNumHits(){this.hitCount+=1,this.weightedHitCount+=this.weightInv}simpleView(){return Object.assign(Object.create(null),{char:this.char,hits:this.hitCount})}}a.CMP=(e,t)=>e.weightedHitCount-t.weightedHitCount,Object.freeze(a),Object.freeze(a.prototype);class h extends o.Uo{constructor(e,t,r){if(super(),this.frontendDesc=h.GET_FRONTEND_DESC_BY_ID(e),this.treeMap=s.ParentNode.CREATE_TREE_MAP(t,r),this.leafNodes=this.treeMap.getLeafNodes(),i.R.propNoWrite(this,["frontendDesc","treeMap","leafNodes"]),this.leafNodes.length!==this.frontendDesc.numLeaves)throw new Error(`maintenance required: the frontend constant for the language "${this.frontendDesc.id}" needs to be updated to the correct, computed value, which is \`${this.leafNodes.length}\`.`)}get numLeaves(){return this.leafNodes.length}reset(){this.treeMap.reset()}getNonConflictingChar(e){this.leafNodes.sort(s.ParentNode.LEAF_CMP);let t=void 0;for(const r of this.leafNodes){const s=r.andNonRootParents();for(let t=0;te.startsWith(s[t].sequence)));if(r){r===s[t].sequence?s.length=0:s.splice(t);break}}if(s.length){t=s[0];for(const e of s)e.personalWeightedHitCount{"use strict";r.r(t),r.d(t,{OfflineGame:()=>_});var s=r(153),i=r(655),o=r(406),n=r(979),a=r(504),h=r(789),c=r(926);class l extends c.J5{constructor(e,t){if(super(e,t),"ONLINE"===e.gameType)throw new TypeError("OnlineGames should be using regular Players instead.")}_notifyGameNowPlaying(){this.delayedMovementContinue()}_notifyGameNowPaused(){this.game.cancelTimeout(this._scheduledMovementCallbackId),this._scheduledMovementCallbackId=void 0}_notifyGameNowOver(){this.game.cancelTimeout(this._scheduledMovementCallbackId),this._scheduledMovementCallbackId=void 0}movementContinue(){const e=this.computeDesiredDest();this._nextMovementTimerMultiplier=this.game.grid.tile.at(e).langSeq.length,this.makeMovementRequest(this.game.grid.getUntToward(e,this.coord),this.getNextMoveType()),this.delayedMovementContinue()}delayedMovementContinue(){this._scheduledMovementCallbackId=this.game.setTimeout(this.movementContinue.bind(this),this.computeNextMovementTimer()*this._nextMovementTimerMultiplier)}}!function(e){e.of=(t,r)=>{const s=r.familyId;return new e._Constructors[s](t,r)}}(l||(l={})),o.R.protoNoEnum(l,["movementContinue"]);var d=r(951);class u{constructor(e){const t=[];for(const r of e)t[r]=new u.Entry;this.entries=t,o.R.propNoWrite(this,["entries"])}reset(){for(const e of this.entries)e.reset()}}!function(e){class t{constructor(){this.moveCounts={}}reset(){this.totalHealthPickedUp=0,Object.getOwnPropertyNames(d.J5.MoveType).forEach((e=>{this.moveCounts[e]=0}))}}e.Entry=t,Object.freeze(t),Object.freeze(t.prototype)}(u||(u={})),Object.freeze(u),Object.freeze(u.prototype);var g,f,m,p,v=r(191),w=r(985),y=r(358),C=r(886);class E extends l{constructor(e,t){super(e,t),g.set(this,void 0),this.behaviour=Object.freeze(Object.assign({},E.Behaviour.DEFAULT,t.familyArgs)),this.grid=this.game.grid}_afterAllPlayersConstruction(){super._afterAllPlayersConstruction(),this.threatProximity=this.game.teams.filter((e=>e.id!==this.teamId)).flatMap((e=>e.members)),this.targetProximity=[...this.threatProximity],o.R.propNoWrite(this,["threatProximity","targetProximity","behaviour","grid"])}reset(e){super.reset(e),(0,i.YH)(this,g,this.coord)}moveTo(e){(0,i.YH)(this,g,this.coord),super.moveTo(e)}computeDesiredDest(){this.threatProximity.sort(((e,t)=>this.grid.minMovesFromTo(e.coord,this.coord)-this.grid.minMovesFromTo(t.coord,this.coord)));for(const e of this.threatProximity){if(this.grid.minMovesFromTo(e.coord,this.coord)>this.behaviour.fearDistance)break;if(!e.status.isDowned&&e.status.health>this.status.health)return this.grid.getUntAwayFrom(e.coord,this.coord).coord}if(this.targetProximity.sort(((e,t)=>this.grid.minMovesFromTo(this.coord,e.coord)-this.grid.minMovesFromTo(this.coord,t.coord))),this.status.isDowned)for(const e of this.targetProximity){if(this.grid.minMovesFromTo(this.coord,e.coord)>this.behaviour.bloodThirstDistance)break;if(e.status.healthe.playerId))),o.R.propNoWrite(this,["averageFreeHealth","averageFreeHealthPerTile","healthCostOfBoost","scoreInfo"]),(0,i.YH)(this,p,r(59)(`./${this.langFrontend.module}.ts`).then((e=>{const t=this.langFrontend.export.split(".").reduce(((e,t)=>e[t]),e[this.langFrontend.module]);this.lang=new t(s.langWeightExaggeration),o.R.propNoWrite(this,["lang"]);const r=this.grid.static.getAmbiguityThreshold();if(this.lang.numLeavessuper.reset}});return(0,i.mG)(this,void 0,void 0,(function*(){yield e.reset.call(this),(0,i.YH)(this,f,0),(0,i.Q_)(this,m).clear(),yield(0,i.Q_)(this,p),this.lang.reset(),this.grid.shuffledForEachTile((e=>{e.setLangCharSeqPair(this.dryRunShuffleLangCharSeqAt(e))})),this.teams.forEach((e=>e.reset()));const t=this.grid.static.getSpawnCoords(this.teams.map((e=>e.members.length)),this.grid.dimensions);return this.teams.forEach(((e,r)=>{e.members.forEach(((e,s)=>{e.reset(this.grid.tile.at(t[r][s]))}))})),this.scoreInfo.reset(),Promise.resolve()}))}_createArtifPlayer(e){return l.of(this,e)}dryRunShuffleLangCharSeqAt(e,t=!1){e.setLangCharSeqPair(n.U.CharSeqPair.NULL);let r=this.grid.getDestsFromSourcesTo(e.coord).map((e=>e.langSeq));if(t){const e=n.U.CharSeqPair.NULL.seq;r=r.filter((t=>t!==e))}return this.lang.getNonConflictingChar(r)}get currentFreeHealth(){return(0,i.Q_)(this,f)}get freeHealthTiles(){return(0,i.Q_)(this,m)}dryRunSpawnFreeHealth(e){var t;let r=this.averageFreeHealth-this.currentFreeHealth;if(r<=0)return;const s=[];for(;r>0;){let i;do{i=this.grid.tile.at(this.grid.getRandomCoord())}while(i.isOccupied||s.find((e=>h.u.equals(i.coord,e.coord))));const o=a.l.K.AVERAGE_HEALTH_TO_SPAWN_ON_TILE;if(Math.random()h.u.equals(i.coord,e.coord))))?r.newFreeHealth=(null!==(t=r.newFreeHealth)&&void 0!==t?t:0)+o:s.push({coord:i.coord,lastKnownUpdateId:1+i.lastKnownUpdateId,newCharSeqPair:void 0,newFreeHealth:i.freeHealth+o})}r-=o}return s}executeTileModEvent(e,t=!0){Object.freeze(e);const r=this.grid.tile.at(e.coord);if(e.lastKnownUpdateId!==1+r.lastKnownUpdateId)throw new RangeError("never");return(0,i.YH)(this,f,(0,i.Q_)(this,f)+(e.newFreeHealth-r.freeHealth)),0===e.newFreeHealth?(0,i.Q_)(this,m).delete(r):(0,i.Q_)(this,m).add(r),super.executeTileModEvent(e,t),r}managerCheckGamePlayingRequest(e){if("PLAYING"!==this.status)return;const t=this.players[e.playerId];if(!t)throw new Error("No such player exists.");if(e.playerLastAcceptedRequestId!==t.lastAcceptedRequestId)throw new RangeError(e.playerLastAcceptedRequestId{var s={"./Cellphone.ts":[56,313],"./Emote.ts":[981,858],"./English.ts":[215,184],"./Japanese.ts":[117,410],"./Korean.ts":[181,227],"./Morse.ts":[222,285]};function i(e){if(!r.o(s,e))return Promise.resolve().then((()=>{var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=s[e],i=t[0];return r.e(t[1]).then((()=>r(i)))}i.keys=()=>Object.keys(s),i.id=59,e.exports=i}}]); //# sourceMappingURL=offline.js.map \ No newline at end of file diff --git a/dist/client/chunk/game/offline.js.map b/dist/client/chunk/game/offline.js.map index 1a8f80d6..a86cd659 100644 --- a/dist/client/chunk/game/offline.js.map +++ b/dist/client/chunk/game/offline.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://snakey3/./src/base/lang/impl lazy ^\\.\\/.*\\.ts$ namespace object","webpack://snakey3/./src/base/game/ScoreInfo.ts","webpack://snakey3/./src/base/game/gameparts/GamepartManager.ts","webpack://snakey3/./src/client/game/OfflineGame.ts"],"names":["map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","keys","Object","module","exports","playerIds","entries","Entry","this","entry","reset","ScoreInfo","moveCounts","totalHealthPickedUp","getOwnPropertyNames","MoveType","forEach","key","freeze","prototype","GamepartEvents","gameType","impl","desc","super","averageFreeHealth","averageFreeHealthPerTile","grid","area","Set","langFrontend","langModule","LangConstructor","export","split","reduce","nsps","propName","lang","langWeightExaggeration","minLangLeaves","static","getAmbiguityThreshold","numLeaves","scoreInfo","players","player","playerId","clear","shuffledForEachTile","tile","setLangCharSeqPair","dryRunShuffleLangCharSeqAt","teams","team","spawnPoints","getSpawnCoords","members","length","dimensions","teamIndex","member","memberIndex","at","ArtificialPlayer","of","targetTile","Lang","CharSeqPair","NULL","avoid","Array","from","sourcesTo","coord","get","flatMap","sourceToTarget","destsFrom","getNonConflictingChar","langSeq","filter","seq","sameReqOtherModDescs","healthToSpawn","currentFreeHealth","retval","getRandomCoord","isOccupied","find","equals","tileHealthToAdd","Math","random","Game","K","HEALTH_UPDATE_CHANCE","otherDesc","newFreeHealth","push","lastKnownUpdateId","newCharSeqPair","undefined","freeHealth","PCT_MOVES_THAT_ARE_BOOST","doCheckOperatorSeqBuffer","delete","add","executeTileModEvent","status","playerLastAcceptedRequestId","lastAcceptedRequestId","RangeError","managerCheckGamePlayingRequest","executePlayerMoveEvent","dest","destModDesc","moveIsBoost","moveType","Player","BOOST","newPlayerHealthValue","health","isDowned","HEALTH_EFFECT_FOR_DOWNED_PLAYER","getHealthCostOfBoost","playerScoreInfo","newPlayerHealth","tileHealthModDescs","dryRunSpawnFreeHealth","eventId","nextUnusedEventId","sourceP","bubbler","executePlayerBubbleEvent","CHECK_VALID_CTOR_ARGS","args","fr","requiredFields","coordSys","gridDimensions","langId","playerDescs","missingFields","fieldName","field","GET_FRONTEND_DESC_BY_ID","NaN","parseInt","max","parseFloat","onGameBecomeOver","gameDesc","Type","OFFLINE","tileClass","playerStatusCtor","_ctorBrowserGame","callback","millis","setTimeout","handle","clearTimeout","BrowserGame"],"mappings":"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","file":"chunk/game/offline.js","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://snakey3/./src/base/lang/LangSeqTreeNode.ts","webpack://snakey3/./src/base/lang/Lang.ts","webpack://snakey3/./src/base/game/player/ArtificialPlayer.ts","webpack://snakey3/./src/base/game/ScoreInfo.ts","webpack://snakey3/./src/base/game/player/artificials/Chaser.ts","webpack://snakey3/./src/base/game/ctormaps/CmapManager.ts","webpack://snakey3/./src/base/game/gameparts/GamepartManager.ts","webpack://snakey3/./src/client/game/OfflineGame.ts","webpack://snakey3/./src/base/lang/impl|lazy|/^/.*/.ts$/|chunkName: lang/[request]|groupOptions: {}|namespace object"],"names":["LangSeqTree","ParentNode","this","children","inheritingWeightedHitCount","forEach","child","reset","Object","freeze","_finalize","seq","chars","RangeError","length","node","childNode","find","startsWith","sequence","Error","push","ChildNode","leafNodes","_recursiveGetLeafNodes","forwardDict","weightScaling","averageWeight","values","reduce","sum","next","weight","adjustedWeight","originalWeight","Math","pow","reverseDict","Map","char","weightedChar","WeightedLangChar","charArray","get","set","rootNode","Array","from","sort","mappingA","mappingB","mapping","_addCharMapping","LEAF_CMP","a","b","prototype","parent","characters","super","incrementNumHits","random","slice","CMP","shift","pair","wCharToHit","numTimes","_incrementNumHits","_recursiveIncrementNumHits","weightInv","upstreamNodes","map","simpleView","assign","create","kids","PATH_CMP","personalWeightedHitCount","hitCount","weightedHitCount","hits","Lang","frontendDescId","weightExaggeration","frontendDesc","GET_FRONTEND_DESC_BY_ID","treeMap","CREATE_TREE_MAP","getLeafNodes","JsUtils","numLeaves","id","avoid","nodeToHit","undefined","leaf","andNonRootParents","i","conflictSeq","avoidSeq","splice","chooseOnePair","displayName","root","ArtificialPlayer","Player","game","desc","gameType","TypeError","delayedMovementContinue","cancelTimeout","_scheduledMovementCallbackId","desiredDest","computeDesiredDest","_nextMovementTimerMultiplier","grid","tile","at","langSeq","makeMovementRequest","getUntToward","coord","getNextMoveType","setTimeout","movementContinue","bind","computeNextMovementTimer","of","playerDesc","familyId","_Constructors","ScoreInfo","playerIds","entries","Entry","entry","moveCounts","totalHealthPickedUp","getOwnPropertyNames","key","Chaser","behaviour","Behaviour","DEFAULT","familyArgs","_afterAllPlayersConstruction","threatProximity","teams","filter","team","teamId","flatMap","members","targetProximity","spawnTile","dest","moveTo","pa","pb","minMovesFromTo","threatP","fearDistance","status","isDowned","health","getUntAwayFrom","targetP","bloodThirstDistance","healthReserve","freeHealthTiles","size","wanderingAimlessness","getRandomCoordAround","awayFunc","closestFht","closestFhtDistance","Infinity","fht","distance","keyPressesPerSecond","Grid","Euclid2","Beehive","AP","CHASER","GamepartManager","GamepartEvents","impl","averageFreeHealth","averageFreeHealthPerTile","area","healthCostOfBoost","Game","static","getDiameterOfLatticePatchHavingArea","Set","scoreInfo","players","player","playerId","langFrontend","module","then","langModule","LangConstructor","export","split","nsps","propName","lang","langWeightExaggeration","minLangLeaves","getAmbiguityThreshold","clear","shuffledForEachTile","setLangCharSeqPair","dryRunShuffleLangCharSeqAt","spawnPoints","getSpawnCoords","dimensions","teamIndex","member","memberIndex","Promise","resolve","targetTile","doCheckEmptyTiles","getDestsFromSourcesTo","nullSeq","getNonConflictingChar","sameReqOtherModDescs","healthToSpawn","currentFreeHealth","retval","getRandomCoord","isOccupied","tileHealthToAdd","otherDesc","newFreeHealth","lastKnownUpdateId","newCharSeqPair","freeHealth","doCheckOperatorSeqBuffer","delete","add","executeTileModEvent","playerLastAcceptedRequestId","lastAcceptedRequestId","managerCheckGamePlayingRequest","executePlayerMoveEvent","destModDesc","moveIsBoost","moveType","newPlayerHealthValue","playerScoreInfo","newPlayerHealth","tileHealthModDescs","dryRunSpawnFreeHealth","eventId","nextUnusedEventId","sourceP","bubbler","executePlayerBubbleEvent","CHECK_VALID_CTOR_ARGS","args","fr","requiredFields","coordSys","gridDimensions","langId","playerDescs","missingFields","fieldName","field","NaN","parseInt","max","parseFloat","OfflineGame","onGameBecomeOver","gameDesc","tileClass","playerStatusCtor","_ctorBrowserGame","callback","millis","handle","clearTimeout","BrowserGame","webpackAsyncContext","req","__webpack_require__","o","e","code","ids","keys","exports"],"mappings":"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","file":"chunk/game/offline.js","sourceRoot":""} \ No newline at end of file diff --git a/dist/client/chunk/game/offline~game/online.css b/dist/client/chunk/game/offline~game/online.css deleted file mode 100644 index 9da15c17..00000000 --- a/dist/client/chunk/game/offline~game/online.css +++ /dev/null @@ -1 +0,0 @@ -.game-grid-impl-body{z-index:0}.player__face[data-face=me]{z-index:21}.player__spotlight-long{z-index:20}.tile__seq{z-index:13}.player__downed-overlay{z-index:12}.player__face,.tile[data-health] .tile__char{z-index:11}.player__spotlight-short{z-index:10}.game-grid-kbd-dc{z-index:1}.game-grid-pause-overlay{z-index:2}.game-grid{contain:content;height:100%;display:grid;align-content:center}.game-grid,.game-grid-scroll-outer{position:relative}.grid-player-intersection-root{position:fixed;z-index:100;pointer-events:none;padding:20%}.game-grid-scroll-outer{contain:style;overflow:auto auto;scroll-snap-type:both;scrollbar-width:none;box-sizing:border-box;border:5px double var(--colour-tileBd);border-radius:15px}.game-grid-scroll-outer::-webkit-scrollbar{width:0;height:0}.game-grid-impl-body{contain:content;position:static;color:var(--colour-tileFg);height:fit-content;width:fit-content;padding:.4em}.game-grid-kbd-dc,.game-grid-pause-overlay{cursor:pointer;position:fixed;border-radius:inherit;color:#fff;text-shadow:0 .01em .5em #000;visibility:hidden}.game-grid-kbd-dc{background-color:rgba(0,0,0,.13)}.game-grid-pause-overlay{background-color:rgba(0,0,0,.25)}@media screen{.game-grid:focus{outline:none}.game-grid:not([data-game-state=paused]):not(:focus) .game-grid-kbd-dc,.game-grid[data-game-state=paused] .game-grid-pause-overlay{visibility:visible}}.tile{pointer-events:none;contain:size style}.tile *{height:100%;width:100%}.tile__pointer-hitbox{pointer-events:auto;contain:strict;top:40%;left:40%}.player__face,.tile__char,.tile__seq{box-sizing:border-box;border:.14em solid transparent;border-radius:.35em}.tile__char{contain:strict;background-color:var(--colour-tileBg);overflow:hidden hidden;display:grid;align-items:center}.tile__char>*{height:auto}.tile[data-health] .tile__char{border-color:var(--colour-tileBd);color:var(--colour-healthFg);background-color:var(--colour-healthBg);transition-property:color,background-color;transition-duration:.5s;transition-timing-function:ease-in}.tile__seq{contain:content;padding:0 .4ch;min-height:100%;height:max-content;min-width:100%;width:max-content;color:#fff;background-color:rgba(0,0,0,.5);border-color:#fff;font-family:inherit}.tile__pointer-hitbox:hover~.player>.player__face,.tile__seq{visibility:hidden}.tile__pointer-hitbox:hover~.tile__char{color:transparent}.tile__pointer-hitbox:hover~.tile__seq{visibility:visible}.player{--colour-spotlight:var(--colour-mainBg);contain:size}.player__face{border-color:var(--colour-tileBd);contain:strict;transition:background-color .7s ease-in-out}.player[data-face=me]>.player__face,.player__spotlight-long,.player__spotlight-short{will-change:transform}.player__downed-overlay{background-color:red;opacity:.2}.player[data-downed=no] .player__downed-overlay{visibility:hidden}@keyframes anim-frames-player__on-move{0%{transform:scale(1.1)}37%{transform:scale(1.3)}}.player__spotlight-short{background-image:radial-gradient(farthest-side,transparent 21%,46%,var(--colour-spotlight));padding:1400%;border:100vmax solid var(--colour-spotlight)}.player__spotlight-long{background-image:radial-gradient(farthest-side,transparent 15%,var(--colour-spotlight));padding:1700%;border:100vmax solid var(--colour-spotlight);opacity:.92}@media print{.player__spotlight-long,.player__spotlight-short{visibility:hidden}}.player[data-face=me]>.player__face{background-color:var(--colour-pFaceMe)}.player[data-face=meOppo]>.player__face{background-color:var(--colour-pFaceMeOppo)}.player[data-face=teammate]>.player__face{background-color:var(--colour-pFaceTeammate)}.player[data-face=opponent]>.player__face{background-color:var(--colour-pFaceOpponent)}.player[data-face=teammate][data-downed=team]>.player__face{background-color:var(--colour-pFaceImtlTeammate)}.player[data-face=opponent][data-downed=team]>.player__face{background-color:var(--colour-pFaceImtlOpponent)}.game-grid-impl-body[data-coord-sys=EUCLID2]{--track-size:minmax(1.67em,1fr);display:grid;grid-template-columns:repeat(var(--euclid2-grid-width),var(--track-size));grid-auto-rows:var(--track-size)}.game-grid-impl-body[data-coord-sys=EUCLID2] .tile{margin:5%;scroll-snap-align:center} \ No newline at end of file diff --git a/dist/client/chunk/game/offline~game/online.js b/dist/client/chunk/game/offline~game/online.js deleted file mode 100644 index 08411fe2..00000000 --- a/dist/client/chunk/game/offline~game/online.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonpsnakey3=window.webpackJsonpsnakey3||[]).push([[0],[,,,,,,,,function(e,t,s){"use strict";s.d(t,"b",(function(){return c.a})),s.d(t,"a",(function(){return l}));var r,i=s(10),a=s(0),o=s(1),n=s(16);class h extends o.b{constructor(e,t){if(super(),r.set(this,void 0),Math.trunc(t.playerId)!==t.playerId)throw RangeError("Player ID's must be integer values.");this.playerId=t.playerId,this.isALocalOperator=t.isALocalOperator,this.game=e,this.status=new this.game._playerStatusCtor(this,t.noCheckGameOver),this.tile=new n.a(new h.TileGetterSource(this))}_afterAllPlayersConstruction(){this.status._afterAllPlayersConstruction()}reset(e){Object(a.c)(this,r,e),this.hostTile._setOccupant(this.playerId,this.status.immigrantInfo)}get coord(){return this.hostTile.coord}get hostTile(){return Object(a.b)(this,r)}moveTo(e){if(this.hostTile.occupantId!==this.playerId){if("ONLINE"!==this.game.gameType)throw Error("Linkage between player and occupied tile disagrees.")}else this.hostTile.evictOccupant();if(e.isOccupied){if("ONLINE"!==this.game.gameType)throw Error("Only one player can occupy a tile at a time.")}else Object(a.c)(this,r,e),e._setOccupant(this.playerId,this.status.immigrantInfo)}}r=new WeakMap,function(e){var t,s;class r{constructor(e){t.set(this,void 0),s.set(this,void 0),Object(a.c)(this,t,e),Object(a.c)(this,s,e.game.grid.tile._source)}_getTileAt(){return Object(a.b)(this,s)._getTileAt(Object(a.b)(this,t).coord)}_getTileDestsFrom(){return Object(a.b)(this,s)._getTileDestsFrom(Object(a.b)(this,t).coord)}_getTileSourcesTo(){return Object(a.b)(this,s)._getTileSourcesTo(Object(a.b)(this,t).coord)}}t=new WeakMap,s=new WeakMap,e.TileGetterSource=r,Object.freeze(r),Object.freeze(r.prototype)}(h||(h={})),Object.freeze(h),Object.freeze(h.prototype);s(11);var c=s(12);class l extends h{constructor(e,t){var s;super(e,t),this.familyId=t.familyId,this.teamId=t.teamId,this.username=t.username,this.avatar=null!==(s=t.avatar)&&void 0!==s?s:l.Avatar.GET_RANDOM()}reset(e){super.reset(e),this.status.reset(),this.lastAcceptedRequestId=i.a.INITIAL_REQUEST_ID,this.requestInFlight=!1}_notifyGameNowPlaying(){}_notifyGameNowPaused(){}_notifyGameNowOver(){}makeMovementRequest(e,t){if("PLAYING"!==this.game.status)throw Error("This is not a necessary precondition, but we're doing it anyway.");if(this.requestInFlight)throw Error("Only one request should ever be in flight at a time.");this.requestInFlight=!0,this.game.processMoveRequest(new i.a.Movement(this.playerId,this.lastAcceptedRequestId,e,t))}get team(){return this.game.teams[this.teamId]}isTeamedWith(e){return this.team.members.includes(e)}}!function(e){let t;!function(e){e.finalize=function(e){const t=Array.from(new Set(e.map(e=>e.teamId))).sort((e,t)=>e-t).reduce((e,t,s)=>(e[t]=s,e),[]);return e.slice().sort((e,s)=>t[e.teamId]-t[s.teamId]).map((e,s)=>Object.assign({},e,{playerId:s,teamId:t[e.teamId]}))}}(t=e.CtorArgs||(e.CtorArgs={})),Object.freeze(t)}(l||(l={})),Object.freeze(l),Object.freeze(l.prototype)},function(e,t,s){"use strict";s.d(t,"a",(function(){return n}));var r,i=s(1),a=s(0);!function(e){var t,s;class r{constructor(){this.children=[]}reset(){this.inheritingWeightedHitCount=0,this.children.forEach(e=>e.reset())}_finalize(){Object.freeze(this.children),this.children.forEach(e=>e._finalize())}_addCharMapping(e,t){if(!i.a.Seq.REGEXP.test(e))throw RangeError(`Mapping-sequence "${e}" did not match the required regular expression "${i.a.Seq.REGEXP.source}".`);if(0===t.length)throw"never";let s=this;{let t=this;for(;t;)s=t,t=t.children.find(t=>e.startsWith(t.sequence))}if(s.sequence===e)throw Error(`Mappings for all written-characters with a commoncorresponding typeable-sequence should be registered together,but an existing mapping for the sequence "${e}" was found.`);s.children.push(new n(s,e,t))}getLeafNodes(){const e=[];return this._recursiveGetLeafNodes(e),e}_recursiveGetLeafNodes(e){this.children.length?this.children.forEach(t=>{t._recursiveGetLeafNodes(e)}):e.push(this)}simpleView(){return this.children}static CREATE_TREE_MAP(e,t){const s=Object.values(e).reduce((e,t)=>e+t.weight,0),i=0===t?e=>1:1===t?e=>e:e=>Math.pow(e/s,t),a=new Map;for(const t in e){const s=e[t].seq,r=new o(t,i(e[t].weight)),n=a.get(s);n?n.push(r):a.set(s,[r])}const n=new r;return Array.from(a).sort((e,t)=>e[0].length-t[0].length).forEach(e=>{n._addCharMapping(...e)}),n._finalize(),n}}r.LEAF_CMP=(e,t)=>e.inheritingWeightedHitCount-t.inheritingWeightedHitCount,e.ParentNode=r,Object.freeze(r),Object.freeze(r.prototype);class n extends r{constructor(e,r,i){super(),t.set(this,void 0),s.set(this,void 0),this.sequence=r,Object(a.c)(this,s,i),Object(a.c)(this,t,e)}_finalize(){Object.freeze(Object(a.b)(this,s)),super._finalize()}reset(){super.reset(),Object(a.b)(this,s).forEach(e=>{e.reset(),this.incrementNumHits(e,Math.random()*i.a.CHAR_HIT_COUNT_SEED_CEILING)})}chooseOnePair(){const e=Object(a.b)(this,s).slice(0).sort(o.CMP).shift(),t={char:e.char,seq:this.sequence};return this.incrementNumHits(e),t}incrementNumHits(e,t=1){e._incrementNumHits(),this._recursiveIncrementNumHits(e.weightInv*t)}_recursiveIncrementNumHits(e){this.inheritingWeightedHitCount+=e,this.children.forEach(t=>t._recursiveIncrementNumHits(e))}get personalWeightedHitCount(){return this.inheritingWeightedHitCount-Object(a.b)(this,t).inheritingWeightedHitCount}andNonRootParents(){const e=[];for(let s=this;s instanceof n;s=Object(a.b)(s,t))e.push(s);return e}simpleView(){let e=Object(a.b)(this,s).map(e=>e.simpleView());return Object.assign(Object.create(null),{seq:this.sequence,chars:1===e.length?e[0]:e,kids:this.children.map(e=>e.simpleView())})}}t=new WeakMap,s=new WeakMap,n.PATH_CMP=(e,t)=>e.personalWeightedHitCount-t.personalWeightedHitCount,e.ChildNode=n,Object.freeze(n),Object.freeze(n.prototype)}(r||(r={})),Object.freeze(r);class o{constructor(e,t){if(t<=0)throw RangeError(`All weights must be positive, but we were passed the value "${t}" for the character "${e}".`);this.char=e,this.weightInv=1/t}reset(){this.hitCount=0,this.weightedHitCount=0}_incrementNumHits(){this.hitCount+=1,this.weightedHitCount+=this.weightInv}simpleView(){return Object.assign(Object.create(null),{char:this.char,hits:this.hitCount})}}o.CMP=(e,t)=>e.weightedHitCount-t.weightedHitCount,Object.freeze(o),Object.freeze(o.prototype);class n extends i.a{constructor(e,t,s){if(super(),this.frontendDesc=n.GET_FRONTEND_DESC_BY_ID(e),this.treeMap=r.ParentNode.CREATE_TREE_MAP(t,s),this.leafNodes=this.treeMap.getLeafNodes(),this.leafNodes.length!==this.frontendDesc.numLeaves)throw Error(`maintenance required: the frontend constant for the language "${this.frontendDesc.id}" needs to be updated to the correct, computed value, which is \`${this.leafNodes.length}\`.`)}get numLeaves(){return this.leafNodes.length}reset(){this.treeMap.reset()}getNonConflictingChar(e){this.leafNodes.sort(r.ParentNode.LEAF_CMP);let t=void 0;for(const s of this.leafNodes){const r=s.andNonRootParents();for(let t=0;te.startsWith(r[t].sequence));if(s){s===r[t].sequence?r.length=0:r.splice(t);break}}if(r.length){t=r[0];for(const e of r)e.personalWeightedHitCounte.status.noCheckGameOver||e.status.isDowned)){const e=1+o.filter(e=>e.elimOrder!==a.a.ElimOrder.STANDING).length;s.elimOrder=1+o.filter(e=>e.elimOrder!==a.a.ElimOrder.STANDING&&e.elimOrder!==a.a.ElimOrder.IMMORTAL).length,e===o.length&&this.player.game.statusBecomeOver()}}get isDowned(){return this.health<0}}r=new WeakMap,Object.freeze(o),Object.freeze(o.prototype)},function(e,t,s){"use strict";s.d(t,"a",(function(){return a}));var r,i=s(0);class a{constructor(e,t){if(r.set(this,void 0),0===t.length)throw Error("Teams must have at least one member.");this.id=e,this.members=t,Object(i.c)(this,r,this.members.every(e=>e.status.noCheckGameOver)?a.ElimOrder.IMMORTAL:a.ElimOrder.STANDING)}reset(){this.elimOrder!==a.ElimOrder.IMMORTAL&&(this.elimOrder=a.ElimOrder.STANDING)}get elimOrder(){return Object(i.b)(this,r)}set elimOrder(e){if(this.elimOrder===a.ElimOrder.IMMORTAL)throw Error("Cannot change the elimination status of an immortal team.");Object(i.c)(this,r,e)}}r=new WeakMap,function(e){let t;!function(e){e.IMMORTAL=-1,e.STANDING=0}(t=e.ElimOrder||(e.ElimOrder={}))}(a||(a={})),Object.freeze(a),Object.freeze(a.prototype)},function(e,t,s){"use strict";s.d(t,"a",(function(){return i}));var r=s(8);s.d(t,"b",(function(){return r.a}));class i extends r.a{constructor(e,t){if(super(e,t),"ONLINE"===e.gameType)throw TypeError("OnlineGames should be using regular Players instead.")}_notifyGameNowPlaying(){this.delayedMovementContinue()}_notifyGameNowPaused(){this.game.cancelTimeout(this._scheduledMovementCallbackId),this._scheduledMovementCallbackId=void 0}_notifyGameNowOver(){this.game.cancelTimeout(this._scheduledMovementCallbackId),this._scheduledMovementCallbackId=void 0}movementContinue(){const e=this.computeDesiredDest();this._nextMovementTimerMultiplier=this.game.grid.tile.at(e).langSeq.length,this.makeMovementRequest(this.game.grid.getUntToward(e,this.coord),this.getNextMoveType()),this.delayedMovementContinue()}delayedMovementContinue(){this._scheduledMovementCallbackId=this.game.setTimeout(this.movementContinue.bind(this),this.computeNextMovementTimer()*this._nextMovementTimerMultiplier)}}!function(e){e.of=(t,s)=>{const r=s.familyId;return new e._Constructors[r](t,s)}}(i||(i={}))},function(e,t,s){},function(e,t,s){"use strict";var r;s.d(t,"a",(function(){return r})),function(e){e.EVENT_ID_REJECT=-1}(r||(r={})),Object.freeze(r)},function(e,t,s){"use strict";s.d(t,"a",(function(){return a}));var r,i=s(0);class a{constructor(e){r.set(this,void 0),Object(i.c)(this,r,e),Object.freeze(this)}get _source(){return Object(i.b)(this,r)}at(...e){return Object(i.b)(this,r)._getTileAt(...e)}destsFrom(...e){return new o(Object(i.b)(this,r)._getTileDestsFrom(...e))}sourcesTo(...e){return new o(Object(i.b)(this,r)._getTileSourcesTo(...e))}}r=new WeakMap,Object.freeze(a),Object.freeze(a.prototype);class o{constructor(e){this.contents=e}get occupied(){return this.contents=this.contents.filter(e=>e.isOccupied),this}get unoccupied(){return this.contents=this.contents.filter(e=>!e.isOccupied),this}get get(){return this.contents}}Object.freeze(o),Object.freeze(o.prototype)},function(e,t,s){"use strict";s.d(t,"b",(function(){return a.a})),s.d(t,"e",(function(){return c})),s.d(t,"c",(function(){return m.a})),s.d(t,"f",(function(){return O.d})),s.d(t,"d",(function(){return E})),s.d(t,"a",(function(){return N}));var r,i,a=s(3),o=s(0),n=s(2),h=s(4);class c extends h.b{constructor(e){super(e),r.set(this,void 0);{const e=Object(o.c)(this,r,document.createElement("div"));e.setAttribute("aria-label","Tile"),e.classList.add(n.a.General.Class.CENTER_CONTENTS,n.a.General.Class.STACK_CONTENTS,n.a.Tile.Class.BASE)}{const e=document.createElement("div");e.setAttribute("aria-hidden","true"),e.classList.add(n.a.Tile.Class.POINTER_HB),Object(o.b)(this,r).appendChild(e)}{const e=document.createElement("div");e.setAttribute("role","presentation"),e.classList.add(n.a.Tile.Class.LANG_CHAR_WRAP);const t=this.langCharElem=document.createElement("div");e.appendChild(t),Object(o.b)(this,r).appendChild(e)}{const e=this.langSeqElem=document.createElement("div");e.setAttribute("role","tooltip"),e.classList.add(n.a.Tile.Class.LANG_SEQ),Object(o.b)(this,r).appendChild(e)}}_addToDom(e){e.appendChild(Object(o.b)(this,r))}_setOccupant(e,t){super._setOccupant(e,t),this.langCharElem.parentElement.insertAdjacentElement("beforebegin",t.playerElem),this.langSeqElem.textContent=t.username}evictOccupant(){super.evictOccupant(),this.langSeqElem.textContent=this.langSeq}set freeHealth(e){super.freeHealth=e,this.freeHealth>0?Object(o.b)(this,r).dataset[n.a.Tile.Dataset.HEALTH]=this.freeHealth.toString():delete Object(o.b)(this,r).dataset[n.a.Tile.Dataset.HEALTH]}get freeHealth(){return super.freeHealth}setLangCharSeqPair(e){super.setLangCharSeqPair(e),this.langCharElem.textContent=this.langChar,this.langSeqElem.textContent=this.langSeq}}r=new WeakMap,Object.freeze(c),Object.freeze(c.prototype),function(e){e.getImplementation=t=>e._Constructors[t]}(i||(i={}));class l{_superVisibleGrid(e,t){const s=n.a.Grid;t.setAttribute("role","presentation"),t.classList.add(s.Class.IMPL_BODY),t.dataset[s.Dataset.IMPL_COORD_SYS]=e.coordSys,this.baseElem=t;const r=document.createElement("div");r.classList.add(n.a.Player.Class.SHORT_SPOTLIGHT);const i=document.createElement("div");i.classList.add(n.a.Player.Class.LONG_SPOTLIGHT),this.spotlightElems=Object.freeze([r,i])}}Object.freeze(l),Object.freeze(l.prototype);var d,u,m=s(8),f=s(9);class p extends m.a{constructor(e,t){super(e,t),d.set(this,void 0),u.set(this,void 0),Object(o.c)(this,u,this.game.langFrontend.remapFunc)}reset(e){super.reset(e),this.prevCoord=e.coord,Object(o.c)(this,d,"")}processKeyboardInput(e){"PLAYING"===this.game.status&&(this.requestInFlight||(" "===e.key?h.a.equals(this.coord,this.prevCoord)||this.makeMovementRequest(this.game.grid.getUntAwayFrom(this.prevCoord,this.coord),m.a.MoveType.BOOST):1!==e.key.length||e.repeat||this.seqBufferAcceptKey(e.key)))}seqBufferAcceptKey(e){const t=this.tile.destsFrom().unoccupied.get;if(0!==t.length)if(e){if(e=Object(o.b)(this,u).call(this,e),f.a.Seq.REGEXP.test(e)){for(let s=this.seqBuffer+e;s.length;s=s.substring(1)){const e=t.find(e=>e.langSeq.startsWith(s));if(e)return Object(o.c)(this,d,s),void(e.langSeq===s&&this.makeMovementRequest(e,m.a.MoveType.NORMAL))}Object(o.c)(this,d,""),this.status.visualBell()}}else{t.find(e=>e.langSeq.startsWith(this.seqBuffer))||Object(o.c)(this,d,"")}}moveTo(e){Object(o.c)(this,d,""),this.prevCoord=this.coord,super.moveTo(e)}_notifyWillBecomeCurrent(){this.status._notifyWillBecomeCurrent(this.game.grid.spotlightElems)}get seqBuffer(){return Object(o.b)(this,d)}}d=new WeakMap,u=new WeakMap,Object.freeze(p),Object.freeze(p.prototype);var b,g,O=s(1),y=s(11);class E extends y.a{constructor(e,t){super(e,t),b.set(this,void 0),g.set(this,void 0);Object(o.c)(this,b,document.createElement("div")).classList.add(n.a.General.Class.CENTER_CONTENTS,n.a.General.Class.STACK_CONTENTS,n.a.Player.Class.BASE);{const e=document.createElement("div");e.classList.add(n.a.Player.Class.FACE);Object(o.c)(this,g,this.player.isALocalOperator?[e.animate({filter:["brightness(0.7)","brightness(1.0)"]},{duration:300,easing:"ease-in",delay:1}),e.animate({transform:E.makeWiggleAnimation(10,2)},{duration:270,easing:"ease-out",delay:1})]:[]).forEach(e=>e.pause());{const t=document.createElement("div");t.classList.add(n.a.Player.Class.DOWNED_OVERLAY),e.appendChild(t)}Object(o.b)(this,b).appendChild(e)}}_afterAllPlayersConstruction(){this._immigrantInfoCache=Object.freeze({playerElem:Object(o.b)(this,b),username:this.player.username})}reset(){super.reset();const e=n.a.Player.Dataset.DOWNED;Object(o.b)(this,b).dataset[e.KEY]=e.VALUES.NO}get immigrantInfo(){return this._immigrantInfoCache}_notifyWillBecomeCurrent(e){const t=this.player.game.currentOperator,s=this.player;requestAnimationFrame(t=>{e.forEach(e=>{Object(o.b)(this,b).appendChild(e)}),s.status.immigrantInfo.playerElem.scrollIntoView(O.c)}),s.teamId!==(null==t?void 0:t.teamId)&&s.game.players.forEach(e=>{const t=e.teamId===s.teamId;Object(o.b)(e.status,b).dataset[n.a.Player.Dataset.FACE_SWATCH]=e.isALocalOperator?t?"me":"meOppo":t?"teammate":"opponent"})}visualBell(){Object(o.b)(this,g),window.requestAnimationFrame(e=>{Object(o.b)(this,g).forEach(e=>e.play())})}get health(){return super.health}set health(e){const t=this.isDowned;if(super.health=e,t!==this.isDowned){const e=n.a.Player.Dataset.DOWNED;Object(o.b)(this,b).dataset[e.KEY]=this.isDowned?this.player.team.elimOrder?e.VALUES.TEAM:e.VALUES.SELF:e.VALUES.NO}}}b=new WeakMap,g=new WeakMap,function(e){var t,s,r;e.makeWiggleAnimation=function(e,t){const s=Array(2*t).fill(e);return s.unshift(0),s.push(0),s.map((e,t)=>`translate(${t%2?e:-e}%)`)};t=new WeakMap,s=new WeakMap,r=new WeakMap,e.Card=class{constructor(e){t.set(this,void 0),s.set(this,void 0),r.set(this,void 0),this.baseElem=document.createElement("div"),this.baseElem.setAttribute("label","Player"),Object(o.c)(this,t,document.createElement("div"));const i=Object(o.b)(this,t);i.textContent=e,this.baseElem.appendChild(i)}}}(E||(E={})),Object.freeze(E),Object.freeze(E.prototype);var v,T,j,w=s(16);class C{constructor(e){this.static=e.gridClass,this.dimensions=e.dimensions,this.tile=new w.a(this)}get area(){return this.static.getArea(this.dimensions)}reset(){this.forEachTile(e=>e.reset())}getRandomCoord(){return this.static.getRandomCoord(this.dimensions)}}(v=C||(C={})).getImplementation=e=>v._Constructors[e],function(e){class t{constructor(e){this.x=e.x,this.y=e.y,Object.freeze(this)}_equals(e){return this.x===e.x&&this.y===e.y}round(){return new t({x:Math.round(this.x),y:Math.round(this.y)})}oneNorm(e){return this.sub(e).originOneNorm()}originOneNorm(){return Math.abs(this.x)+Math.abs(this.y)}infNorm(e){return this.sub(e).originInfNorm()}originInfNorm(){return Math.max(Math.abs(this.x),Math.abs(this.y))}axialAlignment(e){return this.sub(e).originAxialAlignment()}originAxialAlignment(){return Math.abs(Math.abs(this.x)-Math.abs(this.y))/(Math.abs(this.x)+Math.abs(this.y))}add(e){return new t({x:this.x+e.x,y:this.y+e.y})}sub(e){return new t({x:this.x-e.x,y:this.y-e.y})}mul(e){return new t({x:e*this.x,y:e*this.y})}}e.Coord=t,Object.freeze(t),Object.freeze(t.prototype);class s extends C{constructor(e){super(e);const s=[];for(let r=0;rMath.random()-.5).forEach(t=>e(t))}getUntToward(e,t){const s=this.tile.destsFrom(t).unoccupied.get;if(0===s.length)return this.tile.at(t);if(1===s.length)return s[0];s.sort((t,s)=>t.coord.oneNorm(e)-s.coord.oneNorm(e)).sort((t,s)=>t.coord.infNorm(e)-s.coord.infNorm(e));for(let t=1;ts[0].coord.infNorm(e)){s.splice(t);break}if(1===s.length)return s[0];if(s[0].coord.x-t.x==0||s[0].coord.y-t.y==0){if(t.axialAlignment(t.sub(e))-.5>0)return s[0];s.shift()}return s[Math.floor(s.length*Math.random())]}getUntAwayFrom(e,t){return this.getUntToward(t.add(t.sub(e)),t)}getRandomCoordAround(e,s){return new t({x:e.x+Math.trunc(2*s*(Math.random()-.5)),y:e.y+Math.trunc(2*s*(Math.random()-.5))})}_getTileAt(e){return this.grid[e.y][e.x]}_getTileDestsFrom(e,t=1){let s=e.y-t,r=e.y+t+1,i=e.x-t,a=e.x+t+1;return s>=this.dimensions.height||r<0||i>=this.dimensions.width||a<0?[]:this.grid.slice(Math.max(0,s),Math.min(this.dimensions.height,r)).flatMap(e=>e.slice(Math.max(0,i),Math.min(this.dimensions.width,a)))}_getTileSourcesTo(e,t=1){return this._getTileDestsFrom(e,t)}minMovesFromTo(e,t){return Math.min(Math.abs(t.x-e.x),Math.abs(t.y-e.y))}static getSpawnCoords(e,t){const r=[];return e.map(e=>{const i=[];for(;e>0;){let a;do{a=s.getRandomCoord(t)}while(r.find(e=>a._equals(e)));i.push(a),r.push(a),e--}return i})}static getArea(e){return e.height*e.width}static getRandomCoord(e){const s=Math.floor(e.width*Math.random()),r=Math.floor(e.height*Math.random());return new t({x:s,y:r})}}s.SIZE_LIMITS=Object.freeze({height:Object.freeze({min:11,max:51}),width:Object.freeze({min:11,max:51})}),e.Grid=s,function(e){class t extends e{constructor(e){super(e);const t=document.createElement("div");t.style.setProperty("--euclid2-grid-width",this.dimensions.width.toString());for(const e of this.grid)for(const s of e)s._addToDom(t);this._superVisibleGrid(e,t)}}e.Visible=t,Object(O.d)(t,[l]),Object.freeze(t),Object.freeze(t.prototype)}(s=e.Grid||(e.Grid={})),Object.freeze(s),Object.freeze(s.prototype)}(T||(T={})),Object.freeze(T),function(e){class t{constructor(e){this.dash=e.dash,this.bash=e.bash,Object.freeze(this)}_equals(e){return this.dash===e.dash&&this.bash===e.bash}round(){const e=Math.floor(this.dash),s=Math.floor(this.bash),r=e-this.dash,i=s-this.bash;return r>2*i?new t({dash:e+1,bash:s}):r<.5*i?new t({dash:e,bash:s+1}):Math.min(r,i)>.5?new t({dash:e+1,bash:s+1}):new t({dash:e,bash:s})}add(e){return new t({dash:this.dash+e.dash,bash:this.bash+e.bash})}sub(e){return new t({dash:this.dash-e.dash,bash:this.bash-e.bash})}mul(e){return new t({dash:e*this.dash,bash:e*this.bash})}}e.Coord=t,Object.freeze(t),Object.freeze(t.prototype);class s extends C{constructor(e){super(e);this.grid=Object.freeze(void 0)}static getAmbiguityThreshold(){return 18}static getSizeLimits(){return this.SIZE_LIMITS}forEachTile(e){let t=0;for(const s of this.grid)for(const r of s)e(r,t++)}shuffledForEachTile(e){this.grid.flat().sort((e,t)=>Math.random()-.5).forEach(t=>e(t))}getUntToward(e,t){}getUntAwayFrom(e,t){return this.getUntToward(t.add(t.sub(e)),t)}getRandomCoordAround(e,t){}_getTileAt(e){}_getTileDestsFrom(e){}_getTileSourcesTo(e){}minMovesFromTo(e,t){}static getSpawnCoords(e,t){}static getArea(e){const t=Math.min(e.fslash,e.bslash),s=Math.max(e.fslash,e.bslash),r=-1+e.dash+t;let i=2*t*(e.dash+r);return i+=(s-t-1)*r,i}static getRandomCoord(e){return new t(void 0)}}s.SIZE_LIMITS=Object.freeze({dash:Object.freeze({min:10,max:50}),bslash:Object.freeze({min:10,max:50}),fslash:Object.freeze({min:10,max:50})}),e.Grid=s,function(e){class t extends e{constructor(e){super(e);this._superVisibleGrid(e,void 0)}}e.Visible=t,Object(O.d)(t,[l]),Object.freeze(t),Object.freeze(t.prototype)}(s=e.Grid||(e.Grid={})),Object.freeze(s),Object.freeze(s.prototype)}(j||(j={})),Object.freeze(j);var _,I,M=s(13);class A extends M.a{constructor(e,t){super(e,t),_.set(this,void 0),this.behaviour=Object.freeze(Object.assign(Object.create(null),A.Behaviour.DEFAULT,t.familyArgs)),this.grid=this.game.grid}_afterAllPlayersConstruction(){super._afterAllPlayersConstruction(),this.threatProximity=this.game.teams.filter(e=>e.id!==this.teamId).flatMap(e=>e.members),this.targetProximity=this.threatProximity.slice()}reset(e){super.reset(e),Object(o.c)(this,_,this.coord)}moveTo(e){Object(o.c)(this,_,this.coord),super.moveTo(e)}computeDesiredDest(){this.threatProximity.sort((e,t)=>this.grid.minMovesFromTo(e.coord,this.coord)-this.grid.minMovesFromTo(t.coord,this.coord));for(const e of this.threatProximity){if(this.grid.minMovesFromTo(e.coord,this.coord)>this.behaviour.fearDistance)break;if(!e.status.isDowned&&e.status.health>this.status.health)return this.grid.getUntAwayFrom(e.coord,this.coord).coord}if(this.targetProximity.sort((e,t)=>this.grid.minMovesFromTo(this.coord,e.coord)-this.grid.minMovesFromTo(this.coord,t.coord)),this.status.isDowned)for(const e of this.targetProximity){if(this.grid.minMovesFromTo(this.coord,e.coord)>this.behaviour.bloodThirstDistance)break;if(e.status.healthe.isALocalOperator)),this.setCurrentOperator(0);{const e=[];if(this.players.forEach(t=>{e[t.teamId]||(e[t.teamId]=[]),e[t.teamId].push(t)}),this.teams=e.map((e,t)=>new d.b(t,e)),this.teams.every(e=>e.id===d.b.ElimOrder.IMMORTAL))throw Error("All teams are immortal. The game will never end.")}this.players.forEach(e=>e._afterAllPlayersConstruction())}reset(){return this.grid.reset(),Object(n.c)(this,a,"PAUSED"),Promise.resolve()}createPlayers(e){const t=e.playerDescs="ONLINE"===this.gameType?e.playerDescs:d.a.CtorArgs.finalize(e.playerDescs);return Object.freeze(t.map(e=>e.familyId===d.a.Family.HUMAN?e.isALocalOperator?this._createOperatorPlayer(e):new d.a(this,e):this._createArtifPlayer(e)))}serializeResetState(){const e=[],t=this.players.map(e=>e.coord),s=[];return this.grid.forEachTile(t=>{t.lastKnownUpdateId++,e.push({char:t.langChar,seq:t.langSeq}),t.freeHealth&&s.push({coord:t.coord,health:t.freeHealth})}),{csps:e,playerCoords:t,healthCoords:s}}deserializeResetState(e){this.grid.forEachTile((t,s)=>{t.setLangCharSeqPair(e.csps[s]),t.lastKnownUpdateId++}),e.playerCoords.forEach((e,t)=>{this.players[t].reset(this.grid.tile.at(e))}),e.healthCoords.forEach(e=>{this.grid.tile.at(e.coord).freeHealth=e.health})}get currentOperator(){return Object(n.b)(this,i)}setCurrentOperator(e){const t=this.operators[e];t&&this.currentOperator!==t&&(t._notifyWillBecomeCurrent(),Object(n.c)(this,i,t))}get status(){return Object(n.b)(this,a)}statusBecomePlaying(){if("PLAYING"!==this.status){if("PAUSED"!==this.status)throw Error("Can only resume a game that is currently paused.");this.players.forEach(e=>{e._notifyGameNowPlaying()}),this._abstractStatusBecomePlaying(),Object(n.c)(this,a,"PLAYING")}else console.log("[statusBecomePlaying]: Game is already playing")}statusBecomePaused(){if("PAUSED"!==this.status){if("PLAYING"!==this.status)throw Error("Can only pause a game that is currently playing.");this.players.forEach(e=>{e._notifyGameNowPaused()}),this._abstractStatusBecomePaused(),Object(n.c)(this,a,"PAUSED")}else console.log("[statusBecomePaused]: Game is already paused")}statusBecomeOver(){if("PLAYING"!==this.status)throw Error("Can only end a game that is currently playing.");this.players.forEach(e=>{e._notifyGameNowOver()}),this._abstractStatusBecomeOver(),Object(n.c)(this,a,"OVER"),Object(n.b)(this,r).call(this),console.log("game is over!")}_abstractStatusBecomePlaying(){}_abstractStatusBecomePaused(){}_abstractStatusBecomeOver(){}}r=new WeakMap,i=new WeakMap,a=new WeakMap,Object.freeze(u),Object.freeze(u.prototype);class m extends u{constructor(e,t,s){super(e,t,s),o.set(this,void 0),this.eventRecordBitmap=[]}reset(){const e=super.reset();return this.eventRecordBitmap.fill(!1,0,h.a.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH),Object(n.c)(this,o,0),e}get nextUnusedEventId(){return Object(n.b)(this,o)}_recordEvent(e){const t=e.eventId,s=t%h.a.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH;if(t===c.a.EVENT_ID_REJECT)throw TypeError("Do not try to record events for rejected requests.");if(t<0||t!==Math.trunc(t))throw RangeError("Event ID's must only be assigned positive, integer values.");if(this.eventRecordBitmap[s])throw Error("Event ID's must be assigned unique values.");this.eventRecordBitmap[s]=!0,this.eventRecordBitmap[(t+h.a.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH-h.a.K.EVENT_RECORD_FORWARD_WINDOW_LENGTH)%h.a.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH]=!1,Object(n.c)(this,o,+Object(n.b)(this,o)+1)}executeTileModEvent(e,t=!0){Object.freeze(e);const s=this.grid.tile.at(e.coord);if(s.lastKnownUpdateId>e.lastKnownUpdateId)return s;if(s.lastKnownUpdateId===e.lastKnownUpdateId)throw"never";return e.newCharSeqPair&&(s.setLangCharSeqPair(e.newCharSeqPair),t&&this.operators.filter(e=>e.tile.destsFrom().get.includes(s)).forEach(e=>e.seqBufferAcceptKey(""))),s.lastKnownUpdateId=e.lastKnownUpdateId,s.freeHealth=e.newFreeHealth,s}executePlayerMoveEvent(e){var t;const s=this.players[e.playerId],r=e.playerLastAcceptedRequestId-s.lastAcceptedRequestId;if(e.eventId===c.a.EVENT_ID_REJECT)return void(0===r&&(s.requestInFlight=!1));this._recordEvent(e);const i=this.executeTileModEvent(e.destModDesc,s!==this.currentOperator);if(null===(t=e.tileHealthModDescs)||void 0===t||t.forEach(e=>{this.executeTileModEvent(e)}),r>1){if(s===this.currentOperator)throw"never"}else{if(s.requestInFlight=!1,!(s===this.currentOperator?1===r:r<=1))throw"never";s.status.health=e.newPlayerHealth.health,s.moveTo(i),s.lastAcceptedRequestId=e.playerLastAcceptedRequestId}}executePlayerBubbleEvent(e){this.players[e.playerId].requestInFlight=!1,e.eventId!==c.a.EVENT_ID_REJECT&&this._recordEvent(e)}}o=new WeakMap,Object.freeze(m),Object.freeze(m.prototype)}]]); -//# sourceMappingURL=online.js.map \ No newline at end of file diff --git a/dist/client/chunk/game/offline~game/online.js.map b/dist/client/chunk/game/offline~game/online.js.map deleted file mode 100644 index 8c7ff318..00000000 --- a/dist/client/chunk/game/offline~game/online.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack://snakey3/./src/base/game/player/PlayerSkeleton.ts","webpack://snakey3/./src/base/game/player/Player.ts","webpack://snakey3/./src/base/lang/LangSeqTreeNode.ts","webpack://snakey3/./src/base/lang/Lang.ts","webpack://snakey3/./src/base/game/events/PlayerActionEvent.ts","webpack://snakey3/./src/base/game/player/PlayerStatus.ts","webpack://snakey3/./src/base/game/player/Team.ts","webpack://snakey3/./src/base/game/player/ArtificialPlayer.ts","webpack://snakey3/./src/base/game/events/EventRecordEntry.ts","webpack://snakey3/./src/base/floor/TileGetter.ts","webpack://snakey3/./src/base/floor/VisibleGrid.ts","webpack://snakey3/./src/base/floor/VisibleTile.ts","webpack://snakey3/./src/base/game/player/OperatorPlayer.ts","webpack://snakey3/./src/base/game/player/VisiblePlayerStatus.ts","webpack://snakey3/./src/base/floor/Grid.ts","webpack://snakey3/./src/base/floor/impl/Euclid2.ts","webpack://snakey3/./src/base/floor/impl/Beehive.ts","webpack://snakey3/./src/base/game/GameBootstrap.ts","webpack://snakey3/./src/base/game/player/artificials/Chaser.ts","webpack://snakey3/./src/client/game/BrowserGame.ts","webpack://snakey3/./src/base/game/gameparts/GamepartBase.ts","webpack://snakey3/./src/base/game/gameparts/GamepartEvents.ts"],"names":["game","desc","super","Math","trunc","playerId","RangeError","this","isALocalOperator","status","noCheckGameOver","tile","TileGetter","TileGetterSource","_afterAllPlayersConstruction","spawnTile","hostTile","_setOccupant","immigrantInfo","coord","dest","occupantId","gameType","Error","evictOccupant","isOccupied","PlayerSkeleton","player","grid","_source","_getTileAt","_getTileDestsFrom","_getTileSourcesTo","Object","freeze","prototype","familyId","teamId","username","avatar","Avatar","GET_RANDOM","reset","lastAcceptedRequestId","PlayerActionEvent","INITIAL_REQUEST_ID","requestInFlight","type","processMoveRequest","Movement","teams","other","team","members","includes","Player","CtorArgs","finalize","playerDescs","teamIdCleaner","Array","from","Set","map","sort","a","b","reduce","prev","originalId","squashedId","slice","pda","pdb","playerDesc","index","assign","LangSeqTree","ParentNode","children","inheritingWeightedHitCount","forEach","child","_finalize","seq","chars","Seq","REGEXP","test","source","length","node","childNode","find","startsWith","sequence","push","ChildNode","leafNodes","_recursiveGetLeafNodes","forwardDict","weightScaling","averageWeight","values","sum","next","weight","adjustedWeight","originalWeight","pow","reverseDict","Map","char","weightedChar","WeightedLangChar","charArray","get","set","rootNode","mappingA","mappingB","mapping","_addCharMapping","LEAF_CMP","parent","characters","incrementNumHits","random","CHAR_HIT_COUNT_SEED_CEILING","CMP","shift","pair","wCharToHit","numTimes","_incrementNumHits","_recursiveIncrementNumHits","weightInv","upstreamNodes","simpleView","create","kids","PATH_CMP","personalWeightedHitCount","hitCount","weightedHitCount","hits","frontendDescId","weightExaggeration","frontendDesc","GET_FRONTEND_DESC_BY_ID","treeMap","CREATE_TREE_MAP","getLeafNodes","numLeaves","id","avoid","nodeToHit","undefined","leaf","andNonRootParents","i","conflictSeq","avoidSeq","splice","chooseOnePair","displayName","root","EVENT_NAME","Bubble","eventId","EVENT_ID_REJECT","affectedNeighbours","playerLastAcceptedRequestId","destTile","moveType","newPlayerHealth","tileHealthModDescs","destModDesc","lastKnownUpdateId","newCharSeqPair","newFreeHealth","PlayerStatus","health","newHealth","oldIsDowned","isDowned","elimOrder","ElimOrder","STANDING","every","numNonStandingTeams","filter","IMMORTAL","statusBecomeOver","Team","member","teamElimOrder","ArtificialPlayer","TypeError","delayedMovementContinue","cancelTimeout","_scheduledMovementCallbackId","desiredDest","computeDesiredDest","_nextMovementTimerMultiplier","at","langSeq","makeMovementRequest","getUntToward","getNextMoveType","setTimeout","movementContinue","bind","computeNextMovementTimer","of","_Constructors","EventRecordEntry","args","Query","contents","VisibleGrid","Tile","coordDesc","baseElem","document","createElement","setAttribute","classList","add","OmHooks","General","Class","CENTER_CONTENTS","STACK_CONTENTS","BASE","pthb","POINTER_HB","appendChild","charWrap","LANG_CHAR_WRAP","charElem","langCharElem","seqElem","langSeqElem","LANG_SEQ","parentElement","insertAdjacentElement","playerElem","textContent","freeHealth","dataset","Dataset","HEALTH","toString","charSeqPair","setLangCharSeqPair","langChar","getImplementation","coordSys","gridImpl","OHG","Grid","IMPL_BODY","IMPL_COORD_SYS","shortSpotlight","SHORT_SPOTLIGHT","longSpotlight","LONG_SPOTLIGHT","spotlightElems","langFrontend","remapFunc","prevCoord","event","key","equals","getUntAwayFrom","MoveType","BOOST","repeat","seqBufferAcceptKey","unts","destsFrom","unoccupied","Lang","newSeqBuffer","seqBuffer","substring","possibleTarget","NORMAL","visualBell","moveTo","_notifyWillBecomeCurrent","faceElem","FACE","animate","duration","easing","delay","transform","makeWiggleAnimation","anim","pause","dOverlayElem","DOWNED_OVERLAY","_immigrantInfoCache","DDH","DOWNED","KEY","VALUES","NO","currOperator","currentOperator","nextOperator","requestAnimationFrame","time","elem","scrollIntoView","players","otherPlayer","isTeammate","FACE_SWATCH","window","play","TEAM","SELF","VisiblePlayerStatus","pctX","numWiggles","arr","fill","unshift","n","Card","playerName","name","static","gridClass","dimensions","getArea","forEachTile","getRandomCoord","Euclid2","Coord","x","y","round","sub","originOneNorm","abs","originInfNorm","max","originAxialAlignment","scalar","row","height","newRow","col","width","newTile","tileClass","SIZE_LIMITS","consumer","flat","intendedDest","sourceCoord","options","tileA","TileB","oneNorm","infNorm","axialAlignment","floor","avoidCoord","origin","radius","t","l","r","min","flatMap","gridRow","playerCounts","avoidSet","numMembers","teamSpawnCoords","_equals","dim","Visible","gridElem","style","setProperty","_addToDom","_superVisibleGrid","Beehive","dash","bash","floorDash","floorBash","d","shorterSide","fslash","bslash","longerSide","area","behaviour","Behaviour","DEFAULT","familyArgs","threatProximity","targetProximity","pa","pb","minMovesFromTo","threatP","fearDistance","targetP","bloodThirstDistance","healthReserve","freeHealthTiles","size","wanderingAimlessness","getRandomCoordAround","awayFunc","closestFht","closestFhtDistance","Infinity","fht","distance","keyPressesPerSecond","Chaser","GameBootstrap","INIT_CLASS_REGISTRIES","VGr","AP","CHASER","htmlElements","playersBar","impl","_getGridImplementation","gridDimensions","onGameBecomeOver","langId","_playerStatusCtor","playerStatusCtor","createPlayers","operators","setCurrentOperator","teammateArray","Promise","resolve","gameDesc","Family","HUMAN","_createOperatorPlayer","_createArtifPlayer","csps","playerCoords","healthCoords","ser","nextOperatorIndex","_notifyGameNowPlaying","_abstractStatusBecomePlaying","console","log","_notifyGameNowPaused","_abstractStatusBecomePaused","_notifyGameNowOver","_abstractStatusBecomeOver","eventRecordBitmap","superPromise","Game","K","EVENT_RECORD_WRAPPING_BUFFER_LENGTH","wrappedId","EVENT_RECORD_FORWARD_WINDOW_LENGTH","doCheckOperatorSeqBuffer","op","clientEventLag","_recordEvent","executeTileModEvent"],"mappings":"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","file":"chunk/game/offline~game/online.js","sourceRoot":""} \ No newline at end of file diff --git a/dist/client/chunk/game/online.css b/dist/client/chunk/game/online.css new file mode 100644 index 00000000..55016ec2 --- /dev/null +++ b/dist/client/chunk/game/online.css @@ -0,0 +1 @@ +.game-grid-impl-body{z-index:0}.player__face[data-face=me]{z-index:21}.player__spotlight-long{z-index:20}.tile__seq{z-index:13}.player__downed-overlay{z-index:12}.player__face,.tile[data-health] .tile__char{z-index:11}.player__spotlight-short{z-index:10}.game-grid-kbd-dc{z-index:1}.game-grid-pause-overlay{z-index:2}.game-grid{contain:content;height:100%;display:grid;align-content:center}.game-grid,.game-grid-scroll-outer{position:relative}.grid-player-intersection-root{position:fixed;z-index:100;pointer-events:none;padding:20%}.game-grid-scroll-outer{contain:style;overflow:auto auto;scroll-snap-type:both;scrollbar-width:none;box-sizing:border-box;border:5px double var(--colour-tileBd);border-radius:15px}.game-grid-scroll-outer::-webkit-scrollbar{width:0;height:0}.game-grid-impl-body{contain:content;position:static;color:var(--colour-tileFg);height:fit-content;width:fit-content;padding:.4em}.game-grid-kbd-dc,.game-grid-pause-overlay{cursor:pointer;position:fixed;padding:3em;border-radius:inherit;color:#fff;text-shadow:0 .01em .5em #000;visibility:hidden}.game-grid-kbd-dc{background-color:rgba(0,0,0,.13)}.game-grid-pause-overlay{background-color:rgba(0,0,0,.25)}@media screen{.game-grid:focus{outline:none}.game-grid:not([data-game-state=paused]):not(:focus) .game-grid-kbd-dc,.game-grid[data-game-state=paused] .game-grid-pause-overlay{visibility:visible}}.tile{pointer-events:none;contain:size style}.tile *{height:100%;width:100%}.tile__pointer-hitbox{pointer-events:auto;contain:strict;top:40%;left:40%}.player__face,.tile__char,.tile__seq{box-sizing:border-box;border:.14em solid transparent;border-radius:.35em}.tile__char{contain:strict;background-color:var(--colour-tileBg);overflow:hidden hidden;display:grid;align-items:center}.tile__char>*{height:auto}.tile[data-health] .tile__char{border-color:var(--colour-tileBd);color:var(--colour-healthFg);background-color:var(--colour-healthBg);transition-property:color,background-color;transition-duration:.5s;transition-timing-function:ease-in}.tile__seq{contain:content;padding:0 .4ch;min-height:100%;height:max-content;min-width:100%;width:max-content;color:#fff;background-color:rgba(0,0,0,.5);border-color:#fff;font-family:inherit}.tile__pointer-hitbox:hover~.player>.player__face,.tile__seq{visibility:hidden}.tile__pointer-hitbox:hover~.tile__char{color:transparent}.tile__pointer-hitbox:hover~.tile__seq{visibility:visible}.player{--colour-spotlight:var(--colour-mainBg);contain:size}.player__face{border-color:var(--colour-tileBd);contain:strict;transition:background-color .7s ease-in-out}.player[data-face=me]>.player__face,.player__spotlight-long,.player__spotlight-short{will-change:transform}.player__downed-overlay{background-color:red;opacity:.2}.player[data-downed=no] .player__downed-overlay{visibility:hidden}@keyframes anim-frames-player__on-move{0%{transform:scale(1.1)}37%{transform:scale(1.3)}}.player__spotlight-short{background-image:radial-gradient(farthest-side,transparent 21%,46%,var(--colour-spotlight));padding:1400%;border:100vmax solid var(--colour-spotlight)}.player__spotlight-long{background-image:radial-gradient(farthest-side,transparent 15%,var(--colour-spotlight));padding:1700%;border:100vmax solid var(--colour-spotlight);opacity:.92}@media print{.player__spotlight-long,.player__spotlight-short{visibility:hidden}}.player[data-face=me]>.player__face{background-color:var(--colour-pFaceMe)}.player[data-face=meOppo]>.player__face{background-color:var(--colour-pFaceMeOppo)}.player[data-face=teammate]>.player__face{background-color:var(--colour-pFaceTeammate)}.player[data-face=opponent]>.player__face{background-color:var(--colour-pFaceOpponent)}.player[data-face=teammate][data-downed=team]>.player__face{background-color:var(--colour-pFaceImtlTeammate)}.player[data-face=opponent][data-downed=team]>.player__face{background-color:var(--colour-pFaceImtlOpponent)}.game-grid-impl-body[data-coord-sys=EUCLID2]{--track-size:minmax(1.67em,1fr);display:grid;grid-template-columns:repeat(var(--euclid2-grid-width),var(--track-size));grid-auto-rows:var(--track-size)}.game-grid-impl-body[data-coord-sys=EUCLID2] .tile{margin:5%;scroll-snap-align:center} \ No newline at end of file diff --git a/dist/client/chunk/game/online.js b/dist/client/chunk/game/online.js index cf546759..4bb41368 100644 --- a/dist/client/chunk/game/online.js +++ b/dist/client/chunk/game/online.js @@ -1,2 +1,2 @@ -(window.webpackJsonpsnakey3=window.webpackJsonpsnakey3||[]).push([[2],{26:function(e,t,s){"use strict";s.r(t),s.d(t,"OnlineGame",(function(){return c}));var i=s(0),o=s(17),E=s(10),r=s(18);s(14);class c extends r.a{constructor(e,t,s){super(o.b.Type.ONLINE,{onGameBecomeOver:e,tileClass:o.e,playerStatusCtor:o.d},s),this.socket=t,this._ctorBrowserGame(),this.socket.off(E.a.EVENT_NAME.Movement),this.socket.on(E.a.EVENT_NAME.Movement,this.executePlayerMoveEvent.bind(this)),this.socket.off(E.a.EVENT_NAME.Bubble),this.socket.on(E.a.EVENT_NAME.Bubble,this.executePlayerBubbleEvent.bind(this)),this.socket.off(o.b.Serialization.EVENT_NAME),this.socket.on(o.b.Serialization.EVENT_NAME,e=>Object(i.a)(this,void 0,void 0,(function*(){yield this.reset(),this.deserializeResetState(e),this.socket.emit(o.b.CtorArgs.EVENT_NAME_CLIENT_READY_UNPAUSE)}))),this.socket.emit(o.b.CtorArgs.EVENT_NAME_CLIENT_READY_RESET)}_createArtifPlayer(e){return new o.c(this,e)}processMoveRequest(e){this.socket.emit(E.a.EVENT_NAME.Movement,e)}processBubbleRequest(e){this.socket.emit(E.a.EVENT_NAME.Bubble,e)}}Object(o.f)(c,[o.a]),Object.freeze(c),Object.freeze(c.prototype)}}]); +(self.webpackChunksnakey3=self.webpackChunksnakey3||[]).push([[775],{25:(e,t,s)=>{"use strict";s.r(t),s.d(t,{OnlineGame:()=>n});var i=s(655),r=s(502),E=s(153),o=s(699),h=s(191);class n extends h.R{constructor(e,t,s){if(super(E.lA.Type.ONLINE,{onGameBecomeOver:e,tileClass:E.gx,playerStatusCtor:E.Ko},s),this.socket=t,this._ctorBrowserGame(),this.socket.hasListeners(o.a.EVENT_NAME.MOVEMENT))throw new Error("never");if(this.socket.on(o.a.EVENT_NAME.MOVEMENT,this.executePlayerMoveEvent.bind(this)),this.socket.hasListeners(o.a.EVENT_NAME.BUBBLE))throw new Error("never");if(this.socket.on(o.a.EVENT_NAME.BUBBLE,this.executePlayerBubbleEvent.bind(this)),this.socket.off(r.JD.RESET),this.socket.hasListeners(r.JD.RESET))throw new Error("never");this.socket.on(r.JD.RESET,(e=>(0,i.mG)(this,void 0,void 0,(function*(){yield this.reset(),this.deserializeResetState(e),this.socket.emit(r.JD.UNPAUSE)})))),this.socket.emit(r.JD.RESET)}_createArtifPlayer(e){return new E.J5(this,e)}processMoveRequest(e){this.socket.emit(o.a.EVENT_NAME.MOVEMENT,e)}processBubbleRequest(e){this.socket.emit(o.a.EVENT_NAME.BUBBLE,e)}}E.RQ.applyMixins(n,[E.qM]),Object.freeze(n),Object.freeze(n.prototype)}}]); //# sourceMappingURL=online.js.map \ No newline at end of file diff --git a/dist/client/chunk/game/online.js.map b/dist/client/chunk/game/online.js.map index f7207c95..bac80ae1 100644 --- a/dist/client/chunk/game/online.js.map +++ b/dist/client/chunk/game/online.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://snakey3/./src/client/game/OnlineGame.ts"],"names":["OnlineGame","onGameBecomeOver","socket","gameDesc","super","Type","ONLINE","tileClass","playerStatusCtor","this","_ctorBrowserGame","off","EVENT_NAME","Movement","on","executePlayerMoveEvent","bind","Bubble","executePlayerBubbleEvent","Serialization","ser","reset","deserializeResetState","emit","CtorArgs","EVENT_NAME_CLIENT_READY_UNPAUSE","EVENT_NAME_CLIENT_READY_RESET","desc","Object","freeze","prototype"],"mappings":"4LACA,EAAQ,IAmBD,MAAMA,UACL,IAwBJ,YACIC,EACAC,EACAC,GAEAC,MACI,IAAKC,KAAKC,OAAQ,CAClBL,mBACAM,UAAW,IACXC,iBAAkB,KACfL,GAEPM,KAAKP,OAASA,EACdO,KAAKC,mBAELD,KAAKP,OAAOS,IAAI,IAAkBC,WAAWC,UAC7CJ,KAAKP,OAAOY,GACR,IAAkBF,WAAWC,SAC7BJ,KAAKM,uBAAuBC,KAAKP,OAErCA,KAAKP,OAAOS,IAAI,IAAkBC,WAAWK,QAC7CR,KAAKP,OAAOY,GACR,IAAkBF,WAAWK,OAC7BR,KAAKS,yBAAyBF,KAAKP,OAGvCA,KAAKP,OAAOS,IAAI,IAAKQ,cAAcP,YACnCH,KAAKP,OAAOY,GACR,IAAKK,cAAcP,WACZQ,GAA0B,kDACvBX,KAAKY,QACXZ,KAAKa,sBAAsBF,GAG3BX,KAAKP,OAAOqB,KAAK,IAAKC,SAASC,qCAGvChB,KAAKP,OAAOqB,KAAK,IAAKC,SAASE,+BAKzB,mBAAmBC,GACzB,OAAO,IAAI,IAAOlB,KAAMkB,GAWrB,mBAAmBA,GACtBlB,KAAKP,OAAOqB,KAAK,IAAkBX,WAAWC,SAAUc,GAUrD,qBAAqBA,GACxBlB,KAAKP,OAAOqB,KAAK,IAAkBX,WAAWK,OAAQU,IAI9D,YAAY3B,EAAY,CAAC,MACzB4B,OAAOC,OAAO7B,GACd4B,OAAOC,OAAO7B,EAAW8B","file":"chunk/game/online.js","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://snakey3/./src/client/game/OnlineGame.ts"],"names":["OnlineGame","onGameBecomeOver","gameSocket","gameDesc","super","tileClass","playerStatusCtor","this","socket","_ctorBrowserGame","hasListeners","Error","on","executePlayerMoveEvent","bind","executePlayerBubbleEvent","off","ser","reset","deserializeResetState","emit","desc","Object","freeze","prototype"],"mappings":"iLAkBO,MAAMA,UACL,IAsBJ,YACIC,EACAC,EACAC,GAYA,GAVAC,MACI,iBAAkB,CAClBH,mBACAI,UAAW,KACXC,iBAAkB,MACfH,GAEPI,KAAKC,OAASN,EACdK,KAAKE,mBAEDF,KAAKC,OAAOE,aAAa,yBAAwC,MAAM,IAAIC,MAAM,SAKrF,GAJAJ,KAAKC,OAAOI,GACR,wBACAL,KAAKM,uBAAuBC,KAAKP,OAEjCA,KAAKC,OAAOE,aAAa,uBAAsC,MAAM,IAAIC,MAAM,SAOnF,GANAJ,KAAKC,OAAOI,GACR,sBACAL,KAAKQ,yBAAyBD,KAAKP,OAGvCA,KAAKC,OAAOQ,IAAI,YACZT,KAAKC,OAAOE,aAAa,YAAe,MAAM,IAAIC,MAAM,SAC5DJ,KAAKC,OAAOI,GACR,YACOK,IAA0B,8CACvBV,KAAKW,QACXX,KAAKY,sBAAsBF,GAG3BV,KAAKC,OAAOY,KAAK,mBAGzBb,KAAKC,OAAOY,KAAK,YAWX,mBAAmBC,GACzB,OAAO,IAAI,KAAOd,KAAMc,GAWrB,mBAAmBA,GACtBd,KAAKC,OAAOY,KAAK,wBAAuCC,GAUrD,qBAAqBA,GACxBd,KAAKC,OAAOY,KAAK,sBAAqCC,IAI9D,iBAAoBrB,EAAY,CAAC,OACjCsB,OAAOC,OAAOvB,GACdsB,OAAOC,OAAOvB,EAAWwB","file":"chunk/game/online.js","sourceRoot":""} \ No newline at end of file diff --git a/dist/client/chunk/lang/Cellphone-ts.js b/dist/client/chunk/lang/Cellphone-ts.js index 654f4e1b..a35b0b87 100644 --- a/dist/client/chunk/lang/Cellphone-ts.js +++ b/dist/client/chunk/lang/Cellphone-ts.js @@ -1,2 +1,2 @@ -(window.webpackJsonpsnakey3=window.webpackJsonpsnakey3||[]).push([[4],{20:function(e,n,o){"use strict";o.r(n),o.d(n,"Cellphone",(function(){return s}));class s{}s||(s={}),Object.freeze(s),Object.freeze(s.prototype)}}]); +(self.webpackChunksnakey3=self.webpackChunksnakey3||[]).push([[313],{56:(e,s,c)=>{"use strict";c.r(s),c.d(s,{Cellphone:()=>k});class k{}k||(k={}),Object.freeze(k),Object.freeze(k.prototype)}}]); //# sourceMappingURL=Cellphone-ts.js.map \ No newline at end of file diff --git a/dist/client/chunk/lang/Cellphone-ts.js.map b/dist/client/chunk/lang/Cellphone-ts.js.map index 61b9f0c6..7c5cfebb 100644 --- a/dist/client/chunk/lang/Cellphone-ts.js.map +++ b/dist/client/chunk/lang/Cellphone-ts.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://snakey3/./src/base/lang/impl/Cellphone.ts"],"names":["Cellphone","Object","freeze","prototype"],"mappings":"uGACA,iDAGO,MAAMA,GAEIA,MAAS,IAG1BC,OAAOC,OAAOF,GACdC,OAAOC,OAAOF,EAAUG","file":"chunk/lang/Cellphone-ts.js","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://snakey3/./src/base/lang/impl/Cellphone.ts"],"names":["Cellphone","Object","freeze","prototype"],"mappings":"+HAIO,MAAMA,GAEIA,MAAS,IAG1BC,OAAOC,OAAOF,GACdC,OAAOC,OAAOF,EAAUG","file":"chunk/lang/Cellphone-ts.js","sourceRoot":""} \ No newline at end of file diff --git a/dist/client/chunk/lang/Emote-ts.js b/dist/client/chunk/lang/Emote-ts.js index 16a96b9f..90ad8588 100644 --- a/dist/client/chunk/lang/Emote-ts.js +++ b/dist/client/chunk/lang/Emote-ts.js @@ -1,2 +1,2 @@ -(window.webpackJsonpsnakey3=window.webpackJsonpsnakey3||[]).push([[5],{21:function(e,n,t){"use strict";t.r(n),t.d(n,"Emote",(function(){return c}));var c,o=t(9);!function(e){class n extends o.a{}e.GitHub=n,Object.freeze(n),Object.freeze(n.prototype)}(c||(c={})),Object.freeze(c)}}]); +(self.webpackChunksnakey3=self.webpackChunksnakey3||[]).push([[858],{981:(e,t,s)=>{"use strict";s.r(t),s.d(t,{Emote:()=>c});var c,n=s(979);!function(e){class t extends n.U{}e.GitHub=t,Object.freeze(t),Object.freeze(t.prototype)}(c||(c={})),Object.freeze(c)}}]); //# sourceMappingURL=Emote-ts.js.map \ No newline at end of file diff --git a/dist/client/chunk/lang/Emote-ts.js.map b/dist/client/chunk/lang/Emote-ts.js.map index f3548668..74331899 100644 --- a/dist/client/chunk/lang/Emote-ts.js.map +++ b/dist/client/chunk/lang/Emote-ts.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://snakey3/./src/base/lang/impl/Emote.ts"],"names":["Emote","GitHub","Object","freeze","prototype"],"mappings":"uGAAA,iDAMiBA,EANjB,QAMA,SAAiBA,GAKb,MAAaC,UAAe,KAAf,EAAAA,OAAM,EAEnBC,OAAOC,OAAOF,GACdC,OAAOC,OAAOF,EAAOG,WARzB,CAAiBJ,MAAK,KAUtBE,OAAOC,OAAOH","file":"chunk/lang/Emote-ts.js","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://snakey3/./src/base/lang/impl/Emote.ts"],"names":["Emote","GitHub","Object","freeze","prototype"],"mappings":"gIAMiBA,E,UAAjB,SAAiBA,GAKb,MAAaC,UAAe,KAAf,EAAAA,OAAM,EAEnBC,OAAOC,OAAOF,GACdC,OAAOC,OAAOF,EAAOG,WARzB,CAAiBJ,MAAK,KAUtBE,OAAOC,OAAOH","file":"chunk/lang/Emote-ts.js","sourceRoot":""} \ No newline at end of file diff --git a/dist/client/chunk/lang/English-ts.js b/dist/client/chunk/lang/English-ts.js index 79b4acbd..3d5d3e68 100644 --- a/dist/client/chunk/lang/English-ts.js +++ b/dist/client/chunk/lang/English-ts.js @@ -1,2 +1,2 @@ -(window.webpackJsonpsnakey3=window.webpackJsonpsnakey3||[]).push([[6],{22:function(e,t,n){"use strict";n.r(t),n.d(t,"English",(function(){return r}));var r,c=n(9);!function(e){class t extends c.a{constructor(e){super("engl-low",Object.entries(s).reduce((e,[t,n])=>(e[t]={seq:t,weight:n},e),{}),e)}}e.Lowercase=t,Object.freeze(t),Object.freeze(t.prototype);class n extends c.a{constructor(e){let t={};const n=e=>{t=Object.entries(s).reduce((t,[n,r])=>{const c=e(n);return t[c]={seq:c,weight:r},t},t)};n(e=>e.toLowerCase()),n(e=>e.toUpperCase()),super("engl-mix",t,e)}}let r;e.MixedCase=n,Object.freeze(n),Object.freeze(n.prototype),function(e){class t extends c.a{constructor(e){super("engl-cell-enc",Object.entries(s).reduce((e,[t,r],c)=>(e[t]={seq:n[c],weight:r},e),{}),e)}}e.Encode=t,Object.freeze(t),Object.freeze(t.prototype);const n=Object.freeze([3,3,3,3,3,4,3,4].flatMap((e,t)=>{const n=[],r=(1+t).toString();for(let t=r;t.length<=e;t+=r)n.push(t);return n}))}(r=e.OldCellphone||(e.OldCellphone={}));const s=Object.freeze({a:8.167,b:1.492,c:2.202,d:4.253,e:12.702,f:2.228,g:2.015,h:6.094,i:6.966,j:.153,k:1.292,l:4.025,m:2.406,n:6.749,o:7.507,p:1.929,q:.095,r:5.987,s:6.327,t:9.356,u:2.758,v:.978,w:2.56,x:.15,y:1.994,z:.077})}(r||(r={})),Object.freeze(r)}}]); +(self.webpackChunksnakey3=self.webpackChunksnakey3||[]).push([[184],{215:(e,t,r)=>{"use strict";r.r(t),r.d(t,{English:()=>s});var s,c=r(979);!function(e){class t extends c.U{constructor(e){super("engl-low",Object.entries(n).reduce(((e,[t,r])=>(e[t]={seq:t,weight:r},e)),{}),e)}}e.Lowercase=t,Object.freeze(t),Object.freeze(t.prototype);class r extends c.U{constructor(e){let t={};const r=e=>{t=Object.entries(n).reduce(((t,[r,s])=>{const c=e(r);return t[c]={seq:c,weight:s},t}),t)};r((e=>e.toLowerCase())),r((e=>e.toUpperCase())),super("engl-mix",t,e)}}let s;e.MixedCase=r,Object.freeze(r),Object.freeze(r.prototype),function(e){class t extends c.U{constructor(e){super("engl-cell-enc",Object.entries(n).reduce(((e,[t,s],c)=>(e[t]={seq:r[c],weight:s},e)),{}),e)}}e.Encode=t,Object.freeze(t),Object.freeze(t.prototype);const r=Object.freeze([3,3,3,3,3,4,3,4].flatMap(((e,t)=>{const r=[],s=(1+t).toString();for(let t=s;t.length<=e;t+=s)r.push(t);return r})))}(s=e.OldCellphone||(e.OldCellphone={}));const n=Object.freeze({a:8.167,b:1.492,c:2.202,d:4.253,e:12.702,f:2.228,g:2.015,h:6.094,i:6.966,j:.153,k:1.292,l:4.025,m:2.406,n:6.749,o:7.507,p:1.929,q:.095,r:5.987,s:6.327,t:9.356,u:2.758,v:.978,w:2.56,x:.15,y:1.994,z:.077})}(s||(s={})),Object.freeze(s)}}]); //# sourceMappingURL=English-ts.js.map \ No newline at end of file diff --git a/dist/client/chunk/lang/English-ts.js.map b/dist/client/chunk/lang/English-ts.js.map index 51f05313..ec1d34f5 100644 --- a/dist/client/chunk/lang/English-ts.js.map +++ b/dist/client/chunk/lang/English-ts.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://snakey3/./src/base/lang/impl/English.ts"],"names":["English","Lowercase","weightScaling","super","Object","entries","LETTER_FREQUENCY","reduce","accumulator","char","weight","seq","freeze","prototype","MixedCase","initializer","addMappings","charSeqTransform","_char","cs","toLowerCase","toUpperCase","OldCellphone","Encode","index","NUMPAD","flatMap","val","idx","button","numpadKey","toString","str","length","push","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"],"mappings":"uGAAA,mDAMiBA,EANjB,QAMA,SAAiBA,GAOb,MAAaC,UAAkB,IAI3B,YAAmBC,GAAyBC,MACxC,WACAC,OAAOC,QAAQC,GAAkBC,OAC7B,CAACC,GAAcC,EAAKC,MAChBF,EAAYC,GAAQ,CAAEE,IAAKF,EAAMC,UAC1BF,GACR,IAEPN,IAZK,EAAAD,UAAS,EAgBtBG,OAAOQ,OAAOX,GACdG,OAAOQ,OAAOX,EAAUY,WAQxB,MAAaC,UAAkB,IAC3B,YAAmBZ,GACf,IAAIa,EAAmD,GACvD,MAAMC,EAAeC,IACjBF,EAAcX,OAAOC,QAAQC,GAAkBC,OAC3C,CAACC,GAAcU,EAAMR,MACjB,MAAMD,EAAkBQ,EAAiBC,GAEzC,OADAV,EAAYC,GAAQ,CAAEE,IAAKF,EAAMC,UAC1BF,GAEXO,IAGRC,EAAaG,GAAOA,EAAGC,eACvBJ,EAAaG,GAAOA,EAAGE,eACvBlB,MACI,WACAY,EACAb,IASZ,IAAiBoB,EA3BJ,EAAAR,UAAS,EAuBtBV,OAAOQ,OAAOE,GACdV,OAAOQ,OAAOE,EAAUD,WAGxB,SAAiBS,GAIb,MAAaC,UAAe,IACxB,YAAmBrB,GAAyBC,MACxC,gBACAC,OAAOC,QAAQC,GAAkBC,OAC7B,CAACC,GAAcC,EAAKC,GAASc,KACzBhB,EAAYC,GAAQ,CAAEE,IAAKc,EAAOD,GAAQd,UACnCF,GACR,IAEPN,IATK,EAAAqB,OAAM,EAanBnB,OAAOQ,OAAOW,GACdnB,OAAOQ,OAAOW,EAAOV,WAErB,MAAMY,EAASrB,OAAOQ,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GACvCc,QAAQ,CAACC,EAAKC,KACX,MAAMC,EAAS,GACTC,GAAa,EAAEF,GAAKG,WAC1B,IAAK,IAAIC,EAAMF,EAAWE,EAAIC,QAAUN,EAAKK,GAAOF,EAChDD,EAAOK,KAAKF,GAEhB,OAAOH,KA3BnB,CAAiBP,EAAA,EAAAA,eAAA,EAAAA,aAAY,KAoC7B,MAAMhB,EAAmBF,OAAOQ,OAAc,CAC1CuB,EAAG,MAAOC,EAAG,MAAOC,EAAG,MAAOC,EAAG,MACjCC,EAAE,OAAQC,EAAG,MAAOC,EAAG,MAAOC,EAAG,MACjCC,EAAG,MAAOC,EAAG,KAAOC,EAAG,MAAOC,EAAG,MACjCC,EAAG,MAAOC,EAAG,MAAOC,EAAG,MAAOC,EAAG,MACjCC,EAAG,KAAOC,EAAG,MAAOC,EAAG,MAAOC,EAAG,MACjCC,EAAG,MAAOC,EAAG,KAAOC,EAAG,KAAOC,EAAG,IACjCC,EAAG,MAAOC,EAAG,OAtGrB,CAAiB5D,MAAO,KAyGxBI,OAAOQ,OAAOZ","file":"chunk/lang/English-ts.js","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://snakey3/./src/base/lang/impl/English.ts"],"names":["English","Lowercase","weightScaling","super","Object","entries","LETTER_FREQUENCY","reduce","accumulator","char","weight","seq","freeze","prototype","MixedCase","initializer","addMappings","charSeqTransform","_char","cs","toLowerCase","toUpperCase","OldCellphone","Encode","index","NUMPAD","flatMap","val","idx","button","numpadKey","toString","str","length","push","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"],"mappings":"kIAMiBA,E,UAAjB,SAAiBA,GAOb,MAAaC,UAAkB,IAI3B,YAAmBC,GAAyBC,MACxC,WACAC,OAAOC,QAAQC,GAAkBC,QAC7B,CAACC,GAAcC,EAAKC,MAChBF,EAAYC,GAAQ,CAAEE,IAAKF,EAAMC,UAC1BF,IACR,IAEPN,IAZK,EAAAD,UAAS,EAgBtBG,OAAOQ,OAAOX,GACdG,OAAOQ,OAAOX,EAAUY,WAQxB,MAAaC,UAAkB,IAC3B,YAAmBZ,GACf,IAAIa,EAAmD,GACvD,MAAMC,EAAeC,IACjBF,EAAcX,OAAOC,QAAQC,GAAkBC,QAC3C,CAACC,GAAcU,EAAMR,MACjB,MAAMD,EAAkBQ,EAAiBC,GAEzC,OADAV,EAAYC,GAAQ,CAAEE,IAAKF,EAAMC,UAC1BF,IAEXO,IAGRC,GAAaG,GAAOA,EAAGC,gBACvBJ,GAAaG,GAAOA,EAAGE,gBACvBlB,MACI,WACAY,EACAb,IASZ,IAAiBoB,EA3BJ,EAAAR,UAAS,EAuBtBV,OAAOQ,OAAOE,GACdV,OAAOQ,OAAOE,EAAUD,WAGxB,SAAiBS,GAIb,MAAaC,UAAe,IACxB,YAAmBrB,GAAyBC,MACxC,gBACAC,OAAOC,QAAQC,GAAkBC,QAC7B,CAACC,GAAcC,EAAKC,GAASc,KACzBhB,EAAYC,GAAQ,CAAEE,IAAKc,EAAOD,GAAQd,UACnCF,IACR,IAEPN,IATK,EAAAqB,OAAM,EAanBnB,OAAOQ,OAAOW,GACdnB,OAAOQ,OAAOW,EAAOV,WAErB,MAAMY,EAASrB,OAAOQ,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GACvCc,SAAQ,CAACC,EAAKC,KACX,MAAMC,EAAS,GACTC,GAAa,EAAEF,GAAKG,WAC1B,IAAK,IAAIC,EAAMF,EAAWE,EAAIC,QAAUN,EAAKK,GAAOF,EAChDD,EAAOK,KAAKF,GAEhB,OAAOH,MA3BnB,CAAiBP,EAAA,EAAAA,eAAA,EAAAA,aAAY,KAoC7B,MAAMhB,EAAmBF,OAAOQ,OAAc,CAC1CuB,EAAG,MAAOC,EAAG,MAAOC,EAAG,MAAOC,EAAG,MACjCC,EAAE,OAAQC,EAAG,MAAOC,EAAG,MAAOC,EAAG,MACjCC,EAAG,MAAOC,EAAG,KAAOC,EAAG,MAAOC,EAAG,MACjCC,EAAG,MAAOC,EAAG,MAAOC,EAAG,MAAOC,EAAG,MACjCC,EAAG,KAAOC,EAAG,MAAOC,EAAG,MAAOC,EAAG,MACjCC,EAAG,MAAOC,EAAG,KAAOC,EAAG,KAAOC,EAAG,IACjCC,EAAG,MAAOC,EAAG,OAtGrB,CAAiB5D,MAAO,KAyGxBI,OAAOQ,OAAOZ","file":"chunk/lang/English-ts.js","sourceRoot":""} \ No newline at end of file diff --git a/dist/client/chunk/lang/Japanese-ts.js b/dist/client/chunk/lang/Japanese-ts.js index eeed307e..84e4d9d9 100644 --- a/dist/client/chunk/lang/Japanese-ts.js +++ b/dist/client/chunk/lang/Japanese-ts.js @@ -1,2 +1,2 @@ -(window.webpackJsonpsnakey3=window.webpackJsonpsnakey3||[]).push([[7],{23:function(e,i,t){"use strict";t.r(i),t.d(i,"Japanese",(function(){return s}));var s,h=t(9);!function(e){class i extends h.a{constructor(e){super("japn-hir",i.INITIALIZER,e)}}i.INITIALIZER=Object.freeze({"の":{seq:"no",weight:1918313},"に":{seq:"ni",weight:1108840},"た":{seq:"ta",weight:1067566},"い":{seq:"i",weight:1060284},"は":{seq:"ha",weight:937811},"を":{seq:"wo",weight:936356},"と":{seq:"to",weight:927938},"る":{seq:"ru",weight:916652},"が":{seq:"ga",weight:860742},"し":{seq:"shi",weight:848132},"で":{seq:"de",weight:764834},"て":{seq:"te",weight:758316},"な":{seq:"na",weight:720156},"か":{seq:"ka",weight:537294},"れ":{seq:"re",weight:450805},"ら":{seq:"ra",weight:42329},"も":{seq:"mo",weight:396142},"う":{seq:"u",weight:352965},"す":{seq:"su",weight:340654},"り":{seq:"ri",weight:333999},"こ":{seq:"ko",weight:312227},"だ":{seq:"da",weight:280911},"ま":{seq:"ma",weight:278599},"さ":{seq:"sa",weight:258960},"き":{seq:"ki",weight:233505},"め":{seq:"me",weight:223806},"く":{seq:"ku",weight:221960},"あ":{seq:"a",weight:204256},"け":{seq:"ke",weight:199362},"ど":{seq:"do",weight:196555},"ん":{seq:"nn",weight:190068},"え":{seq:"e",weight:163664},"よ":{seq:"yo",weight:154206},"つ":{seq:"tsu",weight:153999},"や":{seq:"ya",weight:146156},"そ":{seq:"so",weight:131611},"わ":{seq:"wa",weight:123077},"ち":{seq:"chi",weight:99183},"み":{seq:"mi",weight:89264},"せ":{seq:"se",weight:83444},"ろ":{seq:"ro",weight:73467},"ば":{seq:"ba",weight:72228},"お":{seq:"o",weight:65870},"じ":{seq:"ji",weight:56857},"べ":{seq:"be",weight:56005},"ず":{seq:"zu",weight:53256},"げ":{seq:"ge",weight:49126},"ほ":{seq:"ho",weight:48752},"へ":{seq:"he",weight:47013},"び":{seq:"bi",weight:32312},"む":{seq:"mu",weight:31212},"ご":{seq:"go",weight:26965},"ね":{seq:"ne",weight:23490},"ぶ":{seq:"bu",weight:23280},"ぐ":{seq:"gu",weight:21549},"ぎ":{seq:"gi",weight:19865},"ひ":{seq:"hi",weight:19148},"ょ":{seq:"yo",weight:14425},"づ":{seq:"du",weight:13125},"ぼ":{seq:"bo",weight:12402},"ざ":{seq:"za",weight:12108},"ふ":{seq:"fu",weight:11606},"ゃ":{seq:"ya",weight:11522},"ぞ":{seq:"zo",weight:10047},"ゆ":{seq:"yu",weight:8486},"ぜ":{seq:"ze",weight:6893},"ぬ":{seq:"nu",weight:5124},"ぱ":{seq:"pa",weight:4349},"ゅ":{seq:"yu",weight:2755},"ぴ":{seq:"pi",weight:1608},"ぽ":{seq:"po",weight:1315},"ぷ":{seq:"pu",weight:986},"ぺ":{seq:"pe",weight:477},"ぢ":{seq:"di",weight:82}}),e.Hiragana=i,Object.freeze(i),Object.freeze(i.prototype);class t extends h.a{constructor(e){super("japn-kat",t.INITIALIZER,e)}}t.INITIALIZER=Object.freeze({"ン":{seq:"nn",weight:290948},"ル":{seq:"ru",weight:189442},"ス":{seq:"su",weight:178214},"ト":{seq:"to",weight:162802},"ア":{seq:"a",weight:127845},"イ":{seq:"i",weight:120807},"ラ":{seq:"ra",weight:117203},"リ":{seq:"ri",weight:106744},"ク":{seq:"ku",weight:98209},"カ":{seq:"ka",weight:82982},"シ":{seq:"shi",weight:80626},"タ":{seq:"ta",weight:75319},"ロ":{seq:"ro",weight:75301},"ド":{seq:"do",weight:74257},"ジ":{seq:"ji",weight:61171},"フ":{seq:"fu",weight:61115},"レ":{seq:"re",weight:60608},"メ":{seq:"me",weight:60230},"コ":{seq:"ko",weight:58724},"マ":{seq:"ma",weight:56123},"プ":{seq:"pu",weight:54159},"テ":{seq:"te",weight:53404},"ム":{seq:"mu",weight:50758},"チ":{seq:"chi",weight:48437},"バ":{seq:"ba",weight:44970},"ビ":{seq:"bi",weight:44462},"グ":{seq:"gu",weight:40433},"キ":{seq:"ki",weight:39608},"ウ":{seq:"u",weight:39323},"サ":{seq:"sa",weight:39202},"ニ":{seq:"ni",weight:38711},"ナ":{seq:"na",weight:38047},"エ":{seq:"e",weight:36458},"ブ":{seq:"bu",weight:35920},"パ":{seq:"pa",weight:35416},"セ":{seq:"se",weight:34883},"オ":{seq:"o",weight:34718},"ィ":{seq:"i",weight:33747},"デ":{seq:"de",weight:32665},"ュ":{seq:"yu",weight:32616},"ミ":{seq:"mi",weight:29262},"ャ":{seq:"ya",weight:28144},"ボ":{seq:"bo",weight:26651},"ダ":{seq:"da",weight:26396},"ツ":{seq:"tsu",weight:24541},"ポ":{seq:"ho",weight:23742},"ベ":{seq:"be",weight:22755},"ネ":{seq:"ne",weight:22462},"ガ":{seq:"ga",weight:22061},"ハ":{seq:"ha",weight:21839},"ワ":{seq:"wa",weight:21784},"ソ":{seq:"so",weight:20784},"ケ":{seq:"ke",weight:20633},"モ":{seq:"ho",weight:20070},"ノ":{seq:"no",weight:19572},"ズ":{seq:"zu",weight:19240},"ピ":{seq:"pi",weight:18692},"ホ":{seq:"ho",weight:18204},"ェ":{seq:"e",weight:17817},"ョ":{seq:"yo",weight:17731},"ペ":{seq:"pe",weight:14881},"ゴ":{seq:"go",weight:13931},"ヤ":{seq:"ya",weight:12526},"ギ":{seq:"gi",weight:10732},"ヨ":{seq:"yo",weight:10318},"ザ":{seq:"za",weight:10144},"ァ":{seq:"a",weight:10121},"ゼ":{seq:"ze",weight:7689},"ヒ":{seq:"hi",weight:7289},"ヘ":{seq:"he",weight:7129},"ユ":{seq:"yo",weight:6653},"ゲ":{seq:"ge",weight:6481},"ォ":{seq:"o",weight:6245},"ヌ":{seq:"nu",weight:2897},"ゾ":{seq:"zo",weight:2640},"ヴ":{seq:"vu",weight:1145},"ヂ":{seq:"di",weight:149},"ヅ":{seq:"du",weight:127},"ヲ":{seq:"wo",weight:122}}),e.Katakana=t,Object.freeze(t),Object.freeze(t.prototype)}(s||(s={})),Object.freeze(s)}}]); +(self.webpackChunksnakey3=self.webpackChunksnakey3||[]).push([[410],{117:(e,i,s)=>{"use strict";s.r(i),s.d(i,{Japanese:()=>t});var t,h=s(979);!function(e){class i extends h.U{constructor(e){super("japn-hir",i.INITIALIZER,e)}}i.INITIALIZER=Object.freeze({の:{seq:"no",weight:1918313},に:{seq:"ni",weight:1108840},た:{seq:"ta",weight:1067566},い:{seq:"i",weight:1060284},は:{seq:"ha",weight:937811},を:{seq:"wo",weight:936356},と:{seq:"to",weight:927938},る:{seq:"ru",weight:916652},が:{seq:"ga",weight:860742},し:{seq:"shi",weight:848132},で:{seq:"de",weight:764834},て:{seq:"te",weight:758316},な:{seq:"na",weight:720156},か:{seq:"ka",weight:537294},れ:{seq:"re",weight:450805},ら:{seq:"ra",weight:42329},も:{seq:"mo",weight:396142},う:{seq:"u",weight:352965},す:{seq:"su",weight:340654},り:{seq:"ri",weight:333999},こ:{seq:"ko",weight:312227},だ:{seq:"da",weight:280911},ま:{seq:"ma",weight:278599},さ:{seq:"sa",weight:258960},き:{seq:"ki",weight:233505},め:{seq:"me",weight:223806},く:{seq:"ku",weight:221960},あ:{seq:"a",weight:204256},け:{seq:"ke",weight:199362},ど:{seq:"do",weight:196555},ん:{seq:"nn",weight:190068},え:{seq:"e",weight:163664},よ:{seq:"yo",weight:154206},つ:{seq:"tsu",weight:153999},や:{seq:"ya",weight:146156},そ:{seq:"so",weight:131611},わ:{seq:"wa",weight:123077},ち:{seq:"chi",weight:99183},み:{seq:"mi",weight:89264},せ:{seq:"se",weight:83444},ろ:{seq:"ro",weight:73467},ば:{seq:"ba",weight:72228},お:{seq:"o",weight:65870},じ:{seq:"ji",weight:56857},べ:{seq:"be",weight:56005},ず:{seq:"zu",weight:53256},げ:{seq:"ge",weight:49126},ほ:{seq:"ho",weight:48752},へ:{seq:"he",weight:47013},び:{seq:"bi",weight:32312},む:{seq:"mu",weight:31212},ご:{seq:"go",weight:26965},ね:{seq:"ne",weight:23490},ぶ:{seq:"bu",weight:23280},ぐ:{seq:"gu",weight:21549},ぎ:{seq:"gi",weight:19865},ひ:{seq:"hi",weight:19148},ょ:{seq:"yo",weight:14425},づ:{seq:"du",weight:13125},ぼ:{seq:"bo",weight:12402},ざ:{seq:"za",weight:12108},ふ:{seq:"fu",weight:11606},ゃ:{seq:"ya",weight:11522},ぞ:{seq:"zo",weight:10047},ゆ:{seq:"yu",weight:8486},ぜ:{seq:"ze",weight:6893},ぬ:{seq:"nu",weight:5124},ぱ:{seq:"pa",weight:4349},ゅ:{seq:"yu",weight:2755},ぴ:{seq:"pi",weight:1608},ぽ:{seq:"po",weight:1315},ぷ:{seq:"pu",weight:986},ぺ:{seq:"pe",weight:477},ぢ:{seq:"di",weight:82}}),e.Hiragana=i,Object.freeze(i),Object.freeze(i.prototype);class s extends h.U{constructor(e){super("japn-kat",s.INITIALIZER,e)}}s.INITIALIZER=Object.freeze({ン:{seq:"nn",weight:290948},ル:{seq:"ru",weight:189442},ス:{seq:"su",weight:178214},ト:{seq:"to",weight:162802},ア:{seq:"a",weight:127845},イ:{seq:"i",weight:120807},ラ:{seq:"ra",weight:117203},リ:{seq:"ri",weight:106744},ク:{seq:"ku",weight:98209},カ:{seq:"ka",weight:82982},シ:{seq:"shi",weight:80626},タ:{seq:"ta",weight:75319},ロ:{seq:"ro",weight:75301},ド:{seq:"do",weight:74257},ジ:{seq:"ji",weight:61171},フ:{seq:"fu",weight:61115},レ:{seq:"re",weight:60608},メ:{seq:"me",weight:60230},コ:{seq:"ko",weight:58724},マ:{seq:"ma",weight:56123},プ:{seq:"pu",weight:54159},テ:{seq:"te",weight:53404},ム:{seq:"mu",weight:50758},チ:{seq:"chi",weight:48437},バ:{seq:"ba",weight:44970},ビ:{seq:"bi",weight:44462},グ:{seq:"gu",weight:40433},キ:{seq:"ki",weight:39608},ウ:{seq:"u",weight:39323},サ:{seq:"sa",weight:39202},ニ:{seq:"ni",weight:38711},ナ:{seq:"na",weight:38047},エ:{seq:"e",weight:36458},ブ:{seq:"bu",weight:35920},パ:{seq:"pa",weight:35416},セ:{seq:"se",weight:34883},オ:{seq:"o",weight:34718},ィ:{seq:"i",weight:33747},デ:{seq:"de",weight:32665},ュ:{seq:"yu",weight:32616},ミ:{seq:"mi",weight:29262},ャ:{seq:"ya",weight:28144},ボ:{seq:"bo",weight:26651},ダ:{seq:"da",weight:26396},ツ:{seq:"tsu",weight:24541},ポ:{seq:"ho",weight:23742},ベ:{seq:"be",weight:22755},ネ:{seq:"ne",weight:22462},ガ:{seq:"ga",weight:22061},ハ:{seq:"ha",weight:21839},ワ:{seq:"wa",weight:21784},ソ:{seq:"so",weight:20784},ケ:{seq:"ke",weight:20633},モ:{seq:"ho",weight:20070},ノ:{seq:"no",weight:19572},ズ:{seq:"zu",weight:19240},ピ:{seq:"pi",weight:18692},ホ:{seq:"ho",weight:18204},ェ:{seq:"e",weight:17817},ョ:{seq:"yo",weight:17731},ペ:{seq:"pe",weight:14881},ゴ:{seq:"go",weight:13931},ヤ:{seq:"ya",weight:12526},ギ:{seq:"gi",weight:10732},ヨ:{seq:"yo",weight:10318},ザ:{seq:"za",weight:10144},ァ:{seq:"a",weight:10121},ゼ:{seq:"ze",weight:7689},ヒ:{seq:"hi",weight:7289},ヘ:{seq:"he",weight:7129},ユ:{seq:"yo",weight:6653},ゲ:{seq:"ge",weight:6481},ォ:{seq:"o",weight:6245},ヌ:{seq:"nu",weight:2897},ゾ:{seq:"zo",weight:2640},ヴ:{seq:"vu",weight:1145},ヂ:{seq:"di",weight:149},ヅ:{seq:"du",weight:127},ヲ:{seq:"wo",weight:122}}),e.Katakana=s,Object.freeze(s),Object.freeze(s.prototype)}(t||(t={})),Object.freeze(t)}}]); //# sourceMappingURL=Japanese-ts.js.map \ No newline at end of file diff --git a/dist/client/chunk/lang/Japanese-ts.js.map b/dist/client/chunk/lang/Japanese-ts.js.map index c60c693c..b0fa99a5 100644 --- a/dist/client/chunk/lang/Japanese-ts.js.map +++ b/dist/client/chunk/lang/Japanese-ts.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://snakey3/./src/base/lang/impl/Japanese.ts"],"names":["Japanese","Hiragana","weightScaling","super","INITIALIZER","Object","freeze","seq","weight","prototype","Katakana"],"mappings":"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,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,IAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,IAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,IAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,IAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,MAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,IAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,IAAMC,OAAS,OAC3B,IAAK,CAAED,IAAK,KAAMC,OAAU,MAC5B,IAAK,CAAED,IAAK,KAAMC,OAAU,MAC5B,IAAK,CAAED,IAAK,KAAMC,OAAU,MAC5B,IAAK,CAAED,IAAK,KAAMC,OAAU,MAC5B,IAAK,CAAED,IAAK,KAAMC,OAAU,MAC5B,IAAK,CAAED,IAAK,IAAMC,OAAU,MAC5B,IAAK,CAAED,IAAK,KAAMC,OAAU,MAC5B,IAAK,CAAED,IAAK,KAAMC,OAAU,MAC5B,IAAK,CAAED,IAAK,KAAMC,OAAU,MAE5B,IAAK,CAAED,IAAK,KAAMC,OAAW,KAC7B,IAAK,CAAED,IAAK,KAAMC,OAAW,KAC7B,IAAK,CAAED,IAAK,KAAMC,OAAW,OAtFxB,EAAAE,SAAQ,EAkGrBL,OAAOC,OAAOI,GACdL,OAAOC,OAAOI,EAASD,WArN3B,CAAiBT,MAAQ,KAuNzBK,OAAOC,OAAON","file":"chunk/lang/Japanese-ts.js","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://snakey3/./src/base/lang/impl/Japanese.ts"],"names":["Japanese","Hiragana","weightScaling","super","INITIALIZER","Object","freeze","seq","weight","prototype","Katakana"],"mappings":"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3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,IAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,IAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,IAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,IAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,MAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,IAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,IAAMC,OAAS,OAC3B,EAAK,CAAED,IAAK,KAAMC,OAAU,MAC5B,EAAK,CAAED,IAAK,KAAMC,OAAU,MAC5B,EAAK,CAAED,IAAK,KAAMC,OAAU,MAC5B,EAAK,CAAED,IAAK,KAAMC,OAAU,MAC5B,EAAK,CAAED,IAAK,KAAMC,OAAU,MAC5B,EAAK,CAAED,IAAK,IAAMC,OAAU,MAC5B,EAAK,CAAED,IAAK,KAAMC,OAAU,MAC5B,EAAK,CAAED,IAAK,KAAMC,OAAU,MAC5B,EAAK,CAAED,IAAK,KAAMC,OAAU,MAE5B,EAAK,CAAED,IAAK,KAAMC,OAAW,KAC7B,EAAK,CAAED,IAAK,KAAMC,OAAW,KAC7B,EAAK,CAAED,IAAK,KAAMC,OAAW,OAtFxB,EAAAE,SAAQ,EAkGrBL,OAAOC,OAAOI,GACdL,OAAOC,OAAOI,EAASD,WArN3B,CAAiBT,MAAQ,KAuNzBK,OAAOC,OAAON","file":"chunk/lang/Japanese-ts.js","sourceRoot":""} \ No newline at end of file diff --git a/dist/client/chunk/lang/Korean-ts.js b/dist/client/chunk/lang/Korean-ts.js index 620e11c0..4a574267 100644 --- a/dist/client/chunk/lang/Korean-ts.js +++ b/dist/client/chunk/lang/Korean-ts.js @@ -1,2 +1,2 @@ -(window.webpackJsonpsnakey3=window.webpackJsonpsnakey3||[]).push([[8],{24:function(a,o,e){"use strict";e.r(o),e.d(o,"Korean",(function(){return m}));var m,t=e(9);!function(a){class o extends t.a{constructor(a){super("kore-dub",r((a,e,m)=>[a,e,m].flatMap(a=>a.value in o.DUB_KEYBOARD?[a.value]:a.atoms.split("")).map(a=>o.DUB_KEYBOARD[a]).join("")),a)}}o.DUB_KEYBOARD=Object.freeze({"":"","ㅂ":"q","ㅈ":"w","ㄷ":"e","ㄱ":"r","ㅅ":"t","ㅛ":"y","ㅕ":"u","ㅑ":"i","ㅐ":"o","ㅔ":"p","ㅁ":"a","ㄴ":"s","ㅇ":"d","ㄹ":"f","ㅎ":"g","ㅗ":"h","ㅓ":"j","ㅏ":"k","ㅣ":"l","ㅋ":"z","ㅌ":"x","ㅊ":"c","ㅍ":"v","ㅠ":"b","ㅜ":"n","ㅡ":"m","ㅃ":"Q","ㅉ":"W","ㄸ":"E","ㄲ":"R","ㅆ":"T","ㅒ":"O","ㅖ":"P"}),a.Dubeolsik=o,Object.freeze(o),Object.freeze(o.prototype);class e extends t.a{constructor(a){super("kore-sub",r((a,o,m)=>e.SEB_KEYBOARD.INITIALS[a.value]+e.SEB_KEYBOARD.MEDIALS[o.value]+e.SEB_KEYBOARD.FINALS[m.value]),a)}}e.SEB_KEYBOARD=Object.freeze({FINALS:{"":"","ㅎ":"1","ㅆ":"2","ㅂ":"3","ㅅ":"q","ㄹ":"w","ㅇ":"a","ㄴ":"s","ㅁ":"z","ㄱ":"x","ㄲ":"!","ㄺ":"@","ㅈ":"#","ㄿ":"$","ㄾ":"%","ㅍ":"Q","ㅌ":"W","ㄵ":"E","ㅀ":"R","ㄽ":"T","ㄷ":"A","ㄶ":"S","ㄼ":"D","ㄻ":"F","ㅊ":"Z","ㅄ":"X","ㅋ":"C","ㄳ":"V"},MEDIALS:{"ㅛ":"4","ㅠ":"5","ㅑ":"6","ㅖ":"7","ㅢ":"8","ㅕ":"e","ㅐ":"r","ㅓ":"t","ㅣ":"d","ㅏ":"f","ㅡ":"g","ㅔ":"c","ㅗ":"v","ㅜ":"b","ㅒ":"G","ㅘ":"vf","ㅙ":"vr","ㅚ":"vd","ㅝ":"bt","ㅞ":"bc","ㅟ":"bd"},INITIALS:{"ㅋ":"0","ㄹ":"y","ㄷ":"u","ㅁ":"i","ㅊ":"o","ㅍ":"p","ㄴ":"h","ㅇ":"j","ㄱ":"k","ㅈ":"l","ㅂ":";","ㅌ":"'","ㅅ":"n","ㅎ":"m","ㄲ":"!","ㄸ":"uu","ㅃ":";;","ㅆ":"nn","ㅉ":"l"}}),a.Sebeolsik=e,Object.freeze(e),Object.freeze(e.prototype);class m extends t.a{constructor(a){super("kore-rom",r((a,o,e)=>a.roman+o.roman+e.roman),a)}}a.Romanization=m,Object.freeze(m),Object.freeze(m.prototype);const r=a=>{const o={};return n.forEach((e,m)=>{s.forEach((t,r)=>{u.forEach((n,v)=>{let c=m;c=s.length*c+r,c=u.length*c+v;const p=String.fromCharCode(44032+c);o[p]={seq:a(e,t,n),weight:l[p]||1}})})}),o},n=Object.freeze([{value:"ㄱ",atoms:"ㄱ",roman:"g"},{value:"ㄲ",atoms:"ㄱㄱ",roman:"kk"},{value:"ㄴ",atoms:"ㄴ",roman:"n"},{value:"ㄷ",atoms:"ㄷ",roman:"d"},{value:"ㄸ",atoms:"ㄷㄷ",roman:"tt"},{value:"ㄹ",atoms:"ㄹ",roman:"r"},{value:"ㅁ",atoms:"ㅁ",roman:"m"},{value:"ㅂ",atoms:"ㅂ",roman:"b"},{value:"ㅃ",atoms:"ㅂㅂ",roman:"pp"},{value:"ㅅ",atoms:"ㅅ",roman:"s"},{value:"ㅆ",atoms:"ㅅㅅ",roman:"ss"},{value:"ㅇ",atoms:"ㅇ",roman:"-"},{value:"ㅈ",atoms:"ㅈ",roman:"j"},{value:"ㅉ",atoms:"ㅈㅈ",roman:"jj"},{value:"ㅊ",atoms:"ㅊ",roman:"ch"},{value:"ㅋ",atoms:"ㅋ",roman:"k"},{value:"ㅌ",atoms:"ㅌ",roman:"t"},{value:"ㅍ",atoms:"ㅍ",roman:"p"},{value:"ㅎ",atoms:"ㅎ",roman:"h"}]),s=Object.freeze([{value:"ㅏ",atoms:"ㅏ",roman:"a"},{value:"ㅐ",atoms:"ㅐ",roman:"ae"},{value:"ㅑ",atoms:"ㅑ",roman:"ya"},{value:"ㅒ",atoms:"ㅒ",roman:"yae"},{value:"ㅓ",atoms:"ㅓ",roman:"eo"},{value:"ㅔ",atoms:"ㅔ",roman:"e"},{value:"ㅕ",atoms:"ㅕ",roman:"yeo"},{value:"ㅖ",atoms:"ㅖ",roman:"ye"},{value:"ㅗ",atoms:"ㅗ",roman:"o"},{value:"ㅘ",atoms:"ㅗㅏ",roman:"wa"},{value:"ㅙ",atoms:"ㅗㅐ",roman:"wae"},{value:"ㅚ",atoms:"ㅗㅣ",roman:"oe"},{value:"ㅛ",atoms:"ㅛ",roman:"yo"},{value:"ㅜ",atoms:"ㅜ",roman:"u"},{value:"ㅝ",atoms:"ㅜㅓ",roman:"wo"},{value:"ㅞ",atoms:"ㅜㅔ",roman:"we"},{value:"ㅟ",atoms:"ㅜㅣ",roman:"wi"},{value:"ㅠ",atoms:"ㅠ",roman:"yu"},{value:"ㅡ",atoms:"ㅡ",roman:"eu"},{value:"ㅢ",atoms:"ㅡㅣ",roman:"ui"},{value:"ㅣ",atoms:"ㅣ",roman:"i"}]),u=Object.freeze([{value:"",atoms:"",roman:""},{value:"ㄱ",atoms:"ㄱ",roman:"k"},{value:"ㄲ",atoms:"ㄱㄱ",roman:"k"},{value:"ㄳ",atoms:"ㄱㅅ",roman:"kt"},{value:"ㄴ",atoms:"ㄴ",roman:"n"},{value:"ㄵ",atoms:"ㄴㅈ",roman:"nt"},{value:"ㄶ",atoms:"ㄴㅎ",roman:"nt"},{value:"ㄷ",atoms:"ㄷ",roman:"t"},{value:"ㄹ",atoms:"ㄹ",roman:"l"},{value:"ㄺ",atoms:"ㄹㄱ",roman:"lk"},{value:"ㄻ",atoms:"ㄹㅁ",roman:"lm"},{value:"ㄼ",atoms:"ㄹㅂ",roman:"lp"},{value:"ㄽ",atoms:"ㄹㅅ",roman:"lt"},{value:"ㄾ",atoms:"ㄹㅌ",roman:"lt"},{value:"ㄿ",atoms:"ㄹㅍ",roman:"lp"},{value:"ㅀ",atoms:"ㄹㅎ",roman:"lt"},{value:"ㅁ",atoms:"ㅁ",roman:"m"},{value:"ㅂ",atoms:"ㅂ",roman:"p"},{value:"ㅄ",atoms:"ㅂㅅ",roman:"pt"},{value:"ㅅ",atoms:"ㅅ",roman:"t"},{value:"ㅆ",atoms:"ㅅㅅ",roman:"t"},{value:"ㅇ",atoms:"ㅇ",roman:"ng"},{value:"ㅈ",atoms:"ㅈ",roman:"t"},{value:"ㅊ",atoms:"ㅊ",roman:"t"},{value:"ㅋ",atoms:"ㅋ",roman:"k"},{value:"ㅌ",atoms:"ㅌ",roman:"t"},{value:"ㅍ",atoms:"ㅍ",roman:"p"},{value:"ㅎ",atoms:"ㅎ",roman:"t"}]),l=Object.freeze({"":1})}(m||(m={})),Object.freeze(m)}}]); +(self.webpackChunksnakey3=self.webpackChunksnakey3||[]).push([[227],{181:(a,o,e)=>{"use strict";e.r(o),e.d(o,{Korean:()=>m});var m,t=e(979);!function(a){class o extends t.U{constructor(a){super("kore-dub",r(((a,e,m)=>[a,e,m].flatMap((a=>a.value in o.DUB_KEYBOARD?[a.value]:a.atoms.split(""))).map((a=>o.DUB_KEYBOARD[a])).join(""))),a)}}o.DUB_KEYBOARD=Object.freeze({"":"",ㅂ:"q",ㅈ:"w",ㄷ:"e",ㄱ:"r",ㅅ:"t",ㅛ:"y",ㅕ:"u",ㅑ:"i",ㅐ:"o",ㅔ:"p",ㅁ:"a",ㄴ:"s",ㅇ:"d",ㄹ:"f",ㅎ:"g",ㅗ:"h",ㅓ:"j",ㅏ:"k",ㅣ:"l",ㅋ:"z",ㅌ:"x",ㅊ:"c",ㅍ:"v",ㅠ:"b",ㅜ:"n",ㅡ:"m",ㅃ:"Q",ㅉ:"W",ㄸ:"E",ㄲ:"R",ㅆ:"T",ㅒ:"O",ㅖ:"P"}),a.Dubeolsik=o,Object.freeze(o),Object.freeze(o.prototype);class e extends t.U{constructor(a){super("kore-sub",r(((a,o,m)=>e.SEB_KEYBOARD.INITIALS[a.value]+e.SEB_KEYBOARD.MEDIALS[o.value]+e.SEB_KEYBOARD.FINALS[m.value])),a)}}e.SEB_KEYBOARD=Object.freeze({FINALS:{"":"",ㅎ:"1",ㅆ:"2",ㅂ:"3",ㅅ:"q",ㄹ:"w",ㅇ:"a",ㄴ:"s",ㅁ:"z",ㄱ:"x",ㄲ:"!",ㄺ:"@",ㅈ:"#",ㄿ:"$",ㄾ:"%",ㅍ:"Q",ㅌ:"W",ㄵ:"E",ㅀ:"R",ㄽ:"T",ㄷ:"A",ㄶ:"S",ㄼ:"D",ㄻ:"F",ㅊ:"Z",ㅄ:"X",ㅋ:"C",ㄳ:"V"},MEDIALS:{ㅛ:"4",ㅠ:"5",ㅑ:"6",ㅖ:"7",ㅢ:"8",ㅕ:"e",ㅐ:"r",ㅓ:"t",ㅣ:"d",ㅏ:"f",ㅡ:"g",ㅔ:"c",ㅗ:"v",ㅜ:"b",ㅒ:"G",ㅘ:"vf",ㅙ:"vr",ㅚ:"vd",ㅝ:"bt",ㅞ:"bc",ㅟ:"bd"},INITIALS:{ㅋ:"0",ㄹ:"y",ㄷ:"u",ㅁ:"i",ㅊ:"o",ㅍ:"p",ㄴ:"h",ㅇ:"j",ㄱ:"k",ㅈ:"l",ㅂ:";",ㅌ:"'",ㅅ:"n",ㅎ:"m",ㄲ:"!",ㄸ:"uu",ㅃ:";;",ㅆ:"nn",ㅉ:"l"}}),a.Sebeolsik=e,Object.freeze(e),Object.freeze(e.prototype);class m extends t.U{constructor(a){super("kore-rom",r(((a,o,e)=>a.roman+o.roman+e.roman)),a)}}a.Romanization=m,Object.freeze(m),Object.freeze(m.prototype);const r=a=>{const o={};return n.forEach(((e,m)=>{s.forEach(((t,r)=>{l.forEach(((n,v)=>{let c=m;c=s.length*c+r,c=l.length*c+v;const b=String.fromCharCode(44032+c);o[b]={seq:a(e,t,n),weight:u[b]||1}}))}))})),o},n=Object.freeze([{value:"ㄱ",atoms:"ㄱ",roman:"g"},{value:"ㄲ",atoms:"ㄱㄱ",roman:"kk"},{value:"ㄴ",atoms:"ㄴ",roman:"n"},{value:"ㄷ",atoms:"ㄷ",roman:"d"},{value:"ㄸ",atoms:"ㄷㄷ",roman:"tt"},{value:"ㄹ",atoms:"ㄹ",roman:"r"},{value:"ㅁ",atoms:"ㅁ",roman:"m"},{value:"ㅂ",atoms:"ㅂ",roman:"b"},{value:"ㅃ",atoms:"ㅂㅂ",roman:"pp"},{value:"ㅅ",atoms:"ㅅ",roman:"s"},{value:"ㅆ",atoms:"ㅅㅅ",roman:"ss"},{value:"ㅇ",atoms:"ㅇ",roman:"-"},{value:"ㅈ",atoms:"ㅈ",roman:"j"},{value:"ㅉ",atoms:"ㅈㅈ",roman:"jj"},{value:"ㅊ",atoms:"ㅊ",roman:"ch"},{value:"ㅋ",atoms:"ㅋ",roman:"k"},{value:"ㅌ",atoms:"ㅌ",roman:"t"},{value:"ㅍ",atoms:"ㅍ",roman:"p"},{value:"ㅎ",atoms:"ㅎ",roman:"h"}]),s=Object.freeze([{value:"ㅏ",atoms:"ㅏ",roman:"a"},{value:"ㅐ",atoms:"ㅐ",roman:"ae"},{value:"ㅑ",atoms:"ㅑ",roman:"ya"},{value:"ㅒ",atoms:"ㅒ",roman:"yae"},{value:"ㅓ",atoms:"ㅓ",roman:"eo"},{value:"ㅔ",atoms:"ㅔ",roman:"e"},{value:"ㅕ",atoms:"ㅕ",roman:"yeo"},{value:"ㅖ",atoms:"ㅖ",roman:"ye"},{value:"ㅗ",atoms:"ㅗ",roman:"o"},{value:"ㅘ",atoms:"ㅗㅏ",roman:"wa"},{value:"ㅙ",atoms:"ㅗㅐ",roman:"wae"},{value:"ㅚ",atoms:"ㅗㅣ",roman:"oe"},{value:"ㅛ",atoms:"ㅛ",roman:"yo"},{value:"ㅜ",atoms:"ㅜ",roman:"u"},{value:"ㅝ",atoms:"ㅜㅓ",roman:"wo"},{value:"ㅞ",atoms:"ㅜㅔ",roman:"we"},{value:"ㅟ",atoms:"ㅜㅣ",roman:"wi"},{value:"ㅠ",atoms:"ㅠ",roman:"yu"},{value:"ㅡ",atoms:"ㅡ",roman:"eu"},{value:"ㅢ",atoms:"ㅡㅣ",roman:"ui"},{value:"ㅣ",atoms:"ㅣ",roman:"i"}]),l=Object.freeze([{value:"",atoms:"",roman:""},{value:"ㄱ",atoms:"ㄱ",roman:"k"},{value:"ㄲ",atoms:"ㄱㄱ",roman:"k"},{value:"ㄳ",atoms:"ㄱㅅ",roman:"kt"},{value:"ㄴ",atoms:"ㄴ",roman:"n"},{value:"ㄵ",atoms:"ㄴㅈ",roman:"nt"},{value:"ㄶ",atoms:"ㄴㅎ",roman:"nt"},{value:"ㄷ",atoms:"ㄷ",roman:"t"},{value:"ㄹ",atoms:"ㄹ",roman:"l"},{value:"ㄺ",atoms:"ㄹㄱ",roman:"lk"},{value:"ㄻ",atoms:"ㄹㅁ",roman:"lm"},{value:"ㄼ",atoms:"ㄹㅂ",roman:"lp"},{value:"ㄽ",atoms:"ㄹㅅ",roman:"lt"},{value:"ㄾ",atoms:"ㄹㅌ",roman:"lt"},{value:"ㄿ",atoms:"ㄹㅍ",roman:"lp"},{value:"ㅀ",atoms:"ㄹㅎ",roman:"lt"},{value:"ㅁ",atoms:"ㅁ",roman:"m"},{value:"ㅂ",atoms:"ㅂ",roman:"p"},{value:"ㅄ",atoms:"ㅂㅅ",roman:"pt"},{value:"ㅅ",atoms:"ㅅ",roman:"t"},{value:"ㅆ",atoms:"ㅅㅅ",roman:"t"},{value:"ㅇ",atoms:"ㅇ",roman:"ng"},{value:"ㅈ",atoms:"ㅈ",roman:"t"},{value:"ㅊ",atoms:"ㅊ",roman:"t"},{value:"ㅋ",atoms:"ㅋ",roman:"k"},{value:"ㅌ",atoms:"ㅌ",roman:"t"},{value:"ㅍ",atoms:"ㅍ",roman:"p"},{value:"ㅎ",atoms:"ㅎ",roman:"t"}]),u=Object.freeze({"":1})}(m||(m={})),Object.freeze(m)}}]); //# sourceMappingURL=Korean-ts.js.map \ No newline at end of file diff --git a/dist/client/chunk/lang/Korean-ts.js.map b/dist/client/chunk/lang/Korean-ts.js.map index f8a78e33..cbccd96f 100644 --- a/dist/client/chunk/lang/Korean-ts.js.map +++ b/dist/client/chunk/lang/Korean-ts.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://snakey3/./src/base/lang/impl/Korean.ts"],"names":["Korean","Dubeolsik","weightScaling","super","INITIALIZE","ij","mj","fj","flatMap","jamos","value","DUB_KEYBOARD","atoms","split","map","atom","join","Object","freeze","prototype","Sebeolsik","SEB_KEYBOARD","INITIALS","MEDIALS","FINALS","Romanization","roman","seqBuilder","forwardDict","forEach","initialJamo","initialIdx","medialJamo","medialIdx","finalJamo","finalIdx","offset","length","char","String","fromCharCode","seq","weight","WEIGHTS"],"mappings":"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","file":"chunk/lang/Korean-ts.js","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://snakey3/./src/base/lang/impl/Korean.ts"],"names":["Korean","Dubeolsik","weightScaling","super","INITIALIZE","ij","mj","fj","flatMap","jamos","value","DUB_KEYBOARD","atoms","split","map","atom","join","Object","freeze","prototype","Sebeolsik","SEB_KEYBOARD","INITIALS","MEDIALS","FINALS","Romanization","roman","seqBuilder","forwardDict","forEach","initialJamo","initialIdx","medialJamo","medialIdx","finalJamo","finalIdx","offset","length","char","String","fromCharCode","seq","weight","WEIGHTS"],"mappings":"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","file":"chunk/lang/Korean-ts.js","sourceRoot":""} \ No newline at end of file diff --git a/dist/client/chunk/lang/Morse-ts.js b/dist/client/chunk/lang/Morse-ts.js index f30dc33e..8d7a3c5d 100644 --- a/dist/client/chunk/lang/Morse-ts.js +++ b/dist/client/chunk/lang/Morse-ts.js @@ -1,2 +1,2 @@ -(window.webpackJsonpsnakey3=window.webpackJsonpsnakey3||[]).push([[9],{25:function(e,t,n){"use strict";n.r(t),n.d(t,"Morse",(function(){return c}));var c,o=n(9);!function(e){class t extends o.a{}e.Encode=t,Object.freeze(t),Object.freeze(t.prototype);class n extends o.a{}e.Decode=n,Object.freeze(n),Object.freeze(n.prototype)}(c||(c={})),Object.freeze(c)}}]); +(self.webpackChunksnakey3=self.webpackChunksnakey3||[]).push([[285],{222:(e,s,t)=>{"use strict";t.r(s),t.d(s,{Morse:()=>c});var c,r=t(979);!function(e){class s extends r.U{}e.Encode=s,Object.freeze(s),Object.freeze(s.prototype);class t extends r.U{}e.Decode=t,Object.freeze(t),Object.freeze(t.prototype)}(c||(c={})),Object.freeze(c)}}]); //# sourceMappingURL=Morse-ts.js.map \ No newline at end of file diff --git a/dist/client/chunk/lang/Morse-ts.js.map b/dist/client/chunk/lang/Morse-ts.js.map index 4f3d5a2a..d5732177 100644 --- a/dist/client/chunk/lang/Morse-ts.js.map +++ b/dist/client/chunk/lang/Morse-ts.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://snakey3/./src/base/lang/impl/Morse.ts"],"names":["Morse","Encode","Object","freeze","prototype","Decode"],"mappings":"uGAAA,iDAQiBA,EARjB,QAQA,SAAiBA,GAMb,MAAaC,UAAe,KAAf,EAAAA,OAAM,EAEnBC,OAAOC,OAAOF,GACdC,OAAOC,OAAOF,EAAOG,WAOrB,MAAaC,UAAe,KAAf,EAAAA,OAAM,EAEnBH,OAAOC,OAAOE,GACdH,OAAOC,OAAOE,EAAOD,WAnBzB,CAAiBJ,MAAK,KAqBtBE,OAAOC,OAAOH","file":"chunk/lang/Morse-ts.js","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://snakey3/./src/base/lang/impl/Morse.ts"],"names":["Morse","Encode","Object","freeze","prototype","Decode"],"mappings":"gIAQiBA,E,UAAjB,SAAiBA,GAMb,MAAaC,UAAe,KAAf,EAAAA,OAAM,EAEnBC,OAAOC,OAAOF,GACdC,OAAOC,OAAOF,EAAOG,WAOrB,MAAaC,UAAe,KAAf,EAAAA,OAAM,EAEnBH,OAAOC,OAAOE,GACdH,OAAOC,OAAOE,EAAOD,WAnBzB,CAAiBJ,MAAK,KAqBtBE,OAAOC,OAAOH","file":"chunk/lang/Morse-ts.js","sourceRoot":""} \ No newline at end of file diff --git a/dist/client/chunk/src_base_game_gameparts_GamepartEvents_ts-src_client_game_BrowserGame_ts.js b/dist/client/chunk/src_base_game_gameparts_GamepartEvents_ts-src_client_game_BrowserGame_ts.js new file mode 100644 index 00000000..95769183 --- /dev/null +++ b/dist/client/chunk/src_base_game_gameparts_GamepartEvents_ts-src_client_game_BrowserGame_ts.js @@ -0,0 +1,171 @@ +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is not neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(self["webpackChunksnakey3"] = self["webpackChunksnakey3"] || []).push([["src_base_game_gameparts_GamepartEvents_ts-src_client_game_BrowserGame_ts"],{ + +/***/ "./assets/style/game/_barrel.css": +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvc3R5bGUvZ2FtZS9fYmFycmVsLmNzcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL3NuYWtleTMvLi9hc3NldHMvc3R5bGUvZ2FtZS9fYmFycmVsLmNzcz8yODdmIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuZXhwb3J0IHt9OyJdLCJtYXBwaW5ncyI6IjtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./assets/style/game/_barrel.css\n"); + +/***/ }), + +/***/ "./src/base/floor/Grid.ts": +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Grid\": () => /* binding */ Grid\n/* harmony export */ });\n/* harmony import */ var defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/defs/JsUtils.ts\");\n/* harmony import */ var _TileGetter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/floor/TileGetter.ts\");\n\r\n\r\n/**\r\n * # 🗺 The Grid Class\r\n *\r\n * A Collection of Tiles.\r\n */\r\nclass Grid {\r\n /**\r\n * Protected. See `Grid.getImplementation` for how to access class\r\n * literals for construction.\r\n *\r\n * @param desc -\r\n */\r\n constructor(desc) {\r\n this.static = desc.gridClass;\r\n this.dimensions = desc.dimensions;\r\n this.tile = new _TileGetter__WEBPACK_IMPORTED_MODULE_1__.TileGetter(this);\r\n defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.propNoWrite(this, [\"static\", \"dimensions\", \"tile\"]);\r\n }\r\n get area() {\r\n return this.static.getArea(this.dimensions);\r\n }\r\n /**\r\n * Calls {@link Tile#reset} for each {@link Tile} in this `Grid`.\r\n */\r\n reset() {\r\n this.forEachTile((tile) => tile.reset());\r\n }\r\n /**\r\n * This action is commonly performed by the GameManager when\r\n * shuffling in new CSP's to its grid. Grid implementations are\r\n * encouraged to override it if they have a more efficient way to\r\n * produce the same result.\r\n */\r\n getDestsFromSourcesTo(originCoord) {\r\n return Array.from(new Set(this.tile.sourcesTo(originCoord).get\r\n .flatMap((sourceToTarget) => this.tile.destsFrom(sourceToTarget.coord).get)));\r\n }\r\n getRandomCoord() {\r\n return this.static.getRandomCoord(this.dimensions);\r\n }\r\n}\r\n(function (Grid) {\r\n ;\r\n /**\r\n * @returns\r\n * A Grid class for the specified coordinate system.\r\n *\r\n * @param coordSys -\r\n */\r\n Grid.getImplementation = (coordSys) => {\r\n // Note: At the time of writing this, separating this into\r\n // two lines is necessary (otherwise Typescript will feel\r\n // overwhelmed)\r\n const ctor = Grid._Constructors[coordSys];\r\n return ctor;\r\n };\r\n})(Grid || (Grid = {}));\r\n// Grid gets frozen in PostInit after _Constructors get initialized.\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9mbG9vci9HcmlkLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc25ha2V5My8uL3NyYy9iYXNlL2Zsb29yL0dyaWQudHM/YmY3MiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBKc1V0aWxzIH0gZnJvbSBcImRlZnMvSnNVdGlsc1wiO1xyXG5pbXBvcnQgeyBUaWxlR2V0dGVyIH0gZnJvbSBcIi4vVGlsZUdldHRlclwiO1xyXG4vKipcclxuICogIyDwn5e6IFRoZSBHcmlkIENsYXNzXHJcbiAqXHJcbiAqIEEgQ29sbGVjdGlvbiBvZiBUaWxlcy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBHcmlkIHtcclxuICAgIC8qKlxyXG4gICAgICogUHJvdGVjdGVkLiBTZWUgYEdyaWQuZ2V0SW1wbGVtZW50YXRpb25gIGZvciBob3cgdG8gYWNjZXNzIGNsYXNzXHJcbiAgICAgKiBsaXRlcmFscyBmb3IgY29uc3RydWN0aW9uLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBkZXNjIC1cclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoZGVzYykge1xyXG4gICAgICAgIHRoaXMuc3RhdGljID0gZGVzYy5ncmlkQ2xhc3M7XHJcbiAgICAgICAgdGhpcy5kaW1lbnNpb25zID0gZGVzYy5kaW1lbnNpb25zO1xyXG4gICAgICAgIHRoaXMudGlsZSA9IG5ldyBUaWxlR2V0dGVyKHRoaXMpO1xyXG4gICAgICAgIEpzVXRpbHMucHJvcE5vV3JpdGUodGhpcywgW1wic3RhdGljXCIsIFwiZGltZW5zaW9uc1wiLCBcInRpbGVcIl0pO1xyXG4gICAgfVxyXG4gICAgZ2V0IGFyZWEoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGljLmdldEFyZWEodGhpcy5kaW1lbnNpb25zKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbHMge0BsaW5rIFRpbGUjcmVzZXR9IGZvciBlYWNoIHtAbGluayBUaWxlfSBpbiB0aGlzIGBHcmlkYC5cclxuICAgICAqL1xyXG4gICAgcmVzZXQoKSB7XHJcbiAgICAgICAgdGhpcy5mb3JFYWNoVGlsZSgodGlsZSkgPT4gdGlsZS5yZXNldCgpKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBhY3Rpb24gaXMgY29tbW9ubHkgcGVyZm9ybWVkIGJ5IHRoZSBHYW1lTWFuYWdlciB3aGVuXHJcbiAgICAgKiBzaHVmZmxpbmcgaW4gbmV3IENTUCdzIHRvIGl0cyBncmlkLiBHcmlkIGltcGxlbWVudGF0aW9ucyBhcmVcclxuICAgICAqIGVuY291cmFnZWQgdG8gb3ZlcnJpZGUgaXQgaWYgdGhleSBoYXZlIGEgbW9yZSBlZmZpY2llbnQgd2F5IHRvXHJcbiAgICAgKiBwcm9kdWNlIHRoZSBzYW1lIHJlc3VsdC5cclxuICAgICAqL1xyXG4gICAgZ2V0RGVzdHNGcm9tU291cmNlc1RvKG9yaWdpbkNvb3JkKSB7XHJcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20obmV3IFNldCh0aGlzLnRpbGUuc291cmNlc1RvKG9yaWdpbkNvb3JkKS5nZXRcclxuICAgICAgICAgICAgLmZsYXRNYXAoKHNvdXJjZVRvVGFyZ2V0KSA9PiB0aGlzLnRpbGUuZGVzdHNGcm9tKHNvdXJjZVRvVGFyZ2V0LmNvb3JkKS5nZXQpKSk7XHJcbiAgICB9XHJcbiAgICBnZXRSYW5kb21Db29yZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdGF0aWMuZ2V0UmFuZG9tQ29vcmQodGhpcy5kaW1lbnNpb25zKTtcclxuICAgIH1cclxufVxyXG4oZnVuY3Rpb24gKEdyaWQpIHtcclxuICAgIDtcclxuICAgIC8qKlxyXG4gICAgICogQHJldHVybnNcclxuICAgICAqIEEgR3JpZCBjbGFzcyBmb3IgdGhlIHNwZWNpZmllZCBjb29yZGluYXRlIHN5c3RlbS5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gY29vcmRTeXMgLVxyXG4gICAgICovXHJcbiAgICBHcmlkLmdldEltcGxlbWVudGF0aW9uID0gKGNvb3JkU3lzKSA9PiB7XHJcbiAgICAgICAgLy8gTm90ZTogQXQgdGhlIHRpbWUgb2Ygd3JpdGluZyB0aGlzLCBzZXBhcmF0aW5nIHRoaXMgaW50b1xyXG4gICAgICAgIC8vIHR3byBsaW5lcyBpcyBuZWNlc3NhcnkgKG90aGVyd2lzZSBUeXBlc2NyaXB0IHdpbGwgZmVlbFxyXG4gICAgICAgIC8vIG92ZXJ3aGVsbWVkKVxyXG4gICAgICAgIGNvbnN0IGN0b3IgPSBHcmlkLl9Db25zdHJ1Y3RvcnNbY29vcmRTeXNdO1xyXG4gICAgICAgIHJldHVybiBjdG9yO1xyXG4gICAgfTtcclxufSkoR3JpZCB8fCAoR3JpZCA9IHt9KSk7XHJcbi8vIEdyaWQgZ2V0cyBmcm96ZW4gaW4gUG9zdEluaXQgYWZ0ZXIgX0NvbnN0cnVjdG9ycyBnZXQgaW5pdGlhbGl6ZWQuXHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/base/floor/Grid.ts\n"); + +/***/ }), + +/***/ "./src/base/floor/Tile.ts": +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Coord\": () => /* reexport safe */ _Coord__WEBPACK_IMPORTED_MODULE_2__.Coord,\n/* harmony export */ \"Tile\": () => /* binding */ Tile\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/defs/JsUtils.ts\");\n/* harmony import */ var defs_TypeDefs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/defs/TypeDefs.ts\");\n/* harmony import */ var _Coord__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./src/base/floor/Coord.ts\");\nvar _occupantId, _freeHealth, _langChar, _langSeq;\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * # The Tile Class\r\n *\r\n * As an implementation choice, tiles are dumb. That is, they have\r\n * no knowledge of their context. Their internals are all managed by\r\n * their host {@link Game} through method calls.\r\n *\r\n * From a caller's point of view, extending classes should have am\r\n * identical constructor signature as that of this base class. This\r\n * can be done by a type assertion statement: ` as\r\n * Tile.ConstructorType`.\r\n *\r\n * @template S\r\n * The coordinate system enum for this tile's coordinate.\r\n */\r\nclass Tile {\r\n /**\r\n * @param coord -\r\n */\r\n constructor(coord) {\r\n _occupantId.set(this, void 0);\r\n _freeHealth.set(this, void 0);\r\n _langChar.set(this, void 0);\r\n _langSeq.set(this, void 0);\r\n this.coord = coord;\r\n defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.propNoWrite(this, [\"coord\"]);\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldSet)(this, _occupantId, defs_TypeDefs__WEBPACK_IMPORTED_MODULE_1__.Player.Id.NULL);\r\n }\r\n reset() {\r\n this.evictOccupant();\r\n this.lastKnownUpdateId = 0;\r\n this.freeHealth = 0;\r\n // This is also done when shuffling individual tiles throughout\r\n // the game, but it is done here since initially, nothing needs\r\n // to be avoided because no CSP's have been set yet.\r\n this.setLangCharSeqPair(defs_TypeDefs__WEBPACK_IMPORTED_MODULE_1__.Lang.CharSeqPair.NULL);\r\n }\r\n /**\r\n * Any overrides must make a supercall to this implementation.\r\n *\r\n * Must be followed by a call to `PlayerStatus._onAfterOccupy()`.\r\n *\r\n * @param playerId -\r\n */\r\n _setOccupant(playerId, immigrantInfo) {\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldSet)(this, _occupantId, playerId);\r\n }\r\n get isOccupied() {\r\n return this.occupantId !== defs_TypeDefs__WEBPACK_IMPORTED_MODULE_1__.Player.Id.NULL;\r\n }\r\n evictOccupant() {\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldSet)(this, _occupantId, defs_TypeDefs__WEBPACK_IMPORTED_MODULE_1__.Player.Id.NULL);\r\n }\r\n get occupantId() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldGet)(this, _occupantId);\r\n }\r\n get freeHealth() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldGet)(this, _freeHealth);\r\n }\r\n set freeHealth(newFreeHealth) {\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldSet)(this, _freeHealth, newFreeHealth);\r\n }\r\n /**\r\n * @override\r\n */\r\n setLangCharSeqPair(charSeqPair) {\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldSet)(this, _langChar, charSeqPair.char);\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldSet)(this, _langSeq, charSeqPair.seq);\r\n }\r\n get langChar() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldGet)(this, _langChar);\r\n }\r\n get langSeq() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldGet)(this, _langSeq);\r\n }\r\n}\r\n_occupantId = new WeakMap(), _freeHealth = new WeakMap(), _langChar = new WeakMap(), _langSeq = new WeakMap();\r\n// If this errs when changing the constructor signature, then\r\n// the type definition being asserted should be updated to match.\r\nTile;\r\nObject.freeze(Tile);\r\nObject.freeze(Tile.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9mbG9vci9UaWxlLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc25ha2V5My8uL3NyYy9iYXNlL2Zsb29yL1RpbGUudHM/Njg1YiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX29jY3VwYW50SWQsIF9mcmVlSGVhbHRoLCBfbGFuZ0NoYXIsIF9sYW5nU2VxO1xyXG5pbXBvcnQgeyBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0LCBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0IH0gZnJvbSBcInRzbGliXCI7XHJcbmltcG9ydCB7IEpzVXRpbHMgfSBmcm9tIFwiZGVmcy9Kc1V0aWxzXCI7XHJcbmltcG9ydCB7IExhbmcsIFBsYXllciB9IGZyb20gXCJkZWZzL1R5cGVEZWZzXCI7XHJcbmltcG9ydCB7IENvb3JkIH0gZnJvbSBcIi4vQ29vcmRcIjtcclxuZXhwb3J0IHsgQ29vcmQgfTtcclxuLyoqXHJcbiAqICMgVGhlIFRpbGUgQ2xhc3NcclxuICpcclxuICogQXMgYW4gaW1wbGVtZW50YXRpb24gY2hvaWNlLCB0aWxlcyBhcmUgZHVtYi4gVGhhdCBpcywgdGhleSBoYXZlXHJcbiAqIG5vIGtub3dsZWRnZSBvZiB0aGVpciBjb250ZXh0LiBUaGVpciBpbnRlcm5hbHMgYXJlIGFsbCBtYW5hZ2VkIGJ5XHJcbiAqIHRoZWlyIGhvc3Qge0BsaW5rIEdhbWV9IHRocm91Z2ggbWV0aG9kIGNhbGxzLlxyXG4gKlxyXG4gKiBGcm9tIGEgY2FsbGVyJ3MgcG9pbnQgb2YgdmlldywgZXh0ZW5kaW5nIGNsYXNzZXMgc2hvdWxkIGhhdmUgYW1cclxuICogaWRlbnRpY2FsIGNvbnN0cnVjdG9yIHNpZ25hdHVyZSBhcyB0aGF0IG9mIHRoaXMgYmFzZSBjbGFzcy4gVGhpc1xyXG4gKiBjYW4gYmUgZG9uZSBieSBhIHR5cGUgYXNzZXJ0aW9uIHN0YXRlbWVudDogYDxleHRlbnNpb24gY2xhc3M+IGFzXHJcbiAqIFRpbGUuQ29uc3RydWN0b3JUeXBlPENvb3JkLlN5c3RlbT5gLlxyXG4gKlxyXG4gKiBAdGVtcGxhdGUgU1xyXG4gKiBUaGUgY29vcmRpbmF0ZSBzeXN0ZW0gZW51bSBmb3IgdGhpcyB0aWxlJ3MgY29vcmRpbmF0ZS5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBUaWxlIHtcclxuICAgIC8qKlxyXG4gICAgICogQHBhcmFtIGNvb3JkIC1cclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoY29vcmQpIHtcclxuICAgICAgICBfb2NjdXBhbnRJZC5zZXQodGhpcywgdm9pZCAwKTtcclxuICAgICAgICBfZnJlZUhlYWx0aC5zZXQodGhpcywgdm9pZCAwKTtcclxuICAgICAgICBfbGFuZ0NoYXIuc2V0KHRoaXMsIHZvaWQgMCk7XHJcbiAgICAgICAgX2xhbmdTZXEuc2V0KHRoaXMsIHZvaWQgMCk7XHJcbiAgICAgICAgdGhpcy5jb29yZCA9IGNvb3JkO1xyXG4gICAgICAgIEpzVXRpbHMucHJvcE5vV3JpdGUodGhpcywgW1wiY29vcmRcIl0pO1xyXG4gICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX29jY3VwYW50SWQsIFBsYXllci5JZC5OVUxMKTtcclxuICAgIH1cclxuICAgIHJlc2V0KCkge1xyXG4gICAgICAgIHRoaXMuZXZpY3RPY2N1cGFudCgpO1xyXG4gICAgICAgIHRoaXMubGFzdEtub3duVXBkYXRlSWQgPSAwO1xyXG4gICAgICAgIHRoaXMuZnJlZUhlYWx0aCA9IDA7XHJcbiAgICAgICAgLy8gVGhpcyBpcyBhbHNvIGRvbmUgd2hlbiBzaHVmZmxpbmcgaW5kaXZpZHVhbCB0aWxlcyB0aHJvdWdob3V0XHJcbiAgICAgICAgLy8gdGhlIGdhbWUsIGJ1dCBpdCBpcyBkb25lIGhlcmUgc2luY2UgaW5pdGlhbGx5LCBub3RoaW5nIG5lZWRzXHJcbiAgICAgICAgLy8gdG8gYmUgYXZvaWRlZCBiZWNhdXNlIG5vIENTUCdzIGhhdmUgYmVlbiBzZXQgeWV0LlxyXG4gICAgICAgIHRoaXMuc2V0TGFuZ0NoYXJTZXFQYWlyKExhbmcuQ2hhclNlcVBhaXIuTlVMTCk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEFueSBvdmVycmlkZXMgbXVzdCBtYWtlIGEgc3VwZXJjYWxsIHRvIHRoaXMgaW1wbGVtZW50YXRpb24uXHJcbiAgICAgKlxyXG4gICAgICogTXVzdCBiZSBmb2xsb3dlZCBieSBhIGNhbGwgdG8gYFBsYXllclN0YXR1cy5fb25BZnRlck9jY3VweSgpYC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gcGxheWVySWQgLVxyXG4gICAgICovXHJcbiAgICBfc2V0T2NjdXBhbnQocGxheWVySWQsIGltbWlncmFudEluZm8pIHtcclxuICAgICAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9vY2N1cGFudElkLCBwbGF5ZXJJZCk7XHJcbiAgICB9XHJcbiAgICBnZXQgaXNPY2N1cGllZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5vY2N1cGFudElkICE9PSBQbGF5ZXIuSWQuTlVMTDtcclxuICAgIH1cclxuICAgIGV2aWN0T2NjdXBhbnQoKSB7XHJcbiAgICAgICAgX19jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfb2NjdXBhbnRJZCwgUGxheWVyLklkLk5VTEwpO1xyXG4gICAgfVxyXG4gICAgZ2V0IG9jY3VwYW50SWQoKSB7XHJcbiAgICAgICAgcmV0dXJuIF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX29jY3VwYW50SWQpO1xyXG4gICAgfVxyXG4gICAgZ2V0IGZyZWVIZWFsdGgoKSB7XHJcbiAgICAgICAgcmV0dXJuIF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2ZyZWVIZWFsdGgpO1xyXG4gICAgfVxyXG4gICAgc2V0IGZyZWVIZWFsdGgobmV3RnJlZUhlYWx0aCkge1xyXG4gICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX2ZyZWVIZWFsdGgsIG5ld0ZyZWVIZWFsdGgpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBAb3ZlcnJpZGVcclxuICAgICAqL1xyXG4gICAgc2V0TGFuZ0NoYXJTZXFQYWlyKGNoYXJTZXFQYWlyKSB7XHJcbiAgICAgICAgX19jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfbGFuZ0NoYXIsIGNoYXJTZXFQYWlyLmNoYXIpO1xyXG4gICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX2xhbmdTZXEsIGNoYXJTZXFQYWlyLnNlcSk7XHJcbiAgICB9XHJcbiAgICBnZXQgbGFuZ0NoYXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2xhbmdDaGFyKTtcclxuICAgIH1cclxuICAgIGdldCBsYW5nU2VxKCkge1xyXG4gICAgICAgIHJldHVybiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9sYW5nU2VxKTtcclxuICAgIH1cclxufVxyXG5fb2NjdXBhbnRJZCA9IG5ldyBXZWFrTWFwKCksIF9mcmVlSGVhbHRoID0gbmV3IFdlYWtNYXAoKSwgX2xhbmdDaGFyID0gbmV3IFdlYWtNYXAoKSwgX2xhbmdTZXEgPSBuZXcgV2Vha01hcCgpO1xyXG4vLyBJZiB0aGlzIGVycnMgd2hlbiBjaGFuZ2luZyB0aGUgY29uc3RydWN0b3Igc2lnbmF0dXJlLCB0aGVuXHJcbi8vIHRoZSB0eXBlIGRlZmluaXRpb24gYmVpbmcgYXNzZXJ0ZWQgc2hvdWxkIGJlIHVwZGF0ZWQgdG8gbWF0Y2guXHJcblRpbGU7XHJcbk9iamVjdC5mcmVlemUoVGlsZSk7XHJcbk9iamVjdC5mcmVlemUoVGlsZS5wcm90b3R5cGUpO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/base/floor/Tile.ts\n"); + +/***/ }), + +/***/ "./src/base/floor/TileGetter.ts": +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"TileGetter\": () => /* binding */ TileGetter\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./node_modules/tslib/tslib.es6.js\");\nvar _source_1;\r\n\r\n/**\r\n * A utility class to get destinations-to or sources-from a tile at\r\n * a specified coordinate. It is recommended to name the calling\r\n * variable \"tile\". A query starts with calling one of the methods\r\n * `at`, `destsFrom`, or `sourcesTo`. Optional filtering mutators\r\n * can be applied intermediately such as `unoccupied`. The query\r\n * ends with one of the getters `occupants` or `get`.\r\n *\r\n * @template S\r\n *\r\n * @template A\r\n * This allows `Source` implementations to accept a coordinate\r\n * specifier as an argument, such as is appropriate with a grid,\r\n * or to provide that information implicitly inside itself as\r\n * part of its spec, as is appropriate with a player.\r\n *\r\n */\r\nclass TileGetter {\r\n constructor(source) {\r\n _source_1.set(this, void 0);\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__classPrivateFieldSet)(this, _source_1, source);\r\n Object.freeze(this);\r\n }\r\n get _source() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__classPrivateFieldGet)(this, _source_1);\r\n }\r\n at(...args) {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__classPrivateFieldGet)(this, _source_1)._getTileAt(...args);\r\n }\r\n destsFrom(...args) {\r\n return new Query((0,tslib__WEBPACK_IMPORTED_MODULE_0__.__classPrivateFieldGet)(this, _source_1)._getTileDestsFrom(...args));\r\n }\r\n sourcesTo(...args) {\r\n return new Query((0,tslib__WEBPACK_IMPORTED_MODULE_0__.__classPrivateFieldGet)(this, _source_1)._getTileSourcesTo(...args));\r\n }\r\n}\r\n_source_1 = new WeakMap();\r\nObject.freeze(TileGetter);\r\nObject.freeze(TileGetter.prototype);\r\n/**\r\n *\r\n */\r\nclass Query {\r\n constructor(contents) {\r\n this.contents = contents;\r\n Object.seal(this);\r\n }\r\n get occupied() {\r\n this.contents = this.contents.filter((tile) => tile.isOccupied);\r\n return this;\r\n }\r\n get unoccupied() {\r\n this.contents = this.contents.filter((tile) => !tile.isOccupied);\r\n return this;\r\n }\r\n get get() {\r\n const retval = this.contents;\r\n return retval;\r\n }\r\n}\r\nObject.freeze(Query);\r\nObject.freeze(Query.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9mbG9vci9UaWxlR2V0dGVyLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc25ha2V5My8uL3NyYy9iYXNlL2Zsb29yL1RpbGVHZXR0ZXIudHM/MmJiMSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX3NvdXJjZV8xO1xyXG5pbXBvcnQgeyBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0LCBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0IH0gZnJvbSBcInRzbGliXCI7XHJcbi8qKlxyXG4gKiBBIHV0aWxpdHkgY2xhc3MgdG8gZ2V0IGRlc3RpbmF0aW9ucy10byBvciBzb3VyY2VzLWZyb20gYSB0aWxlIGF0XHJcbiAqIGEgc3BlY2lmaWVkIGNvb3JkaW5hdGUuIEl0IGlzIHJlY29tbWVuZGVkIHRvIG5hbWUgdGhlIGNhbGxpbmdcclxuICogdmFyaWFibGUgXCJ0aWxlXCIuIEEgcXVlcnkgc3RhcnRzIHdpdGggY2FsbGluZyBvbmUgb2YgdGhlIG1ldGhvZHNcclxuICogYGF0YCwgYGRlc3RzRnJvbWAsIG9yIGBzb3VyY2VzVG9gLiBPcHRpb25hbCBmaWx0ZXJpbmcgbXV0YXRvcnNcclxuICogY2FuIGJlIGFwcGxpZWQgaW50ZXJtZWRpYXRlbHkgc3VjaCBhcyBgdW5vY2N1cGllZGAuIFRoZSBxdWVyeVxyXG4gKiBlbmRzIHdpdGggb25lIG9mIHRoZSBnZXR0ZXJzIGBvY2N1cGFudHNgIG9yIGBnZXRgLlxyXG4gKlxyXG4gKiBAdGVtcGxhdGUgU1xyXG4gKlxyXG4gKiBAdGVtcGxhdGUgQVxyXG4gKiBUaGlzIGFsbG93cyBgU291cmNlYCBpbXBsZW1lbnRhdGlvbnMgdG8gYWNjZXB0IGEgY29vcmRpbmF0ZVxyXG4gKiBzcGVjaWZpZXIgYXMgYW4gYXJndW1lbnQsIHN1Y2ggYXMgaXMgYXBwcm9wcmlhdGUgd2l0aCBhIGdyaWQsXHJcbiAqIG9yIHRvIHByb3ZpZGUgdGhhdCBpbmZvcm1hdGlvbiBpbXBsaWNpdGx5IGluc2lkZSBpdHNlbGYgYXNcclxuICogcGFydCBvZiBpdHMgc3BlYywgYXMgaXMgYXBwcm9wcmlhdGUgd2l0aCBhIHBsYXllci5cclxuICpcclxuICovXHJcbmV4cG9ydCBjbGFzcyBUaWxlR2V0dGVyIHtcclxuICAgIGNvbnN0cnVjdG9yKHNvdXJjZSkge1xyXG4gICAgICAgIF9zb3VyY2VfMS5zZXQodGhpcywgdm9pZCAwKTtcclxuICAgICAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9zb3VyY2VfMSwgc291cmNlKTtcclxuICAgICAgICBPYmplY3QuZnJlZXplKHRoaXMpO1xyXG4gICAgfVxyXG4gICAgZ2V0IF9zb3VyY2UoKSB7XHJcbiAgICAgICAgcmV0dXJuIF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3NvdXJjZV8xKTtcclxuICAgIH1cclxuICAgIGF0KC4uLmFyZ3MpIHtcclxuICAgICAgICByZXR1cm4gX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfc291cmNlXzEpLl9nZXRUaWxlQXQoLi4uYXJncyk7XHJcbiAgICB9XHJcbiAgICBkZXN0c0Zyb20oLi4uYXJncykge1xyXG4gICAgICAgIHJldHVybiBuZXcgUXVlcnkoX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfc291cmNlXzEpLl9nZXRUaWxlRGVzdHNGcm9tKC4uLmFyZ3MpKTtcclxuICAgIH1cclxuICAgIHNvdXJjZXNUbyguLi5hcmdzKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBRdWVyeShfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9zb3VyY2VfMSkuX2dldFRpbGVTb3VyY2VzVG8oLi4uYXJncykpO1xyXG4gICAgfVxyXG59XHJcbl9zb3VyY2VfMSA9IG5ldyBXZWFrTWFwKCk7XHJcbk9iamVjdC5mcmVlemUoVGlsZUdldHRlcik7XHJcbk9iamVjdC5mcmVlemUoVGlsZUdldHRlci5wcm90b3R5cGUpO1xyXG4vKipcclxuICpcclxuICovXHJcbmNsYXNzIFF1ZXJ5IHtcclxuICAgIGNvbnN0cnVjdG9yKGNvbnRlbnRzKSB7XHJcbiAgICAgICAgdGhpcy5jb250ZW50cyA9IGNvbnRlbnRzO1xyXG4gICAgICAgIE9iamVjdC5zZWFsKHRoaXMpO1xyXG4gICAgfVxyXG4gICAgZ2V0IG9jY3VwaWVkKCkge1xyXG4gICAgICAgIHRoaXMuY29udGVudHMgPSB0aGlzLmNvbnRlbnRzLmZpbHRlcigodGlsZSkgPT4gdGlsZS5pc09jY3VwaWVkKTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuICAgIGdldCB1bm9jY3VwaWVkKCkge1xyXG4gICAgICAgIHRoaXMuY29udGVudHMgPSB0aGlzLmNvbnRlbnRzLmZpbHRlcigodGlsZSkgPT4gIXRpbGUuaXNPY2N1cGllZCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcbiAgICBnZXQgZ2V0KCkge1xyXG4gICAgICAgIGNvbnN0IHJldHZhbCA9IHRoaXMuY29udGVudHM7XHJcbiAgICAgICAgcmV0dXJuIHJldHZhbDtcclxuICAgIH1cclxufVxyXG5PYmplY3QuZnJlZXplKFF1ZXJ5KTtcclxuT2JqZWN0LmZyZWV6ZShRdWVyeS5wcm90b3R5cGUpO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/base/floor/TileGetter.ts\n"); + +/***/ }), + +/***/ "./src/base/floor/VisibleGrid.ts": +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"VisibleGrid\": () => /* binding */ VisibleGrid,\n/* harmony export */ \"VisibleGridMixin\": () => /* binding */ VisibleGridMixin\n/* harmony export */ });\n/* harmony import */ var defs_OmHooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/defs/OmHooks.ts\");\n/* harmony import */ var defs_JsUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/defs/JsUtils.ts\");\n/* harmony import */ var floor_VisibleTile__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./src/base/floor/VisibleTile.ts\");\n\r\n\r\n\r\nvar VisibleGrid;\r\n(function (VisibleGrid) {\r\n ;\r\n VisibleGrid.getImplementation = (coordSys) => {\r\n const ctor = VisibleGrid._Constructors[coordSys];\r\n return ctor;\r\n };\r\n})(VisibleGrid || (VisibleGrid = {}));\r\n/**\r\n *\r\n */\r\nclass VisibleGridMixin {\r\n /**\r\n * Note: I would rather have this implementation go under the\r\n * `VisibleGrid` class, but I don't want to get into mixins as of\r\n * now to get around no-multiple-inheritance.\r\n *\r\n * @param desc -\r\n * @param gridImpl -\r\n */\r\n _superVisibleGrid(desc, gridImpl) {\r\n if (desc.tileClass !== floor_VisibleTile__WEBPACK_IMPORTED_MODULE_2__.VisibleTile) {\r\n throw new TypeError(\"never\");\r\n }\r\n const OHG = defs_OmHooks__WEBPACK_IMPORTED_MODULE_0__.OmHooks.Grid;\r\n gridImpl.setAttribute(\"role\", \"presentation\");\r\n gridImpl.classList.add(OHG.Class.IMPL_BODY);\r\n gridImpl.dataset[OHG.Dataset.IMPL_COORD_SYS] = desc.coordSys;\r\n gridImpl.translate = false; // https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/translate\r\n gridImpl.spellcheck = false; // typically assumed by the UA, but it doesn't hurt to say explicitly.\r\n // @ts-expect-error : RO=\r\n this.baseElem = gridImpl;\r\n // Initialize spotlight elements:\r\n const shortSpotlight = defs_JsUtils__WEBPACK_IMPORTED_MODULE_1__.JsUtils.mkEl(\"div\", [defs_OmHooks__WEBPACK_IMPORTED_MODULE_0__.OmHooks.Player.Class.SHORT_SPOTLIGHT]);\r\n const longSpotlight = defs_JsUtils__WEBPACK_IMPORTED_MODULE_1__.JsUtils.mkEl(\"div\", [defs_OmHooks__WEBPACK_IMPORTED_MODULE_0__.OmHooks.Player.Class.LONG_SPOTLIGHT]);\r\n // @ts-expect-error : RO=\r\n this.spotlightElems = Object.freeze([shortSpotlight, longSpotlight]);\r\n }\r\n}\r\n;\r\nObject.freeze(VisibleGridMixin);\r\nObject.freeze(VisibleGridMixin.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9mbG9vci9WaXNpYmxlR3JpZC50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL3NuYWtleTMvLi9zcmMvYmFzZS9mbG9vci9WaXNpYmxlR3JpZC50cz85ODVkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9tSG9va3MgfSBmcm9tIFwiZGVmcy9PbUhvb2tzXCI7XHJcbmltcG9ydCB7IEpzVXRpbHMgfSBmcm9tIFwiZGVmcy9Kc1V0aWxzXCI7XHJcbmltcG9ydCB7IFZpc2libGVUaWxlIH0gZnJvbSBcImZsb29yL1Zpc2libGVUaWxlXCI7XHJcbmV4cG9ydCB2YXIgVmlzaWJsZUdyaWQ7XHJcbihmdW5jdGlvbiAoVmlzaWJsZUdyaWQpIHtcclxuICAgIDtcclxuICAgIFZpc2libGVHcmlkLmdldEltcGxlbWVudGF0aW9uID0gKGNvb3JkU3lzKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY3RvciA9IFZpc2libGVHcmlkLl9Db25zdHJ1Y3RvcnNbY29vcmRTeXNdO1xyXG4gICAgICAgIHJldHVybiBjdG9yO1xyXG4gICAgfTtcclxufSkoVmlzaWJsZUdyaWQgfHwgKFZpc2libGVHcmlkID0ge30pKTtcclxuLyoqXHJcbiAqXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgVmlzaWJsZUdyaWRNaXhpbiB7XHJcbiAgICAvKipcclxuICAgICAqIE5vdGU6IEkgd291bGQgcmF0aGVyIGhhdmUgdGhpcyBpbXBsZW1lbnRhdGlvbiBnbyB1bmRlciB0aGVcclxuICAgICAqIGBWaXNpYmxlR3JpZGAgY2xhc3MsIGJ1dCBJIGRvbid0IHdhbnQgdG8gZ2V0IGludG8gbWl4aW5zIGFzIG9mXHJcbiAgICAgKiBub3cgdG8gZ2V0IGFyb3VuZCBuby1tdWx0aXBsZS1pbmhlcml0YW5jZS5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZGVzYyAtXHJcbiAgICAgKiBAcGFyYW0gZ3JpZEltcGwgLVxyXG4gICAgICovXHJcbiAgICBfc3VwZXJWaXNpYmxlR3JpZChkZXNjLCBncmlkSW1wbCkge1xyXG4gICAgICAgIGlmIChkZXNjLnRpbGVDbGFzcyAhPT0gVmlzaWJsZVRpbGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIm5ldmVyXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBPSEcgPSBPbUhvb2tzLkdyaWQ7XHJcbiAgICAgICAgZ3JpZEltcGwuc2V0QXR0cmlidXRlKFwicm9sZVwiLCBcInByZXNlbnRhdGlvblwiKTtcclxuICAgICAgICBncmlkSW1wbC5jbGFzc0xpc3QuYWRkKE9IRy5DbGFzcy5JTVBMX0JPRFkpO1xyXG4gICAgICAgIGdyaWRJbXBsLmRhdGFzZXRbT0hHLkRhdGFzZXQuSU1QTF9DT09SRF9TWVNdID0gZGVzYy5jb29yZFN5cztcclxuICAgICAgICBncmlkSW1wbC50cmFuc2xhdGUgPSBmYWxzZTsgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy90cmFuc2xhdGVcclxuICAgICAgICBncmlkSW1wbC5zcGVsbGNoZWNrID0gZmFsc2U7IC8vIHR5cGljYWxseSBhc3N1bWVkIGJ5IHRoZSBVQSwgYnV0IGl0IGRvZXNuJ3QgaHVydCB0byBzYXkgZXhwbGljaXRseS5cclxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIDogUk89XHJcbiAgICAgICAgdGhpcy5iYXNlRWxlbSA9IGdyaWRJbXBsO1xyXG4gICAgICAgIC8vIEluaXRpYWxpemUgc3BvdGxpZ2h0IGVsZW1lbnRzOlxyXG4gICAgICAgIGNvbnN0IHNob3J0U3BvdGxpZ2h0ID0gSnNVdGlscy5ta0VsKFwiZGl2XCIsIFtPbUhvb2tzLlBsYXllci5DbGFzcy5TSE9SVF9TUE9UTElHSFRdKTtcclxuICAgICAgICBjb25zdCBsb25nU3BvdGxpZ2h0ID0gSnNVdGlscy5ta0VsKFwiZGl2XCIsIFtPbUhvb2tzLlBsYXllci5DbGFzcy5MT05HX1NQT1RMSUdIVF0pO1xyXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgOiBSTz1cclxuICAgICAgICB0aGlzLnNwb3RsaWdodEVsZW1zID0gT2JqZWN0LmZyZWV6ZShbc2hvcnRTcG90bGlnaHQsIGxvbmdTcG90bGlnaHRdKTtcclxuICAgIH1cclxufVxyXG47XHJcbk9iamVjdC5mcmVlemUoVmlzaWJsZUdyaWRNaXhpbik7XHJcbk9iamVjdC5mcmVlemUoVmlzaWJsZUdyaWRNaXhpbi5wcm90b3R5cGUpO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/base/floor/VisibleGrid.ts\n"); + +/***/ }), + +/***/ "./src/base/floor/VisibleTile.ts": +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Coord\": () => /* reexport safe */ _Tile__WEBPACK_IMPORTED_MODULE_2__.Coord,\n/* harmony export */ \"VisibleTile\": () => /* binding */ VisibleTile\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/defs/JsUtils.ts\");\n/* harmony import */ var defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/defs/OmHooks.ts\");\n/* harmony import */ var _Tile__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./src/base/floor/Tile.ts\");\nvar _baseElem;\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * Implicitly handles visuals with help from CSS.\r\n */\r\nclass VisibleTile extends _Tile__WEBPACK_IMPORTED_MODULE_2__.Tile {\r\n constructor(coordDesc) {\r\n super(coordDesc);\r\n _baseElem.set(this, void 0);\r\n {\r\n const base = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldSet)(this, _baseElem, defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.mkEl(\"div\", [\r\n defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.General.Class.CENTER_CONTENTS,\r\n defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.General.Class.STACK_CONTENTS,\r\n defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.Tile.Class.BASE,\r\n ]));\r\n base.setAttribute(\"aria-label\", \"Tile\");\r\n }\r\n {\r\n // Pointer hitbox element.\r\n // Must be the first child. See note in CSS class hook.\r\n const pthb = defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.mkEl(\"div\", [defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.Tile.Class.POINTER_HB]);\r\n pthb.setAttribute(\"aria-hidden\", \"true\");\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldGet)(this, _baseElem).appendChild(pthb);\r\n }\r\n {\r\n const charWrap = defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.mkEl(\"div\", [defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.Tile.Class.LANG_CHAR_WRAP]);\r\n charWrap.setAttribute(\"role\", \"presentation\");\r\n const charElem = this.langCharElem = defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.mkEl(\"div\", []);\r\n charWrap.appendChild(charElem);\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldGet)(this, _baseElem).appendChild(charWrap);\r\n }\r\n {\r\n const seqElem = this.langSeqElem = defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.mkEl(\"div\", [defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.Tile.Class.LANG_SEQ]);\r\n seqElem.setAttribute(\"role\", \"tooltip\");\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldGet)(this, _baseElem).appendChild(seqElem);\r\n }\r\n defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.propNoWrite(this, [\"langCharElem\", \"langSeqElem\"]);\r\n }\r\n _addToDom(parent) {\r\n parent.appendChild((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldGet)(this, _baseElem));\r\n }\r\n /**\r\n * @override\r\n */\r\n _setOccupant(playerId, immigrantInfo) {\r\n super._setOccupant(playerId, immigrantInfo);\r\n // It must go at least before the langChar element so that the\r\n // CSS can create a fading trail effect. It must go after the\r\n // hitbox so that it can be hidden to avoid covering the tooltip.\r\n this.langCharElem.parentElement.insertAdjacentElement(\"beforebegin\", immigrantInfo.playerElem);\r\n this.langSeqElem.textContent = immigrantInfo.username;\r\n }\r\n /**\r\n * @override\r\n */\r\n evictOccupant() {\r\n super.evictOccupant();\r\n // Undo setting mouseover text to something player-related\r\n // (See `__setOccupant` for what we did and now need to undo):\r\n this.langSeqElem.textContent = this.langSeq;\r\n }\r\n /**\r\n * @override\r\n */\r\n set freeHealth(newFreeHealth) {\r\n super.freeHealth = newFreeHealth;\r\n if (this.freeHealth > 0) {\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldGet)(this, _baseElem).dataset[defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.Tile.Dataset.HEALTH] = this.freeHealth.toString();\r\n }\r\n else {\r\n delete (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldGet)(this, _baseElem).dataset[defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.Tile.Dataset.HEALTH];\r\n }\r\n }\r\n /**\r\n * @override\r\n */\r\n // NOTE: For some reason, if we override the setter, the transpiled\r\n // code does not link to the super implementation... Or maybe this\r\n // is just a property of plain ECMA javascript??\r\n get freeHealth() {\r\n return super.freeHealth;\r\n }\r\n /**\r\n * @override\r\n */\r\n setLangCharSeqPair(charSeqPair) {\r\n super.setLangCharSeqPair(charSeqPair);\r\n this.langCharElem.textContent = this.langChar;\r\n this.langSeqElem.textContent = this.langSeq;\r\n }\r\n}\r\n_baseElem = new WeakMap();\r\n// Assert that this extension's constructor has a compatible signature:\r\nVisibleTile;\r\ndefs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.protoNoEnum(VisibleTile, [\"_addToDom\"]);\r\nObject.freeze(VisibleTile);\r\nObject.freeze(VisibleTile.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9mbG9vci9WaXNpYmxlVGlsZS50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL3NuYWtleTMvLi9zcmMvYmFzZS9mbG9vci9WaXNpYmxlVGlsZS50cz8yNjg4Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBfYmFzZUVsZW07XHJcbmltcG9ydCB7IF9fY2xhc3NQcml2YXRlRmllbGRHZXQsIF9fY2xhc3NQcml2YXRlRmllbGRTZXQgfSBmcm9tIFwidHNsaWJcIjtcclxuaW1wb3J0IHsgSnNVdGlscyB9IGZyb20gXCJkZWZzL0pzVXRpbHNcIjtcclxuaW1wb3J0IHsgT21Ib29rcyB9IGZyb20gXCJkZWZzL09tSG9va3NcIjtcclxuaW1wb3J0IHsgQ29vcmQsIFRpbGUgfSBmcm9tIFwiLi9UaWxlXCI7XHJcbmV4cG9ydCB7IENvb3JkIH07XHJcbi8qKlxyXG4gKiBJbXBsaWNpdGx5IGhhbmRsZXMgdmlzdWFscyB3aXRoIGhlbHAgZnJvbSBDU1MuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgVmlzaWJsZVRpbGUgZXh0ZW5kcyBUaWxlIHtcclxuICAgIGNvbnN0cnVjdG9yKGNvb3JkRGVzYykge1xyXG4gICAgICAgIHN1cGVyKGNvb3JkRGVzYyk7XHJcbiAgICAgICAgX2Jhc2VFbGVtLnNldCh0aGlzLCB2b2lkIDApO1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgY29uc3QgYmFzZSA9IF9fY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX2Jhc2VFbGVtLCBKc1V0aWxzLm1rRWwoXCJkaXZcIiwgW1xyXG4gICAgICAgICAgICAgICAgT21Ib29rcy5HZW5lcmFsLkNsYXNzLkNFTlRFUl9DT05URU5UUyxcclxuICAgICAgICAgICAgICAgIE9tSG9va3MuR2VuZXJhbC5DbGFzcy5TVEFDS19DT05URU5UUyxcclxuICAgICAgICAgICAgICAgIE9tSG9va3MuVGlsZS5DbGFzcy5CQVNFLFxyXG4gICAgICAgICAgICBdKSk7XHJcbiAgICAgICAgICAgIGJhc2Uuc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLCBcIlRpbGVcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgLy8gUG9pbnRlciBoaXRib3ggZWxlbWVudC5cclxuICAgICAgICAgICAgLy8gTXVzdCBiZSB0aGUgZmlyc3QgY2hpbGQuIFNlZSBub3RlIGluIENTUyBjbGFzcyBob29rLlxyXG4gICAgICAgICAgICBjb25zdCBwdGhiID0gSnNVdGlscy5ta0VsKFwiZGl2XCIsIFtPbUhvb2tzLlRpbGUuQ2xhc3MuUE9JTlRFUl9IQl0pO1xyXG4gICAgICAgICAgICBwdGhiLnNldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIsIFwidHJ1ZVwiKTtcclxuICAgICAgICAgICAgX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfYmFzZUVsZW0pLmFwcGVuZENoaWxkKHB0aGIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoYXJXcmFwID0gSnNVdGlscy5ta0VsKFwiZGl2XCIsIFtPbUhvb2tzLlRpbGUuQ2xhc3MuTEFOR19DSEFSX1dSQVBdKTtcclxuICAgICAgICAgICAgY2hhcldyYXAuc2V0QXR0cmlidXRlKFwicm9sZVwiLCBcInByZXNlbnRhdGlvblwiKTtcclxuICAgICAgICAgICAgY29uc3QgY2hhckVsZW0gPSB0aGlzLmxhbmdDaGFyRWxlbSA9IEpzVXRpbHMubWtFbChcImRpdlwiLCBbXSk7XHJcbiAgICAgICAgICAgIGNoYXJXcmFwLmFwcGVuZENoaWxkKGNoYXJFbGVtKTtcclxuICAgICAgICAgICAgX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfYmFzZUVsZW0pLmFwcGVuZENoaWxkKGNoYXJXcmFwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb25zdCBzZXFFbGVtID0gdGhpcy5sYW5nU2VxRWxlbSA9IEpzVXRpbHMubWtFbChcImRpdlwiLCBbT21Ib29rcy5UaWxlLkNsYXNzLkxBTkdfU0VRXSk7XHJcbiAgICAgICAgICAgIHNlcUVsZW0uc2V0QXR0cmlidXRlKFwicm9sZVwiLCBcInRvb2x0aXBcIik7XHJcbiAgICAgICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2Jhc2VFbGVtKS5hcHBlbmRDaGlsZChzZXFFbGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgSnNVdGlscy5wcm9wTm9Xcml0ZSh0aGlzLCBbXCJsYW5nQ2hhckVsZW1cIiwgXCJsYW5nU2VxRWxlbVwiXSk7XHJcbiAgICB9XHJcbiAgICBfYWRkVG9Eb20ocGFyZW50KSB7XHJcbiAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2Jhc2VFbGVtKSk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEBvdmVycmlkZVxyXG4gICAgICovXHJcbiAgICBfc2V0T2NjdXBhbnQocGxheWVySWQsIGltbWlncmFudEluZm8pIHtcclxuICAgICAgICBzdXBlci5fc2V0T2NjdXBhbnQocGxheWVySWQsIGltbWlncmFudEluZm8pO1xyXG4gICAgICAgIC8vIEl0IG11c3QgZ28gYXQgbGVhc3QgYmVmb3JlIHRoZSBsYW5nQ2hhciBlbGVtZW50IHNvIHRoYXQgdGhlXHJcbiAgICAgICAgLy8gQ1NTIGNhbiBjcmVhdGUgYSBmYWRpbmcgdHJhaWwgZWZmZWN0LiBJdCBtdXN0IGdvIGFmdGVyIHRoZVxyXG4gICAgICAgIC8vIGhpdGJveCBzbyB0aGF0IGl0IGNhbiBiZSBoaWRkZW4gdG8gYXZvaWQgY292ZXJpbmcgdGhlIHRvb2x0aXAuXHJcbiAgICAgICAgdGhpcy5sYW5nQ2hhckVsZW0ucGFyZW50RWxlbWVudC5pbnNlcnRBZGphY2VudEVsZW1lbnQoXCJiZWZvcmViZWdpblwiLCBpbW1pZ3JhbnRJbmZvLnBsYXllckVsZW0pO1xyXG4gICAgICAgIHRoaXMubGFuZ1NlcUVsZW0udGV4dENvbnRlbnQgPSBpbW1pZ3JhbnRJbmZvLnVzZXJuYW1lO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBAb3ZlcnJpZGVcclxuICAgICAqL1xyXG4gICAgZXZpY3RPY2N1cGFudCgpIHtcclxuICAgICAgICBzdXBlci5ldmljdE9jY3VwYW50KCk7XHJcbiAgICAgICAgLy8gVW5kbyBzZXR0aW5nIG1vdXNlb3ZlciB0ZXh0IHRvIHNvbWV0aGluZyBwbGF5ZXItcmVsYXRlZFxyXG4gICAgICAgIC8vIChTZWUgYF9fc2V0T2NjdXBhbnRgIGZvciB3aGF0IHdlIGRpZCBhbmQgbm93IG5lZWQgdG8gdW5kbyk6XHJcbiAgICAgICAgdGhpcy5sYW5nU2VxRWxlbS50ZXh0Q29udGVudCA9IHRoaXMubGFuZ1NlcTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQG92ZXJyaWRlXHJcbiAgICAgKi9cclxuICAgIHNldCBmcmVlSGVhbHRoKG5ld0ZyZWVIZWFsdGgpIHtcclxuICAgICAgICBzdXBlci5mcmVlSGVhbHRoID0gbmV3RnJlZUhlYWx0aDtcclxuICAgICAgICBpZiAodGhpcy5mcmVlSGVhbHRoID4gMCkge1xyXG4gICAgICAgICAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9iYXNlRWxlbSkuZGF0YXNldFtPbUhvb2tzLlRpbGUuRGF0YXNldC5IRUFMVEhdID0gdGhpcy5mcmVlSGVhbHRoLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBkZWxldGUgX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfYmFzZUVsZW0pLmRhdGFzZXRbT21Ib29rcy5UaWxlLkRhdGFzZXQuSEVBTFRIXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEBvdmVycmlkZVxyXG4gICAgICovXHJcbiAgICAvLyBOT1RFOiBGb3Igc29tZSByZWFzb24sIGlmIHdlIG92ZXJyaWRlIHRoZSBzZXR0ZXIsIHRoZSB0cmFuc3BpbGVkXHJcbiAgICAvLyBjb2RlIGRvZXMgbm90IGxpbmsgdG8gdGhlIHN1cGVyIGltcGxlbWVudGF0aW9uLi4uIE9yIG1heWJlIHRoaXNcclxuICAgIC8vIGlzIGp1c3QgYSBwcm9wZXJ0eSBvZiBwbGFpbiBFQ01BIGphdmFzY3JpcHQ/P1xyXG4gICAgZ2V0IGZyZWVIZWFsdGgoKSB7XHJcbiAgICAgICAgcmV0dXJuIHN1cGVyLmZyZWVIZWFsdGg7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEBvdmVycmlkZVxyXG4gICAgICovXHJcbiAgICBzZXRMYW5nQ2hhclNlcVBhaXIoY2hhclNlcVBhaXIpIHtcclxuICAgICAgICBzdXBlci5zZXRMYW5nQ2hhclNlcVBhaXIoY2hhclNlcVBhaXIpO1xyXG4gICAgICAgIHRoaXMubGFuZ0NoYXJFbGVtLnRleHRDb250ZW50ID0gdGhpcy5sYW5nQ2hhcjtcclxuICAgICAgICB0aGlzLmxhbmdTZXFFbGVtLnRleHRDb250ZW50ID0gdGhpcy5sYW5nU2VxO1xyXG4gICAgfVxyXG59XHJcbl9iYXNlRWxlbSA9IG5ldyBXZWFrTWFwKCk7XHJcbi8vIEFzc2VydCB0aGF0IHRoaXMgZXh0ZW5zaW9uJ3MgY29uc3RydWN0b3IgaGFzIGEgY29tcGF0aWJsZSBzaWduYXR1cmU6XHJcblZpc2libGVUaWxlO1xyXG5Kc1V0aWxzLnByb3RvTm9FbnVtKFZpc2libGVUaWxlLCBbXCJfYWRkVG9Eb21cIl0pO1xyXG5PYmplY3QuZnJlZXplKFZpc2libGVUaWxlKTtcclxuT2JqZWN0LmZyZWV6ZShWaXNpYmxlVGlsZS5wcm90b3R5cGUpO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/base/floor/VisibleTile.ts\n"); + +/***/ }), + +/***/ "./src/base/floor/impl/Beehive.ts": +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Beehive\": () => /* binding */ Beehive,\n/* harmony export */ \"BeehiveVisibleGrid\": () => /* binding */ BeehiveVisibleGrid\n/* harmony export */ });\n/* harmony import */ var defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/defs/JsUtils.ts\");\n/* harmony import */ var _Grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/floor/Grid.ts\");\n/* harmony import */ var _VisibleGrid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./src/base/floor/VisibleGrid.ts\");\n\r\n\r\n\r\n/**\r\n * # 🐝 BEES !\r\n *\r\n * # 🐝 BEES !\r\n *\r\n * # 🐝 BEES !\r\n *\r\n * ```text\r\n * ___ ___\r\n * // \\_// \\__\r\n * \\\\__/ \\__/ \\\r\n * \\\\__/ \\\\__/\r\n * ```\r\n *\r\n *\r\n * [(bees)](https://giphy.com/gifs/oprah-bees-VhFps32TlNgsg)\r\n */\r\nvar Beehive;\r\n(function (Beehive) {\r\n /**\r\n * # Beehive Coord\r\n */\r\n class Coord {\r\n constructor(desc) {\r\n this.dash = desc.dash;\r\n this.bash = desc.bash;\r\n Object.freeze(this);\r\n }\r\n _equals(other) {\r\n return (this.dash === other.dash) && (this.bash === other.bash);\r\n }\r\n round() {\r\n // I'm pretty proud of this despite the fact that I don't\r\n // think there's anything very impressive about it.\r\n const floorDash = Math.floor(this.dash);\r\n const floorBash = Math.floor(this.bash);\r\n const d = floorDash - this.dash;\r\n const b = floorBash - this.bash;\r\n if (d > 2 * b) {\r\n return new Coord({ dash: floorDash + 1, bash: floorBash });\r\n }\r\n else if (d < 0.5 * b) {\r\n return new Coord({ dash: floorDash, bash: floorBash + 1 });\r\n }\r\n else if (Math.min(d, b) > 0.5) {\r\n return new Coord({ dash: floorDash + 1, bash: floorBash + 1 });\r\n }\r\n else {\r\n return new Coord({ dash: floorDash, bash: floorBash });\r\n }\r\n }\r\n add(other) {\r\n return new Coord({\r\n dash: this.dash + other.dash,\r\n bash: this.bash + other.bash,\r\n });\r\n }\r\n sub(other) {\r\n return new Coord({\r\n dash: this.dash - other.dash,\r\n bash: this.bash - other.bash,\r\n });\r\n }\r\n mul(scalar) {\r\n return new Coord({\r\n dash: scalar * this.dash,\r\n bash: scalar * this.bash,\r\n });\r\n }\r\n }\r\n Beehive.Coord = Coord;\r\n Object.freeze(Coord);\r\n Object.freeze(Coord.prototype);\r\n /**\r\n * # Beehive Grid\r\n */\r\n class Grid extends _Grid__WEBPACK_IMPORTED_MODULE_1__.Grid {\r\n constructor(desc) {\r\n super(desc);\r\n // Initialize `grid`:\r\n const grid = undefined;\r\n this.grid = Object.freeze(grid);\r\n }\r\n /**\r\n * @override\r\n */\r\n static getAmbiguityThreshold() {\r\n return 18;\r\n }\r\n /**\r\n * @override\r\n */\r\n static getSizeLimits() { return this.SIZE_LIMITS; }\r\n forEachTile(consumer) {\r\n let i = 0;\r\n for (const row of this.grid) {\r\n for (const tile of row) {\r\n consumer(tile, i++);\r\n }\r\n }\r\n }\r\n shuffledForEachTile(consumer) {\r\n this.grid.flat()\r\n .sort((a, b) => Math.random() - 0.5)\r\n .forEach((tile) => consumer(tile));\r\n }\r\n getUntToward(intendedDest, sourceCoord) {\r\n return undefined;\r\n }\r\n getUntAwayFrom(avoidCoord, sourceCoord) {\r\n return this.getUntToward(sourceCoord.add(sourceCoord.sub(avoidCoord)), sourceCoord);\r\n }\r\n getRandomCoordAround(origin, radius) {\r\n // Note to self when I implement this:\r\n // Be careful about getting proper uniform random distribution!\r\n return undefined;\r\n }\r\n _getTileAt(coord) {\r\n return undefined;\r\n }\r\n _getTileDestsFrom(coord, radius = 1) {\r\n return undefined;\r\n }\r\n _getTileSourcesTo(coord, radius = 1) {\r\n return undefined;\r\n }\r\n minMovesFromTo(source, dest) {\r\n return undefined;\r\n }\r\n /**\r\n * @override\r\n */\r\n getDestsFromSourcesTo(originCoord) {\r\n return this._getTileDestsFrom(originCoord, 2);\r\n }\r\n static getSpawnCoords(playerCounts, dimensions) {\r\n return undefined;\r\n }\r\n static getArea(dim) {\r\n const shorterSide = Math.min(dim.fslash, dim.bslash);\r\n const longerSide = Math.max(dim.fslash, dim.bslash);\r\n const width = (-1) + dim.dash + shorterSide;\r\n let area = 2 * shorterSide * (dim.dash + width);\r\n area += (longerSide - shorterSide - 1) * width;\r\n return area;\r\n }\r\n static getDiameterOfLatticePatchHavingArea(area) {\r\n if (area < 0.25) {\r\n throw new RangeError(\"determinant of a radical will be strictly negative.\");\r\n }\r\n // Given radius `r` and diameter = `1 + 2*r`, the area is\r\n // `1 + 6*r*(1+r)/2`. Rearrange to solve for `d` given the\r\n // area: `0 = 3r^2 + 3r + (1-a)`. Use quadratic formula.\r\n const radius = ((-3) + Math.sqrt(9 - (12 * (1 - area)))) / 6;\r\n return 1 + (2 * radius);\r\n }\r\n static getRandomCoord(dimensions) {\r\n return new Coord(undefined);\r\n }\r\n }\r\n Grid.SIZE_LIMITS = Object.freeze({\r\n dash: Object.freeze({ min: 10, max: 50 }),\r\n bslash: Object.freeze({ min: 10, max: 50 }),\r\n fslash: Object.freeze({ min: 10, max: 50 }),\r\n });\r\n Beehive.Grid = Grid;\r\n defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.protoNoEnum(Grid, [\"_getTileAt\", \"_getTileDestsFrom\", \"_getTileSourcesTo\"]);\r\n Object.freeze(Grid);\r\n Object.freeze(Grid.prototype);\r\n})(Beehive || (Beehive = {}));\r\nObject.freeze(Beehive);\r\n/**\r\n */\r\n// Separated for tree-shaking.\r\nclass BeehiveVisibleGrid extends Beehive.Grid {\r\n constructor(desc) {\r\n super(desc);\r\n const domGrid = undefined;\r\n // TODO.impl Beehive VisibleGrid ctor.\r\n this._superVisibleGrid(desc, domGrid);\r\n }\r\n}\r\n;\r\ndefs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.applyMixins(BeehiveVisibleGrid, [_VisibleGrid__WEBPACK_IMPORTED_MODULE_2__.VisibleGridMixin]);\r\nObject.freeze(BeehiveVisibleGrid);\r\nObject.freeze(BeehiveVisibleGrid.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9mbG9vci9pbXBsL0JlZWhpdmUudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zbmFrZXkzLy4vc3JjL2Jhc2UvZmxvb3IvaW1wbC9CZWVoaXZlLnRzP2RmN2QiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSnNVdGlscyB9IGZyb20gXCJkZWZzL0pzVXRpbHNcIjtcclxuaW1wb3J0IHsgR3JpZCBhcyBBYnN0cmFjdEdyaWQgfSBmcm9tIFwiLi4vR3JpZFwiO1xyXG5pbXBvcnQgeyBWaXNpYmxlR3JpZE1peGluIH0gZnJvbSBcIi4uL1Zpc2libGVHcmlkXCI7XHJcbi8qKlxyXG4gKiAjIPCfkJ0gQkVFUyAhXHJcbiAqXHJcbiAqICMg8J+QnSBCRUVTICFcclxuICpcclxuICogIyDwn5CdIEJFRVMgIVxyXG4gKlxyXG4gKiBgYGB0ZXh0XHJcbiAqICAgX19fICAgX19fXHJcbiAqICAvLyAgXFxfLy8gIFxcX19cclxuICogIFxcXFxfXy8gIFxcX18vICBcXFxyXG4gKiAgICAgXFxcXF9fLyBcXFxcX18vXHJcbiAqIGBgYFxyXG4gKlxyXG4gKlxyXG4gKiBbKGJlZXMpXShodHRwczovL2dpcGh5LmNvbS9naWZzL29wcmFoLWJlZXMtVmhGcHMzMlRsTmdzZylcclxuICovXHJcbmV4cG9ydCB2YXIgQmVlaGl2ZTtcclxuKGZ1bmN0aW9uIChCZWVoaXZlKSB7XHJcbiAgICAvKipcclxuICAgICAqICMgQmVlaGl2ZSBDb29yZFxyXG4gICAgICovXHJcbiAgICBjbGFzcyBDb29yZCB7XHJcbiAgICAgICAgY29uc3RydWN0b3IoZGVzYykge1xyXG4gICAgICAgICAgICB0aGlzLmRhc2ggPSBkZXNjLmRhc2g7XHJcbiAgICAgICAgICAgIHRoaXMuYmFzaCA9IGRlc2MuYmFzaDtcclxuICAgICAgICAgICAgT2JqZWN0LmZyZWV6ZSh0aGlzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgX2VxdWFscyhvdGhlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gKHRoaXMuZGFzaCA9PT0gb3RoZXIuZGFzaCkgJiYgKHRoaXMuYmFzaCA9PT0gb3RoZXIuYmFzaCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJvdW5kKCkge1xyXG4gICAgICAgICAgICAvLyBJJ20gcHJldHR5IHByb3VkIG9mIHRoaXMgZGVzcGl0ZSB0aGUgZmFjdCB0aGF0IEkgZG9uJ3RcclxuICAgICAgICAgICAgLy8gdGhpbmsgdGhlcmUncyBhbnl0aGluZyB2ZXJ5IGltcHJlc3NpdmUgYWJvdXQgaXQuXHJcbiAgICAgICAgICAgIGNvbnN0IGZsb29yRGFzaCA9IE1hdGguZmxvb3IodGhpcy5kYXNoKTtcclxuICAgICAgICAgICAgY29uc3QgZmxvb3JCYXNoID0gTWF0aC5mbG9vcih0aGlzLmJhc2gpO1xyXG4gICAgICAgICAgICBjb25zdCBkID0gZmxvb3JEYXNoIC0gdGhpcy5kYXNoO1xyXG4gICAgICAgICAgICBjb25zdCBiID0gZmxvb3JCYXNoIC0gdGhpcy5iYXNoO1xyXG4gICAgICAgICAgICBpZiAoZCA+IDIgKiBiKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvb3JkKHsgZGFzaDogZmxvb3JEYXNoICsgMSwgYmFzaDogZmxvb3JCYXNoIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGQgPCAwLjUgKiBiKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvb3JkKHsgZGFzaDogZmxvb3JEYXNoLCBiYXNoOiBmbG9vckJhc2ggKyAxIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKE1hdGgubWluKGQsIGIpID4gMC41KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvb3JkKHsgZGFzaDogZmxvb3JEYXNoICsgMSwgYmFzaDogZmxvb3JCYXNoICsgMSB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ29vcmQoeyBkYXNoOiBmbG9vckRhc2gsIGJhc2g6IGZsb29yQmFzaCB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBhZGQob3RoZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBDb29yZCh7XHJcbiAgICAgICAgICAgICAgICBkYXNoOiB0aGlzLmRhc2ggKyBvdGhlci5kYXNoLFxyXG4gICAgICAgICAgICAgICAgYmFzaDogdGhpcy5iYXNoICsgb3RoZXIuYmFzaCxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN1YihvdGhlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENvb3JkKHtcclxuICAgICAgICAgICAgICAgIGRhc2g6IHRoaXMuZGFzaCAtIG90aGVyLmRhc2gsXHJcbiAgICAgICAgICAgICAgICBiYXNoOiB0aGlzLmJhc2ggLSBvdGhlci5iYXNoLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbXVsKHNjYWxhcikge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENvb3JkKHtcclxuICAgICAgICAgICAgICAgIGRhc2g6IHNjYWxhciAqIHRoaXMuZGFzaCxcclxuICAgICAgICAgICAgICAgIGJhc2g6IHNjYWxhciAqIHRoaXMuYmFzaCxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgQmVlaGl2ZS5Db29yZCA9IENvb3JkO1xyXG4gICAgT2JqZWN0LmZyZWV6ZShDb29yZCk7XHJcbiAgICBPYmplY3QuZnJlZXplKENvb3JkLnByb3RvdHlwZSk7XHJcbiAgICAvKipcclxuICAgICAqICMgQmVlaGl2ZSBHcmlkXHJcbiAgICAgKi9cclxuICAgIGNsYXNzIEdyaWQgZXh0ZW5kcyBBYnN0cmFjdEdyaWQge1xyXG4gICAgICAgIGNvbnN0cnVjdG9yKGRlc2MpIHtcclxuICAgICAgICAgICAgc3VwZXIoZGVzYyk7XHJcbiAgICAgICAgICAgIC8vIEluaXRpYWxpemUgYGdyaWRgOlxyXG4gICAgICAgICAgICBjb25zdCBncmlkID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICB0aGlzLmdyaWQgPSBPYmplY3QuZnJlZXplKGdyaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBAb3ZlcnJpZGVcclxuICAgICAgICAgKi9cclxuICAgICAgICBzdGF0aWMgZ2V0QW1iaWd1aXR5VGhyZXNob2xkKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gMTg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEBvdmVycmlkZVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyBnZXRTaXplTGltaXRzKCkgeyByZXR1cm4gdGhpcy5TSVpFX0xJTUlUUzsgfVxyXG4gICAgICAgIGZvckVhY2hUaWxlKGNvbnN1bWVyKSB7XHJcbiAgICAgICAgICAgIGxldCBpID0gMDtcclxuICAgICAgICAgICAgZm9yIChjb25zdCByb3cgb2YgdGhpcy5ncmlkKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHRpbGUgb2Ygcm93KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3VtZXIodGlsZSwgaSsrKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBzaHVmZmxlZEZvckVhY2hUaWxlKGNvbnN1bWVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5mbGF0KClcclxuICAgICAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBNYXRoLnJhbmRvbSgpIC0gMC41KVxyXG4gICAgICAgICAgICAgICAgLmZvckVhY2goKHRpbGUpID0+IGNvbnN1bWVyKHRpbGUpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZ2V0VW50VG93YXJkKGludGVuZGVkRGVzdCwgc291cmNlQ29vcmQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZ2V0VW50QXdheUZyb20oYXZvaWRDb29yZCwgc291cmNlQ29vcmQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VW50VG93YXJkKHNvdXJjZUNvb3JkLmFkZChzb3VyY2VDb29yZC5zdWIoYXZvaWRDb29yZCkpLCBzb3VyY2VDb29yZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGdldFJhbmRvbUNvb3JkQXJvdW5kKG9yaWdpbiwgcmFkaXVzKSB7XHJcbiAgICAgICAgICAgIC8vIE5vdGUgdG8gc2VsZiB3aGVuIEkgaW1wbGVtZW50IHRoaXM6XHJcbiAgICAgICAgICAgIC8vIEJlIGNhcmVmdWwgYWJvdXQgZ2V0dGluZyBwcm9wZXIgdW5pZm9ybSByYW5kb20gZGlzdHJpYnV0aW9uIVxyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBfZ2V0VGlsZUF0KGNvb3JkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIF9nZXRUaWxlRGVzdHNGcm9tKGNvb3JkLCByYWRpdXMgPSAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIF9nZXRUaWxlU291cmNlc1RvKGNvb3JkLCByYWRpdXMgPSAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG1pbk1vdmVzRnJvbVRvKHNvdXJjZSwgZGVzdCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBAb3ZlcnJpZGVcclxuICAgICAgICAgKi9cclxuICAgICAgICBnZXREZXN0c0Zyb21Tb3VyY2VzVG8ob3JpZ2luQ29vcmQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldFRpbGVEZXN0c0Zyb20ob3JpZ2luQ29vcmQsIDIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdGF0aWMgZ2V0U3Bhd25Db29yZHMocGxheWVyQ291bnRzLCBkaW1lbnNpb25zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN0YXRpYyBnZXRBcmVhKGRpbSkge1xyXG4gICAgICAgICAgICBjb25zdCBzaG9ydGVyU2lkZSA9IE1hdGgubWluKGRpbS5mc2xhc2gsIGRpbS5ic2xhc2gpO1xyXG4gICAgICAgICAgICBjb25zdCBsb25nZXJTaWRlID0gTWF0aC5tYXgoZGltLmZzbGFzaCwgZGltLmJzbGFzaCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gKC0xKSArIGRpbS5kYXNoICsgc2hvcnRlclNpZGU7XHJcbiAgICAgICAgICAgIGxldCBhcmVhID0gMiAqIHNob3J0ZXJTaWRlICogKGRpbS5kYXNoICsgd2lkdGgpO1xyXG4gICAgICAgICAgICBhcmVhICs9IChsb25nZXJTaWRlIC0gc2hvcnRlclNpZGUgLSAxKSAqIHdpZHRoO1xyXG4gICAgICAgICAgICByZXR1cm4gYXJlYTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc3RhdGljIGdldERpYW1ldGVyT2ZMYXR0aWNlUGF0Y2hIYXZpbmdBcmVhKGFyZWEpIHtcclxuICAgICAgICAgICAgaWYgKGFyZWEgPCAwLjI1KSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcImRldGVybWluYW50IG9mIGEgcmFkaWNhbCB3aWxsIGJlIHN0cmljdGx5IG5lZ2F0aXZlLlwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBHaXZlbiByYWRpdXMgYHJgIGFuZCBkaWFtZXRlciA9IGAxICsgMipyYCwgdGhlIGFyZWEgaXNcclxuICAgICAgICAgICAgLy8gYDEgKyA2KnIqKDErcikvMmAuIFJlYXJyYW5nZSB0byBzb2x2ZSBmb3IgYGRgIGdpdmVuIHRoZVxyXG4gICAgICAgICAgICAvLyBhcmVhOiBgMCA9IDNyXjIgKyAzciArICgxLWEpYC4gVXNlIHF1YWRyYXRpYyBmb3JtdWxhLlxyXG4gICAgICAgICAgICBjb25zdCByYWRpdXMgPSAoKC0zKSArIE1hdGguc3FydCg5IC0gKDEyICogKDEgLSBhcmVhKSkpKSAvIDY7XHJcbiAgICAgICAgICAgIHJldHVybiAxICsgKDIgKiByYWRpdXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdGF0aWMgZ2V0UmFuZG9tQ29vcmQoZGltZW5zaW9ucykge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENvb3JkKHVuZGVmaW5lZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgR3JpZC5TSVpFX0xJTUlUUyA9IE9iamVjdC5mcmVlemUoe1xyXG4gICAgICAgIGRhc2g6IE9iamVjdC5mcmVlemUoeyBtaW46IDEwLCBtYXg6IDUwIH0pLFxyXG4gICAgICAgIGJzbGFzaDogT2JqZWN0LmZyZWV6ZSh7IG1pbjogMTAsIG1heDogNTAgfSksXHJcbiAgICAgICAgZnNsYXNoOiBPYmplY3QuZnJlZXplKHsgbWluOiAxMCwgbWF4OiA1MCB9KSxcclxuICAgIH0pO1xyXG4gICAgQmVlaGl2ZS5HcmlkID0gR3JpZDtcclxuICAgIEpzVXRpbHMucHJvdG9Ob0VudW0oR3JpZCwgW1wiX2dldFRpbGVBdFwiLCBcIl9nZXRUaWxlRGVzdHNGcm9tXCIsIFwiX2dldFRpbGVTb3VyY2VzVG9cIl0pO1xyXG4gICAgT2JqZWN0LmZyZWV6ZShHcmlkKTtcclxuICAgIE9iamVjdC5mcmVlemUoR3JpZC5wcm90b3R5cGUpO1xyXG59KShCZWVoaXZlIHx8IChCZWVoaXZlID0ge30pKTtcclxuT2JqZWN0LmZyZWV6ZShCZWVoaXZlKTtcclxuLyoqXHJcbiAqL1xyXG4vLyBTZXBhcmF0ZWQgZm9yIHRyZWUtc2hha2luZy5cclxuZXhwb3J0IGNsYXNzIEJlZWhpdmVWaXNpYmxlR3JpZCBleHRlbmRzIEJlZWhpdmUuR3JpZCB7XHJcbiAgICBjb25zdHJ1Y3RvcihkZXNjKSB7XHJcbiAgICAgICAgc3VwZXIoZGVzYyk7XHJcbiAgICAgICAgY29uc3QgZG9tR3JpZCA9IHVuZGVmaW5lZDtcclxuICAgICAgICAvLyBUT0RPLmltcGwgQmVlaGl2ZSBWaXNpYmxlR3JpZCBjdG9yLlxyXG4gICAgICAgIHRoaXMuX3N1cGVyVmlzaWJsZUdyaWQoZGVzYywgZG9tR3JpZCk7XHJcbiAgICB9XHJcbn1cclxuO1xyXG5Kc1V0aWxzLmFwcGx5TWl4aW5zKEJlZWhpdmVWaXNpYmxlR3JpZCwgW1Zpc2libGVHcmlkTWl4aW5dKTtcclxuT2JqZWN0LmZyZWV6ZShCZWVoaXZlVmlzaWJsZUdyaWQpO1xyXG5PYmplY3QuZnJlZXplKEJlZWhpdmVWaXNpYmxlR3JpZC5wcm90b3R5cGUpO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/base/floor/impl/Beehive.ts\n"); + +/***/ }), + +/***/ "./src/base/floor/impl/Euclid2.ts": +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Euclid2\": () => /* binding */ Euclid2,\n/* harmony export */ \"Euclid2VisibleGrid\": () => /* binding */ Euclid2VisibleGrid\n/* harmony export */ });\n/* harmony import */ var defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/defs/JsUtils.ts\");\n/* harmony import */ var _Grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/floor/Grid.ts\");\n/* harmony import */ var _VisibleGrid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./src/base/floor/VisibleGrid.ts\");\n\r\n\r\n\r\n/**\r\n *\r\n */\r\nvar Euclid2;\r\n(function (Euclid2) {\r\n /**\r\n * # Euclid2 Coord\r\n */\r\n class Coord {\r\n constructor(desc) {\r\n this.x = desc.x;\r\n this.y = desc.y;\r\n Object.freeze(this);\r\n }\r\n _equals(other) {\r\n return (this.x === other.x) && (this.y === other.y);\r\n }\r\n round() {\r\n return new Coord({\r\n x: Math.round(this.x),\r\n y: Math.round(this.y),\r\n });\r\n }\r\n /**\r\n * Also known as the \"manhattan norm\".\r\n *\r\n * _Do not override this._\r\n *\r\n * @param other - The norm is taken relative to `other`.\r\n * @returns The sum of the absolute values of each coordinate.\r\n */\r\n oneNorm(other) {\r\n return this.sub(other).originOneNorm();\r\n }\r\n originOneNorm() {\r\n return Math.abs(this.x) + Math.abs(this.y);\r\n }\r\n /**\r\n *\r\n * _Do not override this._\r\n *\r\n * @param other - The norm is taken relative to `other`.\r\n * @returns The length of the longest dimension.\r\n */\r\n infNorm(other) {\r\n return this.sub(other).originInfNorm();\r\n }\r\n originInfNorm() {\r\n return Math.max(Math.abs(this.x), Math.abs(this.y));\r\n }\r\n /**\r\n * @returns\r\n * A number in the range (0, 1). `One` means the x and y coordinates\r\n * align to the x or y axis, and `Zero` means they are plus or minus\r\n * 45 degrees from the x or y axis.\r\n *\r\n * You can try this yourself in [Desmos](https://www.desmos.com/calculator)\r\n * by pasting in the below code segment and adding a slider for `a`\r\n * for continuous values between zero and one.\r\n *\r\n * ```latex\r\n * \\frac{\\left|\\left|x\\right|-\\left|y\\right|\\right|}{\\left|x\\right|+\\left|y\\right|}=a\r\n * ```\r\n *\r\n * @param other - The alignment is taken relative to `other`.\r\n */\r\n axialAlignment(other) {\r\n return this.sub(other).originAxialAlignment();\r\n }\r\n originAxialAlignment() {\r\n return Math.abs(Math.abs(this.x) - Math.abs(this.y))\r\n / (Math.abs(this.x) + Math.abs(this.y));\r\n }\r\n add(other) {\r\n return new Coord({\r\n x: this.x + other.x,\r\n y: this.y + other.y,\r\n });\r\n }\r\n sub(other) {\r\n return new Coord({\r\n x: this.x - other.x,\r\n y: this.y - other.y,\r\n });\r\n }\r\n /**\r\n * @override\r\n */\r\n mul(scalar) {\r\n return new Coord({\r\n x: scalar * this.x,\r\n y: scalar * this.y,\r\n });\r\n }\r\n }\r\n Euclid2.Coord = Coord;\r\n Object.freeze(Coord);\r\n Object.freeze(Coord.prototype);\r\n /**\r\n * # Euclid2 Grid\r\n */\r\n class Grid extends _Grid__WEBPACK_IMPORTED_MODULE_1__.Grid {\r\n constructor(desc) {\r\n super(desc);\r\n const grid = [];\r\n for (let row = 0; row < this.dimensions.height; row++) {\r\n const newRow = [];\r\n for (let col = 0; col < this.dimensions.width; col++) {\r\n const newTile = new desc.tileClass(new Coord({ x: col, y: row }));\r\n newRow.push(newTile);\r\n }\r\n grid.push(Object.freeze(newRow));\r\n }\r\n this.grid = Object.freeze(grid);\r\n }\r\n static getAmbiguityThreshold() {\r\n return 24;\r\n }\r\n static getSizeLimits() { return this.SIZE_LIMITS; }\r\n forEachTile(consumer) {\r\n let i = 0;\r\n for (const row of this.grid) {\r\n for (const tile of row) {\r\n consumer(tile, i++);\r\n }\r\n }\r\n }\r\n shuffledForEachTile(consumer) {\r\n this.grid.flat()\r\n .sort((a, b) => Math.random() - 0.5)\r\n .forEach((tile) => consumer(tile));\r\n }\r\n getUntToward(intendedDest, sourceCoord) {\r\n const options = this.tile.destsFrom(sourceCoord).unoccupied.get;\r\n if (options.length === 0) {\r\n return this.tile.at(sourceCoord);\r\n }\r\n if (options.length === 1) {\r\n // Minor optimization:\r\n return options[0];\r\n }\r\n options.sort((tileA, TileB) => {\r\n // Break (some) ties by one-norm:\r\n return tileA.coord.oneNorm(intendedDest) - TileB.coord.oneNorm(intendedDest);\r\n }).sort((tileA, TileB) => {\r\n // Break (some) ties by one-norm:\r\n return tileA.coord.infNorm(intendedDest) - TileB.coord.infNorm(intendedDest);\r\n });\r\n // Filter out options that are not equally favourable as the\r\n // most favourable option. I think this is the best method:\r\n // Note: it is safe to start at index `1` because of the\r\n // above short-circuit if `options.length === 1`.\r\n for (let i = 1; i < options.length; i++) {\r\n if (options[i].coord.infNorm(intendedDest) > options[0].coord.infNorm(intendedDest)) {\r\n options.splice(i);\r\n break;\r\n }\r\n }\r\n if (options.length === 1) {\r\n // Minor optimization:\r\n return options[0];\r\n }\r\n // Choose one of the most favourable using some randomness\r\n // weighted to follow a straight-looking path of movement.\r\n if (options[0].coord.x - sourceCoord.x === 0 || options[0].coord.y - sourceCoord.y === 0) {\r\n // (the axial option (if it exists) should be the first\r\n // due to the previous sort's tie-breaker.\r\n if (sourceCoord.axialAlignment(sourceCoord.sub(intendedDest)) - 0.5 > 0.0) {\r\n // The path to the intended destination is aligned more\r\n // with the x or y axis than they are with those axes\r\n // rotated 45 degrees.\r\n return options[0];\r\n }\r\n else {\r\n // Ignore the axial option in further computations:\r\n options.shift();\r\n }\r\n }\r\n // Choose a random non-axial option:\r\n return options[Math.floor(options.length * Math.random())];\r\n }\r\n getUntAwayFrom(avoidCoord, sourceCoord) {\r\n return this.getUntToward(sourceCoord.add(sourceCoord.sub(avoidCoord)), sourceCoord);\r\n }\r\n /**\r\n * @override\r\n */\r\n getDestsFromSourcesTo(originCoord) {\r\n return this._getTileDestsFrom(originCoord, 2);\r\n }\r\n getRandomCoordAround(origin, radius) {\r\n return new Coord({\r\n x: origin.x + Math.trunc(2 * radius * (Math.random() - 0.5)),\r\n y: origin.y + Math.trunc(2 * radius * (Math.random() - 0.5)),\r\n });\r\n }\r\n _getTileAt(coord) {\r\n // if (coord.x < 0 || coord.x >= this.dimensions.width ||\r\n // coord.y < 0 || coord.y >= this.dimensions.height\r\n // ) {\r\n // throw new RangeError(\"Out of bounds. No such tile exists.\");\r\n // }\r\n return this.grid[coord.y][coord.x];\r\n }\r\n _getTileDestsFrom(coord, radius = 1) {\r\n let t = coord.y - radius;\r\n let b = coord.y + radius + 1;\r\n let l = coord.x - radius;\r\n let r = coord.x + radius + 1;\r\n if (t >= this.dimensions.height || b < 0\r\n || l >= this.dimensions.width || r < 0)\r\n return [];\r\n return this.grid.slice(\r\n // filter for included rows:\r\n Math.max(0, t), Math.min(this.dimensions.height, b)).flatMap((gridRow) => gridRow.slice(\r\n // filter for included slices of rows (columns):\r\n Math.max(0, l), Math.min(this.dimensions.width, r)));\r\n }\r\n _getTileSourcesTo(coord, radius = 1) {\r\n // Same behaviour as getting destinations from `coord`.\r\n return this._getTileDestsFrom(coord, radius);\r\n }\r\n minMovesFromTo(source, dest) {\r\n return Math.min(Math.abs(dest.x - source.x), Math.abs(dest.y - source.y));\r\n }\r\n static getSpawnCoords(playerCounts, dimensions) {\r\n const avoidSet = [];\r\n return playerCounts.map((numMembers) => {\r\n const teamSpawnCoords = [];\r\n while (numMembers > 0) {\r\n let coord;\r\n do {\r\n coord = Grid.getRandomCoord(dimensions);\r\n } while (avoidSet.find((other) => coord._equals(other)));\r\n teamSpawnCoords.push(coord);\r\n avoidSet.push(coord);\r\n numMembers--;\r\n }\r\n return teamSpawnCoords;\r\n });\r\n }\r\n static getArea(dim) {\r\n return dim.height * dim.width;\r\n }\r\n static getDiameterOfLatticePatchHavingArea(area) {\r\n return Math.sqrt(area);\r\n }\r\n static getRandomCoord(dimensions) {\r\n const x = Math.floor(dimensions.width * Math.random());\r\n const y = Math.floor(dimensions.height * Math.random());\r\n return new Coord({ x, y });\r\n }\r\n }\r\n Grid.SIZE_LIMITS = Object.freeze({\r\n height: Object.freeze({ min: 11, max: 51 }),\r\n width: Object.freeze({ min: 11, max: 51 }),\r\n });\r\n Euclid2.Grid = Grid;\r\n defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.protoNoEnum(Grid, [\"_getTileAt\", \"_getTileDestsFrom\", \"_getTileSourcesTo\"]);\r\n Object.freeze(Grid);\r\n Object.freeze(Grid.prototype);\r\n})(Euclid2 || (Euclid2 = {}));\r\nObject.freeze(Euclid2);\r\n/**\r\n */\r\n// Separated for tree-shaking.\r\nclass Euclid2VisibleGrid extends Euclid2.Grid {\r\n constructor(desc) {\r\n super(desc);\r\n const gridElem = defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.mkEl(\"div\", []);\r\n gridElem.style.setProperty(\"--euclid2-grid-width\", this.dimensions.width.toString());\r\n // At below use of for loop without breaks: For shallower stack when debugging.\r\n for (const row of this.grid) {\r\n for (const tile of row) {\r\n tile._addToDom(gridElem);\r\n }\r\n }\r\n this._superVisibleGrid(desc, gridElem);\r\n }\r\n}\r\n;\r\ndefs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.applyMixins(Euclid2VisibleGrid, [_VisibleGrid__WEBPACK_IMPORTED_MODULE_2__.VisibleGridMixin]);\r\nObject.freeze(Euclid2VisibleGrid);\r\nObject.freeze(Euclid2VisibleGrid.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9mbG9vci9pbXBsL0V1Y2xpZDIudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zbmFrZXkzLy4vc3JjL2Jhc2UvZmxvb3IvaW1wbC9FdWNsaWQyLnRzPzExN2UiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSnNVdGlscyB9IGZyb20gXCJkZWZzL0pzVXRpbHNcIjtcclxuaW1wb3J0IHsgR3JpZCBhcyBBYnN0cmFjdEdyaWQgfSBmcm9tIFwiLi4vR3JpZFwiO1xyXG5pbXBvcnQgeyBWaXNpYmxlR3JpZE1peGluIH0gZnJvbSBcIi4uL1Zpc2libGVHcmlkXCI7XHJcbi8qKlxyXG4gKlxyXG4gKi9cclxuZXhwb3J0IHZhciBFdWNsaWQyO1xyXG4oZnVuY3Rpb24gKEV1Y2xpZDIpIHtcclxuICAgIC8qKlxyXG4gICAgICogIyBFdWNsaWQyIENvb3JkXHJcbiAgICAgKi9cclxuICAgIGNsYXNzIENvb3JkIHtcclxuICAgICAgICBjb25zdHJ1Y3RvcihkZXNjKSB7XHJcbiAgICAgICAgICAgIHRoaXMueCA9IGRlc2MueDtcclxuICAgICAgICAgICAgdGhpcy55ID0gZGVzYy55O1xyXG4gICAgICAgICAgICBPYmplY3QuZnJlZXplKHRoaXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBfZXF1YWxzKG90aGVyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAodGhpcy54ID09PSBvdGhlci54KSAmJiAodGhpcy55ID09PSBvdGhlci55KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcm91bmQoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgQ29vcmQoe1xyXG4gICAgICAgICAgICAgICAgeDogTWF0aC5yb3VuZCh0aGlzLngpLFxyXG4gICAgICAgICAgICAgICAgeTogTWF0aC5yb3VuZCh0aGlzLnkpLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogQWxzbyBrbm93biBhcyB0aGUgXCJtYW5oYXR0YW4gbm9ybVwiLlxyXG4gICAgICAgICAqXHJcbiAgICAgICAgICogX0RvIG5vdCBvdmVycmlkZSB0aGlzLl9cclxuICAgICAgICAgKlxyXG4gICAgICAgICAqIEBwYXJhbSBvdGhlciAtIFRoZSBub3JtIGlzIHRha2VuIHJlbGF0aXZlIHRvIGBvdGhlcmAuXHJcbiAgICAgICAgICogQHJldHVybnMgVGhlIHN1bSBvZiB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIGVhY2ggY29vcmRpbmF0ZS5cclxuICAgICAgICAgKi9cclxuICAgICAgICBvbmVOb3JtKG90aGVyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN1YihvdGhlcikub3JpZ2luT25lTm9ybSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvcmlnaW5PbmVOb3JtKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5hYnModGhpcy54KSArIE1hdGguYWJzKHRoaXMueSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqXHJcbiAgICAgICAgICogX0RvIG5vdCBvdmVycmlkZSB0aGlzLl9cclxuICAgICAgICAgKlxyXG4gICAgICAgICAqIEBwYXJhbSBvdGhlciAtIFRoZSBub3JtIGlzIHRha2VuIHJlbGF0aXZlIHRvIGBvdGhlcmAuXHJcbiAgICAgICAgICogQHJldHVybnMgVGhlIGxlbmd0aCBvZiB0aGUgbG9uZ2VzdCBkaW1lbnNpb24uXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgaW5mTm9ybShvdGhlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdWIob3RoZXIpLm9yaWdpbkluZk5vcm0oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb3JpZ2luSW5mTm9ybSgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KE1hdGguYWJzKHRoaXMueCksIE1hdGguYWJzKHRoaXMueSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBAcmV0dXJuc1xyXG4gICAgICAgICAqIEEgbnVtYmVyIGluIHRoZSByYW5nZSAoMCwgMSkuIGBPbmVgIG1lYW5zIHRoZSB4IGFuZCB5IGNvb3JkaW5hdGVzXHJcbiAgICAgICAgICogYWxpZ24gdG8gdGhlIHggb3IgeSBheGlzLCBhbmQgYFplcm9gIG1lYW5zIHRoZXkgYXJlIHBsdXMgb3IgbWludXNcclxuICAgICAgICAgKiA0NSBkZWdyZWVzIGZyb20gdGhlIHggb3IgeSBheGlzLlxyXG4gICAgICAgICAqXHJcbiAgICAgICAgICogWW91IGNhbiB0cnkgdGhpcyB5b3Vyc2VsZiBpbiBbRGVzbW9zXShodHRwczovL3d3dy5kZXNtb3MuY29tL2NhbGN1bGF0b3IpXHJcbiAgICAgICAgICogYnkgcGFzdGluZyBpbiB0aGUgYmVsb3cgY29kZSBzZWdtZW50IGFuZCBhZGRpbmcgYSBzbGlkZXIgZm9yIGBhYFxyXG4gICAgICAgICAqIGZvciBjb250aW51b3VzIHZhbHVlcyBiZXR3ZWVuIHplcm8gYW5kIG9uZS5cclxuICAgICAgICAgKlxyXG4gICAgICAgICAqIGBgYGxhdGV4XHJcbiAgICAgICAgICogXFxmcmFje1xcbGVmdHxcXGxlZnR8eFxccmlnaHR8LVxcbGVmdHx5XFxyaWdodHxcXHJpZ2h0fH17XFxsZWZ0fHhcXHJpZ2h0fCtcXGxlZnR8eVxccmlnaHR8fT1hXHJcbiAgICAgICAgICogYGBgXHJcbiAgICAgICAgICpcclxuICAgICAgICAgKiBAcGFyYW0gb3RoZXIgLSBUaGUgYWxpZ25tZW50IGlzIHRha2VuIHJlbGF0aXZlIHRvIGBvdGhlcmAuXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgYXhpYWxBbGlnbm1lbnQob3RoZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3ViKG90aGVyKS5vcmlnaW5BeGlhbEFsaWdubWVudCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvcmlnaW5BeGlhbEFsaWdubWVudCgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIE1hdGguYWJzKE1hdGguYWJzKHRoaXMueCkgLSBNYXRoLmFicyh0aGlzLnkpKVxyXG4gICAgICAgICAgICAgICAgLyAoTWF0aC5hYnModGhpcy54KSArIE1hdGguYWJzKHRoaXMueSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhZGQob3RoZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBDb29yZCh7XHJcbiAgICAgICAgICAgICAgICB4OiB0aGlzLnggKyBvdGhlci54LFxyXG4gICAgICAgICAgICAgICAgeTogdGhpcy55ICsgb3RoZXIueSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN1YihvdGhlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENvb3JkKHtcclxuICAgICAgICAgICAgICAgIHg6IHRoaXMueCAtIG90aGVyLngsXHJcbiAgICAgICAgICAgICAgICB5OiB0aGlzLnkgLSBvdGhlci55LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogQG92ZXJyaWRlXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgbXVsKHNjYWxhcikge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENvb3JkKHtcclxuICAgICAgICAgICAgICAgIHg6IHNjYWxhciAqIHRoaXMueCxcclxuICAgICAgICAgICAgICAgIHk6IHNjYWxhciAqIHRoaXMueSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgRXVjbGlkMi5Db29yZCA9IENvb3JkO1xyXG4gICAgT2JqZWN0LmZyZWV6ZShDb29yZCk7XHJcbiAgICBPYmplY3QuZnJlZXplKENvb3JkLnByb3RvdHlwZSk7XHJcbiAgICAvKipcclxuICAgICAqICMgRXVjbGlkMiBHcmlkXHJcbiAgICAgKi9cclxuICAgIGNsYXNzIEdyaWQgZXh0ZW5kcyBBYnN0cmFjdEdyaWQge1xyXG4gICAgICAgIGNvbnN0cnVjdG9yKGRlc2MpIHtcclxuICAgICAgICAgICAgc3VwZXIoZGVzYyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGdyaWQgPSBbXTtcclxuICAgICAgICAgICAgZm9yIChsZXQgcm93ID0gMDsgcm93IDwgdGhpcy5kaW1lbnNpb25zLmhlaWdodDsgcm93KyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1JvdyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgY29sID0gMDsgY29sIDwgdGhpcy5kaW1lbnNpb25zLndpZHRoOyBjb2wrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1RpbGUgPSBuZXcgZGVzYy50aWxlQ2xhc3MobmV3IENvb3JkKHsgeDogY29sLCB5OiByb3cgfSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld1Jvdy5wdXNoKG5ld1RpbGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZ3JpZC5wdXNoKE9iamVjdC5mcmVlemUobmV3Um93KSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5ncmlkID0gT2JqZWN0LmZyZWV6ZShncmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc3RhdGljIGdldEFtYmlndWl0eVRocmVzaG9sZCgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDI0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdGF0aWMgZ2V0U2l6ZUxpbWl0cygpIHsgcmV0dXJuIHRoaXMuU0laRV9MSU1JVFM7IH1cclxuICAgICAgICBmb3JFYWNoVGlsZShjb25zdW1lcikge1xyXG4gICAgICAgICAgICBsZXQgaSA9IDA7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHRoaXMuZ3JpZCkge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB0aWxlIG9mIHJvdykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN1bWVyKHRpbGUsIGkrKyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgc2h1ZmZsZWRGb3JFYWNoVGlsZShjb25zdW1lcikge1xyXG4gICAgICAgICAgICB0aGlzLmdyaWQuZmxhdCgpXHJcbiAgICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gTWF0aC5yYW5kb20oKSAtIDAuNSlcclxuICAgICAgICAgICAgICAgIC5mb3JFYWNoKCh0aWxlKSA9PiBjb25zdW1lcih0aWxlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGdldFVudFRvd2FyZChpbnRlbmRlZERlc3QsIHNvdXJjZUNvb3JkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLnRpbGUuZGVzdHNGcm9tKHNvdXJjZUNvb3JkKS51bm9jY3VwaWVkLmdldDtcclxuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50aWxlLmF0KHNvdXJjZUNvb3JkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgICAgIC8vIE1pbm9yIG9wdGltaXphdGlvbjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zWzBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wdGlvbnMuc29ydCgodGlsZUEsIFRpbGVCKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBCcmVhayAoc29tZSkgdGllcyBieSBvbmUtbm9ybTpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aWxlQS5jb29yZC5vbmVOb3JtKGludGVuZGVkRGVzdCkgLSBUaWxlQi5jb29yZC5vbmVOb3JtKGludGVuZGVkRGVzdCk7XHJcbiAgICAgICAgICAgIH0pLnNvcnQoKHRpbGVBLCBUaWxlQikgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gQnJlYWsgKHNvbWUpIHRpZXMgYnkgb25lLW5vcm06XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGlsZUEuY29vcmQuaW5mTm9ybShpbnRlbmRlZERlc3QpIC0gVGlsZUIuY29vcmQuaW5mTm9ybShpbnRlbmRlZERlc3QpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgLy8gRmlsdGVyIG91dCBvcHRpb25zIHRoYXQgYXJlIG5vdCBlcXVhbGx5IGZhdm91cmFibGUgYXMgdGhlXHJcbiAgICAgICAgICAgIC8vIG1vc3QgZmF2b3VyYWJsZSBvcHRpb24uIEkgdGhpbmsgdGhpcyBpcyB0aGUgYmVzdCBtZXRob2Q6XHJcbiAgICAgICAgICAgIC8vIE5vdGU6IGl0IGlzIHNhZmUgdG8gc3RhcnQgYXQgaW5kZXggYDFgIGJlY2F1c2Ugb2YgdGhlXHJcbiAgICAgICAgICAgIC8vIGFib3ZlIHNob3J0LWNpcmN1aXQgaWYgYG9wdGlvbnMubGVuZ3RoID09PSAxYC5cclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9uc1tpXS5jb29yZC5pbmZOb3JtKGludGVuZGVkRGVzdCkgPiBvcHRpb25zWzBdLmNvb3JkLmluZk5vcm0oaW50ZW5kZWREZXN0KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuc3BsaWNlKGkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICAgICAgLy8gTWlub3Igb3B0aW1pemF0aW9uOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnNbMF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gQ2hvb3NlIG9uZSBvZiB0aGUgbW9zdCBmYXZvdXJhYmxlIHVzaW5nIHNvbWUgcmFuZG9tbmVzc1xyXG4gICAgICAgICAgICAvLyB3ZWlnaHRlZCB0byBmb2xsb3cgYSBzdHJhaWdodC1sb29raW5nIHBhdGggb2YgbW92ZW1lbnQuXHJcbiAgICAgICAgICAgIGlmIChvcHRpb25zWzBdLmNvb3JkLnggLSBzb3VyY2VDb29yZC54ID09PSAwIHx8IG9wdGlvbnNbMF0uY29vcmQueSAtIHNvdXJjZUNvb3JkLnkgPT09IDApIHtcclxuICAgICAgICAgICAgICAgIC8vICh0aGUgYXhpYWwgb3B0aW9uIChpZiBpdCBleGlzdHMpIHNob3VsZCBiZSB0aGUgZmlyc3RcclxuICAgICAgICAgICAgICAgIC8vIGR1ZSB0byB0aGUgcHJldmlvdXMgc29ydCdzIHRpZS1icmVha2VyLlxyXG4gICAgICAgICAgICAgICAgaWYgKHNvdXJjZUNvb3JkLmF4aWFsQWxpZ25tZW50KHNvdXJjZUNvb3JkLnN1YihpbnRlbmRlZERlc3QpKSAtIDAuNSA+IDAuMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwYXRoIHRvIHRoZSBpbnRlbmRlZCBkZXN0aW5hdGlvbiBpcyBhbGlnbmVkIG1vcmVcclxuICAgICAgICAgICAgICAgICAgICAvLyB3aXRoIHRoZSB4IG9yIHkgYXhpcyB0aGFuIHRoZXkgYXJlIHdpdGggdGhvc2UgYXhlc1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHJvdGF0ZWQgNDUgZGVncmVlcy5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uc1swXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZSB0aGUgYXhpYWwgb3B0aW9uIGluIGZ1cnRoZXIgY29tcHV0YXRpb25zOlxyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuc2hpZnQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBDaG9vc2UgYSByYW5kb20gbm9uLWF4aWFsIG9wdGlvbjpcclxuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnNbTWF0aC5mbG9vcihvcHRpb25zLmxlbmd0aCAqIE1hdGgucmFuZG9tKCkpXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZ2V0VW50QXdheUZyb20oYXZvaWRDb29yZCwgc291cmNlQ29vcmQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VW50VG93YXJkKHNvdXJjZUNvb3JkLmFkZChzb3VyY2VDb29yZC5zdWIoYXZvaWRDb29yZCkpLCBzb3VyY2VDb29yZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEBvdmVycmlkZVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGdldERlc3RzRnJvbVNvdXJjZXNUbyhvcmlnaW5Db29yZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZ2V0VGlsZURlc3RzRnJvbShvcmlnaW5Db29yZCwgMik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGdldFJhbmRvbUNvb3JkQXJvdW5kKG9yaWdpbiwgcmFkaXVzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgQ29vcmQoe1xyXG4gICAgICAgICAgICAgICAgeDogb3JpZ2luLnggKyBNYXRoLnRydW5jKDIgKiByYWRpdXMgKiAoTWF0aC5yYW5kb20oKSAtIDAuNSkpLFxyXG4gICAgICAgICAgICAgICAgeTogb3JpZ2luLnkgKyBNYXRoLnRydW5jKDIgKiByYWRpdXMgKiAoTWF0aC5yYW5kb20oKSAtIDAuNSkpLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgX2dldFRpbGVBdChjb29yZCkge1xyXG4gICAgICAgICAgICAvLyBpZiAoY29vcmQueCA8IDAgfHwgY29vcmQueCA+PSB0aGlzLmRpbWVuc2lvbnMud2lkdGggfHxcclxuICAgICAgICAgICAgLy8gICAgIGNvb3JkLnkgPCAwIHx8IGNvb3JkLnkgPj0gdGhpcy5kaW1lbnNpb25zLmhlaWdodFxyXG4gICAgICAgICAgICAvLyApIHtcclxuICAgICAgICAgICAgLy8gICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiT3V0IG9mIGJvdW5kcy4gTm8gc3VjaCB0aWxlIGV4aXN0cy5cIik7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZFtjb29yZC55XVtjb29yZC54XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgX2dldFRpbGVEZXN0c0Zyb20oY29vcmQsIHJhZGl1cyA9IDEpIHtcclxuICAgICAgICAgICAgbGV0IHQgPSBjb29yZC55IC0gcmFkaXVzO1xyXG4gICAgICAgICAgICBsZXQgYiA9IGNvb3JkLnkgKyByYWRpdXMgKyAxO1xyXG4gICAgICAgICAgICBsZXQgbCA9IGNvb3JkLnggLSByYWRpdXM7XHJcbiAgICAgICAgICAgIGxldCByID0gY29vcmQueCArIHJhZGl1cyArIDE7XHJcbiAgICAgICAgICAgIGlmICh0ID49IHRoaXMuZGltZW5zaW9ucy5oZWlnaHQgfHwgYiA8IDBcclxuICAgICAgICAgICAgICAgIHx8IGwgPj0gdGhpcy5kaW1lbnNpb25zLndpZHRoIHx8IHIgPCAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ncmlkLnNsaWNlKFxyXG4gICAgICAgICAgICAvLyBmaWx0ZXIgZm9yIGluY2x1ZGVkIHJvd3M6XHJcbiAgICAgICAgICAgIE1hdGgubWF4KDAsIHQpLCBNYXRoLm1pbih0aGlzLmRpbWVuc2lvbnMuaGVpZ2h0LCBiKSkuZmxhdE1hcCgoZ3JpZFJvdykgPT4gZ3JpZFJvdy5zbGljZShcclxuICAgICAgICAgICAgLy8gZmlsdGVyIGZvciBpbmNsdWRlZCBzbGljZXMgb2Ygcm93cyAoY29sdW1ucyk6XHJcbiAgICAgICAgICAgIE1hdGgubWF4KDAsIGwpLCBNYXRoLm1pbih0aGlzLmRpbWVuc2lvbnMud2lkdGgsIHIpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIF9nZXRUaWxlU291cmNlc1RvKGNvb3JkLCByYWRpdXMgPSAxKSB7XHJcbiAgICAgICAgICAgIC8vIFNhbWUgYmVoYXZpb3VyIGFzIGdldHRpbmcgZGVzdGluYXRpb25zIGZyb20gYGNvb3JkYC5cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldFRpbGVEZXN0c0Zyb20oY29vcmQsIHJhZGl1cyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG1pbk1vdmVzRnJvbVRvKHNvdXJjZSwgZGVzdCkge1xyXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5taW4oTWF0aC5hYnMoZGVzdC54IC0gc291cmNlLngpLCBNYXRoLmFicyhkZXN0LnkgLSBzb3VyY2UueSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdGF0aWMgZ2V0U3Bhd25Db29yZHMocGxheWVyQ291bnRzLCBkaW1lbnNpb25zKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGF2b2lkU2V0ID0gW107XHJcbiAgICAgICAgICAgIHJldHVybiBwbGF5ZXJDb3VudHMubWFwKChudW1NZW1iZXJzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0ZWFtU3Bhd25Db29yZHMgPSBbXTtcclxuICAgICAgICAgICAgICAgIHdoaWxlIChudW1NZW1iZXJzID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb29yZDtcclxuICAgICAgICAgICAgICAgICAgICBkbyB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvb3JkID0gR3JpZC5nZXRSYW5kb21Db29yZChkaW1lbnNpb25zKTtcclxuICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChhdm9pZFNldC5maW5kKChvdGhlcikgPT4gY29vcmQuX2VxdWFscyhvdGhlcikpKTtcclxuICAgICAgICAgICAgICAgICAgICB0ZWFtU3Bhd25Db29yZHMucHVzaChjb29yZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgYXZvaWRTZXQucHVzaChjb29yZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgbnVtTWVtYmVycy0tO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRlYW1TcGF3bkNvb3JkcztcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN0YXRpYyBnZXRBcmVhKGRpbSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZGltLmhlaWdodCAqIGRpbS53aWR0aDtcclxuICAgICAgICB9XHJcbiAgICAgICAgc3RhdGljIGdldERpYW1ldGVyT2ZMYXR0aWNlUGF0Y2hIYXZpbmdBcmVhKGFyZWEpIHtcclxuICAgICAgICAgICAgcmV0dXJuIE1hdGguc3FydChhcmVhKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc3RhdGljIGdldFJhbmRvbUNvb3JkKGRpbWVuc2lvbnMpIHtcclxuICAgICAgICAgICAgY29uc3QgeCA9IE1hdGguZmxvb3IoZGltZW5zaW9ucy53aWR0aCAqIE1hdGgucmFuZG9tKCkpO1xyXG4gICAgICAgICAgICBjb25zdCB5ID0gTWF0aC5mbG9vcihkaW1lbnNpb25zLmhlaWdodCAqIE1hdGgucmFuZG9tKCkpO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENvb3JkKHsgeCwgeSB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBHcmlkLlNJWkVfTElNSVRTID0gT2JqZWN0LmZyZWV6ZSh7XHJcbiAgICAgICAgaGVpZ2h0OiBPYmplY3QuZnJlZXplKHsgbWluOiAxMSwgbWF4OiA1MSB9KSxcclxuICAgICAgICB3aWR0aDogT2JqZWN0LmZyZWV6ZSh7IG1pbjogMTEsIG1heDogNTEgfSksXHJcbiAgICB9KTtcclxuICAgIEV1Y2xpZDIuR3JpZCA9IEdyaWQ7XHJcbiAgICBKc1V0aWxzLnByb3RvTm9FbnVtKEdyaWQsIFtcIl9nZXRUaWxlQXRcIiwgXCJfZ2V0VGlsZURlc3RzRnJvbVwiLCBcIl9nZXRUaWxlU291cmNlc1RvXCJdKTtcclxuICAgIE9iamVjdC5mcmVlemUoR3JpZCk7XHJcbiAgICBPYmplY3QuZnJlZXplKEdyaWQucHJvdG90eXBlKTtcclxufSkoRXVjbGlkMiB8fCAoRXVjbGlkMiA9IHt9KSk7XHJcbk9iamVjdC5mcmVlemUoRXVjbGlkMik7XHJcbi8qKlxyXG4gKi9cclxuLy8gU2VwYXJhdGVkIGZvciB0cmVlLXNoYWtpbmcuXHJcbmV4cG9ydCBjbGFzcyBFdWNsaWQyVmlzaWJsZUdyaWQgZXh0ZW5kcyBFdWNsaWQyLkdyaWQge1xyXG4gICAgY29uc3RydWN0b3IoZGVzYykge1xyXG4gICAgICAgIHN1cGVyKGRlc2MpO1xyXG4gICAgICAgIGNvbnN0IGdyaWRFbGVtID0gSnNVdGlscy5ta0VsKFwiZGl2XCIsIFtdKTtcclxuICAgICAgICBncmlkRWxlbS5zdHlsZS5zZXRQcm9wZXJ0eShcIi0tZXVjbGlkMi1ncmlkLXdpZHRoXCIsIHRoaXMuZGltZW5zaW9ucy53aWR0aC50b1N0cmluZygpKTtcclxuICAgICAgICAvLyBBdCBiZWxvdyB1c2Ugb2YgZm9yIGxvb3Agd2l0aG91dCBicmVha3M6IEZvciBzaGFsbG93ZXIgc3RhY2sgd2hlbiBkZWJ1Z2dpbmcuXHJcbiAgICAgICAgZm9yIChjb25zdCByb3cgb2YgdGhpcy5ncmlkKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgdGlsZSBvZiByb3cpIHtcclxuICAgICAgICAgICAgICAgIHRpbGUuX2FkZFRvRG9tKGdyaWRFbGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9zdXBlclZpc2libGVHcmlkKGRlc2MsIGdyaWRFbGVtKTtcclxuICAgIH1cclxufVxyXG47XHJcbkpzVXRpbHMuYXBwbHlNaXhpbnMoRXVjbGlkMlZpc2libGVHcmlkLCBbVmlzaWJsZUdyaWRNaXhpbl0pO1xyXG5PYmplY3QuZnJlZXplKEV1Y2xpZDJWaXNpYmxlR3JpZCk7XHJcbk9iamVjdC5mcmVlemUoRXVjbGlkMlZpc2libGVHcmlkLnByb3RvdHlwZSk7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/base/floor/impl/Euclid2.ts\n"); + +/***/ }), + +/***/ "./src/base/game/ctormaps/CmapBrowser.ts": +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var floor_VisibleGrid__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/floor/VisibleGrid.ts\");\n/* harmony import */ var floor_impl_Euclid2__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/floor/impl/Euclid2.ts\");\n/* harmony import */ var floor_impl_Beehive__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./src/base/floor/impl/Beehive.ts\");\n\r\n\r\n\r\n{\r\n // Visible Grid Implementation Registry:\r\n const VGr = floor_VisibleGrid__WEBPACK_IMPORTED_MODULE_0__.VisibleGrid;\r\n VGr._Constructors\r\n = Object.freeze({\r\n [\"EUCLID2\"]: floor_impl_Euclid2__WEBPACK_IMPORTED_MODULE_1__.Euclid2VisibleGrid,\r\n [\"BEEHIVE\"]: floor_impl_Beehive__WEBPACK_IMPORTED_MODULE_2__.BeehiveVisibleGrid,\r\n });\r\n Object.freeze(VGr);\r\n // This is just an interface. There is no instance prototype to freeze.\r\n}\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9nYW1lL2N0b3JtYXBzL0NtYXBCcm93c2VyLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc25ha2V5My8uL3NyYy9iYXNlL2dhbWUvY3Rvcm1hcHMvQ21hcEJyb3dzZXIudHM/Y2I0ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWaXNpYmxlR3JpZCB9IGZyb20gXCJmbG9vci9WaXNpYmxlR3JpZFwiO1xyXG5pbXBvcnQgeyBFdWNsaWQyVmlzaWJsZUdyaWQgfSBmcm9tIFwiZmxvb3IvaW1wbC9FdWNsaWQyXCI7XHJcbmltcG9ydCB7IEJlZWhpdmVWaXNpYmxlR3JpZCB9IGZyb20gXCJmbG9vci9pbXBsL0JlZWhpdmVcIjtcclxue1xyXG4gICAgLy8gVmlzaWJsZSBHcmlkIEltcGxlbWVudGF0aW9uIFJlZ2lzdHJ5OlxyXG4gICAgY29uc3QgVkdyID0gVmlzaWJsZUdyaWQ7XHJcbiAgICBWR3IuX0NvbnN0cnVjdG9yc1xyXG4gICAgICAgID0gT2JqZWN0LmZyZWV6ZSh7XHJcbiAgICAgICAgICAgIFtcIkVVQ0xJRDJcIl06IEV1Y2xpZDJWaXNpYmxlR3JpZCxcclxuICAgICAgICAgICAgW1wiQkVFSElWRVwiXTogQmVlaGl2ZVZpc2libGVHcmlkLFxyXG4gICAgICAgIH0pO1xyXG4gICAgT2JqZWN0LmZyZWV6ZShWR3IpO1xyXG4gICAgLy8gVGhpcyBpcyBqdXN0IGFuIGludGVyZmFjZS4gVGhlcmUgaXMgbm8gaW5zdGFuY2UgcHJvdG90eXBlIHRvIGZyZWV6ZS5cclxufVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/base/game/ctormaps/CmapBrowser.ts\n"); + +/***/ }), + +/***/ "./src/base/game/events/EventRecordEntry.ts": +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"EventRecordEntry\": () => /* binding */ EventRecordEntry\n/* harmony export */ });\nvar EventRecordEntry;\r\n(function (EventRecordEntry) {\r\n /**\r\n * The Game Manager should assign this value to the `eventId` field\r\n * of a request-type event to signal if a request has been rejected.\r\n * It is convenient to use as a default value.\r\n */\r\n EventRecordEntry.EVENT_ID_REJECT = -1;\r\n})(EventRecordEntry || (EventRecordEntry = {}));\r\nObject.freeze(EventRecordEntry);\r\n;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9nYW1lL2V2ZW50cy9FdmVudFJlY29yZEVudHJ5LnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc25ha2V5My8uL3NyYy9iYXNlL2dhbWUvZXZlbnRzL0V2ZW50UmVjb3JkRW50cnkudHM/ZDAxMiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIEV2ZW50UmVjb3JkRW50cnk7XHJcbihmdW5jdGlvbiAoRXZlbnRSZWNvcmRFbnRyeSkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgR2FtZSBNYW5hZ2VyIHNob3VsZCBhc3NpZ24gdGhpcyB2YWx1ZSB0byB0aGUgYGV2ZW50SWRgIGZpZWxkXHJcbiAgICAgKiBvZiBhIHJlcXVlc3QtdHlwZSBldmVudCB0byBzaWduYWwgaWYgYSByZXF1ZXN0IGhhcyBiZWVuIHJlamVjdGVkLlxyXG4gICAgICogSXQgaXMgY29udmVuaWVudCB0byB1c2UgYXMgYSBkZWZhdWx0IHZhbHVlLlxyXG4gICAgICovXHJcbiAgICBFdmVudFJlY29yZEVudHJ5LkVWRU5UX0lEX1JFSkVDVCA9IC0xO1xyXG59KShFdmVudFJlY29yZEVudHJ5IHx8IChFdmVudFJlY29yZEVudHJ5ID0ge30pKTtcclxuT2JqZWN0LmZyZWV6ZShFdmVudFJlY29yZEVudHJ5KTtcclxuO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/base/game/events/EventRecordEntry.ts\n"); + +/***/ }), + +/***/ "./src/base/game/events/PlayerActionEvent.ts": +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"PlayerActionEvent\": () => /* binding */ PlayerActionEvent\n/* harmony export */ });\n/* harmony import */ var _EventRecordEntry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/game/events/EventRecordEntry.ts\");\n\r\nvar PlayerActionEvent;\r\n(function (PlayerActionEvent) {\r\n /**\r\n * This is the agreed upon value that both the server and client\r\n * copies of a game should set as the initial value for request id\r\n * counters. Remember that a request ID is a property of a player,\r\n * whereas an event ID is a property tied to a game.\r\n */\r\n PlayerActionEvent.INITIAL_REQUEST_ID = -1;\r\n PlayerActionEvent.EVENT_NAME = Object.freeze({\r\n BUBBLE: \"player-bubble\",\r\n MOVEMENT: \"player-movement\",\r\n });\r\n /**\r\n *\r\n */\r\n class Bubble {\r\n constructor(playerId, lastAcceptedRequestId) {\r\n this.eventId = _EventRecordEntry__WEBPACK_IMPORTED_MODULE_0__.EventRecordEntry.EVENT_ID_REJECT;\r\n this.affectedNeighbours = undefined;\r\n this.playerId = playerId;\r\n this.playerLastAcceptedRequestId = lastAcceptedRequestId;\r\n }\r\n }\r\n PlayerActionEvent.Bubble = Bubble;\r\n /**\r\n * ## Player Movement Event\r\n *\r\n * This single method-less class carries the bare-minimum information\r\n * needed to describe a client's request for movement to the server,\r\n * and to broadcast an acceptance of the request describing all changes\r\n * to the game state that must be made (or to otherwise direct-reply\r\n * the requester in case of request-rejection).\r\n *\r\n * It must do so in a way that allows the server and clients to infer\r\n * whether any message reordering occurred.\r\n *\r\n * ### The Problem in Summary\r\n *\r\n * - Client copies of the game should lag behind the master copy of\r\n * the game state as little as possible with as small of a choking\r\n * effect on a client's ability to send requests as possible. This\r\n * rules out doing periodic game-state-dump broadcasts (because of\r\n * the transmission delay), and \"big-locks\" requiring a client to\r\n * have a completely up-to-date copy of the game state to have its\r\n * requests processed.\r\n * - Nothing should ever happen in the client copies of the game that\r\n * doesn't happen in the master copy at the server. Ie. Since game-\r\n * state-dumps are out of the question, any corruption / de-sync of\r\n * the client's copy of the game is considered fatal and completely\r\n * unrecoverable.\r\n * - As a bonus, it would be nice to bake in a mechanism to prevent\r\n * malicious or unintended spam from a trigger-happy client without\r\n * excessively / unnecessarily throttling the request-making ability\r\n * or throughput of any clients.\r\n */\r\n class Movement extends Bubble {\r\n constructor(playerId, lastAcceptedRequestId, destTile, moveType) {\r\n super(playerId, lastAcceptedRequestId);\r\n /**\r\n * Any value assigned by the requester to this field should be\r\n * ignored by the server. The server should respond with the new\r\n * values taken on by the player for these fields.\r\n */\r\n this.newPlayerHealth = undefined;\r\n /**\r\n * Undefined is equivalent to an empty array.\r\n */\r\n this.tileHealthModDescs = undefined;\r\n this.destModDesc = {\r\n coord: destTile.coord,\r\n lastKnownUpdateId: destTile.lastKnownUpdateId,\r\n newCharSeqPair: undefined,\r\n newFreeHealth: undefined,\r\n };\r\n this.moveType = moveType;\r\n }\r\n }\r\n PlayerActionEvent.Movement = Movement;\r\n})(PlayerActionEvent || (PlayerActionEvent = {}));\r\nObject.freeze(PlayerActionEvent);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9nYW1lL2V2ZW50cy9QbGF5ZXJBY3Rpb25FdmVudC50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL3NuYWtleTMvLi9zcmMvYmFzZS9nYW1lL2V2ZW50cy9QbGF5ZXJBY3Rpb25FdmVudC50cz9kODJmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50UmVjb3JkRW50cnkgfSBmcm9tIFwiLi9FdmVudFJlY29yZEVudHJ5XCI7XHJcbmV4cG9ydCB2YXIgUGxheWVyQWN0aW9uRXZlbnQ7XHJcbihmdW5jdGlvbiAoUGxheWVyQWN0aW9uRXZlbnQpIHtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBpcyB0aGUgYWdyZWVkIHVwb24gdmFsdWUgdGhhdCBib3RoIHRoZSBzZXJ2ZXIgYW5kIGNsaWVudFxyXG4gICAgICogY29waWVzIG9mIGEgZ2FtZSBzaG91bGQgc2V0IGFzIHRoZSBpbml0aWFsIHZhbHVlIGZvciByZXF1ZXN0IGlkXHJcbiAgICAgKiBjb3VudGVycy4gUmVtZW1iZXIgdGhhdCBhIHJlcXVlc3QgSUQgaXMgYSBwcm9wZXJ0eSBvZiBhIHBsYXllcixcclxuICAgICAqIHdoZXJlYXMgYW4gZXZlbnQgSUQgaXMgYSBwcm9wZXJ0eSB0aWVkIHRvIGEgZ2FtZS5cclxuICAgICAqL1xyXG4gICAgUGxheWVyQWN0aW9uRXZlbnQuSU5JVElBTF9SRVFVRVNUX0lEID0gLTE7XHJcbiAgICBQbGF5ZXJBY3Rpb25FdmVudC5FVkVOVF9OQU1FID0gT2JqZWN0LmZyZWV6ZSh7XHJcbiAgICAgICAgQlVCQkxFOiBcInBsYXllci1idWJibGVcIixcclxuICAgICAgICBNT1ZFTUVOVDogXCJwbGF5ZXItbW92ZW1lbnRcIixcclxuICAgIH0pO1xyXG4gICAgLyoqXHJcbiAgICAgKlxyXG4gICAgICovXHJcbiAgICBjbGFzcyBCdWJibGUge1xyXG4gICAgICAgIGNvbnN0cnVjdG9yKHBsYXllcklkLCBsYXN0QWNjZXB0ZWRSZXF1ZXN0SWQpIHtcclxuICAgICAgICAgICAgdGhpcy5ldmVudElkID0gRXZlbnRSZWNvcmRFbnRyeS5FVkVOVF9JRF9SRUpFQ1Q7XHJcbiAgICAgICAgICAgIHRoaXMuYWZmZWN0ZWROZWlnaGJvdXJzID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICB0aGlzLnBsYXllcklkID0gcGxheWVySWQ7XHJcbiAgICAgICAgICAgIHRoaXMucGxheWVyTGFzdEFjY2VwdGVkUmVxdWVzdElkID0gbGFzdEFjY2VwdGVkUmVxdWVzdElkO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIFBsYXllckFjdGlvbkV2ZW50LkJ1YmJsZSA9IEJ1YmJsZTtcclxuICAgIC8qKlxyXG4gICAgICogIyMgUGxheWVyIE1vdmVtZW50IEV2ZW50XHJcbiAgICAgKlxyXG4gICAgICogVGhpcyBzaW5nbGUgbWV0aG9kLWxlc3MgY2xhc3MgY2FycmllcyB0aGUgYmFyZS1taW5pbXVtIGluZm9ybWF0aW9uXHJcbiAgICAgKiBuZWVkZWQgdG8gZGVzY3JpYmUgYSBjbGllbnQncyByZXF1ZXN0IGZvciBtb3ZlbWVudCB0byB0aGUgc2VydmVyLFxyXG4gICAgICogYW5kIHRvIGJyb2FkY2FzdCBhbiBhY2NlcHRhbmNlIG9mIHRoZSByZXF1ZXN0IGRlc2NyaWJpbmcgYWxsIGNoYW5nZXNcclxuICAgICAqIHRvIHRoZSBnYW1lIHN0YXRlIHRoYXQgbXVzdCBiZSBtYWRlIChvciB0byBvdGhlcndpc2UgZGlyZWN0LXJlcGx5XHJcbiAgICAgKiB0aGUgcmVxdWVzdGVyIGluIGNhc2Ugb2YgcmVxdWVzdC1yZWplY3Rpb24pLlxyXG4gICAgICpcclxuICAgICAqIEl0IG11c3QgZG8gc28gaW4gYSB3YXkgdGhhdCBhbGxvd3MgdGhlIHNlcnZlciBhbmQgY2xpZW50cyB0byBpbmZlclxyXG4gICAgICogd2hldGhlciBhbnkgbWVzc2FnZSByZW9yZGVyaW5nIG9jY3VycmVkLlxyXG4gICAgICpcclxuICAgICAqICMjIyBUaGUgUHJvYmxlbSBpbiBTdW1tYXJ5XHJcbiAgICAgKlxyXG4gICAgICogLSBDbGllbnQgY29waWVzIG9mIHRoZSBnYW1lIHNob3VsZCBsYWcgYmVoaW5kIHRoZSBtYXN0ZXIgY29weSBvZlxyXG4gICAgICogICB0aGUgZ2FtZSBzdGF0ZSBhcyBsaXR0bGUgYXMgcG9zc2libGUgd2l0aCBhcyBzbWFsbCBvZiBhIGNob2tpbmdcclxuICAgICAqICAgZWZmZWN0IG9uIGEgY2xpZW50J3MgYWJpbGl0eSB0byBzZW5kIHJlcXVlc3RzIGFzIHBvc3NpYmxlLiBUaGlzXHJcbiAgICAgKiAgIHJ1bGVzIG91dCBkb2luZyBwZXJpb2RpYyBnYW1lLXN0YXRlLWR1bXAgYnJvYWRjYXN0cyAoYmVjYXVzZSBvZlxyXG4gICAgICogICB0aGUgdHJhbnNtaXNzaW9uIGRlbGF5KSwgYW5kIFwiYmlnLWxvY2tzXCIgcmVxdWlyaW5nIGEgY2xpZW50IHRvXHJcbiAgICAgKiAgIGhhdmUgYSBjb21wbGV0ZWx5IHVwLXRvLWRhdGUgY29weSBvZiB0aGUgZ2FtZSBzdGF0ZSB0byBoYXZlIGl0c1xyXG4gICAgICogICByZXF1ZXN0cyBwcm9jZXNzZWQuXHJcbiAgICAgKiAtIE5vdGhpbmcgc2hvdWxkIGV2ZXIgaGFwcGVuIGluIHRoZSBjbGllbnQgY29waWVzIG9mIHRoZSBnYW1lIHRoYXRcclxuICAgICAqICAgZG9lc24ndCBoYXBwZW4gaW4gdGhlIG1hc3RlciBjb3B5IGF0IHRoZSBzZXJ2ZXIuIEllLiBTaW5jZSBnYW1lLVxyXG4gICAgICogICBzdGF0ZS1kdW1wcyBhcmUgb3V0IG9mIHRoZSBxdWVzdGlvbiwgYW55IGNvcnJ1cHRpb24gLyBkZS1zeW5jIG9mXHJcbiAgICAgKiAgIHRoZSBjbGllbnQncyBjb3B5IG9mIHRoZSBnYW1lIGlzIGNvbnNpZGVyZWQgZmF0YWwgYW5kIGNvbXBsZXRlbHlcclxuICAgICAqICAgdW5yZWNvdmVyYWJsZS5cclxuICAgICAqIC0gQXMgYSBib251cywgaXQgd291bGQgYmUgbmljZSB0byBiYWtlIGluIGEgbWVjaGFuaXNtIHRvIHByZXZlbnRcclxuICAgICAqICAgbWFsaWNpb3VzIG9yIHVuaW50ZW5kZWQgc3BhbSBmcm9tIGEgdHJpZ2dlci1oYXBweSBjbGllbnQgd2l0aG91dFxyXG4gICAgICogICBleGNlc3NpdmVseSAvIHVubmVjZXNzYXJpbHkgdGhyb3R0bGluZyB0aGUgcmVxdWVzdC1tYWtpbmcgYWJpbGl0eVxyXG4gICAgICogICBvciB0aHJvdWdocHV0IG9mIGFueSBjbGllbnRzLlxyXG4gICAgICovXHJcbiAgICBjbGFzcyBNb3ZlbWVudCBleHRlbmRzIEJ1YmJsZSB7XHJcbiAgICAgICAgY29uc3RydWN0b3IocGxheWVySWQsIGxhc3RBY2NlcHRlZFJlcXVlc3RJZCwgZGVzdFRpbGUsIG1vdmVUeXBlKSB7XHJcbiAgICAgICAgICAgIHN1cGVyKHBsYXllcklkLCBsYXN0QWNjZXB0ZWRSZXF1ZXN0SWQpO1xyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogQW55IHZhbHVlIGFzc2lnbmVkIGJ5IHRoZSByZXF1ZXN0ZXIgdG8gdGhpcyBmaWVsZCBzaG91bGQgYmVcclxuICAgICAgICAgICAgICogaWdub3JlZCBieSB0aGUgc2VydmVyLiBUaGUgc2VydmVyIHNob3VsZCByZXNwb25kIHdpdGggdGhlIG5ld1xyXG4gICAgICAgICAgICAgKiB2YWx1ZXMgdGFrZW4gb24gYnkgdGhlIHBsYXllciBmb3IgdGhlc2UgZmllbGRzLlxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgdGhpcy5uZXdQbGF5ZXJIZWFsdGggPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBVbmRlZmluZWQgaXMgZXF1aXZhbGVudCB0byBhbiBlbXB0eSBhcnJheS5cclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIHRoaXMudGlsZUhlYWx0aE1vZERlc2NzID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICB0aGlzLmRlc3RNb2REZXNjID0ge1xyXG4gICAgICAgICAgICAgICAgY29vcmQ6IGRlc3RUaWxlLmNvb3JkLFxyXG4gICAgICAgICAgICAgICAgbGFzdEtub3duVXBkYXRlSWQ6IGRlc3RUaWxlLmxhc3RLbm93blVwZGF0ZUlkLFxyXG4gICAgICAgICAgICAgICAgbmV3Q2hhclNlcVBhaXI6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIG5ld0ZyZWVIZWFsdGg6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy5tb3ZlVHlwZSA9IG1vdmVUeXBlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIFBsYXllckFjdGlvbkV2ZW50Lk1vdmVtZW50ID0gTW92ZW1lbnQ7XHJcbn0pKFBsYXllckFjdGlvbkV2ZW50IHx8IChQbGF5ZXJBY3Rpb25FdmVudCA9IHt9KSk7XHJcbk9iamVjdC5mcmVlemUoUGxheWVyQWN0aW9uRXZlbnQpO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/base/game/events/PlayerActionEvent.ts\n"); + +/***/ }), + +/***/ "./src/base/game/gameparts/GamepartBase.ts": +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"GamepartBase\": () => /* binding */ GamepartBase\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/defs/JsUtils.ts\");\n/* harmony import */ var defs_TypeDefs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/defs/TypeDefs.ts\");\n/* harmony import */ var _player_Player__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./src/base/game/player/Player.ts\");\n/* harmony import */ var _player_Team__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"./src/base/game/player/Team.ts\");\nvar _onGameBecomeOver, _currentOperator, _status;\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * Foundational parts of a Game that are not related to event handling.\r\n */\r\nclass GamepartBase {\r\n /**\r\n * Performs the \"no invincible player\" check (See {@link Player#teamSet}).\r\n *\r\n * @param gameType -\r\n * @param impl -\r\n * @param desc -\r\n */\r\n constructor(gameType, impl, desc) {\r\n _onGameBecomeOver.set(this, void 0);\r\n _currentOperator.set(this, void 0);\r\n _status.set(this, void 0);\r\n this.gameType = gameType;\r\n const gridClass = this._getGridImplementation(desc.coordSys);\r\n this.grid = new (gridClass)({\r\n gridClass: gridClass,\r\n tileClass: impl.tileClass,\r\n coordSys: desc.coordSys,\r\n dimensions: desc.gridDimensions,\r\n });\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldSet)(this, _onGameBecomeOver, impl.onGameBecomeOver);\r\n this.langFrontend = defs_TypeDefs__WEBPACK_IMPORTED_MODULE_1__.Lang.GET_FRONTEND_DESC_BY_ID(desc.langId);\r\n // Construct players:\r\n this._playerStatusCtor = impl.playerStatusCtor;\r\n this.players = this.createPlayers(desc);\r\n this.operators = Object.freeze(this.players.filter((player) => player.isALocalOperator));\r\n this.setCurrentOperator(0);\r\n {\r\n const teams = [];\r\n this.players.forEach((player) => {\r\n if (!teams[player.teamId]) {\r\n teams[player.teamId] = [];\r\n }\r\n teams[player.teamId].push(player);\r\n });\r\n this.teams = teams.map((teammateArray, teamId) => {\r\n return new _player_Team__WEBPACK_IMPORTED_MODULE_3__.Team(teamId, teammateArray);\r\n });\r\n if (this.teams.every((team) => team.id === _player_Team__WEBPACK_IMPORTED_MODULE_3__.Team.ElimOrder.IMMORTAL)) {\r\n // TODO.design put a check inside the UI code to prevent this.\r\n // The purpose of this restriction is to prevent DoS attacks on\r\n // a hosting server by creating games that can never end and\r\n // leaving them open forever, thus leaking the server's resources.\r\n throw new Error(\"All teams are immortal. The game will never end.\");\r\n }\r\n }\r\n defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.propNoWrite(this, [\r\n \"gameType\", \"grid\", \"langFrontend\",\r\n \"players\", \"operators\", \"teams\", \"_playerStatusCtor\",\r\n ]);\r\n this.players.forEach((player) => player._afterAllPlayersConstruction());\r\n }\r\n /**\r\n * Reset the grid.\r\n *\r\n * Overrides should not use the return value. They should return\r\n * the result of calling `ctorAsync`.\r\n */\r\n reset() {\r\n this.grid.reset();\r\n // We must reset status to PAUSED to pass a state-transition\r\n // assertion when changing status later to PLAYING.\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldSet)(this, _status, \"PAUSED\" /* PAUSED */);\r\n // Important: Since there is nothing to do in this game-part's\r\n // ctorAsync getter, we don't need to use `await`.\r\n return Promise.resolve();\r\n }\r\n /**\r\n * Private helper for the constructor to create player objects.\r\n * This is bypassed in non-game-manager implementations (Ie. In\r\n * OnlineGame).\r\n *\r\n * @param gameDesc -\r\n * @returns A bundle of the constructed players.\r\n */\r\n createPlayers(gameDesc) {\r\n const playerDescs = gameDesc.playerDescs\r\n = (this.gameType === \"ONLINE\" /* ONLINE */)\r\n // The client receives these descriptors already finalized / cleaned by the server.\r\n ? gameDesc.playerDescs\r\n : _player_Player__WEBPACK_IMPORTED_MODULE_2__.Player.CtorArgs.finalize(gameDesc.playerDescs);\r\n return Object.freeze(playerDescs.map((playerDesc) => {\r\n if (playerDesc.familyId === _player_Player__WEBPACK_IMPORTED_MODULE_2__.Player.Family.HUMAN) {\r\n return (playerDesc.isALocalOperator)\r\n ? this._createOperatorPlayer(playerDesc)\r\n : new _player_Player__WEBPACK_IMPORTED_MODULE_2__.Player(this, playerDesc);\r\n }\r\n else {\r\n return this._createArtifPlayer(playerDesc);\r\n }\r\n }));\r\n }\r\n serializeResetState() {\r\n const csps = [];\r\n const playerCoords = this.players.map((player) => player.coord);\r\n const healthCoords = [];\r\n this.grid.forEachTile((tile) => {\r\n tile.lastKnownUpdateId++;\r\n csps.push({\r\n char: tile.langChar,\r\n seq: tile.langSeq,\r\n });\r\n if (tile.freeHealth) {\r\n healthCoords.push({\r\n coord: tile.coord,\r\n health: tile.freeHealth,\r\n });\r\n }\r\n });\r\n return { csps, playerCoords, healthCoords };\r\n }\r\n deserializeResetState(ser) {\r\n // Could also use `csps.unshift`, but that may be slower\r\n // because it modifies csps, which we don't need to do.\r\n this.grid.forEachTile((tile, index) => {\r\n tile.setLangCharSeqPair(ser.csps[index]);\r\n tile.lastKnownUpdateId++;\r\n });\r\n ser.playerCoords.forEach((coord, index) => {\r\n this.players[index].reset(this.grid.tile.at(coord));\r\n });\r\n ser.healthCoords.forEach((desc) => {\r\n this.grid.tile.at(desc.coord).freeHealth = desc.health;\r\n });\r\n }\r\n get currentOperator() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _currentOperator);\r\n }\r\n setCurrentOperator(nextOperatorIndex) {\r\n const nextOperator = this.operators[nextOperatorIndex];\r\n if (this.currentOperator !== nextOperator) {\r\n nextOperator._notifyWillBecomeCurrent();\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldSet)(this, _currentOperator, nextOperator);\r\n // IMPORTANT: The order of the above lines matters\r\n // (hence the method name \"notifyWillBecomeCurrent\").\r\n }\r\n }\r\n get status() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _status);\r\n }\r\n /**\r\n * On the client side, this should only be accessed through a\r\n * wrapper function that also makes UI-related changes.\r\n *\r\n * If the game is already playing, this does nothing.\r\n */\r\n statusBecomePlaying() {\r\n if (this.status === \"PLAYING\" /* PLAYING */) {\r\n console.log(\"[statusBecomePlaying]: Game is already playing\");\r\n return;\r\n }\r\n if (this.status !== \"PAUSED\" /* PAUSED */) {\r\n throw new Error(\"Can only resume a game that is currently paused.\");\r\n }\r\n this.players.forEach((player) => {\r\n player._notifyGameNowPlaying();\r\n });\r\n this._abstractStatusBecomePlaying();\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldSet)(this, _status, \"PLAYING\" /* PLAYING */);\r\n }\r\n /**\r\n * On the client side, this should only be accessed through a\r\n * wrapper function that also makes UI-related changes.\r\n *\r\n * If the game is already paused, this does nothing.\r\n */\r\n statusBecomePaused() {\r\n if (this.status === \"PAUSED\" /* PAUSED */) {\r\n console.log(\"[statusBecomePaused]: Game is already paused\");\r\n return;\r\n }\r\n if (this.status === \"OVER\" /* OVER */) {\r\n return;\r\n }\r\n this.players.forEach((player) => {\r\n player._notifyGameNowPaused();\r\n });\r\n this._abstractStatusBecomePaused();\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldSet)(this, _status, \"PAUSED\" /* PAUSED */);\r\n }\r\n /**\r\n * This should be called when all non-immortal teams have been\r\n * eliminated. A team is immortal if all its members have the\r\n * `noCheckGameOver` flag set to `true`. A mortal team becomes\r\n * (and subsequently, unconditionally stays) eliminated when all\r\n * their members are in a downed state at the same time.\r\n *\r\n * This should not be controllable by UI input elements.\r\n */\r\n statusBecomeOver() {\r\n if (this.status !== \"PLAYING\" /* PLAYING */) {\r\n throw new Error(\"Can only end a game that is currently playing.\");\r\n }\r\n this.players.forEach((player) => {\r\n player._notifyGameNowOver();\r\n });\r\n this._abstractStatusBecomeOver();\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldSet)(this, _status, \"OVER\" /* OVER */);\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _onGameBecomeOver).call(this);\r\n console.log(\"game is over!\");\r\n }\r\n _abstractStatusBecomePlaying() { }\r\n _abstractStatusBecomePaused() { }\r\n _abstractStatusBecomeOver() { }\r\n}\r\n_onGameBecomeOver = new WeakMap(), _currentOperator = new WeakMap(), _status = new WeakMap();\r\ndefs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.protoNoEnum(GamepartBase, [\r\n \"_abstractStatusBecomePlaying\",\r\n \"_abstractStatusBecomePaused\",\r\n \"_abstractStatusBecomeOver\",\r\n]);\r\nObject.freeze(GamepartBase);\r\nObject.freeze(GamepartBase.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9nYW1lL2dhbWVwYXJ0cy9HYW1lcGFydEJhc2UudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zbmFrZXkzLy4vc3JjL2Jhc2UvZ2FtZS9nYW1lcGFydHMvR2FtZXBhcnRCYXNlLnRzPzQ4N2QiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9vbkdhbWVCZWNvbWVPdmVyLCBfY3VycmVudE9wZXJhdG9yLCBfc3RhdHVzO1xyXG5pbXBvcnQgeyBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0LCBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0IH0gZnJvbSBcInRzbGliXCI7XHJcbmltcG9ydCB7IEpzVXRpbHMgfSBmcm9tIFwiZGVmcy9Kc1V0aWxzXCI7XHJcbmltcG9ydCB7IExhbmcgfSBmcm9tIFwiZGVmcy9UeXBlRGVmc1wiO1xyXG5pbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyL1BsYXllclwiO1xyXG5pbXBvcnQgeyBUZWFtIH0gZnJvbSBcIi4uL3BsYXllci9UZWFtXCI7XHJcbi8qKlxyXG4gKiBGb3VuZGF0aW9uYWwgcGFydHMgb2YgYSBHYW1lIHRoYXQgYXJlIG5vdCByZWxhdGVkIHRvIGV2ZW50IGhhbmRsaW5nLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEdhbWVwYXJ0QmFzZSB7XHJcbiAgICAvKipcclxuICAgICAqIFBlcmZvcm1zIHRoZSBcIm5vIGludmluY2libGUgcGxheWVyXCIgY2hlY2sgKFNlZSB7QGxpbmsgUGxheWVyI3RlYW1TZXR9KS5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZ2FtZVR5cGUgLVxyXG4gICAgICogQHBhcmFtIGltcGwgLVxyXG4gICAgICogQHBhcmFtIGRlc2MgLVxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihnYW1lVHlwZSwgaW1wbCwgZGVzYykge1xyXG4gICAgICAgIF9vbkdhbWVCZWNvbWVPdmVyLnNldCh0aGlzLCB2b2lkIDApO1xyXG4gICAgICAgIF9jdXJyZW50T3BlcmF0b3Iuc2V0KHRoaXMsIHZvaWQgMCk7XHJcbiAgICAgICAgX3N0YXR1cy5zZXQodGhpcywgdm9pZCAwKTtcclxuICAgICAgICB0aGlzLmdhbWVUeXBlID0gZ2FtZVR5cGU7XHJcbiAgICAgICAgY29uc3QgZ3JpZENsYXNzID0gdGhpcy5fZ2V0R3JpZEltcGxlbWVudGF0aW9uKGRlc2MuY29vcmRTeXMpO1xyXG4gICAgICAgIHRoaXMuZ3JpZCA9IG5ldyAoZ3JpZENsYXNzKSh7XHJcbiAgICAgICAgICAgIGdyaWRDbGFzczogZ3JpZENsYXNzLFxyXG4gICAgICAgICAgICB0aWxlQ2xhc3M6IGltcGwudGlsZUNsYXNzLFxyXG4gICAgICAgICAgICBjb29yZFN5czogZGVzYy5jb29yZFN5cyxcclxuICAgICAgICAgICAgZGltZW5zaW9uczogZGVzYy5ncmlkRGltZW5zaW9ucyxcclxuICAgICAgICB9KTtcclxuICAgICAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9vbkdhbWVCZWNvbWVPdmVyLCBpbXBsLm9uR2FtZUJlY29tZU92ZXIpO1xyXG4gICAgICAgIHRoaXMubGFuZ0Zyb250ZW5kID0gTGFuZy5HRVRfRlJPTlRFTkRfREVTQ19CWV9JRChkZXNjLmxhbmdJZCk7XHJcbiAgICAgICAgLy8gQ29uc3RydWN0IHBsYXllcnM6XHJcbiAgICAgICAgdGhpcy5fcGxheWVyU3RhdHVzQ3RvciA9IGltcGwucGxheWVyU3RhdHVzQ3RvcjtcclxuICAgICAgICB0aGlzLnBsYXllcnMgPSB0aGlzLmNyZWF0ZVBsYXllcnMoZGVzYyk7XHJcbiAgICAgICAgdGhpcy5vcGVyYXRvcnMgPSBPYmplY3QuZnJlZXplKHRoaXMucGxheWVycy5maWx0ZXIoKHBsYXllcikgPT4gcGxheWVyLmlzQUxvY2FsT3BlcmF0b3IpKTtcclxuICAgICAgICB0aGlzLnNldEN1cnJlbnRPcGVyYXRvcigwKTtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRlYW1zID0gW107XHJcbiAgICAgICAgICAgIHRoaXMucGxheWVycy5mb3JFYWNoKChwbGF5ZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghdGVhbXNbcGxheWVyLnRlYW1JZF0pIHtcclxuICAgICAgICAgICAgICAgICAgICB0ZWFtc1twbGF5ZXIudGVhbUlkXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGVhbXNbcGxheWVyLnRlYW1JZF0ucHVzaChwbGF5ZXIpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy50ZWFtcyA9IHRlYW1zLm1hcCgodGVhbW1hdGVBcnJheSwgdGVhbUlkKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFRlYW0odGVhbUlkLCB0ZWFtbWF0ZUFycmF5KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRlYW1zLmV2ZXJ5KCh0ZWFtKSA9PiB0ZWFtLmlkID09PSBUZWFtLkVsaW1PcmRlci5JTU1PUlRBTCkpIHtcclxuICAgICAgICAgICAgICAgIC8vIFRPRE8uZGVzaWduIHB1dCBhIGNoZWNrIGluc2lkZSB0aGUgVUkgY29kZSB0byBwcmV2ZW50IHRoaXMuXHJcbiAgICAgICAgICAgICAgICAvLyBUaGUgcHVycG9zZSBvZiB0aGlzIHJlc3RyaWN0aW9uIGlzIHRvIHByZXZlbnQgRG9TIGF0dGFja3Mgb25cclxuICAgICAgICAgICAgICAgIC8vIGEgaG9zdGluZyBzZXJ2ZXIgYnkgY3JlYXRpbmcgZ2FtZXMgdGhhdCBjYW4gbmV2ZXIgZW5kIGFuZFxyXG4gICAgICAgICAgICAgICAgLy8gbGVhdmluZyB0aGVtIG9wZW4gZm9yZXZlciwgdGh1cyBsZWFraW5nIHRoZSBzZXJ2ZXIncyByZXNvdXJjZXMuXHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBbGwgdGVhbXMgYXJlIGltbW9ydGFsLiBUaGUgZ2FtZSB3aWxsIG5ldmVyIGVuZC5cIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgSnNVdGlscy5wcm9wTm9Xcml0ZSh0aGlzLCBbXHJcbiAgICAgICAgICAgIFwiZ2FtZVR5cGVcIiwgXCJncmlkXCIsIFwibGFuZ0Zyb250ZW5kXCIsXHJcbiAgICAgICAgICAgIFwicGxheWVyc1wiLCBcIm9wZXJhdG9yc1wiLCBcInRlYW1zXCIsIFwiX3BsYXllclN0YXR1c0N0b3JcIixcclxuICAgICAgICBdKTtcclxuICAgICAgICB0aGlzLnBsYXllcnMuZm9yRWFjaCgocGxheWVyKSA9PiBwbGF5ZXIuX2FmdGVyQWxsUGxheWVyc0NvbnN0cnVjdGlvbigpKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogUmVzZXQgdGhlIGdyaWQuXHJcbiAgICAgKlxyXG4gICAgICogT3ZlcnJpZGVzIHNob3VsZCBub3QgdXNlIHRoZSByZXR1cm4gdmFsdWUuIFRoZXkgc2hvdWxkIHJldHVyblxyXG4gICAgICogdGhlIHJlc3VsdCBvZiBjYWxsaW5nIGBjdG9yQXN5bmNgLlxyXG4gICAgICovXHJcbiAgICByZXNldCgpIHtcclxuICAgICAgICB0aGlzLmdyaWQucmVzZXQoKTtcclxuICAgICAgICAvLyBXZSBtdXN0IHJlc2V0IHN0YXR1cyB0byBQQVVTRUQgdG8gcGFzcyBhIHN0YXRlLXRyYW5zaXRpb25cclxuICAgICAgICAvLyBhc3NlcnRpb24gd2hlbiBjaGFuZ2luZyBzdGF0dXMgbGF0ZXIgdG8gUExBWUlORy5cclxuICAgICAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9zdGF0dXMsIFwiUEFVU0VEXCIgLyogUEFVU0VEICovKTtcclxuICAgICAgICAvLyBJbXBvcnRhbnQ6IFNpbmNlIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8gaW4gdGhpcyBnYW1lLXBhcnQnc1xyXG4gICAgICAgIC8vIGN0b3JBc3luYyBnZXR0ZXIsIHdlIGRvbid0IG5lZWQgdG8gdXNlIGBhd2FpdGAuXHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBQcml2YXRlIGhlbHBlciBmb3IgdGhlIGNvbnN0cnVjdG9yIHRvIGNyZWF0ZSBwbGF5ZXIgb2JqZWN0cy5cclxuICAgICAqIFRoaXMgaXMgYnlwYXNzZWQgaW4gbm9uLWdhbWUtbWFuYWdlciBpbXBsZW1lbnRhdGlvbnMgKEllLiBJblxyXG4gICAgICogT25saW5lR2FtZSkuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGdhbWVEZXNjIC1cclxuICAgICAqIEByZXR1cm5zIEEgYnVuZGxlIG9mIHRoZSBjb25zdHJ1Y3RlZCBwbGF5ZXJzLlxyXG4gICAgICovXHJcbiAgICBjcmVhdGVQbGF5ZXJzKGdhbWVEZXNjKSB7XHJcbiAgICAgICAgY29uc3QgcGxheWVyRGVzY3MgPSBnYW1lRGVzYy5wbGF5ZXJEZXNjc1xyXG4gICAgICAgICAgICA9ICh0aGlzLmdhbWVUeXBlID09PSBcIk9OTElORVwiIC8qIE9OTElORSAqLylcclxuICAgICAgICAgICAgICAgIC8vIFRoZSBjbGllbnQgcmVjZWl2ZXMgdGhlc2UgZGVzY3JpcHRvcnMgYWxyZWFkeSBmaW5hbGl6ZWQgLyBjbGVhbmVkIGJ5IHRoZSBzZXJ2ZXIuXHJcbiAgICAgICAgICAgICAgICA/IGdhbWVEZXNjLnBsYXllckRlc2NzXHJcbiAgICAgICAgICAgICAgICA6IFBsYXllci5DdG9yQXJncy5maW5hbGl6ZShnYW1lRGVzYy5wbGF5ZXJEZXNjcyk7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC5mcmVlemUocGxheWVyRGVzY3MubWFwKChwbGF5ZXJEZXNjKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChwbGF5ZXJEZXNjLmZhbWlseUlkID09PSBQbGF5ZXIuRmFtaWx5LkhVTUFOKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKHBsYXllckRlc2MuaXNBTG9jYWxPcGVyYXRvcilcclxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuX2NyZWF0ZU9wZXJhdG9yUGxheWVyKHBsYXllckRlc2MpXHJcbiAgICAgICAgICAgICAgICAgICAgOiBuZXcgUGxheWVyKHRoaXMsIHBsYXllckRlc2MpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUFydGlmUGxheWVyKHBsYXllckRlc2MpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSkpO1xyXG4gICAgfVxyXG4gICAgc2VyaWFsaXplUmVzZXRTdGF0ZSgpIHtcclxuICAgICAgICBjb25zdCBjc3BzID0gW107XHJcbiAgICAgICAgY29uc3QgcGxheWVyQ29vcmRzID0gdGhpcy5wbGF5ZXJzLm1hcCgocGxheWVyKSA9PiBwbGF5ZXIuY29vcmQpO1xyXG4gICAgICAgIGNvbnN0IGhlYWx0aENvb3JkcyA9IFtdO1xyXG4gICAgICAgIHRoaXMuZ3JpZC5mb3JFYWNoVGlsZSgodGlsZSkgPT4ge1xyXG4gICAgICAgICAgICB0aWxlLmxhc3RLbm93blVwZGF0ZUlkKys7XHJcbiAgICAgICAgICAgIGNzcHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBjaGFyOiB0aWxlLmxhbmdDaGFyLFxyXG4gICAgICAgICAgICAgICAgc2VxOiB0aWxlLmxhbmdTZXEsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZiAodGlsZS5mcmVlSGVhbHRoKSB7XHJcbiAgICAgICAgICAgICAgICBoZWFsdGhDb29yZHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgY29vcmQ6IHRpbGUuY29vcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgaGVhbHRoOiB0aWxlLmZyZWVIZWFsdGgsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB7IGNzcHMsIHBsYXllckNvb3JkcywgaGVhbHRoQ29vcmRzIH07XHJcbiAgICB9XHJcbiAgICBkZXNlcmlhbGl6ZVJlc2V0U3RhdGUoc2VyKSB7XHJcbiAgICAgICAgLy8gQ291bGQgYWxzbyB1c2UgYGNzcHMudW5zaGlmdGAsIGJ1dCB0aGF0IG1heSBiZSBzbG93ZXJcclxuICAgICAgICAvLyBiZWNhdXNlIGl0IG1vZGlmaWVzIGNzcHMsIHdoaWNoIHdlIGRvbid0IG5lZWQgdG8gZG8uXHJcbiAgICAgICAgdGhpcy5ncmlkLmZvckVhY2hUaWxlKCh0aWxlLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICB0aWxlLnNldExhbmdDaGFyU2VxUGFpcihzZXIuY3Nwc1tpbmRleF0pO1xyXG4gICAgICAgICAgICB0aWxlLmxhc3RLbm93blVwZGF0ZUlkKys7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgc2VyLnBsYXllckNvb3Jkcy5mb3JFYWNoKChjb29yZCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbGF5ZXJzW2luZGV4XS5yZXNldCh0aGlzLmdyaWQudGlsZS5hdChjb29yZCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHNlci5oZWFsdGhDb29yZHMuZm9yRWFjaCgoZGVzYykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmdyaWQudGlsZS5hdChkZXNjLmNvb3JkKS5mcmVlSGVhbHRoID0gZGVzYy5oZWFsdGg7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBnZXQgY3VycmVudE9wZXJhdG9yKCkge1xyXG4gICAgICAgIHJldHVybiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9jdXJyZW50T3BlcmF0b3IpO1xyXG4gICAgfVxyXG4gICAgc2V0Q3VycmVudE9wZXJhdG9yKG5leHRPcGVyYXRvckluZGV4KSB7XHJcbiAgICAgICAgY29uc3QgbmV4dE9wZXJhdG9yID0gdGhpcy5vcGVyYXRvcnNbbmV4dE9wZXJhdG9ySW5kZXhdO1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRPcGVyYXRvciAhPT0gbmV4dE9wZXJhdG9yKSB7XHJcbiAgICAgICAgICAgIG5leHRPcGVyYXRvci5fbm90aWZ5V2lsbEJlY29tZUN1cnJlbnQoKTtcclxuICAgICAgICAgICAgX19jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfY3VycmVudE9wZXJhdG9yLCBuZXh0T3BlcmF0b3IpO1xyXG4gICAgICAgICAgICAvLyBJTVBPUlRBTlQ6IFRoZSBvcmRlciBvZiB0aGUgYWJvdmUgbGluZXMgbWF0dGVyc1xyXG4gICAgICAgICAgICAvLyAoaGVuY2UgdGhlIG1ldGhvZCBuYW1lIFwibm90aWZ5V2lsbEJlY29tZUN1cnJlbnRcIikuXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZ2V0IHN0YXR1cygpIHtcclxuICAgICAgICByZXR1cm4gX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfc3RhdHVzKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogT24gdGhlIGNsaWVudCBzaWRlLCB0aGlzIHNob3VsZCBvbmx5IGJlIGFjY2Vzc2VkIHRocm91Z2ggYVxyXG4gICAgICogd3JhcHBlciBmdW5jdGlvbiB0aGF0IGFsc28gbWFrZXMgVUktcmVsYXRlZCBjaGFuZ2VzLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBnYW1lIGlzIGFscmVhZHkgcGxheWluZywgdGhpcyBkb2VzIG5vdGhpbmcuXHJcbiAgICAgKi9cclxuICAgIHN0YXR1c0JlY29tZVBsYXlpbmcoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSBcIlBMQVlJTkdcIiAvKiBQTEFZSU5HICovKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiW3N0YXR1c0JlY29tZVBsYXlpbmddOiBHYW1lIGlzIGFscmVhZHkgcGxheWluZ1wiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5zdGF0dXMgIT09IFwiUEFVU0VEXCIgLyogUEFVU0VEICovKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbiBvbmx5IHJlc3VtZSBhIGdhbWUgdGhhdCBpcyBjdXJyZW50bHkgcGF1c2VkLlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wbGF5ZXJzLmZvckVhY2goKHBsYXllcikgPT4ge1xyXG4gICAgICAgICAgICBwbGF5ZXIuX25vdGlmeUdhbWVOb3dQbGF5aW5nKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5fYWJzdHJhY3RTdGF0dXNCZWNvbWVQbGF5aW5nKCk7XHJcbiAgICAgICAgX19jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfc3RhdHVzLCBcIlBMQVlJTkdcIiAvKiBQTEFZSU5HICovKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogT24gdGhlIGNsaWVudCBzaWRlLCB0aGlzIHNob3VsZCBvbmx5IGJlIGFjY2Vzc2VkIHRocm91Z2ggYVxyXG4gICAgICogd3JhcHBlciBmdW5jdGlvbiB0aGF0IGFsc28gbWFrZXMgVUktcmVsYXRlZCBjaGFuZ2VzLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBnYW1lIGlzIGFscmVhZHkgcGF1c2VkLCB0aGlzIGRvZXMgbm90aGluZy5cclxuICAgICAqL1xyXG4gICAgc3RhdHVzQmVjb21lUGF1c2VkKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gXCJQQVVTRURcIiAvKiBQQVVTRUQgKi8pIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJbc3RhdHVzQmVjb21lUGF1c2VkXTogR2FtZSBpcyBhbHJlYWR5IHBhdXNlZFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IFwiT1ZFUlwiIC8qIE9WRVIgKi8pIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBsYXllcnMuZm9yRWFjaCgocGxheWVyKSA9PiB7XHJcbiAgICAgICAgICAgIHBsYXllci5fbm90aWZ5R2FtZU5vd1BhdXNlZCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX2Fic3RyYWN0U3RhdHVzQmVjb21lUGF1c2VkKCk7XHJcbiAgICAgICAgX19jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfc3RhdHVzLCBcIlBBVVNFRFwiIC8qIFBBVVNFRCAqLyk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIGFsbCBub24taW1tb3J0YWwgdGVhbXMgaGF2ZSBiZWVuXHJcbiAgICAgKiBlbGltaW5hdGVkLiBBIHRlYW0gaXMgaW1tb3J0YWwgaWYgYWxsIGl0cyBtZW1iZXJzIGhhdmUgdGhlXHJcbiAgICAgKiBgbm9DaGVja0dhbWVPdmVyYCBmbGFnIHNldCB0byBgdHJ1ZWAuIEEgbW9ydGFsIHRlYW0gYmVjb21lc1xyXG4gICAgICogKGFuZCBzdWJzZXF1ZW50bHksIHVuY29uZGl0aW9uYWxseSBzdGF5cykgZWxpbWluYXRlZCB3aGVuIGFsbFxyXG4gICAgICogdGhlaXIgbWVtYmVycyBhcmUgaW4gYSBkb3duZWQgc3RhdGUgYXQgdGhlIHNhbWUgdGltZS5cclxuICAgICAqXHJcbiAgICAgKiBUaGlzIHNob3VsZCBub3QgYmUgY29udHJvbGxhYmxlIGJ5IFVJIGlucHV0IGVsZW1lbnRzLlxyXG4gICAgICovXHJcbiAgICBzdGF0dXNCZWNvbWVPdmVyKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXR1cyAhPT0gXCJQTEFZSU5HXCIgLyogUExBWUlORyAqLykge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW4gb25seSBlbmQgYSBnYW1lIHRoYXQgaXMgY3VycmVudGx5IHBsYXlpbmcuXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBsYXllcnMuZm9yRWFjaCgocGxheWVyKSA9PiB7XHJcbiAgICAgICAgICAgIHBsYXllci5fbm90aWZ5R2FtZU5vd092ZXIoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLl9hYnN0cmFjdFN0YXR1c0JlY29tZU92ZXIoKTtcclxuICAgICAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9zdGF0dXMsIFwiT1ZFUlwiIC8qIE9WRVIgKi8pO1xyXG4gICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX29uR2FtZUJlY29tZU92ZXIpLmNhbGwodGhpcyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJnYW1lIGlzIG92ZXIhXCIpO1xyXG4gICAgfVxyXG4gICAgX2Fic3RyYWN0U3RhdHVzQmVjb21lUGxheWluZygpIHsgfVxyXG4gICAgX2Fic3RyYWN0U3RhdHVzQmVjb21lUGF1c2VkKCkgeyB9XHJcbiAgICBfYWJzdHJhY3RTdGF0dXNCZWNvbWVPdmVyKCkgeyB9XHJcbn1cclxuX29uR2FtZUJlY29tZU92ZXIgPSBuZXcgV2Vha01hcCgpLCBfY3VycmVudE9wZXJhdG9yID0gbmV3IFdlYWtNYXAoKSwgX3N0YXR1cyA9IG5ldyBXZWFrTWFwKCk7XHJcbkpzVXRpbHMucHJvdG9Ob0VudW0oR2FtZXBhcnRCYXNlLCBbXHJcbiAgICBcIl9hYnN0cmFjdFN0YXR1c0JlY29tZVBsYXlpbmdcIixcclxuICAgIFwiX2Fic3RyYWN0U3RhdHVzQmVjb21lUGF1c2VkXCIsXHJcbiAgICBcIl9hYnN0cmFjdFN0YXR1c0JlY29tZU92ZXJcIixcclxuXSk7XHJcbk9iamVjdC5mcmVlemUoR2FtZXBhcnRCYXNlKTtcclxuT2JqZWN0LmZyZWV6ZShHYW1lcGFydEJhc2UucHJvdG90eXBlKTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/base/game/gameparts/GamepartBase.ts\n"); + +/***/ }), + +/***/ "./src/base/game/gameparts/GamepartEvents.ts": +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"PlayerActionEvent\": () => /* reexport safe */ _events_PlayerActionEvent__WEBPACK_IMPORTED_MODULE_2__.PlayerActionEvent,\n/* harmony export */ \"GamepartEvents\": () => /* binding */ GamepartEvents\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _Game__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/game/Game.ts\");\n/* harmony import */ var _events_EventRecordEntry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/game/events/EventRecordEntry.ts\");\n/* harmony import */ var _events_PlayerActionEvent__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./src/base/game/events/PlayerActionEvent.ts\");\n/* harmony import */ var _GamepartBase__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"./src/base/game/gameparts/GamepartBase.ts\");\nvar _nextUnusedEventId;\r\n\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * All events have two corresponding handler functions taking a\r\n * request descriptor object (\"desc\"):\r\n *\r\n * ### Request Processor\r\n *\r\n * The request processor is only used by the Game Manager. It decides\r\n * whether to accept or reject the request based on `desc` and may\r\n * throw exceptions on impossible arguments. It should not make any\r\n * changes to the game state. Instead, it is responsible to augment\r\n * `desc` with information describing what changes to the game state\r\n * must be made.\r\n *\r\n * ### Request Executor\r\n *\r\n * This takes the `desc` augmented by the request processor and enacts\r\n * all the described changes upon the game's state. If the Game Manager\r\n * is not local to the client (a server process), then this handler is\r\n * called at both the server and client.\r\n *\r\n * Updates the event record if the response is accepted.\r\n */\r\nclass GamepartEvents extends _GamepartBase__WEBPACK_IMPORTED_MODULE_3__.GamepartBase {\r\n constructor(gameType, impl, gameDesc) {\r\n super(gameType, impl, gameDesc);\r\n _nextUnusedEventId.set(this, void 0);\r\n this.eventRecordBitmap = [];\r\n }\r\n reset() {\r\n const superPromise = super.reset();\r\n // Clear the event record:\r\n this.eventRecordBitmap.fill(false, 0, _Game__WEBPACK_IMPORTED_MODULE_0__.Game.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH);\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldSet)(this, _nextUnusedEventId, 0);\r\n // Since we didn't wait for the superPromise, return it.\r\n return superPromise;\r\n }\r\n get nextUnusedEventId() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _nextUnusedEventId);\r\n }\r\n /**\r\n * Basically does `this.eventRecord[id] = desc;` with value checking.\r\n *\r\n * @param desc -\r\n *\r\n * @throws\r\n * In the given order of priority:\r\n * - TypeError if the event ID indicates a rejected request\r\n * - RangeError if it is not a positive integer\r\n * - Error if another event was already recorded with the same ID.\r\n */\r\n _recordEvent(desc) {\r\n const id = desc.eventId;\r\n const wrappedId = id % _Game__WEBPACK_IMPORTED_MODULE_0__.Game.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH;\r\n if (id === _events_EventRecordEntry__WEBPACK_IMPORTED_MODULE_1__.EventRecordEntry.EVENT_ID_REJECT) {\r\n throw new TypeError(\"Do not try to record events for rejected requests.\");\r\n }\r\n else if (id < 0 || id !== Math.trunc(id)) {\r\n throw new RangeError(\"Event ID's must only be assigned positive, integer values.\");\r\n }\r\n else if (this.eventRecordBitmap[wrappedId]) {\r\n throw new Error(\"Event ID's must be assigned unique values.\");\r\n }\r\n // TODO.impl Check for an OnlineGame that it is not far behind the Server.\r\n // also design what should be done to handle that... Do we really need to\r\n // recover from that?\r\n this.eventRecordBitmap[wrappedId] = true;\r\n this.eventRecordBitmap[(id\r\n + _Game__WEBPACK_IMPORTED_MODULE_0__.Game.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH\r\n - _Game__WEBPACK_IMPORTED_MODULE_0__.Game.K.EVENT_RECORD_FORWARD_WINDOW_LENGTH)\r\n % _Game__WEBPACK_IMPORTED_MODULE_0__.Game.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH] = false;\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldSet)(this, _nextUnusedEventId, +(0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _nextUnusedEventId) + 1);\r\n }\r\n executeTileModEvent(desc, doCheckOperatorSeqBuffer = true) {\r\n Object.freeze(desc);\r\n const dest = this.grid.tile.at(desc.coord);\r\n if (dest.lastKnownUpdateId > desc.lastKnownUpdateId)\r\n return dest;\r\n if (dest.lastKnownUpdateId === desc.lastKnownUpdateId)\r\n throw new RangeError(\"never\");\r\n if (desc.newCharSeqPair) {\r\n dest.setLangCharSeqPair(desc.newCharSeqPair);\r\n // Refresh the operator's `seqBuffer` (maintain invariant) for new CSP:\r\n if (doCheckOperatorSeqBuffer) {\r\n // ^Do this when non-operator moves into the the operator's vicinity.\r\n this.operators.filter((op) => {\r\n return op.tile.destsFrom().get.includes(dest);\r\n }).forEach((op) => op.seqBufferAcceptKey(\"\"));\r\n }\r\n }\r\n dest.lastKnownUpdateId = desc.lastKnownUpdateId;\r\n dest.freeHealth = desc.newFreeHealth;\r\n return dest;\r\n }\r\n /**\r\n * Automatically lowers the {@link Player#requestInFlight} field\r\n * for the requesting `Player` if the arriving event description\r\n * is the newest one for the specified `Player`.\r\n *\r\n * Updates that are received after others that are more recent and\r\n * concern the same {@link Tile} are ignored. This is okay since\r\n * the only thing that matters about a {@link Tile} to the outside\r\n * world is its last known state.\r\n *\r\n * @param desc\r\n * A descriptor for all changes mandated by the player-movement event.\r\n */\r\n executePlayerMoveEvent(desc) {\r\n var _a;\r\n // console.log(desc);\r\n const player = this.players[desc.playerId];\r\n const clientEventLag = desc.playerLastAcceptedRequestId - player.lastAcceptedRequestId;\r\n if (desc.eventId === _events_EventRecordEntry__WEBPACK_IMPORTED_MODULE_1__.EventRecordEntry.EVENT_ID_REJECT) {\r\n // Rejected request. Implies either that: clientEventLag === 0,\r\n // or that (at Game Manager): dest.numTimesOccupied > desc.destNumTimesOccupied\r\n if (clientEventLag === 0) {\r\n player.requestInFlight = false;\r\n }\r\n return; // Short-circuit!\r\n }\r\n this._recordEvent(desc);\r\n const dest = this.executeTileModEvent(desc.destModDesc, player !== this.currentOperator);\r\n (_a = desc.tileHealthModDescs) === null || _a === void 0 ? void 0 : _a.forEach((desc) => {\r\n this.executeTileModEvent(desc);\r\n });\r\n if (clientEventLag > 1) {\r\n // ===== Out of order receipt (clientside) =====\r\n // Already received more recent request responses.\r\n if (player === this.currentOperator) {\r\n // Operator never receives their own updates out of\r\n // order because they only have one unacknowledged\r\n // in-flight request at a time.\r\n throw new Error(\"never\");\r\n }\r\n return; // Short-circuit!\r\n }\r\n // Okay- the response is an acceptance of the specified player's most\r\n // recent request pending this acknowledgement.\r\n player.requestInFlight = false;\r\n if ((player === this.currentOperator)\r\n ? (clientEventLag === 1)\r\n : (clientEventLag <= 1)) {\r\n player.status.health = desc.newPlayerHealth.health;\r\n player.moveTo(dest);\r\n // Below is computationally the same as \"(player.lastAcceptedRequestId)++\"\r\n player.lastAcceptedRequestId = desc.playerLastAcceptedRequestId;\r\n }\r\n else {\r\n // Apparent negative lag. The operator may somehow have\r\n // tampered with their player's request counter.\r\n throw new RangeError(\"never\");\r\n }\r\n }\r\n /**\r\n *\r\n * Automatically lowers the {@link Player#requestInFlight} field\r\n * for the requesting `Player`.\r\n *\r\n * @param desc -\r\n */\r\n executePlayerBubbleEvent(desc) {\r\n const bubbler = this.players[desc.playerId];\r\n bubbler.requestInFlight = false;\r\n if (desc.eventId !== _events_EventRecordEntry__WEBPACK_IMPORTED_MODULE_1__.EventRecordEntry.EVENT_ID_REJECT) {\r\n this._recordEvent(desc); // Record the event.\r\n }\r\n }\r\n}\r\n_nextUnusedEventId = new WeakMap();\r\nObject.freeze(GamepartEvents);\r\nObject.freeze(GamepartEvents.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9nYW1lL2dhbWVwYXJ0cy9HYW1lcGFydEV2ZW50cy50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL3NuYWtleTMvLi9zcmMvYmFzZS9nYW1lL2dhbWVwYXJ0cy9HYW1lcGFydEV2ZW50cy50cz9mYTU5Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBfbmV4dFVudXNlZEV2ZW50SWQ7XHJcbmltcG9ydCB7IF9fY2xhc3NQcml2YXRlRmllbGRHZXQsIF9fY2xhc3NQcml2YXRlRmllbGRTZXQgfSBmcm9tIFwidHNsaWJcIjtcclxuaW1wb3J0IHsgR2FtZSB9IGZyb20gXCIuLi9HYW1lXCI7XHJcbmltcG9ydCB7IEV2ZW50UmVjb3JkRW50cnkgfSBmcm9tIFwiLi4vZXZlbnRzL0V2ZW50UmVjb3JkRW50cnlcIjtcclxuaW1wb3J0IHsgUGxheWVyQWN0aW9uRXZlbnQgfSBmcm9tIFwiLi4vZXZlbnRzL1BsYXllckFjdGlvbkV2ZW50XCI7XHJcbmV4cG9ydCB7IFBsYXllckFjdGlvbkV2ZW50IH07XHJcbmltcG9ydCB7IEdhbWVwYXJ0QmFzZSB9IGZyb20gXCIuL0dhbWVwYXJ0QmFzZVwiO1xyXG4vKipcclxuICogQWxsIGV2ZW50cyBoYXZlIHR3byBjb3JyZXNwb25kaW5nIGhhbmRsZXIgZnVuY3Rpb25zIHRha2luZyBhXHJcbiAqIHJlcXVlc3QgZGVzY3JpcHRvciBvYmplY3QgKFwiZGVzY1wiKTpcclxuICpcclxuICogIyMjIFJlcXVlc3QgUHJvY2Vzc29yXHJcbiAqXHJcbiAqIFRoZSByZXF1ZXN0IHByb2Nlc3NvciBpcyBvbmx5IHVzZWQgYnkgdGhlIEdhbWUgTWFuYWdlci4gSXQgZGVjaWRlc1xyXG4gKiB3aGV0aGVyIHRvIGFjY2VwdCBvciByZWplY3QgdGhlIHJlcXVlc3QgYmFzZWQgb24gYGRlc2NgIGFuZCBtYXlcclxuICogdGhyb3cgZXhjZXB0aW9ucyBvbiBpbXBvc3NpYmxlIGFyZ3VtZW50cy4gSXQgc2hvdWxkIG5vdCBtYWtlIGFueVxyXG4gKiBjaGFuZ2VzIHRvIHRoZSBnYW1lIHN0YXRlLiBJbnN0ZWFkLCBpdCBpcyByZXNwb25zaWJsZSB0byBhdWdtZW50XHJcbiAqIGBkZXNjYCB3aXRoIGluZm9ybWF0aW9uIGRlc2NyaWJpbmcgd2hhdCBjaGFuZ2VzIHRvIHRoZSBnYW1lIHN0YXRlXHJcbiAqIG11c3QgYmUgbWFkZS5cclxuICpcclxuICogIyMjIFJlcXVlc3QgRXhlY3V0b3JcclxuICpcclxuICogVGhpcyB0YWtlcyB0aGUgYGRlc2NgIGF1Z21lbnRlZCBieSB0aGUgcmVxdWVzdCBwcm9jZXNzb3IgYW5kIGVuYWN0c1xyXG4gKiBhbGwgdGhlIGRlc2NyaWJlZCBjaGFuZ2VzIHVwb24gdGhlIGdhbWUncyBzdGF0ZS4gSWYgdGhlIEdhbWUgTWFuYWdlclxyXG4gKiBpcyBub3QgbG9jYWwgdG8gdGhlIGNsaWVudCAoYSBzZXJ2ZXIgcHJvY2VzcyksIHRoZW4gdGhpcyBoYW5kbGVyIGlzXHJcbiAqIGNhbGxlZCBhdCBib3RoIHRoZSBzZXJ2ZXIgYW5kIGNsaWVudC5cclxuICpcclxuICogVXBkYXRlcyB0aGUgZXZlbnQgcmVjb3JkIGlmIHRoZSByZXNwb25zZSBpcyBhY2NlcHRlZC5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBHYW1lcGFydEV2ZW50cyBleHRlbmRzIEdhbWVwYXJ0QmFzZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihnYW1lVHlwZSwgaW1wbCwgZ2FtZURlc2MpIHtcclxuICAgICAgICBzdXBlcihnYW1lVHlwZSwgaW1wbCwgZ2FtZURlc2MpO1xyXG4gICAgICAgIF9uZXh0VW51c2VkRXZlbnRJZC5zZXQodGhpcywgdm9pZCAwKTtcclxuICAgICAgICB0aGlzLmV2ZW50UmVjb3JkQml0bWFwID0gW107XHJcbiAgICB9XHJcbiAgICByZXNldCgpIHtcclxuICAgICAgICBjb25zdCBzdXBlclByb21pc2UgPSBzdXBlci5yZXNldCgpO1xyXG4gICAgICAgIC8vIENsZWFyIHRoZSBldmVudCByZWNvcmQ6XHJcbiAgICAgICAgdGhpcy5ldmVudFJlY29yZEJpdG1hcC5maWxsKGZhbHNlLCAwLCBHYW1lLksuRVZFTlRfUkVDT1JEX1dSQVBQSU5HX0JVRkZFUl9MRU5HVEgpO1xyXG4gICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX25leHRVbnVzZWRFdmVudElkLCAwKTtcclxuICAgICAgICAvLyBTaW5jZSB3ZSBkaWRuJ3Qgd2FpdCBmb3IgdGhlIHN1cGVyUHJvbWlzZSwgcmV0dXJuIGl0LlxyXG4gICAgICAgIHJldHVybiBzdXBlclByb21pc2U7XHJcbiAgICB9XHJcbiAgICBnZXQgbmV4dFVudXNlZEV2ZW50SWQoKSB7XHJcbiAgICAgICAgcmV0dXJuIF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX25leHRVbnVzZWRFdmVudElkKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQmFzaWNhbGx5IGRvZXMgYHRoaXMuZXZlbnRSZWNvcmRbaWRdID0gZGVzYztgIHdpdGggdmFsdWUgY2hlY2tpbmcuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGRlc2MgLVxyXG4gICAgICpcclxuICAgICAqIEB0aHJvd3NcclxuICAgICAqIEluIHRoZSBnaXZlbiBvcmRlciBvZiBwcmlvcml0eTpcclxuICAgICAqIC0gVHlwZUVycm9yIGlmIHRoZSBldmVudCBJRCBpbmRpY2F0ZXMgYSByZWplY3RlZCByZXF1ZXN0XHJcbiAgICAgKiAtIFJhbmdlRXJyb3IgaWYgaXQgaXMgbm90IGEgcG9zaXRpdmUgaW50ZWdlclxyXG4gICAgICogLSBFcnJvciBpZiBhbm90aGVyIGV2ZW50IHdhcyBhbHJlYWR5IHJlY29yZGVkIHdpdGggdGhlIHNhbWUgSUQuXHJcbiAgICAgKi9cclxuICAgIF9yZWNvcmRFdmVudChkZXNjKSB7XHJcbiAgICAgICAgY29uc3QgaWQgPSBkZXNjLmV2ZW50SWQ7XHJcbiAgICAgICAgY29uc3Qgd3JhcHBlZElkID0gaWQgJSBHYW1lLksuRVZFTlRfUkVDT1JEX1dSQVBQSU5HX0JVRkZFUl9MRU5HVEg7XHJcbiAgICAgICAgaWYgKGlkID09PSBFdmVudFJlY29yZEVudHJ5LkVWRU5UX0lEX1JFSkVDVCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRG8gbm90IHRyeSB0byByZWNvcmQgZXZlbnRzIGZvciByZWplY3RlZCByZXF1ZXN0cy5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGlkIDwgMCB8fCBpZCAhPT0gTWF0aC50cnVuYyhpZCkpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJFdmVudCBJRCdzIG11c3Qgb25seSBiZSBhc3NpZ25lZCBwb3NpdGl2ZSwgaW50ZWdlciB2YWx1ZXMuXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLmV2ZW50UmVjb3JkQml0bWFwW3dyYXBwZWRJZF0pIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXZlbnQgSUQncyBtdXN0IGJlIGFzc2lnbmVkIHVuaXF1ZSB2YWx1ZXMuXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBUT0RPLmltcGwgQ2hlY2sgZm9yIGFuIE9ubGluZUdhbWUgdGhhdCBpdCBpcyBub3QgZmFyIGJlaGluZCB0aGUgU2VydmVyLlxyXG4gICAgICAgIC8vIGFsc28gZGVzaWduIHdoYXQgc2hvdWxkIGJlIGRvbmUgdG8gaGFuZGxlIHRoYXQuLi4gRG8gd2UgcmVhbGx5IG5lZWQgdG9cclxuICAgICAgICAvLyByZWNvdmVyIGZyb20gdGhhdD9cclxuICAgICAgICB0aGlzLmV2ZW50UmVjb3JkQml0bWFwW3dyYXBwZWRJZF0gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZXZlbnRSZWNvcmRCaXRtYXBbKGlkXHJcbiAgICAgICAgICAgICsgR2FtZS5LLkVWRU5UX1JFQ09SRF9XUkFQUElOR19CVUZGRVJfTEVOR1RIXHJcbiAgICAgICAgICAgIC0gR2FtZS5LLkVWRU5UX1JFQ09SRF9GT1JXQVJEX1dJTkRPV19MRU5HVEgpXHJcbiAgICAgICAgICAgICUgR2FtZS5LLkVWRU5UX1JFQ09SRF9XUkFQUElOR19CVUZGRVJfTEVOR1RIXSA9IGZhbHNlO1xyXG4gICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX25leHRVbnVzZWRFdmVudElkLCArX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfbmV4dFVudXNlZEV2ZW50SWQpICsgMSk7XHJcbiAgICB9XHJcbiAgICBleGVjdXRlVGlsZU1vZEV2ZW50KGRlc2MsIGRvQ2hlY2tPcGVyYXRvclNlcUJ1ZmZlciA9IHRydWUpIHtcclxuICAgICAgICBPYmplY3QuZnJlZXplKGRlc2MpO1xyXG4gICAgICAgIGNvbnN0IGRlc3QgPSB0aGlzLmdyaWQudGlsZS5hdChkZXNjLmNvb3JkKTtcclxuICAgICAgICBpZiAoZGVzdC5sYXN0S25vd25VcGRhdGVJZCA+IGRlc2MubGFzdEtub3duVXBkYXRlSWQpXHJcbiAgICAgICAgICAgIHJldHVybiBkZXN0O1xyXG4gICAgICAgIGlmIChkZXN0Lmxhc3RLbm93blVwZGF0ZUlkID09PSBkZXNjLmxhc3RLbm93blVwZGF0ZUlkKVxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIm5ldmVyXCIpO1xyXG4gICAgICAgIGlmIChkZXNjLm5ld0NoYXJTZXFQYWlyKSB7XHJcbiAgICAgICAgICAgIGRlc3Quc2V0TGFuZ0NoYXJTZXFQYWlyKGRlc2MubmV3Q2hhclNlcVBhaXIpO1xyXG4gICAgICAgICAgICAvLyBSZWZyZXNoIHRoZSBvcGVyYXRvcidzIGBzZXFCdWZmZXJgIChtYWludGFpbiBpbnZhcmlhbnQpIGZvciBuZXcgQ1NQOlxyXG4gICAgICAgICAgICBpZiAoZG9DaGVja09wZXJhdG9yU2VxQnVmZmVyKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBeRG8gdGhpcyB3aGVuIG5vbi1vcGVyYXRvciBtb3ZlcyBpbnRvIHRoZSB0aGUgb3BlcmF0b3IncyB2aWNpbml0eS5cclxuICAgICAgICAgICAgICAgIHRoaXMub3BlcmF0b3JzLmZpbHRlcigob3ApID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3AudGlsZS5kZXN0c0Zyb20oKS5nZXQuaW5jbHVkZXMoZGVzdCk7XHJcbiAgICAgICAgICAgICAgICB9KS5mb3JFYWNoKChvcCkgPT4gb3Auc2VxQnVmZmVyQWNjZXB0S2V5KFwiXCIpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBkZXN0Lmxhc3RLbm93blVwZGF0ZUlkID0gZGVzYy5sYXN0S25vd25VcGRhdGVJZDtcclxuICAgICAgICBkZXN0LmZyZWVIZWFsdGggPSBkZXNjLm5ld0ZyZWVIZWFsdGg7XHJcbiAgICAgICAgcmV0dXJuIGRlc3Q7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEF1dG9tYXRpY2FsbHkgbG93ZXJzIHRoZSB7QGxpbmsgUGxheWVyI3JlcXVlc3RJbkZsaWdodH0gZmllbGRcclxuICAgICAqIGZvciB0aGUgcmVxdWVzdGluZyBgUGxheWVyYCBpZiB0aGUgYXJyaXZpbmcgZXZlbnQgZGVzY3JpcHRpb25cclxuICAgICAqIGlzIHRoZSBuZXdlc3Qgb25lIGZvciB0aGUgc3BlY2lmaWVkIGBQbGF5ZXJgLlxyXG4gICAgICpcclxuICAgICAqIFVwZGF0ZXMgdGhhdCBhcmUgcmVjZWl2ZWQgYWZ0ZXIgb3RoZXJzIHRoYXQgYXJlIG1vcmUgcmVjZW50IGFuZFxyXG4gICAgICogY29uY2VybiB0aGUgc2FtZSB7QGxpbmsgVGlsZX0gYXJlIGlnbm9yZWQuIFRoaXMgaXMgb2theSBzaW5jZVxyXG4gICAgICogdGhlIG9ubHkgdGhpbmcgdGhhdCBtYXR0ZXJzIGFib3V0IGEge0BsaW5rIFRpbGV9IHRvIHRoZSBvdXRzaWRlXHJcbiAgICAgKiB3b3JsZCBpcyBpdHMgbGFzdCBrbm93biBzdGF0ZS5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZGVzY1xyXG4gICAgICogQSBkZXNjcmlwdG9yIGZvciBhbGwgY2hhbmdlcyBtYW5kYXRlZCBieSB0aGUgcGxheWVyLW1vdmVtZW50IGV2ZW50LlxyXG4gICAgICovXHJcbiAgICBleGVjdXRlUGxheWVyTW92ZUV2ZW50KGRlc2MpIHtcclxuICAgICAgICB2YXIgX2E7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coZGVzYyk7XHJcbiAgICAgICAgY29uc3QgcGxheWVyID0gdGhpcy5wbGF5ZXJzW2Rlc2MucGxheWVySWRdO1xyXG4gICAgICAgIGNvbnN0IGNsaWVudEV2ZW50TGFnID0gZGVzYy5wbGF5ZXJMYXN0QWNjZXB0ZWRSZXF1ZXN0SWQgLSBwbGF5ZXIubGFzdEFjY2VwdGVkUmVxdWVzdElkO1xyXG4gICAgICAgIGlmIChkZXNjLmV2ZW50SWQgPT09IEV2ZW50UmVjb3JkRW50cnkuRVZFTlRfSURfUkVKRUNUKSB7XHJcbiAgICAgICAgICAgIC8vIFJlamVjdGVkIHJlcXVlc3QuIEltcGxpZXMgZWl0aGVyIHRoYXQ6IGNsaWVudEV2ZW50TGFnID09PSAwLFxyXG4gICAgICAgICAgICAvLyBvciB0aGF0IChhdCBHYW1lIE1hbmFnZXIpOiBkZXN0Lm51bVRpbWVzT2NjdXBpZWQgPiBkZXNjLmRlc3ROdW1UaW1lc09jY3VwaWVkXHJcbiAgICAgICAgICAgIGlmIChjbGllbnRFdmVudExhZyA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcGxheWVyLnJlcXVlc3RJbkZsaWdodCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjsgLy8gU2hvcnQtY2lyY3VpdCFcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fcmVjb3JkRXZlbnQoZGVzYyk7XHJcbiAgICAgICAgY29uc3QgZGVzdCA9IHRoaXMuZXhlY3V0ZVRpbGVNb2RFdmVudChkZXNjLmRlc3RNb2REZXNjLCBwbGF5ZXIgIT09IHRoaXMuY3VycmVudE9wZXJhdG9yKTtcclxuICAgICAgICAoX2EgPSBkZXNjLnRpbGVIZWFsdGhNb2REZXNjcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvckVhY2goKGRlc2MpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5leGVjdXRlVGlsZU1vZEV2ZW50KGRlc2MpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChjbGllbnRFdmVudExhZyA+IDEpIHtcclxuICAgICAgICAgICAgLy8gPT09PT0gT3V0IG9mIG9yZGVyIHJlY2VpcHQgKGNsaWVudHNpZGUpID09PT09XHJcbiAgICAgICAgICAgIC8vIEFscmVhZHkgcmVjZWl2ZWQgbW9yZSByZWNlbnQgcmVxdWVzdCByZXNwb25zZXMuXHJcbiAgICAgICAgICAgIGlmIChwbGF5ZXIgPT09IHRoaXMuY3VycmVudE9wZXJhdG9yKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBPcGVyYXRvciBuZXZlciByZWNlaXZlcyB0aGVpciBvd24gdXBkYXRlcyBvdXQgb2ZcclxuICAgICAgICAgICAgICAgIC8vIG9yZGVyIGJlY2F1c2UgdGhleSBvbmx5IGhhdmUgb25lIHVuYWNrbm93bGVkZ2VkXHJcbiAgICAgICAgICAgICAgICAvLyBpbi1mbGlnaHQgcmVxdWVzdCBhdCBhIHRpbWUuXHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJuZXZlclwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47IC8vIFNob3J0LWNpcmN1aXQhXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE9rYXktIHRoZSByZXNwb25zZSBpcyBhbiBhY2NlcHRhbmNlIG9mIHRoZSBzcGVjaWZpZWQgcGxheWVyJ3MgbW9zdFxyXG4gICAgICAgIC8vIHJlY2VudCByZXF1ZXN0IHBlbmRpbmcgdGhpcyBhY2tub3dsZWRnZW1lbnQuXHJcbiAgICAgICAgcGxheWVyLnJlcXVlc3RJbkZsaWdodCA9IGZhbHNlO1xyXG4gICAgICAgIGlmICgocGxheWVyID09PSB0aGlzLmN1cnJlbnRPcGVyYXRvcilcclxuICAgICAgICAgICAgPyAoY2xpZW50RXZlbnRMYWcgPT09IDEpXHJcbiAgICAgICAgICAgIDogKGNsaWVudEV2ZW50TGFnIDw9IDEpKSB7XHJcbiAgICAgICAgICAgIHBsYXllci5zdGF0dXMuaGVhbHRoID0gZGVzYy5uZXdQbGF5ZXJIZWFsdGguaGVhbHRoO1xyXG4gICAgICAgICAgICBwbGF5ZXIubW92ZVRvKGRlc3QpO1xyXG4gICAgICAgICAgICAvLyBCZWxvdyBpcyBjb21wdXRhdGlvbmFsbHkgdGhlIHNhbWUgYXMgXCIocGxheWVyLmxhc3RBY2NlcHRlZFJlcXVlc3RJZCkrK1wiXHJcbiAgICAgICAgICAgIHBsYXllci5sYXN0QWNjZXB0ZWRSZXF1ZXN0SWQgPSBkZXNjLnBsYXllckxhc3RBY2NlcHRlZFJlcXVlc3RJZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIEFwcGFyZW50IG5lZ2F0aXZlIGxhZy4gVGhlIG9wZXJhdG9yIG1heSBzb21laG93IGhhdmVcclxuICAgICAgICAgICAgLy8gdGFtcGVyZWQgd2l0aCB0aGVpciBwbGF5ZXIncyByZXF1ZXN0IGNvdW50ZXIuXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwibmV2ZXJcIik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKlxyXG4gICAgICogQXV0b21hdGljYWxseSBsb3dlcnMgdGhlIHtAbGluayBQbGF5ZXIjcmVxdWVzdEluRmxpZ2h0fSBmaWVsZFxyXG4gICAgICogZm9yIHRoZSByZXF1ZXN0aW5nIGBQbGF5ZXJgLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBkZXNjIC1cclxuICAgICAqL1xyXG4gICAgZXhlY3V0ZVBsYXllckJ1YmJsZUV2ZW50KGRlc2MpIHtcclxuICAgICAgICBjb25zdCBidWJibGVyID0gdGhpcy5wbGF5ZXJzW2Rlc2MucGxheWVySWRdO1xyXG4gICAgICAgIGJ1YmJsZXIucmVxdWVzdEluRmxpZ2h0ID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKGRlc2MuZXZlbnRJZCAhPT0gRXZlbnRSZWNvcmRFbnRyeS5FVkVOVF9JRF9SRUpFQ1QpIHtcclxuICAgICAgICAgICAgdGhpcy5fcmVjb3JkRXZlbnQoZGVzYyk7IC8vIFJlY29yZCB0aGUgZXZlbnQuXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbl9uZXh0VW51c2VkRXZlbnRJZCA9IG5ldyBXZWFrTWFwKCk7XHJcbk9iamVjdC5mcmVlemUoR2FtZXBhcnRFdmVudHMpO1xyXG5PYmplY3QuZnJlZXplKEdhbWVwYXJ0RXZlbnRzLnByb3RvdHlwZSk7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/base/game/gameparts/GamepartEvents.ts\n"); + +/***/ }), + +/***/ "./src/base/game/player/OperatorPlayer.ts": +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"OperatorPlayer\": () => /* binding */ OperatorPlayer\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/defs/JsUtils.ts\");\n/* harmony import */ var defs_TypeDefs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/defs/TypeDefs.ts\");\n/* harmony import */ var floor_Tile__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./src/base/floor/Tile.ts\");\n/* harmony import */ var _Player__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"./src/base/game/player/Player.ts\");\nvar _seqBuffer, _langRemappingFunc;\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * There is at least one in online-clientside and offline games.\r\n * There are none for online-serverside games.\r\n */\r\nclass OperatorPlayer extends _Player__WEBPACK_IMPORTED_MODULE_3__.Player {\r\n constructor(game, desc) {\r\n super(game, desc);\r\n /**\r\n * Invariant: always matches the prefix of the {@link LangSeq} of\r\n * an unoccupied neighbouring {@link Tile}.\r\n */\r\n _seqBuffer.set(this, void 0);\r\n _langRemappingFunc.set(this, void 0);\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldSet)(this, _langRemappingFunc, this.game.langFrontend.remapFunc);\r\n }\r\n reset(spawnTile) {\r\n super.reset(spawnTile);\r\n this.prevCoord = spawnTile.coord;\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldSet)(this, _seqBuffer, \"\");\r\n }\r\n /**\r\n * Callback function invoked when the Operator presses a key while\r\n * the game's html element has focus. Because of how JavaScript\r\n * and also Node.js run in a single thread, this is an atomic\r\n * operation (implementation must not intermediately schedule any\r\n * other task-relevant callbacks until all critical operations are\r\n * complete).\r\n *\r\n * @param event - The object describing the `KeyboardEvent`.\r\n */\r\n processKeyboardInput(event) {\r\n if (this.game.status !== \"PLAYING\" /* PLAYING */)\r\n return;\r\n if (!this.requestInFlight) {\r\n // Only process movement-type input if the last request got\r\n // acknowledged by the Game Manager and the game is playing.\r\n if (event.key === \" \") {\r\n if (!floor_Tile__WEBPACK_IMPORTED_MODULE_2__.Coord.equals(this.coord, this.prevCoord)) {\r\n this.makeMovementRequest(this.game.grid.getUntAwayFrom(this.prevCoord, this.coord), _Player__WEBPACK_IMPORTED_MODULE_3__.Player.MoveType.BOOST);\r\n }\r\n }\r\n else if (event.key.length === 1 && !event.repeat) {\r\n // TODO.design is the above condition okay? will any\r\n // languages require different behaviour?\r\n this.seqBufferAcceptKey(event.key);\r\n }\r\n }\r\n }\r\n /**\r\n * Automatically makes a call to make a movement request if the\r\n * provided `key` completes the `LangSeq` of a UNT. Does not do\r\n * any checking regarding {@link OperatorPlayer#requestInFlight}.\r\n *\r\n * @param key\r\n * The pressed typeable key as a string. Pass an empty string to\r\n * trigger a refresh of the {@link OperatorPlayer#_seqBuffer} to\r\n * maintain its invariant.\r\n */\r\n seqBufferAcceptKey(key) {\r\n const unts = this.tile.destsFrom().unoccupied.get;\r\n if (unts.length === 0) {\r\n // Every neighbouring `Tile` is occupied!\r\n // In this case, no movement is possible.\r\n return;\r\n }\r\n if (key) {\r\n key = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _langRemappingFunc).call(this, key);\r\n if (!(defs_TypeDefs__WEBPACK_IMPORTED_MODULE_1__.Lang.Seq.REGEXP.test(key))) {\r\n // throw new RangeError(`The implementation of input transformation`\r\n // + ` in the currently selected language did not follow the rule`\r\n // + ` of producing output matching the regular expression`\r\n // + ` \\\"${Lang.Seq.REGEXP.source}\\\".`\r\n // );\r\n return;\r\n }\r\n }\r\n else {\r\n const possibleTarget = unts.find((tile) => tile.langSeq.startsWith(this.seqBuffer));\r\n if (!possibleTarget) {\r\n // If the thing I was trying to get to is gone, clear the buffer.\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldSet)(this, _seqBuffer, \"\");\r\n }\r\n return;\r\n }\r\n for ( // loop through substring start offset of newSeqBuffer:\r\n let newSeqBuffer = this.seqBuffer + key; newSeqBuffer.length; newSeqBuffer = newSeqBuffer.substring(1)) {\r\n // look for the longest suffixing substring of `newSeqBuffer`\r\n // that is a prefixing substring of any UNT's.\r\n const possibleTarget = unts.find((tile) => tile.langSeq.startsWith(newSeqBuffer));\r\n if (possibleTarget) {\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldSet)(this, _seqBuffer, newSeqBuffer);\r\n if (possibleTarget.langSeq === newSeqBuffer) {\r\n this.makeMovementRequest(possibleTarget, _Player__WEBPACK_IMPORTED_MODULE_3__.Player.MoveType.NORMAL);\r\n }\r\n return;\r\n }\r\n }\r\n // Operator's new `seqBuffer` didn't match anything.\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldSet)(this, _seqBuffer, \"\");\r\n this.status.visualBell();\r\n }\r\n /**\r\n * Automatically clears the {@link OperatorPlayer#seqBuffer}.\r\n *\r\n * @override\r\n */\r\n moveTo(dest) {\r\n // Clear my `seqBuffer` first:\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldSet)(this, _seqBuffer, \"\");\r\n this.prevCoord = this.coord;\r\n super.moveTo(dest);\r\n }\r\n _notifyWillBecomeCurrent() {\r\n this.status._notifyWillBecomeCurrent(this.game.grid.spotlightElems);\r\n }\r\n get seqBuffer() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _seqBuffer);\r\n }\r\n}\r\n_seqBuffer = new WeakMap(), _langRemappingFunc = new WeakMap();\r\ndefs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.protoNoEnum(OperatorPlayer, [\"_notifyWillBecomeCurrent\"]);\r\nObject.freeze(OperatorPlayer);\r\nObject.freeze(OperatorPlayer.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9nYW1lL3BsYXllci9PcGVyYXRvclBsYXllci50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL3NuYWtleTMvLi9zcmMvYmFzZS9nYW1lL3BsYXllci9PcGVyYXRvclBsYXllci50cz9iNDk2Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBfc2VxQnVmZmVyLCBfbGFuZ1JlbWFwcGluZ0Z1bmM7XHJcbmltcG9ydCB7IF9fY2xhc3NQcml2YXRlRmllbGRHZXQsIF9fY2xhc3NQcml2YXRlRmllbGRTZXQgfSBmcm9tIFwidHNsaWJcIjtcclxuaW1wb3J0IHsgSnNVdGlscyB9IGZyb20gXCJkZWZzL0pzVXRpbHNcIjtcclxuaW1wb3J0IHsgTGFuZyBhcyBfTGFuZyB9IGZyb20gXCJkZWZzL1R5cGVEZWZzXCI7XHJcbmltcG9ydCB7IENvb3JkIH0gZnJvbSBcImZsb29yL1RpbGVcIjtcclxuaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4vUGxheWVyXCI7XHJcbi8qKlxyXG4gKiBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgaW4gb25saW5lLWNsaWVudHNpZGUgYW5kIG9mZmxpbmUgZ2FtZXMuXHJcbiAqIFRoZXJlIGFyZSBub25lIGZvciBvbmxpbmUtc2VydmVyc2lkZSBnYW1lcy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBPcGVyYXRvclBsYXllciBleHRlbmRzIFBsYXllciB7XHJcbiAgICBjb25zdHJ1Y3RvcihnYW1lLCBkZXNjKSB7XHJcbiAgICAgICAgc3VwZXIoZ2FtZSwgZGVzYyk7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogSW52YXJpYW50OiBhbHdheXMgbWF0Y2hlcyB0aGUgcHJlZml4IG9mIHRoZSB7QGxpbmsgTGFuZ1NlcX0gb2ZcclxuICAgICAgICAgKiBhbiB1bm9jY3VwaWVkIG5laWdoYm91cmluZyB7QGxpbmsgVGlsZX0uXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgX3NlcUJ1ZmZlci5zZXQodGhpcywgdm9pZCAwKTtcclxuICAgICAgICBfbGFuZ1JlbWFwcGluZ0Z1bmMuc2V0KHRoaXMsIHZvaWQgMCk7XHJcbiAgICAgICAgX19jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfbGFuZ1JlbWFwcGluZ0Z1bmMsIHRoaXMuZ2FtZS5sYW5nRnJvbnRlbmQucmVtYXBGdW5jKTtcclxuICAgIH1cclxuICAgIHJlc2V0KHNwYXduVGlsZSkge1xyXG4gICAgICAgIHN1cGVyLnJlc2V0KHNwYXduVGlsZSk7XHJcbiAgICAgICAgdGhpcy5wcmV2Q29vcmQgPSBzcGF3blRpbGUuY29vcmQ7XHJcbiAgICAgICAgX19jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfc2VxQnVmZmVyLCBcIlwiKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGJhY2sgZnVuY3Rpb24gaW52b2tlZCB3aGVuIHRoZSBPcGVyYXRvciBwcmVzc2VzIGEga2V5IHdoaWxlXHJcbiAgICAgKiB0aGUgZ2FtZSdzIGh0bWwgZWxlbWVudCBoYXMgZm9jdXMuIEJlY2F1c2Ugb2YgaG93IEphdmFTY3JpcHRcclxuICAgICAqIGFuZCBhbHNvIE5vZGUuanMgcnVuIGluIGEgc2luZ2xlIHRocmVhZCwgdGhpcyBpcyBhbiBhdG9taWNcclxuICAgICAqIG9wZXJhdGlvbiAoaW1wbGVtZW50YXRpb24gbXVzdCBub3QgaW50ZXJtZWRpYXRlbHkgc2NoZWR1bGUgYW55XHJcbiAgICAgKiBvdGhlciB0YXNrLXJlbGV2YW50IGNhbGxiYWNrcyB1bnRpbCBhbGwgY3JpdGljYWwgb3BlcmF0aW9ucyBhcmVcclxuICAgICAqIGNvbXBsZXRlKS5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZXZlbnQgLSBUaGUgb2JqZWN0IGRlc2NyaWJpbmcgdGhlIGBLZXlib2FyZEV2ZW50YC5cclxuICAgICAqL1xyXG4gICAgcHJvY2Vzc0tleWJvYXJkSW5wdXQoZXZlbnQpIHtcclxuICAgICAgICBpZiAodGhpcy5nYW1lLnN0YXR1cyAhPT0gXCJQTEFZSU5HXCIgLyogUExBWUlORyAqLylcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIGlmICghdGhpcy5yZXF1ZXN0SW5GbGlnaHQpIHtcclxuICAgICAgICAgICAgLy8gT25seSBwcm9jZXNzIG1vdmVtZW50LXR5cGUgaW5wdXQgaWYgdGhlIGxhc3QgcmVxdWVzdCBnb3RcclxuICAgICAgICAgICAgLy8gYWNrbm93bGVkZ2VkIGJ5IHRoZSBHYW1lIE1hbmFnZXIgYW5kIHRoZSBnYW1lIGlzIHBsYXlpbmcuXHJcbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09IFwiIFwiKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIUNvb3JkLmVxdWFscyh0aGlzLmNvb3JkLCB0aGlzLnByZXZDb29yZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1ha2VNb3ZlbWVudFJlcXVlc3QodGhpcy5nYW1lLmdyaWQuZ2V0VW50QXdheUZyb20odGhpcy5wcmV2Q29vcmQsIHRoaXMuY29vcmQpLCBQbGF5ZXIuTW92ZVR5cGUuQk9PU1QpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50LmtleS5sZW5ndGggPT09IDEgJiYgIWV2ZW50LnJlcGVhdCkge1xyXG4gICAgICAgICAgICAgICAgLy8gVE9ETy5kZXNpZ24gaXMgdGhlIGFib3ZlIGNvbmRpdGlvbiBva2F5PyB3aWxsIGFueVxyXG4gICAgICAgICAgICAgICAgLy8gbGFuZ3VhZ2VzIHJlcXVpcmUgZGlmZmVyZW50IGJlaGF2aW91cj9cclxuICAgICAgICAgICAgICAgIHRoaXMuc2VxQnVmZmVyQWNjZXB0S2V5KGV2ZW50LmtleSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEF1dG9tYXRpY2FsbHkgbWFrZXMgYSBjYWxsIHRvIG1ha2UgYSBtb3ZlbWVudCByZXF1ZXN0IGlmIHRoZVxyXG4gICAgICogcHJvdmlkZWQgYGtleWAgY29tcGxldGVzIHRoZSBgTGFuZ1NlcWAgb2YgYSBVTlQuIERvZXMgbm90IGRvXHJcbiAgICAgKiBhbnkgY2hlY2tpbmcgcmVnYXJkaW5nIHtAbGluayBPcGVyYXRvclBsYXllciNyZXF1ZXN0SW5GbGlnaHR9LlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBrZXlcclxuICAgICAqIFRoZSBwcmVzc2VkIHR5cGVhYmxlIGtleSBhcyBhIHN0cmluZy4gUGFzcyBhbiBlbXB0eSBzdHJpbmcgdG9cclxuICAgICAqIHRyaWdnZXIgYSByZWZyZXNoIG9mIHRoZSB7QGxpbmsgT3BlcmF0b3JQbGF5ZXIjX3NlcUJ1ZmZlcn0gdG9cclxuICAgICAqIG1haW50YWluIGl0cyBpbnZhcmlhbnQuXHJcbiAgICAgKi9cclxuICAgIHNlcUJ1ZmZlckFjY2VwdEtleShrZXkpIHtcclxuICAgICAgICBjb25zdCB1bnRzID0gdGhpcy50aWxlLmRlc3RzRnJvbSgpLnVub2NjdXBpZWQuZ2V0O1xyXG4gICAgICAgIGlmICh1bnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAvLyBFdmVyeSBuZWlnaGJvdXJpbmcgYFRpbGVgIGlzIG9jY3VwaWVkIVxyXG4gICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIG5vIG1vdmVtZW50IGlzIHBvc3NpYmxlLlxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChrZXkpIHtcclxuICAgICAgICAgICAga2V5ID0gX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfbGFuZ1JlbWFwcGluZ0Z1bmMpLmNhbGwodGhpcywga2V5KTtcclxuICAgICAgICAgICAgaWYgKCEoX0xhbmcuU2VxLlJFR0VYUC50ZXN0KGtleSkpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgVGhlIGltcGxlbWVudGF0aW9uIG9mIGlucHV0IHRyYW5zZm9ybWF0aW9uYFxyXG4gICAgICAgICAgICAgICAgLy8gKyBgIGluIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgbGFuZ3VhZ2UgZGlkIG5vdCBmb2xsb3cgdGhlIHJ1bGVgXHJcbiAgICAgICAgICAgICAgICAvLyArIGAgb2YgcHJvZHVjaW5nIG91dHB1dCBtYXRjaGluZyB0aGUgcmVndWxhciBleHByZXNzaW9uYFxyXG4gICAgICAgICAgICAgICAgLy8gKyBgIFxcXCIke0xhbmcuU2VxLlJFR0VYUC5zb3VyY2V9XFxcIi5gXHJcbiAgICAgICAgICAgICAgICAvLyApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBwb3NzaWJsZVRhcmdldCA9IHVudHMuZmluZCgodGlsZSkgPT4gdGlsZS5sYW5nU2VxLnN0YXJ0c1dpdGgodGhpcy5zZXFCdWZmZXIpKTtcclxuICAgICAgICAgICAgaWYgKCFwb3NzaWJsZVRhcmdldCkge1xyXG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIHRoaW5nIEkgd2FzIHRyeWluZyB0byBnZXQgdG8gaXMgZ29uZSwgY2xlYXIgdGhlIGJ1ZmZlci5cclxuICAgICAgICAgICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX3NlcUJ1ZmZlciwgXCJcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKCAvLyBsb29wIHRocm91Z2ggc3Vic3RyaW5nIHN0YXJ0IG9mZnNldCBvZiBuZXdTZXFCdWZmZXI6XHJcbiAgICAgICAgbGV0IG5ld1NlcUJ1ZmZlciA9IHRoaXMuc2VxQnVmZmVyICsga2V5OyBuZXdTZXFCdWZmZXIubGVuZ3RoOyBuZXdTZXFCdWZmZXIgPSBuZXdTZXFCdWZmZXIuc3Vic3RyaW5nKDEpKSB7XHJcbiAgICAgICAgICAgIC8vIGxvb2sgZm9yIHRoZSBsb25nZXN0IHN1ZmZpeGluZyBzdWJzdHJpbmcgb2YgYG5ld1NlcUJ1ZmZlcmBcclxuICAgICAgICAgICAgLy8gdGhhdCBpcyBhIHByZWZpeGluZyBzdWJzdHJpbmcgb2YgYW55IFVOVCdzLlxyXG4gICAgICAgICAgICBjb25zdCBwb3NzaWJsZVRhcmdldCA9IHVudHMuZmluZCgodGlsZSkgPT4gdGlsZS5sYW5nU2VxLnN0YXJ0c1dpdGgobmV3U2VxQnVmZmVyKSk7XHJcbiAgICAgICAgICAgIGlmIChwb3NzaWJsZVRhcmdldCkge1xyXG4gICAgICAgICAgICAgICAgX19jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfc2VxQnVmZmVyLCBuZXdTZXFCdWZmZXIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHBvc3NpYmxlVGFyZ2V0LmxhbmdTZXEgPT09IG5ld1NlcUJ1ZmZlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFrZU1vdmVtZW50UmVxdWVzdChwb3NzaWJsZVRhcmdldCwgUGxheWVyLk1vdmVUeXBlLk5PUk1BTCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gT3BlcmF0b3IncyBuZXcgYHNlcUJ1ZmZlcmAgZGlkbid0IG1hdGNoIGFueXRoaW5nLlxyXG4gICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX3NlcUJ1ZmZlciwgXCJcIik7XHJcbiAgICAgICAgdGhpcy5zdGF0dXMudmlzdWFsQmVsbCgpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBBdXRvbWF0aWNhbGx5IGNsZWFycyB0aGUge0BsaW5rIE9wZXJhdG9yUGxheWVyI3NlcUJ1ZmZlcn0uXHJcbiAgICAgKlxyXG4gICAgICogQG92ZXJyaWRlXHJcbiAgICAgKi9cclxuICAgIG1vdmVUbyhkZXN0KSB7XHJcbiAgICAgICAgLy8gQ2xlYXIgbXkgYHNlcUJ1ZmZlcmAgZmlyc3Q6XHJcbiAgICAgICAgX19jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfc2VxQnVmZmVyLCBcIlwiKTtcclxuICAgICAgICB0aGlzLnByZXZDb29yZCA9IHRoaXMuY29vcmQ7XHJcbiAgICAgICAgc3VwZXIubW92ZVRvKGRlc3QpO1xyXG4gICAgfVxyXG4gICAgX25vdGlmeVdpbGxCZWNvbWVDdXJyZW50KCkge1xyXG4gICAgICAgIHRoaXMuc3RhdHVzLl9ub3RpZnlXaWxsQmVjb21lQ3VycmVudCh0aGlzLmdhbWUuZ3JpZC5zcG90bGlnaHRFbGVtcyk7XHJcbiAgICB9XHJcbiAgICBnZXQgc2VxQnVmZmVyKCkge1xyXG4gICAgICAgIHJldHVybiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9zZXFCdWZmZXIpO1xyXG4gICAgfVxyXG59XHJcbl9zZXFCdWZmZXIgPSBuZXcgV2Vha01hcCgpLCBfbGFuZ1JlbWFwcGluZ0Z1bmMgPSBuZXcgV2Vha01hcCgpO1xyXG5Kc1V0aWxzLnByb3RvTm9FbnVtKE9wZXJhdG9yUGxheWVyLCBbXCJfbm90aWZ5V2lsbEJlY29tZUN1cnJlbnRcIl0pO1xyXG5PYmplY3QuZnJlZXplKE9wZXJhdG9yUGxheWVyKTtcclxuT2JqZWN0LmZyZWV6ZShPcGVyYXRvclBsYXllci5wcm90b3R5cGUpO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/base/game/player/OperatorPlayer.ts\n"); + +/***/ }), + +/***/ "./src/base/game/player/Player.ts": +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"PlayerSkeleton\": () => /* reexport safe */ _PlayerSkeleton__WEBPACK_IMPORTED_MODULE_2__.PlayerSkeleton,\n/* harmony export */ \"PlayerStatus\": () => /* reexport safe */ _PlayerStatus__WEBPACK_IMPORTED_MODULE_3__.PlayerStatus,\n/* harmony export */ \"Player\": () => /* binding */ Player\n/* harmony export */ });\n/* harmony import */ var defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/defs/JsUtils.ts\");\n/* harmony import */ var game_events_PlayerActionEvent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/game/events/PlayerActionEvent.ts\");\n/* harmony import */ var _PlayerSkeleton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./src/base/game/player/PlayerSkeleton.ts\");\n/* harmony import */ var _PlayerStatus__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"./src/base/game/player/PlayerStatus.ts\");\n\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n *\r\n */\r\nclass Player extends _PlayerSkeleton__WEBPACK_IMPORTED_MODULE_2__.PlayerSkeleton {\r\n /**\r\n */\r\n constructor(game, desc) {\r\n var _a;\r\n super(game, desc);\r\n this.familyId = desc.familyId;\r\n this.teamId = desc.teamId;\r\n this.username = desc.username;\r\n this.avatar = (_a = desc.avatar) !== null && _a !== void 0 ? _a : Player.Avatar.GET_RANDOM();\r\n defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.propNoWrite(this, [\r\n \"familyId\", \"teamId\", \"username\", \"avatar\",\r\n ]);\r\n }\r\n reset(spawnTile) {\r\n super.reset(spawnTile);\r\n this.status.reset();\r\n this.lastAcceptedRequestId = game_events_PlayerActionEvent__WEBPACK_IMPORTED_MODULE_1__.PlayerActionEvent.INITIAL_REQUEST_ID;\r\n this.requestInFlight = false;\r\n }\r\n /**\r\n * The default implementation does nothing.\r\n */\r\n _notifyGameNowPlaying() { }\r\n /**\r\n * The default implementation does nothing.\r\n */\r\n _notifyGameNowPaused() { }\r\n /**\r\n * The default implementation does nothing.\r\n */\r\n _notifyGameNowOver() { }\r\n /**\r\n * Called automatically by {@link OperatorPlayer#seqBufferAcceptKey}\r\n * for {@link OperatorPlayer}s, and by a periodic callback for\r\n * {@link ArtificialPlayer}s. Handles behaviour common between all\r\n * implementations.\r\n *\r\n * @final\r\n * @param dest -\r\n * @throws A previous request is still in flight (unacknowledged).\r\n */\r\n makeMovementRequest(dest, type) {\r\n if (this.game.status !== \"PLAYING\" /* PLAYING */) {\r\n // TODO.build disable this check for production.\r\n throw new Error(\"This is not a necessary precondition, but we're doing it anyway.\");\r\n }\r\n else if (this.requestInFlight) {\r\n throw new Error(\"Only one request should ever be in flight at a time.\");\r\n }\r\n this.requestInFlight = true;\r\n this.game.processMoveRequest(new game_events_PlayerActionEvent__WEBPACK_IMPORTED_MODULE_1__.PlayerActionEvent.Movement(this.playerId, this.lastAcceptedRequestId, dest, type));\r\n }\r\n get team() {\r\n return this.game.teams[this.teamId];\r\n }\r\n isTeamedWith(other) {\r\n return this.team.members.includes(other);\r\n }\r\n}\r\n(function (Player) {\r\n let CtorArgs;\r\n (function (CtorArgs) {\r\n /**\r\n * @returns\r\n * Squashes teamId fields to be suitable for array indices.\r\n *\r\n * @param playerDescs -\r\n * @param langName -\r\n */\r\n function finalize(playerDescs) {\r\n // Map team ID's to consecutive numbers\r\n // (to play nice with array representations):\r\n const teamIdCleaner = Array.from(new Set(playerDescs.map((player) => player.teamId)))\r\n .sort((a, b) => a - b) // This is not a representation requirement.\r\n .reduce((prev, originalId, squashedId) => {\r\n prev[originalId] = squashedId;\r\n return prev;\r\n }, []);\r\n return playerDescs.slice()\r\n .sort((pda, pdb) => teamIdCleaner[pda.teamId] - teamIdCleaner[pdb.teamId])\r\n .map((playerDesc, index) => Object.assign({}, playerDesc, {\r\n playerId: index,\r\n teamId: teamIdCleaner[playerDesc.teamId],\r\n }));\r\n }\r\n CtorArgs.finalize = finalize;\r\n ;\r\n })(CtorArgs = Player.CtorArgs || (Player.CtorArgs = {}));\r\n Object.freeze(CtorArgs);\r\n})(Player || (Player = {}));\r\ndefs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.protoNoEnum(Player, [\r\n \"_notifyGameNowPaused\", \"_notifyGameNowPlaying\", \"_notifyGameNowOver\",\r\n]);\r\nObject.freeze(Player);\r\nObject.freeze(Player.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9nYW1lL3BsYXllci9QbGF5ZXIudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zbmFrZXkzLy4vc3JjL2Jhc2UvZ2FtZS9wbGF5ZXIvUGxheWVyLnRzP2NhYjQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSnNVdGlscyB9IGZyb20gXCJkZWZzL0pzVXRpbHNcIjtcclxuaW1wb3J0IHsgUGxheWVyQWN0aW9uRXZlbnQgfSBmcm9tIFwiZ2FtZS9ldmVudHMvUGxheWVyQWN0aW9uRXZlbnRcIjtcclxuaW1wb3J0IHsgUGxheWVyU2tlbGV0b24gfSBmcm9tIFwiLi9QbGF5ZXJTa2VsZXRvblwiO1xyXG5leHBvcnQgeyBQbGF5ZXJTa2VsZXRvbiB9O1xyXG5pbXBvcnQgeyBQbGF5ZXJTdGF0dXMgfSBmcm9tIFwiLi9QbGF5ZXJTdGF0dXNcIjtcclxuZXhwb3J0IHsgUGxheWVyU3RhdHVzIH07XHJcbi8qKlxyXG4gKlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFBsYXllciBleHRlbmRzIFBsYXllclNrZWxldG9uIHtcclxuICAgIC8qKlxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihnYW1lLCBkZXNjKSB7XHJcbiAgICAgICAgdmFyIF9hO1xyXG4gICAgICAgIHN1cGVyKGdhbWUsIGRlc2MpO1xyXG4gICAgICAgIHRoaXMuZmFtaWx5SWQgPSBkZXNjLmZhbWlseUlkO1xyXG4gICAgICAgIHRoaXMudGVhbUlkID0gZGVzYy50ZWFtSWQ7XHJcbiAgICAgICAgdGhpcy51c2VybmFtZSA9IGRlc2MudXNlcm5hbWU7XHJcbiAgICAgICAgdGhpcy5hdmF0YXIgPSAoX2EgPSBkZXNjLmF2YXRhcikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogUGxheWVyLkF2YXRhci5HRVRfUkFORE9NKCk7XHJcbiAgICAgICAgSnNVdGlscy5wcm9wTm9Xcml0ZSh0aGlzLCBbXHJcbiAgICAgICAgICAgIFwiZmFtaWx5SWRcIiwgXCJ0ZWFtSWRcIiwgXCJ1c2VybmFtZVwiLCBcImF2YXRhclwiLFxyXG4gICAgICAgIF0pO1xyXG4gICAgfVxyXG4gICAgcmVzZXQoc3Bhd25UaWxlKSB7XHJcbiAgICAgICAgc3VwZXIucmVzZXQoc3Bhd25UaWxlKTtcclxuICAgICAgICB0aGlzLnN0YXR1cy5yZXNldCgpO1xyXG4gICAgICAgIHRoaXMubGFzdEFjY2VwdGVkUmVxdWVzdElkID0gUGxheWVyQWN0aW9uRXZlbnQuSU5JVElBTF9SRVFVRVNUX0lEO1xyXG4gICAgICAgIHRoaXMucmVxdWVzdEluRmxpZ2h0ID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRvZXMgbm90aGluZy5cclxuICAgICAqL1xyXG4gICAgX25vdGlmeUdhbWVOb3dQbGF5aW5nKCkgeyB9XHJcbiAgICAvKipcclxuICAgICAqIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRvZXMgbm90aGluZy5cclxuICAgICAqL1xyXG4gICAgX25vdGlmeUdhbWVOb3dQYXVzZWQoKSB7IH1cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZG9lcyBub3RoaW5nLlxyXG4gICAgICovXHJcbiAgICBfbm90aWZ5R2FtZU5vd092ZXIoKSB7IH1cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGVkIGF1dG9tYXRpY2FsbHkgYnkge0BsaW5rIE9wZXJhdG9yUGxheWVyI3NlcUJ1ZmZlckFjY2VwdEtleX1cclxuICAgICAqIGZvciB7QGxpbmsgT3BlcmF0b3JQbGF5ZXJ9cywgYW5kIGJ5IGEgcGVyaW9kaWMgY2FsbGJhY2sgZm9yXHJcbiAgICAgKiB7QGxpbmsgQXJ0aWZpY2lhbFBsYXllcn1zLiBIYW5kbGVzIGJlaGF2aW91ciBjb21tb24gYmV0d2VlbiBhbGxcclxuICAgICAqIGltcGxlbWVudGF0aW9ucy5cclxuICAgICAqXHJcbiAgICAgKiBAZmluYWxcclxuICAgICAqIEBwYXJhbSBkZXN0IC1cclxuICAgICAqIEB0aHJvd3MgQSBwcmV2aW91cyByZXF1ZXN0IGlzIHN0aWxsIGluIGZsaWdodCAodW5hY2tub3dsZWRnZWQpLlxyXG4gICAgICovXHJcbiAgICBtYWtlTW92ZW1lbnRSZXF1ZXN0KGRlc3QsIHR5cGUpIHtcclxuICAgICAgICBpZiAodGhpcy5nYW1lLnN0YXR1cyAhPT0gXCJQTEFZSU5HXCIgLyogUExBWUlORyAqLykge1xyXG4gICAgICAgICAgICAvLyBUT0RPLmJ1aWxkIGRpc2FibGUgdGhpcyBjaGVjayBmb3IgcHJvZHVjdGlvbi5cclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhpcyBpcyBub3QgYSBuZWNlc3NhcnkgcHJlY29uZGl0aW9uLCBidXQgd2UncmUgZG9pbmcgaXQgYW55d2F5LlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5yZXF1ZXN0SW5GbGlnaHQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiT25seSBvbmUgcmVxdWVzdCBzaG91bGQgZXZlciBiZSBpbiBmbGlnaHQgYXQgYSB0aW1lLlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZXF1ZXN0SW5GbGlnaHQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZ2FtZS5wcm9jZXNzTW92ZVJlcXVlc3QobmV3IFBsYXllckFjdGlvbkV2ZW50Lk1vdmVtZW50KHRoaXMucGxheWVySWQsIHRoaXMubGFzdEFjY2VwdGVkUmVxdWVzdElkLCBkZXN0LCB0eXBlKSk7XHJcbiAgICB9XHJcbiAgICBnZXQgdGVhbSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nYW1lLnRlYW1zW3RoaXMudGVhbUlkXTtcclxuICAgIH1cclxuICAgIGlzVGVhbWVkV2l0aChvdGhlcikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRlYW0ubWVtYmVycy5pbmNsdWRlcyhvdGhlcik7XHJcbiAgICB9XHJcbn1cclxuKGZ1bmN0aW9uIChQbGF5ZXIpIHtcclxuICAgIGxldCBDdG9yQXJncztcclxuICAgIChmdW5jdGlvbiAoQ3RvckFyZ3MpIHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBAcmV0dXJuc1xyXG4gICAgICAgICAqIFNxdWFzaGVzIHRlYW1JZCBmaWVsZHMgdG8gYmUgc3VpdGFibGUgZm9yIGFycmF5IGluZGljZXMuXHJcbiAgICAgICAgICpcclxuICAgICAgICAgKiBAcGFyYW0gcGxheWVyRGVzY3MgLVxyXG4gICAgICAgICAqIEBwYXJhbSBsYW5nTmFtZSAtXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgZnVuY3Rpb24gZmluYWxpemUocGxheWVyRGVzY3MpIHtcclxuICAgICAgICAgICAgLy8gTWFwIHRlYW0gSUQncyB0byBjb25zZWN1dGl2ZSBudW1iZXJzXHJcbiAgICAgICAgICAgIC8vICh0byBwbGF5IG5pY2Ugd2l0aCBhcnJheSByZXByZXNlbnRhdGlvbnMpOlxyXG4gICAgICAgICAgICBjb25zdCB0ZWFtSWRDbGVhbmVyID0gQXJyYXkuZnJvbShuZXcgU2V0KHBsYXllckRlc2NzLm1hcCgocGxheWVyKSA9PiBwbGF5ZXIudGVhbUlkKSkpXHJcbiAgICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYSAtIGIpIC8vIFRoaXMgaXMgbm90IGEgcmVwcmVzZW50YXRpb24gcmVxdWlyZW1lbnQuXHJcbiAgICAgICAgICAgICAgICAucmVkdWNlKChwcmV2LCBvcmlnaW5hbElkLCBzcXVhc2hlZElkKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBwcmV2W29yaWdpbmFsSWRdID0gc3F1YXNoZWRJZDtcclxuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2O1xyXG4gICAgICAgICAgICB9LCBbXSk7XHJcbiAgICAgICAgICAgIHJldHVybiBwbGF5ZXJEZXNjcy5zbGljZSgpXHJcbiAgICAgICAgICAgICAgICAuc29ydCgocGRhLCBwZGIpID0+IHRlYW1JZENsZWFuZXJbcGRhLnRlYW1JZF0gLSB0ZWFtSWRDbGVhbmVyW3BkYi50ZWFtSWRdKVxyXG4gICAgICAgICAgICAgICAgLm1hcCgocGxheWVyRGVzYywgaW5kZXgpID0+IE9iamVjdC5hc3NpZ24oe30sIHBsYXllckRlc2MsIHtcclxuICAgICAgICAgICAgICAgIHBsYXllcklkOiBpbmRleCxcclxuICAgICAgICAgICAgICAgIHRlYW1JZDogdGVhbUlkQ2xlYW5lcltwbGF5ZXJEZXNjLnRlYW1JZF0sXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgQ3RvckFyZ3MuZmluYWxpemUgPSBmaW5hbGl6ZTtcclxuICAgICAgICA7XHJcbiAgICB9KShDdG9yQXJncyA9IFBsYXllci5DdG9yQXJncyB8fCAoUGxheWVyLkN0b3JBcmdzID0ge30pKTtcclxuICAgIE9iamVjdC5mcmVlemUoQ3RvckFyZ3MpO1xyXG59KShQbGF5ZXIgfHwgKFBsYXllciA9IHt9KSk7XHJcbkpzVXRpbHMucHJvdG9Ob0VudW0oUGxheWVyLCBbXHJcbiAgICBcIl9ub3RpZnlHYW1lTm93UGF1c2VkXCIsIFwiX25vdGlmeUdhbWVOb3dQbGF5aW5nXCIsIFwiX25vdGlmeUdhbWVOb3dPdmVyXCIsXHJcbl0pO1xyXG5PYmplY3QuZnJlZXplKFBsYXllcik7XHJcbk9iamVjdC5mcmVlemUoUGxheWVyLnByb3RvdHlwZSk7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/base/game/player/Player.ts\n"); + +/***/ }), + +/***/ "./src/base/game/player/PlayerSkeleton.ts": +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"PlayerSkeleton\": () => /* binding */ PlayerSkeleton\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/defs/JsUtils.ts\");\n/* harmony import */ var defs_TypeDefs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/defs/TypeDefs.ts\");\n/* harmony import */ var floor_TileGetter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./src/base/floor/TileGetter.ts\");\nvar _hostTile;\r\n\r\n\r\n\r\n\r\n/**\r\n * Made to abstract all operations that change the `hostTile`\r\n * field. Enforces / exposes the `moveTo` method as\r\n * the interface to any such operations.\r\n *\r\n * @extends Player to intake its namespace exports.\r\n */\r\nclass PlayerSkeleton extends defs_TypeDefs__WEBPACK_IMPORTED_MODULE_1__.Player {\r\n constructor(game, desc) {\r\n super();\r\n _hostTile.set(this, void 0);\r\n if (Math.trunc(desc.playerId) !== desc.playerId) {\r\n throw new RangeError(\"Player ID's must be integer values.\");\r\n }\r\n this.playerId = desc.playerId;\r\n this.isALocalOperator = desc.isALocalOperator;\r\n this.game = game;\r\n this.status = new (this.game._playerStatusCtor)(this, desc.noCheckGameOver);\r\n this.tile = new floor_TileGetter__WEBPACK_IMPORTED_MODULE_2__.TileGetter(new PlayerSkeleton.TileGetterSource(this));\r\n defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.instNoEnum(this, [\"game\"]);\r\n defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.propNoWrite(this, [\r\n \"playerId\", \"isALocalOperator\",\r\n \"game\", \"status\", \"tile\",\r\n ]);\r\n }\r\n _afterAllPlayersConstruction() {\r\n this.status._afterAllPlayersConstruction();\r\n }\r\n /**\r\n * Must be called _after_ the {@link Grid} has been reset.\r\n * Does not evict itself from its current host tile (if it\r\n * has one).\r\n *\r\n * @param spawnTile -\r\n */\r\n reset(spawnTile) {\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldSet)(this, _hostTile, spawnTile);\r\n this.hostTile._setOccupant(this.playerId, this.status.immigrantInfo);\r\n }\r\n get coord() {\r\n return this.hostTile.coord;\r\n }\r\n get hostTile() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldGet)(this, _hostTile);\r\n }\r\n /**\r\n * Evicts this `Player` from its last known position (which may be\r\n * lagging behind the state of the master copy of the game.\r\n *\r\n * This must be called after all same-event changes pertaining to\r\n * this player's fields have been enacted.\r\n *\r\n * @param dest -\r\n */\r\n moveTo(dest) {\r\n // Evict self from current `Tile`.\r\n if (this.hostTile.occupantId !== this.playerId) {\r\n if (this.game.gameType !== \"ONLINE\" /* ONLINE */) {\r\n // Should never happen.\r\n throw new Error(\"Linkage between player and occupied tile disagrees.\");\r\n }\r\n /* Otherwise, this corner case is guaranteed to follow the events\r\n described in the below comment: at this `OnlineGame`, `p2` will\r\n move off of the `Tile` currently occupied by this `Player`. */\r\n }\r\n else {\r\n // Move off of current host `Tile`:\r\n this.hostTile.evictOccupant();\r\n }\r\n // Occupy the destination `Tile.\r\n if (dest.isOccupied) {\r\n if (this.game.gameType !== \"ONLINE\" /* ONLINE */) {\r\n // Should never happen because the Game Manager\r\n // rejects requests to move onto an occupied `Tile`.\r\n throw new Error(\"Only one player can occupy a tile at a time.\");\r\n }\r\n /* Otherwise, this is actually possible in a variant of the _DAS_\r\n where another `Player` `p2` moves to `B`, I receive that update,\r\n then `p2` makes a request to move to `C`, which the Game Manager\r\n accepts and begins to notify my `OnlineGame` of, but between the\r\n time that the GM accepts the request and when I receive the update,\r\n I make a request to move to `B`, which gets accepted by the GM,\r\n and because I might not be using websockets as my underlying\r\n transport, I receive the update for my own request first, which\r\n would appear to my `OnlineGame` as if I was moving onto the `Tile`\r\n occupied by `p2`. */\r\n }\r\n else {\r\n // Move to occupy the destination `Tile`:\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldSet)(this, _hostTile, dest);\r\n dest._setOccupant(this.playerId, this.status.immigrantInfo);\r\n }\r\n }\r\n}\r\n_hostTile = new WeakMap();\r\n(function (PlayerSkeleton) {\r\n var _player, _superTileSrc;\r\n /**\r\n */\r\n class TileGetterSource {\r\n constructor(player) {\r\n _player.set(this, void 0);\r\n _superTileSrc.set(this, void 0);\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldSet)(this, _player, player);\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldSet)(this, _superTileSrc, player.game.grid.tile._source);\r\n }\r\n _getTileAt() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldGet)(this, _superTileSrc)._getTileAt((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldGet)(this, _player).coord);\r\n }\r\n _getTileDestsFrom() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldGet)(this, _superTileSrc)._getTileDestsFrom((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldGet)(this, _player).coord);\r\n }\r\n _getTileSourcesTo() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldGet)(this, _superTileSrc)._getTileSourcesTo((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__classPrivateFieldGet)(this, _player).coord);\r\n }\r\n }\r\n _player = new WeakMap(), _superTileSrc = new WeakMap();\r\n PlayerSkeleton.TileGetterSource = TileGetterSource;\r\n Object.freeze(TileGetterSource);\r\n Object.freeze(TileGetterSource.prototype);\r\n})(PlayerSkeleton || (PlayerSkeleton = {}));\r\ndefs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.protoNoEnum(PlayerSkeleton, [\"_afterAllPlayersConstruction\"]);\r\nObject.freeze(PlayerSkeleton);\r\nObject.freeze(PlayerSkeleton.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9nYW1lL3BsYXllci9QbGF5ZXJTa2VsZXRvbi50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL3NuYWtleTMvLi9zcmMvYmFzZS9nYW1lL3BsYXllci9QbGF5ZXJTa2VsZXRvbi50cz8zZGViIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfaG9zdFRpbGU7XHJcbmltcG9ydCB7IF9fY2xhc3NQcml2YXRlRmllbGRHZXQsIF9fY2xhc3NQcml2YXRlRmllbGRTZXQgfSBmcm9tIFwidHNsaWJcIjtcclxuaW1wb3J0IHsgSnNVdGlscyB9IGZyb20gXCJkZWZzL0pzVXRpbHNcIjtcclxuaW1wb3J0IHsgUGxheWVyIGFzIF9QbGF5ZXIgfSBmcm9tIFwiZGVmcy9UeXBlRGVmc1wiO1xyXG5pbXBvcnQgeyBUaWxlR2V0dGVyIH0gZnJvbSBcImZsb29yL1RpbGVHZXR0ZXJcIjtcclxuLyoqXHJcbiAqIE1hZGUgdG8gYWJzdHJhY3QgYWxsIG9wZXJhdGlvbnMgdGhhdCBjaGFuZ2UgdGhlIGBob3N0VGlsZWBcclxuICogZmllbGQuIEVuZm9yY2VzIC8gZXhwb3NlcyB0aGUgYG1vdmVUb2AgbWV0aG9kIGFzXHJcbiAqIHRoZSBpbnRlcmZhY2UgdG8gYW55IHN1Y2ggb3BlcmF0aW9ucy5cclxuICpcclxuICogQGV4dGVuZHMgUGxheWVyIHRvIGludGFrZSBpdHMgbmFtZXNwYWNlIGV4cG9ydHMuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgUGxheWVyU2tlbGV0b24gZXh0ZW5kcyBfUGxheWVyIHtcclxuICAgIGNvbnN0cnVjdG9yKGdhbWUsIGRlc2MpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIF9ob3N0VGlsZS5zZXQodGhpcywgdm9pZCAwKTtcclxuICAgICAgICBpZiAoTWF0aC50cnVuYyhkZXNjLnBsYXllcklkKSAhPT0gZGVzYy5wbGF5ZXJJZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIlBsYXllciBJRCdzIG11c3QgYmUgaW50ZWdlciB2YWx1ZXMuXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBsYXllcklkID0gZGVzYy5wbGF5ZXJJZDtcclxuICAgICAgICB0aGlzLmlzQUxvY2FsT3BlcmF0b3IgPSBkZXNjLmlzQUxvY2FsT3BlcmF0b3I7XHJcbiAgICAgICAgdGhpcy5nYW1lID0gZ2FtZTtcclxuICAgICAgICB0aGlzLnN0YXR1cyA9IG5ldyAodGhpcy5nYW1lLl9wbGF5ZXJTdGF0dXNDdG9yKSh0aGlzLCBkZXNjLm5vQ2hlY2tHYW1lT3Zlcik7XHJcbiAgICAgICAgdGhpcy50aWxlID0gbmV3IFRpbGVHZXR0ZXIobmV3IFBsYXllclNrZWxldG9uLlRpbGVHZXR0ZXJTb3VyY2UodGhpcykpO1xyXG4gICAgICAgIEpzVXRpbHMuaW5zdE5vRW51bSh0aGlzLCBbXCJnYW1lXCJdKTtcclxuICAgICAgICBKc1V0aWxzLnByb3BOb1dyaXRlKHRoaXMsIFtcclxuICAgICAgICAgICAgXCJwbGF5ZXJJZFwiLCBcImlzQUxvY2FsT3BlcmF0b3JcIixcclxuICAgICAgICAgICAgXCJnYW1lXCIsIFwic3RhdHVzXCIsIFwidGlsZVwiLFxyXG4gICAgICAgIF0pO1xyXG4gICAgfVxyXG4gICAgX2FmdGVyQWxsUGxheWVyc0NvbnN0cnVjdGlvbigpIHtcclxuICAgICAgICB0aGlzLnN0YXR1cy5fYWZ0ZXJBbGxQbGF5ZXJzQ29uc3RydWN0aW9uKCk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIE11c3QgYmUgY2FsbGVkIF9hZnRlcl8gdGhlIHtAbGluayBHcmlkfSBoYXMgYmVlbiByZXNldC5cclxuICAgICAqIERvZXMgbm90IGV2aWN0IGl0c2VsZiBmcm9tIGl0cyBjdXJyZW50IGhvc3QgdGlsZSAoaWYgaXRcclxuICAgICAqIGhhcyBvbmUpLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBzcGF3blRpbGUgLVxyXG4gICAgICovXHJcbiAgICByZXNldChzcGF3blRpbGUpIHtcclxuICAgICAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9ob3N0VGlsZSwgc3Bhd25UaWxlKTtcclxuICAgICAgICB0aGlzLmhvc3RUaWxlLl9zZXRPY2N1cGFudCh0aGlzLnBsYXllcklkLCB0aGlzLnN0YXR1cy5pbW1pZ3JhbnRJbmZvKTtcclxuICAgIH1cclxuICAgIGdldCBjb29yZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ob3N0VGlsZS5jb29yZDtcclxuICAgIH1cclxuICAgIGdldCBob3N0VGlsZSgpIHtcclxuICAgICAgICByZXR1cm4gX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfaG9zdFRpbGUpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmljdHMgdGhpcyBgUGxheWVyYCBmcm9tIGl0cyBsYXN0IGtub3duIHBvc2l0aW9uICh3aGljaCBtYXkgYmVcclxuICAgICAqIGxhZ2dpbmcgYmVoaW5kIHRoZSBzdGF0ZSBvZiB0aGUgbWFzdGVyIGNvcHkgb2YgdGhlIGdhbWUuXHJcbiAgICAgKlxyXG4gICAgICogVGhpcyBtdXN0IGJlIGNhbGxlZCBhZnRlciBhbGwgc2FtZS1ldmVudCBjaGFuZ2VzIHBlcnRhaW5pbmcgdG9cclxuICAgICAqIHRoaXMgcGxheWVyJ3MgZmllbGRzIGhhdmUgYmVlbiBlbmFjdGVkLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBkZXN0IC1cclxuICAgICAqL1xyXG4gICAgbW92ZVRvKGRlc3QpIHtcclxuICAgICAgICAvLyBFdmljdCBzZWxmIGZyb20gY3VycmVudCBgVGlsZWAuXHJcbiAgICAgICAgaWYgKHRoaXMuaG9zdFRpbGUub2NjdXBhbnRJZCAhPT0gdGhpcy5wbGF5ZXJJZCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5nYW1lLmdhbWVUeXBlICE9PSBcIk9OTElORVwiIC8qIE9OTElORSAqLykge1xyXG4gICAgICAgICAgICAgICAgLy8gU2hvdWxkIG5ldmVyIGhhcHBlbi5cclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxpbmthZ2UgYmV0d2VlbiBwbGF5ZXIgYW5kIG9jY3VwaWVkIHRpbGUgZGlzYWdyZWVzLlwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvKiBPdGhlcndpc2UsIHRoaXMgY29ybmVyIGNhc2UgaXMgZ3VhcmFudGVlZCB0byBmb2xsb3cgdGhlIGV2ZW50c1xyXG4gICAgICAgICAgICBkZXNjcmliZWQgaW4gdGhlIGJlbG93IGNvbW1lbnQ6IGF0IHRoaXMgYE9ubGluZUdhbWVgLCBgcDJgIHdpbGxcclxuICAgICAgICAgICAgbW92ZSBvZmYgb2YgdGhlIGBUaWxlYCBjdXJyZW50bHkgb2NjdXBpZWQgYnkgdGhpcyBgUGxheWVyYC4gKi9cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIE1vdmUgb2ZmIG9mIGN1cnJlbnQgaG9zdCBgVGlsZWA6XHJcbiAgICAgICAgICAgIHRoaXMuaG9zdFRpbGUuZXZpY3RPY2N1cGFudCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBPY2N1cHkgdGhlIGRlc3RpbmF0aW9uIGBUaWxlLlxyXG4gICAgICAgIGlmIChkZXN0LmlzT2NjdXBpZWQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZ2FtZS5nYW1lVHlwZSAhPT0gXCJPTkxJTkVcIiAvKiBPTkxJTkUgKi8pIHtcclxuICAgICAgICAgICAgICAgIC8vIFNob3VsZCBuZXZlciBoYXBwZW4gYmVjYXVzZSB0aGUgR2FtZSBNYW5hZ2VyXHJcbiAgICAgICAgICAgICAgICAvLyByZWplY3RzIHJlcXVlc3RzIHRvIG1vdmUgb250byBhbiBvY2N1cGllZCBgVGlsZWAuXHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJPbmx5IG9uZSBwbGF5ZXIgY2FuIG9jY3VweSBhIHRpbGUgYXQgYSB0aW1lLlwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvKiBPdGhlcndpc2UsIHRoaXMgaXMgYWN0dWFsbHkgcG9zc2libGUgaW4gYSB2YXJpYW50IG9mIHRoZSBfREFTX1xyXG4gICAgICAgICAgICB3aGVyZSBhbm90aGVyIGBQbGF5ZXJgIGBwMmAgbW92ZXMgdG8gYEJgLCBJIHJlY2VpdmUgdGhhdCB1cGRhdGUsXHJcbiAgICAgICAgICAgIHRoZW4gYHAyYCBtYWtlcyBhIHJlcXVlc3QgdG8gbW92ZSB0byBgQ2AsIHdoaWNoIHRoZSBHYW1lIE1hbmFnZXJcclxuICAgICAgICAgICAgYWNjZXB0cyBhbmQgYmVnaW5zIHRvIG5vdGlmeSBteSBgT25saW5lR2FtZWAgb2YsIGJ1dCBiZXR3ZWVuIHRoZVxyXG4gICAgICAgICAgICB0aW1lIHRoYXQgdGhlIEdNIGFjY2VwdHMgdGhlIHJlcXVlc3QgYW5kIHdoZW4gSSByZWNlaXZlIHRoZSB1cGRhdGUsXHJcbiAgICAgICAgICAgIEkgbWFrZSBhIHJlcXVlc3QgdG8gbW92ZSB0byBgQmAsIHdoaWNoIGdldHMgYWNjZXB0ZWQgYnkgdGhlIEdNLFxyXG4gICAgICAgICAgICBhbmQgYmVjYXVzZSBJIG1pZ2h0IG5vdCBiZSB1c2luZyB3ZWJzb2NrZXRzIGFzIG15IHVuZGVybHlpbmdcclxuICAgICAgICAgICAgdHJhbnNwb3J0LCBJIHJlY2VpdmUgdGhlIHVwZGF0ZSBmb3IgbXkgb3duIHJlcXVlc3QgZmlyc3QsIHdoaWNoXHJcbiAgICAgICAgICAgIHdvdWxkIGFwcGVhciB0byBteSBgT25saW5lR2FtZWAgYXMgaWYgSSB3YXMgbW92aW5nIG9udG8gdGhlIGBUaWxlYFxyXG4gICAgICAgICAgICBvY2N1cGllZCBieSBgcDJgLiAqL1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gTW92ZSB0byBvY2N1cHkgdGhlIGRlc3RpbmF0aW9uIGBUaWxlYDpcclxuICAgICAgICAgICAgX19jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfaG9zdFRpbGUsIGRlc3QpO1xyXG4gICAgICAgICAgICBkZXN0Ll9zZXRPY2N1cGFudCh0aGlzLnBsYXllcklkLCB0aGlzLnN0YXR1cy5pbW1pZ3JhbnRJbmZvKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuX2hvc3RUaWxlID0gbmV3IFdlYWtNYXAoKTtcclxuKGZ1bmN0aW9uIChQbGF5ZXJTa2VsZXRvbikge1xyXG4gICAgdmFyIF9wbGF5ZXIsIF9zdXBlclRpbGVTcmM7XHJcbiAgICAvKipcclxuICAgICAqL1xyXG4gICAgY2xhc3MgVGlsZUdldHRlclNvdXJjZSB7XHJcbiAgICAgICAgY29uc3RydWN0b3IocGxheWVyKSB7XHJcbiAgICAgICAgICAgIF9wbGF5ZXIuc2V0KHRoaXMsIHZvaWQgMCk7XHJcbiAgICAgICAgICAgIF9zdXBlclRpbGVTcmMuc2V0KHRoaXMsIHZvaWQgMCk7XHJcbiAgICAgICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX3BsYXllciwgcGxheWVyKTtcclxuICAgICAgICAgICAgX19jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfc3VwZXJUaWxlU3JjLCBwbGF5ZXIuZ2FtZS5ncmlkLnRpbGUuX3NvdXJjZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIF9nZXRUaWxlQXQoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9zdXBlclRpbGVTcmMpLl9nZXRUaWxlQXQoX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfcGxheWVyKS5jb29yZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIF9nZXRUaWxlRGVzdHNGcm9tKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfc3VwZXJUaWxlU3JjKS5fZ2V0VGlsZURlc3RzRnJvbShfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9wbGF5ZXIpLmNvb3JkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgX2dldFRpbGVTb3VyY2VzVG8oKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9zdXBlclRpbGVTcmMpLl9nZXRUaWxlU291cmNlc1RvKF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3BsYXllcikuY29vcmQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIF9wbGF5ZXIgPSBuZXcgV2Vha01hcCgpLCBfc3VwZXJUaWxlU3JjID0gbmV3IFdlYWtNYXAoKTtcclxuICAgIFBsYXllclNrZWxldG9uLlRpbGVHZXR0ZXJTb3VyY2UgPSBUaWxlR2V0dGVyU291cmNlO1xyXG4gICAgT2JqZWN0LmZyZWV6ZShUaWxlR2V0dGVyU291cmNlKTtcclxuICAgIE9iamVjdC5mcmVlemUoVGlsZUdldHRlclNvdXJjZS5wcm90b3R5cGUpO1xyXG59KShQbGF5ZXJTa2VsZXRvbiB8fCAoUGxheWVyU2tlbGV0b24gPSB7fSkpO1xyXG5Kc1V0aWxzLnByb3RvTm9FbnVtKFBsYXllclNrZWxldG9uLCBbXCJfYWZ0ZXJBbGxQbGF5ZXJzQ29uc3RydWN0aW9uXCJdKTtcclxuT2JqZWN0LmZyZWV6ZShQbGF5ZXJTa2VsZXRvbik7XHJcbk9iamVjdC5mcmVlemUoUGxheWVyU2tlbGV0b24ucHJvdG90eXBlKTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/base/game/player/PlayerSkeleton.ts\n"); + +/***/ }), + +/***/ "./src/base/game/player/PlayerStatus.ts": +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"PlayerStatus\": () => /* binding */ PlayerStatus\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/defs/JsUtils.ts\");\n/* harmony import */ var game_player_Team__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/game/player/Team.ts\");\nvar _health;\r\n\r\n\r\n\r\n/**\r\n * This abstracts acts of modification upon a player's state, allowing\r\n * extension classes to override setters to perform additional tasks\r\n * such as visually rendering updates to this state information in a\r\n * web browser, and playing sound effects.\r\n */\r\nclass PlayerStatus {\r\n constructor(player, noCheckGameOver) {\r\n _health.set(this, void 0);\r\n this.player = player;\r\n this.noCheckGameOver = noCheckGameOver;\r\n defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.instNoEnum(this, [\"player\"]);\r\n }\r\n reset() {\r\n this.health = 0;\r\n }\r\n _afterAllPlayersConstruction() { }\r\n get immigrantInfo() {\r\n return undefined;\r\n }\r\n get health() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__classPrivateFieldGet)(this, _health);\r\n }\r\n set health(newHealth) {\r\n const oldIsDowned = this.isDowned;\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__classPrivateFieldSet)(this, _health, newHealth);\r\n if (oldIsDowned || !this.isDowned || this.noCheckGameOver)\r\n return;\r\n const team = this.player.team;\r\n const teams = this.player.game.teams;\r\n if (team.elimOrder === game_player_Team__WEBPACK_IMPORTED_MODULE_1__.Team.ElimOrder.STANDING) {\r\n // Right before this downing event, the team has not been\r\n // soft-eliminated yet, but it might be now. Check it:\r\n if (team.members.every((player) => {\r\n return player.status.noCheckGameOver || player.status.isDowned;\r\n })) {\r\n // All players are downed! The team is now eliminated:\r\n const numNonStandingTeams = 1 + teams.filter((team) => {\r\n return team.elimOrder !== game_player_Team__WEBPACK_IMPORTED_MODULE_1__.Team.ElimOrder.STANDING;\r\n }).length;\r\n team.elimOrder\r\n = 1 + teams.filter((team) => {\r\n return team.elimOrder !== game_player_Team__WEBPACK_IMPORTED_MODULE_1__.Team.ElimOrder.STANDING\r\n && team.elimOrder !== game_player_Team__WEBPACK_IMPORTED_MODULE_1__.Team.ElimOrder.IMMORTAL;\r\n }).length;\r\n // Now that a team is newly-eliminated, check if the\r\n // game should end:\r\n if (numNonStandingTeams === teams.length) {\r\n this.player.game.statusBecomeOver();\r\n }\r\n }\r\n }\r\n }\r\n get isDowned() {\r\n return this.health < 0.0;\r\n }\r\n}\r\n_health = new WeakMap();\r\ndefs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.protoNoEnum(PlayerStatus, [\"_afterAllPlayersConstruction\"]);\r\nObject.freeze(PlayerStatus);\r\nObject.freeze(PlayerStatus.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9nYW1lL3BsYXllci9QbGF5ZXJTdGF0dXMudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zbmFrZXkzLy4vc3JjL2Jhc2UvZ2FtZS9wbGF5ZXIvUGxheWVyU3RhdHVzLnRzP2VlODUiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9oZWFsdGg7XHJcbmltcG9ydCB7IF9fY2xhc3NQcml2YXRlRmllbGRHZXQsIF9fY2xhc3NQcml2YXRlRmllbGRTZXQgfSBmcm9tIFwidHNsaWJcIjtcclxuaW1wb3J0IHsgSnNVdGlscyB9IGZyb20gXCJkZWZzL0pzVXRpbHNcIjtcclxuaW1wb3J0IHsgVGVhbSB9IGZyb20gXCJnYW1lL3BsYXllci9UZWFtXCI7XHJcbi8qKlxyXG4gKiBUaGlzIGFic3RyYWN0cyBhY3RzIG9mIG1vZGlmaWNhdGlvbiB1cG9uIGEgcGxheWVyJ3Mgc3RhdGUsIGFsbG93aW5nXHJcbiAqIGV4dGVuc2lvbiBjbGFzc2VzIHRvIG92ZXJyaWRlIHNldHRlcnMgdG8gcGVyZm9ybSBhZGRpdGlvbmFsIHRhc2tzXHJcbiAqIHN1Y2ggYXMgdmlzdWFsbHkgcmVuZGVyaW5nIHVwZGF0ZXMgdG8gdGhpcyBzdGF0ZSBpbmZvcm1hdGlvbiBpbiBhXHJcbiAqIHdlYiBicm93c2VyLCBhbmQgcGxheWluZyBzb3VuZCBlZmZlY3RzLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFBsYXllclN0YXR1cyB7XHJcbiAgICBjb25zdHJ1Y3RvcihwbGF5ZXIsIG5vQ2hlY2tHYW1lT3Zlcikge1xyXG4gICAgICAgIF9oZWFsdGguc2V0KHRoaXMsIHZvaWQgMCk7XHJcbiAgICAgICAgdGhpcy5wbGF5ZXIgPSBwbGF5ZXI7XHJcbiAgICAgICAgdGhpcy5ub0NoZWNrR2FtZU92ZXIgPSBub0NoZWNrR2FtZU92ZXI7XHJcbiAgICAgICAgSnNVdGlscy5pbnN0Tm9FbnVtKHRoaXMsIFtcInBsYXllclwiXSk7XHJcbiAgICB9XHJcbiAgICByZXNldCgpIHtcclxuICAgICAgICB0aGlzLmhlYWx0aCA9IDA7XHJcbiAgICB9XHJcbiAgICBfYWZ0ZXJBbGxQbGF5ZXJzQ29uc3RydWN0aW9uKCkgeyB9XHJcbiAgICBnZXQgaW1taWdyYW50SW5mbygpIHtcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgZ2V0IGhlYWx0aCgpIHtcclxuICAgICAgICByZXR1cm4gX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfaGVhbHRoKTtcclxuICAgIH1cclxuICAgIHNldCBoZWFsdGgobmV3SGVhbHRoKSB7XHJcbiAgICAgICAgY29uc3Qgb2xkSXNEb3duZWQgPSB0aGlzLmlzRG93bmVkO1xyXG4gICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX2hlYWx0aCwgbmV3SGVhbHRoKTtcclxuICAgICAgICBpZiAob2xkSXNEb3duZWQgfHwgIXRoaXMuaXNEb3duZWQgfHwgdGhpcy5ub0NoZWNrR2FtZU92ZXIpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBjb25zdCB0ZWFtID0gdGhpcy5wbGF5ZXIudGVhbTtcclxuICAgICAgICBjb25zdCB0ZWFtcyA9IHRoaXMucGxheWVyLmdhbWUudGVhbXM7XHJcbiAgICAgICAgaWYgKHRlYW0uZWxpbU9yZGVyID09PSBUZWFtLkVsaW1PcmRlci5TVEFORElORykge1xyXG4gICAgICAgICAgICAvLyBSaWdodCBiZWZvcmUgdGhpcyBkb3duaW5nIGV2ZW50LCB0aGUgdGVhbSBoYXMgbm90IGJlZW5cclxuICAgICAgICAgICAgLy8gc29mdC1lbGltaW5hdGVkIHlldCwgYnV0IGl0IG1pZ2h0IGJlIG5vdy4gQ2hlY2sgaXQ6XHJcbiAgICAgICAgICAgIGlmICh0ZWFtLm1lbWJlcnMuZXZlcnkoKHBsYXllcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBsYXllci5zdGF0dXMubm9DaGVja0dhbWVPdmVyIHx8IHBsYXllci5zdGF0dXMuaXNEb3duZWQ7XHJcbiAgICAgICAgICAgIH0pKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBBbGwgcGxheWVycyBhcmUgZG93bmVkISBUaGUgdGVhbSBpcyBub3cgZWxpbWluYXRlZDpcclxuICAgICAgICAgICAgICAgIGNvbnN0IG51bU5vblN0YW5kaW5nVGVhbXMgPSAxICsgdGVhbXMuZmlsdGVyKCh0ZWFtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRlYW0uZWxpbU9yZGVyICE9PSBUZWFtLkVsaW1PcmRlci5TVEFORElORztcclxuICAgICAgICAgICAgICAgIH0pLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIHRlYW0uZWxpbU9yZGVyXHJcbiAgICAgICAgICAgICAgICAgICAgPSAxICsgdGVhbXMuZmlsdGVyKCh0ZWFtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZWFtLmVsaW1PcmRlciAhPT0gVGVhbS5FbGltT3JkZXIuU1RBTkRJTkdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHRlYW0uZWxpbU9yZGVyICE9PSBUZWFtLkVsaW1PcmRlci5JTU1PUlRBTDtcclxuICAgICAgICAgICAgICAgICAgICB9KS5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAvLyBOb3cgdGhhdCBhIHRlYW0gaXMgbmV3bHktZWxpbWluYXRlZCwgY2hlY2sgaWYgdGhlXHJcbiAgICAgICAgICAgICAgICAvLyBnYW1lIHNob3VsZCBlbmQ6XHJcbiAgICAgICAgICAgICAgICBpZiAobnVtTm9uU3RhbmRpbmdUZWFtcyA9PT0gdGVhbXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGF5ZXIuZ2FtZS5zdGF0dXNCZWNvbWVPdmVyKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBnZXQgaXNEb3duZWQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaGVhbHRoIDwgMC4wO1xyXG4gICAgfVxyXG59XHJcbl9oZWFsdGggPSBuZXcgV2Vha01hcCgpO1xyXG5Kc1V0aWxzLnByb3RvTm9FbnVtKFBsYXllclN0YXR1cywgW1wiX2FmdGVyQWxsUGxheWVyc0NvbnN0cnVjdGlvblwiXSk7XHJcbk9iamVjdC5mcmVlemUoUGxheWVyU3RhdHVzKTtcclxuT2JqZWN0LmZyZWV6ZShQbGF5ZXJTdGF0dXMucHJvdG90eXBlKTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/base/game/player/PlayerStatus.ts\n"); + +/***/ }), + +/***/ "./src/base/game/player/Team.ts": +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Team\": () => /* binding */ Team\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/defs/JsUtils.ts\");\nvar _elimOrder;\r\n\r\n\r\n/**\r\n *\r\n */\r\nclass Team {\r\n constructor(teamId, members) {\r\n _elimOrder.set(this, void 0);\r\n if (members.length === 0) {\r\n throw new Error(\"Teams must have at least one member.\");\r\n }\r\n this.id = teamId;\r\n this.members = members; // If paranoid, do a shallow copy.\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__classPrivateFieldSet)(// If paranoid, do a shallow copy.\r\n this, _elimOrder, (this.members.every((member) => member.status.noCheckGameOver))\r\n ? Team.ElimOrder.IMMORTAL\r\n : Team.ElimOrder.STANDING);\r\n defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.propNoWrite(this, [\"id\", \"members\"]);\r\n }\r\n reset() {\r\n if (this.elimOrder !== Team.ElimOrder.IMMORTAL) {\r\n this.elimOrder = Team.ElimOrder.STANDING;\r\n }\r\n }\r\n /**\r\n * @returns\r\n * Indicates the order (relative to other teams) in which this\r\n * team was to have all its members downed at the same time at\r\n * least once. Once a team is soft-eliminated, they can continue\r\n * playing as normal, but there is no going back. The game ends\r\n * when all teams but one have been soft-eliminated.\r\n *\r\n * ### Semantics\r\n *\r\n * A comparatively smaller value denotes having been soft-\r\n * eliminated at an earlier point in the game. **The value zero\r\n * denotes _not-having-been-soft-eliminated-yet_**.\r\n */\r\n get elimOrder() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__classPrivateFieldGet)(this, _elimOrder);\r\n }\r\n set elimOrder(teamElimOrder) {\r\n if (this.elimOrder === Team.ElimOrder.IMMORTAL) {\r\n throw new TypeError(\"Cannot change the elimination status of an immortal team.\");\r\n }\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__classPrivateFieldSet)(this, _elimOrder, teamElimOrder);\r\n }\r\n}\r\n_elimOrder = new WeakMap();\r\n(function (Team) {\r\n // Special values:\r\n let ElimOrder;\r\n (function (ElimOrder) {\r\n /**\r\n * A team starts off with such a value if all its players have\r\n * specified that their downing should not cause a check for\r\n * whether the game should end.\r\n */\r\n ElimOrder.IMMORTAL = -1;\r\n /**\r\n * A team that is not invincible starts off with such a value.\r\n */\r\n ElimOrder.STANDING = 0;\r\n })(ElimOrder = Team.ElimOrder || (Team.ElimOrder = {}));\r\n})(Team || (Team = {}));\r\nObject.freeze(Team);\r\nObject.freeze(Team.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9nYW1lL3BsYXllci9UZWFtLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc25ha2V5My8uL3NyYy9iYXNlL2dhbWUvcGxheWVyL1RlYW0udHM/MjYxNSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX2VsaW1PcmRlcjtcclxuaW1wb3J0IHsgX19jbGFzc1ByaXZhdGVGaWVsZEdldCwgX19jbGFzc1ByaXZhdGVGaWVsZFNldCB9IGZyb20gXCJ0c2xpYlwiO1xyXG5pbXBvcnQgeyBKc1V0aWxzIH0gZnJvbSBcImRlZnMvSnNVdGlsc1wiO1xyXG4vKipcclxuICpcclxuICovXHJcbmV4cG9ydCBjbGFzcyBUZWFtIHtcclxuICAgIGNvbnN0cnVjdG9yKHRlYW1JZCwgbWVtYmVycykge1xyXG4gICAgICAgIF9lbGltT3JkZXIuc2V0KHRoaXMsIHZvaWQgMCk7XHJcbiAgICAgICAgaWYgKG1lbWJlcnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRlYW1zIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgbWVtYmVyLlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pZCA9IHRlYW1JZDtcclxuICAgICAgICB0aGlzLm1lbWJlcnMgPSBtZW1iZXJzOyAvLyBJZiBwYXJhbm9pZCwgZG8gYSBzaGFsbG93IGNvcHkuXHJcbiAgICAgICAgX19jbGFzc1ByaXZhdGVGaWVsZFNldCgvLyBJZiBwYXJhbm9pZCwgZG8gYSBzaGFsbG93IGNvcHkuXHJcbiAgICAgICAgdGhpcywgX2VsaW1PcmRlciwgKHRoaXMubWVtYmVycy5ldmVyeSgobWVtYmVyKSA9PiBtZW1iZXIuc3RhdHVzLm5vQ2hlY2tHYW1lT3ZlcikpXHJcbiAgICAgICAgICAgID8gVGVhbS5FbGltT3JkZXIuSU1NT1JUQUxcclxuICAgICAgICAgICAgOiBUZWFtLkVsaW1PcmRlci5TVEFORElORyk7XHJcbiAgICAgICAgSnNVdGlscy5wcm9wTm9Xcml0ZSh0aGlzLCBbXCJpZFwiLCBcIm1lbWJlcnNcIl0pO1xyXG4gICAgfVxyXG4gICAgcmVzZXQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZWxpbU9yZGVyICE9PSBUZWFtLkVsaW1PcmRlci5JTU1PUlRBTCkge1xyXG4gICAgICAgICAgICB0aGlzLmVsaW1PcmRlciA9IFRlYW0uRWxpbU9yZGVyLlNUQU5ESU5HO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQHJldHVybnNcclxuICAgICAqIEluZGljYXRlcyB0aGUgb3JkZXIgKHJlbGF0aXZlIHRvIG90aGVyIHRlYW1zKSBpbiB3aGljaCB0aGlzXHJcbiAgICAgKiB0ZWFtIHdhcyB0byBoYXZlIGFsbCBpdHMgbWVtYmVycyBkb3duZWQgYXQgdGhlIHNhbWUgdGltZSBhdFxyXG4gICAgICogbGVhc3Qgb25jZS4gT25jZSBhIHRlYW0gaXMgc29mdC1lbGltaW5hdGVkLCB0aGV5IGNhbiBjb250aW51ZVxyXG4gICAgICogcGxheWluZyBhcyBub3JtYWwsIGJ1dCB0aGVyZSBpcyBubyBnb2luZyBiYWNrLiBUaGUgZ2FtZSBlbmRzXHJcbiAgICAgKiB3aGVuIGFsbCB0ZWFtcyBidXQgb25lIGhhdmUgYmVlbiBzb2Z0LWVsaW1pbmF0ZWQuXHJcbiAgICAgKlxyXG4gICAgICogIyMjIFNlbWFudGljc1xyXG4gICAgICpcclxuICAgICAqIEEgY29tcGFyYXRpdmVseSBzbWFsbGVyIHZhbHVlIGRlbm90ZXMgaGF2aW5nIGJlZW4gc29mdC1cclxuICAgICAqIGVsaW1pbmF0ZWQgYXQgYW4gZWFybGllciBwb2ludCBpbiB0aGUgZ2FtZS4gKipUaGUgdmFsdWUgemVyb1xyXG4gICAgICogZGVub3RlcyBfbm90LWhhdmluZy1iZWVuLXNvZnQtZWxpbWluYXRlZC15ZXRfKiouXHJcbiAgICAgKi9cclxuICAgIGdldCBlbGltT3JkZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2VsaW1PcmRlcik7XHJcbiAgICB9XHJcbiAgICBzZXQgZWxpbU9yZGVyKHRlYW1FbGltT3JkZXIpIHtcclxuICAgICAgICBpZiAodGhpcy5lbGltT3JkZXIgPT09IFRlYW0uRWxpbU9yZGVyLklNTU9SVEFMKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2hhbmdlIHRoZSBlbGltaW5hdGlvbiBzdGF0dXMgb2YgYW4gaW1tb3J0YWwgdGVhbS5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX2VsaW1PcmRlciwgdGVhbUVsaW1PcmRlcik7XHJcbiAgICB9XHJcbn1cclxuX2VsaW1PcmRlciA9IG5ldyBXZWFrTWFwKCk7XHJcbihmdW5jdGlvbiAoVGVhbSkge1xyXG4gICAgLy8gU3BlY2lhbCB2YWx1ZXM6XHJcbiAgICBsZXQgRWxpbU9yZGVyO1xyXG4gICAgKGZ1bmN0aW9uIChFbGltT3JkZXIpIHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBBIHRlYW0gc3RhcnRzIG9mZiB3aXRoIHN1Y2ggYSB2YWx1ZSBpZiBhbGwgaXRzIHBsYXllcnMgaGF2ZVxyXG4gICAgICAgICAqIHNwZWNpZmllZCB0aGF0IHRoZWlyIGRvd25pbmcgc2hvdWxkIG5vdCBjYXVzZSBhIGNoZWNrIGZvclxyXG4gICAgICAgICAqIHdoZXRoZXIgdGhlIGdhbWUgc2hvdWxkIGVuZC5cclxuICAgICAgICAgKi9cclxuICAgICAgICBFbGltT3JkZXIuSU1NT1JUQUwgPSAtMTtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBBIHRlYW0gdGhhdCBpcyBub3QgaW52aW5jaWJsZSBzdGFydHMgb2ZmIHdpdGggc3VjaCBhIHZhbHVlLlxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIEVsaW1PcmRlci5TVEFORElORyA9IDA7XHJcbiAgICB9KShFbGltT3JkZXIgPSBUZWFtLkVsaW1PcmRlciB8fCAoVGVhbS5FbGltT3JkZXIgPSB7fSkpO1xyXG59KShUZWFtIHx8IChUZWFtID0ge30pKTtcclxuT2JqZWN0LmZyZWV6ZShUZWFtKTtcclxuT2JqZWN0LmZyZWV6ZShUZWFtLnByb3RvdHlwZSk7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/base/game/player/Team.ts\n"); + +/***/ }), + +/***/ "./src/base/game/player/VisiblePlayerStatus.ts": +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"VisiblePlayerStatus\": () => /* binding */ VisiblePlayerStatus\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/defs/JsUtils.ts\");\n/* harmony import */ var defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/defs/OmHooks.ts\");\n/* harmony import */ var defs_TypeDefs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./src/base/defs/TypeDefs.ts\");\n/* harmony import */ var _PlayerStatus__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"./src/base/game/player/PlayerStatus.ts\");\nvar _baseElem, _vBellAnims, _immigrantInfoCache;\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n *\r\n */\r\nclass VisiblePlayerStatus extends _PlayerStatus__WEBPACK_IMPORTED_MODULE_3__.PlayerStatus {\r\n constructor(player, noCheckGameOver) {\r\n super(player, noCheckGameOver);\r\n _baseElem.set(this, void 0);\r\n _vBellAnims.set(this, void 0);\r\n _immigrantInfoCache.set(this, void 0);\r\n {\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldSet)(this, _baseElem, defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.mkEl(\"div\", [\r\n defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.General.Class.CENTER_CONTENTS,\r\n defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.General.Class.STACK_CONTENTS,\r\n defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.Player.Class.BASE,\r\n ]));\r\n }\r\n {\r\n // Setup face element:\r\n const faceElem = defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.mkEl(\"div\", [defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.Player.Class.FACE], {});\r\n const vBellAnims = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldSet)(this, _vBellAnims, (this.player.isALocalOperator) ? [\r\n // Note the 1-millisecond start delays required to\r\n // pause the animations before they start auto-playing.\r\n faceElem.animate({\r\n filter: [\"brightness(0.7)\", \"brightness(1.0)\"],\r\n }, { duration: 300, easing: \"ease-in\", delay: 1 }),\r\n faceElem.animate({\r\n transform: VisiblePlayerStatus.makeWiggleAnimation(10, 2),\r\n }, { duration: 270, easing: \"ease-out\", delay: 1 }),\r\n ] : []);\r\n vBellAnims.forEach((anim) => anim.pause());\r\n // Setup downedOverlay element:\r\n faceElem.appendChild(defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.mkEl(\"div\", [defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.Player.Class.DOWNED_OVERLAY]));\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _baseElem).appendChild(faceElem);\r\n }\r\n }\r\n /**\r\n * @override\r\n */\r\n _afterAllPlayersConstruction() {\r\n // @ts-expect-error : RO=\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldSet)(this, _immigrantInfoCache, Object.freeze({\r\n playerElem: (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _baseElem),\r\n username: this.player.username,\r\n }));\r\n }\r\n reset() {\r\n super.reset();\r\n const DDH = defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.Player.Dataset.DOWNED;\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _baseElem).dataset[DDH.KEY] = DDH.VALUES.NO;\r\n // ^We need to do this explicitly. It won't be done\r\n // automatically when setting `health` because of the short-\r\n // circuit=optimization made when `isDowned` hasn't changed.\r\n }\r\n get immigrantInfo() {\r\n return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _immigrantInfoCache);\r\n }\r\n _notifyWillBecomeCurrent(spotlightElems) {\r\n const currOperator = this.player.game.currentOperator;\r\n const nextOperator = this.player;\r\n requestAnimationFrame((time) => {\r\n spotlightElems.forEach((elem) => {\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _baseElem).appendChild(elem);\r\n });\r\n nextOperator.status.immigrantInfo.playerElem.scrollIntoView(defs_TypeDefs__WEBPACK_IMPORTED_MODULE_2__.SCROLL_INTO_CENTER);\r\n });\r\n if (nextOperator.teamId !== (currOperator === null || currOperator === void 0 ? void 0 : currOperator.teamId)) {\r\n // Must use the above nullish coalesce operator for first call to setCurrentOperator.\r\n nextOperator.game.players.forEach((otherPlayer) => {\r\n const isTeammate = (otherPlayer.teamId === nextOperator.teamId);\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(otherPlayer.status, _baseElem).dataset[defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.Player.Dataset.FACE_SWATCH]\r\n = (otherPlayer.isALocalOperator) ? (isTeammate ? \"me\" : \"meOppo\")\r\n : isTeammate ? \"teammate\" : \"opponent\";\r\n ;\r\n });\r\n }\r\n }\r\n visualBell() {\r\n if (!(0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _vBellAnims)) {\r\n }\r\n window.requestAnimationFrame((time) => {\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _vBellAnims).forEach((anim) => anim.play());\r\n });\r\n }\r\n get health() {\r\n return super.health;\r\n }\r\n set health(newHealth) {\r\n const oldIsDowned = this.isDowned;\r\n super.health = newHealth;\r\n if (oldIsDowned !== this.isDowned) {\r\n // CSS integration for Player.isDowned rendering.\r\n const DDH = defs_OmHooks__WEBPACK_IMPORTED_MODULE_1__.OmHooks.Player.Dataset.DOWNED;\r\n (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldGet)(this, _baseElem).dataset[DDH.KEY] = (this.isDowned)\r\n ? ((this.player.team.elimOrder)\r\n ? DDH.VALUES.TEAM\r\n : DDH.VALUES.SELF) : DDH.VALUES.NO;\r\n }\r\n }\r\n}\r\n_baseElem = new WeakMap(), _vBellAnims = new WeakMap(), _immigrantInfoCache = new WeakMap();\r\n(function (VisiblePlayerStatus) {\r\n var _nameElem, _scoreElem, _teamElem;\r\n function makeWiggleAnimation(pctX, numWiggles) {\r\n const arr = Array(numWiggles * 2).fill(pctX);\r\n arr.unshift(0);\r\n arr.push(0);\r\n return arr.map((n, i) => `translate(${(i % 2) ? n : -n}%)`);\r\n }\r\n VisiblePlayerStatus.makeWiggleAnimation = makeWiggleAnimation;\r\n /**\r\n * Append the base element to the players bar in the play-screen.\r\n * This is internally managed by the VisiblePlayerStatus class.\r\n */\r\n // TODO.impl Give each VisiblePlayerStatus one and update it within VisiblePlayerStatus' setters.\r\n class Card {\r\n constructor(playerName) {\r\n _nameElem.set(this, void 0);\r\n _scoreElem.set(this, void 0);\r\n _teamElem.set(this, void 0);\r\n this.baseElem = defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.mkEl(\"div\", []);\r\n this.baseElem.setAttribute(\"label\", \"Player\");\r\n const name = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__classPrivateFieldSet)(this, _nameElem, defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.mkEl(\"div\", [], { textContent: playerName }));\r\n this.baseElem.appendChild(name);\r\n }\r\n }\r\n _nameElem = new WeakMap(), _scoreElem = new WeakMap(), _teamElem = new WeakMap();\r\n VisiblePlayerStatus.Card = Card;\r\n})(VisiblePlayerStatus || (VisiblePlayerStatus = {}));\r\ndefs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.protoNoEnum(VisiblePlayerStatus, [\"_afterAllPlayersConstruction\"]);\r\nObject.freeze(VisiblePlayerStatus);\r\nObject.freeze(VisiblePlayerStatus.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYmFzZS9nYW1lL3BsYXllci9WaXNpYmxlUGxheWVyU3RhdHVzLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc25ha2V5My8uL3NyYy9iYXNlL2dhbWUvcGxheWVyL1Zpc2libGVQbGF5ZXJTdGF0dXMudHM/YzY0NiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX2Jhc2VFbGVtLCBfdkJlbGxBbmltcywgX2ltbWlncmFudEluZm9DYWNoZTtcclxuaW1wb3J0IHsgX19jbGFzc1ByaXZhdGVGaWVsZEdldCwgX19jbGFzc1ByaXZhdGVGaWVsZFNldCB9IGZyb20gXCJ0c2xpYlwiO1xyXG5pbXBvcnQgeyBKc1V0aWxzIH0gZnJvbSBcImRlZnMvSnNVdGlsc1wiO1xyXG5pbXBvcnQgeyBPbUhvb2tzIH0gZnJvbSBcImRlZnMvT21Ib29rc1wiO1xyXG5pbXBvcnQgeyBTQ1JPTExfSU5UT19DRU5URVIgfSBmcm9tIFwiZGVmcy9UeXBlRGVmc1wiO1xyXG5pbXBvcnQgeyBQbGF5ZXJTdGF0dXMgfSBmcm9tIFwiLi9QbGF5ZXJTdGF0dXNcIjtcclxuLyoqXHJcbiAqXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgVmlzaWJsZVBsYXllclN0YXR1cyBleHRlbmRzIFBsYXllclN0YXR1cyB7XHJcbiAgICBjb25zdHJ1Y3RvcihwbGF5ZXIsIG5vQ2hlY2tHYW1lT3Zlcikge1xyXG4gICAgICAgIHN1cGVyKHBsYXllciwgbm9DaGVja0dhbWVPdmVyKTtcclxuICAgICAgICBfYmFzZUVsZW0uc2V0KHRoaXMsIHZvaWQgMCk7XHJcbiAgICAgICAgX3ZCZWxsQW5pbXMuc2V0KHRoaXMsIHZvaWQgMCk7XHJcbiAgICAgICAgX2ltbWlncmFudEluZm9DYWNoZS5zZXQodGhpcywgdm9pZCAwKTtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX2Jhc2VFbGVtLCBKc1V0aWxzLm1rRWwoXCJkaXZcIiwgW1xyXG4gICAgICAgICAgICAgICAgT21Ib29rcy5HZW5lcmFsLkNsYXNzLkNFTlRFUl9DT05URU5UUyxcclxuICAgICAgICAgICAgICAgIE9tSG9va3MuR2VuZXJhbC5DbGFzcy5TVEFDS19DT05URU5UUyxcclxuICAgICAgICAgICAgICAgIE9tSG9va3MuUGxheWVyLkNsYXNzLkJBU0UsXHJcbiAgICAgICAgICAgIF0pKTtcclxuICAgICAgICB9XHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAvLyBTZXR1cCBmYWNlIGVsZW1lbnQ6XHJcbiAgICAgICAgICAgIGNvbnN0IGZhY2VFbGVtID0gSnNVdGlscy5ta0VsKFwiZGl2XCIsIFtPbUhvb2tzLlBsYXllci5DbGFzcy5GQUNFXSwge30pO1xyXG4gICAgICAgICAgICBjb25zdCB2QmVsbEFuaW1zID0gX19jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfdkJlbGxBbmltcywgKHRoaXMucGxheWVyLmlzQUxvY2FsT3BlcmF0b3IpID8gW1xyXG4gICAgICAgICAgICAgICAgLy8gTm90ZSB0aGUgMS1taWxsaXNlY29uZCBzdGFydCBkZWxheXMgcmVxdWlyZWQgdG9cclxuICAgICAgICAgICAgICAgIC8vIHBhdXNlIHRoZSBhbmltYXRpb25zIGJlZm9yZSB0aGV5IHN0YXJ0IGF1dG8tcGxheWluZy5cclxuICAgICAgICAgICAgICAgIGZhY2VFbGVtLmFuaW1hdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogW1wiYnJpZ2h0bmVzcygwLjcpXCIsIFwiYnJpZ2h0bmVzcygxLjApXCJdLFxyXG4gICAgICAgICAgICAgICAgfSwgeyBkdXJhdGlvbjogMzAwLCBlYXNpbmc6IFwiZWFzZS1pblwiLCBkZWxheTogMSB9KSxcclxuICAgICAgICAgICAgICAgIGZhY2VFbGVtLmFuaW1hdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogVmlzaWJsZVBsYXllclN0YXR1cy5tYWtlV2lnZ2xlQW5pbWF0aW9uKDEwLCAyKSxcclxuICAgICAgICAgICAgICAgIH0sIHsgZHVyYXRpb246IDI3MCwgZWFzaW5nOiBcImVhc2Utb3V0XCIsIGRlbGF5OiAxIH0pLFxyXG4gICAgICAgICAgICBdIDogW10pO1xyXG4gICAgICAgICAgICB2QmVsbEFuaW1zLmZvckVhY2goKGFuaW0pID0+IGFuaW0ucGF1c2UoKSk7XHJcbiAgICAgICAgICAgIC8vIFNldHVwIGRvd25lZE92ZXJsYXkgZWxlbWVudDpcclxuICAgICAgICAgICAgZmFjZUVsZW0uYXBwZW5kQ2hpbGQoSnNVdGlscy5ta0VsKFwiZGl2XCIsIFtPbUhvb2tzLlBsYXllci5DbGFzcy5ET1dORURfT1ZFUkxBWV0pKTtcclxuICAgICAgICAgICAgX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfYmFzZUVsZW0pLmFwcGVuZENoaWxkKGZhY2VFbGVtKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEBvdmVycmlkZVxyXG4gICAgICovXHJcbiAgICBfYWZ0ZXJBbGxQbGF5ZXJzQ29uc3RydWN0aW9uKCkge1xyXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgOiBSTz1cclxuICAgICAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9pbW1pZ3JhbnRJbmZvQ2FjaGUsIE9iamVjdC5mcmVlemUoe1xyXG4gICAgICAgICAgICBwbGF5ZXJFbGVtOiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9iYXNlRWxlbSksXHJcbiAgICAgICAgICAgIHVzZXJuYW1lOiB0aGlzLnBsYXllci51c2VybmFtZSxcclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcbiAgICByZXNldCgpIHtcclxuICAgICAgICBzdXBlci5yZXNldCgpO1xyXG4gICAgICAgIGNvbnN0IERESCA9IE9tSG9va3MuUGxheWVyLkRhdGFzZXQuRE9XTkVEO1xyXG4gICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2Jhc2VFbGVtKS5kYXRhc2V0W0RESC5LRVldID0gRERILlZBTFVFUy5OTztcclxuICAgICAgICAvLyBeV2UgbmVlZCB0byBkbyB0aGlzIGV4cGxpY2l0bHkuIEl0IHdvbid0IGJlIGRvbmVcclxuICAgICAgICAvLyBhdXRvbWF0aWNhbGx5IHdoZW4gc2V0dGluZyBgaGVhbHRoYCBiZWNhdXNlIG9mIHRoZSBzaG9ydC1cclxuICAgICAgICAvLyBjaXJjdWl0PW9wdGltaXphdGlvbiBtYWRlIHdoZW4gYGlzRG93bmVkYCBoYXNuJ3QgY2hhbmdlZC5cclxuICAgIH1cclxuICAgIGdldCBpbW1pZ3JhbnRJbmZvKCkge1xyXG4gICAgICAgIHJldHVybiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9pbW1pZ3JhbnRJbmZvQ2FjaGUpO1xyXG4gICAgfVxyXG4gICAgX25vdGlmeVdpbGxCZWNvbWVDdXJyZW50KHNwb3RsaWdodEVsZW1zKSB7XHJcbiAgICAgICAgY29uc3QgY3Vyck9wZXJhdG9yID0gdGhpcy5wbGF5ZXIuZ2FtZS5jdXJyZW50T3BlcmF0b3I7XHJcbiAgICAgICAgY29uc3QgbmV4dE9wZXJhdG9yID0gdGhpcy5wbGF5ZXI7XHJcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCh0aW1lKSA9PiB7XHJcbiAgICAgICAgICAgIHNwb3RsaWdodEVsZW1zLmZvckVhY2goKGVsZW0pID0+IHtcclxuICAgICAgICAgICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2Jhc2VFbGVtKS5hcHBlbmRDaGlsZChlbGVtKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIG5leHRPcGVyYXRvci5zdGF0dXMuaW1taWdyYW50SW5mby5wbGF5ZXJFbGVtLnNjcm9sbEludG9WaWV3KFNDUk9MTF9JTlRPX0NFTlRFUik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKG5leHRPcGVyYXRvci50ZWFtSWQgIT09IChjdXJyT3BlcmF0b3IgPT09IG51bGwgfHwgY3Vyck9wZXJhdG9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjdXJyT3BlcmF0b3IudGVhbUlkKSkge1xyXG4gICAgICAgICAgICAvLyBNdXN0IHVzZSB0aGUgYWJvdmUgbnVsbGlzaCBjb2FsZXNjZSBvcGVyYXRvciBmb3IgZmlyc3QgY2FsbCB0byBzZXRDdXJyZW50T3BlcmF0b3IuXHJcbiAgICAgICAgICAgIG5leHRPcGVyYXRvci5nYW1lLnBsYXllcnMuZm9yRWFjaCgob3RoZXJQbGF5ZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGlzVGVhbW1hdGUgPSAob3RoZXJQbGF5ZXIudGVhbUlkID09PSBuZXh0T3BlcmF0b3IudGVhbUlkKTtcclxuICAgICAgICAgICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRHZXQob3RoZXJQbGF5ZXIuc3RhdHVzLCBfYmFzZUVsZW0pLmRhdGFzZXRbT21Ib29rcy5QbGF5ZXIuRGF0YXNldC5GQUNFX1NXQVRDSF1cclxuICAgICAgICAgICAgICAgICAgICA9IChvdGhlclBsYXllci5pc0FMb2NhbE9wZXJhdG9yKSA/IChpc1RlYW1tYXRlID8gXCJtZVwiIDogXCJtZU9wcG9cIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBpc1RlYW1tYXRlID8gXCJ0ZWFtbWF0ZVwiIDogXCJvcHBvbmVudFwiO1xyXG4gICAgICAgICAgICAgICAgO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICB2aXN1YWxCZWxsKCkge1xyXG4gICAgICAgIGlmICghX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfdkJlbGxBbmltcykpIHtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgodGltZSkgPT4ge1xyXG4gICAgICAgICAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF92QmVsbEFuaW1zKS5mb3JFYWNoKChhbmltKSA9PiBhbmltLnBsYXkoKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBnZXQgaGVhbHRoKCkge1xyXG4gICAgICAgIHJldHVybiBzdXBlci5oZWFsdGg7XHJcbiAgICB9XHJcbiAgICBzZXQgaGVhbHRoKG5ld0hlYWx0aCkge1xyXG4gICAgICAgIGNvbnN0IG9sZElzRG93bmVkID0gdGhpcy5pc0Rvd25lZDtcclxuICAgICAgICBzdXBlci5oZWFsdGggPSBuZXdIZWFsdGg7XHJcbiAgICAgICAgaWYgKG9sZElzRG93bmVkICE9PSB0aGlzLmlzRG93bmVkKSB7XHJcbiAgICAgICAgICAgIC8vIENTUyBpbnRlZ3JhdGlvbiBmb3IgUGxheWVyLmlzRG93bmVkIHJlbmRlcmluZy5cclxuICAgICAgICAgICAgY29uc3QgRERIID0gT21Ib29rcy5QbGF5ZXIuRGF0YXNldC5ET1dORUQ7XHJcbiAgICAgICAgICAgIF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2Jhc2VFbGVtKS5kYXRhc2V0W0RESC5LRVldID0gKHRoaXMuaXNEb3duZWQpXHJcbiAgICAgICAgICAgICAgICA/ICgodGhpcy5wbGF5ZXIudGVhbS5lbGltT3JkZXIpXHJcbiAgICAgICAgICAgICAgICAgICAgPyBEREguVkFMVUVTLlRFQU1cclxuICAgICAgICAgICAgICAgICAgICA6IERESC5WQUxVRVMuU0VMRikgOiBEREguVkFMVUVTLk5PO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5fYmFzZUVsZW0gPSBuZXcgV2Vha01hcCgpLCBfdkJlbGxBbmltcyA9IG5ldyBXZWFrTWFwKCksIF9pbW1pZ3JhbnRJbmZvQ2FjaGUgPSBuZXcgV2Vha01hcCgpO1xyXG4oZnVuY3Rpb24gKFZpc2libGVQbGF5ZXJTdGF0dXMpIHtcclxuICAgIHZhciBfbmFtZUVsZW0sIF9zY29yZUVsZW0sIF90ZWFtRWxlbTtcclxuICAgIGZ1bmN0aW9uIG1ha2VXaWdnbGVBbmltYXRpb24ocGN0WCwgbnVtV2lnZ2xlcykge1xyXG4gICAgICAgIGNvbnN0IGFyciA9IEFycmF5KG51bVdpZ2dsZXMgKiAyKS5maWxsKHBjdFgpO1xyXG4gICAgICAgIGFyci51bnNoaWZ0KDApO1xyXG4gICAgICAgIGFyci5wdXNoKDApO1xyXG4gICAgICAgIHJldHVybiBhcnIubWFwKChuLCBpKSA9PiBgdHJhbnNsYXRlKCR7KGkgJSAyKSA/IG4gOiAtbn0lKWApO1xyXG4gICAgfVxyXG4gICAgVmlzaWJsZVBsYXllclN0YXR1cy5tYWtlV2lnZ2xlQW5pbWF0aW9uID0gbWFrZVdpZ2dsZUFuaW1hdGlvbjtcclxuICAgIC8qKlxyXG4gICAgICogQXBwZW5kIHRoZSBiYXNlIGVsZW1lbnQgdG8gdGhlIHBsYXllcnMgYmFyIGluIHRoZSBwbGF5LXNjcmVlbi5cclxuICAgICAqIFRoaXMgaXMgaW50ZXJuYWxseSBtYW5hZ2VkIGJ5IHRoZSBWaXNpYmxlUGxheWVyU3RhdHVzIGNsYXNzLlxyXG4gICAgICovXHJcbiAgICAvLyBUT0RPLmltcGwgR2l2ZSBlYWNoIFZpc2libGVQbGF5ZXJTdGF0dXMgb25lIGFuZCB1cGRhdGUgaXQgd2l0aGluIFZpc2libGVQbGF5ZXJTdGF0dXMnIHNldHRlcnMuXHJcbiAgICBjbGFzcyBDYXJkIHtcclxuICAgICAgICBjb25zdHJ1Y3RvcihwbGF5ZXJOYW1lKSB7XHJcbiAgICAgICAgICAgIF9uYW1lRWxlbS5zZXQodGhpcywgdm9pZCAwKTtcclxuICAgICAgICAgICAgX3Njb3JlRWxlbS5zZXQodGhpcywgdm9pZCAwKTtcclxuICAgICAgICAgICAgX3RlYW1FbGVtLnNldCh0aGlzLCB2b2lkIDApO1xyXG4gICAgICAgICAgICB0aGlzLmJhc2VFbGVtID0gSnNVdGlscy5ta0VsKFwiZGl2XCIsIFtdKTtcclxuICAgICAgICAgICAgdGhpcy5iYXNlRWxlbS5zZXRBdHRyaWJ1dGUoXCJsYWJlbFwiLCBcIlBsYXllclwiKTtcclxuICAgICAgICAgICAgY29uc3QgbmFtZSA9IF9fY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX25hbWVFbGVtLCBKc1V0aWxzLm1rRWwoXCJkaXZcIiwgW10sIHsgdGV4dENvbnRlbnQ6IHBsYXllck5hbWUgfSkpO1xyXG4gICAgICAgICAgICB0aGlzLmJhc2VFbGVtLmFwcGVuZENoaWxkKG5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIF9uYW1lRWxlbSA9IG5ldyBXZWFrTWFwKCksIF9zY29yZUVsZW0gPSBuZXcgV2Vha01hcCgpLCBfdGVhbUVsZW0gPSBuZXcgV2Vha01hcCgpO1xyXG4gICAgVmlzaWJsZVBsYXllclN0YXR1cy5DYXJkID0gQ2FyZDtcclxufSkoVmlzaWJsZVBsYXllclN0YXR1cyB8fCAoVmlzaWJsZVBsYXllclN0YXR1cyA9IHt9KSk7XHJcbkpzVXRpbHMucHJvdG9Ob0VudW0oVmlzaWJsZVBsYXllclN0YXR1cywgW1wiX2FmdGVyQWxsUGxheWVyc0NvbnN0cnVjdGlvblwiXSk7XHJcbk9iamVjdC5mcmVlemUoVmlzaWJsZVBsYXllclN0YXR1cyk7XHJcbk9iamVjdC5mcmVlemUoVmlzaWJsZVBsYXllclN0YXR1cy5wcm90b3R5cGUpO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/base/game/player/VisiblePlayerStatus.ts\n"); + +/***/ }), + +/***/ "./src/client/game/BrowserGame.ts": +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"JsUtils\": () => /* reexport safe */ defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils,\n/* harmony export */ \"Game\": () => /* reexport safe */ game_Game__WEBPACK_IMPORTED_MODULE_1__.Game,\n/* harmony export */ \"Coord\": () => /* reexport safe */ floor_VisibleTile__WEBPACK_IMPORTED_MODULE_2__.Coord,\n/* harmony export */ \"VisibleTile\": () => /* reexport safe */ floor_VisibleTile__WEBPACK_IMPORTED_MODULE_2__.VisibleTile,\n/* harmony export */ \"Player\": () => /* reexport safe */ game_player_Player__WEBPACK_IMPORTED_MODULE_4__.Player,\n/* harmony export */ \"OperatorPlayer\": () => /* reexport safe */ game_player_OperatorPlayer__WEBPACK_IMPORTED_MODULE_5__.OperatorPlayer,\n/* harmony export */ \"VisiblePlayerStatus\": () => /* reexport safe */ game_player_VisiblePlayerStatus__WEBPACK_IMPORTED_MODULE_6__.VisiblePlayerStatus,\n/* harmony export */ \"BrowserGameMixin\": () => /* binding */ BrowserGameMixin\n/* harmony export */ });\n/* harmony import */ var defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"./src/base/defs/JsUtils.ts\");\n/* harmony import */ var game_Game__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"./src/base/game/Game.ts\");\n/* harmony import */ var floor_VisibleTile__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./src/base/floor/VisibleTile.ts\");\n/* harmony import */ var floor_VisibleGrid__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"./src/base/floor/VisibleGrid.ts\");\n/* harmony import */ var game_player_Player__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\"./src/base/game/player/Player.ts\");\n/* harmony import */ var game_player_OperatorPlayer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\"./src/base/game/player/OperatorPlayer.ts\");\n/* harmony import */ var game_player_VisiblePlayerStatus__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(\"./src/base/game/player/VisiblePlayerStatus.ts\");\n/* harmony import */ var game_ctormaps_CmapBrowser__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(\"./src/base/game/ctormaps/CmapBrowser.ts\");\n// Tell WebPack about the CSS chunk we want:\r\n__webpack_require__(\"./assets/style/game/_barrel.css\");\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n // <- has side-effects.\r\n/**\r\n *\r\n */\r\nclass BrowserGameMixin {\r\n /**\r\n * Classes using this mixin should call this somewhere in their\r\n * constructor.\r\n */\r\n _ctorBrowserGame() {\r\n // @ts-expect-error : RO=\r\n this.htmlElements = Object.freeze({\r\n gridImpl: this.grid.baseElem,\r\n playersBar: document.createElement(\"div\"),\r\n });\r\n defs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.propNoWrite(this, [\"htmlElements\"]);\r\n }\r\n /**\r\n * @override\r\n */\r\n _getGridImplementation(coordSys) {\r\n return floor_VisibleGrid__WEBPACK_IMPORTED_MODULE_3__.VisibleGrid.getImplementation(coordSys);\r\n }\r\n /**\r\n * @override\r\n */\r\n _createOperatorPlayer(desc) {\r\n return new game_player_OperatorPlayer__WEBPACK_IMPORTED_MODULE_5__.OperatorPlayer(this, desc);\r\n }\r\n}\r\n;\r\ndefs_JsUtils__WEBPACK_IMPORTED_MODULE_0__.JsUtils.protoNoEnum(BrowserGameMixin, [\"_getGridImplementation\"]);\r\nObject.freeze(BrowserGameMixin);\r\nObject.freeze(BrowserGameMixin.prototype);\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvY2xpZW50L2dhbWUvQnJvd3NlckdhbWUudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zbmFrZXkzLy4vc3JjL2NsaWVudC9nYW1lL0Jyb3dzZXJHYW1lLnRzP2VlMDciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGVsbCBXZWJQYWNrIGFib3V0IHRoZSBDU1MgY2h1bmsgd2Ugd2FudDpcclxucmVxdWlyZShcImFzc2V0cy9zdHlsZS9nYW1lL19iYXJyZWwuY3NzXCIpO1xyXG5pbXBvcnQgeyBKc1V0aWxzIH0gZnJvbSBcImRlZnMvSnNVdGlsc1wiO1xyXG5leHBvcnQgeyBKc1V0aWxzIH07XHJcbmltcG9ydCB7IEdhbWUgfSBmcm9tIFwiZ2FtZS9HYW1lXCI7XHJcbmV4cG9ydCB7IEdhbWUgfTtcclxuaW1wb3J0IHsgQ29vcmQsIFZpc2libGVUaWxlIH0gZnJvbSBcImZsb29yL1Zpc2libGVUaWxlXCI7XHJcbmV4cG9ydCB7IENvb3JkLCBWaXNpYmxlVGlsZSB9O1xyXG5pbXBvcnQgeyBWaXNpYmxlR3JpZCB9IGZyb20gXCJmbG9vci9WaXNpYmxlR3JpZFwiO1xyXG5pbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiZ2FtZS9wbGF5ZXIvUGxheWVyXCI7XHJcbmV4cG9ydCB7IFBsYXllciB9O1xyXG5pbXBvcnQgeyBPcGVyYXRvclBsYXllciB9IGZyb20gXCJnYW1lL3BsYXllci9PcGVyYXRvclBsYXllclwiO1xyXG5leHBvcnQgeyBPcGVyYXRvclBsYXllciB9O1xyXG5leHBvcnQgeyBWaXNpYmxlUGxheWVyU3RhdHVzIH0gZnJvbSBcImdhbWUvcGxheWVyL1Zpc2libGVQbGF5ZXJTdGF0dXNcIjtcclxuaW1wb3J0IFwiZ2FtZS9jdG9ybWFwcy9DbWFwQnJvd3NlclwiOyAvLyA8LSBoYXMgc2lkZS1lZmZlY3RzLlxyXG4vKipcclxuICpcclxuICovXHJcbmV4cG9ydCBjbGFzcyBCcm93c2VyR2FtZU1peGluIHtcclxuICAgIC8qKlxyXG4gICAgICogQ2xhc3NlcyB1c2luZyB0aGlzIG1peGluIHNob3VsZCBjYWxsIHRoaXMgc29tZXdoZXJlIGluIHRoZWlyXHJcbiAgICAgKiBjb25zdHJ1Y3Rvci5cclxuICAgICAqL1xyXG4gICAgX2N0b3JCcm93c2VyR2FtZSgpIHtcclxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIDogUk89XHJcbiAgICAgICAgdGhpcy5odG1sRWxlbWVudHMgPSBPYmplY3QuZnJlZXplKHtcclxuICAgICAgICAgICAgZ3JpZEltcGw6IHRoaXMuZ3JpZC5iYXNlRWxlbSxcclxuICAgICAgICAgICAgcGxheWVyc0JhcjogZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxcclxuICAgICAgICB9KTtcclxuICAgICAgICBKc1V0aWxzLnByb3BOb1dyaXRlKHRoaXMsIFtcImh0bWxFbGVtZW50c1wiXSk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEBvdmVycmlkZVxyXG4gICAgICovXHJcbiAgICBfZ2V0R3JpZEltcGxlbWVudGF0aW9uKGNvb3JkU3lzKSB7XHJcbiAgICAgICAgcmV0dXJuIFZpc2libGVHcmlkLmdldEltcGxlbWVudGF0aW9uKGNvb3JkU3lzKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQG92ZXJyaWRlXHJcbiAgICAgKi9cclxuICAgIF9jcmVhdGVPcGVyYXRvclBsYXllcihkZXNjKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBPcGVyYXRvclBsYXllcih0aGlzLCBkZXNjKTtcclxuICAgIH1cclxufVxyXG47XHJcbkpzVXRpbHMucHJvdG9Ob0VudW0oQnJvd3NlckdhbWVNaXhpbiwgW1wiX2dldEdyaWRJbXBsZW1lbnRhdGlvblwiXSk7XHJcbk9iamVjdC5mcmVlemUoQnJvd3NlckdhbWVNaXhpbik7XHJcbk9iamVjdC5mcmVlemUoQnJvd3NlckdhbWVNaXhpbi5wcm90b3R5cGUpO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/client/game/BrowserGame.ts\n"); + +/***/ }) + +}]); \ No newline at end of file diff --git a/dist/client/index.js b/dist/client/index.js index 94bb82df..d59ffd18 100644 --- a/dist/client/index.js +++ b/dist/client/index.js @@ -1,2 +1,2 @@ -var snakey3=function(e){function t(t){for(var s,n,r=t[0],i=t[1],o=0,c=[];o{Object.getOwnPropertyNames(t.prototype).forEach(s=>{Object.defineProperty(e.prototype,s,Object.getOwnPropertyDescriptor(t.prototype,s))})})}function r(e){for(const t of Object.getOwnPropertyNames(e)){const s=e[t];"object"==typeof s&&r(s)}return Object.freeze(e)}class i{}!function(e){let t,s,n;e.Family=Object.freeze({HUMAN:"HUMAN",CHASER:"CHASER"}),e.Family,function(e){e.NULL=void 0}(t=e.Id||(e.Id={})),function(e){e.REGEXP=/[ a-zA-Z0-9:-]+/,e.MAX_LENGTH=15}(s=e.Username||(e.Username={})),function(e){e.LOREM_IPSUM="lorem-ipsum"}(n=e.Avatar||(e.Avatar={})),function(e){const t=Object.values(e).filter(e=>"string"==typeof e);e.GET_RANDOM=function(){return t[Math.random()*t.length]}}(n=e.Avatar||(e.Avatar={})),e.MoveType=Object.freeze({NORMAL:"NORMAL",BOOST:"BOOST"}),e.MoveType}(i||(i={})),Object.freeze(i),Object.freeze(i.prototype);class o{}!function(e){let t,s,n;!function(e){e.REGEXP=new RegExp("^[a-zA-Z0-9!@#$%^&*()-_=+;:'\"\\|,.<>/?]+$")}(t=e.Seq||(e.Seq={})),function(e){e.NULL=Object.freeze({char:"",seq:""})}(s=e.CharSeqPair||(e.CharSeqPair={})),function(e){e.MAX=4}(n=e.WeightExaggeration||(e.WeightExaggeration={})),e.CHAR_HIT_COUNT_SEED_CEILING=5,e._RemapTemplates=Object.freeze({IDENTITY:e=>e,TO_LOWER:e=>e.toLowerCase()}),e._RemapTemplates,e.FrontendDescs=Object.freeze([{id:"engl-low",module:"English",export:"Lowercase",numLeaves:26,remapFunc:e._RemapTemplates.TO_LOWER,displayName:"English Lowercase (qwerty)",blurb:""},{id:"engl-mix",module:"English",export:"MixedCase",numLeaves:52,remapFunc:e._RemapTemplates.IDENTITY,displayName:"English Mixed-Case (Querty)",blurb:""},{id:"japn-hir",module:"Japanese",export:"Hiragana",numLeaves:71,remapFunc:e._RemapTemplates.TO_LOWER,displayName:"Japanese Hiragana",blurb:""},{id:"japn-kat",module:"Japanese",export:"Katakana",numLeaves:70,remapFunc:e._RemapTemplates.TO_LOWER,displayName:"Japanese Katakana",blurb:""},{id:"kore-dub",module:"Korean",export:"Dubeolsik",numLeaves:9177,remapFunc:e._RemapTemplates.IDENTITY,displayName:"Korean Dubeolsik (두벌식 키보드)",blurb:"The most common keyboard layout, and South Korea's only Hangul standard since 1969. Consonants are on the left, and vowels on the right."},{id:"kore-sub",module:"Korean",export:"Sebeolsik",numLeaves:10206,remapFunc:e._RemapTemplates.IDENTITY,displayName:"Korean Sebeolsik (세벌식 최종 키보드)",blurb:"Another Hangul keyboard layout used in South Korea, and the final Sebeolsik layout designed by Dr. Kong Byung Woo, hence the name. Syllable-initial consonants are on the right, final consonants on the left, and vowels in the middle. It is more ergonomic than the dubeolsik, but not widely used."},{id:"kore-rom",module:"Korean",export:"Romanization",numLeaves:3990,remapFunc:e._RemapTemplates.TO_LOWER,displayName:"Korean Revised Romanization",blurb:"The Revised Romanization of Korean (국어의 로마자 표기법; 國語의 로마字 表記法) is the official South Korean language romanization system. It was developed by the National Academy of the Korean Language from 1995, and was released on 7 July 2000 by South Korea's Ministry of Culture and Tourism"},{id:"engl-cell-enc",module:"English",export:"OldCellphone.Encode",numLeaves:8,remapFunc:e._RemapTemplates.IDENTITY,displayName:"Old Cellphone Keyboard",blurb:""}].map(e=>Object.freeze(e))),e.FrontendDescs,e.GET_FRONTEND_DESC_BY_ID=function(t){return e.FrontendDescs.find(e=>e.id===t)}}(o||(o={})),Object.freeze(o),Object.freeze(o.prototype)},function(e,t,s){"use strict";s.d(t,"a",(function(){return n}));var n,a=s(1);!function(e){let t,s,n,a,r,i;e.GLOBAL_IDS={PUBLIC_GAME_HOST_URLS:"public-game-hosts-list",CURRENT_HOST_GROUPS:"current-host-groups-list"},function(e){e.Class={TEXT_SELECT_DISABLED:"text-select-disabled",FILL_PARENT:"fill-parent",CENTER_CONTENTS:"center-contents",STACK_CONTENTS:"stack-contents",INPUT_GROUP:"sk-input-group",INPUT_GROUP_ITEM:"sk-input-group-item"},e.Dataset={COLOUR_SCHEME:"skColourScheme"}}(t=e.General||(e.General={})),function(e){e.Class={BASE:"tile",POINTER_HB:"tile__pointer-hitbox",LANG_CHAR_WRAP:"tile__char",LANG_SEQ:"tile__seq"},e.Dataset={HEALTH:"health"}}(s=e.Tile||(e.Tile={})),function(e){e.Class={GRID:"game-grid",SCROLL_OUTER:"game-grid-scroll-outer",SCROLL_INNER:"game-grid-scroll-inner",IMPL_BODY:"game-grid-impl-body",KBD_DC:"game-grid-kbd-dc",KBD_DC_ICON:"game-grid-kbd-dc__icon",PAUSE_OL:"game-grid-pause-overlay",PAUSE_OL_ICON:"game-grid-pause-overlay__icon",PLAYER_IOB_ROOT:"grid-player-intersection-root"},e.Dataset={IMPL_COORD_SYS:"coordSys",GAME_STATE:{KEY:"gameState",VALUES:{PLAYING:"playing",PAUSED:"paused",OVER:"over"}}}}(n=e.Grid||(e.Grid={})),function(e){e.Class={BASE:"player",FACE:"player__face",DOWNED_OVERLAY:"player__downed-overlay",SHORT_SPOTLIGHT:"player__spotlight-short",LONG_SPOTLIGHT:"player__spotlight-long"},e.Dataset={DOWNED:{KEY:"downed",VALUES:{TEAM:"team",SELF:"self",NO:"no"}},FACE_SWATCH:"face"}}(a=e.Player||(e.Player={})),function(e){let t;e.Id={ALL_SCREENS:"all-screens-container",SCREEN_TINT:"screen-tint"},e.Class={BASE:"sk-screen",NAV_NEXT:"screen--next-button",NAV_PREV:"screen--back-button"},e.Dataset={CURRENT:"current"},function(e){let t,s,n,a,r,i;!function(e){e.Class={BASE:"screen-home",NAV:"screen-home--nav",NAV_PLAY_OFFLINE:"screen-home--nav--play-offline",NAV_PLAY_ONLINE:"screen-home--nav--play-online",NAV_HOW_TO_PLAY:"screen-home--nav--how-to-play",NAV_HOW_TO_HOST:"screen-home--nav--how-to-host",NAV_COLOURS:"screen-home--nav--colour-scheme",NAV_VIEW_REPO:"screen-home--nav--goto-repo",NAV_RPT_ISSUE:"screen-home--nav--report-issue"}}(t=e.Home||(e.Home={})),function(e){e.Class={BASE:"screen-colour",OPTION:"screen-colour--opt",OPTION_LABEL:"screen-colour--opt-label",OPTION_PREVIEW:"screen-colour--opt-preview"}}(s=e.ColourCtrl||(e.ColourCtrl={})),function(e){e.Class={BASE:"screen-play",GRID_WRAPPER:"screen-play--grid-wrapper",CONTROLS_BAR:"screen-play--controls-bar",PLAYERS_BAR:"screen-play--players-bar"}}(n=e.Play||(e.Play={})),function(e){e.Class={BASE:"screen-setup",LANG_SEL:"screen-setup--lang-sel",LANG_WEIGHT_EXAGG:"screen-setup--lang-weight-exagg"},e.Id={LANG_WEIGHT_EXAGGERATION_LIST:"screen-setup--lang-weight-exaggeration-list"}}(a=e.Setup||(e.Setup={})),function(e){e.Class={BASE:"screen-joiner",CONTENT_WRAPPER:"screen-joiner--content-wrapper",HOST_URL:"screen-joiner--host-url",GROUP_NAME:"screen-joiner--group-name",PASSPHRASE:"screen-joiner--passphrase"}}(r=e.GroupJoiner||(e.GroupJoiner={})),function(e){e.Class={BASE:"screen-lobby",SEC_CLIENT_INFO:"screen-lobby--client-info-section",SEC_TEAMS:"screen-lobby--teams-section",TEAM:"screen-lobby--team",PLAYER:"screen-lobby--player",PLAYER_NAME:"screen-lobby--player__name"}}(i=e.GroupLobby||(e.GroupLobby={}))}(t=e.Impl||(e.Impl={}))}(r=e.Screen||(e.Screen={})),function(e){e.Class={BASE:"sk-pick-one",OPT_BASE:"sk-pick-one--opt"}}(i=e.SkPickOne||(e.SkPickOne={}))}(n||(n={})),Object.freeze(n.Player.Dataset.DOWNED),Object(a.e)(n)},function(e,t,s){"use strict";var n;s.d(t,"a",(function(){return n})),function(e){let t,s,n,a;!function(e){e.SERVER="SERVER",e.ONLINE="ONLINE",e.OFFLINE="OFFLINE"}(t=e.Type||(e.Type={})),function(e){let t;!function(e){e.NAME="game-create",e.RETURN_TO_LOBBY_INDICATOR="return-to-lobby"}(t=e.Event||(e.Event={})),e.EVENT_NAME_CLIENT_READY_RESET="client-ready-for-reset",e.EVENT_NAME_CLIENT_READY_UNPAUSE="client-ready-for-unpause",e.EVENT_NAME_SERVER_APPROVE_UNPAUSE="server-approve-unpause",e.EVENT_NAME_SERVER_APPROVE_PAUSE="server-approve-pause"}(s=e.CtorArgs||(e.CtorArgs={})),function(e){e.EVENT_NAME="game-reset"}(n=e.Serialization||(e.Serialization={})),function(e){e.PLAYING="PLAYING",e.PAUSED="PAUSED",e.OVER="OVER"}(a=e.Status||(e.Status={})),e.K=Object.freeze({HEALTH_UPDATE_CHANCE:.1,PCT_MOVES_THAT_ARE_BOOST:.05,HEALTH_EFFECT_FOR_DOWNED_PLAYER:.6,EVENT_RECORD_WRAPPING_BUFFER_LENGTH:128,EVENT_RECORD_FORWARD_WINDOW_LENGTH:64})}(n||(n={})),Object.freeze(n)},function(e,t,s){"use strict";s.d(t,"a",(function(){return n})),s.d(t,"b",(function(){return d}));var n,a,r,i,o,c=s(0),l=s(1);!function(e){let t;!function(e){e.EUCLID2="EUCLID2",e.BEEHIVE="BEEHIVE"}(t=e.System||(e.System={})),e.equals=function(e,t){return e._equals(t)}}(n||(n={})),Object.freeze(n);class d{constructor(e){a.set(this,void 0),r.set(this,void 0),i.set(this,void 0),o.set(this,void 0),this.coord=e,Object(c.c)(this,a,l.b.Id.NULL)}reset(){this.evictOccupant(),this.lastKnownUpdateId=0,this.freeHealth=0,this.setLangCharSeqPair(l.a.CharSeqPair.NULL)}_setOccupant(e,t){Object(c.c)(this,a,e)}get isOccupied(){return this.occupantId!==l.b.Id.NULL}evictOccupant(){Object(c.c)(this,a,l.b.Id.NULL)}get occupantId(){return Object(c.b)(this,a)}get freeHealth(){return Object(c.b)(this,r)}set freeHealth(e){Object(c.c)(this,r,e)}setLangCharSeqPair(e){Object(c.c)(this,i,e.char),Object(c.c)(this,o,e.seq)}get langChar(){return Object(c.b)(this,i)}get langSeq(){return Object(c.b)(this,o)}}a=new WeakMap,r=new WeakMap,i=new WeakMap,o=new WeakMap,Object.freeze(d),Object.freeze(d.prototype)},function(e,t,s){},function(e,t,s){},function(e,t,s){"use strict";s.r(t),s.d(t,"OmHooks",(function(){return o.a})),s.d(t,"_top",(function(){return ee})),s.d(t,"screen",(function(){return te})),s.d(t,"game",(function(){return se}));var n,a,r,i=s(0),o=s(2),c=s(1);!function(e){let t;e.LocalKeys=Object.freeze({MUSIC_VOLUME:"musicVolume",SFX_VOLUME:"sfxVolume",COLOUR_ID:"colourSchemeId",COLOUR_LITERAL:"colourSchemeStyleLiteral",GAME_PRESET:"gamePresetId",USERNAME:"username",AVATAR:"avatarId"}),e.getLastUserInfo=function(){var t,s;return Object.freeze({username:null!==(t=localStorage.getItem(e.LocalKeys.USERNAME))&&void 0!==t?t:"unnamed player",teamId:0,avatar:null!==(s=localStorage.getItem(e.LocalKeys.AVATAR))&&void 0!==s?s:c.b.Avatar.GET_RANDOM()})},e.SessionKeys=Object.freeze({}),function(e){let t;e.DB_NAME="snakeyDB",function(e){e.STORE_NAME="userGamePresets"}(t=e.UserGamePresetStore||(e.UserGamePresetStore={})),Object.freeze(t)}(t=e.IDB||(e.IDB={})),Object.freeze(t)}(n||(n={})),Object.freeze(n);const l=o.a.Screen.Class;class d{constructor(e,t,s,n){a.set(this,void 0),r.set(this,void 0),this.screenId=e,this.top=t,Object(i.c)(this,a,s),this.requestGoToScreen=n,Object(i.c)(this,r,!1),this.nav=Object.freeze({prev:document.createElement("button"),next:document.createElement("button")}),this.nav.prev.classList.add(l.NAV_PREV),this.nav.next.classList.add(l.NAV_NEXT),this.nav.prev.textContent="Back",this.nav.next.textContent="Next",this.nav.prev.onclick=e=>{this.requestGoToScreen(...this.getNavPrevArgs())}}get initialScreen(){return this.screenId}getNavPrevArgs(){const e=d.NavPrevDest[this.screenId];if(e)return[e,{},d.NavDir.BACKWARD];throw"never"}_enter(e,t){return Object(i.a)(this,void 0,void 0,(function*(){if(!Object(i.b)(this,r)){const e=this.baseElem=document.createElement("div");e.classList.add(o.a.Screen.Class.BASE),this._lazyLoad(),Object(i.b)(this,a).appendChild(e);const t=this.screenId.replace(/[A-Z]/g,e=>" "+e);{const s=t.toUpperCase();this.top.prependComment(e,s+" SCREEN")}{const s=t.split(" ").map(e=>e.charAt(0).toUpperCase()+e.substring(1)).join(" ");e.setAttribute("aria-label",s+" Screen")}Object(i.c)(this,r,!0)}{const t=new window.URL(window.location.href);t.hash=this.screenId;const s=[{screenId:this.screenId},"",t.href];switch(e){case d.NavDir.BACKWARD:history.replaceState(...s);break;case d.NavDir.FORWARD:history.pushState(...s);break;default:throw"never"}}yield this._abstractOnBeforeEnter(e,t),window.requestAnimationFrame(e=>{this.baseElem.dataset[o.a.Screen.Dataset.CURRENT]="",this.baseElem.setAttribute("aria-hidden","false")})}))}_leave(e){return!!this._abstractOnBeforeLeave(e)&&(delete this.baseElem.dataset[o.a.Screen.Dataset.CURRENT],this.baseElem.setAttribute("aria-hidden","true"),!0)}_abstractOnBeforeEnter(e,t){return Object(i.a)(this,void 0,void 0,(function*(){}))}_abstractOnBeforeLeave(e){return!0}}a=new WeakMap,r=new WeakMap,function(e){let t,s;!function(e){e.HOME="home",e.HOW_TO_PLAY="howToPlay",e.HOW_TO_HOST="howToHost",e.COLOUR_CTRL="colourControl",e.SETUP_OFFLINE="setupOffline",e.PLAY_OFFLINE="playOffline",e.GROUP_JOINER="groupJoiner",e.SETUP_ONLINE="setupOnline",e.GROUP_LOBBY="groupLobby",e.PLAY_ONLINE="playOnline"}(t=e.Id||(e.Id={})),e.NavPrevDest=Object.freeze({[t.HOME]:t.HOME,[t.HOW_TO_PLAY]:t.HOME,[t.HOW_TO_HOST]:t.HOME,[t.COLOUR_CTRL]:t.HOME,[t.SETUP_OFFLINE]:t.HOME,[t.PLAY_OFFLINE]:t.SETUP_OFFLINE,[t.GROUP_JOINER]:t.HOME,[t.GROUP_LOBBY]:t.GROUP_JOINER,[t.SETUP_ONLINE]:t.GROUP_LOBBY,[t.PLAY_ONLINE]:t.SETUP_ONLINE}),function(e){e.FORWARD="forward",e.BACKWARD="backward"}(s=e.NavDir||(e.NavDir={}))}(d||(d={})),Object.freeze(d),Object.freeze(d.prototype);class u extends d{_lazyLoad(){const e=o.a.Screen.Impl.Home.Class;this.baseElem.classList.add(o.a.General.Class.CENTER_CONTENTS,e.BASE);const t=this.navElem=document.createElement("div");t.classList.add(o.a.General.Class.TEXT_SELECT_DISABLED,o.a.General.Class.INPUT_GROUP,e.NAV),t.setAttribute("role","navigation"),t.addEventListener("pointerleave",()=>{var e;(null===(e=document.activeElement)||void 0===e?void 0:e.parentElement)===t&&document.activeElement.blur()});const s=(e,s)=>{e.classList.add(o.a.General.Class.CENTER_CONTENTS,o.a.General.Class.INPUT_GROUP_ITEM,s.cssClass),e.textContent=s.text,e.addEventListener("pointerenter",()=>{window.requestAnimationFrame(t=>{e.focus()})}),t.appendChild(e)};[{text:"Offline Single-player",cssClass:e.NAV_PLAY_OFFLINE,screenId:d.Id.SETUP_OFFLINE},{text:"Online Multi-player",cssClass:e.NAV_PLAY_ONLINE,screenId:d.Id.GROUP_JOINER},{text:"How To Play",cssClass:e.NAV_HOW_TO_PLAY,screenId:d.Id.HOW_TO_PLAY},{text:"How To Host",cssClass:e.NAV_HOW_TO_HOST,screenId:d.Id.HOW_TO_HOST},{text:"Colour Schemes",cssClass:e.NAV_COLOURS,screenId:d.Id.COLOUR_CTRL}].map(e=>Object.freeze(e)).forEach(e=>{const t=document.createElement("button");t.onclick=e.screenId instanceof Function?e.screenId:()=>{this.requestGoToScreen(e.screenId,{})},s(t,e)}),[{text:"Visit\nRepo",cssClass:e.NAV_VIEW_REPO,href:new window.URL("https://github.com/david-fong/SnaKey-NTS")},{text:"Report\nIssue",cssClass:e.NAV_RPT_ISSUE,href:new window.URL("https://github.com/david-fong/SnaKey-NTS/issues")}].map(e=>Object.freeze(e)).forEach(e=>{const t=document.createElement("a");t.href=e.href.toString(),t.referrerPolicy="strict-origin-when-cross-origin",t.rel="noopener",t.target="_blank",s(t,e)}),this.baseElem.appendChild(t)}}Object.freeze(u),Object.freeze(u.prototype);class h extends d{_lazyLoad(){}}Object.freeze(h),Object.freeze(h.prototype);class p extends d{_lazyLoad(){}}var E,m,O,_,b,f;(p||(p={})).INSTRUCTIONS_STEPS=Object.freeze(["$ npm install 'https://github.com/david-fong/SnaKey-NTS#gh-pages'","$ npm run start","send the url to your friends"]),Object.freeze(p),Object.freeze(p.prototype);class v{constructor(){E.set(this,void 0),m.set(this,void 0),O.set(this,void 0);const e=document.createElement("div");e.tabIndex=0,e.classList.add(o.a.SkPickOne.Class.BASE),e.addEventListener("keydown",this._onKeyDown.bind(this)),e.setAttribute("role","listbox"),e.addEventListener("pointerenter",t=>{window.requestAnimationFrame(t=>{e.focus()})}),this.baseElem=e,this.options=[]}addOption(e){this.options.push(e),this.baseElem.appendChild(e.baseElem),e.baseElem.addEventListener("pointerenter",this.hoverOpt.bind(this,e)),e.baseElem.addEventListener("click",this.selectOpt.bind(this,e,!0)),e._registerParent(this._onOptDisabledChange.bind(this))}hoverOpt(e){var t;this.hoveredOpt!==e&&(null===(t=this.hoveredOpt)||void 0===t||t.baseElem.setAttribute("aria-active-descendant","false"),Object(i.c)(this,m,e),this.hoveredOpt.baseElem.setAttribute("aria-active-descendant","true"))}selectOpt(e,t=!0){var s;if(!e)throw Error("opt must be defined");this.hoverOpt(e),this.confirmedOpt!==e&&(null===(s=this.confirmedOpt)||void 0===s||s.baseElem.setAttribute("aria-selected","false"),Object(i.c)(this,E,e),this.confirmedOpt.baseElem.setAttribute("aria-selected","true"),t&&this._onSelectOpt(e))}get confirmedOpt(){return Object(i.b)(this,E)}get hoveredOpt(){return Object(i.b)(this,m)}_onOptDisabledChange(e){this.confirmedOpt===e&&(this._isValid=!e.disabled)}set _isValid(e){this._isValid!==e&&(this.baseElem.setAttribute("aria-invalid",e?"false":"true"),Object(i.c)(this,O,e))}get _isValid(){return Object(i.b)(this,O)}_onKeyDown(e){if(" "===e.key||"Enter"===e.key)return this.selectOpt(this.hoveredOpt),e.preventDefault(),!1;{const t=this.options.indexOf(this.hoveredOpt);if("ArrowDown"===e.key||"Down"===e.key)for(let s=t+1;s=0;s--){const t=this.options[s];if(!t.disabled)return this.hoverOpt(t),e.preventDefault(),!1}}return!0}}E=new WeakMap,m=new WeakMap,O=new WeakMap,_=v||(v={}),b=new WeakMap,f=new WeakMap,_._Option=class{constructor(){b.set(this,void 0),f.set(this,void 0);const e=this.baseElem=document.createElement("div");e.classList.add(o.a.SkPickOne.Class.OPT_BASE),e.setAttribute("role","option"),Object(i.c)(this,b,!1)}_registerParent(e){Object(i.c)(this,f,e)}get disabled(){return Object(i.b)(this,b)}set disabled(e){this.disabled!==e&&(this.baseElem.setAttribute("aria-disabled",e?"true":"false"),Object(i.c)(this,b,e),Object(i.b)(this,f).call(this,this))}},Object.freeze(_),Object.freeze(_.prototype),Object.freeze(v),Object.freeze(v.prototype),s(6);const g=o.a.Screen.Impl.ColourCtrl.Class;o.a.General.Class;class S extends d{constructor(){super(...arguments),this.canBeInitialScreen=!0}_lazyLoad(){const e=new S.PickOne;this.baseElem.appendChild(e.baseElem),this.sel=e;const t=localStorage.getItem(n.LocalKeys.COLOUR_ID);t&&this.sel.selectOpt(this.sel.getOptById(t),!1)}}var L;!function(e){class t extends v{constructor(){var e;super(),this.baseElem.classList.add(g.BASE),this.garageDoorElem=document.getElementById(o.a.Screen.Id.SCREEN_TINT),this.garageDoorElem.style.transitionDuration=L.SMOOTH_CHANGE_DURATION/3+"ms",L.Schemes.forEach(e=>{this.addOption(new t.Option(e))}),this.selectOpt(this.getOptById(null!==(e=localStorage.getItem(n.LocalKeys.COLOUR_ID))&&void 0!==e?e:"snakey"),!1)}_onHoverOpt(e){}_onSelectOpt(e){{const e=document.documentElement.style;for(const t of L.Swatch){const s="--colour-"+t;e.setProperty(s,"")}}localStorage.setItem(n.LocalKeys.COLOUR_ID,e.desc.id),localStorage.setItem(n.LocalKeys.COLOUR_LITERAL,e.cssLiteral);const t=L.SMOOTH_CHANGE_DURATION/3,s=this.garageDoorElem.style;s.opacity="1.0",s.pointerEvents="all",this.baseElem.style.pointerEvents="none",setTimeout(()=>{document.documentElement.dataset[o.a.General.Dataset.COLOUR_SCHEME]=e.desc.id,setTimeout(()=>{s.opacity="0.0",s.pointerEvents="",this.baseElem.style.pointerEvents=""},t)},t)}getOptById(e){return this.options.find(t=>t.desc.id===e)}}e.PickOne=t,function(e){class t extends v._Option{constructor(e){super(),this.desc=e,this.baseElem.classList.add(g.OPTION);const s=document.createElement("span");s.classList.add(g.OPTION_LABEL),s.textContent=e.displayName,this.baseElem.appendChild(s);const n=document.createElement("span");n.classList.add(g.OPTION_PREVIEW),n.dataset[o.a.General.Dataset.COLOUR_SCHEME]=e.id;for(let e=0;eObject.freeze(e))),e.SMOOTH_CHANGE_DURATION=2e3}(L||(L={})),Object.freeze(L);var N=s(4);const I=o.a.Screen.Impl.Setup.Class;class T extends d{_lazyLoad(){this.baseElem.classList.add(I.BASE),this.baseElem.appendChild(this.nav.prev),this.langSel=new T.LangPickOne,this.baseElem.appendChild(this.langSel.baseElem),this._createLangWeightExaggerationInput(),this.baseElem.appendChild(this.nav.next),this._loadLastUsedPreset()}_createLangWeightExaggerationInput(){const e=this.langWeightExaggeration=document.createElement("input");e.classList.add(I.LANG_WEIGHT_EXAGG),e.type="range",e.min="0",e.max=c.a.WeightExaggeration.MAX.toString(),e.step="any",e.value="1";{const e=document.createElement("datalist");e.id=o.a.Screen.Impl.Setup.Id.LANG_WEIGHT_EXAGGERATION_LIST,[{val:0,label:"0"},{val:1,label:"1"}].forEach(t=>{const s=document.createElement("option");s.value=t.val.toString(),s.label=t.label,e.appendChild(s)}),this.baseElem.appendChild(e)}e.setAttribute("list",o.a.Screen.Impl.Setup.Id.LANG_WEIGHT_EXAGGERATION_LIST),this.baseElem.appendChild(e)}_abstractOnBeforeEnter(e,t){return Object(i.a)(this,void 0,void 0,(function*(){window.setTimeout(()=>{this.nav.next.focus()},100)}))}_loadLastUsedPreset(){localStorage.getItem(n.LocalKeys.GAME_PRESET)}_parseArgsFromGui(){const e=Object.assign({},T.DEFAULT_PRESET);return e.langId=this.langSel.confirmedOpt.desc.id,e.langWeightExaggeration=parseFloat(this.langWeightExaggeration.value),e}}!function(e){e.DEFAULT_PRESET={coordSys:N.a.System.EUCLID2,gridDimensions:{height:21,width:21},averageFreeHealthPerTile:1/45,langWeightExaggeration:1,langId:"engl-low",playerDescs:[{isALocalOperator:!1,familyId:"CHASER",teamId:1,socketId:void 0,username:"chaser1",avatar:void 0,noCheckGameOver:!0,familyArgs:{}},{isALocalOperator:!1,familyId:"CHASER",teamId:1,socketId:void 0,username:"chaser2",avatar:void 0,noCheckGameOver:!0,familyArgs:{fearDistance:6,bloodThirstDistance:5,healthReserve:5,keyPressesPerSecond:1.8}}]};class t extends v{constructor(){super(),this.baseElem.classList.add(I.LANG_SEL),c.a.FrontendDescs.forEach(e=>{this.addOption(new t.Option(e))}),this.selectOpt(this.options[0])}_onHoverOpt(e){}_onSelectOpt(e){}}e.LangPickOne=t,function(e){class t extends v._Option{constructor(e){super(),this.desc=e,this.baseElem.textContent=e.displayName}}e.Option=t,Object.freeze(t),Object.freeze(t.prototype)}(t=e.LangPickOne||(e.LangPickOne={}))}(T||(T={})),Object.freeze(T),Object.freeze(T.prototype);class A extends T{_lazyLoad(){super._lazyLoad(),this.nav.next.onclick=e=>{const t=this._parseArgsFromGui();this.requestGoToScreen(d.Id.PLAY_OFFLINE,t)}}_abstractOnBeforeEnter(e,t){return super._abstractOnBeforeEnter(e,t)}_parseArgsFromGui(){const e=super._parseArgsFromGui();return e.playerDescs.splice(e.playerDescs.length,0,{isALocalOperator:!0,familyId:"HUMAN",teamId:0,socketId:void 0,username:"hello1",avatar:void 0,noCheckGameOver:!1,familyArgs:{}},{isALocalOperator:!0,familyId:"HUMAN",teamId:1,socketId:void 0,username:"hello2",avatar:void 0,noCheckGameOver:!1,familyArgs:{}}),e}}Object.freeze(A),Object.freeze(A.prototype);var C,y,R,P,G,U,k=s(3);class j extends d{constructor(){super(...arguments),C.set(this,void 0),y.set(this,void 0),R.set(this,void 0),P.set(this,void 0)}_lazyLoad(){this.baseElem.classList.add(o.a.General.Class.CENTER_CONTENTS,o.a.Screen.Impl.Play.Class.BASE);const e=j.createCenterColElem();this._gridBaseElem=e.grid,this._gridImplHost=e.implHost,this._gridImplHost.appendChild(document.createComment("grid impl host")),this.baseElem.appendChild(e.top),e.pauseOl.addEventListener("click",e=>{const t=this.currentGame;t&&t.status===k.a.Status.PAUSED&&this._statusBecomePlaying()}),this._initializeControlsBar(),this._initializePlayersBar(),Object(i.c)(this,y,()=>{if(this.wantsAutoPause)if(document.hidden){if(void 0===Object(i.b)(this,P)){const e=this.currentGame;(!e||e&&e.status!==k.a.Status.OVER)&&this._statusBecomePaused()}}else"page-hide"===Object(i.b)(this,P)&&this._statusBecomePlaying()}),Object(i.c)(this,R,this._gridKeyDownCallback.bind(this))}_abstractOnBeforeEnter(e,t){return Object(i.a)(this,void 0,void 0,(function*(){document.addEventListener("visibilitychange",Object(i.b)(this,y)),this.pauseButton.disabled=!0,this._statusBecomePaused(),Object(i.c)(this,C,yield this._createNewGame(t)),this._gridBaseElem.addEventListener("keydown",Object(i.b)(this,R),{capture:!0}),yield this.currentGame.reset();const e=this.currentGame.htmlElements;this._gridImplHost.appendChild(e.gridImpl),this.playersBar.appendChild(e.playersBar),this.pauseButton.onclick=this._statusBecomePlaying.bind(this),this.pauseButton.disabled=!1,this.wantsAutoPause&&setTimeout(()=>{document.hidden||this._statusBecomePlaying()},500)}))}_abstractOnBeforeLeave(e){if(this.askConfirmBeforeLeave&&!window.confirm("Are you sure you would like to leave?"))return!1;document.removeEventListener("visibilitychange",Object(i.b)(this,y));const t=this.currentGame;t.statusBecomePaused();for(const e of Object.values(t.htmlElements))e.textContent="",e.remove();return this._gridBaseElem.removeEventListener("keydown",Object(i.b)(this,R)),Object(i.c)(this,C,void 0),!0}get currentGame(){return Object(i.b)(this,C)}_gridKeyDownCallback(e){e.stopPropagation();const t=this.currentGame;if(e.ctrlKey&&" "===e.key&&!e.repeat){const e=t.operators;t.setCurrentOperator((1+e.indexOf(t.currentOperator))%e.length)}else t.currentOperator.processKeyboardInput(e);return" "!==e.key||(e.preventDefault(),!1)}_statusBecomePlaying(){var e;const t=o.a.Grid.Dataset.GAME_STATE;null===(e=this.currentGame)||void 0===e||e.statusBecomePlaying(),this.pauseButton.textContent="Pause",Object(i.c)(this,P,void 0),this._gridBaseElem.dataset[t.KEY]=t.VALUES.PLAYING,this.pauseButton.onclick=this._statusBecomePaused.bind(this),this.resetButton.disabled=!0,window.requestAnimationFrame(e=>{this._gridBaseElem.focus()})}_statusBecomePaused(){var e;const t=o.a.Grid.Dataset.GAME_STATE;null===(e=this.currentGame)||void 0===e||e.statusBecomePaused(),this.pauseButton.textContent="Unpause",Object(i.c)(this,P,document.hidden?"page-hide":"other"),this._gridBaseElem.dataset[t.KEY]=t.VALUES.PAUSED,this.pauseButton.onclick=this._statusBecomePlaying.bind(this),this.resetButton.disabled=!1}_onGameBecomeOver(){const e=o.a.Grid.Dataset.GAME_STATE;this.pauseButton.disabled=!0,this.resetButton.disabled=!1,this._gridBaseElem.dataset[e.KEY]=e.VALUES.OVER}_resetGame(){this.currentGame.reset(),this.pauseButton.disabled=!1,this.wantsAutoPause&&this._statusBecomePlaying()}_initializeControlsBar(){const e=document.createElement("div");function t(t,s){return(s=null!=s?s:document.createElement("button")).textContent=t,s.classList.add(o.a.General.Class.INPUT_GROUP_ITEM),s.addEventListener("pointerenter",e=>{window.requestAnimationFrame(e=>{s.focus()})}),e.appendChild(s),s}e.classList.add(o.a.General.Class.CENTER_CONTENTS,o.a.General.Class.INPUT_GROUP,o.a.Screen.Impl.Play.Class.CONTROLS_BAR),e.setAttribute("role","menu"),e.addEventListener("pointerleave",e=>{window.requestAnimationFrame(e=>{this._gridBaseElem.focus()})});t("",this.nav.prev);this.pauseButton=t("");(this.resetButton=t("Reset")).onclick=this._resetGame.bind(this);this.baseElem.appendChild(e)}_initializePlayersBar(){const e=this.playersBar=document.createElement("div");e.classList.add(o.a.Screen.Impl.Play.Class.PLAYERS_BAR),this.baseElem.appendChild(e)}}C=new WeakMap,y=new WeakMap,R=new WeakMap,P=new WeakMap,(j||(j={})).createCenterColElem=function(){const e=o.a.Grid.Class,t=o.a.General.Class,s=document.createElement("div");s.classList.add(o.a.Screen.Impl.Play.Class.GRID_WRAPPER);const n=document.createElement("div");n.tabIndex=0,n.setAttribute("role","textbox"),n.setAttribute("aria-label","Game Grid"),n.classList.add(t.STACK_CONTENTS,t.TEXT_SELECT_DISABLED,e.GRID);const a=document.createElement("div");a.setAttribute("role","presentation"),a.classList.add(e.SCROLL_OUTER);{const s=document.createElement("div");s.classList.add(t.FILL_PARENT,t.CENTER_CONTENTS,e.KBD_DC);{const t=document.createElement("div");t.classList.add(e.KBD_DC_ICON),t.textContent="(click here to continue typing)",s.appendChild(t)}a.appendChild(s)}const r=document.createElement("div");r.classList.add(t.FILL_PARENT,t.CENTER_CONTENTS,e.PAUSE_OL);{const t=document.createElement("div");t.classList.add(e.PAUSE_OL_ICON),t.textContent="(Click to Unpause)",r.appendChild(t)}return a.appendChild(r),n.appendChild(a),s.appendChild(n),Object.freeze({top:s,grid:n,intersectionRoot:a,implHost:a,pauseOl:r})},Object.freeze(j),Object.freeze(j.prototype);class w extends j{constructor(){super(...arguments),this.wantsAutoPause=!0,this.askConfirmBeforeLeave=!0}get initialScreen(){return d.Id.SETUP_OFFLINE}_lazyLoad(){super._lazyLoad(),this.nav.prev.innerHTML="Return To Setup"}_createNewGame(e){return Object(i.a)(this,void 0,void 0,(function*(){return new((yield Promise.all([s.e(0),s.e(1)]).then(s.bind(null,27))).OfflineGame)(this._onGameBecomeOver.bind(this),e)}))}}Object.freeze(w),Object.freeze(w.prototype);class B{}!function(e){let t;e.PROTOCOL="http://",e.DEFAULT_PORT=8080,function(e){e.GROUP_LOBBY_PREFIX="/group-",e.GROUP_JOINER="/joiner"}(t=e.Nsps||(e.Nsps={}))}(B||(B={})),Object.freeze(B),Object.freeze(B.prototype);class H{}!function(e){let t,s,n,a;!function(e){let t;!function(e){e.EVENT_NAME="group-lobby-user-info-change"}(t=e.UserInfoChange||(e.UserInfoChange={}))}(t=e.Socket||(e.Socket={})),function(e){e.REGEXP=/(?:[a-zA-Z0-9:-]+)/,e.MaxLength=30}(s=e.Name||(e.Name={})),function(e){e.REGEXP=/(?:[a-zA-Z0-9:-]+)/,e.MaxLength=30}(n=e.Passphrase||(e.Passphrase={})),e.JoinerReconnectionAttempts=2,e.DEFAULT_TTL=20,function(e){e.EVENT_NAME="group-exist";class t{constructor(e,t){this.groupName=e,this.passphrase=t}}let s;e.RequestCreate=t,function(e){let t;!function(e){e.OKAY="okay",e.NOPE="nope"}(t=e.Response||(e.Response={}))}(t=e.RequestCreate||(e.RequestCreate={})),function(e){e.IN_LOBBY="in-lobby",e.IN_GAME="in-game",e.DELETE="delete"}(s=e.Status||(e.Status={}))}(a=e.Exist||(e.Exist={}))}(H||(H={})),Object.freeze(H),Object.freeze(H.prototype);class D extends d{constructor(){super(...arguments),G.set(this,void 0),U.set(this,!1)}get clientIsGroupHost(){return Object(i.b)(this,U)}_lazyLoad(){this.baseElem.classList.add(o.a.General.Class.CENTER_CONTENTS,o.a.Screen.Impl.GroupJoiner.Class.BASE);const e=this._initializeFormContents(),t=this._initializeHostUrlHandlers();this._initializeGroupNameHandlers(t),this._initializePassphraseHandlers(),this.nav.next.onclick=e=>{s()};const s=()=>{this.requestGoToScreen(d.Id.GROUP_LOBBY,{})};this._setFormState(M.CHOOSING_HOST),this.baseElem.appendChild(e)}_abstractOnBeforeEnter(e,t){return Object(i.a)(this,void 0,void 0,(function*(){window.setTimeout(()=>{this.socket&&this.socket.nsp.startsWith(B.Nsps.GROUP_LOBBY_PREFIX)?this.in.groupName.focus():this.in.hostUrl.focus()},100)}))}get state(){return Object(i.b)(this,G)}_setFormState(e){if(this.state!==e){if(e===M.IN_GROUP){if(this.state!==M.CHOOSING_GROUP)throw"never";this.in.passphrase.disabled=!0,this.nav.next.disabled=!1,this.nav.next.focus()}else this.nav.next.disabled=!0,e===M.CHOOSING_HOST?(this.in.groupName.disabled=!0,this.in.groupName.value="",this.groupNameDataList.innerText="",this.in.passphrase.disabled=!0,this.in.passphrase.value="",this.in.hostUrl.focus()):e===M.CHOOSING_GROUP&&(this.in.groupName.disabled=!1,this.in.passphrase.disabled=!1,this.in.groupName.focus());Object(i.c)(this,G,e)}}_initializeHostUrlHandlers(){const e=this.top,t=this.in.hostUrl,s=()=>Object(i.a)(this,void 0,void 0,(function*(){var s;if(!t.value||!t.validity.valid)return;t.value.startsWith(B.PROTOCOL)||(t.value=new window.URL(B.PROTOCOL+t.value).origin);const n=new window.URL(t.value+B.Nsps.GROUP_JOINER);if(this.socket&&this.socket.nsp===B.Nsps.GROUP_JOINER&&this.socket.io.opts.hostname===n.hostname)return this.socket.connected?(this._setFormState(M.CHOOSING_GROUP),void this.in.groupName.focus()):void 0;null===(s=this.socket)||void 0===s||s.close(),this.socket=(yield e.socketIo)(n.toString(),{reconnectionAttempts:H.JoinerReconnectionAttempts}),this.socket.on("connect",()=>{this._setFormState(M.CHOOSING_GROUP),this.socket.on(H.Exist.EVENT_NAME,this._onNotifyGroupExist.bind(this))}),this.socket.on("connect_error",e=>{this.socket=void 0,this.top.toast("Unable to connected to the specified server.")}),this.socket.on("disconnect",s=>{"io server disconnect"===s&&(this.socket=void 0,this._setFormState(M.CHOOSING_HOST),t.value="",e.toast("The server disconnected you from the group joiner."))})}));return t.oninput=e=>this._setFormState(M.CHOOSING_HOST),t.onkeydown=e=>{"Enter"===e.key&&s()},t.onpaste=e=>{window.setTimeout(()=>s(),0)},t.onchange=()=>{s()},s}_onNotifyGroupExist(e){if(e===H.Exist.RequestCreate.Response.NOPE)return void this.top.toast(`The server rejected your request to create a new group "${this.in.groupName.value}".`);if(e===H.Exist.RequestCreate.Response.OKAY)return this.top.toast(`server accepted request to create new group "${this.in.groupName.value}".`),this.top.toast("connecting to new group..."),void this._attemptToJoinExistingGroup();const t=this.groupNameDataList,s=Array.from(t.children);Object.entries(e).forEach(([e,n])=>{const a=s.find(t=>t.value===e)||(e=>{const n=document.createElement("option");n.value=e;for(const e of s)if(n.value.localeCompare(e.value)<0){t.insertBefore(n,e);break}return n.parentElement||t.appendChild(n),n})(e);switch(n){case H.Exist.Status.IN_LOBBY:a.textContent="In Lobby";break;case H.Exist.Status.IN_GAME:a.textContent="In Game";break;case H.Exist.Status.DELETE:a.remove()}})}_initializeGroupNameHandlers(e){const t=this.in.groupName,s=()=>{t.value&&t.validity.valid&&(this.state===M.IN_GROUP?this.nav.next.focus():this.in.passphrase.focus())};this.in.groupName.oninput=t=>Object(i.a)(this,void 0,void 0,(function*(){this.state===M.IN_GROUP&&(yield e()),this.in.passphrase.value="",Object(i.c)(this,U,!1)})),t.onkeydown=e=>{"Enter"===e.key&&s()},t.onchange=e=>{s()}}_initializePassphraseHandlers(){const e=()=>Object(i.a)(this,void 0,void 0,(function*(){if(!this.in.passphrase.validity.valid)return;if(this.socket.nsp===B.Nsps.GROUP_LOBBY_PREFIX+this.in.groupName.value)return this.socket.connected?(this._setFormState(M.IN_GROUP),void this.nav.next.focus()):void 0;Array.from(this.groupNameDataList.children).some(e=>e.value===this.in.groupName.value)?(Object(i.c)(this,U,!1),yield this._attemptToJoinExistingGroup()):(Object(i.c)(this,U,!0),this.socket.emit(H.Exist.EVENT_NAME,new H.Exist.RequestCreate(this.in.groupName.value,this.in.passphrase.value)))}));this.in.passphrase.onkeydown=t=>{"Enter"===t.key&&e()}}_attemptToJoinExistingGroup(){var e;return Object(i.a)(this,void 0,void 0,(function*(){const t=(()=>{const e=new window.URL(this.in.hostUrl.value);return e.pathname=B.Nsps.GROUP_LOBBY_PREFIX+this.in.groupName.value,e.toString()})();null===(e=this.socket)||void 0===e||e.close();const s=this.top,a=n.getLastUserInfo();this.socket=(yield s.socketIo)(t,{query:{passphrase:this.in.passphrase.value,userInfo:a}}),this.socket.on("connect",()=>{this._setFormState(M.IN_GROUP)}),this.socket.on("connect_error",e=>{this.socket=void 0,s.toast("Unable to connect to the specified group.")}),this.socket.on("disconnect",e=>{"io server disconnect"===e&&(this.socket=void 0,s.toast("The server disconnected you from your group."),this.requestGoToScreen(d.Id.GROUP_JOINER,{},d.NavDir.BACKWARD))})}))}get socket(){return this.top.socket}set socket(e){this.top.socket=e}_initializeFormContents(){this.in={};const e=o.a.Screen.Impl.GroupJoiner.Class,t=document.createElement("div");function s(e,s){const n=document.createElement("input");n.classList.add(o.a.General.Class.INPUT_GROUP_ITEM,s),n.type="text",n.autocomplete="off",n.spellcheck=!1;const a=document.createElement("label");return a.textContent=e,a.appendChild(n),t.appendChild(a),n}t.classList.add(o.a.General.Class.INPUT_GROUP,e.CONTENT_WRAPPER),this.nav.prev.classList.add(o.a.General.Class.INPUT_GROUP_ITEM),t.appendChild(this.nav.prev);{const t=this.in.hostUrl=Object.assign(s("Host URL",e.HOST_URL),{type:"url",maxLength:128,autocomplete:"on",required:!0}),n=D.SUGGEST_HOST(this.top.webpageHostType);if(n){const e=document.createElement("option");e.value=n.value,e.textContent=n.description,document.getElementById(o.a.GLOBAL_IDS.PUBLIC_GAME_HOST_URLS).insertAdjacentElement("afterbegin",e)}t.setAttribute("list",o.a.GLOBAL_IDS.PUBLIC_GAME_HOST_URLS)}{const t=this.in.groupName=Object.assign(s("Group Name",e.GROUP_NAME),{pattern:H.Name.REGEXP.source,minLength:1,maxLength:H.Name.MaxLength,autocomplete:"on",required:!0}),n=this.groupNameDataList=document.createElement("datalist");n.id=o.a.GLOBAL_IDS.CURRENT_HOST_GROUPS,this.baseElem.appendChild(n),t.setAttribute("list",n.id)}{const t=this.in.passphrase=s("Group Passphrase",e.PASSPHRASE);t.pattern=H.Passphrase.REGEXP.source,t.maxLength=H.Passphrase.MaxLength}return this.nav.next.classList.add(o.a.General.Class.INPUT_GROUP_ITEM),t.appendChild(this.nav.next),Object.freeze(this.in),t}}G=new WeakMap,U=new WeakMap,function(e){let t;!function(e){e.CHOOSING_HOST="choosing-host",e.CHOOSING_GROUP="choosing-group",e.IN_GROUP="in-group"}(t=e.State||(e.State={})),e.SUGGEST_HOST=function(e){switch(e){case"github":return;case"filesystem":return{value:"localhost:"+B.DEFAULT_PORT,description:"dev shortcut :)"};case"sk-server":return{value:window.location.origin,description:"this page's server"};default:return}}}(D||(D={}));const M=D.State;Object.freeze(D),Object.freeze(D.prototype);class x extends T{get initialScreen(){return d.Id.GROUP_JOINER}_lazyLoad(){super._lazyLoad(),this.nav.next.textContent="Start Game",this.nav.next.onclick=e=>{const t=this._parseArgsFromGui();this.top.clientIsGroupHost&&this.top.socket.emit(k.a.CtorArgs.Event.NAME,t)}}_abstractOnBeforeEnter(e,t){return super._abstractOnBeforeEnter(e,t)}}Object.freeze(x),Object.freeze(x.prototype);const z=o.a.Screen.Impl.GroupLobby.Class;class F extends d{get initialScreen(){return d.Id.GROUP_JOINER}_lazyLoad(){this._players={},this._createInputs(),this.nav.prev.textContent="Return To Joiner",this.teamsElem=document.createElement("div"),this.teamsElem.classList.add(z.SEC_TEAMS),this.baseElem.appendChild(this.teamsElem),this.teamElems={};{const e=this.nav.next;e.textContent="Setup Game",e.onclick=()=>{this.requestGoToScreen(d.Id.SETUP_ONLINE,{})},this.baseElem.appendChild(e)}}_createInputs(){var e;const t=document.createElement("div");t.classList.add(o.a.General.Class.INPUT_GROUP,z.SEC_CLIENT_INFO);const s=Object.assign(document.createElement("input"),{type:"text",minLength:1,maxLength:c.b.Username.MAX_LENGTH,pattern:c.b.Username.REGEXP.source,value:null!==(e=localStorage.getItem(n.LocalKeys.USERNAME))&&void 0!==e?e:"",onchange:this._submitInputs.bind(this)});s.classList.add(o.a.General.Class.INPUT_GROUP_ITEM),t.appendChild(s);const a=Object.assign(document.createElement("input"),{type:"number",min:"0",max:"0",step:"1",value:"0",onchange:this._submitInputs.bind(this)});a.classList.add(o.a.General.Class.INPUT_GROUP_ITEM),t.appendChild(a);const r=document.createElement("select");this.in=Object.freeze({username:s,teamId:a,avatar:r}),this.baseElem.appendChild(t)}_submitInputs(){this.in.username.validity.valid&&this.in.teamId.validity.valid&&(localStorage.setItem(n.LocalKeys.USERNAME,this.in.username.value),localStorage.setItem(n.LocalKeys.AVATAR,this.in.avatar.value),this.top.socket.emit(H.Socket.UserInfoChange.EVENT_NAME,{username:this.in.username.value,teamId:parseInt(this.in.teamId.value),avatar:c.b.Avatar.LOREM_IPSUM}))}_abstractOnBeforeEnter(e,t){return Object(i.a)(this,void 0,void 0,(function*(){"forward"===e&&(this.nav.next.disabled=!this.top.clientIsGroupHost,this.teamsElem.textContent="",this._submitInputs(),this.top.socket.on(H.Socket.UserInfoChange.EVENT_NAME,this._onUserInfoChange.bind(this)),this.top.socket.once(k.a.CtorArgs.Event.NAME,e=>Object(i.a)(this,void 0,void 0,(function*(){this.requestGoToScreen(d.Id.PLAY_ONLINE,e)}))))}))}_abstractOnBeforeLeave(e){return e===d.NavDir.BACKWARD&&this.top.socket.removeListener(k.a.CtorArgs.Event.NAME),!0}_onUserInfoChange(e){Object.entries(e).forEach(([e,t])=>{const s=this._players[e];if(!s||1!==this.teamElems[s.teamId].childElementCount||void 0!==t&&t.teamId===s.teamId||(this.teamElems[s.teamId].remove(),delete this.teamElems[s.teamId]),t&&void 0===this.teamElems[t.teamId]){const e=this.teamElems[t.teamId]=document.createElement("div");e.classList.add(z.TEAM),e.onclick=e=>{this.in.teamId.value=t.teamId.toString()},this.teamsElem.appendChild(e)}if(void 0===t)s.base.remove(),delete this._players[e];else if(void 0===s){const s=this._players[e]=new F.UserInfo(t);this.teamElems[t.teamId].appendChild(s.base)}else s.update(t)}),this.in.teamId.max=Object.keys(this._players).length.toString()}}var W,V,Y,K,q,J,X;W=F||(F={}),V=new WeakMap,Y=new WeakMap,K=new WeakMap,W.UserInfo=class{constructor(e){V.set(this,void 0),Y.set(this,void 0),K.set(this,void 0),this.base=document.createElement("div"),this.base.classList.add(z.PLAYER);const t=()=>{const e=document.createElement("div");return this.base.appendChild(e),e};this.el=Object.freeze({username:t(),teamId:t(),avatar:t()}),this.el.username.classList.add(z.PLAYER_NAME),this.username=e.username,this.teamId=e.teamId}update(e){this.username=e.username,this.teamId=e.teamId,this.avatar=e.avatar}get username(){return Object(i.b)(this,V)}set username(e){this.el.username.textContent=e,Object(i.c)(this,V,e)}get teamId(){return Object(i.b)(this,Y)}set teamId(e){this.el.teamId.textContent=e.toString(),Object(i.c)(this,Y,e)}get avatar(){return Object(i.b)(this,K)}set avatar(e){Object(i.c)(this,K,e),this.el.avatar}},Object.freeze(F),Object.freeze(F.prototype);class $ extends j{constructor(){super(...arguments),this.askConfirmBeforeLeave=!1,this.wantsAutoPause=!1}get initialScreen(){return d.Id.GROUP_JOINER}getNavPrevArgs(){return[d.Id.GROUP_LOBBY,{},d.NavDir.BACKWARD]}_lazyLoad(){super._lazyLoad(),this.nav.prev.innerHTML="Return To Lobby"}_abstractOnBeforeEnter(e,t){const s=Object.create(null,{_abstractOnBeforeEnter:{get:()=>super._abstractOnBeforeEnter}});return Object(i.a)(this,void 0,void 0,(function*(){return this.nav.prev.onclick=e=>{this.top.clientIsGroupHost&&this.top.socket.emit(k.a.CtorArgs.Event.NAME,k.a.CtorArgs.Event.RETURN_TO_LOBBY_INDICATOR)},s._abstractOnBeforeEnter.call(this,e,t)}))}_createNewGame(e){return Object(i.a)(this,void 0,void 0,(function*(){const t=new((yield Promise.all([s.e(0),s.e(2)]).then(s.bind(null,26))).OnlineGame)(this._onGameBecomeOver.bind(this),this.top.socket,e);return this.top.socket.on(k.a.CtorArgs.EVENT_NAME_SERVER_APPROVE_UNPAUSE,()=>{this._statusBecomePlaying()}),this.top.socket.on(k.a.CtorArgs.EVENT_NAME_SERVER_APPROVE_PAUSE,()=>{this._statusBecomePaused}),Promise.resolve(t)}))}}Object.freeze($),Object.freeze($.prototype);class Z{constructor(e,t){q.set(this,void 0),t.setAttribute("role","presentation");const s=d.Id,n=e,a=t,r=this.goToScreen.bind(this);this.dict=Object.freeze({[s.HOME]:new u(s.HOME,n,a,r),[s.HOW_TO_PLAY]:new h(s.HOW_TO_PLAY,n,a,r),[s.HOW_TO_HOST]:new p(s.HOW_TO_HOST,n,a,r),[s.COLOUR_CTRL]:new S(s.COLOUR_CTRL,n,a,r),[s.SETUP_OFFLINE]:new A(s.SETUP_OFFLINE,n,a,r),[s.PLAY_OFFLINE]:new w(s.PLAY_OFFLINE,n,a,r),[s.GROUP_JOINER]:new D(s.GROUP_JOINER,n,a,r),[s.SETUP_ONLINE]:new x(s.SETUP_ONLINE,n,a,r),[s.GROUP_LOBBY]:new F(s.GROUP_LOBBY,n,a,r),[s.PLAY_ONLINE]:new $(s.PLAY_ONLINE,n,a,r)});const i=window.location.hash.slice(1),o=this.dict[i];o&&o.initialScreen?this.goToScreen(o.initialScreen,{}):this.goToScreen(d.Id.HOME,{}),window.addEventListener("popstate",e=>{this.goToScreen(...this.currentScreen.getNavPrevArgs())})}goToScreen(e,t,s=d.NavDir.FORWARD){const n=this.dict[e];if(this.currentScreen===n)throw"never";return void 0!==this.currentScreen&&!this.currentScreen._leave(s)||(n._enter(s,t),Object(i.c)(this,q,n),!0)}get currentScreen(){return Object(i.b)(this,q)}}q=new WeakMap,Object.freeze(Z),Object.freeze(Z.prototype);class Q{constructor(){J.set(this,void 0),X.set(this,void 0),this.webpageHostType=window.location.origin.match(/github\.io/)?Q.WebpageHostType.GITHUB:window.location.protocol.startsWith("file")?Q.WebpageHostType.FILESYSTEM:Q.WebpageHostType.SNAKEY_SERVER,this.storage=n;const e=document.getElementById(o.a.Screen.Id.ALL_SCREENS);if(!e)throw Error();this.prependComment(e,"ALL SCREENS CONTAINER"),Object(i.c)(this,J,new Z(this,e)),console.log("%c🩺 welcome! 🐍","font:700 2.3em /1.5 monospace; margin:0.4em; border:0.3em solid black;padding:0.4em; color:white; background-color:#3f5e77; border-radius:0.7em; ")}get clientIsGroupHost(){return Object(i.b)(this,J).dict.groupJoiner.clientIsGroupHost}toast(e){console.info(e)}prependComment(e,t){e.parentNode.insertBefore(document.createComment(" "+t+" "),e)}get socketIo(){return(()=>{let e;return e||new Promise((e,t)=>{const s=document.createElement("script");s.onload=()=>{e(io)},s.src=document.getElementById("socket.io-preload").href,document.body.appendChild(s)})})()}get game(){var e;return null!==(e=Object(i.b)(this,J).dict.playOffline.currentGame)&&void 0!==e?e:Object(i.b)(this,J).dict.playOnline.currentGame}get currentScreen(){return Object(i.b)(this,J).currentScreen}}J=new WeakMap,X=new WeakMap,function(e){let t;!function(e){e.GITHUB="github",e.FILESYSTEM="filesystem",e.SNAKEY_SERVER="sk-server"}(t=e.WebpageHostType||(e.WebpageHostType={}))}(Q||(Q={})),Object.freeze(Q),Object.freeze(Q.prototype),s(5),Object.freeze(Object.prototype);const ee=new Q;function te(){return ee.currentScreen}function se(){return ee.game}ee.webpageHostType===Q.WebpageHostType.GITHUB&&"serviceWorker"in navigator&&window.addEventListener("load",(function(){navigator.serviceWorker.register("/ServiceWorker.js").then(e=>{console.log("ServiceWorker registration successful with scope: ",e.scope)},e=>{console.log("ServiceWorker registration failed: ",e)})}))}]); +var snakey3;snakey3=(()=>{"use strict";var e,t,s,n,r={572:(e,t,s)=>{s.r(t)},406:(e,t,s)=>{var n;s.d(t,{R:()=>n}),function(e){let t;function s(e,t,s){t.forEach((t=>{if(!Object.getOwnPropertyNames(e).includes(t)){const s=`\`${e.__proto__.constructor.name}\` instance has no property named "${t}"`;throw new TypeError(s)}Object.defineProperty(e,t,s)}))}e.applyMixins=function(e,t){t.forEach((t=>{Object.getOwnPropertyNames(t.prototype).forEach((s=>{Object.defineProperty(e.prototype,s,Object.getOwnPropertyDescriptor(t.prototype,s))}))}))},e.deepFreeze=function e(t){return function(t){for(const s of Object.getOwnPropertyNames(t)){const n=t[s];"object"==typeof n&&e(n)}Object.freeze(t)}(t),t},function(e){let t;!function(e){e.access=function(e,t,s){s.enumerable=!1},e.cyclic=function(e,t,s){s.enumerable=!1}}(t=e.NonEnumerable||(e.NonEnumerable={}))}(t=e.Decor||(e.Decor={})),e.protoNoEnum=function(e,t){t.forEach((t=>{if(!Object.getOwnPropertyNames(e.prototype).includes(t)){const s=`\`${e.name}\` prototype has no property named "${t}"`;throw new TypeError(s)}Object.defineProperty(e.prototype,t,{enumerable:!1})}))},e.instNoEnum=function(e,t){s(e,t,{enumerable:!1})},e.propNoWrite=function(e,t){s(e,t,{writable:!1})},e.prependComment=function(e,t){e.parentNode.insertBefore(document.createComment(" "+t+" "),e)},e.camelCaseTransforms=function(e){const t=e.replace(/[A-Z]/g,(e=>" "+e.toLowerCase()));return Object.freeze({spaceyLowercase:t,spaceyUppercase:t.toUpperCase(),spaceyCapitalized:t.split(" ").map((e=>e.charAt(0).toUpperCase()+e.substring(1))).join(" ")})},e.mkEl=function(e,t,s){const n=document.createElement(e);try{Object.seal(n)}catch(e){}return n.classList.add(...t),"button"===e?n.type="button":"a"===e&&(n.rel="noopener"),void 0!==s&&Object.assign(n,s),n}}(n||(n={})),Object.freeze(n)},80:(e,t,s)=>{s.d(t,{Y:()=>n});var n,r=s(406);!function(e){let t,s,n,r,o,i;e.GLOBAL_IDS={PUBLIC_GAME_HOST_URLS:"public-game-hosts-list",CURRENT_HOST_GROUPS:"current-host-groups-list"},function(e){e.Class={TEXT_SELECT_DISABLED:"text-select-disabled",FILL_PARENT:"fill-parent",CENTER_CONTENTS:"center-contents",STACK_CONTENTS:"stack-contents",INPUT_GROUP:"sk-input-group",INPUT_GROUP_ITEM:"sk-input-group-item"},e.Dataset={COLOUR_SCHEME:"skColourScheme"}}(t=e.General||(e.General={})),function(e){e.Class={BASE:"tile",POINTER_HB:"tile__pointer-hitbox",LANG_CHAR_WRAP:"tile__char",LANG_SEQ:"tile__seq"},e.Dataset={HEALTH:"health"}}(s=e.Tile||(e.Tile={})),function(e){e.Class={GRID:"game-grid",SCROLL_OUTER:"game-grid-scroll-outer",SCROLL_INNER:"game-grid-scroll-inner",IMPL_BODY:"game-grid-impl-body",KBD_DC:"game-grid-kbd-dc",KBD_DC_ICON:"game-grid-kbd-dc__icon",PAUSE_OL:"game-grid-pause-overlay",PAUSE_OL_ICON:"game-grid-pause-overlay__icon",PLAYER_IOB_ROOT:"grid-player-intersection-root"},e.Dataset={IMPL_COORD_SYS:"coordSys",GAME_STATE:{KEY:"gameState",VALUES:{PLAYING:"playing",PAUSED:"paused",OVER:"over"}}}}(n=e.Grid||(e.Grid={})),function(e){e.Class={BASE:"player",FACE:"player__face",DOWNED_OVERLAY:"player__downed-overlay",SHORT_SPOTLIGHT:"player__spotlight-short",LONG_SPOTLIGHT:"player__spotlight-long"},e.Dataset={DOWNED:{KEY:"downed",VALUES:{TEAM:"team",SELF:"self",NO:"no"}},FACE_SWATCH:"face"}}(r=e.Player||(e.Player={})),function(e){let t;e.Id={ALL_SCREENS:"all-screens-container",SCREEN_TINT:"screen-tint"},e.Class={BASE:"sk-screen",NAV_NEXT:"screen--next-button",NAV_PREV:"screen--prev-button"},e.Dataset={CURRENT:"current"},function(e){let t,s,n,r,o,i;!function(e){e.Class={BASE:"screen-home",NAV:"screen-home--nav",NAV_PLAY_OFFLINE:"screen-home--nav--play-offline",NAV_PLAY_ONLINE:"screen-home--nav--play-online",NAV_HOW_TO_PLAY:"screen-home--nav--how-to-play",NAV_HOW_TO_HOST:"screen-home--nav--how-to-host",NAV_COLOURS:"screen-home--nav--colour-scheme",NAV_VIEW_REPO:"screen-home--nav--goto-repo",NAV_RPT_ISSUE:"screen-home--nav--report-issue"}}(t=e.Home||(e.Home={})),function(e){e.Class={BASE:"screen-colour",OPTION:"screen-colour--opt",OPTION_LABEL:"screen-colour--opt-label",OPTION_LABEL_TITLE:"screen-colour--opt-label--title",OPTION_LABEL_AUTHOR:"screen-colour--opt-label--author"}}(s=e.ColourCtrl||(e.ColourCtrl={})),function(e){e.Class={BASE:"screen-play",GRID_WRAPPER:"screen-play--grid-wrapper",CONTROLS_BAR:"screen-play--controls-bar",PLAYERS_BAR:"screen-play--players-bar"}}(n=e.Play||(e.Play={})),function(e){e.Class={BASE:"screen-setup",LANG_SEL:"screen-setup--lang-sel",LANG_WEIGHT_EXAGG:"screen-setup--lang-weight-exagg"},e.Id={LANG_WEIGHT_EXAGGERATION_LIST:"screen-setup--lang-weight-exaggeration-list"}}(r=e.Setup||(e.Setup={})),function(e){e.Class={BASE:"screen-joiner",CONTENT_WRAPPER:"screen-joiner--content-wrapper",HOST_URL:"screen-joiner--host-url",GROUP_NAME:"screen-joiner--group-name",PASSPHRASE:"screen-joiner--passphrase"}}(o=e.GroupJoiner||(e.GroupJoiner={})),function(e){e.Class={BASE:"screen-lobby",SEC_CLIENT_INFO:"screen-lobby--client-info-section",SEC_TEAMS:"screen-lobby--teams-section",TEAM:"screen-lobby--team",PLAYER:"screen-lobby--player",PLAYER_NAME:"screen-lobby--player__name"}}(i=e.GroupLobby||(e.GroupLobby={}))}(t=e.Impl||(e.Impl={}))}(o=e.Screen||(e.Screen={})),function(e){e.Class={BASE:"sk-pick-one",OPT_BASE:"sk-pick-one--opt"}}(i=e.SkPickOne||(e.SkPickOne={}))}(n||(n={})),Object.freeze(n.Player.Dataset.DOWNED),r.R.deepFreeze(n)},502:(e,t,s)=>{s.d(t,{b4:()=>n,ZA:()=>r,m4:()=>o,JD:()=>i});class n{}!function(e){let t;e.PROTOCOL="http://",e.DEFAULT_PORT=8080,function(e){e.GROUP_JOINER="/joiner.",e.GROUP_LOBBY_PREFIX="/group.",e.GROUP_GAME_PREFIX="/group-game."}(t=e.Nsps||(e.Nsps={}))}(n||(n={})),Object.freeze(n),Object.freeze(n.prototype);class r{}var o,i;!function(e){let t,s,n,r;!function(e){let t;!function(e){e.EVENT_NAME="group-lobby-user-info-change"}(t=e.UserInfoChange||(e.UserInfoChange={}))}(t=e.Socket||(e.Socket={})),function(e){e.REGEXP=/(?:[a-zA-Z0-9:-]+)/,e.MaxLength=30}(s=e.Name||(e.Name={})),function(e){e.REGEXP=/(?:[a-zA-Z0-9:-]*)/,e.MaxLength=30}(n=e.Passphrase||(e.Passphrase={})),e.GameServerReconnectionAttempts=2,e.DEFAULT_TTL=20,function(e){e.EVENT_NAME="group-exist";class t{constructor(e,t){this.groupName=e,this.passphrase=t}}let s;e.RequestCreate=t,function(e){let t;!function(e){e.OKAY="okay",e.NOPE="nope"}(t=e.Response||(e.Response={}))}(t=e.RequestCreate||(e.RequestCreate={})),function(e){e.IN_LOBBY="in-lobby",e.IN_GAME="in-game",e.DELETE="delete"}(s=e.Status||(e.Status={}))}(r=e.Exist||(e.Exist={}))}(r||(r={})),Object.freeze(r),Object.freeze(r.prototype),function(e){e.CREATE_GAME="group-game-create"}(o||(o={})),function(e){e.CREATE_GAME="game-create",e.RESET="game-reset",e.UNPAUSE="game-unpause",e.PAUSE="game-pause",e.RETURN_TO_LOBBY="game-return-to-lobby"}(i||(i={}))},951:(e,t,s)=>{s.d(t,{Bl:()=>n,J5:()=>r,Uo:()=>o});const n=Object.freeze({behavior:"smooth",block:"center",inline:"center"});class r{}!function(e){let t,s,n;e.Family=Object.freeze({HUMAN:"HUMAN",CHASER:"CHASER"}),e.Family,function(e){e.NULL=void 0}(t=e.Id||(e.Id={})),function(e){e.REGEXP=/[ a-zA-Z0-9:-]+/,e.MAX_LENGTH=15}(s=e.Username||(e.Username={})),function(e){e.LOREM_IPSUM="lorem-ipsum"}(n=e.Avatar||(e.Avatar={})),function(e){const t=Object.values(e).filter((e=>"string"==typeof e));e.GET_RANDOM=function(){return t[Math.random()*t.length]}}(n=e.Avatar||(e.Avatar={})),e.MoveType=Object.freeze({NORMAL:"NORMAL",BOOST:"BOOST"}),e.MoveType}(r||(r={})),Object.freeze(r),Object.freeze(r.prototype);class o{}!function(e){let t,s,n;!function(e){e.REGEXP=new RegExp("^[a-zA-Z0-9!@#$%^&*()-_=+;:'\"\\|,.<>/?]+$")}(t=e.Seq||(e.Seq={})),function(e){e.NULL=Object.freeze({char:"",seq:""})}(s=e.CharSeqPair||(e.CharSeqPair={})),function(e){e.MAX=4}(n=e.WeightExaggeration||(e.WeightExaggeration={})),e.CHAR_HIT_COUNT_SEED_CEILING=5,e._RemapTemplates=Object.freeze({IDENTITY:e=>e,TO_LOWER:e=>e.toLowerCase()}),e._RemapTemplates,e.FrontendDescs=Object.freeze([{id:"engl-low",module:"English",export:"Lowercase",numLeaves:26,remapFunc:e._RemapTemplates.TO_LOWER,displayName:"English Lowercase (qwerty)",blurb:""},{id:"engl-mix",module:"English",export:"MixedCase",numLeaves:52,remapFunc:e._RemapTemplates.IDENTITY,displayName:"English Mixed-Case (Querty)",blurb:""},{id:"japn-hir",module:"Japanese",export:"Hiragana",numLeaves:71,remapFunc:e._RemapTemplates.TO_LOWER,displayName:"Japanese Hiragana",blurb:""},{id:"japn-kat",module:"Japanese",export:"Katakana",numLeaves:70,remapFunc:e._RemapTemplates.TO_LOWER,displayName:"Japanese Katakana",blurb:""},{id:"kore-dub",module:"Korean",export:"Dubeolsik",numLeaves:9177,remapFunc:e._RemapTemplates.IDENTITY,displayName:"Korean Dubeolsik (두벌식 키보드)",blurb:"The most common keyboard layout, and South Korea's only Hangul standard since 1969. Consonants are on the left, and vowels on the right."},{id:"kore-sub",module:"Korean",export:"Sebeolsik",numLeaves:10206,remapFunc:e._RemapTemplates.IDENTITY,displayName:"Korean Sebeolsik (세벌식 최종 키보드)",blurb:"Another Hangul keyboard layout used in South Korea, and the final Sebeolsik layout designed by Dr. Kong Byung Woo, hence the name. Syllable-initial consonants are on the right, final consonants on the left, and vowels in the middle. It is more ergonomic than the dubeolsik, but not widely used."},{id:"kore-rom",module:"Korean",export:"Romanization",numLeaves:3990,remapFunc:e._RemapTemplates.TO_LOWER,displayName:"Korean Revised Romanization",blurb:"The Revised Romanization of Korean (국어의 로마자 표기법; 國語의 로마字 表記法) is the official South Korean language romanization system. It was developed by the National Academy of the Korean Language from 1995, and was released on 7 July 2000 by South Korea's Ministry of Culture and Tourism"},{id:"engl-cell-enc",module:"English",export:"OldCellphone.Encode",numLeaves:8,remapFunc:e._RemapTemplates.IDENTITY,displayName:"Old Cellphone Keyboard",blurb:""}].map((e=>Object.freeze(e)))),e.FrontendDescs,e.GET_FRONTEND_DESC_BY_ID=function(t){return e.FrontendDescs.find((e=>e.id===t))}}(o||(o={})),Object.freeze(o),Object.freeze(o.prototype)},305:(e,t,s)=>{var n;s.d(t,{u:()=>n}),function(e){let t;!function(e){e.EUCLID2="EUCLID2",e.BEEHIVE="BEEHIVE"}(t=e.System||(e.System={})),e.equals=function(e,t){return e._equals(t)}}(n||(n={})),Object.freeze(n)},504:(e,t,s)=>{var n;s.d(t,{l:()=>n}),function(e){let t,s;!function(e){e.SERVER="SERVER",e.ONLINE="ONLINE",e.OFFLINE="OFFLINE"}(t=e.Type||(e.Type={})),function(e){e.PLAYING="PLAYING",e.PAUSED="PAUSED",e.OVER="OVER"}(s=e.Status||(e.Status={})),e.K=Object.freeze({HEALTH_UPDATE_CHANCE:.1,AVERAGE_HEALTH_TO_SPAWN_ON_TILE:1,PORTION_OF_MOVES_THAT_ARE_BOOST:.4,HEALTH_COST_OF_BOOST(e,t){const s=t(this.AVERAGE_HEALTH_TO_SPAWN_ON_TILE/e);return this.AVERAGE_HEALTH_TO_SPAWN_ON_TILE/s/this.PORTION_OF_MOVES_THAT_ARE_BOOST},HEALTH_EFFECT_FOR_DOWNED_PLAYER:.6,EVENT_RECORD_WRAPPING_BUFFER_LENGTH:128,EVENT_RECORD_FORWARD_WINDOW_LENGTH:64})}(n||(n={})),Object.freeze(n)},735:(e,t,s)=>{s.r(t),s.d(t,{OmHooks:()=>l.Y,game:()=>ee,screen:()=>$,top:()=>Z});var n,r,o,i=s(655),a=s(406),l=s(80),c=s(951);!function(e){let t;function s(e,t){const s={};return Object.keys(t).forEach((t=>{Object.defineProperty(s,t,{enumerable:!0,get:()=>{const s=e.getItem(t);return null===s?void 0:JSON.parse(s)},set:s=>{e.setItem(t,JSON.stringify(s))}})})),Object.freeze(s),s}e.Local=s(localStorage,{musicVolume:1,sfxVolume:1,colourSchemeId:"",colourSchemeStyleLiteral:"",gamePresetId:"",username:"",avatar:""}),e.getLastUserInfo=function(){var t,s;return Object.freeze({username:null!==(t=e.Local.username)&&void 0!==t?t:"unnamed player",teamId:0,avatar:null!==(s=e.Local.avatar)&&void 0!==s?s:c.J5.Avatar.GET_RANDOM()})},e.Session=s(localStorage,Object.freeze({})),function(e){let t;e.DB_NAME="snakeyDB",function(e){e.STORE_NAME="userGamePresets"}(t=e.UserGamePresetStore||(e.UserGamePresetStore={})),Object.freeze(t)}(t=e.IDB||(e.IDB={})),Object.freeze(t)}(n||(n={})),Object.freeze(n);const p=l.Y.Screen.Class;class d{constructor(e,t,s,n){r.set(this,void 0),o.set(this,void 0),this.screenId=e,this.screenNames=a.R.camelCaseTransforms(e),this.top=t,(0,i.YH)(this,r,s),this.requestGoToScreen=n,this.baseElem=a.R.mkEl("div",[p.BASE]),(0,i.YH)(this,o,!1),this.nav=Object.freeze({prev:a.R.mkEl("button",[]),next:a.R.mkEl("button",[])}),a.R.propNoWrite(this,["screenId","top","baseElem","nav","requestGoToScreen"]),this.nav.prev.classList.add(p.NAV_PREV),this.nav.next.classList.add(p.NAV_NEXT),this.nav.prev.textContent="Back",this.nav.next.textContent="Next",this.nav.prev.onclick=t=>{const s=d.NavTree,n=s[this.screenId];s[n.prev].href===n.href?this.requestGoToScreen(d.NavTree[e].prev,{}):window.history.back()}}_enter(e,t){var s;return(0,i.mG)(this,void 0,void 0,(function*(){if(document.title=`${this.screenNames.spaceyCapitalized} | ${this.top.defaultDocTitle}`,e===d.NavDir.FORWARD){const e=new window.URL(window.location.href),t=e.hash=d.NavTree[this.screenId].href,n=[{screenId:this.screenId},"",e.href];(null===(s=window.history.state)||void 0===s?void 0:s.screenId)!==t&&(d.NavTree[this.screenId].prev===this.screenId?history.replaceState(...n):history.pushState(...n))}(0,i.Q_)(this,o)||(this._lazyLoad(),(0,i.Q_)(this,r).appendChild(this.baseElem),a.R.prependComment(this.baseElem,this.screenNames.spaceyUppercase+" SCREEN"),this.baseElem.setAttribute("aria-label",this.screenNames.spaceyCapitalized+" Screen"),(0,i.YH)(this,o,!0)),yield this._abstractOnBeforeEnter(e,t)}))}_leave(e){return!!this._abstractOnBeforeLeave(e)}_onAfterEnter(){this.baseElem.dataset[l.Y.Screen.Dataset.CURRENT]="",this.baseElem.setAttribute("aria-hidden","false")}_onAfterLeave(){delete this.baseElem.dataset[l.Y.Screen.Dataset.CURRENT],this.baseElem.setAttribute("aria-hidden","true")}getRecommendedFocusElem(){}_abstractOnBeforeEnter(e,t){return(0,i.mG)(this,void 0,void 0,(function*(){}))}_abstractOnBeforeLeave(e){return!0}}r=new WeakMap,o=new WeakMap,function(e){let t,s,n;!function(e){e.HOME="home",e.HOW_TO_PLAY="howToPlay",e.HOW_TO_HOST="howToHost",e.COLOUR_CTRL="colourControl",e.SETUP_OFFLINE="setupOffline",e.PLAY_OFFLINE="playOffline",e.GROUP_JOINER="groupJoiner",e.SETUP_ONLINE="setupOnline",e.GROUP_LOBBY="groupLobby",e.PLAY_ONLINE="playOnline"}(t=e.Id||(e.Id={})),Object.freeze(t),s=e.HistoryEntryId||(e.HistoryEntryId={}),e.NavTree=Object.freeze({[t.HOME]:{prev:t.HOME,href:t.HOME},[t.HOW_TO_PLAY]:{prev:t.HOME,href:t.HOW_TO_PLAY},[t.HOW_TO_HOST]:{prev:t.HOME,href:t.HOW_TO_HOST},[t.COLOUR_CTRL]:{prev:t.HOME,href:t.COLOUR_CTRL},[t.SETUP_OFFLINE]:{prev:t.HOME,href:t.SETUP_OFFLINE},[t.PLAY_OFFLINE]:{prev:t.SETUP_OFFLINE,href:t.SETUP_OFFLINE},[t.GROUP_JOINER]:{prev:t.HOME,href:t.GROUP_JOINER},[t.GROUP_LOBBY]:{prev:t.GROUP_JOINER,href:t.GROUP_JOINER},[t.SETUP_ONLINE]:{prev:t.GROUP_LOBBY,href:t.GROUP_JOINER},[t.PLAY_ONLINE]:{prev:t.GROUP_LOBBY,href:t.GROUP_JOINER}}),Object.entries(e.NavTree).forEach((([s,n])=>{let r=s;const o=new Set;do{if(o.has(r))throw new Error("Navigation tree must not contain cycles.");if(o.add(r),r=e.NavTree[r].prev,r===s)break}while(r!==e.NavTree[r].prev);if(r!==t.HOME)throw new Error("The home screen must be the root of the screen-navigation tree.")})),function(e){e.FORWARD="forward",e.BACKWARD="backward"}(n=e.NavDir||(e.NavDir={})),e.GET_NAV_DIR=function(t){const{curr:s,dest:n}=t;if(void 0===s)return e.NavDir.FORWARD;let r=s;for(;r!==e.NavTree[r].prev;)if(r=e.NavTree[r].prev,r===n)return e.NavDir.BACKWARD;return e.NavDir.FORWARD}}(d||(d={})),Object.freeze(d),Object.freeze(d.prototype);class h extends d{_lazyLoad(){const e=l.Y.Screen.Impl.Home.Class;this.baseElem.classList.add(l.Y.General.Class.CENTER_CONTENTS,e.BASE);const t=this.navElem=a.R.mkEl("div",[l.Y.General.Class.TEXT_SELECT_DISABLED,l.Y.General.Class.INPUT_GROUP,e.NAV]);t.setAttribute("role","navigation"),t.addEventListener("pointerleave",(()=>{var e;(null===(e=document.activeElement)||void 0===e?void 0:e.parentElement)===t&&document.activeElement.blur()}));const s=(e,s)=>{e.classList.add(l.Y.General.Class.CENTER_CONTENTS,l.Y.General.Class.INPUT_GROUP_ITEM,s.cssClass),e.textContent=s.text,e.addEventListener("pointerenter",(()=>{window.requestAnimationFrame((t=>{e.focus()}))})),t.appendChild(e)};[{text:"Offline Single-player",cssClass:e.NAV_PLAY_OFFLINE,screenId:d.Id.SETUP_OFFLINE},{text:"Online Multi-player",cssClass:e.NAV_PLAY_ONLINE,screenId:d.Id.GROUP_JOINER},{text:"How To Play",cssClass:e.NAV_HOW_TO_PLAY,screenId:d.Id.HOW_TO_PLAY},{text:"How To Host",cssClass:e.NAV_HOW_TO_HOST,screenId:d.Id.HOW_TO_HOST},{text:"Colour Schemes",cssClass:e.NAV_COLOURS,screenId:d.Id.COLOUR_CTRL}].map((e=>Object.freeze(e))).forEach((e=>{const t=a.R.mkEl("button",[]);t.onclick=e.screenId instanceof Function?e.screenId:()=>{this.requestGoToScreen(e.screenId,{})},s(t,e)})),[{text:"Visit\nRepo",cssClass:e.NAV_VIEW_REPO,href:new window.URL("https://github.com/david-fong/SnaKey-NTS")},{text:"Report\nIssue",cssClass:e.NAV_RPT_ISSUE,href:new window.URL("https://github.com/david-fong/SnaKey-NTS/issues")}].map((e=>Object.freeze(e))).forEach((e=>{const t=a.R.mkEl("a",[],{href:e.href.toString(),target:"_blank"});s(t,e)})),this.baseElem.appendChild(t)}}Object.freeze(h),Object.freeze(h.prototype);class u extends d{_lazyLoad(){}}Object.freeze(u),Object.freeze(u.prototype);class m extends d{_lazyLoad(){}}var E,_,O;!function(e){e.INSTRUCTIONS_STEPS=Object.freeze(["$ npm install 'https://github.com/david-fong/SnaKey-NTS#gh-pages'","$ npm run start","send the url to your friends"])}(m||(m={})),Object.freeze(m),Object.freeze(m.prototype);class v{constructor(){E.set(this,void 0),_.set(this,void 0),O.set(this,void 0);const e=a.R.mkEl("div",[l.Y.SkPickOne.Class.BASE],{tabIndex:0});e.setAttribute("role","listbox"),e.addEventListener("keydown",this._onKeyDown.bind(this)),e.addEventListener("pointerenter",(t=>{window.requestAnimationFrame((t=>{e.focus()}))})),this.baseElem=e,this.options=[]}addOption(e){this.options.push(e),this.baseElem.appendChild(e.baseElem),e.baseElem.addEventListener("pointerenter",this.hoverOpt.bind(this,e)),e.baseElem.addEventListener("click",this.selectOpt.bind(this,e,!0)),e._registerParent(this._onOptDisabledChange.bind(this))}hoverOpt(e){var t;this.hoveredOpt!==e&&(null===(t=this.hoveredOpt)||void 0===t||t.baseElem.setAttribute("aria-active-descendant","false"),(0,i.YH)(this,_,e),this.hoveredOpt.baseElem.setAttribute("aria-active-descendant","true"))}selectOpt(e,t=!0){var s;if(!e)throw new Error("opt must be defined");this.hoverOpt(e),this.confirmedOpt!==e&&(null===(s=this.confirmedOpt)||void 0===s||s.baseElem.setAttribute("aria-selected","false"),(0,i.YH)(this,E,e),this.confirmedOpt.baseElem.setAttribute("aria-selected","true"),t&&this._onSelectOpt(e))}get confirmedOpt(){return(0,i.Q_)(this,E)}get hoveredOpt(){return(0,i.Q_)(this,_)}_onOptDisabledChange(e){this.confirmedOpt===e&&(this._isValid=!e.disabled)}set _isValid(e){this._isValid!==e&&(this.baseElem.setAttribute("aria-invalid",e?"false":"true"),(0,i.YH)(this,O,e))}get _isValid(){return(0,i.Q_)(this,O)}_onKeyDown(e){if(" "===e.key||"Enter"===e.key)return this.selectOpt(this.hoveredOpt),e.preventDefault(),!1;{const t=this.options.indexOf(this.hoveredOpt);if("ArrowDown"===e.key||"Down"===e.key)for(let s=t+1;s=0;s--){const t=this.options[s];if(!t.disabled)return this.hoverOpt(t),e.preventDefault(),!1}}return!0}}E=new WeakMap,_=new WeakMap,O=new WeakMap,function(e){var t,s;t=new WeakMap,s=new WeakMap,e._Option=class{constructor(){t.set(this,void 0),s.set(this,void 0),(this.baseElem=a.R.mkEl("div",[l.Y.SkPickOne.Class.OPT_BASE])).setAttribute("role","option"),(0,i.YH)(this,t,!1)}_registerParent(e){(0,i.YH)(this,s,e)}get disabled(){return(0,i.Q_)(this,t)}set disabled(e){this.disabled!==e&&(this.baseElem.setAttribute("aria-disabled",e?"true":"false"),(0,i.YH)(this,t,e),(0,i.Q_)(this,s).call(this,this))}},Object.freeze(e),Object.freeze(e.prototype)}(v||(v={})),Object.freeze(v),Object.freeze(v.prototype),s(572);const f=l.Y.Screen.Impl.ColourCtrl.Class;l.Y.General.Class;class g extends d{_lazyLoad(){this.baseElem.classList.add(f.BASE),this.baseElem.appendChild(this.nav.prev);const e=this.sel=new g.PickOne(this.top.storage.Local,this.top.transition);a.R.propNoWrite(this,["sel"]),this.baseElem.appendChild(e.baseElem);const t=this.top.storage.Local.colourSchemeId;t&&this.sel.selectOpt(this.sel.getOptById(t),!1)}}var b;!function(e){var t,s,n;class r extends v{constructor(e,o){var a;super(),t.set(this,void 0),s.set(this,void 0),n.set(this,void 0),(0,i.YH)(this,t,!0),(0,i.YH)(this,s,e),(0,i.YH)(this,n,o),b.Schemes.forEach((e=>{this.addOption(new r.Option(e))})),this.selectOpt(this.getOptById(null!==(a=(0,i.Q_)(this,s).colourSchemeId)&&void 0!==a?a:"snakey"),!1)}_onHoverOpt(e){}_onSelectOpt(e){(0,i.Q_)(this,s).colourSchemeId=e.desc.id,(0,i.Q_)(this,s).colourSchemeStyleLiteral=e.cssLiteral;const r=(0,i.Q_)(this,t);(0,i.YH)(this,t,!1),(0,i.Q_)(this,n).do({intermediateTransitionTrigger:()=>{document.documentElement.dataset[l.Y.General.Dataset.COLOUR_SCHEME]=e.desc.id;const t=document.documentElement.style;if(r)for(const e of b.Swatch){const s="--colour-"+e;t.setProperty(s,"")}}})}getOptById(e){return this.options.find((t=>t.desc.id===e))}}t=new WeakMap,s=new WeakMap,n=new WeakMap,e.PickOne=r,function(e){class t extends v._Option{constructor(e){super(),this.desc=e;const s=this.baseElem;s.classList.add(f.OPTION),s.dataset[l.Y.General.Dataset.COLOUR_SCHEME]=e.id;const n=a.R.mkEl("span",[f.OPTION_LABEL]);n.appendChild(a.R.mkEl("div",[f.OPTION_LABEL_TITLE],{textContent:e.displayName})),n.appendChild(a.R.mkEl("div",[f.OPTION_LABEL_AUTHOR],{textContent:"by "+e.author})),s.appendChild(n);for(let e=0;eObject.freeze(e))))}(b||(b={})),Object.freeze(b);var S=s(305);const T=l.Y.Screen.Impl.Setup.Class;class N extends d{_lazyLoad(){this.baseElem.classList.add(T.BASE),this.baseElem.appendChild(this.nav.prev),this.langSel=new N.LangPickOne,this.baseElem.appendChild(this.langSel.baseElem),this._createLangWeightExaggerationInput(),a.R.propNoWrite(this,["langSel","langWeightExaggeration"]),this.baseElem.appendChild(this.nav.next),this._loadLastUsedPreset()}_createLangWeightExaggerationInput(){const e=this.langWeightExaggeration=a.R.mkEl("input",[T.LANG_WEIGHT_EXAGG],{type:"range",min:"0",max:c.Uo.WeightExaggeration.MAX.toString(),step:"any",value:"1"});{const e=a.R.mkEl("datalist",[]);e.id=l.Y.Screen.Impl.Setup.Id.LANG_WEIGHT_EXAGGERATION_LIST,[{val:0,label:"0"},{val:1,label:"1"}].forEach((t=>{e.appendChild(a.R.mkEl("option",[],{value:t.val.toString(),label:t.label}))})),this.baseElem.appendChild(e)}e.setAttribute("list",l.Y.Screen.Impl.Setup.Id.LANG_WEIGHT_EXAGGERATION_LIST),this.baseElem.appendChild(e)}getRecommendedFocusElem(){return this.nav.next}_loadLastUsedPreset(){this.top.storage.Local.gamePresetId}parseArgsFromGui(){const e=Object.assign({},N.DEFAULT_PRESET());return e.langId=this.langSel.confirmedOpt.desc.id,e.langWeightExaggeration=parseFloat(this.langWeightExaggeration.value),e}}!function(e){e.DEFAULT_PRESET=()=>({coordSys:S.u.System.EUCLID2,gridDimensions:{height:21,width:21},averageFreeHealthPerTile:1/45,langWeightExaggeration:1,langId:"engl-low",playerDescs:[{isALocalOperator:!1,familyId:"CHASER",teamId:1,clientId:void 0,username:"chaser1",avatar:void 0,noCheckGameOver:!0,familyArgs:{}},{isALocalOperator:!1,familyId:"CHASER",teamId:1,clientId:void 0,username:"chaser2",avatar:void 0,noCheckGameOver:!0,familyArgs:{fearDistance:6,bloodThirstDistance:5,healthReserve:5,keyPressesPerSecond:1.8}}]});class t extends v{constructor(){super(),this.baseElem.classList.add(T.LANG_SEL),c.Uo.FrontendDescs.forEach((e=>{this.addOption(new t.Option(e))})),this.selectOpt(this.options[0])}_onHoverOpt(e){}_onSelectOpt(e){}}e.LangPickOne=t,function(e){class t extends v._Option{constructor(e){super(),this.desc=e,this.baseElem.textContent=e.displayName}}e.Option=t,Object.freeze(t),Object.freeze(t.prototype)}(t=e.LangPickOne||(e.LangPickOne={}))}(N||(N={})),Object.freeze(N),Object.freeze(N.prototype);class R extends N{_lazyLoad(){super._lazyLoad(),this.nav.next.onclick=e=>{const t=this.parseArgsFromGui();this.requestGoToScreen(d.Id.PLAY_OFFLINE,t)}}parseArgsFromGui(){const e=super.parseArgsFromGui();return e.playerDescs.splice(e.playerDescs.length,0,{isALocalOperator:!0,familyId:"HUMAN",teamId:0,clientId:void 0,username:"hello1",avatar:void 0,noCheckGameOver:!1,familyArgs:{}},{isALocalOperator:!0,familyId:"HUMAN",teamId:1,clientId:void 0,username:"hello2",avatar:void 0,noCheckGameOver:!1,familyArgs:{}}),e}}Object.freeze(R),Object.freeze(R.prototype);var L,y,A,I,C=s(504);class P extends d{constructor(){super(...arguments),L.set(this,void 0),y.set(this,void 0),A.set(this,void 0),I.set(this,void 0)}_lazyLoad(){this.baseElem.classList.add(l.Y.General.Class.CENTER_CONTENTS,l.Y.Screen.Impl.Play.Class.BASE);const e=P.createCenterColElem();this._gridBaseElem=e.grid,this._gridImplHost=e.implHost,this._gridImplHost.appendChild(document.createComment("grid impl host")),this.baseElem.appendChild(e.top),e.pauseOl.addEventListener("click",(e=>{const t=this.currentGame;void 0!==t&&t.status===C.l.Status.PAUSED&&this._statusBecomePlaying()})),a.R.propNoWrite(this,["_gridBaseElem","_gridImplHost"]),this._initializeControlsBar(),this._initializePlayersBar(),(0,i.YH)(this,y,(()=>{if(this.wantsAutoPause)if(document.hidden){if(void 0===(0,i.Q_)(this,I)){const e=this.currentGame;(void 0===e||void 0!==e&&e.status!==C.l.Status.OVER)&&this._statusBecomePaused()}}else"page-hide"===(0,i.Q_)(this,I)&&this._statusBecomePlaying()})),(0,i.YH)(this,A,this._gridKeyDownCallback.bind(this))}_abstractOnBeforeEnter(e,t){return(0,i.mG)(this,void 0,void 0,(function*(){document.addEventListener("visibilitychange",(0,i.Q_)(this,y)),this.pauseButton.disabled=!0,this._statusBecomePaused(),(0,i.YH)(this,L,yield this._createNewGame(t)),this._gridBaseElem.addEventListener("keydown",(0,i.Q_)(this,A),{capture:!0}),yield this.currentGame.reset();const e=this.currentGame.htmlElements;this._gridImplHost.appendChild(e.gridImpl),this.playersBar.appendChild(e.playersBar),this.pauseButton.onclick=this._statusBecomePlaying.bind(this),this.pauseButton.disabled=!1,this.wantsAutoPause&&setTimeout((()=>{document.hidden||this._statusBecomePlaying()}),500)}))}_abstractOnBeforeLeave(e){if(this.askConfirmBeforeLeave&&!window.confirm("Are you sure you would like to leave?"))return!1;document.removeEventListener("visibilitychange",(0,i.Q_)(this,y)),this.currentGame.statusBecomePaused();for(const e of Object.values(this.currentGame.htmlElements))e.textContent="",e.remove();return this._gridBaseElem.removeEventListener("keydown",(0,i.Q_)(this,A)),(0,i.YH)(this,L,void 0),!0}get currentGame(){return(0,i.Q_)(this,L)}get probeCurrentGame(){return(0,i.Q_)(this,L)}_gridKeyDownCallback(e){e.stopPropagation();const t=this.currentGame;if(e.ctrlKey&&" "===e.key&&!e.repeat){const e=t.operators;t.setCurrentOperator((1+e.indexOf(t.currentOperator))%e.length)}else t.currentOperator.processKeyboardInput(e);return" "!==e.key||(e.preventDefault(),!1)}_statusBecomePlaying(){var e;const t=l.Y.Grid.Dataset.GAME_STATE;null===(e=this.probeCurrentGame)||void 0===e||e.statusBecomePlaying(),this.pauseButton.textContent="Pause",(0,i.YH)(this,I,void 0),this._gridBaseElem.dataset[t.KEY]=t.VALUES.PLAYING,this.pauseButton.onclick=this._statusBecomePaused.bind(this),this.resetButton.disabled=!0,window.requestAnimationFrame((e=>{this._gridBaseElem.focus()}))}_statusBecomePaused(){var e;const t=l.Y.Grid.Dataset.GAME_STATE;null===(e=this.probeCurrentGame)||void 0===e||e.statusBecomePaused(),this.pauseButton.textContent="Unpause",(0,i.YH)(this,I,document.hidden?"page-hide":"other"),this._gridBaseElem.dataset[t.KEY]=t.VALUES.PAUSED,this.pauseButton.onclick=this._statusBecomePlaying.bind(this),this.resetButton.disabled=!1}_onGameBecomeOver(){const e=l.Y.Grid.Dataset.GAME_STATE;this.pauseButton.disabled=!0,this.resetButton.disabled=!1,this._gridBaseElem.dataset[e.KEY]=e.VALUES.OVER}_resetGame(){this.currentGame.reset(),this.pauseButton.disabled=!1,this.wantsAutoPause&&this._statusBecomePlaying()}_initializeControlsBar(){const e=a.R.mkEl("div",[l.Y.General.Class.CENTER_CONTENTS,l.Y.General.Class.INPUT_GROUP,l.Y.Screen.Impl.Play.Class.CONTROLS_BAR]);function t(t,s){return(s=null!=s?s:a.R.mkEl("button",[])).classList.add(l.Y.General.Class.INPUT_GROUP_ITEM),s.textContent=t,s.addEventListener("pointerenter",(e=>{window.requestAnimationFrame((e=>{s.focus()}))})),e.appendChild(s),s}e.setAttribute("role","menu"),e.addEventListener("pointerleave",(e=>{window.requestAnimationFrame((e=>{this._gridBaseElem.focus()}))})),t("",this.nav.prev),this.pauseButton=t(""),(this.resetButton=t("Reset")).onclick=this._resetGame.bind(this),a.R.propNoWrite(this,["pauseButton","resetButton"]),this.baseElem.appendChild(e)}_initializePlayersBar(){const e=this.playersBar=a.R.mkEl("div",[l.Y.Screen.Impl.Play.Class.PLAYERS_BAR]);a.R.propNoWrite(this,["playersBar"]),this.baseElem.appendChild(e)}}L=new WeakMap,y=new WeakMap,A=new WeakMap,I=new WeakMap,function(e){e.createCenterColElem=function(){const e=l.Y.Grid.Class,t=l.Y.General.Class,s=a.R.mkEl("div",[l.Y.Screen.Impl.Play.Class.GRID_WRAPPER]),n=a.R.mkEl("div",[t.STACK_CONTENTS,t.TEXT_SELECT_DISABLED,e.GRID],{tabIndex:0});n.setAttribute("role","textbox"),n.setAttribute("aria-label","Game Grid");const r=a.R.mkEl("div",[e.SCROLL_OUTER]);r.setAttribute("role","presentation");{const s=a.R.mkEl("div",[t.FILL_PARENT,t.CENTER_CONTENTS,e.KBD_DC]);s.appendChild(a.R.mkEl("div",[e.KBD_DC_ICON],{textContent:"(click here to continue typing)"})),r.appendChild(s)}const o=a.R.mkEl("div",[t.FILL_PARENT,t.CENTER_CONTENTS,e.PAUSE_OL],{});return o.appendChild(a.R.mkEl("div",[e.PAUSE_OL_ICON],{textContent:"(Click to Unpause)"})),r.appendChild(o),n.appendChild(r),s.appendChild(n),Object.freeze({top:s,grid:n,intersectionRoot:r,implHost:r,pauseOl:o})}}(P||(P={})),a.R.protoNoEnum(P,["probeCurrentGame"]),a.R.instNoEnum(P,["createCenterColElem"]),Object.freeze(P),Object.freeze(P.prototype);class k extends P{constructor(){super(...arguments),this.wantsAutoPause=!0,this.askConfirmBeforeLeave=!0}_lazyLoad(){super._lazyLoad(),this.nav.prev.innerHTML="Return To Setup"}_createNewGame(e){return(0,i.mG)(this,void 0,void 0,(function*(){return new((yield Promise.all([s.e(929),s.e(755)]).then(s.bind(s,40))).OfflineGame)(this._onGameBecomeOver.bind(this),e)}))}}Object.freeze(k),Object.freeze(k.prototype);var G,w,U=s(502);class H extends d{constructor(){super(...arguments),G.set(this,void 0),w.set(this,!1)}get clientIsGroupHost(){return(0,i.Q_)(this,w)}_lazyLoad(){this.baseElem.classList.add(l.Y.General.Class.CENTER_CONTENTS,l.Y.Screen.Impl.GroupJoiner.Class.BASE);const e=this._initializeFormContents(),t=this._initializeHostUrlHandlers();this._initializeGroupNameHandlers(t),this._initializePassphraseHandlers(),this.nav.next.onclick=e=>{s()};const s=()=>{this.requestGoToScreen(d.Id.GROUP_LOBBY,{groupName:this.in.groupName.value,groupPassphrase:this.in.passphrase.value})};this._setFormState(B.CHOOSING_HOST),this.baseElem.appendChild(e)}getRecommendedFocusElem(){return void 0!==this.groupSocket?this.in.groupName:this.in.hostUrl}get state(){return(0,i.Q_)(this,G)}_setFormState(e){if(this.state!==e){if(e===B.IN_GROUP){if(this.state!==B.CHOOSING_GROUP)throw new Error("never");this.in.passphrase.disabled=!0,this.nav.next.disabled=!1,this.nav.next.focus()}else this.nav.next.disabled=!0,e===B.CHOOSING_HOST?(this.in.groupName.disabled=!0,this.in.groupName.value="",this.groupNameDataList.innerText="",this.in.passphrase.disabled=!0,this.in.passphrase.value="",this.in.hostUrl.focus()):e===B.CHOOSING_GROUP&&(this.in.groupName.disabled=!1,this.in.passphrase.disabled=!1,this.in.groupName.focus());(0,i.YH)(this,G,e)}}_initializeHostUrlHandlers(){const e=this.top,t=this.in.hostUrl,s=()=>(0,i.mG)(this,void 0,void 0,(function*(){var s,n;if(!t.value||!t.validity.valid)return;t.value.startsWith(U.b4.PROTOCOL)||(t.value=new window.URL(U.b4.PROTOCOL+t.value).origin);const r=new window.URL(t.value);if((null===(s=this.groupSocket)||void 0===s?void 0:s.io.opts.hostname)===r.hostname)return void(this.groupSocket.connected&&(this._setFormState(B.CHOOSING_GROUP),this.in.groupName.focus()));null===(n=this.joinerSocket)||void 0===n||n.close();const o=yield this.top.sockets.joinerSocketConnect({serverUrl:r});o.on("connect",(()=>{this._setFormState(B.CHOOSING_GROUP),o.on(U.ZA.Exist.EVENT_NAME,this._onNotifyGroupExist.bind(this))})).on("connect_error",(e=>{this.top.toast("Unable to connected to the specified server.")})).on("disconnect",(s=>{"io server disconnect"===s&&(this._setFormState(B.CHOOSING_HOST),t.value="",e.toast("The server disconnected you from the group joiner."))}))}));return t.oninput=e=>this._setFormState(B.CHOOSING_HOST),t.onkeydown=e=>{"Enter"===e.key&&s()},t.onpaste=e=>{window.setTimeout((()=>s()),0)},t.onchange=()=>{s()},s}_onNotifyGroupExist(e){if(e===U.ZA.Exist.RequestCreate.Response.NOPE)return void this.top.toast(`The server rejected your request to create a new group "${this.in.groupName.value}".`);if(e===U.ZA.Exist.RequestCreate.Response.OKAY)return this.top.toast(`server accepted request to create new group "${this.in.groupName.value}".`),this.top.toast("connecting to new group..."),void this._attemptToJoinExistingGroup();const t=this.groupNameDataList,s=Array.from(t.children);Object.entries(e).forEach((([e,n])=>{const r=s.find((t=>t.value===e))||(e=>{const n=a.R.mkEl("option",[],{value:e});for(const e of s)if(n.value.localeCompare(e.value)<0){t.insertBefore(n,e);break}return n.parentElement||t.appendChild(n),n})(e);switch(n){case U.ZA.Exist.Status.IN_LOBBY:r.textContent="In Lobby";break;case U.ZA.Exist.Status.IN_GAME:r.textContent="In Game";break;case U.ZA.Exist.Status.DELETE:r.remove()}}))}_initializeGroupNameHandlers(e){const t=this.in.groupName,s=()=>{t.value&&t.validity.valid&&(this.state===B.IN_GROUP?this.nav.next.focus():this.in.passphrase.focus())};this.in.groupName.oninput=t=>(0,i.mG)(this,void 0,void 0,(function*(){this.state===B.IN_GROUP&&(yield e()),this.in.passphrase.value="",(0,i.YH)(this,w,!1)})),t.onkeydown=e=>{"Enter"===e.key&&s()},t.onchange=e=>{s()}}_initializePassphraseHandlers(){const e=()=>(0,i.mG)(this,void 0,void 0,(function*(){if(this.in.passphrase.validity.valid)return void 0!==this.groupSocket&&this.groupSocket.nsp===U.b4.Nsps.GROUP_LOBBY_PREFIX+this.in.groupName.value?this.groupSocket.connected?(this._setFormState(B.IN_GROUP),void this.nav.next.focus()):void 0:void(Array.from(this.groupNameDataList.children).some((e=>e.value===this.in.groupName.value))?((0,i.YH)(this,w,!1),this._attemptToJoinExistingGroup()):((0,i.YH)(this,w,!0),this.joinerSocket.emit(U.ZA.Exist.EVENT_NAME,new U.ZA.Exist.RequestCreate(this.in.groupName.value,this.in.passphrase.value))))}));this.in.passphrase.onkeydown=t=>{"Enter"===t.key&&e()}}_attemptToJoinExistingGroup(){var e;null===(e=this.groupSocket)||void 0===e||e.close();const t=this.top,s=n.getLastUserInfo();this.top.sockets.groupSocketConnect(this.in.groupName.value,{passphrase:this.in.passphrase.value,userInfo:s}).on("connect",(()=>{this._setFormState(B.IN_GROUP)})).on("connect_error",(e=>{t.toast("Unable to connect to the specified group.")})).on("disconnect",(e=>{"io server disconnect"===e&&(t.toast("The server disconnected you from your group."),this.requestGoToScreen(d.Id.GROUP_JOINER,{}))}))}get joinerSocket(){return this.top.sockets.joinerSocket}get groupSocket(){return this.top.sockets.groupSocket}_initializeFormContents(){this.in={};const e=l.Y.Screen.Impl.GroupJoiner.Class,t=a.R.mkEl("div",[l.Y.General.Class.INPUT_GROUP,e.CONTENT_WRAPPER],{});function s(e,s){const n=a.R.mkEl("input",[l.Y.General.Class.INPUT_GROUP_ITEM,s],{type:"text",autocomplete:"off",spellcheck:!1}),r=a.R.mkEl("label",[],{textContent:e});return r.appendChild(n),t.appendChild(r),n}this.nav.prev.classList.add(l.Y.General.Class.INPUT_GROUP_ITEM),t.appendChild(this.nav.prev);{const t=this.in.hostUrl=Object.assign(s("Host URL",e.HOST_URL),{type:"url",maxLength:128,autocomplete:"on",required:!0}),n=H.SUGGEST_HOST(this.top.webpageHostType);if(n){const e=a.R.mkEl("option",[],{value:n.value,textContent:n.description});document.getElementById(l.Y.GLOBAL_IDS.PUBLIC_GAME_HOST_URLS).insertAdjacentElement("afterbegin",e)}t.setAttribute("list",l.Y.GLOBAL_IDS.PUBLIC_GAME_HOST_URLS)}{const t=this.in.groupName=Object.assign(s("Group Name",e.GROUP_NAME),{pattern:U.ZA.Name.REGEXP.source,minLength:1,maxLength:U.ZA.Name.MaxLength,autocomplete:"on",required:!0}),n=this.groupNameDataList=a.R.mkEl("datalist",[],{id:l.Y.GLOBAL_IDS.CURRENT_HOST_GROUPS});this.baseElem.appendChild(n),t.setAttribute("list",n.id)}{const t=this.in.passphrase=s("Group Passphrase",e.PASSPHRASE);t.pattern=U.ZA.Passphrase.REGEXP.source,t.maxLength=U.ZA.Passphrase.MaxLength}return this.nav.next.classList.add(l.Y.General.Class.INPUT_GROUP_ITEM),t.appendChild(this.nav.next),a.R.propNoWrite(this,["in","groupNameDataList"]),Object.freeze(this.in),t}}G=new WeakMap,w=new WeakMap,function(e){let t;!function(e){e.CHOOSING_HOST="choosing-host",e.CHOOSING_GROUP="choosing-group",e.IN_GROUP="in-group"}(t=e.State||(e.State={})),e.SUGGEST_HOST=function(e){switch(e){case"github":return;case"filesystem":return{value:"localhost:"+U.b4.DEFAULT_PORT,description:"dev shortcut :)"};case"sk-server":return{value:window.location.origin,description:"this page's server"};default:return}}}(H||(H={}));const B=H.State;Object.freeze(H),Object.freeze(H.prototype);class Y extends N{_lazyLoad(){super._lazyLoad(),this.nav.next.textContent="Start Game",this.nav.next.onclick=e=>{const t=this.parseArgsFromGui();this.top.clientIsGroupHost&&this.top.sockets.groupSocket.emit(U.m4.CREATE_GAME,t)}}}Object.freeze(Y),Object.freeze(Y.prototype);const j=l.Y.Screen.Impl.GroupLobby.Class;class D extends d{get socket(){return this.top.sockets.groupSocket}_lazyLoad(){this._players=new Map,this._createInputs(),this.nav.prev.textContent="Return To Joiner",this.teamsElem=a.R.mkEl("div",[j.SEC_TEAMS]),this.baseElem.appendChild(this.teamsElem),this.teamElems=new Map,a.R.propNoWrite(this,["_players","teamsElem","teamElems","in"]);{const e=this.nav.next;e.textContent="Setup Game",e.onclick=()=>{this.requestGoToScreen(d.Id.SETUP_ONLINE,{})},this.baseElem.appendChild(e)}}_createInputs(){var e;const t=a.R.mkEl("div",[l.Y.General.Class.INPUT_GROUP,j.SEC_CLIENT_INFO]),s=a.R.mkEl("input",[l.Y.General.Class.INPUT_GROUP_ITEM],{type:"text",minLength:1,maxLength:c.J5.Username.MAX_LENGTH,pattern:c.J5.Username.REGEXP.source,spellcheck:!1,value:null!==(e=this.top.storage.Local.username)&&void 0!==e?e:"",onchange:this._submitInputs.bind(this)});t.appendChild(s);const n=a.R.mkEl("input",[l.Y.General.Class.INPUT_GROUP_ITEM],{type:"number",inputMode:"numeric",min:"0",max:"0",step:"1",value:"0",onchange:this._submitInputs.bind(this)});n.classList.add(),t.appendChild(n);const r=a.R.mkEl("select",[]);this.in=Object.freeze({username:s,teamId:n,avatar:r}),this.baseElem.appendChild(t)}_submitInputs(){this.in.username.validity.valid&&this.in.teamId.validity.valid&&(this.top.storage.Local.username=this.in.username.value,this.top.storage.Local.avatar=this.in.avatar.value,this.socket.emit(U.ZA.Socket.UserInfoChange.EVENT_NAME,{username:this.in.username.value,teamId:parseInt(this.in.teamId.value),avatar:c.J5.Avatar.LOREM_IPSUM}))}_abstractOnBeforeEnter(e,t){return(0,i.mG)(this,void 0,void 0,(function*(){"forward"===e&&(this.nav.next.disabled=!this.top.clientIsGroupHost,this._players.clear(),this.teamElems.clear(),this.teamsElem.textContent="",this._submitInputs(),this.socket.on(U.ZA.Socket.UserInfoChange.EVENT_NAME,this._onUserInfoChange.bind(this))),this.socket.once(U.m4.CREATE_GAME,(()=>{console.log("group create game socket. now waiting for ctor args"),this.top.sockets.gameSocketConnect(t.groupName,{passphrase:t.groupPassphrase}).once(U.JD.CREATE_GAME,(e=>{this.requestGoToScreen(d.Id.PLAY_ONLINE,e)}))}))}))}getRecommendedFocusElem(){let e=this.in.username.validity.valid?this.in.teamId.validity.valid?void 0:this.in.teamId:this.in.username;return void 0===e&&(e=this.top.clientIsGroupHost?this.nav.next:this.in.teamId),e}_abstractOnBeforeLeave(e){return e===d.NavDir.BACKWARD&&this.socket.removeListener(U.m4.CREATE_GAME),!0}_onUserInfoChange(e){Object.entries(e).forEach((([e,t])=>{const s=this._players.get(e);if(!s||1!==this.teamElems.get(s.teamId).childElementCount||void 0!==t&&t.teamId===s.teamId||(this.teamElems.get(s.teamId).remove(),this.teamElems.delete(s.teamId)),t&&!this.teamElems.has(t.teamId)){const e=a.R.mkEl("div",[j.TEAM]);this.teamElems.set(t.teamId,e),e.onclick=e=>{this.in.teamId.value=t.teamId.toString()},this.teamsElem.appendChild(e)}if(void 0===t)s.base.remove(),this._players.delete(e);else if(void 0===s){const s=new D.UserInfo(t);this._players.set(e,s),this.teamElems.get(t.teamId).appendChild(s.base)}else s.update(t)})),this.in.teamId.max=Object.keys(this._players).length.toString()}}!function(e){var t,s,n;t=new WeakMap,s=new WeakMap,n=new WeakMap,e.UserInfo=class{constructor(e){t.set(this,void 0),s.set(this,void 0),n.set(this,void 0),this.base=a.R.mkEl("div",[j.PLAYER]);const r=()=>{const e=a.R.mkEl("div",[]);return this.base.appendChild(e),e};this.el=Object.freeze({username:r(),teamId:r(),avatar:r()}),this.el.username.classList.add(j.PLAYER_NAME),this.username=e.username,this.teamId=e.teamId,a.R.propNoWrite(this,["base","el"])}update(e){this.username=e.username,this.teamId=e.teamId,this.avatar=e.avatar}get username(){return(0,i.Q_)(this,t)}set username(e){this.el.username.textContent=e,(0,i.YH)(this,t,e)}get teamId(){return(0,i.Q_)(this,s)}set teamId(e){this.el.teamId.textContent=e.toString(),(0,i.YH)(this,s,e)}get avatar(){return(0,i.Q_)(this,n)}set avatar(e){(0,i.YH)(this,n,e),this.el.avatar}}}(D||(D={})),a.R.protoNoEnum(D,["_createInputs","_submitInputs"]),Object.freeze(D),Object.freeze(D.prototype);class x extends P{constructor(){super(...arguments),this.askConfirmBeforeLeave=!1,this.wantsAutoPause=!1}get socket(){return this.top.sockets.gameSocket}_lazyLoad(){super._lazyLoad(),this.nav.prev.innerHTML="Return To Lobby"}_abstractOnBeforeLeave(e){const t=super._abstractOnBeforeLeave(e);return t&&(this.socket.emit(U.JD.RETURN_TO_LOBBY),this.socket.removeAllListeners()),t}_createNewGame(e){return(0,i.mG)(this,void 0,void 0,(function*(){const t=new((yield Promise.all([s.e(929),s.e(775)]).then(s.bind(s,25))).OnlineGame)(this._onGameBecomeOver.bind(this),this.top.sockets.gameSocket,e);return this.top.sockets.gameSocket.on(U.JD.UNPAUSE,(()=>{this._statusBecomePlaying()})).on(U.JD.PAUSE,(()=>{this._statusBecomePaused()})).on(U.JD.RETURN_TO_LOBBY,(e=>{void 0===e&&this.nav.prev.click()})),Promise.resolve(t)}))}_onGameBecomeOver(){super._onGameBecomeOver()}}var z,M,F,W,V;Object.freeze(x),Object.freeze(x.prototype);class K{constructor(e,t){z.set(this,void 0),M.set(this,void 0),(0,i.YH)(this,M,e.transition),t.setAttribute("role","presentation");const s=d.Id,n=e,r=t,o=Object.freeze(this.goToScreen.bind(this));this.dict=Object.freeze({[s.HOME]:new h(s.HOME,n,r,o),[s.HOW_TO_PLAY]:new u(s.HOW_TO_PLAY,n,r,o),[s.HOW_TO_HOST]:new m(s.HOW_TO_HOST,n,r,o),[s.COLOUR_CTRL]:new g(s.COLOUR_CTRL,n,r,o),[s.SETUP_OFFLINE]:new R(s.SETUP_OFFLINE,n,r,o),[s.PLAY_OFFLINE]:new k(s.PLAY_OFFLINE,n,r,o),[s.GROUP_JOINER]:new H(s.GROUP_JOINER,n,r,o),[s.SETUP_ONLINE]:new Y(s.SETUP_ONLINE,n,r,o),[s.GROUP_LOBBY]:new D(s.GROUP_LOBBY,n,r,o),[s.PLAY_ONLINE]:new x(s.PLAY_ONLINE,n,r,o)}),a.R.propNoWrite(this,["dict"]);const l=d.NavTree[window.location.hash.slice(1)];window.setTimeout((()=>{var e;this.goToScreen(null!==(e=null==l?void 0:l.href)&&void 0!==e?e:d.Id.HOME,{})}),75),window.addEventListener("popstate",(e=>{this.goToScreen(window.history.state.screenId,{})}))}goToScreen(e,t){return(0,i.mG)(this,void 0,void 0,(function*(){const s=this.currentScreen,n=this.dict[e];if(s===n)throw new Error("never");(0,i.YH)(this,z,n);const r=d.GET_NAV_DIR({curr:null==s?void 0:s.screenId,dest:e});return!(void 0!==s&&!s._leave(r)||(yield(0,i.Q_)(this,M).do({beforeUnblurAwait:n._enter(r,t),beforeUnblur:()=>{var e;null==s||s._onAfterLeave(),n._onAfterEnter(),null===(e=n.getRecommendedFocusElem())||void 0===e||e.focus()}}),0))}))}get currentScreen(){return(0,i.Q_)(this,z)}}z=new WeakMap,M=new WeakMap,Object.freeze(K),Object.freeze(K.prototype);class J{constructor(){F.set(this,void 0),this.baseElem=document.getElementById(l.Y.Screen.Id.SCREEN_TINT),(0,i.YH)(this,F,void 0),a.R.propNoWrite(this,["baseElem"])}do(e){var t;return(0,i.YH)(this,F,(null!==(t=(0,i.Q_)(this,F))&&void 0!==t?t:Promise.resolve()).then((()=>this._atomicDo(e)))),(0,i.Q_)(this,F)}_atomicDo(e){return(0,i.mG)(this,void 0,void 0,(function*(){const t=this.baseElem.style;yield this._triggerCssTransition((()=>{t.pointerEvents="all",t.opacity="1.0"})),void 0!==e.intermediateTransitionTrigger&&(yield this._triggerCssTransition((()=>{e.intermediateTransitionTrigger()}))),yield e.beforeUnblurAwait,void 0!==e.beforeUnblur&&e.beforeUnblur(),yield this._triggerCssTransition((()=>{t.pointerEvents="none",t.opacity="0.0"}))}))}_triggerCssTransition(e){return new Promise(((t,s)=>{this.baseElem.addEventListener("transitionend",(()=>t()),{once:!0}),e()}))}}F=new WeakMap,a.R.protoNoEnum(J,["_atomicDo","_triggerCssTransition"]),Object.freeze(J),Object.freeze(J.prototype);class Q{constructor(){W.set(this,void 0),(0,i.YH)(this,W,{joiner:void 0,group:void 0,game:void 0})}get socketIo(){return new Promise(((e,t)=>{const s=a.R.mkEl("script",[]);s.onload=()=>{e(io)},s.src=document.getElementById("socket.io-preload").href,document.body.appendChild(s)}))}get joinerSocket(){return(0,i.Q_)(this,W).joiner}get groupSocket(){return(0,i.Q_)(this,W).group}get gameSocket(){return(0,i.Q_)(this,W).game}joinerSocketConnect(e){return(0,i.mG)(this,void 0,void 0,(function*(){const t=(yield this.socketIo).Manager(e.serverUrl.toString(),{reconnectionAttempts:U.ZA.GameServerReconnectionAttempts}).socket(U.b4.Nsps.GROUP_JOINER);return this._registerSocket(t,"joiner"),t}))}groupSocketConnect(e,t){return this._groupSocketHelper("group",e,t)}gameSocketConnect(e,t){return this._groupSocketHelper("game",e,t)}_groupSocketHelper(e,t,s){let n;switch(e){case"group":n=U.b4.Nsps.GROUP_LOBBY_PREFIX;break;case"game":n=U.b4.Nsps.GROUP_GAME_PREFIX;break;default:throw new TypeError("never")}const r=this.joinerSocket.io.socket(n+t,s);return this._registerSocket(r,e),r}_registerSocket(e,t){(0,i.Q_)(this,W)[t]=e;const s=()=>{e.removeAllListeners(),e.close(),(0,i.Q_)(this,W)[t]=void 0};e.on("connect_error",(e=>{s()})).on("disconnect",(e=>{"io server disconnect"!==e&&"io client disconnect"!==e||s()}))}}W=new WeakMap,a.R.protoNoEnum(Q,["joinerSocketConnect","groupSocketConnect","gameSocketConnect","_groupSocketHelper","_registerSocket"]),Object.freeze(Q),Object.freeze(Q.prototype);class q{constructor(){V.set(this,void 0),this.defaultDocTitle=document.title,this.webpageHostType=window.location.origin.match(/github\.io/)?q.WebpageHostType.GITHUB:window.location.protocol.startsWith("file")?q.WebpageHostType.FILESYSTEM:q.WebpageHostType.SNAKEY_SERVER,a.R.propNoWrite(this,["defaultDocTitle","webpageHostType"]),this.storage=n,this.sockets=new Q,this.transition=new J,a.R.propNoWrite(this,["storage","sockets","transition"]);const e=document.getElementById(l.Y.Screen.Id.ALL_SCREENS);if(!e)throw new Error("never");a.R.prependComment(e,"ALL SCREENS CONTAINER"),(0,i.YH)(this,V,new K(this,e)),a.R.propNoWrite(this,[])}get clientIsGroupHost(){return(0,i.Q_)(this,V).dict.groupJoiner.clientIsGroupHost}toast(e){console.info(e)}get game(){var e;return null!==(e=(0,i.Q_)(this,V).dict.playOffline.probeCurrentGame)&&void 0!==e?e:(0,i.Q_)(this,V).dict.playOnline.probeCurrentGame}get currentScreen(){return(0,i.Q_)(this,V).currentScreen}}V=new WeakMap,function(e){let t;!function(e){e.GITHUB="github",e.FILESYSTEM="filesystem",e.SNAKEY_SERVER="sk-server"}(t=e.WebpageHostType||(e.WebpageHostType={}))}(q||(q={})),Object.freeze(q),Object.freeze(q.prototype),Object.freeze(Object.prototype);const X=new q,Z=X;function $(){return X.currentScreen}function ee(){return X.game}console.log("%c🩺 welcome! 🐍","font:700 2.3em /1.5 monospace; margin:0.4em; border:0.3em solid black;padding:0.4em; color:white; background-color:#3f5e77; border-radius:0.7em; "),X.webpageHostType===q.WebpageHostType.GITHUB&&"serviceWorker"in navigator&&window.addEventListener("load",(function(){navigator.serviceWorker.register("/ServiceWorker.js").then((e=>{console.log("ServiceWorker registration successful with scope: ",e.scope)}),(e=>{console.log("ServiceWorker registration failed: ",e)}))}))},655:(e,t,s)=>{function n(e,t,s,n){return new(s||(s=Promise))((function(r,o){function i(e){try{l(n.next(e))}catch(e){o(e)}}function a(e){try{l(n.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(i,a)}l((n=n.apply(e,t||[])).next())}))}function r(e,t){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return t.get(e)}function o(e,t,s){if(!t.has(e))throw new TypeError("attempted to set private field on non-instance");return t.set(e,s),s}s.d(t,{mG:()=>n,Q_:()=>r,YH:()=>o}),Object.create,Object.create}},o={};function i(e){if(o[e])return o[e].exports;var t=o[e]={exports:{}};return r[e](t,t.exports,i),t.exports}return i.m=r,i.d=(e,t)=>{for(var s in t)i.o(t,s)&&!i.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,s)=>(i.f[s](e,t),t)),[])),i.u=e=>"chunk/"+({184:"lang/English-ts",227:"lang/Korean-ts",285:"lang/Morse-ts",313:"lang/Cellphone-ts",410:"lang/Japanese-ts",755:"game/offline",775:"game/online",858:"lang/Emote-ts"}[e]||e)+".js",i.miniCssF=e=>826===e?"_barrel.css":"chunk/"+({184:"lang/English-ts",227:"lang/Korean-ts",285:"lang/Morse-ts",313:"lang/Cellphone-ts",410:"lang/Japanese-ts",755:"game/offline",775:"game/online",858:"lang/Emote-ts"}[e]||e)+".css",i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="snakey3:",i.l=(s,n,r)=>{if(e[s])e[s].push(n);else{var o,a;if(void 0!==r)for(var l=document.getElementsByTagName("script"),c=0;c{o.onerror=o.onload=null,clearTimeout(h);var r=e[s];if(delete e[s],o.parentNode&&o.parentNode.removeChild(o),r&&r.forEach((e=>e(n))),t)return t(n)},h=setTimeout(d.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=d.bind(null,o.onerror),o.onload=d.bind(null,o.onload),a&&document.head.appendChild(o)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="dist/client/",s=e=>new Promise(((t,s)=>{var n=i.miniCssF(e),r=i.p+n;if(((e,t)=>{for(var s=document.getElementsByTagName("link"),n=0;n{var r=document.createElement("link");r.rel="stylesheet",r.type="text/css",r.onload=s,r.onerror=function(s){var o=s&&s.target&&s.target.href||t,i=new Error("Loading CSS chunk "+e+" failed.\n("+o+")");i.code="CSS_CHUNK_LOAD_FAILED",i.request=o,r.parentNode.removeChild(r),n(i)},r.href=t,document.head.appendChild(r)})(e,r,t,s)})),n={826:0},i.f.miniCss=(e,t)=>{n[e]?t.push(n[e]):0!==n[e]&&{755:1,775:1}[e]&&t.push(n[e]=s(e).then((()=>{n[e]=0}),(t=>{throw delete n[e],t})))},(()=>{var e={826:0};i.f.j=(t,s)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)s.push(n[2]);else{var r=new Promise(((s,r)=>{n=e[t]=[s,r]}));s.push(n[2]=r);var o=i.p+i.u(t),a=new Error;i.l(o,(s=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var r=s&&("load"===s.type?"missing":s.type),o=s&&s.target&&s.target.src;a.message="Loading chunk "+t+" failed.\n("+r+": "+o+")",a.name="ChunkLoadError",a.type=r,a.request=o,n[1](a)}}),"chunk-"+t)}};var t=self.webpackChunksnakey3=self.webpackChunksnakey3||[],s=t.push.bind(t);t.push=t=>{for(var n,r,[o,a,l]=t,c=0,p=[];c=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))}function i(e){if(e[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+e[0]+(this.useColors?"%c ":" ")+"+"+t.exports.humanize(this.diff),this.useColors){var n="color: "+this.color;e.splice(1,0,n,"color: inherit");var r=0,o=0;e[0].replace(/%[a-zA-Z%]/g,function(t){"%%"!==t&&(r++,"%c"===t&&(o=r))}),e.splice(o,0,n)}}function s(){var t;return"object"===("undefined"==typeof console?"undefined":p(console))&&console.log&&(t=console).log.apply(t,arguments)}function a(t){try{t?e.storage.setItem("debug",t):e.storage.removeItem("debug")}catch(n){}}function c(){var t=void 0;try{t=e.storage.getItem("debug")}catch(n){}return!t&&"undefined"!=typeof r&&"env"in r&&(t=r.env.DEBUG),t}function u(){try{return localStorage}catch(t){}}var p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};e.log=s,e.formatArgs=i,e.save=a,e.load=c,e.useColors=o,e.storage=u(),e.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.exports=n(5)(e);var h=t.exports.formatters;h.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}).call(e,n(4))},function(t,e){function n(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function o(t){if(p===setTimeout)return setTimeout(t,0);if((p===n||!p)&&setTimeout)return p=setTimeout,setTimeout(t,0);try{return p(t,0)}catch(e){try{return p.call(null,t,0)}catch(e){return p.call(this,t,0)}}}function i(t){if(h===clearTimeout)return clearTimeout(t);if((h===r||!h)&&clearTimeout)return h=clearTimeout,clearTimeout(t);try{return h(t)}catch(e){try{return h.call(null,t)}catch(e){return h.call(this,t)}}}function s(){y&&l&&(y=!1,l.length?d=l.concat(d):m=-1,d.length&&a())}function a(){if(!y){var t=o(s);y=!0;for(var e=d.length;e;){for(l=d,d=[];++m1)for(var n=1;n100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(e){var n=parseFloat(e[1]),r=(e[2]||"ms").toLowerCase();switch(r){case"years":case"year":case"yrs":case"yr":case"y":return n*h;case"weeks":case"week":case"w":return n*p;case"days":case"day":case"d":return n*u;case"hours":case"hour":case"hrs":case"hr":case"h":return n*c;case"minutes":case"minute":case"mins":case"min":case"m":return n*a;case"seconds":case"second":case"secs":case"sec":case"s":return n*s;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function r(t){var e=Math.abs(t);return e>=u?Math.round(t/u)+"d":e>=c?Math.round(t/c)+"h":e>=a?Math.round(t/a)+"m":e>=s?Math.round(t/s)+"s":t+"ms"}function o(t){var e=Math.abs(t);return e>=u?i(t,e,u,"day"):e>=c?i(t,e,c,"hour"):e>=a?i(t,e,a,"minute"):e>=s?i(t,e,s,"second"):t+" ms"}function i(t,e,n,r){var o=e>=1.5*n;return Math.round(t/n)+" "+r+(o?"s":"")}var s=1e3,a=60*s,c=60*a,u=24*c,p=7*u,h=365.25*u;t.exports=function(t,e){e=e||{};var i=typeof t;if("string"===i&&t.length>0)return n(t);if("number"===i&&isFinite(t))return e["long"]?o(t):r(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))}},function(t,e,n){function r(){}function o(t){var n=""+t.type;if(e.BINARY_EVENT!==t.type&&e.BINARY_ACK!==t.type||(n+=t.attachments+"-"),t.nsp&&"/"!==t.nsp&&(n+=t.nsp+","),null!=t.id&&(n+=t.id),null!=t.data){var r=i(t.data);if(r===!1)return g;n+=r}return f("encoded %j as %s",t,n),n}function i(t){try{return JSON.stringify(t)}catch(e){return!1}}function s(t,e){function n(t){var n=d.deconstructPacket(t),r=o(n.packet),i=n.buffers;i.unshift(r),e(i)}d.removeBlobs(t,n)}function a(){this.reconstructor=null}function c(t){var n=0,r={type:Number(t.charAt(0))};if(null==e.types[r.type])return h("unknown packet type "+r.type);if(e.BINARY_EVENT===r.type||e.BINARY_ACK===r.type){for(var o="";"-"!==t.charAt(++n)&&(o+=t.charAt(n),n!=t.length););if(o!=Number(o)||"-"!==t.charAt(n))throw new Error("Illegal attachments");r.attachments=Number(o)}if("/"===t.charAt(n+1))for(r.nsp="";++n;){var i=t.charAt(n);if(","===i)break;if(r.nsp+=i,n===t.length)break}else r.nsp="/";var s=t.charAt(n+1);if(""!==s&&Number(s)==s){for(r.id="";++n;){var i=t.charAt(n);if(null==i||Number(i)!=i){--n;break}if(r.id+=t.charAt(n),n===t.length)break}r.id=Number(r.id)}if(t.charAt(++n)){var a=u(t.substr(n)),c=a!==!1&&(r.type===e.ERROR||y(a));if(!c)return h("invalid payload");r.data=a}return f("decoded %s as %j",t,r),r}function u(t){try{return JSON.parse(t)}catch(e){return!1}}function p(t){this.reconPack=t,this.buffers=[]}function h(t){return{type:e.ERROR,data:"parser error: "+t}}var f=n(8)("socket.io-parser"),l=n(11),d=n(12),y=n(13),m=n(14);e.protocol=4,e.types=["CONNECT","DISCONNECT","EVENT","ACK","ERROR","BINARY_EVENT","BINARY_ACK"],e.CONNECT=0,e.DISCONNECT=1,e.EVENT=2,e.ACK=3,e.ERROR=4,e.BINARY_EVENT=5,e.BINARY_ACK=6,e.Encoder=r,e.Decoder=a;var g=e.ERROR+'"encode error"';r.prototype.encode=function(t,n){if(f("encoding packet %j",t),e.BINARY_EVENT===t.type||e.BINARY_ACK===t.type)s(t,n);else{var r=o(t);n([r])}},l(a.prototype),a.prototype.add=function(t){var n;if("string"==typeof t)n=c(t),e.BINARY_EVENT===n.type||e.BINARY_ACK===n.type?(this.reconstructor=new p(n),0===this.reconstructor.reconPack.attachments&&this.emit("decoded",n)):this.emit("decoded",n);else{if(!m(t)&&!t.base64)throw new Error("Unknown type: "+t);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");n=this.reconstructor.takeBinaryData(t),n&&(this.reconstructor=null,this.emit("decoded",n))}},a.prototype.destroy=function(){this.reconstructor&&this.reconstructor.finishedReconstruction()},p.prototype.takeBinaryData=function(t){if(this.buffers.push(t),this.buffers.length===this.reconPack.attachments){var e=d.reconstructPacket(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null},p.prototype.finishedReconstruction=function(){this.reconPack=null,this.buffers=[]}},function(t,e,n){(function(r){"use strict";function o(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))}function i(t){var n=this.useColors;if(t[0]=(n?"%c":"")+this.namespace+(n?" %c":" ")+t[0]+(n?"%c ":" ")+"+"+e.humanize(this.diff),n){var r="color: "+this.color;t.splice(1,0,r,"color: inherit");var o=0,i=0;t[0].replace(/%[a-zA-Z%]/g,function(t){"%%"!==t&&(o++,"%c"===t&&(i=o))}),t.splice(i,0,r)}}function s(){return"object"===("undefined"==typeof console?"undefined":p(console))&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function a(t){try{null==t?e.storage.removeItem("debug"):e.storage.debug=t}catch(n){}}function c(){var t;try{t=e.storage.debug}catch(n){}return!t&&"undefined"!=typeof r&&"env"in r&&(t=r.env.DEBUG),t}function u(){try{return window.localStorage}catch(t){}}var p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};e=t.exports=n(9),e.log=s,e.formatArgs=i,e.save=a,e.load=c,e.useColors=o,e.storage="undefined"!=typeof chrome&&"undefined"!=typeof chrome.storage?chrome.storage.local:u(),e.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],e.formatters.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},e.enable(c())}).call(e,n(4))},function(t,e,n){"use strict";function r(t){var n,r=0;for(n in t)r=(r<<5)-r+t.charCodeAt(n),r|=0;return e.colors[Math.abs(r)%e.colors.length]}function o(t){function n(){if(n.enabled){var t=n,r=+new Date,i=r-(o||r);t.diff=i,t.prev=o,t.curr=r,o=r;for(var s=new Array(arguments.length),a=0;a100)){var e=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(e){var n=parseFloat(e[1]),r=(e[2]||"ms").toLowerCase();switch(r){case"years":case"year":case"yrs":case"yr":case"y":return n*p;case"days":case"day":case"d":return n*u;case"hours":case"hour":case"hrs":case"hr":case"h":return n*c;case"minutes":case"minute":case"mins":case"min":case"m":return n*a;case"seconds":case"second":case"secs":case"sec":case"s":return n*s;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function r(t){return t>=u?Math.round(t/u)+"d":t>=c?Math.round(t/c)+"h":t>=a?Math.round(t/a)+"m":t>=s?Math.round(t/s)+"s":t+"ms"}function o(t){return i(t,u,"day")||i(t,c,"hour")||i(t,a,"minute")||i(t,s,"second")||t+" ms"}function i(t,e,n){if(!(t0)return n(t);if("number"===i&&isNaN(t)===!1)return e["long"]?o(t):r(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))}},function(t,e,n){function r(t){if(t)return o(t)}function o(t){for(var e in r.prototype)t[e]=r.prototype[e];return t}t.exports=r,r.prototype.on=r.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},r.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this},r.prototype.off=r.prototype.removeListener=r.prototype.removeAllListeners=r.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n=this._callbacks["$"+t];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var r,o=0;o0&&!this.encoding){var t=this.packetBuffer.shift();this.packet(t)}},r.prototype.cleanup=function(){p("cleanup");for(var t=this.subs.length,e=0;e=this._reconnectionAttempts)p("reconnect failed"),this.backoff.reset(),this.emitAll("reconnect_failed"),this.reconnecting=!1;else{var e=this.backoff.duration();p("will wait %dms before reconnect attempt",e),this.reconnecting=!0;var n=setTimeout(function(){t.skipReconnect||(p("attempting reconnect"),t.emitAll("reconnect_attempt",t.backoff.attempts),t.emitAll("reconnecting",t.backoff.attempts),t.skipReconnect||t.open(function(e){e?(p("reconnect attempt error"),t.reconnecting=!1,t.reconnect(),t.emitAll("reconnect_error",e.data)):(p("reconnect success"),t.onreconnect())}))},e);this.subs.push({destroy:function(){clearTimeout(n)}})}},r.prototype.onreconnect=function(){var t=this.backoff.attempts;this.reconnecting=!1,this.backoff.reset(),this.updateSocketIds(),this.emitAll("reconnect",t)}},function(t,e,n){t.exports=n(17),t.exports.parser=n(24)},function(t,e,n){function r(t,e){return this instanceof r?(e=e||{},t&&"object"==typeof t&&(e=t,t=null),t?(t=p(t),e.hostname=t.host,e.secure="https"===t.protocol||"wss"===t.protocol,e.port=t.port,t.query&&(e.query=t.query)):e.host&&(e.hostname=p(e.host).host),this.secure=null!=e.secure?e.secure:"undefined"!=typeof location&&"https:"===location.protocol,e.hostname&&!e.port&&(e.port=this.secure?"443":"80"),this.agent=e.agent||!1,this.hostname=e.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=e.port||("undefined"!=typeof location&&location.port?location.port:this.secure?443:80),this.query=e.query||{},"string"==typeof this.query&&(this.query=h.decode(this.query)),this.upgrade=!1!==e.upgrade,this.path=(e.path||"/engine.io").replace(/\/$/,"")+"/",this.forceJSONP=!!e.forceJSONP,this.jsonp=!1!==e.jsonp,this.forceBase64=!!e.forceBase64,this.enablesXDR=!!e.enablesXDR,this.withCredentials=!1!==e.withCredentials,this.timestampParam=e.timestampParam||"t",this.timestampRequests=e.timestampRequests,this.transports=e.transports||["polling","websocket"],this.transportOptions=e.transportOptions||{},this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.policyPort=e.policyPort||843,this.rememberUpgrade=e.rememberUpgrade||!1,this.binaryType=null,this.onlyBinaryUpgrades=e.onlyBinaryUpgrades,this.perMessageDeflate=!1!==e.perMessageDeflate&&(e.perMessageDeflate||{}),!0===this.perMessageDeflate&&(this.perMessageDeflate={}),this.perMessageDeflate&&null==this.perMessageDeflate.threshold&&(this.perMessageDeflate.threshold=1024),this.pfx=e.pfx||null,this.key=e.key||null,this.passphrase=e.passphrase||null,this.cert=e.cert||null,this.ca=e.ca||null,this.ciphers=e.ciphers||null,this.rejectUnauthorized=void 0===e.rejectUnauthorized||e.rejectUnauthorized,this.forceNode=!!e.forceNode,this.isReactNative="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),("undefined"==typeof self||this.isReactNative)&&(e.extraHeaders&&Object.keys(e.extraHeaders).length>0&&(this.extraHeaders=e.extraHeaders),e.localAddress&&(this.localAddress=e.localAddress)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingIntervalTimer=null,this.pingTimeoutTimer=null,void this.open()):new r(t,e)}function o(t){var e={};for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}var i=n(18),s=n(11),a=n(3)("engine.io-client:socket"),c=n(38),u=n(24),p=n(2),h=n(32);t.exports=r,r.priorWebsocketSuccess=!1,s(r.prototype),r.protocol=u.protocol,r.Socket=r,r.Transport=n(23),r.transports=n(18),r.parser=n(24),r.prototype.createTransport=function(t){a('creating transport "%s"',t);var e=o(this.query);e.EIO=u.protocol,e.transport=t;var n=this.transportOptions[t]||{};this.id&&(e.sid=this.id);var r=new i[t]({query:e,socket:this,agent:n.agent||this.agent,hostname:n.hostname||this.hostname,port:n.port||this.port,secure:n.secure||this.secure,path:n.path||this.path,forceJSONP:n.forceJSONP||this.forceJSONP,jsonp:n.jsonp||this.jsonp,forceBase64:n.forceBase64||this.forceBase64,enablesXDR:n.enablesXDR||this.enablesXDR,withCredentials:n.withCredentials||this.withCredentials,timestampRequests:n.timestampRequests||this.timestampRequests,timestampParam:n.timestampParam||this.timestampParam,policyPort:n.policyPort||this.policyPort,pfx:n.pfx||this.pfx,key:n.key||this.key,passphrase:n.passphrase||this.passphrase,cert:n.cert||this.cert,ca:n.ca||this.ca,ciphers:n.ciphers||this.ciphers,rejectUnauthorized:n.rejectUnauthorized||this.rejectUnauthorized,perMessageDeflate:n.perMessageDeflate||this.perMessageDeflate,extraHeaders:n.extraHeaders||this.extraHeaders,forceNode:n.forceNode||this.forceNode,localAddress:n.localAddress||this.localAddress,requestTimeout:n.requestTimeout||this.requestTimeout,protocols:n.protocols||void 0,isReactNative:this.isReactNative});return r},r.prototype.open=function(){var t;if(this.rememberUpgrade&&r.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1)t="websocket";else{ -if(0===this.transports.length){var e=this;return void setTimeout(function(){e.emit("error","No transports available")},0)}t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(n){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)},r.prototype.setTransport=function(t){a("setting transport %s",t.name);var e=this;this.transport&&(a("clearing existing transport %s",this.transport.name),this.transport.removeAllListeners()),this.transport=t,t.on("drain",function(){e.onDrain()}).on("packet",function(t){e.onPacket(t)}).on("error",function(t){e.onError(t)}).on("close",function(){e.onClose("transport close")})},r.prototype.probe=function(t){function e(){if(f.onlyBinaryUpgrades){var e=!this.supportsBinary&&f.transport.supportsBinary;h=h||e}h||(a('probe transport "%s" opened',t),p.send([{type:"ping",data:"probe"}]),p.once("packet",function(e){if(!h)if("pong"===e.type&&"probe"===e.data){if(a('probe transport "%s" pong',t),f.upgrading=!0,f.emit("upgrading",p),!p)return;r.priorWebsocketSuccess="websocket"===p.name,a('pausing current transport "%s"',f.transport.name),f.transport.pause(function(){h||"closed"!==f.readyState&&(a("changing transport and sending upgrade packet"),u(),f.setTransport(p),p.send([{type:"upgrade"}]),f.emit("upgrade",p),p=null,f.upgrading=!1,f.flush())})}else{a('probe transport "%s" failed',t);var n=new Error("probe error");n.transport=p.name,f.emit("upgradeError",n)}}))}function n(){h||(h=!0,u(),p.close(),p=null)}function o(e){var r=new Error("probe error: "+e);r.transport=p.name,n(),a('probe transport "%s" failed because of error: %s',t,e),f.emit("upgradeError",r)}function i(){o("transport closed")}function s(){o("socket closed")}function c(t){p&&t.name!==p.name&&(a('"%s" works - aborting "%s"',t.name,p.name),n())}function u(){p.removeListener("open",e),p.removeListener("error",o),p.removeListener("close",i),f.removeListener("close",s),f.removeListener("upgrading",c)}a('probing transport "%s"',t);var p=this.createTransport(t,{probe:1}),h=!1,f=this;r.priorWebsocketSuccess=!1,p.once("open",e),p.once("error",o),p.once("close",i),this.once("close",s),this.once("upgrading",c),p.open()},r.prototype.onOpen=function(){if(a("socket open"),this.readyState="open",r.priorWebsocketSuccess="websocket"===this.transport.name,this.emit("open"),this.flush(),"open"===this.readyState&&this.upgrade&&this.transport.pause){a("starting upgrade probes");for(var t=0,e=this.upgrades.length;t1?{type:b[o],data:t.substring(1)}:{type:b[o]}:C}var i=new Uint8Array(t),o=i[0],s=f(t,1);return w&&"blob"===n&&(s=new w([s])),{type:b[o],data:s}},e.decodeBase64Packet=function(t,e){var n=b[t.charAt(0)];if(!u)return{type:n,data:{base64:!0,data:t.substr(1)}};var r=u.decode(t.substr(1));return"blob"===e&&w&&(r=new w([r])),{type:n,data:r}},e.encodePayload=function(t,n,r){function o(t){return t.length+":"+t}function i(t,r){e.encodePacket(t,!!s&&n,!1,function(t){r(null,o(t))})}"function"==typeof n&&(r=n,n=null);var s=h(t);return n&&s?w&&!g?e.encodePayloadAsBlob(t,r):e.encodePayloadAsArrayBuffer(t,r):t.length?void c(t,i,function(t,e){return r(e.join(""))}):r("0:")},e.decodePayload=function(t,n,r){if("string"!=typeof t)return e.decodePayloadAsBinary(t,n,r);"function"==typeof n&&(r=n,n=null);var o;if(""===t)return r(C,0,1);for(var i,s,a="",c=0,u=t.length;c0;){for(var s=new Uint8Array(o),a=0===s[0],c="",u=1;255!==s[u];u++){if(c.length>310)return r(C,0,1);c+=s[u]}o=f(o,2+c.length),c=parseInt(c);var p=f(o,0,c);if(a)try{p=String.fromCharCode.apply(null,new Uint8Array(p))}catch(h){var l=new Uint8Array(p);p="";for(var u=0;ur&&(n=r),e>=r||e>=n||0===r)return new ArrayBuffer(0);for(var o=new Uint8Array(t),i=new Uint8Array(n-e),s=e,a=0;s=55296&&e<=56319&&o65535&&(e-=65536,o+=d(e>>>10&1023|55296),e=56320|1023&e),o+=d(e);return o}function o(t,e){if(t>=55296&&t<=57343){if(e)throw Error("Lone surrogate U+"+t.toString(16).toUpperCase()+" is not a scalar value");return!1}return!0}function i(t,e){return d(t>>e&63|128)}function s(t,e){if(0==(4294967168&t))return d(t);var n="";return 0==(4294965248&t)?n=d(t>>6&31|192):0==(4294901760&t)?(o(t,e)||(t=65533),n=d(t>>12&15|224),n+=i(t,6)):0==(4292870144&t)&&(n=d(t>>18&7|240),n+=i(t,12),n+=i(t,6)),n+=d(63&t|128)}function a(t,e){e=e||{};for(var r,o=!1!==e.strict,i=n(t),a=i.length,c=-1,u="";++c=f)throw Error("Invalid byte index");var t=255&h[l];if(l++,128==(192&t))return 63&t;throw Error("Invalid continuation byte")}function u(t){var e,n,r,i,s;if(l>f)throw Error("Invalid byte index");if(l==f)return!1;if(e=255&h[l],l++,0==(128&e))return e;if(192==(224&e)){if(n=c(),s=(31&e)<<6|n,s>=128)return s;throw Error("Invalid continuation byte")}if(224==(240&e)){if(n=c(),r=c(),s=(15&e)<<12|n<<6|r,s>=2048)return o(s,t)?s:65533;throw Error("Invalid continuation byte")}if(240==(248&e)&&(n=c(),r=c(),i=c(),s=(7&e)<<18|n<<12|r<<6|i,s>=65536&&s<=1114111))return s;throw Error("Invalid UTF-8 detected")}function p(t,e){e=e||{};var o=!1!==e.strict;h=n(t),f=h.length,l=0;for(var i,s=[];(i=u(o))!==!1;)s.push(i);return r(s)}/*! https://mths.be/utf8js v2.1.2 by @mathias */ -var h,f,l,d=String.fromCharCode;t.exports={version:"2.1.2",encode:a,decode:p}},function(t,e){!function(){"use strict";for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n=new Uint8Array(256),r=0;r>2],i+=t[(3&r[n])<<4|r[n+1]>>4],i+=t[(15&r[n+1])<<2|r[n+2]>>6],i+=t[63&r[n+2]];return o%3===2?i=i.substring(0,i.length-1)+"=":o%3===1&&(i=i.substring(0,i.length-2)+"=="),i},e.decode=function(t){var e,r,o,i,s,a=.75*t.length,c=t.length,u=0;"="===t[t.length-1]&&(a--,"="===t[t.length-2]&&a--);var p=new ArrayBuffer(a),h=new Uint8Array(p);for(e=0;e>4,h[u++]=(15&o)<<4|i>>2,h[u++]=(3&i)<<6|63&s;return p}}()},function(t,e){function n(t){return t.map(function(t){if(t.buffer instanceof ArrayBuffer){var e=t.buffer;if(t.byteLength!==e.byteLength){var n=new Uint8Array(t.byteLength);n.set(new Uint8Array(e,t.byteOffset,t.byteLength)),e=n.buffer}return e}return t})}function r(t,e){e=e||{};var r=new i;return n(t).forEach(function(t){r.append(t)}),e.type?r.getBlob(e.type):r.getBlob()}function o(t,e){return new Blob(n(t),e||{})}var i="undefined"!=typeof i?i:"undefined"!=typeof WebKitBlobBuilder?WebKitBlobBuilder:"undefined"!=typeof MSBlobBuilder?MSBlobBuilder:"undefined"!=typeof MozBlobBuilder&&MozBlobBuilder,s=function(){try{var t=new Blob(["hi"]);return 2===t.size}catch(e){return!1}}(),a=s&&function(){try{var t=new Blob([new Uint8Array([1,2])]);return 2===t.size}catch(e){return!1}}(),c=i&&i.prototype.append&&i.prototype.getBlob;"undefined"!=typeof Blob&&(r.prototype=Blob.prototype,o.prototype=Blob.prototype),t.exports=function(){return s?a?Blob:o:c?r:void 0}()},function(t,e){e.encode=function(t){var e="";for(var n in t)t.hasOwnProperty(n)&&(e.length&&(e+="&"),e+=encodeURIComponent(n)+"="+encodeURIComponent(t[n]));return e},e.decode=function(t){for(var e={},n=t.split("&"),r=0,o=n.length;r0);return e}function r(t){var e=0;for(p=0;p';i=document.createElement(e)}catch(t){i=document.createElement("iframe"),i.name=o.iframeId,i.src="javascript:0"}i.id=o.iframeId,o.form.appendChild(i),o.iframe=i}var o=this;if(!this.form){var i,s=document.createElement("form"),a=document.createElement("textarea"),c=this.iframeId="eio_iframe_"+this.index;s.className="socketio",s.style.position="absolute",s.style.top="-1000px",s.style.left="-1000px",s.target=c,s.method="POST",s.setAttribute("accept-charset","utf-8"),a.name="d",s.appendChild(a),document.body.appendChild(s),this.form=s,this.area=a}this.form.action=this.uri(),r(),t=t.replace(p,"\\\n"),this.area.value=t.replace(u,"\\n");try{this.form.submit()}catch(h){}this.iframe.attachEvent?this.iframe.onreadystatechange=function(){"complete"===o.iframe.readyState&&n()}:this.iframe.onload=n}}).call(e,function(){return this}())},function(t,e,n){function r(t){var e=t&&t.forceBase64;e&&(this.supportsBinary=!1),this.perMessageDeflate=t.perMessageDeflate,this.usingBrowserWebSocket=o&&!t.forceNode,this.protocols=t.protocols,this.usingBrowserWebSocket||(l=i),s.call(this,t)}var o,i,s=n(23),a=n(24),c=n(32),u=n(33),p=n(34),h=n(3)("engine.io-client:websocket");if("undefined"!=typeof WebSocket?o=WebSocket:"undefined"!=typeof self&&(o=self.WebSocket||self.MozWebSocket),"undefined"==typeof window)try{i=n(37)}catch(f){}var l=o||i;t.exports=r,u(r,s),r.prototype.name="websocket",r.prototype.supportsBinary=!0,r.prototype.doOpen=function(){if(this.check()){var t=this.uri(),e=this.protocols,n={agent:this.agent,perMessageDeflate:this.perMessageDeflate};n.pfx=this.pfx,n.key=this.key,n.passphrase=this.passphrase,n.cert=this.cert,n.ca=this.ca,n.ciphers=this.ciphers,n.rejectUnauthorized=this.rejectUnauthorized,this.extraHeaders&&(n.headers=this.extraHeaders),this.localAddress&&(n.localAddress=this.localAddress);try{this.ws=this.usingBrowserWebSocket&&!this.isReactNative?e?new l(t,e):new l(t):new l(t,e,n)}catch(r){return this.emit("error",r)}void 0===this.ws.binaryType&&(this.supportsBinary=!1),this.ws.supports&&this.ws.supports.binary?(this.supportsBinary=!0,this.ws.binaryType="nodebuffer"):this.ws.binaryType="arraybuffer",this.addEventListeners()}},r.prototype.addEventListeners=function(){var t=this;this.ws.onopen=function(){t.onOpen()},this.ws.onclose=function(){t.onClose()},this.ws.onmessage=function(e){t.onData(e.data)},this.ws.onerror=function(e){t.onError("websocket error",e)}},r.prototype.write=function(t){function e(){n.emit("flush"),setTimeout(function(){n.writable=!0,n.emit("drain")},0)}var n=this;this.writable=!1;for(var r=t.length,o=0,i=r;o0&&t.jitter<=1?t.jitter:0,this.attempts=0}t.exports=n,n.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),n=Math.floor(e*this.jitter*t);t=0==(1&Math.floor(10*e))?t-n:t+n}return 0|Math.min(t,this.max)},n.prototype.reset=function(){this.attempts=0},n.prototype.setMin=function(t){this.ms=t},n.prototype.setMax=function(t){this.max=t},n.prototype.setJitter=function(t){this.jitter=t}}])}); +/*! For license information please see socket.io.js.LICENSE.txt */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.io=e():t.io=e()}(this,(function(){return function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:!1};return t[n].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var r={};return e.m=t,e.c=r,e.p="",e(0)}([function(t,e,r){"use strict";function n(t,e){"object"===(void 0===t?"undefined":o(t))&&(e=t,t=void 0),e=e||{};var r,n=i(t),s=n.source,p=n.id,h=n.path,u=c[p]&&h in c[p].nsps;return e.forceNew||e["force new connection"]||!1===e.multiplex||u?r=a(s,e):(c[p]||(c[p]=a(s,e)),r=c[p]),n.query&&!e.query&&(e.query=n.query),r.socket(n.path,e)}var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=r(1),s=r(4),a=r(9);r(3)("socket.io-client"),t.exports=e=n;var c=e.managers={};e.protocol=s.protocol,e.connect=n,e.Manager=r(9),e.Socket=r(34)},function(t,e,r){"use strict";var n=r(2);r(3)("socket.io-client:url"),t.exports=function(t,e){var r=t;e=e||"undefined"!=typeof location&&location,null==t&&(t=e.protocol+"//"+e.host),"string"==typeof t&&("/"===t.charAt(0)&&(t="/"===t.charAt(1)?e.protocol+t:e.host+t),/^(https?|wss?):\/\//.test(t)||(t=void 0!==e?e.protocol+"//"+t:"https://"+t),r=n(t)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";var o=-1!==r.host.indexOf(":")?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+o+":"+r.port,r.href=r.protocol+"://"+o+(e&&e.port===r.port?"":":"+r.port),r}},function(t,e){var r=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,n=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];t.exports=function(t){var e=t,o=t.indexOf("["),i=t.indexOf("]");-1!=o&&-1!=i&&(t=t.substring(0,o)+t.substring(o,i).replace(/:/g,";")+t.substring(i,t.length));for(var s=r.exec(t||""),a={},c=14;c--;)a[n[c]]=s[c]||"";return-1!=o&&-1!=i&&(a.source=e,a.host=a.host.substring(1,a.host.length-1).replace(/;/g,":"),a.authority=a.authority.replace("[","").replace("]","").replace(/;/g,":"),a.ipv6uri=!0),a.pathNames=function(t,e){var r=e.replace(/\/{2,9}/g,"/").split("/");return"/"!=e.substr(0,1)&&0!==e.length||r.splice(0,1),"/"==e.substr(e.length-1,1)&&r.splice(r.length-1,1),r}(0,a.path),a.queryKey=function(t,e){var r={};return e.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(t,e,n){e&&(r[e]=n)})),r}(0,a.query),a}},function(t,e){"use strict";t.exports=function(){return function(){}}},function(t,e,r){function n(){}function o(t){var r=""+t.type;if(e.BINARY_EVENT!==t.type&&e.BINARY_ACK!==t.type||(r+=t.attachments+"-"),t.nsp&&"/"!==t.nsp&&(r+=t.nsp+","),null!=t.id&&(r+=t.id),null!=t.data){var n=function(t){try{return JSON.stringify(t)}catch(t){return!1}}(t.data);if(!1===n)return f;r+=n}return r}function i(){this.reconstructor=null}function s(t){this.reconPack=t,this.buffers=[]}function a(t){return{type:e.ERROR,data:"parser error: "+t}}var c=(r(3)("socket.io-parser"),r(5)),p=r(6),h=r(7),u=r(8);e.protocol=4,e.types=["CONNECT","DISCONNECT","EVENT","ACK","ERROR","BINARY_EVENT","BINARY_ACK"],e.CONNECT=0,e.DISCONNECT=1,e.EVENT=2,e.ACK=3,e.ERROR=4,e.BINARY_EVENT=5,e.BINARY_ACK=6,e.Encoder=n,e.Decoder=i;var f=e.ERROR+'"encode error"';n.prototype.encode=function(t,r){e.BINARY_EVENT===t.type||e.BINARY_ACK===t.type?function(t,e){p.removeBlobs(t,(function(t){var r=p.deconstructPacket(t),n=o(r.packet),i=r.buffers;i.unshift(n),e(i)}))}(t,r):r([o(t)])},c(i.prototype),i.prototype.add=function(t){var r;if("string"==typeof t)r=function(t){var r=0,n={type:Number(t.charAt(0))};if(null==e.types[n.type])return a("unknown packet type "+n.type);if(e.BINARY_EVENT===n.type||e.BINARY_ACK===n.type){for(var o="";"-"!==t.charAt(++r)&&(o+=t.charAt(r),r!=t.length););if(o!=Number(o)||"-"!==t.charAt(r))throw new Error("Illegal attachments");n.attachments=Number(o)}if("/"===t.charAt(r+1))for(n.nsp="";++r&&","!==(s=t.charAt(r))&&(n.nsp+=s,r!==t.length););else n.nsp="/";var i=t.charAt(r+1);if(""!==i&&Number(i)==i){for(n.id="";++r;){var s;if(null==(s=t.charAt(r))||Number(s)!=s){--r;break}if(n.id+=t.charAt(r),r===t.length)break}n.id=Number(n.id)}if(t.charAt(++r)){var c=function(t){try{return JSON.parse(t)}catch(t){return!1}}(t.substr(r));if(!1===c||n.type!==e.ERROR&&!h(c))return a("invalid payload");n.data=c}return n}(t),e.BINARY_EVENT===r.type||e.BINARY_ACK===r.type?(this.reconstructor=new s(r),0===this.reconstructor.reconPack.attachments&&this.emit("decoded",r)):this.emit("decoded",r);else{if(!u(t)&&!t.base64)throw new Error("Unknown type: "+t);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");(r=this.reconstructor.takeBinaryData(t))&&(this.reconstructor=null,this.emit("decoded",r))}},i.prototype.destroy=function(){this.reconstructor&&this.reconstructor.finishedReconstruction()},s.prototype.takeBinaryData=function(t){if(this.buffers.push(t),this.buffers.length===this.reconPack.attachments){var e=p.reconstructPacket(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null},s.prototype.finishedReconstruction=function(){this.reconPack=null,this.buffers=[]}},function(t,e,r){function n(t){if(t)return function(t){for(var e in n.prototype)t[e]=n.prototype[e];return t}(t)}t.exports=n,n.prototype.on=n.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},n.prototype.once=function(t,e){function r(){this.off(t,r),e.apply(this,arguments)}return r.fn=e,this.on(t,r),this},n.prototype.off=n.prototype.removeListener=n.prototype.removeAllListeners=n.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var r=this._callbacks["$"+t];if(!r)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var n,o=0;o0&&!this.encoding){var t=this.packetBuffer.shift();this.packet(t)}},n.prototype.cleanup=function(){for(var t=this.subs.length,e=0;e=this._reconnectionAttempts)this.backoff.reset(),this.emitAll("reconnect_failed"),this.reconnecting=!1;else{var e=this.backoff.duration();this.reconnecting=!0;var r=setTimeout((function(){t.skipReconnect||(t.emitAll("reconnect_attempt",t.backoff.attempts),t.emitAll("reconnecting",t.backoff.attempts),t.skipReconnect||t.open((function(e){e?(t.reconnecting=!1,t.reconnect(),t.emitAll("reconnect_error",e.data)):t.onreconnect()})))}),e);this.subs.push({destroy:function(){clearTimeout(r)}})}},n.prototype.onreconnect=function(){var t=this.backoff.attempts;this.reconnecting=!1,this.backoff.reset(),this.updateSocketIds(),this.emitAll("reconnect",t)}},function(t,e,r){t.exports=r(11),t.exports.parser=r(19)},function(t,e,r){function n(t,e){return this instanceof n?(e=e||{},t&&"object"==typeof t&&(e=t,t=null),t?(t=c(t),e.hostname=t.host,e.secure="https"===t.protocol||"wss"===t.protocol,e.port=t.port,t.query&&(e.query=t.query)):e.host&&(e.hostname=c(e.host).host),this.secure=null!=e.secure?e.secure:"undefined"!=typeof location&&"https:"===location.protocol,e.hostname&&!e.port&&(e.port=this.secure?"443":"80"),this.agent=e.agent||!1,this.hostname=e.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=e.port||("undefined"!=typeof location&&location.port?location.port:this.secure?443:80),this.query=e.query||{},"string"==typeof this.query&&(this.query=p.decode(this.query)),this.upgrade=!1!==e.upgrade,this.path=(e.path||"/engine.io").replace(/\/$/,"")+"/",this.forceJSONP=!!e.forceJSONP,this.jsonp=!1!==e.jsonp,this.forceBase64=!!e.forceBase64,this.enablesXDR=!!e.enablesXDR,this.withCredentials=!1!==e.withCredentials,this.timestampParam=e.timestampParam||"t",this.timestampRequests=e.timestampRequests,this.transports=e.transports||["polling","websocket"],this.transportOptions=e.transportOptions||{},this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.policyPort=e.policyPort||843,this.rememberUpgrade=e.rememberUpgrade||!1,this.binaryType=null,this.onlyBinaryUpgrades=e.onlyBinaryUpgrades,this.perMessageDeflate=!1!==e.perMessageDeflate&&(e.perMessageDeflate||{}),!0===this.perMessageDeflate&&(this.perMessageDeflate={}),this.perMessageDeflate&&null==this.perMessageDeflate.threshold&&(this.perMessageDeflate.threshold=1024),this.pfx=e.pfx||null,this.key=e.key||null,this.passphrase=e.passphrase||null,this.cert=e.cert||null,this.ca=e.ca||null,this.ciphers=e.ciphers||null,this.rejectUnauthorized=void 0===e.rejectUnauthorized||e.rejectUnauthorized,this.forceNode=!!e.forceNode,this.isReactNative="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),("undefined"==typeof self||this.isReactNative)&&(e.extraHeaders&&Object.keys(e.extraHeaders).length>0&&(this.extraHeaders=e.extraHeaders),e.localAddress&&(this.localAddress=e.localAddress)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingIntervalTimer=null,this.pingTimeoutTimer=null,void this.open()):new n(t,e)}var o=r(12),i=r(5),s=(r(3)("engine.io-client:socket"),r(33)),a=r(19),c=r(2),p=r(27);t.exports=n,n.priorWebsocketSuccess=!1,i(n.prototype),n.protocol=a.protocol,n.Socket=n,n.Transport=r(18),n.transports=r(12),n.parser=r(19),n.prototype.createTransport=function(t){var e=function(t){var e={};for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e}(this.query);e.EIO=a.protocol,e.transport=t;var r=this.transportOptions[t]||{};return this.id&&(e.sid=this.id),new o[t]({query:e,socket:this,agent:r.agent||this.agent,hostname:r.hostname||this.hostname,port:r.port||this.port,secure:r.secure||this.secure,path:r.path||this.path,forceJSONP:r.forceJSONP||this.forceJSONP,jsonp:r.jsonp||this.jsonp,forceBase64:r.forceBase64||this.forceBase64,enablesXDR:r.enablesXDR||this.enablesXDR,withCredentials:r.withCredentials||this.withCredentials,timestampRequests:r.timestampRequests||this.timestampRequests,timestampParam:r.timestampParam||this.timestampParam,policyPort:r.policyPort||this.policyPort,pfx:r.pfx||this.pfx,key:r.key||this.key,passphrase:r.passphrase||this.passphrase,cert:r.cert||this.cert,ca:r.ca||this.ca,ciphers:r.ciphers||this.ciphers,rejectUnauthorized:r.rejectUnauthorized||this.rejectUnauthorized,perMessageDeflate:r.perMessageDeflate||this.perMessageDeflate,extraHeaders:r.extraHeaders||this.extraHeaders,forceNode:r.forceNode||this.forceNode,localAddress:r.localAddress||this.localAddress,requestTimeout:r.requestTimeout||this.requestTimeout,protocols:r.protocols||void 0,isReactNative:this.isReactNative})},n.prototype.open=function(){var t;if(this.rememberUpgrade&&n.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))t="websocket";else{if(0===this.transports.length){var e=this;return void setTimeout((function(){e.emit("error","No transports available")}),0)}t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(t){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)},n.prototype.setTransport=function(t){var e=this;this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",(function(){e.onDrain()})).on("packet",(function(t){e.onPacket(t)})).on("error",(function(t){e.onError(t)})).on("close",(function(){e.onClose("transport close")}))},n.prototype.probe=function(t){function e(){if(u.onlyBinaryUpgrades){var t=!this.supportsBinary&&u.transport.supportsBinary;h=h||t}h||(p.send([{type:"ping",data:"probe"}]),p.once("packet",(function(t){if(!h)if("pong"===t.type&&"probe"===t.data){if(u.upgrading=!0,u.emit("upgrading",p),!p)return;n.priorWebsocketSuccess="websocket"===p.name,u.transport.pause((function(){h||"closed"!==u.readyState&&(c(),u.setTransport(p),p.send([{type:"upgrade"}]),u.emit("upgrade",p),p=null,u.upgrading=!1,u.flush())}))}else{var e=new Error("probe error");e.transport=p.name,u.emit("upgradeError",e)}})))}function r(){h||(h=!0,c(),p.close(),p=null)}function o(t){var e=new Error("probe error: "+t);e.transport=p.name,r(),u.emit("upgradeError",e)}function i(){o("transport closed")}function s(){o("socket closed")}function a(t){p&&t.name!==p.name&&r()}function c(){p.removeListener("open",e),p.removeListener("error",o),p.removeListener("close",i),u.removeListener("close",s),u.removeListener("upgrading",a)}var p=this.createTransport(t,{probe:1}),h=!1,u=this;n.priorWebsocketSuccess=!1,p.once("open",e),p.once("error",o),p.once("close",i),this.once("close",s),this.once("upgrading",a),p.open()},n.prototype.onOpen=function(){if(this.readyState="open",n.priorWebsocketSuccess="websocket"===this.transport.name,this.emit("open"),this.flush(),"open"===this.readyState&&this.upgrade&&this.transport.pause)for(var t=0,e=this.upgrades.length;t1?{type:g[o],data:t.substring(1)}:{type:g[o]}:v}o=new Uint8Array(t)[0];var i=h(t,1);return b&&"blob"===r&&(i=new b([i])),{type:g[o],data:i}},e.decodeBase64Packet=function(t,e){var r=g[t.charAt(0)];if(!a)return{type:r,data:{base64:!0,data:t.substr(1)}};var n=a.decode(t.substr(1));return"blob"===e&&b&&(n=new b([n])),{type:r,data:n}},e.encodePayload=function(t,r,n){"function"==typeof r&&(n=r,r=null);var o=p(t);return r&&o?b&&!y?e.encodePayloadAsBlob(t,n):e.encodePayloadAsArrayBuffer(t,n):t.length?void s(t,(function(t,n){e.encodePacket(t,!!o&&r,!1,(function(t){n(null,function(t){return t.length+":"+t}(t))}))}),(function(t,e){return n(e.join(""))})):n("0:")},e.decodePayload=function(t,r,n){if("string"!=typeof t)return e.decodePayloadAsBinary(t,r,n);var o;if("function"==typeof r&&(n=r,r=null),""===t)return n(v,0,1);for(var i,s,a="",c=0,p=t.length;c0;){for(var s=new Uint8Array(o),a=0===s[0],c="",p=1;255!==s[p];p++){if(c.length>310)return n(v,0,1);c+=s[p]}o=h(o,2+c.length),c=parseInt(c);var u=h(o,0,c);if(a)try{u=String.fromCharCode.apply(null,new Uint8Array(u))}catch(t){var f=new Uint8Array(u);for(u="",p=0;pn&&(r=n),e>=n||e>=r||0===n)return new ArrayBuffer(0);for(var o=new Uint8Array(t),i=new Uint8Array(r-e),s=e,a=0;s=55296&&e<=56319&&o=55296&&t<=57343){if(e)throw Error("Lone surrogate U+"+t.toString(16).toUpperCase()+" is not a scalar value");return!1}return!0}function o(t,e){return u(t>>e&63|128)}function i(t,e){if(0==(4294967168&t))return u(t);var r="";return 0==(4294965248&t)?r=u(t>>6&31|192):0==(4294901760&t)?(n(t,e)||(t=65533),r=u(t>>12&15|224),r+=o(t,6)):0==(4292870144&t)&&(r=u(t>>18&7|240),r+=o(t,12),r+=o(t,6)),r+u(63&t|128)}function s(){if(h>=p)throw Error("Invalid byte index");var t=255&c[h];if(h++,128==(192&t))return 63&t;throw Error("Invalid continuation byte")}function a(t){var e,r;if(h>p)throw Error("Invalid byte index");if(h==p)return!1;if(e=255&c[h],h++,0==(128&e))return e;if(192==(224&e)){if((r=(31&e)<<6|s())>=128)return r;throw Error("Invalid continuation byte")}if(224==(240&e)){if((r=(15&e)<<12|s()<<6|s())>=2048)return n(r,t)?r:65533;throw Error("Invalid continuation byte")}if(240==(248&e)&&(r=(7&e)<<18|s()<<12|s()<<6|s())>=65536&&r<=1114111)return r;throw Error("Invalid UTF-8 detected")}var c,p,h,u=String.fromCharCode;t.exports={version:"2.1.2",encode:function(t,e){for(var n=!1!==(e=e||{}).strict,o=r(t),s=o.length,a=-1,c="";++a65535&&(o+=u((e-=65536)>>>10&1023|55296),e=56320|1023&e),o+=u(e);return o}(i)}}},function(t,e){!function(t){"use strict";e.encode=function(e){var r,n=new Uint8Array(e),o=n.length,i="";for(r=0;r>2],i+=t[(3&n[r])<<4|n[r+1]>>4],i+=t[(15&n[r+1])<<2|n[r+2]>>6],i+=t[63&n[r+2]];return o%3==2?i=i.substring(0,i.length-1)+"=":o%3==1&&(i=i.substring(0,i.length-2)+"=="),i},e.decode=function(e){var r,n,o,i,s,a=.75*e.length,c=e.length,p=0;"="===e[e.length-1]&&(a--,"="===e[e.length-2]&&a--);var h=new ArrayBuffer(a),u=new Uint8Array(h);for(r=0;r>4,u[p++]=(15&o)<<4|i>>2,u[p++]=(3&i)<<6|63&s;return h}}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")},function(t,e){function r(t){return t.map((function(t){if(t.buffer instanceof ArrayBuffer){var e=t.buffer;if(t.byteLength!==e.byteLength){var r=new Uint8Array(t.byteLength);r.set(new Uint8Array(e,t.byteOffset,t.byteLength)),e=r.buffer}return e}return t}))}function n(t,e){e=e||{};var n=new i;return r(t).forEach((function(t){n.append(t)})),e.type?n.getBlob(e.type):n.getBlob()}function o(t,e){return new Blob(r(t),e||{})}var i=void 0!==i?i:"undefined"!=typeof WebKitBlobBuilder?WebKitBlobBuilder:"undefined"!=typeof MSBlobBuilder?MSBlobBuilder:"undefined"!=typeof MozBlobBuilder&&MozBlobBuilder,s=function(){try{return 2===new Blob(["hi"]).size}catch(t){return!1}}(),a=s&&function(){try{return 2===new Blob([new Uint8Array([1,2])]).size}catch(t){return!1}}(),c=i&&i.prototype.append&&i.prototype.getBlob;"undefined"!=typeof Blob&&(n.prototype=Blob.prototype,o.prototype=Blob.prototype),t.exports=s?a?Blob:o:c?n:void 0},function(t,e){e.encode=function(t){var e="";for(var r in t)t.hasOwnProperty(r)&&(e.length&&(e+="&"),e+=encodeURIComponent(r)+"="+encodeURIComponent(t[r]));return e},e.decode=function(t){for(var e={},r=t.split("&"),n=0,o=r.length;n0);return e}function n(){var t=r(+new Date);return t!==o?(c=0,o=t):t+"."+r(c++)}for(var o,i="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),s=64,a={},c=0,p=0;p';i=document.createElement(t)}catch(t){(i=document.createElement("iframe")).name=o.iframeId,i.src="javascript:0"}i.id=o.iframeId,o.form.appendChild(i),o.iframe=i}var o=this;if(!this.form){var i,s=document.createElement("form"),a=document.createElement("textarea"),c=this.iframeId="eio_iframe_"+this.index;s.className="socketio",s.style.position="absolute",s.style.top="-1000px",s.style.left="-1000px",s.target=c,s.method="POST",s.setAttribute("accept-charset","utf-8"),a.name="d",s.appendChild(a),document.body.appendChild(s),this.form=s,this.area=a}this.form.action=this.uri(),n(),t=t.replace(h,"\\\n"),this.area.value=t.replace(p,"\\n");try{this.form.submit()}catch(t){}this.iframe.attachEvent?this.iframe.onreadystatechange=function(){"complete"===o.iframe.readyState&&r()}:this.iframe.onload=r}},function(t,e,r){function n(t){t&&t.forceBase64&&(this.supportsBinary=!1),this.perMessageDeflate=t.perMessageDeflate,this.usingBrowserWebSocket=o&&!t.forceNode,this.protocols=t.protocols,this.usingBrowserWebSocket||(u=i),s.call(this,t)}var o,i,s=r(18),a=r(19),c=r(27),p=r(28),h=r(29);if(r(3)("engine.io-client:websocket"),"undefined"!=typeof WebSocket?o=WebSocket:"undefined"!=typeof self&&(o=self.WebSocket||self.MozWebSocket),"undefined"==typeof window)try{i=r(32)}catch(t){}var u=o||i;t.exports=n,p(n,s),n.prototype.name="websocket",n.prototype.supportsBinary=!0,n.prototype.doOpen=function(){if(this.check()){var t=this.uri(),e=this.protocols,r={};this.isReactNative||(r.agent=this.agent,r.perMessageDeflate=this.perMessageDeflate,r.pfx=this.pfx,r.key=this.key,r.passphrase=this.passphrase,r.cert=this.cert,r.ca=this.ca,r.ciphers=this.ciphers,r.rejectUnauthorized=this.rejectUnauthorized),this.extraHeaders&&(r.headers=this.extraHeaders),this.localAddress&&(r.localAddress=this.localAddress);try{this.ws=this.usingBrowserWebSocket&&!this.isReactNative?e?new u(t,e):new u(t):new u(t,e,r)}catch(t){return this.emit("error",t)}void 0===this.ws.binaryType&&(this.supportsBinary=!1),this.ws.supports&&this.ws.supports.binary?(this.supportsBinary=!0,this.ws.binaryType="nodebuffer"):this.ws.binaryType="arraybuffer",this.addEventListeners()}},n.prototype.addEventListeners=function(){var t=this;this.ws.onopen=function(){t.onOpen()},this.ws.onclose=function(){t.onClose()},this.ws.onmessage=function(e){t.onData(e.data)},this.ws.onerror=function(e){t.onError("websocket error",e)}},n.prototype.write=function(t){var e=this;this.writable=!1;for(var r=t.length,n=0,o=r;n0&&t.jitter<=1?t.jitter:0,this.attempts=0}t.exports=r,r.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),r=Math.floor(e*this.jitter*t);t=0==(1&Math.floor(10*e))?t-r:t+r}return 0|Math.min(t,this.max)},r.prototype.reset=function(){this.attempts=0},r.prototype.setMin=function(t){this.ms=t},r.prototype.setMax=function(t){this.max=t},r.prototype.setJitter=function(t){this.jitter=t}}])})); //# sourceMappingURL=socket.io.js.map \ No newline at end of file diff --git a/dist/client/vendor/socket.io.js.LICENSE.txt b/dist/client/vendor/socket.io.js.LICENSE.txt new file mode 100644 index 00000000..6e755669 --- /dev/null +++ b/dist/client/vendor/socket.io.js.LICENSE.txt @@ -0,0 +1,7 @@ +/*! + * Socket.IO v2.3.1 + * (c) 2014-2020 Guillermo Rauch + * Released under the MIT License. + */ + +/*! https://mths.be/utf8js v2.1.2 by @mathias */ diff --git a/dist/client/vendor/socket.io.js.map b/dist/client/vendor/socket.io.js.map index 2c9c4c8a..b1e4080b 100644 --- a/dist/client/vendor/socket.io.js.map +++ b/dist/client/vendor/socket.io.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///socket.io.js","webpack:///webpack/bootstrap 9e45fccfabd75c66dd47","webpack:///./lib/index.js","webpack:///./lib/url.js","webpack:///./~/parseuri/index.js","webpack:///./~/debug/src/browser.js","webpack:///./~/process/browser.js","webpack:///./~/debug/src/common.js","webpack:///./~/ms/index.js","webpack:///./~/socket.io-parser/index.js","webpack:///./~/socket.io-parser/~/debug/src/browser.js","webpack:///./~/socket.io-parser/~/debug/src/debug.js","webpack:///./~/socket.io-parser/~/ms/index.js","webpack:///./~/component-emitter/index.js","webpack:///./~/socket.io-parser/binary.js","webpack:///./~/isarray/index.js","webpack:///./~/socket.io-parser/is-buffer.js","webpack:///./lib/manager.js","webpack:///./~/engine.io-client/lib/index.js","webpack:///./~/engine.io-client/lib/socket.js","webpack:///./~/engine.io-client/lib/transports/index.js","webpack:///./~/engine.io-client/lib/xmlhttprequest.js","webpack:///./~/has-cors/index.js","webpack:///./~/engine.io-client/lib/transports/polling-xhr.js","webpack:///./~/engine.io-client/lib/transports/polling.js","webpack:///./~/engine.io-client/lib/transport.js","webpack:///./~/engine.io-parser/lib/browser.js","webpack:///./~/engine.io-parser/lib/keys.js","webpack:///./~/has-binary2/index.js","webpack:///./~/arraybuffer.slice/index.js","webpack:///./~/after/index.js","webpack:///./~/engine.io-parser/lib/utf8.js","webpack:///./~/base64-arraybuffer/lib/base64-arraybuffer.js","webpack:///./~/blob/index.js","webpack:///./~/parseqs/index.js","webpack:///./~/component-inherit/index.js","webpack:///./~/yeast/index.js","webpack:///./~/engine.io-client/lib/transports/polling-jsonp.js","webpack:///./~/engine.io-client/lib/transports/websocket.js","webpack:///./~/indexof/index.js","webpack:///./lib/socket.js","webpack:///./~/to-array/index.js","webpack:///./lib/on.js","webpack:///./~/component-bind/index.js","webpack:///./~/backo2/index.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","lookup","uri","opts","undefined","io","parsed","url","source","path","sameNamespace","cache","nsps","newConnection","forceNew","multiplex","debug","Manager","query","socket","parser","managers","protocol","connect","Socket","loc","obj","location","host","charAt","test","parseuri","port","ipv6","indexOf","href","re","parts","str","src","b","e","substring","replace","length","exec","i","authority","ipv6uri","process","useColors","window","type","__nwjs","navigator","userAgent","toLowerCase","match","document","documentElement","style","WebkitAppearance","console","firebug","exception","table","parseInt","RegExp","$1","formatArgs","args","namespace","humanize","diff","color","splice","index","lastC","log","_console","_typeof","apply","arguments","save","namespaces","storage","setItem","removeItem","error","load","r","getItem","env","DEBUG","localstorage","localStorage","Symbol","iterator","constructor","prototype","colors","formatters","j","v","JSON","stringify","message","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","cachedSetTimeout","setTimeout","runClearTimeout","marker","cachedClearTimeout","clearTimeout","cleanUpNextTick","draining","currentQueue","queue","concat","queueIndex","drainQueue","timeout","len","run","Item","array","noop","nextTick","Array","push","title","browser","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","name","binding","cwd","chdir","dir","umask","_toConsumableArray","arr","isArray","arr2","from","setup","selectColor","hash","charCodeAt","createDebug","Math","abs","_len","_key","enabled","self","curr","Number","Date","ms","prevTime","prev","coerce","unshift","format","formatter","val","logFn","destroy","extend","init","instances","delimiter","newDebug","enable","names","skips","split","substr","instance","disable","map","toNamespace","join","regexp","toString","stack","Object","keys","forEach","key","parse","String","n","parseFloat","y","w","d","h","s","fmtShort","msAbs","round","fmtLong","plural","isPlural","options","isFinite","Encoder","encodeAsString","BINARY_EVENT","BINARY_ACK","attachments","nsp","data","payload","tryStringify","ERROR_PACKET","encodeAsBinary","callback","writeEncoding","bloblessData","deconstruction","binary","deconstructPacket","pack","packet","buffers","removeBlobs","Decoder","reconstructor","decodeString","types","buf","next","tryParse","isPayloadValid","ERROR","BinaryReconstructor","reconPack","msg","Emitter","isBuf","CONNECT","DISCONNECT","EVENT","ACK","encode","encoding","add","base64","takeBinaryData","finishedReconstruction","binData","reconstructPacket","Function","chrome","local","err","bind","floor","ceil","isNaN","mixin","addEventListener","event","fn","_callbacks","removeEventListener","callbacks","cb","slice","hasListeners","_deconstructPacket","placeholder","_placeholder","num","newData","_reconstructPacket","withNativeBlob","Blob","withNativeFile","File","packetData","_removeBlobs","curKey","containingObject","pendingBlobs","fileReader","FileReader","onload","result","readAsArrayBuffer","withNativeBuffer","Buffer","isBuffer","withNativeArrayBuffer","ArrayBuffer","isView","buffer","subs","reconnection","reconnectionAttempts","Infinity","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","Backoff","min","max","jitter","readyState","connecting","lastPing","packetBuffer","_parser","encoder","decoder","autoConnect","open","eio","has","hasOwnProperty","emitAll","updateSocketIds","generateId","engine","_reconnection","_reconnectionAttempts","_reconnectionDelay","setMin","_randomizationFactor","setJitter","_reconnectionDelayMax","setMax","_timeout","maybeReconnectOnOpen","reconnecting","attempts","reconnect","skipReconnect","openSub","onopen","errorSub","cleanup","timer","close","onping","onpong","ondata","ondecoded","onerror","onConnecting","encodedPackets","write","processPacketQueue","shift","subsLength","sub","disconnect","reset","onclose","reason","delay","duration","onreconnect","attempt","hostname","secure","agent","parseqs","decode","upgrade","forceJSONP","jsonp","forceBase64","enablesXDR","withCredentials","timestampParam","timestampRequests","transports","transportOptions","writeBuffer","prevBufferLen","policyPort","rememberUpgrade","binaryType","onlyBinaryUpgrades","perMessageDeflate","threshold","pfx","passphrase","cert","ca","ciphers","rejectUnauthorized","forceNode","isReactNative","product","extraHeaders","localAddress","upgrades","pingInterval","pingTimeout","pingIntervalTimer","pingTimeoutTimer","clone","o","priorWebsocketSuccess","Transport","createTransport","EIO","transport","sid","requestTimeout","protocols","setTransport","onDrain","onPacket","onError","onClose","probe","onTransportOpen","upgradeLosesBinary","supportsBinary","failed","send","upgrading","pause","flush","freezeTransport","onTransportClose","onupgrade","to","onOpen","l","onHandshake","setPing","code","filterUpgrades","onHeartbeat","ping","sendPacket","writable","compress","cleanupAndClose","waitForUpgrade","desc","filteredUpgrades","polling","xhr","xd","xs","isSSL","xdomain","xscheme","XMLHttpRequest","XHR","JSONP","websocket","hasCORS","XDomainRequest","empty","Polling","Request","method","async","isBinary","create","unloadHandler","requests","abort","inherit","request","doWrite","req","sendXhr","doPoll","onData","pollXhr","setDisableHeaderCheck","setRequestHeader","hasXDR","onLoad","responseText","onreadystatechange","contentType","getResponseHeader","responseType","status","requestsCount","onSuccess","fromError","response","attachEvent","terminationEvent","hasXHR2","yeast","doOpen","poll","onPause","total","decodePayload","doClose","packets","callbackfn","encodePayload","schema","b64","description","decodePacket","encodeBase64Object","encodeArrayBuffer","encodeBase64Packet","contentArray","Uint8Array","resultBuffer","byteLength","encodeBlobAsArrayBuffer","fr","encodePacket","encodeBlob","dontSendBlobs","blob","tryDecode","utf8","strict","ary","each","done","after","eachWithIndex","el","base64encoder","hasBinary","sliceBuffer","isAndroid","isPhantomJS","pong","packetslist","utf8encode","encoded","readAsDataURL","b64data","fromCharCode","typed","basic","btoa","utf8decode","decodeBase64Packet","asArray","rest","setLengthHeader","encodeOne","doneCallback","encodePayloadAsBlob","encodePayloadAsArrayBuffer","results","decodePayloadAsBinary","chr","ret","totalLength","reduce","acc","resultArray","bufferIndex","isString","ab","view","lenStr","binaryIdentifier","size","lengthAry","bufferTail","tailArray","msgLength","toJSON","arraybuffer","start","end","bytes","abv","ii","count","err_cb","proxy","bail","ucs2decode","string","value","extra","output","counter","ucs2encode","stringFromCharCode","checkScalarValue","codePoint","toUpperCase","createByte","encodeCodePoint","symbol","codePoints","byteString","readContinuationByte","byteIndex","byteCount","continuationByte","byteArray","decodeSymbol","byte1","byte2","byte3","byte4","tmp","chars","encoded1","encoded2","encoded3","encoded4","bufferLength","mapArrayBufferViews","chunk","copy","set","byteOffset","BlobBuilderConstructor","bb","BlobBuilder","part","append","getBlob","BlobConstructor","WebKitBlobBuilder","MSBlobBuilder","MozBlobBuilder","blobSupported","a","blobSupportsArrayBufferView","blobBuilderSupported","encodeURIComponent","qs","qry","pairs","pair","decodeURIComponent","alphabet","decoded","now","seed","global","glob","JSONPPolling","___eio","script","rNewline","rEscapedNewline","parentNode","removeChild","form","iframe","createElement","insertAt","getElementsByTagName","insertBefore","head","body","appendChild","isUAgecko","complete","initIframe","html","iframeId","area","className","position","top","left","target","setAttribute","action","submit","WS","usingBrowserWebSocket","BrowserWebSocket","WebSocketImpl","NodeWebSocket","WebSocket","MozWebSocket","check","headers","ws","supports","addEventListeners","onmessage","ev","json","ids","acks","receiveBuffer","sendBuffer","connected","disconnected","flags","toArray","hasBin","events","connect_error","connect_timeout","reconnect_attempt","reconnect_failed","reconnect_error","subEvents","pop","onpacket","rootNamespaceError","onconnect","onevent","onack","ondisconnect","ack","sent","emitBuffered","list","factor","pow","rand","random","deviation"],"mappings":"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","file":"socket.io.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"io\"] = factory();\n\telse\n\t\troot[\"io\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"io\"] = factory();\n\telse\n\t\troot[\"io\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t\n\t/**\n\t * Module dependencies.\n\t */\n\t\n\tvar url = __webpack_require__(1);\n\tvar parser = __webpack_require__(7);\n\tvar Manager = __webpack_require__(15);\n\tvar debug = __webpack_require__(3)('socket.io-client');\n\t\n\t/**\n\t * Module exports.\n\t */\n\t\n\tmodule.exports = exports = lookup;\n\t\n\t/**\n\t * Managers cache.\n\t */\n\t\n\tvar cache = exports.managers = {};\n\t\n\t/**\n\t * Looks up an existing `Manager` for multiplexing.\n\t * If the user summons:\n\t *\n\t * `io('http://localhost/a');`\n\t * `io('http://localhost/b');`\n\t *\n\t * We reuse the existing instance based on same scheme/port/host,\n\t * and we initialize sockets for each namespace.\n\t *\n\t * @api public\n\t */\n\t\n\tfunction lookup (uri, opts) {\n\t if (typeof uri === 'object') {\n\t opts = uri;\n\t uri = undefined;\n\t }\n\t\n\t opts = opts || {};\n\t\n\t var parsed = url(uri);\n\t var source = parsed.source;\n\t var id = parsed.id;\n\t var path = parsed.path;\n\t var sameNamespace = cache[id] && path in cache[id].nsps;\n\t var newConnection = opts.forceNew || opts['force new connection'] ||\n\t false === opts.multiplex || sameNamespace;\n\t\n\t var io;\n\t\n\t if (newConnection) {\n\t debug('ignoring socket cache for %s', source);\n\t io = Manager(source, opts);\n\t } else {\n\t if (!cache[id]) {\n\t debug('new io instance for %s', source);\n\t cache[id] = Manager(source, opts);\n\t }\n\t io = cache[id];\n\t }\n\t if (parsed.query && !opts.query) {\n\t opts.query = parsed.query;\n\t }\n\t return io.socket(parsed.path, opts);\n\t}\n\t\n\t/**\n\t * Protocol version.\n\t *\n\t * @api public\n\t */\n\t\n\texports.protocol = parser.protocol;\n\t\n\t/**\n\t * `connect`.\n\t *\n\t * @param {String} uri\n\t * @api public\n\t */\n\t\n\texports.connect = lookup;\n\t\n\t/**\n\t * Expose constructors for standalone build.\n\t *\n\t * @api public\n\t */\n\t\n\texports.Manager = __webpack_require__(15);\n\texports.Socket = __webpack_require__(39);\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t\n\t/**\n\t * Module dependencies.\n\t */\n\t\n\tvar parseuri = __webpack_require__(2);\n\tvar debug = __webpack_require__(3)('socket.io-client:url');\n\t\n\t/**\n\t * Module exports.\n\t */\n\t\n\tmodule.exports = url;\n\t\n\t/**\n\t * URL parser.\n\t *\n\t * @param {String} url\n\t * @param {Object} An object meant to mimic window.location.\n\t * Defaults to window.location.\n\t * @api public\n\t */\n\t\n\tfunction url (uri, loc) {\n\t var obj = uri;\n\t\n\t // default to window.location\n\t loc = loc || (typeof location !== 'undefined' && location);\n\t if (null == uri) uri = loc.protocol + '//' + loc.host;\n\t\n\t // relative path support\n\t if ('string' === typeof uri) {\n\t if ('/' === uri.charAt(0)) {\n\t if ('/' === uri.charAt(1)) {\n\t uri = loc.protocol + uri;\n\t } else {\n\t uri = loc.host + uri;\n\t }\n\t }\n\t\n\t if (!/^(https?|wss?):\\/\\//.test(uri)) {\n\t debug('protocol-less url %s', uri);\n\t if ('undefined' !== typeof loc) {\n\t uri = loc.protocol + '//' + uri;\n\t } else {\n\t uri = 'https://' + uri;\n\t }\n\t }\n\t\n\t // parse\n\t debug('parse %s', uri);\n\t obj = parseuri(uri);\n\t }\n\t\n\t // make sure we treat `localhost:80` and `localhost` equally\n\t if (!obj.port) {\n\t if (/^(http|ws)$/.test(obj.protocol)) {\n\t obj.port = '80';\n\t } else if (/^(http|ws)s$/.test(obj.protocol)) {\n\t obj.port = '443';\n\t }\n\t }\n\t\n\t obj.path = obj.path || '/';\n\t\n\t var ipv6 = obj.host.indexOf(':') !== -1;\n\t var host = ipv6 ? '[' + obj.host + ']' : obj.host;\n\t\n\t // define unique id\n\t obj.id = obj.protocol + '://' + host + ':' + obj.port;\n\t // define href\n\t obj.href = obj.protocol + '://' + host + (loc && loc.port === obj.port ? '' : (':' + obj.port));\n\t\n\t return obj;\n\t}\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\n\t/**\r\n\t * Parses an URI\r\n\t *\r\n\t * @author Steven Levithan (MIT license)\r\n\t * @api private\r\n\t */\r\n\t\r\n\tvar re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\r\n\t\r\n\tvar parts = [\r\n\t 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\r\n\t];\r\n\t\r\n\tmodule.exports = function parseuri(str) {\r\n\t var src = str,\r\n\t b = str.indexOf('['),\r\n\t e = str.indexOf(']');\r\n\t\r\n\t if (b != -1 && e != -1) {\r\n\t str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\r\n\t }\r\n\t\r\n\t var m = re.exec(str || ''),\r\n\t uri = {},\r\n\t i = 14;\r\n\t\r\n\t while (i--) {\r\n\t uri[parts[i]] = m[i] || '';\r\n\t }\r\n\t\r\n\t if (b != -1 && e != -1) {\r\n\t uri.source = src;\r\n\t uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\r\n\t uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\r\n\t uri.ipv6uri = true;\r\n\t }\r\n\t\r\n\t return uri;\r\n\t};\r\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {'use strict';\n\t\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\t\n\t/* eslint-env browser */\n\t\n\t/**\n\t * This is the web browser implementation of `debug()`.\n\t */\n\t\n\texports.log = log;\n\texports.formatArgs = formatArgs;\n\texports.save = save;\n\texports.load = load;\n\texports.useColors = useColors;\n\texports.storage = localstorage();\n\t\n\t/**\n\t * Colors.\n\t */\n\t\n\texports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'];\n\t\n\t/**\n\t * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n\t * and the Firebug extension (any Firefox version) are known\n\t * to support \"%c\" CSS customizations.\n\t *\n\t * TODO: add a `localStorage` variable to explicitly enable/disable colors\n\t */\n\t\n\t// eslint-disable-next-line complexity\n\tfunction useColors() {\n\t\t// NB: In an Electron preload script, document will be defined but not fully\n\t\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t\t// explicitly\n\t\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\t\treturn true;\n\t\t}\n\t\n\t\t// Internet Explorer and Edge do not support colors.\n\t\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\t\treturn false;\n\t\t}\n\t\n\t\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t\treturn typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\ttypeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\ttypeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31 ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\ttypeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/);\n\t}\n\t\n\t/**\n\t * Colorize log arguments if enabled.\n\t *\n\t * @api public\n\t */\n\t\n\tfunction formatArgs(args) {\n\t\targs[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);\n\t\n\t\tif (!this.useColors) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar c = 'color: ' + this.color;\n\t\targs.splice(1, 0, c, 'color: inherit');\n\t\n\t\t// The final \"%c\" is somewhat tricky, because there could be other\n\t\t// arguments passed either before or after the %c, so we need to\n\t\t// figure out the correct index to insert the CSS into\n\t\tvar index = 0;\n\t\tvar lastC = 0;\n\t\targs[0].replace(/%[a-zA-Z%]/g, function (match) {\n\t\t\tif (match === '%%') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tindex++;\n\t\t\tif (match === '%c') {\n\t\t\t\t// We only are interested in the *last* %c\n\t\t\t\t// (the user may have provided their own)\n\t\t\t\tlastC = index;\n\t\t\t}\n\t\t});\n\t\n\t\targs.splice(lastC, 0, c);\n\t}\n\t\n\t/**\n\t * Invokes `console.log()` when available.\n\t * No-op when `console.log` is not a \"function\".\n\t *\n\t * @api public\n\t */\n\tfunction log() {\n\t\tvar _console;\n\t\n\t\t// This hackery is required for IE8/9, where\n\t\t// the `console.log` function doesn't have 'apply'\n\t\treturn (typeof console === 'undefined' ? 'undefined' : _typeof(console)) === 'object' && console.log && (_console = console).log.apply(_console, arguments);\n\t}\n\t\n\t/**\n\t * Save `namespaces`.\n\t *\n\t * @param {String} namespaces\n\t * @api private\n\t */\n\tfunction save(namespaces) {\n\t\ttry {\n\t\t\tif (namespaces) {\n\t\t\t\texports.storage.setItem('debug', namespaces);\n\t\t\t} else {\n\t\t\t\texports.storage.removeItem('debug');\n\t\t\t}\n\t\t} catch (error) {\n\t\t\t// Swallow\n\t\t\t// XXX (@Qix-) should we be logging these?\n\t\t}\n\t}\n\t\n\t/**\n\t * Load `namespaces`.\n\t *\n\t * @return {String} returns the previously persisted debug modes\n\t * @api private\n\t */\n\tfunction load() {\n\t\tvar r = void 0;\n\t\ttry {\n\t\t\tr = exports.storage.getItem('debug');\n\t\t} catch (error) {}\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t\n\t\n\t\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\t\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\t\tr = process.env.DEBUG;\n\t\t}\n\t\n\t\treturn r;\n\t}\n\t\n\t/**\n\t * Localstorage attempts to return the localstorage.\n\t *\n\t * This is necessary because safari throws\n\t * when a user disables cookies/localstorage\n\t * and you attempt to access it.\n\t *\n\t * @return {LocalStorage}\n\t * @api private\n\t */\n\t\n\tfunction localstorage() {\n\t\ttry {\n\t\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t\t// The Browser also has localStorage in the global context.\n\t\t\treturn localStorage;\n\t\t} catch (error) {\n\t\t\t// Swallow\n\t\t\t// XXX (@Qix-) should we be logging these?\n\t\t}\n\t}\n\t\n\tmodule.exports = __webpack_require__(5)(exports);\n\t\n\tvar formatters = module.exports.formatters;\n\t\n\t/**\n\t * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n\t */\n\t\n\tformatters.j = function (v) {\n\t\ttry {\n\t\t\treturn JSON.stringify(v);\n\t\t} catch (error) {\n\t\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t\t}\n\t};\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\n\t// shim for using process in browser\n\tvar process = module.exports = {};\n\t\n\t// cached from whatever global is present so that test runners that stub it\n\t// don't break things. But we need to wrap it in a try catch in case it is\n\t// wrapped in strict mode code which doesn't define any globals. It's inside a\n\t// function because try/catches deoptimize in certain engines.\n\t\n\tvar cachedSetTimeout;\n\tvar cachedClearTimeout;\n\t\n\tfunction defaultSetTimout() {\n\t throw new Error('setTimeout has not been defined');\n\t}\n\tfunction defaultClearTimeout () {\n\t throw new Error('clearTimeout has not been defined');\n\t}\n\t(function () {\n\t try {\n\t if (typeof setTimeout === 'function') {\n\t cachedSetTimeout = setTimeout;\n\t } else {\n\t cachedSetTimeout = defaultSetTimout;\n\t }\n\t } catch (e) {\n\t cachedSetTimeout = defaultSetTimout;\n\t }\n\t try {\n\t if (typeof clearTimeout === 'function') {\n\t cachedClearTimeout = clearTimeout;\n\t } else {\n\t cachedClearTimeout = defaultClearTimeout;\n\t }\n\t } catch (e) {\n\t cachedClearTimeout = defaultClearTimeout;\n\t }\n\t} ())\n\tfunction runTimeout(fun) {\n\t if (cachedSetTimeout === setTimeout) {\n\t //normal enviroments in sane situations\n\t return setTimeout(fun, 0);\n\t }\n\t // if setTimeout wasn't available but was latter defined\n\t if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n\t cachedSetTimeout = setTimeout;\n\t return setTimeout(fun, 0);\n\t }\n\t try {\n\t // when when somebody has screwed with setTimeout but no I.E. maddness\n\t return cachedSetTimeout(fun, 0);\n\t } catch(e){\n\t try {\n\t // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n\t return cachedSetTimeout.call(null, fun, 0);\n\t } catch(e){\n\t // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n\t return cachedSetTimeout.call(this, fun, 0);\n\t }\n\t }\n\t\n\t\n\t}\n\tfunction runClearTimeout(marker) {\n\t if (cachedClearTimeout === clearTimeout) {\n\t //normal enviroments in sane situations\n\t return clearTimeout(marker);\n\t }\n\t // if clearTimeout wasn't available but was latter defined\n\t if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n\t cachedClearTimeout = clearTimeout;\n\t return clearTimeout(marker);\n\t }\n\t try {\n\t // when when somebody has screwed with setTimeout but no I.E. maddness\n\t return cachedClearTimeout(marker);\n\t } catch (e){\n\t try {\n\t // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n\t return cachedClearTimeout.call(null, marker);\n\t } catch (e){\n\t // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n\t // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n\t return cachedClearTimeout.call(this, marker);\n\t }\n\t }\n\t\n\t\n\t\n\t}\n\tvar queue = [];\n\tvar draining = false;\n\tvar currentQueue;\n\tvar queueIndex = -1;\n\t\n\tfunction cleanUpNextTick() {\n\t if (!draining || !currentQueue) {\n\t return;\n\t }\n\t draining = false;\n\t if (currentQueue.length) {\n\t queue = currentQueue.concat(queue);\n\t } else {\n\t queueIndex = -1;\n\t }\n\t if (queue.length) {\n\t drainQueue();\n\t }\n\t}\n\t\n\tfunction drainQueue() {\n\t if (draining) {\n\t return;\n\t }\n\t var timeout = runTimeout(cleanUpNextTick);\n\t draining = true;\n\t\n\t var len = queue.length;\n\t while(len) {\n\t currentQueue = queue;\n\t queue = [];\n\t while (++queueIndex < len) {\n\t if (currentQueue) {\n\t currentQueue[queueIndex].run();\n\t }\n\t }\n\t queueIndex = -1;\n\t len = queue.length;\n\t }\n\t currentQueue = null;\n\t draining = false;\n\t runClearTimeout(timeout);\n\t}\n\t\n\tprocess.nextTick = function (fun) {\n\t var args = new Array(arguments.length - 1);\n\t if (arguments.length > 1) {\n\t for (var i = 1; i < arguments.length; i++) {\n\t args[i - 1] = arguments[i];\n\t }\n\t }\n\t queue.push(new Item(fun, args));\n\t if (queue.length === 1 && !draining) {\n\t runTimeout(drainQueue);\n\t }\n\t};\n\t\n\t// v8 likes predictible objects\n\tfunction Item(fun, array) {\n\t this.fun = fun;\n\t this.array = array;\n\t}\n\tItem.prototype.run = function () {\n\t this.fun.apply(null, this.array);\n\t};\n\tprocess.title = 'browser';\n\tprocess.browser = true;\n\tprocess.env = {};\n\tprocess.argv = [];\n\tprocess.version = ''; // empty string to avoid regexp issues\n\tprocess.versions = {};\n\t\n\tfunction noop() {}\n\t\n\tprocess.on = noop;\n\tprocess.addListener = noop;\n\tprocess.once = noop;\n\tprocess.off = noop;\n\tprocess.removeListener = noop;\n\tprocess.removeAllListeners = noop;\n\tprocess.emit = noop;\n\tprocess.prependListener = noop;\n\tprocess.prependOnceListener = noop;\n\t\n\tprocess.listeners = function (name) { return [] }\n\t\n\tprocess.binding = function (name) {\n\t throw new Error('process.binding is not supported');\n\t};\n\t\n\tprocess.cwd = function () { return '/' };\n\tprocess.chdir = function (dir) {\n\t throw new Error('process.chdir is not supported');\n\t};\n\tprocess.umask = function() { return 0; };\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\t\n\t/**\n\t * This is the common logic for both the Node.js and web browser\n\t * implementations of `debug()`.\n\t */\n\t\n\tfunction setup(env) {\n\t\tcreateDebug.debug = createDebug;\n\t\tcreateDebug.default = createDebug;\n\t\tcreateDebug.coerce = coerce;\n\t\tcreateDebug.disable = disable;\n\t\tcreateDebug.enable = enable;\n\t\tcreateDebug.enabled = enabled;\n\t\tcreateDebug.humanize = __webpack_require__(6);\n\t\n\t\tObject.keys(env).forEach(function (key) {\n\t\t\tcreateDebug[key] = env[key];\n\t\t});\n\t\n\t\t/**\n\t * Active `debug` instances.\n\t */\n\t\tcreateDebug.instances = [];\n\t\n\t\t/**\n\t * The currently active debug mode names, and names to skip.\n\t */\n\t\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\t\n\t\t/**\n\t * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t *\n\t * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t */\n\t\tcreateDebug.formatters = {};\n\t\n\t\t/**\n\t * Selects a color for a debug namespace\n\t * @param {String} namespace The namespace string for the for the debug instance to be colored\n\t * @return {Number|String} An ANSI color code for the given namespace\n\t * @api private\n\t */\n\t\tfunction selectColor(namespace) {\n\t\t\tvar hash = 0;\n\t\n\t\t\tfor (var i = 0; i < namespace.length; i++) {\n\t\t\t\thash = (hash << 5) - hash + namespace.charCodeAt(i);\n\t\t\t\thash |= 0; // Convert to 32bit integer\n\t\t\t}\n\t\n\t\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t\t}\n\t\tcreateDebug.selectColor = selectColor;\n\t\n\t\t/**\n\t * Create a debugger with the given `namespace`.\n\t *\n\t * @param {String} namespace\n\t * @return {Function}\n\t * @api public\n\t */\n\t\tfunction createDebug(namespace) {\n\t\t\tvar prevTime = void 0;\n\t\n\t\t\tfunction debug() {\n\t\t\t\tfor (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t\t\t\t\targs[_key] = arguments[_key];\n\t\t\t\t}\n\t\n\t\t\t\t// Disabled?\n\t\t\t\tif (!debug.enabled) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\tvar self = debug;\n\t\n\t\t\t\t// Set `diff` timestamp\n\t\t\t\tvar curr = Number(new Date());\n\t\t\t\tvar ms = curr - (prevTime || curr);\n\t\t\t\tself.diff = ms;\n\t\t\t\tself.prev = prevTime;\n\t\t\t\tself.curr = curr;\n\t\t\t\tprevTime = curr;\n\t\n\t\t\t\targs[0] = createDebug.coerce(args[0]);\n\t\n\t\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\t\targs.unshift('%O');\n\t\t\t\t}\n\t\n\t\t\t\t// Apply any `formatters` transformations\n\t\t\t\tvar index = 0;\n\t\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {\n\t\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\t\tif (match === '%%') {\n\t\t\t\t\t\treturn match;\n\t\t\t\t\t}\n\t\t\t\t\tindex++;\n\t\t\t\t\tvar formatter = createDebug.formatters[format];\n\t\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\t\tvar val = args[index];\n\t\t\t\t\t\tmatch = formatter.call(self, val);\n\t\n\t\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\t\tindex--;\n\t\t\t\t\t}\n\t\t\t\t\treturn match;\n\t\t\t\t});\n\t\n\t\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\t\tcreateDebug.formatArgs.call(self, args);\n\t\n\t\t\t\tvar logFn = self.log || createDebug.log;\n\t\t\t\tlogFn.apply(self, args);\n\t\t\t}\n\t\n\t\t\tdebug.namespace = namespace;\n\t\t\tdebug.enabled = createDebug.enabled(namespace);\n\t\t\tdebug.useColors = createDebug.useColors();\n\t\t\tdebug.color = selectColor(namespace);\n\t\t\tdebug.destroy = destroy;\n\t\t\tdebug.extend = extend;\n\t\t\t// Debug.formatArgs = formatArgs;\n\t\t\t// debug.rawLog = rawLog;\n\t\n\t\t\t// env-specific initialization logic for debug instances\n\t\t\tif (typeof createDebug.init === 'function') {\n\t\t\t\tcreateDebug.init(debug);\n\t\t\t}\n\t\n\t\t\tcreateDebug.instances.push(debug);\n\t\n\t\t\treturn debug;\n\t\t}\n\t\n\t\tfunction destroy() {\n\t\t\tvar index = createDebug.instances.indexOf(this);\n\t\t\tif (index !== -1) {\n\t\t\t\tcreateDebug.instances.splice(index, 1);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\n\t\tfunction extend(namespace, delimiter) {\n\t\t\tvar newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\t\tnewDebug.log = this.log;\n\t\t\treturn newDebug;\n\t\t}\n\t\n\t\t/**\n\t * Enables a debug mode by namespaces. This can include modes\n\t * separated by a colon and wildcards.\n\t *\n\t * @param {String} namespaces\n\t * @api public\n\t */\n\t\tfunction enable(namespaces) {\n\t\t\tcreateDebug.save(namespaces);\n\t\n\t\t\tcreateDebug.names = [];\n\t\t\tcreateDebug.skips = [];\n\t\n\t\t\tvar i = void 0;\n\t\t\tvar split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\t\tvar len = split.length;\n\t\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tif (!split[i]) {\n\t\t\t\t\t// ignore empty strings\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\n\t\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\t\n\t\t\t\tif (namespaces[0] === '-') {\n\t\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n\t\t\t\t} else {\n\t\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tfor (i = 0; i < createDebug.instances.length; i++) {\n\t\t\t\tvar instance = createDebug.instances[i];\n\t\t\t\tinstance.enabled = createDebug.enabled(instance.namespace);\n\t\t\t}\n\t\t}\n\t\n\t\t/**\n\t * Disable debug output.\n\t *\n\t * @return {String} namespaces\n\t * @api public\n\t */\n\t\tfunction disable() {\n\t\t\tvar namespaces = [].concat(_toConsumableArray(createDebug.names.map(toNamespace)), _toConsumableArray(createDebug.skips.map(toNamespace).map(function (namespace) {\n\t\t\t\treturn '-' + namespace;\n\t\t\t}))).join(',');\n\t\t\tcreateDebug.enable('');\n\t\t\treturn namespaces;\n\t\t}\n\t\n\t\t/**\n\t * Returns true if the given mode name is enabled, false otherwise.\n\t *\n\t * @param {String} name\n\t * @return {Boolean}\n\t * @api public\n\t */\n\t\tfunction enabled(name) {\n\t\t\tif (name[name.length - 1] === '*') {\n\t\t\t\treturn true;\n\t\t\t}\n\t\n\t\t\tvar i = void 0;\n\t\t\tvar len = void 0;\n\t\n\t\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn false;\n\t\t}\n\t\n\t\t/**\n\t * Convert regexp to namespace\n\t *\n\t * @param {RegExp} regxep\n\t * @return {String} namespace\n\t * @api private\n\t */\n\t\tfunction toNamespace(regexp) {\n\t\t\treturn regexp.toString().substring(2, regexp.toString().length - 2).replace(/\\.\\*\\?$/, '*');\n\t\t}\n\t\n\t\t/**\n\t * Coerce `val`.\n\t *\n\t * @param {Mixed} val\n\t * @return {Mixed}\n\t * @api private\n\t */\n\t\tfunction coerce(val) {\n\t\t\tif (val instanceof Error) {\n\t\t\t\treturn val.stack || val.message;\n\t\t\t}\n\t\t\treturn val;\n\t\t}\n\t\n\t\tcreateDebug.enable(createDebug.load());\n\t\n\t\treturn createDebug;\n\t}\n\t\n\tmodule.exports = setup;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\n\t/**\n\t * Helpers.\n\t */\n\t\n\tvar s = 1000;\n\tvar m = s * 60;\n\tvar h = m * 60;\n\tvar d = h * 24;\n\tvar w = d * 7;\n\tvar y = d * 365.25;\n\t\n\t/**\n\t * Parse or format the given `val`.\n\t *\n\t * Options:\n\t *\n\t * - `long` verbose formatting [false]\n\t *\n\t * @param {String|Number} val\n\t * @param {Object} [options]\n\t * @throws {Error} throw an error if val is not a non-empty string or a number\n\t * @return {String|Number}\n\t * @api public\n\t */\n\t\n\tmodule.exports = function(val, options) {\n\t options = options || {};\n\t var type = typeof val;\n\t if (type === 'string' && val.length > 0) {\n\t return parse(val);\n\t } else if (type === 'number' && isFinite(val)) {\n\t return options.long ? fmtLong(val) : fmtShort(val);\n\t }\n\t throw new Error(\n\t 'val is not a non-empty string or a valid number. val=' +\n\t JSON.stringify(val)\n\t );\n\t};\n\t\n\t/**\n\t * Parse the given `str` and return milliseconds.\n\t *\n\t * @param {String} str\n\t * @return {Number}\n\t * @api private\n\t */\n\t\n\tfunction parse(str) {\n\t str = String(str);\n\t if (str.length > 100) {\n\t return;\n\t }\n\t var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n\t str\n\t );\n\t if (!match) {\n\t return;\n\t }\n\t var n = parseFloat(match[1]);\n\t var type = (match[2] || 'ms').toLowerCase();\n\t switch (type) {\n\t case 'years':\n\t case 'year':\n\t case 'yrs':\n\t case 'yr':\n\t case 'y':\n\t return n * y;\n\t case 'weeks':\n\t case 'week':\n\t case 'w':\n\t return n * w;\n\t case 'days':\n\t case 'day':\n\t case 'd':\n\t return n * d;\n\t case 'hours':\n\t case 'hour':\n\t case 'hrs':\n\t case 'hr':\n\t case 'h':\n\t return n * h;\n\t case 'minutes':\n\t case 'minute':\n\t case 'mins':\n\t case 'min':\n\t case 'm':\n\t return n * m;\n\t case 'seconds':\n\t case 'second':\n\t case 'secs':\n\t case 'sec':\n\t case 's':\n\t return n * s;\n\t case 'milliseconds':\n\t case 'millisecond':\n\t case 'msecs':\n\t case 'msec':\n\t case 'ms':\n\t return n;\n\t default:\n\t return undefined;\n\t }\n\t}\n\t\n\t/**\n\t * Short format for `ms`.\n\t *\n\t * @param {Number} ms\n\t * @return {String}\n\t * @api private\n\t */\n\t\n\tfunction fmtShort(ms) {\n\t var msAbs = Math.abs(ms);\n\t if (msAbs >= d) {\n\t return Math.round(ms / d) + 'd';\n\t }\n\t if (msAbs >= h) {\n\t return Math.round(ms / h) + 'h';\n\t }\n\t if (msAbs >= m) {\n\t return Math.round(ms / m) + 'm';\n\t }\n\t if (msAbs >= s) {\n\t return Math.round(ms / s) + 's';\n\t }\n\t return ms + 'ms';\n\t}\n\t\n\t/**\n\t * Long format for `ms`.\n\t *\n\t * @param {Number} ms\n\t * @return {String}\n\t * @api private\n\t */\n\t\n\tfunction fmtLong(ms) {\n\t var msAbs = Math.abs(ms);\n\t if (msAbs >= d) {\n\t return plural(ms, msAbs, d, 'day');\n\t }\n\t if (msAbs >= h) {\n\t return plural(ms, msAbs, h, 'hour');\n\t }\n\t if (msAbs >= m) {\n\t return plural(ms, msAbs, m, 'minute');\n\t }\n\t if (msAbs >= s) {\n\t return plural(ms, msAbs, s, 'second');\n\t }\n\t return ms + ' ms';\n\t}\n\t\n\t/**\n\t * Pluralization helper.\n\t */\n\t\n\tfunction plural(ms, msAbs, n, name) {\n\t var isPlural = msAbs >= n * 1.5;\n\t return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n\t}\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t\n\t/**\n\t * Module dependencies.\n\t */\n\t\n\tvar debug = __webpack_require__(8)('socket.io-parser');\n\tvar Emitter = __webpack_require__(11);\n\tvar binary = __webpack_require__(12);\n\tvar isArray = __webpack_require__(13);\n\tvar isBuf = __webpack_require__(14);\n\t\n\t/**\n\t * Protocol version.\n\t *\n\t * @api public\n\t */\n\t\n\texports.protocol = 4;\n\t\n\t/**\n\t * Packet types.\n\t *\n\t * @api public\n\t */\n\t\n\texports.types = [\n\t 'CONNECT',\n\t 'DISCONNECT',\n\t 'EVENT',\n\t 'ACK',\n\t 'ERROR',\n\t 'BINARY_EVENT',\n\t 'BINARY_ACK'\n\t];\n\t\n\t/**\n\t * Packet type `connect`.\n\t *\n\t * @api public\n\t */\n\t\n\texports.CONNECT = 0;\n\t\n\t/**\n\t * Packet type `disconnect`.\n\t *\n\t * @api public\n\t */\n\t\n\texports.DISCONNECT = 1;\n\t\n\t/**\n\t * Packet type `event`.\n\t *\n\t * @api public\n\t */\n\t\n\texports.EVENT = 2;\n\t\n\t/**\n\t * Packet type `ack`.\n\t *\n\t * @api public\n\t */\n\t\n\texports.ACK = 3;\n\t\n\t/**\n\t * Packet type `error`.\n\t *\n\t * @api public\n\t */\n\t\n\texports.ERROR = 4;\n\t\n\t/**\n\t * Packet type 'binary event'\n\t *\n\t * @api public\n\t */\n\t\n\texports.BINARY_EVENT = 5;\n\t\n\t/**\n\t * Packet type `binary ack`. For acks with binary arguments.\n\t *\n\t * @api public\n\t */\n\t\n\texports.BINARY_ACK = 6;\n\t\n\t/**\n\t * Encoder constructor.\n\t *\n\t * @api public\n\t */\n\t\n\texports.Encoder = Encoder;\n\t\n\t/**\n\t * Decoder constructor.\n\t *\n\t * @api public\n\t */\n\t\n\texports.Decoder = Decoder;\n\t\n\t/**\n\t * A socket.io Encoder instance\n\t *\n\t * @api public\n\t */\n\t\n\tfunction Encoder() {}\n\t\n\tvar ERROR_PACKET = exports.ERROR + '\"encode error\"';\n\t\n\t/**\n\t * Encode a packet as a single string if non-binary, or as a\n\t * buffer sequence, depending on packet type.\n\t *\n\t * @param {Object} obj - packet object\n\t * @param {Function} callback - function to handle encodings (likely engine.write)\n\t * @return Calls callback with Array of encodings\n\t * @api public\n\t */\n\t\n\tEncoder.prototype.encode = function(obj, callback){\n\t debug('encoding packet %j', obj);\n\t\n\t if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) {\n\t encodeAsBinary(obj, callback);\n\t } else {\n\t var encoding = encodeAsString(obj);\n\t callback([encoding]);\n\t }\n\t};\n\t\n\t/**\n\t * Encode packet as string.\n\t *\n\t * @param {Object} packet\n\t * @return {String} encoded\n\t * @api private\n\t */\n\t\n\tfunction encodeAsString(obj) {\n\t\n\t // first is type\n\t var str = '' + obj.type;\n\t\n\t // attachments if we have them\n\t if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) {\n\t str += obj.attachments + '-';\n\t }\n\t\n\t // if we have a namespace other than `/`\n\t // we append it followed by a comma `,`\n\t if (obj.nsp && '/' !== obj.nsp) {\n\t str += obj.nsp + ',';\n\t }\n\t\n\t // immediately followed by the id\n\t if (null != obj.id) {\n\t str += obj.id;\n\t }\n\t\n\t // json data\n\t if (null != obj.data) {\n\t var payload = tryStringify(obj.data);\n\t if (payload !== false) {\n\t str += payload;\n\t } else {\n\t return ERROR_PACKET;\n\t }\n\t }\n\t\n\t debug('encoded %j as %s', obj, str);\n\t return str;\n\t}\n\t\n\tfunction tryStringify(str) {\n\t try {\n\t return JSON.stringify(str);\n\t } catch(e){\n\t return false;\n\t }\n\t}\n\t\n\t/**\n\t * Encode packet as 'buffer sequence' by removing blobs, and\n\t * deconstructing packet into object with placeholders and\n\t * a list of buffers.\n\t *\n\t * @param {Object} packet\n\t * @return {Buffer} encoded\n\t * @api private\n\t */\n\t\n\tfunction encodeAsBinary(obj, callback) {\n\t\n\t function writeEncoding(bloblessData) {\n\t var deconstruction = binary.deconstructPacket(bloblessData);\n\t var pack = encodeAsString(deconstruction.packet);\n\t var buffers = deconstruction.buffers;\n\t\n\t buffers.unshift(pack); // add packet info to beginning of data list\n\t callback(buffers); // write all the buffers\n\t }\n\t\n\t binary.removeBlobs(obj, writeEncoding);\n\t}\n\t\n\t/**\n\t * A socket.io Decoder instance\n\t *\n\t * @return {Object} decoder\n\t * @api public\n\t */\n\t\n\tfunction Decoder() {\n\t this.reconstructor = null;\n\t}\n\t\n\t/**\n\t * Mix in `Emitter` with Decoder.\n\t */\n\t\n\tEmitter(Decoder.prototype);\n\t\n\t/**\n\t * Decodes an encoded packet string into packet JSON.\n\t *\n\t * @param {String} obj - encoded packet\n\t * @return {Object} packet\n\t * @api public\n\t */\n\t\n\tDecoder.prototype.add = function(obj) {\n\t var packet;\n\t if (typeof obj === 'string') {\n\t packet = decodeString(obj);\n\t if (exports.BINARY_EVENT === packet.type || exports.BINARY_ACK === packet.type) { // binary packet's json\n\t this.reconstructor = new BinaryReconstructor(packet);\n\t\n\t // no attachments, labeled binary but no binary data to follow\n\t if (this.reconstructor.reconPack.attachments === 0) {\n\t this.emit('decoded', packet);\n\t }\n\t } else { // non-binary full packet\n\t this.emit('decoded', packet);\n\t }\n\t } else if (isBuf(obj) || obj.base64) { // raw binary data\n\t if (!this.reconstructor) {\n\t throw new Error('got binary data when not reconstructing a packet');\n\t } else {\n\t packet = this.reconstructor.takeBinaryData(obj);\n\t if (packet) { // received final buffer\n\t this.reconstructor = null;\n\t this.emit('decoded', packet);\n\t }\n\t }\n\t } else {\n\t throw new Error('Unknown type: ' + obj);\n\t }\n\t};\n\t\n\t/**\n\t * Decode a packet String (JSON data)\n\t *\n\t * @param {String} str\n\t * @return {Object} packet\n\t * @api private\n\t */\n\t\n\tfunction decodeString(str) {\n\t var i = 0;\n\t // look up type\n\t var p = {\n\t type: Number(str.charAt(0))\n\t };\n\t\n\t if (null == exports.types[p.type]) {\n\t return error('unknown packet type ' + p.type);\n\t }\n\t\n\t // look up attachments if type binary\n\t if (exports.BINARY_EVENT === p.type || exports.BINARY_ACK === p.type) {\n\t var buf = '';\n\t while (str.charAt(++i) !== '-') {\n\t buf += str.charAt(i);\n\t if (i == str.length) break;\n\t }\n\t if (buf != Number(buf) || str.charAt(i) !== '-') {\n\t throw new Error('Illegal attachments');\n\t }\n\t p.attachments = Number(buf);\n\t }\n\t\n\t // look up namespace (if any)\n\t if ('/' === str.charAt(i + 1)) {\n\t p.nsp = '';\n\t while (++i) {\n\t var c = str.charAt(i);\n\t if (',' === c) break;\n\t p.nsp += c;\n\t if (i === str.length) break;\n\t }\n\t } else {\n\t p.nsp = '/';\n\t }\n\t\n\t // look up id\n\t var next = str.charAt(i + 1);\n\t if ('' !== next && Number(next) == next) {\n\t p.id = '';\n\t while (++i) {\n\t var c = str.charAt(i);\n\t if (null == c || Number(c) != c) {\n\t --i;\n\t break;\n\t }\n\t p.id += str.charAt(i);\n\t if (i === str.length) break;\n\t }\n\t p.id = Number(p.id);\n\t }\n\t\n\t // look up json data\n\t if (str.charAt(++i)) {\n\t var payload = tryParse(str.substr(i));\n\t var isPayloadValid = payload !== false && (p.type === exports.ERROR || isArray(payload));\n\t if (isPayloadValid) {\n\t p.data = payload;\n\t } else {\n\t return error('invalid payload');\n\t }\n\t }\n\t\n\t debug('decoded %s as %j', str, p);\n\t return p;\n\t}\n\t\n\tfunction tryParse(str) {\n\t try {\n\t return JSON.parse(str);\n\t } catch(e){\n\t return false;\n\t }\n\t}\n\t\n\t/**\n\t * Deallocates a parser's resources\n\t *\n\t * @api public\n\t */\n\t\n\tDecoder.prototype.destroy = function() {\n\t if (this.reconstructor) {\n\t this.reconstructor.finishedReconstruction();\n\t }\n\t};\n\t\n\t/**\n\t * A manager of a binary event's 'buffer sequence'. Should\n\t * be constructed whenever a packet of type BINARY_EVENT is\n\t * decoded.\n\t *\n\t * @param {Object} packet\n\t * @return {BinaryReconstructor} initialized reconstructor\n\t * @api private\n\t */\n\t\n\tfunction BinaryReconstructor(packet) {\n\t this.reconPack = packet;\n\t this.buffers = [];\n\t}\n\t\n\t/**\n\t * Method to be called when binary data received from connection\n\t * after a BINARY_EVENT packet.\n\t *\n\t * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n\t * @return {null | Object} returns null if more binary data is expected or\n\t * a reconstructed packet object if all buffers have been received.\n\t * @api private\n\t */\n\t\n\tBinaryReconstructor.prototype.takeBinaryData = function(binData) {\n\t this.buffers.push(binData);\n\t if (this.buffers.length === this.reconPack.attachments) { // done with buffer list\n\t var packet = binary.reconstructPacket(this.reconPack, this.buffers);\n\t this.finishedReconstruction();\n\t return packet;\n\t }\n\t return null;\n\t};\n\t\n\t/**\n\t * Cleans up binary packet reconstruction variables.\n\t *\n\t * @api private\n\t */\n\t\n\tBinaryReconstructor.prototype.finishedReconstruction = function() {\n\t this.reconPack = null;\n\t this.buffers = [];\n\t};\n\t\n\tfunction error(msg) {\n\t return {\n\t type: exports.ERROR,\n\t data: 'parser error: ' + msg\n\t };\n\t}\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {'use strict';\n\t\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\t\n\t/**\n\t * This is the web browser implementation of `debug()`.\n\t *\n\t * Expose `debug()` as the module.\n\t */\n\t\n\texports = module.exports = __webpack_require__(9);\n\texports.log = log;\n\texports.formatArgs = formatArgs;\n\texports.save = save;\n\texports.load = load;\n\texports.useColors = useColors;\n\texports.storage = 'undefined' != typeof chrome && 'undefined' != typeof chrome.storage ? chrome.storage.local : localstorage();\n\t\n\t/**\n\t * Colors.\n\t */\n\t\n\texports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'];\n\t\n\t/**\n\t * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n\t * and the Firebug extension (any Firefox version) are known\n\t * to support \"%c\" CSS customizations.\n\t *\n\t * TODO: add a `localStorage` variable to explicitly enable/disable colors\n\t */\n\t\n\tfunction useColors() {\n\t // NB: In an Electron preload script, document will be defined but not fully\n\t // initialized. Since we know we're in Chrome, we'll just detect this case\n\t // explicitly\n\t if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n\t return true;\n\t }\n\t\n\t // Internet Explorer and Edge do not support colors.\n\t if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t return false;\n\t }\n\t\n\t // is webkit? http://stackoverflow.com/a/16459606/376773\n\t // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance ||\n\t // is firebug? http://stackoverflow.com/a/398120/376773\n\t typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) ||\n\t // is firefox >= v31?\n\t // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31 ||\n\t // double check webkit in userAgent just in case we are in a worker\n\t typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/);\n\t}\n\t\n\t/**\n\t * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n\t */\n\t\n\texports.formatters.j = function (v) {\n\t try {\n\t return JSON.stringify(v);\n\t } catch (err) {\n\t return '[UnexpectedJSONParseError]: ' + err.message;\n\t }\n\t};\n\t\n\t/**\n\t * Colorize log arguments if enabled.\n\t *\n\t * @api public\n\t */\n\t\n\tfunction formatArgs(args) {\n\t var useColors = this.useColors;\n\t\n\t args[0] = (useColors ? '%c' : '') + this.namespace + (useColors ? ' %c' : ' ') + args[0] + (useColors ? '%c ' : ' ') + '+' + exports.humanize(this.diff);\n\t\n\t if (!useColors) return;\n\t\n\t var c = 'color: ' + this.color;\n\t args.splice(1, 0, c, 'color: inherit');\n\t\n\t // the final \"%c\" is somewhat tricky, because there could be other\n\t // arguments passed either before or after the %c, so we need to\n\t // figure out the correct index to insert the CSS into\n\t var index = 0;\n\t var lastC = 0;\n\t args[0].replace(/%[a-zA-Z%]/g, function (match) {\n\t if ('%%' === match) return;\n\t index++;\n\t if ('%c' === match) {\n\t // we only are interested in the *last* %c\n\t // (the user may have provided their own)\n\t lastC = index;\n\t }\n\t });\n\t\n\t args.splice(lastC, 0, c);\n\t}\n\t\n\t/**\n\t * Invokes `console.log()` when available.\n\t * No-op when `console.log` is not a \"function\".\n\t *\n\t * @api public\n\t */\n\t\n\tfunction log() {\n\t // this hackery is required for IE8/9, where\n\t // the `console.log` function doesn't have 'apply'\n\t return 'object' === (typeof console === 'undefined' ? 'undefined' : _typeof(console)) && console.log && Function.prototype.apply.call(console.log, console, arguments);\n\t}\n\t\n\t/**\n\t * Save `namespaces`.\n\t *\n\t * @param {String} namespaces\n\t * @api private\n\t */\n\t\n\tfunction save(namespaces) {\n\t try {\n\t if (null == namespaces) {\n\t exports.storage.removeItem('debug');\n\t } else {\n\t exports.storage.debug = namespaces;\n\t }\n\t } catch (e) {}\n\t}\n\t\n\t/**\n\t * Load `namespaces`.\n\t *\n\t * @return {String} returns the previously persisted debug modes\n\t * @api private\n\t */\n\t\n\tfunction load() {\n\t var r;\n\t try {\n\t r = exports.storage.debug;\n\t } catch (e) {}\n\t\n\t // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\t if (!r && typeof process !== 'undefined' && 'env' in process) {\n\t r = process.env.DEBUG;\n\t }\n\t\n\t return r;\n\t}\n\t\n\t/**\n\t * Enable namespaces listed in `localStorage.debug` initially.\n\t */\n\t\n\texports.enable(load());\n\t\n\t/**\n\t * Localstorage attempts to return the localstorage.\n\t *\n\t * This is necessary because safari throws\n\t * when a user disables cookies/localstorage\n\t * and you attempt to access it.\n\t *\n\t * @return {LocalStorage}\n\t * @api private\n\t */\n\t\n\tfunction localstorage() {\n\t try {\n\t return window.localStorage;\n\t } catch (e) {}\n\t}\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\t/**\n\t * This is the common logic for both the Node.js and web browser\n\t * implementations of `debug()`.\n\t *\n\t * Expose `debug()` as the module.\n\t */\n\t\n\texports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\n\texports.coerce = coerce;\n\texports.disable = disable;\n\texports.enable = enable;\n\texports.enabled = enabled;\n\texports.humanize = __webpack_require__(10);\n\t\n\t/**\n\t * Active `debug` instances.\n\t */\n\texports.instances = [];\n\t\n\t/**\n\t * The currently active debug mode names, and names to skip.\n\t */\n\t\n\texports.names = [];\n\texports.skips = [];\n\t\n\t/**\n\t * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t *\n\t * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t */\n\t\n\texports.formatters = {};\n\t\n\t/**\n\t * Select a color.\n\t * @param {String} namespace\n\t * @return {Number}\n\t * @api private\n\t */\n\t\n\tfunction selectColor(namespace) {\n\t var hash = 0,\n\t i;\n\t\n\t for (i in namespace) {\n\t hash = (hash << 5) - hash + namespace.charCodeAt(i);\n\t hash |= 0; // Convert to 32bit integer\n\t }\n\t\n\t return exports.colors[Math.abs(hash) % exports.colors.length];\n\t}\n\t\n\t/**\n\t * Create a debugger with the given `namespace`.\n\t *\n\t * @param {String} namespace\n\t * @return {Function}\n\t * @api public\n\t */\n\t\n\tfunction createDebug(namespace) {\n\t\n\t var prevTime;\n\t\n\t function debug() {\n\t // disabled?\n\t if (!debug.enabled) return;\n\t\n\t var self = debug;\n\t\n\t // set `diff` timestamp\n\t var curr = +new Date();\n\t var ms = curr - (prevTime || curr);\n\t self.diff = ms;\n\t self.prev = prevTime;\n\t self.curr = curr;\n\t prevTime = curr;\n\t\n\t // turn the `arguments` into a proper Array\n\t var args = new Array(arguments.length);\n\t for (var i = 0; i < args.length; i++) {\n\t args[i] = arguments[i];\n\t }\n\t\n\t args[0] = exports.coerce(args[0]);\n\t\n\t if ('string' !== typeof args[0]) {\n\t // anything else let's inspect with %O\n\t args.unshift('%O');\n\t }\n\t\n\t // apply any `formatters` transformations\n\t var index = 0;\n\t args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {\n\t // if we encounter an escaped % then don't increase the array index\n\t if (match === '%%') return match;\n\t index++;\n\t var formatter = exports.formatters[format];\n\t if ('function' === typeof formatter) {\n\t var val = args[index];\n\t match = formatter.call(self, val);\n\t\n\t // now we need to remove `args[index]` since it's inlined in the `format`\n\t args.splice(index, 1);\n\t index--;\n\t }\n\t return match;\n\t });\n\t\n\t // apply env-specific formatting (colors, etc.)\n\t exports.formatArgs.call(self, args);\n\t\n\t var logFn = debug.log || exports.log || console.log.bind(console);\n\t logFn.apply(self, args);\n\t }\n\t\n\t debug.namespace = namespace;\n\t debug.enabled = exports.enabled(namespace);\n\t debug.useColors = exports.useColors();\n\t debug.color = selectColor(namespace);\n\t debug.destroy = destroy;\n\t\n\t // env-specific initialization logic for debug instances\n\t if ('function' === typeof exports.init) {\n\t exports.init(debug);\n\t }\n\t\n\t exports.instances.push(debug);\n\t\n\t return debug;\n\t}\n\t\n\tfunction destroy() {\n\t var index = exports.instances.indexOf(this);\n\t if (index !== -1) {\n\t exports.instances.splice(index, 1);\n\t return true;\n\t } else {\n\t return false;\n\t }\n\t}\n\t\n\t/**\n\t * Enables a debug mode by namespaces. This can include modes\n\t * separated by a colon and wildcards.\n\t *\n\t * @param {String} namespaces\n\t * @api public\n\t */\n\t\n\tfunction enable(namespaces) {\n\t exports.save(namespaces);\n\t\n\t exports.names = [];\n\t exports.skips = [];\n\t\n\t var i;\n\t var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t var len = split.length;\n\t\n\t for (i = 0; i < len; i++) {\n\t if (!split[i]) continue; // ignore empty strings\n\t namespaces = split[i].replace(/\\*/g, '.*?');\n\t if (namespaces[0] === '-') {\n\t exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n\t } else {\n\t exports.names.push(new RegExp('^' + namespaces + '$'));\n\t }\n\t }\n\t\n\t for (i = 0; i < exports.instances.length; i++) {\n\t var instance = exports.instances[i];\n\t instance.enabled = exports.enabled(instance.namespace);\n\t }\n\t}\n\t\n\t/**\n\t * Disable debug output.\n\t *\n\t * @api public\n\t */\n\t\n\tfunction disable() {\n\t exports.enable('');\n\t}\n\t\n\t/**\n\t * Returns true if the given mode name is enabled, false otherwise.\n\t *\n\t * @param {String} name\n\t * @return {Boolean}\n\t * @api public\n\t */\n\t\n\tfunction enabled(name) {\n\t if (name[name.length - 1] === '*') {\n\t return true;\n\t }\n\t var i, len;\n\t for (i = 0, len = exports.skips.length; i < len; i++) {\n\t if (exports.skips[i].test(name)) {\n\t return false;\n\t }\n\t }\n\t for (i = 0, len = exports.names.length; i < len; i++) {\n\t if (exports.names[i].test(name)) {\n\t return true;\n\t }\n\t }\n\t return false;\n\t}\n\t\n\t/**\n\t * Coerce `val`.\n\t *\n\t * @param {Mixed} val\n\t * @return {Mixed}\n\t * @api private\n\t */\n\t\n\tfunction coerce(val) {\n\t if (val instanceof Error) return val.stack || val.message;\n\t return val;\n\t}\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports) {\n\n\t/**\n\t * Helpers.\n\t */\n\t\n\tvar s = 1000;\n\tvar m = s * 60;\n\tvar h = m * 60;\n\tvar d = h * 24;\n\tvar y = d * 365.25;\n\t\n\t/**\n\t * Parse or format the given `val`.\n\t *\n\t * Options:\n\t *\n\t * - `long` verbose formatting [false]\n\t *\n\t * @param {String|Number} val\n\t * @param {Object} [options]\n\t * @throws {Error} throw an error if val is not a non-empty string or a number\n\t * @return {String|Number}\n\t * @api public\n\t */\n\t\n\tmodule.exports = function(val, options) {\n\t options = options || {};\n\t var type = typeof val;\n\t if (type === 'string' && val.length > 0) {\n\t return parse(val);\n\t } else if (type === 'number' && isNaN(val) === false) {\n\t return options.long ? fmtLong(val) : fmtShort(val);\n\t }\n\t throw new Error(\n\t 'val is not a non-empty string or a valid number. val=' +\n\t JSON.stringify(val)\n\t );\n\t};\n\t\n\t/**\n\t * Parse the given `str` and return milliseconds.\n\t *\n\t * @param {String} str\n\t * @return {Number}\n\t * @api private\n\t */\n\t\n\tfunction parse(str) {\n\t str = String(str);\n\t if (str.length > 100) {\n\t return;\n\t }\n\t var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n\t str\n\t );\n\t if (!match) {\n\t return;\n\t }\n\t var n = parseFloat(match[1]);\n\t var type = (match[2] || 'ms').toLowerCase();\n\t switch (type) {\n\t case 'years':\n\t case 'year':\n\t case 'yrs':\n\t case 'yr':\n\t case 'y':\n\t return n * y;\n\t case 'days':\n\t case 'day':\n\t case 'd':\n\t return n * d;\n\t case 'hours':\n\t case 'hour':\n\t case 'hrs':\n\t case 'hr':\n\t case 'h':\n\t return n * h;\n\t case 'minutes':\n\t case 'minute':\n\t case 'mins':\n\t case 'min':\n\t case 'm':\n\t return n * m;\n\t case 'seconds':\n\t case 'second':\n\t case 'secs':\n\t case 'sec':\n\t case 's':\n\t return n * s;\n\t case 'milliseconds':\n\t case 'millisecond':\n\t case 'msecs':\n\t case 'msec':\n\t case 'ms':\n\t return n;\n\t default:\n\t return undefined;\n\t }\n\t}\n\t\n\t/**\n\t * Short format for `ms`.\n\t *\n\t * @param {Number} ms\n\t * @return {String}\n\t * @api private\n\t */\n\t\n\tfunction fmtShort(ms) {\n\t if (ms >= d) {\n\t return Math.round(ms / d) + 'd';\n\t }\n\t if (ms >= h) {\n\t return Math.round(ms / h) + 'h';\n\t }\n\t if (ms >= m) {\n\t return Math.round(ms / m) + 'm';\n\t }\n\t if (ms >= s) {\n\t return Math.round(ms / s) + 's';\n\t }\n\t return ms + 'ms';\n\t}\n\t\n\t/**\n\t * Long format for `ms`.\n\t *\n\t * @param {Number} ms\n\t * @return {String}\n\t * @api private\n\t */\n\t\n\tfunction fmtLong(ms) {\n\t return plural(ms, d, 'day') ||\n\t plural(ms, h, 'hour') ||\n\t plural(ms, m, 'minute') ||\n\t plural(ms, s, 'second') ||\n\t ms + ' ms';\n\t}\n\t\n\t/**\n\t * Pluralization helper.\n\t */\n\t\n\tfunction plural(ms, n, name) {\n\t if (ms < n) {\n\t return;\n\t }\n\t if (ms < n * 1.5) {\n\t return Math.floor(ms / n) + ' ' + name;\n\t }\n\t return Math.ceil(ms / n) + ' ' + name + 's';\n\t}\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t\r\n\t/**\r\n\t * Expose `Emitter`.\r\n\t */\r\n\t\r\n\tif (true) {\r\n\t module.exports = Emitter;\r\n\t}\r\n\t\r\n\t/**\r\n\t * Initialize a new `Emitter`.\r\n\t *\r\n\t * @api public\r\n\t */\r\n\t\r\n\tfunction Emitter(obj) {\r\n\t if (obj) return mixin(obj);\r\n\t};\r\n\t\r\n\t/**\r\n\t * Mixin the emitter properties.\r\n\t *\r\n\t * @param {Object} obj\r\n\t * @return {Object}\r\n\t * @api private\r\n\t */\r\n\t\r\n\tfunction mixin(obj) {\r\n\t for (var key in Emitter.prototype) {\r\n\t obj[key] = Emitter.prototype[key];\r\n\t }\r\n\t return obj;\r\n\t}\r\n\t\r\n\t/**\r\n\t * Listen on the given `event` with `fn`.\r\n\t *\r\n\t * @param {String} event\r\n\t * @param {Function} fn\r\n\t * @return {Emitter}\r\n\t * @api public\r\n\t */\r\n\t\r\n\tEmitter.prototype.on =\r\n\tEmitter.prototype.addEventListener = function(event, fn){\r\n\t this._callbacks = this._callbacks || {};\r\n\t (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n\t .push(fn);\r\n\t return this;\r\n\t};\r\n\t\r\n\t/**\r\n\t * Adds an `event` listener that will be invoked a single\r\n\t * time then automatically removed.\r\n\t *\r\n\t * @param {String} event\r\n\t * @param {Function} fn\r\n\t * @return {Emitter}\r\n\t * @api public\r\n\t */\r\n\t\r\n\tEmitter.prototype.once = function(event, fn){\r\n\t function on() {\r\n\t this.off(event, on);\r\n\t fn.apply(this, arguments);\r\n\t }\r\n\t\r\n\t on.fn = fn;\r\n\t this.on(event, on);\r\n\t return this;\r\n\t};\r\n\t\r\n\t/**\r\n\t * Remove the given callback for `event` or all\r\n\t * registered callbacks.\r\n\t *\r\n\t * @param {String} event\r\n\t * @param {Function} fn\r\n\t * @return {Emitter}\r\n\t * @api public\r\n\t */\r\n\t\r\n\tEmitter.prototype.off =\r\n\tEmitter.prototype.removeListener =\r\n\tEmitter.prototype.removeAllListeners =\r\n\tEmitter.prototype.removeEventListener = function(event, fn){\r\n\t this._callbacks = this._callbacks || {};\r\n\t\r\n\t // all\r\n\t if (0 == arguments.length) {\r\n\t this._callbacks = {};\r\n\t return this;\r\n\t }\r\n\t\r\n\t // specific event\r\n\t var callbacks = this._callbacks['$' + event];\r\n\t if (!callbacks) return this;\r\n\t\r\n\t // remove all handlers\r\n\t if (1 == arguments.length) {\r\n\t delete this._callbacks['$' + event];\r\n\t return this;\r\n\t }\r\n\t\r\n\t // remove specific handler\r\n\t var cb;\r\n\t for (var i = 0; i < callbacks.length; i++) {\r\n\t cb = callbacks[i];\r\n\t if (cb === fn || cb.fn === fn) {\r\n\t callbacks.splice(i, 1);\r\n\t break;\r\n\t }\r\n\t }\r\n\t return this;\r\n\t};\r\n\t\r\n\t/**\r\n\t * Emit `event` with the given args.\r\n\t *\r\n\t * @param {String} event\r\n\t * @param {Mixed} ...\r\n\t * @return {Emitter}\r\n\t */\r\n\t\r\n\tEmitter.prototype.emit = function(event){\r\n\t this._callbacks = this._callbacks || {};\r\n\t var args = [].slice.call(arguments, 1)\r\n\t , callbacks = this._callbacks['$' + event];\r\n\t\r\n\t if (callbacks) {\r\n\t callbacks = callbacks.slice(0);\r\n\t for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n\t callbacks[i].apply(this, args);\r\n\t }\r\n\t }\r\n\t\r\n\t return this;\r\n\t};\r\n\t\r\n\t/**\r\n\t * Return array of callbacks for `event`.\r\n\t *\r\n\t * @param {String} event\r\n\t * @return {Array}\r\n\t * @api public\r\n\t */\r\n\t\r\n\tEmitter.prototype.listeners = function(event){\r\n\t this._callbacks = this._callbacks || {};\r\n\t return this._callbacks['$' + event] || [];\r\n\t};\r\n\t\r\n\t/**\r\n\t * Check if this emitter has `event` handlers.\r\n\t *\r\n\t * @param {String} event\r\n\t * @return {Boolean}\r\n\t * @api public\r\n\t */\r\n\t\r\n\tEmitter.prototype.hasListeners = function(event){\r\n\t return !! this.listeners(event).length;\r\n\t};\r\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*global Blob,File*/\n\t\n\t/**\n\t * Module requirements\n\t */\n\t\n\tvar isArray = __webpack_require__(13);\n\tvar isBuf = __webpack_require__(14);\n\tvar toString = Object.prototype.toString;\n\tvar withNativeBlob = typeof Blob === 'function' || (typeof Blob !== 'undefined' && toString.call(Blob) === '[object BlobConstructor]');\n\tvar withNativeFile = typeof File === 'function' || (typeof File !== 'undefined' && toString.call(File) === '[object FileConstructor]');\n\t\n\t/**\n\t * Replaces every Buffer | ArrayBuffer in packet with a numbered placeholder.\n\t * Anything with blobs or files should be fed through removeBlobs before coming\n\t * here.\n\t *\n\t * @param {Object} packet - socket.io event packet\n\t * @return {Object} with deconstructed packet and list of buffers\n\t * @api public\n\t */\n\t\n\texports.deconstructPacket = function(packet) {\n\t var buffers = [];\n\t var packetData = packet.data;\n\t var pack = packet;\n\t pack.data = _deconstructPacket(packetData, buffers);\n\t pack.attachments = buffers.length; // number of binary 'attachments'\n\t return {packet: pack, buffers: buffers};\n\t};\n\t\n\tfunction _deconstructPacket(data, buffers) {\n\t if (!data) return data;\n\t\n\t if (isBuf(data)) {\n\t var placeholder = { _placeholder: true, num: buffers.length };\n\t buffers.push(data);\n\t return placeholder;\n\t } else if (isArray(data)) {\n\t var newData = new Array(data.length);\n\t for (var i = 0; i < data.length; i++) {\n\t newData[i] = _deconstructPacket(data[i], buffers);\n\t }\n\t return newData;\n\t } else if (typeof data === 'object' && !(data instanceof Date)) {\n\t var newData = {};\n\t for (var key in data) {\n\t newData[key] = _deconstructPacket(data[key], buffers);\n\t }\n\t return newData;\n\t }\n\t return data;\n\t}\n\t\n\t/**\n\t * Reconstructs a binary packet from its placeholder packet and buffers\n\t *\n\t * @param {Object} packet - event packet with placeholders\n\t * @param {Array} buffers - binary buffers to put in placeholder positions\n\t * @return {Object} reconstructed packet\n\t * @api public\n\t */\n\t\n\texports.reconstructPacket = function(packet, buffers) {\n\t packet.data = _reconstructPacket(packet.data, buffers);\n\t packet.attachments = undefined; // no longer useful\n\t return packet;\n\t};\n\t\n\tfunction _reconstructPacket(data, buffers) {\n\t if (!data) return data;\n\t\n\t if (data && data._placeholder) {\n\t return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n\t } else if (isArray(data)) {\n\t for (var i = 0; i < data.length; i++) {\n\t data[i] = _reconstructPacket(data[i], buffers);\n\t }\n\t } else if (typeof data === 'object') {\n\t for (var key in data) {\n\t data[key] = _reconstructPacket(data[key], buffers);\n\t }\n\t }\n\t\n\t return data;\n\t}\n\t\n\t/**\n\t * Asynchronously removes Blobs or Files from data via\n\t * FileReader's readAsArrayBuffer method. Used before encoding\n\t * data as msgpack. Calls callback with the blobless data.\n\t *\n\t * @param {Object} data\n\t * @param {Function} callback\n\t * @api private\n\t */\n\t\n\texports.removeBlobs = function(data, callback) {\n\t function _removeBlobs(obj, curKey, containingObject) {\n\t if (!obj) return obj;\n\t\n\t // convert any blob\n\t if ((withNativeBlob && obj instanceof Blob) ||\n\t (withNativeFile && obj instanceof File)) {\n\t pendingBlobs++;\n\t\n\t // async filereader\n\t var fileReader = new FileReader();\n\t fileReader.onload = function() { // this.result == arraybuffer\n\t if (containingObject) {\n\t containingObject[curKey] = this.result;\n\t }\n\t else {\n\t bloblessData = this.result;\n\t }\n\t\n\t // if nothing pending its callback time\n\t if(! --pendingBlobs) {\n\t callback(bloblessData);\n\t }\n\t };\n\t\n\t fileReader.readAsArrayBuffer(obj); // blob -> arraybuffer\n\t } else if (isArray(obj)) { // handle array\n\t for (var i = 0; i < obj.length; i++) {\n\t _removeBlobs(obj[i], i, obj);\n\t }\n\t } else if (typeof obj === 'object' && !isBuf(obj)) { // and object\n\t for (var key in obj) {\n\t _removeBlobs(obj[key], key, obj);\n\t }\n\t }\n\t }\n\t\n\t var pendingBlobs = 0;\n\t var bloblessData = data;\n\t _removeBlobs(bloblessData);\n\t if (!pendingBlobs) {\n\t callback(bloblessData);\n\t }\n\t};\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports) {\n\n\tvar toString = {}.toString;\n\t\n\tmodule.exports = Array.isArray || function (arr) {\n\t return toString.call(arr) == '[object Array]';\n\t};\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\n\t\n\tmodule.exports = isBuf;\n\t\n\tvar withNativeBuffer = typeof Buffer === 'function' && typeof Buffer.isBuffer === 'function';\n\tvar withNativeArrayBuffer = typeof ArrayBuffer === 'function';\n\t\n\tvar isView = function (obj) {\n\t return typeof ArrayBuffer.isView === 'function' ? ArrayBuffer.isView(obj) : (obj.buffer instanceof ArrayBuffer);\n\t};\n\t\n\t/**\n\t * Returns true if obj is a buffer or an arraybuffer.\n\t *\n\t * @api private\n\t */\n\t\n\tfunction isBuf(obj) {\n\t return (withNativeBuffer && Buffer.isBuffer(obj)) ||\n\t (withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj)));\n\t}\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t\n\t/**\n\t * Module dependencies.\n\t */\n\t\n\tvar eio = __webpack_require__(16);\n\tvar Socket = __webpack_require__(39);\n\tvar Emitter = __webpack_require__(11);\n\tvar parser = __webpack_require__(7);\n\tvar on = __webpack_require__(41);\n\tvar bind = __webpack_require__(42);\n\tvar debug = __webpack_require__(3)('socket.io-client:manager');\n\tvar indexOf = __webpack_require__(38);\n\tvar Backoff = __webpack_require__(43);\n\t\n\t/**\n\t * IE6+ hasOwnProperty\n\t */\n\t\n\tvar has = Object.prototype.hasOwnProperty;\n\t\n\t/**\n\t * Module exports\n\t */\n\t\n\tmodule.exports = Manager;\n\t\n\t/**\n\t * `Manager` constructor.\n\t *\n\t * @param {String} engine instance or engine uri/opts\n\t * @param {Object} options\n\t * @api public\n\t */\n\t\n\tfunction Manager (uri, opts) {\n\t if (!(this instanceof Manager)) return new Manager(uri, opts);\n\t if (uri && ('object' === typeof uri)) {\n\t opts = uri;\n\t uri = undefined;\n\t }\n\t opts = opts || {};\n\t\n\t opts.path = opts.path || '/socket.io';\n\t this.nsps = {};\n\t this.subs = [];\n\t this.opts = opts;\n\t this.reconnection(opts.reconnection !== false);\n\t this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n\t this.reconnectionDelay(opts.reconnectionDelay || 1000);\n\t this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n\t this.randomizationFactor(opts.randomizationFactor || 0.5);\n\t this.backoff = new Backoff({\n\t min: this.reconnectionDelay(),\n\t max: this.reconnectionDelayMax(),\n\t jitter: this.randomizationFactor()\n\t });\n\t this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n\t this.readyState = 'closed';\n\t this.uri = uri;\n\t this.connecting = [];\n\t this.lastPing = null;\n\t this.encoding = false;\n\t this.packetBuffer = [];\n\t var _parser = opts.parser || parser;\n\t this.encoder = new _parser.Encoder();\n\t this.decoder = new _parser.Decoder();\n\t this.autoConnect = opts.autoConnect !== false;\n\t if (this.autoConnect) this.open();\n\t}\n\t\n\t/**\n\t * Propagate given event to sockets and emit on `this`\n\t *\n\t * @api private\n\t */\n\t\n\tManager.prototype.emitAll = function () {\n\t this.emit.apply(this, arguments);\n\t for (var nsp in this.nsps) {\n\t if (has.call(this.nsps, nsp)) {\n\t this.nsps[nsp].emit.apply(this.nsps[nsp], arguments);\n\t }\n\t }\n\t};\n\t\n\t/**\n\t * Update `socket.id` of all sockets\n\t *\n\t * @api private\n\t */\n\t\n\tManager.prototype.updateSocketIds = function () {\n\t for (var nsp in this.nsps) {\n\t if (has.call(this.nsps, nsp)) {\n\t this.nsps[nsp].id = this.generateId(nsp);\n\t }\n\t }\n\t};\n\t\n\t/**\n\t * generate `socket.id` for the given `nsp`\n\t *\n\t * @param {String} nsp\n\t * @return {String}\n\t * @api private\n\t */\n\t\n\tManager.prototype.generateId = function (nsp) {\n\t return (nsp === '/' ? '' : (nsp + '#')) + this.engine.id;\n\t};\n\t\n\t/**\n\t * Mix in `Emitter`.\n\t */\n\t\n\tEmitter(Manager.prototype);\n\t\n\t/**\n\t * Sets the `reconnection` config.\n\t *\n\t * @param {Boolean} true/false if it should automatically reconnect\n\t * @return {Manager} self or value\n\t * @api public\n\t */\n\t\n\tManager.prototype.reconnection = function (v) {\n\t if (!arguments.length) return this._reconnection;\n\t this._reconnection = !!v;\n\t return this;\n\t};\n\t\n\t/**\n\t * Sets the reconnection attempts config.\n\t *\n\t * @param {Number} max reconnection attempts before giving up\n\t * @return {Manager} self or value\n\t * @api public\n\t */\n\t\n\tManager.prototype.reconnectionAttempts = function (v) {\n\t if (!arguments.length) return this._reconnectionAttempts;\n\t this._reconnectionAttempts = v;\n\t return this;\n\t};\n\t\n\t/**\n\t * Sets the delay between reconnections.\n\t *\n\t * @param {Number} delay\n\t * @return {Manager} self or value\n\t * @api public\n\t */\n\t\n\tManager.prototype.reconnectionDelay = function (v) {\n\t if (!arguments.length) return this._reconnectionDelay;\n\t this._reconnectionDelay = v;\n\t this.backoff && this.backoff.setMin(v);\n\t return this;\n\t};\n\t\n\tManager.prototype.randomizationFactor = function (v) {\n\t if (!arguments.length) return this._randomizationFactor;\n\t this._randomizationFactor = v;\n\t this.backoff && this.backoff.setJitter(v);\n\t return this;\n\t};\n\t\n\t/**\n\t * Sets the maximum delay between reconnections.\n\t *\n\t * @param {Number} delay\n\t * @return {Manager} self or value\n\t * @api public\n\t */\n\t\n\tManager.prototype.reconnectionDelayMax = function (v) {\n\t if (!arguments.length) return this._reconnectionDelayMax;\n\t this._reconnectionDelayMax = v;\n\t this.backoff && this.backoff.setMax(v);\n\t return this;\n\t};\n\t\n\t/**\n\t * Sets the connection timeout. `false` to disable\n\t *\n\t * @return {Manager} self or value\n\t * @api public\n\t */\n\t\n\tManager.prototype.timeout = function (v) {\n\t if (!arguments.length) return this._timeout;\n\t this._timeout = v;\n\t return this;\n\t};\n\t\n\t/**\n\t * Starts trying to reconnect if reconnection is enabled and we have not\n\t * started reconnecting yet\n\t *\n\t * @api private\n\t */\n\t\n\tManager.prototype.maybeReconnectOnOpen = function () {\n\t // Only try to reconnect if it's the first time we're connecting\n\t if (!this.reconnecting && this._reconnection && this.backoff.attempts === 0) {\n\t // keeps reconnection from firing twice for the same reconnection loop\n\t this.reconnect();\n\t }\n\t};\n\t\n\t/**\n\t * Sets the current transport `socket`.\n\t *\n\t * @param {Function} optional, callback\n\t * @return {Manager} self\n\t * @api public\n\t */\n\t\n\tManager.prototype.open =\n\tManager.prototype.connect = function (fn, opts) {\n\t debug('readyState %s', this.readyState);\n\t if (~this.readyState.indexOf('open')) return this;\n\t\n\t debug('opening %s', this.uri);\n\t this.engine = eio(this.uri, this.opts);\n\t var socket = this.engine;\n\t var self = this;\n\t this.readyState = 'opening';\n\t this.skipReconnect = false;\n\t\n\t // emit `open`\n\t var openSub = on(socket, 'open', function () {\n\t self.onopen();\n\t fn && fn();\n\t });\n\t\n\t // emit `connect_error`\n\t var errorSub = on(socket, 'error', function (data) {\n\t debug('connect_error');\n\t self.cleanup();\n\t self.readyState = 'closed';\n\t self.emitAll('connect_error', data);\n\t if (fn) {\n\t var err = new Error('Connection error');\n\t err.data = data;\n\t fn(err);\n\t } else {\n\t // Only do this if there is no fn to handle the error\n\t self.maybeReconnectOnOpen();\n\t }\n\t });\n\t\n\t // emit `connect_timeout`\n\t if (false !== this._timeout) {\n\t var timeout = this._timeout;\n\t debug('connect attempt will timeout after %d', timeout);\n\t\n\t // set timer\n\t var timer = setTimeout(function () {\n\t debug('connect attempt timed out after %d', timeout);\n\t openSub.destroy();\n\t socket.close();\n\t socket.emit('error', 'timeout');\n\t self.emitAll('connect_timeout', timeout);\n\t }, timeout);\n\t\n\t this.subs.push({\n\t destroy: function () {\n\t clearTimeout(timer);\n\t }\n\t });\n\t }\n\t\n\t this.subs.push(openSub);\n\t this.subs.push(errorSub);\n\t\n\t return this;\n\t};\n\t\n\t/**\n\t * Called upon transport open.\n\t *\n\t * @api private\n\t */\n\t\n\tManager.prototype.onopen = function () {\n\t debug('open');\n\t\n\t // clear old subs\n\t this.cleanup();\n\t\n\t // mark as open\n\t this.readyState = 'open';\n\t this.emit('open');\n\t\n\t // add new subs\n\t var socket = this.engine;\n\t this.subs.push(on(socket, 'data', bind(this, 'ondata')));\n\t this.subs.push(on(socket, 'ping', bind(this, 'onping')));\n\t this.subs.push(on(socket, 'pong', bind(this, 'onpong')));\n\t this.subs.push(on(socket, 'error', bind(this, 'onerror')));\n\t this.subs.push(on(socket, 'close', bind(this, 'onclose')));\n\t this.subs.push(on(this.decoder, 'decoded', bind(this, 'ondecoded')));\n\t};\n\t\n\t/**\n\t * Called upon a ping.\n\t *\n\t * @api private\n\t */\n\t\n\tManager.prototype.onping = function () {\n\t this.lastPing = new Date();\n\t this.emitAll('ping');\n\t};\n\t\n\t/**\n\t * Called upon a packet.\n\t *\n\t * @api private\n\t */\n\t\n\tManager.prototype.onpong = function () {\n\t this.emitAll('pong', new Date() - this.lastPing);\n\t};\n\t\n\t/**\n\t * Called with data.\n\t *\n\t * @api private\n\t */\n\t\n\tManager.prototype.ondata = function (data) {\n\t this.decoder.add(data);\n\t};\n\t\n\t/**\n\t * Called when parser fully decodes a packet.\n\t *\n\t * @api private\n\t */\n\t\n\tManager.prototype.ondecoded = function (packet) {\n\t this.emit('packet', packet);\n\t};\n\t\n\t/**\n\t * Called upon socket error.\n\t *\n\t * @api private\n\t */\n\t\n\tManager.prototype.onerror = function (err) {\n\t debug('error', err);\n\t this.emitAll('error', err);\n\t};\n\t\n\t/**\n\t * Creates a new socket for the given `nsp`.\n\t *\n\t * @return {Socket}\n\t * @api public\n\t */\n\t\n\tManager.prototype.socket = function (nsp, opts) {\n\t var socket = this.nsps[nsp];\n\t if (!socket) {\n\t socket = new Socket(this, nsp, opts);\n\t this.nsps[nsp] = socket;\n\t var self = this;\n\t socket.on('connecting', onConnecting);\n\t socket.on('connect', function () {\n\t socket.id = self.generateId(nsp);\n\t });\n\t\n\t if (this.autoConnect) {\n\t // manually call here since connecting event is fired before listening\n\t onConnecting();\n\t }\n\t }\n\t\n\t function onConnecting () {\n\t if (!~indexOf(self.connecting, socket)) {\n\t self.connecting.push(socket);\n\t }\n\t }\n\t\n\t return socket;\n\t};\n\t\n\t/**\n\t * Called upon a socket close.\n\t *\n\t * @param {Socket} socket\n\t */\n\t\n\tManager.prototype.destroy = function (socket) {\n\t var index = indexOf(this.connecting, socket);\n\t if (~index) this.connecting.splice(index, 1);\n\t if (this.connecting.length) return;\n\t\n\t this.close();\n\t};\n\t\n\t/**\n\t * Writes a packet.\n\t *\n\t * @param {Object} packet\n\t * @api private\n\t */\n\t\n\tManager.prototype.packet = function (packet) {\n\t debug('writing packet %j', packet);\n\t var self = this;\n\t if (packet.query && packet.type === 0) packet.nsp += '?' + packet.query;\n\t\n\t if (!self.encoding) {\n\t // encode, then write to engine with result\n\t self.encoding = true;\n\t this.encoder.encode(packet, function (encodedPackets) {\n\t for (var i = 0; i < encodedPackets.length; i++) {\n\t self.engine.write(encodedPackets[i], packet.options);\n\t }\n\t self.encoding = false;\n\t self.processPacketQueue();\n\t });\n\t } else { // add packet to the queue\n\t self.packetBuffer.push(packet);\n\t }\n\t};\n\t\n\t/**\n\t * If packet buffer is non-empty, begins encoding the\n\t * next packet in line.\n\t *\n\t * @api private\n\t */\n\t\n\tManager.prototype.processPacketQueue = function () {\n\t if (this.packetBuffer.length > 0 && !this.encoding) {\n\t var pack = this.packetBuffer.shift();\n\t this.packet(pack);\n\t }\n\t};\n\t\n\t/**\n\t * Clean up transport subscriptions and packet buffer.\n\t *\n\t * @api private\n\t */\n\t\n\tManager.prototype.cleanup = function () {\n\t debug('cleanup');\n\t\n\t var subsLength = this.subs.length;\n\t for (var i = 0; i < subsLength; i++) {\n\t var sub = this.subs.shift();\n\t sub.destroy();\n\t }\n\t\n\t this.packetBuffer = [];\n\t this.encoding = false;\n\t this.lastPing = null;\n\t\n\t this.decoder.destroy();\n\t};\n\t\n\t/**\n\t * Close the current socket.\n\t *\n\t * @api private\n\t */\n\t\n\tManager.prototype.close =\n\tManager.prototype.disconnect = function () {\n\t debug('disconnect');\n\t this.skipReconnect = true;\n\t this.reconnecting = false;\n\t if ('opening' === this.readyState) {\n\t // `onclose` will not fire because\n\t // an open event never happened\n\t this.cleanup();\n\t }\n\t this.backoff.reset();\n\t this.readyState = 'closed';\n\t if (this.engine) this.engine.close();\n\t};\n\t\n\t/**\n\t * Called upon engine close.\n\t *\n\t * @api private\n\t */\n\t\n\tManager.prototype.onclose = function (reason) {\n\t debug('onclose');\n\t\n\t this.cleanup();\n\t this.backoff.reset();\n\t this.readyState = 'closed';\n\t this.emit('close', reason);\n\t\n\t if (this._reconnection && !this.skipReconnect) {\n\t this.reconnect();\n\t }\n\t};\n\t\n\t/**\n\t * Attempt a reconnection.\n\t *\n\t * @api private\n\t */\n\t\n\tManager.prototype.reconnect = function () {\n\t if (this.reconnecting || this.skipReconnect) return this;\n\t\n\t var self = this;\n\t\n\t if (this.backoff.attempts >= this._reconnectionAttempts) {\n\t debug('reconnect failed');\n\t this.backoff.reset();\n\t this.emitAll('reconnect_failed');\n\t this.reconnecting = false;\n\t } else {\n\t var delay = this.backoff.duration();\n\t debug('will wait %dms before reconnect attempt', delay);\n\t\n\t this.reconnecting = true;\n\t var timer = setTimeout(function () {\n\t if (self.skipReconnect) return;\n\t\n\t debug('attempting reconnect');\n\t self.emitAll('reconnect_attempt', self.backoff.attempts);\n\t self.emitAll('reconnecting', self.backoff.attempts);\n\t\n\t // check again for the case socket closed in above events\n\t if (self.skipReconnect) return;\n\t\n\t self.open(function (err) {\n\t if (err) {\n\t debug('reconnect attempt error');\n\t self.reconnecting = false;\n\t self.reconnect();\n\t self.emitAll('reconnect_error', err.data);\n\t } else {\n\t debug('reconnect success');\n\t self.onreconnect();\n\t }\n\t });\n\t }, delay);\n\t\n\t this.subs.push({\n\t destroy: function () {\n\t clearTimeout(timer);\n\t }\n\t });\n\t }\n\t};\n\t\n\t/**\n\t * Called upon successful reconnect.\n\t *\n\t * @api private\n\t */\n\t\n\tManager.prototype.onreconnect = function () {\n\t var attempt = this.backoff.attempts;\n\t this.reconnecting = false;\n\t this.backoff.reset();\n\t this.updateSocketIds();\n\t this.emitAll('reconnect', attempt);\n\t};\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t\n\tmodule.exports = __webpack_require__(17);\n\t\n\t/**\n\t * Exports parser\n\t *\n\t * @api public\n\t *\n\t */\n\tmodule.exports.parser = __webpack_require__(24);\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Module dependencies.\n\t */\n\t\n\tvar transports = __webpack_require__(18);\n\tvar Emitter = __webpack_require__(11);\n\tvar debug = __webpack_require__(3)('engine.io-client:socket');\n\tvar index = __webpack_require__(38);\n\tvar parser = __webpack_require__(24);\n\tvar parseuri = __webpack_require__(2);\n\tvar parseqs = __webpack_require__(32);\n\t\n\t/**\n\t * Module exports.\n\t */\n\t\n\tmodule.exports = Socket;\n\t\n\t/**\n\t * Socket constructor.\n\t *\n\t * @param {String|Object} uri or options\n\t * @param {Object} options\n\t * @api public\n\t */\n\t\n\tfunction Socket (uri, opts) {\n\t if (!(this instanceof Socket)) return new Socket(uri, opts);\n\t\n\t opts = opts || {};\n\t\n\t if (uri && 'object' === typeof uri) {\n\t opts = uri;\n\t uri = null;\n\t }\n\t\n\t if (uri) {\n\t uri = parseuri(uri);\n\t opts.hostname = uri.host;\n\t opts.secure = uri.protocol === 'https' || uri.protocol === 'wss';\n\t opts.port = uri.port;\n\t if (uri.query) opts.query = uri.query;\n\t } else if (opts.host) {\n\t opts.hostname = parseuri(opts.host).host;\n\t }\n\t\n\t this.secure = null != opts.secure ? opts.secure\n\t : (typeof location !== 'undefined' && 'https:' === location.protocol);\n\t\n\t if (opts.hostname && !opts.port) {\n\t // if no port is specified manually, use the protocol default\n\t opts.port = this.secure ? '443' : '80';\n\t }\n\t\n\t this.agent = opts.agent || false;\n\t this.hostname = opts.hostname ||\n\t (typeof location !== 'undefined' ? location.hostname : 'localhost');\n\t this.port = opts.port || (typeof location !== 'undefined' && location.port\n\t ? location.port\n\t : (this.secure ? 443 : 80));\n\t this.query = opts.query || {};\n\t if ('string' === typeof this.query) this.query = parseqs.decode(this.query);\n\t this.upgrade = false !== opts.upgrade;\n\t this.path = (opts.path || '/engine.io').replace(/\\/$/, '') + '/';\n\t this.forceJSONP = !!opts.forceJSONP;\n\t this.jsonp = false !== opts.jsonp;\n\t this.forceBase64 = !!opts.forceBase64;\n\t this.enablesXDR = !!opts.enablesXDR;\n\t this.withCredentials = false !== opts.withCredentials;\n\t this.timestampParam = opts.timestampParam || 't';\n\t this.timestampRequests = opts.timestampRequests;\n\t this.transports = opts.transports || ['polling', 'websocket'];\n\t this.transportOptions = opts.transportOptions || {};\n\t this.readyState = '';\n\t this.writeBuffer = [];\n\t this.prevBufferLen = 0;\n\t this.policyPort = opts.policyPort || 843;\n\t this.rememberUpgrade = opts.rememberUpgrade || false;\n\t this.binaryType = null;\n\t this.onlyBinaryUpgrades = opts.onlyBinaryUpgrades;\n\t this.perMessageDeflate = false !== opts.perMessageDeflate ? (opts.perMessageDeflate || {}) : false;\n\t\n\t if (true === this.perMessageDeflate) this.perMessageDeflate = {};\n\t if (this.perMessageDeflate && null == this.perMessageDeflate.threshold) {\n\t this.perMessageDeflate.threshold = 1024;\n\t }\n\t\n\t // SSL options for Node.js client\n\t this.pfx = opts.pfx || null;\n\t this.key = opts.key || null;\n\t this.passphrase = opts.passphrase || null;\n\t this.cert = opts.cert || null;\n\t this.ca = opts.ca || null;\n\t this.ciphers = opts.ciphers || null;\n\t this.rejectUnauthorized = opts.rejectUnauthorized === undefined ? true : opts.rejectUnauthorized;\n\t this.forceNode = !!opts.forceNode;\n\t\n\t // detect ReactNative environment\n\t this.isReactNative = (typeof navigator !== 'undefined' && typeof navigator.product === 'string' && navigator.product.toLowerCase() === 'reactnative');\n\t\n\t // other options for Node.js or ReactNative client\n\t if (typeof self === 'undefined' || this.isReactNative) {\n\t if (opts.extraHeaders && Object.keys(opts.extraHeaders).length > 0) {\n\t this.extraHeaders = opts.extraHeaders;\n\t }\n\t\n\t if (opts.localAddress) {\n\t this.localAddress = opts.localAddress;\n\t }\n\t }\n\t\n\t // set on handshake\n\t this.id = null;\n\t this.upgrades = null;\n\t this.pingInterval = null;\n\t this.pingTimeout = null;\n\t\n\t // set on heartbeat\n\t this.pingIntervalTimer = null;\n\t this.pingTimeoutTimer = null;\n\t\n\t this.open();\n\t}\n\t\n\tSocket.priorWebsocketSuccess = false;\n\t\n\t/**\n\t * Mix in `Emitter`.\n\t */\n\t\n\tEmitter(Socket.prototype);\n\t\n\t/**\n\t * Protocol version.\n\t *\n\t * @api public\n\t */\n\t\n\tSocket.protocol = parser.protocol; // this is an int\n\t\n\t/**\n\t * Expose deps for legacy compatibility\n\t * and standalone browser access.\n\t */\n\t\n\tSocket.Socket = Socket;\n\tSocket.Transport = __webpack_require__(23);\n\tSocket.transports = __webpack_require__(18);\n\tSocket.parser = __webpack_require__(24);\n\t\n\t/**\n\t * Creates transport of the given type.\n\t *\n\t * @param {String} transport name\n\t * @return {Transport}\n\t * @api private\n\t */\n\t\n\tSocket.prototype.createTransport = function (name) {\n\t debug('creating transport \"%s\"', name);\n\t var query = clone(this.query);\n\t\n\t // append engine.io protocol identifier\n\t query.EIO = parser.protocol;\n\t\n\t // transport name\n\t query.transport = name;\n\t\n\t // per-transport options\n\t var options = this.transportOptions[name] || {};\n\t\n\t // session id if we already have one\n\t if (this.id) query.sid = this.id;\n\t\n\t var transport = new transports[name]({\n\t query: query,\n\t socket: this,\n\t agent: options.agent || this.agent,\n\t hostname: options.hostname || this.hostname,\n\t port: options.port || this.port,\n\t secure: options.secure || this.secure,\n\t path: options.path || this.path,\n\t forceJSONP: options.forceJSONP || this.forceJSONP,\n\t jsonp: options.jsonp || this.jsonp,\n\t forceBase64: options.forceBase64 || this.forceBase64,\n\t enablesXDR: options.enablesXDR || this.enablesXDR,\n\t withCredentials: options.withCredentials || this.withCredentials,\n\t timestampRequests: options.timestampRequests || this.timestampRequests,\n\t timestampParam: options.timestampParam || this.timestampParam,\n\t policyPort: options.policyPort || this.policyPort,\n\t pfx: options.pfx || this.pfx,\n\t key: options.key || this.key,\n\t passphrase: options.passphrase || this.passphrase,\n\t cert: options.cert || this.cert,\n\t ca: options.ca || this.ca,\n\t ciphers: options.ciphers || this.ciphers,\n\t rejectUnauthorized: options.rejectUnauthorized || this.rejectUnauthorized,\n\t perMessageDeflate: options.perMessageDeflate || this.perMessageDeflate,\n\t extraHeaders: options.extraHeaders || this.extraHeaders,\n\t forceNode: options.forceNode || this.forceNode,\n\t localAddress: options.localAddress || this.localAddress,\n\t requestTimeout: options.requestTimeout || this.requestTimeout,\n\t protocols: options.protocols || void (0),\n\t isReactNative: this.isReactNative\n\t });\n\t\n\t return transport;\n\t};\n\t\n\tfunction clone (obj) {\n\t var o = {};\n\t for (var i in obj) {\n\t if (obj.hasOwnProperty(i)) {\n\t o[i] = obj[i];\n\t }\n\t }\n\t return o;\n\t}\n\t\n\t/**\n\t * Initializes transport to use and starts probe.\n\t *\n\t * @api private\n\t */\n\tSocket.prototype.open = function () {\n\t var transport;\n\t if (this.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf('websocket') !== -1) {\n\t transport = 'websocket';\n\t } else if (0 === this.transports.length) {\n\t // Emit error on next tick so it can be listened to\n\t var self = this;\n\t setTimeout(function () {\n\t self.emit('error', 'No transports available');\n\t }, 0);\n\t return;\n\t } else {\n\t transport = this.transports[0];\n\t }\n\t this.readyState = 'opening';\n\t\n\t // Retry with the next transport if the transport is disabled (jsonp: false)\n\t try {\n\t transport = this.createTransport(transport);\n\t } catch (e) {\n\t this.transports.shift();\n\t this.open();\n\t return;\n\t }\n\t\n\t transport.open();\n\t this.setTransport(transport);\n\t};\n\t\n\t/**\n\t * Sets the current transport. Disables the existing one (if any).\n\t *\n\t * @api private\n\t */\n\t\n\tSocket.prototype.setTransport = function (transport) {\n\t debug('setting transport %s', transport.name);\n\t var self = this;\n\t\n\t if (this.transport) {\n\t debug('clearing existing transport %s', this.transport.name);\n\t this.transport.removeAllListeners();\n\t }\n\t\n\t // set up transport\n\t this.transport = transport;\n\t\n\t // set up transport listeners\n\t transport\n\t .on('drain', function () {\n\t self.onDrain();\n\t })\n\t .on('packet', function (packet) {\n\t self.onPacket(packet);\n\t })\n\t .on('error', function (e) {\n\t self.onError(e);\n\t })\n\t .on('close', function () {\n\t self.onClose('transport close');\n\t });\n\t};\n\t\n\t/**\n\t * Probes a transport.\n\t *\n\t * @param {String} transport name\n\t * @api private\n\t */\n\t\n\tSocket.prototype.probe = function (name) {\n\t debug('probing transport \"%s\"', name);\n\t var transport = this.createTransport(name, { probe: 1 });\n\t var failed = false;\n\t var self = this;\n\t\n\t Socket.priorWebsocketSuccess = false;\n\t\n\t function onTransportOpen () {\n\t if (self.onlyBinaryUpgrades) {\n\t var upgradeLosesBinary = !this.supportsBinary && self.transport.supportsBinary;\n\t failed = failed || upgradeLosesBinary;\n\t }\n\t if (failed) return;\n\t\n\t debug('probe transport \"%s\" opened', name);\n\t transport.send([{ type: 'ping', data: 'probe' }]);\n\t transport.once('packet', function (msg) {\n\t if (failed) return;\n\t if ('pong' === msg.type && 'probe' === msg.data) {\n\t debug('probe transport \"%s\" pong', name);\n\t self.upgrading = true;\n\t self.emit('upgrading', transport);\n\t if (!transport) return;\n\t Socket.priorWebsocketSuccess = 'websocket' === transport.name;\n\t\n\t debug('pausing current transport \"%s\"', self.transport.name);\n\t self.transport.pause(function () {\n\t if (failed) return;\n\t if ('closed' === self.readyState) return;\n\t debug('changing transport and sending upgrade packet');\n\t\n\t cleanup();\n\t\n\t self.setTransport(transport);\n\t transport.send([{ type: 'upgrade' }]);\n\t self.emit('upgrade', transport);\n\t transport = null;\n\t self.upgrading = false;\n\t self.flush();\n\t });\n\t } else {\n\t debug('probe transport \"%s\" failed', name);\n\t var err = new Error('probe error');\n\t err.transport = transport.name;\n\t self.emit('upgradeError', err);\n\t }\n\t });\n\t }\n\t\n\t function freezeTransport () {\n\t if (failed) return;\n\t\n\t // Any callback called by transport should be ignored since now\n\t failed = true;\n\t\n\t cleanup();\n\t\n\t transport.close();\n\t transport = null;\n\t }\n\t\n\t // Handle any error that happens while probing\n\t function onerror (err) {\n\t var error = new Error('probe error: ' + err);\n\t error.transport = transport.name;\n\t\n\t freezeTransport();\n\t\n\t debug('probe transport \"%s\" failed because of error: %s', name, err);\n\t\n\t self.emit('upgradeError', error);\n\t }\n\t\n\t function onTransportClose () {\n\t onerror('transport closed');\n\t }\n\t\n\t // When the socket is closed while we're probing\n\t function onclose () {\n\t onerror('socket closed');\n\t }\n\t\n\t // When the socket is upgraded while we're probing\n\t function onupgrade (to) {\n\t if (transport && to.name !== transport.name) {\n\t debug('\"%s\" works - aborting \"%s\"', to.name, transport.name);\n\t freezeTransport();\n\t }\n\t }\n\t\n\t // Remove all listeners on the transport and on self\n\t function cleanup () {\n\t transport.removeListener('open', onTransportOpen);\n\t transport.removeListener('error', onerror);\n\t transport.removeListener('close', onTransportClose);\n\t self.removeListener('close', onclose);\n\t self.removeListener('upgrading', onupgrade);\n\t }\n\t\n\t transport.once('open', onTransportOpen);\n\t transport.once('error', onerror);\n\t transport.once('close', onTransportClose);\n\t\n\t this.once('close', onclose);\n\t this.once('upgrading', onupgrade);\n\t\n\t transport.open();\n\t};\n\t\n\t/**\n\t * Called when connection is deemed open.\n\t *\n\t * @api public\n\t */\n\t\n\tSocket.prototype.onOpen = function () {\n\t debug('socket open');\n\t this.readyState = 'open';\n\t Socket.priorWebsocketSuccess = 'websocket' === this.transport.name;\n\t this.emit('open');\n\t this.flush();\n\t\n\t // we check for `readyState` in case an `open`\n\t // listener already closed the socket\n\t if ('open' === this.readyState && this.upgrade && this.transport.pause) {\n\t debug('starting upgrade probes');\n\t for (var i = 0, l = this.upgrades.length; i < l; i++) {\n\t this.probe(this.upgrades[i]);\n\t }\n\t }\n\t};\n\t\n\t/**\n\t * Handles a packet.\n\t *\n\t * @api private\n\t */\n\t\n\tSocket.prototype.onPacket = function (packet) {\n\t if ('opening' === this.readyState || 'open' === this.readyState ||\n\t 'closing' === this.readyState) {\n\t debug('socket receive: type \"%s\", data \"%s\"', packet.type, packet.data);\n\t\n\t this.emit('packet', packet);\n\t\n\t // Socket is live - any packet counts\n\t this.emit('heartbeat');\n\t\n\t switch (packet.type) {\n\t case 'open':\n\t this.onHandshake(JSON.parse(packet.data));\n\t break;\n\t\n\t case 'pong':\n\t this.setPing();\n\t this.emit('pong');\n\t break;\n\t\n\t case 'error':\n\t var err = new Error('server error');\n\t err.code = packet.data;\n\t this.onError(err);\n\t break;\n\t\n\t case 'message':\n\t this.emit('data', packet.data);\n\t this.emit('message', packet.data);\n\t break;\n\t }\n\t } else {\n\t debug('packet received with socket readyState \"%s\"', this.readyState);\n\t }\n\t};\n\t\n\t/**\n\t * Called upon handshake completion.\n\t *\n\t * @param {Object} handshake obj\n\t * @api private\n\t */\n\t\n\tSocket.prototype.onHandshake = function (data) {\n\t this.emit('handshake', data);\n\t this.id = data.sid;\n\t this.transport.query.sid = data.sid;\n\t this.upgrades = this.filterUpgrades(data.upgrades);\n\t this.pingInterval = data.pingInterval;\n\t this.pingTimeout = data.pingTimeout;\n\t this.onOpen();\n\t // In case open handler closes socket\n\t if ('closed' === this.readyState) return;\n\t this.setPing();\n\t\n\t // Prolong liveness of socket on heartbeat\n\t this.removeListener('heartbeat', this.onHeartbeat);\n\t this.on('heartbeat', this.onHeartbeat);\n\t};\n\t\n\t/**\n\t * Resets ping timeout.\n\t *\n\t * @api private\n\t */\n\t\n\tSocket.prototype.onHeartbeat = function (timeout) {\n\t clearTimeout(this.pingTimeoutTimer);\n\t var self = this;\n\t self.pingTimeoutTimer = setTimeout(function () {\n\t if ('closed' === self.readyState) return;\n\t self.onClose('ping timeout');\n\t }, timeout || (self.pingInterval + self.pingTimeout));\n\t};\n\t\n\t/**\n\t * Pings server every `this.pingInterval` and expects response\n\t * within `this.pingTimeout` or closes connection.\n\t *\n\t * @api private\n\t */\n\t\n\tSocket.prototype.setPing = function () {\n\t var self = this;\n\t clearTimeout(self.pingIntervalTimer);\n\t self.pingIntervalTimer = setTimeout(function () {\n\t debug('writing ping packet - expecting pong within %sms', self.pingTimeout);\n\t self.ping();\n\t self.onHeartbeat(self.pingTimeout);\n\t }, self.pingInterval);\n\t};\n\t\n\t/**\n\t* Sends a ping packet.\n\t*\n\t* @api private\n\t*/\n\t\n\tSocket.prototype.ping = function () {\n\t var self = this;\n\t this.sendPacket('ping', function () {\n\t self.emit('ping');\n\t });\n\t};\n\t\n\t/**\n\t * Called on `drain` event\n\t *\n\t * @api private\n\t */\n\t\n\tSocket.prototype.onDrain = function () {\n\t this.writeBuffer.splice(0, this.prevBufferLen);\n\t\n\t // setting prevBufferLen = 0 is very important\n\t // for example, when upgrading, upgrade packet is sent over,\n\t // and a nonzero prevBufferLen could cause problems on `drain`\n\t this.prevBufferLen = 0;\n\t\n\t if (0 === this.writeBuffer.length) {\n\t this.emit('drain');\n\t } else {\n\t this.flush();\n\t }\n\t};\n\t\n\t/**\n\t * Flush write buffers.\n\t *\n\t * @api private\n\t */\n\t\n\tSocket.prototype.flush = function () {\n\t if ('closed' !== this.readyState && this.transport.writable &&\n\t !this.upgrading && this.writeBuffer.length) {\n\t debug('flushing %d packets in socket', this.writeBuffer.length);\n\t this.transport.send(this.writeBuffer);\n\t // keep track of current length of writeBuffer\n\t // splice writeBuffer and callbackBuffer on `drain`\n\t this.prevBufferLen = this.writeBuffer.length;\n\t this.emit('flush');\n\t }\n\t};\n\t\n\t/**\n\t * Sends a message.\n\t *\n\t * @param {String} message.\n\t * @param {Function} callback function.\n\t * @param {Object} options.\n\t * @return {Socket} for chaining.\n\t * @api public\n\t */\n\t\n\tSocket.prototype.write =\n\tSocket.prototype.send = function (msg, options, fn) {\n\t this.sendPacket('message', msg, options, fn);\n\t return this;\n\t};\n\t\n\t/**\n\t * Sends a packet.\n\t *\n\t * @param {String} packet type.\n\t * @param {String} data.\n\t * @param {Object} options.\n\t * @param {Function} callback function.\n\t * @api private\n\t */\n\t\n\tSocket.prototype.sendPacket = function (type, data, options, fn) {\n\t if ('function' === typeof data) {\n\t fn = data;\n\t data = undefined;\n\t }\n\t\n\t if ('function' === typeof options) {\n\t fn = options;\n\t options = null;\n\t }\n\t\n\t if ('closing' === this.readyState || 'closed' === this.readyState) {\n\t return;\n\t }\n\t\n\t options = options || {};\n\t options.compress = false !== options.compress;\n\t\n\t var packet = {\n\t type: type,\n\t data: data,\n\t options: options\n\t };\n\t this.emit('packetCreate', packet);\n\t this.writeBuffer.push(packet);\n\t if (fn) this.once('flush', fn);\n\t this.flush();\n\t};\n\t\n\t/**\n\t * Closes the connection.\n\t *\n\t * @api private\n\t */\n\t\n\tSocket.prototype.close = function () {\n\t if ('opening' === this.readyState || 'open' === this.readyState) {\n\t this.readyState = 'closing';\n\t\n\t var self = this;\n\t\n\t if (this.writeBuffer.length) {\n\t this.once('drain', function () {\n\t if (this.upgrading) {\n\t waitForUpgrade();\n\t } else {\n\t close();\n\t }\n\t });\n\t } else if (this.upgrading) {\n\t waitForUpgrade();\n\t } else {\n\t close();\n\t }\n\t }\n\t\n\t function close () {\n\t self.onClose('forced close');\n\t debug('socket closing - telling transport to close');\n\t self.transport.close();\n\t }\n\t\n\t function cleanupAndClose () {\n\t self.removeListener('upgrade', cleanupAndClose);\n\t self.removeListener('upgradeError', cleanupAndClose);\n\t close();\n\t }\n\t\n\t function waitForUpgrade () {\n\t // wait for upgrade to finish since we can't send packets while pausing a transport\n\t self.once('upgrade', cleanupAndClose);\n\t self.once('upgradeError', cleanupAndClose);\n\t }\n\t\n\t return this;\n\t};\n\t\n\t/**\n\t * Called upon transport error\n\t *\n\t * @api private\n\t */\n\t\n\tSocket.prototype.onError = function (err) {\n\t debug('socket error %j', err);\n\t Socket.priorWebsocketSuccess = false;\n\t this.emit('error', err);\n\t this.onClose('transport error', err);\n\t};\n\t\n\t/**\n\t * Called upon transport close.\n\t *\n\t * @api private\n\t */\n\t\n\tSocket.prototype.onClose = function (reason, desc) {\n\t if ('opening' === this.readyState || 'open' === this.readyState || 'closing' === this.readyState) {\n\t debug('socket close with reason: \"%s\"', reason);\n\t var self = this;\n\t\n\t // clear timers\n\t clearTimeout(this.pingIntervalTimer);\n\t clearTimeout(this.pingTimeoutTimer);\n\t\n\t // stop event from firing again for transport\n\t this.transport.removeAllListeners('close');\n\t\n\t // ensure transport won't stay open\n\t this.transport.close();\n\t\n\t // ignore further transport communication\n\t this.transport.removeAllListeners();\n\t\n\t // set ready state\n\t this.readyState = 'closed';\n\t\n\t // clear session id\n\t this.id = null;\n\t\n\t // emit close event\n\t this.emit('close', reason, desc);\n\t\n\t // clean buffers after, so users can still\n\t // grab the buffers on `close` event\n\t self.writeBuffer = [];\n\t self.prevBufferLen = 0;\n\t }\n\t};\n\t\n\t/**\n\t * Filters upgrades, returning only those matching client transports.\n\t *\n\t * @param {Array} server upgrades\n\t * @api private\n\t *\n\t */\n\t\n\tSocket.prototype.filterUpgrades = function (upgrades) {\n\t var filteredUpgrades = [];\n\t for (var i = 0, j = upgrades.length; i < j; i++) {\n\t if (~index(this.transports, upgrades[i])) filteredUpgrades.push(upgrades[i]);\n\t }\n\t return filteredUpgrades;\n\t};\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Module dependencies\n\t */\n\t\n\tvar XMLHttpRequest = __webpack_require__(19);\n\tvar XHR = __webpack_require__(21);\n\tvar JSONP = __webpack_require__(35);\n\tvar websocket = __webpack_require__(36);\n\t\n\t/**\n\t * Export transports.\n\t */\n\t\n\texports.polling = polling;\n\texports.websocket = websocket;\n\t\n\t/**\n\t * Polling transport polymorphic constructor.\n\t * Decides on xhr vs jsonp based on feature detection.\n\t *\n\t * @api private\n\t */\n\t\n\tfunction polling (opts) {\n\t var xhr;\n\t var xd = false;\n\t var xs = false;\n\t var jsonp = false !== opts.jsonp;\n\t\n\t if (typeof location !== 'undefined') {\n\t var isSSL = 'https:' === location.protocol;\n\t var port = location.port;\n\t\n\t // some user agents have empty `location.port`\n\t if (!port) {\n\t port = isSSL ? 443 : 80;\n\t }\n\t\n\t xd = opts.hostname !== location.hostname || port !== opts.port;\n\t xs = opts.secure !== isSSL;\n\t }\n\t\n\t opts.xdomain = xd;\n\t opts.xscheme = xs;\n\t xhr = new XMLHttpRequest(opts);\n\t\n\t if ('open' in xhr && !opts.forceJSONP) {\n\t return new XHR(opts);\n\t } else {\n\t if (!jsonp) throw new Error('JSONP disabled');\n\t return new JSONP(opts);\n\t }\n\t}\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// browser shim for xmlhttprequest module\n\t\n\tvar hasCORS = __webpack_require__(20);\n\t\n\tmodule.exports = function (opts) {\n\t var xdomain = opts.xdomain;\n\t\n\t // scheme must be same when usign XDomainRequest\n\t // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n\t var xscheme = opts.xscheme;\n\t\n\t // XDomainRequest has a flow of not sending cookie, therefore it should be disabled as a default.\n\t // https://github.com/Automattic/engine.io-client/pull/217\n\t var enablesXDR = opts.enablesXDR;\n\t\n\t // XMLHttpRequest can be disabled on IE\n\t try {\n\t if ('undefined' !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n\t return new XMLHttpRequest();\n\t }\n\t } catch (e) { }\n\t\n\t // Use XDomainRequest for IE8 if enablesXDR is true\n\t // because loading bar keeps flashing when using jsonp-polling\n\t // https://github.com/yujiosaka/socke.io-ie8-loading-example\n\t try {\n\t if ('undefined' !== typeof XDomainRequest && !xscheme && enablesXDR) {\n\t return new XDomainRequest();\n\t }\n\t } catch (e) { }\n\t\n\t if (!xdomain) {\n\t try {\n\t return new self[['Active'].concat('Object').join('X')]('Microsoft.XMLHTTP');\n\t } catch (e) { }\n\t }\n\t};\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports) {\n\n\t\n\t/**\n\t * Module exports.\n\t *\n\t * Logic borrowed from Modernizr:\n\t *\n\t * - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js\n\t */\n\t\n\ttry {\n\t module.exports = typeof XMLHttpRequest !== 'undefined' &&\n\t 'withCredentials' in new XMLHttpRequest();\n\t} catch (err) {\n\t // if XMLHttp support is disabled in IE then it will throw\n\t // when trying to create\n\t module.exports = false;\n\t}\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* global attachEvent */\n\t\n\t/**\n\t * Module requirements.\n\t */\n\t\n\tvar XMLHttpRequest = __webpack_require__(19);\n\tvar Polling = __webpack_require__(22);\n\tvar Emitter = __webpack_require__(11);\n\tvar inherit = __webpack_require__(33);\n\tvar debug = __webpack_require__(3)('engine.io-client:polling-xhr');\n\t\n\t/**\n\t * Module exports.\n\t */\n\t\n\tmodule.exports = XHR;\n\tmodule.exports.Request = Request;\n\t\n\t/**\n\t * Empty function\n\t */\n\t\n\tfunction empty () {}\n\t\n\t/**\n\t * XHR Polling constructor.\n\t *\n\t * @param {Object} opts\n\t * @api public\n\t */\n\t\n\tfunction XHR (opts) {\n\t Polling.call(this, opts);\n\t this.requestTimeout = opts.requestTimeout;\n\t this.extraHeaders = opts.extraHeaders;\n\t\n\t if (typeof location !== 'undefined') {\n\t var isSSL = 'https:' === location.protocol;\n\t var port = location.port;\n\t\n\t // some user agents have empty `location.port`\n\t if (!port) {\n\t port = isSSL ? 443 : 80;\n\t }\n\t\n\t this.xd = (typeof location !== 'undefined' && opts.hostname !== location.hostname) ||\n\t port !== opts.port;\n\t this.xs = opts.secure !== isSSL;\n\t }\n\t}\n\t\n\t/**\n\t * Inherits from Polling.\n\t */\n\t\n\tinherit(XHR, Polling);\n\t\n\t/**\n\t * XHR supports binary\n\t */\n\t\n\tXHR.prototype.supportsBinary = true;\n\t\n\t/**\n\t * Creates a request.\n\t *\n\t * @param {String} method\n\t * @api private\n\t */\n\t\n\tXHR.prototype.request = function (opts) {\n\t opts = opts || {};\n\t opts.uri = this.uri();\n\t opts.xd = this.xd;\n\t opts.xs = this.xs;\n\t opts.agent = this.agent || false;\n\t opts.supportsBinary = this.supportsBinary;\n\t opts.enablesXDR = this.enablesXDR;\n\t opts.withCredentials = this.withCredentials;\n\t\n\t // SSL options for Node.js client\n\t opts.pfx = this.pfx;\n\t opts.key = this.key;\n\t opts.passphrase = this.passphrase;\n\t opts.cert = this.cert;\n\t opts.ca = this.ca;\n\t opts.ciphers = this.ciphers;\n\t opts.rejectUnauthorized = this.rejectUnauthorized;\n\t opts.requestTimeout = this.requestTimeout;\n\t\n\t // other options for Node.js client\n\t opts.extraHeaders = this.extraHeaders;\n\t\n\t return new Request(opts);\n\t};\n\t\n\t/**\n\t * Sends data.\n\t *\n\t * @param {String} data to send.\n\t * @param {Function} called upon flush.\n\t * @api private\n\t */\n\t\n\tXHR.prototype.doWrite = function (data, fn) {\n\t var isBinary = typeof data !== 'string' && data !== undefined;\n\t var req = this.request({ method: 'POST', data: data, isBinary: isBinary });\n\t var self = this;\n\t req.on('success', fn);\n\t req.on('error', function (err) {\n\t self.onError('xhr post error', err);\n\t });\n\t this.sendXhr = req;\n\t};\n\t\n\t/**\n\t * Starts a poll cycle.\n\t *\n\t * @api private\n\t */\n\t\n\tXHR.prototype.doPoll = function () {\n\t debug('xhr poll');\n\t var req = this.request();\n\t var self = this;\n\t req.on('data', function (data) {\n\t self.onData(data);\n\t });\n\t req.on('error', function (err) {\n\t self.onError('xhr poll error', err);\n\t });\n\t this.pollXhr = req;\n\t};\n\t\n\t/**\n\t * Request constructor\n\t *\n\t * @param {Object} options\n\t * @api public\n\t */\n\t\n\tfunction Request (opts) {\n\t this.method = opts.method || 'GET';\n\t this.uri = opts.uri;\n\t this.xd = !!opts.xd;\n\t this.xs = !!opts.xs;\n\t this.async = false !== opts.async;\n\t this.data = undefined !== opts.data ? opts.data : null;\n\t this.agent = opts.agent;\n\t this.isBinary = opts.isBinary;\n\t this.supportsBinary = opts.supportsBinary;\n\t this.enablesXDR = opts.enablesXDR;\n\t this.withCredentials = opts.withCredentials;\n\t this.requestTimeout = opts.requestTimeout;\n\t\n\t // SSL options for Node.js client\n\t this.pfx = opts.pfx;\n\t this.key = opts.key;\n\t this.passphrase = opts.passphrase;\n\t this.cert = opts.cert;\n\t this.ca = opts.ca;\n\t this.ciphers = opts.ciphers;\n\t this.rejectUnauthorized = opts.rejectUnauthorized;\n\t\n\t // other options for Node.js client\n\t this.extraHeaders = opts.extraHeaders;\n\t\n\t this.create();\n\t}\n\t\n\t/**\n\t * Mix in `Emitter`.\n\t */\n\t\n\tEmitter(Request.prototype);\n\t\n\t/**\n\t * Creates the XHR object and sends the request.\n\t *\n\t * @api private\n\t */\n\t\n\tRequest.prototype.create = function () {\n\t var opts = { agent: this.agent, xdomain: this.xd, xscheme: this.xs, enablesXDR: this.enablesXDR };\n\t\n\t // SSL options for Node.js client\n\t opts.pfx = this.pfx;\n\t opts.key = this.key;\n\t opts.passphrase = this.passphrase;\n\t opts.cert = this.cert;\n\t opts.ca = this.ca;\n\t opts.ciphers = this.ciphers;\n\t opts.rejectUnauthorized = this.rejectUnauthorized;\n\t\n\t var xhr = this.xhr = new XMLHttpRequest(opts);\n\t var self = this;\n\t\n\t try {\n\t debug('xhr open %s: %s', this.method, this.uri);\n\t xhr.open(this.method, this.uri, this.async);\n\t try {\n\t if (this.extraHeaders) {\n\t xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n\t for (var i in this.extraHeaders) {\n\t if (this.extraHeaders.hasOwnProperty(i)) {\n\t xhr.setRequestHeader(i, this.extraHeaders[i]);\n\t }\n\t }\n\t }\n\t } catch (e) {}\n\t\n\t if ('POST' === this.method) {\n\t try {\n\t if (this.isBinary) {\n\t xhr.setRequestHeader('Content-type', 'application/octet-stream');\n\t } else {\n\t xhr.setRequestHeader('Content-type', 'text/plain;charset=UTF-8');\n\t }\n\t } catch (e) {}\n\t }\n\t\n\t try {\n\t xhr.setRequestHeader('Accept', '*/*');\n\t } catch (e) {}\n\t\n\t // ie6 check\n\t if ('withCredentials' in xhr) {\n\t xhr.withCredentials = this.withCredentials;\n\t }\n\t\n\t if (this.requestTimeout) {\n\t xhr.timeout = this.requestTimeout;\n\t }\n\t\n\t if (this.hasXDR()) {\n\t xhr.onload = function () {\n\t self.onLoad();\n\t };\n\t xhr.onerror = function () {\n\t self.onError(xhr.responseText);\n\t };\n\t } else {\n\t xhr.onreadystatechange = function () {\n\t if (xhr.readyState === 2) {\n\t try {\n\t var contentType = xhr.getResponseHeader('Content-Type');\n\t if (self.supportsBinary && contentType === 'application/octet-stream' || contentType === 'application/octet-stream; charset=UTF-8') {\n\t xhr.responseType = 'arraybuffer';\n\t }\n\t } catch (e) {}\n\t }\n\t if (4 !== xhr.readyState) return;\n\t if (200 === xhr.status || 1223 === xhr.status) {\n\t self.onLoad();\n\t } else {\n\t // make sure the `error` event handler that's user-set\n\t // does not throw in the same tick and gets caught here\n\t setTimeout(function () {\n\t self.onError(typeof xhr.status === 'number' ? xhr.status : 0);\n\t }, 0);\n\t }\n\t };\n\t }\n\t\n\t debug('xhr data %s', this.data);\n\t xhr.send(this.data);\n\t } catch (e) {\n\t // Need to defer since .create() is called directly fhrom the constructor\n\t // and thus the 'error' event can only be only bound *after* this exception\n\t // occurs. Therefore, also, we cannot throw here at all.\n\t setTimeout(function () {\n\t self.onError(e);\n\t }, 0);\n\t return;\n\t }\n\t\n\t if (typeof document !== 'undefined') {\n\t this.index = Request.requestsCount++;\n\t Request.requests[this.index] = this;\n\t }\n\t};\n\t\n\t/**\n\t * Called upon successful response.\n\t *\n\t * @api private\n\t */\n\t\n\tRequest.prototype.onSuccess = function () {\n\t this.emit('success');\n\t this.cleanup();\n\t};\n\t\n\t/**\n\t * Called if we have data.\n\t *\n\t * @api private\n\t */\n\t\n\tRequest.prototype.onData = function (data) {\n\t this.emit('data', data);\n\t this.onSuccess();\n\t};\n\t\n\t/**\n\t * Called upon error.\n\t *\n\t * @api private\n\t */\n\t\n\tRequest.prototype.onError = function (err) {\n\t this.emit('error', err);\n\t this.cleanup(true);\n\t};\n\t\n\t/**\n\t * Cleans up house.\n\t *\n\t * @api private\n\t */\n\t\n\tRequest.prototype.cleanup = function (fromError) {\n\t if ('undefined' === typeof this.xhr || null === this.xhr) {\n\t return;\n\t }\n\t // xmlhttprequest\n\t if (this.hasXDR()) {\n\t this.xhr.onload = this.xhr.onerror = empty;\n\t } else {\n\t this.xhr.onreadystatechange = empty;\n\t }\n\t\n\t if (fromError) {\n\t try {\n\t this.xhr.abort();\n\t } catch (e) {}\n\t }\n\t\n\t if (typeof document !== 'undefined') {\n\t delete Request.requests[this.index];\n\t }\n\t\n\t this.xhr = null;\n\t};\n\t\n\t/**\n\t * Called upon load.\n\t *\n\t * @api private\n\t */\n\t\n\tRequest.prototype.onLoad = function () {\n\t var data;\n\t try {\n\t var contentType;\n\t try {\n\t contentType = this.xhr.getResponseHeader('Content-Type');\n\t } catch (e) {}\n\t if (contentType === 'application/octet-stream' || contentType === 'application/octet-stream; charset=UTF-8') {\n\t data = this.xhr.response || this.xhr.responseText;\n\t } else {\n\t data = this.xhr.responseText;\n\t }\n\t } catch (e) {\n\t this.onError(e);\n\t }\n\t if (null != data) {\n\t this.onData(data);\n\t }\n\t};\n\t\n\t/**\n\t * Check if it has XDomainRequest.\n\t *\n\t * @api private\n\t */\n\t\n\tRequest.prototype.hasXDR = function () {\n\t return typeof XDomainRequest !== 'undefined' && !this.xs && this.enablesXDR;\n\t};\n\t\n\t/**\n\t * Aborts the request.\n\t *\n\t * @api public\n\t */\n\t\n\tRequest.prototype.abort = function () {\n\t this.cleanup();\n\t};\n\t\n\t/**\n\t * Aborts pending requests when unloading the window. This is needed to prevent\n\t * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n\t * emitted.\n\t */\n\t\n\tRequest.requestsCount = 0;\n\tRequest.requests = {};\n\t\n\tif (typeof document !== 'undefined') {\n\t if (typeof attachEvent === 'function') {\n\t attachEvent('onunload', unloadHandler);\n\t } else if (typeof addEventListener === 'function') {\n\t var terminationEvent = 'onpagehide' in self ? 'pagehide' : 'unload';\n\t addEventListener(terminationEvent, unloadHandler, false);\n\t }\n\t}\n\t\n\tfunction unloadHandler () {\n\t for (var i in Request.requests) {\n\t if (Request.requests.hasOwnProperty(i)) {\n\t Request.requests[i].abort();\n\t }\n\t }\n\t}\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Module dependencies.\n\t */\n\t\n\tvar Transport = __webpack_require__(23);\n\tvar parseqs = __webpack_require__(32);\n\tvar parser = __webpack_require__(24);\n\tvar inherit = __webpack_require__(33);\n\tvar yeast = __webpack_require__(34);\n\tvar debug = __webpack_require__(3)('engine.io-client:polling');\n\t\n\t/**\n\t * Module exports.\n\t */\n\t\n\tmodule.exports = Polling;\n\t\n\t/**\n\t * Is XHR2 supported?\n\t */\n\t\n\tvar hasXHR2 = (function () {\n\t var XMLHttpRequest = __webpack_require__(19);\n\t var xhr = new XMLHttpRequest({ xdomain: false });\n\t return null != xhr.responseType;\n\t})();\n\t\n\t/**\n\t * Polling interface.\n\t *\n\t * @param {Object} opts\n\t * @api private\n\t */\n\t\n\tfunction Polling (opts) {\n\t var forceBase64 = (opts && opts.forceBase64);\n\t if (!hasXHR2 || forceBase64) {\n\t this.supportsBinary = false;\n\t }\n\t Transport.call(this, opts);\n\t}\n\t\n\t/**\n\t * Inherits from Transport.\n\t */\n\t\n\tinherit(Polling, Transport);\n\t\n\t/**\n\t * Transport name.\n\t */\n\t\n\tPolling.prototype.name = 'polling';\n\t\n\t/**\n\t * Opens the socket (triggers polling). We write a PING message to determine\n\t * when the transport is open.\n\t *\n\t * @api private\n\t */\n\t\n\tPolling.prototype.doOpen = function () {\n\t this.poll();\n\t};\n\t\n\t/**\n\t * Pauses polling.\n\t *\n\t * @param {Function} callback upon buffers are flushed and transport is paused\n\t * @api private\n\t */\n\t\n\tPolling.prototype.pause = function (onPause) {\n\t var self = this;\n\t\n\t this.readyState = 'pausing';\n\t\n\t function pause () {\n\t debug('paused');\n\t self.readyState = 'paused';\n\t onPause();\n\t }\n\t\n\t if (this.polling || !this.writable) {\n\t var total = 0;\n\t\n\t if (this.polling) {\n\t debug('we are currently polling - waiting to pause');\n\t total++;\n\t this.once('pollComplete', function () {\n\t debug('pre-pause polling complete');\n\t --total || pause();\n\t });\n\t }\n\t\n\t if (!this.writable) {\n\t debug('we are currently writing - waiting to pause');\n\t total++;\n\t this.once('drain', function () {\n\t debug('pre-pause writing complete');\n\t --total || pause();\n\t });\n\t }\n\t } else {\n\t pause();\n\t }\n\t};\n\t\n\t/**\n\t * Starts polling cycle.\n\t *\n\t * @api public\n\t */\n\t\n\tPolling.prototype.poll = function () {\n\t debug('polling');\n\t this.polling = true;\n\t this.doPoll();\n\t this.emit('poll');\n\t};\n\t\n\t/**\n\t * Overloads onData to detect payloads.\n\t *\n\t * @api private\n\t */\n\t\n\tPolling.prototype.onData = function (data) {\n\t var self = this;\n\t debug('polling got data %s', data);\n\t var callback = function (packet, index, total) {\n\t // if its the first message we consider the transport open\n\t if ('opening' === self.readyState) {\n\t self.onOpen();\n\t }\n\t\n\t // if its a close packet, we close the ongoing requests\n\t if ('close' === packet.type) {\n\t self.onClose();\n\t return false;\n\t }\n\t\n\t // otherwise bypass onData and handle the message\n\t self.onPacket(packet);\n\t };\n\t\n\t // decode payload\n\t parser.decodePayload(data, this.socket.binaryType, callback);\n\t\n\t // if an event did not trigger closing\n\t if ('closed' !== this.readyState) {\n\t // if we got data we're not polling\n\t this.polling = false;\n\t this.emit('pollComplete');\n\t\n\t if ('open' === this.readyState) {\n\t this.poll();\n\t } else {\n\t debug('ignoring poll - transport state \"%s\"', this.readyState);\n\t }\n\t }\n\t};\n\t\n\t/**\n\t * For polling, send a close packet.\n\t *\n\t * @api private\n\t */\n\t\n\tPolling.prototype.doClose = function () {\n\t var self = this;\n\t\n\t function close () {\n\t debug('writing close packet');\n\t self.write([{ type: 'close' }]);\n\t }\n\t\n\t if ('open' === this.readyState) {\n\t debug('transport open - closing');\n\t close();\n\t } else {\n\t // in case we're trying to close while\n\t // handshaking is in progress (GH-164)\n\t debug('transport not open - deferring close');\n\t this.once('open', close);\n\t }\n\t};\n\t\n\t/**\n\t * Writes a packets payload.\n\t *\n\t * @param {Array} data packets\n\t * @param {Function} drain callback\n\t * @api private\n\t */\n\t\n\tPolling.prototype.write = function (packets) {\n\t var self = this;\n\t this.writable = false;\n\t var callbackfn = function () {\n\t self.writable = true;\n\t self.emit('drain');\n\t };\n\t\n\t parser.encodePayload(packets, this.supportsBinary, function (data) {\n\t self.doWrite(data, callbackfn);\n\t });\n\t};\n\t\n\t/**\n\t * Generates uri for connection.\n\t *\n\t * @api private\n\t */\n\t\n\tPolling.prototype.uri = function () {\n\t var query = this.query || {};\n\t var schema = this.secure ? 'https' : 'http';\n\t var port = '';\n\t\n\t // cache busting is forced\n\t if (false !== this.timestampRequests) {\n\t query[this.timestampParam] = yeast();\n\t }\n\t\n\t if (!this.supportsBinary && !query.sid) {\n\t query.b64 = 1;\n\t }\n\t\n\t query = parseqs.encode(query);\n\t\n\t // avoid port if default for schema\n\t if (this.port && (('https' === schema && Number(this.port) !== 443) ||\n\t ('http' === schema && Number(this.port) !== 80))) {\n\t port = ':' + this.port;\n\t }\n\t\n\t // prepend ? to query\n\t if (query.length) {\n\t query = '?' + query;\n\t }\n\t\n\t var ipv6 = this.hostname.indexOf(':') !== -1;\n\t return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query;\n\t};\n\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Module dependencies.\n\t */\n\t\n\tvar parser = __webpack_require__(24);\n\tvar Emitter = __webpack_require__(11);\n\t\n\t/**\n\t * Module exports.\n\t */\n\t\n\tmodule.exports = Transport;\n\t\n\t/**\n\t * Transport abstract constructor.\n\t *\n\t * @param {Object} options.\n\t * @api private\n\t */\n\t\n\tfunction Transport (opts) {\n\t this.path = opts.path;\n\t this.hostname = opts.hostname;\n\t this.port = opts.port;\n\t this.secure = opts.secure;\n\t this.query = opts.query;\n\t this.timestampParam = opts.timestampParam;\n\t this.timestampRequests = opts.timestampRequests;\n\t this.readyState = '';\n\t this.agent = opts.agent || false;\n\t this.socket = opts.socket;\n\t this.enablesXDR = opts.enablesXDR;\n\t this.withCredentials = opts.withCredentials;\n\t\n\t // SSL options for Node.js client\n\t this.pfx = opts.pfx;\n\t this.key = opts.key;\n\t this.passphrase = opts.passphrase;\n\t this.cert = opts.cert;\n\t this.ca = opts.ca;\n\t this.ciphers = opts.ciphers;\n\t this.rejectUnauthorized = opts.rejectUnauthorized;\n\t this.forceNode = opts.forceNode;\n\t\n\t // results of ReactNative environment detection\n\t this.isReactNative = opts.isReactNative;\n\t\n\t // other options for Node.js client\n\t this.extraHeaders = opts.extraHeaders;\n\t this.localAddress = opts.localAddress;\n\t}\n\t\n\t/**\n\t * Mix in `Emitter`.\n\t */\n\t\n\tEmitter(Transport.prototype);\n\t\n\t/**\n\t * Emits an error.\n\t *\n\t * @param {String} str\n\t * @return {Transport} for chaining\n\t * @api public\n\t */\n\t\n\tTransport.prototype.onError = function (msg, desc) {\n\t var err = new Error(msg);\n\t err.type = 'TransportError';\n\t err.description = desc;\n\t this.emit('error', err);\n\t return this;\n\t};\n\t\n\t/**\n\t * Opens the transport.\n\t *\n\t * @api public\n\t */\n\t\n\tTransport.prototype.open = function () {\n\t if ('closed' === this.readyState || '' === this.readyState) {\n\t this.readyState = 'opening';\n\t this.doOpen();\n\t }\n\t\n\t return this;\n\t};\n\t\n\t/**\n\t * Closes the transport.\n\t *\n\t * @api private\n\t */\n\t\n\tTransport.prototype.close = function () {\n\t if ('opening' === this.readyState || 'open' === this.readyState) {\n\t this.doClose();\n\t this.onClose();\n\t }\n\t\n\t return this;\n\t};\n\t\n\t/**\n\t * Sends multiple packets.\n\t *\n\t * @param {Array} packets\n\t * @api private\n\t */\n\t\n\tTransport.prototype.send = function (packets) {\n\t if ('open' === this.readyState) {\n\t this.write(packets);\n\t } else {\n\t throw new Error('Transport not open');\n\t }\n\t};\n\t\n\t/**\n\t * Called upon open\n\t *\n\t * @api private\n\t */\n\t\n\tTransport.prototype.onOpen = function () {\n\t this.readyState = 'open';\n\t this.writable = true;\n\t this.emit('open');\n\t};\n\t\n\t/**\n\t * Called with data.\n\t *\n\t * @param {String} data\n\t * @api private\n\t */\n\t\n\tTransport.prototype.onData = function (data) {\n\t var packet = parser.decodePacket(data, this.socket.binaryType);\n\t this.onPacket(packet);\n\t};\n\t\n\t/**\n\t * Called with a decoded packet.\n\t */\n\t\n\tTransport.prototype.onPacket = function (packet) {\n\t this.emit('packet', packet);\n\t};\n\t\n\t/**\n\t * Called upon close.\n\t *\n\t * @api private\n\t */\n\t\n\tTransport.prototype.onClose = function () {\n\t this.readyState = 'closed';\n\t this.emit('close');\n\t};\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Module dependencies.\n\t */\n\t\n\tvar keys = __webpack_require__(25);\n\tvar hasBinary = __webpack_require__(26);\n\tvar sliceBuffer = __webpack_require__(27);\n\tvar after = __webpack_require__(28);\n\tvar utf8 = __webpack_require__(29);\n\t\n\tvar base64encoder;\n\tif (typeof ArrayBuffer !== 'undefined') {\n\t base64encoder = __webpack_require__(30);\n\t}\n\t\n\t/**\n\t * Check if we are running an android browser. That requires us to use\n\t * ArrayBuffer with polling transports...\n\t *\n\t * http://ghinda.net/jpeg-blob-ajax-android/\n\t */\n\t\n\tvar isAndroid = typeof navigator !== 'undefined' && /Android/i.test(navigator.userAgent);\n\t\n\t/**\n\t * Check if we are running in PhantomJS.\n\t * Uploading a Blob with PhantomJS does not work correctly, as reported here:\n\t * https://github.com/ariya/phantomjs/issues/11395\n\t * @type boolean\n\t */\n\tvar isPhantomJS = typeof navigator !== 'undefined' && /PhantomJS/i.test(navigator.userAgent);\n\t\n\t/**\n\t * When true, avoids using Blobs to encode payloads.\n\t * @type boolean\n\t */\n\tvar dontSendBlobs = isAndroid || isPhantomJS;\n\t\n\t/**\n\t * Current protocol version.\n\t */\n\t\n\texports.protocol = 3;\n\t\n\t/**\n\t * Packet types.\n\t */\n\t\n\tvar packets = exports.packets = {\n\t open: 0 // non-ws\n\t , close: 1 // non-ws\n\t , ping: 2\n\t , pong: 3\n\t , message: 4\n\t , upgrade: 5\n\t , noop: 6\n\t};\n\t\n\tvar packetslist = keys(packets);\n\t\n\t/**\n\t * Premade error packet.\n\t */\n\t\n\tvar err = { type: 'error', data: 'parser error' };\n\t\n\t/**\n\t * Create a blob api even for blob builder when vendor prefixes exist\n\t */\n\t\n\tvar Blob = __webpack_require__(31);\n\t\n\t/**\n\t * Encodes a packet.\n\t *\n\t * [ ]\n\t *\n\t * Example:\n\t *\n\t * 5hello world\n\t * 3\n\t * 4\n\t *\n\t * Binary is encoded in an identical principle\n\t *\n\t * @api private\n\t */\n\t\n\texports.encodePacket = function (packet, supportsBinary, utf8encode, callback) {\n\t if (typeof supportsBinary === 'function') {\n\t callback = supportsBinary;\n\t supportsBinary = false;\n\t }\n\t\n\t if (typeof utf8encode === 'function') {\n\t callback = utf8encode;\n\t utf8encode = null;\n\t }\n\t\n\t var data = (packet.data === undefined)\n\t ? undefined\n\t : packet.data.buffer || packet.data;\n\t\n\t if (typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer) {\n\t return encodeArrayBuffer(packet, supportsBinary, callback);\n\t } else if (typeof Blob !== 'undefined' && data instanceof Blob) {\n\t return encodeBlob(packet, supportsBinary, callback);\n\t }\n\t\n\t // might be an object with { base64: true, data: dataAsBase64String }\n\t if (data && data.base64) {\n\t return encodeBase64Object(packet, callback);\n\t }\n\t\n\t // Sending data as a utf-8 string\n\t var encoded = packets[packet.type];\n\t\n\t // data fragment is optional\n\t if (undefined !== packet.data) {\n\t encoded += utf8encode ? utf8.encode(String(packet.data), { strict: false }) : String(packet.data);\n\t }\n\t\n\t return callback('' + encoded);\n\t\n\t};\n\t\n\tfunction encodeBase64Object(packet, callback) {\n\t // packet data is an object { base64: true, data: dataAsBase64String }\n\t var message = 'b' + exports.packets[packet.type] + packet.data.data;\n\t return callback(message);\n\t}\n\t\n\t/**\n\t * Encode packet helpers for binary types\n\t */\n\t\n\tfunction encodeArrayBuffer(packet, supportsBinary, callback) {\n\t if (!supportsBinary) {\n\t return exports.encodeBase64Packet(packet, callback);\n\t }\n\t\n\t var data = packet.data;\n\t var contentArray = new Uint8Array(data);\n\t var resultBuffer = new Uint8Array(1 + data.byteLength);\n\t\n\t resultBuffer[0] = packets[packet.type];\n\t for (var i = 0; i < contentArray.length; i++) {\n\t resultBuffer[i+1] = contentArray[i];\n\t }\n\t\n\t return callback(resultBuffer.buffer);\n\t}\n\t\n\tfunction encodeBlobAsArrayBuffer(packet, supportsBinary, callback) {\n\t if (!supportsBinary) {\n\t return exports.encodeBase64Packet(packet, callback);\n\t }\n\t\n\t var fr = new FileReader();\n\t fr.onload = function() {\n\t exports.encodePacket({ type: packet.type, data: fr.result }, supportsBinary, true, callback);\n\t };\n\t return fr.readAsArrayBuffer(packet.data);\n\t}\n\t\n\tfunction encodeBlob(packet, supportsBinary, callback) {\n\t if (!supportsBinary) {\n\t return exports.encodeBase64Packet(packet, callback);\n\t }\n\t\n\t if (dontSendBlobs) {\n\t return encodeBlobAsArrayBuffer(packet, supportsBinary, callback);\n\t }\n\t\n\t var length = new Uint8Array(1);\n\t length[0] = packets[packet.type];\n\t var blob = new Blob([length.buffer, packet.data]);\n\t\n\t return callback(blob);\n\t}\n\t\n\t/**\n\t * Encodes a packet with binary data in a base64 string\n\t *\n\t * @param {Object} packet, has `type` and `data`\n\t * @return {String} base64 encoded message\n\t */\n\t\n\texports.encodeBase64Packet = function(packet, callback) {\n\t var message = 'b' + exports.packets[packet.type];\n\t if (typeof Blob !== 'undefined' && packet.data instanceof Blob) {\n\t var fr = new FileReader();\n\t fr.onload = function() {\n\t var b64 = fr.result.split(',')[1];\n\t callback(message + b64);\n\t };\n\t return fr.readAsDataURL(packet.data);\n\t }\n\t\n\t var b64data;\n\t try {\n\t b64data = String.fromCharCode.apply(null, new Uint8Array(packet.data));\n\t } catch (e) {\n\t // iPhone Safari doesn't let you apply with typed arrays\n\t var typed = new Uint8Array(packet.data);\n\t var basic = new Array(typed.length);\n\t for (var i = 0; i < typed.length; i++) {\n\t basic[i] = typed[i];\n\t }\n\t b64data = String.fromCharCode.apply(null, basic);\n\t }\n\t message += btoa(b64data);\n\t return callback(message);\n\t};\n\t\n\t/**\n\t * Decodes a packet. Changes format to Blob if requested.\n\t *\n\t * @return {Object} with `type` and `data` (if any)\n\t * @api private\n\t */\n\t\n\texports.decodePacket = function (data, binaryType, utf8decode) {\n\t if (data === undefined) {\n\t return err;\n\t }\n\t // String data\n\t if (typeof data === 'string') {\n\t if (data.charAt(0) === 'b') {\n\t return exports.decodeBase64Packet(data.substr(1), binaryType);\n\t }\n\t\n\t if (utf8decode) {\n\t data = tryDecode(data);\n\t if (data === false) {\n\t return err;\n\t }\n\t }\n\t var type = data.charAt(0);\n\t\n\t if (Number(type) != type || !packetslist[type]) {\n\t return err;\n\t }\n\t\n\t if (data.length > 1) {\n\t return { type: packetslist[type], data: data.substring(1) };\n\t } else {\n\t return { type: packetslist[type] };\n\t }\n\t }\n\t\n\t var asArray = new Uint8Array(data);\n\t var type = asArray[0];\n\t var rest = sliceBuffer(data, 1);\n\t if (Blob && binaryType === 'blob') {\n\t rest = new Blob([rest]);\n\t }\n\t return { type: packetslist[type], data: rest };\n\t};\n\t\n\tfunction tryDecode(data) {\n\t try {\n\t data = utf8.decode(data, { strict: false });\n\t } catch (e) {\n\t return false;\n\t }\n\t return data;\n\t}\n\t\n\t/**\n\t * Decodes a packet encoded in a base64 string\n\t *\n\t * @param {String} base64 encoded message\n\t * @return {Object} with `type` and `data` (if any)\n\t */\n\t\n\texports.decodeBase64Packet = function(msg, binaryType) {\n\t var type = packetslist[msg.charAt(0)];\n\t if (!base64encoder) {\n\t return { type: type, data: { base64: true, data: msg.substr(1) } };\n\t }\n\t\n\t var data = base64encoder.decode(msg.substr(1));\n\t\n\t if (binaryType === 'blob' && Blob) {\n\t data = new Blob([data]);\n\t }\n\t\n\t return { type: type, data: data };\n\t};\n\t\n\t/**\n\t * Encodes multiple messages (payload).\n\t *\n\t * :data\n\t *\n\t * Example:\n\t *\n\t * 11:hello world2:hi\n\t *\n\t * If any contents are binary, they will be encoded as base64 strings. Base64\n\t * encoded strings are marked with a b before the length specifier\n\t *\n\t * @param {Array} packets\n\t * @api private\n\t */\n\t\n\texports.encodePayload = function (packets, supportsBinary, callback) {\n\t if (typeof supportsBinary === 'function') {\n\t callback = supportsBinary;\n\t supportsBinary = null;\n\t }\n\t\n\t var isBinary = hasBinary(packets);\n\t\n\t if (supportsBinary && isBinary) {\n\t if (Blob && !dontSendBlobs) {\n\t return exports.encodePayloadAsBlob(packets, callback);\n\t }\n\t\n\t return exports.encodePayloadAsArrayBuffer(packets, callback);\n\t }\n\t\n\t if (!packets.length) {\n\t return callback('0:');\n\t }\n\t\n\t function setLengthHeader(message) {\n\t return message.length + ':' + message;\n\t }\n\t\n\t function encodeOne(packet, doneCallback) {\n\t exports.encodePacket(packet, !isBinary ? false : supportsBinary, false, function(message) {\n\t doneCallback(null, setLengthHeader(message));\n\t });\n\t }\n\t\n\t map(packets, encodeOne, function(err, results) {\n\t return callback(results.join(''));\n\t });\n\t};\n\t\n\t/**\n\t * Async array map using after\n\t */\n\t\n\tfunction map(ary, each, done) {\n\t var result = new Array(ary.length);\n\t var next = after(ary.length, done);\n\t\n\t var eachWithIndex = function(i, el, cb) {\n\t each(el, function(error, msg) {\n\t result[i] = msg;\n\t cb(error, result);\n\t });\n\t };\n\t\n\t for (var i = 0; i < ary.length; i++) {\n\t eachWithIndex(i, ary[i], next);\n\t }\n\t}\n\t\n\t/*\n\t * Decodes data when a payload is maybe expected. Possible binary contents are\n\t * decoded from their base64 representation\n\t *\n\t * @param {String} data, callback method\n\t * @api public\n\t */\n\t\n\texports.decodePayload = function (data, binaryType, callback) {\n\t if (typeof data !== 'string') {\n\t return exports.decodePayloadAsBinary(data, binaryType, callback);\n\t }\n\t\n\t if (typeof binaryType === 'function') {\n\t callback = binaryType;\n\t binaryType = null;\n\t }\n\t\n\t var packet;\n\t if (data === '') {\n\t // parser error - ignoring payload\n\t return callback(err, 0, 1);\n\t }\n\t\n\t var length = '', n, msg;\n\t\n\t for (var i = 0, l = data.length; i < l; i++) {\n\t var chr = data.charAt(i);\n\t\n\t if (chr !== ':') {\n\t length += chr;\n\t continue;\n\t }\n\t\n\t if (length === '' || (length != (n = Number(length)))) {\n\t // parser error - ignoring payload\n\t return callback(err, 0, 1);\n\t }\n\t\n\t msg = data.substr(i + 1, n);\n\t\n\t if (length != msg.length) {\n\t // parser error - ignoring payload\n\t return callback(err, 0, 1);\n\t }\n\t\n\t if (msg.length) {\n\t packet = exports.decodePacket(msg, binaryType, false);\n\t\n\t if (err.type === packet.type && err.data === packet.data) {\n\t // parser error in individual packet - ignoring payload\n\t return callback(err, 0, 1);\n\t }\n\t\n\t var ret = callback(packet, i + n, l);\n\t if (false === ret) return;\n\t }\n\t\n\t // advance cursor\n\t i += n;\n\t length = '';\n\t }\n\t\n\t if (length !== '') {\n\t // parser error - ignoring payload\n\t return callback(err, 0, 1);\n\t }\n\t\n\t};\n\t\n\t/**\n\t * Encodes multiple messages (payload) as binary.\n\t *\n\t * <1 = binary, 0 = string>[...]\n\t *\n\t * Example:\n\t * 1 3 255 1 2 3, if the binary contents are interpreted as 8 bit integers\n\t *\n\t * @param {Array} packets\n\t * @return {ArrayBuffer} encoded payload\n\t * @api private\n\t */\n\t\n\texports.encodePayloadAsArrayBuffer = function(packets, callback) {\n\t if (!packets.length) {\n\t return callback(new ArrayBuffer(0));\n\t }\n\t\n\t function encodeOne(packet, doneCallback) {\n\t exports.encodePacket(packet, true, true, function(data) {\n\t return doneCallback(null, data);\n\t });\n\t }\n\t\n\t map(packets, encodeOne, function(err, encodedPackets) {\n\t var totalLength = encodedPackets.reduce(function(acc, p) {\n\t var len;\n\t if (typeof p === 'string'){\n\t len = p.length;\n\t } else {\n\t len = p.byteLength;\n\t }\n\t return acc + len.toString().length + len + 2; // string/binary identifier + separator = 2\n\t }, 0);\n\t\n\t var resultArray = new Uint8Array(totalLength);\n\t\n\t var bufferIndex = 0;\n\t encodedPackets.forEach(function(p) {\n\t var isString = typeof p === 'string';\n\t var ab = p;\n\t if (isString) {\n\t var view = new Uint8Array(p.length);\n\t for (var i = 0; i < p.length; i++) {\n\t view[i] = p.charCodeAt(i);\n\t }\n\t ab = view.buffer;\n\t }\n\t\n\t if (isString) { // not true binary\n\t resultArray[bufferIndex++] = 0;\n\t } else { // true binary\n\t resultArray[bufferIndex++] = 1;\n\t }\n\t\n\t var lenStr = ab.byteLength.toString();\n\t for (var i = 0; i < lenStr.length; i++) {\n\t resultArray[bufferIndex++] = parseInt(lenStr[i]);\n\t }\n\t resultArray[bufferIndex++] = 255;\n\t\n\t var view = new Uint8Array(ab);\n\t for (var i = 0; i < view.length; i++) {\n\t resultArray[bufferIndex++] = view[i];\n\t }\n\t });\n\t\n\t return callback(resultArray.buffer);\n\t });\n\t};\n\t\n\t/**\n\t * Encode as Blob\n\t */\n\t\n\texports.encodePayloadAsBlob = function(packets, callback) {\n\t function encodeOne(packet, doneCallback) {\n\t exports.encodePacket(packet, true, true, function(encoded) {\n\t var binaryIdentifier = new Uint8Array(1);\n\t binaryIdentifier[0] = 1;\n\t if (typeof encoded === 'string') {\n\t var view = new Uint8Array(encoded.length);\n\t for (var i = 0; i < encoded.length; i++) {\n\t view[i] = encoded.charCodeAt(i);\n\t }\n\t encoded = view.buffer;\n\t binaryIdentifier[0] = 0;\n\t }\n\t\n\t var len = (encoded instanceof ArrayBuffer)\n\t ? encoded.byteLength\n\t : encoded.size;\n\t\n\t var lenStr = len.toString();\n\t var lengthAry = new Uint8Array(lenStr.length + 1);\n\t for (var i = 0; i < lenStr.length; i++) {\n\t lengthAry[i] = parseInt(lenStr[i]);\n\t }\n\t lengthAry[lenStr.length] = 255;\n\t\n\t if (Blob) {\n\t var blob = new Blob([binaryIdentifier.buffer, lengthAry.buffer, encoded]);\n\t doneCallback(null, blob);\n\t }\n\t });\n\t }\n\t\n\t map(packets, encodeOne, function(err, results) {\n\t return callback(new Blob(results));\n\t });\n\t};\n\t\n\t/*\n\t * Decodes data when a payload is maybe expected. Strings are decoded by\n\t * interpreting each byte as a key code for entries marked to start with 0. See\n\t * description of encodePayloadAsBinary\n\t *\n\t * @param {ArrayBuffer} data, callback method\n\t * @api public\n\t */\n\t\n\texports.decodePayloadAsBinary = function (data, binaryType, callback) {\n\t if (typeof binaryType === 'function') {\n\t callback = binaryType;\n\t binaryType = null;\n\t }\n\t\n\t var bufferTail = data;\n\t var buffers = [];\n\t\n\t while (bufferTail.byteLength > 0) {\n\t var tailArray = new Uint8Array(bufferTail);\n\t var isString = tailArray[0] === 0;\n\t var msgLength = '';\n\t\n\t for (var i = 1; ; i++) {\n\t if (tailArray[i] === 255) break;\n\t\n\t // 310 = char length of Number.MAX_VALUE\n\t if (msgLength.length > 310) {\n\t return callback(err, 0, 1);\n\t }\n\t\n\t msgLength += tailArray[i];\n\t }\n\t\n\t bufferTail = sliceBuffer(bufferTail, 2 + msgLength.length);\n\t msgLength = parseInt(msgLength);\n\t\n\t var msg = sliceBuffer(bufferTail, 0, msgLength);\n\t if (isString) {\n\t try {\n\t msg = String.fromCharCode.apply(null, new Uint8Array(msg));\n\t } catch (e) {\n\t // iPhone Safari doesn't let you apply to typed arrays\n\t var typed = new Uint8Array(msg);\n\t msg = '';\n\t for (var i = 0; i < typed.length; i++) {\n\t msg += String.fromCharCode(typed[i]);\n\t }\n\t }\n\t }\n\t\n\t buffers.push(msg);\n\t bufferTail = sliceBuffer(bufferTail, msgLength);\n\t }\n\t\n\t var total = buffers.length;\n\t buffers.forEach(function(buffer, i) {\n\t callback(exports.decodePacket(buffer, binaryType, true), i, total);\n\t });\n\t};\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports) {\n\n\t\n\t/**\n\t * Gets the keys for an object.\n\t *\n\t * @return {Array} keys\n\t * @api private\n\t */\n\t\n\tmodule.exports = Object.keys || function keys (obj){\n\t var arr = [];\n\t var has = Object.prototype.hasOwnProperty;\n\t\n\t for (var i in obj) {\n\t if (has.call(obj, i)) {\n\t arr.push(i);\n\t }\n\t }\n\t return arr;\n\t};\n\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* global Blob File */\n\t\n\t/*\n\t * Module requirements.\n\t */\n\t\n\tvar isArray = __webpack_require__(13);\n\t\n\tvar toString = Object.prototype.toString;\n\tvar withNativeBlob = typeof Blob === 'function' ||\n\t typeof Blob !== 'undefined' && toString.call(Blob) === '[object BlobConstructor]';\n\tvar withNativeFile = typeof File === 'function' ||\n\t typeof File !== 'undefined' && toString.call(File) === '[object FileConstructor]';\n\t\n\t/**\n\t * Module exports.\n\t */\n\t\n\tmodule.exports = hasBinary;\n\t\n\t/**\n\t * Checks for binary data.\n\t *\n\t * Supports Buffer, ArrayBuffer, Blob and File.\n\t *\n\t * @param {Object} anything\n\t * @api public\n\t */\n\t\n\tfunction hasBinary (obj) {\n\t if (!obj || typeof obj !== 'object') {\n\t return false;\n\t }\n\t\n\t if (isArray(obj)) {\n\t for (var i = 0, l = obj.length; i < l; i++) {\n\t if (hasBinary(obj[i])) {\n\t return true;\n\t }\n\t }\n\t return false;\n\t }\n\t\n\t if ((typeof Buffer === 'function' && Buffer.isBuffer && Buffer.isBuffer(obj)) ||\n\t (typeof ArrayBuffer === 'function' && obj instanceof ArrayBuffer) ||\n\t (withNativeBlob && obj instanceof Blob) ||\n\t (withNativeFile && obj instanceof File)\n\t ) {\n\t return true;\n\t }\n\t\n\t // see: https://github.com/Automattic/has-binary/pull/4\n\t if (obj.toJSON && typeof obj.toJSON === 'function' && arguments.length === 1) {\n\t return hasBinary(obj.toJSON(), true);\n\t }\n\t\n\t for (var key in obj) {\n\t if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n\t return true;\n\t }\n\t }\n\t\n\t return false;\n\t}\n\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports) {\n\n\t/**\n\t * An abstraction for slicing an arraybuffer even when\n\t * ArrayBuffer.prototype.slice is not supported\n\t *\n\t * @api public\n\t */\n\t\n\tmodule.exports = function(arraybuffer, start, end) {\n\t var bytes = arraybuffer.byteLength;\n\t start = start || 0;\n\t end = end || bytes;\n\t\n\t if (arraybuffer.slice) { return arraybuffer.slice(start, end); }\n\t\n\t if (start < 0) { start += bytes; }\n\t if (end < 0) { end += bytes; }\n\t if (end > bytes) { end = bytes; }\n\t\n\t if (start >= bytes || start >= end || bytes === 0) {\n\t return new ArrayBuffer(0);\n\t }\n\t\n\t var abv = new Uint8Array(arraybuffer);\n\t var result = new Uint8Array(end - start);\n\t for (var i = start, ii = 0; i < end; i++, ii++) {\n\t result[ii] = abv[i];\n\t }\n\t return result.buffer;\n\t};\n\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = after\n\t\n\tfunction after(count, callback, err_cb) {\n\t var bail = false\n\t err_cb = err_cb || noop\n\t proxy.count = count\n\t\n\t return (count === 0) ? callback() : proxy\n\t\n\t function proxy(err, result) {\n\t if (proxy.count <= 0) {\n\t throw new Error('after called too many times')\n\t }\n\t --proxy.count\n\t\n\t // after first error, rest are passed to err_cb\n\t if (err) {\n\t bail = true\n\t callback(err)\n\t // future error callbacks will go to error handler\n\t callback = err_cb\n\t } else if (proxy.count === 0 && !bail) {\n\t callback(null, result)\n\t }\n\t }\n\t}\n\t\n\tfunction noop() {}\n\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports) {\n\n\t/*! https://mths.be/utf8js v2.1.2 by @mathias */\n\t\n\tvar stringFromCharCode = String.fromCharCode;\n\t\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2decode(string) {\n\t\tvar output = [];\n\t\tvar counter = 0;\n\t\tvar length = string.length;\n\t\tvar value;\n\t\tvar extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\t\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2encode(array) {\n\t\tvar length = array.length;\n\t\tvar index = -1;\n\t\tvar value;\n\t\tvar output = '';\n\t\twhile (++index < length) {\n\t\t\tvalue = array[index];\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t}\n\t\treturn output;\n\t}\n\t\n\tfunction checkScalarValue(codePoint, strict) {\n\t\tif (codePoint >= 0xD800 && codePoint <= 0xDFFF) {\n\t\t\tif (strict) {\n\t\t\t\tthrow Error(\n\t\t\t\t\t'Lone surrogate U+' + codePoint.toString(16).toUpperCase() +\n\t\t\t\t\t' is not a scalar value'\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\t/*--------------------------------------------------------------------------*/\n\t\n\tfunction createByte(codePoint, shift) {\n\t\treturn stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);\n\t}\n\t\n\tfunction encodeCodePoint(codePoint, strict) {\n\t\tif ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence\n\t\t\treturn stringFromCharCode(codePoint);\n\t\t}\n\t\tvar symbol = '';\n\t\tif ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);\n\t\t}\n\t\telse if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence\n\t\t\tif (!checkScalarValue(codePoint, strict)) {\n\t\t\t\tcodePoint = 0xFFFD;\n\t\t\t}\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\telse if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);\n\t\t\tsymbol += createByte(codePoint, 12);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\tsymbol += stringFromCharCode((codePoint & 0x3F) | 0x80);\n\t\treturn symbol;\n\t}\n\t\n\tfunction utf8encode(string, opts) {\n\t\topts = opts || {};\n\t\tvar strict = false !== opts.strict;\n\t\n\t\tvar codePoints = ucs2decode(string);\n\t\tvar length = codePoints.length;\n\t\tvar index = -1;\n\t\tvar codePoint;\n\t\tvar byteString = '';\n\t\twhile (++index < length) {\n\t\t\tcodePoint = codePoints[index];\n\t\t\tbyteString += encodeCodePoint(codePoint, strict);\n\t\t}\n\t\treturn byteString;\n\t}\n\t\n\t/*--------------------------------------------------------------------------*/\n\t\n\tfunction readContinuationByte() {\n\t\tif (byteIndex >= byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\t\n\t\tvar continuationByte = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\t\n\t\tif ((continuationByte & 0xC0) == 0x80) {\n\t\t\treturn continuationByte & 0x3F;\n\t\t}\n\t\n\t\t// If we end up here, it’s not a continuation byte\n\t\tthrow Error('Invalid continuation byte');\n\t}\n\t\n\tfunction decodeSymbol(strict) {\n\t\tvar byte1;\n\t\tvar byte2;\n\t\tvar byte3;\n\t\tvar byte4;\n\t\tvar codePoint;\n\t\n\t\tif (byteIndex > byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\t\n\t\tif (byteIndex == byteCount) {\n\t\t\treturn false;\n\t\t}\n\t\n\t\t// Read first byte\n\t\tbyte1 = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\t\n\t\t// 1-byte sequence (no continuation bytes)\n\t\tif ((byte1 & 0x80) == 0) {\n\t\t\treturn byte1;\n\t\t}\n\t\n\t\t// 2-byte sequence\n\t\tif ((byte1 & 0xE0) == 0xC0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x1F) << 6) | byte2;\n\t\t\tif (codePoint >= 0x80) {\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\t\n\t\t// 3-byte sequence (may include unpaired surrogates)\n\t\tif ((byte1 & 0xF0) == 0xE0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3;\n\t\t\tif (codePoint >= 0x0800) {\n\t\t\t\treturn checkScalarValue(codePoint, strict) ? codePoint : 0xFFFD;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\t\n\t\t// 4-byte sequence\n\t\tif ((byte1 & 0xF8) == 0xF0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tbyte4 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0C) |\n\t\t\t\t(byte3 << 0x06) | byte4;\n\t\t\tif (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\n\t\t\t\treturn codePoint;\n\t\t\t}\n\t\t}\n\t\n\t\tthrow Error('Invalid UTF-8 detected');\n\t}\n\t\n\tvar byteArray;\n\tvar byteCount;\n\tvar byteIndex;\n\tfunction utf8decode(byteString, opts) {\n\t\topts = opts || {};\n\t\tvar strict = false !== opts.strict;\n\t\n\t\tbyteArray = ucs2decode(byteString);\n\t\tbyteCount = byteArray.length;\n\t\tbyteIndex = 0;\n\t\tvar codePoints = [];\n\t\tvar tmp;\n\t\twhile ((tmp = decodeSymbol(strict)) !== false) {\n\t\t\tcodePoints.push(tmp);\n\t\t}\n\t\treturn ucs2encode(codePoints);\n\t}\n\t\n\tmodule.exports = {\n\t\tversion: '2.1.2',\n\t\tencode: utf8encode,\n\t\tdecode: utf8decode\n\t};\n\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports) {\n\n\t/*\n\t * base64-arraybuffer\n\t * https://github.com/niklasvh/base64-arraybuffer\n\t *\n\t * Copyright (c) 2012 Niklas von Hertzen\n\t * Licensed under the MIT license.\n\t */\n\t(function(){\n\t \"use strict\";\n\t\n\t var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\t\n\t // Use a lookup table to find the index.\n\t var lookup = new Uint8Array(256);\n\t for (var i = 0; i < chars.length; i++) {\n\t lookup[chars.charCodeAt(i)] = i;\n\t }\n\t\n\t exports.encode = function(arraybuffer) {\n\t var bytes = new Uint8Array(arraybuffer),\n\t i, len = bytes.length, base64 = \"\";\n\t\n\t for (i = 0; i < len; i+=3) {\n\t base64 += chars[bytes[i] >> 2];\n\t base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n\t base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n\t base64 += chars[bytes[i + 2] & 63];\n\t }\n\t\n\t if ((len % 3) === 2) {\n\t base64 = base64.substring(0, base64.length - 1) + \"=\";\n\t } else if (len % 3 === 1) {\n\t base64 = base64.substring(0, base64.length - 2) + \"==\";\n\t }\n\t\n\t return base64;\n\t };\n\t\n\t exports.decode = function(base64) {\n\t var bufferLength = base64.length * 0.75,\n\t len = base64.length, i, p = 0,\n\t encoded1, encoded2, encoded3, encoded4;\n\t\n\t if (base64[base64.length - 1] === \"=\") {\n\t bufferLength--;\n\t if (base64[base64.length - 2] === \"=\") {\n\t bufferLength--;\n\t }\n\t }\n\t\n\t var arraybuffer = new ArrayBuffer(bufferLength),\n\t bytes = new Uint8Array(arraybuffer);\n\t\n\t for (i = 0; i < len; i+=4) {\n\t encoded1 = lookup[base64.charCodeAt(i)];\n\t encoded2 = lookup[base64.charCodeAt(i+1)];\n\t encoded3 = lookup[base64.charCodeAt(i+2)];\n\t encoded4 = lookup[base64.charCodeAt(i+3)];\n\t\n\t bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n\t bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n\t bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n\t }\n\t\n\t return arraybuffer;\n\t };\n\t})();\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports) {\n\n\t/**\r\n\t * Create a blob builder even when vendor prefixes exist\r\n\t */\r\n\t\r\n\tvar BlobBuilder = typeof BlobBuilder !== 'undefined' ? BlobBuilder :\r\n\t typeof WebKitBlobBuilder !== 'undefined' ? WebKitBlobBuilder :\r\n\t typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder :\r\n\t typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : \r\n\t false;\r\n\t\r\n\t/**\r\n\t * Check if Blob constructor is supported\r\n\t */\r\n\t\r\n\tvar blobSupported = (function() {\r\n\t try {\r\n\t var a = new Blob(['hi']);\r\n\t return a.size === 2;\r\n\t } catch(e) {\r\n\t return false;\r\n\t }\r\n\t})();\r\n\t\r\n\t/**\r\n\t * Check if Blob constructor supports ArrayBufferViews\r\n\t * Fails in Safari 6, so we need to map to ArrayBuffers there.\r\n\t */\r\n\t\r\n\tvar blobSupportsArrayBufferView = blobSupported && (function() {\r\n\t try {\r\n\t var b = new Blob([new Uint8Array([1,2])]);\r\n\t return b.size === 2;\r\n\t } catch(e) {\r\n\t return false;\r\n\t }\r\n\t})();\r\n\t\r\n\t/**\r\n\t * Check if BlobBuilder is supported\r\n\t */\r\n\t\r\n\tvar blobBuilderSupported = BlobBuilder\r\n\t && BlobBuilder.prototype.append\r\n\t && BlobBuilder.prototype.getBlob;\r\n\t\r\n\t/**\r\n\t * Helper function that maps ArrayBufferViews to ArrayBuffers\r\n\t * Used by BlobBuilder constructor and old browsers that didn't\r\n\t * support it in the Blob constructor.\r\n\t */\r\n\t\r\n\tfunction mapArrayBufferViews(ary) {\r\n\t return ary.map(function(chunk) {\r\n\t if (chunk.buffer instanceof ArrayBuffer) {\r\n\t var buf = chunk.buffer;\r\n\t\r\n\t // if this is a subarray, make a copy so we only\r\n\t // include the subarray region from the underlying buffer\r\n\t if (chunk.byteLength !== buf.byteLength) {\r\n\t var copy = new Uint8Array(chunk.byteLength);\r\n\t copy.set(new Uint8Array(buf, chunk.byteOffset, chunk.byteLength));\r\n\t buf = copy.buffer;\r\n\t }\r\n\t\r\n\t return buf;\r\n\t }\r\n\t\r\n\t return chunk;\r\n\t });\r\n\t}\r\n\t\r\n\tfunction BlobBuilderConstructor(ary, options) {\r\n\t options = options || {};\r\n\t\r\n\t var bb = new BlobBuilder();\r\n\t mapArrayBufferViews(ary).forEach(function(part) {\r\n\t bb.append(part);\r\n\t });\r\n\t\r\n\t return (options.type) ? bb.getBlob(options.type) : bb.getBlob();\r\n\t};\r\n\t\r\n\tfunction BlobConstructor(ary, options) {\r\n\t return new Blob(mapArrayBufferViews(ary), options || {});\r\n\t};\r\n\t\r\n\tif (typeof Blob !== 'undefined') {\r\n\t BlobBuilderConstructor.prototype = Blob.prototype;\r\n\t BlobConstructor.prototype = Blob.prototype;\r\n\t}\r\n\t\r\n\tmodule.exports = (function() {\r\n\t if (blobSupported) {\r\n\t return blobSupportsArrayBufferView ? Blob : BlobConstructor;\r\n\t } else if (blobBuilderSupported) {\r\n\t return BlobBuilderConstructor;\r\n\t } else {\r\n\t return undefined;\r\n\t }\r\n\t})();\r\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports) {\n\n\t/**\r\n\t * Compiles a querystring\r\n\t * Returns string representation of the object\r\n\t *\r\n\t * @param {Object}\r\n\t * @api private\r\n\t */\r\n\t\r\n\texports.encode = function (obj) {\r\n\t var str = '';\r\n\t\r\n\t for (var i in obj) {\r\n\t if (obj.hasOwnProperty(i)) {\r\n\t if (str.length) str += '&';\r\n\t str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\r\n\t }\r\n\t }\r\n\t\r\n\t return str;\r\n\t};\r\n\t\r\n\t/**\r\n\t * Parses a simple querystring into an object\r\n\t *\r\n\t * @param {String} qs\r\n\t * @api private\r\n\t */\r\n\t\r\n\texports.decode = function(qs){\r\n\t var qry = {};\r\n\t var pairs = qs.split('&');\r\n\t for (var i = 0, l = pairs.length; i < l; i++) {\r\n\t var pair = pairs[i].split('=');\r\n\t qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\r\n\t }\r\n\t return qry;\r\n\t};\r\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports) {\n\n\t\n\tmodule.exports = function(a, b){\n\t var fn = function(){};\n\t fn.prototype = b.prototype;\n\t a.prototype = new fn;\n\t a.prototype.constructor = a;\n\t};\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\t\n\tvar alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split('')\n\t , length = 64\n\t , map = {}\n\t , seed = 0\n\t , i = 0\n\t , prev;\n\t\n\t/**\n\t * Return a string representing the specified number.\n\t *\n\t * @param {Number} num The number to convert.\n\t * @returns {String} The string representation of the number.\n\t * @api public\n\t */\n\tfunction encode(num) {\n\t var encoded = '';\n\t\n\t do {\n\t encoded = alphabet[num % length] + encoded;\n\t num = Math.floor(num / length);\n\t } while (num > 0);\n\t\n\t return encoded;\n\t}\n\t\n\t/**\n\t * Return the integer value specified by the given string.\n\t *\n\t * @param {String} str The string to convert.\n\t * @returns {Number} The integer value represented by the string.\n\t * @api public\n\t */\n\tfunction decode(str) {\n\t var decoded = 0;\n\t\n\t for (i = 0; i < str.length; i++) {\n\t decoded = decoded * length + map[str.charAt(i)];\n\t }\n\t\n\t return decoded;\n\t}\n\t\n\t/**\n\t * Yeast: A tiny growing id generator.\n\t *\n\t * @returns {String} A unique id.\n\t * @api public\n\t */\n\tfunction yeast() {\n\t var now = encode(+new Date());\n\t\n\t if (now !== prev) return seed = 0, prev = now;\n\t return now +'.'+ encode(seed++);\n\t}\n\t\n\t//\n\t// Map each character to its index.\n\t//\n\tfor (; i < length; i++) map[alphabet[i]] = i;\n\t\n\t//\n\t// Expose the `yeast`, `encode` and `decode` functions.\n\t//\n\tyeast.encode = encode;\n\tyeast.decode = decode;\n\tmodule.exports = yeast;\n\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {/**\n\t * Module requirements.\n\t */\n\t\n\tvar Polling = __webpack_require__(22);\n\tvar inherit = __webpack_require__(33);\n\t\n\t/**\n\t * Module exports.\n\t */\n\t\n\tmodule.exports = JSONPPolling;\n\t\n\t/**\n\t * Cached regular expressions.\n\t */\n\t\n\tvar rNewline = /\\n/g;\n\tvar rEscapedNewline = /\\\\n/g;\n\t\n\t/**\n\t * Global JSONP callbacks.\n\t */\n\t\n\tvar callbacks;\n\t\n\t/**\n\t * Noop.\n\t */\n\t\n\tfunction empty () { }\n\t\n\t/**\n\t * Until https://github.com/tc39/proposal-global is shipped.\n\t */\n\tfunction glob () {\n\t return typeof self !== 'undefined' ? self\n\t : typeof window !== 'undefined' ? window\n\t : typeof global !== 'undefined' ? global : {};\n\t}\n\t\n\t/**\n\t * JSONP Polling constructor.\n\t *\n\t * @param {Object} opts.\n\t * @api public\n\t */\n\t\n\tfunction JSONPPolling (opts) {\n\t Polling.call(this, opts);\n\t\n\t this.query = this.query || {};\n\t\n\t // define global callbacks array if not present\n\t // we do this here (lazily) to avoid unneeded global pollution\n\t if (!callbacks) {\n\t // we need to consider multiple engines in the same page\n\t var global = glob();\n\t callbacks = global.___eio = (global.___eio || []);\n\t }\n\t\n\t // callback identifier\n\t this.index = callbacks.length;\n\t\n\t // add callback to jsonp global\n\t var self = this;\n\t callbacks.push(function (msg) {\n\t self.onData(msg);\n\t });\n\t\n\t // append to query string\n\t this.query.j = this.index;\n\t\n\t // prevent spurious errors from being emitted when the window is unloaded\n\t if (typeof addEventListener === 'function') {\n\t addEventListener('beforeunload', function () {\n\t if (self.script) self.script.onerror = empty;\n\t }, false);\n\t }\n\t}\n\t\n\t/**\n\t * Inherits from Polling.\n\t */\n\t\n\tinherit(JSONPPolling, Polling);\n\t\n\t/*\n\t * JSONP only supports binary as base64 encoded strings\n\t */\n\t\n\tJSONPPolling.prototype.supportsBinary = false;\n\t\n\t/**\n\t * Closes the socket.\n\t *\n\t * @api private\n\t */\n\t\n\tJSONPPolling.prototype.doClose = function () {\n\t if (this.script) {\n\t this.script.parentNode.removeChild(this.script);\n\t this.script = null;\n\t }\n\t\n\t if (this.form) {\n\t this.form.parentNode.removeChild(this.form);\n\t this.form = null;\n\t this.iframe = null;\n\t }\n\t\n\t Polling.prototype.doClose.call(this);\n\t};\n\t\n\t/**\n\t * Starts a poll cycle.\n\t *\n\t * @api private\n\t */\n\t\n\tJSONPPolling.prototype.doPoll = function () {\n\t var self = this;\n\t var script = document.createElement('script');\n\t\n\t if (this.script) {\n\t this.script.parentNode.removeChild(this.script);\n\t this.script = null;\n\t }\n\t\n\t script.async = true;\n\t script.src = this.uri();\n\t script.onerror = function (e) {\n\t self.onError('jsonp poll error', e);\n\t };\n\t\n\t var insertAt = document.getElementsByTagName('script')[0];\n\t if (insertAt) {\n\t insertAt.parentNode.insertBefore(script, insertAt);\n\t } else {\n\t (document.head || document.body).appendChild(script);\n\t }\n\t this.script = script;\n\t\n\t var isUAgecko = 'undefined' !== typeof navigator && /gecko/i.test(navigator.userAgent);\n\t\n\t if (isUAgecko) {\n\t setTimeout(function () {\n\t var iframe = document.createElement('iframe');\n\t document.body.appendChild(iframe);\n\t document.body.removeChild(iframe);\n\t }, 100);\n\t }\n\t};\n\t\n\t/**\n\t * Writes with a hidden iframe.\n\t *\n\t * @param {String} data to send\n\t * @param {Function} called upon flush.\n\t * @api private\n\t */\n\t\n\tJSONPPolling.prototype.doWrite = function (data, fn) {\n\t var self = this;\n\t\n\t if (!this.form) {\n\t var form = document.createElement('form');\n\t var area = document.createElement('textarea');\n\t var id = this.iframeId = 'eio_iframe_' + this.index;\n\t var iframe;\n\t\n\t form.className = 'socketio';\n\t form.style.position = 'absolute';\n\t form.style.top = '-1000px';\n\t form.style.left = '-1000px';\n\t form.target = id;\n\t form.method = 'POST';\n\t form.setAttribute('accept-charset', 'utf-8');\n\t area.name = 'd';\n\t form.appendChild(area);\n\t document.body.appendChild(form);\n\t\n\t this.form = form;\n\t this.area = area;\n\t }\n\t\n\t this.form.action = this.uri();\n\t\n\t function complete () {\n\t initIframe();\n\t fn();\n\t }\n\t\n\t function initIframe () {\n\t if (self.iframe) {\n\t try {\n\t self.form.removeChild(self.iframe);\n\t } catch (e) {\n\t self.onError('jsonp polling iframe removal error', e);\n\t }\n\t }\n\t\n\t try {\n\t // ie6 dynamic iframes with target=\"\" support (thanks Chris Lambacher)\n\t var html = '