diff --git a/package.json b/package.json
index e7c521e..08fd626 100644
--- a/package.json
+++ b/package.json
@@ -10,7 +10,8 @@
"express-handlebars": "^4.0.3",
"body-parser": "^1.19.0",
"express-fingerprint": "^1.1.3",
- "ws": "^7.2.3"
+ "ws": "^7.2.3",
+ "random-words": "^1.1.0"
},
"engines": {
"node": "12.x"
diff --git a/public/style.css b/public/style.css
index eda8662..fd6f3ab 100644
--- a/public/style.css
+++ b/public/style.css
@@ -24,6 +24,10 @@ form {
margin: 0 auto;
}
+input[type=text] {
+ text-transform: lowercase;
+}
+
input {
border: 1px solid silver;
display: block;
diff --git a/room.js b/room.js
index 25111b8..d12b79b 100644
--- a/room.js
+++ b/room.js
@@ -17,7 +17,8 @@ function getOrCreateRoom(roomId) {
roomId: roomId,
participants: [],
audience: [],
- characters: shuffle(chars)
+ characters: shuffle(chars),
+ canBuzz: true
};
rooms[roomId] = room;
}
@@ -56,23 +57,28 @@ function addAudienceWS(roomId, ws) {
function buzz(roomId, participant) {
let room = getOrCreateRoom(roomId);
- participant = room.participants.find(p => p.participantId === participant.participantId);
-
- room.participants.forEach(p => {
- if (p.ws && p.participantId !== participant.participantId) {
- p.ws.send(JSON.stringify({
+ if (room.canBuzz) {
+ room.canBuzz = false;
+ setTimeout(() => room.canBuzz = true, 5000);
+
+ participant = room.participants.find(p => p.participantId === participant.participantId);
+
+ room.participants.forEach(p => {
+ if (p.ws && p.participantId !== participant.participantId) {
+ p.ws.send(JSON.stringify({
+ type: "buzz",
+ participant: participant.participantName,
+ msg: `
${participant.participantName} buzzed!
`
+ }));
+ }
+ });
+ room.audience.forEach(ws => {
+ ws.send(JSON.stringify({
type: "buzz",
- participant: participant.participantName,
- msg: `${participant.participantName} buzzed!
`
+ participant: participant
}));
- }
- });
- room.audience.forEach(ws => {
- ws.send(JSON.stringify({
- type: "buzz",
- participant: participant
- }));
- });
+ });
+ }
}
module.exports = {getOrCreateRoom, addParticipant, addParticipantWS, addAudienceWS, buzz, removeParticipant}
\ No newline at end of file
diff --git a/server.js b/server.js
index 2fc8638..451545d 100644
--- a/server.js
+++ b/server.js
@@ -4,6 +4,7 @@ const bodyParser = require('body-parser');
const Fingerprint = require('express-fingerprint');
const WebSocket = require('ws');
const http = require('http');
+const randomWords = require('random-words');
const rooms = require('./room');
@@ -29,31 +30,31 @@ app.get("/", (request, response) => {
});
app.get("/:roomId/join", (request, response) => {
- let room = rooms.getOrCreateRoom(request.params.roomId);
+ let room = rooms.getOrCreateRoom(request.params.roomId.toLowerCase());
let participant = room.participants.find(p => p.participantId === request.fingerprint.hash);
if (participant) {
response.render('room', {
layout: false,
- room: request.params.roomId,
+ room: request.params.roomId.toLowerCase(),
name: participant.participantName,
participantName: participant.participantName,
participantId: participant.participantId,
character: participant.character,
});
} else {
- response.render('join', {layout: false, room: request.params.roomId});
+ response.render('join', {layout: false, room: request.params.roomId.toLowerCase()});
}
});
app.get("/:roomId/audience", (request, response) => {
- let room = rooms.getOrCreateRoom(request.params.roomId);
- response.render('audience', {layout: false, room: request.params.roomId, participants: room.participants });
+ let room = rooms.getOrCreateRoom(request.params.roomId.toLowerCase());
+ response.render('audience', {layout: false, room: request.params.roomId.toLowerCase(), participants: room.participants });
});
app.post("/:roomId/join", (request, response) => {
- rooms.addParticipant(request.params.roomId, request.fingerprint.hash, request.body.name);
- response.redirect(`/${request.params.roomId}/join`);
+ rooms.addParticipant(request.params.roomId.toLowerCase(), request.fingerprint.hash, request.body.name);
+ response.redirect(`/${request.params.roomId.toLowerCase()}/join`);
});
server.listen(process.env.PORT, () => {
@@ -63,7 +64,7 @@ server.listen(process.env.PORT, () => {
const wss = new WebSocket.Server({ server });
wss.on('connection', (ws, req) => {
- let roomId = req.url.substring(1);
+ let roomId = req.url.substring(1).toLowerCase();
if (roomId.includes("/audience")) {
roomId = roomId.replace("/audience", "");
diff --git a/shrinkwrap.yaml b/shrinkwrap.yaml
index 2335d17..06b6ee9 100644
--- a/shrinkwrap.yaml
+++ b/shrinkwrap.yaml
@@ -3,6 +3,7 @@ dependencies:
express: 4.17.1
express-fingerprint: 1.1.3
express-handlebars: 4.0.3
+ random-words: 1.1.1
ws: 7.2.3
packages:
/accepts/1.3.7:
@@ -14,6 +15,47 @@ packages:
node: '>= 0.6'
resolution:
integrity: sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
+ /ansi-colors/3.2.3:
+ dev: false
+ engines:
+ node: '>=6'
+ resolution:
+ integrity: sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==
+ /ansi-regex/3.0.0:
+ dev: false
+ engines:
+ node: '>=4'
+ resolution:
+ integrity: sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
+ /ansi-regex/4.1.0:
+ dev: false
+ engines:
+ node: '>=6'
+ resolution:
+ integrity: sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
+ /ansi-styles/3.2.1:
+ dependencies:
+ color-convert: 1.9.3
+ dev: false
+ engines:
+ node: '>=4'
+ resolution:
+ integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ /anymatch/3.1.1:
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.2.2
+ dev: false
+ engines:
+ node: '>= 8'
+ resolution:
+ integrity: sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==
+ /argparse/1.0.10:
+ dependencies:
+ sprintf-js: 1.0.3
+ dev: false
+ resolution:
+ integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
/array-flatten/1.1.1:
dev: false
resolution:
@@ -39,6 +81,12 @@ packages:
dev: false
resolution:
integrity: sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
+ /binary-extensions/2.0.0:
+ dev: false
+ engines:
+ node: '>=8'
+ resolution:
+ integrity: sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==
/body-parser/1.19.0:
dependencies:
bytes: 3.1.0
@@ -63,6 +111,18 @@ packages:
dev: false
resolution:
integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ /braces/3.0.2:
+ dependencies:
+ fill-range: 7.0.1
+ dev: false
+ engines:
+ node: '>=8'
+ resolution:
+ integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ /browser-stdout/1.3.1:
+ dev: false
+ resolution:
+ integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==
/buffer-crc32/0.2.13:
dev: false
resolution:
@@ -73,6 +133,56 @@ packages:
node: '>= 0.8'
resolution:
integrity: sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
+ /camelcase/5.3.1:
+ dev: false
+ engines:
+ node: '>=6'
+ resolution:
+ integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+ /chalk/2.4.2:
+ dependencies:
+ ansi-styles: 3.2.1
+ escape-string-regexp: 1.0.5
+ supports-color: 5.5.0
+ dev: false
+ engines:
+ node: '>=4'
+ resolution:
+ integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ /chokidar/3.3.0:
+ dependencies:
+ anymatch: 3.1.1
+ braces: 3.0.2
+ glob-parent: 5.1.1
+ is-binary-path: 2.1.0
+ is-glob: 4.0.1
+ normalize-path: 3.0.0
+ readdirp: 3.2.0
+ dev: false
+ engines:
+ node: '>= 8.10.0'
+ optionalDependencies:
+ fsevents: 2.1.2
+ resolution:
+ integrity: sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==
+ /cliui/5.0.0:
+ dependencies:
+ string-width: 3.1.0
+ strip-ansi: 5.2.0
+ wrap-ansi: 5.1.0
+ dev: false
+ resolution:
+ integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==
+ /color-convert/1.9.3:
+ dependencies:
+ color-name: 1.1.3
+ dev: false
+ resolution:
+ integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ /color-name/1.1.3:
+ dev: false
+ resolution:
+ integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
/colors/1.4.0:
dev: false
engines:
@@ -124,6 +234,18 @@ packages:
dev: false
resolution:
integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ /debug/3.2.6:
+ dependencies:
+ ms: 2.1.2
+ dev: false
+ resolution:
+ integrity: sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
+ /decamelize/1.2.0:
+ dev: false
+ engines:
+ node: '>=0.10.0'
+ resolution:
+ integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
/define-properties/1.1.3:
dependencies:
object-keys: 1.1.1
@@ -142,20 +264,71 @@ packages:
dev: false
resolution:
integrity: sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
+ /diff/3.5.0:
+ dev: false
+ engines:
+ node: '>=0.3.1'
+ resolution:
+ integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==
/ee-first/1.1.1:
dev: false
resolution:
integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
+ /emoji-regex/7.0.3:
+ dev: false
+ resolution:
+ integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
/encodeurl/1.0.2:
dev: false
engines:
node: '>= 0.8'
resolution:
integrity: sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
+ /es-abstract/1.17.5:
+ dependencies:
+ es-to-primitive: 1.2.1
+ function-bind: 1.1.1
+ has: 1.0.3
+ has-symbols: 1.0.1
+ is-callable: 1.1.5
+ is-regex: 1.0.5
+ object-inspect: 1.7.0
+ object-keys: 1.1.1
+ object.assign: 4.1.0
+ string.prototype.trimleft: 2.1.2
+ string.prototype.trimright: 2.1.2
+ dev: false
+ engines:
+ node: '>= 0.4'
+ resolution:
+ integrity: sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==
+ /es-to-primitive/1.2.1:
+ dependencies:
+ is-callable: 1.1.5
+ is-date-object: 1.0.2
+ is-symbol: 1.0.3
+ dev: false
+ engines:
+ node: '>= 0.4'
+ resolution:
+ integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
/escape-html/1.0.3:
dev: false
resolution:
integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
+ /escape-string-regexp/1.0.5:
+ dev: false
+ engines:
+ node: '>=0.8.0'
+ resolution:
+ integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+ /esprima/4.0.1:
+ dev: false
+ engines:
+ node: '>=4'
+ hasBin: true
+ resolution:
+ integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
/etag/1.8.1:
dev: false
engines:
@@ -228,6 +401,14 @@ packages:
dev: false
resolution:
integrity: sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=
+ /fill-range/7.0.1:
+ dependencies:
+ to-regex-range: 5.0.1
+ dev: false
+ engines:
+ node: '>=8'
+ resolution:
+ integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
/finalhandler/1.1.2:
dependencies:
debug: 2.6.9
@@ -242,6 +423,21 @@ packages:
node: '>= 0.8'
resolution:
integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
+ /find-up/3.0.0:
+ dependencies:
+ locate-path: 3.0.0
+ dev: false
+ engines:
+ node: '>=6'
+ resolution:
+ integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
+ /flat/4.1.0:
+ dependencies:
+ is-buffer: 2.0.4
+ dev: false
+ hasBin: true
+ resolution:
+ integrity: sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==
/forwarded/0.1.2:
dev: false
engines:
@@ -258,6 +454,15 @@ packages:
dev: false
resolution:
integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+ /fsevents/2.1.2:
+ dev: false
+ engines:
+ node: ^8.16.0 || ^10.6.0 || >=11.0.0
+ optional: true
+ os:
+ - darwin
+ resolution:
+ integrity: sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==
/function-bind/1.1.1:
dev: false
resolution:
@@ -276,6 +481,31 @@ packages:
node: '>=5.10.0'
resolution:
integrity: sha512-uhPTk7ndEAnqpvNhcSQh51dIrMTGOmOPKIi4KgIHtuJbgaAGgON1Q1UFGhu4YSCnN1DVWTLqcpoL9/746x6Nqg==
+ /get-caller-file/2.0.5:
+ dev: false
+ engines:
+ node: 6.* || 8.* || >= 10.*
+ resolution:
+ integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+ /glob-parent/5.1.1:
+ dependencies:
+ is-glob: 4.0.1
+ dev: false
+ engines:
+ node: '>= 6'
+ resolution:
+ integrity: sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==
+ /glob/7.1.3:
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.0.4
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+ dev: false
+ resolution:
+ integrity: sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
/glob/7.1.6:
dependencies:
fs.realpath: 1.0.0
@@ -291,6 +521,12 @@ packages:
dev: false
resolution:
integrity: sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==
+ /growl/1.10.5:
+ dev: false
+ engines:
+ node: '>=4.x'
+ resolution:
+ integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==
/handlebars/4.7.6:
dependencies:
minimist: 1.2.5
@@ -305,12 +541,31 @@ packages:
uglify-js: 3.8.1
resolution:
integrity: sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==
+ /has-flag/3.0.0:
+ dev: false
+ engines:
+ node: '>=4'
+ resolution:
+ integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
/has-symbols/1.0.1:
dev: false
engines:
node: '>= 0.4'
resolution:
integrity: sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
+ /has/1.0.3:
+ dependencies:
+ function-bind: 1.1.1
+ dev: false
+ engines:
+ node: '>= 0.4.0'
+ resolution:
+ integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
+ /he/1.2.0:
+ dev: false
+ hasBin: true
+ resolution:
+ integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
/http-errors/1.7.2:
dependencies:
depd: 1.1.2
@@ -374,6 +629,86 @@ packages:
node: '>= 0.10'
resolution:
integrity: sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==
+ /is-binary-path/2.1.0:
+ dependencies:
+ binary-extensions: 2.0.0
+ dev: false
+ engines:
+ node: '>=8'
+ resolution:
+ integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
+ /is-buffer/2.0.4:
+ dev: false
+ engines:
+ node: '>=4'
+ resolution:
+ integrity: sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==
+ /is-callable/1.1.5:
+ dev: false
+ engines:
+ node: '>= 0.4'
+ resolution:
+ integrity: sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==
+ /is-date-object/1.0.2:
+ dev: false
+ engines:
+ node: '>= 0.4'
+ resolution:
+ integrity: sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==
+ /is-extglob/2.1.1:
+ dev: false
+ engines:
+ node: '>=0.10.0'
+ resolution:
+ integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+ /is-fullwidth-code-point/2.0.0:
+ dev: false
+ engines:
+ node: '>=4'
+ resolution:
+ integrity: sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
+ /is-glob/4.0.1:
+ dependencies:
+ is-extglob: 2.1.1
+ dev: false
+ engines:
+ node: '>=0.10.0'
+ resolution:
+ integrity: sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
+ /is-number/7.0.0:
+ dev: false
+ engines:
+ node: '>=0.12.0'
+ resolution:
+ integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+ /is-regex/1.0.5:
+ dependencies:
+ has: 1.0.3
+ dev: false
+ engines:
+ node: '>= 0.4'
+ resolution:
+ integrity: sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==
+ /is-symbol/1.0.3:
+ dependencies:
+ has-symbols: 1.0.1
+ dev: false
+ engines:
+ node: '>= 0.4'
+ resolution:
+ integrity: sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==
+ /isexe/2.0.0:
+ dev: false
+ resolution:
+ integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
+ /js-yaml/3.13.1:
+ dependencies:
+ argparse: 1.0.10
+ esprima: 4.0.1
+ dev: false
+ hasBin: true
+ resolution:
+ integrity: sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
/jsbn/1.1.0:
dev: false
resolution:
@@ -384,10 +719,27 @@ packages:
node: '>=0.2.0'
resolution:
integrity: sha1-2qBoIGKCVCwIgojpdcKXwa53tpA=
+ /locate-path/3.0.0:
+ dependencies:
+ p-locate: 3.0.0
+ path-exists: 3.0.0
+ dev: false
+ engines:
+ node: '>=6'
+ resolution:
+ integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
/lodash/4.17.15:
dev: false
resolution:
integrity: sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
+ /log-symbols/3.0.0:
+ dependencies:
+ chalk: 2.4.2
+ dev: false
+ engines:
+ node: '>=8'
+ resolution:
+ integrity: sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==
/lru-cache/4.1.5:
dependencies:
pseudomap: 1.0.2
@@ -442,6 +794,46 @@ packages:
dev: false
resolution:
integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
+ /mkdirp/0.5.3:
+ dependencies:
+ minimist: 1.2.5
+ deprecated: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
+ dev: false
+ hasBin: true
+ resolution:
+ integrity: sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==
+ /mocha/7.1.1:
+ dependencies:
+ ansi-colors: 3.2.3
+ browser-stdout: 1.3.1
+ chokidar: 3.3.0
+ debug: 3.2.6
+ diff: 3.5.0
+ escape-string-regexp: 1.0.5
+ find-up: 3.0.0
+ glob: 7.1.3
+ growl: 1.10.5
+ he: 1.2.0
+ js-yaml: 3.13.1
+ log-symbols: 3.0.0
+ minimatch: 3.0.4
+ mkdirp: 0.5.3
+ ms: 2.1.1
+ node-environment-flags: 1.0.6
+ object.assign: 4.1.0
+ strip-json-comments: 2.0.1
+ supports-color: 6.0.0
+ which: 1.3.1
+ wide-align: 1.1.3
+ yargs: 13.3.2
+ yargs-parser: 13.1.2
+ yargs-unparser: 1.6.0
+ dev: false
+ engines:
+ node: '>= 8.0.0'
+ hasBin: true
+ resolution:
+ integrity: sha512-3qQsu3ijNS3GkWcccT5Zw0hf/rWvu1fTN9sPvEd81hlwsr30GX2GcDSSoBxo24IR8FelmrAydGC6/1J5QQP4WA==
/ms/2.0.0:
dev: false
resolution:
@@ -450,6 +842,10 @@ packages:
dev: false
resolution:
integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
+ /ms/2.1.2:
+ dev: false
+ resolution:
+ integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
/murmurhash3js/3.0.1:
dev: false
engines:
@@ -466,6 +862,23 @@ packages:
dev: false
resolution:
integrity: sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
+ /node-environment-flags/1.0.6:
+ dependencies:
+ object.getownpropertydescriptors: 2.1.0
+ semver: 5.7.1
+ dev: false
+ resolution:
+ integrity: sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==
+ /normalize-path/3.0.0:
+ dev: false
+ engines:
+ node: '>=0.10.0'
+ resolution:
+ integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+ /object-inspect/1.7.0:
+ dev: false
+ resolution:
+ integrity: sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==
/object-keys/1.1.1:
dev: false
engines:
@@ -483,6 +896,15 @@ packages:
node: '>= 0.4'
resolution:
integrity: sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==
+ /object.getownpropertydescriptors/2.1.0:
+ dependencies:
+ define-properties: 1.1.3
+ es-abstract: 1.17.5
+ dev: false
+ engines:
+ node: '>= 0.8'
+ resolution:
+ integrity: sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==
/on-finished/2.3.0:
dependencies:
ee-first: 1.1.1
@@ -503,12 +925,40 @@ packages:
node: '>=0.10.0'
resolution:
integrity: sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
+ /p-limit/2.3.0:
+ dependencies:
+ p-try: 2.2.0
+ dev: false
+ engines:
+ node: '>=6'
+ resolution:
+ integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
+ /p-locate/3.0.0:
+ dependencies:
+ p-limit: 2.3.0
+ dev: false
+ engines:
+ node: '>=6'
+ resolution:
+ integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
+ /p-try/2.2.0:
+ dev: false
+ engines:
+ node: '>=6'
+ resolution:
+ integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
/parseurl/1.3.3:
dev: false
engines:
node: '>= 0.8'
resolution:
integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
+ /path-exists/3.0.0:
+ dev: false
+ engines:
+ node: '>=4'
+ resolution:
+ integrity: sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
/path-is-absolute/1.0.1:
dev: false
engines:
@@ -523,6 +973,12 @@ packages:
dev: false
resolution:
integrity: sha1-elfrVQpng/kRUzH89GY9XI4AelA=
+ /picomatch/2.2.2:
+ dev: false
+ engines:
+ node: '>=8.6'
+ resolution:
+ integrity: sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
/promise/8.1.0:
dependencies:
asap: 2.0.6
@@ -548,6 +1004,12 @@ packages:
node: '>=0.6'
resolution:
integrity: sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
+ /random-words/1.1.1:
+ dependencies:
+ mocha: 7.1.1
+ dev: false
+ resolution:
+ integrity: sha512-Rdk5EoQePyt9Tz3RjeMELi2BSaCI+jDiOkBr4U+3fyBRiiW3qqEuaegGAUMOZ4yGWlQscFQGqQpdic3mAbNkrw==
/range-parser/1.2.1:
dev: false
engines:
@@ -565,10 +1027,28 @@ packages:
node: '>= 0.8'
resolution:
integrity: sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==
+ /readdirp/3.2.0:
+ dependencies:
+ picomatch: 2.2.2
+ dev: false
+ engines:
+ node: '>= 8'
+ resolution:
+ integrity: sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==
/regenerator-runtime/0.11.1:
dev: false
resolution:
integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
+ /require-directory/2.1.1:
+ dev: false
+ engines:
+ node: '>=0.10.0'
+ resolution:
+ integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
+ /require-main-filename/2.0.0:
+ dev: false
+ resolution:
+ integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
/rimraf/2.7.1:
dependencies:
glob: 7.1.6
@@ -584,6 +1064,11 @@ packages:
dev: false
resolution:
integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+ /semver/5.7.1:
+ dev: false
+ hasBin: true
+ resolution:
+ integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
/send/0.17.1:
dependencies:
debug: 2.6.9
@@ -615,6 +1100,10 @@ packages:
node: '>= 0.8.0'
resolution:
integrity: sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==
+ /set-blocking/2.0.0:
+ dev: false
+ resolution:
+ integrity: sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
/setprototypeof/1.1.1:
dev: false
resolution:
@@ -625,6 +1114,10 @@ packages:
node: '>=0.10.0'
resolution:
integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+ /sprintf-js/1.0.3:
+ dev: false
+ resolution:
+ integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
/sprintf-js/1.1.2:
dev: false
resolution:
@@ -635,6 +1128,97 @@ packages:
node: '>= 0.6'
resolution:
integrity: sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
+ /string-width/2.1.1:
+ dependencies:
+ is-fullwidth-code-point: 2.0.0
+ strip-ansi: 4.0.0
+ dev: false
+ engines:
+ node: '>=4'
+ resolution:
+ integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
+ /string-width/3.1.0:
+ dependencies:
+ emoji-regex: 7.0.3
+ is-fullwidth-code-point: 2.0.0
+ strip-ansi: 5.2.0
+ dev: false
+ engines:
+ node: '>=6'
+ resolution:
+ integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
+ /string.prototype.trimend/1.0.1:
+ dependencies:
+ define-properties: 1.1.3
+ es-abstract: 1.17.5
+ dev: false
+ resolution:
+ integrity: sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==
+ /string.prototype.trimleft/2.1.2:
+ dependencies:
+ define-properties: 1.1.3
+ es-abstract: 1.17.5
+ string.prototype.trimstart: 1.0.1
+ dev: false
+ engines:
+ node: '>= 0.4'
+ resolution:
+ integrity: sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==
+ /string.prototype.trimright/2.1.2:
+ dependencies:
+ define-properties: 1.1.3
+ es-abstract: 1.17.5
+ string.prototype.trimend: 1.0.1
+ dev: false
+ engines:
+ node: '>= 0.4'
+ resolution:
+ integrity: sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==
+ /string.prototype.trimstart/1.0.1:
+ dependencies:
+ define-properties: 1.1.3
+ es-abstract: 1.17.5
+ dev: false
+ resolution:
+ integrity: sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==
+ /strip-ansi/4.0.0:
+ dependencies:
+ ansi-regex: 3.0.0
+ dev: false
+ engines:
+ node: '>=4'
+ resolution:
+ integrity: sha1-qEeQIusaw2iocTibY1JixQXuNo8=
+ /strip-ansi/5.2.0:
+ dependencies:
+ ansi-regex: 4.1.0
+ dev: false
+ engines:
+ node: '>=6'
+ resolution:
+ integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
+ /strip-json-comments/2.0.1:
+ dev: false
+ engines:
+ node: '>=0.10.0'
+ resolution:
+ integrity: sha1-PFMZQukIwml8DsNEhYwobHygpgo=
+ /supports-color/5.5.0:
+ dependencies:
+ has-flag: 3.0.0
+ dev: false
+ engines:
+ node: '>=4'
+ resolution:
+ integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ /supports-color/6.0.0:
+ dependencies:
+ has-flag: 3.0.0
+ dev: false
+ engines:
+ node: '>=6'
+ resolution:
+ integrity: sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==
/tmp/0.0.33:
dependencies:
os-tmpdir: 1.0.2
@@ -643,6 +1227,14 @@ packages:
node: '>=0.6.0'
resolution:
integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
+ /to-regex-range/5.0.1:
+ dependencies:
+ is-number: 7.0.0
+ dev: false
+ engines:
+ node: '>=8.0'
+ resolution:
+ integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
/toidentifier/1.0.0:
dev: false
engines:
@@ -698,10 +1290,37 @@ packages:
node: '>= 0.8'
resolution:
integrity: sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
+ /which-module/2.0.0:
+ dev: false
+ resolution:
+ integrity: sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
+ /which/1.3.1:
+ dependencies:
+ isexe: 2.0.0
+ dev: false
+ hasBin: true
+ resolution:
+ integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+ /wide-align/1.1.3:
+ dependencies:
+ string-width: 2.1.1
+ dev: false
+ resolution:
+ integrity: sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
/wordwrap/1.0.0:
dev: false
resolution:
integrity: sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
+ /wrap-ansi/5.1.0:
+ dependencies:
+ ansi-styles: 3.2.1
+ string-width: 3.1.0
+ strip-ansi: 5.2.0
+ dev: false
+ engines:
+ node: '>=6'
+ resolution:
+ integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
/wrappy/1.0.2:
dev: false
resolution:
@@ -715,10 +1334,46 @@ packages:
utf-8-validate: ^5.0.2
resolution:
integrity: sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ==
+ /y18n/4.0.0:
+ dev: false
+ resolution:
+ integrity: sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
/yallist/2.1.2:
dev: false
resolution:
integrity: sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
+ /yargs-parser/13.1.2:
+ dependencies:
+ camelcase: 5.3.1
+ decamelize: 1.2.0
+ dev: false
+ resolution:
+ integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==
+ /yargs-unparser/1.6.0:
+ dependencies:
+ flat: 4.1.0
+ lodash: 4.17.15
+ yargs: 13.3.2
+ dev: false
+ engines:
+ node: '>=6'
+ resolution:
+ integrity: sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==
+ /yargs/13.3.2:
+ dependencies:
+ cliui: 5.0.0
+ find-up: 3.0.0
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ require-main-filename: 2.0.0
+ set-blocking: 2.0.0
+ string-width: 3.1.0
+ which-module: 2.0.0
+ y18n: 4.0.0
+ yargs-parser: 13.1.2
+ dev: false
+ resolution:
+ integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==
/yauzl/2.10.0:
dependencies:
buffer-crc32: 0.2.13
@@ -734,4 +1389,5 @@ specifiers:
express: ^4.17.1
express-fingerprint: ^1.1.3
express-handlebars: ^4.0.3
+ random-words: ^1.1.0
ws: ^7.2.3
diff --git a/views/audience.handlebars b/views/audience.handlebars
index b8393d1..dcbecc5 100644
--- a/views/audience.handlebars
+++ b/views/audience.handlebars
@@ -44,7 +44,6 @@
function beep() {
window.navigator.vibrate(500);
- new Audio("https://cdn.glitch.com/81aebabf-079d-4504-b844-d90d643962c4%2FGame-show-buzzer-sound-effect.mp3?v=1586451448374").play();
}